Forum nie tylko o Tibii i OTS...

Nie tylko o Tibii i OTS...


#1 2012-01-11 13:38:25

Sassin

http://i38.tinypic.com/19pb0n.gif

Zarejestrowany: 2012-01-11
Posty: 11

Bariera magiczna - hit dla orsh OTSów.

Zrobienie Magicznej Bariery trochę mi zajęło. Tak więc proszę o łagodne komentarze.

data\creaturescripts\scripts tworzymy nowy plik o nazwie absorb.lua, do niego wklej cały kod:

Kod:

function onStatsChange(cid, attacker, type, combat, value) 
        if getCreatureStorage(cid, STORAGE_ABSORB-1) == 1 then 
            doCreatureSetStorage(cid, STORAGE_ABSORB-1, -1) 
            return true 
        end 
local combats = 
{ 
[1] = {1}, 
[2] = {2}, 
[4] = {3}, 
[8] = {4}, 
[32] = {5}, 
[64] = {6}, 
[512] = {7}, 
[1024] = {8}, 
[2048] = {9} 
} 
local COMBATS = combats[combat] 
    if COMBATS then 
        if exhaustion.check(cid,COMBATS[1]+ STORAGE_ABSORB + 100) then 
            storage = getCreatureStorage(cid, STORAGE_ABSORB + COMBATS[1]) 
            value = (value * (storage/100)) 
            doCreatureSetStorage(cid, STORAGE_ABSORB-1, 1) 
            doTargetCombatHealth(attacker, cid, combat, -value, -value, INVISIBLE_EFFECT)   
            return false 
        end 
    end 
    return true 
end

Do login.lua:

Kod:

registerCreatureEvent(cid, "absorb")

Dodaj do creaturescripts.xml:

Kod:

 <event type="statsChange" name="absorb" event="script" value="absorb.lua"/>

W folderze data\lib stwórz nowy plik o nazwie absorb.lua i dodaj ten kod:

Kod:

INVISIBLE_EFFECT = 255 
STORAGE_ABSORB = 30000 
ABSORB_PHYSICAL = 1 
ABSORB_ENERGY = 2 
ABSORB_EARTH = 3 
ABSORB_POISON = 3 
ABSORB_FIRE = 4 
ABSORB_LIFEDRAIN = 5 
ABSORB_MANADRAIN = 6  
ABSORB_ICE = 7 
ABSORB_HOLY = 8 
ABSORB_DEATH = 9 
function absorbObject(cid, condition, time, percent) 
    doCreatureSetStorage(cid, condition+STORAGE_ABSORB, percent) 
    exhaustion.set(cid, condition+100+STORAGE_ABSORB, time) 
    return true 
end

Przykładowy skrypt działania, runa dzięki której nasza postać dostaje mniejsze obrażenia o 50%:

Kod:

function onUse(cid, item, pos, itemEx, topos) 
local time = 20 
local power = 50 
    absorbObject(cid, ABSORB_POISON, time, power) 
    doRemoveItem(item.uid) 
    return true 
end

time = czas
power = siła (100 == 100%, im więcej tym większe obrażenia!)

=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=
Kolejną rzeczą, która musimy zrobić to:

Wklepujemy w data/spells/scripts nowy plik o nazwie nazwa.lua i wklejamy:

Kod:

local config = {
                storage = 1234, --storage zapisujace
                dlugosc = 4, --w sekundach
                
                --nie ruszac
                k = {'ŚMIERĆ',COLOR_BLACK,'OGIEŃ',COLOR_ORANGE,'LÓD',COLOR_TEAL,'ZIEMIA',COLOR_LIGHTGREEN,'ŚWIATŁO',COLOR_DARKYELLOW,'ENERGIA',COLOR_DARKPURPLE,'FIZYCZNE',COLOR_GREY,'LIFEDRAIN',COLOR_DARKRED},
                odpornosci = {ABSORB_DEATH,50,ABSORB_FIRE,25,ABSORB_ICE,20,ABSORB_EARTH,65,ABSORB_HOLY,90,ABSORB_ENERGY,10,ABSORB_PHYSICAL,25,ABSORB_LIFEDRAIN,90},
                shoots = {CONST_ANI_SUDDENDEATH,CONST_ANI_FIRE,CONST_ANI_ICE,CONST_ANI_EARTH,CONST_ANI_HOLY,CONST_ANI_ENERGYBALL,CONST_ANI_LARGEROCK,CONST_ANI_EXPLOSION},
                eff = {CONST_ME_MORTAREA,COMBAT_DEATHDAMAGE,CONST_ME_FIREAREA,COMBAT_FIREDAMAGE,CONST_ME_ICEATTACK,COMBAT_ICEDAMAGE,CONST_ME_CARNIPHILA,COMBAT_EARTHDAMAGE,CONST_ME_HOLYDAMAGE,COMBAT_HOLYDAMAGE,CONST_ME_ENERGYAREA,COMBAT_ENERGYDAMAGE,CONST_ME_GROUNDSHAKER,COMBAT_PHYSICALDAMAGE,CONST_ME_RED_SHIMMER,COMBAT_LIFEDRAIN}
                }

