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

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

    Отправка параметров в cmd::command_name(playerid, "")

    Как в cmd:: отправить команду без параметров? У меня есть команда, в которой есть необязательные параметры, но мне нужно из диалога, вызвать команду /sellhouse, но чтобы параметры туда не вводились, пробовал cmd::sellhouse(playerid, ""); , но к сожалению не работает, никакого эффекта

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Так покажи код самой команды, как вызываешь и скажи какой командный процессор :)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так покажи код самой команды, как вызываешь и скажи какой командный процессор :)
    DC_CMD, код (чутка код урезал / написал комментарий что дальше идет):
    PHP код:
    CMD:sellhouse(playeridparams[])
    {
        
    sscanf(params"I(-1)d"params[0], params[1]); // id игрока | цена
        
    if(params[0] == -1// Если ид игрока не указан (-1)
        
    {
            
    // тут выскакивает диалог для продажи дома в гос. (подтверждение Да / Нет)
            
    SendClientMessage(playeridCWHITE"Для продажи игроку: {4271FF}/sellhouse [ ID ] [ Цена ]");
            return 
    1;
        }
        
    // тут проверки на продажу дома ИГРОКУ и так далее
        
    return true;

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

    Нужно как то вызвать в диалоге, чтобы прошло условие в команде - if(params[0] == -1)

    Вызываю примерно сейчас так, но не работает:
    PHP код:
    // какой то case
    switch(listitem)
    {
        
    // case 0-5
        
    case 6cmd::sellhouse(playerid"");
    }
    // ... 

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Эмм. Во-первых, не может быть сначала необязательный параметр, а потом вдруг обязательный. Как вообще, в твоём представлении, sscanf должен понять, что раз ты ввёл всего одно число - это второй параметр, а не первый? :)
    Во-вторых, собственно, проблема, вероятно, именно в том, что у тебя есть обязательный параметр в команде, но ты не указываешь их вообще

    Как я понимаю, если не продавать дом игроку, то и цена автоматом устанавливается. Тогда так:
    PHP код:
    CMD:sellhouse(playeridparams[])
    {
        
    sscanf(params"I(-1)I(-1)"params[0], params[1]); // id игрока | цена
        
    if(params[0] == -1// Если ид игрока не указан (-1)
        
    {
            
    // тут выскакивает диалог для продажи дома в гос. (подтверждение Да / Нет)
            
    SendClientMessage(playeridCWHITE"Для продажи игроку: {4271FF}/sellhouse [ ID ] [ Цена ]");
            return 
    1;
        }
        
    // тут проверки на продажу дома ИГРОКУ и так далее
        
    return true;

    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм. Во-первых, не может быть сначала необязательный параметр, а потом вдруг обязательный. Как вообще, в твоём представлении, sscanf должен понять, что раз ты ввёл всего одно число - это второй параметр, а не первый? :)
    Во-вторых, собственно, проблема, вероятно, именно в том, что у тебя есть обязательный параметр в команде, но ты не указываешь их вообще

    Как я понимаю, если не продавать дом игроку, то и цена автоматом устанавливается. Тогда так:
    PHP код:
    CMD:sellhouse(playeridparams[])
    {
        
    sscanf(params"I(-1)I(-1)"params[0], params[1]); // id игрока | цена
        
    if(params[0] == -1// Если ид игрока не указан (-1)
        
    {
            
    // тут выскакивает диалог для продажи дома в гос. (подтверждение Да / Нет)
            
    SendClientMessage(playeridCWHITE"Для продажи игроку: {4271FF}/sellhouse [ ID ] [ Цена ]");
            return 
    1;
        }
        
    // тут проверки на продажу дома ИГРОКУ и так далее
        
    return true;

    Вот в этом и проблема, я делал уже так:
    PHP код:
    sscanf(params"I(-1)I(-1)"params[0], params[1]); 
    Однако сервер крашится, со следующими логами:
    PHP код:
    [18:43:24] [debugServer crashed while executing demure.amx
    [18:43:24] [debugAMX backtrace:
    [
    18:43:24] [debug#0 native sscanf () from sscanf.so
    [18:43:24] [debug#1 001ce65c in public cmd_sellhouse (playerid=0, params[]=@003adc74 !"") at C:\Users\\Desktop\Demure RP\\gamemodes\demure.pwn:18778
    [18:43:24] [debugNative backtrace:
    [
    18:43:24] [debug#0 f7410180 in _Z13GetStackTraceRSt6vectorI10StackFrameSaIS0_EEPv () from plugins/crashdetect.so
    [18:43:24] [debug#1 f7408064 in _ZN11CrashDetect20PrintNativeBacktraceERSoRKN2os7ContextE () from plugins/crashdetect.so
    [18:43:24] [debug#2 f7408d64 in _ZN11CrashDetect20PrintNativeBacktraceERKN2os7ContextE () from plugins/crashdetect.so
    [18:43:24] [debug#3 f740acdb in _ZN11CrashDetect7OnCrashERKN2os7ContextE () from plugins/crashdetect.so
    [18:43:24] [debug#4 f740f4d5 in ?? () from plugins/crashdetect.so
    [18:43:24] [debug#5 ffffe410 in ?? ()
    [18:43:24] [debug#6 f732f8d6 in ?? () from plugins/sscanf.so
    [18:43:24] [debug#7 080950e4 in ?? () from ./samp03svr
    [18:43:24] [debug#8 f7409ad3 in _ZN11CrashDetect17HandleAMXCallbackEiPiS0_ () from plugins/crashdetect.so
    [18:43:24] [debug#9 5f646d63 in ?? () from uu||~|PDv
    [18:43:24] [debugRegisters:
    [
    18:43:24] [debugEAX00000000 EBXf7333120 ECX082b3b00 EDXffffffff
    [18:43:24] [debugESIffb4ddc8 EDIf73332f8 EBPffb4dde8 ESPffb4dd30
    [18:43:24] [debugEIPf732f8d6 EFLAGS00000286
    [18:43:24] [debugStack:
    [
    18:43:24] [debugESP+00000000082b3b00 003adc78 ffb4ddc4 0000000b
    [18:43:24] [debugESP+00000020312d2849 2d284929 ff002931 f77b7f94
    [18:43:24] [debugESP+00000040f73332f8 f73332f8 f73332f8 f73332f8
    [18:43:24] [debugESP+0000006000000005 00000005 61016369 00326c6c
    [18:43:24] [debugESP+0000008000000021 00000000 ffffffff 080ac299
    [18:43:24] [debugESP+000000a0f733148a ffb4dd80 f732e6cb f1e20008
    [18:43:24] [debugESP+000000c0082b3b00 f23ae920 f74ade09 f740114a
    [18:43:24] [debugESP+000000e0082b3b00 08263460 ffb4e1cc f7409ad3
    [18:43:24] [debugESP+00000100001ce65c 00000087 ffb4dec8 f756d6e5
    [18:43:24] [debugESP+0000012000000000 081d0559 ffb4dec8 f756d699
    [18:43:24] [debugESP+00000140f74b1357 081e01b5 081cfc38 f77b7cc0
    [18:43:24] [debugESP+00000160081df9cc ffb4df81 0000002c 00000001
    [18:43:24] [debugESP+0000018000000000 00000000 f756d67f f7784000
    [18:43:24] [debugESP+000001a000000000 00000002 00000001 00000009
    [18:43:24] [debugESP+000001c0f7780e07 f77b7f94 00000000 f77a47f5
    [18:43:24] [debugESP+000001e0082b3b00 00000000 003b1c10 001ce65c
    [18:43:24] [debugESP+0000020000000000 081ce9fc 081cea00 081ce9f8
    [18:43:24] [debugESP+00000220ffb4e030 ffb4df00 f77a47db f7434ff4
    [18:43:24] [debugESP+0000024008263460 00000087 ffb4e00c f23ae920
    [18:43:24] [debugESP+0000026000000000 f7780e00 ffb4e030 082b3b00
    [18:43:24] [debugESP+00000280082b3b00 00000087 ffb4e00c f23ae920
    [18:43:24] [debugESP+000002a0f1ffcd28 003b1bf8 003adc78 00000004
    [18:43:24] [debugESP+000002c0001d8d78 ffb4e030 00000000 f7401408
    [18:43:24] [debugESP+000002e0ffb4e088 00000001 082b3b00 f7434ff4
    [18:43:24] [debugESP+00000300082b3b00 ffb4e1cc 00000122 00000000
    [18:43:24] [debugESP+0000032000000001 081cfc38 ffb4e078 f7359b14
    [18:43:24] [debugESP+0000034000000002 f73f03c0 ffb4e148 f7359f38
    [18:43:24] [debugESP+0000036000000000 00000000 00000122 081d1028
    [18:43:24] [debugESP+0000038000000008 00000000 003adc74 00000010
    [18:43:24] [debugESP+000003a000008b38 00000030 00000000 ffffffff
    [18:43:24] [debugESP+000003c0082b3b00 08263460 00000122 f740e384
    [18:43:24] [debugESP+000003e000000000 082b3b00 ffb4e128 f7359bfe
    [18:43:24] [debugLoaded modules:
    [
    18:43:24] [debug00000000 00187d1f samp03svr
    [18:43:24] [debug00000000 000004e4 
    [18:43:24] [debugf7780000 f7782c6f /lib/libdl.so.2
    [18:43:24] [debugf7765000 f777f00b /lib/libpthread.so.0
    [18:43:24] [debugf766e000 f776c9f7 /usr/lib/i386-linux-gnu/libstdc++.so.6
    [18:43:24] [debugf7621000 f766d417 /lib/libm.so.6
    [18:43:24] [debugf7605000 f761e524 /lib/i386-linux-gnu/libgcc_s.so.1
    [18:43:24] [debugf7439000 f760b967 /lib/libc.so.6
    [18:43:24] [debugf7795000 f77b7844 /lib/ld-linux.so.2
    [18:43:24] [debugf73f2000 f7434ac4 plugins/crashdetect.so
    [18:43:24] [debugf7334000 f73f239a plugins/streamer.so
    [18:43:24] [debugf778a000 f779172f /lib/librt.so.1
    [18:43:24] [debugf7327000 f73335fc plugins/sscanf.so
    [18:43:24] [debugf72bf000 f7327788 plugins/mysql.so
    [18:43:24] [debugf7291000 f72bdb58 /game/plugins/../log-core.so
    [18:43:24] [debugf6f69000 f7283bf4 /usr/lib/i386-linux-gnu/libmysqlclient.so.18
    [18:43:24] [debugf6f53000 f6f675e0 /lib/i386-linux-gnu/libz.so.1
    [18:43:24] [debugf2f44000 f2f4f583 /lib/libnss_nis.so.2
    [18:43:24] [debugf2f28000 f2f431ab /lib/libnsl.so.1
    [18:43:24] [debugf2f1a000 f2f26917 /lib/libnss_files.so.2
    [18:43:24] [debugf728a000 f728eaf0 plugins/dc_cmd.so
    [18:43:24] [debugf2d9b000 f2dffe6e plugins/regex.so
    [18:43:24] [debugf7283000 f72880ef /lib/libnss_dns.so.2
    [18:43:24] [debugf2d80000 f2d9a0cb /lib/libresolv.so.2 
    - - - Добавлено - - -

    18778 это
    PHP код:
    sscanf(params"I(-1)I(-1)"params[0], params[1]); 

  6. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Потому что нужно отучаться использовать массив params в качестве параметров, ибо когда ты параметры не указываешь, ты заставляешь sscanf обращаться к несуществующим ячейкам памяти
    PHP код:
    CMD:sellhouse(playeridparams[])
    {
        new 
    giveplayerid,
            
    price;
        
    sscanf(params"I(-1)I(-1)"giveplayeridprice); // id игрока | цена
        
    if(giveplayerid == -1// Если ид игрока не указан (-1)
        
    {
            
    // тут выскакивает диалог для продажи дома в гос. (подтверждение Да / Нет)
            
    SendClientMessage(playeridCWHITE"Для продажи игроку: {4271FF}/sellhouse [ ID ] [ Цена ]");
            return 
    1;
        }
        
    // тут проверки на продажу дома ИГРОКУ и так далее
        
    return true;

    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

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

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

    Спасибо, закрой

 

 

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

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

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

Ваши права

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