• Страница 1 из 1
  • 1
Форум » Counter-Strike 1.6 » Сервер Counter-Strike 1.6 » CreateMultiForward - с чем его едят? (Разложу по полочкам и на примерах))
CreateMultiForward - с чем его едят?
Дата: Воскресенье, 22.07.2018, 20:58 | Сообщение # 1
Профи-ветеран
Offline
  • pro100web
  • Репутация: 60
  • Сообщений:250
  • Разработчик
  • Статус пользователя Life in San Andreas
В одной теме натолкнулся на небольшую трудность некоторых скриптеров, вроде да же тема специально была создана, так вот, решил закрыть этот вопрос, для начала поговорим о Pre и Post. Наверно часто сталкивались с такими методами и функциями в которых присутствует такое окончание, и сейчас мы научимся подобное реализовывать smile
Для начала создадим MultiForward, начнем с глобальной переменной.
new MultiForward
в функцию plugin_init() добавим такую строчку
MultiForward = CreateMultiForward("new_function",ET_IGNORE,FP_CELL)
Таким образом мы создали Multi Forward, который будет отлавливать использование функции new_function, то есть в своём плагине создаём функцию
public new_function(obj), где obj это параметр, который будет получен из основного плагина, где и зарегистрирован Multi Forward.
Вернемся к основному плагину, где мы еще не завершили создание. Допустим у нас есть функция public csdm_PostSpawn(id), тем кто занимается csdm модом, то они в курсе, что это и как он работает. Вот и пришли к моменту, когда мы будем обсуждать, что такое pre и post. Pre - значит, что функция выполниться в начале или где то в середине функции, а Post только в конце, это только вам на заметку, если хотите облегчить работу другим пользователям вашего плагина. Вернемся к плагину, для того, что бы форвард сработал в функцию csdm_PostSpawn(id) (это наш пример) ExecuteForward, у него 3 параметра.
Первый параметр это глобальная переменная в нашем случае MultiForward, второй параметр это возвращаемый из new_function значение в return, например return 3 и тд, многие используют PLUGIN_HANDLED, CONTINUE и тд. Третий параметр, это параметр который мы отправим в другую функцию, назавем его param, в другой функции он будет иметь вид такой new_function(param). Если не понятно, то вот простой пример.
public csdm_PostSpawn(id)
{
new answer;
ExecuteForward(MultiForward, answer, id)
}
Мы обратились к форварду через MultiForward, получили ответ answer и отправили параметр.

Если что то не понятно, пишите.

Заранее извиняюсь за оформление, я не умею оформлять)

UPD: Если хотите передать в функцию больше параметров то после ET_IGNORE добавляйте тип данных в CreateMultiForward, а выглядеть это будет так:
MultiForward = CreateMultiForward("new_function",ET_IGNORE,FP_CELL,FP_CELL), то есть мы будем отправлять в другой плагин два целых числа, так же нам нужно в форвард передать несколько переменных, допустим есть 2 объекта, это игрок и entity, то
ExecuteForward будет иметь примерный вид ExecuteForward(MultiForward, answer, id, entity) а в функции отлова он будет иметь такой вид
new_function(id, entity) название переменных не имеет значения, хоть да же так new_function(baba, droid), но следует помнить и знать одно, что мы получаем. А именно, что первый параметр это id игрока, а второй id объекта.

Существует несколько типов передаваемых данных, которые нужно указать в CreateMultiForward, а именно:
FP_CELL - целые числа
FP_FLOAT - числа с плавающей запятой, например 0.23 или 14.65 и тд.
FP_STRING - строки, такие как целые предложения, например: Москва не сразу строилась
FP_ARRAY - уже целые массивы данных, это могут быть и целые и дробные и строки, возможно да же все сразу, но уже в одном многомерном пространстве

Думаю на этом всё smile
Сообщение отредактировал pro100web - Воскресенье, 22.07.2018, 22:09
Дата: Воскресенье, 22.07.2018, 21:21 | Сообщение # 2
  • Ragamafona
  • Репутация:
  • Сообщений:
  • Удаленные
Новичкам будет полезно +1
Дата: Воскресенье, 22.07.2018, 22:04 | Сообщение # 3
Профи-ветеран
Offline
  • pro100web
  • Репутация: 60
  • Сообщений:250
  • Разработчик
  • Статус пользователя Life in San Andreas
Oldwarx, дополнил небольшой информацией
Дата: Понедельник, 23.07.2018, 19:59 | Сообщение # 4
Любитель
Offline
  • pro1000kill
  • Репутация: 18
  • Сообщений:27
  • Пользователь
  • Статус пользователя Релизер Army Bonus System
Как раз то, что я искал, спасибо
Форум » Counter-Strike 1.6 » Сервер Counter-Strike 1.6 » CreateMultiForward - с чем его едят? (Разложу по полочкам и на примерах))
  • Страница 1 из 1
  • 1
Поиск:
(threadpage)