Перейти к контенту
aka_sektor

Разбор callback функций

Рекомендуемые сообщения

Обсуждение: http://modders-wiki.ru/Разбор_callback_функций

Изменено пользователем aka_sektor

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Про раздел scripts.

Любопытно, это только мне все это кажется очень странным, и непонятно для чего предназначенным?

Один пример. В твоей таблице написано название функции для колбека use_ubject. А у меня она называется OnUseObject. Мне что теперь, скрипты переписывать под статью? :)

А вернее, и практичнее, что делать тому, кто по этой статье будет пытаться разобраться в чьих-то скриптах. И не найдет указанных названий. Не говоря уж о том что может быть много всяческих колбеков, вообще в этой таблице не упоминающихся.

Так же и соседняя тема. Выглядит на мой взгляд странно. Почему только диалог и вызов посредством инфопоршней? А если я в скриптах вообще инфопоршни не использую, вызывая их не-из-диалога, меня что, кара небесная постигнет?

Я почему вообще влез, непонятно назначение этого всего. Если это помощь новичкам, пытающимся в этих вещах разобраться, то помощь странная. Разложить на его дороге побольше граблей.

Если это все создается для совершенно других целей каких-то, (просто автор сам для себя старается все понять?) то мб стоит об этом где-то на видном месте написать.

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Zander_driver сказал:

только мне все это кажется

Наверное нет, @abramcumner в соседней теме, тоже высказывался, насчет замены кода. Однако, как я уже ему ответил:

В 26.09.2017 в 18:24, aka_sektor сказал:

описываем все возможные способы. Он работает, значит может быть полезен.

Какой использовать, пусть моддер сам решает. Можно дописать о недостатках способа или преимуществах.

 

4 часа назад, Zander_driver сказал:

у меня она называется

Здесь задача стоит разобрать оригинальные игры финалки, а не моды. Как бы и указаны платформы.

 

4 часа назад, Zander_driver сказал:

не найдет указанных названий.

В модах может быть переписано действительно по-своему.

 

4 часа назад, Zander_driver сказал:

соседняя тема. Выглядит на мой взгляд странно. Почему только диалог и вызов посредством инфопоршней?

Я думал ты понял что я не скриптер. Какую инфу мне удалось добыть, ту я проверил и записал. Знаешь больше способов - я против не буду, если расскажешь.

Кстати, колбеки для того и разбирались, чтобы написать про способ, через который с их помощью можно скрипт вызвать.

 

4 часа назад, Zander_driver сказал:

Разложить на его дороге побольше граблей.

А в чём они то? Работает же. Естественно с точки зрения скриптера, понятнее как и что писать. Опять же повторюсь, я не против дополнений, а только за.

Тем кто хочет что-то делать, но мало что в этом понимает, даже такая помощь, будет полезна. Опять же, я тебе уже говорил в скайпе, насколько непонятны твои объяснения о причинах вылетов скриптов, не скриптерам. Так что оба вариант полезны: сложный и простой.

 

4 часа назад, Zander_driver сказал:

просто автор сам для себя старается все понять?

В том числе.

Изменено пользователем aka_sektor

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 часов назад, aka_sektor сказал:

описываем все возможные способы

На это, похоже меньше всего. В этом и есть главная странность.

13 часов назад, aka_sektor сказал:

Здесь задача стоит разобрать оригинальные игры финалки

В оригинале ТЧ этот колбек вообще незабинден (отсутствует). А кто подключает, тот и называет его каждый по своему.

С другой стороны, хит-колбек например есть не только в тех классах, которые указаны в статье, но и некоторых других. Искать и перечислять расхождения с оригиналом можно долго..

 

13 часов назад, aka_sektor сказал:

В модах может быть переписано действительно по-своему.

Дело в том что колбек, настоящий а не костыльный, он вообще-то вызывается движком. И набор возможных (доступных) колбеков, и их название, определяются версией движка. Названия функций при этом могут быть любые, названия колбеков - те что соответствуют движку. И до тех пор пока разработчики мода не правят движок, названия колбеков НЕ могут быть переписаны по-своему, но при этом названия функций им соответствующих, могут быть изменены. Даже те функции которые были в оригинале старейшей версии ТЧ.

13 часов назад, aka_sektor сказал:

Знаешь больше способов - я против не буду, если расскажешь.

Вот к примеру (наверное полезный для новичка) способ.

Разместить вызов своей функции внутри той, которая уже и так вызывается и используется в игре, в нужных ситуациях.

Возьмем к примеру bind_stalker.script.

Поместить вызов своей функции внутри функции net_spawn - будет вызвано при входе актора в онлайн.

внутри update - будет вызываться на каждом апдейте актора.

внутри on_item_take - будет вызываться при каждом получении какого либо предмета актором, в том числе при входе в онлайн и загрузке всего наличного барахла.

и т.д. и т.п., почему вот даны "колбеки" но не дано доступных начинающему пояснений, что это вообще такое и для чего. Раз ты позиционируешь свой материал как помощь для не-скриптеров, и начинающих скриптеров, то должно быть объяснено, что можно с этими колбеками делать.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, Zander_driver сказал:

незабинден (отсутствует)

Ну... искал в скриптах по строчке:

self.object:set_callback

 

7 минут назад, Zander_driver сказал:

он вообще-то вызывается движком

Это известно. Но приведено это все к тому, чтобы прописывать именно что в метод в скриптах.

 

14 минут назад, Zander_driver сказал:

должно быть объяснено

Это планируется к объяснению именно что в: http://modders-wiki.ru/Способы_вызова_функции

 

А разбор, это просто список возможностей. Кстати, там пока не хватает раздела пример вызова. Например для on_item_take:

if obj:section() == "имя_секции_предмета" and not has_alife_info("заглушка") then 
имя_скрипта.имя_функции_в_скрипте
give_info("заглушка")
end

 

20 минут назад, Zander_driver сказал:

что это вообще такое и для чего

Я так понимаю, речь о том, чтобы дать определение что такое callback в игре.

Я спрашивал, мне ответили: "Передача исполняемого кода в качестве параметров другого кода"

 

Но как-то оно не очень понятно.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, aka_sektor сказал:

там пока не хватает раздела пример вызова. Например для on_item_take:

Опять инфопоршни. Это что, религия такая, что без них и шагу сделать нельзя?

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

4 часа назад, aka_sektor сказал:

Я так понимаю, речь о том, чтобы дать определение что такое callback в игре.

Уж коль данный материал позиционируется "для новичков", то речь о том, чтобы тому же новичку доступно объяснить, что он может делать с помощью callback-ов.

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

Хотя передача функций в качестве параметров, это вообще классная и удобная фича в Луа и во всех остальных языках где такое есть, так что уже просто от того, что "тут так можно" - любой программист рад будет. имхо.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Zander_driver сказал:

без них и шагу

Расскажи как без них, чтобы нормально было. А я уже писал, почему в данном случае он нужен: http://www.amk-team.ru/forum/topic/6185-skriptovanie/?do=findComment&comment=1122162

 

3 часа назад, Zander_driver сказал:

напиши своими словами

https://coub.com/view/y3n4k

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Статью временно убрал.

Надо подробнее разобрать.

Вот вывел список всех события из движка: https://www.gameru.net/forum/index.php?showtopic=69373

Надо как-то их описать все.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

×