Ir para conteúdo
  • Cadastre-se

Server de poketibia fechando sozinho


Posts Recomendados

Olá a todos, meu server de poketibia fica normal durante 2 horas depois de 2 horas ele sem erro algum fecha sozinho, e não salva, como posso resolver isso ?

Link para o post
Compartilhar em outros sites

Explique melhor seu problema.

Que server está usando....

Dedicado >

3gb de ram

processador i7 2.8 ghz

HD> 250 gb

Estou usando o centurion v3.0, ele ta normal, ai do nada o executor fecha sozinho, e fica mostrando erros onde não tem, praticamente no spawns.lua | look.lua | box.lua | 050-function, segue abaixo todos eles, eu também acho que pode ser o fato dele roda em mysql, será que ele foi feito pra ser sqlite??

Abaixo uma imagem dos erros.

csKIF.png

Look.lua > linha: 16


function onLook(cid, thing, position, lookDistance)

local str = ""

if not isCreature(thing.uid) then

local iname = getItemInfo(thing.itemid)

if isPokeball(thing.itemid) then

local owner = getItemAttribute(thing.uid, "firstpoke")

local pokename = getItemAttribute(thing.uid, "poke")

local item = getItemInfo(thing.itemid)

str = "You see "..item.article.." "..item.name..".\n"

str = str.."It contains "..getArticle(pokename).." "..pokename.." [level "..getItemAttribute(thing.uid, "level").."].\n"

if owner and owner ~= getCreatureName(cid) then

str = str.."It belongs to "..owner..".\nIt is a unique item."

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

end

local boost = getItemAttribute(thing.uid, "boost") or 0

local boostshow = ""

if boost > 0 then

str = str.."Boost level: +"..boost..".\n"

end

if getItemAttribute(thing.uid, "nick") then

str = str.."It's nickname is: "..getItemAttribute(thing.uid, "nick")..".\n"

end


if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end


str = str.."\n--- Status ---"

str = str.."\nOffense: "..math.floor(getItemAttribute(thing.uid, "offense")).." Defense: "..math.floor(getItemAttribute(thing.uid, "defense")).."\n"

str = str.."Agility: "..math.floor(getItemAttribute(thing.uid, "speed")).." Sp. Attack: "..math.floor(getItemAttribute(thing.uid, "specialattack")).."\n"

str = str.."Vitality: "..math.floor(getItemAttribute(thing.uid, "vitality"))..""

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") then

str = "You see a "..string.lower(iname.name).." ["..getItemAttribute(thing.uid, "level").."].\n"

if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

else

return true

end

end

local npcname = getCreatureName(thing.uid)

local l = string.len(npcname)

if not isPlayer(thing.uid) and not isMonster(thing.uid) then

--string.sub(npcname, l - 1, l) == " " then

local article = getPlayerStorageValue(thing.uid, 9891) == 1 and "He is" or "She is"

local nname = string.sub(npcname, 1, l - 2)

if nname == getCreatureName(cid) then

nname = "yourself"

article = "You are"

end

str = "You see "..nname..". "..article.." a pokemon trainer."

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

end

if not isMonster(thing.uid) then

return true

end

if getCreatureName(thing.uid) == "Evolution" then return false end

if not isSummon(thing.uid) then

local str = "You see a wild "..string.lower(getCreatureName(thing.uid)).." [level "..getPokemonLevel(thing.uid).."].\n"

if getPokemonGender(thing.uid) == SEX_MALE then

str = str.."It is male."

elseif getPokemonGender(thing.uid) == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif isSummon(thing.uid) and not isPlayer(thing.uid) then

local boostlevel = getItemAttribute(getPlayerSlotItem(getCreatureMaster(thing.uid), 8).uid, "boost") or 0

local boostshow = " + "..boostlevel.."]"

if showBoostSeparated then

boostshow = "] [+"..boostlevel.."]"

end

local levelinfo = "["..getPokemonLevel(thing.uid)..""..boostshow..""

if getCreatureMaster(thing.uid) == cid then

local myball = getPlayerSlotItem(cid, 8).uid

local nexp = getItemAttribute(myball, "nextlevelexp")

local string = "You see your "..string.lower(getCreatureName(thing.uid)).." "..levelinfo.."."

string = string.."\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid).."."

string = string.."\n"..getPokemonHappinessDescription(thing.uid)

if getItemAttribute(myball, "level") <= 99 then

	 string = string.."\nExperience needed to level up: "..nexp.."."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid)).." "..levelinfo..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")

end


return false

end

return true

end

050-function.lua > linha: 107

function doPlayerGiveItem(cid, itemid, amount, subType)

local item = 0

if(isItemStackable(itemid)) then

item = doCreateItemEx(itemid, amount)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

else

for i = 1, amount do

item = doCreateItemEx(itemid, subType)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

end

return true

end

function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType)

for i = 1, amount do

local container = doCreateItemEx(containerid, 1)

for x = 1, getContainerCapById(containerid) do

doAddContainerItem(container, itemid, subType)

end

if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

return true

end

function doPlayerTakeItem(cid, itemid, amount)

return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount)

end

function doPlayerBuyItem(cid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItem(cid, itemid, count, charges)

end

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItemContainer(cid, containerid, itemid, count, charges)

end

function doPlayerSellItem(cid, itemid, count, cost)

if(not doPlayerTakeItem(cid, itemid, count)) then

return false

end

if(not doPlayerAddMoney(cid, cost)) then

error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')

end

return true

end

function doPlayerWithdrawMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

local balance = getPlayerBalance(cid)

if(amount > balance or not doPlayerAddMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, balance - amount)

return true

end

function doPlayerDepositMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

if(not doPlayerRemoveMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)

return true

end

function isPremium(cid)

return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigInfo('freePremium'))))

end

function getMonthDayEnding(day)

if(day == "01" or day == "21" or day == "31") then

return "st"

elseif(day == "02" or day == "22") then

return "nd"

elseif(day == "03" or day == "23") then

return "rd"

end

return "th"

end

function getMonthString(m)

return os.date("%B", os.time{year = 1970, month = m, day = 1})

end

function getArticle(str)

return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"

end

function isNumber(str)

return tonumber(str) ~= nil

end

function doPlayerAddAddons(cid, addon)

for i = 0, table.maxn(maleOutfits) do

doPlayerAddOutfit(cid, maleOutfits[i], addon)

end

for i = 0, table.maxn(femaleOutfits) do

doPlayerAddOutfit(cid, femaleOutfits[i], addon)

end

end

function doPlayerWithdrawAllMoney(cid)

return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))

end

function doPlayerDepositAllMoney(cid)

return doPlayerDepositMoney(cid, getPlayerMoney(cid))

end

function doPlayerTransferAllMoneyTo(cid, target)

return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))

end

function playerExists(name)

return getPlayerGUIDByName(name) ~= 0

end

function getTibiaTime()

local minutes = getWorldTime()

local hours = 0

while (minutes > 60) do

hours = hours + 1

minutes = minutes - 60

end

return {hours = hours, minutes = minutes}

end

function doWriteLogFile(file, text)

local f = io.open(file, "a+")

if(not f) then

return false

end

f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")

f:close()

return true

end

function getExperienceForLevel(lv)

lv = lv - 1

return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3

end

function doMutePlayer(cid, time)

local condition = createConditionObject(CONDITION_MUTED)

setConditionParam(condition, CONDITION_PARAM_TICKS, time * 1000)

return doAddCondition(cid, condition)

end

function getPlayerGroupName(cid)

return getGroupInfo(getPlayerGroupId(cid)).name

end

function getPlayerVocationName(cid)

return getVocationInfo(getPlayerVocation(cid)).name

end

function getPromotedVocation(vid)

return getVocationInfo(vid).promotedVocation

end

function doPlayerRemovePremiumDays(cid, days)

return doPlayerAddPremiumDays(cid, -days)

end

function getPlayerMasterPos(cid)

return getTownTemplePosition(getPlayerTown(cid))

end

function getHouseOwner(houseId)

return getHouseInfo(houseId).owner

end

function getHouseName(houseId)

return getHouseInfo(houseId).name

end

function getHouseEntry(houseId)

return getHouseInfo(houseId).entry

end

function getHouseRent(houseId)

return getHouseInfo(houseId).rent

end

function getHousePrice(houseId)

return getHouseInfo(houseId).price

end

function getHouseTown(houseId)

return getHouseInfo(houseId).town

end

function getHouseTilesCount(houseId)

return getHouseInfo(houseId).tiles

end

function getItemNameById(itemid)

return getItemDescriptionsById(itemid).name

end

function getItemPluralNameById(itemid)

return getItemDescriptionsById(itemid).plural

end

function getItemArticleById(itemid)

return getItemDescriptionsById(itemid).article

end

function getItemName(uid)

return getItemDescriptions(uid).name

end

function getItemPluralName(uid)

return getItemDescriptions(uid).plural

end

function getItemArticle(uid)

return getItemDescriptions(uid).article

end

function getItemText(uid)

return getItemDescriptions(uid).text

end

function getItemSpecialDescription(uid)

return getItemDescriptions(uid).special

end

function getItemWriter(uid)

return getItemDescriptions(uid).writer

end

function getItemDate(uid)

return getItemDescriptions(uid).date

end

function getTilePzInfo(pos)

return getTileInfo(pos).protection

end

function getTileZoneInfo(pos)

local tmp = getTileInfo(pos)

if(tmp.pvp) then

return 2

end

if(tmp.nopvp) then

return 1

end

return 0

end

function doShutdown()

return doSetGameState(GAMESTATE_SHUTDOWN)

end

function doSummonCreature(name, pos, displayError)

local displayError, cid = displayError or true, doCreateMonster(name, pos, displayError)

if(not cid) then

cid = doCreateNpc(name, pos, displayError)

end

return cid

end

function getOnlinePlayers()

local tmp = getPlayersOnline()

local players = {}

for i, cid in ipairs(tmp) do

table.insert(players, getCreatureName(cid))

end

return players

end

function getPlayerByName(name)

local cid = getCreatureByName(name)

return isPlayer(cid) and cid or nil

end

function isPlayer(cid)

return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS

end

function isPlayerGhost(cid)

if(not isPlayer(cid)) then

return false

end

return getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)

end

function isMonster(cid)

return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS

end

function isNpc(cid)

return isCreature(cid) and cid >= AUTOID_NPCS

end

function doPlayerSetExperienceRate(cid, value)

return doPlayerSetRate(cid, SKILL__LEVEL, value)

end

function doPlayerSetMagicRate(cid, value)

return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)

end

function doPlayerAddLevel(cid, amount, round)

local experience, level = 0, getPlayerLevel(cid)

if(amount > 0) then

experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level))

else

experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount))

end

return doPlayerAddExperience(cid, experience)

end

function doPlayerAddMagLevel(cid, amount)

for i = 1, amount do

doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid)) / getConfigInfo('rateMagic'))

end

return true

end

function doPlayerAddSkill(cid, skill, amount, round)

if(skill == SKILL__LEVEL) then

return doPlayerAddLevel(cid, amount, round)

elseif(skill == SKILL__MAGLEVEL) then

return doPlayerAddMagLevel(cid, amount)

end

return doPlayerAddSkillTry(cid, skill, (getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill)) / getConfigInfo('rateSkill'))

end

function getPartyLeader(cid)

local party = getPartyMembers(cid)

if(type(party) ~= 'table') then

return 0

end

return party[1]

end

function isInParty(cid)

return type(getPartyMembers(cid)) == 'table'

end

function isPrivateChannel(channelId)

return channelId >= CHANNEL_PRIVATE

end

function doPlayerResetIdleTime(cid)

return doPlayerSetIdleTime(cid, 0)

end

function doBroadcastMessage(text, class)

local class = class or MESSAGE_STATUS_WARNING

if(type(class) == 'string') then

local className = MESSAGE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doPlayerSendTextMessage(pid, class, text)

end

print("> Broadcasted message: \"" .. text .. "\".")

return true

end

function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost)

local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST

if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then

return false

end

if(type(class) == 'string') then

local className = TALKTYPE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doCreatureSay(cid, text, class, ghost, pid)

end

print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")

return true

end

function getBooleanFromString(input)

local tmp = type(input)

if(tmp == 'boolean') then

return input

end

if(tmp == 'number') then

return input > 0

end

local str = string.lower(tostring(input))

return (str == "yes" or str == "true" or (tonumber(str) ~= nil and tonumber(str) > 0))

end

function doCopyItem(item, attributes)

local attributes = attributes or false

local ret = doCreateItemEx(item.itemid, item.type)

if(attributes) then

if(item.actionid > 0) then

doItemSetAttribute(ret, "aid", item.actionid)

end

end

if(isContainer(item.uid)) then

for i = (getContainerSize(item.uid) - 1), 0, -1 do

local tmp = getContainerItem(item.uid, i)

if(tmp.itemid > 0) then

doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)

end

end

end

return getThing(ret)

end

function doRemoveThing(uid)

if(isCreature(uid)) then

return doRemoveCreature(uid)

end

return doRemoveItem(uid)

end

function setAttackFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, -1, 0, -1, 0, minl, maxl, minm, maxm, min, max)

end

function setHealingFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, 1, 0, 1, 0, minl, maxl, minm, maxm, min, max)

end

function doChangeTypeItem(uid, subtype)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local subtype = subtype or 1

return doTransformItem(thing.uid, thing.itemid, subtype)

end

function doSetItemText(uid, text, writer, date)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

doItemSetAttribute(uid, "text", text)

if(writer ~= nil) then

doItemSetAttribute(uid, "writer", tostring(writer))

if(date ~= nil) then

doItemSetAttribute(uid, "date", tonumber(date))

end

end

return true

end

function getFluidSourceType(itemid)

local item = getItemInfo(itemid)

return item and item.fluidSource or false

end

function getDepotId(uid)

return getItemAttribute(uid, "depotid") or false

end

