pAxsIs
offline
Опыт:
2,389Активность: |
Оптимизация, критика и тд.
Это мой первый код который я именно с 0 написал... Прошу критиковать и объяснять как можно его сделать лучше, чтобы в след раз я мог это учитывать, когда писал код. Это простой код, но все же. Я пытался писать не используя БЖ функций.
((код jass
globals
unit array Units endglobals function Trig_First_act_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then return false endif return true endfunction function FCO3 takes nothing returns integer
local integer index = 0 loop set index = index + 1 exitwhen index == 8 endloop return index endfunction function Trig_First_act_Actions takes nothing returns nothing
local unit Unitof local unit Unitof2 set Unitof = GetSpellAbilityUnit() set Unitof2 = GetSpellTargetUnit() call SetUnitFacingToFaceUnitTimed( Unitof, Unitof2, 0.00 ) set udg_Units[1] = Unitof set udg_Units[2] = Unitof2 set Unitof = null set Unitof2 = null call EnableTrigger( gg_trg_Second_act ) endfunction =========================================================================== function InitTrig_First_act takes nothing returns nothing set gg_trg_First_act = CreateTrigger( ) call TriggerRegisterPlayerUnitEvent(gg_trg_First_act, Player( FCO3() ), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) call TriggerAddCondition( gg_trg_First_act, Condition( function Trig_First_act_Conditions ) ) call TriggerAddAction( gg_trg_First_act, function Trig_First_act_Actions ) endfunction )) |
29.09.2012, 20:43 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт:
8,073Активность: |
((код jass
function Trig_First_act_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then return false endif return true endfunction сжимается до function Trig_First_act_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A000' endfunction )) asesmo добавил:
((код jass
local unit Unitof local unit Unitof2 set Unitof = GetSpellAbilityUnit() set Unitof2 = GetSpellTargetUnit() переделай в local unit Unitof = GetSpellAbilityUnit() local unit Unitof2 = GetSpellTargetUnit() )) |
29.09.2012, 20:47 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
|
29.09.2012, 20:52 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
asesmo,
ок спасибо :) Hate, Долго пересматривал код, наконец, все понял)) но не понимаю зачем это? Но ты не учел, что я не спроста в глобальные перевел из локалок Я этих юнитов буду использовать в след триггере или можно без глобальных обойтись? если нельзя то вот такой код должен получиться с учетом твоих поправок. Спасибо. ((код jass
function Trig_First_act_Conditions takes nothing returns boolean
if GetSpellAbilityId() == 'A000' then call SetUnitFacingToFaceUnitTimed( GetSpellAbilityUnit(), GetSpellTargetUnit(), 0.00 ) call EnableTrigger( gg_trg_Second_act ) set udg_Units[1] = GetSpellAbilityUnit() set udg_Units[2] = GetSpellTargetUnit() endif return false
вроде верхняя строчка, которая в комментах, не нужна?! endfunction ===========================================================================
function InitTrig_First_act takes nothing returns nothing local integer index = 0 set gg_trg_First_act = CreateTrigger( ) loop call TriggerRegisterPlayerUnitEvent(gg_trg_First_act, Player( index ), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) set index = index + 1 exitwhen index == 8 endloop Я был не уверен, что можно использовать цикл в событиях call TriggerAddCondition( gg_trg_First_act, Condition( function Trig_First_act_Conditions ) ) endfunction )) Отредактировано pAxsIs, 29.09.2012 в 21:27. |
29.09.2012, 21:20 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
ты регистрируешь события, тоесть цикл регистрирует 8 событий для каждого игрока. return false потому что действия у нас в условии, а условия должны возвращать логическую переменную, поэтому ретурним фолс. ну и конечно endif нужен если без жнгп. |
29.09.2012, 21:23 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
Подправил на счет endif)
pAxsIs добавил: Но вот вопрос был в том, что может мы и возвращаем что-то, но почему false?) я этого не могу понять это может что-нибудь изменить? |
29.09.2012, 21:26 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
если действий нет, то впринципе фолс логично, если действия в триггере есть, то там уже надо по ходу дела возвращать тру или фолс, фолс = действия не запустятся, тру = запустятся. В данном случае действий нету (TriggerAddAction) т.к. мы все что нужно сделали в самом условии триггера. |
29.09.2012, 21:28 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
Hate: Понял, спасибо за объяснения! :) Jass это супер) не думал что можно будет в условии все сделать до действий(так как само название как бы намекало, что там все происходит) :) |
29.09.2012, 21:31 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт:
8,073Активность: |
вообще можно все в 1 функцию без всяких условие событие действие ) |
29.09.2012, 21:39 | #9
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
напиши как, а то я не могу понять) |
29.09.2012, 21:42 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
влад10011
offline
Опыт:
2,337Активность: |
Цитата:
это можно сделать только при инициализации триггера, но ему нужно чтобы действия происходили после каста. Hate, привёл хороший пример. Цитата:
объясню более понятно: returns boolean, означает что функция вернёт булево(boolean- логическая или булево) от return GetSpellAbilityId() == 'A000' идёт проверка- ИД способности равен 'A000'(рав код), или нет. Если да то вернёт true-истина, если нет вернёт false-лож. В условии идёт проверка на истину или лож, если истина, то делать действия, если лож, то нечего не делать. А в примере Hate, просто идёт такая же проверка, но если условия выполнились, то происходят действия прямо в условии и в конце тк у нас нет действия(в триггере) возвращаем лож. |
||
30.09.2012, 09:46 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
GUI не оптимизируется в принципе, хотите оптимизировать пишите для начала на жасс.
хотя я вам помогу
|
30.09.2012, 12:40 | #12
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
DioD:
Так я и написал на jass.. мне ведь нужно проверить каждого игрока, а не именно определенного. |
30.09.2012, 13:15 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
влад10011
offline
Опыт:
2,337Активность: |
Цитата:
Код:
|
|
30.09.2012, 13:20 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
влад10011:
У меня так и написано в последнем посте где я использовал весь код, просто я не понял к чему добавил диод, ведь уже все, что можно написали... |
30.09.2012, 13:34 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
влад10011
offline
Опыт:
2,337Активность: |
Цитата:
Цитата:
---------------------------------------------------------------------------------------------------- Цитата:
у тебя написано на 9 игроков красный-серый игрок(0-8) а у меня на всех игроков(от красного до нейтрала 0-16) |
|||
30.09.2012, 13:45 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
влад10011:
Не столь важно, но ладно, спасибо :) |
30.09.2012, 14:27 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
я очень тонко намекнул что функция всегда возвращает 8, а вы оказывается не лечитесь. |
30.09.2012, 15:17 | #18
+10/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Без кода второго триггера тут вообще не о чем говорить. |
30.09.2012, 20:05 | #19
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
pAxsIs
offline
Опыт:
2,389Активность: |
DioD:
У меня 9 игроков так то) + я спросил, что можно конкретно сделать с кодом(без намеков) ADOLF это ясно понятно, меня интересовала только оптимизация (сокращение кода) Отредактировано pAxsIs, 01.10.2012 в 01:01. |
30.09.2012, 21:14 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|