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

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

Ответ
 
JET_LI

offline
Опыт: 1,724
Активность:
Работа с таймером
вот например:
Код:
function my1_condition takes nothing returns nothing
   return GetSpellAbilityId()=='A00A'
endfunction

function TimerAct takes nothing returns nothing
   local unit u=GetHandleTimer(....)
   call SetUnitPositionLoc(u, ...) 
endfunction

function My1 takes nothing returns nothing
    local timer tim=CreateTimer()
    local unit u=GetTriggerUnit()
    call StartTimer(tim,0.01,true,function TimerAct)

function InitTrig_my1 takes nothing returns nothing
    set gg_trg_my1=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_my1, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction(gg_trg_my1,function My1)
    call TriggerAddCondition(gg_trg_as,Condition( function my1_Condition) )
endfunction

Цель такова, мне нужен чтобы юнит "u" перемещался по определённым координатам. Я не хочу делать во второй функции local unit u=GetTriggerUnit(), а мне нужно как-то через тайме перекинуть значение,я помню что это делается с помощью GetHandleTimer(), но саму подачу в эту функцию незнаю.
И так мне нужно чтобы в память таймера "Забился" юнит который кастовал способность, а потом я уже загружаю его. Повторяю мне я не хчоу использовать GetTriggerUnit() понимаю что реще и проще, но мне нужно именно то которое было написано выше!!
Старый 16.03.2009, 16:45
alexkill

offline
Опыт: 18,872
Активность:
GetHandleTimer() - такой функции нет

http://xgm.guru/forum/showthread.php?t=23090
смотри код в первом посте.
Старый 16.03.2009, 16:52
Toadcop

offline
Опыт: 54,313
Активность:
лутчы это всё делать 1 таймером и через "группу снарядов" перебирать и делать действия... по этому тоже есть примеры и статьи даже вроде...
Старый 16.03.2009, 18:57
adic3x

offline
Опыт: 108,439
Активность:
+ 1 к Тс
и
не ставьте период .01, .025 дб минимум
Старый 16.03.2009, 19:38
Elf_Stratigo

offline
Опыт: 4,699
Активность:
Цитата:
лутчы это всё делать 1 таймером и через "группу снарядов" перебирать и делать действия... по этому тоже есть примеры и статьи даже вроде...

я в арчёрках так и сделал )))
хотя я не встречал таких идей нв хгм - мб вы гдето и писали, но походу гдето в самом низу и маленьким шрифтом =\

вопрос по перебору: перебор в смысле перебор, или ForGroup?
Старый 17.03.2009, 07:24
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
хотя я не встречал таких идей нв хгм
потому что это очевидно
Старый 17.03.2009, 10:30
Elf_Stratigo

offline
Опыт: 4,699
Активность:
Цитата:
потому что это очевидно

ну не факт, мне так не казалось, до того, как я не узнал, что ForGroup работает быстрее, чем обрабатывающий цикл группу

вообще, исходя из того, что таймеры так или иначе будут запущены в разное время (до тысячной секунды...), я решил, что как бы "почти постоянная малая загрузка на процессор" будет лучше, чем сразу и для всех снарядов, и мне кажется, не я один такой )))

п.с. щас на лекции рассказали про "ошибку доступа к странице памяти" и я больше стал склоняться к ForGroup, хотя впрочем, кто-нить знает, как инструкции варика для ForGroup кладутся в память?! :)

Отредактировано Elf_Stratigo, 17.03.2009 в 12:46.
Старый 17.03.2009, 12:41
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
воопще, исходя из того, что таймеры так или иначе будут запущены в разное время (до тысячной секунды...), я решил, что какбы "почти постаянная малая загрузка на процессор" буит лучше, чем сразу и для всех снарядов, и мне кажется, не я один такой )))

время на создание "жассового потока", время на поиск сработавшего таймера, время на извлечение ид снаряда?
Старый 17.03.2009, 12:49
NETRAT

offline
Опыт: 83,712
Активность:
лол, ты представляешь себе отличие между компилируемым языком и интерпретируемым?
на тему ассемблера можешь с адиком пообщаться - много интересных нюансов расскажет

хачу хачу хачу! © адик

Отредактировано ADOLF, 17.03.2009 в 13:02.
Старый 17.03.2009, 12:54
Hanabishi
COOL STATUS
offline
Опыт: отключен
H2I + RB решат эту проблему (я так лично делаю)
Старый 17.03.2009, 14:49
Elf_Stratigo

offline
Опыт: 4,699
Активность:
Цитата:
время на создание "жассового потока"

ну тут да, много маленьких поточков :)
Цитата:
время на поиск сработавшего таймера,

я думал это варик не исчет в прямом смысле слова оО
-типо перед активацией таймера в какуюнить глобалку - какой таймер щас будет "пришло время"
Цитата:
время на извлечение ид снаряда

ну дык это зависит от способа уже...
эм, ForGroup выигрывает перед кешем, а вот его победа над тем, что мне посоветовали в темке "Стрела не двигается и зависает" (это SCV?) уже не столь очевидный факт
Цитата:
компилируемым языком и интерпретируемым?

вроде как))))
вот JAVA - оно же перед запуском компилируется - а разве варик свой JASS не компилирует? )))
динамическая приписка действий в функцию какбы же недоступна :)

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

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

