• 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!

Help with custom transform ring

Coolder

New Member
Joined
Nov 4, 2010
Messages
35
Reaction score
0
Hello, I am asking you with a great request. Below I attach the transform ring script and I would like to do the following with it:
Code:
-- >> Small config section --

local outfitMale =
{
lookType = 22,
lookHead = 19,
lookBody = 79,
lookLegs = 3,
lookFeet = 81,
lookAddons = 0
}

local outfitFemale =
{
lookType = 22,
lookHead = 19,
lookBody = 53,
lookLegs = 92,
lookFeet = 79,
lookAddons = 0
}

local cointype = 2160 -- Id of the coin the spell will use (2148 = gold coin, 2152 = platinum coin, 2160 = crystal coin) --
local tbcw = 20000 -- coin wasting time interval (miliseconds) --
local ncws = 1 -- number of coins used up during time interval --
local ncni = 20 -- number of coins needed to trigger the transformation --
local stcn = 20 -- number of coins needed to execute script (must be higher than ncni value) --
local warn = 1 -- warns player when runing short on coins, 1 = yes --
local cwar = 20 -- number of coins that triggers the warnings --

local bringwaste = CONST_ME_FIREWORK_YELLOW

local glandeff = CONST_ME_FIREWORK_RED

-- Small config section << --

local condition1 = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition1, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition1, CONDITION_PARAM_SKILL_SHIELD, 50)
setConditionParam(condition1, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 150)
setConditionParam(condition1, CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100)

local condition2 = createConditionObject(CONDITION_HASTE)
setConditionParam(condition2, CONDITION_PARAM_TICKS, -1)
setConditionFormula(condition2, 5, 5, 5, 5)

function superform1(param)
    if param.crca == 1 then

        local pos = getCreaturePosition(param.cid)
        local sex = getPlayerSex(param.cid)

        local nha = {x = pos.x, y = pos.y - 3, z = pos.z, stackpos = 255}
        local sha = {x = pos.x, y = pos.y + 3, z = pos.z, stackpos = 255}
        local wha = {x = pos.x - 3, y = pos.y, z = pos.z, stackpos = 255}
        local eha = {x = pos.x + 3, y = pos.y, z = pos.z, stackpos = 255}

        local nwa = {x = pos.x - 2, y = pos.y - 2, z = pos.z, stackpos = 255}
        local nea = {x = pos.x + 2, y = pos.y - 2, z = pos.z, stackpos = 255}
        local sea = {x = pos.x + 2, y = pos.y + 2, z = pos.z, stackpos = 255}
        local swa = {x = pos.x - 2, y = pos.y + 2, z = pos.z, stackpos = 255}

        if sex == 1 then
            doSendMagicEffect(pos, bmaineff)
            doSendMagicEffect(pos, bsecondeff)

            doSendDistanceShoot(pos, nha, bflingeff)
            doSendDistanceShoot(pos, sha, bflingeff)
            doSendDistanceShoot(pos, wha, bflingeff)
            doSendDistanceShoot(pos, eha, bflingeff)
            doSendDistanceShoot(pos, nwa, bflingeff)
            doSendDistanceShoot(pos, nea, bflingeff)
            doSendDistanceShoot(pos, sea, bflingeff)
            doSendDistanceShoot(pos, swa, bflingeff)

            doSendMagicEffect(nha, blandeff)
            doSendMagicEffect(sha, blandeff)
            doSendMagicEffect(wha, blandeff)
            doSendMagicEffect(eha, blandeff)
            doSendMagicEffect(nwa, blandeff)
            doSendMagicEffect(nea, blandeff)
            doSendMagicEffect(sea, blandeff)
            doSendMagicEffect(swa, blandeff)

            doSetCreatureOutfit(param.cid, outfitMale, -1)
        else
            doSendMagicEffect(pos, gmaineff)
            doSendMagicEffect(pos, gsecondeff)

            doSendDistanceShoot(pos, nha, gflingeff)
            doSendDistanceShoot(pos, sha, gflingeff)
            doSendDistanceShoot(pos, wha, gflingeff)
            doSendDistanceShoot(pos, eha, gflingeff)
            doSendDistanceShoot(pos, nwa, gflingeff)
            doSendDistanceShoot(pos, nea, gflingeff)
            doSendDistanceShoot(pos, sea, gflingeff)
            doSendDistanceShoot(pos, swa, gflingeff)

            doSendMagicEffect(nha, glandeff)
            doSendMagicEffect(sha, glandeff)
            doSendMagicEffect(wha, glandeff)
            doSendMagicEffect(eha, glandeff)
            doSendMagicEffect(nwa, glandeff)
            doSendMagicEffect(nea, glandeff)
            doSendMagicEffect(sea, glandeff)
            doSendMagicEffect(swa, glandeff)
            doSetCreatureOutfit(param.cid, outfitFemale, -1)
        end

        doAddCondition(param.cid, condition1)
        doAddCondition(param.cid, condition2)

        local mhp = getCreatureMaxHealth(param.cid)
        local mma = getPlayerMaxMana(param.cid)
        local chp = getCreatureHealth(param.cid)
        local cma = getPlayerMana(param.cid)

        local dhp = mhp - chp
        local dma = mma - cma

        doCreatureAddHealth(param.cid, dhp)
        doPlayerAddMana(param.cid, dma)
        doPlayerRemoveItem(param.cid, cointype, ncni)

        param.crcb = 1
        param.sex = sex
        setPlayerStorageValue(param.cid, 50780, 1)

        addEvent(superform2, 1, param)
    end
end


function superform2(param)
    if param.crca == 1 and param.crcb == 1 and isCreature(param.cid) == TRUE and getPlayerStorageValue(param.cid, 50780) == 1 then
        local pos = getCreaturePosition(param.cid)
        doPlayerRemoveItem(param.cid, cointype, ncws)
        if param.sex == 1 then      
            doSendMagicEffect(pos, bringwaste)
            doSendMagicEffect(pos, bringabsorb)
        else
            doSendMagicEffect(pos, gringwaste)
            doSendMagicEffect(pos, gringabsorb)
        end
        local goldleft = getPlayerItemCount(param.cid, cointype)
        if goldleft < cwar and warn == 1 then
            doPlayerSendTextMessage(param.cid, MESSAGE_STATUS_CONSOLE_RED, "Coins left: " ..coinleft.. ".")
        end
        if goldleft < ncws then
            param.crca = 0
            param.crcb = 0
            setPlayerStorageValue(param.cid, 50780, 0)
            doPlayerSendTextMessage(param.cid, MESSAGE_EVENT_DEFAULT, "No coin left!")
           
            local pos = getCreaturePosition(param.cid)

            local nha = {x = pos.x, y = pos.y - 3, z = pos.z, stackpos = 255}
            local sha = {x = pos.x, y = pos.y + 3, z = pos.z, stackpos = 255}
            local wha = {x = pos.x - 3, y = pos.y, z = pos.z, stackpos = 255}
            local eha = {x = pos.x + 3, y = pos.y, z = pos.z, stackpos = 255}

            local nwa = {x = pos.x - 2, y = pos.y - 2, z = pos.z, stackpos = 255}
            local nea = {x = pos.x + 2, y = pos.y - 2, z = pos.z, stackpos = 255}
            local sea = {x = pos.x + 2, y = pos.y + 2, z = pos.z, stackpos = 255}
            local swa = {x = pos.x - 2, y = pos.y + 2, z = pos.z, stackpos = 255}


            doRemoveCondition(param.cid, CONDITION_OUTFIT)
            doRemoveCondition(param.cid, CONDITION_ATTRIBUTES)
            doRemoveCondition(param.cid, CONDITION_HASTE)

            if param.sex == 1 then
                doSendMagicEffect(pos, bmaineff)
                doSendMagicEffect(pos, bsecondeff)

                doSendDistanceShoot(pos, nha, bflingeff)
                doSendDistanceShoot(pos, sha, bflingeff)
                doSendDistanceShoot(pos, wha, bflingeff)
                doSendDistanceShoot(pos, eha, bflingeff)
                doSendDistanceShoot(pos, nwa, bflingeff)
                doSendDistanceShoot(pos, nea, bflingeff)
                doSendDistanceShoot(pos, sea, bflingeff)
                doSendDistanceShoot(pos, swa, bflingeff)

                doSendMagicEffect(nha, blandeff)
                doSendMagicEffect(sha, blandeff)
                doSendMagicEffect(wha, blandeff)
                doSendMagicEffect(eha, blandeff)
                doSendMagicEffect(nwa, blandeff)
                doSendMagicEffect(nea, blandeff)
                doSendMagicEffect(sea, blandeff)
                doSendMagicEffect(swa, blandeff)
            else
                doSendMagicEffect(pos, gmaineff)
                doSendMagicEffect(pos, gsecondeff)

                doSendDistanceShoot(pos, nha, gflingeff)
                doSendDistanceShoot(pos, sha, gflingeff)
                doSendDistanceShoot(pos, wha, gflingeff)
                doSendDistanceShoot(pos, eha, gflingeff)
                doSendDistanceShoot(pos, nwa, gflingeff)
                doSendDistanceShoot(pos, nea, gflingeff)
                doSendDistanceShoot(pos, sea, gflingeff)
                doSendDistanceShoot(pos, swa, gflingeff)

                doSendMagicEffect(nha, glandeff)
                doSendMagicEffect(sha, glandeff)
                doSendMagicEffect(wha, glandeff)
                doSendMagicEffect(eha, glandeff)
                doSendMagicEffect(nwa, glandeff)
                doSendMagicEffect(nea, glandeff)
                doSendMagicEffect(sea, glandeff)
                doSendMagicEffect(swa, glandeff)
            end
        else
            addEvent(superform2, tbcw, param)
        end
    end

