Alex_Jemison
Умник
Нашол рекон за игроком . То что мне и нужно без текстдравов и менюшок . Но уж очень мне не нравится количество pVar'ов
Как можно ето более умнее сделать , оптимировать данный код .
Как можно ето более умнее сделать , оптимировать данный код .
PHP:
cmd:re(playerid, params[])
{
extract params -> new id; else
return SendClientMessage(playerid, 0xCC0000FF, "[Синтаксис]: {FFFFFF}/re [ID игрока]"); // Проверка на синтаксис команды.
if(!IsPlayerConnected(id))
return SendClientMessage(playerid, 0xCECECEFF, "Игрок не в сети."); // Проверка, в сети ли игрок?
if(GetPVarInt(playerid, "SET_ADM_POS") == 0) // Проверка на PVAR set_adm_pos, описал в return SetPVarInt(playerid, "SET_ADM_POS", 1);
{
new Float: reX, Float: reY, Float: reZ, Float: reA;
GetPlayerPos(playerid, reX, reY, reZ);
GetPlayerFacingAngle(playerid, reA);
SetPVarFloat(playerid, "re_X", reX);
SetPVarFloat(playerid, "re_Y", reY);
SetPVarFloat(playerid, "re_Z", reZ);
SetPVarFloat(playerid, "re_A", reA);
SetPVarInt(playerid, "re_int", GetPlayerInterior(id));
SetPVarInt(playerid, "re_virt", GetPlayerVirtualWorld(id)); // Ну и тут естественно, создаем сами PVAR с значениями спавна админа на прежнее место, а также интерьера и вирт.мира.
}
TogglePlayerSpectating(playerid, true);
SetPlayerInterior(playerid, GetPlayerInterior(id)); // Устанавливаем админу интерьер игрока.
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(id)); // Устанавливаем админку вирт.мир игрока.
if(IsPlayerInAnyVehicle(id))
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id), 1);
else
PlayerSpectatePlayer(playerid, id, 1);
return SetPVarInt(playerid, "SET_ADM_POS", 1); // Устанавливаем PVAR set_adm_pos для того, чтобы при перемещении по слежке координаты не менялись.
}
PHP:
cmd:reoff(playerid)
{
if(GetPVarInt(playerid, "SET_ADM_POS") == 0) return 1; // Если админ не начал следить, то ничего не происходит.
TogglePlayerSpectating(playerid, false); // Отключаем режим спектора.
return OnPlayerSpawn(playerid); // Спавним через паблик OnPlayerSpawn
}
PHP:
if(GetPVarInt(playerid, "SET_ADM_POS") == 1) // Если админ уже следит, то спавним на прежнее место.
{
DeletePVar(playerid, "SET_ADM_POS"); // Удаляем PVAR с координатами.
SetPlayerPos(playerid, GetPVarFloat(playerid, "re_X"), GetPVarFloat(playerid, "re_Y"), GetPVarFloat(playerid, "re_Z")); // Спавним админа по координатам.
SetPlayerInterior(playerid, GetPVarInt(playerid, "re_int")); // Устанавливаем админку прежний интерьер.
SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "re_virt")); // Устанавливаем админку прежний вирт.мир.
DeletePVar(playerid, "re_X"); // Удаляем PVAR с координатами.
DeletePVar(playerid, "re_Y"); // Удаляем PVAR с координатами.
DeletePVar(playerid, "re_Z"); // Удаляем PVAR с координатами.
DeletePVar(playerid, "re_int"); // Удаляем PVAR с интерьером.
DeletePVar(playerid, "re_virt"); // Удаляем PVAR с вирт.миром.
}