function getItemDescriptions(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return {

name = getItemAttribute(uid, "name") or item.name,

plural = getItemAttribute(uid, "pluralname") or item.plural,

article = getItemAttribute(uid, "article") or item.article,

special = getItemAttribute(uid, "description") or "",

text = getItemAttribute(uid, "text") or "",

writer = getItemAttribute(uid, "writer") or "",

date = getItemAttribute(uid, "date") or 0

}

end

function getItemWeightById(itemid, count, precision)

local item, count, precision = getItemInfo(itemid), count or 1, precision or false

if(not item) then

return false

end

if(count > 100) then

-- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count

print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!')

end

local weight = item.weight * count

--[[if(precision) then

return weight

end

local t = string.explode(tostring(weight), ".")

if(table.maxn(t) == 2) then

return tonumber(t[1] .. "." .. string.sub(t[2], 1, 2))

end]]--

return weight

end

function getItemWeaponType(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

return getItemInfo(thing.itemid).weaponType

end

function getItemRWInfo(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item, flags = getItemInfo(thing.itemid), 0

if(item.readable) then

flags = 1

end

if(item.writable) then

flags = flags + 2

end

return flags

end

function getItemLevelDoor(itemid)

local item = getItemInfo(itemid)

return item and item.levelDoor or false

end

function isItemStackable(itemid)

local item = getItemInfo(itemid)

return item and item.stackable or false

end

function isItemRune(itemid)

local item = getItemInfo(itemid)

return item and item.clientCharges or false

end

function isItemDoor(itemid)

local item = getItemInfo(itemid)

return item and item.type == 5 or false

end

function isItemContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 2 or false

end

function isItemFluidContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 12 or false

end

function isItemMovable(itemid)

local item = getItemInfo(itemid)

return item and item.movable or false

end

function isCorpse(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return item and item.corpseType ~= 0 or false

end

function getContainerCapById(itemid)

local item = getItemInfo(itemid)

if(not item or item.group ~= 2) then

return false

end

return item.maxItems

end

function getMonsterAttackSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.attacks or false

end

function getMonsterHealingSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.defenses or false

end

function getMonsterLootList(name)

local monster = getMonsterInfo(name)

return monster and monster.loot or false

end

function getMonsterSummonList(name)

local monster = getMonsterInfo(name)

return monster and monster.summons or false

end

function doPlayerAddPercentLevel(cid, percent)

	 local player_lv, player_lv_1 = getExperienceForLevel(getPlayerLevel(cid)), getExperienceForLevel(getPlayerLevel(cid)+3)

	 local percent_lv = ((player_lv_1 - player_lv) / 50) * percent

	 doPlayerAddExperience(cid, percent_lv)

end

Spawns.lua > Linha: 22

local shinys = {

"Bulbasaur", "Ivysaur", "Venusaur", "Charmander", "Charmeleon", "Charizard", "Squirtle", "Wartortle", "Blastoise",

"Caterpie", "Metapod", "Butterfree", "Weedle", "Kakuna", "Beedrill", "Pidgey", "Pidgeotto", "Pidgeot", "Rattata",

"Raticate", "Spearow", "Fearow", "Ekans", "Arbok", "Pikachu", "Raichu", "Sandshrew", "Sandslash", "Nidoran Female",

"Nidorina", "Nidoqueen", "Nidoran Male", "Nidorino", "Nidoking", "Clefairy", "Clefable", "Vulpix", "Ninetales",

"Jigglytuff", "Wigglytuff", "Zubat", "Golbat", "Odish", "Gloom", "Vileplume", "Paras", "Parasect", "Venonat", "Venomoth",

"Diglett", "Dugtrio", "Mewoth", "Persian", "Psyduck", "Golduck", "Mankey", "Primeape", "Growlithe", "Arcanine",

"Poliwag", "Poliwhirl", "Poliwrath", "Abra", "Kadabra", "Alakazam", "Machop", "Machoke", "Machamp", "Bellsprout",

"Weepinbell", "Victreebel", "Tentacool", "Tentacruel", "Geodude", "Graveler", "Golem", "Ponyta", "Rapidash", "Slowpoke",

"Slowbro", "Magnamite", "Magneton", "Farfetch'd", "Doduo", "Dodrio", "Seel", "Dewgong", "Grimer", "Muk", "Shellder",

"Cloyster", "Gastly", "Haunter", "Gengar", "Onix", "Drowzee", "Hypno", "Krabby", "Kingler", "Voltorb", "Electrode",

"Exeggcute", "Exeggutor", "Cubone", "Marowak", "Hitmonlee", "Hitmonchan", "Lickitung", "Koffing", "Weezing", "Rhyhorn",

"Rhydon", "Chansey", "Tangela", "Kangaskhan", "Horsea", "Seadra", "Goldeen", "Seaking", "Staryu", "Starmie", "Mr. Mime",

"Scyther", "Jynx", "Electabuzz", "Magmar", "Pinsir", "Tauros", "Magikarp", "Gyarados", "Lapras", "Ditto", "Eevee", "Vaporeon",

"Jolteon", "Flareon", "Porygon", "Omanyte", "Omastar", "Kabuto", "Kabutops", "Snorlax", "Porygo Z", "Dragonair", "Dratini", "Absol", "Altaria", "Baltoy", "Claydol", "Buneary", "Beldum", "Metang", "Metagross", "Camerupt", "Carnivine", "Carvanha", "Sharpedo", "Croagunk", "Toxicroak", "Buizel", "Floatzel", "Gabite", "Gible", "Gliscor", "Honchkrow", "Luxray", "Mamoswine", "Pachirisu", "Plusle", "Minun", "Probopass", "Purugly", "Froslass", "Glalie", "Snorunt", "Lunatone", "Solrock", "Staraptor", "Tropius", "Yanmega", "Zangoose", "Rhyperior", "Gastrodon", "Typhlosion", "Quilava", "Cyndaquil", "Chikorita", "Meganium", "Bayleef", "Totodile", "Croconaw", "Feraligatr"

}

local raros = {"Articuno", "Zapdos", "Moltreas", "Mew", "Mewtwo", "Dragonite", "Aerodactyl"}

local function doPokemonRegisterLevel(cid)

if not isCreature(cid) then return true end

if getWildPokemonLevel(cid) == -1 then

setWildPokemonLevel(cid)

end

end

local function doSetRandomGender(cid)

if not isCreature(cid) then return true end

local gender = 0

local name = getCreatureName(cid)

if not newpokedex[name] then return true end

local rate = newpokedex[name].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

doCreatureSetSkullType(cid, gender)

end

local function doShiny(cid)

if isCreature(cid) then

if isSummon(cid) then return true end

if getPlayerStorageValue(cid, 74469) >= 1 then return true end

if isInArray(shinys, getCreatureName(cid)) then

transform = math.random(1, 100) --10% chance

elseif isInArray(raros, getCreatureName(cid)) then

transform = math.random(1, 1000) --100% chance

elseif not isInArray(raros, getCreatureName(cid)) and not isInArray(shinys, getCreatureName(cid)) then

return true

end

if transform == 1 then

doSendMagicEffect(getThingPos(cid), 18)

local shi = doCreateMonster("Shiny ".. getCreatureName(cid) .."", getThingPos(cid))

setPlayerStorageValue(shi, 74469, 1)

setPlayerStorageValue(cid, 74469, 1)

doRemoveCreature(cid)

else

setPlayerStorageValue(cid, 74469, 1)

end

else

return true

end

end

function onSpawn(cid)

registerCreatureEvent(cid, "GeneralConfiguration")

registerCreatureEvent(cid, "DirectionSystem")

registerCreatureEvent(cid, "CastSystem")

if isSummon(cid) then

registerCreatureEvent(cid, "SummonDeath")

return true

end

registerCreatureEvent(cid, "Experience")

addEvent(doPokemonRegisterLevel, 5, cid)

addEvent(doSetRandomGender, 5, cid)

addEvent(doShiny, 10, cid)

return true

end

Potion.lua > linha: 68 e 36

function setStorage(cid, storage, valor)

if isCreature(cid) then

if getPlayerStorageValue(cid, storage) >= 1 then

setPlayerStorageValue(cid, storage, valor)

end

end

end

function doHealOverTime(cid, div, turn, effect)

if not isCreature(cid) then return true end

if turn <= 0 then return true end

if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return true end

if getPlayerStorageValue(cid, 174) >= 1 then

setPlayerStorageValue(cid, 174, 0)

setPlayerStorageValue(cid, 173, 0)

return true

end

local d = div / 10000

local amount = math.floor(getCreatureMaxHealth(cid) * d)

doCreatureAddHealth(cid, amount)

if math.floor(turn/10) == turn/10 then

doSendMagicEffect(getThingPos(cid), effect)

end

addEvent(doHealOverTime, 100, cid, div, turn - 1, effect)

end

local potions = {

[12347] = {effect = 13, div = 30}, --super potion

[12348] = {effect = 13, div = 60}, --great potion --edited deixei igual as potions do PXG

[12346] = {effect = 12, div = 80}, --ultra potion

[12345] = {effect = 14, div = 90}, --hyper potion

}

--[12343] = {effect = 12, div = 100}}

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

if isPlayer(item2.uid) then

return doPlayerSendCancel(cid, "You can only use potions on pokemons!")

end

if not isCreature(item2.uid) then

return doPlayerSendCancel(cid, "You can only use potions on pokemons!")

end

if not isPlayer(getCreatureMaster(item2.uid)) then

return doPlayerSendCancel(cid, "You cant use potions on wild pokemons.")

end

if getCreatureHealth(item2.uid) == getCreatureMaxHealth(item2.uid) then

return doPlayerSendCancel(cid, "This pokemon is already at full health.")

end

if getPlayerStorageValue(item2.uid, 173) >= 1 then

return doPlayerSendCancel(cid, "This pokemon is already under effects of potions.")

end

if getCreatureMaster(item2.uid) ~= cid then

return doPlayerSendCancel(cid, "You can only use potions on your own Pokemons!")

end

doCreatureSay(cid, ""..getCreatureName(item2.uid)..", take this potion!", TALKTYPE_SAY)

doSendMagicEffect(getThingPos(item2.uid), 172)

setPlayerStorageValue(item2.uid, 173, 1)

doRemoveItem(item.uid, 1)

local sid = item2.uid

local a = potions[item.itemid]

doHealOverTime(item2.uid, a.div, 100, effect)

addEvent(setStorage, 10000, sid, 173, 0)

return true

end

Editado por ykky (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

]

eu também acho que pode ser o fato dele roda em mysql, será que ele foi feito pra ser sqlite??

Como assim? Na Database do teu config.lua ta assim:

]sqlType = "sqlite"

Explica melhor isso.

eR3Xwgv.png?1
 

Link para o post
Compartilhar em outros sites

Look.lua:

function onLook(cid, thing, position, lookDistance)

local str = ""

if not isCreature(thing.uid) then

local iname = getItemInfo(thing.itemid)

if isPokeball(thing.itemid) then

local owner = getItemAttribute(thing.uid, "firstpoke")

local pokename = getItemAttribute(thing.uid, "poke")

local item = getItemInfo(thing.itemid)

str = "You see "..item.article.." "..item.name..".\n"

str = str.."It contains "..getArticle(pokename).." "..pokename.." [level "..getItemAttribute(thing.uid, "level").."].\n"

if owner and owner ~= getCreatureName(cid) then

str = str.."It belongs to "..owner..".\nIt is a unique item."

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

end

local boost = getItemAttribute(thing.uid, "boost") or 0

local boostshow = ""

if boost > 0 then

str = str.."Boost level: +"..boost..".\n"

end

if getItemAttribute(thing.uid, "nick") then

str = str.."It's nickname is: "..getItemAttribute(thing.uid, "nick")..".\n"

end

if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

str = str.."\n--- Status ---"

str = str.."\nOffense: "..math.floor(getItemAttribute(thing.uid, "offense")).." Defense: "..math.floor(getItemAttribute(thing.uid, "defense")).."\n"

str = str.."Agility: "..math.floor(getItemAttribute(thing.uid, "speed")).." Sp. Attack: "..math.floor(getItemAttribute(thing.uid, "specialattack")).."\n"

str = str.."Vitality: "..math.floor(getItemAttribute(thing.uid, "vitality"))..""

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") then

str = "You see a "..string.lower(iname.name).." ["..getItemAttribute(thing.uid, "level").."].\n"

if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

else

return true

end

end

local npcname = getCreatureName(thing.uid)

local l = string.len(npcname)

if not isPlayer(thing.uid) and not isMonster(thing.uid) then

--string.sub(npcname, l - 1, l) == " " then

local article = getPlayerStorageValue(thing.uid, 9891) == 1 and "He is" or "She is"

local nname = string.sub(npcname, 1, l - 2)

if nname == getCreatureName(cid) then

nname = "yourself"

article = "You are"

end

str = "You see "..nname..". "..article.." a pokemon trainer."

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

end

if not isMonster(thing.uid) then

return true

end

if getCreatureName(thing.uid) == "Evolution" then return false end

if not isSummon(thing.uid) then

local str = "You see a wild "..string.lower(getCreatureName(thing.uid)).." [level "..getPokemonLevel(thing.uid).."].\n"

if getPokemonGender(thing.uid) == SEX_MALE then

str = str.."It is male."

elseif getPokemonGender(thing.uid) == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif isSummon(thing.uid) and not isPlayer(thing.uid) then

local boostlevel = getItemAttribute(getPlayerSlotItem(getCreatureMaster(thing.uid), 8).uid, "boost") or 0

local boostshow = " + "..boostlevel.."]"

if showBoostSeparated then

boostshow = "] [+"..boostlevel.."]"

end

local levelinfo = "["..getPokemonLevel(thing.uid)..""..boostshow..""

if getCreatureMaster(thing.uid) == cid then

local myball = getPlayerSlotItem(cid, 8).uid

local nexp = getItemAttribute(myball, "nextlevelexp")

local string = "You see your "..string.lower(getCreatureName(thing.uid)).." "..levelinfo.."."

string = string.."\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid).."."

string = string.."\n"..getPokemonHappinessDescription(thing.uid)

if getItemAttribute(myball, "level") <= 99 then

string = string.."\nExperience needed to level up: "..nexp.."."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid)).." "..levelinfo..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")

end

return false

end

return true

end

050-function.lua

function doPlayerGiveItem(cid, itemid, amount, subType)

local item = 0

if(isItemStackable(itemid)) then

item = doCreateItemEx(itemid, amount)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

else

for i = 1, amount do

item = doCreateItemEx(itemid, subType)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

end

return true

end

function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType)

for i = 1, amount do

local container = doCreateItemEx(containerid, 1)

for x = 1, getContainerCapById(containerid) do

doAddContainerItem(container, itemid, subType)

end

if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

return true

end

function doPlayerTakeItem(cid, itemid, amount)

return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount)

end

function doPlayerBuyItem(cid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItem(cid, itemid, count, charges)

end

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItemContainer(cid, containerid, itemid, count, charges)

end

function doPlayerSellItem(cid, itemid, count, cost)

if(not doPlayerTakeItem(cid, itemid, count)) then

return false

end

if(not doPlayerAddMoney(cid, cost)) then

error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')

end

return true

end

function doPlayerWithdrawMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

local balance = getPlayerBalance(cid)

if(amount > balance or not doPlayerAddMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, balance - amount)

return true

end

function doPlayerDepositMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

if(not doPlayerRemoveMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)

return true

end

function isPremium(cid)

return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigInfo('freePremium'))))

end

function getMonthDayEnding(day)

if(day == "01" or day == "21" or day == "31") then

return "st"

elseif(day == "02" or day == "22") then

return "nd"

elseif(day == "03" or day == "23") then

return "rd"

end

return "th"

end

function getMonthString(m)

return os.date("%B", os.time{year = 1970, month = m, day = 1})

end

function getArticle(str)

return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"

end

function isNumber(str)

return tonumber(str) ~= nil

end

function doPlayerAddAddons(cid, addon)

for i = 0, table.maxn(maleOutfits) do

doPlayerAddOutfit(cid, maleOutfits, addon)

end

for i = 0, table.maxn(femaleOutfits) do

doPlayerAddOutfit(cid, femaleOutfits, addon)

end

end

function doPlayerWithdrawAllMoney(cid)

return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))

end

function doPlayerDepositAllMoney(cid)

return doPlayerDepositMoney(cid, getPlayerMoney(cid))

end

function doPlayerTransferAllMoneyTo(cid, target)

return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))

end

function playerExists(name)

return getPlayerGUIDByName(name) ~= 0

end

function getTibiaTime()

local minutes = getWorldTime()

local hours = 0

while (minutes > 60) do

hours = hours + 1

minutes = minutes - 60

end

return {hours = hours, minutes = minutes}

end

function doWriteLogFile(file, text)

local f = io.open(file, "a+")

if(not f) then

return false

end

f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")

f:close()

return true

end

function getExperienceForLevel(lv)

lv = lv - 1

return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3

end

function doMutePlayer(cid, time)

local condition = createConditionObject(CONDITION_MUTED)

setConditionParam(condition, CONDITION_PARAM_TICKS, time * 1000)

return doAddCondition(cid, condition)

end

function getPlayerGroupName(cid)

return getGroupInfo(getPlayerGroupId(cid)).name

end

function getPlayerVocationName(cid)

return getVocationInfo(getPlayerVocation(cid)).name

end

function getPromotedVocation(vid)

return getVocationInfo(vid).promotedVocation

end

function doPlayerRemovePremiumDays(cid, days)

return doPlayerAddPremiumDays(cid, -days)

end

function getPlayerMasterPos(cid)

return getTownTemplePosition(getPlayerTown(cid))

end

function getHouseOwner(houseId)

return getHouseInfo(houseId).owner

end

function getHouseName(houseId)

return getHouseInfo(houseId).name

end

function getHouseEntry(houseId)

return getHouseInfo(houseId).entry

end

function getHouseRent(houseId)

return getHouseInfo(houseId).rent

end

function getHousePrice(houseId)

return getHouseInfo(houseId).price

end

function getHouseTown(houseId)

return getHouseInfo(houseId).town

end

function getHouseTilesCount(houseId)

return getHouseInfo(houseId).tiles

end

function getItemNameById(itemid)

return getItemDescriptionsById(itemid).name

end

function getItemPluralNameById(itemid)

return getItemDescriptionsById(itemid).plural

end

function getItemArticleById(itemid)

return getItemDescriptionsById(itemid).article

end

function getItemName(uid)

return getItemDescriptions(uid).name

end

function getItemPluralName(uid)

return getItemDescriptions(uid).plural

end

function getItemArticle(uid)

return getItemDescriptions(uid).article

end

function getItemText(uid)

return getItemDescriptions(uid).text

end

function getItemSpecialDescription(uid)

return getItemDescriptions(uid).special

end

function getItemWriter(uid)

return getItemDescriptions(uid).writer

end

function getItemDate(uid)

return getItemDescriptions(uid).date

end

function getTilePzInfo(pos)

return getTileInfo(pos).protection

end

function getTileZoneInfo(pos)

local tmp = getTileInfo(pos)

if(tmp.pvp) then

return 2

end

if(tmp.nopvp) then

return 1

end

return 0

end

function doShutdown()

return doSetGameState(GAMESTATE_SHUTDOWN)

end

function doSummonCreature(name, pos, displayError)

local displayError, cid = displayError or true, doCreateMonster(name, pos, displayError)

if(not cid) then

cid = doCreateNpc(name, pos, displayError)

end

return cid

end

function getOnlinePlayers()

local tmp = getPlayersOnline()

local players = {}

for i, cid in ipairs(tmp) do

table.insert(players, getCreatureName(cid))

end

return players

end

function getPlayerByName(name)

local cid = getCreatureByName(name)

return isPlayer(cid) and cid or nil

end

function isPlayer(cid)

return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS

end

function isPlayerGhost(cid)

if(not isPlayer(cid)) then

return false

end

return getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)

end

function isMonster(cid)

return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS

end

function isNpc(cid)

return isCreature(cid) and cid >= AUTOID_NPCS

end

function doPlayerSetExperienceRate(cid, value)

return doPlayerSetRate(cid, SKILL__LEVEL, value)

end

function doPlayerSetMagicRate(cid, value)

return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)

end

function doPlayerAddLevel(cid, amount, round)

local experience, level = 0, getPlayerLevel(cid)

if(amount > 0) then

experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level))

else

experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount))

end

return doPlayerAddExperience(cid, experience)

end

function doPlayerAddMagLevel(cid, amount)

for i = 1, amount do

doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid)) / getConfigInfo('rateMagic'))

end

return true

end

function doPlayerAddSkill(cid, skill, amount, round)

if(skill == SKILL__LEVEL) then

return doPlayerAddLevel(cid, amount, round)

elseif(skill == SKILL__MAGLEVEL) then

return doPlayerAddMagLevel(cid, amount)

end

return doPlayerAddSkillTry(cid, skill, (getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill)) / getConfigInfo('rateSkill'))

end

function getPartyLeader(cid)

local party = getPartyMembers(cid)

if(type(party) ~= 'table') then

return 0

end

return party[1]

end

function isInParty(cid)

return type(getPartyMembers(cid)) == 'table'

end

function isPrivateChannel(channelId)

return channelId >= CHANNEL_PRIVATE

end

function doPlayerResetIdleTime(cid)

return doPlayerSetIdleTime(cid, 0)

end

function doBroadcastMessage(text, class)

local class = class or MESSAGE_STATUS_WARNING

if(type(class) == 'string') then

local className = MESSAGE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doPlayerSendTextMessage(pid, class, text)

end

print("> Broadcasted message: \"" .. text .. "\".")

return true

end

function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost)

local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST

if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then

return false

end

if(type(class) == 'string') then

local className = TALKTYPE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doCreatureSay(cid, text, class, ghost, pid)

end

print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")

return true

end

function getBooleanFromString(input)

local tmp = type(input)

if(tmp == 'boolean') then

return input

end

if(tmp == 'number') then

return input > 0

end

local str = string.lower(tostring(input))

return (str == "yes" or str == "true" or (tonumber(str) ~= nil and tonumber(str) > 0))

end

function doCopyItem(item, attributes)

local attributes = attributes or false

local ret = doCreateItemEx(item.itemid, item.type)

if(attributes) then

if(item.actionid > 0) then

doItemSetAttribute(ret, "aid", item.actionid)

end

end

if(isContainer(item.uid)) then

for i = (getContainerSize(item.uid) - 1), 0, -1 do

local tmp = getContainerItem(item.uid, i)

if(tmp.itemid > 0) then

doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)

end

end

end

return getThing(ret)

end

function doRemoveThing(uid)

if(isCreature(uid)) then

return doRemoveCreature(uid)

end

return doRemoveItem(uid)

end

function setAttackFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, -1, 0, -1, 0, minl, maxl, minm, maxm, min, max)

end

function setHealingFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, 1, 0, 1, 0, minl, maxl, minm, maxm, min, max)

end

function doChangeTypeItem(uid, subtype)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local subtype = subtype or 1

return doTransformItem(thing.uid, thing.itemid, subtype)

end

function doSetItemText(uid, text, writer, date)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

doItemSetAttribute(uid, "text", text)

if(writer ~= nil) then

doItemSetAttribute(uid, "writer", tostring(writer))

if(date ~= nil) then

doItemSetAttribute(uid, "date", tonumber(date))

end

end

return true

end

function getFluidSourceType(itemid)

local item = getItemInfo(itemid)

return item and item.fluidSource or false

end

function getDepotId(uid)

return getItemAttribute(uid, "depotid") or false

end

