STy1e |
Дата: Вторник, 29.04.2014, 19:48 | Сообщение # 1
|
Боец
Сообщений: 51
Статус: Offline
|
Написал сегодня человечку одному с СМ команду слежки за игроком. При слежении за подозреваемым появляется менюшка с пунктами "Тихий кик, кик, бан, мут, слап, ГМТест"
Сама команда на ZCMD, кому нужно будет, переведу на другой процессор.
Приступим.
В самый низ мода вставим
Код CMD:spec(playerid,params[]) { if(!IsPlayerAdmin) return 1; new ID; new str[128], pname[MAX_PLAYER_NAME]; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, 0xF97804FF, "Используйте: /spec [ID]"); if(IsPlayerConnected(ID) == 0) SendClientMessage(playerid, 0xF97804FF, "Такого игрока нет"); else { GetPlayerName(ID, pname, MAX_PLAYER_NAME); SetPVarInt(playerid,"SpecID",ID); format(str,sizeof(str),"Вы начали слежку за %s",pname); SendClientMessage(playerid,COLOR_LIGHTRED,str); TogglePlayerSpectating(playerid, ID); PlayerSpectatePlayer(playerid, ID); ShowMenuForPlayer(specmenu,playerid); } return 1; }
В начало мода вставим
В OnGameModeInit
Код specmenu = CreateMenu("Spec Menu", 1, 50.0, 180.0, 200.0, 200.0); AddMenuItem(specmenu, 0, "- EXIT -"); AddMenuItem(specmenu, 0, "SKick"); AddMenuItem(specmenu, 0, "Mute"); AddMenuItem(specmenu, 0, "Kick"); AddMenuItem(specmenu, 0, "Ban"); AddMenuItem(specmenu, 0, "Slap"); AddMenuItem(specmenu, 0, "GMTest"); AddMenuItem(specmenu, 0, "- EXIT -");
В OnPlayerSelectedMenuRow вставим
Код if(GetPlayerMenu(playerid) == specmenu) { new specid = GetPVarInt(playerid,"SpecID"); switch(row) { case 0: { TogglePlayerSpectating(playerid, 0); SetCameraBehindPlayer(playerid); SendClientMessage(playerid,0xF97804FF,"Слежка окончена"); DeletePVar(playerid,"SpecID"); } case 1: { ShowMenuForPlayer(specmenu,playerid); Kick(specid); SendClientMessage(playerid,-1,"Вы кикнули игрока"); } case 2: { //Тут функция мута } case 3: { ShowMenuForPlayer(specmenu,playerid); ShowPlayerDialog(playerid,1593,DIALOG_STYLE_INPUT,"{0006ff}Кикнуть","Введите причину кика игрока:","Кикнуть","Отмена"); } case 4: { ShowMenuForPlayer(specmenu,playerid); ShowPlayerDialog(playerid,1593,DIALOG_STYLE_INPUT,"{0006ff}Бан","Введите причину бана игрока:","Забанить","Отмена"); } case 5: { new Float:x, Float:y,Float:z; GetPlayerPos(specid,x,y,z); SetPlayerPos(specid,x,y,z+8); ShowMenuForPlayer(specmenu,playerid); } case 6: { new stringg[144]; new Float:oldhp, Float:newhp; new Float:x, Float:y,Float:z; GetPlayerPos(specid,x,y,z); GetPlayerHealth(specid, oldhp); CreateExplosion(x, y , z, 5, 0.5); GetPlayerHealth(specid, newhp); format(stringg,144,"До проверки: %d HP, после: %d HP", oldhp, newhp); SetPlayerHealth(specid,oldhp); ShowMenuForPlayer(specmenu,playerid); } case 7: { TogglePlayerSpectating(playerid, 0); SetCameraBehindPlayer(playerid); SendClientMessage(playerid,0xF97804FF,"Слежка окончена"); DeletePVar(playerid,"SpecID"); } } } И для работоспособности наших кика и бана в диалогах добавим:
В OnDialogResponse
Код if(dialogid == 1593) { if(response) { new pname[24],pname2[24],str[144]; GetPlayerName(GetPVarInt(playerid,"SpecID"), pname, MAX_PLAYER_NAME); GetPlayerName(playerid, pname2, MAX_PLAYER_NAME); format(str,sizeof(str),"Администратор %s кикнул %s Причина: %s",pname2, pname,inputtext); SendClientMessageToAll(COLOR_LIGHTRED,str); Kick(GetPVarInt(playerid,"SpecID")); } else return 1; } if(dialogid == 1594) { if(response) { new pname[24],pname2[24],str[144]; GetPlayerName(GetPVarInt(playerid,"SpecID"), pname, MAX_PLAYER_NAME); GetPlayerName(playerid, pname2, MAX_PLAYER_NAME); format(str,sizeof(str),"Администратор %s забанил игрока %s Причина: %s",pname2, pname,inputtext); SendClientMessageToAll(COLOR_LIGHTRED,str); PlayerInfo[GetPVarInt(playerid,"SpecID")][pBan] = 1;//Меняем переменную бана на свою Kick(GetPVarInt(playerid,"SpecID")); } else return 1; }
Ну вот вроде бы и все. Писал человеку под определенный мод, по этому переменные меняем на свои... Слил сюда, так как клиент не оплатил заказ.
###adeaf6944f49fac015d35e9d3eb34516###
Сообщение отредактировал STy1e - Воскресенье, 04.05.2014, 19:11 |
|
|
|
STy1e |
Дата: Воскресенье, 04.05.2014, 19:12 | Сообщение # 4
|
Боец
Сообщений: 51
Статус: Offline
|
Цитата JonNou ( ) Мне кажется или тут нету проверки на то администратор игрок, который ввел команду или нет? :DD Исправил, забыл просто. Голубь, ты о чем?
###adeaf6944f49fac015d35e9d3eb34516###
|
|
|
|