NikityshkaMedvedev 0 Опубликовано 10 ноября, 2019 stock show_dialog ( playerid, dialogid, style, caption [ ], info [ ], button1 [ ], button2 [ ] ) { p_t_info [ playerid ] [ p_dialog ] = dialogid ; return ShowPlayerDialog ( playerid, dialogid, style, caption, info, button1, button2 ) ; } C:\Users\Ðàìçåñ\Desktop\Anspire\gamemodes\Thr.pwn(56596) : warning 215: expression has no effect C:\Users\Ðàìçåñ\Desktop\Anspire\gamemodes\Thr.pwn(56596) : error 001: expected token: ";", but found "[" C:\Users\Ðàìçåñ\Desktop\Anspire\gamemodes\Thr.pwn(56596) : error 029: invalid expression, assumed zero C:\Users\Ðàìçåñ\Desktop\Anspire\gamemodes\Thr.pwn(56596) : warning 215: expression has no effect C:\Users\Ðàìçåñ\Desktop\Anspire\gamemodes\Thr.pwn(56596) : error 001: expected token: ";", but found "]" C:\Users\Ðàìçåñ\Desktop\Anspire\gamemodes\Thr.pwn(56596) : fatal error 107: too many error messages on one line Ошибки. p_t_info [ playerid ] [ p_dialog ] = dialogid ; тут ошибки. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Shao 116 Опубликовано 13 ноября, 2019 (изменено) Как я понял Ты хочешь сделать некое подобие кастомной функции? В таком случаи лучше использовать перехватчики. Код: stock ac_show_dialog ( playerid, dialogid, style, caption [ ], info [ ], button1 [ ], button2 [ ] ) { [ p_dialog ] { playerid } = dialogid; return ShowPlayerDialog ( playerid, dialogid, style, caption, info, button1, button2 ); } #if defined _ALS_ShowPlayerDialog #undef ShowPlayerDialog #else #define _ALS_ShowPlayerDialog #endif #define ShowPlayerDialog ac_show_dialog Ко всем new: new p_dialog [ MAX_PLAYERS char ]; P.S отступы в коде - хорошая вещь, сам использую, но перед ; отступать не стоит. Изменено 13 ноября, 2019 пользователем Shao 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 14 ноября, 2019 Скорее всего, p_t_info не массив или массив одномерный. P.S. 12 часов назад, Shao сказал: #if defined _ALS_ShowPlayerDialog #undef ShowPlayerDialog #else #define _ALS_ShowPlayerDialog #endif #define ShowPlayerDialog ac_show_dialog Это не перехват. Вы просто даёте препроцессору макрос на замену ShowPlayerDialog на ac_show_dialog. То же самое, что и вручную заменить все ShowPlayerDialog на ac_show_dialog. Перехват (хуки) на pawn реализовать невозможно без внешних средств (да и с ними не факт, что возможно). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Shao 116 Опубликовано 14 ноября, 2019 3 часа назад, 16Shadows сказал: Скорее всего, p_t_info не массив или массив одномерный. P.S. Это не перехват. Вы просто даёте препроцессору макрос на замену ShowPlayerDialog на ac_show_dialog. То же самое, что и вручную заменить все ShowPlayerDialog на ac_show_dialog. Перехват (хуки) на pawn реализовать невозможно без внешних средств (да и с ними не факт, что возможно). То, что p_t_info массив было понятно ещё сначала(но согласись, зачем создавать енумератор, в котором хранить одно значение, а потом создавать массив для его получения, оптимальным вариантом есть - создание переменной), по поводу перехватов - согласен, основная часть в них использует директивы препроцессора. Можно было вообще перехватить этот RPC через Raknet, и не париться. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты