Кому нибудь наверно пригодиться эта система.
И так начнем:
К enum pInfo добавляем
к public OnPlayerRename(name[],string[],playerid) (у меня в моде вот так(у других по другоме наверное))
к public OnPlayerRegister(playerid, password[])
public OnPlayerUpdate(playerid)
к public OnPlayerLogin(playerid,password[])
и также добавляем к OnPlayerLogin(playerid,password[])
и опять туда же к public OnPlayerLogin(playerid,password[])
-----------------------------------------------------------Команды-------------------------------------------------------------
и ко всем командам добавляем
и команда чтобы активировать аккаунт
команда чтобы выдать деактивацию в онлайне.
Автор: я (1Agent1)
/deactivateonline заменить на этот код или будут ерроры
И так начнем:
К enum pInfo добавляем
Код:
pDeactivated,
Код:
format(var, 32, "Deactivated=%d\n",PlayerInfo[playerid][pDeactivated]);fwrite(hFile, var);
Код:
format(var, 32, "Deactivated=%d\n",PlayerInfo[playerid][pDeactivated]);fwrite(hFile, var);
Код:
format(var, 32, "Deactivated=%d\n",PlayerInfo[playerid][pDeactivated]);fwrite(hFile, var);
Код:
if( strcmp( key , "Deactivated" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeactivated] = strval( val ); }
Код:
PlayerInfo[playerid][pDeactivated] = 0;
Код:
if(PlayerInfo[playerid][pDeactivated] == 1) { SendClientMessage(playerid,COLOR_ORANGE,"Ваш аккаунт деактивирован!"); // отправим текст SendClientMessage(playerid,COLOR_ORANGE,"свой текст"); SendClientMessage(playerid,COLOR_ORANGE,"свой текст"); Kick(playerid); // кикнем }
и ко всем командам добавляем
Код:
//______________________________________________________________________________ if(strcmp(cmd, "/deactivate", true) == 0) { if(gPlayerLogged[playerid] == 0) return SCM(playerid, COLOR_GREY, "Авторизуйтесь для использовании команды");//заменить на свой или можете убрать! if(PlayerInfo[playerid][pAdmin] < 10) return SCM(playerid, COLOR_GRAD1, "Недостаточно Прав Для Использования Команды."); tmp = strtok(cmdtext, idx); new szName[32]; GetPlayerName(playerid,szName,32); if(!strcmp(szName,"Свой ник",true)||!strcmp(szName,"Ник другого",true)) if(!strlen(tmp)) return SCM(playerid, COLOR_GRAD1, "::: Введите: /deactivate [Ник] [Причина]"); format(string, sizeof(string), "accounts/%s.ini", tmp); if(fexist(string)) { format(string, sizeof(string), "accounts/%s.ini", tmp);// файл accounts заменить на свой! new File = ini_openFile(string); ini_setInteger(File,"Deactivated",1); ini_setInteger(File,"AdminLevel",0);// можете убрать ini_setInteger(File,"Leader",0);//можете убрать ini_setInteger(File,"Member",0);//можете убрать ini_setInteger(File,"Rank",0);//можете убрать ini_closeFile(File); 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)) { SendClientMessage(playerid, COLOR_GRAD1, "::: Введите: /deactivate [Ник] [Причина]"); return 1; } GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "Администратор: %s деактивировал аккаунт в offline игроку: %s. Причина:%s",sendername,tmp,(result)); ABroadCast(COLOR_LIGHTRED,string,1); } else { format(string, sizeof(string), "Файл - аккаунт не найден"); SCM(playerid, COLOR_GRAD1, string); } return 1; }
Код:
if(strcmp(cmd, "/activate", true) == 0) { if(gPlayerLogged[playerid] == 0) return SCM(playerid, COLOR_GREY, "Авторизуйтесь для использовании команды"); if(PlayerInfo[playerid][pAdmin] < 10) return SCM(playerid, COLOR_GRAD1, "Недостаточно Прав Для Использования Команды."); tmp = strtok(cmdtext, idx); new szName[32]; GetPlayerName(playerid,szName,32); if(!strcmp(szName,"Свой ник",true)||!strcmp(szName,"Свой ник",true)) if(!strlen(tmp)) return SCM(playerid, COLOR_GRAD1, "::: Введите: /activate [Ник] [Причина]"); format(string, sizeof(string), "accounts/%s.ini", tmp); if(fexist(string)) { format(string, sizeof(string), "accounts/%s.ini", tmp);// accounts заменить на свой! new File = ini_openFile(string); ini_setInteger(File,"Deactivated",0); ini_closeFile(File); 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)) { SendClientMessage(playerid, COLOR_GRAD1, "::: Введите: /activate [Ник] [Причина]"); return 1; } GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "Администратор: %s активировал аккаунт игроку: %s. Причина:%s",sendername,tmp,(result)); ABroadCast(COLOR_LIGHTRED,string,1); } else { format(string, sizeof(string), "Файл - аккаунт не найден"); SCM(playerid, COLOR_GRAD1, string); } return 1; }
Код:
if(strcmp(cmd, "/deactivateonline", true) == 0) { if(IsPlayerConnected(playerid)) { if(gPlayerLogged[playerid] == 0) return SCM(playerid, COLOR_GREY, "Авторизуйтесь для использовании команды");// можете убрать tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /deactivateonline [ид игрока] [причина]"); return 1; } giveplayerid = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] => 10)// заменить на свой { 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)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /deactivate [ид игрока] [причина]"); return 1; } PlayerInfo[giveplayerid][pDeactivated] = 1; if(PlayerInfo[giveplayerid][pDeactivated] => 1) { format(string, sizeof(string),"У игрока%s был деактивирован аккаунт администратором %s, Причина:%s.", giveplayer, sendername, (result)); SendClientMessageToAll(COLOR_LIGHTRED,string,1); PlayerInfo[giveplayerid][pDeactivated] = 1; Kick(giveplayerid); return 1; } format(string, sizeof(string), "Вы получили деактивацию аккаунта от %s. Причина: %s", sendername, (result)); SendClientMessage(giveplayerid, COLOR_LIGHTRED, string); format(string, sizeof(string), "Администратор %s деактивировал аккаунт %s. Причина: %s", sendername, giveplayer, (result)); SendClientMessageToAll(COLOR_LIGHTRED,string,1); printf("[warn] %s получил деактивацию аккаунта от %s", giveplayer,sendername); return 1; } } } else { format(string, sizeof(string), " %d не активный игрок.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } return 1; }
/deactivateonline заменить на этот код или будут ерроры
Код:
if(strcmp(cmd, "/deactivateonline", true) == 0) { if(IsPlayerConnected(playerid)) { if(gPlayerLogged[playerid] == 0) return SCM(playerid, COLOR_GREY, "Авторизуйтесь для использовании команды");// можете убрать tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /deactivateonline [ид игрока] [причина]"); return 1; } giveplayerid = ReturnUser(tmp); if(PlayerInfo[playerid][pAdmin] == 10)// заменить на свой { 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)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /deactivate [ид игрока] [причина]"); return 1; } PlayerInfo[giveplayerid][pDeactivated] = 1; //if(PlayerInfo[giveplayerid][pDeactivated] => 1) format(string, sizeof(string), "Вы получили деактивацию аккаунта от %s. Причина: %s", sendername, (result)); SendClientMessage(giveplayerid, COLOR_LIGHTRED, string); format(string, sizeof(string), "Администратор %s деактивировал аккаунт %s. Причина: %s", sendername, giveplayer, (result)); SendClientMessageToAll(COLOR_LIGHTRED,string,1); Kick(giveplayerid); printf("[warn] %s получил деактивацию аккаунта от %s", giveplayer,sendername); return 1; } } } else { format(string, sizeof(string), " %d не активный игрок.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } return 1;}
Последнее редактирование модератором: