Exactly.Rus
Умник
Привет, сейчас я вам покажу как сделать Систему Администрации.
Начнём
В enum pInfo:
Где регистрация вставляем:
Где логин вставляем:
Для сохранение админики, бана и молчанки вставляем в паблик с сохранением:
В public OnPlayerCommandText:
Затем в этот же паблик:
В этот же паблик:
в этот же паблик:
в этот же паблик
Делаем Админ-Чат. К форвардам:
в public OnPlayerCommandText:
Сделаем паблик Админ-Чата(можно в конец мода!):
На это всё. Всем спасибо , всем пока.
Автор: h4pok
P.S Данной темы на портале обнаружено: НЕ БЫЛО.
Начнём
В enum pInfo:
PHP:
pAdmin,
pBanned,
pMuted,
pMuteTime,
PHP:
ini_setInteger(iniFile, "Admin", 0); //
ini_setInteger(iniFile, "Banned", 0); //
ini_setInteger(iniFile, "Muted", 0); //
ini_setInteger(iniFile, "MuteTime", 0); //
PHP:
ini_getInteger(iniFile, "Admin", PlayerInfo[playerid][pAdmin]); // Запишем
ini_getInteger(iniFile, "Banned", PlayerInfo[playerid][pBanned]); // Запишем
ini_getInteger(iniFile, "Mute", PlayerInfo[playerid][pMuted]);
ini_getInteger(iniFile, "TimeMut", PlayerInfo[playerid][pMuteTime]);
PHP:
ini_setInteger(iniFile, "Admin", PlayerInfo[playerid][pAdmin]);
ini_setInteger(iniFile, "Banned", PlayerInfo[playerid][pBanned]);
ini_getInteger(iniFile, "Mute", PlayerInfo[playerid][pMuted]);
ini_getInteger(iniFile, "TimeMut", PlayerInfo[playerid][pMuteTime]);
PHP:
new string[256];
new giveplayer[MAX_PLAYER_NAME];
new giveplayerid, idx;
new cmd[256], tmp[256];
new sendername[MAX_PLAYER_NAME];
cmd = strtok(cmdtext, idx);
PHP:
if(strcmp(cmd, "/makeadmin", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "(( Использование: /makeadmin [ид игрока] [уровень] ))");
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(PlayerInfo[playerid][pAdmin] == 3)
{
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pAdmin] = level;
format(string, sizeof(string), "(( %s выдал вам должность администратора %d уровня ))",sendername,level);
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "(( Вы назначили %s админом уровня %d ))", giveplayer,level);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
}
}
return 1;
}
PHP:
if(strcmp(cmd, "/banip", true) == 0)
{ //без информирования в чат
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /sban [id игрока/часть никнейма] [причина]");//
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 2)
{
if(IsPlayerConnected(giveplayerid) && !IsPlayerNPC(giveplayerid))
{
format(string, sizeof(string), "AdmCmd: %s был забанен на 3 дня Админом %s's", giveplayerid, sendername);
WriteRusLog("Ban.cfg", string);
new lH, lM, lS; gettime(lH,lM,lS);
format(string, sizeof(string), "[%d:%02d:%02d] %s", lH,lM,lS, string);
SendClientMessageToAll(COLOR_RED, string);
Ban(giveplayerid);
//BanEx(giveplayerid, string);
}//not connected
else
{
format(string, sizeof(string), " %d is not an active player.", giveplayerid);
SendClientMessage(playerid, COLOR_GREY, string);
}
}
else SendClientMessage(playerid, COLOR_GREY, " Вы не уполномочены использовать эту команду !");
}
return 1;
}
PHP:
if(strcmp(cmd, "/mute", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "(( Использование: /mute [ид игрока] [секунды] ))");
new playa,mtime;
playa = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playa][pMuted] == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "(( Использование: /mute [ид игрока] [секунды] ))");
mtime = strval(tmp);
PlayerInfo[playa][pMuted] = 1;
PlayerInfo[playa][pMuteTime] = mtime;
printf("AdmCmd: %s silenced %s",sendername, giveplayer);
format(string, sizeof(string), "(( %s получил бан чата от администратора %s ))",giveplayer,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
}
else
{
PlayerInfo[playa][pMuted] = 0;
PlayerInfo[playa][pMuteTime] = 0;
printf("AdmCmd: %s unsilenced %s",sendername, giveplayer);
format(string, sizeof(string), "(( %s снят бан чата администратором %s ))",giveplayer ,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
}
}
}
}
}
PHP:
if(strcmp(cmd, "/ban", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "(( Введите: /ban [ID] [причина] ))");
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 2)
{
if(PlayerInfo[playerid][pAdmin] < PlayerInfo[giveplayerid][pAdmin]) return SendClientMessage(playerid,COLOR_GREY,"(( Нельзя забанить Администратора, каторый старше вас! ))");
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "(( Используй: /ban [ID] [причина] ))");
new year, month,day;
getdate(year, month, day);
new hour,minuite,second;
gettime(hour, minuite, second);
format(string, sizeof(string), "(( %s забанен администратором %s. Причина: %s (%d:%d:%d %d.%d.%d) ))", giveplayer, sendername, (result),hour,minuite,second,month,day,year);
SendClientMessageToAll(COLOR_LIGHTRED, string);
WriteRusLog("Ban.cfg", string);
PlayerInfo[giveplayerid][pBanned] = 1;
Kick(giveplayerid);
return 1;
}
}//not connected
else
{
format(string, sizeof(string), "(( %d не в сети ))", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
PHP:
forward SendAdminMessage(color, string[]);
PHP:
if(strcmp(cmd, "/admin", true) == 0 || strcmp(cmd, "/a", true) == 0)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "(( Использование: (/a)dmin [сообщение] ))");
format(string, sizeof(string), "(( {ff0000}%d {ffffff}| {33AA33}Администратор %s[ИД:%d]: %s ))",PlayerInfo[playerid][pAdmin],sendername,playerid, result);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
SendAdminMessage(COLOR_WHITE, string);
}
return 1;
}
PHP:
public SendAdminMessage(color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pAdmin] >= 1)
{
SendClientMessage(i, color, string);
}
}
}
}
Автор: h4pok
P.S Данной темы на портале обнаружено: НЕ БЫЛО.
Последнее редактирование модератором:
