Quero uma spell que faz uma barreira em volta do seu personagem e que suma em 5 segundos! REP+
Informações adicionais:
barreira feita com o item 1050.
OTserv TSF.
versao: 8.6
Quero uma spell que faz uma barreira em volta do seu personagem e que suma em 5 segundos! REP+
Informações adicionais:
barreira feita com o item 1050.
OTserv TSF.
versao: 8.6
tenta ae
Vá em Data/spells/scripts copie qualquer arquivo .lua e renomeie para prision.lua apague tudo e cole o seguinte code.
local remove_time = 5
local item_id = 1050
function onCastSpell(cid, var)
local pos = getThingPosition(getCreatureTarget(cid))
posTile1 = {x=pos.x+1,y=pos.y+1,z=pos.z,stackpos=1}
posTile2 = {x=pos.x+1,y=pos.y,z=pos.z,stackpos=1}
posTile3 = {x=pos.x+1,y=pos.y-1,z=pos.z,stackpos=1}
posTile4 = {x=pos.x,y=pos.y-1,z=pos.z,stackpos=1}
posTile5 = {x=pos.x-1,y=pos.y-1,z=pos.z,stackpos=1}
posTile6 = {x=pos.x-1,y=pos.y,z=pos.z,stackpos=1}
posTile7 = {x=pos.x-1,y=pos.y+1,z=pos.z,stackpos=1}
posTile8 = {x=pos.x,y=pos.y+1,z=pos.z,stackpos=1}
posAll = {posTile1,posTile2,posTile3,posTile4,posTile5,posTile6,posTile7,posTile8}
for i=1, #posAll do
if isWalkable(posAll) then
doCreateItem(item_id, 1, posAll)
end
end
addEvent(removeItem, remove_time*1000, posAll)
return true
end
function isWalkable(pos, creature, pz, proj)
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 removeItem(posAll)
for i=1, #posAll do
for j=0, 255 do
pos_stack = {x=posAll.x,y=posAll.y,z=posAll.z,stackpos=j}
removeTile = getThingfromPos(pos_stack)
if removeTile.itemid == item_id then
doRemoveItem(removeTile.uid)
end
end
end
end
Adicione a seguinte tag em spells.xml
<instant name="Prision" words="prision" lvl="100" mana="100" aggressive="1" range="5" blockwalls="1" needtarget="1" exhaustion="1000" needlearn="0" event="script" value="prision.lua">
<vocation id="1"/>
<vocation id="2"/>
<vocation id="3"/>
<vocation id="4"/>
<vocation id="5"/>
<vocation id="6"/>
<vocation id="7"/>
<vocation id="8"/>
</instant>
Ve se da certo ai qualquer coisa avisa ae ^^.
Usuário banido por divulgação indevida.
È para ser usado em volta de si mesmo não target.
e deu o seguinte erro:
[06/06/2013 23:52:06] [Error - Spell Interface]
[06/06/2013 23:52:06] In a timer event called from:
[06/06/2013 23:52:06] data/spells/scripts/orochimaru/Kuchiyose Rashoumon.lua:onCastSpell
[06/06/2013 23:52:06] Description:
[06/06/2013 23:52:06] (luaGetThingFromPos) Tile not found
function onCastSpell(cid) local item = 1337 local tempo = 5 * 1000 local efeito_ao_criar = CONST_ME_MAGIC_GREEN local efeito_ao_remover = CONST_ME_POFF for direction = 0, 7 do local position = getPosByDir(getThingPos(cid), direction) doCreateItem(item, position) doSendMagicEffect(position, efeito_ao_criar) end addEvent(function (center, id) for direction = 0, 7 do local position = getPosByDir(center, direction) local item = getTileItemById(position, id).uid if item > 1 then doSendMagicEffect(position, efeito_ao_remover) doRemoveItem(item) end end end, tempo, getThingPos(cid), item) return true end
Spell trap (REP+)
voce pediu uma spell que trapasse o seu personagem que coisa demente cara.. e tile not found é porque não existe esse tile no seu ot.
@brun123
Seu script remove apenas 4 Tiles da prisão arruma ae.
Usuário banido por divulgação indevida.
function onCastSpell(cid) local item = 1337 local tempo = 5 * 1000 local efeito_ao_criar = CONST_ME_MAGIC_GREEN local efeito_ao_remover = CONST_ME_POFF for direction = 0, 7 do local position = getPosByDir(getThingPos(cid), direction) doCreateItem(item, position) doSendMagicEffect(position, efeito_ao_criar) end addEvent(function (center, id) for direction = 0, 7 do local position = getPosByDir(center, direction) local item = getTileItemById(position, id).uid if item > 1 then doSendMagicEffect(position, efeito_ao_remover) doRemoveItem(item) end end end, tempo, getThingPos(cid), item) return true end
É esse mesmo que eu queria, só que esta removendo apenas 4 ! e os outros 4 continuam, se der pra remover todos REP+
exemplo:
C, R, R,
C, M, R,
R, C, C.
C = CONTINUA
R = REMOVIDO
M = MEU PERSONAGEM
bom, testei aqui e funcionou certinho
pega esse script abaixo, executa a spell uma vez e olha o console do seu servidor, depois dos itens serem removidos vão aparecer 8 mensagens, aí você me mostra elas:
function onCastSpell(cid) local item = 1337 local tempo = 5 * 1000 local efeito_ao_criar = CONST_ME_MAGIC_GREEN local efeito_ao_remover = CONST_ME_POFF for direction = 0, 7 do local position = getPosByDir(getThingPos(cid), direction) doCreateItem(item, position) doSendMagicEffect(position, efeito_ao_criar) end addEvent(function (center, id) print(string.format("Centro: %d/%d", center.x or -1, center.y or -1)) for direction = 0, 7 do local position = getPosByDir(center, direction) local item = getTileItemById(position, id) print(string.format("Dir. % %d/%d / uid: %d", direction, position.x or -1, position.y or -1, item.uid)) if item.uid > 1 then doSendMagicEffect(position, efeito_ao_remover) doRemoveItem(item.uid) end end end, tempo, getThingPos(cid), item) return true end
Apareceu o seguinte:
[07/06/2013 18:17:57] Centro: 1143/927 [07/06/2013 18:17:57] Dir. 0: 1143/926 / uid: 73976 [07/06/2013 18:17:57] Dir. 1: 1144/926 / uid: 73977 [07/06/2013 18:17:58] Dir. 2: 1144/927 / uid: 73978 [07/06/2013 18:17:58] Dir. 3: 1143/927 / uid: 0 [07/06/2013 18:17:58] Dir. 4: 1142/928 / uid: 73979 [07/06/2013 18:17:58] Dir. 5: 1143/929 / uid: 0 [07/06/2013 18:17:58] Dir. 6: 1142/928 / uid: 0 [07/06/2013 18:17:58] Dir. 7: 1143/927 / uid: 0
é porque a sua função getposbydir modifica o parâmetro em vez de criar novas tabelas, como eu modifiquei essa função eu não tenho esse problema, mas o tfs padrão tem que fazer de outro jeito pra não dar problemas, testa assim:
function onCastSpell(cid) local item = 1337 local tempo = 5 * 1000 local efeito_ao_criar = CONST_ME_MAGIC_GREEN local efeito_ao_remover = CONST_ME_POFF for direction = 0, 7 do local position = getPosByDir(getThingPos(cid), direction) doCreateItem(item, position) doSendMagicEffect(position, efeito_ao_criar) end addEvent(function (center, id) for direction = 0, 7 do local position = getPosByDir({x = center.x, y = center.y, z = center.z}, direction) local item = getTileItemById(position, id).uid if item > 1 then doSendMagicEffect(position, efeito_ao_remover) doRemoveItem(item) end end end, tempo, getThingPos(cid), item) return true end
Aqui funfo certinho boa bruno , Acho que foi sanado reportado para moverem.
Usuário banido por divulgação indevida.
Ae funfou! REP+2 pra você!
Tópico movido para a seção de dúvidas e pedidos resolvidos.