alissonzin 1 Postado Agosto 23, 2011 Share Postado Agosto 23, 2011 Estou com um problema no PVP do meu poketibia server, tipo, a galera entra na área e pá, mesmo tanto PVP Enforced, ou No-PVP, pokémon ataca pokémon mais nao arranca life. =/ se alguem puder me ajudar, meu exp.lua ta ai abaixo! =] 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 Link para o comentário https://xtibia.com/forum/topic/165849-duvida-estou-com-um-problema-no-pvp-do-meu-poketibia/ Compartilhar em outros sites More sharing options...
wr1000 0 Postado Agosto 23, 2011 Share Postado Agosto 23, 2011 (editado) Amigo tenta assim local expcond = createConditionObject(CONDITION_INFIGHT) setConditionParam(expcond, CONDITION_PARAM_TICKS, 4500) function onStatsChange(cid, attacker, enps, combatee, value) if getPlayerStorageValue(cid, 33) >= 1 then if isCreature(attacker) then return false end return true end if getPlayerStorageValue(cid, 34) >= 1 then 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) setPlayerStorageValue(cid, 34, 0) doSendAnimatedText(getThingPos(attacker), -value, 191) return false end end end if getPlayerStorageValue(cid, 35) >= 1 then 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 enps == STATSCHANGE_HEALTHGAIN then return true end if enps == STATSCHANGE_HEALTHLOSS then if getCreatureHealth(cid) <= value then if isPlayer(cid) then if #getCreatureSummons(cid) == 0 then return true end return false end if isPlayer(getCreatureMaster(attacker)) then doTargetCombatHealth(getCreatureMaster(attacker), cid, combatee, -(getCreatureHealth(cid)), -(getCreatureHealth(cid)), 3) return false end return true end if isPlayer(getCreatureMaster(cid)) then doAddCondition(getCreatureMaster(cid), expcond) end if not isPlayer(cid) then 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 else x = 1 end local xx = x if combatee == PSYCHICDAMAGE then cor = COLOR_PSYCHIC elseif combatee == GRASSDAMAGE then cor = COLOR_GRASS elseif combatee == FIREDAMAGE then cor = COLOR_FIRE2 elseif combatee == WATERDAMAGE then cor = COLOR_WATER elseif combatee == ICEDAMAGE then cor = COLOR_ICE elseif combatee == NORMALDAMAGE then cor = COLOR_NORMAL elseif combatee == FLYDAMAGE then cor = COLOR_FLYING elseif combatee == GHOSTDAMAGE then cor = COLOR_GHOST elseif combatee == GROUNDDAMAGE then cor = COLOR_GROUND elseif combatee == ELECTRICDAMAGE then cor = COLOR_ELECTRIC elseif combatee == ROCKDAMAGE then cor = COLOR_ROCK elseif combatee == BUGDAMAGE then cor = COLOR_BUG elseif combatee == FIGHTDAMAGE then cor = COLOR_FIGHTING elseif combatee == DRAGONDAMAGE then cor = COLOR_DRAGON elseif combatee == POISONDAMAGE then cor = COLOR_POISON elseif getCreatureName(cid) == "Kakuna" or getCreatureName(cid) == "Metapod" then cor = COLOR_BUG elseif getCreatureName(cid) == "Golem" or getCreatureName(cid) == "Graveler" or getCreatureName(cid) == "Geodude" then cor = COLOR_ROCK else cor = NONE end local cores = cor 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 if isPlayer(cid) then if #getCreatureSummons(cid) >= 1 then return false end doCreatureAddHealth(cid, -value) doSendAnimatedText(getThingPos(cid), value, 180) doSendMagicEffect(getThingPos(cid), 3) return false end if getPlayerStorageValue(cid, 4) >= 1 then local damage = value doSendMagicEffect(getThingPos(cid), 2) doCreatureAddHealth(cid, -((math.floor(damage/2))*xx)) doSendAnimatedText(getThingPos(cid), (math.floor((damage)/2)*xx), cores) else local damage = value if cor == NONE then return true end doCreatureAddHealth(cid, -((math.floor(damage/1))*xx)) doSendAnimatedText(getThingPos(cid), (math.floor((damage)/1)*xx), cores) doSendMagicEffect(getThingPos(cid), 3) return false end return false end if isSummon(attacker) then if isSummon(cid) then return false end combatx = combatee valor = value if getPlayerStorageValue(cid, 4) >= 1 then doTargetCombatHealth(getCreatureMaster(attacker), cid, combatx, -((valor / 2)*x), -(((valor / 2)+10)*x), 255) else doTargetCombatHealth(getCreatureMaster(attacker), cid, combatx, -((valor)*x), -((valor+10)*x), 255) end end end end Editado Agosto 23, 2011 por wr1000 Link para o comentário https://xtibia.com/forum/topic/165849-duvida-estou-com-um-problema-no-pvp-do-meu-poketibia/#findComment-1090413 Compartilhar em outros sites More sharing options...
alissonzin 1 Postado Agosto 24, 2011 Autor Share Postado Agosto 24, 2011 Não deu! =/ Link para o comentário https://xtibia.com/forum/topic/165849-duvida-estou-com-um-problema-no-pvp-do-meu-poketibia/#findComment-1090724 Compartilhar em outros sites More sharing options...
MasterBoby 0 Postado Agosto 24, 2011 Share Postado Agosto 24, 2011 Aqui não é area pra duvida, presta atenção aonde voce posta as coisas. Reportado para mover. :button_cancel: Link para o comentário https://xtibia.com/forum/topic/165849-duvida-estou-com-um-problema-no-pvp-do-meu-poketibia/#findComment-1090788 Compartilhar em outros sites More sharing options...
alissonzin 1 Postado Agosto 24, 2011 Autor Share Postado Agosto 24, 2011 Não sei se poder fazer isto aqui, mais , UP! Link para o comentário https://xtibia.com/forum/topic/165849-duvida-estou-com-um-problema-no-pvp-do-meu-poketibia/#findComment-1090874 Compartilhar em outros sites More sharing options...
Gabriel Couto 293 Postado Agosto 24, 2011 Share Postado Agosto 24, 2011 Tópico Movido. Mais Atenção na próxima vez. Até. Link para o comentário https://xtibia.com/forum/topic/165849-duvida-estou-com-um-problema-no-pvp-do-meu-poketibia/#findComment-1090931 Compartilhar em outros sites More sharing options...
alissonzin 1 Postado Agosto 25, 2011 Autor Share Postado Agosto 25, 2011 Ainda nao consegui resolver galera, me ajudem! Link para o comentário https://xtibia.com/forum/topic/165849-duvida-estou-com-um-problema-no-pvp-do-meu-poketibia/#findComment-1091586 Compartilhar em outros sites More sharing options...
Posts Recomendados