Вопрос по return

Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Я как понял return в amxx работает как и в других языках программирования ? если что то не так поправьте меня буду благодарен

C++:
public test(id)
    return client_print_color(id, 0, "сообщение 1"); //так я получил результат и завершил работу test()
C++:
public test(id)
{
    client_print_color(id, 0, "сообщение 1");
    client_print_color(id, 0, "сообщение 2 ");
    client_print_color(id, 0, "сообщение 3");
    // всякие функции :)
    return PLUGIN_HANDLED;                                        // завершил работу test()

}
 
Последнее редактирование:
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Честно говоря я сам не вникал еще в это, но по-моему опыты могу ответить следующим образом.

return client_print_color(id, 0, "само сообщение"); //так я вернул результат и завершил работу test()
Да, верно, ретурн вернет результат и прекратит функцию и выполнение дальнейшего кода в ней

Одно и то же или я в чем то ошибаюсь?
Не совсем одно и тоже, return PLUGIN_HANDLED не только остановит текущий функцию но и прервет выполнение всего плагина и остального "потока" то есть все остальные плагины.

return PLUGIN_CONTINUE в твоем случае будет одним и тем же с return client_print_color, который просто завершит функцию test();
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Честно говоря я сам не вникал еще в это, но по-моему опыты могу ответить следующим образом.


Да, верно, ретурн вернет результат и прекратит функцию и выполнение дальнейшего кода в ней


Не совсем одно и тоже, return PLUGIN_HANDLED не только остановит текущий функцию но и прервет выполнение всего плагина и остального "потока" то есть все остальные плагины.

return PLUGIN_CONTINUE в твоем случае будет одним и тем же с return client_print_color, который просто завершит функцию test();
и прервет выполнение всего плагина и остального "потока" то есть все остальные плагины
что то я не понял этого момента
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
return PLUGIN_HANDLED прерывает текущую функцию, и выполнение кода во всех остальных ниже плагинах по списку в plugins.ini
Например имеем два плагина которые по команде /chat выводит сообщение чате.

Первый плагин по команде /chat нам выведет "Привет, как дела"
Второй плагин по команде /chat нам выведет "Спасибо, все отлично"

В стандартной ситуации введя команду /chat ты увидишь оба сообщения.
Если в первым плагине после команды /chat ты поставишь return PLUGIN_HANDLED то увидишь только первое сообщения "Привет, как дела", второе сообщения ты не увидишь, так-как выполнение кода было прервано, в том числе и в ниже стоящих плагинах по списку.
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
return PLUGIN_HANDLED прерывает текущую функцию, и выполнение кода во всех остальных ниже плагинах по списку в plugins.ini
Например имеем два плагина которые по команде /chat выводит сообщение чате.

Первый плагин по команде /chat нам выведет "Привет, как дела"
Второй плагин по команде /chat нам выведет "Спасибо, все отлично"

В стандартной ситуации введя команду /chat ты увидишь оба сообщения.
Если в первым плагине после команды /chat ты поставишь return PLUGIN_HANDLED то увидишь только первое сообщения "Привет, как дела", второе сообщения ты не увидишь, так-как выполнение кода было прервано, в том числе и в ниже стоящих плагинах по списку.
Новое #4

return PLUGIN_HANDLED прерывает текущую функцию, и выполнение кода во всех остальных ниже плагинах данной функции?
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
данной функции?
Нет, во всех функциях, все плагины ниже грубо говоря остановят выполнения кода, а быть точнее, они просто не будут вызваны.

HLDS работает в однопоточным режиме, а значит весь код выполняется в том самым одном потоке, то есть последовательно друг за другом.
HLDS не умеет работать в многозадачном режиме, а значит не умеет выполнять несколько функций одновременно.
Пока не завершиться выполнение кода в одной функция - другая функция не начнется выполняться.


Поэтому, отчасти, важно соблюдать порядок расположения плагинов в plugins.ini.
27 Мар 2018
А вообще вот небольшой материал
 
Последнее редактирование:
Сообщения
333
Реакции
290
Помог
9 раз(а)
Когда-то давно где-то прочел одно ценное высказывание: "Думайте головой, что возвращаете"
return client_print_color вернет количество символов в сообщении, т.е. если символ будет 1 или 2, то вернется PLUGIN_HANDLED и PLUGIN_HANDLED_MAIN.
А это- не всегда полезно и не всегда ТО, что ожидалось в результате.
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
Ещё надо понимать, что эти константы для ретурна влияют только на большинство(но не везде) базовых функций амхх и engine модуля.
В хам, ФМ, реапи уже другие.
 

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

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу