Ir para conteúdo

Light.Tenshimaru

Membro
  • Registro em

  • Última visita

Tudo que Light.Tenshimaru postou

  1. Com Essa Mudança Não Ha Mais Tempo De Proteção Após O Login. Eu Gostaria Que Houvesse 10 Segundos Após O Login Sem Que Os Monstros Detectassem A Presença Do Character.
  2. Tinha um server 9.7 que o "You may not attack immediately after logging in" funcionava corretamente, (Eu não podia atacar nem os monstro poderiam me atacar) Quando migrei para 9.86 os monstros passaram a me ver e atacar, mas eu fico bloqueado para revidar. Como conserto? Ja Procurei e não achei.
  3. Agradeço a ajuda de todos. Mas TonyHalk, gostaria que você ajudasse, pois tenho muito enteresse em aumentar esse limite de agrupáveis. Estarei enviando uma MP para você.
  4. Boa Noite! Gostaria de saber se de alguma forma é possivel agrupar mais de 100 items, ainda que seja nas sources. Por exemplo: "100 Assassin Star" passaria a "250 Assassin Star." E gostaria de colocar uma automação para que quando a munição de um paladino acabasse, a reserva que está na backpack equipasse automaticamente. Por exemplo: infernal bolt equipada na flecha acabou, havendo mais 100 infernal bolts na backpack preenchia o lugar vazio da flecha. Desde já agradeço.
  5. Olá. Gostaria de pedir ajuda com minha versão do OtServ.(9.70) Por algum motivo apos uma atualização em algumas versões anteriores, as criaturas que eram convencidas no jogo não deixavam mais seus corpos quando morriam, sumiam simplesmente em um curta fumaça, justamente o que impede que o recurso "death" de "TODOS" os PET Systems não funcione. O meu pedido é justamente para que me ajudem a descobrir algo que permita que seus corpos apareçam novamente para os pet systems funcionem em versões superiores a 9.7. Eu creio que talvez compilando o executável do servidor com algumas modificações isso será possivel. Desde já agradeço.
  6. Eu Uso Esse Também! Apenas Quero Que Esse Meu Seja Corrigido, Pois Ele É Automático E Mais Fácil Para Iniciantes.. Alguém?
  7. Nao Sei Fazer Script Também! :/
  8. Estou com um problema e faz tempo que procuro a solução em diversos Forum's e não acho. É o seguinte: Tenho um script de "AutoGold" que funciona plenamente, só que quando mato monstros "sem corpse" como Slime e derivados ou Rift Worm ele trava meu servidor e fica aparecendo mensagens constantes uma atrás da outra assim. "[Error - CreatureScript Interface] In a timer event called from: data/creaturescripts/scripts/autoloot.lua:onKill Description: (LuaInterface::luaGetThing) Thing not found" Meu Script é esse: local configs = { ids = {2148, 2152, 2160, 7588, 7589, 7590, 7591, 7618, 7620, 8473}, premium = true -- só premium usar o auto loot ? [true ou false] } function getItemsInContainerById(container, itemid) local items = {} if getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function autoGold(cid, pos, stack) if stack > 255 then return true end local position = {x = pos.x, y = pos.y, z = pos.z, stackpos = stack} local tile = getThingFromPos(position) if isCorpse(tile.uid) then corpse = tile else autoGold(cid, pos, stack + 1) end if corpse ~= nil then for _, idmoney in pairs(configs.ids) do tab = getItemsInContainerById(corpse.uid, idmoney) if #tab ~= 0 then for _, uid in pairs(tab) do money = getPlayerMoney(cid) doPlayerRemoveMoney(cid, money) doPlayerAddMoney(cid, money+item.type) doRemoveItem(item.uid, item.type) end end end end end function onKill(cid, target) if not isPremium(cid) and configs.premium then return true end return addEvent(autoGold, 10, cid, getCreaturePosition(target), 0) end Muito agradecido quem puder me ajudar...
  9. Nome do Script: Sistema de Pet com Evolução Tipo do Script: Lib Versão Utilizada:9.44 Servidor Utilizado:Crystal Server 2.3 Nível de Experiência:Intermediário Informações Extras: Desejo modificar esse script. Adicionar sistema de evolução. Ex:"Orc - LvL 10 - Orc Spearman - LVL 30 - Orc Warlord "Uma Semana De Rep+ Pra Quem Resolver" http://pastebin.com/1CxBj6CR --Circles AREA_CIRCLE2X2 = { {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} } AREA_CIRCLE3X3 = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } -- Crosses AREA_CROSS1X1 = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } AREA_CROSS5X5 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } AREA_CROSS6X6 = { {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0} } --Squares AREA_SQUARE1X1 = { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } -- Walls AREA_WALLFIELD = { {1, 1, 3, 1, 1} } AREADIAGONAL_WALLFIELD = { {0, 0, 0, 0, 1}, {0, 0, 0, 1, 1}, {0, 1, 3, 1, 0}, {1, 1, 0, 0, 0}, {1, 0, 0, 0, 0}, } emoteAttack = true petEmoteAttack = true refillStatsAtLevel = true TYPE_NEAR = 1 TYPE_DISTANCE = 2 petExhaust = 3 --in seconds petSayExhaust = 3 --in seconds petGainTicks = { health = {func = doCreatureAddHealth, time = 3000, count = 1}, mana = {func = doCreatureAddMana, time = 3000, count = 2} } petGainHealth = 30 petGainMana = 30 petExpRate = 1.3 carryItems = 10 petItemsBase = 1250 petItems = {} blockedItems = {6132, 2195} for i = 1, carryItems do table.insert(petItems, petItemsBase + i) end petBase = 6120 petStorages = { pet = petBase + 1000, level = petBase + 2000, exp = petBase + 3000, items = petBase + 4000, isPet = petBase + 5000, isDead = petBase + 6000, exhaust = petBase + 7000, sayExhaust = petBase + 8000, moveExhaust = petBase + 9000, health = petBase + 10000, mana = petBase + 11000, buyed = petBase + 12000 } tables = { pet = {}, level = {}, exp = {}, items = {}, isDead = {}, exhaust = {}, health = {}, mana = {}, buyed = {} } reviveCost = 1000 pets = { [1] = { monster = "orc spearman", vocations = {1, 2, 3, 4}, level = 30, attacks = { [1] = {name = "", level = 30, petLevel = 30, mana = 50, type = TYPE_DISTANCE, range = 10, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_NONE, distEffect = CONST_ANI_SPEAR, damageMin = 0.7, damageMax = 1.0} } }, [2] = { monster = "fire devil", vocations = {1, 2}, level = 60, attacks = { [1] = {name = "Fire Strike", level = 60, petLevel = 60, mana = 100, type = TYPE_DISTANCE, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0} } }, [3] = { monster = "minotaur guard", vocations = {3, 4}, level = 60, cost = 50, attacks = { [1] = {name = "Punch", level = 60, petLevel = 60, mana = 55, type = TYPE_NEAR, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_NONE, damageMin = 1.5, damageMax = 2.0} } }, [4] = { monster = "water elemental", vocations = {2}, level = 95, cost = 15000, attacks = { [1] = {name = "Ice Bomb", level = 100, petLevel = 100, mana = 250, type = TYPE_DISTANCE, range = 3, combat = COMBAT_ICEDAMAGE, effect = CONST_ME_ICEAREA, distEffect = CONST_ANI_ICE, damageMin = 1.5, damageMax = 2.0, area = AREA_CROSS1X1}, [2] = {name = "Poison Strike", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, range = 8, combat = COMBAT_POISONDAMAGE, effect = CONST_ME_GREENRINGS, distEffect = CONST_ANI_POISON, damageMin = 1.2, damageMax = 1.8} } }, [5] = { monster = "fire elemental", vocations = {1}, level = 95, attacks = { [1] = {name = "Fire Bomb", level = 100, petLevel = 100, mana = 250, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIRE, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0, area = AREA_CROSS1X1}, [2] = {name = "Fire Strike", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.2, damageMax = 1.8} } }, [6] = { monster = "orc warlord", vocations = {4}, level = 95, attacks = { [1] = {name = "Throw Knife", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_THROWINGKNIFE, damageMin = 1.5, damageMax = 2.0} } }, [7] = { monster = "golem", vocations = {3}, level = 95, attacks = { [1] = {name = "Throw Stone", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_LARGEROCK, damageMin = 1.5, damageMax = 2.0} } }, [8] = { monster = "wyrm", vocations = {1, 2, 3, 4}, level = 135 }, [9] = { monster = "dragon lord", vocations = {1, 2, 3, 4}, level = 200, attacks = { [1] = {name = "Fire Bomb", level = 200, petLevel = 200, mana = 300, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0, area = AREA_CROSS1X1}, [2] = {name = "Fire Storm", level = 205, petLevel = 220, mana = 700, type = TYPE_NEAR, range = 8, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.8, damageMax = 2.5, area = AREA_CROSS5X5}, [3] = {name = "Fire Explosion", level = 203, petLevel = 210, mana = 450, type = TYPE_DISTANCE, range = 6, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_EXPLOSIONHIT, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.1, area = AREA_CIRCLE2X2}, [4] = {name = "Scratch", level = 201, petLevel = 205, mana = 150, type = TYPE_NEAR, range = 1, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_HITAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.3, damageMax = 1.8}, [5] = {name = "Fire Strike", level = 203, petLevel = 210, mana = 100, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_EXPLOSIONAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.8, damageMax = 1.9} } } } for i = 1, #pets do table.insert(tables.pet, petStorages.pet + i) table.insert(tables.level, petStorages.level + i) table.insert(tables.exp, petStorages.exp + i) table.insert(tables.items, petStorages.items + i) table.insert(tables.isDead, petStorages.isDead + i) table.insert(tables.exhaust, petStorages.exhaust + i) table.insert(tables.health, petStorages.health + i) table.insert(tables.mana, petStorages.mana + i) table.insert(tables.buyed, petStorages.buyed + i) end function gainStat(pid, stat) if pid and pid > 0 and isMonster(pid) then stat.func(pid, stat.count) end addEvent(gainStat, stat.time, pid, stat) end function getLevelByExp(exp) return math.floor((math.sqrt(3) * math.sqrt(243*(exp+1)^2-48600*(exp+1)+3680000)+27 * (exp+1)-2700)^(1/3)/30^(2/3)-(5*10^(2/3))/(3^(1/3)*(math.sqrt(3)*math.sqrt(243*(exp+1)^2-48600*(exp+1)+3680000)+27*(exp+1)-2700)^(1/3))+2) end function getPetInfo(pet) if isNumber(pet) then return pets[pet] or false else for _, v in pairs(pets) do if pet:lower() == v.monster then return v end end end return false end function getPetByLevel(cid) local level = getPlayerLevel(cid) local pet for i = 1, #pets do v = pets[i] if level >= v.level and isInArray(v.vocations, getPlayerVocation(cid)) then pet = v end end return (pet ~= nil and pet or false) end function getAttackFormula(pid, attack) return { min = ((getPetLevel(pid) * 2) * (1 + attack.damageMin) + getPetLevel(pid)) / 2.5, max = ((getPetLevel(pid) * 3) * (1 + attack.damageMax) + getPetLevel(pid)) / 2.5 } end function doAttack(pid, target, param) local pet = getPetInfo(getCreatureName(pid)) if pet then if pet.attacks and pet.attacks[param] then local attack = pet.attacks[param] if target > 0 and pid ~= getCreatureTarget(getCreatureMaster(pid)) then if attack.type and attack.type == TYPE_DISTANCE and getDistanceBetween(getCreaturePosition(pid), getCreaturePosition(target)) > (attack.range or 3) or attack.type == TYPE_NEAR and getDistanceBetween(getCreaturePosition(pid), getCreaturePosition(target)) > (attack.range or 1) then return doPlayerSendCancel(getCreatureMaster(pid), "Target is too far.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if not isSightClear(getCreaturePosition(pid), getCreaturePosition(target), true) then return doPlayerSendCancel(getCreatureMaster(pid), "There is not enough room.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end else return doPlayerSendCancel(getCreatureMaster(pid), "Please select a target first.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if getPlayerLevel(getCreatureMaster(pid)) < attack.level then return doPlayerSendCancel(getCreatureMaster(pid), "You need level " .. attack.level .. " or higher to use this attack.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if getPetLevel(pid) < attack.petLevel then return doPlayerSendCancel(getCreatureMaster(pid), "Your pet needs level " .. attack.petLevel .. " or higher to use this attack.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if attack.mana and getCreatureMana(pid) < attack.mana then return doPlayerSendCancel(getCreatureMaster(pid), "Your pet does not have enough mana.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if attack.area then doCastAreaAttack(pid, target, attack.area, attack) else doTargetCombatHealth(pid, target, attack.combat, -getAttackFormula(pid, attack).min, -getAttackFormula(pid, attack).max, attack.effect) end doCreatureAddMana(pid, -attack.mana) if attack.name ~= "" then if emoteAttack then doCreatureSay(getCreatureMaster(pid), getCreatureName(pid) .. ", use " .. attack.name .. "!", TALKTYPE_SAY) end if petEmoteAttack then doCreatureSay(pid, attack.name, TALKTYPE_MONSTER) end end return doSendDistanceShoot(getCreaturePosition(pid), (attack.type == TYPE_DISTANCE and getCreaturePosition(target) or getCreaturePosition(pid)), attack.distEffect) else return doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end else return doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) and doPlayerSendCancel(getCreatureMaster(pid), "There is a tecnical problem, please contact a gamemaster.") end end function callPet(cid, petId) for i = 1, #tables do for y = 1, #tables[i] do if getCreatureStorage(cid, tables[i][y]) < 0 then doCreatureSetStorage(cid, tables[i][y], 0) end end end local pet = getPetInfoById(petId) if not pet then return doPlayerSendCancel(cid, "Something is wrong.") end if getPlayerLevel(cid) < pet.level then return doPlayerSendCancel(cid, "You need level " .. pet.level .. " or higher to call this pet.") end if pet.cost and pet.cost > 0 then if getCreatureStorage(cid, tables.buyed[petId]) < 1 then return doPlayerSendCancel(cid, "You need to buy this pet first.") and doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end end local ret = doCreateMonster(pet.monster, getCreaturePosition(cid)) if getCreatureStorage(cid, tables.level[petId]) < 1 then doCreatureSetStorage(cid, tables.level[petId], pet.level) end if getCreatureStorage(cid, tables.exp[petId]) < 1 then doCreatureSetStorage(cid, tables.exp[petId], getExperienceForLevel(pet.level)) end if getCreatureStorage(cid, tables.level[petId]) < pet.level then doCreatureSetStorage(cid, tables.level[petId], pet.level) elseif getPlayerLevel(cid) * 3 < getCreatureStorage(cid, tables.level[petId]) then doCreatureSetStorage(cid, tables.level[petId], pet.level) doCreatureSetStorage(cid, tables.exp[petId], getExperienceForLevel(pet.level)) end if getLevelByExp(getCreatureStorage(cid, tables.exp[petId])) < getCreatureStorage(cid, tables.level[petId]) then doCreatureSetStorage(cid, tables.exp[petId], getExperienceForLevel(getCreatureStorage(cid, tables.level[petId]))) end if getCreatureStorage(cid, tables.health[petId]) < 1 then doCreatureSetStorage(cid, tables.health[petId], getCreatureStorage(cid, tables.level[petId]) * petGainHealth) end if getCreatureStorage(cid, tables.mana[petId]) < 1 then doCreatureSetStorage(cid, tables.mana[petId], getCreatureStorage(cid, tables.level[petId]) * petGainMana) end doCreatureSetStorage(ret, tables.level[petId], getCreatureStorage(cid, tables.level[petId])) doCreatureSetStorage(ret, tables.exp[petId], getCreatureStorage(cid, tables.exp[petId])) doConvinceCreature(cid, ret) doCreatureSetStorage(ret, petStorages.isPet, 1) doSendMagicEffect(getCreaturePosition(ret), CONST_ME_TELEPORT) setCreatureMaxHealth(ret, getPetLevel(ret) * petGainHealth) doCreatureAddHealth(ret, -getCreatureHealth(ret) + getCreatureStorage(cid, tables.health[petId])) setCreatureMaxMana(ret, getPetLevel(ret) * petGainMana) doCreatureAddMana(ret, -getCreatureMana(ret) + getCreatureStorage(cid, tables.mana[petId])) for _, v in pairs(petGainTicks) do gainStat(ret, v) end return doCreatureSay(cid, "Go pet!", TALKTYPE_SAY) end function doCastAreaAttack(pid, target, area, attack) local center = {} local areaxx = {} center.y = math.floor(#area/2)+1 for y = 1, #area do for x = 1, #area[y] do local number = area[y][x] if number > 0 then center.x = math.floor(table.getn(area[y])/2)+1 if attack.type == TYPE_DISTANCE then table.insert(areaxx, {x = getCreaturePosition(target).x + x - center.x, y = getCreaturePosition(target).y + y - center.y, z = getCreaturePosition(target).z}) else table.insert(areaxx, {x = getCreaturePosition(pid).x + x - center.x, y = getCreaturePosition(pid).y + y - center.y, z = getCreaturePosition(pid).z}) end end end end for i = 1, #areaxx do doAreaCombatHealth(pid, attack.combat, areaxx[i], 0, -getAttackFormula(pid, attack).min, -getAttackFormula(pid, attack).max, attack.effect) end end function isPet(pid) local id = getPetIdByName(getCreatureName(pid)) return getCreatureStorage(pid, petStorages.isPet) > 0 and true or false end function doPetAddExperience(pid, exp) local id = getPetIdByName(getCreatureName(pid)) exp = math.ceil(exp) doCreatureSetStorage(getCreatureMaster(pid), tables.exp[id], getPetExperience(pid) + exp) doSendAnimatedText(getCreaturePosition(pid), exp, getConfigValue("gainExperienceColor")) return true end function getPetExperience(pid) local id = getPetIdByName(getCreatureName(pid)) return getCreatureStorage(getCreatureMaster(pid), tables.exp[id]) end function getPetLevel(pid) local id = getPetIdByName(getCreatureName(pid)) return getCreatureStorage(getCreatureMaster(pid), tables.level[id]) end function doPetSetLevel(pid, level) local id = getPetIdByName(getCreatureName(pid)) doCreatureSetStorage(getCreatureMaster(pid), tables.level[id], level) setCreatureMaxHealth(pid, getPetLevel(pid) * petGainHealth) setCreatureMaxMana(pid, getPetLevel(pid) * petGainMana) return true end function getPlayerPet(cid) local pet if #getCreatureSummons(cid) < 1 then pet = false end for _, it in ipairs(getCreatureSummons(cid)) do if isPet(it) then pet = it break end end return pet end function getPetIdByName(name) local id = 0 for k, it in pairs(pets) do if it.monster:lower() == name:lower() then id = k break end end return (id > 0 and id or false) end function getTopItem(p) p.stackpos = 0 local v = getThingFromPos(p) repeat p.stackpos = p.stackpos + 1 v = getThingFromPos(p) until v.itemid == 0 p.stackpos = p.stackpos - 1 return getThingFromPos(p) end function getPetInfoById(pet) for k, v in pairs(pets) do if k == pet then return v end end return false end if not getCreatureStorage then getCreatureStorage = getPlayerStorageValue doCreatureSetStorage = doPlayerSetStorageValue end

Informação Importante

Confirmação de Termo