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

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

Закрытая тема
 
Matrix_UA
Kicked by ZlaYa1000
offline
Опыт: 512
Активность:
DamageUnitOverTime
Система с помощью которой можно не тока дамаджить через время но и создавать спецефекты а также возможность нестиковать дамаг!

+
1) Система юзает сруктурі а не кеш
2) Возможжность добавлять спецеффекти
3) Возможность нестиковать дамаг (полезная штука в спеллах)

-
1) Нужно Jassnewgenpack
2) Нужно иметь CSData+CSSafety

Код:
library DamageTargetOverTime uses CSSafety
private function H2I takes handle h returns integer
    return h
    return 0
endfunction
private struct data
unit c
widget u
timer t
real dmg
boolean attack
boolean ranged
integer DamageType
integer AttackType
integer WeaponType
real runned
real duration
real howoften
string Effect
string where
string stack
effect e
static method create takes unit c, widget u, real dmg, boolean attack, boolean ranged, integer AttackType, integer DamageType, integer WeaponType, real duration, real howoften, string stack, string Effect, string where returns data
    local data dat = data.allocate()
    local data d = GetCSData(u)
    if stack!=null and stack==d.stack then
       call data.destroy(d)
    endif
    set dat.t = NewTimer()
    set dat.u = u
    set dat.c = c
    set dat.dmg = dmg
    set dat.attack=attack
    set dat.ranged=ranged
    set dat.AttackType=AttackType
    set dat.DamageType=DamageType
    set dat.WeaponType=WeaponType
    set dat.duration = duration
    set dat.howoften=howoften
    set dat.Effect=Effect
    set dat.where=where
    set dat.stack=stack
    set dat.runned=0
    if (Effect!=null or Effect!="") and (where!=null or where!="") then
       set dat.e=AddSpecialEffectTarget(Effect,u,where)
    endif
    call SetCSData(dat.t,dat)
    call SetCSData(u,dat)
    return dat
endmethod
method onDestroy takes nothing returns nothing
call PauseTimer(.t)
call ReleaseTimer(.t)
call DestroyEffect(.e) 
endmethod
endstruct
private function Child takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local data dat = GetCSData(t)
    set dat.runned=dat.runned+dat.howoften
    if dat.runned>=dat.duration or GetWidgetLife(dat.u)<=.405 then
       call data.destroy(dat)
    else
       call DestroyEffect(dat.e)
       set dat.e=AddSpecialEffectTarget(dat.Effect,dat.u,dat.where)
       call UnitDamageTarget(dat.c, dat.u, dat.dmg, dat.attack, dat.ranged, ConvertAttackType(dat.AttackType), ConvertDamageType(dat.DamageType), ConvertWeaponType(dat.WeaponType))
       call SetCSData(t,dat)
    endif
endfunction
function DamageOverTimeEx takes unit whichUnit, widget target, real amount, boolean attack, boolean ranged, attacktype AttackType, damagetype DamageType, weapontype WeaponType, real duration, real howoften,string stack, string Effect, string where returns nothing
call TimerStart(data.create(whichUnit, target,amount,attack,ranged, H2I(AttackType), H2I(DamageType),H2I(WeaponType), duration, howoften,stack, Effect, where).t, howoften, true, function Child)
endfunction
function DamageOverTime takes unit whichUnit, widget target, real amount, attacktype AttackType, damagetype DamageType, real duration, real howoften returns nothing
call TimerStart(data.create(whichUnit, target,amount,true,false, H2I(AttackType), H2I(DamageType), 0, duration, howoften,null,"","").t, howoften, true, function Child)
endfunction
endlibrary

Download DamageUnitOverTime
Старый 09.07.2008, 11:35
alexkill

offline
Опыт: 18,872
Активность:
Расскажи, пожалуйста: в чем, собственно, преимущество структур перед кэшем?
На сайте вообще ничего не нашел о них... (
Старый 09.07.2008, 11:46
Matrix_UA
Kicked by ZlaYa1000
offline
Опыт: 512
Активность:
alexkill кеш очень медленный и багнутый - может вылететь игра ит.п. если что то пойдет не так
Старый 09.07.2008, 11:53
ScorpioT1000
Работаем
offline
Опыт: отключен
И че это за говно? Закрыто.
Старый 09.07.2008, 12:39
Закрытая тема

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

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

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

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



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