function getItemDescriptions(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return {

name = getItemAttribute(uid, "name") or item.name,

plural = getItemAttribute(uid, "pluralname") or item.plural,

article = getItemAttribute(uid, "article") or item.article,

special = getItemAttribute(uid, "description") or "",

text = getItemAttribute(uid, "text") or "",

writer = getItemAttribute(uid, "writer") or "",

date = getItemAttribute(uid, "date") or 0

}

end

function getItemWeightById(itemid, count, precision)

local item, count, precision = getItemInfo(itemid), count or 1, precision or false

if(not item) then

return false

end

if(count > 100) then

-- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count

print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!')

end

local weight = item.weight * count

--[[if(precision) then

return weight

end

local t = string.explode(tostring(weight), ".")

if(table.maxn(t) == 2) then

return tonumber(t[1] .. "." .. string.sub(t[2], 1, 2))

end]]--

return weight

end

function getItemWeaponType(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

return getItemInfo(thing.itemid).weaponType

end

function getItemRWInfo(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item, flags = getItemInfo(thing.itemid), 0

if(item.readable) then

flags = 1

end

if(item.writable) then

flags = flags + 2

end

return flags

end

function getItemLevelDoor(itemid)

local item = getItemInfo(itemid)

return item and item.levelDoor or false

end

function isItemStackable(itemid)

local item = getItemInfo(itemid)

return item and item.stackable or false

end

function isItemRune(itemid)

local item = getItemInfo(itemid)

return item and item.clientCharges or false

end

function isItemDoor(itemid)

local item = getItemInfo(itemid)

return item and item.type == 5 or false

end

function isItemContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 2 or false

end

function isItemFluidContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 12 or false

end

function isItemMovable(itemid)

local item = getItemInfo(itemid)

return item and item.movable or false

end

function isCorpse(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return item and item.corpseType ~= 0 or false

end

function getContainerCapById(itemid)

local item = getItemInfo(itemid)

if(not item or item.group ~= 2) then

return false

end

return item.maxItems

end

function getMonsterAttackSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.attacks or false

end

function getMonsterHealingSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.defenses or false

end

function getMonsterLootList(name)

local monster = getMonsterInfo(name)

return monster and monster.loot or false

end

function getMonsterSummonList(name)

local monster = getMonsterInfo(name)

return monster and monster.summons or false

end

Spawns.lua

local shinys = {

"Bulbasaur", "Ivysaur", "Venusaur", "Charmander", "Charmeleon", "Charizard", "Squirtle", "Wartortle", "Blastoise",

"Caterpie", "Metapod", "Butterfree", "Weedle", "Kakuna", "Beedrill", "Pidgey", "Pidgeotto", "Pidgeot", "Rattata",

"Raticate", "Spearow", "Fearow", "Ekans", "Arbok", "Pikachu", "Raichu", "Sandshrew", "Sandslash", "Nidoran Female",

"Nidorina", "Nidoqueen", "Nidoran Male", "Nidorino", "Nidoking", "Clefairy", "Clefable", "Vulpix", "Ninetales",

"Jigglytuff", "Wigglytuff", "Zubat", "Golbat", "Odish", "Gloom", "Vileplume", "Paras", "Parasect", "Venonat", "Venomoth",

"Diglett", "Dugtrio", "Mewoth", "Persian", "Psyduck", "Golduck", "Mankey", "Primeape", "Growlithe", "Arcanine",

"Poliwag", "Poliwhirl", "Poliwrath", "Abra", "Kadabra", "Alakazam", "Machop", "Machoke", "Machamp", "Bellsprout",

"Weepinbell", "Victreebel", "Tentacool", "Tentacruel", "Geodude", "Graveler", "Golem", "Ponyta", "Rapidash", "Slowpoke",

"Slowbro", "Magnamite", "Magneton", "Farfetch'd", "Doduo", "Dodrio", "Seel", "Dewgong", "Grimer", "Muk", "Shellder",

"Cloyster", "Gastly", "Haunter", "Gengar", "Onix", "Drowzee", "Hypno", "Krabby", "Kingler", "Voltorb", "Electrode",

"Exeggcute", "Exeggutor", "Cubone", "Marowak", "Hitmonlee", "Hitmonchan", "Lickitung", "Koffing", "Weezing", "Rhyhorn",

"Rhydon", "Chansey", "Tangela", "Kangaskhan", "Horsea", "Seadra", "Goldeen", "Seaking", "Staryu", "Starmie", "Mr. Mime",

"Scyther", "Jynx", "Electabuzz", "Magmar", "Pinsir", "Tauros", "Magikarp", "Gyarados", "Lapras", "Ditto", "Eevee", "Vaporeon",

"Jolteon", "Flareon", "Porygon", "Omanyte", "Omastar", "Kabuto", "Kabutops", "Snorlax", "Porygo Z", "Dragonair", "Dratini", "Absol", "Altaria", "Baltoy", "Claydol", "Buneary", "Beldum", "Metang", "Metagross", "Camerupt", "Carnivine", "Carvanha", "Sharpedo", "Croagunk", "Toxicroak", "Buizel", "Floatzel", "Gabite", "Gible", "Gliscor", "Honchkrow", "Luxray", "Mamoswine", "Pachirisu", "Plusle", "Minun", "Probopass", "Purugly", "Froslass", "Glalie", "Snorunt", "Lunatone", "Solrock", "Staraptor", "Tropius", "Yanmega", "Zangoose", "Rhyperior", "Gastrodon", "Typhlosion", "Quilava", "Cyndaquil", "Chikorita", "Meganium", "Bayleef", "Totodile", "Croconaw", "Feraligatr"

}

local raros = {"Articuno", "Zapdos", "Moltreas", "Mew", "Mewtwo", "Dragonite", "Aerodactyl"}

local function doPokemonRegisterLevel(cid)

if not isCreature(cid) then return true end

if getWildPokemonLevel(cid) == -1 then

setWildPokemonLevel(cid)

end

end

local function doSetRandomGender(cid)

if not isCreature(cid) then return true end

local gender = 0

local name = getCreatureName(cid)

if not newpokedex[name] then return true end

local rate = newpokedex[name].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

doCreatureSetSkullType(cid, gender)

end

local function doShiny(cid)

if isCreature(cid) then

if isSummon(cid) then return true end

if getPlayerStorageValue(cid, 74469) >= 1 then return true end

if isInArray(shinys, getCreatureName(cid)) then

transform = math.random(1, 100) --10% chance

elseif isInArray(raros, getCreatureName(cid)) then

transform = math.random(1, 1000) --100% chance

elseif not isInArray(raros, getCreatureName(cid)) and not isInArray(shinys, getCreatureName(cid)) then

return true

end

if transform == 1 then

doSendMagicEffect(getThingPos(cid), 18)

local shi = doCreateMonster("Shiny ".. getCreatureName(cid) .."", getThingPos(cid))

setPlayerStorageValue(shi, 74469, 1)

setPlayerStorageValue(cid, 74469, 1)

doRemoveCreature(cid)

else

setPlayerStorageValue(cid, 74469, 1)

end

else

return true

end

end

function onSpawn(cid)

registerCreatureEvent(cid, "GeneralConfiguration")

registerCreatureEvent(cid, "DirectionSystem")

registerCreatureEvent(cid, "CastSystem")

if isSummon(cid) then

registerCreatureEvent(cid, "SummonDeath")

return true

end

registerCreatureEvent(cid, "Experience")

addEvent(doPokemonRegisterLevel, 5, cid)

addEvent(doSetRandomGender, 5, cid)

addEvent(doShiny, 10, cid)

return true

end

Potion.lua

function setStorage(cid, storage, valor)

if isCreature(cid) then

if getPlayerStorageValue(cid, storage) >= 1 then

setPlayerStorageValue(cid, storage, valor)

end

end

end

function doHealOverTime(cid, div, turn, effect)

if not isCreature(cid) then return true end

if turn <= 0 then return true end

if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return true end

if getPlayerStorageValue(cid, 174) >= 1 then

setPlayerStorageValue(cid, 174, 0)

setPlayerStorageValue(cid, 173, 0)

return true

end

local d = div / 10000

local amount = math.floor(getCreatureMaxHealth(cid) * d)

doCreatureAddHealth(cid, amount)

if math.floor(turn/10) == turn/10 then

doSendMagicEffect(getThingPos(cid), effect)

end

addEvent(doHealOverTime, 100, cid, div, turn - 1, effect)

end

local potions = {

[12347] = {effect = 13, div = 30}, --super potion

[12348] = {effect = 13, div = 60}, --great potion --edited deixei igual as potions do PXG

[12346] = {effect = 12, div = 80}, --ultra potion

[12345] = {effect = 14, div = 90}, --hyper potion

}

--[12343] = {effect = 12, div = 100}}

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

if isPlayer(item2.uid) then

return doPlayerSendCancel(cid, "You can only use potions on pokemons!")

end

if not isCreature(item2.uid) then

return doPlayerSendCancel(cid, "You can only use potions on pokemons!")

end

if not isPlayer(getCreatureMaster(item2.uid)) then

return doPlayerSendCancel(cid, "You cant use potions on wild pokemons.")

end

if getCreatureHealth(item2.uid) == getCreatureMaxHealth(item2.uid) then

return doPlayerSendCancel(cid, "This pokemon is already at full health.")

end

if getPlayerStorageValue(item2.uid, 173) >= 1 then

return doPlayerSendCancel(cid, "This pokemon is already under effects of potions.")

end

if getCreatureMaster(item2.uid) ~= cid then

return doPlayerSendCancel(cid, "You can only use potions on your own Pokemons!")

end

doCreatureSay(cid, ""..getCreatureName(item2.uid)..", take this potion!", TALKTYPE_SAY)

doSendMagicEffect(getThingPos(item2.uid), 172)

setPlayerStorageValue(item2.uid, 173, 1)

doRemoveItem(item.uid, 1)

local sid = item2.uid

local a = potions[item.itemid]

doHealOverTime(item2.uid, a.div, 100, a.effect)

addEvent(setStorage, 10000, sid, 173, 0)

return true

end

Editado por principe sharingan (veja o histórico de edições)

eR3Xwgv.png?1
 

Link para o post
Compartilhar em outros sites

Look.lua:

function onLook(cid, thing, position, lookDistance)

local str = ""

if not isCreature(thing.uid) then

local iname = getItemInfo(thing.itemid)

if isPokeball(thing.itemid) then

local owner = getItemAttribute(thing.uid, "firstpoke")

local pokename = getItemAttribute(thing.uid, "poke")

local item = getItemInfo(thing.itemid)

str = "You see "..item.article.." "..item.name..".\n"

str = str.."It contains "..getArticle(pokename).." "..pokename.." [level "..getItemAttribute(thing.uid, "level").."].\n"

if owner and owner ~= getCreatureName(cid) then

str = str.."It belongs to "..owner..".\nIt is a unique item."

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

end

local boost = getItemAttribute(thing.uid, "boost") or 0

local boostshow = ""

if boost > 0 then

str = str.."Boost level: +"..boost..".\n"

end

if getItemAttribute(thing.uid, "nick") then

str = str.."It's nickname is: "..getItemAttribute(thing.uid, "nick")..".\n"

end

if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

str = str.."\n--- Status ---"

str = str.."\nOffense: "..math.floor(getItemAttribute(thing.uid, "offense")).." Defense: "..math.floor(getItemAttribute(thing.uid, "defense")).."\n"

str = str.."Agility: "..math.floor(getItemAttribute(thing.uid, "speed")).." Sp. Attack: "..math.floor(getItemAttribute(thing.uid, "specialattack")).."\n"

str = str.."Vitality: "..math.floor(getItemAttribute(thing.uid, "vitality"))..""

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") then

str = "You see a "..string.lower(iname.name).." ["..getItemAttribute(thing.uid, "level").."].\n"

if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

else

return true

end

end

local npcname = getCreatureName(thing.uid)

local l = string.len(npcname)

if not isPlayer(thing.uid) and not isMonster(thing.uid) then

--string.sub(npcname, l - 1, l) == " " then

local article = getPlayerStorageValue(thing.uid, 9891) == 1 and "He is" or "She is"

local nname = string.sub(npcname, 1, l - 2)

if nname == getCreatureName(cid) then

nname = "yourself"

article = "You are"

end

str = "You see "..nname..". "..article.." a pokemon trainer."

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

end

if not isMonster(thing.uid) then

return true

end

if getCreatureName(thing.uid) == "Evolution" then return false end

if not isSummon(thing.uid) then

local str = "You see a wild "..string.lower(getCreatureName(thing.uid)).." [level "..getPokemonLevel(thing.uid).."].\n"

if getPokemonGender(thing.uid) == SEX_MALE then

str = str.."It is male."

elseif getPokemonGender(thing.uid) == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif isSummon(thing.uid) and not isPlayer(thing.uid) then

local boostlevel = getItemAttribute(getPlayerSlotItem(getCreatureMaster(thing.uid), 8).uid, "boost") or 0

local boostshow = " + "..boostlevel.."]"

if showBoostSeparated then

boostshow = "] [+"..boostlevel.."]"

end

local levelinfo = "["..getPokemonLevel(thing.uid)..""..boostshow..""

if getCreatureMaster(thing.uid) == cid then

local myball = getPlayerSlotItem(cid, 8).uid

local nexp = getItemAttribute(myball, "nextlevelexp")

local string = "You see your "..string.lower(getCreatureName(thing.uid)).." "..levelinfo.."."

string = string.."\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid).."."

string = string.."\n"..getPokemonHappinessDescription(thing.uid)

if getItemAttribute(myball, "level") <= 99 then

string = string.."\nExperience needed to level up: "..nexp.."."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid)).." "..levelinfo..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")

end

return false

end

return true

end

050-function.lua

function doPlayerGiveItem(cid, itemid, amount, subType)

local item = 0

if(isItemStackable(itemid)) then

item = doCreateItemEx(itemid, amount)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

else

for i = 1, amount do

item = doCreateItemEx(itemid, subType)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

end

return true

end

function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType)

for i = 1, amount do

local container = doCreateItemEx(containerid, 1)

for x = 1, getContainerCapById(containerid) do

doAddContainerItem(container, itemid, subType)

end

if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

return true

end

function doPlayerTakeItem(cid, itemid, amount)

return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount)

end

function doPlayerBuyItem(cid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItem(cid, itemid, count, charges)

end

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItemContainer(cid, containerid, itemid, count, charges)

end

function doPlayerSellItem(cid, itemid, count, cost)

if(not doPlayerTakeItem(cid, itemid, count)) then

return false

end

if(not doPlayerAddMoney(cid, cost)) then

error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')

end

return true

end

function doPlayerWithdrawMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

local balance = getPlayerBalance(cid)

if(amount > balance or not doPlayerAddMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, balance - amount)

return true

end

function doPlayerDepositMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

if(not doPlayerRemoveMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)

return true

end

function isPremium(cid)

return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigInfo('freePremium'))))

end

function getMonthDayEnding(day)

if(day == "01" or day == "21" or day == "31") then

return "st"

elseif(day == "02" or day == "22") then

return "nd"

elseif(day == "03" or day == "23") then

return "rd"

end

return "th"

end

function getMonthString(m)

return os.date("%B", os.time{year = 1970, month = m, day = 1})

end

function getArticle(str)

return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"

end

function isNumber(str)

return tonumber(str) ~= nil

end

function doPlayerAddAddons(cid, addon)

for i = 0, table.maxn(maleOutfits) do

doPlayerAddOutfit(cid, maleOutfits, addon)

end

for i = 0, table.maxn(femaleOutfits) do

doPlayerAddOutfit(cid, femaleOutfits, addon)

end

end

function doPlayerWithdrawAllMoney(cid)

return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))

end

function doPlayerDepositAllMoney(cid)

return doPlayerDepositMoney(cid, getPlayerMoney(cid))

end

function doPlayerTransferAllMoneyTo(cid, target)

return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))

end

function playerExists(name)

return getPlayerGUIDByName(name) ~= 0

end

function getTibiaTime()

local minutes = getWorldTime()

local hours = 0

while (minutes > 60) do

hours = hours + 1

minutes = minutes - 60

end

return {hours = hours, minutes = minutes}

end

function doWriteLogFile(file, text)

local f = io.open(file, "a+")

if(not f) then

return false

end

f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")

f:close()

return true

end

function getExperienceForLevel(lv)

lv = lv - 1

return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3

end

function doMutePlayer(cid, time)

local condition = createConditionObject(CONDITION_MUTED)

setConditionParam(condition, CONDITION_PARAM_TICKS, time * 1000)

return doAddCondition(cid, condition)

end

function getPlayerGroupName(cid)

return getGroupInfo(getPlayerGroupId(cid)).name

end

function getPlayerVocationName(cid)

return getVocationInfo(getPlayerVocation(cid)).name

end

function getPromotedVocation(vid)

return getVocationInfo(vid).promotedVocation

end

function doPlayerRemovePremiumDays(cid, days)

return doPlayerAddPremiumDays(cid, -days)

end

function getPlayerMasterPos(cid)

return getTownTemplePosition(getPlayerTown(cid))

end

function getHouseOwner(houseId)

return getHouseInfo(houseId).owner

end

function getHouseName(houseId)

return getHouseInfo(houseId).name

end

function getHouseEntry(houseId)

return getHouseInfo(houseId).entry

end

function getHouseRent(houseId)

return getHouseInfo(houseId).rent

end

function getHousePrice(houseId)

return getHouseInfo(houseId).price

end

function getHouseTown(houseId)

return getHouseInfo(houseId).town

end

function getHouseTilesCount(houseId)

return getHouseInfo(houseId).tiles

end

function getItemNameById(itemid)

return getItemDescriptionsById(itemid).name

end

function getItemPluralNameById(itemid)

return getItemDescriptionsById(itemid).plural

end

function getItemArticleById(itemid)

return getItemDescriptionsById(itemid).article

end

function getItemName(uid)

return getItemDescriptions(uid).name

end

function getItemPluralName(uid)

return getItemDescriptions(uid).plural

end

function getItemArticle(uid)

return getItemDescriptions(uid).article

end

function getItemText(uid)

return getItemDescriptions(uid).text

end

function getItemSpecialDescription(uid)

return getItemDescriptions(uid).special

end

function getItemWriter(uid)

return getItemDescriptions(uid).writer

end

function getItemDate(uid)

return getItemDescriptions(uid).date

end

function getTilePzInfo(pos)

return getTileInfo(pos).protection

end

function getTileZoneInfo(pos)

local tmp = getTileInfo(pos)

if(tmp.pvp) then

return 2

end

if(tmp.nopvp) then

return 1

end

return 0

end

function doShutdown()

return doSetGameState(GAMESTATE_SHUTDOWN)

end

function doSummonCreature(name, pos, displayError)

local displayError, cid = displayError or true, doCreateMonster(name, pos, displayError)

if(not cid) then

cid = doCreateNpc(name, pos, displayError)

