Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Система слежение за игроком [SAMP - RP]

Статус
В этой теме нельзя размещать новые ответы.
Делал для своего мода так что подредактируете сами. ;)

СКРИНЫ:
Пешком:


В авто:


ко всем new
PHP:
new Menu:Admin;
--- у кого нету ---
new SpecAd[MAX_PLAYERS];
new SpecID[MAX_PLAYERS];
----------------------------
в OnPlayerSelectedMenuRow
PHP:
if(Current == Admin)
		{
		if (dostup[playerid] != 1) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n\tразмером от 6 до 15 символов","Вход","Отмена");
		ShowMenuForPlayer(Admin,playerid);
		new ClickedPlayerName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME]; GetPlayerName(SpecAd[playerid],ClickedPlayerName,24); GetPlayerName(playerid,pName,24);
		switch(row)
		{
		case 0:
		{
		StartSpectate(playerid,SpecAd[playerid]);
		}
		case 1:
		{
		new string[128];
		if(PlayerInfo[playerid][pAdmin] <= 1) return SendClientMessage(playerid, COLOR_WHITE, "Вам надо иметь 1 lvl админки или выше!"); ShowMenuForPlayer(Admin,playerid);
		if(PlayerInfo[SpecAd[playerid]][pMuted] == 0)
		{
		if (dostup[playerid] != 1) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_PASSWORD,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\nразмером от 6 до 15 символов","Вход","Отмена");
		format(string, sizeof(string), "%s получил бан чата от администратора %s ",ClickedPlayerName, pName );
		SendClientMessageToAll(COLOR_LIGHTRED, string);
		PlayerInfo[SpecAd[playerid]][pMuteTime] = 300;
		PlayerInfo[SpecAd[playerid]][pMuted] = 1;
		ShowMenuForPlayer(Admin,playerid);
		}
		else
		{
		format(string, sizeof(string), "Администратор %s снял бан чата у %s ", pName,ClickedPlayerName );
		SendClientMessageToAll(COLOR_LIGHTRED, string);
		PlayerInfo[SpecAd[playerid]][pMuteTime] = 0;
		PlayerInfo[SpecAd[playerid]][pMuted] = 0;
		ShowMenuForPlayer(Admin,playerid);
		}
		}
		case 2:
		{
	  		if(PlayerInfo[playerid][pAdmin] <= 1) return SendClientMessage(playerid, COLOR_WHITE, "Вам надо иметь 1 lvl админки или выше!"); ShowMenuForPlayer(Admin,playerid);
			ShowPlayerDialog(playerid,13997,DIALOG_STYLE_INPUT,"Кик","Введите причину","Кик","Отмена");
		}
		case 3:
		{
	  		if(PlayerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid, COLOR_WHITE, "Вам надо иметь 2 lvl админки или выше!"); ShowMenuForPlayer(Admin,playerid);
			ShowPlayerDialog(playerid,13998,DIALOG_STYLE_INPUT,"Варн","Введите причину","Варн","Отмена");
		}
		case 4:
		{
	  		if(PlayerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid, COLOR_WHITE, "Вам надо иметь 2 lvl админки или выше!"); ShowMenuForPlayer(Admin,playerid);
			ShowPlayerDialog(playerid,13999,DIALOG_STYLE_INPUT,"Бан","Введите причину","Бан","Отмена");
		}
		case 5:
		{
		if(PlayerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid, COLOR_WHITE, "Вам надо иметь 2 lvl админки или выше!"); ShowMenuForPlayer(Admin,playerid);
		new Float:shealth;
		new Float:slx, Float:sly, Float:slz;
		new name[MAX_PLAYER_NAME];
		new sendername[MAX_PLAYER_NAME];
		GetPlayerName(playerid ,name , sizeof(name));
		GetPlayerName(SpecAd[playerid] ,sendername , sizeof(sendername));
		GetPlayerHealth(SpecAd[playerid], shealth);
		SetPlayerHealthAC(SpecAd[playerid], shealth-5);
		GetPlayerPos(SpecAd[playerid], slx, sly, slz);
		SetPlayerPosServer(SpecAd[playerid], slx, sly, slz+5);
		PlayerPlaySound(SpecAd[playerid], 1130, slx, sly, slz+5);
		new string[128];
		format(string, sizeof(string), "Админ %s дал поджопник %s",name,sendername);
		ABroadCast(COLOR_LIGHTRED,string,1);
		SendClientMessage(SpecAd[playerid], COLOR_LIGHTRED, string);
		}
		case 6:
		{
		new mess[256];
		format(mess, sizeof(mess), "/getstats %d",SpecAd[playerid]);
		OnPlayerCommandText(playerid,mess);
		}
		case 7:
		{
		new giveplayer[256];
		new playersip[256];
		GetPlayerName(SpecAd[playerid], giveplayer, sizeof(giveplayer));
		GetPlayerIp(SpecAd[playerid],playersip,sizeof(playersip));
		new string[128];
		format(string, sizeof(string), "[%s] IP: %s",giveplayer,playersip);
		SendClientMessage(playerid,0x6495EDFF,string);
		}
		case 8:
		{
		if(PlayerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid, COLOR_WHITE, "Вам надо иметь 2 lvl админки или выше!"); ShowMenuForPlayer(Admin,playerid);
  		GetPlayerHealth(SpecAd[playerid],GMHP[SpecAd[playerid]][0]);
		GetVehicleHealth(GetPlayerVehicleID(SpecAd[playerid]),VEHHP[SpecAd[playerid]][0]);
        GetPlayerArmour(SpecAd[playerid], GMARMOUR[SpecAd[playerid]][0]);
        SetPlayerHealthAC(SpecAd[playerid], 100.0);
        player_NoCheckTimeVeh[SpecAd[playerid]] = 3;
        SetVehicleHealth(GetPlayerVehicleID(SpecAd[playerid]),10000.0);
		SetPlayerArmourAC(SpecAd[playerid], 0);
        SetTimerEx("GETHP",1000,false,"i",SpecAd[playerid]);
		new Float:boomx, Float:boomy, Float:boomz;
		GetPlayerPos(SpecAd[playerid],boomx, boomy, boomz);
		CreateExplosion(boomx, boomy , boomz, 5, 2);
		ShowMenuForPlayer(Admin,playerid);
		}
		case 10:
		{
		if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
		{
			StopSpectate(playerid);
			SetPlayerHealthAC(playerid, 100);
		}
			SpawnPlayer(playerid);
			HideMenuForPlayer(Admin,playerid);
		}
		case 9:
		{
			if(PlayerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid, COLOR_WHITE, "Вам надо иметь 3 lvl админки или выше!"); ShowMenuForPlayer(Admin,playerid);
			{
			    new stringskill[800];
				new points[6],percent[2] = "%";
				points[0] = 100 - PlayerInfo[SpecAd[playerid]][pGunSkill][0];
				points[1] = 100 - PlayerInfo[SpecAd[playerid]][pGunSkill][1];
				points[2] = 100 - PlayerInfo[SpecAd[playerid]][pGunSkill][2];
				points[3] = 100 - PlayerInfo[SpecAd[playerid]][pGunSkill][3];
				points[4] = 100 - PlayerInfo[SpecAd[playerid]][pGunSkill][4];
				points[5] = 100 - PlayerInfo[SpecAd[playerid]][pGunSkill][5];
				format(stringskill,sizeof(stringskill), "Nick player:\t %s\n\nSDPistol:\t[%s]%d%s\nDeagle:\t[%s]%d%s\nShotGun:\t[%s]%d%s\nMP5\t\t[%s]%d%s\nAK47:\t\t[%s]%d%s\nM4A1:\t\t[%s]%d%s",
				getName(SpecAd[playerid]),
				ToDevelopSkills(PlayerInfo[SpecAd[playerid]][pGunSkill][0],points[0]),PlayerInfo[SpecAd[playerid]][pGunSkill][0],percent,
				ToDevelopSkills(PlayerInfo[SpecAd[playerid]][pGunSkill][1],points[1]),PlayerInfo[SpecAd[playerid]][pGunSkill][1],percent,
				ToDevelopSkills(PlayerInfo[SpecAd[playerid]][pGunSkill][2],points[2]),PlayerInfo[SpecAd[playerid]][pGunSkill][2],percent,
				ToDevelopSkills(PlayerInfo[SpecAd[playerid]][pGunSkill][3],points[3]),PlayerInfo[SpecAd[playerid]][pGunSkill][3],percent,
				ToDevelopSkills(PlayerInfo[SpecAd[playerid]][pGunSkill][4],points[4]),PlayerInfo[SpecAd[playerid]][pGunSkill][4],percent,
				ToDevelopSkills(PlayerInfo[SpecAd[playerid]][pGunSkill][5],points[5]),PlayerInfo[SpecAd[playerid]][pGunSkill][5],percent);
				ShowPlayerDialog(playerid,43,DIALOG_STYLE_MSGBOX, "Скиллы игрока",stringskill, "Закрыть", "");
			}
		}
		case 11:
		{
		if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
		{
			StopSpectate(playerid);
			SetPlayerHealthAC(playerid, 100);
		}
			SpawnPlayer(playerid);
			HideMenuForPlayer(Admin,playerid);
			}
		}
}
PHP:
case 13997:
{
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
        new mess[256];
        format(mess, sizeof(mess), "/kick %d %s",SpecAd[playerid],inputtext);
        OnPlayerCommandText(playerid,mess);
    }
}
case 13998:
{
    if(PlayerInfo[playerid][pAdmin] >= 2)
    {
        new mess[256];
        format(mess, sizeof(mess), "/warn %d %s",SpecAd[playerid],inputtext);
        OnPlayerCommandText(playerid,mess);
    }
}
case 13999:
{
    if(PlayerInfo[playerid][pAdmin] >= 2)
    {
        new mess[256];
        format(mess, sizeof(mess), "/ban %d %s",SpecAd[playerid],inputtext);
        OnPlayerCommandText(playerid,mess);
    }
}
в /recon команду
PHP:
ShowMenuForPlayer(Admin,playerid);
------ у кого нету -----
   								SpecAd[playerid] = specid;
   								SpecID[specid] = playerid;