п.с.
а почему низя использовать нативки из common.ai???
если их подписать в код - варик не грузит мапу
хотя ведь ясно, что эти нативки гдето есть ))))
так хотелось для движения снарядов написать:

Код:
function lalala takes nothing returns nothing
call ForGroup(...)
call Sleep(.2)
endfunction

...

call StartThread(function lalala)


мб надо чёто особохитрое провернуть? )
Старый 17.03.2009, 17:02
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
вроде как))))
Цитата:
а разве варик свой JASS не компилирует?
те кто понимают, такие вопросы не задают...
Цитата:
вот JAVA - оно же перед запуском компилируется - а разве варик свой JASS не компилирует? )))
при чем тут жава? Java и JavaScript - две разные вещи... нет, не компилирует

потому что под нативки из c.ai не существует интерфейса
Старый 17.03.2009, 17:28
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
я думал это варик не исчет в прямом смысле слова оО

да, он узнает его хендл на екстрасенсорном уровне. хотя слово поиск тут не подходит, скорее "получение дескриптора" тут уместнее

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

Цитата:
эм, ForGroup выигрывает перед кешем

лол? вы любите больше бананы или рисовать? т.е. перебор группы сравнивать с кешем бесмысленно...

Цитата:
о джазз написано лишь, что это удобная чудоштука, которая и есть на самом деле триггеры

2 тебе вовачка за чтение. во первых там написанно еще 9000 разных вещей о жасс, во вторых тригеры есть жасс, а не наоборот

Цитата:
а почему низя использовать нативки из common.ai???
если их подписать в код - варик не грузит мапу
хотя ведь ясно, что эти нативки гдето есть ))))


они норм работают в .аи скриптах
Старый 17.03.2009, 21:14
Elf_Stratigo

offline
Опыт: 4,699
Активность:
Цитата:
9000 разных вещей о жасс

блин, я не это имел ввиду...

там в основном всё о том, как сделать то, что нужно, но нету почти ничего, как это реализуется в самом варике...


Цитата:
потому что под нативки из c.ai не существует интерфейса

Цитата:
они норм работают в .аи скриптах


видать тут телепатов воопще нет )))
я о статье "[Alternative WarCraftIII] Каких функций вам не хватает в Jass? "
эти функции ведь описаны в какойто длл-ке, и варик эту ддл-ку грузит, т.к. она входит в "стандартный комплект"
дык можно куданибудь подписать
native Sleep takes real s returns nothing
и после этого оно бы работало? )

и ещё глупый вопрос:
если изменить константу
constant integer JASS_MAX_ARRAY_SIZE = 8192
сработает?

ещё где в версии варика 1.14 тоже пробовал ся в волд едиторе, помню, макс количество предметов в инвентаре было 8 !!!

в 1.21 - 1.22 к сожалению как не пытался, не смог найти - где убить предел на 6???
constant integer bj_MAX_INVENTORY = 6
мне придётся написать свой blizzard.j и запихнуть в мапу, чтобы у меня опять стало макс 8 итемов?
или близы воопще убрали поддержку 8 предметов???
Старый 18.03.2009, 16:34
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
я о статье "[Alternative WarCraftIII] Каких функций вам не хватает в Jass? "
эти функции ведь описаны в какойто длл-ке, и варик эту ддл-ку грузит, т.к. она входит в "стандартный комплект"
дык можно куданибудь подписать
native Sleep takes real s returns nothing
и после этого оно бы работало? )
это не статья, а опрос общественного мнения, затеянный мной. Да, они описаны в game.dll, но порта на *.j скрипты они не имеют, только на *.ai, да и вообще этот порт вряд ли возможен ибо они работают в разных "плоскостях"
Цитата:
если изменить константу
constant integer JASS_MAX_ARRAY_SIZE = 8192
сработает?
нет
Цитата:
ещё где в версии варика 1.14 тоже пробовал ся в волд едиторе, помню, макс количество предметов в инвентаре было 8 !!!
дезинформация
Цитата:
мне придётся написать свой blizzard.j и запихнуть в мапу, чтобы у меня опять стало макс 8 итемов?
или близы воопще убрали поддержку 8 предметов???
никакие изменения скрипта не помогут, принципиальная проблема в том что у абилки инвентаря фиксированный кусок памяти под 6 ячеек, что описано хардкодом в game.dll. Там ее никогда не было.
Старый 18.03.2009, 16:44
Elf_Stratigo

offline
Опыт: 4,699
Активность:
Цитата:
дезинформация

ну мб это 4 года назад было - помню, что основа абилки - не геройская, а кодойническая оО

thx :)
Старый 18.03.2009, 18:47
Toadcop

offline
Опыт: 54,313
Активность:
Elf_Stratigo loop по массиву быстрей ForGroup()
Sleep как таковое уныло...
и кол итемов в дефолтном инве не играет роли ибо он и так говно лутче сделать свою систему итемов.
Старый 18.03.2009, 21:16
NETRAT

offline
Опыт: 83,712
Активность:
Toadcop свою систему итемов было бы намного легче делать если бы инвентарь был безразмерный =\
Старый 19.03.2009, 11:37
Toadcop

offline
Опыт: 54,313
Активность:
NETRAT у меня иное мнение на эту тему. так что это не важно.
Старый 19.03.2009, 13:05
Ответ

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

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

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

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



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