PDA

Просмотр полной версии : [FS] helpers



maksim04ka1
17.03.2014, 00:47
Доброго времени суток, Уважаемые Форумчани Pro-Pawn.rp ;3
Сейчас я вам расскажу, как добавить на ваш сервер, систему хелперов.
Автор: Не знаю, я только чу-чуть изменил.
Всего 3 уровня хелперов, с 3-го уровня можно назначать игрока Хелпером.
Небольшое FAQ для чего, нужны хелперы.
Хелперы - это помощники сервера, они должны отвечать на все вопросы от игроков, данные люди ответственные за игроками, которые не знают какой либо команды и т.д
Команды которые есть :D
/he - писать в общий чат хелперов (Видно только хелперам)
/makehelpers - дать хелперку (Доступно только 3-му уровню)
/hduty - Выйти на дежурство.
/answer - ответить на вопрос.
/vopros - задать вопрос.
/helpers - глянуть кто из хелперов в сети. (Доступно всем.)
В pInfo вставляем

pHelper,
Ко всем NEW вставляем

new HelperDuty[MAX_PLAYERS];
В 'public OnPlayerConnect(playerid) вставляем

PlayerInfo[playerid][pHelper] = 0;
Туда-же

HelperDuty[playerid] = 0;
В public OnPlayerRegister(playerid, password[]) и public OnPlayerUpdate_GF(playerid) вставляем

iniSetInt(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
В public OnPlayerLogin(playerid,password[] вставляем

iniGetInt(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
Опять ищем public OnPlayerLogin(playerid,password[]) и вставляем

if (PlayerInfo[playerid][pHelper] >= 1)
{
format(string2, sizeof(string2), "Вы вошли хелпером, %d уровня.",PlayerInfo[playerid][pHelper]);
SendClientMessage(playerid, COLOR_WHITE,string2);
}
Ко всем forward добавляем

forward SendHelperMessage(color, string[]);
В конец мода вставляем

public SendHelperMessage(color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pHelper] >= 1)
{
SendClientMessage(i, color, string);
}
}
}
}
Данная команда нужна для просмотра помощников онлайн

if (strcmp(cmd, "/helpers", true) == 0)
{
if(IsPlayerConnected(playerid))
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pHelper] >= 1)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 256, "* Помощники онлайн:");
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, 256, "* %s[id: %d]. Hlvl: %d",sendername, i, PlayerInfo[i][pHelper]);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
if(PlayerInfo[i][pHelper] >= 1 && HelperDuty[playerid] == 1)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 256, "* Помощники онлайн на дежурстве:");
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, 256, "* %s[id: %d]. Hlvl: %d",sendername, i, PlayerInfo[i][pHelper]);
SendClientMessage(playerid, COLOR_YELLOW, string);
}

}
}
}
return 1;
}
Данная команда нужна, для Дежурства Хелперов. Вставляем в public OnPlayerCommandText(playerid, cmdtext[])

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), "(( Хелпер %s ждет ваши вопросы! (/vopros) ))", sendername);
BroadCast(COLOR_OOC,string);
return 1;
}
else if(HelperDuty[playerid] == 1)
{
HelperDuty[playerid] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "(( Хелпер %s не активен. ))", sendername);
BroadCast(COLOR_OOC,string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "У вас нет прав на использование данной команды.");
return 1;
}
}
return 1;
}
Вставляем ко всем public OnPlayerCommandText(playerid, cmdtext[]), для того чтобы задать вопрос

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(0x10F441AA, string);
}
SendClientMessage(playerid, COLOR_YELLOW, "Ваш вопрос отправлен хелперам!");
format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
SendClientMessage(playerid, COLOR_LIGHTRED, string);
}
return 1;
}
Чтобы ответить на вопос, вставляем в public OnPlayerCommandText(playerid, cmdtext[])

if(strcmp(cmd, "/answer", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pHelper] >= 1)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /answer[PlayerID] [text]");
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}Введите: /answer [PlayerID] [text]");
return 1;
}
format(string, sizeof(string), "[HELPER] %s: %s", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "*[H] %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;
}
Чтобы написать в общий чат для хелперов, вставляем в public OnPlayerCommandText(playerid, cmdtext[])

if(strcmp(cmd, "/he", 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_GRAD2, "{ffffff}Введите: (/he) [helpers chat]");
return 1;
}
format(string, sizeof(string), "* %d Хелпер %s: %s", PlayerInfo[playerid][pHelper], sendername, result);
SendHelperMessage(COLOR_GREEN, string);
printf("Helper %s: %s", sendername, result);
}
}
return 1;
}
Чтобы назначить/снять/повысить игрока на уровень хелпера. Вставляем в паблик public OnPlayerCommandText(playerid, cmdtext[])

if(strcmp(cmd, "/makehelper", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /makehelper [playerid] [level(1-3, 0-убрать хеллперку]");
return 1;
}
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(PlayerInfo[playerid][pHelper] == 3 || PlayerInfo[playerid][pAdmin] >= 1338)
{
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pHelper] = level;
if(level < 0 || level > 3) return SendClientMessage(playerid, COLOR_GREY, "Не меньше '0' и не больше '3'.");
format(string, sizeof(string), "You have been promoted to a level %d helper by %s.", level, sendername);
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "You are promoted %s to helper level %d.", giveplayer,level);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "{ffffff}Вам не доступна эта функция");
}
}
return 1;
}