Ir para conteúdo

Omega

Posts Recomendados

Apresento-lhes as X-Weapons, uma pequena galeria com alguns scripts para armas especiais. O @Lucasmml me ajudou fazendo a primeira sprite pra incrementar a iniciativa.

  • Magebane - o terror dos magos

ysn2.png
Uma arma lendária: ela tem o poder de, a cada golpe, retirar um pouco do poder mágico do alvo.

 

weapons/scripts/x-weapons/magebane.lua:

-- Magebane

local mana_min = 10
local mana_max = 35

function onUseWeapon(cid)
	local target = getCreatureTarget(cid)
	local random = math.random(mana_min, mana_max)
	doTargetCombatMana(cid, target, - random, - random, 10)
	return true
end	

Tag weapons.xml:

<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\magebane.lua"/>

 

 

 

  • Winter's Charm - o poder do inverno

Esse poderoso cajado se adapta aos poderes do mago que o utiliza, disparando gelo e atrapalhando a movimentação do alvo.


weapons/scripts/x-weapons/winterscharm.lua

-- Winter's Charm

local AREA_SQUARE1X1 = {
	{1, 1, 1},
	{1, 3, 1},
	{1, 1, 1}
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 5000)
setConditionFormula(condition, -0.3, 0, -0.3, 0)
setCombatCondition(combat, condition)

function onUseWeapon(cid)
	local var = numberToVariant(getCreatureTarget(cid))
	return doCombat(cid, combat, var)
end

Tag weapons.xml:

<wand id="id da wand" level="level necessario" mana="mana consumida por hit" min="0" 
max="0" type="ice" event="script" value="x-weapons/winterscharm.lua">
	<vocation id="2"/>
	<vocation id="6" showInDescription="0"/>
	<vocation id="10" showInDescription="0"/>
</wand>

 

 

 

  • Maul of Doom - o martelo dos amaldiçoados

Esse martelo foi submetido a rituais profanos, recebendo poderes sobrenaturais que afligem com dores contínuas quem tem o azar de receber seus golpes.
-- Importante --
Esse código foi feito pelo @brun123 para uma magia, só adaptei ele pra criar uma arma.


weapons/scripts/x-weapons/maulofdoom.lua

-- The Maul of Doom

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 17)
    
local conditions = {}
local min, max, skip = 10, 150, 5

local callbackfunc = setCombatCallBack or setCombatCallback 
for damage = min, max, skip do
    local condition = createConditionObject(CONDITION_CURSED)
    setConditionParam(condition, CONDITION_PARAM_DELAYED, 10)
    addDamageCondition(condition, 15, 2000, -damage)
    conditions[damage] = condition
end

function TG_CALLBACK (caster, target)
    local damage = getPlayerLevel(caster) * 0.2 + getPlayerSkillLevel(caster, 1) * 2
    damage = math.floor((damage - damage % skip))
    damage = math.min(max, math.max(min, damage))
    if conditions[damage] then
        doAddCondition(target, conditions[damage])
    else
        doAddCondition(target, conditions[min])
    end
end
callbackfunc(combat, CALLBACK_PARAM_TARGETCREATURE, "TG_CALLBACK")

function onUseWeapon(cid)
	local var = numberToVariant(getCreatureTarget(cid))
	return doCombat(cid, combat, var)
end

Tag weapons.xml:

<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\maulofdoom.lua"/>

 

 

 

  • Fury's Edge - no pain, no gain

Essa espada se alimenta da raiva do seu usuário, causando maior dano conforme o percentual de vida decresce.


weapons/scripts/x-weapons/furysedge.lua

function onUseWeapon(cid)
	local factor = 1 - (getCreatureHealth(cid) / getCreatureMaxHealth(cid))
	local skill, level = getPlayerSkillLevel(cid, 2), getPlayerLevel(cid)
	local damage = math.floor((skill * 4 + level) * 0.2 * factor)
	local target = getCreatureTarget(cid)
	
	doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, - damage * 0.7, - damage * 1.3, 0)
	return true
end

Tag weapons.xml:

<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\furysedge.lua"/>

 

 

 

  • The Blood Drinker

Esse machado é capaz de se alimentar do sangue fresco de suas vítimas, absorvendo-o para aumentar sua força.


creaturescripts/scripts/blooddrinker.lua

-- OMS #1 06/11/2013
-- The Blood Drinker

