Soul killer
offline
Опыт:
320Активность: |
Типы переменных?
Создал глобальную переменную типа "Способность" и локальную типа "ability". При попытке присвоить значение одной переменной другой компилятор говорит, что типы переменных не совпадают. Если это не одни и тот же тип, как будет "Способность" на языке jass? |
01.04.2006, 20:19 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Цитата:
Во-первых не компилятор... Ошибка скорее в другом месте... Ты поставил перед глобальной индекс udg_ ? |
|
01.04.2006, 20:33 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Soul killer
offline
Опыт:
320Активность: |
Ошибка показывается именно в строчке "set a = udg_ability", говорит "несовпадение типов при присвоении". a - локальная переменная типа ability, а ability - глобальная типа Способность |
01.04.2006, 21:03 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Джасс парсер в Варе кривой... попробуй поискать ошибку в остальном коде или пересоздай триггер... а лучше выложи ошибочный кусок кода, можить вместе найдем чего... |
01.04.2006, 21:30 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Soul killer
offline
Опыт:
320Активность: |
суть в том, что когда колдун кастует огненную стрелу, после того, как стрела достигает цели, эта цель получает способность "Дух" (это одно из упражнений в статье про локальные переменные :))
function Trig_Banish_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'ANfb' ) ) then return false endif return true endfunction function Trig_Banish_Actions takes nothing returns nothing
local ability a local unit u set udg_unit = GetSpellTargetUnit() set u = udg_unit call TriggerSleepAction( ( DistanceBetweenPoints(GetUnitLoc(GetSpellAbilityUnit()), GetUnitLoc(GetSpellTargetUnit())) / 1000.00 ) ) set udg_unit = u set udg_ability = 'Aeth' call UnitAddAbilityBJ( udg_ability, udg_unit ) set u = udg_unit set a = udg_ability <-- здесь появляется ошибка call TriggerSleepAction( 4.00 ) set udg_ability = a set udg_unit = u <-- и здесь тоже call UnitRemoveAbilityBJ( udg_ability, udg_unit ) endfunction =========================================================================== function InitTrig_Banish takes nothing returns nothing set gg_trg_Banish = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Banish, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Banish, Condition( function Trig_Banish_Conditions ) ) call TriggerAddAction( gg_trg_Banish, function Trig_Banish_Actions ) endfunction |
01.04.2006, 23:16 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
Soul killer дело в том что есть разница между ability и abilityID, то есть когда ты делаешь set udg_ability = 'Aeth' это несоответствие типов, ибо udg_ability имеет тип ability а 'Aeth' имеет тип abilityID(или integer что впринципе один фиг)
|
01.04.2006, 23:32 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Soul killer
offline
Опыт:
320Активность: |
А как первести тип abilityID в ability :?
Или как получить вышеупомянутый результат иным способом? |
01.04.2006, 23:38 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
Soul killer, просмотри целоисчисленную самой способности в редакторе объектов (Ctrl+D - переводят в режим просмотраитипов Ид). Ид номер представлен скольки-то там битным целым, так что буква А означает 10, В - 11 и т.д. Способности начинаются с буквы А, баффы с В, а предметы и юниты - I и U соответственно.
FellGuard добавил: Soul killer, можно упростить If у тебя в коде. Например, Код:
упрощается до Код:
FellGuard добавил: Ещё хорошо бы тебе поуничтожать локации, но ты и сам потом до этого дойдёш. |
02.04.2006, 09:33 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zibada
offline
Опыт: отключен
|
local integer a и все. в редакторе триггеров, насколько я помню, работы с типом ability нет вообще (хотя в джассе он появился с версии 1.13 что ли...), там юзаются только инты. по крайней мере, если что-то имеет значение 'Axxx' - это обычный integer, просто так записанный =) соответственно, попытки его привести к каким-то ссылочным типам ничего хорошего не дадут. |
02.04.2006, 12:40 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Soul killer
offline
Опыт:
320Активность: |
Всем большое спасибо, пойду тренироватья дальше :) |
02.04.2006, 15:13 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|