-
Команда /makeleader
Подскажите пожалуйста как должна быть написана команда для выдачи лидерки. У меня 4 фракции
Код:
if (strcmp("/makeleader", cmdtext, true, 11) == 0)
{
if (cmdtext[12] == '\0')
return SendClientMessage(playerid, -1, "Используйте: /makeleader [playerid] [Leaderid]]");
if (pInfo[playerid][pAdm]!=0)
{
// что сдесь должно находиться?
}
return 1;
}
-
В таких случаях придётся использовать strtok либо sscanf. Ищите в интернете пример использования и пробуете делать команду.
-
Установил
#include <sscanf>
#include <zcmd>
Мануалов нигде не найти. Везде такие громоздкие команды, что я даже под себя подредактировать не могу
-
Переменную, отвечающую за лидерку у игрока - сюда.
-
Коечто нашёл. Сделал так:
Код:
if (strcmp("/makeleader", cmdtext, true, 10) == 0)
{
new playa;
new member;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
member = strval(tmp);
if (pInfo[playerid][pAdm] >= 5)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
pInfo[playa][pLeader] = member;
format(string,sizeof(string),"(( Вы присвоили ему значение %d ))",member);
SendClientMessage(playerid, 0xAA3333AA, string);
}
}
}
else
{
SendClientMessage(playerid, 0xAA3333AA, "(( Вам не доступна эта функция ))");
}
return 1;
}
Ошибки:
Код:
\S.T.A.L.K.E.R..pwn(396) : error 017: undefined symbol "ReturnUser"
\S.T.A.L.K.E.R..pwn(397) : error 017: undefined symbol "tmp"
\S.T.A.L.K.E.R..pwn(397) : error 017: undefined symbol "strtok"
\S.T.A.L.K.E.R..pwn(398) : error 017: undefined symbol "tmp"
\S.T.A.L.K.E.R..pwn(406) : error 017: undefined symbol "string"
\S.T.A.L.K.E.R..pwn(406) : error 017: undefined symbol "string"
\S.T.A.L.K.E.R..pwn(406) : error 029: invalid expression, assumed zero
\S.T.A.L.K.E.R..pwn(406) : fatal error 107: too many error messages on one line
Переменная за админку pAdm
-
PHP код:
CMD:makeleader(playerid, params[])
{
if(pInfo[playerid][pAdm] < 5)
return 1;
new
targetid,
member;
if(sscanf(params, "ii", targetid, member))
return SendClientMessage(playerid, -1, "Используйте: /makeleader [targetid] [member]");
if(!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Указанного игрока нет на сервере.");
pInfo[targetid][pLeader] = member;
// здесь ваш форматируемый текст!
return 1;
}
Кстати, можете смело переходить с zcmd на dc_cmd, если вы только начинаете разбираться в командных процессорах.
-
Код:
S.T.A.L.K.E.R..pwn(390) : error 029: invalid expression, assumed zero
S.T.A.L.K.E.R..pwn(390) : error 017: undefined symbol "cmd_makeleader"
\S.T.A.L.K.E.R..pwn(390) : error 029: invalid expression, assumed zero
\S.T.A.L.K.E.R..pwn(390) : fatal error 107: too many error messages on one line
После установки плагинов
#include <sscanf>
#include <zcmd>
Нужно дефайны создавать?
И ещё после установки этих плагинов у меня не работает команда открытия инвентаря:
Код:
if (strcmp("/items", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, 10, DIALOG_STYLE_LIST, "Инвентарь", "Водка\nКонсервы\nПрепорат `Антирад`\nАрмейский паёк\nИПП\nАрмейская аптечка", "Использовать", "Отмена");
return 1;
}
Как её переделать?
-
После установки нового командного процессора необходимо подгонять каждую команду под новый вид.
Каждую команду Вы должны создавать не в паблике, а в любом свободном месте мода, например в конце.
-
Пишу в конце
[code]
CMD:makeleader(playerid, params[])
{
if(pInfo[playerid][pAdm] < 5)
return 1;
new
targetid,
member;
if(sscanf(params, "ii", targetid, member))
return SendClientMessage(playerid, -1, "Используйте: /makeleader [targetid] [member]");
if(!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Указанного игрока нет на сервере.");
pInfo[targetid][pLeader] = member;
// здесь ваш форматируемый текст!
}
[code]
Ошибка:
Код:
: warning 209: function "cmd_makeleader" should return a value
Перед последней скобкой пишу returne и с точкой запятой и без - без разницы
Проблемма решена. Нужно было return 0;
- - - Добавлено - - -
Как теперь переделать команду
Код:
if (strcmp("/items", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, 10, DIALOG_STYLE_LIST, "Инвентарь", "Водка\nКонсервы\nПрепорат `Антирад`\nАрмейский паёк\nИПП\nАрмейская аптечка", "Использовать", "Отмена");
return 1;
}
Пробую на:
Код:
CMD:items
{
ShowPlayerDialog(playerid, 10, DIALOG_STYLE_LIST, "Èíâåíòàðü", "Âîäêà\nÊîíñåðâû\nÏðåïîðàò `Àíòèðàä`\nÀðìåéñêèé ïà¸ê\nÈÏÏ\nÀðìåéñêàÿ àïòå÷êà", "Èñïîëüçîâàòü", "Îòìåíà");
return;
}
Ошибки:
Код:
S.T.A.L.K.E.R..pwn(2194) : error 010: invalid function or declaration
S.T.A.L.K.E.R..pwn(2196) : error 021: symbol already defined: "ShowPlayerDialog"
S.T.A.L.K.E.R..pwn(2198) : error 010: invalid function or declaration
- - - Добавлено - - -
Код:
CMD:items()
{
ShowPlayerDialog(playerid, 10, DIALOG_STYLE_LIST, "Инвентарь", "Водка\nКонсервы\nПрепорат `Антирад`\nАрмейский паёк\nИПП\nАрмейская аптечка", "Использовать", "Отмена");
return;
}
теперь
error 017: undefined symbol "playerid"
-
PHP код:
CMD:items(playerid, params[])