Old
Новичок
В Enum pInfo.
PHP:
pHelper
В public OnPlayerConnect
PHP:
PlayerInfo[playerid][pHelper] = 0;
В public OnPlayerRegister
PHP:
format(var, 32, "HelperLevel=%d\n",PlayerInfo[playerid][pHelper]);fwrite(hFile, var);
В public OnPlayerUpdate
PHP:
format(var, 32, "HelperLevel=%d\n",PlayerInfo[playerid][pHelper]);fwrite(hFile, var);
В public OnPlayerLogin(playerid,password[])
PHP:
if( strcmp( key , "HelperLevel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pHelper] = strval( val ); }
К Командам. (Задать вопрос)
PHP:
if(strcmp(cmd, "/n", true) == 0 || strcmp(cmd, "/support", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pHelper] < 0) return SendClientMessage(playerid, COLOR_WHITE, "Ты не хелпер!");
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_WHITE, "Использование: /n [текст]");
return 1;
}
format(string, sizeof(string), "** Вопрос от %s[%d]: %s **", sendername, playerid, (result));
SendHelperMessage(COLOR_YELLOW, string);
SendHelperMessage(COLOR_YELLOW,"Используйте /otv - для ответа на вопрос!");
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Вы задали вопрос хелперам в онлайне. Ждите ответа...");
}
return 1;
}
Ответить на вопрос.
PHP:
iif(strcmp(cmd, "/ans", true) == 0 || strcmp(cmd, "/otv", true) == 0)
{
if(!IsPlayerConnected(playerid)) return 1;
if(PlayerInfo[playerid][pHelper] < 1) return 1;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Использование: /otv [ид игрока] [текст]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "Игрока нет в игре!");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_WHITE,"Игрока нет в игре!");
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)) return SendClientMessage(playerid, COLOR_YELLOW2, "Использование: /otv [ид игрока] [текст]");
format(string, sizeof(string), "Хелпер: %s ответил %s: [%s]", sendername, giveplayer, (result));
SendHelperMessage(COLOR_YELLOW2, string);
format(string, sizeof(string), "Вы ответили %s[%d]: %s", giveplayer, giveplayerid, (result));
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "Хелпер %s ответил(а): %s", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
return 1;
}
Чат хелперов.
PHP:
if(strcmp(cmd, "/helper", true) == 0 || strcmp(cmd, "/h", true) == 0)
{
if(!IsPlayerConnected(playerid)) return 1;
new hrank[64];
switch(PlayerInfo[playerid][pHelper])
{
case 3: hrank = "Гл. Хелпер";
case 1..2: hrank = "Хелпер";
}
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)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте: (/h)elper [хелперский чат]");
format(string, sizeof(string), "** %s %s[%d] %s. **", hrank, sendername, playerid, result);
SendHelperMessage(COLOR_YELLOW2, string);
printf("%s %s: %s", hrank, sendername, result);
return 1;
}
Назначить хелпера. (/makehelper)
PHP:
if(strcmp(cmd, "/makehelper", true) == 0)
{
if(!IsPlayerConnected(playerid)) return 1;
if(PlayerInfo[playerid][pAdmin] >= 5 || PlayerInfo[playerid][pHelper] == 3 || IsPlayerAdmin(playerid))
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "/makehelper [playerid/PartOfName] [level(1-3)]");
new para1,level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(level > 3 || level < 0) return SendClientMessage(playerid, COLOR_GRAD2, "менее 1, или более 3!");
if(!IsPlayerConnected(para1)) return SendClientMessage(playerid, COLOR_WHITE, "Игрока нет в игре!");
if(para1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_WHITE,"Игрока нет в игре!");
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pHelper] = level;
format(string, sizeof(string), "Ты был добавлен в команду хелпером на %d уровень. (Добавил: %s)", level, sendername);
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "Ты назначил(а) %s хелпером %d уровня.", giveplayer,level);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
return 1;
}
Хелперы онлайн.
PHP:
if(strcmp(cmd, "/helpers", true) == 0)
{
string[0] = 0;
for(new i=0;i<MAX_PLAYERS;i++)
{
new htext[64];
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
switch(PlayerInfo[playerid][pHelper])
{
case 3: htext = "Гл. Хелпер";
case 1..2: htext = "Хелпер";
}
GetPlayerName(i, sendername, sizeof(sendername));
format(string,sizeof(string),"%s %s: %s [ID: %d]\n",string,htext,sendername,i);
}
ShowPlayerDialog(playerid,13, DIALOG_STYLE_MSGBOX, "Хелперы онлайн", string, "OK", "Назад");
return 1;
}
В конец мода.
PHP:
stock SendHelperMessage(color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(PlayerInfo[i][pHelper] >= 1)
{
SendClientMessage(i, color, string);
}
}
}
Автор: Old. [/COLOR])
За оптимизацию спасибо - sk.tm_radik.
Последнее редактирование:
