Ir para conteúdo

Pokemon PDA XTIBIA


deglorio

Posts Recomendados

 


 


SERVIDOR ATUALIZADO 29/12/2015.


-Bug TV Corrigido


- Bug loot Corrigido


E muito mais que esqueci =):


 


Para corrigir o Bug dos pokemons sumirem ao evoluir.


Vá em data/lib e troque seu level system.lua por este abaixo.


 


function adjustWildPoke(cid, optionalLevel)
if isMonster(cid) and pokes[getCreatureName(cid)] then
 
    local level = (optionalLevel and optionalLevel >= 1) and optionalLevel or getPokemonLevel(cid)  --alterado v1.8
 
setPlayerStorageValue(cid, 1000, level) --alterado v1.8
    setPlayerStorageValue(cid, 1001, pokes[getCreatureName(cid)].offense * level)
setPlayerStorageValue(cid, 1002, pokes[getCreatureName(cid)].defense)
setPlayerStorageValue(cid, 1003, pokes[getCreatureName(cid)].agility)                                  
setPlayerStorageValue(cid, 1004, pokes[getCreatureName(cid)].vitality * level)
setPlayerStorageValue(cid, 1005, pokes[getCreatureName(cid)].specialattack * level)
 
    doRegainSpeed(cid)     --alterado!
    setCreatureMaxHealth(cid, (getVitality(cid) * HPperVITwild)) 
    doCreatureAddHealth(cid,  getCreatureMaxHealth(cid))
   
    if pokes[getCreatureName(cid)].exp then
       local exp = pokes[getCreatureName(cid)].exp * baseExpRate + pokes[getCreatureName(cid)].vitality * pokemonExpPerLevelRate
       setPlayerStorageValue(cid, 1006, (exp * generalExpRate/2)*10)
       if getPlayerStorageValue(cid, 22546) == 1 then
          setPlayerStorageValue(cid, 1006, 750)
          doSetCreatureDropLoot(cid, false)      
       end   
end
end
end       
 
function getPokemonXMLOutfit(name)                --alterado v1.9 \/
local path = "data/monster/pokes/Shiny/"..name..".xml"
local tpw = io.type(io.open(path))
 
if not tpw then
   path = "data/monster/pokes/geracao 2/"..name..".xml"
   tpw = io.type(io.open(path))
end
if not tpw then
   path = "data/monster/pokes/geracao 1/"..name..".xml"
   tpw = io.type(io.open(path))
end
if not tpw then
   path = "data/monster/pokes/"..name..".xml"
   tpw = io.type(io.open(path))
end   
if not tpw then
   return print("[getPokemonXMLOutfit] Poke with name: "..name.." ins't in any paste on monster/pokes/") and 2
end
   local arq = io.open(path, "a+")
   local txt = arq:read("*all")
   arq:close()
   local a, b = txt:find('look type="(.-)"')
   txt = string.sub(txt, a + 11, b - 1)
return tonumber(txt)
end 
 
function doEvolutionOutfit(cid, oldout, outfit)
if not isCreature(cid) then return true end
if getCreatureOutfit(cid).lookType == oldout then
doSetCreatureOutfit(cid, {lookType = outfit}, -1)
else
doSetCreatureOutfit(cid, {lookType = oldout}, -1)
end
end
 
function doSendEvolutionEffect(cid, pos, evolution, turn, ssj, evolve, f, h)
if not isCreature(cid) then
doSendAnimatedText(pos, "CANCEL", 215)
   return true 
    end
if evolve then
doEvolvePokemon(getCreatureMaster(cid), {uid = cid}, evolution, 0, 0)
return true
end
doSendMagicEffect(pos, 18)
if ssj then
sendSSJEffect(evo)
end
doEvolutionOutfit(cid, f, h)
addEvent(doSendEvolutionEffect, math.pow(1900, turn/20), cid, getThingPos(cid), evolution, turn - 1, turn == 19, turn == 2, f, h)
end
 
function sendSSJEffect(cid)
if not isCreature(cid) then return true end
local pos1 = getThingPos(cid)
local pos2 = getThingPos(cid)
pos2.x = pos2.x + math.random(-1, 1)
pos2.y = pos2.y - math.random(1, 2)
doSendDistanceShoot(pos1, pos2, 37)
addEvent(sendSSJEffect, 45, cid)
end
 
function sendFinishEvolutionEffect(cid, alternate)
if not isCreature(cid) then return true end
local pos1 = getThingPos(cid)
 
if alternate then
local pos = {
[1] = {-2, 0},
[2] = {-1, -1},
[3] = {0, -2},
[4] = {1, -1},
[5] = {2, 0},
[6] = {1, 1},
[7] = {0, 2},
[8] = {-1, 1}}
for a = 1, 8 do
local pos2 = getThingPos(cid)
pos2.x = pos2.x + pos[a][1]
pos2.y = pos2.y + pos[a][2]
local pos = getThingPos(cid)
doSendDistanceShoot(pos2, pos, 37)
addEvent(doSendDistanceShoot, 300, pos, pos2, 37)
end
else
for a = 0, 3 do
doSendDistanceShoot(pos1, getPosByDir(pos1, a), 37)
end
for a = 4, 7 do
addEvent(doSendDistanceShoot, 600, pos1, getPosByDir(pos1, a), 37)
end
end
end
 
function doEvolvePokemon(cid, item2, theevo, stone1, stone2)
 
if not isCreature(cid) then return true end
 
if not pokes[theevo] or not pokes[theevo].offense then
doReturnPokemon(cid, item2.uid, getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect, false, true)
return true
end
 
local owner = getCreatureMaster(item2.uid)
local pokeball = getPlayerSlotItem(cid, 8):
local description = "Contains a "..theevo.."."
local pct = getCreatureHealth(item2.uid) / getCreatureMaxHealth(item2.uid)
 
doItemSetAttribute(pokeball.uid, "hp", pct)
doItemSetAttribute(pokeball.uid, "poke", theevo)
doItemSetAttribute(pokeball.uid, "description", "Contains a "..theevo..".")
 
doPlayerSendTextMessage(cid, 27, "Congratulations! Your "..getPokeName(item2.uid).." evolved into a "..theevo.."!")
 
doSendMagicEffect(getThingPos(item2.uid), 18)
doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos[theevo])
doTransformItem(getPlayerSlotItem(cid, 8).uid, pokeballs[theevo].use)
 
 
 
doSendMagicEffect(getThingPos(cid), 173)
 
local oldpos = getThingPos(item2.uid)
local oldlod = getCreatureLookDir(item2.uid)
doRemoveCreature(item2.uid)
 
doSummonMonster(cid, theevo, getThingPos(cid))
 
local pk = getCreatureSummons(cid)[1]
 
doCreatureSetLookDir(pk, oldlod)
 
sendFinishEvolutionEffect(pk, true)
addEvent(sendFinishEvolutionEffect, 550, pk, true)
addEvent(sendFinishEvolutionEffect, 1050, pk)
 
doPlayerRemoveItem(cid, stone1, 1)
doPlayerRemoveItem(cid, stone2, 1)
 
doAddPokemonInOwnList(cid, theevo)
 
local happy = getItemAttribute(pokeball.uid, "happy")
 
doItemSetAttribute(pokeball.uid, "happy", happy + happyGainedOnEvolution)
 
if happy + happyGainedOnEvolution > 255 then
doItemSetAttribute(pokeball.uid, "happy", 255)
end
 
adjustStatus(pk, pokeball.uid, true, false)
--doTeleportThing(getCreatureSummons(cid)[1], getThingPos(cid))
 
if useKpdoDlls then
doUpdateMoves(cid)
end
end
 
function doMathDecimal(number, casas)
 
if math.floor(number) == number then return number end
 
local c = casas and casas + 1 or 3
 
for a = 0, 10 do
if math.floor(number) < math.pow(10, a) then
local str = string.sub(""..number.."", 1, a + c)
return tonumber(str)
end
end
 
return number
end
 
function doAdjustWithDelay(cid, pk, health, vit, status)
if isCreature(cid) then                                   
   adjustStatus(pk, getPlayerSlotItem(cid, 8).uid, health, vir, status)
end
end
 
function adjustStatus(pk, item, health, vite, conditions)
    if getPlayerStorageValue(getCreatureMaster(pk), 990) >= 1 then
        setPlayerStorageValue(pk, 6598754, 1)                               
    end
 
if not isCreature(pk) then return true end
doRegenerateWithHeld(getCreatureMaster(pk), pk)
--doTeleportThing(pk, getClosestFreeTile(pk, getThingPos(cid)), true)
 
local gender = getItemAttribute(item, "gender") and getItemAttribute(item, "gender") or 0
addEvent(doCreatureSetSkullType, 10, pk, gender)
 
setPlayerStorageValue(pk, 1001, pokes[getCreatureName(pk)].offense * (getMasterLevel(pk) + getPokemonBoost(pk)))
setPlayerStorageValue(pk, 1002, pokes[getCreatureName(pk)].defense)
setPlayerStorageValue(pk, 1003, pokes[getCreatureName(pk)].agility)
setPlayerStorageValue(pk, 1004, pokes[getCreatureName(pk)].vitality * (getMasterLevel(pk) + getPokemonBoost(pk)))
setPlayerStorageValue(pk, 1005, pokes[getCreatureName(pk)].specialattack * (getMasterLevel(pk) + getPokemonBoost(pk)))
-- Defense -- 
local bonusdef = {}
local Tiers = {
[1] = {bonus = DefBonus1},
[2] = {bonus = DefBonus2},
[3] = {bonus = DefBonus3},
[4] = {bonus = DefBonus4},
[5] = {bonus = DefBonus5},
[6] = {bonus = DefBonus6},
[7] = {bonus = DefBonus7},
}
local Tier = getItemAttribute(item, "heldx")
 
if Tier and Tier > 0 and Tier < 8 then
bonusdef = Tiers[Tier].bonus
else
bonusdef = 1
end
-- Defense --
-- Boost -- 
local bonusboost = {}
local Tiers2 = {
[36] = {bonus = BoostBonus1},
[37] = {bonus = BoostBonus2},
[38] = {bonus = BoostBonus3},
[39] = {bonus = BoostBonus4},
[40] = {bonus = BoostBonus5},
[41] = {bonus = BoostBonus6},
[42] = {bonus = BoostBonus7},
}
if Tier and Tier > 35 and Tier < 43 then
bonusboost = Tiers2[Tier].bonus
else
bonusboost = 0
end
-- Boost -- 
 
if vite == true then
local pct = getCreatureHealth(pk) / getCreatureMaxHealth(pk)
local vit = getVitality(pk)
setCreatureMaxHealth(pk, ( vit * HPperVITsummon ))
doCreatureAddHealth(pk, pct * vit * HPperVITsummon)
end
                                                                      
doRegainSpeed(pk)  
 
local nick = getItemAttribute(item, "poke")
 
    if isGhostPokemon(pk) then
       setPlayerStorageValue(pk, 8981, 1)
       updateGhostWalk(pk)
    end
   
if string.find(tostring(nick), "Shiny") then
  nick = tostring(nick):match("Shiny (.*)")
    end
 
if getItemAttribute(item, "nick") then
nick = getItemAttribute(item, "nick")
end
 
setPlayerStorageValue(pk, 1007, nick)
 
doCreatureSetNick(pk, nick)
 
if not getItemAttribute(item, "happy") then
doItemSetAttribute(item, "happy", 120)
end
 
if not getItemAttribute(item, "hunger") then
doItemSetAttribute(item, "hunger", 5)
end
 
local happy = getItemAttribute(item, "happy")
if happy < 0 then
happy = 1
end
setPlayerStorageValue(pk, 1008, happy)
 
local hunger = getItemAttribute(item, "hunger")
setPlayerStorageValue(pk, 1009, hunger)
 
if health == true then
local mh = HPperVITsummon * getVitality(pk)
local rd = 1 - (tonumber(getItemAttribute(item, "hp")))
setCreatureMaxHealth(pk, mh)                                  
doCreatureAddHealth(pk, getCreatureMaxHealth(pk))
doCreatureAddHealth(pk, -(getCreatureMaxHealth(pk) * rd))
end
 
if isSummon(pk) and conditions then
local burn = getItemAttribute(item, "burn")   
if burn and burn >= 0 then
  local ret = {id = pk, cd = burn, check = false, damage = getItemAttribute(item, "burndmg"), cond = "Burn"}
  addEvent(doCondition2, 3500, ret)
end
 
local poison = getItemAttribute(item, "poison")
if poison and poison >= 0 then
  local ret = {id = pk, cd = poison, check = false, damage = getItemAttribute(item, "poisondmg"), cond = "Poison"}
  addEvent(doCondition2, 1500, ret)
end
 
        local confuse = getItemAttribute(item, "confuse")
if confuse and confuse >= 0 then
  local ret = {id = pk, cd = confuse, check = false, cond = "Confusion"}
  addEvent(doCondition2, 1200, ret)                                                
end
 
        local sleep = getItemAttribute(item, "sleep")
if sleep and sleep >= 0 then
  local ret = {id = pk, cd = sleep, check = false, first = true, cond = "Sleep"}
  doCondition2(ret)
end
 
local miss = getItemAttribute(item, "miss")     
if miss and miss >= 0 then      
          local ret = {id = pk, cd = miss, eff = getItemAttribute(item, "missEff"), check = false, spell = getItemAttribute(item, "missSpell"), cond = "Miss"}
          doCondition2(ret)
        end
        
        local fear = getItemAttribute(item, "fear")
        if fear and fear >= 0 then
           local ret = {id = pk, cd = fear, check = false, skill = getItemAttribute(item, "fearSkill"), cond = "Fear"}
           doCondition2(ret)
        end
        
        local silence = getItemAttribute(item, "silence")
        if silence and silence >= 0 then      
           local ret = {id = pk, cd = silence, eff = getItemAttribute(item, "silenceEff"), check = false, cond = "Silence"}
           doCondition2(ret)
        end                                     
        
        local stun = getItemAttribute(item, "stun")
        if stun and stun >= 0 then
           local ret = {id = pk, cd = stun, eff = getItemAttribute(item, "stunEff"), check = false, spell = getItemAttribute(item, "stunSpell"), cond = "Stun"}
           doCondition2(ret)
        end 
                                                       
        local paralyze = getItemAttribute(item, "paralyze")
        if paralyze and paralyze >= 0 then
           local ret = {id = pk, cd = paralyze, eff = getItemAttribute(item, "paralyzeEff"), check = false, first = true, cond = "Paralyze"}
           doCondition2(ret)
        end  
                                                     
        local slow = getItemAttribute(item, "slow")
        if slow and slow >= 0 then
           local ret = {id = pk, cd = slow, eff = getItemAttribute(item, "slowEff"), check = false, first = true, cond = "Slow"}
           doCondition2(ret)
        end                                              
        
        local leech = getItemAttribute(item, "leech")
        if leech and leech >= 0 then
           local ret = {id = pk, cd = leech, attacker = 0, check = false, damage = getItemAttribute(item, "leechdmg"), cond = "Leech"}
           doCondition2(ret)
        end                               
        
        for i = 1, 3 do
            local buff = getItemAttribute(item, "Buff"..i)
            if buff and buff >= 0 then
               local ret = {id = pk, cd = buff, eff = getItemAttribute(item, "Buff"..i.."eff"), check = false, 
               buff = getItemAttribute(item, "Buff"..i.."skill"), first = true, attr = "Buff"..i}
               doCondition2(ret)
            end
        end
               
end
                                                                     --alterado v1.9
    if getItemAttribute(item, "boost") and getItemAttribute(item, "boost") >= 50 and getItemAttribute(item, "aura") then
       sendAuraEffect(pk, auraSyst[getItemAttribute(item, "aura")])        
    end
    
    if getPlayerStorageValue(getCreatureMaster(pk), 6598754) >= 1 then
        setPlayerStorageValue(pk, 6598754, 1)                               
    elseif getPlayerStorageValue(getCreatureMaster(pk), 6598755) >= 1 then
        setPlayerStorageValue(pk, 6598755, 1)
    end
 
return true
end
 
function getOffense(cid)
if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1001))
end
 
function getDefense(cid)
if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1002))
end
 
function getSpeed(cid)
if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1003))
end
 
function getVitality(cid)
if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1004))
end
 
function getSpecialAttack(cid)
if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1005))
end
 
function getHappiness(cid)
if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1008))
end
 
function getSpecialDefense(cid)
if not isCreature(cid) then return 0 end
return getSpecialAttack(cid) * 0.85 + getDefense(cid) * 0.2      
end
 
function getPokemonLevel(cid, dex)
if not isCreature(cid) then return 0 end 
    if not dex then                      --alterado v1.9
       if ehMonstro(cid) and getPlayerStorageValue(cid, 1000) > 0 then  
          return getPlayerStorageValue(cid, 1000)
       elseif ehMonstro(cid) then 
          return pokes[getCreatureName(cid)].wildLvl             
       end
    end   
return pokes[getCreatureName(cid)].level
end
 
function getPokemonLevelByName(name)
return pokes[name] and pokes[name].level or 0  --alterado v1.9
end
 
function getMasterLevel(poke)
    if not isSummon(poke) then return 0 end
return getPlayerLevel(getCreatureMaster(poke))
end
 
function getPokemonBoost(poke)
    if not isSummon(poke) then return 0 end
return getItemAttribute(getPlayerSlotItem(getCreatureMaster(poke), 8).uid, "boost") or 0
end
 
function getPokeballBoost(ball)
    if not isPokeball(ball.itemid) then return 0 end  --alterado v1.8
return getItemAttribute(ball.uid, "boost") or 0
end
 
function getPokeName(cid)
if not isSummon(cid) then return getCreatureName(cid) end
if getCreatureName(cid) == "Evolution" then return getPlayerStorageValue(cid, 1007) end
 
local item = getPlayerSlotItem(getCreatureMaster(cid), 8):
if getItemAttribute(item.uid, "nick") then
  return getItemAttribute(item.uid, "nick")