end

return cid

end

function getOnlinePlayers()

local tmp = getPlayersOnline()

local players = {}

for i, cid in ipairs(tmp) do

table.insert(players, getCreatureName(cid))

end

return players

end

function getPlayerByName(name)

local cid = getCreatureByName(name)

return isPlayer(cid) and cid or nil

end

function isPlayer(cid)

return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS

end

function isPlayerGhost(cid)

if(not isPlayer(cid)) then

return false

end

return getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)

end

function isMonster(cid)

return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS

end

function isNpc(cid)

return isCreature(cid) and cid >= AUTOID_NPCS

end

function doPlayerSetExperienceRate(cid, value)

return doPlayerSetRate(cid, SKILL__LEVEL, value)

end

function doPlayerSetMagicRate(cid, value)

return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)

end

function doPlayerAddLevel(cid, amount, round)

local experience, level = 0, getPlayerLevel(cid)

if(amount > 0) then

experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level))

else

experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount))

end

return doPlayerAddExperience(cid, experience)

end

function doPlayerAddMagLevel(cid, amount)

for i = 1, amount do

doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid)) / getConfigInfo('rateMagic'))

end

return true

end

function doPlayerAddSkill(cid, skill, amount, round)

if(skill == SKILL__LEVEL) then

return doPlayerAddLevel(cid, amount, round)

elseif(skill == SKILL__MAGLEVEL) then

return doPlayerAddMagLevel(cid, amount)

end

return doPlayerAddSkillTry(cid, skill, (getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill)) / getConfigInfo('rateSkill'))

end

function getPartyLeader(cid)

local party = getPartyMembers(cid)

if(type(party) ~= 'table') then

return 0

end

return party[1]

end

function isInParty(cid)

return type(getPartyMembers(cid)) == 'table'

end

function isPrivateChannel(channelId)

return channelId >= CHANNEL_PRIVATE

end

function doPlayerResetIdleTime(cid)

return doPlayerSetIdleTime(cid, 0)

end

function doBroadcastMessage(text, class)

local class = class or MESSAGE_STATUS_WARNING

if(type(class) == 'string') then

local className = MESSAGE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doPlayerSendTextMessage(pid, class, text)

end

print("> Broadcasted message: \"" .. text .. "\".")

return true

end

function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost)

local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST

if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then

return false

end

if(type(class) == 'string') then

local className = TALKTYPE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doCreatureSay(cid, text, class, ghost, pid)

end

print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")

return true

end

function getBooleanFromString(input)

local tmp = type(input)

if(tmp == 'boolean') then

return input

end

if(tmp == 'number') then

return input > 0

end

local str = string.lower(tostring(input))

return (str == "yes" or str == "true" or (tonumber(str) ~= nil and tonumber(str) > 0))

end

function doCopyItem(item, attributes)

local attributes = attributes or false

local ret = doCreateItemEx(item.itemid, item.type)

if(attributes) then

if(item.actionid > 0) then

doItemSetAttribute(ret, "aid", item.actionid)

end

end

if(isContainer(item.uid)) then

for i = (getContainerSize(item.uid) - 1), 0, -1 do

local tmp = getContainerItem(item.uid, i)

if(tmp.itemid > 0) then

doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)

end

end

end

return getThing(ret)

end

function doRemoveThing(uid)

if(isCreature(uid)) then

return doRemoveCreature(uid)

end

return doRemoveItem(uid)

end

function setAttackFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, -1, 0, -1, 0, minl, maxl, minm, maxm, min, max)

end

function setHealingFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, 1, 0, 1, 0, minl, maxl, minm, maxm, min, max)

end

function doChangeTypeItem(uid, subtype)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local subtype = subtype or 1

return doTransformItem(thing.uid, thing.itemid, subtype)

end

function doSetItemText(uid, text, writer, date)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

doItemSetAttribute(uid, "text", text)

if(writer ~= nil) then

doItemSetAttribute(uid, "writer", tostring(writer))

if(date ~= nil) then

doItemSetAttribute(uid, "date", tonumber(date))

end

end

return true

end

function getFluidSourceType(itemid)

local item = getItemInfo(itemid)

return item and item.fluidSource or false

end

function getDepotId(uid)

return getItemAttribute(uid, "depotid") or false

end

