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

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

Ответ
 
Ghostlolka3

offline
Опыт: 142
Активность:
Копьё на JASS с использованием CASH
» Код

Код:
globals
    gamecache gc=null
endglobals

function H2I takes handle h returns integer
    return h
    return 0
endfunction

function I2U takes integer i returns unit
    return i
    return null
endfunction

function Range takes nothing returns real
    return 1200.0
endfunction

function DamageValue takes nothing returns real
    return 3*I2R(GetUnitAbilityLevel(GetTriggerUnit(),'A006'))+100
endfunction

function AOE takes nothing returns real
    return I2R(GetUnitAbilityLevel(GetTriggerUnit(),'A006'))+50
endfunction

function Trig_Arrow_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A006'
endfunction

function Trig_Arrow_filter takes nothing returns boolean
    return IsPlayerEnemy(GetOwningPlayer(GetTriggerUnit()), GetOwningPlayer(GetFilterUnit())) and GetWidgetLife(GetFilterUnit()) > 0.405 and not IsUnitType(GetFilterUnit(), UNIT_TYPE_FLYING)
endfunction

function DAMAGE takes real tX,real tY,unit caster returns nothing
    local unit N
    local group g
    call GroupEnumUnitsInRange(g, tX, tY, AOE(),Condition(function Trig_Arrow_filter) )
    loop
        set N= FirstOfGroup(g)
        exitwhen N == null
        call UnitDamageTarget(caster, N, DamageValue(), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
        call GroupRemoveUnit(g, N)
    endloop
    call DestroyGroup(g)
    set N=null
endfunction

function Move_spear takes nothing returns nothing
    local string s = I2S(H2I(GetExpiredTimer()))
    local gamecache gc = udg_AbilityCache
    local real cX = GetStoredReal(gc, s, "cX")
    local real cY = GetStoredReal(gc, s, "cY")
    local real tX = GetStoredReal(gc, s, "tX")
    local real tY = GetStoredReal(gc, s, "tY")
    local unit f=I2U(GetStoredInteger(gc,s,"dummy"))
    local unit caster=I2U(GetStoredInteger(gc,s,"caster"))
    local group g=CreateGroup()
    local unit N
    call SetUnitPosition(f, 60+40*Cos(GetUnitFacing(f)), 60+40*Sin(GetUnitFacing(f)))
    call GroupEnumUnitsInRange(g, tX, tY, 200,Condition(function Trig_Arrow_filter))
    set N= FirstOfGroup(g)
    if(N!=null or SquareRoot((cX-tX)*(cX-tX))+((cY-tY)*(cY-tY))>Range()) then 
        call DAMAGE(tX,tY,caster)
        call DestroyTimer(GetExpiredTimer())
        call RemoveUnit(f)
        call FlushStoredMission(gc, s)
    endif
    set s=null
    set gc=null
    set cX=0
    set cY=0
    set tX=0
    set tY=0
    set f=null
    set caster=null
    set N=null
    call DestroyGroup(g)
endfunction

function Trig_Arrow_Actions takes nothing returns nothing
    local unit caster=GetTriggerUnit()
    local unit dummy=CreateUnit(GetOwningPlayer(caster),'u000',GetUnitX(caster),GetUnitY(caster  ),GetUnitFacing(caster))
    local gamecache gc = udg_AbilityCache
    local timer t = CreateTimer()
    local string s = I2S(H2I(t))
    call StoreReal(gc, s, "cX", GetUnitX(caster))
    call StoreReal(gc, s, "cY", GetUnitY(caster))
    call StoreReal(gc, s, "tX", GetUnitX(caster))
    call StoreReal(gc, s, "tY", GetUnitY(caster))
    call StoreInteger(gc,s,"dummy",H2I(dummy))
    call StoreInteger(gc,s,"caster",H2I(caster))
    call TimerStart(t, 0.05, true, function Move_spear)
    set caster=null
    set dummy=null
    set gc=null
    set t=null
    set s=null
endfunction

//===========================================================================
function InitTrig_Arrow takes nothing returns nothing
    set gg_trg_Arrow = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Arrow, EVENT_PLAYER_UNIT_SPELL_FINISH )
    call TriggerAddCondition( gg_trg_Arrow, Condition( function Trig_Arrow_Conditions ) )
    call TriggerAddAction( gg_trg_Arrow, function Trig_Arrow_Actions )
endfunction


Игра просто вылетает. В синтаксисе ругается на кэш. Не понимаю почему.
Старый 29.12.2013, 22:18
Holocauster
INRI
offline
Опыт: 4,249
Активность:
И в чем собственно вопрос?
Старый 29.12.2013, 22:22
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
хеш-таблицы или структуры не легче юзать?
Buulichkaa добавил:
RB уже не существует
Старый 29.12.2013, 22:24
Ghostlolka3

offline
Опыт: 142
Активность:
Цитата:
Сообщение от Buulichkaa
хеш-таблицы или структуры не легче юзать?

__Buulichkaa добавил:__
RB уже не существует

Не понимаю зачем статьи оставили. 7 часов на это потратил -_-.
Не могли бы вы скинуть статьи прочитав которые я мог бы реализовать мою задумку:
1) Летит копьё
2) Как только оно соприкасается с каким-либо юнитом либо пролетает всё своё растояние. Оно взрывается и наносит урон в зависимости от интеллекта.
3) Всё на джасс.
Старый 29.12.2013, 22:29
DioD

offline
Опыт: 45,134
Активность:
Не понимаю зачем статьи оставили. 7 часов на это потратил -_-.
список статей которые Вы читали, если список будет я задам пару вопросов и если всё окей переделаю код, вернее вы сами его сможете переделать.
Старый 29.12.2013, 22:35
Ghostlolka3

offline
Опыт: 142
Активность:
Старый 29.12.2013, 22:40
ScorpioT1000
Работаем
offline
Опыт: отключен
а при чем тут наличные?
Старый 29.12.2013, 22:53
DioD

offline
Опыт: 45,134
Активность:
вот например замечательная статья, да еще и свежая, почему вы читали всякое старьё (которое имеет историческую ценность) а не свежие статьи?
Старый 29.12.2013, 22:58
ScorpioT1000
Работаем
offline
Опыт: отключен

Отредактировано SSrunX, 30.12.2013 в 10:16.
Старый 29.12.2013, 22:59
Ghostlolka3

offline
Опыт: 142
Активность:
Цитата:
Сообщение от DioD
http://xgm.ru/p/wc3/hashtable

вот например замечательная статья, да еще и свежая, почему вы читали всякое старьё (которое имеет историческую ценность) а не свежие статьи?

Помню, что когда увлекался этим раньше делал всё через RB и кэш. Да и когда решил вспомнить даже не подумал о том, что они устарели. Спасибо вам большое за помощь.
[+] 1 пункт от SSrunX

Отредактировано SSrunX, 30.12.2013 в 10:16.
Старый 29.12.2013, 23:14
Ответ

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

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

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

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



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