[Pedido] Duel System Nao Tira Hp Dos Pokemon

grassmaster
em Scripts
  • 1
  • 2

grassmaster

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/06/11Posts: 5

Quando estão em duel system, os pokemons nao tiram life um do outro. Gostaria de saber como arrumar isso. OBRIGADO

Kuro o Shiniga

avatar
Colaborador
Colaborador

INFOS

Grupo: ColaboradorRegistrado: 27/12/10Posts: 271Gênero: Masculino

Eles se attack pelo menos? provavelmente e pq o servidor esta no-pvp e o duel system esta errado '-'

batatasmile

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/04/11Posts: 91Gênero: Masculino

aki é a msma coisa já tentei, colocar pvp, local pvp, mais só da pra dar traget pq os hits nao tiram dano

Ajudo no que eu puder, só perguntar. :3

grassmaster

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/06/11Posts: 5

Eles se attack pelo menos? provavelmente e pq o servidor esta no-pvp e o duel system esta errado '-'

 

@pinpao

 

Tentei no PVP e no PVP Enforced mas nada muda... Gostaria de saber como posso arrumar isso. REP+ por 1 semana. Grato!

Se quiser me add no MSN ficarei agradecido.

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

posta seu exp.lua (data/creaturescripts/scripts) aqui que eu arrumo pra você

5303fg1.png

batatasmile

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/04/11Posts: 91Gênero: Masculino
local expcond = createConditionObject(CONDITION_INFIGHT)

setConditionParam(expcond, CONDITION_PARAM_TICKS, 4500)

 

-- MUDE AQUI O EFEITO QUE VOCÊ QUER QUE APAREÇA DE ACORDO COM O TIPO DE COMBATE

 

local efeitos = {

[COMBAT_PHYSICALDAMAGE] = 3,

[ELECTRICDAMAGE] = 3,

[WATERDAMAGE] = 3,

[FIREDAMAGE] = 3,

[GRASSDAMAGE] = 3,

[iCEDAMAGE] = 3,

[ROCKDAMAGE] = 3,

[FLYDAMAGE] = 3,

[FIGHTDAMAGE] = 3,

[POISONDAMAGE] = 3,

[DRAGONDAMAGE] = 3,

[bUGDAMAGE] = 3,

[NORMALDAMAGE] = 3,

[GHOSTDAMAGE] = 3,

[GROUNDDAMAGE] = 3,

[PSYCHICDAMAGE] = 3,

}

 

 

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

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 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 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

doCreatureAddHealth(cid, -getCreatureHealth(cid), 3, 180) -- 3 é o efeito que aparece no player quando ele é atacado e vai morrer

return false

end

return false

end

if isPlayer(getCreatureMaster(attacker)) then

doTargetCombatHealth(getCreatureMaster(attacker), cid, combatee, -(getCreatureHealth(cid)), -(getCreatureHealth(cid)), efeitos[combatee])

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

if #getCreatureSummons(cid) >= 1 then

return false

end

doCreatureAddHealth(cid, -value, 3, 180) -- 3 é o efeito que aparece no player quando é atacado

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

if getPlayerStorageValue(cid, 4) >= 1 then

local damage = value

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

else

local damage = value

if cor == NONE then

return true

end

doCreatureAddHealth(cid, -((math.ceil(damage/1))*xx), efeitos[combatee], cores)

return false

end

return false

end

if isSummon(attacker) then

if isSummon(cid) then

if isInParty(getCreatureMaster(cid)) and isInParty(getCreatureMaster(attacker)) and getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then

else

return false

end

end

local combatx = combatee

local 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

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

doSendAnimatedText(getThingPos(cid), value*xx, cores)

end

end

end

end

 

 

o meu está assim

Ajudo no que eu puder, só perguntar. :3

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

Use isso no lugar do seu exp.lua:

 

 

local expcond = createConditionObject(CONDITION_INFIGHT)
setConditionParam(expcond, CONDITION_PARAM_TICKS, 4500)

