GoodRedCat
Умник
Добрый день, дорогие друзья. :bt:
Сегодня я бы хотел представить 4-ёх уровневую систему хелперов. Постарался сделать её удобной и красивой.
Приступим:
Ко всем new:
В enum pInfo:
Ко всем forward'ам:
В public OnPlayerConnect:
И
В public OnPlayerRegister:
В public OnPlayerUpdateRL:
В public OnPlayerLogin:
И
В конце мода создаём public SendHelperMessage:
В public OnPlayerCommandText:
Начало дежурства хелпера:
Вопрос/ответ:
Хелпер-чат:
Список хелперов онлайн:
Большое спасибо за внимание! :dh:
Моя первая тема, постарался всё объяснить и красиво оформить.
Если возникнут вопросы, пишите в комментариях, постараюсь всем ответить.
Сегодня я бы хотел представить 4-ёх уровневую систему хелперов. Постарался сделать её удобной и красивой.
Приступим:
Ко всем new:
PHP:
new HelperDuty[MAX_PLAYERS];
PHP:
pHelper
PHP:
forward SendHelperMessage(color, string[]);
PHP:
HelperDuty[playerid] = 0;
PHP:
PlayerInfo[playerid][pHelper] = 0;
PHP:
ini_setInteger(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
PHP:
ini_setInteger(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
PHP:
ini_getInteger(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
PHP:
if (PlayerInfo[playerid][pHelper] >= 1)
{
format(string2, sizeof(string2), "Вы вошли хелпером, %d уровня.",PlayerInfo[playerid][pHelper]);
SendClientMessage(playerid, COLOR_WHITE,string2);
}
PHP:
public SendHelperMessage(color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pHelper] >= 1)
{
SendClientMessage(i, color, string);
}
}
}
}
Начало дежурства хелпера:
PHP:
if(strcmp(cmdtext, "/hduty", true) == 0 || strcmp(cmdtext, "/helperduty", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, "Вы не авторизированы!");
return 1;
}
if(PlayerInfo[playerid][pHelper] >= 1)
{
if(HelperDuty[playerid] == 0)
{
HelperDuty[playerid] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "{FFFFFF}Вы заступили на дежурство [Уровень: {00b8ff}%d{FFFFFF}]", PlayerInfo[playerid][pHelper]);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}
else if(HelperDuty[playerid] == 1)
{
HelperDuty[playerid] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "{FFFFFF}Вы ушли с дежурства [Уровень: {00b8ff}%d{FFFFFF}]", PlayerInfo[playerid][pHelper]);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "У вас нет прав на использование данной команды.");
return 1;
}
}
return 1;
}
PHP:
if(strcmp(cmd, "/vopros", true) == 0 || strcmp(cmd, "/вопрос", true) == 0)
{
if(IsPlayerConnected(playerid))
{
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, "{ffffff}Введите: /vopros [text]");
return 1;
}
if(HelperDuty[playerid] == 1)
{
format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
SendHelperMessage(COLOR_YELLOW, string);
}
format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
SendClientMessage(playerid, COLOR_YELLOW, string);
SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш вопрос отправлен хелперам!");
}
return 1;
}
if(strcmp(cmd, "/otvet", true) == 0 || strcmp(cmd, "/ответ", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pHelper] >= 1)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /otvet [id] [текст]");
return 1;
}
if(HelperDuty[playerid] == 1)
{
giveplayerid = ReturnUser(tmp);
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
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, "{ffffff}Введите: /otvet [id] [текст]");
return 1;
}
format(string, sizeof(string), "Ответ от %s: %s", sendername, (result));
SendClientMessage(giveplayerid, COLOR_YELLOW, string);
format(string, sizeof(string), "Хелпер %s ответил %s[%d]: %s", sendername, giveplayer, giveplayerid,(result));
SendHelperMessage(COLOR_LIGHTRED, string);
return 1;
}
}
else
{
format(string, sizeof(string), "%d не в сети", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Вы не на дежурстве.");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Нет прав на использование данной команды.");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Вы не авторизированы.");
}
return 1;
}
PHP:
if(strcmp(cmd, "/helper", true) == 0 || strcmp(cmd, "/hc", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if (PlayerInfo[playerid][pHelper] >= 1)
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_GREEN, "Вводите: /hc [чат]");
return 1;
}
new hrank[32];
for(new i = 0; i < MAX_PLAYERS; i++)
if(PlayerInfo[i][pHelper] == 1) { hrank = "{1e90ff}Хелпер новичек{E0FFFF}"; }
else if(PlayerInfo[i][pHelper] == 2) { hrank = "{1e90ff}Хелпер{E0FFFF}"; }
else if(PlayerInfo[i][pHelper] == 3) { hrank = "{1e90ff}Старший хелпер{E0FFFF}"; }
else if(PlayerInfo[i][pHelper] == 4) { hrank = "{1e90ff}Наставник{E0FFFF}"; }
format(string, sizeof(string), "%s %s: %s", hrank, sendername, result);
SendHelperMessage(COLOR_WHITE, string);
}
return 1;
}
PHP:
else if (strcmp(cmd, "/helpers", true) == 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "Хелперы Online:");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pHelper] >= 1)
{
new drank[32];
if(PlayerInfo[i][pHelper] == 1) { drank = "lvl 1"; }
else if(PlayerInfo[i][pHelper] == 2) { drank = "lvl 2"; }
else if(PlayerInfo[i][pHelper] == 3) { drank = "lvl 3"; }
else if(PlayerInfo[i][pHelper] == 4) { drank = "lvl 4"; }
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 256, "%s | ID:%d | %s",sendername,i,drank);
SendClientMessage(playerid, COLOR_WHITE, string);
}
}
}
return 1;
}
Моя первая тема, постарался всё объяснить и красиво оформить.
Если возникнут вопросы, пишите в комментариях, постараюсь всем ответить.
