Просмотр полной версии : [Вопрос] Команда /ban
При логине сервер проверяет переменную игрока pInfo[pBan]. Если она ровняется 1, то его кикает.
if (pInfo[playerid][pBan] == 1)
{
SendClientMessage(playerid,0xAA3333AA, "Âû çàáàíåíû íà ñåðâåðå");
Kick(playerid);
}
Подскажите как мне сделать команду /ban? Я пытаюсь сделать так:
if (strcmp("/ban", cmdtext, true, 10) == 0)
{
if(pInfo[playerid][pAdm] != 0)
{
// что сюда написать чтобы указанному игроку изменяло его переменную pInfo [pBan] на 1?
}
return 1;
}
BaBuIIIkaDrifteR
05.01.2015, 00:39
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
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 SCM(playerid, COLOR_RED, "{00FF66}Energy Drift™: {ffffff}/ban [id/Playerid] [Причина]");
new baniso[526];
new year, month,day;
getdate(year, month, day);
format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
if(Player[giveplayerid][Bann] == 1) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
else if(Player[giveplayerid][Bann] == 2) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
- - - Добавлено - - -
Свои переменные только подставь
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
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 SCM(playerid, COLOR_RED, "{00FF66}Energy Drift™: {ffffff}/ban [id/Playerid] [Причина]");
new baniso[526];
new year, month,day;
getdate(year, month, day);
format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
if(Player[giveplayerid][Bann] == 1) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
else if(Player[giveplayerid][Bann] == 2) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
- - - Добавлено - - -
Свои переменные только подставь
Вы меня простите. Но я не нашёл где тут изменяет значение переменной игрока pBan на 1. Я такой большой и сложный код боюсь копировать. Мне не нужно лишнего. Покажите пожалуйста что нужно скопировать чтобы просто присвоилось значение этой переменной указанному игроку если уровень pAdm не равен нулю. Мне даже не нужно чтобы в чат что-то писало. Максимально просто пожалуйста опишите. Чтобы я разобрался и сам научился делать команды подобные и усложнять их. Темболее у меня система проверки игрока на бан без првоерки на то на какое время он забанен. Просто забанен или нет.
И что вы ему скинули? Ошибок куча будет даже из-за неизвестных переменных.
Albert, вот здесь (http://pro-pawn.ru/showthread.php?5527) можно посмотреть как верно сделана команда. Если конечно вы используете плагин sscanf.
Если не используете, вот от меня набросок команды небольшой:
if (strcmp(cmdtext, "/ban", true, 4) == 0) {
if (cmdtext[4] == '\0')
return SendClientMessage(playerid, -1, "Используйте: /ban [targetid]");
new
targetid = strval(cmdtext[5]);
if (!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Указанного игрока нет на сервере.");
pInfo[targetid][pBan] = 1; // вот здесь!
return Ban(targetid);
}
$continue$
05.01.2015, 02:09
И что вы ему скинули? Ошибок куча будет даже из-за неизвестных переменных.
Albert, вот здесь (http://pro-pawn.ru/showthread.php?5527) можно посмотреть как верно сделана команда. Если конечно вы используете плагин sscanf.
Если не используете, вот от меня набросок команды небольшой:
if (strcmp(cmdtext, "/ban", true, 4) == 0) {
if (cmdtext[4] == '\0')
return SendClientMessage(playerid, -1, "Используйте: /ban [targetid]");
new
targetid = strval(cmdtext[5]);
if (!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Указанного игрока нет на сервере.");
pInfo[targetid][pBan] = 1; // вот здесь!
return Ban(targetid);
}
И словить не доход msg до игрока :D
Огромное спасибо. Проблема решена. Ваш ник будет в титрах сервера за бескорыстную помощь :bye:
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot