Ir para conteúdo
  • 0

Balançar effetividades [DXP]


Josegvb

Pergunta

olá, ja passei semanas tentando resolver isso mas nao deu e ja que no suporte do topico a ajuda é bem limitada decidi criar um topico em relaçao ao meu problema

 entao estou com o siguente problema, no servidor dxp acho os danos bem desbalançados e ridiculos tentei mil coisas pra tentar balançar assim ou trocar o dano, bom primeiramente o dano melee esta bugado no servidor, ja tentei com a soluçao postada la mas nao fez mt diferença...

 

no DxP e a maioria dos PDA tem só 3 tipos de efetividades: Super, Weak, Non (nula)

no PxG tem 6: Super Effective, Effective, Normal, inefectivo, very inefectivo e Non

entao quis colocar mais pra balançar mais os pokemons ja que agr um pokemon tipo Leaf esta pegando o mesmo dano que um tipo Water em contra de outro tipo Water, quanto o Water por ser do mesmo elemento deberia ter mais resistença pra water mas eles estao levando o msm dano

 

Spoiler

3f1cab80afaed01ca1a6f87c92f7fbe6.gif

 

c1271811b9bac206cd1587d3801231a4.gif


entao quis colocar nas efetividades e paresce q consegui mas ao msm tempo n, a verdade agr fikei bem confuso aeuueaaeu achei q nao tinha pegado mas pegou sim porem quando os bixos batem de frente o dano é bugado

e me falaram q eu precisaba  "editar a função de atack no statschange, não apenas adicionar."

mas paresce q nao...

entao peço sua ajuda pra arrumar se o codigo estiver perfeito entao pra arrumar o bug do surf estar batendo td isso...

 

a funçao modificada tava assim:

Spoiler

function getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- printar os elementos
local name = getCreatureName(attacker) -- reflect system
local spells = {"Shadow Storm", "Electric Storm", "Magma Storm", "Blizzard", "Meteor Mash", "Leaf Storm", "Hydropump", "Falling Rocks"}
local pokesMetro = {"Smeargle", "Clefable", "Clefairy", "Mew", "Cleffa", "Togetic", "Togepi"}
if(spellNameFromAttacker ~= -1) then -- checagem de efetividades
      if isMega(attacker) then
         name = getPlayerStorageValue(attacker, storages.isMega)
      elseif name:find("Smeargle") then
         name = getSmeargleAttackNameFromSkactch(attacker, spellNameFromAttacker) -- retorna o nome do poke q tem essa magia
      end
      
      if isInArray(spells, spellNameFromAttacker) and isInArray(pokesMetro, doCorrectString(getCreatureName(attacker))) then
         name = getMetronomeName(spellNameFromAttacker) -- Metronome
      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

        if getPlayerStorageValue(attacker, 999457) == 1 then -- dark and miracle eye
           value = value
        else
           value = 0
        end
    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
    return value
end

 

modificada:

Spoiler

function getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- printar os elementos
local name = getCreatureName(attacker) -- reflect system
local spells = {"Shadow Storm", "Electric Storm", "Magma Storm", "Blizzard", "Meteor Mash", "Leaf Storm", "Hydropump", "Falling Rocks"}
local pokesMetro = {"Smeargle", "Clefable", "Clefairy", "Mew", "Cleffa", "Togetic", "Togepi"}
if(spellNameFromAttacker ~= -1) then -- checagem de efetividades
      if isMega(attacker) then
         name = getPlayerStorageValue(attacker, storages.isMega)
      elseif name:find("Smeargle") then
         name = getSmeargleAttackNameFromSkactch(attacker, spellNameFromAttacker) -- retorna o nome do poke q tem essa magia
      end
      
      if isInArray(spells, spellNameFromAttacker) and isInArray(pokesMetro, doCorrectString(getCreatureName(attacker))) then
         name = getMetronomeName(spellNameFromAttacker) -- Metronome
      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 * 2
        elseif isInArray(typeTable[spellRace].effective, pokeElement1) or isInArray(typeTable[spellRace].effective, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value * 1.6
        elseif isInArray(typeTable[spellRace].norm, pokeElement1) or isInArray(typeTable[spellRace].norm, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value * 1.2
        elseif isInArray(typeTable[spellRace].inef, pokeElement1) or isInArray(typeTable[spellRace].inef, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value * 0.8
    elseif isInArray(typeTable[spellRace].weak, pokeElement1) or isInArray(typeTable[spellRace].weak, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value * 0.4
    elseif isInArray(typeTable[spellRace].non, pokeElement1) or isInArray(typeTable[spellRace].non, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa

        if getPlayerStorageValue(attacker, 999457) == 1 then -- dark and miracle eye
           value = value
        else
           value = 0
        end
    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
 

 

o meelee q ta bugado...

Spoiler

function getEffectvineCombat(cid, attacker, value)
if isPlayer(cid) or isPlayer(attacker) then return false end -- seguranca do player nao atacar
    local pokeRaceAttacker, pokeRaceDefender = getPokemonType(attacker).type1, getPokemonType(cid).type1
    if isInArray(typeTable[pokeRaceAttacker].super, pokeRaceDefender) or isInArray(typeTable[pokeRaceAttacker].super, pokeRaceDefender) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value * 1.3
    elseif isInArray(typeTable[pokeRaceAttacker].weak, pokeRaceDefender) or isInArray(typeTable[pokeRaceAttacker].weak, pokeRaceDefender) then -- elemento atacante ser mais forte que os elementos de defesa
        value = value
elseif isInArray(pokesGhosts, nomeDefense) then -- não bater em pokemons ghosts
        value = 0
    end
    if getCreatureName(cid) == "Venusaur" and value ~= 0 and isMega(cid) and isInArray({"ice", "fire"}, pokeRaceAttacker)then -- Passiva thick fat
       value = value / 2
    end
    return value
end

 

 

e o pokemove 

          move8 = {name = "Hydro Cannon", level = 50, cd = 60, dist = 1, target = 0, f = 95, t = "water"},

 

Spoiler

elseif spell == "Hydro Cannon" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area, eff)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, WATERDAMAGE, area, 0, 0, 0, eff)
   doAreaCombatHealth(cid, WATERDAMAGE, area, whirl3, -min, -max, 68)
end
end

for a = 0, 4 do

local t = {                                     --alterado v1.4
[0] = {64, {x=p.x, y=p.y-(a+1), z=p.z}},
[1] = {65, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {66, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {67, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end

 

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

×
×
  • Criar Novo...