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

New Pokeball Version -TFS-3

izaak

New Member
Joined
Feb 1, 2009
Messages
161
Reaction score
3
Script :Maker Nahruto
A litle Editted by : izaak
After edditing the script a bit these are the new functions.
1.the pokeball will capture a monster and release it as a wild creature [ not as a summon ]
2.the pokeball will be removed from your backpack
"Warning"the rune might not work if you give it more then 1 charge" cause i didnt test that yet.

This is what you do

goto your global.lua located in your data folder
if you dont have 1 just create 1

add this at the bottom of global.lua

Code:
_warpzone = 2147483648 -- start storing strings here (THIS IS THE ABSOLUTE MAXIMUM VALUE FOR THIS)
_maxlength = 1024 -- multiply by 3 to get the true length.
 
setPlayerStorageInteger = setPlayerStorageValue
getPlayerStorageInteger = getPlayerStorageValue
 
function setPlayerStorageString(cid, key, value)
    if #value > (_maxlength-1) * 3 - 1 then -- Last word is reserved for 0 termination of the string.
        error("Storage string is too long")
    end
    if key > _warpzone / _maxlength then
        error("Storage string key is too large (" .. key .. ")")
    end
    key = _warpzone + key * _maxlength
 
    local word = 0
    local wordwrap = 0
    local wordcount = 0
    local i = 1
    while i <= #value do
        local byte = string.byte(string.sub(value, i, i))
        word = bit.bor(word, bit.lshift(byte, wordwrap))
        wordwrap = wordwrap + 8
        if wordwrap == 24 then
            --[[
                In the ideal world we would be able to store 4 characters per word,
                however, as the default return value for getPlayerStorageValue is
                -1, we can't use the last bit.
            ]]--
            setPlayerStorageInteger(cid, key + wordcount, word)
            word = 0
            wordwrap = 0
            wordcount = wordcount + 1
        end
        i = i + 1
    end
    -- store the last word
    setPlayerStorageInteger(cid, key + wordcount, word)
end
 
function getPlayerStorageString(cid, key)
    if key > _warpzone / _maxlength then
        error("Storage string key is too large (" .. key .. ")")
    end
    key = _warpzone + key * _maxlength
 
    local wordcount = 0
    local str = ""
    while true do
        if wordcount >= _maxlength then
            break
        end
        local word = getPlayerStorageInteger(cid, key + wordcount)
        if word == -1 then
            -- end of string
            break
        else 
            -- Extract the 3 characters from the value
            byte = bit.band(word, 255)
            if byte == 0 then break else str = str .. string.char(byte) end
            byte = bit.rshift(bit.band(word, 65280), 8)
            if byte == 0 then break else str = str .. string.char(byte) end
            byte = bit.rshift(bit.band(word, 16711680), 16)
            if byte == 0 then break else str = str .. string.char(byte) end
        end
        wordcount = wordcount + 1
    end
    return str
end

 
function doConvinceSummon(cid, creature, amount, pos)
summonplayerpos = {x=pos.x, y=pos.y, z=pos.z, stackpos=253}
summonplayer = getThingfromPos(summonplayerpos)
 
 
    if(summonplayer ~= nil and summonplayer.itemid > 0) then    
        doPlayerSendCancel(cid,"There is not enough room to summon here.")
        ret = 0
    else
        convince = doSummonCreature(creature, pos)
        doConvinceCreature(cid, convince)
        ret = 1
end
 
        return ret
end


then save the file and exit it

after youve done that go to your actions folder located inside of your data folder and open actions.xml

add this to actions.xml

Code:
<action itemid="2263" script="pokeball.lua" allowfaruse="1" blockwalls="1" />

then save the file and close it
now inside the actions folder open the script folder and create pokeball.lua

add this to pokeball.lua

Code:
local notAllowed = {"Ferumbras", "Demon"}
local storage = {
    status = 25650,
    pokeName = 25651
}
local actionid_used = 7510
 