function onCastSpell(cid, var)
if getPlayerStorageValue(cid, config.storage) >= os.time() then 
    return false
end
local v = math.random(#config.shoots)
doSendAnimatedText(getThingPos(cid), config.k[v*2-1], config.k[v*2])
absorbObject(cid, config.odpornosci[v*2-1], config.dlugosc, config.odpornosci[v*2])
doPlayerSetStorageValue(cid, config.storage, os.time() + config.dlugosc)
return shoot(cid, v) and false
end

function shoot(cid, v)
if getPlayerStorageValue(cid, config.storage) >= os.time() then 
    local pos = getThingPos(cid)
    local h = getSpectators(pos, 1, 1)
    if h ~= nil then
        for _, t in ipairs(h) do
            if isCreature(t) then
                doTargetCombatHealth(cid, t, config.eff[v*2], 0, -config.odpornosci[v*2] * math.random(4), config.eff[v*2-1])
            end
        end
    end
    doSendDistanceShoot({x=pos.x-1,y=pos.y,z=pos.z}, {x=pos.x-1,y=pos.y+1,z=pos.z}, config.shoots[v])
    doSendDistanceShoot({x=pos.x-1,y=pos.y+1,z=pos.z}, {x=pos.x,y=pos.y+1,z=pos.z}, config.shoots[v]) 
    doSendDistanceShoot({x=pos.x,y=pos.y+1,z=pos.z}, {x=pos.x+1,y=pos.y+1,z=pos.z}, config.shoots[v]) 
    doSendDistanceShoot({x=pos.x+1,y=pos.y+1,z=pos.z}, {x=pos.x+1,y=pos.y,z=pos.z}, config.shoots[v]) 
    doSendDistanceShoot({x=pos.x+1,y=pos.y,z=pos.z}, {x=pos.x+1,y=pos.y-1,z=pos.z}, config.shoots[v]) 
    doSendDistanceShoot({x=pos.x+1,y=pos.y-1,z=pos.z}, {x=pos.x,y=pos.y-1,z=pos.z}, config.shoots[v]) 
    doSendDistanceShoot({x=pos.x,y=pos.y-1,z=pos.z}, {x=pos.x-1,y=pos.y-1,z=pos.z}, config.shoots[v]) 
    doSendDistanceShoot({x=pos.x-1,y=pos.y-1,z=pos.z}, {x=pos.x-1,y=pos.y,z=pos.z}, config.shoots[v]) 
    return addEvent(shoot, 150, cid, v) 
end
return true
end

Do spells.xml wklejamy:

Kod:

<instant name="Magic Barrer" words="magic barrer" lvl="20" mana="100" selftarget="1" event="script" value="test.lua"/>

Na koniec działanie, Magicznej Bariery na filmie

http://www.youtube.com/watch?v=i9n8mhp-Nqo

Ostatnio edytowany przez Sassin (2012-01-11 13:39:07)


http://s2.tibiafun.y0.pl/char.php?c=Sassin

Kliknij, i pomóż nabić mi LvL

Offline

 

#2 2012-01-12 21:22:05

Mokre Cycuszki

Zbanowany

Zarejestrowany: 2011-10-09
Posty: 20

Re: Bariera magiczna - hit dla orsh OTSów.

ALEE KUFFFFNO

Offline

 

#3 2012-01-14 07:50:16

Sassin

http://i38.tinypic.com/19pb0n.gif

Zarejestrowany: 2012-01-11
Posty: 11

Re: Bariera magiczna - hit dla orsh OTSów.

Cóż jak tobie się nie podoba, to trudno. Myślę, że wchodząc na ten temat chciałeś po prostu nabić sobie posta. Nie sprawdzając tej Bariery piszesz "ALEE KUFFFFNO", szczerze szkoda mi Cię trochę. Pozdrawiam Sassin !


http://s2.tibiafun.y0.pl/char.php?c=Sassin

Kliknij, i pomóż nabić mi LvL

Offline

 

#4 2012-02-20 16:38:09

 KamaShoot

http://i35.tinypic.com/2q9yumu.gif

12612754
Call me!
Skąd: FRANCE
Zarejestrowany: 2012-02-19
Posty: 137
Profesja: Hoster
Server: MINIWAR
WWW

Re: Bariera magiczna - hit dla orsh OTSów.

Bardzo przydatny skrypcik, chetnie go wykorzystam.


Pomoglem daj +
http://s2.tibiafun.y0.pl/char.php?c=Bladeli
Zapraszam na najlepsze forum o OTS www.tibiaot.pun.pl
http://img844.imageshack.us/img844/5093/111ke.gif

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
mapa fotowoltaiki