Omega 377 Postado Novembro 8, 2013 Share Postado Novembro 8, 2013 (editado) 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 magosUma 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 invernoEsse 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çoadosEsse 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 gainEssa 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 DrinkerEsse 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 Novembro 8, 2013 por Omega Link para o comentário https://xtibia.com/forum/topic/223669-x-weapons/ Compartilhar em outros sites More sharing options...
SkyDarkyes 104 Postado Novembro 8, 2013 Share Postado Novembro 8, 2013 Só da para ver 1 imagen,a primeira Link para o comentário https://xtibia.com/forum/topic/223669-x-weapons/#findComment-1580345 Compartilhar em outros sites More sharing options...
Omega 377 Postado Novembro 8, 2013 Autor Share Postado Novembro 8, 2013 Só da para ver 1 imagen,a primeira Só tem uma imagem, mas aceito ajuda de algum spriter que se disponibilize a fazer as outras. Link para o comentário https://xtibia.com/forum/topic/223669-x-weapons/#findComment-1580472 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Novembro 12, 2013 Share Postado Novembro 12, 2013 lol, a espada so vai tira mana. fora isso gostei dos scripts Link para o comentário https://xtibia.com/forum/topic/223669-x-weapons/#findComment-1581531 Compartilhar em outros sites More sharing options...
Omega 377 Postado Novembro 12, 2013 Autor Share Postado Novembro 12, 2013 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 https://xtibia.com/forum/topic/223669-x-weapons/#findComment-1581644 Compartilhar em outros sites More sharing options...
ScythePhantom 83 Postado Novembro 13, 2013 Share Postado Novembro 13, 2013 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 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 invernoEsse 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çoadosEsse 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 gainEssa 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 DrinkerEsse 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 https://xtibia.com/forum/topic/223669-x-weapons/#findComment-1581822 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Novembro 15, 2013 Share Postado Novembro 15, 2013 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 https://xtibia.com/forum/topic/223669-x-weapons/#findComment-1582439 Compartilhar em outros sites More sharing options...
Posts Recomendados