function onUse(cid, item, fromPos, item2, toPos)
    local pokeballStatus = getPlayerStorageValue(cid, storage.status)
    local pokeName = getPlayerStorageValue(cid, storage.pokeName)
    pos = getPlayerPosition(cid) pos.stackpos = 0
    if getTilePzInfo(toPos) == 0 and getTilePzInfo(pos) == 0 then
        if pokeballStatus == -1 then
            toPos.stackpos = 253
            local pokeThing = getThingfromPos(toPos)
            if isCreature(pokeThing.uid) == TRUE then
                if isPlayer(pokeThing.uid) == FALSE then
                    local pokename_ = getCreatureName(pokeThing.uid)
                    if item.actionid ~= actionid_used then
                    --    local maxHealth = 400
                    --    local creatureHealth = getCreatureHealth(pokeThing.uid)
                    --    local divNum = (string.len(maxHealth)-1)^2
                    --    local result = math.floor((creatureHealth/divNum)/10)
                    --    local chance = math.random(1, math.random(4, math.random(7, math.max(result, 7))))
                    --    if chance == result then
                            if isInTable(notAllowed, pokename_) == TRUE then
                                doPlayerSendCancel(cid, "You cannot catch this creature")
                            else
                                setPlayerStorageValue(cid, storage.pokeName, pokename_)
                                doRemoveCreature(pokeThing.uid)
                                doSendDistanceShoot(fromPos, toPos, 37)
                                setPlayerStorageValue(cid, storage.status, 1)
                                doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".")
                                doSetItemActionId(item.uid, actionid_used)
                            end
                    --    else
                    --        doSendMagicEffect(fromPos, 2)
                    --        doPlayerSendCancel(cid, "The Pokemom Escaped")
                    --    end
                    elseif item.actionid == actionid_used and pokename_  == pokeName then
                        doPlayerSay(cid, pokeName .. " Back!!", TALKTYPE_SAY)
                        doRemoveCreature(pokeThing.uid)
                        doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".")
                        setPlayerStorageValue(cid, storage.status, 1)
                        doSendDistanceShoot(fromPos, toPos, 37)
                    else
                        doSendMagicEffect(fromPos, 2)
                        doPlayerSendCancel(cid, "This pokeRune is already used")
                    end
                else
                    doPlayerSendCancel(cid, "You cannot catch this creature")
                end
            else
                doPlayerSendCancel(cid, "Creature not found")
            end
        elseif pokeballStatus == 1 then
            summons = getCreatureSummons(cid)
        --    if #summons >= 2 then
        --        doPlayerSendCancel(cid, "You cannot call more pokemons")
        --    else
                doSummonCreature(cid, pokeName, toPos)
                doSendDistanceShoot(fromPos, toPos, 37)
                doPlayerSay(cid, pokeName .. " Go!!", TALKTYPE_SAY)
                setPlayerStorageValue(cid, storage.status, -1)
                doSetItemSpecialDescription(item.uid, "it is empty.")
            doRemoveItem(item.uid,1)
        --    end
        end
    else
        doPlayerSendCancel(cid, "You cannot use pokeRunes in protection zone.")
    end
    return 1
end 
 
function isInTable(t, val)
    for _, v in pairs(t) do
        if v == val then
            return TRUE
        end
    end
    return LUA_ERROR
end

Then save the file and exit
now goto your spell folder and open spells.xml

add this inside

Code:
<rune name="Poke Rune" id="2263" allowfaruse="1" charges="1" lvl="50" maglv="8" exhaustion="2000" blocktype="solid"/>
now it should work for you xD ejoy

if you want it to say its a Poke Rune
open items.xml press Ctrl +F
type in 2263 then pres enter
change Spell Rune To Poke Rune
and save
 
Last edited:
02:38 You see a Poke rune(Charges:1).
It can only be used by with level 50 and magic level 8 or higher.
It weighs 1.20 oz.
----
You see a Poke rune(Charges:1).
It can only be used by with level 50 and magic level 8 or higher.
It weighs 1.20 oz.
it contains a dog.
 
Last edited:
sorry iabout that xD its better now im kinda new to forums and stuff xD
 
Back
Top