-- Id da arma blood drinker
blood_drinker_id = 2400
-- Máximo atk que a blood drinker pode ganhar de suas vítimas
blood_drinker_maxatk = 10
-- Razão máxima entre o level do jogador e o level do alvo para que a blood drinker se alimente
blood_drinker_level_rate = 3 / 2

function onKill(cid, target)
	if isPlayer(target) then
		local weapon = getPlayerWeapon(cid)
		if weapon.itemid == blood_drinker_id then
			local level = getItemAttribute(weapon.uid, "extraattack") or 0
			if level < blood_drinker_maxatk then
				if getPlayerLevel(cid) / getPlayerLevel(target) <= blood_drinker_level_rate then
					local desc = level == 0 and "victim" or "victims"
					doItemSetAttribute(weapon.uid, "extraattack", level + 1)
					doItemSetAttribute(weapon.uid, "description", "this weapon thirsts for blood. It has drunk the fresh blood of "..level + 1 .." "..desc.." now.")
					doPlayerSendTextMessage(cid, 27, "The blood drinker has been upgraded by your victim's blood.")
				else
					doPlayerSendTextMessage(cid, 27, "Your target was too weak to feed the blood drinker.")
				end
			end
		end
	end
	return true
end

Tag creaturescripts.xml:

<event type="kill" name="Blood_Drinker" event="script" value="blooddrinker.lua"/>

Tag items.xml:

<item id="id da blood drinker" article="a" name="blood drinker">
    <attribute key="description" value="It thirts for fresh blood." />
    <attribute key="weight" value="3700" />
    <attribute key="defense" value="20" />
    <attribute key="attack" value="45" />
    <attribute key="weaponType" value="sword" />
</item>

Adicionar em creaturescripts/scripts/login.lua:

registerCreatureEvent(cid, "Blood_Drinker")

 

 

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

lol, a espada so vai tira mana.

fora isso gostei dos scripts

 

Na verdade, não consegui impedir as armas de baterem (melee), não importanto o que eu retornasse na função (true, false, nil). Então bate e tira mana, pelo menos aqui no meu 8.6.

Link para o comentário
Compartilhar em outros sites

Apresento-lhes as X-Weapons, uma pequena galeria com alguns scripts para armas especiais. O @Lucasmml me ajudou fazendo a primeira sprite pra incrementar a iniciativa.

  • Magebane - o terror dos magos

ysn2.png

Uma arma lendária: ela tem o poder de, a cada golpe, retirar um pouco do poder mágico do alvo.

 

 

weapons/scripts/x-weapons/magebane.lua:

-- Magebane

local mana_min = 10
local mana_max = 35

function onUseWeapon(cid)
	local target = getCreatureTarget(cid)
	local random = math.random(mana_min, mana_max)
	doTargetCombatMana(cid, target, - random, - random, 10)
	return true
end	

Tag weapons.xml:

<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\magebane.lua"/>

 

 

 

  • Winter's Charm - o poder do inverno

Esse poderoso cajado se adapta aos poderes do mago que o utiliza, disparando gelo e atrapalhando a movimentação do alvo.

 

 

weapons/scripts/x-weapons/winterscharm.lua

-- Winter's Charm

local AREA_SQUARE1X1 = {
	{1, 1, 1},
	{1, 3, 1},
	{1, 1, 1}
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 5000)
setConditionFormula(condition, -0.3, 0, -0.3, 0)
setCombatCondition(combat, condition)

function onUseWeapon(cid)
	local var = numberToVariant(getCreatureTarget(cid))
	return doCombat(cid, combat, var)
end

Tag weapons.xml:

<wand id="id da wand" level="level necessario" mana="mana consumida por hit" min="0" 
max="0" type="ice" event="script" value="x-weapons/winterscharm.lua">
	<vocation id="2"/>
	<vocation id="6" showInDescription="0"/>
	<vocation id="10" showInDescription="0"/>
</wand>

 

 

 

  • Maul of Doom - o martelo dos amaldiçoados

Esse martelo foi submetido a rituais profanos, recebendo poderes sobrenaturais que afligem com dores contínuas quem tem o azar de receber seus golpes.

-- Importante --

Esse código foi feito pelo @brun123 para uma magia, só adaptei ele pra criar uma arma.

 

 

weapons/scripts/x-weapons/maulofdoom.lua

