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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    Команда с параметрами и без них [DC_CMD]

    Всем привет. Возможно данный вопрос будет не правильно сформулирован, но напишу как понимаю я :)
    Есть допустим команда /sellbusiness [id] [sum], как сделать что бы если ввести просто /sellbusiness то выйдет опр. диалог (диалог я сам сделаю, мне нужно узнать как сделать).
    Где то читал что с помощью if(\0), что то типа такого)

    - - - Добавлено - - -

    Командный процессор - DC_CMD.
    Последний раз редактировалось StevenH; 02.12.2015 в 19:39.

  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Если у вас есть sscanf, то можно сделать так:
    PHP код:
    if (sscanf(params"dd"params[0], params[1]))
    {
        
    /* Something */


  3. #3
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Или

    PHP код:
    COMMAND:sellbusiness(playeridparams[])
    {
        if(
    isnull(params))
        {
            
    ShowPlayerDialog(...);
            return 
    0;
        }
        return 
    1;


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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Или

    PHP код:
    COMMAND:sellbusiness(playeridparams[])
    {
        if(
    isnull(params))
        {
            
    ShowPlayerDialog(...);
            return 
    0;
        }
        return 
    1;

    Не работает, пример кода:
    PHP код:
    CMD:sellhouse(playeridparams[])
    {
        if(
    sscanf(params"dd"params[0], params[1])) return true;
        if(
    isnull(params))
        {
            new 
    message[178];
            
    format(messagesizeof(message), "{"#cWHITE"}Вы действительно хотите продать свой дом государству за {"#cGREEN"}$%d\n{"#cGRAY"}(Если вы хотите продать бизнес другому игроку используйте /sellhouse [ID игрока] [Сумма])", HouseInfo[houseid][hValue]);
            
    ShowPlayerDialog(playerid300"Дом"message"Да""Нет");
            
    SendClientMessage(playeridCOLOR_WHITE"Для продажи игроку: /sellhouse [ID] [Сумма]");
            return 
    true;
        }
        
    //действия если все params введены

    - - - Добавлено - - -

    Цитата Сообщение от VVWVV Посмотреть сообщение
    Если у вас есть sscanf, то можно сделать так:
    PHP код:
    if (sscanf(params"dd"params[0], params[1]))
    {
        
    /* Something */

    Выше прочитай, я не это хочу!
    Последний раз редактировалось StevenH; 02.12.2015 в 19:17.

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

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

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Если кто-то не понял, напишу ещё раз.
    - Если ввести ПРОСТО /sellbusiness, то должен выйти опр. диалог для слива в гос
    - Если ввести /sellbusiness 1 50000 (id и цена) то действие продажи (сам сделаю).

    - - - Добавлено - - -

    Цитата Сообщение от Londlem Посмотреть сообщение
    Во-первых, вы одновременно используете две функции, когда это не нужно.
    Во-вторых, VVWVV дал вам годную подсказку: Если игрок не ввёл параметр, то выведем диалога, иначе - ошибку.
    Во первых, параметры я буду использовать дальше (после диалога).
    Во вторых, я вырезал код после того если игрок ввёл ПРОСТО команду. А так params 0 и 1 используется!!!

    Что бы было понятней, вот весь код:
      Открыть/закрыть
    PHP код:
    CMD:sellhouse(playeridparams[])
    {
        if(
    PlayerInfo[playerid][pHouse] == 0) return SendClientMessage(playeridCOLOR_GRAY"У Вас нет дома");
        if(
    PlayerInfo[playerid][pCar] != 0) return SendClientMessage(playeridCOLOR_GRAY"У Вас есть машина. Вы должны продать её прежде чем продавать дом");
        if(
    sscanf(params"dd"params[0], params[1])) return true;
        new 
    houseid PlayerInfo[playerid][pHouse];
        if(
    isnull(params)) // тут не знаю
        
    {
            new 
    message[178];
            
    format(messagesizeof(message), "{"#cWHITE"}Вы хотите продать дом государству за {"#cGREEN"}$%d {"#cWHITE"}(80# от гос. стоимости)?\n{"#cGRAY"}(что бы продать дом другому игроку введите /sellhouse [ID игрока] [Цена])", HouseInfo[houseid][hValue]/100*80);
            
    ShowPlayerDialog(playerid320"Продажа дома"message"Да""Нет");
            
    SendClientMessage(playeridCOLOR_WHITE"Для продажи игроку: /sellhouse [ID игрока] [Цена]");
            return 
    true;
        }
            if(
    PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, -1"Данная команда доступна с 3 уровня");
        if(
    price HouseInfo[houseid][hValue] || price 15000000) return SendClientMessage(playeridCOLOR_GRAY"Цена не может быть меньше гос. цены дома или больше 15 млн.");
        if(!
    IsPlayerConnected(params[0]) || playerid == params[0]) return SendClientMessage(playeridCGRAY_GRAY"Неверный ID игрока");
        if(
    PlayerInfo[params[0]][pHouse] != 0) return SendClientMessage(playeridCOLOR_GRAY"У игрока уже есть дом");
        if(
    GetPlayerDistanceToPlayer(playeridparams[0]) > 3.0 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) return SendClientMessage(playeridCOLOR_GRAY"Вы далеко друг от друга");
        new 
    message[150];
        
    format(messagesizeof(message), "Вы предложили {"#cWHITE"}%s {"#cINFO"} купить ваш дом", PlayerInfo[params[0]][pName]);
        
    SendClientMessage(playeridCINFOmessage);
        
    format(messagesizeof(message), "%s {"#cINFO"}предложил Вам купить его дом за {"#cRED"}$%d{"#cINFO"}. Что бы подтвердить нажмите {"#cGREEN"}Y{"#cINFO"}, иначе {"#cRED"}N", PlayerInfo[playerid][pName], params[1]);
        
    SendClientMessage(params[0], CWHITEmessage);
        
    format(messagesizeof(message), "Вы предложили {"#cINFO"}%s {ffffff}купить ваш дом за {"#cGREEN"}$%d", PlayerInfo[params[0]][pName], params[1]);
        
    return true;

    Последний раз редактировалось StevenH; 02.12.2015 в 19:33.

  9. #7
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Непонятливый ты мой

    PHP код:
    COMMAND:sellbusiness(playeridparams[])
    {
        if(
    sscanf(params"ii"params[0], params[1]))
        {
            
    // Если ничего не ввел
            
    ShowPlayerDialog(...);
            return 
    0;
        }
        
    // Если ввел параметры
        
    return 1;


  10. Пользователь сказал cпасибо:
    StevenH (02.12.2015)
  11. #8
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Непонятливый ты мой

    PHP код:
    COMMAND:sellbusiness(playeridparams[])
    {
        if(
    sscanf(params"ii"params[0], params[1]))
        {
            
    // Если ничего не ввел
            
    ShowPlayerDialog(...);
            return 
    0;
        }
        
    // Если ввел параметры
        
    return 1;

    Я так же вот и делал, только вот sscanf у меня возвращал return true (там где параметры), а надо было убрать).

  12. #9
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    PHP код:
    CMD:sellhouse(playeridparams[])
    {
        if(
    PlayerInfo[playerid][pHouse] == 0
            return 
    SendClientMessage(playeridCOLOR_GRAY"У Вас нет дома");
        
        if(
    PlayerInfo[playerid][pCar] != 0
            return 
    SendClientMessage(playeridCOLOR_GRAY"У Вас есть машина. Вы должны продать её прежде чем продавать дом");
        
        if(
    PlayerInfo[playerid][pLevel] < 3
            return 
    SendClientMessage(playerid, -1"Данная команда доступна с 3 уровня");
        
        if(
    sscanf(params"dd"params[0], params[1]))
        {
            new 
    message[178];
            
    format(messagesizeof(message), "{"#cWHITE"}Вы хотите продать дом государству за {"#cGREEN"}$%d {"#cWHITE"}(80# от гос. стоимости)?\n{"#cGRAY"}(что бы продать дом другому игроку введите /sellhouse [ID игрока] [Цена])", HouseInfo[houseid][hValue]/100*80);
            
    ShowPlayerDialog(playerid320"Продажа дома"message"Да""Нет");
            
    SendClientMessage(playeridCOLOR_WHITE"Для продажи игроку: /sellhouse [ID игрока] [Цена]");
            return 
    0;
        }
        
        if(
    price HouseInfo[PlayerInfo[playerid][pHouse]][hValue] || price 15000000
            return 
    SendClientMessage(playeridCOLOR_GRAY"Цена не может быть меньше гос. цены дома или больше 15 млн.");
        
        if(!
    IsPlayerConnected(params[0]) || playerid == params[0]) 
            return 
    SendClientMessage(playeridCGRAY_GRAY"Неверный ID игрока");
        
        if(
    PlayerInfo[params[0]][pHouse] != 0
            return 
    SendClientMessage(playeridCOLOR_GRAY"У игрока уже есть дом");
        
        if(
    GetPlayerDistanceToPlayer(playeridparams[0]) > 3.0 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) 
            return 
    SendClientMessage(playeridCOLOR_GRAY"Вы далеко друг от друга");
       
        new 
    message[150];
        
    format(messagesizeof(message), "Вы предложили {"#cWHITE"}%s {"#cINFO"} купить ваш дом", PlayerInfo[params[0]][pName]);
        
    SendClientMessage(playeridCINFOmessage);
        
    format(messagesizeof(message), "%s {"#cINFO"}предложил Вам купить его дом за {"#cRED"}$%d{"#cINFO"}. Что бы подтвердить нажмите {"#cGREEN"}Y{"#cINFO"}, иначе {"#cRED"}N", PlayerInfo[playerid][pName], params[1]);
        
    SendClientMessage(params[0], CWHITEmessage);
        
    format(messagesizeof(message), "Вы предложили {"#cINFO"}%s {ffffff}купить ваш дом за {"#cGREEN"}$%d", PlayerInfo[params[0]][pName], params[1]);
        // кому вы что предложили? о_0
        
        
    return 1;


 

 

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

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

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

Ваши права

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