JH

[Spell] Crystal Wall 8.54+

Por jhon992, 29 de abr. de 2012 em Globalevents e Spells

avatar spell jhon992
otserv
tibia
script
14
4.6k
jhon992J
29 de abril de 2012 às 11:19

Hoje vim trazer uma spell que criei a pedido de um membro e achei bem legal.

É uma spell que você controla para criar uma muralha em volta de seus inimigos, ela é otima para wars e servers derivados como de avatar, naruto.

Então primeiro vou posta o script dela e depois um video para melhor entendimento.

 

Vai em data/spells/scripts, duplica um arquivo e nomeia para "crystal wall" sem as aspas e nele cole:

--<Script by Jhon992>--

local stonesId = {8633,8634,8635,8636} -- ids dos diferente tipos de stones.
local timeRemove = 60 -- tempo para dumir as pedras em segundos.

function createObject(cid, position, stonesPosition)
if (isPlayer(cid)) then
if getPlayerLookDir(cid) == 0 then
	positions = {x=position.x, y=position.y-1, z=position.z}
elseif getPlayerLookDir(cid) == 1 then
	positions = {x=position.x+1, y=position.y, z=position.z}
elseif getPlayerLookDir(cid) == 2 then
	positions = {x=position.x, y=position.y+1, z=position.z}
elseif getPlayerLookDir(cid) == 3 then
	positions = {x=position.x-1, y=position.y, z=position.z}
end

if isWalkable(positions) then
	createStone(stonesPosition, positions, stonesId[math.random(1,#stonesId)], cid)
	addEvent(createObject, 500, cid, positions, stonesPosition)
else
	addEvent(removeStones, timeRemove*1000, stonesPosition)
end
end
end

function createStone(stonesPosition, positions, stone, cid)
doCreateItem(stone, 1, positions)
stonesPosition[(#stonesPosition)+1] = {x=positions.x, y=positions.y, z=positions.z, stackpos=1}
end

function removeStones(stonesPosition)
for i=1, #stonesPosition do
for o=1, 2 do
	stonesPosition[i] = {x=stonesPosition[i].x, y=stonesPosition[i].y, z=stonesPosition[i].z, stackpos=o}
	if isInArray(stonesId, getThingfromPos(stonesPosition[i]).itemid) then
		doRemoveItem(getThingfromPos(stonesPosition[i]).uid)
	end
end
end
end

function isWalkable(pos, creature, pz, proj) -- nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
local creature = getTopCreature(pos)
if creature.type > 0 then	return false end
if getTilePzInfo(pos) and not pz then return false end
local n = not proj and 3 or 2
for i = 0, 255 do
	pos.stackpos = i
	local tile = getTileThingByPos(pos)
	if tile.itemid ~= 0 and not isCreature(tile.uid) then
		if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
			return false
		end
	end
end
return true
end

function onCastSpell(cid, var)
local stonesPosition = {}
local position = getPlayerPosition(cid)
createObject(cid, position, stonesPosition)
   return true
end

 

E em data/spells/spells.xml a tag:

Obs: As tags serão diferentes dependendo da versão de seu ot. Tire como base de alguma outra tag e coloque as vocações de sua escolha.

<instant name="Crystal Wall" words="exevo crystal" lvl="45" mana="800" prem="1" blockwalls="1" exhaustion="2000" groups="3,2000" icon="127" needlearn="0" event="script" value="crystal wall.lua">
	<vocation id="1"/>
	<vocation id="2"/>
	<vocation id="5"/>
	<vocation id="6"/>
</instant>

 

Prontinho. happy.png

Você pode escolher o tempo que demorara para sumir os crystais e pode modificar os crystais por outros ids, apenas modificando as duas primeiras linhas do arquivo "crystal wall.lua".

Ela vai funcionar da seguinte maneira, quando você usa-sa ela ira criar crystais para a direção em que você esta virado e conforme você for modificando a direção os crystais vão saindo, até que encontre alguma barreira como players e itens que não se pode andar por cima.

 

Video:

Editado Abril 30 por Jhon992

JeanCristianJ
29 de abril de 2012 às 11:24

valew pela spell jhon vai me ajudar muito ,eu vo te dar rep+ por uma semana vc é o cara vc é demais man sempre inovando é disso oque o xtibia precisa vlw vc é demais!!

VodkartV
29 de abril de 2012 às 14:13

xD

uma magia bem útil e criativa, essa é do tipo de spells que dá para colocar num servidor (:

PsyMcKenzieP
30 de abril de 2012 às 01:07

Como já havia dito a você no MSN'

A Spell ficou muito foda.

Abraços!!

VildenV
30 de abril de 2012 às 01:22

Rep+ Ótima spell, ótimo conteúdo.

1 mês depois...
kelvinvictorK
22 de maio de 2012 às 09:07

Muito boa, ajudará a muitos.

n3tt3rz1N
23 de maio de 2012 às 04:44

Caracas!

Muito bom valeu!!

2 meses depois...
KeepstillK
30 de julho de 2012 às 03:57

valeu cara ajudo bastantao aqui no ot thx

SkySevenS
30 de julho de 2012 às 10:48

Excelente,Spell

3 meses depois...
RasinskR
28 de outubro de 2012 às 00:02

Tem como fazer uma spell de ataque com esse sistema? e na hora q acerta o monstro/player causa uma explosão :D

jhon992J
28 de outubro de 2012 às 11:33

Tem como fazer uma spell de ataque com esse sistema? e na hora q acerta o monstro/player causa uma explosão :D

 

Tem sim e nem é tão difícil, tu é scripter .lua neh, só da uma pesquisadinha e uma modificada que tu faz. happy.png

RasinskR
28 de outubro de 2012 às 14:02

Vou tentar kk, tua spell é mt da hora REP+ button_ok.pngsmile_positivo.gif

HommerJayH
02 de novembro de 2012 às 17:28

Muito LegaL Essa Spells !Obrigado ! 2cnw4gi_th.png

11 meses depois...
libanoriL
25 de outubro de 2013 às 20:23

desculpe reviver o topico,tem como fazer essa spell paralizar o alvo qnd acerta e uma spell q so vai funcionar si o alvo for acertado?