XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Передача параметров в триггер
Создал я заготовку для своей системы движения снаряда.
Вопрос в том, как мне передать туда параметры, а потом просто запустить систему?
Например, когда юнит получил урон caster и target это damageSource и triggerUnit соответственно.
Когда заклинание произносит - они уже другие.
Короче, под каждое событие для разных юнитов нужно передать свои параметры, как это сделать?
Старый 14.12.2014, 12:33
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
((кат 1
    globals
        integer variable
    endglobals

    function IncByVal takes val returns boolean
        set variable = variable + val
        return variable > 100
    endfunction

    function EventAction takes nothing returns nothing
        //...
        local integer val = 1 //вводимое в функцию значение
        //...
        if IncByVal(val) then
            call BJDebugMsg("Наша переменная больше ста")
        else
            call BJDebugMsg("Наша переменная меньше ста")
        endif
        //...
    endfunction
    
    //...
))
((кат 2
    //ещё один метод передачи

    globals
        string msg
    endglobals

    function ShowMsg takes nothing returns nothing
       call BJDebugMsg(msg)
    endfunction

    function EventAction takes nothing returns nothing
        set msg = "SomeText"
        call ShowMsg() //вывод на экран сообщения SomeText
        set msg = "SampleText"
        call ShowMsg() //вывод на экран сообщения SampleText
    endfunction

    //...
))
Buulichkaa добавил:
наверное это не совсем то, что вам надо.
Для принятия в функции-обработчике события например юнита, который скастовал способность существуют специальные нативки
например
constant native GetSpellAbilityUnit         takes nothing returns unit
и вернет нам нашего юнита
смотрим весь список в common.j и учим английский потихоньку
Старый 14.12.2014, 13:43
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Buulichkaa, спасибо. Подобные файлы как common.j не разбирал, но обо всех таких простых функциях я знаю.
Мне всего лишь надо какой-то пример на Jass'e или совет как это делают правильно.
На GUI вроде бы в триггере с событием задают значения всем глобалкам, а потом просто:
((код jass
call TriggerExecute( gg_trg_Missile )
))
Если это и есть тот "правильный" способ, то вроде как я сам дал себе ответ :D
Интересует, если несколько юнитов одновременно будут вызывать этот триггер, глобалки не будут перезаписываться? Вряд ли они успеют все быстро отработать без ошибок, когда 10 юнитов одновременно атакуют и нужно выпускать снаряд..
Старый 14.12.2014, 14:17
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
Emily_WoRnz, это раковня, получаем все параметры от события нативками, записываем их в хэш-таблицу или параллельные массивы, а затем используете где вам надо
Старый 14.12.2014, 14:30
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Вот, хэш-таблицы - уже лучше, хотя говорят, они медленные)
Параллельные массивы это что?.
Я начинал с GUI MUI способностей, знаю как там через массивы это делать, это и есть параллельные массивы?
Старый 14.12.2014, 17:37
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Emily_WoRnz, хеш таблица не настолько медленная чтобы это что то решало в большинстве случаев.
Массивы или структуры vjass одно и тоже, они работают быстрее хештаблиц, но от этого мало толку, особенно в реализации простеньких триггерных заклинаний, аттачить индекс структуры к объекту (таймеру, триггеру) нужно хештаблицей или каконить системой хранения данных, последние представляют из себя кучу кода которая нужна ну тока если пипец много раз за секунду её юзают в 100 местах, вроде систем кастомного перемещения юнитов или кастомные снаряды и тп.
Старый 14.12.2014, 18:07
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
quq_CCCP, в позапрошлой моей теме, где я спрашивал про триггерное изменение звука оружия в игре, мне DioD подкинул мысль, что можно свою кастомную систему снарядов сделать, за что ему спасибо :)
Вот, я сделал. Теперь думаю какой способ оптимальный для ее запуска.
Если <50 юнитов одновременно будут запускать снаряды, допустим.
Старый 14.12.2014, 18:28
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Кастомная система снарядов вроде лежала в барахолке Simple Missile System вроде, точно уже и не помню.
quq_CCCP добавил:
вот ссыль - мб пригодится.
Старый 14.12.2014, 18:33
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
quq_CCCP, сейчас посмотрю)
Своя всегда лучше :D
В играх, при попадании стрелы в цель, проигрывается звук, а в варике нет. Я это исправил)
Еще по дугам может снаряд летать и менять свой угол наклона, благодаря дамми модельке подходящей.
И еще у меня мало чего лишнего, чисто под себя сделал. Хотя, конечно, нужно еще довести до ума)
Старый 14.12.2014, 18:34
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Ребята, вроде я знаю как можно решить мой вопрос, но не совсем понимаю как это сделать :D
Моя система с помощью структуры сделана же. Все способности тоже в виде структуры.
Короче, как вставить кусок кода?
Как в каком-то языке программирования подключают библиотеку/пространство имен, тем самым мы используем структуры и остальное из той библиотеки.
Я пробовал уже:
((код jass
library SpellOne requires MMS и extends пробовал, и uses
/* и implement MMS вот тут пробовал, всё равно не могу обращаться к полям структуры Missile, которая в библиотеке MMS
*/
...
endlibrary
))
Старый 15.12.2014, 20:03
ScorpioT1000
Работаем
offline
Опыт: отключен
Немного ворвусь xgm.guru/p/wc3/w3_special_programming раздел Стек и "Аттачи"
Странно, что "гении" постами выше не дали ни одной ссылки на статьи...
Старый 15.12.2014, 20:30
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Воот!
буду разбираться
спасибо :)
а я extends писал к library, не зная что он делает)
Старый 15.12.2014, 20:34
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
ScorpioT1000, у некоторых ссылки на статьи это неотъемлемые части постов, но не все это замечают
Старый 15.12.2014, 20:45
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Ура, с помощью наследования всё удалось, спасибо, господа)
Тему можно закрывать :)
Старый 15.12.2014, 23:16
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 16:18.