Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±

    Команда /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;
    	}
    Не злитесь. Я всего лишь учусь скриптить

  2. #2
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    В таких случаях придётся использовать strtok либо sscanf. Ищите в интернете пример использования и пробуете делать команду.

  3. Пользователь сказал cпасибо:
    Albert (05.01.2015)
  4. #3
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Установил
    #include <sscanf>
    #include <zcmd>
    Мануалов нигде не найти. Везде такие громоздкие команды, что я даже под себя подредактировать не могу
    Не злитесь. Я всего лишь учусь скриптить

  5. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Переменную, отвечающую за лидерку у игрока - сюда.

  6. #5
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Коечто нашёл. Сделал так:
    Код:
    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
    Не злитесь. Я всего лишь учусь скриптить

  7. #6
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    PHP код:
    CMD:makeleader(playeridparams[])
    {
        if(
    pInfo[playerid][pAdm] < 5)
            return 
    1;

        new
            
    targetid,
            
    member;

        if(
    sscanf(params"ii"targetidmember))
            return 
    SendClientMessage(playerid, -1"Используйте: /makeleader [targetid] [member]");
        if(!
    IsPlayerConnected(targetid))
            return 
    SendClientMessage(playerid, -1"Указанного игрока нет на сервере.");

        
    pInfo[targetid][pLeader] = member;

        
    // здесь ваш форматируемый текст!

        
    return 1;

    Кстати, можете смело переходить с zcmd на dc_cmd, если вы только начинаете разбираться в командных процессорах.

  8. Пользователь сказал cпасибо:
    Albert (05.01.2015)
  9. #7
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Код:
    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;
    	}
    Как её переделать?
    Последний раз редактировалось Albert; 05.01.2015 в 18:08.
    Не злитесь. Я всего лишь учусь скриптить

  10. #8
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    После установки нового командного процессора необходимо подгонять каждую команду под новый вид.
    Каждую команду Вы должны создавать не в паблике, а в любом свободном месте мода, например в конце.

  11. #9
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Пишу в конце
    [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"
    Не злитесь. Я всего лишь учусь скриптить

  12. #10
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    PHP код:
    CMD:items(playeridparams[]) 

  13. Пользователь сказал cпасибо:
    Albert (05.01.2015)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •