Ir para conteúdo
Entre para seguir isso  
Rei_vegeta

exori hur X

Recommended Posts

Rei_vegeta    0
Rei_vegeta

Nome: secrete wepon

.

Versão: Testado em TFS 8.54, mas funciona em qualquer ot.

.

Tipo do script: Spell +(mais pode precisa de ajuntar umas funtions na lib, caso seu ot nao tenha.)

.

Servidor Testado: Youots 8.54

.

Autor: Willlian BC

.

Explicação: A magia fuciona como exori vis se nao tiver um alvo manda

pra frente, o efeito e como o da exori hur pois ele muda de acordo

com a arma que vc esta usando.

.

Comentario: uma exori hur mais avancada, com suporte para todas as versoes, que eu testei, mais recomendado para +8.0.

exorihuex.jpg

eu nao escolhe as vocaçoes (por o tipo arma escolhe o dano da vocation).

DATA/SPELL/spell.xml

   <instant name="Secrete Throw" words="exori hur x" lvl="15" mana="40" prem="1" range="5"  blockwalls="1" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="[b]Battle/support[/b]/Secrete Throw.lua">
   </instant>

DATA/SPELL/Battle/support/Secrete Throw.lua

 

function onCastSpell(cid, var)

sendWeaponDistanceShoot(cid, var)

end

data\spells\lib\spells.lua

 

dofile(getDataDir() .. "spells/lib/spellsList.lua")

crie um arquivo com o nome spellsList.lua

and put it inside.

--[[
All pet Spell Here need to be learn before to use.
]]--


--Exori Hur X
dofile(getDataDir() .. "spells/lib/petSpell/exoriHurX.lua")

agora crie um outro arquivo exoriHurX.lua dentro de spells/lib/petSpell

se a pasta nao existir vc deve criar

spells/lib/petSpell/exoriHurX.lua


local function withTarget(cid, pos, DistanceShoot)
   local tagertPositions = getCreaturePosition(getCreatureTarget(cid))
       doSendDistanceShoot( {x = pos.x , y = pos.y , z = pos.z},tagertPositions , DistanceShoot)
       doAreaCombatHealth(cid, COMBAT_FIREDAMAGE, tagertPositions, tagertPositions, -50, -150, CONST_ME_NONE)
end

local function withOutTarget(cid, pos, DistanceShoot)
   local    direction = getCreatureLookDirection(cid)
                   if direction == NORTH then
   toPositions = {x = pos.x + math.random(-1,1), y = pos.y + math.random(-5,-3), z = pos.z}
                       doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to north.")
                   elseif direction == EAST then
   toPositions = {x = pos.x + math.random(3,5), y = pos.y + math.random(-1,1), z = pos.z}
                       doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to east.")
                   elseif direction == SOUTH then
   toPositions = {x = pos.x + math.random(-1,1), y = pos.y + math.random(3,5), z = pos.z}
                       doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to south.")
                   elseif direction == WEST then
   toPositions = {x = pos.x + math.random(-5,-3), y = pos.y + math.random(-1,1), z = pos.z}
                       doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to west.")
                   else --no direction name found
return toPositions
                   end
       doSendDistanceShoot( {x = pos.x , y = pos.y , z = pos.z},toPositions , DistanceShoot)
       doAreaCombatHealth(cid, COMBAT_FIREDAMAGE, toPositions, toPositions, -300, -550, CONST_ME_EXPLOSIONHIT)
end

function sendWeaponDistanceShoot(cid, var)    -- var is for a possible advanced target, not used for now
   local    pos = getPlayerPosition(cid)
       if isWeapon(getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid) then
                   DistanceShoot = getWeaponDistanceShoot(getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid)
           elseif isWeapon(getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid) then
                   DistanceShoot = getWeaponDistanceShoot(getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid)        
           elseif
           isWeapon(getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) then
                   DistanceShoot = getWeaponDistanceShoot(getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid)
           else
               doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "using spear as defalt.")
       end

       if isCreature(getCreatureTarget(cid)) then
               withTarget(cid, pos, DistanceShoot)
           else
               withOutTarget(cid, pos, DistanceShoot)
       end
end

Essa parte so sera precisa se seu ot nao suporta a function

iswepos,getwepontype,WeaponTypeDistance

em

data\lib crie um arquivo chamado 101-weapontype.lua

ficando assim.

data\lib\101-weapontype.lua

dentro dele.

 

WEAPONTYPE_CLUB = 1
WEAPONTYPE_SWORD = 2
WEAPONTYPE_AXE = 3
WEAPONTYPE_DISTANCE = 4
WEAPONTYPE_WAND = 5
WEAPONTYPE_ROD = 6
--WEAPON_AMMUNITION 7 --???

WEAPON_CLUB = {
          2321, 2382, 2391, 2394, 2398, 2401, 2416, 2417, 2421, 2422, 2423, 2424, 2433, 2434, 2436, 2437,
          2439, 2444, 2445, 2448, 2449, 2452, 2453, 3961, 3966, 4846, 7379, 7381, 7387, 7392, 7410, 7414,
          7415, 7424, 7425, 7426, 7427, 7429, 7430, 7431, 7432, 7437, 7451, 7452
         }
WEAPON_SWORD = {
           2376, 2377, 2379, 2383, 2384, 2385, 2390, 2392, 2393, 2395, 2396, 2397, 2400, 2402, 2403, 2404,
           2406, 2407, 2408, 2409, 2411, 2412, 2413, 2419, 2420, 2438, 2442, 2446, 2450, 2451, 3963, 6101
           , 6528, 7382, 7383, 7384, 7385, 7386, 7390, 7402, 7404, 7405, 7406, 7407, 7408, 7416, 7449
          }
WEAPON_AXE = {
         2378, 2380, 2381, 2386, 2387, 2388, 2405, 2414, 2415, 2418, 2425, 2426, 2427, 2428, 2429, 2430, 2431,
         2432, 2435, 2440, 2441, 2443, 2447, 2454, 2550, 2559, 3962, 3964, 6553, 7380, 7388, 7389, 7412, 7413, 7419, 7434
        }
WEAPON_WAND = {
          2187, 2188, 2189, 2190, 2191
         }
WEAPON_ROD = {
         2181, 2182, 2183, 2185, 2186
        }

WEAPON_DISTANCE = {
                  1294, 2111, 2389, 2399, 2410, 2455, 2456, 3965, 5803, 7366, 7367, 7368, 7378, 7438
                  }

WEAPON_AMMUNITION = {
               --arrows
                   2544,2545,2546,7838,7839,7840,7850,7364,7365,
               --bolts
                   7363,2547,6529
                  }


function isWeapon(itemId)
   if(getWeaponType(itemId) ~= FALSE) then
       return TRUE
   else
       return FALSE
   end
end

function getWeaponType(itemId)
   if isInArray(WEAPON_CLUB, itemId) then
       return WEAPONTYPE_CLUB
   elseif isInArray(WEAPON_AXE, itemId) then
       return WEAPONTYPE_AXE
   elseif isInArray(WEAPON_SWORD, itemId) then
       return WEAPONTYPE_SWORD
   elseif isInArray(WEAPON_WAND, itemId) then
       return WEAPONTYPE_WAND
   elseif isInArray(WEAPON_ROD, itemId) then
       return WEAPONTYPE_ROD            
   elseif isInArray(WEAPON_DISTANCE, itemId) then
       return WEAPONTYPE_DISTANCE
   elseif isInArray(WEAPON_AMMUNITION, itemId) then
       return WEAPONTYPE_AMMUNITION
   else
       return FALSE
   end
end


WeaponTypeDistance = {
   --[[1 Stone, Snow,    ]]--
       {  1294, 2111    }
,
   --[[2 Spear,hunting,enchanted,royal ]]--
   {     2389,  3965 ,   7367  , 7378}
,
   --[[3 throwing     Stars, knives,    green,red     ]]--
   {               2399,     2410,  7366, 7368}
,
   --[[4 Arrow ]]--
   {   2544,2545,2546,7838,7839,7840,7850,7364,7365}
,
   --[[5 BOLT ]]--
   {   7363,2547,6529}
,


                  }
--       {type = "knight", WEAPON_CLUB = CONST_ANI_WHIRLWINDCLUB, WEAPON_SWORD = CONST_ANI_WHIRLWINDSWORD, WEAPON_AXE = CONST_ANI_WHIRLWINDAXE}
function getWeaponDistanceShoot(itemId)

-------------paladin------
   if isInArray(WeaponTypeDistance[1], itemId) then
       return CONST_ANI_LARGEROCK

   elseif isInArray(WeaponTypeDistance[2], itemId) then
       return CONST_ANI_ETHEREALSPEAR

   elseif isInArray(WeaponTypeDistance[3], itemId) then
       return CONST_ANI_THROWINGSTAR

   elseif isInArray(WeaponTypeDistance[4], itemId) then
       return CONST_ANI_ARROW

   elseif isInArray(WeaponTypeDistance[5], itemId) then
       return CONST_ANI_BOLT

-------------kight-----------
   elseif isInArray(WEAPON_CLUB, itemId) then
       return CONST_ANI_WHIRLWINDCLUB

   elseif isInArray(WEAPON_AXE, itemId) then
       return CONST_ANI_WHIRLWINDAXE

   elseif isInArray(WEAPON_SWORD, itemId) then
       return CONST_ANI_WHIRLWINDSWORD
------------mages----------------
   elseif isInArray(WEAPON_WAND, itemId) then
       return CONST_ANI_FIRE

   elseif isInArray(WEAPON_ROD, itemId) then
       return CONST_ANI_ICE


   else
       return FALSE
   end
end

PLS me ajude a completar a lista de armas. a lib

Editado por Rei_vegeta
@add SS

Compartilhar este post


Link para o post
Flatronez    1
Flatronez

Movido.

 

aprovadog.png

Compartilhar este post


Link para o post
Nenzzy    0
Nenzzy

boa lek gostei!

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×