Tibia Mod
Forum zostało Przeniesione tutaj:
http://tibiamod.xaa.pl/

Zapraszam.

doCombatBeam

Zobacz poprzedni temat Zobacz następny temat Go down

doCombatBeam

Pisanie by darkes on Czw Lis 15, 2012 7:52 pm

W data/lib/050-function.lua doklejamy:
Kod:
function doCombatBeam(cid, length, time, count, combat, min, max, effect, direction, pos, efekty)
if length > 0 then
    if direction == NORTH then
        pos.y = pos.y - 1
    elseif direction == EAST then
        pos.x = pos.x + 1
    elseif direction == SOUTH then
        pos.y = pos.y + 1
    elseif direction == WEST then
        pos.x = pos.x - 1
    end
    local position, effect = {x=pos.x,y=pos.y,z=pos.z}, (efekty ~= nil and efekty[direction+1] or effect)
    if getTileThingByPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).itemid ~= 0 then
        local target = getThingFromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=STACKPOS_TOP_CREATURE}).uid
        if isCreature(target) then
            doTargetCombatHealth(cid, target, combat, min, max, CONST_ME_NONE)
        end
    end
    doSendMagicEffect(pos, effect)
    for v = count, 1, -1 do
        if v > 1 then
            addEvent(function()
                                if getTileThingByPos(position).itemid > 0 then
                                    local target_1 = getThingFromPos({x=position.x,y=position.y,z=position.z,stackpos=STACKPOS_TOP_CREATURE}).uid
                                    if target ~= target_1 and isCreature(target_1) then
                                        doTargetCombatHealth(cid, target_1, combat, min / 5, max / 3, CONST_ME_NONE)
                                    end
                                end
                                return doSendMagicEffect(position, effect)
                                end,
                                time + (150 * v),
                                position, effect, combat, min, max, target   
                            )
        else
            return addEvent(doCombatBeam, time, cid, length - 1, time, count, combat, min, max, effect, direction, pos, efekty)
        end
    end
end
return true
end 
Jak to działa? Otóż wysyła promień (Ci którzy nie wiedzą o co chodzi zapraszam do zapoznania się z czarem energy beam), który zadaje obrażenia. Czy to wszystko? Otóż nie. Ustawiamy sobie jaki efekt ma się pojawiać w zależności od strony w którą patrzy nasza postać. Dodatkowo ustalamy długość 'beama' oraz odstęp czasowy między kolejnymi efektami. Do tego wszystkiego można jeszcze ustawić kilkakrotność beama. To znaczy w jednej funkcji możemy od razu ustawić 10 beamów, każdy następujący po sobie np. co 5 sekund.

Wyjaśnię jak należy się za to zabrać. Na przykładzie:
Kod:
function onCastSpell(cid, var)
return doCombatBeam(cid, 6, 250, 4, COMBAT_DEATHDAMAGE, -100, -300, nil, getCreatureLookDirection(cid), getThingPos(cid), {CONST_ME_MORTAREA,CONST_ME_MAGIC_RED,CONST_ME_SMALLCLOUDS,CONST_ME_POFF})
end

W tym przykładzie 'beam' będzie mieć długość równą 6 sqm, każdy następny efekt będzie następować po sobie w odstępie 250ms (0.25 sekundy), 'beam' pojawiać się będzie czterokrotnie, będzie zadawać obrażenia od śmierci w zakresie 100 do 300, podczas patrzenia w górę pojawi się efekt numer 17, patrząc w prawo numer 13, w dół numer 38 oraz w lewo numer 2.
Polecam kombinować i próbować bawić się tą funkcją, można całkiem fajne efekty uzyskać.
Oraz objaśnienia:
Kod:
(cid, length, time, count, combat, min, max, effect, direction, pos, efekty) 
cid to uid gracza.
length to długość promienia
time to odstęp czasowy między efektami (w ms)
count to ilość beamów, które się uaktywnią (każdy następny w odstępstwie kilku sekund)
combat to rodzaj obrażeń
min oraz max to minimalne oraz maksymalne obrażenia
effect, jeśli chcecie jeden efekt, nieważne w którą stronę się obrócicie to w tym miejscu się go ustawia
direction ustawcie zawsze 'getCreatureLookDirection(cid)'
pos ustawcie zawsze 'getThingPos(cid)'
efekty, tutaj ustawiamy efekty, jakie będą nam towarzyszyć w zależności od strony w którą patrzy nasza postać. Wypełniamy to w ten sposób:
Kod:
{efekt_north,efekt_east,efekt_south,efekt_west}

darkes
Uploader

Liczba postów : 27
Join date : 13/11/2012

Zobacz profil autora

Powrót do góry Go down

Zobacz poprzedni temat Zobacz następny temat Powrót do góry


 
Permissions in this forum:
Nie możesz odpowiadać w tematach