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

Action PokeBall System v2

this
Lua:
function tab(script)
    tab
        tab
            tab
                if tab then
                    tab again
                end
            /tab
        /tab
    /tab
    return tabulate script
end
 
and what is that for?

if your awnser is:

its needed in the scripts...

then where should it be? x.x
 
Tab your scripts dude...

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 cant 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

Code:
local notAllowed = {"Ferumbras", "Demon"} 
local storage = { 
	status = 15244, 
	pokeName = 15212 
} 
local actionid_used = 7510 

function onUse(cid, item, fromPos, item2, toPos) 
	local pokeballStatus = getPlayerStorageValue(cid, storage.status) 
	local pokeName = getPlayerStorageString(cid, storage.pokeName) 
	pos = getPlayerPosition(cid) pos.stackpos = 0 
	if pokeballStatus <= 0 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 
						setPlayerStorageString(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 
					doCreatureSay(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 pokeball 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 = doCreatureSummons(cid) 
		-- if #summons >= 2 then 
			-- doPlayerSendCancel(cid, "You cannot call more pokemons.") 
		-- else 
		doConvinceSummon(cid, pokeName, 0, toPos) 
		doSendDistanceShoot(fromPos, toPos, 37) 
		doCreatureSay(cid, pokeName .. " Go!!", TALKTYPE_SAY) 
		setPlayerStorageValue(cid, storage.status, 0) 
		doSetItemSpecialDescription(item.uid, "It is empty.") 
	-- end 
	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
 
Ain't nahruto in one of the existing pokemon projects? Why did it fail? :eek:
 
idc, i'm just teaching lava what i meant
 
im to lazy to try it out now o_o does it call back the "pokemon" when it dies?
 
I still help out the error

[16/08/2010 21:30:17] [Error - Action Interface]
[16/08/2010 21:30:17] data/actions/scripts/pokeball.lua:eek:nUse
[16/08/2010 21:30:17] Description:
[16/08/2010 21:30:17] data/lib/050-function.lua:53: attempt to call global 'getPlayerStorageInteger' (a nil value)
[16/08/2010 21:30:17] stack traceback:
[16/08/2010 21:30:17] data/lib/050-function.lua:53: in function 'getPlayerStorageString'
[16/08/2010 21:30:17] data/actions/scripts/pokeball.lua:10: in function <data/actions/scripts/pokeball.lua:8>
 
I guess its not very useful without adding Pokemon monsters since thats what pokeballs are really for but nice script
 
It doesnt work for me, I captured a monster, but then the item stays as it was before, and I cant release it..^.-
So it doesnt transform to the item that you release it with.
 
this is only pokeball system,u need make ur go/back system;
 
There is still a fault in the script, no matter what monster I capture, when I release it becomes a dragon. Kthxbai.
 
Back
Top