s baixa outro ot kk
- Fórum
- xTibia - Notícias e Suporte
- Soluções
- Archived
- Pokemon De Um Player Nao Tira Hit De Pokemon De Outro Player
Pokemon De Um Player Nao Tira Hit De Pokemon De Outro Player
Por filipeva87, 11 de set. de 2011 em Archived
info
Grupo: Campones
Registrado: 28/05/11
Posts: 17
Reputação: +2
Char no Tibia: None

info
Grupo: Campones
Registrado: 20/11/10
Posts: 8
Reputação: 0

infelizmente sua resposta nao resolveu meu problema, nao quero desbugar um outro servidor do zero nao... vlw
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. ![]()
info
Grupo: Campones
Registrado: 20/11/10
Posts: 8
Reputação: 0

piruuks, vc ja tem meu rep + do dia ![]()
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 ![]()
vlw cara:D

info
Grupo: Campones
Registrado: 20/11/10
Posts: 8
Reputação: 0
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!