end

function onEquip(cid, item, slot)
    local param = {cid = cid, item = item, slot = slot}
    local gold = getPlayerItemCount(cid, cointype)
    if gold > stcn then
        param.crca = 1
        --can equip here?
        addEvent(superform1, 1, param)
        return TRUE
    end
end

function onDeEquip(cid, item, slot)
    if isPlayer(cid) and getPlayerStorageValue(cid, 50780) == 1 then

        doRemoveCondition(cid, CONDITION_OUTFIT)
        doRemoveCondition(cid, CONDITION_ATTRIBUTES)
        doRemoveCondition(cid, CONDITION_HASTE)

        local pos = getCreaturePosition(cid)
        setPlayerStorageValue(cid, 50780, 0)
        local sex = getPlayerSex(cid)

        local nha = {x = pos.x, y = pos.y - 3, z = pos.z, stackpos = 255}
        local sha = {x = pos.x, y = pos.y + 3, z = pos.z, stackpos = 255}
        local wha = {x = pos.x - 3, y = pos.y, z = pos.z, stackpos = 255}
        local eha = {x = pos.x + 3, y = pos.y, z = pos.z, stackpos = 255}

        local nwa = {x = pos.x - 2, y = pos.y - 2, z = pos.z, stackpos = 255}
        local nea = {x = pos.x + 2, y = pos.y - 2, z = pos.z, stackpos = 255}
        local sea = {x = pos.x + 2, y = pos.y + 2, z = pos.z, stackpos = 255}
        local swa = {x = pos.x - 2, y = pos.y + 2, z = pos.z, stackpos = 255}

        if sex == 1 then
            doSendMagicEffect(pos, bmaineff)
            doSendMagicEffect(pos, bsecondeff)

            doSendDistanceShoot(pos, nha, bflingeff)
            doSendDistanceShoot(pos, sha, bflingeff)
            doSendDistanceShoot(pos, wha, bflingeff)
            doSendDistanceShoot(pos, eha, bflingeff)
            doSendDistanceShoot(pos, nwa, bflingeff)
            doSendDistanceShoot(pos, nea, bflingeff)
            doSendDistanceShoot(pos, sea, bflingeff)
            doSendDistanceShoot(pos, swa, bflingeff)

            doSendMagicEffect(nha, blandeff)
            doSendMagicEffect(sha, blandeff)
            doSendMagicEffect(wha, blandeff)
            doSendMagicEffect(eha, blandeff)
            doSendMagicEffect(nwa, blandeff)
            doSendMagicEffect(nea, blandeff)
            doSendMagicEffect(sea, blandeff)
            doSendMagicEffect(swa, blandeff)
        else
            doSendMagicEffect(pos, gmaineff)
            doSendMagicEffect(pos, gsecondeff)

            doSendDistanceShoot(pos, nha, gflingeff)
            doSendDistanceShoot(pos, sha, gflingeff)
            doSendDistanceShoot(pos, wha, gflingeff)
            doSendDistanceShoot(pos, eha, gflingeff)
            doSendDistanceShoot(pos, nwa, gflingeff)
            doSendDistanceShoot(pos, nea, gflingeff)
            doSendDistanceShoot(pos, sea, gflingeff)
            doSendDistanceShoot(pos, swa, gflingeff)

            doSendMagicEffect(nha, glandeff)
            doSendMagicEffect(sha, glandeff)
            doSendMagicEffect(wha, glandeff)
            doSendMagicEffect(eha, glandeff)
            doSendMagicEffect(nwa, glandeff)
            doSendMagicEffect(nea, glandeff)
            doSendMagicEffect(sea, glandeff)
            doSendMagicEffect(swa, glandeff)
        end
    end
return TRUE
end
- simplifying the script (removing ALL graphic effects like fireworks when setting up / using / removing),
outfit the same for both sexes
  • instead of taking away gp / pc / cc takes item about id x
  • adding the function "when we have it on we can not enter the pz"
  • adding function (if possible) "when we have it on we can not attack anyone"
  • adding a function (when we die having it on us, item with given id appears instead of our corpse)
I tried to do it myself but every now and then I get errors and I have no idea how to convert it.
If you can help at one of these points, I will be extremely grateful to you. greeting
 
Back
Top