Ir para conteúdo
  • 0

Erro ao dar look


Caktchup

Pergunta

Bom tou testando meu servidor eu dava look não aparecia nada fui ver dando erro

 

[27/11/2015 14:06:56] [Error - CreatureScript Interface]
[27/11/2015 14:06:56] data/creaturescripts/scripts/look.lua:onLook
[27/11/2015 14:06:56] Description:
[27/11/2015 14:06:56] data/lib/some functions.lua:590: attempt to concatenate a boolean value
[27/11/2015 14:06:56] stack traceback:
[27/11/2015 14:06:56] data/lib/some functions.lua:590: in function 'getPlayerDesc'
[27/11/2015 14:06:56] data/creaturescripts/scripts/look.lua:147: in function <data/creaturescripts/scripts/look.lua:1>
meu data/creaturescripts/scripts/look.lua

function onLook(cid, thing, position, lookDistance)
--alterado v1.7 peguem todo ele!!
local str = ""
if not isCreature(thing.uid) then
local iname = getItemInfo(thing.itemid)
if not isPokeball(thing.itemid) then
if priceList[getItemInfo(thing.itemid).name] then
price = priceList[getItemInfo(thing.itemid).name].price
if thing.type > 1 then
str = "You see "..thing.type.." "..getItemInfo(thing.itemid).plural.."."
price = price * thing.type
else
str = "You see "..getItemInfo(thing.itemid).article.." "..getItemInfo(thing.itemid).name.."."
end
str = str.." Price: $"..math.floor(price / 100).."."
if getItemDescriptionsById(thing.itemid).special ~= nil then
str = str.."\n"..getItemDescriptionsById(thing.itemid).special.."."
end
if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 then
str = str.."\nItemID: ["..thing.itemid.."]." --alterado v1.7
local pos = getThingPos(thing.uid)
str = str.."\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]"
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
end
end
if isPokeball(thing.itemid) then --pokeballs
local unique = getItemAttribute(thing.uid, "unique") --alterado v1.6
local pokename = getItemAttribute(thing.uid, "poke")
local item = getItemInfo(thing.itemid)
str = "You see "..item.article.."" --alterado v1.6
namae = item.name
if string.find(namae, "Ball") then
namae = string.gsub(namae, "Ball", " Ball")
end
str = str.." "..namae.."."
str = str.."\nContains "..getArticle(pokename).." "..pokename.."" --alterado v1.6
if getItemAttribute(thing.uid, "nick") and getItemAttribute(thing.uid, "nick") ~= -1 then
str = str.." ("..getItemAttribute(thing.uid, "nick")..")"
end
local boost = getItemAttribute(thing.uid, "boost") or 0
if boost > 0 then
str = str.." +"..boost..""
end
local a = {"Lucario", "Skarmory", }
for b = 1, #a do
if getItemAttribute(thing.uid, a) then
table.insert(str,"("..string.upper(getItemAttribute(thing.uid, a))..")")
end
end
str = str.."."
str = str.." Price: $"..getPokemonPrice(thing.uid).."."
if hasHeldItem(thing.uid) then
str = str.." Holding: "..getItemInfo(getHeldId(thing.uid)).name..""
end
if haveFirstTM(thing) then
if tmList[getItemAttribute(thing.uid, "tm1")] then
str = str.."\nWith: TM"..tmList[getItemAttribute(thing.uid, "tm1")].number..": "..getItemAttribute(thing.uid, "tm1")..""
else
str = str.."\nWith:\nAtualize seu TM"
end
end
if haveSecondTM(thing) then
if tmList[getItemAttribute(thing.uid, "tm2")] then
str = str.." TM"..tmList[getItemAttribute(thing.uid, "tm2")].number..": "..getItemAttribute(thing.uid, "tm2")..""
else
str = str.."\nWith:\nAtualize seu TM"
end
end
if haveThirdTM(thing) then
if tmList[getItemAttribute(thing.uid, "tm3")] then
str = str.." TM"..tmList[getItemAttribute(thing.uid, "tm3")].number..": "..getItemAttribute(thing.uid, "tm3")..""
else
str = str.."\nWith:\nAtualize seu TM"
end
end
if unique and unique == getCreatureName(cid) then
str = str.."\nIt's an unique item." --alterado v1.6
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
elseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") then --corpses
cap = 0
if isContainer(thing.uid) then
cap = getContainerCap(thing.uid) or 0
end
str = "You see a "..string.lower(iname.name)..". (Vol: "..cap..")"
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
elseif isContainer(thing.uid) then --containers
local info = getItemInfo(thing.itemid) --alterado v1.7
if info.name == "dead human" and getItemAttribute(thing.uid, "pName") then
str = "You see a dead human (Vol:"..getContainerCap(thing.uid)..")"
str = str.."\nYou recognize ".. getItemAttribute(thing.uid, "pName")..". ".. getItemAttribute(thing.uid, "article").." was killed by a "
str = str.."".. getItemAttribute(thing.uid, "attacker").."."
else
str = "You see "..info.article.." "..info.name..". (Vol:"..getContainerCap(thing.uid)..")"
end
if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 then
str = str.."\nItemID: ["..thing.itemid.."]." --alterado v1.7
local pos = getThingPos(thing.uid)
str = str.."\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]"
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
else
return true
end
end
local NPCBattle = {
["Brock"] = {artig = "He is", cidbat = "Pewter"},
["Misty"] = {artig = "She is", cidbat = "Cerulean"},
["Blaine"] = {artig = "He is", cidbat = "Cinnabar"},
["Sabrina"] = {artig = "She is", cidbat = "Saffron"}, --alterado v1.7
["Kira"] = {artig = "She is", cidbat = "Viridian"},
["Koga"] = {artig = "He is", cidbat = "Fushcia"},
["Erika"] = {artig = "She is", cidbat = "Celadon"},
["Surge"] = {artig = "He is", cidbat = "Vermilion"},
}
local npcname = getCreatureName(thing.uid)
if ehNPC(thing.uid) and NPCBattle[npcname] then --npcs duel
str = "You see "..npcname..". "..NPCBattle[npcname].artig.." leader of the gym from "..NPCBattle[npcname].cidbat.."." --alterado v1.7
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
elseif ehNPC(thing.uid) and getPlayerStorageValue(thing.uid, 697548) ~= -1 then --npcs de TV
local str = getPlayerStorageValue(thing.uid, 697548) --alterado v1.7
local pos = getThingPos(thing.uid)
str = youAre[getPlayerGroupId(cid)] and str.."\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or str
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
end
if not isPlayer(thing.uid) and not isMonster(thing.uid) then --outros npcs
str = "You see "..getCreatureName(thing.uid).."."
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
end
if isPlayer(thing.uid) then --player
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, getPlayerDesc(cid, thing.uid, false)) --alterado v1.7
return false
end
if getCreatureName(thing.uid) == "Evolution" then return false end
if not isSummon(thing.uid) then --monstros
local str = "You see a wild "..string.lower(getCreatureName(thing.uid)).."."
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return false
elseif isSummon(thing.uid) and not isPlayer(thing.uid) then --summons
if getCreatureMaster(thing.uid) == cid then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid))..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid))..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")
end
return false
end
return true
end

Se for possivel precisar
Meu data/lib/some functions.lua

function getPlayerDexList(cid)
n = 0
if not isCreature(cid) then return n end
for a,b in pairs(pokes) do
if b.dex then
if tonumber(getPlayerStorageValue(cid, b.dex)) >= 1 then
n = n + 1
end
end
end
return n
end
function getPlayerCatchList(cid)
n = 0
if not isCreature(cid) then return n end
for a,b in pairs(pokes) do
if b.catch then
if tonumber(getPlayerStorageValue(cid, b.catch.sto)) >= 1 then
n = n + 1
end
end
end
return n
end
local function getPlayerInArea(from, to)
local inarea = {}
for x=from.x, to.x do
for y=from.y, to.y do
for z=from.z, to.z do
local p = getTopCreature({x=x, y=y, z=z}).uid
if p ~= 0 and isPlayer(p) then
table.insert(inarea, p)
end
end
end
end
return inarea
end
function getPlayerInArea(fromPos, toPos) -- by jhon992
local online = getPlayersOnline()
local players = {}
for i=1, #online do
if isInArea(getPlayerPosition(online), fromPos, toPos) then
players[#players+1] = online
end
end
return players
end
function getMonstersInArea(from, to)
local inarea = {}
for x=from.x, to.x do
for y=from.y, to.y do
for z=from.z, to.z do
local p = getTopCreature({x=x, y=y, z=z}).uid
if p ~= 0 and isMonster(p) then
if (isSummon(p) and not isPlayer(getCreatureMaster(p))) or not isSummon(p) then
table.insert(inarea, p)
end
end
end
end
end
return inarea
end
function doPlayerRemoveEasterPoints(cid, count)
if not isCreature(cid) then return false end
points = getEasterPoints(cid)
if (points - count) <= 0 then return false end
if (points - count) > 0 then
setPlayerStorageValue(cid, 14264, (points - count))
return true
end
return false
end
function doTruant(cid)
if not isCreature(cid) then return false end
doRaiseStatus(cid, 0, 1.5, 0, 5)
doSleep2(cid, 5, 0, true)
addEvent(doTruant, 15000, cid)
end
function getEasterPoints(cid)
if not isCreature(cid) then return 0 end
if getPlayerStorageValue(cid, 14264) <= 0 then return 0 end
return getPlayerStorageValue(cid, 14264)
end
function doGiveEasterPoints(cid, points)
if not isCreature(cid) then return false end
setPlayerStorageValue(cid, 14264, getEasterPoints(cid) + points)
return true
end
function getItensTypeInContainer(container)
if not isContainer(container) then return {} end
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 = getItensInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif item.itemid > 0 then
table.insert(items, item.type)
end
end
end
return items
end
function getItensIDInContainer(container)
if not isContainer(container) then return {} end
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 = getItensInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif item.itemid > 0 then
table.insert(items, item.itemid)
end
end
end
return items
end
function getItensInContainer(container) -- Function By Kydrai
if not isContainer(container) then return {} end
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 = getItensInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif item.itemid > 0 then
table.insert(items, item.uid)
end
end
end
return items
end
function doPlayerAddItemStackable(cid, itemid, count)
if not isPlayer(cid) then return false end
if not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then return false end
if itemid <= 0 then return false end
playerCount = getPlayerItemCount(cid, itemid)
if playerCount > 0 then
doPlayerRemoveItem(cid, itemid, playerCount)
end
doPlayerAddItem(cid, itemid, playerCount + count)
return true
end
function doPlayerPickItem(cid, item, count, itemid, itemtype)
if not isPlayer(cid) then return false end
if not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then return false end
if item <= 0 then return false end
if count > 0 then
doPlayerRemoveItem(cid, itemid, count)
end
doPlayerAddItem(cid, itemid, count + itemtype)
doRemoveItem(item, itemtype)
return true
end
function doPlayerPickItem2(cid, count, itemid, itemtype)
if not isPlayer(cid) then return false end
if not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then return false end
if itemid <= 0 then return false end
if count > 0 then
doPlayerRemoveItem(cid, itemid, count)
end
doPlayerAddItem(cid, itemid, count + itemtype)
return true
end
function removeHeldAttribute(item)
if item <= 0 then return false end
doItemEraseAttribute(item, "heldName")
doItemEraseAttribute(item, "heldTier")
doItemEraseAttribute(item, "heldId")
return true
end
function hasHeldItem(item)
if item <= 0 then return false end
if getItemAttribute(item, "heldName") and getItemAttribute(item, "heldTier") and getItemAttribute(item, "heldId") then
return true
end
return false
end
function getHeldId(item)
if item <= 0 then return false end
if getItemAttribute(item, "heldId") then
return getItemAttribute(item, "heldId")
end
return false
end
function getHeldName(item)
if item <= 0 then return false end
if getItemAttribute(item, "heldName") then
return getItemAttribute(item, "heldName")
end
return false
end
function getHeldTier(item)
if item <= 0 then return false end
if getItemAttribute(item, "heldTier") then
return getItemAttribute(item, "heldTier")
end
return false
end
function doStartAutomaticWalk(cid)
if not isCreature(cid) then return false end
if getPlayerStorageValue(cid, 9549) >= 1 then
stopAutomaticWalk(cid)
setPlayerStorageValue(cid, 9549, -1)
return false
end
pos = getThingPos(cid)
dir = getCreatureLookDir(cid)
newpos = ""
if dir == 0 then
newpos = {x = pos.x, y = pos.y - 1, z = pos.z}
elseif dir == 1 then
newpos = {x = pos.x + 1, y = pos.y, z = pos.z}
elseif dir == 2 then
newpos = {x = pos.x, y = pos.y + 1, z = pos.z}
elseif dir == 3 then
newpos = {x = pos.x - 1, y = pos.y, z = pos.z}
end
if newpos == "" then return false end
canAutomatic = false
if getPlayerStorageValue(cid, 17000) >= 1 then
canAutomatic = true
end
if getPlayerStorageValue(cid, 63215) >= 1 then
canAutomatic = true
end
if not canAutomatic then
stopAutomaticWalk(cid)
return true
end
if getPlayerStorageValue(cid, 17000) >= 1 and getTileThingByPos(newpos).itemid == 0 then
doCreateItem(460, 1, newpos)
end
if not isWalkable(newpos) then
stopAutomaticWalk(cid)
return false
end
if getTileThingByPos(newpos).itemid ~= 0 and getTileInfo(newpos).protection then
stopAutomaticWalk(cid)
return false
elseif getHouseFromPos(newpos) then
stopAutomaticWalk(cid)
return false
end
if isCreature(getThingFromPosWithProtect(newpos)) then
stopAutomaticWalk(cid)
return false
end
setPlayerStorageValue(cid, 9548, 1)
doCreatureSetNoMove(cid, true)
doTeleportThing(cid, newpos, false)
time = 100
addEvent(doStartAutomaticWalk, time, cid)
return true
end
function stopAutomaticWalk(cid)
if not isCreature(cid) then return false end
if not isAutomaticWalking(cid) then return false end
doCreatureSetNoMove(cid, false)
setPlayerStorageValue(cid, 9548, -1)
doCreatureSay(cid, ""..getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")..", stop.", 1)
return true
end
function isAutomaticWalking(cid)
if not isCreature(cid) then return false end
if getPlayerStorageValue(cid, 9548) >= 1 then return true end
return false
end
function registerSketchName(cid, name, number)
if not isCreature(cid) or not pokes[name] or not isInArray({1,2,3,4,5,6,7,8,9,10}, number) then return false end
if getSketchName(cid, number) ~= false then return false end
sketch = "sketch0name"
sketchnumber = string.gsub(sketch, 0, number)
item = getPlayerSlotItem(cid, 8)
if item.itemid <= 0 then return false end
doItemSetAttribute(item.uid, sketchnumber, name)
return true
end
function haveSketch(cid, number)
if not isCreature(cid) or not isInArray({1,2,3,4,5,6,7,8,9,10}, number) then return false end
if getSketchName(cid, number) == false then return false end
return true
end
function getSketchName(cid, number)
if not isCreature(cid) or not isInArray({1,2,3,4,5,6,7,8,9,10}, number) then return false end
sketch = "sketch0name"
sketchname = string.gsub(sketch, 0, number)
item = getPlayerSlotItem(cid, 8)
if item.itemid <= 0 then return false end
if getItemAttribute(item.uid, sketchname) then
return getItemAttribute(item.uid, sketchname)
end
return false
end
function isPlayerFishing(cid)
if not isCreature(cid) then return false end
if not isNumber(getPlayerStorageValue(cid, 30944)) then
setPlayerStorageValue(cid, 30944, -1)
end
if getPlayerStorageValue(cid, 30944) >= 1 then return true end
return false
end
function isPlayerFishingOutfit(cid)
if not isCreature(cid) then return false end
if isInArray({1467, 1468}, getCreatureOutfit(cid).lookType) then return true end
return false
end
function isPlayerFisherOutfit(cid)
if not isCreature(cid) then return false end
if isInArray({521, 520}, getCreatureOutfit(cid).lookType) then return true end
return false
end
function setFisherOutfit(cid)
if not isCreature(cid) then return false end
outfit = getCreatureOutfit(cid)
if outfit.lookType == 521 then
doSetCreatureOutfit(cid, {lookType = 1467, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1)
return true
elseif outfit.lookType == 520 then
doSetCreatureOutfit(cid, {lookType = 1468, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1)
return true
end
return false
end
function returnFisherOutfit(cid)
if not isCreature(cid) then return false end
outfit = getCreatureOutfit(cid)
if outfit.lookType == 1467 then
doSetCreatureOutfit(cid, {lookType = 521, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1)
return true
elseif outfit.lookType == 1468 then
doSetCreatureOutfit(cid, {lookType = 520, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1)
return true
end
return false
end
function getPlayerCoins(cid)
if not isCreature(cid) then return 0 end
if not isNumber(getPlayerStorageValue(cid, 23254)) then
setPlayerStorageValue(cid, 23254, 0)
return 0
end
if getPlayerStorageValue(cid, 23254) == -1 then
return 0
elseif getPlayerStorageValue(cid, 23254) < -1 then
setPlayerStorageValue(cid, 23254, 0)
return 0
elseif getPlayerStorageValue(cid, 23254) >= 0 then
return getPlayerStorageValue(cid, 23254)
end
return 0
end
function doAddCondition2(cid, condition)
if not isCreature(cid) then return false end
return doAddCondition(cid, condition)
end
function doPlayerSetNoMove2(cid, attribute)
if not isCreature(cid) then return false end
return doPlayerSetNoMove(cid, attribute)
end
function getPlayerStorageValue2(cid, storage)
if not isCreature(cid) then return false end
return getPlayerStorageValue(cid, storage)
end
function doTeleportThing2(cid, pos, string)
eff = false
if not isCreature(cid) then return false end
if string then
eff = true
end
return doTeleportThing(cid, pos, eff)
end
function doPlayerSendCancel2(cid, msg)
if not isCreature(cid) then return false end
if isPlayer(cid) then
return doPlayerSendCancel(cid, msg)
end
return false
end
function getStonePrice(id)
if not isStone(id) then return 0 end
comumStone = {11448, 11450, 11451, 11452, 11447, 11453, 11454, 11441, 11446, 11445, 11444, 11443, 11442}
if isInArray(comumStone, id) then
return 5000
else
return 10000
end
return 0
end
function getPokemonPrice(item)
if not pokes[getItemAttribute(item, "poke")] then return 0 end
stoneprice = 0
price = 0
name = getItemAttribute(item, "poke")
boost = getItemAttribute(item, "boost") or 0
if boost >= 1 then
stoneid = doConvertTypeToId(pokes[name].type)
stoneprice = getStonePrice(stoneid) * boost
end
price = pokePrice[name] or pokes[name].level * 150
price = stoneprice + price
return price
end
function getPokeTotalPriceInContainer(container)
balls = getPokeballsInContainer(container)
stoneprice = 0
prices = {}
if #balls >= 1 then
for i = 1, #balls do
if pokes[getItemAttribute(balls, "poke")] then
name = getItemAttribute(balls, "poke")
boost = getItemAttribute(balls, "boost") or 0
if boost >= 1 then
stoneid = doConvertTypeToId(pokes[name].type)
stoneprice = getStonePrice(stoneid) * boost
end
price = pokePrice[name] or pokes[name].level * 150
price = stoneprice + price
else
price = 0
end
table.insert(prices, math.floor(price))
end
end
price1 = 0
price2 = 0
price3 = 0
price4 = 0
price5 = 0
price6 = 0
if #prices == 6 then
price1 = prices[1]
price2 = prices[2]
price3 = prices[3]
price4 = prices[4]
price5 = prices[5]
price6 = prices[6]
elseif #prices == 5 then
price1 = prices[1]
price2 = prices[2]
price3 = prices[3]
price4 = prices[4]
price5 = prices[5]
elseif #prices == 4 then
price1 = prices[1]
price2 = prices[2]
price3 = prices[3]
price4 = prices[4]
elseif #prices == 3 then
price1 = prices[1]
price2 = prices[2]
price3 = prices[3]
elseif #prices == 2 then
price1 = prices[1]
price2 = prices[2]
elseif #prices == 1 then
price1 = prices[1]
end
pricetotal = price1 + price2 + price3 + price4 + price5 + price6
return math.floor(pricetotal)
end
function getPokeNamesInContainer(container)
balls = getPokeballsInContainer(container)
names = {}
if #balls >= 1 then
for i = 1, #balls do
local name = getItemAttribute(balls, "poke")
table.insert(names, name)
end
end
return names
end
function doWriteArchive(txt, archive)
local test = io.open(archive, "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n"..txt..""
local reopen = io.open(archive, "w")
reopen:write(read)
reopen:close()
return true
end
function isElderPokemon(name)
if name == nil then return false end
elders = {"Elder ", "Master ", "Undefeated ", "Brute Ursaring"}
for i = 1, #elders do
if string.find(name, elders) then return true end
end
return false
end
function isOutlanderPokemon(name)
if name == nil then return false end
for i = 1, #outlandNames do
if string.find(name, outlandNames) then return true end
end
return false
end
function isLegendaryPokemon(name)
if name == nil then return false end
if isInArray({"Mewtwo", "Mew", "Articuno", "Zapdos", "Moltres", "Lugia", "Ho-oh", "Celebi", "Entei", "Raikou", "Suicune", "Darkrai", "Cresselia", "Heatran", "Latios", "Latias", "Manaphy", "Phione", "Uxie", "Mesprit", "Azelf", "Regice", "Registeel", "Regirock", "Regigigas", "Groudon", "Rayquaza", "Kyogre", "Jirachi", "Deoxys", "Shaymin", "Giratina", "Dialga", "Palkia", "Arceus"}, name) then
return true
end
return false
end
function isFossilPokemon(name)
if name == nil then return false end
if isInArray({"Aerodactyl", "Kabuto", "Kabutops", "Omanyte", "Omastar"}, name) then
return true
end
return false
end
function isMegaPokemon(name)
if name == nil then return false end
if isInArray({"Mega Alakazam", "Mega Blastoise", "Mega Charizard", "Mega Blaziken", "Mega Lucario", "Mega Gengar"}, name) then
return true
end
return false
end
function sendMsgToPlayer(cid, tpw, msg) --alterado v1.7 \/\/\/
if not isCreature(cid) or not tpw or not msg then return true end
doPlayerSendTextMessage(cid, tpw, msg)
end
function getPlayerDesc(cid, thing, TV)
if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" end
local pos = getThingPos(thing)
local ocup = youAre[getPlayerGroupId(thing)]
local rank = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)]
local name = thing == cid and "yourself" or getCreatureName(thing)
local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")
local str = {}
table.insert(str, "You see "..name..". "..art.." ")
if youAre[getPlayerGroupId(thing)] then
table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")
else
table.insert(str, (rank).." from ".. getTownName(getPlayerTown(thing))..".")
end
if getPlayerGuildId(thing) > 0 then
table.insert(str, " "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing)..".")
end
if not getPlayerStorageValue(thing, 89051) then
setPlayerStorageValue(thing, 89051, 0)
end
if not getPlayerStorageValue(thing, 89052) then
setPlayerStorageValue(thing, 89052, 0)
end
if getPlayerStorageValue(thing, 89051) and getPlayerStorageValue(thing, 89051) >= 0 then
table.insert(str, " PvP Winner: "..tonumber(getPlayerStorageValue(thing, 89051))..".")
end
if getPlayerStorageValue(thing, 89052) and getPlayerStorageValue(thing, 89052) >= 0 then
table.insert(str, " PvP Losses: "..tonumber(getPlayerStorageValue(thing, 89052))..".")
end
if TV then
table.insert(str, " "..art.." watching TV.")
end
table.insert(str, ((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or ""))
return table.concat(str)
end
function getTopsPvp(t)
local toget = 89051
local title = ""
local ty = ""
if t == "win" then
toget = 89051
title = "Top PvP Kills"
ty = "Kills"
elseif t == "loss" then
toget = 89052
title = "Top PvP Deaths"
ty = "Deaths"
end
local toplvls = {}
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..(toget).." ORDER BY `value` DESC LIMIT 15;")
if (query:getID() ~= -1) then k = 1 repeat if k > 15 then break end
table.insert(toplvls, {player=getPlayerNameByGUID(query:getDataInt("player_id")), points=query:getDataInt("value")})
k = k + 1 until not query:next()
end
local str = title
str=str.."\n".."Rank. Name - "..ty.."\n"
table.sort(toplvls, function(value1, value2) return value1.points > value2.points end)
for x=1, #toplvls do
str = (str.."\n".. x .. ". "..toplvls[x].player.." - "..toplvls[x].points)
end
str = str.."\n\n".."Last update: "..os.date()
return tostring(str)
end
function getLivePokes(cid)
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
local count = 0
local balls = getPokeballsInContainer(bp.uid)
if #balls >= 1 then
for _, uid in ipairs(balls) do
if getItemAttribute(uid, "hp") and getItemAttribute(uid, "hp") > 0 then
count = count +1
end
end
end
return count
end
------------------------------------------------------------------------------------------------- /\/\
function getLivePokeballs(cid, container)
if not isCreature(cid) then return {} end
if not isContainer(container) then return {} end
local items = {}
---
local ballSlot = getPlayerSlotItem(cid, 8)
if ballSlot.uid ~= 0 then
for a, b in pairs (pokeballs) do
if ballSlot.itemid == b.on or ballSlot.itemid == b.use then
table.insert(items, ballSlot.uid)
end
end
end
---
if isContainer(container) and getContainerSize(container) > 0 then --alterado v1.6.1
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getPokeballsInContainer(item.uid)
for i=0, #itemsbag do
if not isInArray(items, itemsbag) then
table.insert(items, itemsbag)
end
end
elseif isPokeball(item.itemid) then
for a, b in pairs (pokeballs) do
if item.itemid == b.on then
table.insert(items, item.uid)
end
end
end
end
end
return items
end
function addItemInFreeBag(container, item, num)
if not isContainer(container) then return false end
if not item then return false end
if not num then num = 1 end --alterado v1.6.1
if getContainerSize(container) < getContainerCap(container) then
return doAddContainerItem(container, item, num)
else
for slot = 0, (getContainerSize(container)-1) do
local container2 = getContainerItem(container, slot)
if isContainer(container2.uid) and getContainerSize(container2.uid) < getContainerCap(container2.uid) then
return doAddContainerItem(container2.uid, item, num)
end
end
end
return false
end
------------------------------------------------------------------------------------------------------
function pokeHaveReflect(cid)
if not isCreature(cid) then return false end
local table = getTableMove(cid, "Reflect")
if table and table.name then --alterado v1.6
return true
end
return false
end
function nextHorario(cid)
horarioAtual = os.date("%X")
horario = string.explode(horarioAtual, ":")
for i = 1, #horas do
horarioComparacao = horas
horarioComp = string.explode(horarioComparacao, ":")
---------------
if tonumber(horarioComp[1]) > tonumber(horario[1]) then
return horarioComparacao --alterado v1.3
elseif tonumber(horarioComp[1]) == tonumber(horario[1]) and tonumber(horario[2]) < tonumber(horarioComp[2]) then
return horarioComparacao
end
end
return horas[1] --alterado v1.3
end
function getTimeDiff(timeDiff)
local dateFormat = {
{'hour', timeDiff / 60 / 60}, --6%
{'min', timeDiff / 60 % 60},
}
local out = {} --alterado v1.3
for k, t in ipairs(dateFormat) do
local v = math.floor(t[2])
if(v > -1) then
table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
end
end
if tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then
return "seconds"
end
return table.concat(out)
end
function showTimeDiff(timeComp)
local b = string.explode(os.date("%X"), ":")
local c = string.explode(timeComp, ":")
---
local d, m, y = os.date("%d"), os.date("%m"), os.date("%Y")
local hAtual, mAtual = tonumber(b[1]), tonumber(b[2])
local hComp, mComp = tonumber(c[1]), tonumber(c[2])
---
local t = os.time{year= y, month= m, day= d, hour= hAtual, min= mAtual}
local t1 = os.time{year= y, month= m, day= d, hour= hComp, min= mComp}
--- --alterado v1.3
comparacao = t1-t
if hComp < hAtual then
v = os.time{year= y, month= m, day= d, hour= 24, min= 0}
v2 = os.time{year= y, month= m, day= d, hour= 0, min= 0}
comparacao = (v-t)+(t1-v2)
end
return getTimeDiff(comparacao)
end
-------------------------------------------------------------------------
function cleanCMcds(item)
if item ~= 0 then
for c = 1, 15 do --alterado v1.5
local str = "cm_move"..c
setCD(item, str, 0)
end
end
end
function ehNPC(cid)
if isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid) then
return true
end --alterado v1.5
return false
end
function ehMonstro(cid)
if not isPlayer(cid) and not isSummon(cid) and not isNpc(cid) then
return true
end --function pro exp.lua...
return false
end
function doAppear(cid) --Faz um poke q tava invisivel voltar a ser visivel...
if not isCreature(cid) then return true end
doRemoveCondition(cid, CONDITION_INVISIBLE)
doRemoveCondition(cid, CONDITION_OUTFIT)
doCreatureSetHideHealth(cid, false)
if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
if isSummon(cid) then
local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v1.6.1
end
end
end
function doDisapear(cid) --Faz um pokemon ficar invisivel
if not isCreature(cid) then return true end
doCreatureAddCondition(cid, permanentinvisible)
doCreatureSetHideHealth(cid, true)
doSetCreatureOutfit(cid, {lookType = 2}, -1)
end
function hasTile(pos) --Verifica se tem TILE na pos
pos.stackpos = 0
if getTileThingByPos(pos).itemid >= 1 then
return true
end
return false
end
function getThingFromPosWithProtect(pos) --Pega uma creatura numa posiçao com proteçoes
if hasTile(pos) then
if isCreature(getRecorderCreature(pos)) then
return getRecorderCreature(pos)
else
pos.stackpos = 253
pid = getThingfromPos(pos).uid
end
else
pid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uid
end
return pid
end
function getTileThingWithProtect(pos) --Pega um TILE com proteçoes
if hasTile(pos) then
pos.stackpos = 0
pid = getTileThingByPos(pos)
else
pid = getTileThingByPos({x=1,y=1,z=10,stackpos=0})
end
return pid
end
function canAttackOther(cid, pid) --Function q verifica se um poke/player pode atacar outro poke/player
if not isCreature(cid) or not isCreature(pid) then return "Cant" end
local master1 = isSummon(cid) and getCreatureMaster(cid) or cid
local master2 = isSummon(pid) and getCreatureMaster(pid) or pid
if getPlayerStorageValue(master1, 89050) >= 1 and getPlayerStorageValue(master2, 89050) >= 1 then
return "Can"
end
--alterado v1.6.1 Party system agora eh simplismente party system kk
---- --alterado v1.6 duel system
if getPlayerStorageValue(master1, 6598754) >= 5 and getPlayerStorageValue(master2, 6598754) >= 5 then
if getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) then
if getPlayerStorageValue(master1, 52482) == getCreatureName(master2) and getPlayerStorageValue(master2, 52482) == getCreatureName(master1) then
if isSummon(cid) and isPlayer(pid) then
return "Cant"
else
return "Can"
end
end
end
end
---- pvp system
if getPlayerStorageValue(master1, 6598754) >= 1 and getPlayerStorageValue(master2, 6598755) >= 1 then
return "Can"
end
if getPlayerStorageValue(master1, 6598755) >= 1 and getPlayerStorageValue(master2, 6598754) >= 1 then ---estar em times diferentes
return "Can"
end
----
if ehMonstro(cid) or ehMonstro(pid) then
return "Can"
end
return "Cant"
end
function stopNow(cid, time) --function q faz o poke/player ficar imovel por um tempo
if not isCreature(cid) then return true end
if isSleeping(cid) then return true end
local speed = getCreatureSpeed(cid)
if isPlayer(cid) then
mayNotMove(cid, true)
addEvent(mayNotMove, time, cid, false)
else
doChangeSpeed(cid, -speed)
addEvent(doRegainSpeed, time, cid)
end
end
function doReduceStatus(cid, off, def, agi) --reduz os status
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A - off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B - def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C - agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end --alterado v1.5 functions arrumadas...
end
end
function doRaiseStatus(cid, off, def, agi, time)
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A * off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B * def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C + agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end
end
local D = getOffense(cid)
local E = getDefense(cid)
local F = getSpeed(cid)
---------------------------
local G = D - A
local H = E - B
local I = F - C
addEvent(doReduceStatus, time*1000, cid, G, H, I)
end
function BackTeam(cid)
if isCreature(cid) then
local summon = getCreatureSummons(cid) --alterado v1.6
for i = 2, #summon do
doSendMagicEffect(getThingPos(summon), 211)
doRemoveCreature(summon)
end
setPlayerStorageValue(cid, 637501, -1)
end
end
function choose(...) -- by mock
local arg = {...}
return arg[math.random(1,#arg)]
end
function AddPremium(cid, days)
local function removerPlayer(cid)
if isCreature(cid) then
doRemoveCreature(cid)
end
end
db.executeQuery("UPDATE `accounts` SET `premdays` = '"..days.."' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos.")
addEvent(removerPlayer, 5*1000, cid)
return TRUE
end
function isShiny(cid)
if not isCreature(cid) then
return false
end
if string.find(tostring(getCreatureName(cid)), "Shiny") then
return true
end
return false
end
function isShinyName(name) --verifica se um nome tem a palavra "Shiny" nele...
if string.find(tostring(name), "Shiny") then
return true
end
return false
end
function doConvertTypeToStone(type, string)
local t = {
["fly"] = {heart, "heart"},
["flying"] = {heart, "heart"},
["normal"] = {heart, "heart"},
["fire"] = {fire, "fire"},
["grass"] = {leaf, "leaf"},
["leaf"] = {leaf, "leaf"},
["water"] = {water, "water"},
["poison"] = {venom, "venom"},
["venom"] = {venom, "venom"},
["electric"] = {thunder, "thunder"},
["thunder"] = {thunder, "thunder"},
["rock"] = {rock, "rock"},
["fight"] = {punch, "punch"},
["fighting"] = {punch, "punch"},
["bug"] = {coccon, "coccon"},
["dragon"] = {crystal, "crystal"},
["dark"] = {dark, "dark"},
["ghost"] = {dark, "dark"},
["ground"] = {earth, "earth"},
["earth"] = {earth, "earth"},
["psychic"] = {enigma, "enigma"},
["steel"] = {metal, "metal"},
["metal"] = {metal, "metal"},
["ice"] = {ice, "ice"},
}
if string then
return t[type][2]
else
return t[type][1]
end
end
function doConvertTypeToId(type)
local t = {
["fly"] = {11453},
["flying"] = {11453},
["normal"] = {11453},
["fire"] = {11447},
["grass"] = {11441},
["leaf"] = {11441},
["water"] = {11442},
["poison"] = {11443},
["venom"] = {11443},
["electric"] = {11444},
["thunder"] = {11444},
["rock"] = {11445},
["fight"] = {11446},
["fighting"] = {11446},
["bug"] = {11448},
["dragon"] = {11449},
["dark"] = {11450},
["ghost"] = {11450},
["ground"] = {11451},
["earth"] = {11451},
["psychic"] = {11454},
["steel"] = {12232},
["metal"] = {12232},
["ice"] = {11454},
}
return t[type][1]
end
function doConvertStoneIdToString(stoneID)
local t = {
[11453] = "Heart Stone",
[11441] = "Leaf Stone",
[11442] = "Water Stone",
[11443] = "Venom Stone",
[11444] = "Thunder Stone",
[11445] = "Rock Stone",
[11446] = "Punch Stone",
[11447] = "Fire Stone", --alterado v1.6
[11448] = "Coccon Stone",
[11449] = "Crystal Stone",
[11450] = "Darkness Stone",
[11451] = "Earth Stone",
[11452] = "Enigma Stone",
[11454] = "Ice Stone",
[12244] = "King's Rock",
[12232] = "Metal Coat",
[12242] = "Sun Stone",
[12401] = "Shiny Fire Stone",
[12402] = "Shiny Water Stone",
[12403] = "Shiny Leaf Stone",
[12404] = "Shiny Heart Stone",
[12405] = "Shiny Enigma Stone",
[12406] = "Shiny Rock Stone",
[12407] = "Shiny Venom Stone",
[12408] = "Shiny Ice Stone",
[12409] = "Shiny Thunder Stone",
[12410] = "Shiny Crystal Stone",
[12411] = "Shiny Cocoon Stone",
[12412] = "Shiny Darkness Stone",
[12413] = "Shiny Punch Stone",
[12414] = "Shiny Earth Stone",
[12417] = "Shiny Stone",
[12419] = "Up-Grade",
[12245] = "Magmarizer",
}
if t[stoneID] then
return t[stoneID]
else
return ""
end
end
function isStone(id)
if id >= leaf and id <= ice then
return true
end
if id == 12232 or id == 12242 or id == 12244 or id == 12245 then
return true --alterado v1.7 com as stones shinys tb soh pra garantir.. ^^
end
if (id >= sfire and id <= searth) or id == 12417 or id == 12419 then
return true
end
if id == 12419 or id == 12245 then
return true
end
return false
end
function isWater(id)
if id >= 4820 and id <= 4825 then
return true
end
return false
end
function getTopCorpse(position)
local pos = position
for n = 1, 255 do
pos.stackpos = n
local item = getTileThingByPos(pos)
if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then
return getTileThingByPos(pos)
end
end
return null
end
bpslot = CONST_SLOT_BACKPACK
function hasPokemon(cid)
if not isCreature(cid) then return false end
if getCreatureMana(cid) <= 0 then return false end
if #getCreatureSummons(cid) >= 1 then return true end
local item = getPlayerSlotItem(cid, CONST_SLOT_FEET)
local bp = getPlayerSlotItem(cid, bpslot)
for a, b in pairs (pokeballs) do
if item.itemid == b.on or item.itemid == b.use then
return true --alterado v1.4
end
if #getItemsInContainerById(bp.uid, b.on) >= 1 then
return true
end
end
return false
end
function isNpcSummon(cid)
return isNpc(getCreatureMaster(cid))
end
function getPokemonHappinessDescription(cid)
if not isCreature(cid) then return true end
local str = ""
if getPokemonGender(cid) == SEX_MALE then
str = "He"
elseif getPokemonGender(cid) == SEX_FEMALE then
str = "She"
else
str = "It"
end
local h = getPlayerStorageValue(cid, 1008)
if h >= tonumber(getConfigValue('PokemonStageVeryHappy')) then
str = str.." is very happy with you!"
elseif h >= tonumber(getConfigValue('PokemonStageHappy')) then
str = str.." is happy."
elseif h >= tonumber(getConfigValue('PokemonStageOK')) then
str = str.." is unhappy."
elseif h >= tonumber(getConfigValue('PokemonStageSad')) then
str = str.." is sad."
elseif h >= tonumber(getConfigValue('PokemonStageMad')) then
str = str.." is mad."
else
str = str.." is very mad at you!"
end
return str
end
function doSetItemAttribute(item, key, value)
doItemSetAttribute(item, key, value)
end
function deTransform(cid, check)
if not isCreature(cid) then return true end
local m = getCreatureMaster(cid)
local p = getPlayerSlotItem(m, 8)
if getItemAttribute(p.uid, "transTurn") ~= check then return true end
setPlayerStorageValue(cid, 1010, getCreatureName(cid) == "Ditto" and "Ditto" or "Shiny Ditto") --edited
doRemoveCondition(cid, CONDITION_OUTFIT)
doSendMagicEffect(getThingPos(cid), 184)
doCreatureSay(cid, "DITTO!", TALKTYPE_MONSTER)
doItemSetAttribute(p.uid, "transBegin", 0)
doItemSetAttribute(p.uid, "transLeft", 0)
doItemEraseAttribute(p.uid, "transName")
adjustStatus(cid, p.uid, true, true, false)
end
function isTransformed(cid)
if getPlayerStorageValue(cid, 1010) == "Ditto" or getPlayerStorageValue(cid, 1010) == "Shiny Ditto" then
return false --edited
else
return true
end
end
function doSendFlareEffect(pos)
local random = {28, 29, 79}
doSendMagicEffect(pos, random[math.random(1, 3)])
end
function isDay()
local a = getWorldTime()
if a >= 360 and a < 1080 then
return true
end
return false
end
function doPlayerSendTextWindow(cid, p1, p2)
if not isCreature(cid) then return true end
local item = 460
local text = ""
if type(p1) == "string" then
doShowTextDialog(cid, item, p1)
else
doShowTextDialog(cid, p1, p2)
end
end
function getClockString(tw)
local a = getWorldTime()
local b = a / 60
local hours = math.floor(b)
local minut = a - (60 * hours)
if not tw then
if hours < 10 then
hours = "0"..hours..""
end
if minut < 10 then
minut = "0"..minut..""
end
return hours..":"..minut
else
local sm = "a.m"
if hours >= 12 then
hours = hours - 12
sm = "p.m"
end
if hours < 10 then
hours = "0"..hours..""
end
if minut < 10 then
minut = "0"..minut..""
end
return hours..":"..minut.." "..sm
end
end
function doCorrectPokemonName(poke)
return doCorrectString(poke)
end
function doCorrectString(poke)
local name = ""
if poke then
local n = string.explode(poke, " ")
local str = string.sub(n[1], 1, 1)
local sta = string.sub(n[1], 2, string.len(n[1]))
name = ""..string.upper(str)..""..string.lower(sta)..""
if n[2] then
str = string.sub(n[2], 1, 1)
sta = string.sub(n[2], 2, string.len(n[2]))
name = name.." "..string.upper(str)..""..string.lower(sta)..""
end
if n[3] then
str = string.sub(n[3], 1, 1)
sta = string.sub(n[3], 2, string.len(n[3]))
name = name.." "..string.upper(str)..""..string.lower(sta)..""
end
end
return name
end
function getHappinessRate(cid)
if not isCreature(cid) then return 1 end
local a = getPlayerStorageValue(cid, 1008)
if a == -1 then return 1 end
if a >= getConfigValue('PokemonStageVeryHappy') then
return happinessRate[5].rate
elseif a >= getConfigValue('PokemonStageHappy') then
return happinessRate[4].rate
elseif a >= getConfigValue('PokemonStageOK') then
return happinessRate[3].rate
elseif a >= getConfigValue('PokemonStageSad') then
return happinessRate[2].rate
else
return happinessRate[1].rate
end
return 1
end
function doBodyPush(cid, target, go, pos)
if not isCreature(cid) or not isCreature(target) then
doRegainSpeed(cid)
doRegainSpeed(target)
return true
end
if go then
local a = getThingPos(cid)
doChangeSpeed(cid, -getCreatureSpeed(cid))
if not isPlayer(target) then
doChangeSpeed(target, -getCreatureSpeed(target))
end
doChangeSpeed(cid, 200)
doTeleportThing(cid, getThingPos(target))
doChangeSpeed(cid, -200)
addEvent(doBodyPush, 350, cid, target, false, a)
else
doChangeSpeed(cid, 800)
doTeleportThing(cid, pos)
doRegainSpeed(cid)
doRegainSpeed(target)
end
end
function doReturnPokemon(cid, pokemon, pokeball, effect, hideeffects, blockevo)
--////////////////////////////////////////////////////////////////////////////////////////--
checkDuel(cid) --alterado v1.6 duel system
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then
BackTeam(cid)
end
end
-----------------
local edit = true
if not pokeball then
pokeball = getPlayerSlotItem(cid, 8)
end
if blockevo then
edit = false
doPlayerSendCancel(cid, "Your pokemon couldn't evolve due to server mistakes, please wait until we fix the problem.")
end
local happy = getPlayerStorageValue(pokemon, 1008)
local hunger = getPlayerStorageValue(pokemon, 1009)
local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
if edit then
doItemSetAttribute(pokeball.uid, "happy", happy)
doItemSetAttribute(pokeball.uid, "hunger", hunger)
doItemSetAttribute(pokeball.uid, "hp", pokelife)
end
if getCreatureName(pokemon) == "Ditto" then
if isTransformed(pokemon) then
local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin"))
doItemSetAttribute(pokeball.uid, "transLeft", left)
end
end
if hideeffects then
doRemoveCreature(pokemon)
return true
end
local pokename = getPokeName(pokemon)
local mbk = gobackmsgs[math.random(1, #gobackmsgs)].back:gsub("doka", pokename)
if getCreatureCondition(cid, CONDITION_INFIGHT) then
if isCreature(getCreatureTarget(cid)) then
doItemSetAttribute(pokeball.uid, "happy", happy - 5)
else
doItemSetAttribute(pokeball.uid, "happy", happy - 2)
end
end
doTransformItem(pokeball.uid, pokeball.itemid-1)
doCreatureSay(cid, mbk, TALKTYPE_MONSTER)
doSendMagicEffect(getCreaturePosition(pokemon), effect)
doRemoveCreature(pokemon)
if useOTClient then
doPlayerSendCancel(cid, '12//,hide') --alterado v1.7
end
if useKpdoDlls then
doUpdateMoves(cid)
end
end
local EFFECTS = {
--[OutfitID] = {Effect}
["Magmar"] = 35,
["Magmortar"] = 35,
["Magby"] = 35,
["Smoochum"] = 17,
["Jynx"] = 17,
["Shiny Jynx"] = 17,
}
function doGoPokemon(cid, item)
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
return true
end
---------------------------------------------------------------
local ballName = getItemAttribute(item.uid, "poke")
btype = getPokeballType(item.itemid)
local effect = pokeballs[btype].effect
if not effect then
effect = 21
end
-----------------------------------------------------------------
if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
return TRUE
end
local thishp = getItemAttribute(item.uid, "hp")
if thishp <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "This pokemon is fainted.")
return true
end
end
local pokemon = getItemAttribute(item.uid, "poke")
if not pokes[pokemon] then
return true
end
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
local low = {}
local lw = 1
for e, f in pairs(pokeballs) do
for times = 1, 3 do
local items = getItemsInContainerById(bp.uid, pokeballs[e].all[times])
if #items >= 1 then --alterado v1.6
for _, uid in pairs(items) do
local nome1 = getItemAttribute(uid, "poke")
if not isInArray(lowPokes, pokemon) and nome1 == pokemon then
return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than two pokemons equals!")
elseif isInArray(lowPokes, pokemon) then
if nome1 == pokemon then
table.insert(low, lw, nome1)
lw = lw +1
end
end
end
end
end
end
if #low >= 3 then
return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
end
end
---------------------------------------------------------------------------------------------------------------------------------------------------
local x = pokes[pokemon]
local boosts = getItemAttribute(item.uid, "boost") or 0
if getPlayerLevel(cid) < x.level then
doPlayerSendCancel(cid, "You need level "..x.level.." to use this pokemon.")
return true
end
--------------------------------------------------------------------------------------
shinysClan = {
["Shiny Fearow"] = {4, "Wingeon"},
["Shiny Flareon"] = {1, "Volcanic"},
["Shiny Vaporeon"] = {2, "Seavel"},
["Shiny Jolteon"] = {9, "Raibolt"},
["Shiny Hypno"] = {7, "Psycraft"},
["Shiny Golem"] = {3, "Orebound"},
["Shiny Vileplume"] = {8, "Naturia"},
["Shiny Nidoking"] = {5, "Malefic"},
["Shiny Hitmontop"] = {6, "Gardestrike"}, --alterado v1.4
}
if shinysClan[pokemon] and (getPlayerGroupId(cid) < 3 or getPlayerGroupId(cid) > 6) then
if getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] then
doPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")
return true
elseif getPlayerStorageValue(cid, 862281) ~= 5 then
doPlayerSendCancel(cid, "You need be atleast rank 5 to use this pokemon!")
return true
end
end
--------------------------------------------------------------------------------------
doSummonMonster(cid, pokemon)
local pk = getCreatureSummons(cid)[1]
if not isCreature(pk) then return true end
------------------------passiva hitmonchan------------------------------
if isSummon(pk) then
--local e = getCreatureMaster(cid)
local nameHIT = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")
local hands = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "hands")
if nameHIT == "Shiny Hitmonchan" or nameHIT == "Hitmonchan" then
if getItemAttribute(getPlayerSlotItem(cid, 8).uid, "hands") then
doSetCreatureOutfit(pk, {lookType = hitmonchans[nameHIT][hands].out}, -1)
else
doPlayerSendTextMessage(cid, 27, "Contact a GameMaster! Error in passive system! Attribute \"hands\" missing")
end
end
end
-------------------------------------------------------------------------
---------movement magmar, jynx-------------
if EFFECTS[getCreatureName(pk)] then --alterado v1.5
markPosEff(pk, getThingPos(pk))
sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) --alterado v1.5
end
--------------------------------------------------------------------------
if getCreatureName(pk) == "Ditto" then
local left = getItemAttribute(item.uid, "transLeft")
local name = getItemAttribute(item.uid, "transName")
if left and left > 0 then
setPlayerStorageValue(pk, 1010, name)
doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
doItemSetAttribute(item.uid, "transBegin", os.clock())
else
setPlayerStorageValue(pk, 1010, "Ditto")
end
end
if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end
doCreatureSetLookDir(pk, 2)
adjustStatus(pk, item.uid, true, true, true)
doAddPokemonInOwnList(cid, pokemon)
doTransformItem(item.uid, item.itemid+1)
local pokename = getPokeName(pk) --alterado v1.7
local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
doCreatureSay(cid, mgo, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pk), effect)
unLock(item.uid) --alterado v1.8
local pk = getCreatureSummons(cid)[1]
local pb = getPlayerSlotItem(cid, 8).uid
local look = getItemAttribute(pb,"addon")
if not look then
doSetItemAttribute(pb,"addon",0)
end
if look > 0 then
doSetCreatureOutfit(pk, {lookType = look}, -1)
end
if useKpdoDlls then
doUpdateMoves(cid)
end
end
function doRegainSpeed(cid)
if not isCreature(cid) then return true end
if isPlayer(cid) or ehNPC(cid) then --alterado v1.7 \/
doChangeSpeed(cid, -getCreatureSpeed(cid))
local speed = PlayerSpeed
if isPlayer(cid) and isInArray({4, 5, 6}, getPlayerGroupId(cid)) then
speed = 150*getPlayerGroupId(cid)
end
if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
doRemoveCondition(cid, CONDITION_PARALYZE)
addEvent(doAddCondition, 10, cid, paralizeArea2)
end
doChangeSpeed(cid, speed)
return speed
end
local speed = getSpeed(cid)
if speed > 1500 then speed = 1500 end
doChangeSpeed(cid, -getCreatureSpeed(cid))
if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
doRemoveCondition(cid, CONDITION_PARALYZE)
addEvent(doAddCondition, 10, cid, paralizeArea2)
end
doChangeSpeed(cid, speed)
return speed
end
function isPosEqualPos(pos1, pos2, checkstackpos)
if pos1.x ~= pos2.x or pos1.y ~= pos2.y and pos1.z ~= pos2.z then
return false
end
if checkstackpos and pos1.stackpos and pos2.stackpos and pos1.stackpos ~= pos2.stackpos then
return false
end
return true
end
function getRandomGenderByName(name)
local rate = newpokedex[name]
if not rate then return 0 end
rate = rate.gender
if rate == 0 then
gender = 3
elseif rate == 1000 then
gender = 4
elseif rate == -1 then
gender = 0
elseif math.random(1, 1000) <= rate then
gender = 4
else
gender = 3
end
return gender
end
function getRecorderPlayer(pos, cid)
local ret = 0
if cid and getThingPos(cid).x == pos.x and getThingPos(cid).y == pos.y then
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function getRecorderCreature(pos, cid)
local ret = 0
if cid and getThingPos(cid).x == pos.x and getThingPos(cid).y == pos.y then
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isCreature(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function doCreatureSetOutfit(cid, outfit, time)
doSetCreatureOutfit(cid, outfit, time)
end
function doMagicalFlower(cid, away)
if not isCreature(cid) then return true end
for x = -3, 3 do
for y = -3, 3 do
local a = getThingPos(cid)
a.x = a.x + x
a.y = a.y + y
if away then
doSendDistanceShoot(a, getThingPos(cid), 21)
else
doSendDistanceShoot(getThingPos(cid), a, 21)
end
end
end
end
function isItemPokeball(item)
if not item then return false end
for a, b in pairs (pokeballs) do
if isInArray(b.all, item) then return true end
end
return false
end
function isPokeball(item)
if not item then return false end
if item >= 11826 and item <= 11837 then
return true
end
if item >= 11737 and item <= 11748 then
return true
end
if item >= 14694 and item <= 14698 then
return true
end
return false
end
function getPokeballType(id)
for a, b in pairs (pokeballs) do
if isInArray(b.all, id) then
return a
end
end
return "none"
end
randomdiagonaldir = {
[NORTHEAST] = {NORTH, EAST},
[sOUTHEAST] = {SOUTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHWEST] = {SOUTH, WEST}}
function doFaceOpposite(cid)
local a = getCreatureLookDir(cid)
local d = {
[NORTH] = SOUTH,
[sOUTH] = NORTH,
[EAST] = WEST,
[WEST] = EAST,
[NORTHEAST] = SOUTHWEST,
[NORTHWEST] = SOUTHEAST,
[sOUTHEAST] = NORTHWEST,
[sOUTHWEST] = NORTHEAST}
doCreatureSetLookDir(cid, d[a])
end
function doFaceRandom(cid)
local a = getCreatureLookDir(cid)
local d = {
[NORTH] = {SOUTH, WEST, EAST},
[sOUTH] = {NORTH, WEST, EAST},
[WEST] = {SOUTH, NORTH, EAST},
[EAST] = {SOUTH, WEST, NORTH}}
doChangeSpeed(cid, 1)
doCreatureSetLookDir(cid, d[a][math.random(1, 3)])
doChangeSpeed(cid, -1)
end
function getFaceOpposite(dir)
local d = {
[NORTH] = SOUTH,
[sOUTH] = NORTH,
[EAST] = WEST,
[WEST] = EAST,
[NORTHEAST] = SOUTHWEST,
[NORTHWEST] = SOUTHEAST,
[sOUTHEAST] = NORTHWEST,
[sOUTHWEST] = NORTHEAST}
return d[dir]
end
function getResistance(cid, combat)
if isPlayer(cid) then return false end
local poketype1 = pokes[getCreatureName(cid)].type
local poketype2 = pokes[getCreatureName(cid)].type2
local multiplier = 1
if effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype1) then
multiplier = multiplier * 2
end
if poketype2 and effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype2) then
multiplier = multiplier * 2
end
if effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype1) then
multiplier = multiplier * 0.5
end
if poketype2 and effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype2) then
multiplier = multiplier * 0.5
end
if effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype1) then
multiplier = multiplier * 0
end
if poketype2 and effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype2) then
multiplier = multiplier * 0
end
if multiplier == 0.25 then
multiplier = 0.5
elseif multiplier == 4 then
multiplier = 2
end
return multiplier
end
function getCreatureDirectionToTarget(cid, target, ranged)
if not isCreature(cid) then return true end
if not isCreature(target) then return getCreatureLookDir(cid) end
local dirs = {
[NORTHEAST] = {NORTH, EAST},
[sOUTHEAST] = {SOUTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHWEST] = {SOUTH, WEST}}
local x = getDirectionTo(getThingPos(cid), getThingPos(target), false)
if x <= 3 then return x
else
local xdistance = math.abs(getThingPos(cid).x - getThingPos(target).x)
local ydistance = math.abs(getThingPos(cid).y - getThingPos(target).y)
if xdistance > ydistance then
return dirs[x][2]
elseif ydistance > xdistance then
return dirs[x][1]
elseif isInArray(dirs[x], getCreatureLookDir(cid)) then
return getCreatureLookDir(cid)
else
return dirs[x][math.random(1, 2)]
end
end
end
function getSomeoneDescription(cid)
if isPlayer(cid) then return getPlayerNameDescription(cid) end
return getMonsterInfo(getCreatureName(cid)).description
end
function isGhostPokemon(cid)
if not isCreature(cid) then return false end
ghosts = {"Mega Gengar", "Dusknoir", "Trickmaster Gengar", "Elder Gengar", "Banshee Misdreavus", "Gastly", "Haunter", "Gengar", "Shiny Gengar", "Shiny Misdreavus", "Misdreavus", "Shiny Abra"}
if isInArray(ghosts, getCreatureName(cid)) then
return true
end
if isSummon(cid) then
if hasHeldItem(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) then
if getHeldName(getPlayerSlotItem(getCreatureMaster(cid), 8).uid) == "ghost" then
return true
end
end
end
return false
end
function updateGhostWalk(cid)
if not isCreature(cid) then return false end
local pos = getThingPos(cid)
pos.x = pos.x + 1
pos.y = pos.y + 1
local ret = getThingPos(cid)
doTeleportThing(cid, pos, false)
doTeleportThing(cid, ret, false)
return true
end
function doRemoveElementFromTable(t, e)
local ret = {}
for a = 1, #t do
if t[a] ~= e then
table.insert(ret, t[a])
end
end
return ret
end
function doFaceCreature(sid, pos)
if not isCreature(sid) then return true end
if getThingPos(sid).x == pos.x and getThingPos(sid).y == pos.y then return true end
local ret = 0
local ld = getCreatureLookDir(sid)
local dir = getDirectionTo(getThingPos(sid), pos)
local al = {
[NORTHEAST] = {NORTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHEAST] = {SOUTH, EAST},
[sOUTHWEST] = {SOUTH, WEST}}
if dir >= 4 and isInArray(al[dir], ld) then return true end
doChangeSpeed(sid, 1)
if dir == 4 then
ret = math.random(2, 3)
elseif dir == 5 then
ret = math.random(1, 2)
elseif dir == 6 then
local dirs = {0, 3}
ret = dirs[math.random(1, 2)]
elseif dir == 7 then
ret = math.random(0, 1)
else
ret = getDirectionTo(getThingPos(sid), pos)
end
doCreatureSetLookDir(sid, ret)
doChangeSpeed(sid, -1)
return true
end
function doCreatureAddCondition(cid, condition)
if not isCreature(cid) then return true end
doAddCondition(cid, condition)
end
function doCreatureRemoveCondition(cid, condition)
if not isCreature(cid) then return true end
doRemoveCondition(cid, condition)
end
function setCD(item, tipo, tempo)
if not tempo or not tonumber(tempo) then
doItemEraseAttribute(item, tipo)
return true
end
doItemSetAttribute(item, tipo, "cd:"..(tempo + os.time()).."")
return tempo + os.time()
end
function getCD(item, tipo, limite)
if not getItemAttribute(item, tipo) then
return 0
end
local string = getItemAttribute(item, tipo):gsub("cd:", "")
local number = tonumber(string) - os.time()
if number <= 0 then
return 0
end
if limite and limite < number then
return 0
end
return number
end
function doSendMoveEffect(cid, target, effect)
if not isCreature(cid) or not isCreature(target) then return true end
doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)
return true
end
function doSetItemActionId(uid, actionid)
doItemSetAttribute(uid, "aid", actionid)
return true
end
function threeNumbers(number)
if number <= 9 then
return "00"..number..""
elseif number <= 99 then
return "0"..number..""
end
return ""..number..""
end
function isBr(cid)
if getPlayerStorageValue(cid, 105505) ~= -1 then
return true
end
return false
end
function isBeingUsed(ball)
if isInArray({11827, 11830, 11833, 11836, 11738, 11741, 11744, 11747}, ball) then
return true
end
return false
end
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 hasSqm(pos)
local f = getTileThingByPos(pos)
if f.itemid ~= 0 and f.itemid ~= 1 then
return true
end
return false
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 canWalkOnPos(pos, creature, pz, water, sqm, proj)
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
local n = not proj and 3 or 2 --alterado v1.6
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function canWalkOnPos2(pos, creature, pz, water, sqm, proj) --alterado v1.6
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
--[[local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i --edited pra retirar um bug.. ;x
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end ]]
return true
end
function getFreeTile(pos, cid)
if canWalkOnPos(pos, true, false, true, true, false) then
return pos
end
local positions = {}
for a = 0, 7 do
if canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then
table.insert(positions, pos)
end
end
if #positions >= 1 then
if isCreature(cid) then
local range = 1000
local ret = getThingPos(cid)
for b = 1, #positions do
if getDistanceBetween(getThingPos(cid), positions) < range then
ret = positions
range = getDistanceBetween(getThingPos(cid), positions)
end
end
return ret
else
return positions[math.random(#positions)]
end
end
return getThingPos(cid)
end
function isWalkable(pos, creature, proj, pz, water)-- by Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if isWater(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water 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 isPlayerSummon(cid, uid)
if getCreatureMaster(uid) == cid then
return TRUE
end
return FALSE
end
function isSummon(sid)
if not isCreature(sid) then return false end
--
if isPlayer(sid) then
return false
end
if isPlayer(getCreatureMaster(sid)) then
return true
end
return false
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)
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function getPokeballsInContainer(container) -- Function By Kydrai
if not isContainer(container) then return {} end
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 = getPokeballsInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif isPokeball(item.itemid) then
table.insert(items, item.uid)
end
end
end
return items
end
function getItensUniquesInContainer(container) --alterado v1.6
if not isContainer(container) then return {} end
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 = getItensUniquesInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif getItemAttribute(item.uid, "unique") then
table.insert(items, item)
end
end
end
return items
end
function hasSpaceInContainer(container) --alterado v1.6
if not isContainer(container) then return false end
if getContainerSize(container) < getContainerCap(container) then return true end
for slot = 0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
if hasSpaceInContainer(item.uid) then
return true
end
end
end
return false
end

Alguem d auma ajuda ae
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Os prints eu pedi pra voce botar pra saber onde tava faltando, voce pode tirar eles, eles que estao fazendo aparecer isso.

 

faz assim procura essas linhas:

if youAre[getPlayerGroupId(thing)] then
   table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")       
else
   table.insert(str, (rank).." from ".. getTownName(getPlayerTown(thing))..".")
end

Troca por:

if youAre[getPlayerGroupId(thing)] then
   table.insert(str, (ocup).." and "..rank..".")       
else
   table.insert(str, (rank)..".")
end
Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Manda a linha 590, do lib. Some funciona. Estou pelo cell :D

 

Aqui ela

table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")

Link para o comentário
Compartilhar em outros sites

  • 0
Antes da linha:

table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")


Bota:



print("Ocup:")
print(ocup)
print("Rank:")
print(rank)
print("Town:")
print(getTownName(getPlayerTown(thing)))


da look no player e olha no console, deve aparecer

Ocup:

blablalba

Rank:

blabla

Town:

Blabla


Algum deles vai faltar dai soh corrigir dps q souber qual que ta faltando

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

  • 0

Cara esse look ae ele apareceu no EXE do servidor e eu quero da look dentro do jogo quando vai da look em algum player. Ai eu do look dentro do jogo aparece isso...

 

[27/11/2015 19:33:05] [ADM] Qtlx has logged in.
[27/11/2015 19:33:07] Ocup:
[27/11/2015 19:33:07] a ADM
[27/11/2015 19:33:07] Rank:
[27/11/2015 19:33:07] a Psycraft Mind
[27/11/2015 19:33:07] Town:
[27/11/2015 19:33:07] [Error - CreatureScript Interface]
[27/11/2015 19:33:07] data/creaturescripts/scripts/look.lua:onLook
[27/11/2015 19:33:07] Description:
[27/11/2015 19:33:07] data/lib/some functions.lua:596: attempt to concatenate a boolean value
[27/11/2015 19:33:07] stack traceback:
[27/11/2015 19:33:07] data/lib/some functions.lua:596: in function 'getPlayerDesc'
[27/11/2015 19:33:07] data/creaturescripts/scripts/look.lua:147: in function <data/creaturescripts/scripts/look.lua:1>
Link para o comentário
Compartilhar em outros sites

  • 0

Ta dando problema pra pra achar o nome da cidade do player, retira os prints agora e bota troca:

   table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")    

por isso:

   table.insert(str, (ocup).." and "..rank..".")    

Isso vai remover o bug porem nao vai mostrar o nome da cidade ao dar look, o problema é que provavelmente o ID da cidade nao foi configurado direito.

Link para o comentário
Compartilhar em outros sites

  • 0

Matheus eu testei com o adm deu certo sim. pois fui testa com um char não deu e deu erro.

 

[27/11/2015 20:06:54] [Error - CreatureScript Interface]
[27/11/2015 20:06:54] data/creaturescripts/scripts/look.lua:onLook
[27/11/2015 20:06:54] Description:
[27/11/2015 20:06:54] data/lib/some functions.lua:598: attempt to concatenate a boolean value
[27/11/2015 20:06:54] stack traceback:
[27/11/2015 20:06:54] data/lib/some functions.lua:598: in function 'getPlayerDesc'
[27/11/2015 20:06:54] data/creaturescripts/scripts/look.lua:147: in function <data/creaturescripts/scripts/look.lua:1>
e tipo sempre quando eu for da look ou outro player da look sempre vai aparece no EXE do servidor assim
[27/11/2015 20:05:40] [ADM] Qtlx has logged in.
[27/11/2015 20:05:42] Ocup:
[27/11/2015 20:05:42] a ADM
[27/11/2015 20:05:42] Rank:
[27/11/2015 20:05:42] a Psycraft Mind
[27/11/2015 20:05:42] Town:

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...