• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

CreatureEvent Advance - special effect!

GarQet

Own3d!
Joined
Feb 10, 2009
Messages
1,381
Solutions
14
Reaction score
81
Hello Otlanders!
I make simple script for my OTS, I decided to share it.

YourOTS\data\lib\050-function.lua | At the end, add this:
Code:
czekaj = coroutine.yield
function czekanie(c)
    if(coroutine.status(c) ~= 'dead') then
        local _, czas = coroutine.resume(c)
        addEvent(czekanie, czas, c)
    end
end
function zacznijCzekac(f)
    if(type(f) == 'function') then
        local c = coroutine.create(f)
        czekanie(c)
    end
end
function timeString(timeDiff)
    local dateFormat = { 
        {"day", timeDiff / 60 / 60 / 24},
        {"hour", timeDiff / 60 / 60 % 24},
        {"minute", timeDiff / 60 % 60},
        {"second", timeDiff % 60}
    }
    local out = {}
    for k, t in ipairs(dateFormat) do
        local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
    return table.concat(out)
end

YourOTS\data\creaturescripts\scripts\advance.lua
Code:
function onAdvance(cid, skill, oldlevel, newlevel)
	local pozycja = getCreaturePosition(cid)

            zacznijCzekac(function()
        if skill == SKILL__MAGLEVEL then
		doPlayerSay(cid, "[MAGICLEVEL UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_MORTAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_MORTAREA)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_MORTAREA)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_MORTAREA)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 31)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_MORTAREA)
		end
        elseif skill == SKILL__LEVEL then
                doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
                doCreatureAddMana(cid, getCreatureMaxMana(cid))
		doPlayerSay(cid, "[LEVEL UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_HEARTS)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_HEARTS)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_HEARTS)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_HEARTS)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 6)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_HEARTS)
		end
        elseif skill == SKILL_CLUB then
		doPlayerSay(cid, "[CLUB FIGHTING UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 26)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		end
        elseif skill == SKILL_SWORD then
		doPlayerSay(cid, "[SWORD FIGHTING UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 24)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		end
        elseif skill == SKILL_AXE then
		doPlayerSay(cid, "[AXE FIGHTING UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 25)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_GROUNDSHAKER)
		end
        elseif skill == SKILL_DISTANCE then
		doPlayerSay(cid, "[DISTANCE FIGHTING UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_HOLYAREA)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_HOLYAREA)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_HOLYAREA)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_HOLYAREA)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 30)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_HOLYAREA)
		end
        elseif skill == SKILL_FIST then
		doPlayerSay(cid, "[FIST FIGHTING UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_POFF)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_POFF)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_POFF)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_POFF)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 40)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_POFF)
		end
        elseif skill == SKILL_SHIELD then
		doPlayerSay(cid, "[SHIELD UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_BLOCKHIT)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_BLOCKHIT)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_BLOCKHIT)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_BLOCKHIT)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 11)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_BLOCKHIT)
		end
        elseif skill == SKILL_FISHING then
		doPlayerSay(cid, "[FISHING UP!]", TALKTYPE_ORANGE_1)
			for i = 1, 1  do
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y - 2, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x - 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x + 2, y = pozycja.y + 2, z = pozycja.z}, CONST_ME_WATERSPLASH)
		czekaj(100)
		doSendDistanceShoot(pozycja, {x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x + 1, y = pozycja.y, z = pozycja.z}, CONST_ME_WATERSPLASH)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y - 1, z = pozycja.z}, CONST_ME_WATERSPLASH)
		doSendDistanceShoot(pozycja, {x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x - 1, y = pozycja.y, z = pozycja.z}, CONST_ME_WATERSPLASH)
		doSendDistanceShoot(pozycja, {x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, 35)
		doSendMagicEffect({x = pozycja.x, y = pozycja.y + 1, z = pozycja.z}, CONST_ME_WATERSPLASH)
		end
        end
	end)
return true
end

YourOTS\data\creaturescripts\creaturescripts.xml
Code:
	<event type="advance" name="advance" event="script" value="advance.lua"/>

YourOTS\data\creaturescripts\scripts\login.lua
After:
Code:
	registerCreatureEvent(cid, "ReportBug")
Add this:
Code:
      	registerCreatureEvent(cid, "advance")

Film:
YouTube - Script created by GarQet - Advance -

Yours GarQet, REP please :$
 
Last edited:
#2, could be shortened abit
Code:
function onAdvance(cid, skill, oldLevel, newLevel)
	local s = getThingPos(cid)
	local a = {
		{x = s.x + 2, y = s.y, z = s.z},
		{x = s.x + 2, y = s.y - 2, z = s.z}
		{x = s.x, y = s.y - 2, z = s.z},
		{x = s.x - 2, y = s.y - 2, z = s.z},
		{x = s.x - 2, y = s.y, z = s.z},
		{x = s.x - 2, y = s.y + 2, z = s.z},
		{x = s.x + 2, y = s.y + 2, z = s.z},
		{x = s.x + 2, y = s.y + 2, z = s.z},
		{x = s.x + 1, y = s.y, z = s.z},
		{x = s.x, y = s.y - 1, s.z},
		{x = s.x - 1, y = s.y, z = s.z},
		{x = s.x, y = s.y + 1, z = s.z}
	}
	local c = {
		[SKILL__MAGLEVEL] = {effect = CONST_ME_MORTAREA, eff = 31},
		[SKILL__LEVEL] = {effect = CONST_ME_HEARTS, add = true, eff = 6},
		[SKILL_CLUB] = {effect = CONST_ME_GROUNDSHAKER, eff = 26},
		[SKILL_SWORD] = {effect = CONST_ME_GROUNDSHAKER, eff = 24},
		[SKILL_AXE] = {effect = CONST_ME_GROUNDSHAKER, eff = 25},
		[SKILL_DISTANCE] = {effect = CONST_ME_HOLYAREA, eff = 30},
		[SKILL_FIST] = {effect = CONST_ME_POFF, eff = 40},
		[SKILL_SHIELD] = {effect = CONST_ME_BLOCKHIT, eff = 11},
		[SKILL_FISHING] = {effect = CONST_ME_WATERSPLASH, eff = 35}
	}
	local t = c[skill]
	zacznijCzekac(function())
	if t then
		for _, pos in ipairs(a) do
			for i = 1, 12 do
				addEvent(doSendDistanceShoot, 1000, s, pos, t.eff)
				addEvent(doSendMagicEffect, 1000, pos, t.effect)
				czekaj(100)
			end
		end
		if t.add then
			doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
			doCreatureAddMana(cid, getCreatureMaxMana(cid))
		end
		doCreatureSay(cid, "" .. (skill == SKILL__MAGLEVEL and "[MAGICLEVEL UP!]" or skill == SKILL__LEVEL and "[LEVEL UP!]" or skill == SKILL_CLUB and "[CLUB FIGHTING UP!]" or skill == SKILL_SWORD and "[SWORD FIGHTING UP!]" or skill == SKILL_AXE and "[AXE FIGHTING UP!]" or skill == SKILL_DISTANCE and "[DISTANCE FIGHTING UP!]" or skill == SKILL_FIST and "[FIST FIGHTING UP!]" or skill == "[SHIELD UP!]" or skill == SKILL_FISHING and "[FISHING UP!]") .. "", 19)
	end
	return true
end
i dont feel like testing ;p
 
Last edited:
ffs OzIcO stop fail with czekaj(100) and addEvent in loop
 
#2, could be shortened abit
Code:
function onAdvance(cid, skill, oldLevel, skillLevel)
	local s = getThingPos(cid)
	local a = {
		{x = s.x + 2, y = s.y, z = s.z},
		{x = s.x + 2, y = s.y - 2, z = s.z}
		{x = s.x, y = s.y - 2, z = s.z},
		{x = s.x - 2, y = s.y - 2, z = s.z},
		{x = s.x - 2, y = s.y, z = s.z},
		{x = s.x - 2, y = s.y + 2, z = s.z},
		{x = s.x + 2, y = s.y + 2, z = s.z},
		{x = s.x + 2, y = s.y + 2, z = s.z},
		{x = s.x + 1, y = s.y, z = s.z},
		{x = s.x, y = s.y - 1, s.z},
		{x = s.x - 1, y = s.y, z = s.z},
		{x = s.x, y = s.y + 1, z = s.z}
	}
	local c = {
		[SKILL__MAGLEVEL] = {effect = CONST_ME_MORTAREA, eff = 31},
		[SKILL__LEVEL] = {effect = CONST_ME_HEARTS, add = true, eff = 6},
		[SKILL_CLUB] = {effect = CONST_ME_GROUNDSHAKER, eff = 26},
		[SKILL_SWORD] = {effect = CONST_ME_GROUNDSHAKER, eff = 24},
		[SKILL_AXE] = {effect = CONST_ME_GROUNDSHAKER, eff = 25},
		[SKILL_DISTANCE] = {effect = CONST_ME_HOLYAREA, eff = 30},
		[SKILL_FIST] = {effect = CONST_ME_POFF, eff = 40},
		[SKILL_SHIELD] = {effect = CONST_ME_BLOCKHIT, eff = 11},
		[SKILL_FISHING] = {effect = CONST_ME_WATERSPLASH, eff = 35}
	}
	local t = c[skill]
	zacznijCzekac(function())
	if c then
		for _, pos in ipairs(a) do
			for i = 1, 12 do
				addEvent(doSendDistanceShoot, 1000, s, pos, c.eff)
				addEvent(doSendMagicEffect, 1000, pos, c.effect)
				czekaj(100)
			end
		end
		if c.add then
			doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
			doCreatureAddMana(cid, getCreatureMaxMana(cid))
		end
		doCreatureSay(cid, "" .. (skill == SKILL__MAGLEVEL and "[MAGICLEVEL UP!]" or skill == SKILL__LEVEL and "[LEVEL UP!]" or skill == SKILL_CLUB and "[CLUB FIGHTING UP!]" or skill == SKILL_SWORD and "[SWORD FIGHTING UP!]" or skill == SKILL_AXE and "[AXE FIGHTING UP!]" or skill == SKILL_DISTANCE and "[DISTANCE FIGHTING UP!]" or skill == SKILL_FIST and "[FIST FIGHTING UP!]" or skill == "[SHIELD UP!]" or skill == SKILL_FISHING and "[FISHING UP!]") .. "", 19)
	end
	return true
end
i dont feel like testing ;p

Could be shorten... But I newbie in skrypting :)
 
Back
Top