-- The Maul of Doom

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 17)
    
local conditions = {}
local min, max, skip = 10, 150, 5

local callbackfunc = setCombatCallBack or setCombatCallback 
for damage = min, max, skip do
    local condition = createConditionObject(CONDITION_CURSED)
    setConditionParam(condition, CONDITION_PARAM_DELAYED, 10)
    addDamageCondition(condition, 15, 2000, -damage)
    conditions[damage] = condition
end

function TG_CALLBACK (caster, target)
    local damage = getPlayerLevel(caster) * 0.2 + getPlayerSkillLevel(caster, 1) * 2
    damage = math.floor((damage - damage % skip))
    damage = math.min(max, math.max(min, damage))
    if conditions[damage] then
        doAddCondition(target, conditions[damage])
    else
        doAddCondition(target, conditions[min])
    end
end
callbackfunc(combat, CALLBACK_PARAM_TARGETCREATURE, "TG_CALLBACK")

function onUseWeapon(cid)
	local var = numberToVariant(getCreatureTarget(cid))
	return doCombat(cid, combat, var)
end

Tag weapons.xml:

<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\maulofdoom.lua"/>

 

 

 

  • Fury's Edge - no pain, no gain

Essa espada se alimenta da raiva do seu usuário, causando maior dano conforme o percentual de vida decresce.

 

 

weapons/scripts/x-weapons/furysedge.lua

function onUseWeapon(cid)
	local factor = 1 - (getCreatureHealth(cid) / getCreatureMaxHealth(cid))
	local skill, level = getPlayerSkillLevel(cid, 2), getPlayerLevel(cid)
	local damage = math.floor((skill * 4 + level) * 0.2 * factor)
	local target = getCreatureTarget(cid)
	
	doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, - damage * 0.7, - damage * 1.3, 0)
	return true
end

Tag weapons.xml:

<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\furysedge.lua"/>

 

 

 

  • The Blood Drinker

Esse machado é capaz de se alimentar do sangue fresco de suas vítimas, absorvendo-o para aumentar sua força.

 

 

creaturescripts/scripts/blooddrinker.lua

-- OMS #1 06/11/2013
-- The Blood Drinker

-- Id da arma blood drinker
blood_drinker_id = 2400
-- Máximo atk que a blood drinker pode ganhar de suas vítimas
blood_drinker_maxatk = 10
-- Razão máxima entre o level do jogador e o level do alvo para que a blood drinker se alimente
blood_drinker_level_rate = 3 / 2

function onKill(cid, target)
	if isPlayer(target) then
		local weapon = getPlayerWeapon(cid)
		if weapon.itemid == blood_drinker_id then
			local level = getItemAttribute(weapon.uid, "extraattack") or 0
			if level < blood_drinker_maxatk then
				if getPlayerLevel(cid) / getPlayerLevel(target) <= blood_drinker_level_rate then
					local desc = level == 0 and "victim" or "victims"
					doItemSetAttribute(weapon.uid, "extraattack", level + 1)
					doItemSetAttribute(weapon.uid, "description", "this weapon thirsts for blood. It has drunk the fresh blood of "..level + 1 .." "..desc.." now.")
					doPlayerSendTextMessage(cid, 27, "The blood drinker has been upgraded by your victim's blood.")
				else
					doPlayerSendTextMessage(cid, 27, "Your target was too weak to feed the blood drinker.")
				end
			end
		end
	end
	return true
end

Tag creaturescripts.xml:

<event type="kill" name="Blood_Drinker" event="script" value="blooddrinker.lua"/>

Tag items.xml:

<item id="id da blood drinker" article="a" name="blood drinker">
    <attribute key="description" value="It thirts for fresh blood." />
    <attribute key="weight" value="3700" />
    <attribute key="defense" value="20" />
    <attribute key="attack" value="45" />
    <attribute key="weaponType" value="sword" />
</item>

Adicionar em creaturescripts/scripts/login.lua:

registerCreatureEvent(cid, "Blood_Drinker")

 

 

 

MUUUUITO BOM, realmente gostei muito, parabéns brother.

Link para o comentário
Compartilhar em outros sites

resolvi fazer uma arminha diferente tambem, só preciso arruma os effeitos(estão bem zuados,coloquei qualquer um so pra testa) ,fazer um video, e adiciona umas configurações de dano e outros detalhes

 

postarei para o proximo oms.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...