--------
в stock Menu() - RLS
PHP:
SetMenuColumnHeader(Admin, 0, "RMenu");
AddMenuItem(Admin,0,"Switch");
AddMenuItem(Admin,0,"Mute");
AddMenuItem(Admin,0,"Kick");
AddMenuItem(Admin,0,"Warn");
AddMenuItem(Admin,0,"Ban");
AddMenuItem(Admin,0,"Slap");
AddMenuItem(Admin,0,"Stats");
AddMenuItem(Admin,0,"GetIP");
AddMenuItem(Admin,0,"GMTest");
AddMenuItem(Admin,0,"Skills");
AddMenuItem(Admin,0,"OFF");
в stock StopSpectate(playerid)

PHP:
HideMenuForPlayer(Admin,playerid);

Теперь TextDraw:

ко всем new

PHP:
new Text:FULLRECON[MAX_PLAYERS];
в OnPlayerConnect

PHP:
FULLRECON[playerid] = TextDrawCreate(525.000000, 128.000000, "_");
TextDrawFont(FULLRECON[playerid], 1);
TextDrawSetOutline(FULLRECON[playerid], 0);
TextDrawLetterSize(FULLRECON[playerid], 0.410000, 1.000000);
в /recon команду

PHP:
TextDrawShowForPlayer(playerid, FULLRECON[playerid]);
я засунул в UpdateSpeedometr вы как хотите в любой таймер не больше 1.5 сек

PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
{
new tttgtg;
new strr1[256];
tttgtg = GetPlayerAmmo(SpecAd[i]);
new Float:hppp;
new Float:aermor;
GetPlayerArmour(SpecAd[i],aermor);
GetPlayerHealth(SpecAd[i],hppp);
if(PlayerInfo[i][pAdmin] >= 2)
{
	if(IsPlayerInAnyVehicle(SpecAd[i]))
	{
	    new Float:health;
		GetVehicleHealth(GetPlayerVehicleID(SpecAd[i]),health);
	    format(strr1, sizeof(strr1),"%s~n~[ID:%d]~n~~n~~r~Armour: ~w~%.0f~n~~g~HP: ~w~%.0f~n~~g~CAR HP: ~w~%.0f~n~~r~MONEY:~w~%d~n~~b~AMMO: ~w~%d~n~~p~WARNS: ~w~%d~n~~y~PING: ~w~%d~n~~b~SPEED: ~w~%d~n~~b~OGRAN: ~w~%d",getName(SpecAd[i]),SpecAd[i],aermor,hppp,health,PlayerInfo[SpecAd[i]][pCash],tttgtg,PlayerInfo[SpecAd[i]][pWarns],GetPlayerPing(SpecAd[i]),SpeedVehicle(SpecAd[i]),Limiter[SpecAd[i]]);
		TextDrawSetString(FULLRECON[i],strr1);
	}
	if(!IsPlayerInAnyVehicle(SpecAd[i]))
	{
	    format(strr1, sizeof(strr1),"%s~n~[ID:%d]~n~~n~~r~Armour: ~w~%.0f~n~~g~HP: ~w~%.0f~n~~g~BANK:~w~%d~n~~r~MONEY:~w~%d~n~~b~AMMO: ~w~%d~n~~p~WARNS: ~w~%d~n~~y~PING: ~w~%d~n~~b~SPEED: ~w~%d",getName(SpecAd[i]),SpecAd[i],aermor,hppp,PlayerInfo[SpecAd[i]][pBank],PlayerInfo[SpecAd[i]][pCash],tttgtg,PlayerInfo[SpecAd[i]][pWarns],GetPlayerPing(SpecAd[i]),SpeedVehicle(SpecAd[i]));
		TextDrawSetString(FULLRECON[i],strr1);
	}
}
Теперь возврат на место после слежки:

ко всем new

PHP:
new Float:TeleportDest[MAX_PLAYERS][5];
new TeleportDestNoFloat[MAX_PLAYERS][2];
в команду /recon

PHP:
if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
								{
									GetPlayerPos(playerid, TeleportDest[playerid][0],TeleportDest[playerid][1],TeleportDest[playerid][2]);
									TeleportDestNoFloat[playerid][0] = GetPlayerInterior(playerid);
									TeleportDestNoFloat[playerid][1] = GetPlayerVirtualWorld(playerid);
								}
к пабликам
PHP:
forward TeleportTimer(playerid);
public TeleportTimer(playerid)
{
    SetPlayerPosServer(playerid, TeleportDest[playerid][0],TeleportDest[playerid][1],TeleportDest[playerid][2]);
    SetPlayerInterior(playerid, TeleportDestNoFloat[playerid][0]);
    SetPlayerVirtualWorld(playerid, TeleportDestNoFloat[playerid][1]);
    return true;
}
в stock StopSpectate(playerid)
PHP:
SetTimerEx("TeleportTimer",1000,false,"i",playerid);
в OnPlayerDisconnect

PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
{
	if(GetPlayerState(i) == PLAYER_STATE_SPECTATING && gSpectateID[i] == playerid)
	{
		StopSpectate(i);
		SetPlayerHealthAC(i, 100);
		format(string, sizeof(string), "~w~RECON ~r~ OFF~n~ ~r~PLAYER DISCONNECT");
		GameTextForPlayer(i, string, 5000, 3);
	}
}
Повторяю!!! Делал для своего мода, подредактируйте под свой. by Freddy
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу