Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ola galera venho aki pedi uma grande ajuda mesmo pra vcs que manja em script me ajuda nisso

um erro que deu aki

[11/01/2013 20:04:17] [Error - Npc interface]

[11/01/2013 20:04:17] data/npc/scripts/profrobert.lua:onCreatureSay

[11/01/2013 20:04:17] Description:

[11/01/2013 20:04:17] data/lib/011-string.lua:16: bad argument #1 to 'find' (string expected, got nil)

[11/01/2013 20:04:17] stack traceback:

[11/01/2013 20:04:17] [C]: in function 'find'

[11/01/2013 20:04:17] data/lib/011-string.lua:16: in function '(for generator)'

[11/01/2013 20:04:17] data/lib/011-string.lua:16: in function 'explode'

[11/01/2013 20:04:17] data/lib/some functions.lua:682: in function 'doCorrectString'

[11/01/2013 20:04:17] data/npc/scripts/profrobert.lua:47: in function 'callback'

[11/01/2013 20:04:17] data/npc/lib/npcsystem/npchandler.lua:391: in function 'onCreatureSay'

[11/01/2013 20:04:17] data/npc/scripts/profrobert.lua:7: in function <data/npc/scripts/profrobert.lua:7>

Irei coloca cada pasta de cada erro do meu servidor

data/lib/011-string.lua

string.split = function (str)

local t = {}

return not str:gsub("%w+", function(s) table.insert(t, s) return "" end):find("%S") and t or {}

end

string.trim = function (str)

return str:gsub("^%s*(.-)%s*$", "%1")

end

string.explode = function (str, sep, limit)

if(type(sep) ~= 'string' or isInArray({tostring(str):len(), sep:len()}, 0)) then

return {}

end

local i, pos, tmp, t = 0, 1, "", {}

for s, e in function() return string.find(str, sep, pos) end do

tmp = str:sub(pos, s - 1):trim()

if tmp ~= "" then --alterado v1.8

table.insert(t, tmp)

end

pos = e + 1

i = i + 1

if(limit ~= nil and i == limit) then

break

end

end

tmp = str:sub(pos):trim()

if tmp ~= "" then --alterado v1.8

table.insert(t, tmp)

end

return t

end

string.expand = function (str)

return string.gsub(str, "$(%w+)", function(n) return _G[n] end)

end

string.timediff = function (diff)

local format = {

{"week", diff / 60 / 60 / 24 / 7},

{"day", diff / 60 / 60 / 24 % 7},

{"hour", diff / 60 / 60 % 24},

{"minute", diff / 60 % 60},

{"second", diff % 60}

}

local t = {}

for k, v in ipairs(format) do

local d, tmp = math.floor(v[2]), ""

if(d > 0) then

tmp = (k < table.maxn(format) and (table.maxn(t) > 0 and ", " or "") or " and ") .. d .. " " .. v[1] .. (d ~= 1 and "s" or "")

table.insert(t, tmp)

end

end

return t

end

data/lib/some functions.lua

function unLock(ball) --alterado v1.8 \/\/ peguem ele todo!

if not ball or ball <= 0 then return false end

if getItemAttribute(ball, "lock") and getItemAttribute(ball, "lock") > 0 then

local vipTime = getItemAttribute(ball, "lock")

local timeNow = os.time()

local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))

if days <= 0 then

doItemEraseAttribute(ball, "lock")

doItemEraseAttribute(ball, "unique")

return true

end

end

return false

end

function getGuildMembersOnline(GuildId)

local players = {}

for _, pid in pairs(getPlayersOnline()) do

if getPlayerGuildId(pid) == tonumber(GuildId) then

table.insert(players, pid)

end

end --by Vodkart

return #players > 0 and players or false

end

function getGuildMembers(GuildId)

local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");")

if (query:getID() ~= -1) then

repeat

table.insert(players,query:getDataString("name"))

until not query:next() --by Vodkart

query:free()

end

return #players > 0 and players or 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) --alterado v1.8

local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")

local str = "You see "..name..". "..art.." "

if youAre[getPlayerGroupId(thing)] then

str = str..""..(ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing)).."."

else

str = str..""..(rank).." from ".. getTownName(getPlayerTown(thing)).."."

end

if getPlayerGuildId(thing) > 0 then

str = str.." "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing).."."

end

if TV then

str = str.." "..art.." watching TV."

end

str = str..""..((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or "") --alterado v1.8

return str

end

------------------------------------------------------------------------------------------------- /\/\

function getLivePokeballs(cid, container, duel)

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

if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(ballSlot.uid, "poke")].level + getPokeballBoost(ballSlot)) then

table.insert(items, ballSlot.uid) --alterado v1.8

