BeceJIblu*
Ученик
Приветствую всех. В этом мануале мы с вами рассмотрем динамическую систему рангов. Ну что, начнём!
В начало мода:
В public OnPlayerConnect(playerid):
В public OnPlayerDisconnect(playerid, reason):
В public OnPlayerSpawn(playerid):
В public OnGameModeInit():
В конец мода:
Теперь сами команды:
В начало мода:
PHP:
#include <mxINI>
#include <zcmd>
#include <sscanf>
forward LoadRangs();
#define netyranga "Без ранга"
new logged[MAX_PLAYERS];
В public OnPlayerConnect(playerid):
PHP:
logged[playerid] = 0;
PHP:
logged[playerid] = 0;
PHP:
logged[playerid] = 1;
PHP:
LoadRangs();
PHP:
public LoadRangs()
{
for(new fr = 1; fr < 11; fr++)
{
new rangs[19];
format(rangs, sizeof(rangs), "rangs/%d.ini", fr);
new iniFile = ini_createFile(rangs);
{
ini_setString(iniFile, "1", netyranga);
ini_setString(iniFile, "2", netyranga);
ini_setString(iniFile, "3", netyranga);
ini_setString(iniFile, "4", netyranga);
ini_setString(iniFile, "5", netyranga);
ini_setString(iniFile, "6", netyranga);
ini_setString(iniFile, "7", netyranga);
ini_setString(iniFile, "8", netyranga);
ini_setString(iniFile, "9", netyranga);
ini_setString(iniFile, "10", netyranga);
ini_closeFile(iniFile);
printf("Динамические ранги загружены");
}
}
return 1;
}
PHP:
CMD:editrank(playerid, params[])
{
new string[125], namerank[50], file[50];
if(logged[playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFAA, "Зайдите на сервер!");
if(PlayerInfo[playerid][pLeader] < 1) return SendClientMessage(playerid, COLOR_GREY, "Вы не лидер!");
if(sscanf(params, "ds", params[0], namerank)) return SendClientMessage(playerid, COLOR_GREY, "Используйте: /editrank [Ранг] [Название ранга]");
if(params[0] < 1 || params[0] > 10) return SendClientMessage(playerid, COLOR_GREY, "Неверное значение. Количество рангов от 1 до 10");
format(file, sizeof(file), "rangs/%d.ini", PlayerInfo[playerid][pLeader]);
new iniFile = ini_openFile(file);
{
switch(params[0])
{
case 1: ini_setString(iniFile, "1", namerank);
case 2: ini_setString(iniFile, "2", namerank);
case 3: ini_setString(iniFile, "3", namerank);
case 4: ini_setString(iniFile, "4", namerank);
case 5: ini_setString(iniFile, "5", namerank);
case 6: ini_setString(iniFile, "6", namerank);
case 7: ini_setString(iniFile, "7", namerank);
case 8: ini_setString(iniFile, "8", namerank);
case 9: ini_setString(iniFile, "9", namerank);
case 10: ini_setString(iniFile, "10", namerank);
}
ini_closeFile(iniFile);
}
format(string, sizeof(string), "Название %d ранга было изменено на %s", params[0], namerank);
SendClientMessage(playerid, 0xFFFFFFAA, string);
return 1;
}
PHP:
CMD:f(playerid, params[])
{
new string[200], rrank[4], file[50], returnString[50];
if(sscanf(params, "s", params[0])) SendClientMessage(playerid, 0xFFFFFFAA, "Используйте: /f [Текст]");
if(PlayerInfo[playerid][pMember] == 0 || PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid, COLOR_GRAD2, "Вы нигде не состоите!");
if(PlayerInfo[playerid][pLeader] > 1 || PlayerInfo[playerid][pMember] > 1 && PlayerInfo[playerid][pLeader] < 19 || PlayerInfo[playerid][pMember] < 19 && PlayerInfo[playerid][pRank] > 0)
{
new leader = PlayerInfo[playerid][pLeader];
new member = PlayerInfo[playerid][pMember];
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
if(PlayerInfo[playerid][pRank] >= 1)
{
if(leader) format(file, sizeof(file), "rangs/%d.ini", leader);
else if(member) format(file, sizeof(file), "rangs/%d.ini", member);
format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]);
new iniFile = ini_openFile(file);
ini_getString(iniFile, rrank, returnString);
ini_closeFile(iniFile);
}
if(PlayerInfo[playerid][pRank] < 1) { format(string, sizeof(string), "[F] Новичек %s: %s", PlayerName, params[0]); }
else { format(string, sizeof(string), "[F] %s %s: %s", returnString, PlayerName, params[0]); }
if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); }
else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); }
}
return 1;
}
Ну вот и всё. Плюс системы заключается в том, что лидеры могут изменять название рангов прямо из игры. Удобно и быстро.
Всем спасибо, с вами был BeceJIblu*.
Автор: BeceJIblu*
Всем спасибо, с вами был BeceJIblu*.
Автор: BeceJIblu*
Последнее редактирование:
