Ir para conteúdo

Pokemon De Um Player Nao Tira Hit De Pokemon De Outro Player


filipeva87

Posts Recomendados

galera, to com um problema. ja tentei diversas formas vista aqui no forum de como resolver isso.

é o seguinte..

 

no meu servidor de poketibia um pokemon de um player nao hita o pokemon de outro player.

 

ja tentei por no Config.lua pvp... ja tentei por o servidor pvp tb... pvp/enforced tb ja tentei... e nda adianta... ja criei uma area pvp e tudo...

 

axei q o problema seria a area pvp, peguei em outro mapa uma area pvp que funciona no tal servidor e passei pro meu mapa.... e nao funcionou do msm jeito...

 

 

alguem teria a solucao?

 

 

obrigado!

Link para o comentário
Compartilhar em outros sites

Olá amigo.

 

Você está habilitando uma party ou duel system?

Você precisa fazer primeiro para que os players

possam atacar os pokemons uns dos outros.

 

Se você tiver habilitando e mesmo assim não funcionar,

o problema é no seu exp.lua.

 

 

Solução:

 

Vá em data/creaturescripts e abra o seu exp.lua

Substitua todo o conteúdo por esse aqui:

 

local expcond = createConditionObject(CONDITION_INFIGHT)

setConditionParam(expcond, CONDITION_PARAM_TICKS, 4500)

 

local colors = {

[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},

[GRASSDAMAGE] = {cor = COLOR_GRASS},

[FIREDAMAGE] = {cor = COLOR_FIRE2},

[WATERDAMAGE] = {cor = COLOR_WATER},

[iCEDAMAGE] = {cor = COLOR_ICE},

[NORMALDAMAGE] = {cor = COLOR_NORMAL},

[FLYDAMAGE] = {cor = COLOR_FLYING},

[GHOSTDAMAGE] = {cor = COLOR_GHOST},

[GROUNDDAMAGE] = {cor = COLOR_GROUND},

[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},

[ROCKDAMAGE] = {cor = COLOR_ROCK},

[bUGDAMAGE] = {cor = COLOR_BUG},

[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},

[DRAGONDAMAGE] = {cor = COLOR_DRAGON},

[POISONDAMAGE] = {cor = COLOR_POISON},

[COMBAT_PHYSICALDAMAGE] = {cor = 0},

}

 

function onStatsChange(cid, attacker, enps, combatee, value)

 

if enps == STATSCHANGE_HEALTHGAIN then

return true

end

 

if isPlayer(cid) then

if #getCreatureSummons(cid) >= 1 then

return false

end

if isPlayer(attacker) or isSummon(attacker) then

return false

end

end

 

local cores = 0

if colors[combatee] then

cores = colors[combatee].cor

end

 

if getPlayerStorageValue(cid, 33) >= 1 then -- funcionamento do self destruction

if isCreature(attacker) then

return false

end

return true

end

 

if getPlayerStorageValue(cid, 34) >= 1 then -- REFLECT

if combatee ~= COMBAT_PHYSICALDAMAGE then

if isCreature(attacker) then

doSendMagicEffect(getThingPos(cid), 135)

doSendMagicEffect(getThingPos(attacker), 3)

doSendAnimatedText(getThingPos(cid), "REFLECT", 215)

doCreatureAddHealth(attacker, -value, 3, 191) -- 3 = efeito do reflect

setPlayerStorageValue(cid, 34, 0)

return false

end

end

end

 

if getPlayerStorageValue(cid, 35) >= 1 then -- MAGIAS DE MISS, STRING SHOT, MUD SHOT ETC

if combatee ~= COMBAT_PHYSICALDAMAGE then

if isCreature(attacker) then

doSendAnimatedText(getThingPos(cid), "MISS", 215)

setPlayerStorageValue(cid, 35, 0)

return false

end

end

end

 

if not isCreature(attacker) then

return true

end

 

if isPlayer(attacker) then

return true

end

 

if getCreatureHealth(cid) <= value then

if isPlayer(cid) then

if isPlayer(attacker) or isSummon(attacker) then return false end

doCreatureAddHealth(cid, -getCreatureHealth(cid), 3, 180)

return false

end

if isSummon(cid) and (isPlayer(attacker) or isSummon(attacker)) then

if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then return false end

if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then return false end

end

 

if isPlayer(getCreatureMaster(attacker)) then

doTargetCombatHealth(getCreatureMaster(attacker), cid, combatee, -(getCreatureHealth(cid)), -(getCreatureHealth(cid)), 3)

if isInArray({GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE}, combatee) then

doSendAnimatedText(getThingPos(cid), value, cores)

end

return false

end

return true

end

 

if isPlayer(cid) then

doCreatureAddHealth(cid, -value, 3, 180)

return false

end

 

if isPlayer(getCreatureMaster(cid)) then

doAddCondition(getCreatureMaster(cid), expcond)

end

 

 

if combatee == ELECTRICDAMAGE then

if isInArray(electric2, getCreatureName(cid)) then

x = 2

