Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 1
  • 1
Модератор форума: KaTacTpOqpa  
Делаем бан по ID с указанием причины
BJIADOKC Сообщение # 1  | 17:10:15
Скриптеры
Сообщений: 601
Репутация: 161
в этом уроке я расскажу как сделать простой бан игрока по ID
в самое начало:
Code

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COOL_GREEN 0xBBF900AA
#define AAD_COLOR_GREY 0xAFAFAFAA

потом ищем OnPlayerCommandText и вставляем:

Code

public OnPlayerCommandText(playerid,cmdtext[])
{
dcmd(ban,3,cmdtext);
return 0;
}

обьясню эту функцию
dcmd( - вызов комманды
ban - сама комманда
3 - длина комманды
cmdtext - тип текста (как в заголовке)

и, конечно, самая важная часть - сама комманда.

вставляем в самый конец, после всего

Code

stock ReturnPlayerID(PlayerName[])
{
for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i))
{
new name[24];
GetPlayerName(i,name,24);
if(strfind(name,PlayerName,true)!=-1) return i;
}
return INVALID_PLAYER_ID;
}

и сразу после этого:

Code

dcmd_ban(playerid,params[])
{
if(IsPlayerAdmin(playerid)) return SendClientMessage(playerid,AAD_COLOR_GREY," *** Ты не Администратор");
if(!strlen(params)) return SendClientMessage(playerid,AAD_COLOR_GREY," *** Ошибка: /ban [ID игрока] [причина]");
new tmp[256],Index;
tmp = strtok(params,Index);
new id;
if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp);
else id = strval(tmp);
if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid)
{
new string[256],name[24],ActionName[24];
GetPlayerName(playerid,name,24);
GetPlayerName(id,ActionName,24);
if(!strlen(params[strlen(tmp)+1])) format(string,256," *** Администратор %s (ID: %d) забанил игрока %s (ID: %d) (причина не указана)",name,playerid,ActionName,id);
else format(string,256," *** Администратор %s (ID: %d) забанил игрока %s (ID: %d) (Причина: %s)",name,playerid,ActionName,id,params[strlen(tmp)+1]);
SendClientMessageToAll(COOL_GREEN,string);
BanEx(id,params[strlen(tmp)+1]);
}
else SendClientMessage(playerid,AAD_COLOR_GREY," *** Вы не можете банить себя и не существующих игроков.");
return 1;
}

урок от BJIADOKC


тут больше не сижу... открыл свой проект
Demetrius Сообщение # 2  | 22:05:40
VIP-пользователи
Сообщений: 1192
Репутация: 158
абалдеть...

Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
BJIADOKC Сообщение # 3  | 22:07:03
Скриптеры
Сообщений: 601
Репутация: 161
))

тут больше не сижу... открыл свой проект
  • Страница 1 из 1
  • 1
Поиск: