LivingThings
Умник
Hello all.
В pInfo:
Далее в stock LoadAccount ищем примерно такую строку:
sscanf(query,
и добавляем в конец одну ''i''.
Чуть ниже ищем примерно такое:
Добавляем pHelper:
В stock LoadAccount:
В stock SaveAccount:
В любое место:
в stock ResetNow:
CMD:
В OnDialogResponse:
Автор мануала/кода - я!
Скриншоты:
В pInfo:
PHP:
pHelper
sscanf(query,
PHP:
"p<|>is[32]s[32]s[16]is[32]s[64]iiiis[16]iiiiiiis[16]s[40]s[160]s[40]iiiis[16]s[20]iiiis[32]s[32]fiiiiis[32]s[32]iiiiiiiiis[32]iiiiiii",
Чуть ниже ищем примерно такое:
PHP:
PlayerInfo[playerid][pMarried],
PlayerInfo[playerid][pWhoMarried],
PlayerInfo[playerid][pReferal]);
PHP:
PlayerInfo[playerid][pMarried],
PlayerInfo[playerid][pWhoMarried],
PlayerInfo[playerid][pReferal],
PlayerInfo[playerid][pHelper]);
PHP:
if(PlayerInfo[playerid][pHelper] > 0) SendMes(playerid, COLOR_BLUE, "Возможности хелпера 1 уровня - активированы!");
PHP:
format(src, sizeof(src), "helper='%i',", PlayerInfo[playerid][pHelper]);
strcat(query, src, sizeof(query));
PHP:
stock SendHelperMessage(color, str[])
{
foreach(Player, i)
{
if(!IsPlayerConnected(i)) continue;
if(PlayerInfo[i][pHelper] > 0) SendClientMessage(i, color, str);
}
return 1;
}
PHP:
PlayerInfo[playerid][pHelper] = false
PHP:
CMD:makehelper(playerid, params[])
{
if(PlayerLogged[playerid] == 0) return 1;
if(PlayerInfo[playerid][pAdmin] < 1337 || AdminLogged[playerid] == false) return 1;
if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_LIGHTRED, "Использование: /makehelper [ ид игрока ]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, PlayerIsNotOnline);
if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, -1, PlayerIsNotLogged);
if(PlayerInfo[params[0]][pLeader] != 0) return SendClientMessage(playerid, -1, "{FF0000}[ОШИБКА]{FFFFFF} Указанный игрок является лидером фракции.");
if(PlayerInfo[params[0]][pHelper] != 0) return SendClientMessage(playerid, -1, "{FF0000}[ОШИБКА]{FFFFFF} Указанный игрок уже является хелпером.");
SendMes(playerid, COLOR_BLUE, "Вы назначили игрока %s хелпером.", sendername(params[0]));
SendMes(params[0], COLOR_BLUE, "Вы были назначены хелпером Гл.Администратором %s.", sendername(playerid));
PlayerInfo[params[0]][pHelper] = 1;
format(string, 110, "[A] Администратор %s, назначил(а) игрока %s хелпером.", sendername(playerid), sendername(params[0])), SendAdminMessage(COLOR_BLUE, string);
return 1;
}
CMD:hhelp(playerid, params[])
{
if(PlayerLogged[playerid] == 0) return 1;
if(PlayerInfo[playerid][pHelper] < 1) return 1;
ShowPlayerDialog(playerid, D_NULL, DIALOG_STYLE_MSGBOX, " ", "1. [ /ans ] - ответить на заданный вопрос.\n2. [ /hc ] - чат между хелперами.", "Отмена", "");
return 1;
}
CMD:ans(playerid, params[])
{
if(PlayerLogged[playerid] == 0) return 1;
if(PlayerInfo[playerid][pHelper] < 1) return 1;
if(sscanf(params, "us", params[0], params[1])) return SendClientMessage(playerid, COLOR_LIGHTRED, "Использование: /ans [ ид игрока ] [ ответ ]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, PlayerIsNotOnline);
if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, -1, PlayerIsNotLogged);
format(string, 200, "[H] Хелпер %s, ответил(а) на вопрос игроку %s: %s", sendername(playerid), sendername(params[0]), params[1]), SendHelperMessage(COLOR_TOMATO, string);
SendMes(params[0], COLOR_ALLDEPT, "Ответ от хелпера %s: {33AA33}%s", sendername(playerid), params[1]);
return 1;
}
CMD:hc(playerid, params[])
{
if(PlayerLogged[playerid] == 0) return 1;
if(PlayerInfo[playerid][pHelper] < 1) return 1;
if(sscanf(params, "s", params[0])) return SendClientMessage(playerid, COLOR_LIGHTRED, "Использование: /hc [ сообщение ]");
format(string, 200, "[H] Хелпер %s: %s", sendername(playerid), params[0]), SendHelperMessage(COLOR_YELLOW2, string);
return 1;
}
CMD:unmakehelper(playerid, params[])
{
if(PlayerLogged[playerid] == 0) return 1;
if(PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false) return 1;
if(sscanf(params, "us[70]", params[0], params[1])) return SendClientMessage(playerid, COLOR_LIGHTRED, "Использование: /unmakehelper [ ид игрока ] [ причина ]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, PlayerIsNotOnline);
if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, -1, PlayerIsNotLogged);
if(PlayerInfo[params[0]][pHelper] < 1) return SendClientMessage(playerid, -1, "{FF0000}[ОШИБКА]{FFFFFF} Указанный игрок не является хелпером.");
SendMes(playerid, COLOR_BLUE, "Вы сняли игрока %s с поста хелпера. Причина: %s", sendername(params[0]), params[1]);
SendMes(params[0], COLOR_BLUE, "Вы были сняты с поста хелпера Гл.Администратором %s. Причина: %s", sendername(playerid), params[1]);
PlayerInfo[params[0]][pHelper] = 0;
return 1;
}
CMD:vopros(playerid)
{
new helpers = 0;
foreach(Player, i)
{
if(!IsPlayerConnected(i) || PlayerLogged[i]) continue;
if(PlayerInfo[i][pHelper] < 1) continue;
helpers++;
}
if(helpers == 0) return SendClientMessage(playerid, -1, "{FF0000}[ОШИБКА]{FFFFFF} Невозможно задать вопрос, т.к нет хелперов в онлайне.");
ShowPlayerDialog(playerid, D_MAIN+10, DIALOG_STYLE_INPUT, " ", "Введите вопрос, который хотите задать хелперам сервера.", "Далее", "Отмена");
return 1;
}
PHP:
case D_MAIN+10:
{
if(!response) return 1;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, D_MAIN+10, DIALOG_STYLE_INPUT, " ", "Введите вопрос, который хотите задать хелперам сервера.", "Далее", "Отмена");
if(GetPVarInt(playerid,"AntiFloodAsk") > gettime()) return SendClientMessage(playerid, -1, "{FF0000}[ОШИБКА]{FFFFFF} Посылать вопрос(ы) хелперам, можно раз в 30 секунд.");
SetPVarInt(playerid,"AntiFloodAsk",gettime() + 30);
format(string, 128, "[H] Вопрос от игрока %s[%i]: %s", sendername(playerid), playerid, inputtext), SendHelperMessage(COLOR_LIGHTGREEN, string);
}
Скриншоты:
