Voorhis
Умник
Доброго времени суток пользователи портала.
Представляю вашему вниманию систему слежки с популярного проекта Samp-Rp.
Скрины:
Автор: Голубь
Автор вырезки: Voorhis
[✓] Присутствует также характеристика weaponshot
[✓] При нажатии `F` дается возможность управлять мышкой. Т.е. тоже самое управление как и кнопками, только мышкой.
[х] Отсутствие системы AFK. Т.е. в реконе не отображается статистика afk. Думаю не так уж и сложно будет вписать свою сис-му сюда.
Ну что же.. Приступим...
I Этап
Представляю вашему вниманию систему слежки с популярного проекта Samp-Rp.
Скрины:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Автор: Голубь
Автор вырезки: Voorhis
[✓] Присутствует также характеристика weaponshot
[✓] При нажатии `F` дается возможность управлять мышкой. Т.е. тоже самое управление как и кнопками, только мышкой.
[х] Отсутствие системы AFK. Т.е. в реконе не отображается статистика afk. Думаю не так уж и сложно будет вписать свою сис-му сюда.
Ну что же.. Приступим...
I Этап
PHP:
#define getName(%1) PlayerInfo[%1][pName]
new Spectate[MAX_PLAYERS];
new SpecAd[MAX_PLAYERS];
new SpecID[MAX_PLAYERS];
new DisallowSpawn[MAX_PLAYERS];
new Float:SpecPlayer[MAX_PLAYERS][3];
new SpecPlayerInt[MAX_PLAYERS];
new SpecPlayerWorld[MAX_PLAYERS];
new Float:SpecPlayerAngle[MAX_PLAYERS];
new LastReconClick[MAX_PLAYERS][2];
new PlayerText:ReconPlayer[35],
ReconBounds[MAX_PLAYERS][2],
ReconSelect[MAX_PLAYERS],
ReconSelectSub[MAX_PLAYERS];
new query[1024];
new NumberShotTarget[MAX_PLAYERS];
new TimeNumberShot[MAX_PLAYERS];
new TimeNumberShotTarget[MAX_PLAYERS];
new NumberShot[MAX_PLAYERS];
new AFKTime[MAX_PLAYERS];
new AFKTimeLast[MAX_PLAYERS];
stock Float:GetVehicleHP(vehicleid)
{
new Float:vehhp;
GetVehicleHealth(vehicleid, vehhp);
return vehhp;
}
stock Float:GetPlayerHP(playerid)
{
new Float:playhp;
GetPlayerHealth(playerid, playhp);
return playhp;
}
stock Float:GetPlayerARM(playerid)
{
new Float:playarm;
GetPlayerArmour(playerid, playarm);
return playarm;
}
forward SpecPlayers(playerid);
public SpecPlayers(playerid)
{
StartSpectate(playerid, SpecAd[playerid]);
}
stock StartSpectate(playerid, specid)
{
DisallowSpawn[playerid] = 1;
format(query, sizeof(query), "%s~n~ID: %d",getName(specid),specid);
PlayerTextDrawSetString(playerid, ReconPlayer[6],query);
if(IsPlayerInAnyVehicle(specid))
{
SetPlayerInterior(playerid,GetPlayerInterior(specid));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid));
}
else
{
SetPlayerInterior(playerid,GetPlayerInterior(specid));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, specid);
}
return true;
}
stock SubTextDelete(playerid)
{
for(new i = 16; i < sizeof(ReconPlayer); i++)
PlayerTextDrawHide(playerid, ReconPlayer[i]),DisableEnableReconButton(playerid, i, 0, 0);
ReconSelectSub[playerid] = INVALID_TEXT_DRAW;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
return 1;
}
stock StopSpectate(playerid)
{
if(!Spectate[playerid]) return true;
DisallowSpawn[playerid] = 0;
if(SpecAd[playerid] != INVALID_PLAYER_ID) SpecID[SpecAd[playerid]] = 65535;
SpecAd[playerid] = 65535;
PlayerTextDrawHide(playerid, ReconPlayer[34]);
TogglePlayerSpectating(playerid, 0);
TogglePlayerControllable(playerid, true);
for(new i = 0; i < sizeof(ReconPlayer); i++)
PlayerTextDrawHide(playerid, ReconPlayer[i]);
for(new i = 7; i < sizeof(ReconPlayer); i++)
DisableEnableReconButton(playerid, i, 0, 0);
CancelSelectTextDraw(playerid);
PlayerTextDrawSetString(playerid, ReconPlayer[5],"");
PlayerTextDrawSetString(playerid, ReconPlayer[6],"");
return true;
}
stock DisableEnableReconButton(playerid, button, enable, show = 1)
{
PlayerTextDrawHide(playerid, ReconPlayer[button]);
if(!enable)
PlayerTextDrawBoxColor(playerid,ReconPlayer[button], 0x00000055);
else
PlayerTextDrawBoxColor(playerid,ReconPlayer[button], 0xD97700AA);
if(show) PlayerTextDrawShow(playerid, ReconPlayer[button]);
return 1;
}
PlayerText:CreateReconButton(playerid, Float:Xpos, Float:Ypos, button_text[])
{
new PlayerText:txtInit;
txtInit = CreatePlayerTextDraw(playerid,Xpos, Ypos, button_text);
PlayerTextDrawBackgroundColor(playerid,txtInit, 0x000000AA);
PlayerTextDrawFont(playerid,txtInit, 1);
PlayerTextDrawLetterSize(playerid,txtInit, 0.200, 1.100);
PlayerTextDrawColor(playerid,txtInit, 0xAAAAAAAA);
PlayerTextDrawSetOutline(playerid,txtInit, 0);
PlayerTextDrawAlignment(playerid,txtInit, 2);
PlayerTextDrawSetProportional(playerid,txtInit, 1);
PlayerTextDrawSetShadow(playerid,txtInit, 0);
PlayerTextDrawUseBox(playerid,txtInit, 1);
PlayerTextDrawBoxColor(playerid,txtInit, 0x00000055);
PlayerTextDrawTextSize(playerid,txtInit, 11.000, 60.000);
PlayerTextDrawSetSelectable(playerid, txtInit, 1);
return txtInit;
}
new MaxSpeedCar[212] = {
87,81,103,-1,73,91,-1,-1,-1,-1,-1,123,93,-1,-1,106,-1,-1,64,82,93,82,82,-1,75,-1,94,-1,
-1,112,-1,-1,-1,-1,92,-1,85,-1,-1,93,-1,-1,-1,-1,62,90,-1,-1,-1,-1,-1,107,-1,-1,-1,-1,-1,-1,87,-1,-1,88 ,-1,79 ,-1,-1,
87,87,79,-1,-1,61,-1,-1,82,96,-1,103,75,77,102,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,82,78,-1,119,97,90,-1,-1,-1,-1,-1,119,119,-1,-1,99,92,-1,-1,-1,-1,
-1,-1,-1,-1,87,87,91,-1,-1,88,95,-1,-1,-1,-1,87,82,-1,82,-1,-1,-1,90,93,87,96,-1,-1,-1,82,112,91,73,-1,81,82,79,-1,85,80,87,-1,-1,84,87,-1,-1,86,98,94,
85,98,-1,-1,91,88,96,-1,-1,-1,-1,-1,-1,-1,87,87,-1,-1,87,85,88,-1,-1,-1,87,87,91,-1,90,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,82,-1,93,95,87,73,-1
};
II Этап
PHP:
ReconPlayer[0] = CreatePlayerTextDraw(playerid,530.000000, 180.000000, "x");
PlayerTextDrawBackgroundColor(playerid, ReconPlayer[0], 0x000000AA);
PlayerTextDrawFont(playerid, ReconPlayer[0], 3);
PlayerTextDrawLetterSize(playerid,ReconPlayer[0], 0.000000, 20.600000);
PlayerTextDrawColor(playerid,ReconPlayer[0], 0xE1E1E1AA);
PlayerTextDrawSetOutline(playerid,ReconPlayer[0], 1);
PlayerTextDrawSetProportional(playerid,ReconPlayer[0], 1);
PlayerTextDrawSetShadow(playerid,ReconPlayer[0], 2);
PlayerTextDrawUseBox(playerid,ReconPlayer[0], 1);
PlayerTextDrawBoxColor(playerid,ReconPlayer[0], 0x00000055);
PlayerTextDrawTextSize(playerid,ReconPlayer[0], 640.000, 0.000000);
ReconPlayer[1] = CreatePlayerTextDraw(playerid,529.000000, 179.000000, "x");
PlayerTextDrawBackgroundColor(playerid,ReconPlayer[1], 0x000000AA);
PlayerTextDrawFont(playerid,ReconPlayer[1], 3);
PlayerTextDrawLetterSize(playerid,ReconPlayer[1], 0.000000, 20.600000);
PlayerTextDrawColor(playerid,ReconPlayer[1], 0xE1E1E1AA);
PlayerTextDrawSetOutline(playerid,ReconPlayer[1], 1);
PlayerTextDrawSetProportional(playerid,ReconPlayer[1], 1);
PlayerTextDrawSetShadow(playerid,ReconPlayer[1], 2);
PlayerTextDrawUseBox(playerid,ReconPlayer[1], 1);
PlayerTextDrawBoxColor(playerid,ReconPlayer[1], 0xAAAAAA33);
PlayerTextDrawTextSize(playerid,ReconPlayer[1], 641.000000, 0.000000);
ReconPlayer[2] = CreatePlayerTextDraw(playerid,0.000, 180.000, "x");
PlayerTextDrawBackgroundColor(playerid,ReconPlayer[2], 0x000000AA);
PlayerTextDrawFont(playerid,ReconPlayer[2], 3);
PlayerTextDrawLetterSize(playerid,ReconPlayer[2], 0.000000, 18.540);
PlayerTextDrawColor(playerid,ReconPlayer[2], 0xE1E1E1AA);
PlayerTextDrawSetOutline(playerid,ReconPlayer[2], 1);
PlayerTextDrawSetProportional(playerid,ReconPlayer[2], 1);
PlayerTextDrawSetShadow(playerid,ReconPlayer[2], 2);
PlayerTextDrawUseBox(playerid,ReconPlayer[2], 1);
PlayerTextDrawBoxColor(playerid,ReconPlayer[2], 0x00000055);
PlayerTextDrawTextSize(playerid,ReconPlayer[2], 70.000, 0.000000);
ReconPlayer[3] = CreatePlayerTextDraw(playerid,0.000, 179.000, "x");
PlayerTextDrawBackgroundColor(playerid,ReconPlayer[3], 0x000000AA);
PlayerTextDrawFont(playerid,ReconPlayer[3], 3);
PlayerTextDrawLetterSize(playerid,ReconPlayer[3], 0.000000, 18.746);
PlayerTextDrawColor(playerid,ReconPlayer[3], 0xE1E1E1AA);
PlayerTextDrawSetOutline(playerid,ReconPlayer[3], 1);
PlayerTextDrawSetProportional(playerid,ReconPlayer[3], 1);
PlayerTextDrawSetShadow(playerid,ReconPlayer[3], 2);
PlayerTextDrawUseBox(playerid,ReconPlayer[3], 1);
PlayerTextDrawBoxColor(playerid,ReconPlayer[3], 0xAAAAAA33);
PlayerTextDrawTextSize(playerid,ReconPlayer[3], 71.000, 0.000000);
ReconPlayer[4] = CreatePlayerTextDraw(playerid,535.000, 210.000, "~n~~g~::Level:~n~~g~::Warns:~n~~r~::Armour:~n~~r~::Health:~n~~b~::CarHP:~n~~b~::Speed:~n~~y~::Ping:~n~~y~::Ammo:~n~~p~::Shot:~n~~p~::TimeShot:~n~~g~::AFKTime:~n~~g~::Engine:");
PlayerTextDrawBackgroundColor(playerid,ReconPlayer[4], 0x000000AA);
PlayerTextDrawSetProportional(playerid,ReconPlayer[4], 1);
PlayerTextDrawLetterSize(playerid,ReconPlayer[4], 0.200, 1.100);
PlayerTextDrawColor(playerid,ReconPlayer[4], 0xFFFFFFAA);
PlayerTextDrawFont(playerid,ReconPlayer[4], 1);
PlayerTextDrawSetShadow(playerid,ReconPlayer[4], 2);
PlayerTextDrawSetOutline(playerid,ReconPlayer[4], 1);
PlayerTextDrawUseBox(playerid,ReconPlayer[4], 0);
ReconPlayer[5] = CreatePlayerTextDraw(playerid,575.000, 210.000, " ");
PlayerTextDrawBackgroundColor(playerid,ReconPlayer[5], 0x000000AA);
PlayerTextDrawSetProportional(playerid,ReconPlayer[5], 1);
PlayerTextDrawLetterSize(playerid,ReconPlayer[5], 0.200, 1.100);
PlayerTextDrawColor(playerid,ReconPlayer[5], 0xFFFFFFAA);
PlayerTextDrawFont(playerid,ReconPlayer[5], 1);
PlayerTextDrawSetShadow(playerid,ReconPlayer[5], 2);
PlayerTextDrawSetOutline(playerid,ReconPlayer[5], 1);
PlayerTextDrawUseBox(playerid,ReconPlayer[5], 0);
ReconPlayer[6] = CreatePlayerTextDraw(playerid,585.000000, 190.000000, " ");
PlayerTextDrawBackgroundColor(playerid,ReconPlayer[6], 0x000000AA);
PlayerTextDrawSetProportional(playerid,ReconPlayer[6], 1);
PlayerTextDrawLetterSize(playerid,ReconPlayer[6], 0.300, 1.400);
PlayerTextDrawColor(playerid,ReconPlayer[6], 0xFFFFFFAA);
PlayerTextDrawFont(playerid,ReconPlayer[6], 1);
PlayerTextDrawAlignment(playerid,ReconPlayer[6], 2);
PlayerTextDrawSetShadow(playerid,ReconPlayer[6], 2);
PlayerTextDrawSetOutline(playerid,ReconPlayer[6], 1);
PlayerTextDrawUseBox(playerid,ReconPlayer[6], 0);
ReconPlayer[7] = CreateReconButton(playerid,35.000, 195.000, "Change");
ReconPlayer[8] = CreateReconButton(playerid,35.000, 212.000, "Check >>");
ReconPlayer[9] = CreateReconButton(playerid,35.000, 229.000, "Drop >>");
ReconPlayer[10] = CreateReconButton(playerid,35.000, 246.000, "Kick >>");
ReconPlayer[11] = CreateReconButton(playerid,35.000, 263.000, "Warn");
ReconPlayer[12] = CreateReconButton(playerid,35.000, 280.000, "Ban >>");
ReconPlayer[13] = CreateReconButton(playerid,35.000, 297.000, "Stats >>");
ReconPlayer[14] = CreateReconButton(playerid,35.000, 314.000, "Refresh");
ReconPlayer[15] = CreateReconButton(playerid,35.000, 331.000, "Exit");
ReconPlayer[16] = CreateReconButton(playerid,100.000, 212.000, "Check-GM");//Check >>
ReconPlayer[17] = CreateReconButton(playerid,100.000, 229.000, "Check-GM2");//Check >>
ReconPlayer[18] = CreateReconButton(playerid,100.000, 246.000, "Check-GMCar");//Check >>
ReconPlayer[19] = CreateReconButton(playerid,100.000, 263.000, "ResetShot");//Check >>
ReconPlayer[20] = CreateReconButton(playerid,100.000, 229.000, "Mute");//Drop >>
ReconPlayer[21] = CreateReconButton(playerid,100.000, 246.000, "Slap");//Drop >>
ReconPlayer[22] = CreateReconButton(playerid,100.000, 263.000, "Prison");//Drop >>
ReconPlayer[23] = CreateReconButton(playerid,100.000, 280.000, "Freeze");//Drop >>
ReconPlayer[24] = CreateReconButton(playerid,100.000, 297.000, "UnFreeze");//Drop >>
ReconPlayer[25] = CreateReconButton(playerid,100.000, 246.000, "SKick");//Kick >>
ReconPlayer[26] = CreateReconButton(playerid,100.000, 263.000, "Kick");//Kick >>
ReconPlayer[27] = CreateReconButton(playerid,100.000, 280.000, "Ban");//Ban >>
ReconPlayer[28] = CreateReconButton(playerid,100.000, 297.000, "SBan");//Ban >>
ReconPlayer[29] = CreateReconButton(playerid,100.000, 314.000, "IBan");//Ban >>
ReconPlayer[30] = CreateReconButton(playerid,100.000, 297.000, "Stats");//Stats >>
ReconPlayer[31] = CreateReconButton(playerid,100.000, 314.000, "IWep");//Stats >>
ReconPlayer[32] = CreateReconButton(playerid,100.000, 331.000, "GetIP");//Stats >>
ReconPlayer[33] = CreateReconButton(playerid,100.000, 348.000, "Serial/S0b");//Stats >>
ReconPlayer[34] = CreateReconButton(playerid,585.00, 350.00, "Help"); // Рекон клавиша
LastReconClick[playerid][0] = 0;
SpecID[playerid] = 65535;
LastReconClick[playerid][1] = 0;
AFKTimeLast[playerid] = 0;
AFKTime[playerid] = 0;
ReconSelect[playerid] = INVALID_TEXT_DRAW;
ReconSelectSub[playerid] = INVALID_TEXT_DRAW;
NumberShot[playerid] = 0;
NumberShotTarget[playerid] = 0;
DisallowSpawn[playerid] = 0;
TimeNumberShot[playerid] = 0;
TimeNumberShotTarget[playerid] = 0;
III Этап
PHP:
if(IsPlayerConnected(playerid))
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);
if(LastReconClick[playerid][0] != ud) LastReconClick[playerid][0] = 0;
if(LastReconClick[playerid][1] != lr) LastReconClick[playerid][1] = 0;
if(Spectate[playerid] && lr == KEY_LEFT && !LastReconClick[playerid][1])
{
LastReconClick[playerid][1] = lr;
PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
SubTextDelete(playerid);
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
return 1;
}
if(Spectate[playerid] && lr == KEY_RIGHT && !LastReconClick[playerid][1])
{
LastReconClick[playerid][1] = lr;
PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
if(ReconSelectSub[playerid] == INVALID_TEXT_DRAW)
OnPlayerClickPlayerTextDraw(playerid, ReconPlayer[ReconSelect[playerid]]);
else
OnPlayerClickPlayerTextDraw(playerid, ReconPlayer[ReconSelectSub[playerid]]);
return 1;
}
if(Spectate[playerid] && ud == KEY_UP && !LastReconClick[playerid][0])
{
PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
LastReconClick[playerid][0] = ud;
if(ReconSelectSub[playerid] == INVALID_TEXT_DRAW)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
if(ReconSelect[playerid] <= 7)
{
ReconSelect[playerid] = 15;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
else
{
ReconSelect[playerid]--;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
return 1;
}
else
{
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 0);
if(ReconSelectSub[playerid] <= ReconBounds[playerid][0])
{
ReconSelectSub[playerid] = ReconBounds[playerid][1];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else
{
ReconSelectSub[playerid]--;
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
}
}
if(Spectate[playerid] && ud == KEY_DOWN && !LastReconClick[playerid][0])
{
PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
LastReconClick[playerid][0] = ud;
if(ReconSelectSub[playerid] == INVALID_TEXT_DRAW)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
if(ReconSelect[playerid] >= 15)
{
ReconSelect[playerid] = 7;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
else
{
ReconSelect[playerid]++;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
return 1;
}
else
{
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 0);
if(ReconSelectSub[playerid] >= ReconBounds[playerid][1])
{
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else
{
ReconSelectSub[playerid]++;
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
}
}
}
if(Spectate[playerid] && SpecAd[playerid] != INVALID_PLAYER_ID) return PlayerTextDrawShow(playerid, ReconPlayer[34]);
IV Этап
PHP:
if(Spectate[playerid] && PlayerInfo[playerid][pAdmin] > 1)
{
if(ReconPlayer[7] == playertextid) return SubTextDelete(playerid),ShowPlayerDialog(playerid, 114, DIALOG_STYLE_INPUT, " ", "Введите ID", "OK", "Закрыть");
else if(ReconPlayer[8] == playertextid)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 16; i < sizeof(ReconPlayer); i++)
PlayerTextDrawHide(playerid, ReconPlayer[i]);
for(new i = 16; i < 20; i++)
PlayerTextDrawShow(playerid, ReconPlayer[i]);
ReconBounds[playerid][0] = 16;
ReconBounds[playerid][1] = 19;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else if(ReconPlayer[9] == playertextid)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 16; i < sizeof(ReconPlayer); i++)
PlayerTextDrawHide(playerid, ReconPlayer[i]);
for(new i = 20; i < 25; i++)
PlayerTextDrawShow(playerid, ReconPlayer[i]);
ReconBounds[playerid][0] = 20;
ReconBounds[playerid][1] = 24;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else if(ReconPlayer[10] == playertextid)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 16; i < sizeof(ReconPlayer); i++)
PlayerTextDrawHide(playerid, ReconPlayer[i]);
PlayerTextDrawShow(playerid, ReconPlayer[25]);
PlayerTextDrawShow(playerid, ReconPlayer[26]);
ReconBounds[playerid][0] = 25;
ReconBounds[playerid][1] = 26;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else if(ReconPlayer[12] == playertextid)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 16; i < sizeof(ReconPlayer); i++)
PlayerTextDrawHide(playerid, ReconPlayer[i]);
for(new i = 27; i < 30; i++)
PlayerTextDrawShow(playerid, ReconPlayer[i]);
ReconBounds[playerid][0] = 27;
ReconBounds[playerid][1] = 29;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else if(ReconPlayer[13] == playertextid)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 16; i < sizeof(ReconPlayer); i++)
PlayerTextDrawHide(playerid, ReconPlayer[i]);
for(new i = 30; i < 34; i++)
PlayerTextDrawShow(playerid, ReconPlayer[i]);
ReconBounds[playerid][0] = 30;
ReconBounds[playerid][1] = 33;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else if(ReconPlayer[11] == playertextid) return SubTextDelete(playerid),ShowPlayerDialog(playerid,117,DIALOG_STYLE_INPUT,"Варн","' Введите причину '","Варн","Выход");
else if(ReconPlayer[14] == playertextid) return SubTextDelete(playerid),StartSpectate(playerid,SpecAd[playerid]);
else if(ReconPlayer[15] == playertextid) return SubTextDelete(playerid),CallLocalFunction("OnPlayerCommandText", "is", playerid, "/re OFF");
else if(ReconPlayer[16] == playertextid)
{
new Float:boomx, Float:boomy, Float:boomz;
GetPlayerPos(SpecAd[playerid],boomx, boomy, boomz);
return CreateExplosion(boomx, boomy , boomz-8.9, 5, 0.5);
}
else if(ReconPlayer[17] == playertextid) return SetPlayerHealth(SpecAd[playerid], GetPlayerHP(SpecAd[playerid])-10.0);
else if(ReconPlayer[18] == playertextid) return SetVehicleHealth(GetPlayerVehicleID(SpecAd[playerid]), GetVehicleHP(GetPlayerVehicleID(SpecAd[playerid]))-10.0);
else if(ReconPlayer[19] == playertextid)
{
TimeNumberShotTarget[SpecAd[playerid]] = 0;
TimeNumberShot[SpecAd[playerid]] = 0;
}
else if(ReconPlayer[20] == playertextid)
{
format(query, sizeof(query), "/mute %d 5",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
//return SCM(playerid,COLOR_GREY,"Произошла ошибка. Бан чата не выдался");
}
else if(ReconPlayer[21] == playertextid)
{
format(query, sizeof(query), "/slap %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[22] == playertextid)
{
format(query, sizeof(query), "/prison %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[23] == playertextid)
{
format(query, sizeof(query), "/freeze %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[24] == playertextid)
{
format(query, sizeof(query), "/unfreeze %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[25] == playertextid)
{
SubTextDelete(playerid);
format(query, sizeof(query), "/skick %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[26] == playertextid) return SubTextDelete(playerid),ShowPlayerDialog(playerid,116,DIALOG_STYLE_INPUT,"Кик","' Введите причину '","Кикнуть","Выход");
else if(ReconPlayer[27] == playertextid) return SubTextDelete(playerid),ShowPlayerDialog(playerid,118,DIALOG_STYLE_INPUT,"Бан","' Введите причину '","Бан","Выход");
else if(ReconPlayer[28] == playertextid) return SubTextDelete(playerid),ShowPlayerDialog(playerid,119,DIALOG_STYLE_INPUT,"Бан","' Введите причину '","Бан","Выход");
else if(ReconPlayer[29] == playertextid) return SubTextDelete(playerid),ShowPlayerDialog(playerid,120,DIALOG_STYLE_INPUT,"Бан","' Введите причину '","Бан","Выход");
else if(ReconPlayer[30] == playertextid)
{
SubTextDelete(playerid);
format(query, sizeof(query), "/getstats %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[31] == playertextid)
{
SubTextDelete(playerid);
format(query, sizeof(query), "/iwep %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[32] == playertextid)
{
SubTextDelete(playerid);
format(query, sizeof(query), "/getip %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(ReconPlayer[33] == playertextid)
{
SubTextDelete(playerid);
format(query, sizeof(query), "/getserial %d",SpecAd[playerid]);
return CallLocalFunction("OnPlayerCommandText", "is", playerid, query);
}
else if(playertextid == ReconPlayer[34])
{
new reconstr[2800];
strcat(reconstr,"{009933}Level:{FFFFFF} Лвл | Количество exp / Кол. exp необходимое для получения след. лвл\n");
strcat(reconstr,"{009933}Warns:{FFFFFF} Количество варнов\n{C0C0C0}\tЕсли число не отрицательное, то у игрока нет варнов, но они были раньше\n");
strcat(reconstr,"{009933}Armour:{FFFFFF} Броня\n{009933}Health:{FFFFFF} Здоровье\n{009933}CarHP:{FFFFFF} Здоровье машины\n{C0C0C0}\tТолько если игрок в транспорте,иначе значение будет 0\n");
strcat(reconstr,"{009933}Speed:{FFFFFF} Скорость транспорта / Макс. Скорость транспорта\n{C0C0C0}\tТолько если игрок в транспорте\n");
strcat(reconstr,"{009933}Ping:{FFFFFF} Пинг\n");
strcat(reconstr,"{009933}Ammo:{FFFFFF} Количество патронов на клиенте | Количество патронов на сервере\n{C0C0C0}\tТо что оображается игроку | Реальнок количество патронов\n");
strcat(reconstr,"{C0C0C0}\tПоказывает патроны оружия, которое у игрока в данный момент в руках\n");
strcat(reconstr,"{009933}Shot:{FFFFFF} Количество выстрелов / Количество попаданий | Процент попаданий\n");
strcat(reconstr,"{C0C0C0}\tСервер подсчитывает количество выстрелов сделанных игроком, пока он онлайн\n\tНа глаз можно определить, использует ли игрок AIM\n");
strcat(reconstr,"{009933}TimeShot:{FFFFFF} Количество выстрелов / Количество попаданий | Процент попаданий\n");
strcat(reconstr,"{C0C0C0}\tТоже самое, что предыдущая строка, но счетчик обнуляется каждые 10 минут\n\tВ меню Recon можно обнулить в любой момент - \"ResetShot\"\n");
strcat(reconstr,"{009933}AFKTime:{FFFFFF} Время игры и время проведенее в афк\n");
strcat(reconstr,"{009933}Engine:{FFFFFF} ON - Двигатель включен / OFF - Выключен / - Не в машине");
return ShowPlayerDialog(playerid,17012,0,"Help",reconstr,"Закрыть","");
}
}
V Этап
PHP:
if(SpecID[playerid] != INVALID_PLAYER_ID)
if(Spectate[SpecID[playerid]] == 1 && SpecAd[SpecID[playerid]] == playerid)
{
GameTextForPlayer(SpecID[playerid], "~r~~n~PLAYER DISCONNECT", 5000, 4);
ShowPlayerDialog(SpecID[playerid], 115, DIALOG_STYLE_MSGBOX, "Игрок вышел", "Игрок, за которым вы наблюдали вышел из игры.\nЖелаете отключить Recon?", "Да", "Нет");
DisallowSpawn[playerid] = 1;
}
if(SpecAd[playerid] != 65535)
{
SpecID[SpecAd[playerid]] = 65535;
SpecAd[playerid] = 65535;
}
SpecID[playerid] = 65535;
VI Этап
PHP:
if(DisallowSpawn[playerid])
{
DisallowSpawn[playerid] = 0;
TogglePlayerSpectating(playerid, 1);
return 0;
}
if(Spectate[playerid])
{
Spectate[playerid] = 0;
SetPlayerPos(playerid,SpecPlayer[playerid][0],SpecPlayer[playerid][1],SpecPlayer[playerid][2]);
SetPlayerInterior(playerid,SpecPlayerInt[playerid]);
SetPlayerVirtualWorld(playerid,SpecPlayerWorld[playerid]);
SetPlayerFacingAngle(playerid, SpecPlayerAngle[playerid]);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
SetPlayerHealth(playerid, 255.0);
return 1;
}
VII Этап
PHP:
if(newkeys & KEY_SECONDARY_ATTACK && Spectate[playerid])
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
return SelectTextDraw(playerid, 0xD97700AA);
}
if(newkeys & KEY_SPRINT && Spectate[playerid])
{
PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
if(ReconSelectSub[playerid] == INVALID_TEXT_DRAW)
OnPlayerClickPlayerTextDraw(playerid, ReconPlayer[ReconSelect[playerid]]);
else
OnPlayerClickPlayerTextDraw(playerid, ReconPlayer[ReconSelectSub[playerid]]);
return 1;
}
VIII Этап
PHP:
if(Spectate[playerid] && SpecAd[playerid] != INVALID_PLAYER_ID)
{
new tttgtg;
tttgtg = GetPlayerAmmo(SpecAd[playerid]);
new Float:health;
GetVehicleHealth(GetPlayerVehicleID(SpecAd[playerid]),health);
new Float:hppp;
new Float:aermor;
GetPlayerArmour(SpecAd[playerid],aermor);
GetPlayerHealth(SpecAd[playerid],hppp);
new Float:onepercent = NumberShot[SpecAd[playerid]]/100;
new percentshot = floatround(onepercent)*NumberShotTarget[SpecAd[playerid]];
new Float:tonepercent = TimeNumberShot[SpecAd[playerid]]/100;
new tpercentshot = floatround(tonepercent)*TimeNumberShotTarget[SpecAd[playerid]];
new engines[5], maxspeed[6];
if(PlayerInfo[SpecAd[playerid]][pAFK] >= 3) // Вписывайте свою афк проверку
{
format(query, sizeof(query), "%s~n~ID: %d ~r~AFK",getName(SpecAd[playerid]),SpecAd[playerid]);
PlayerTextDrawSetString(playerid, ReconPlayer[6],query);
}
else
{
format(query, sizeof(query), "%s~n~ID: %d",getName(SpecAd[playerid]),SpecAd[playerid]);
PlayerTextDrawSetString(playerid, ReconPlayer[6],query);
}
if(GetPlayerState(SpecAd[playerid]) != PLAYER_STATE_DRIVER) engines = "-", maxspeed = "0";
else if(GetPlayerState(SpecAd[playerid]) == PLAYER_STATE_DRIVER)
{
GetVehicleParamsEx(GetPlayerVehicleID(SpecAd[playerid]),engine,lights,alarm,doors,bonnet,boot,objective);
if(engine == 1) engines = "ON";
else engines = "OFF";
switch(GetPlayerState(SpecAd[playerid]))
{
case 2:
{
format(maxspeed, sizeof(maxspeed), "%d", MaxSpeedCar[GetVehicleModel(GetPlayerVehicleID(SpecAd[playerid]))-400]);
}
}
}
format(query, sizeof(query), "~n~%d : %d / %d~n~%d~n~%.0f~n~%.0f~n~%.0f~n~%d / %s~n~%d~n~%d : %d~n~%d / %d : %d%%~n~%d / %d : %d%%~n~%d : %d~n~%s",
PlayerInfo[SpecAd[playerid]][pLevel], PlayerInfo[SpecAd[playerid]][pExp], (PlayerInfo[SpecAd[playerid]][pLevel]+1)*4, PlayerInfo[SpecAd[playerid]][pWarns], aermor,hppp,health,SpeedVehicle(SpecAd[playerid]),maxspeed,GetPlayerPing(SpecAd[playerid]),tttgtg,0,NumberShot[SpecAd[playerid]],NumberShotTarget[SpecAd[playerid]],percentshot,TimeNumberShot[SpecAd[playerid]],TimeNumberShotTarget[SpecAd[playerid]],tpercentshot,AFKTime[SpecAd[playerid]],AFKTimeLast[SpecAd[playerid]],engines);
PlayerTextDrawSetString(playerid, ReconPlayer[5],query);
}
IX Этап
)]
PHP:
case 114:
{
if(!response) return 1;
if(SpecAd[playerid] != INVALID_PLAYER_ID) SpecID[SpecAd[playerid]] = 65535;
SpecAd[playerid] = 65535;
new mess[40];format(mess, sizeof(mess), "/re %s",inputtext);CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
}
case 115: StopSpectate(playerid);
case 116:
{
if(response){new mess[40];format(mess, sizeof(mess), "/kick %d %s",SpecAd[playerid],inputtext);CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);}
}
case 117:
{
if(response){new mess[40];format(mess, sizeof(mess), "/warn %d %s",SpecAd[playerid],inputtext);CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);}
}
case 118:
{
if(response){new mess[40];format(mess, sizeof(mess), "/ban %d %s",SpecAd[playerid],inputtext);CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);}
}
case 119:
{
if(response){new mess[40];format(mess, sizeof(mess), "/sban %d %s",SpecAd[playerid],inputtext);CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);}
}
case 120:
{
if(response){new mess[40];format(mess, sizeof(mess), "/iban %d %s",SpecAd[playerid],inputtext);CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);}
}
X Этап
PHP:
if(hittype == BULLET_HIT_TYPE_PLAYER)
if(IsPlayerStreamedIn(hitid, playerid))
if(GetPlayerARM(hitid) <= 0.0 && GetPlayerHP(hitid) > 0.0) NumberShotTarget[playerid]++,TimeNumberShotTarget[playerid]++;
if(hittype == BULLET_HIT_TYPE_VEHICLE)
if(IsVehicleStreamedIn(hitid, playerid))
if(GetVehicleHP(hitid) > 0.0)
TimeNumberShotTarget[playerid]++,NumberShotTarget[playerid]++;
NumberShot[playerid]++;
TimeNumberShot[playerid]++;
XI Этап. Завершение
PHP:
CMD:recon(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 2) return 1;
if(!strcmp(params,"OFF",true) && Spectate[playerid]) return StopSpectate(playerid);
if(!Spectate[playerid] && !strcmp(params,"OFF",true)) return SendClientMessage(playerid, COLOR_GREY, "Вы не в режиме наблюдения!");
if(sscanf(params, "u",params[0]))
{
if(SpecAd[playerid] != INVALID_PLAYER_ID) SpecID[SpecAd[playerid]] = 65535;
SpecAd[playerid] = 65535;
if(!Spectate[playerid])
{
GetPlayerPos(playerid,SpecPlayer[playerid][0],SpecPlayer[playerid][1],SpecPlayer[playerid][2]);
SpecPlayerInt[playerid] = GetPlayerInterior(playerid);
SpecPlayerWorld[playerid] = GetPlayerVirtualWorld(playerid);
GetPlayerFacingAngle(playerid, SpecPlayerAngle[playerid]);
}
ReconSelect[playerid] = 7;
ReconSelectSub[playerid] = INVALID_TEXT_DRAW;
for(new i = 7; i < sizeof(ReconPlayer); i++)
DisableEnableReconButton(playerid, i, 0, 0);
for(new i = 0; i < 16; i++)
PlayerTextDrawShow(playerid, ReconPlayer[i]);
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
Spectate[playerid] = 1;
TogglePlayerSpectating(playerid, 1);
return 1;
}
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, "Игрок не найден");
if(PlayerInfo[params[0]][pAdmin] > 0) return SendClientMessage(playerid, COLOR_GREY, "Наблюдение за администрацией запрещено!");
if(SpecID[params[0]] != 65535) return SendClientMessage(playerid, COLOR_GREY, "Этот игрок уже под наблюдением");
if(!Spectate[playerid])
{
GetPlayerPos(playerid,SpecPlayer[playerid][0],SpecPlayer[playerid][1],SpecPlayer[playerid][2]);
SpecPlayerInt[playerid] = GetPlayerInterior(playerid);
SpecPlayerWorld[playerid] = GetPlayerVirtualWorld(playerid);
GetPlayerFacingAngle(playerid, SpecPlayerAngle[playerid]);
}
if(SpecAd[playerid] != INVALID_PLAYER_ID) SpecID[SpecAd[playerid]] = 65535;
SpecAd[playerid] = 65535;
SpecAd[playerid] = params[0];
SpecID[params[0]] = playerid;
ReconSelect[playerid] = 7;
ReconSelectSub[playerid] = INVALID_TEXT_DRAW;
for(new i = 7; i < sizeof(ReconPlayer); i++)
DisableEnableReconButton(playerid, i, 0, 0);
for(new i = 0; i < 16; i++)
PlayerTextDrawShow(playerid, ReconPlayer[i]);
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
Spectate[playerid] = 1;
SetTimerEx("SpecPlayers", 100, false, "i", playerid);
return 1;
}
ALTX:recon("/ку", "/re");
Найдете ошибки - пишите в теме. По мере возможности исправлю всё.
Автор: Голубь
Автор вырезки: Voorhis
Автор: Голубь
Автор вырезки: Voorhis
Последнее редактирование:
