forward OnPlayerVirtualWorldChange(playerid, newvwid, oldvwid); // newvwid y oldvwid significan "new virtual world id y old virtual world id".
public OnPlayerVirtualWorldChange(playerid, newvwid, oldvwid)
{
return 1;
}
stock SetPlayerVirtualWorldEx(playerid, worldid)
{
OnPlayerVirtualWorldChange(playerid, worldid, GetPlayerVirtualWorld(playerid));
SetPlayerVirtualWorld(playerid, worldid);
return 1;
}
mmm entonces como seria para colocar cuando salga de un world y entre en otro?
osea como utilizar los newvwid y oldvwid perdon x mi ignorancia :S |
#define VWUsados 50
new Jugador_VW[MAX_PLAYERS][2];
new Jugador_ArmasPorVW[MAX_PLAYERS][VWUsados][13][2]; // puse VWUsados por la cantidad de VW que vas a usar... no pongo el maximo xq es 2,147,483,647...
// modificalo del #define que puse arriba
public OnPlayerVirtualWorldChange(playerid, newvwid, oldvwid)
{
for(new i = 0; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, Jugador_ArmasPorVW[playerid][oldvwid][i][0], Jugador_ArmasPorVW[playerid][oldvwid][i][1]);
}
ResetPlayerWeapons(playerid);
for(new i = 0; i < 13; i++)
{
GivePlayerWeapon(playerid, Jugador_ArmasPorVW[playerid][newvwid][i][0], Jugador_ArmasPorVW[playerid][newvwid][i][1]);
}
return 1;
}
public OnPlayerConnect(playerid)
{
//...
for(new i1 = 0; i1 < VWUsados; i1++)
{
for(new i2 = 0; i2 < 13; i2++)
{
Jugador_ArmasPorVW[playerid][i1][i2][0] = 0;
Jugador_ArmasPorVW[playerid][i1][i2][1] = 0;
}
}
//...
}
public OnPlayerVirtualWorldChange(playerid, newvwid, oldvwid)
{
// Aqui se pone el codigo para cuando el jugador simplemente cambia de mundo.
// Sin revisar a que mundo virtual cambiу.
if(newvwid == NUEVO_MUNDO// NUEVO_MUNDO se tiene que cambiar al mundo virtual deseado.
{
// Esto es lo que pasa cuando el jugador entra al mundo especificado (NUEVO_MUNDO).
}
if(oldvwid == VIEJO_MUNDO) // Cambiar VIEJO_MUNDO para el virtual world deseado.
{
// Aquн se pone lo que va a pasar cuando el jugador cambie de mundo y...
// Su mundo anterior fuй el valor que has puesto en NUEVO_MUNDO.
}
if(newvwid == x && oldvwid == x) // Sustituir x por el mundo nuevo y viejo
{
// Lo que pasa cuando entras a al mundo especificado "x" y a la vez estas dejando el viejo "x".
}
return 1;
}
public OnPlayerVirtualWorldChange(playerid, newvwid, oldvwid)
{
new
string[86];
format(string, sizeof(string), "El jugador %d ha cambiado al mundo virtual %d.", playerid, newvwid);
SendClientMessageToAll(0xFFFFFFFF, string);
if(newvwid == 50)
{
format(string, sizeof(string), "El jugador %d ha cambiado al mundo virtual 50.", playerid);
SendClientMessageToAll(0xFFFFFFFF, string);
}
if(oldvwid == 0)
{
format(string, sizeof(string), "El jugador %d ha cambiado de mundo virtual, pero antes estaba en el mundo virtual 0.", playerid);
SendClientMessageToAll(0xFFFFFFFF, string);
}
if(oldvwid == 0 && newvwid == 10)
{
format(string, sizeof(string), "El jugador %d ha cambiado del mundo virtual 0 al 10.", playerid);
SendClientMessageToAll(0xFFFFFFFF, string);
}
return 1;
}
stock SetPlayerVirtualWorldEx(playerid, worldid)
{
CallRemoteFunction("OnPlayerVirtualWorldChange", "iii", playerid, worldid, GetPlayerVirtualWorld(playerid));
SetPlayerVirtualWorld(playerid, worldid);
return 1;
}