Ir para conteúdo

[Creaturescript] Weapons Paralyze!


jhon992

Posts Recomendados

Vi que no fórum de dúvidas varias pessoas perguntam como fazer para Weapons darem Paralyze, então resolvi criar o Weapon Paralyze!

 

O script é de fácil entendimento e qualquer um pode editar facilmente, vai ser possível adicionar mais weapons, regular a chance de ocorrer o paralyze entre outras configurações.

 

-------------------------------------------------------------------------------------------------------------------------------

 

Vamos ao que interessa, abra a pasta "data/creaturescripts/scripts" duplique um arquivo qualquer e renomeie para "weaponpar" sem as aspas e nele cole:

-- <Script by jhon992> --

local weaponpar = {2377, 2378, 2379, 2380}  -- id dos items que darão paralize
local chancepar = 5 -- chance de ocorrer o paralize (10 = 10%, 20 = 20%, 30 = 30%, 1 = 1%, 5 = 5%) e assim por diante

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) -- aqui edita os valores pro dano de paralize, vai mudando ae e testando até achar o desejado

local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) -- aqui vai o tempo de paralyze, 1000 = 1 segundo
setConditionParam(condition, CONDITION_PARAM_SPEED, -400) -- velocidade que o monstro irá perder
setConditionFormula(condition, 0, 0, 0, 0)
setCombatCondition(combat, condition)

function onAttack(cid, target)
if ((getCreaturePosition(target).x == getCreaturePosition(cid).x or getCreaturePosition(target).x == getCreaturePosition(cid).x+1 or getCreaturePosition(target).x == getCreaturePosition(cid).x-1) and (getCreaturePosition(target).y == getCreaturePosition(cid).y or getCreaturePosition(target).y == getCreaturePosition(cid).y+1 or getCreaturePosition(target).y == getCreaturePosition(cid).y-1)) then
for i=0, #weaponpar do
if (getPlayerSlotItem(cid, 5).itemid == weaponpar[i] or getPlayerSlotItem(cid, 6).itemid == weaponpar[i]) then
	if (math.random(1,100) > (100 - chancepar)) then
		doPlayerSendTextMessage(cid, 23, getCreatureName(target).." has paralized.")
		doAddCondition(target, condition)
		return true
	else
	return true
	end
end
end
end
return true
end

 

Agora no arquivo, "data/creaturescripts/creaturescripts.xml" cole a tag:

<event type="attack" name="WeaponPar" event="script" value="weaponpar.lua"/>

 

E por último, abra o arquivo login.lua que esta localizado em "data/creaturescripts/scripts" e cole a tag:

registerCreatureEvent(cid, "WeaponPar")

 

Pronto, terminamos o Weapon Paralyze! Se tiverem alguma dúvida ou aparecer algum erro inesperado só me falar.

Editado por Jhon992
Link para o comentário
Compartilhar em outros sites

mas o Cara, eu posso colocar outro atributo nela, tipo Dano Ice ou Fire ?

 

Sóh adicionar mais conditions antes da função onAttack

 

Fire:

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) -- aqui vai o tempo de fire, 1000 = 1 segundo
setConditionFormula(condition, 0, 0, 0, 0)
setCombatCondition(combat, condition)

 

Ice:

local condition = createConditionObject(CONDITION_FREEZING)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) -- aqui vai o tempo de fire, 1000 = 1 segundo
setConditionFormula(condition, 0, 0, 0, 0)
setCombatCondition(combat, condition)

 

Lista de Conditions:

CONDITION_NONE = 0
CONDITION_POISON = 1
CONDITION_FIRE = 2
CONDITION_ENERGY = 4
CONDITION_PHYSICAL = 8
CONDITION_HASTE = 16
CONDITION_PARALYZE = 32
CONDITION_OUTFIT = 64
CONDITION_INVISIBLE = 128
CONDITION_LIGHT = 256
CONDITION_MANASHIELD = 512
CONDITION_INFIGHT = 1024
CONDITION_DRUNK = 2048
CONDITION_EXHAUST = 4096
CONDITION_FOOD = 8192
CONDITION_REGENERATION = 8192
CONDITION_SOUL = 16384
CONDITION_DROWN = 32768
CONDITION_MUTED = 65536
CONDITION_ATTRIBUTES = 131072
CONDITION_FREEZING = 262144
CONDITION_DAZZLED = 524288
CONDITION_CURSED = 1048576
CONDITION_PACIFIED = 2097152
CONDITION_GAMEMASTER = 4194304
CONDITION_HUNTING = 8388608

Link para o comentário
Compartilhar em outros sites

mas ai a paralyze vai ser mandada de longe ou so de perto?

 

Sóh de perto, tem uma linha de código que verifica se tu ta a menos de 1 sqm de distancia de seu oponente, se tiver mais distante n usa o paralize.

Linha:

if ((getCreaturePosition(target).x == getCreaturePosition(cid).x or getCreaturePosition(target).x == getCreaturePosition(cid).x+1 or getCreaturePosition(target).x == getCreaturePosition(cid).x-1) and (getCreaturePosition(target).y == getCreaturePosition(cid).y or getCreaturePosition(target).y == getCreaturePosition(cid).y+1 or getCreaturePosition(target).y == getCreaturePosition(cid).y-1)) then

Editado por Jhon992
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...