elseif isInArray(electric1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(electric0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == WATERDAMAGE then

if isInArray(water2, getCreatureName(cid)) then

x = 2

elseif isInArray(water1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(water0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == GRASSDAMAGE then

if isInArray(grass2, getCreatureName(cid)) then

x = 2

elseif isInArray(grass1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(grass0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == FLYDAMAGE then

if isInArray(flying2, getCreatureName(cid)) then

x = 2

elseif isInArray(flying1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(flying0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == FIREDAMAGE then

if isInArray(fire2, getCreatureName(cid)) then

x = 2

elseif isInArray(fire1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(fire0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == ROCKDAMAGE then

if isInArray(rock2, getCreatureName(cid)) then

x = 2

elseif isInArray(rock1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(rock0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == GROUNDDAMAGE then

if isInArray(ground2, getCreatureName(cid)) then

x = 2

elseif isInArray(ground1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(ground0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == GHOSTDAMAGE then

if isInArray(ghost2, getCreatureName(cid)) then

x = 2

elseif isInArray(ghost1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(ghost0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == BUGDAMAGE then

if isInArray(bug2, getCreatureName(cid)) then

x = 2

elseif isInArray(bug1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(bug0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == NORMALDAMAGE then

if isInArray(normal2, getCreatureName(cid)) then

x = 2

elseif isInArray(normal1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(normal0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == FIGHTDAMAGE then

if isInArray(fighting2, getCreatureName(cid)) then

x = 2

elseif isInArray(fighting1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(fighting0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == POISONDAMAGE then

if isInArray(poison2, getCreatureName(cid)) then

x = 2

elseif isInArray(poison1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(poison0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == PSYCHICDAMAGE then

if isInArray(psychic2, getCreatureName(cid)) then

x = 2

elseif isInArray(psychic1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(psychic0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == ICEDAMAGE then

if isInArray(ice2, getCreatureName(cid)) then

x = 2

elseif isInArray(ice1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(ice0, getCreatureName(cid)) then

x = 0

else

x = 1

end

elseif combatee == DRAGONDAMAGE then

if isInArray(dragon2, getCreatureName(cid)) then

x = 2

elseif isInArray(dragon1, getCreatureName(cid)) then

x = 0.5

elseif isInArray(dragon0, getCreatureName(cid)) then

x = 0

else

x = 1

end

else

x = 1

end

 

local xx = x

 

if not isSummon(attacker) then

 

if not isPlayer(cid) and not isPlayer(getCreatureMaster(cid)) then

return false

end

 

if isSummon(cid) and getCreatureHealth(cid) <= (getCreatureMaxHealth(cid)*0.15) and not exhaustion.get(getCreatureMaster(cid), 88726) then

exhaustion.set(getCreatureMaster(cid), 88726, 6)

doSendMagicEffect(getThingPos(cid), 178)

end

 

local damage = value

 

if getPlayerStorageValue(cid, 4) >= 1 then

doCreatureAddHealth(cid, -math.ceil(damage/2*xx), 2, cores) -- 2 é o efeito que aparece no pokemon quando tem harden e é atacado

return false

else

doCreatureAddHealth(cid, -math.ceil(damage*xx), 3, cores)

return false

end

 

return false

end

 

if isSummon(attacker) then

 

if isPlayer(cid) then

return false

end

 

if isSummon(cid) then

if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then

return false

end

if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then

return false

end

end

 

local combatx = combatee

local valor = value

local life = getCreatureHealth(cid)

 

if getPlayerStorageValue(cid, 4) >= 1 then

doTargetCombatHealth(getCreatureMaster(attacker), cid, combatx, -math.ceil(valor/2*xx), -math.ceil(valor/2*xx+10), 255)

life = life - getCreatureHealth(cid)

if isInArray({GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE}, combatee) then

doSendAnimatedText(getThingPos(cid), life, cores)

end

else

doTargetCombatHealth(getCreatureMaster(attacker), cid, combatx, -math.ceil(valor*xx), -math.ceil(valor*xx + 10), 255)

life = life - getCreatureHealth(cid)

if isInArray({GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE}, combatee) then

doSendAnimatedText(getThingPos(cid), life, cores)

end

end

return false

end

return true

end

 

Pronto! Agora os pokemons conseguirão se atacar.

 

REP ++ se te ajudou. :)

Link para o comentário
Compartilhar em outros sites

piruuks, vc ja tem meu rep + do dia :D

 

 

mais tipo... funcinou agora com esse seu exp.lua que me passou...PERFEITO...so q...

 

 

so pode atacar em modo party eh... ou duel?...

 

 

eu keria saber se vc sabe como por pra atacar a kalker momento... tipo: um player vem andando e o outro malicioso ataca o pokemon dele...ai ele revida ou corre....

 

keria tipo isso... sem precisa esta em party ou duel ou parecido ta ligado?

 

 

 

sei q tem como pq ja vi num servidor malukado ai da vida... os cara matava meu poke diretao....

 

 

 

mais tem meu rep pq funcinou em modo party :D

 

 

 

vlw cara:D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...