end
if string.find(tostring(getCreatureName(cid)), "Shiny") then
      local newName = tostring(getCreatureName(cid)):match("Shiny (.*)")
      return newName
    end
return getCreatureName(cid)
end
 
function getPokeballName(item, truename)
if not truename and getItemAttribute(item, "nick") then
return getItemAttribute(item, "nick")
end
return getItemAttribute(item, "poke")
end
 
function getPokemonName(cid)
return getCreatureName(cid)
end
 
function getPokemonGender(cid) --alterado v1.9
return getCreatureSkullType(cid)
end
 
function setPokemonGender(cid, gender)
if isCreature(cid) and gender then        --alterado v1.8
   doCreatureSetSkullType(cid, gender)
   return true
end
return false
end
 
function getWildPokemonExp(cid)
return getPlayerStorageValue(cid, 1006)
end

 


separador-2.png


Olá pessoal do XTibia!


 


Há algum tempo estou criando este servidor, ele é o PDA com source, devido a compromissos pessoais, estou deixando para quem quer continuar o projeto, caso alguém tenha interesse aqui no tópico de terminar o servidor, postarei as sources, não coloquei ainda porque tem muita gente que quer tudo pronto,e um servidor desse não existe em lugar nenhum.


 


separador-2.png



 
Andamento do servidor
Level System: 100%
Addon Pokemons: 100%
Caught System: 100%
Go-Back System: 100%
Portrait System: 100%
Evolution System: 100%
NPC Nurse System: 100%
Pokedex System: 100%
Ghost System: 100%
Wild Pokemon Passive: 100%
Icon System: 100%
Liders de Ginásio: 100%
Moves System: 100%
Limite de 6 Pokemons: 100%
Duel System (Pela Party) 100%
Tv / Cam System 100%
Order 100%
e MUITO MAIS.
 
OBS: Servidor mysql, use a database dash2015.sql (dentro da pasta schemas)
Senha do ADM:
Account: 4926151
Password: dagst4926151guto
 


separador-2.png


 

Prints: 


 


Em Breve


 


 


 


 


separador-2.png


 


Downloads: 


 


Servidor > https://drive.google.com/file/d/0B9RdNFevGojkTThHdE1YV05PNnM/view?usp=sharing


Cliente: http://www.mediafire.com/download/rkv0xwpp2ac92f3/Client_Pounc_Limpo_Sem_Erros.rar


 


 


separador-2.png


Créditos:



Deglorio
Brun 123
Gabrieltxu


Slicer


Aberos
Se eu esqueci alguém me avise


 


separador-2.png


 

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

@@NexT

 

 

 

 

Aqui abriu normal , compilou normal, ta com as dlls certinhas ?

Sim , Porem nao abre ele é executado so que nao abre a janela do TFS e quando vou abrir como "executar como Administrador" trava a Pasta do Server por completo

 

@: o Meu servidor abre Normal :

post-361567-0-35175800-1450195182_thumb.png

 

- E quando vou finalizar a tarefa pelo Gerenciador de Tarefas nao Fexa o Programa

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

Sim , Porem nao abre ele é executado so que nao abre a janela do TFS e quando vou abrir como "executar como Administrador" trava a Pasta do Server por completo

 

@: o Meu servidor abre Normal :

attachicon.gifppp.png

 

- E quando vou finalizar a tarefa pelo Gerenciador de Tarefas nao Fexa o Programa

Isso acontece aqui com alguns serv por causa do anti-vírus, acontece a mesma coisa, apenas quando vou no anti-vírus e deixo a pasta do ot em exceções/exclusões é que funciona normal

Link para o comentário
Compartilhar em outros sites

Isso acontece aqui com alguns serv por causa do anti-vírus, acontece a mesma coisa, apenas quando vou no anti-vírus e deixo a pasta do ot em exceções/exclusões é que funciona normal

Sim mais se voce perceber na Primeira Imagem que eu Postei o Anti-Virus esta Desativado .

- Eu consegui arrumar porem Quando esta carregando Mapa e Respawns , o Executavel Fexa Sosinho:

post-361567-0-83070600-1450198063_thumb.png

Link para o comentário
Compartilhar em outros sites

Pessoal aqui abre normal, a source do outro tópico é parecida, não é minha source, depois passo essa source.

 

@gristony eu desisti, estou focado no trabalho, por isso resolvi postar para a galera. Saudade mano :)

Link para o comentário
Compartilhar em outros sites

Certeza que você temnas sources do uncharted? Haha, que eu lembre, conheço si 2 pessoas com as sources disso.. Começando com o brun123 .. Haha..

 

Quem estiver com o erro do nextbr, vá na pasta das source. Dev, e delete a pasta obj.. Depois recompile

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...