Ir para conteúdo

◄ Catapult System ►


sejameuamigo

Posts Recomendados

Nome: Catapult

Versão Testada: 8.54

Server Usado: [8.54~8.57] Alissow Ots 4.0

Descrição: Você cria uma catapulta (ids: 5598, 5599, 5600, 5601) e, você escolhe uma parte (ou mais de uma) para por o unique ID de 1121 (ou outro). Ao dar use na parte com UID 1121, vai ser lançado um projétil, hitando o que tiver no caminho dele. No final o projétil cai no chão.

 

Code:

catapult.lua:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local combate = COMBAT_PHYSICALDAMAGE -- tipo de dano

p = fromPosition

local a0 = {x=p.x, y=p.y-1, z=p.z}

local a1 = {x=p.x, y=p.y-2, z=p.z}

local a2 = {x=p.x, y=p.y-3, z=p.z}

local a3 = {x=p.x, y=p.y-4, z=p.z}

local a4 = {x=p.x, y=p.y-5, z=p.z}

local end1 = {x=p.x, y=p.y-6, z=p.z}

local storage = 3425 -- Não mecha aqui

local MIN_DAMAGE = 100 -- dano minimo

local MAX_DAMAGE = 500 -- dano maximo

local level = 50 -- level necessario

local UID = 1121 -- unique id do item

 

if getPlayerStorageValue(cid,storage) == 1 then

doPlayerSendCancel(cid,"You are exhausted.")

end

 

if getPlayerLevel(cid) < level then

doPlayerSendCancel(cid,"You must be level "..level..".")

end

 

if getPlayerLevel(cid) >= level and item.uid == UID and getPlayerStorageValue(cid,storage) == -1 then

setPlayerStorageValue(cid,storage,1)

addEvent(setPlayerStorageValue,5000,cid,storage,-1)

addEvent(doSendDistanceShoot,100,fromPosition, a4, 1)

addEvent(doAreaCombatHealth,100,a0, combate, a0, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)

addEvent(doAreaCombatHealth,200,a1, combate, a1, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)

addEvent(doAreaCombatHealth,300,a2, combate, a2, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)

addEvent(doAreaCombatHealth,400,a3, combate, a3, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)

addEvent(doAreaCombatHealth,500,a4, combate, a4, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)

addEvent(doCreateItem,600,2544,1,end1)

addEvent(doSendMagicEffect,600,end1,3)

end

return TRUE

end

 

 

actions.xml:

 

<action uniqueid="1121" script="catapult.lua" allowfaruse="1"/>

UID do item

 

 

 

Gostou? Rep+

Não Gostou? Rep+

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

  • 1 month later...
  • 2 months later...

Gostei bastante da idéia e parabéns pelo desenvolvimento do script.

 

Acho que um loop, como for iria bem no script, procure tutoriais sobre.

 

Vocês que falaram acima, se quiserem fazer damage no andar de cima, em vez do andar da catapulta é só alterar

 

local a0 = {x=p.x, y=p.y-1, z=p.z}
local a1 = {x=p.x, y=p.y-2, z=p.z}
local a2 = {x=p.x, y=p.y-3, z=p.z}
local a3 = {x=p.x, y=p.y-4, z=p.z}
local a4 = {x=p.x, y=p.y-5, z=p.z}
local end1 = {x=p.x, y=p.y-6, z=p.z}

 

por

 

local a0 = {x=p.x, y=p.y-1, z=p.z+1}
local a1 = {x=p.x, y=p.y-2, z=p.z+1}
local a2 = {x=p.x, y=p.y-3, z=p.z+1}
local a3 = {x=p.x, y=p.y-4, z=p.z+1}
local a4 = {x=p.x, y=p.y-5, z=p.z+1}
local end1 = {x=p.x, y=p.y-6, z=p.z+1}

 

Agora se quizerem tanto no de cima quanto no de baixo, terão que adicionar umas linhas no script.

Link para o comentário
Compartilhar em outros sites

Ficaria ainda melhor o Script se colocasse pra EXP dos monstros que morrerem for para o Player que atirou com a Catapulta.

 

 

 

Se alguém fizer ae... ajudaria pakas!

 

Abraços

 

Simples!

 

Aqui onde tem esses addEvent você tem que trocar para cid, em um lugar aqui, ficando assim:

 

addEvent(doAreaCombatHealth,100,cid, combate, a0, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,200,cid, combate, a1, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,300,cid, combate, a2, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,400,cid, combate, a3, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,500,cid, combate, a4, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)

Link para o comentário
Compartilhar em outros sites

Ficaria ainda melhor o Script se colocasse pra EXP dos monstros que morrerem for para o Player que atirou com a Catapulta.

 

 

 

Se alguém fizer ae... ajudaria pakas!

 

Abraços

 

Simples!

 

Aqui onde tem esses addEvent você tem que trocar para cid, em um lugar aqui, ficando assim:

 

addEvent(doAreaCombatHealth,100,cid, combate, a0, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,200,cid, combate, a1, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,300,cid, combate, a2, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,400,cid, combate, a3, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)
addEvent(doAreaCombatHealth,500,cid, combate, a4, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2)

 

 

Funcionou... valeu aee :thumbsupsmiley2:

 

Aprovado! :button_ok:

Link para o comentário
Compartilhar em outros sites

  • 9 months later...
×
×
  • Criar Novo...