local cores = {
[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) and #getCreatureSummons(cid) >= 1 then
return false
end

local cor = cores[combatee].cor

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
doCreatureAddHealth(cid, -getCreatureHealth(cid), 3, 180)
return false
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 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

 

5303fg1.png

batatasmile

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/04/11Posts: 91Gênero: Masculino

@brun123

 

DEU CERTO :thumbsupsmiley2:

 

MAIS TA DANDO ESSE ERRO AKI

 

[08/07/2011 15:35:51] [Error - CreatureScript Interface]

[08/07/2011 15:35:51] data/creaturescripts/scripts/exp.lua:onStatsChange

[08/07/2011 15:35:51] Description:

[08/07/2011 15:35:51] data/creaturescripts/scripts/exp.lua:33: attempt to index field '?' (a nil value)

[08/07/2011 15:35:51] stack traceback:

[08/07/2011 15:35:51] data/creaturescripts/scripts/exp.lua:33: in function <data/creaturescripts/scripts/exp.lua:23>

[08/07/2011 15:35:51] [C]: in function 'doCreatureAddHealth'

[08/07/2011 15:35:51] data/creaturescripts/scripts/exp.lua:272: in function <data/creaturescripts/scripts/exp.lua:23>

Ajudo no que eu puder, só perguntar. :3

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Galera, não esqueçam de reportar quando o tópico estiver em seção incorreta.

 

Movido, abraços.

Oie :D

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

usa esse então:

 

 

local expcond = createConditionObject(CONDITION_INFIGHT)
setConditionParam(expcond, CONDITION_PARAM_TICKS, 4500)

local cores = {
[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) and #getCreatureSummons(cid) >= 1 then
return false
end

local cor = 0
if cores[combatee].cor then
cor = cores[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
       doCreatureAddHealth(cid, -getCreatureHealth(cid), 3, 180)
       return false
       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 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

 

5303fg1.png

vlist

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 15/02/11Posts: 8Char no Tibia: Grunty

Olá brun123 Por Favor Você Poderia Me Adicionar No Msn ( gabibiscegli@hotmail.com ) ?

Fico Grato

batatasmile

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/04/11Posts: 91Gênero: Masculino

@brun123

 

continua a ter esse erro

[09/07/2011 00:09:31] [Error - CreatureScript Interface] 
[09/07/2011 00:09:31] data/creaturescripts/scripts/exp.lua:onStatsChange
[09/07/2011 00:09:31] Description: 
[09/07/2011 00:09:31] data/creaturescripts/scripts/exp.lua:34: attempt to index field '?' (a nil value)
[09/07/2011 00:09:31] stack traceback:
[09/07/2011 00:09:31] 	data/creaturescripts/scripts/exp.lua:34: in function <data/creaturescripts/scripts/exp.lua:23>
[09/07/2011 00:09:31] 	[C]: in function 'doCreatureAddHealth'
[09/07/2011 00:09:31] 	data/creaturescripts/scripts/exp.lua:275: in function <data/creaturescripts/scripts/exp.lua:23>

 

pode me add no msn pra nois conversa tenho uma coisa para te perguntar, mais se vc quiser q seja pelo :XTibia_smile: tudo bem

 

msn lukas157_@hotmail.com

Ajudo no que eu puder, só perguntar. :3

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

Então esse vai funcionar:

 

 

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

 

5303fg1.png

batatasmile

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/04/11Posts: 91Gênero: Masculino

por inquanto nao deu problema nenhum, só tem um detalhe o attack Melee ta hitando uma cor escura

 

 

pode me add no msn pra nois conversa tenho uma coisa para te perguntar,

 

msn lukas157_@hotmail.com

Ajudo no que eu puder, só perguntar. :3

coyotestark

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/02/11Posts: 259Char no Tibia: Aias Laf Du

ola man estou com o mesmo problema pvp ou enforced poques se atacam mas nao perdem life

385417_122391137880813_100003297811828_101325_1909172176_n.jpg

Nao sou Gigante mas grande o suficiente para entender tudo a minha volta.

  • 1
  • 2