@FlamesAdmin se você usar o código como esta, não vai conseguir fazer os stages, a xp é a mesma pra qualquer level
- Fórum
- OTServ
- Downloads
- OTServer Alternativo (ATS)
- [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB
[DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB
Por Taiger, 19 de jun. de 2016 em OTServer Alternativo (ATS)
info
Grupo: Infante
Registrado: 28/01/12
Posts: 1.6k
Reputação: +262
Gênero: Masculino

Ta, mais vc conseguiu adaptar do pokeexp pro pokeDeath?
Em 22/06/2016 at 19:17, Fuuin Fake disse:fica em creaturecripts/scripts/opcodes.lua
Se voce não achar substitua seu opcodes.lua por esse aqui ,
local op_crea = { OPCODE_SKILL_BAR = opcodes.OPCODE_SKILL_BAR, OPCODE_POKEMON_HEALTH = opcodes.OPCODE_POKEMON_HEALTH, OPCODE_BATTLE_POKEMON = opcodes.OPCODE_BATTLE_POKEMON, OPCODE_FIGHT_MODE = opcodes.OPCODE_FIGHT_MODE, OPCODE_WILD_POKEMON_STATS = opcodes.OPCODE_WILD_POKEMON_STATS, OPCODE_REQUEST_DUEL = opcodes.OPCODE_REQUEST_DUEL, OPCODE_ACCEPT_DUEL = opcodes.OPCODE_ACCEPT_DUEL, OPCODE_YOU_ARE_DEAD = opcodes.OPCODE_YOU_ARE_DEAD, OPCODE_DITTO_MEMORY = opcodes.OPCODE_DITTO_MEMORY,}function onExtendedOpcode(cid, opcode, buffer) if opcode == op_crea.OPCODE_SKILL_BAR then if buffer == "refresh" then doOTCSendPlayerSkills(cid) end elseif opcode == op_crea.OPCODE_POKEMON_HEALTH then if buffer == "refresh" then doOTCSendPokemonHealth(cid) end elseif opcode == op_crea.OPCODE_BATTLE_POKEMON then if buffer == "refresh" then if #getCreatureSummons(cid) >= 1 then doSendPlayerExtendedOpcode(cid, op_crea.OPCODE_BATTLE_POKEMON, tostring(getCreatureSummons(cid)[1])) end end elseif opcode == op_crea.OPCODE_FIGHT_MODE then setPlayerStorageValue(cid, storages.fightMode, tonumber(buffer)) elseif opcode == op_crea.OPCODE_WILD_POKEMON_STATS then doSendPlayerExtendedOpcode(cid, op_crea.OPCODE_WILD_POKEMON_STATS, pokeStatus.getVity(tonumber(buffer)).."|"..pokeStatus.getAtk(tonumber(buffer)).."|"..pokeStatus.getSpAtk(tonumber(buffer)).."|"..pokeStatus.getDef(tonumber(buffer)).."|"..pokeStatus.getSpDef(tonumber(buffer)).."|"..pokeStatus.getSpeed(tonumber(buffer))) --//Duel elseif opcode == opcodes.OPCODE_REQUEST_DUEL then --legenda: cid = player, sid = player convidado local cut = string.explode(buffer, "/") local pokeballsCount, sid = tonumber(cut[1]), getCreatureByName(cut[2]) if isCreature(sid) then doIniteDuel(cid, sid, pokeballsCount) end elseif opcode == opcodes.OPCODE_ACCEPT_DUEL then local p2 = getCreatureByName(buffer) if isInvitedDuel(p2, cid) then doPantinNoDuel(cid, p2, getPlayerStorageValue(p2, duelTable.infoBalls), 5) end elseif opcode == opcodes.OPCODE_DITTO_MEMORY then local item = getPlayerSlotItem(cid, 8) if item.uid == 0 then doSendMsg(cid, "Coloque seu shiny ditto no slot correto.") return true end local pokeName = getItemAttribute(item.uid, "poke") if pokeName ~= "Shiny Ditto" then return true end if isInArray({"saveMemory1", "saveMemory2", "saveMemory3"}, buffer) then local copyName = getItemAttribute(item.uid, "copyName") if pokeName == copyName then doSendMsg(cid, "Transforme seu ditto primeiro.") return true end if not fotos[doCorrectString(copyName)] then return true end if isPokeInSlots(getItemAttribute(item.uid, "memoryDitto"), doCorrectString(copyName)) then doSendMsg(cid, "Esta copia já está salva em um slot.") return true end if buffer == "saveMemory1" then doItemSetAttribute(item.uid, "memoryDitto", saveSlot(getItemAttribute(item.uid, "memoryDitto"), 1, getItemInfo(fotos[doCorrectString(copyName)]).clientId)) -- getPortraitClientID(doCorrectString(copyName)))) elseif buffer == "saveMemory2" then doItemSetAttribute(item.uid, "memoryDitto", saveSlot(getItemAttribute(item.uid, "memoryDitto"), 2, getItemInfo(fotos[doCorrectString(copyName)]).clientId)) elseif buffer == "saveMemory3" then doItemSetAttribute(item.uid, "memoryDitto", saveSlot(getItemAttribute(item.uid, "memoryDitto"), 3, getItemInfo(fotos[doCorrectString(copyName)]).clientId)) end elseif isInArray({"clearSlot1", "clearSlot2", "clearSlot3"}, buffer) then if buffer == "clearSlot1" then doItemSetAttribute(item.uid, "memoryDitto", saveSlot(getItemAttribute(item.uid, "memoryDitto"), 1, "?")) elseif buffer == "clearSlot2" then doItemSetAttribute(item.uid, "memoryDitto", saveSlot(getItemAttribute(item.uid, "memoryDitto"), 2, "?")) elseif buffer == "clearSlot3" then doItemSetAttribute(item.uid, "memoryDitto", saveSlot(getItemAttribute(item.uid, "memoryDitto"), 3, "?")) end elseif isInArray({"use1", "use2", "use3"}, buffer) then local summons = getCreatureSummons(cid) if #summons < 1 then doSendMsg(cid, "Coloque seu ditto para fora da pokeball.") return true end local pokeToTransform = getSlot(getItemAttribute(item.uid, "memoryDitto"), tonumber(buffer:explode("use")[1])) doCopyPokemon(summons[1], pokeToTransform, true) end local memory = getItemAttribute(item.uid, "memoryDitto") if not memory or memory == nil then doItemSetAttribute(item.uid, "memoryDitto", "?|?|?") memory = getItemAttribute(item.uid, "memoryDitto") end local memoryOne, memoryTwo, memoryTree = memory:explode("|")[1], memory:explode("|")[2], memory:explode("|")[3] local str = memoryOne .. "-".. memoryTwo .."-" .. memoryTree doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_DITTO_MEMORY, str) elseif opcode == opcodes.OPCODE_TV_CAM then -- TVCam --doCreatePrivateChannel(cid) --doInviteToPrivateChannel(cid, playerName) --doRemoveIntoPrivateChannel(cid, playerName) if getGlobalStorageValue(globalsTV) == -1 then -- iniciar sistema setGlobalStorageValue(globalsTV, "") end local action = buffer:explode("/")[1] if action == "create" then createChannel(cid, buffer) elseif action == "close" then closeInClientChannmel(cid) elseif action == "watch" then local playerToWatch = getCreatureByName(buffer:explode("/")[2]) if isCreature(playerToWatch) then if getPlayerStorageValue(playerToWatch, storages.playerTVPass) ~= "" and getPlayerStorageValue(playerToWatch, storages.playerTVPass) ~= "notASSenha" then doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_TV_CAM, "requestPass|" .. getPlayerStorageValue(playerToWatch, storages.playerTVPass) .. "|" .. buffer:explode("/")[2]) else doWatch(cid, playerToWatch) end else doSendMsg(cid, "Este player não está mais gravando.") end elseif action == "watchWithPass" then local playerToWatch = getCreatureByName(buffer:explode("/")[2]) if isCreature(playerToWatch) then doWatch(cid, playerToWatch) else doSendMsg(cid, "Este player não está mais gravando.") end elseif action == "errou" then doSendMsg(cid, "Senha do digitada incorreta.") end elseif opcode == opcodes.OPCODE_PLAYER_SHOW_AUTOLOOT then -- Autoloot if buffer:find("load/") then local itens = getAllItensAutoLoot() doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_PLAYER_SHOW_AUTOLOOT, (isCollectAll(cid) and "yes" or "no") .. "|" .. itens .. "|" .. getAllItensInMyListToClient(cid)) elseif buffer:find("all") then doCollectAll(cid, true) doSendMsg(cid, "AutoLoot: Coletar tudo foi ativado.") elseif buffer:find("no") then doCollectAll(cid, false) doSendMsg(cid, "AutoLoot: Coletar tudo foi desativado.") else doSaveItems(cid, buffer) end elseif opcode == opcodes.OPCODE_PLAYER_SHOW_ONLINE then -- Janela de onlines do ADM doGetPlayersOnToADM(cid) elseif opcode == opcodes.OPCODE_PLAYER_SHOW_TRADE_HELD then local op = tonumber(buffer:explode("-")[2]) local posP = getThingPos(cid) local posMachine = {{x = 717, y = 2692, z = 7}, {x = 716, y = 2692, z = 7}} if not doComparePositions(posMachine[1], posP) and not doComparePositions(posMachine[2], posP) then doSendMsg(cid, "Fique de frente com a maquina.") return true end if op == 1 then if doPlayerRemoveItem(cid, 15645, 20) then local tier = math.random(1, 2) doPlayerAddRandomHeld(cid, tier) else doSendMsg(cid, "Você precisa de 20 Devoted Tokens.") end return true elseif op == 2 then if doPlayerRemoveItem(cid, 15644, 70) then local tier = math.random(1, 3) doPlayerAddRandomHeld(cid, tier) else doSendMsg(cid, "Você precisa de 70 Mighty Tokens.") end return true elseif op == 3 then if doPlayerRemoveItem(cid, 15644, 150) then local tier = math.random(2, 4) doPlayerAddRandomHeld(cid, tier) else doSendMsg(cid, "Você precisa de 150 Mighty Tokens.") end return true elseif op == 4 then if doPlayerRemoveItem(cid, 15644, 300) then local tier = math.random(2, 6) doPlayerAddRandomHeld(cid, tier) else doSendMsg(cid, "Você precisa de 300 Mighty Tokens.") end return true elseif op == 5 then if doPlayerRemoveItem(cid, 15646, 30) then local tier = math.random(1, 3) doPlayerAddRandomHeld(cid, tier) else doSendMsg(cid, "Você precisa de 30 Hornored Tokens.") end return true elseif op == 6 then if doPlayerRemoveItem(cid, 15646, 75) then local tier = math.random(2, 4) doPlayerAddRandomHeld(cid, tier) else doSendMsg(cid, "Você precisa de 75 Hornored Tokens.") end return true elseif op == 7 then if doPlayerRemoveItem(cid, 15646, 150) then local tier = math.random(3, 6) doPlayerAddRandomHeld(cid, tier) else doSendMsg(cid, "Você precisa de 150 Hornored Tokens.") end return true end endendfunction getSlot(strings, slot) local slot1, slot2, slot3 = strings:explode("|")[1], strings:explode("|")[2], strings:explode("|")[3] local ret, flag = "", false for a, b in pairs(fotos) do if getItemInfo(fotos[a]).clientId == tonumber(slot1) and slot == 1 then ret = doCorrectString(a) flag = true elseif getItemInfo(fotos[a]).clientId == tonumber(slot2) and slot == 2 then ret = doCorrectString(a) flag = true elseif getItemInfo(fotos[a]).clientId == tonumber(slot3) and slot == 3 then ret = doCorrectString(a) flag = true end if flag then break end end return retendfunction saveSlot(strings, slot, poke) local slot1, slot2, slot3 = strings:explode("|")[1], strings:explode("|")[2], strings:explode("|")[3] local finalSlots = (slot == 1 and poke .. "|" or slot1 .. "|") .. (slot == 2 and poke .. "|" or slot2 .. "|") .. (slot == 3 and poke .. "|" or slot3) return finalSlotsendfunction isPokeInSlots(strings, poke) if not fotos[poke] then return false end poke = getItemInfo(fotos[poke]).clientId local slot1, slot2, slot3 = strings:explode("|")[1], strings:explode("|")[2], strings:explode("|")[3] if tonumber(slot1) == poke then return true elseif tonumber(slot2) == poke then return true elseif tonumber(slot3) == poke then return true end return falseend
local posMachine = {{x = 717, y = 2692, z = 7}, {x = 716, y = 2692, z = 7}}
OLHA O Q ACONTECE.. ME AJDA
Editado Julho 26 por jvcizidro
info
Grupo: Infante
Registrado: 06/03/13
Posts: 1.6k
Reputação: +319
Gênero: Masculino
Char no Tibia: Lord Sorte

15 horas atrás, Alphapetboy disse:Eu queria tirar uma dúvida com você sobre o remeres, tem como me ajudar? porque eu usei todos os remeres que me passaram para editar o mapa do servidor, porque vou criar um novo continente misturando todos os pokémon das gerações. BUT, SEMPRE quando vou carregar qualquer mapa, falha para carregar os spawns e houses. E isso não é em um RME especifico, são todos. O que pode ser isso?
Isso é mais referente ao mapa que está corrompido..
14 horas atrás, Josegvb disse:
na v1 n sei como demonios mexer na exp, ja tentei mexer na config.lua do servidor, tb na lib configuration em tds os locals pra mexer a exp e nemhum alterou em nd
Bom mano isso é pq o sistema de stage não está funcionando, isso terá que ser feito no pokeDeath.lua a edição..
Agora, kttallan disse:Isso é mais referente ao mapa que está corrompido..
Bom mano isso é pq o sistema de stage não está funcionando, isso terá que ser feito no pokeDeath.lua a edição..
sim entendi isso vlw =P to tentando me lembrar dos outros bugs pra te falar
info
Grupo: Cavaleiro
Registrado: 13/10/12
Posts: 168
Reputação: +39
Char no Tibia: Fuuin Fake

5 horas atrás, jvcizidro disse:
Provavelmente voce não mudou a localização da machine no Opcode.lua , e ela ta mandando voce ficar de frente com a maquina provavelmente e isso.
info
Grupo: Visconde
Registrado: 22/11/12
Posts: 267
Reputação: +26
Gênero: Masculino
Char no Tibia: ADM Kabo

Troquem a função da xp do pokeDeath.lua para esta
function playerAddExp(cid, exp)if not isCreature(cid) then return true end if isInPartyAndSharedExperience(cid) then local partyPlayers = getPartyMembers(getPlayerParty(cid)) local partyExp = math.ceil(exp / #partyPlayers) for i = 1, #partyPlayers do if isPlayer(partyPlayers[i]) then if getPlayerLevel(partyPlayers[i]) <= 50 then doplayerAddExp(partyPlayers[i], math.floor(2.5 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 2.5, 215) elseif getPlayerLevel(partyPlayers[i]) >= 51 and getPlayerLevel(partyPlayers[i]) <= 75 then doPlayerAddExp(partyPlayers[i], math.floor(2 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 2, 215) elseif getPlayerLevel(partyPlayers[i]) >= 76 and getPlayerLevel(partyPlayers[i]) <= 100 then doPlayerAddExp(partyPlayers[i], math.floor(1.5 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 1.5, 215) elseif getPlayerLevel(partyPlayers[i]) >= 101 and getPlayerLevel(partyPlayers[i]) <= 150 then doPlayerAddExp(partyPlayers[i], math.floor(1 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 1, 215) elseif getPlayerLevel(partyPlayers[i]) >= 151 and getPlayerLevel(partyPlayers[i]) <= 250 then doPlayerAddExp(partyPlayers[i], math.floor(0.50 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 0.50, 215) elseif getPlayerLevel(partyPlayers[i]) >= 251 and getPlayerLevel(partyPlayers[i]) <= 350 then doPlayerAddExp(partyPlayers[i], math.floor(0.25 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 0.25, 215) elseif getPlayerLevel(partyPlayers[i]) >= 351 then doPlayerAddExp(partyPlayers[i], math.floor(0.10 *exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 0.10, 215) end end end return true end if getPlayerLevel(cid) <= 50 then doPlayerAddExp(cid, math.floor(2 * exp)) doSendAnimatedText(getThingPos(cid), exp * 2, 215) elseif getPlayerLevel(cid) >= 51 and getPlayerLevel(cid) <= 75 then doPlayerAddExp(cid, math.floor(1.5 * exp)) doSendAnimatedText(getThingPos(cid), exp * 1.5, 215) elseif getPlayerLevel(cid) >= 76 and getPlayerLevel(cid) <= 100 then doPlayerAddExp(cid, math.floor(1 * exp)) doSendAnimatedText(getThingPos(cid), exp * 1, 215) elseif getPlayerLevel(cid) >= 101 and getPlayerLevel(cid) <= 150 then doPlayerAddExp(cid, math.floor(0.50 * exp)) doSendAnimatedText(getThingPos(cid), exp * 0.50, 215) elseif getPlayerLevel(cid) >= 151 and getPlayerLevel(cid) <= 250 then doPlayerAddExp(cid, math.floor(0.25 * exp)) doSendAnimatedText(getThingPos(cid), exp * 0.25, 215) elseif getPlayerLevel(cid) >= 251 and getPlayerLevel(cid) <= 350 then doPlayerAddExp(cid, math.floor(0.10 * exp)) doSendAnimatedText(getThingPos(cid), exp * 0.10, 215) elseif getPlayerLevel(cid) >= 351 then doPlayerAddExp(cid, math.floor(0.05 *exp)) doSendAnimatedText(getThingPos(cid), exp * 0.05, 215) end end
1 hora atrás, xokys disse:Troquem a função da xp do pokeDeath.lua para esta
function playerAddExp(cid, exp)if not isCreature(cid) then return true end if isInPartyAndSharedExperience(cid) then local partyPlayers = getPartyMembers(getPlayerParty(cid)) local partyExp = math.ceil(exp / #partyPlayers) for i = 1, #partyPlayers do if isPlayer(partyPlayers[i]) then if getPlayerLevel(partyPlayers[i]) <= 50 then doplayerAddExp(partyPlayers[i], math.floor(2.5 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 2.5, 215) elseif getPlayerLevel(partyPlayers[i]) >= 51 and getPlayerLevel(partyPlayers[i]) <= 75 then doPlayerAddExp(partyPlayers[i], math.floor(2 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 2, 215) elseif getPlayerLevel(partyPlayers[i]) >= 76 and getPlayerLevel(partyPlayers[i]) <= 100 then doPlayerAddExp(partyPlayers[i], math.floor(1.5 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 1.5, 215) elseif getPlayerLevel(partyPlayers[i]) >= 101 and getPlayerLevel(partyPlayers[i]) <= 150 then doPlayerAddExp(partyPlayers[i], math.floor(1 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 1, 215) elseif getPlayerLevel(partyPlayers[i]) >= 151 and getPlayerLevel(partyPlayers[i]) <= 250 then doPlayerAddExp(partyPlayers[i], math.floor(0.50 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 0.50, 215) elseif getPlayerLevel(partyPlayers[i]) >= 251 and getPlayerLevel(partyPlayers[i]) <= 350 then doPlayerAddExp(partyPlayers[i], math.floor(0.25 * exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 0.25, 215) elseif getPlayerLevel(partyPlayers[i]) >= 351 then doPlayerAddExp(partyPlayers[i], math.floor(0.10 *exp)) doSendAnimatedText(getThingPos(partyPlayers[i]), exp * 0.10, 215) end end end return true end if getPlayerLevel(cid) <= 50 then doPlayerAddExp(cid, math.floor(2 * exp)) doSendAnimatedText(getThingPos(cid), exp * 2, 215) elseif getPlayerLevel(cid) >= 51 and getPlayerLevel(cid) <= 75 then doPlayerAddExp(cid, math.floor(1.5 * exp)) doSendAnimatedText(getThingPos(cid), exp * 1.5, 215) elseif getPlayerLevel(cid) >= 76 and getPlayerLevel(cid) <= 100 then doPlayerAddExp(cid, math.floor(1 * exp)) doSendAnimatedText(getThingPos(cid), exp * 1, 215) elseif getPlayerLevel(cid) >= 101 and getPlayerLevel(cid) <= 150 then doPlayerAddExp(cid, math.floor(0.50 * exp)) doSendAnimatedText(getThingPos(cid), exp * 0.50, 215) elseif getPlayerLevel(cid) >= 151 and getPlayerLevel(cid) <= 250 then doPlayerAddExp(cid, math.floor(0.25 * exp)) doSendAnimatedText(getThingPos(cid), exp * 0.25, 215) elseif getPlayerLevel(cid) >= 251 and getPlayerLevel(cid) <= 350 then doPlayerAddExp(cid, math.floor(0.10 * exp)) doSendAnimatedText(getThingPos(cid), exp * 0.10, 215) elseif getPlayerLevel(cid) >= 351 then doPlayerAddExp(cid, math.floor(0.05 *exp)) doSendAnimatedText(getThingPos(cid), exp * 0.05, 215) end end
obrigado ajudou mt
info
Grupo: Infante
Registrado: 06/03/13
Posts: 1.6k
Reputação: +319
Gênero: Masculino
Char no Tibia: Lord Sorte

Quais bugs tem agora? Pelo geito parece que já é a melhor base open source superando até o PDA.
info
Grupo: Conde
Registrado: 30/04/11
Posts: 658
Reputação: +71
Gênero: Masculino
Char no Tibia: ExTibiano

@xokys está funcionando perfeitamente, é só configurar a gosto.. bom em relação aos bugs que perguntaram, eu tinha me deparado com esses dois antes, o de quebrar e cortar eu refiz o código varias vezes mas n consegui arrumar, acredito que deva ter outras coisas atrapalhando... @edit aaa tem tbm a configurçãoda chance de drop do Loot que não está funcionando nem no xml e nem no config.lua
nem toda grama o pokemon corta e nem toda pedra o pokemon quebra (tem o mesmo id):

e esse é o do block respawn:

Editado Julho 26 por Durant
16 minutos atrás, Durant disse:@xokys está funcionando perfeitamente, é só configurar a gosto.. bom em relação aos bugs que perguntaram, eu tinha me deparado com esses dois antes, o de quebrar e cortar eu refiz o código varias vezes mas n consegui arrumar, acredito que deva ter outras coisas atrapalhando... @edit aaa tem tbm a configurção do Loot que não está funcionando nem no xml e nem no config.lua
nem toda grama o pokemon corta e nem toda pedra o pokemon quebra:
e esse é o do block respawn:
sim as veces acontece isso, tmb queria saber onde muda o max sqm q o player tem q ficar perto do pokemon pra ele desbugar, pq agr ta horrivel logo q o pokemon sai 1 sqm fora da tela ele logo volta pra atacar o cara, achora q deberia ser 1 pouco + alto o limite
enquanto o loot, lembrese q esta em %, lembrando q 10 = 100% pelo q eu sabia, bom de qualquer jeito vi aqui no pokedeath o siguente
local percent, lootCount = math.random(0.1, 100.9), math.random(1, count)
acho q é só mudar aquele 100 por um valor + alto
Editado Julho 26 por Josegvb
info
Grupo: Infante
Registrado: 06/03/13
Posts: 1.6k
Reputação: +319
Gênero: Masculino
Char no Tibia: Lord Sorte

Sobre o cut que não funciona em alguns, creio eu que isso seja devido que o pokemon precisa se mover para corta o arbusto..
O loot do pokemon é configurado por % de acordo com o creaturescript do PokeDeath que influencia na chance após matar o pokemon..
O sistema de blockspawn ele tá meio que incompleto, creio eu que só precisa de uma tag para impedir que o pokemon atack o block..
info
Grupo: Conde
Registrado: 30/04/11
Posts: 658
Reputação: +71
Gênero: Masculino
Char no Tibia: ExTibiano

@Josegvb @kttallan ok vou verificar caras, obg pelos esclarecimentos!
edit @Josegvb essa linha: local percent, lootCount = math.random(0.1, 100.9), math.random(1, count) é em relação ao X-Lucky po até onde eu sei não tem nada haver com a chance de loot do poke.. só não sabia essa dos 10% = 100 kkk coloquei aqui 1% no config que tava 8% e 3% no xml ta dropando mais ou menos 1 stone a cada 35 poke mortos..
Editado Julho 26 por Durant









info
Grupo: Infante
Registrado: 28/01/12
Posts: 1.6k
Reputação: +262
Gênero: Masculino
Mais simples de arrumar a exp.
Vai no pokeDeath.lua procure a função function playerAddExp(cid, exp) e troque todo o código por esse:
Pra diminuir ou aumentar basta trocar aonde ta 30
3 vai triplicar a exp
function playerAddExp(cid, exp)if not isCreature(cid) then return true end if isInPartyAndSharedExperience(cid) then local partyPlayers = getPartyMembers(getPlayerParty(cid)) local partyExp = math.ceil(exp / #partyPlayers) for i = 1, #partyPlayers do if isPlayer(partyPlayers[i]) then doPlayerAddExp(partyPlayers[i], partyExp * 30) doSendAnimatedText(getThingPos(partyPlayers[i]), partyExp * 30, 215) end end return true end doPlayerAddExp(cid, exp * 30) doSendAnimatedText(getThingPos(cid), exp * 30, 215)endfunction doSendMsgInParty(cid, loot) if isInPartyAndSharedExperience(cid) then local partyPlayers = getPartyMembers(getPlayerParty(cid)) for i = 1, #partyPlayers do if isPlayer(partyPlayers[i]) then doSendMsgToPartyChannel(partyPlayers[i], loot) end end return true endendDando esse erro no console do client:
Editado Julho 26 por FlamesAdmin