CMD:salir(playerid, params[]) { if(PlayerInfo[playerid][pConectado] == 1) { for(new n = 0; n < sizeof(NegocioInfo); n ++) { if(IsPlayerInRangeOfPoint(playerid, 2.0, NegocioInfo[n][nIntX], NegocioInfo[n][nIntY], NegocioInfo[n][nIntZ]) && GetPlayerVirtualWorld(playerid) == NegocioInfo[n][nSQLID]) { SetPlayerPosEx(playerid, NegocioInfo[n][nPosX], NegocioInfo[n][nPosY], NegocioInfo[n][nPosZ], 0, 0, 0); PlayerInfo[playerid][pInterior] = 0, PlayerInfo[playerid][pVirtualWorld] = 0; return 1; } } for(new c = 0; c < sizeof(CasaInfo); c ++) { if(IsPlayerInRangeOfPoint(playerid, 2.0, CasaInfo[c][cIntX], CasaInfo[c][cIntY], CasaInfo[c][cIntZ]) && GetPlayerInterior(playerid) == CasaInfo[c][cSQLID] && GetPlayerVirtualWorld(playerid) == CasaInfo[c][cSQLID]) { SetPlayerPosEx(playerid, CasaInfo[c][cPosX], CasaInfo[c][cPosY], CasaInfo[c][cPosZ], 0, 0, 0); return 1; } } } return 1; }
if(IsPlayerInRangeOfPoint(playerid, 2.0, CasaInfo[c][cIntX], CasaInfo[c][cIntY], CasaInfo[c][cIntZ])
{
if(GetPlayerVirtualWorld(playerid) == )//Tiene que ser igual al virtualworld del interior, para eso crea una variable
{
SetPlayerPosEx(playerid, CasaInfo[c][cPosX], CasaInfo[c][cPosY], CasaInfo[c][cPosZ], 0, 0, 0);
return 1;
}
CMD:salir(playerid, params[])
{
if(!(PlayerInfo[playerid][pConectado] == 1 && IsPlayerConnected(playerid)))
return 0;
new id = -1;
if((id = Negocio_PuertaInterior(playerid)) != -1)
{
// Ademas, aca seteas la pos y tienes parametros para vw y int, no los usas por inseguridad y esa inseguridad hace que tu servidor no tenga algunas caracteristicas que a veces se vuelven utiles.
SetPlayerPosEx(playerid, NegocioInfo[id][nPosX], NegocioInfo[id][nPosY], NegocioInfo[id][nPosZ], 0, 0, 0);
// Si dejas tu codigo asi no puedes poner negocios en otros VW o Interiores
PlayerInfo[playerid][pInterior] = 0;
PlayerInfo[playerid][pVirtualWorld] = 0;
}
else if((id = Casa_PuertaInterior(playerid)) != -1)
{
// El mismo problema, no casas en otro VW o Int que no sea el cero
SetPlayerPosEx(playerid, CasaInfo[c][cPosX], CasaInfo[c][cPosY], CasaInfo[c][cPosZ], 0, 0, 0);
}
else{
SendClientMessage(playerid, 0xFFFFFFFF, "No estas cerca de una puerta!");
}
return 1;
}
stock Negocio_PuertaInterior(playerid)
{
for(new n = 0; n < sizeof(NegocioInfo); n ++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, NegocioInfo[n][nIntX], NegocioInfo[n][nIntY], NegocioInfo[n][nIntZ]) && GetPlayerVirtualWorld(playerid) == NegocioInfo[n][nSQLID])
{
return n;
}
}
return -1;
}
stock Casa_PuertaInterior(playerid)
{
for(new c = 0; c < sizeof(CasaInfo); c ++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, CasaInfo[c][cIntX], CasaInfo[c][cIntY], CasaInfo[c][cIntZ]) && GetPlayerInterior(playerid) == CasaInfo[c][cSQLID] && GetPlayerVirtualWorld(playerid) == CasaInfo[c][cSQLID])
{
return i;
}
}
return -1;
}
CasaInfo[TotalCasas][cMapIco] = CreateDynamicMapIcon(CasaInfo[TotalCasas][cPosX], CasaInfo[TotalCasas][cPosY], CasaInfo[TotalCasas][cPosZ], 31, 0, -1, -1, TotalCasas, 50.0);
CMD:crearcasa(playerid, params[]) { if(PlayerInfo[playerid][pAdmin] < 0) return 0; TotalCasas++; new Float:PosX[MAX_PLAYERS], Float:PosY[MAX_PLAYERS], Float:PosZ[MAX_PLAYERS], Float:Angle[MAX_PLAYERS]; GetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]); GetPlayerFacingAngle(playerid, Angle[playerid]); new Query[120]; format(Query, sizeof(Query), "INSERT INTO ev_casas (cSQLID, cPosX, cPosY, cPosZ) VALUES ('%d', '%f', '%f', '%f')", TotalCasas, PosX[playerid], PosY[playerid], PosZ[playerid]); mysql_function_query(MySQL, Query, true, "OnQueryFinish_", "ii", 0, playerid); new ZonaCasa[MAX_ZONE_NAME]; GetPlayer2DZone(playerid, ZonaCasa, MAX_ZONE_NAME); format(CasaInfo[TotalCasas][cDireccion], 30, ZonaCasa); CasaInfo[TotalCasas][cSQLID] = TotalCasas; CasaInfo[TotalCasas][cPosX] = PosX[playerid]; CasaInfo[TotalCasas][cPosY] = PosY[playerid]; CasaInfo[TotalCasas][cPosZ] = PosZ[playerid]; CasaInfo[TotalCasas][cIntX] = 2365.0168; CasaInfo[TotalCasas][cIntY] = -1135.3094; CasaInfo[TotalCasas][cIntZ] = 1050.8750; CasaInfo[TotalCasas][cPrecio] = 50000; CasaInfo[TotalCasas][cNivel] = 5; CasaInfo[TotalCasas][cInterior] = 0; CasaInfo[TotalCasas][cVirtualWorld] = CasaInfo[TotalCasas][cSQLID]; CasaInfo[TotalCasas][cPuerta] = 0; CasaInfo[TotalCasas][cEstado] = 0; new Float:Mirilla[3]; GetPlayerCameraPos(playerid, Mirilla[0], Mirilla[1], Mirilla[2]); CasaInfo[TotalCasas][cMirX] = Mirilla[0]; CasaInfo[TotalCasas][cMirY] = Mirilla[1]; CasaInfo[TotalCasas][cMirZ] = Mirilla[2]; CasaInfo[TotalCasas][cMirA] = Angle[playerid]; CasaInfo[TotalCasas][cMapIco] = CreateDynamicMapIcon(CasaInfo[TotalCasas][cPosX], CasaInfo[TotalCasas][cPosY], CasaInfo[TotalCasas][cPosZ], 31, 0, -1, -1, TotalCasas, 50.0); CasaInfo[TotalCasas][cPickup] = CreateDynamicPickup(1273, 1, PosX[playerid], PosY[playerid], PosZ[playerid]); CasaInfo[TotalCasas][cTexto] = CreateDynamic3DTextLabel("", COLOR_BLANCO, PosX[playerid], PosY[playerid], PosZ[playerid], 5.0); format(CasaInfo[TotalCasas][cPropietario], 32, "El Estado"); format(CasaInfo[TotalCasas][cDescripcion], 32, "Sin descripción"), GuardarCasa_(TotalCasas); ActualizarTextoCasa(TotalCasas); return 1; }
if(IsValidDynamicMapIcon(CasaInfo[TotalCasas][cMapIco])) DestroyDynamicMapIcon(CasaInfo[TotalCasas][cMapIco]); |
Yo eso sobre que si el label, pickup entre otros lo tengo aparte en un callback, con una restricciуn de que si esta creada y con las funciones del streamer por ejemplo
Eso que colocas de ultimo "ActualizarTextoCasa" me imagino que debe ser el callback de actualizar el label, hay puedes colocar la funciуn |