KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
Проблема с jass спелом
Уже 3й час сижу над ним, и ничерта не получается.Спел то частично работает, то не работает вообще.
Суть спела в чем: При атаке у башни есть 10% шанс отравить противника. Яд наносит 50 ед. урона в сек. Время действия яда - 4 сек. Если под действием этого эффекта воин умрет (не обязательно от самого эффекта), то всем близстоящим войнам нанесется 250 ед. урона. Я пытался сделать без использования глобалок, но тогда у меня не исчезал эффект яда. Впихнул глобалку - перестало работать все. Помогите плз. » раскрыть Код:
|
04.02.2012, 22:20 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hares
полупротосс
offline
Опыт:
6,966Активность: |
KPOKODIL:
Страшная ошибка здесь. Ты код этой ф-ии читал? Но ещё большая ошибка в том, что ты забыл цикл. К тому же вообще непонятно,зачем ты ввёл группу. Плюс ещё: Эта ф-ия дамажит по всем юнитам в области. ПО ВСЕМ. И ты не удаляешь спецэффекты.
А вот ошибка, почему не работает спелл:
((код
globals
group udg_SOPGroup = CreateGroup() endglobals )) У тебя группа не создавалась, и код, дойдя до точки, где юнит аттачится к группе, вылетает. Hares добавил:
Итого где-то так:
» Разверни меня!
((код
function Bool2 takes nothing returns boolean
local unit u = GetFilterUnit() if IsPlayerAlly(GetOwningPlayer(GetSpellAbilityUnit()), GetOwningPlayer(u)) then set u = null return false elseif GetOwningPlayer(GetSpellAbilityUnit()) == GetOwningPlayer(u) then set u = null return false elseif IsUnitType(u, UNIT_TYPE_STRUCTURE) set u = null return false elseif IsUnitType(u, UNIT_TYPE_MECHANICAL) set u = null return false elseif GetWidgetLife(u) < 0.405 set u = null return false endif set u = null return true endfunction function Bool1 takes nothing returns boolean
if ( not(GetRandomReal(0, 100.00) <= 10.00) ) then return false endif if ( not(GetUnitAbilityLevelSwapped('A001', GetAttacker()) > 0) ) then return false endif if ( not ( IsUnitInGroup(GetAttackedUnitBJ(), udg_SOPGroup) == false ) ) then return false endif return true endfunction function SOPActions takes nothing returns nothing if (not(Bool1())) then return local unit at = GetAttacker() local unit tg = GetAttackedUnitBJ() local effect e = AddSpecialEffectTargetUnitBJ("overhead", tg , "Abilities\\Spells\\Other\\Parasite\\ParasiteTarget.mdl") local integer time = 0 local group g loop exitwhen (time = 4) call UnitDamageTargetBJ(at, tg, 50.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL) call UnitDamageTarget(at, tg, 50, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS) set time = time +1 call TriggerSleepAction(1.00) endloop set tg = null set at = null set time = 0 call DestroyEffectBJ (e) if (not(IsUnitAliveBJ(tg))) set g = CreateGroup() call GroupEnumUnitsInRange(g, GetUnitX(tg), GetUnitY(tg), 200, function Bool2) loop set tg= FirstOfGroup(g) exitwhen tg == null call GroupRemoveUnit(g, tg) call UnitDamageTarget(at, tg, 250, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS) endloop call DestroyGroup(g) set g = null call RemoveSpecialEffect(AddSpecialEffectLocBJ(GetUnitLoc(tg), "EarthRender.mdx")) endif endfunction )) |
04.02.2012, 23:31 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
Hares, код проверил бы на предмет ошибок.. |
04.02.2012, 23:35 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
Цитата:
Группа нужна, чтобы повторно не использовать заклинание на юните, если на нем уже есть это заклиание Цитата:
Ну да, мне это и надо, я так и написал в описании. Щас посмотрю твой вариант кода KPOKODIL добавил: код не компилится твой, выдает ошибку Missing: Endblock |
||
04.02.2012, 23:57 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hares
полупротосс
offline
Опыт:
6,966Активность: |
KPOKODIL:
Втч. по мёртвым, по зданим, по механическим... У тебя яд разъедает бетон? - удивлён. alpha:
В общем-то нет, но, по идее, не должно быть. Hares добавил:
KPOKODIL: На чём? Hares добавил: тогда ещё такое: GroupAddUnit(udg_SOPGroup, tg) и GroupRemoveUnit(udg_SOPGroup, tg) |
05.02.2012, 00:03 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
Цитата:
а кто тебе сказал что этот спел будет вообще контактироваться со зданиями и тп? KPOKODIL добавил: Цитата:
в том то и дело, что непотно где |
||
05.02.2012, 00:12 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hares
полупротосс
offline
Опыт:
6,966Активность: |
KPOKODIL:
JassHelper (JNPG) Вам в помощь. Hares добавил: И вообще, делай с таймером. Это точнее. |
05.02.2012, 00:14 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
в общем переделал свой код, использую ваши подсказки. Теперь все работает.
Выложил код, кому интересно может глянуть. Тему мжно закрывать , всем спасибо. » раскрыть Код:
KPOKODIL добавил: Цитата:
им уже как 2 года только и пользуюсь |
|
05.02.2012, 00:28 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|