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 |