|
|
|
|
[Вопрос] Проблема с кодом
|
|
mazahan | Дата: Четверг, 16 Мая 2013, 00:22:19 | Сообщение # 1 |
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
| Недавно начал осваивать jass , не могу понять в чём код неверен?
function Trig_____________________________________029_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A00N' ) ) then return false endif return true endfunction
function Trig_____________________________________029_Actions takes nothing returns nothing set udg_varvar_d_caster = GetSpellAbilityUnit() local integer i = 200 loop exitwhen i > 1200 call CreateUnitAtLoc (1, 'h00F', GetOwningPlayer(udg_varvar_d_caster) , PolarProjectionBJ (GetUnitLoc(udg_varvar_d_caster),i,GetUnitFacing(udg_varvar_d_caster) ), bj_UNIT_FACING) set udg_varvar_d_dummy[1]= GetLastCreatedUnit() set i = i+200 endloop endfunction
//=========================================================================== function InitTrig_____________________________________029 takes nothing returns nothing set gg_trg_____________________________________029 = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_____________________________________029, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_____________________________________029, Condition( function Trig_____________________________________029_Conditions ) ) call TriggerAddAction( gg_trg_____________________________________029, function Trig_____________________________________029_Actions ) endfunction
Сообщение отредактировал mazahan - Четверг, 16 Мая 2013, 00:25:11 |
|
|
|
VampirismNewGen | Дата: Четверг, 16 Мая 2013, 00:39:37 | Сообщение # 2 |
6 уровень
Группа: Проверенные
Сообщений: 197
Награды: 0
Репутация: 103
Блокировки:
| В чем неверен? А что работает не так? Добавлено (16 Мая 2013, 00:39:37) --------------------------------------------- И перед тем как конвертировать триггеры в текст, убирай у них русские имена. А то режет глаза такое: Цитата InitTrig_____________________________________029
|
|
|
|
lawson | Дата: Четверг, 16 Мая 2013, 00:55:26 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| все нормально код работает!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
mazahan | Дата: Четверг, 16 Мая 2013, 09:07:36 | Сообщение # 4 |
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
| Но карта не грузится Добавлено (16 Мая 2013, 09:03:19) --------------------------------------------- Именно после его написания Добавлено (16 Мая 2013, 09:07:36) --------------------------------------------- И я проверил , удалив его , без него всё норм
|
|
|
|
SirNikolas | Дата: Четверг, 16 Мая 2013, 10:49:48 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата (mazahan) local integer i = 200 Локальные переменные в JASS2 должны находиться в верху функции.
|
|
|
|
mazahan | Дата: Четверг, 16 Мая 2013, 15:43:28 | Сообщение # 6 |
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
| function Trig_Tr_029_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A00N' ) ) then return false endif return true endfunction
function Trig_Tr_029_Actions takes nothing returns nothing local integer i = 200 set udg_varvar_d_caster = GetSpellAbilityUnit() loop exitwhen i > 1200 call CreateUnitAtLoc (1, 'h00F', GetOwningPlayer(udg_varvar_d_caster) , PolarProjectionBJ (GetUnitLoc(udg_varvar_d_caster),i,GetUnitFacing(udg_varvar_d_caster) ), bj_UNIT_FACING) set udg_varvar_d_dummy[1]= GetLastCreatedUnit() set i = i+200 endloop endfunction
//=========================================================================== function InitTrig_029 takes nothing returns nothing set gg_trg_029 = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Tr_029, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Tr_029, Condition( function Trig_Tr_029_Conditions ) ) call TriggerAddAction( gg_trg_Tr_029, function Trig_Tr_029_Actions ) endfunction
Вот , всё ровно не катит.
|
|
|
|
Diabfall | Дата: Четверг, 16 Мая 2013, 17:01:02 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Цитата (mazahan) set gg_trg_029 = CreateTrigger( ) Цитата (mazahan) gg_trg_Tr_029
|
|
|
|
SirNikolas | Дата: Четверг, 16 Мая 2013, 17:43:08 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата (mazahan) set udg_varvar_d_dummy[1]= GetLastCreatedUnit() Здесь точно должна быть единица?
|
|
|
|
Bru | Дата: Четверг, 16 Мая 2013, 18:20:40 | Сообщение # 9 |
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1960
Блокировки:
| Цитата if ( not ( GetSpellAbilityId() == 'A00N' ) ) then return false endif return true получше Цитата return GetSpellAbilityId() == 'A00N'
|
|
|
|
Ty3uK | Дата: Четверг, 16 Мая 2013, 19:04:33 | Сообщение # 10 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Цитата (mazahan) Недавно начал осваивать jass
|
|
|
|
Bru | Дата: Четверг, 16 Мая 2013, 19:36:16 | Сообщение # 11 |
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1960
Блокировки:
| call CreateUnitAtLoc (1 native CreateUnitAtLoc takes player id ты уверен, что хочешь создать синему игроку? и вообще тебе надо муи?
Добавлено (16 Мая 2013, 19:35:05) --------------------------------------------- Код function Trig_looptrg_Actions takes nothing returns nothing local integer i = 200 local real x local real y if (GetSpellAbilityId() == 'A00N') then set udg_varvar_d_caster = GetSpellAbilityUnit() loop exitwhen i > 1200 x = GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i * Cos(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD) y = GetLocationY(GetUnitLoc(udg_varvar_d_caster)) + i * Sin(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD) call CreateUnitAtLoc (GetOwningPlayer(udg_varvar_d_caster), 'h00F', Location(x, y), bj_UNIT_FACING) set udg_varvar_d_dummy[1] = bj_lastCreatedUnit set i = i+200 endloop endif endfunction
//=========================================================================== function InitTrig_looptrg takes nothing returns nothing set gg_trg_looptrg = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_looptrg, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions ) endfunction
Подулучшил. И всё-таки. Цитата (SirNikolas) Здесь точно должна быть единица Добавлено (16 Мая 2013, 19:36:16) --------------------------------------------- Ну и замечание, Цитата (Bru) udg_varvar_d_caster длинновато название переменной
Сообщение отредактировал Bru - Четверг, 16 Мая 2013, 19:35:23 |
|
|
|
Diabfall | Дата: Четверг, 16 Мая 2013, 19:51:49 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Цитата (Bru) local integer i = 200 local real x Цитата (Bru) GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i Чё в последних JNGP можно сразу real и integer складывать?
Сообщение отредактировал Diabfall - Четверг, 16 Мая 2013, 20:20:06 |
|
|
|
Ty3uK | Дата: Четверг, 16 Мая 2013, 20:10:51 | Сообщение # 13 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Diabfall, их всегда можно было складывать, и не только в JNGP. Но неявное приведение типов - плохо.
|
|
|
|
Diabfall | Дата: Четверг, 16 Мая 2013, 20:19:54 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Цитата (Ty3uK) Diabfall, их всегда можно было складывать, и не только в JNGP. Но неявное приведение типов - плохо. У меня на сборке от скорпа вроде как ошибку выдавало. А чем это плохо?
|
|
|
|
Ty3uK | Дата: Четверг, 16 Мая 2013, 20:23:41 | Сообщение # 15 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Начиная от ошибок округления и заканчивая странными результатами. Плюс, на это идут затраты вычислительной мощности.
|
|
|
|
Bru | Дата: Четверг, 16 Мая 2013, 21:47:42 | Сообщение # 16 |
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1960
Блокировки:
| Diabfall, ну как бы есть целое число и число с точкой когда их нельзя было сложить?
|
|
|
|
mazahan | Дата: Четверг, 16 Мая 2013, 23:54:04 | Сообщение # 17 |
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
| Цитата (SirNikolas) Здесь точно должна быть единица?
Какая разница , это массив , без него пробовал , тоже самое. Реальную уже убрал
Цитата (Bru) call CreateUnitAtLoc (1 native CreateUnitAtLoc takes player id ты уверен, что хочешь создать синему игроку? и вообще тебе надо муи?
Добавлено (16 Мая 2013, 19:35:05) --------------------------------------------- Код function Trig_looptrg_Actions takes nothing returns nothing local integer i = 200 local real x local real y if (GetSpellAbilityId() == 'A00N') then set udg_varvar_d_caster = GetSpellAbilityUnit() loop exitwhen i > 1200 x = GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i * Cos(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD) y = GetLocationY(GetUnitLoc(udg_varvar_d_caster)) + i * Sin(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD) call CreateUnitAtLoc (GetOwningPlayer(udg_varvar_d_caster), 'h00F', Location(x, y), bj_UNIT_FACING) set udg_varvar_d_dummy[1] = bj_lastCreatedUnit set i = i+200 endloop endif endfunction
//=========================================================================== function InitTrig_looptrg takes nothing returns nothing set gg_trg_looptrg = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_looptrg, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions ) endfunction
Подулучшил. И всё-таки. Цитата (SirNikolas) Здесь точно должна быть единица Добавлено (16 Мая 2013, 19:36:16) --------------------------------------------- Ну и замечание, Цитата (Bru) udg_varvar_d_caster
длинновато название переменной
Мне не нужен готовый код. Мне нужно понять , почему не работает мой код. Насчёт переменной , какая разница?Кроме той , что дольше писать.
Добавлено (16 Мая 2013, 23:49:16) --------------------------------------------- И да , причём тут синий игрок? Юнит создаётся для игрока владеющим varvar_d_caster.
Добавлено (16 Мая 2013, 23:50:25) --------------------------------------------- Цитата (Bru) Diabfall, ну как бы есть целое число и число с точкой когда их нельзя было сложить?
Сложить то можно наверняка , но если в результате должно получиться целое , а получиться реальное , то хз что будет:)
Добавлено (16 Мая 2013, 23:51:40) --------------------------------------------- И да чем лучше
x = GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i * Cos(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD) y = GetLocationY(GetUnitLoc(udg_varvar_d_caster)) + i * Sin(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD) call CreateUnitAtLoc (GetOwningPlayer(udg_varvar_d_caster), 'h00F', Location(x, y), bj_UNIT_FACING)
От более короткого
call CreateUnitAtLoc (1, 'h00F', GetOwningPlayer(udg_varvar_d_caster) , PolarProjectionBJ (GetUnitLoc(udg_varvar_d_caster),i,GetUnitFacing(udg_varvar_d_caster) ), bj_UNIT_FACING)
Добавлено (16 Мая 2013, 23:52:17) --------------------------------------------- Цитата (Diabfall) set gg_trg_029 = CreateTrigger( )
Цитата (mazahan) gg_trg_Tr_029
Исправил , не то)
Добавлено (16 Мая 2013, 23:54:04) --------------------------------------------- Цитата (Ty3uK) Недавно начал осваивать jass
Именно , и для этого я создал тему здесь , чтобы мне помогли.Не понял суть твоего сообщения.
Сообщение отредактировал mazahan - Четверг, 16 Мая 2013, 23:57:50 |
|
|
|
Ty3uK | Дата: Пятница, 17 Мая 2013, 08:48:52 | Сообщение # 18 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Я не тебе писал, а Бруталусу.
|
|
|
|
sumert | Дата: Пятница, 17 Мая 2013, 09:22:45 | Сообщение # 19 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| GetUnitLoc разве не вызывает утечки? Вообще можно же объеденить строчки присваивания переменной с созданием юнита: set udg_varvar_d_dummy[1] = CreateUnitAtLoc( GetOwningPlayer(udg_varvar_d_caster), 'h00F'l, Location(x, y), bj_UNIT_FACING))
Сообщение отредактировал sumert - Пятница, 17 Мая 2013, 09:24:17 |
|
|
|
Волчачка | Дата: Пятница, 17 Мая 2013, 10:01:07 | Сообщение # 20 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата (sumert) set udg_varvar_d_dummy[1] = CreateUnitAtLoc( GetOwningPlayer(udg_varvar_d_caster), 'h00F'l, Location(x, y), bj_UNIT_FACING)) лол Цитата (sumert) GetUnitLoc Вызывает, как и Ведь он тоже точку создаёт) set udg_varvar_d_dummy[1] = CreateUnit(GetOwningPlayer(udg_varvar_d_caster), 'h00F', x, y, 270.) ^ Проще так будет.
Добавлено (17 Мая 2013, 10:01:07) --------------------------------------------- Код function Trig_looptrg_Actions takes nothing returns nothing local integer i = 200 local unit c = GetSpellAbilityUnit() local real x local real y local player p = GetOwningPlayer(c) loop exitwhen i > 1200 x = GetUnitX(c) + I2R(i) * Cos(GetUnitFacing(c) * bj_DEGTORAD) y = GetUnitY(c) + I2R(i) * Sin(GetUnitFacing(c) * bj_DEGTORAD) call CreateUnit(p 'h00F', x, y, 270.) set i = i+200 endloop set c = null set p =null endfunction
function Trig_looptrg_Condition takes nothing returns boolean return GetSpellAbilityId() == 'A00N' endfunction
//=========================================================================== function InitTrig_looptrg takes nothing returns nothing local integer i = 0 set gg_trg_looptrg = CreateTrigger( ) call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions ) call TriggerAddCondition( gg_trg_looptrg, Condition(function Trig_looptrg_Condition) ) loop call TriggerRegisterPlayerUnitEvent( gg_trg_Regen, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null ) set i = i + 1 exitwhen i > 11 endloop endfunction
Сообщение отредактировал Волчачка - Пятница, 17 Мая 2013, 10:18:02 |
|
|
|
lawson | Дата: Пятница, 17 Мая 2013, 10:15:38 | Сообщение # 21 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| хавнокодеры!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 17 Мая 2013, 10:20:21 |
|
|
|
Волчачка | Дата: Пятница, 17 Мая 2013, 10:25:01 | Сообщение # 22 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| А можно ещё так: Код function Trig_looptrg_Actions takes nothing returns nothing local integer i = 200 local unit c = GetSpellAbilityUnit() local real x local real y local real F = GetUnitFacing(c) local real cF = Cos(F * bj_DEGTORAD) local real sF = Sin(F * bj_DEGTORAD) local player p = GetOwningPlayer(c) loop exitwhen i > 1200 set F = I2R(i) x = GetUnitX(c) + F * cF y = GetUnitY(c) + F * sF call CreateUnit(p 'h00F', x, y, 270.) set i = i+200 endloop set c = null set p =null endfunction
function Trig_looptrg_Condition takes nothing returns boolean return GetSpellAbilityId() == 'A00N' endfunction
//=========================================================================== function InitTrig_looptrg takes nothing returns nothing local integer i = 0 set gg_trg_looptrg = CreateTrigger( ) call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions ) call TriggerAddCondition( gg_trg_looptrg, Condition(function Trig_looptrg_Condition) ) loop call TriggerRegisterPlayerUnitEvent( gg_trg_Regen, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null ) set i = i + 1 exitwhen i > 11 endloop endfunction Цитата (lawson) гавнокодеры! Молодец.Добавлено (17 Мая 2013, 10:25:01) ---------------------------------------------
Цитата (lawson) хавнокодеры! Цитата (lawson) Сообщение отредактировал lawson - Пятница, 17 Май 2013, 10:20:21 Double Molodec
|
|
|
|
Bru | Дата: Пятница, 17 Мая 2013, 15:05:38 | Сообщение # 23 |
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1960
Блокировки:
| Цитата (mazahan) Мне не нужен готовый код. Мне нужно понять , почему не работает мой код. Потому что он толст и нарушена логика. Тебе предлагают решения А ты говоришь Херня
|
|
|
|
mazahan | Дата: Пятница, 17 Мая 2013, 16:32:37 | Сообщение # 24 |
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
| Цитата (Bru) Потому что он толст и нарушена логика. Тебе предлагают решения А ты говоришь Херня Я не говорю херня) Где нарушена логика?Я этого от вас и добиваюсь)
|
|
|
|
Волчачка | Дата: Пятница, 17 Мая 2013, 17:42:22 | Сообщение # 25 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| mazahan, тебе просто создать несколько даммиков в заданном направлении, или ты будешь их использовать ещё?
|
|
|
|
|
|
|
|
|
|
|