function getItemDescriptions(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return {

name = getItemAttribute(uid, "name") or item.name,

plural = getItemAttribute(uid, "pluralname") or item.plural,

article = getItemAttribute(uid, "article") or item.article,

special = getItemAttribute(uid, "description") or "",

text = getItemAttribute(uid, "text") or "",

writer = getItemAttribute(uid, "writer") or "",

date = getItemAttribute(uid, "date") or 0

}

end

function getItemWeightById(itemid, count, precision)

local item, count, precision = getItemInfo(itemid), count or 1, precision or false

if(not item) then

return false

end

if(count > 100) then

-- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count

print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!')

end

local weight = item.weight * count

--[[if(precision) then

return weight

end

local t = string.explode(tostring(weight), ".")

if(table.maxn(t) == 2) then

return tonumber(t[1] .. "." .. string.sub(t[2], 1, 2))

end]]--

return weight

end

function getItemWeaponType(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

return getItemInfo(thing.itemid).weaponType

end

function getItemRWInfo(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item, flags = getItemInfo(thing.itemid), 0

if(item.readable) then

flags = 1

end

if(item.writable) then

flags = flags + 2

end

return flags

end

function getItemLevelDoor(itemid)

local item = getItemInfo(itemid)

return item and item.levelDoor or false

end

function isItemStackable(itemid)

local item = getItemInfo(itemid)

return item and item.stackable or false

end

function isItemRune(itemid)

local item = getItemInfo(itemid)

return item and item.clientCharges or false

end

function isItemDoor(itemid)

local item = getItemInfo(itemid)

return item and item.type == 5 or false

end

function isItemContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 2 or false

end

function isItemFluidContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 12 or false

end

function isItemMovable(itemid)

local item = getItemInfo(itemid)

return item and item.movable or false

end

function isCorpse(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return item and item.corpseType ~= 0 or false

end

function getContainerCapById(itemid)

local item = getItemInfo(itemid)

if(not item or item.group ~= 2) then

return false

end

return item.maxItems

end

function getMonsterAttackSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.attacks or false

end

function getMonsterHealingSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.defenses or false

end

function getMonsterLootList(name)

local monster = getMonsterInfo(name)

return monster and monster.loot or false

end

function getMonsterSummonList(name)

local monster = getMonsterInfo(name)

return monster and monster.summons or false

end

Spawns.lua

local shinys = {

"Bulbasaur", "Ivysaur", "Venusaur", "Charmander", "Charmeleon", "Charizard", "Squirtle", "Wartortle", "Blastoise",

"Caterpie", "Metapod", "Butterfree", "Weedle", "Kakuna", "Beedrill", "Pidgey", "Pidgeotto", "Pidgeot", "Rattata",

"Raticate", "Spearow", "Fearow", "Ekans", "Arbok", "Pikachu", "Raichu", "Sandshrew", "Sandslash", "Nidoran Female",

"Nidorina", "Nidoqueen", "Nidoran Male", "Nidorino", "Nidoking", "Clefairy", "Clefable", "Vulpix", "Ninetales",

"Jigglytuff", "Wigglytuff", "Zubat", "Golbat", "Odish", "Gloom", "Vileplume", "Paras", "Parasect", "Venonat", "Venomoth",

"Diglett", "Dugtrio", "Mewoth", "Persian", "Psyduck", "Golduck", "Mankey", "Primeape", "Growlithe", "Arcanine",

"Poliwag", "Poliwhirl", "Poliwrath", "Abra", "Kadabra", "Alakazam", "Machop", "Machoke", "Machamp", "Bellsprout",

"Weepinbell", "Victreebel", "Tentacool", "Tentacruel", "Geodude", "Graveler", "Golem", "Ponyta", "Rapidash", "Slowpoke",

"Slowbro", "Magnamite", "Magneton", "Farfetch'd", "Doduo", "Dodrio", "Seel", "Dewgong", "Grimer", "Muk", "Shellder",

"Cloyster", "Gastly", "Haunter", "Gengar", "Onix", "Drowzee", "Hypno", "Krabby", "Kingler", "Voltorb", "Electrode",

"Exeggcute", "Exeggutor", "Cubone", "Marowak", "Hitmonlee", "Hitmonchan", "Lickitung", "Koffing", "Weezing", "Rhyhorn",

"Rhydon", "Chansey", "Tangela", "Kangaskhan", "Horsea", "Seadra", "Goldeen", "Seaking", "Staryu", "Starmie", "Mr. Mime",

"Scyther", "Jynx", "Electabuzz", "Magmar", "Pinsir", "Tauros", "Magikarp", "Gyarados", "Lapras", "Ditto", "Eevee", "Vaporeon",

"Jolteon", "Flareon", "Porygon", "Omanyte", "Omastar", "Kabuto", "Kabutops", "Snorlax", "Porygo Z", "Dragonair", "Dratini", "Absol", "Altaria", "Baltoy", "Claydol", "Buneary", "Beldum", "Metang", "Metagross", "Camerupt", "Carnivine", "Carvanha", "Sharpedo", "Croagunk", "Toxicroak", "Buizel", "Floatzel", "Gabite", "Gible", "Gliscor", "Honchkrow", "Luxray", "Mamoswine", "Pachirisu", "Plusle", "Minun", "Probopass", "Purugly", "Froslass", "Glalie", "Snorunt", "Lunatone", "Solrock", "Staraptor", "Tropius", "Yanmega", "Zangoose", "Rhyperior", "Gastrodon", "Typhlosion", "Quilava", "Cyndaquil", "Chikorita", "Meganium", "Bayleef", "Totodile", "Croconaw", "Feraligatr"

}

local raros = {"Articuno", "Zapdos", "Moltreas", "Mew", "Mewtwo", "Dragonite", "Aerodactyl"}

local function doPokemonRegisterLevel(cid)

if not isCreature(cid) then return true end

if getWildPokemonLevel(cid) == -1 then

setWildPokemonLevel(cid)

end

end

local function doSetRandomGender(cid)

if not isCreature(cid) then return true end

local gender = 0

local name = getCreatureName(cid)

if not newpokedex[name] then return true end

local rate = newpokedex[name].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

doCreatureSetSkullType(cid, gender)

end

local function doShiny(cid)

if isCreature(cid) then

if isSummon(cid) then return true end

if getPlayerStorageValue(cid, 74469) >= 1 then return true end

if isInArray(shinys, getCreatureName(cid)) then

transform = math.random(1, 100) --10% chance

elseif isInArray(raros, getCreatureName(cid)) then

transform = math.random(1, 1000) --100% chance

elseif not isInArray(raros, getCreatureName(cid)) and not isInArray(shinys, getCreatureName(cid)) then

return true

end

if transform == 1 then

doSendMagicEffect(getThingPos(cid), 18)

local shi = doCreateMonster("Shiny ".. getCreatureName(cid) .."", getThingPos(cid))

setPlayerStorageValue(shi, 74469, 1)

setPlayerStorageValue(cid, 74469, 1)

doRemoveCreature(cid)

else

setPlayerStorageValue(cid, 74469, 1)

end

else

return true

end

end

function onSpawn(cid)

registerCreatureEvent(cid, "GeneralConfiguration")

registerCreatureEvent(cid, "DirectionSystem")

registerCreatureEvent(cid, "CastSystem")

if isSummon(cid) then

registerCreatureEvent(cid, "SummonDeath")

return true

end

registerCreatureEvent(cid, "Experience")

addEvent(doPokemonRegisterLevel, 5, cid)

addEvent(doSetRandomGender, 5, cid)

addEvent(doShiny, 10, cid)

return true

end

Potion.lua

function setStorage(cid, storage, valor)

if isCreature(cid) then

if getPlayerStorageValue(cid, storage) >= 1 then

setPlayerStorageValue(cid, storage, valor)

end

end

end

function doHealOverTime(cid, div, turn, effect)

if not isCreature(cid) then return true end

if turn <= 0 then return true end

if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return true end

if getPlayerStorageValue(cid, 174) >= 1 then

setPlayerStorageValue(cid, 174, 0)

setPlayerStorageValue(cid, 173, 0)

return true

end

local d = div / 10000

local amount = math.floor(getCreatureMaxHealth(cid) * d)

doCreatureAddHealth(cid, amount)

if math.floor(turn/10) == turn/10 then

doSendMagicEffect(getThingPos(cid), effect)

end

addEvent(doHealOverTime, 100, cid, div, turn - 1, effect)

end

local potions = {

[12347] = {effect = 13, div = 30}, --super potion

[12348] = {effect = 13, div = 60}, --great potion --edited deixei igual as potions do PXG

[12346] = {effect = 12, div = 80}, --ultra potion

[12345] = {effect = 14, div = 90}, --hyper potion

}

--[12343] = {effect = 12, div = 100}}

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

if isPlayer(item2.uid) then

return doPlayerSendCancel(cid, "You can only use potions on pokemons!")

end

if not isCreature(item2.uid) then

return doPlayerSendCancel(cid, "You can only use potions on pokemons!")

end

if not isPlayer(getCreatureMaster(item2.uid)) then

return doPlayerSendCancel(cid, "You cant use potions on wild pokemons.")

end

if getCreatureHealth(item2.uid) == getCreatureMaxHealth(item2.uid) then

return doPlayerSendCancel(cid, "This pokemon is already at full health.")

end

if getPlayerStorageValue(item2.uid, 173) >= 1 then

return doPlayerSendCancel(cid, "This pokemon is already under effects of potions.")

end

if getCreatureMaster(item2.uid) ~= cid then

return doPlayerSendCancel(cid, "You can only use potions on your own Pokemons!")

end

doCreatureSay(cid, ""..getCreatureName(item2.uid)..", take this potion!", TALKTYPE_SAY)

doSendMagicEffect(getThingPos(item2.uid), 172)

setPlayerStorageValue(item2.uid, 173, 1)

doRemoveItem(item.uid, 1)

local sid = item2.uid

local a = potions[item.itemid]

doHealOverTime(item2.uid, a.div, 100, a.effect)

addEvent(setStorage, 10000, sid, 173, 0)

return true

end

Pode ser também porque uso dedicado e o Sistema operacional dele é > Windows server 2003, sera que pode ser isso ? que causa o fechamento?

Link para o post
Compartilhar em outros sites

Pode ser também porque uso dedicado e o Sistema operacional dele é > Windows server 2003, sera que pode ser isso ? que causa o fechamento?

Pouco provável que seja isso :hum:

Sdds old times!  :starblack: 


70a06222.gif?6e08eb47

[show Off] Vampira
Bt79gzJ.png

Link para o post
Compartilhar em outros sites

Pouco provável que seja isso :hum:

O que poderia ser então, pf, preciso urgentemente de ajuda.

Link para o post
Compartilhar em outros sites

Tente Usar esse Look.lua

function onLook(cid, thing, position, lookDistance)

local str = ""

if not isCreature(thing.uid) then

local iname = getItemInfo(thing.itemid)

if isPokeball(thing.itemid) then

local unique = getItemAttribute(thing.uid, "unique") --alterado v2.6

local pokename = getItemAttribute(thing.uid, "poke")

local item = getItemInfo(thing.itemid)

str = "You see "..item.article.." "..item.name.."." --alterado v2.6

if unique and unique == getCreatureName(cid) then

str = str.." It's an unique item." --alterado v2.6

end

str = str.."\nIt contains "..getArticle(pokename).." "..pokename.." [level "..getItemAttribute(thing.uid, "level").."].\n" --alterado v2.6

local boost = getItemAttribute(thing.uid, "boost") or 0

local boostshow = ""

if boost > 0 then

str = str.."Boost level: +"..boost..".\n"

end

if getItemAttribute(thing.uid, "nick") then

str = str.."It's nickname is: "..getItemAttribute(thing.uid, "nick")..".\n"

end

if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

str = str.."\n--- Status ---"

str = str.."\nOffense: "..math.floor(getItemAttribute(thing.uid, "offense")).." Defense: "..math.floor(getItemAttribute(thing.uid, "defense")).."\n"

str = str.."Agility: "..math.floor(getItemAttribute(thing.uid, "speed")).." Sp. Attack: "..math.floor(getItemAttribute(thing.uid, "specialattack")).."\n"

str = str.."Vitality: "..math.floor(getItemAttribute(thing.uid, "vitality"))..""

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") then

str = "You see a "..string.lower(iname.name).." ["..getItemAttribute(thing.uid, "level").."].\n"

if getItemAttribute(thing.uid, "gender") == SEX_MALE then

str = str.."It is male."

elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif isContainer(thing.uid) then --containers

local info = getItemInfo(thing.itemid) --alterado v2.7

if info.name == "dead human" and getItemAttribute(thing.uid, "pName") then

str = "You see a dead human (Vol:"..getContainerCap(thing.uid).."). "

str = str.."You 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 v2.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 v2.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 v2.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 v2.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

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

return false

end

if getCreatureName(thing.uid) == "Evolution" then return false end

if not isSummon(thing.uid) then

local str = "You see a wild "..string.lower(getCreatureName(thing.uid)).." [level "..getPokemonLevel(thing.uid).."].\n"

if getPokemonGender(thing.uid) == SEX_MALE then

str = str.."It is male."

elseif getPokemonGender(thing.uid) == SEX_FEMALE then

str = str.."It is female."

else

str = str.."It is genderless."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)

return false

elseif isSummon(thing.uid) and not isPlayer(thing.uid) then

local boostlevel = getItemAttribute(getPlayerSlotItem(getCreatureMaster(thing.uid), 8).uid, "boost") or 0

local boostshow = " + "..boostlevel.."]"

if showBoostSeparated then

boostshow = "] [+"..boostlevel.."]"

end

local levelinfo = "["..getPokemonLevel(thing.uid)..""..boostshow..""

if getCreatureMaster(thing.uid) == cid then

local myball = getPlayerSlotItem(cid, 8).uid

local nexp = getItemAttribute(myball, "nextlevelexp")

local string = "You see your "..string.lower(getCreatureName(thing.uid)).." "..levelinfo.."."

string = string.."\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid).."."

string = string.."\n"..getPokemonHappinessDescription(thing.uid)

if getItemAttribute(myball, "level") <= 99 then

string = string.."\nExperience needed to level up: "..nexp.."."

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid)).." "..levelinfo..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")

end

return false

end

return true

end

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites
  • 1 year later...

Windows server 2003 ele Faz o serve feixa ? Eu criei um ot So qe ele vive caindo 

NTO PANZER SERVIDOR 24H 

1554689_1.png

http://narutopanzer.blogspot.com.br/

RATE  EXP 999

 

DBO SERVIDOR 24H 

1549171_1.png

http://dbowtf.ddns.net/

RATE EXP 400

 

 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo