Ir para conteúdo

[Systems] Pokemon Systems


MatheusGlad

Posts Recomendados

Scripts para TFS 0.3.6pl1 NAO FOI TESTADO EM OUTRA!

 

Preview:

 

Antes de tudo, va na pasta data/lib e adicione um script.lua com o nome de pokeLib e adicione isso:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
pokein, pokeout = 2222,2223

function doRemoveTile(pos)-- Script by mock
pos.stackpos = 0
local sqm = getTileThingByPos(pos)
doRemoveItem(sqm.uid,1)
end


function doCreateTile(id,pos) -- By mock
doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)
doCreateItem(id,1,pos)
end

function getPosDirs(p, dir) -- By MatheusMkalo
return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end

function doItem(pos,a,d)-- Script by mock
	doCreateTile(460,pos)
	pos.stackpos = 0
	local c = getTileThingByPos(pos)
	doItemSetAttribute(c.uid, "aid", a)
end

function getDescription(uid)
for i,x in pairs(getItemDescriptions(uid)) do
	if i == "special" then
		return x
	end
end
end

function findLetter(string, letter)
for i = 1, #string do
	if string:sub(i, i) == letter then
		return i
	end
end
end

function isWalkable(pos, creature, proj, pz)-- by Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
	pos.stackpos = i
	local tile = getTileThingByPos(pos)
	if tile.itemid ~= 0 and not isCreature(tile.uid) then
		if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
			return false
		end
	end
end
return true
end

function getPosDirs(p, dir)
return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end

function canSummon(cid)
local pos = getCreaturePosition(cid)
local state = false
for i = 1, 8 do
	if isWalkable(getPosDirs(getCreaturePosition(cid), i)) then
		state = true
	end
end
return state
end

function isPlayerSummon(cid, uid)
if getCreatureMaster(uid) == cid then
	return TRUE
end
return FALSE
end

function getSummonLifes(cid)
for _,x in pairs(getCreatureSummons(cid)) do
	return getCreatureHealth(x), getCreatureMaxHealth(x)
end
end

function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
	for slot=0, (getContainerSize(container)-1) do
		local item = getContainerItem(container, slot)
		if isContainer(item.uid) then
			local itemsbag = getItemsInContainerById(item.uid, itemid)
			for i=0, #itemsbag do
				table.insert(items, itemsbag[i])
			end
		else
			if itemid == item.itemid then
				table.insert(items, item.uid)
			end
		end
	end
end
return items
end

function addPokeball(cid, pokename, maxh)
local s = doPlayerAddItem(cid, pokein)
doItemSetAttribute(s, "poke", "This is "..pokename.."'s pokeball. HP = ["..maxh.."/"..maxh.."]")
doItemSetAttribute(s, "description", "Contains a " .. pokename)
end

function getPokeOutLive(cid)
dat = {}
for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do
	local item = getPlayerSlotItem(cid, slot)
	if isContainer(item.uid) then
		local items = getItemsInContainerById(item.uid, pokeout)
		for _, ui in pairs(items) do
			if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then
				table.insert(dat, ui)
			end  
		end
   end

   if item.itemid == pokeout then
		if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then
		table.insert(dat, item.uid)
		end
	end
end
return dat
end

 

 

Go/Back Pokeball System

 

By: MatheusMkalo

 

Vá em data/actions/scripts e adicione um arquivo.lua com o nome de goback.lua

Depois de ter feito isso, adicione o seguinte script no arquivo goback.lua:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

  Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>.
]]--
local pokes = {
["Dragon"] = {level = 1, go = "Vai Dragon", back = "Volte Dragon."},
["Demon"] = {level = 8, go = "Vai Demon", back = "Volte Demon."},
["Dragon Lord"] = {level = 8, go = "Vai Dragon Lord", back = "Volte Dragon Lord."},
["Rat"] = {level = 8, go = "Vai Rat", back = "Volte Rat."},
}

local msgunica = false

function onUse(cid, item, frompos, item2, topos)

local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))
local health = tonumber(getItemAttribute(item.uid, "poke"):match("%[(.-)/"))

if item.itemid == pokeout then

	if health ~= nil and health <= 0 then
		return doPlayerSendCancel(cid, "This pokemon is dead.")
	end

	if #getCreatureSummons(cid) >= 1 then
		for _,z in pairs(getCreatureSummons(cid)) do
			if getItemAttribute(item.uid, "poke"):find(getCreatureName(z)) then
				doTransformItem(item.uid, pokein)
				if msgunica then
					doCreatureSay(cid, "Back, " .. getCreatureName(z), TALKTYPE_SAY)
				else
					doCreatureSay(cid, pokes[getCreatureName(z)].back, TALKTYPE_SAY)
				end
				doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..getCreatureHealth(z).."/"..getCreatureMaxHealth(z).."]")
				setPlayerStorageValue(cid, 61204, 0)
				doSendMagicEffect(getCreaturePosition(z), 10)
				return doRemoveCreature(z)
			end
		end
	end

elseif item.itemid == pokein then

	if getTilePzInfo(getCreaturePosition(cid)) then
		return doPlayerSendCancel(cid, "You can't use pokeball in Protection Zones.")
	end

	if not canSummon(cid) then
		return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM)
	end

	if getPlayerStorageValue(cid, 63215) >= 1 then
		return doPlayerSendCancel(cid, "You can't use pokeball while surfing.")
	end

	if getPlayerStorageValue(cid, 62314) >= 1 then
		return doPlayerSendCancel(cid, "You can't use pokeball while flying.")
	end

	if getPlayerStorageValue(cid, 59987) >= 1 then
		return doPlayerSendCancel(cid, "You can't use pokeball while riding.")
	end

	for i,x in pairs(pokes) do
		if #getCreatureSummons(cid) >= 1 then
			return doPlayerSendCancel(cid, "You already summoned a pokemon.")
		end

		if i == getItemAttribute(item.uid, "poke"):sub(9, findLetter(getItemAttribute(item.uid, "poke"), "'")-1) then
			if getPlayerLevel(cid) >= x.level then
				pk =  doSummonCreature(i, getThingPosition(cid))
				doConvinceCreature(cid, pk)
				setCreatureMaxHealth(pk, tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")))
				doCreatureAddHealth(pk, maxh)
				doCreatureAddHealth(pk, health-maxh)
				doTransformItem(item.uid, pokeout)
				if msgunica then
					doCreatureSay(cid, "Go, " .. i, TALKTYPE_SAY)
				else
					doCreatureSay(cid, x.go, TALKTYPE_SAY)
				end
				doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")))
				doSendMagicEffect(getCreaturePosition(pk), 10)
				setPlayerStorageValue(cid, 61204, 1)
				registerCreatureEvent(pk, "DiePoke")
				registerCreatureEvent(cid, "PlayerPokeDeath")
				registerCreatureEvent(cid, "LogoutPoke")
				break
			else
				doPlayerSendCancel(cid, "Only players level "..x.level.." or higher can use this pokemon.")
			end
		end
	end
end
return TRUE
end

Depois, va em actions.xml e adicione a seguinte tag:

<action itemid="2222;2223" event="script" value="goback.lua"/>

Sendo que 2222 e 2223 são, respectivamente, o id da pokeball que ira "chamar" o pokemon, e o outro o id da pokeball que ira retirar o pokemon. (Seriam as pokebolas acesas e apagadas do PO)

 

Agora, para evitar alguns bugs, va em data/creaturescripts/scripts e crie um arquivo.lua com o nome goback.lua e bote o seguinte script dentro:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
function onLogout(cid)
local health,maxhealth = getSummonLifes(cid)
if getPlayerStorageValue(cid, 61204) >= 1 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then
	setPlayerStorageValue(cid, 61205, health)
	setPlayerStorageValue(cid, 61206, maxhealth)
	setPlayerStorageValue(cid, 61204, 0)
	setPlayerStorageValue(cid, 61207, 1)
end

if getPlayerStorageValue(cid, 62314) >= 1 then
	pos = getCreaturePosition(cid)
	for i = 1,8 do
		doRemoveTile(getPosDirs(getCreaturePosition(cid), i))
	end
	doRemoveTile(getCreaturePosition(cid))
	setPlayerStorageValue(cid, 61941, pos.x)
	setPlayerStorageValue(cid, 61942, pos.y)
	setPlayerStorageValue(cid, 61943, pos.z)
end
return TRUE
end

function onLogin(cid)
local pokes = {
["Dragon"] = {lookType=267, speed = 1500},
["Rat"] = {lookType=267, speed = 500},
}

local pokesfly = {
["Dragon"] = {lookType = 216, speed = 500},
}

local pokesride = {
["Dragon Lord"] = {lookType=4, speed = 3000},
["Dragon"] = {lookType=4, speed = 500},
}

if getPlayerStorageValue(cid, 62314) >= 1 then
	doCreateTile(460, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)})
	doTeleportThing(cid, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)})
	for i = 1,8 do
		doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i)
	end
	local item = getPokeOutLive(cid)[1]
	local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.")
	doSetCreatureOutfit(cid, pokesfly[tostring(a)], -1)
	doChangeSpeed(cid, pokesfly[tostring(a)].speed)
	registerCreatureEvent(cid, "PlayerPokeDeath")  
end

if getPlayerStorageValue(cid, 63215) >= 1 then
	local item = getPokeOutLive(cid)[1]
	local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.")
	doSetCreatureOutfit(cid, pokes[tostring(a)], -1)
	doChangeSpeed(cid, pokes[tostring(a)].speed)
	registerCreatureEvent(cid, "PlayerPokeDeath")
end

if getPlayerStorageValue(cid, 59987) >= 1 then
	local item = getPokeOutLive(cid)[1]
	local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.")
	doSetCreatureOutfit(cid, pokesride[tostring(a)], -1)
	doChangeSpeed(cid, pokesride[tostring(a)].speed)
	registerCreatureEvent(cid, "PlayerPokeDeath")
end

if getPlayerStorageValue(cid, 61207) >= 1 then
	local item = getPokeOutLive(cid)[1]
	doTransformItem(item, pokein)
	doRemoveCondition(cid, CONDITION_OUTFIT)
	doItemSetAttribute(item, "poke", getItemAttribute(item, "poke"):sub(#getItemAttribute(item, "poke")) ~= "]" and getItemAttribute(item, "poke") .. " HP = ["..getPlayerStorageValue(cid, 61205).."/"..getPlayerStorageValue(cid, 61206).."]" or getItemAttribute(item, "poke"))
	setPlayerStorageValue(cid, 61207, 0)
end

return TRUE
end

function onDeath(cid, deathList)
local owner = getCreatureMaster(cid)
doPlayerSendTextMessage(owner, 22, "Your pokemon died.")

for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do
	local item = getPlayerSlotItem(owner, slot)
	if isContainer(item.uid) then
		local items = getItemsInContainerById(item.uid, pokeout)
		for _, ui in pairs(items) do
			if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then
				local maxh = tonumber(getItemAttribute(ui, "poke"):match("/(.+)]"))
				doItemSetAttribute(ui, "poke", getItemAttribute(ui, "poke"):sub(1, findLetter(getItemAttribute(ui, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]")
			end
		end
   end

   if item.itemid == pokeout then
		if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then
			local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))
			doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]")
		end
   end
end
doRemoveCreature(cid)
setPlayerStorageValue(owner, 61207, 0)
setPlayerStorageValue(owner, 61204, 0)
return FALSE
end

 

Agora adicione outro arquivo.lua na pasta data/creaturescripts/scripts com o nome de playerpdeath e bote esse script:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
function onDeath(cid)
local health,maxhealth = getSummonLifes(cid)
if #getCreatureSummons(cid) >= 1 then
	setPlayerStorageValue(cid, 61205, health)
	setPlayerStorageValue(cid, 61206, maxhealth)
	setPlayerStorageValue(cid, 61204, 0)
	setPlayerStorageValue(cid, 61207, 1)
end

if getPlayerStorageValue(cid, 63215) >= 1 then
	setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61210))
	setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61209))
	setPlayerStorageValue(cid, 61204, 0)
	setPlayerStorageValue(cid, 63215, 0)
	setPlayerStorageValue(cid, 61207, 1)
end

if getPlayerStorageValue(cid, 62314) >= 1 then
	setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61262))
	setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61263))
	setPlayerStorageValue(cid, 61204, 0)
	setPlayerStorageValue(cid, 62314, 0)
	setPlayerStorageValue(cid, 61207, 1)
end

if getPlayerStorageValue(cid, 59987) >=1 then
	setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 59988))
	setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 59989))
	setPlayerStorageValue(cid, 61204, 0)
	setPlayerStorageValue(cid, 59987, 0)
	setPlayerStorageValue(cid, 61207, 1)
end
return TRUE
end

 

Depois va em creaturescripts.xml e adicione as seguintes TAGS:

<event type="death" name="PlayerPokeDeath" event="script" value="playerpdeath.lua"/>
<event type="death" name="DiePoke" event="script" value="goback.lua"/>
<event type="logout" name="LogoutPoke" event="script" value="goback.lua"/>
<event type="login" name="LoginPoke" event="script" value="goback.lua"/>

 

 

Catch Pokemon System

 

By: MatheusMkalo

 

 

Vá em data/actions/scripts e adicione um arquivo.lua com o nome de catch.lua

Depois adicione o seguinte script dentro dele:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
local pokes = {
["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200},
["Dragon Lord"] = {corpseid = 5984, chance = 100, health = 12200, maxhealth = 12200},
["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200},
}

local time = 4 -- Tempo para mandar as mensagens e adiciona item

function onUse(cid, item, frompos, item2, topos)
for i,x in pairs(pokes) do
	if item2.itemid == x.corpseid then
		doRemoveItem(item.uid, 1)
		doRemoveItem(item2.uid, 1)
		if math.random(1,100) <= x.chance then
			function add()
				local s = doPlayerAddItem(cid, pokein)
				doItemSetAttribute(s, "poke", "This is "..i.."'s pokeball. HP = ["..x.health.."/"..x.maxhealth.."]")
				doItemSetAttribute(s, "description", "Contains a " .. i)
			end
			doSendMagicEffect(topos, 24)
			addEvent(add, time*1000)
			return addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "You catch a " .. i .. ".")
		else
			addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "Your pokeball broke.")
			return doSendMagicEffect(topos, 23)
		end
	end
end
return TRUE
end

 

Depois adicione a seguinte TAG no actions.xml:

<action itemid="2147" event="script" value="catch.lua"/>

 

Sendo 2147, o id da sua pokebola para capturar pokemons (NAO A DE CHAMAR O POKEMON)

 

 

Npc Healler

 

By: MatheusMkalo

 

 

Vá em data/npc/scripts e adicione um arquivo.lua com o seguinte script:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)			npcHandler:onCreatureAppear(cid)		end
function onCreatureDisappear(cid)		npcHandler:onCreatureDisappear(cid)		end
function onCreatureSay(cid, type, msg)		npcHandler:onCreatureSay(cid, type, msg)	end
function onThink()				npcHandler:onThink()				end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then
	return false
end

if msgcontains(msg, 'heal') then
	if #getCreatureSummons(cid) >= 1 then
		return selfSay('Voce precisa botar seus pokemons dentro da pokebola.', cid)
	end

for slo = CONST_SLOT_FIRST, CONST_SLOT_LAST do
	local item = getPlayerSlotItem(cid, slo)
		if isContainer(item.uid) then
			local items = getItemsInContainerById(item.uid, pokeout)
				for i,x in pairs(items) do
					local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]"))
					doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]")
					doTransformItem(x, pokein)
				end
			local items2 = getItemsInContainerById(item.uid, pokein)
				for i,x in pairs(items2) do
					local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]"))
					doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]")
				 end

				elseif item.itemid == pokeout or item.itemid == pokein then
					 local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))
					 doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]")
					 doTransformItem(item.uid, pokein)
				end
end

	selfSay('Pronto, voce e seus pokemons estao com a life maxima.', cid)  
end
return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Depois va ate a pasta data/npc e adicione um arquivo.xml e bote isso dentro:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Pokemon Healer" script="pokehealer.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="128" head="17" body="54" legs="114" feet="0" addons="2"/>
<parameters>
	<parameter key="message_greet" value="Ola, diga {heal} para recuperar sua vida e a vida dos seus pokemons."/>
</parameters>
</npc>

 

 

Surf System

 

By: MatheusMkalo

 

Vá em data/actions/scripts e crie um arquivo.lua com o nome de surf e bote esse script dentro:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
function onUse(cid, item, frompos, item2, topos)
local configs = {
[4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player)
[4645] = {x = 2, y = 0},  -- 4645 é o id da borda leste (lado direito do player)
[4646] = {x = 0, y = 2},  -- 4646 é o id da borda sul   (abaixo do player)
[4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player)
}

local playerpos = getCreaturePosition(cid)
local pokes = {
["Dragon"] = {lookType=267, speed = 1500},
["Rat"] = {lookType=267, speed = 500},
}

if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then
	return doPlayerSendCancel(cid, "You need a pokemon to surf.")
end

l = false
for i,x in pairs(pokes) do
	if getPlayerStorageValue(cid, 63215) <= 0 and i:lower() == getCreatureName(getCreatureSummons(cid)[1]):lower() then
		l = true
	end
end

if not l and getPlayerStorageValue(cid, 63215) <= 0 then
	return doPlayerSendCancel(cid, "This pokemon can't surf.")
end

if getPlayerStorageValue(cid, 63215) <= 0 then
	doTeleportThing(cid, {x=playerpos.x+configs[item2.itemid].x, y=playerpos.y+configs[item2.itemid].y, z=playerpos.z})
	setPlayerStorageValue(cid, 63215, 1)
	doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1)
	doCreatureSay(cid, "Let's surf, "..getCreatureName(getCreatureSummons(cid)[1]), 1)
	setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
	setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))
	doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed)
	doRemoveCreature(getCreatureSummons(cid)[1])
else
	doTeleportThing(cid, {x=playerpos.x-configs[item2.itemid].x, y=playerpos.y-configs[item2.itemid].y, z=playerpos.z})
	setPlayerStorageValue(cid, 63215, 0)
	doRemoveCondition(cid, CONDITION_OUTFIT)
	local item = getPokeOutLive(cid)[1]
	doCreatureSay(cid, "Im tired of surf, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1)
	pk =  doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid))
	doConvinceCreature(cid, pk)
	registerCreatureEvent(pk, "DiePoke")
	registerCreatureEvent(cid, "PlayerPokeDeath")
	registerCreatureEvent(cid, "LogoutPoke")
	setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61209))
	doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61209))
	doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61210)-getPlayerStorageValue(cid, 61209))
	doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid))
end
return TRUE
end

 

Depois va em actions.xml e adicione essa tag:

<action itemid="4647;4645;4646;4644" event="script" value="surf.lua"/>

 

Ensinarei nos tutorias como adicionar novas bordas e botar cada pokemon com seu proprio outfit na agua.

 

OBS:Todos os scripts mudaram para implementar o surf, atualize-os

OBS2: Para funcionar o id da agua tem que ser 4820.

 

Para usar basta clicar na borda da agua.

 

Evolution System

 

By: MatheusMkalo

 

 

Vá em data/actions/scripts e adicione um script.lua com o nome de evolution.lua e bote esse script:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon System By Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon System By Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
local pokes = {
["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000},
}

local types = {
["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"},
["Venom"] = {itemid = 2278, "Zubat", "Ekans"},
["Thunder"] = {itemid = 2279, "Magnemite", "Pikachu"},
["Rock"] = {itemid = 2280, "Geodude", "Graveler"},
["Punch"] = {itemid = 2281, "Machop", "Machoke"},
["Leaf"] = {itemid = 2276, "Ivysaur"},
["Fire"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"},
["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"},
["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"},
["Darkness"] = {itemid = 2286, "Gastly", "Haunter"},
["Earth"] = {itemid = 2287, "Cubone"},
["Enigma"] = {itemid = 2288, "Abra", "Kadabra"},
["Heart"] = {itemid = 2289, "Rattata", "Pidgey"},
["Ice"] = {itemid = 2290, "Seel"},
}


function onUse(cid, item, frompos, item2, topos)
for i,x in pairs(types) do
	if item.itemid == x.itemid then
		if isCreature(item2.uid) then
			if isPlayerSummon(cid, item2.uid) then
				if table.find(x, getCreatureName(item2.uid)) then
					if getPlayerLevel(cid) >= pokes[getCreatureName(item2.uid)].level then
						local pokeball = getPokeOutLive(cid)[1]
						local slo = pokes[getCreatureName(item2.uid)].maxh
						local sle = pokes[getCreatureName(item2.uid)].evolution
						doItemSetAttribute(pokeball, "description", "Contains a " .. pokes[getCreatureName(item2.uid)].evolution)
						doPlayerSendTextMessage(cid, 27, "Your "..getCreatureName(item2.uid).." evolued to a "..pokes[getCreatureName(item2.uid)].evolution)
						doSendMagicEffect(topos, 18)
						doItemSetAttribute(pokeball, "poke", "")
						doItemSetAttribute(pokeball, "poke", "This is "..pokes[getCreatureName(item2.uid)].evolution.."'s pokeball. HP = ["..pokes[getCreatureName(item2.uid)].maxh.."/"..pokes[getCreatureName(item2.uid)].maxh.."]")
						doRemoveCreature(item2.uid)
						local pk = doSummonCreature(sle, topos)
						registerCreatureEvent(pk, "DiePoke")
						registerCreatureEvent(cid, "PlayerPokeDeath")
						registerCreatureEvent(cid, "LogoutPoke")
						doConvinceCreature(cid, pk)
						setCreatureMaxHealth(pk, slo)
						setPlayerStorageValue(cid, 61204, 1)
						doCreatureAddHealth(pk, slo)
						doRemoveItem(item.uid, 1)
						break
					else
						return doPlayerSendCancel(cid, "You need to be level "..pokes[getCreatureName(item2.uid)].level.." or higher to use this stone in this pokemon.")
					end			  
				end
			end
		end
	end
end
return TRUE
end

 

Depois vá em actions.xml e adicione esta tag:

<action itemid="2276;2277;2278;2279;2280;2281;2283;2284;2285;2286;2287;2288;2289;2290" event="script" value="evolution.lua" allowfaruse="1"/>

 

 

Fly System

 

By: MatheusMkalo, Credits: Mock

 

 

Vá em data/talkactions/scripts e adicione um arquivo.lua com o nome de fly e bote esse script:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon Systems by Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon Systems by Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
function onSay(cid, words, param)
local pokes = {
["Dragon"] = {lookType = 216, speed = 500},
}

if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 then
	doPlayerSendCancel(cid, "You need a pokemon to fly.")
end

if getPlayerStorageValue(cid, 62314) <= 0 and not pokes[getCreatureName(getCreatureSummons(cid)[1])] then
	return doPlayerSendCancel(cid, "This pokemon can't fly.")
end				

if getPlayerStorageValue(cid, 62314) <= 0  then  
	doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1)
	doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed)
	setPlayerStorageValue(cid, 61263, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
	setPlayerStorageValue(cid, 61262, getCreatureHealth(getCreatureSummons(cid)[1]))
	setPlayerStorageValue(cid, 62314, 1)
	registerCreatureEvent(cid, "LogoutPoke")
	doCreatureSay(cid, "Let's fly, "..getCreatureName(getCreatureSummons(cid)[1]), 1)
	doRemoveCreature(getCreatureSummons(cid)[1])
	local ppos = getCreaturePos(cid)
	local newpos = {x=ppos.x, y=ppos.y, z = 0}
	doCreateTile(460, newpos)
	doTeleportThing(cid, newpos)
	for i = 1,8 do
		doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i)
	end
elseif getPlayerStorageValue(cid, 62314) >= 1 then
	local ppos = getCreaturePosition(cid)

	p = true
	for i = 1,17 do

		if getTileThingByPos({x=ppos.x, y=ppos.y, z=ppos.z+i}).itemid ~= 0 and not isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then
			p = false
			break
		end

		if isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then
			l = ppos.z + i
			break
		end
	end

	if not p or getTileThingByPos({x=ppos.x, y=ppos.y, z=l}).itemid == 4820 then
		return doPlayerSendCancel(cid, "You can't down in there.")
	end

	for i = 1,8 do
		doRemoveTile(getPosDirs(getCreaturePosition(cid), i))
	end

	setPlayerStorageValue(cid, 62314, 0)
	doTeleportThing(cid, {x=ppos.x, y=ppos.y, z=l})
	doRemoveTile(ppos)
	local item = getPokeOutLive(cid)[1]
	pk =  doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid))
	doConvinceCreature(cid, pk)
	doCreatureSay(cid, "I'm tired of fly, "..getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1)
	registerCreatureEvent(pk, "DiePoke")
	registerCreatureEvent(cid, "PlayerPokeDeath")
	setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61263))
	doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61263))
	doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61262)-getPlayerStorageValue(cid, 61263))
	doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid))
	doRemoveCondition(cid, CONDITION_OUTFIT)
end	
return TRUE
end

 

Depois bote essa tag no talkaction.xml:

<talkaction words="!fly" event="script" value="fly.lua"/>

 

Va em data/movements/scripts e crie um arquivo.lua com o nome de fly.lua e bote:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon Systems by Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon Systems by Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
function onStepIn(cid, item, position, fromPosition)
local actions = {
[65120] = {del = {4,5,6}, add = {1,2,8}},
[65121] = {del = {8,7,6,5,4}, add = {8,1,2,3,4}},
[65122] = {del = {8,7,6}, add = {2,3,4}},
[65123] = {del = {2,1,8,7,6}, add = {6,5,4,3,2}},
[65124] = {del = {2,1,8}, add = {4,5,6}},
[65125] = {del = {8,1,2,3,4}, add = {8,7,6,5,4}},
[65126] = {del = {2,3,4}, add = {8,7,6}},
[65127] = {del = {6,5,4,3,2}, add = {6,7,8,1,2}},
}
local configs = actions[item.actionid]

for i = 1,8 do
	if table.find(configs.del, i) then
		doRemoveTile(getPosDirs(fromPosition, i))
	end
		doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i)
end
return TRUE
end 

 

Depois va em movements.xml e adicione essa tag:

<movevent type="StepIn" actionid="65120;65121;65122;65123;65124;65125;65126;65127" event="script" value="fly.lua"/>

 

Para usar o fly diga !fly para descer e subir

 

 

Ride System

 

By: MatheusMkalo

 

 

Vá em talkactions/scripts e crie um arquivo.lua com o nome de ride e bote esse script:

--[[
This file is part of Pokemon Systems by Mkalo.

Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

   Pokemon Systems by Mkalo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Pokemon Systems by Mkalo.  If not, see <http://www.gnu.org/licenses/>.
]]--
function onSay(cid, words)
local pokesride = {
["Dragon Lord"] = {lookType=4, speed = 3000},
["Dragon"] = {lookType=4, speed = 500},
}

if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then
	return doPlayerSendCancel(cid, "You need a pokemon to ride.")
end

if not canSummon(cid) and getPlayerStorageValue(cid, 59987) >= 1 then
	return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM)
end

local sname = #getCreatureSummons(cid) >= 1 and getCreatureName(getCreatureSummons(cid)[1]) or nil
if sname ~= nil and pokesride[sname] and getPlayerStorageValue(cid, 59987) <= 0 then
	doSetCreatureOutfit(cid, pokesride[sname], -1)
	doChangeSpeed(cid, pokesride[sname].speed)
	doCreatureSay(cid, "Let's ride, " .. sname, 1)
	setPlayerStorageValue(cid, 59987, 1)
	setPlayerStorageValue(cid, 59988, getCreatureHealth(getCreatureSummons(cid)[1]))  
	setPlayerStorageValue(cid, 59989, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
	doRemoveCreature(getCreatureSummons(cid)[1])
elseif getPlayerStorageValue(cid, 59987) >= 1 then
	setPlayerStorageValue(cid, 59987, 0)
	doRemoveCondition(cid, CONDITION_OUTFIT)
	local item = getPokeOutLive(cid)[1]
	doCreatureSay(cid, "Im tired of ride, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1)
	pk =  doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid))
	doConvinceCreature(cid, pk)
	registerCreatureEvent(pk, "DiePoke")
	registerCreatureEvent(cid, "PlayerPokeDeath")
	registerCreatureEvent(cid, "LogoutPoke")
	setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 59989))
	doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59989))
	doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59988)-getPlayerStorageValue(cid, 59989))
	doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid))
end
return TRUE
end 

 

Agora bote essa tag em talkactions.xml:

<talkaction words="!ride" event="script" value="ride.lua"/>

 

Pra usar o ride é so falar !ride. Para configurar os pokemons é praticamente igual ao surf.

 

 

Configurando os scripts

 

 

 

Como adicionar mais pokemons no go/back:

 

No inicio do script, tem essa tabela com as informaçoes:

local pokes = {

["Dragon"] = {level = 150, msgs = {"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"}},

["Demon"] = {level = 500, msgs = {"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"}},

["Dragon Lord"] = {level = 300, msgs = {"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"}},

}

 

Copie a ultima linha (vermelha) e cole logo abaixo, editando os nomes e as mensagens ficando assim:

local pokes = {

["Dragon"] = {level = 150, msgs = {"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"}},

["Demon"] = {level = 500, msgs = {"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"}},

["Dragon Lord"] = {level = 300, msgs = {"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"}},

["Dragon Lord"] = {level = 300, msgs = {"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"}},

}

 

Voce pode configurar o level para usar o poke mudando o valor de level.

 

Configurando pokemons para o catch:[/b]

 

Olhe a tabela no inicio do script:

local pokes = {

["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200},

["Dragon Lord"] = {corpseid = 2881, chance = 100, health = 12200, maxhealth = 12200},

["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200},

}

Faça o mesmo processo do acima de copiar e colar embaixo e editar:

local pokes = {

["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200},

["Dragon Lord"] = {corpseid = 2881, chance = 100, health = 12200, maxhealth = 12200},

["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200},

["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200},

}

 

Aonde as informaçoes corpseid, chance, health, maxhealth serao, respectivamente: Id do corpo do monstro, Chance de capturar em %, health que o pokemon iria ir pro player, e health maxima que o poke iria ir para o player.

 

 

Como trocar os ids das pokebolas, acesas e apagadas.

Para trocar o id da pokebola "acesa" e "apagada" basta mudar os ids 2222,2223 na lib sendo que 2222 eh o da acesa e o 2223 eh o id da apagada

 

Mude tambem na tag do action.xml que seu script ira funcionar perfeitamente.

 

Como adicionar mais bordas ao surf.

Primeiramente va em actions.xml e adicione os ids das bordas na tag do surf: (Eu fiz com a borda de areia)

<action itemid="4647;4645;4646;4644;4632;4633;4634;4635" event="script" value="surf.lua"/>

 

Depois va no script surf.lua em actions e repare nessa parte:

local configs = {

[4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player)

}

 

Copie todas as 4 bordas e cole abaixo ficando:

local configs = {

[4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player)

 

[4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player)

}

 

Depois mude os ids das bordas do lado << conforme as informaçoes do lado >>, ficando:

local configs = {

[4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player)

 

[4633] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4635] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player)

[4634] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player)

[4632] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player)

}

 

 

Como adicionar mais pokes ao surf:

Va no script surf.lua em actions e repare nessa parte:

local pokes = {

["Dragon"] = {lookType=267, speed = 1500},

["Rat"] = {lookType=267, speed = 300},

}

Ai voce pode adicionar o pokemon pra surf e o outfit que ele vai te dar na agua copiando o de cima e colando logo abaixo e editando algumas coisas:

local pokes = {

["Dragon"] = {lookType=267, speed = 1500},

["Rat"] = {lookType=267, speed = 300},

["Demon"] = {lookType=268, speed = 600},

}

 

Lembre-se de depois que acabar de editar toda a tabela no surf.lua, va no goback.lua em creaturescripts e substitua a tabela pokes, pela que esta na actions surf.lua:

 

...

function onLogin(cid)

local pokes = {

["Dragon"] = {lookType=267, speed = 1500},

["Rat"] = {lookType=267, speed = 300},

["Demon"] = {lookType=268, speed = 600},

}

 

if getPlayerStorageValue(cid, 63215) >= 1 then

local item = getPlayerItemById(cid, TRUE, pokeout)

local a = getDescription(item.uid):match("This is (.-)'s pokeball.")

doSetCreatureOutfit(cid, pokes[tostring(a)], -1)

end...

 

 

Como adicionar mais pokes no evolution:

Repare nessa parte do script evolution.lua em actions:

local pokes = {

["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000},

}

 

local types = {

["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"},

["Venom"] = {itemid = 2278, "Zubat", "Ekans"},

["Thunder"] = {itemid = 2279, "Magnemite", "Pikachu"},

["Rock"] = {itemid = 2280, "Geodude", "Graveler"},

["Punch"] = {itemid = 2281, "Machop", "Machoke"},

["Leaf"] = {itemid = 2276, "Ivysaur"},

["Fire"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"},

["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"},

["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"},

["Darkness"] = {itemid = 2286, "Gastly", "Haunter"},

["Earth"] = {itemid = 2287, "Cubone"},

["Enigma"] = {itemid = 2288, "Abra", "Kadabra"},

["Heart"] = {itemid = 2289, "Rattata", "Pidgey"},

["Ice"] = {itemid = 2290, "Seel"},

}

 

 

Bem voce deve copiar o primeiro monstro da tabela "pokes", e adicionar no final e mudar as configuraçoes:

local pokes = {

["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000},

["Bulbasaur"] = {level = 30, evolution = "Ivysaur", maxh = 4000},

}

 

Sendo level,evolution,maxh respectivamente, o level pra evoluir o poke, o nome da evoluçao, e a health maxima do pokemon evoluido.

 

Depois eh so adicionar o Nome do monstro que foi adicionado a tabela "pokes" na tabela "types", no lugar do type dele:

local types = {

["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"},

["Venom"] = {itemid = 2278, "Zubat", "Ekans"},

["Thunder"] = {itemid = 2279, "Magnemite", "Pikachu"},

["Rock"] = {itemid = 2280, "Geodude", "Graveler"},

["Punch"] = {itemid = 2281, "Machop", "Machoke"},

["Leaf"] = {itemid = 2276, "Ivysaur", "Bulbasaur"},

["Fire"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"},

["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"},

["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"},

["Darkness"] = {itemid = 2286, "Gastly", "Haunter"},

["Earth"] = {itemid = 2287, "Cubone"},

["Enigma"] = {itemid = 2288, "Abra", "Kadabra"},

["Heart"] = {itemid = 2289, "Rattata", "Pidgey"},

["Ice"] = {itemid = 2290, "Seel"},

}

 

Como adicionar mais pokes no fly:

Repare nas partes iguais no fly.lua (talkaction) e no goback.lua(creaturescripts):

 

fly.lua:

local pokein, pokeout = 2222,2223

function onSay(cid, words, param)

local pokes = {

["Dragon"] = {lookType = 216, speed = 500},

}

 

goback.lua:

function onLogin(cid)

local pokes = {

["Dragon"] = {lookType=267, speed = 1500},

["Rat"] = {lookType=267, speed = 500},

}

 

local pokesfly = {

["Dragon"] = {lookType = 216, speed = 500},

}

 

A unica coisa que mudou foi o nome da tabela, "pokes" e "pokesfly", para adicionar mais pokes no fly basta adicionar no fly.lua e botar igual no goback.lua.

 

 

 

 

Informaçoes Importantes!!!

 

 

Para testar o script de catch que esta no topico, voce deve deletar as tags de encantamento de armas.

 

Para poder summonar os pokemons com o go/back, voce precisa ir no arquivo.xml do monstro e editar essa linha:

<flag convinceable="0"/>

Se estiver convinceable="0", mude para convinceable="1" ficando:

<flag convinceable="1"/>

 

Creditos Especiais:

Kydrai pela funçao "getItemsInContainerById"

MarcelloMkez

Mock por algumas funçoes do fly system dele.

 

Agradecimentos:

D3rs00n (Me ajudou a fazer sumir o corpo do pokemon)

Julio Cezar (Ajudou reportando bugs e testando scripts)

Miih (Ajudou reportando bugs e testando scripts)

Arth3miS (Ajudou reportando bugs e testando scripts)

 

E para todos que reportaram bugs.

 

 

 

Bugs, erros, duvidas, elogios no topico[/b]

Editado por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

Mano nao estou conseguindo usar =/ da esse erro

[29/09/2010 22:47:30] Lua Script Error: [Action Interface]

[29/09/2010 22:47:30] data/actions/scripts/catch.lua:onUse

 

[29/09/2010 22:47:30] data/actions/scripts/catch.lua:13: attempt to call global 'doItemSetAttribute' (a nil value)

[29/09/2010 22:47:30] stack traceback:

[29/09/2010 22:47:30] data/actions/scripts/catch.lua:13: in function <data/actions/scripts/catch.lua:6>

Editado por Lolboss
Link para o comentário
Compartilhar em outros sites

Maniim axei 2 bugs , concerta ai pq o scrpit é otimo , vaiser otimo no meu ot ...

 

 

1 - Quando o pokemon morrre o loot fica, ai eu posso jogar ota pokebolla, e vow ter 2 pokemons, tem como colocar pro corpo sumir ?

 

2 - Derrepente do nada o poke parou de sair da pokebolla O_O , nem healando queria sair.

 

 

 

E se der coloca um efeito no catch se pegow 24 , se não 23 .

 

 

Vlw , eu ja tow usando ele aqui , só arruma isso..

 

 

---------------------Edit-----------------------

 

Se for possivel no go/back colocar lvl para usar o pokemon.

Agradeço deis de já

 

REP +

 

.

Editado por xotservx
Link para o comentário
Compartilhar em outros sites

Humm... Qual é a versao do seu ot?

 

Pra voce usar a pokeball, so pegando com o catch system, nao da para fazer /i IDDAPOKEBALL e usar ela.

Tipo, a versão do meu ot é 8.50 o cath pegou, só que eu queria fazer o go/back pegar. O script ta ótimo, só o go/back que eu nao consegui =/

Link para o comentário
Compartilhar em outros sites

@Lolboss

Infelizmente na versao 8.50, eu acho que nao existia a funçao doItemSetAttribute, vou ver aqui se acho alguma funçao para subistituir ela.

@xotservx

 

1a Duvida:

Humm, sabia que estava faltando eu explicar uma coisa, era essa mesma kkk. Jaja posto ai.

 

2a Duvida:

Nao sei oq aconteceu, oO. Nunca aconteceu isso comigo. Veja se da algum erro no console do ot.

 

Resto:

Depois eu boto para escolher o level e os efeitos.

Link para o comentário
Compartilhar em outros sites

@Lolboss

Infelizmente na versao 8.50, eu acho que nao existia a funçao doItemSetAttribute, vou ver aqui se acho alguma funçao para subistituir ela.

@xotservx

 

1a Duvida:

Humm, sabia que estava faltando eu explicar uma coisa, era essa mesma kkk. Jaja posto ai.

 

2a Duvida:

Nao sei oq aconteceu, oO. Nunca aconteceu isso comigo. Veja se da algum erro no console do ot.

 

Resto:

Depois eu boto para escolher o level e os efeitos.

 

Vlw's , e eu tentei troca os ids do item num funfo mais , pq esses id ki vc coloko não eh pokebolla no meu sprite, se vc tiver um sprite pra 8.54... as pokebolla eu colokei 2501 e 2457 . obrigado.

Link para o comentário
Compartilhar em outros sites

Infelizmente na versao 8.50, eu acho que nao existia a funçao doItemSetAttribute, vou ver aqui se acho alguma funçao para subistituir ela.

Cara se voce conseguir arrumar outra função para mim mano eu te agradeço muito, mesmo. Vlw por me responder, voce é gente boa cara

Editado por Lolboss
Link para o comentário
Compartilhar em outros sites

[30/09/2010 16:22:57] Lua Script Error: [Action Interface]

[30/09/2010 16:22:57] data/actions/scripts/goback.lua:onUse

 

[30/09/2010 16:22:57] data/actions/scripts/goback.lua:44: attempt to compare nil with number

[30/09/2010 16:22:57] stack traceback:

[30/09/2010 16:22:57] data/actions/scripts/goback.lua:44: in function <data/actions/scripts/goback.lua:9>

Olha o que deu =/ o erro do cath acabou ta de boa mais agora é o do goback =/, mais os scripts estão ótimos

Link para o comentário
Compartilhar em outros sites

Isso eh erro na pokebolla mano. Eh porque nao ta com a life do pokemon la na pokebola.

No 8.6 funcinou PERFEITAMENTE. Nenhum erro, deve ser sim o erro do doItemSetAttribute, ja estou tentando ver uma function 8.5 pra substituir ela

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...