elseif not duel then

table.insert(items, ballSlot.uid)

end

end

end

end

---

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

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

if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(item.uid, "poke")].level + getPokeballBoost(item)) then

table.insert(items, item.uid) --alterado v1.8

elseif not duel then

table.insert(items, item.uid)

end

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 getTimeDiff2(timeDiff)

local dateFormat = {

{'hour', timeDiff / 60 / 60}, --6%

{'min', timeDiff / 60 % 60},

{'sec', timeDiff % 60},

}

local out = {}

for k, t in ipairs(dateFormat) do

local v = math.floor(t[2])

if(v > 0) then

table.insert(out, (k < #dateFormat and ' ' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))

end

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

--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 isDuelingAgainst(master1, master2) then --alterado v1.8

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 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] = "Cocoon Stone",

[11449] = "Crystal Stone",

[11450] = "Darkess Stone",

[11451] = "Earth Stone",

[11452] = "Enigma Stone",

[11454] = "Ice Stone",

[12244] = "King's Rock",

[12232] = "Metal Stone",

[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",

}

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

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, true)

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 = ""

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

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, 800)

doTeleportThing(cid, getThingPos(target))

doChangeSpeed(cid, -800)

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_SAY)

doSendMagicEffect(getCreaturePosition(pokemon), effect)

doRemoveCreature(pokemon)

unLock(pokeball.uid) --alterado v1.8

if useOTClient then

doPlayerSendCancel(cid, '12//,hide') --alterado v1.7

end

if useKpdoDlls then

doUpdateMoves(cid)

end

end

local EFFECTS = {

--[OutfitID] = {Effect}

["Magmar"] = 35, --alterado v1.5

["Jynx"] = 17,

["Shiny Jynx"] = 17,

["Piloswine"] = 205, --alterado v1.8

["Swinub"] = 205,

}

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 + boosts) then --alterado v1.8 \/

doPlayerSendCancel(cid, "You need level "..(x.level + boosts).." 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

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 >= 12930 and item <= 12932 then

return true

end

if item >= 12933 and item <= 12935 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 = {"Gastly", "Haunter", "Gengar", "Shiny Gengar", "Misdreavus", "Shiny Abra"}

if isInArray(ghosts, getCreatureName(cid)) then

return true

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

data/npc/scripts/profrobert.lua

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

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local places = {

["cerulean"] = 1,

["saffron"] = 2,

["lavender"] = 3,

["celadon"] = 4,

["pewter"] = 5, --Alterado por min, stylo para meu MAPA'

["viridian"] = 6,

["vermilion"] = 7,

["fuchsia"] = 8,

["cinnabar"] = 9,

["snow"] = 10,

}

if msgcontains(string.lower(msg), 'city') or msgcontains(string.lower(msg), 'citys') then

if getPlayerStorageValue(cid, 9658754) == 1 then

selfSay("You already choose your beginner town!", cid)

return true

else

selfSay("You can choose your beginner town between: {{saffron}, {cerulean}, {lavender}, {fuchsia}, {celadon}, {viridian}, {vermilion}, {pewter}, {cinnabar} or {snow}}.", cid)

return true

end

elseif places[string.lower(msg)] then

city = string.lower(msg)

selfSay("Are you sure which you want to begin in {".. doCorrectString(msg) .."}?", cid)

talkState[talkUser] = 2

return true

elseif msgcontains(msg, "yes") or msgcontains(msg, "Yes") and talkState[talkUser] == 2 then

if getPlayerStorageValue(cid, 9658754) == 1 then

selfSay("You already choose your beginner town!", cid)

return true

else

selfSay("OK then... Now your beginner town is ".. doCorrectString(city)..". Good luck in your jorney!", cid)

doPlayerSetTown(cid, places[city])

setPlayerStorageValue(cid, 9658754, 1)

return true

end

elseif msgcontains(msg, "no") or msgcontains(msg, "No") and talkState[talkUser] == 2 then

selfSay("Ok then... say again what city you want to begin!", cid)

talkState[talkUser] = 0

return true

end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

data/npc/lib/npcsystem/npchandler

-- Advanced NPC System (Created by Jiddo),

-- Modified by Talaturen.

if(NpcSystem == nil) then

-- Loads the underlying classes of the npcsystem.

dofile(getDataDir() .. 'npc/lib/npcsystem/keywordhandler.lua')

dofile(getDataDir() .. 'npc/lib/npcsystem/queue.lua')

dofile(getDataDir() .. 'npc/lib/npcsystem/npchandler.lua')

dofile(getDataDir() .. 'npc/lib/npcsystem/modules.lua')

-- Global npc constants:

-- Keyword nestling behavior. For more information look at the top of keywordhandler.lua

KEYWORD_BEHAVIOR = BEHAVIOR_NORMAL_EXTENDED

-- Greeting and unGreeting keywords. For more information look at the top of modules.lua

FOCUS_GREETWORDS = {'hi', 'hello', 'hey'}

FOCUS_FAREWELLWORDS = {'bye', 'farewell', 'cya'}

-- The word for requesting trade window. For more information look at the top of modules.lua

SHOP_TRADEREQUEST = {'offer', 'trade'}

-- The word for accepting/declining an offer. CAN ONLY CONTAIN ONE FIELD! For more information look at the top of modules.lua

SHOP_YESWORD = {'yes'}

SHOP_NOWORD = {'no'}

-- Pattern used to get the amount of an item a player wants to buy/sell.

PATTERN_COUNT = '%d+'

-- Talkdelay behavior. For more information, look at the top of npchandler.lua.

NPCHANDLER_TALKDELAY = TALKDELAY_ONTHINK

-- Conversation behavior. For more information, look at the top of npchandler.lua.

NPCHANDLER_CONVBEHAVIOR = CONVERSATION_DEFAULT

-- Constant strings defining the keywords to replace in the default messages.

-- For more information, look at the top of npchandler.lua...

TAG_PLAYERNAME = '|PLAYERNAME|'

TAG_ITEMCOUNT = '|ITEMCOUNT|'

TAG_TOTALCOST = '|TOTALCOST|'

TAG_ITEMNAME = '|ITEMNAME|'

TAG_QUEUESIZE = '|QUEUESIZE|'

NpcSystem = {}

-- Gets an npcparameter with the specified key. Returns nil if no such parameter is found.

function NpcSystem.getParameter(key)

local ret = getNpcParameter(tostring(key))

if((type(ret) == 'number' and ret == 0) or ret == nil) then

return nil

else

return ret

end

end

-- Parses all known parameters for the npc. Also parses parseable modules.

function NpcSystem.parseParameters(npcHandler)

local ret = NpcSystem.getParameter('idletime')

if(ret ~= nil) then

npcHandler.idleTime = tonumber(ret)

end

local ret = NpcSystem.getParameter('talkradius')

if(ret ~= nil) then

npcHandler.talkRadius = tonumber(ret)

end

local ret = NpcSystem.getParameter('message_greet')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_GREET, ret)

end

local ret = NpcSystem.getParameter('message_farewell')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_FAREWELL, ret)

end

local ret = NpcSystem.getParameter('message_decline')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_DECLINE, ret)

end

local ret = NpcSystem.getParameter('message_needmorespace')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_NEEDMORESPACE, ret)

end

local ret = NpcSystem.getParameter('message_needspace')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_NEEDSPACE, ret)

end

local ret = NpcSystem.getParameter('message_sendtrade')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_SENDTRADE, ret)

end

local ret = NpcSystem.getParameter('message_noshop')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_NOSHOP, ret)

end

local ret = NpcSystem.getParameter('message_oncloseshop')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_ONCLOSESHOP, ret)

end

local ret = NpcSystem.getParameter('message_onbuy')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_ONBUY, ret)

end

local ret = NpcSystem.getParameter('message_onsell')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_ONSELL, ret)

end

local ret = NpcSystem.getParameter('message_missingmoney')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_MISSINGMONEY, ret)

end

local ret = NpcSystem.getParameter('message_needmoney')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_NEEDMONEY, ret)

end

local ret = NpcSystem.getParameter('message_missingitem')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_MISSINGITEM, ret)

end

local ret = NpcSystem.getParameter('message_needitem')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_NEEDITEM, ret)

end

local ret = NpcSystem.getParameter('message_idletimeout')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_IDLETIMEOUT, ret)

end

local ret = NpcSystem.getParameter('message_walkaway')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_WALKAWAY, ret)

end

local ret = NpcSystem.getParameter('message_alreadyfocused')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_ALREADYFOCUSED, ret)

end

local ret = NpcSystem.getParameter('message_placedinqueue')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_PLACEDINQUEUE, ret)

end

local ret = NpcSystem.getParameter('message_buy')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_BUY, ret)

end

local ret = NpcSystem.getParameter('message_sell')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_SELL, ret)

end

local ret = NpcSystem.getParameter('message_bought')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_BOUGHT, ret)

end

local ret = NpcSystem.getParameter('message_sold')

if(ret ~= nil) then

npcHandler:setMessage(MESSAGE_SOLD, ret)

end

-- Parse modules.

for parameter, module in pairs(Modules.parseableModules) do

local ret = NpcSystem.getParameter(parameter)

if(ret ~= nil) then

local number = tonumber(ret)

if(number ~= nil and number ~= 0) then

npcHandler:addModule(module:new())

end

end

end

end

end

data/npc/scripts/profrobert.lua

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

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local places = {

["cerulean"] = 1,

["saffron"] = 2,

["lavender"] = 3,

["celadon"] = 4,

["pewter"] = 5, --Alterado por min, stylo para meu MAPA'

["viridian"] = 6,

["vermilion"] = 7,

["fuchsia"] = 8,

["cinnabar"] = 9,

["snow"] = 10,

}

if msgcontains(string.lower(msg), 'city') or msgcontains(string.lower(msg), 'citys') then

if getPlayerStorageValue(cid, 9658754) == 1 then

selfSay("You already choose your beginner town!", cid)

return true

else

selfSay("You can choose your beginner town between: {{saffron}, {cerulean}, {lavender}, {fuchsia}, {celadon}, {viridian}, {vermilion}, {pewter}, {cinnabar} or {snow}}.", cid)

return true

end

elseif places[string.lower(msg)] then

city = string.lower(msg)

selfSay("Are you sure which you want to begin in {".. doCorrectString(msg) .."}?", cid)

talkState[talkUser] = 2

return true

elseif msgcontains(msg, "yes") or msgcontains(msg, "Yes") and talkState[talkUser] == 2 then

if getPlayerStorageValue(cid, 9658754) == 1 then

selfSay("You already choose your beginner town!", cid)

return true

else

selfSay("OK then... Now your beginner town is ".. doCorrectString(city)..". Good luck in your jorney!", cid)

doPlayerSetTown(cid, places[city])

setPlayerStorageValue(cid, 9658754, 1)

return true

end

elseif msgcontains(msg, "no") or msgcontains(msg, "No") and talkState[talkUser] == 2 then

selfSay("Ok then... say again what city you want to begin!", cid)

talkState[talkUser] = 0

return true

end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Ae galera se alguem poder me ajudar REP+ vlws

Meu novo projeto.

 

http://oi58.tinypic.com/2yplmrk.jpg

 

 

 

Link para o post
Compartilhar em outros sites

Alguem jente ninguem pode me ajudar?

Meu novo projeto.

 

http://oi58.tinypic.com/2yplmrk.jpg

 

 

 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por elitehox
      boa tarde a todos,
      Estou tentando instalar o plugin gesior shop for Myaac. quando tento acessar gifts.php retorno erro 500 http.
      Alguém pode me ajudar? este é o log de erros do Apache ...
       
       
      [php7:error] [pid 24148] [client 177.130.9.96:56512] PHP Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ordering' in 'order clause' in /var/www/html/system/libs/pot/OTS_Base_DB.php:86\nStack trace:\n#0 /var/www/html/system/libs/pot/OTS_Base_DB.php(86): PDO->query()\n#1 /var/www/html/system/libs/pot/OTS_DB_PDOQuery.php(13): OTS_Base_DB->doQuery()\n#2 /var/www/html/plugins/gesior-shop-system/libs/shop-system.php(137): OTS_Base_DB->query()\n#3 /var/www/html/system/pages/gifts.php(199): GesiorShop::getOffers()\n#4 /var/www/html/index.php(362): require('/var/www/html/s...')\n#5 {main}\n thrown in /var/www/html/system/libs/pot/OTS_Base_DB.php on line 86  
       
       

    • Por ILex WilL
      Olá, Alguém poderia me ajudar com uns Scripts? nem que seja cobrando, dependendo eu pago para me ajudar...
    • Por zLockey9
      Estou com alguns erros em umas SPR que adicionei recentemente , como o titulo já diz ...
      elas estão saindo do lado do char em vez de em cima. (Obs:Não é spell e sim só o effect do comando /z)
       
      Se alguém puder ajudar dou REP+
       
      ALGUMAS PRINT'S
       
       
    • Por llucas75
      Oi tudo bem pessoal?
       
      Meu problema é o seguinte eu tenho um otserver 8.60, mas quero rodá-lo em linux ai precisando compilar... Compilei um Rev3777(0.4), mas quando ligo o servidor aparecem uma imensidão de erros no console, além de mau funcionamento do server...
      Tentei pegar as libs da pasta data do rev3777 e colocalos no lugar das libs do meu server... Mas dai o server nem abre...
       
       
      Queria muito executar esse server em linux, por causa da proteção adicional que ele oferece, alguem sabe como eu faço para ele rodar de maneira adequada com o meu executavel da rev3777?
    • Por lucasmacaca
      e o seguinte meu server ta em mysql mais pra testa as coisas prefiro usar ele em sqlite mais fica aparecendo esses erro ...
        
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo