Ir para conteúdo
  • 0

Ajuda!script De Fechar Portas Por Talkactions.


leandroskt8

Pergunta

O.giflá amigos e colaboradores.

Venho aqui mais uma vez pedir um script para meu evento coliseum.

Então eu quero uma talkaction com que god digite/open coliseum as porta abrissem,ai quando eu terminar evento /close coliseum para fechar as portas. Servidor utilizado Real server 8.6 versão 3.1.0.0,

coliseum.jpg

Bom Tirei uma foto, como é coliseum, essas são as cordenadas das portas, "p"representa grupo de portas e "123" são as cordenadas de cada porta que serão aberta e fechadas.tentei ser máximo, especifico para não dificultar a criação do escript, espero que alguém me ajude Obg. Rep + para quem conseguir.

 

p.1> 1x:361 y: 72 z:7 ,2x:362 y:72 z:7 ,3x:363 y:72 z:7

p.2> 1x:369 y:68 z:7 ,2x:370 y:68 z:7 ,3x:371 y:68 z:7

p.3> 1x:377 y:68 z:7 ,2x:378 y:68 z:7 ,3x:379 y: 68 z:7

p.4> 1x:385 y:72 z:7 ,2x:385 y:73 z:7 ,3x:385 y:74 z:7

p.5> 1x:384 y:76 z:7 ,2x:383 y:76 z:7 ,3x:382 y:76 z:7

p.6> 1x:377 y:80 z:7 ,2x:376 y:80 z:7 ,3x:375 y:80 z:7

p.7> 1x:373 y:78 z:7 ,2x:372 y:78 z:7 ,3x:371 y:78 z:7

p.8> 1x:366 y:82 z:7 ,2x:365 y:82 z:7 ,3x:264 y:82 z:7

p.9> 1x:357 y:78 z:7 ,2x:357 y:77 z:7 ,3x:357 y:76 z:7

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

Posts Recomendados

  • 0

Existiam duas formas de fazer, adicionando todas as portas e posicoes em uma tabela ou pegando uma area que contenha todas elas, achei mais pratico a segunda forma entao aqui vai:

function onSay(cid, words, param)
local table, config = {
toClose = {[idportaaberta] = idportafechada}, -- Coloque aqui os ids das portas seguindo o exemplo, a segunda tabela vai ser criada sozinha
toOpen = {}
}, {
fromPos = {x=x,y=y,z=z},
toPos = {x=x,y=y,z=z}
}

for opened,closed in ipairs(table.toClose) do
table.toOpen[closed] = opened
end

for x=config.fromPos.x, config.toPos.x do
for y=config.fromPos.y, config.toPos.y do
local doorPos = {x=x,y=y,z=config.fromPos.z}
for stack=1,20 do
doorPos.stackpos = stack
for _,to in ipairs(table) do
door = getThingFromPos(doorPos)
if to[door.itemid] then
doTransformThing(door.uid, to[door.itemid])
end
end
end
end
end
return true
end

 

Aqui tambem coloquei o script identado no pastebin.

 

OBS: Esse script vai ser como !coliseum e vai abrir se tiver fechado e fechar se tiver aberto.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom não sei que pode ser porque, ta dando esse erro.

 

[Error - TalkAction Interface]

data/talkactions/scripts/coliseum.lua:onSay

Description:

data/talkactions/scripts/coliseum.lua:14: 'for' initial value must be a number

stack traceback:

data/talkactions/scripts/coliseum.lua:14: in function <data/talkactions/scripts/coliseum.lua:1>

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<talkaction log="yes" words="!coliseum" access="5" event="script" value="coliseum.lua"/>

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

door.jpg

function onSay(cid, words, param)

local table, config = {

toClose = {[9169] = 9170}, -- Coloque aqui os ids das portas seguindo o exemplo, a segunda tabela vai ser criada sozinha

toOpen = {}

}, {

fromPos = {x=x,y=y,z=z},

toPos = {x=x,y=y,z=z}

}

 

for opened,closed in ipairs(table.toClose) do

table.toOpen[closed] = opened

end

 

for x=config.fromPos.x, config.toPos.x do

for y=config.fromPos.y, config.toPos.y do

local doorPos = {x=x,y=y,z=config.fromPos.z}

for stack=1,20 do

doorPos.stackpos = stack

for _,to in ipairs(table) do

door = getThingFromPos(doorPos)

if to[door.itemid] then

doTransformThing(door.uid, to[door.itemid])

end

end

end

end

end

return true

end

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

  • 0

Bom não sei que pode ser porque, ta dando esse erro.

 

[Error - TalkAction Interface]

data/talkactions/scripts/coliseum.lua:onSay

Description:

data/talkactions/scripts/coliseum.lua:14: 'for' initial value must be a number

stack traceback:

data/talkactions/scripts/coliseum.lua:14: in function <data/talkactions/scripts/coliseum.lua:1>

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<talkaction log="yes" words="!coliseum" access="5" event="script" value="coliseum.lua"/>

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

door.jpg

function onSay(cid, words, param)

local table, config = {

toClose = {[9169] = 9170}, -- Coloque aqui os ids das portas seguindo o exemplo, a segunda tabela vai ser criada sozinha

toOpen = {}

 

Voce mudous as posicoes em config.fromPos e config.toPos?

E eh o contrario .. [9170] = 9169

Link para o comentário
Compartilhar em outros sites

  • 0

"Voce mudous as posicoes em config.fromPos e config.toPos?"

Você diz essas aqui ?

fromPos = {x=x,y=y,z=z},

toPos = {x=x,y=y,z=z}

 

bom mudei

fromPos = {x=361,y=72,z=7},

toPos = {x=362,y=72,z=7}

só que eu aplico comando !coliseum, as porta continua fechada não acontece nada .

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

  • 0

"Voce mudous as posicoes em config.fromPos e config.toPos?"

Você diz essas aqui ?

fromPos = {x=x,y=y,z=z},

toPos = {x=x,y=y,z=z}

 

bom mudei

fromPos = {x=361,y=72,z=7},

toPos = {x=362,y=72,z=7}

só que eu aplico comando !coliseum, as porta continua fechada não acontece nada .

 

Voce tem que deixar /\< na agua e \/> na agua.

Como se fosse selecionar uma area.

Link para o comentário
Compartilhar em outros sites

  • 0

Troca por esse:

function onSay(cid, words, param)
local table, config = {
toClose = {[9170] = 9169}, -- Coloque aqui os ids das portas seguindo o exemplo, a segunda tabela vai ser criada sozinha
toOpen = {}
}, {
fromPos = {x=356,y=69,z=7},
toPos = {x=386,y=81,z=7}
}

for opened,closed in ipairs(table.toClose) do
table.toOpen[closed] = opened
end

for x=config.fromPos.x, config.toPos.x do
for y=config.fromPos.y, config.toPos.y do
local doorPos = {x=x,y=y,z=config.fromPos.z}
for stack=1,20 do
doorPos.stackpos = stack
for _,to in ipairs(table) do
door = getThingFromPos(doorPos)
if to[door.itemid] then
doTransformThing(door.uid, to[door.itemid])
end
end
end
end
end
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

local doors = {
[1] = {x=361, y=72, z=7},
[2] = {x=362, y=72, z=7},
}

local config = {
   openID = 9170,
   closedID = 9169
}

function onSay(cid, words, param)
   if param == "open" then
    for i,x in ipairs(doors) do
      	 for stack = 0, 255 do
          	 x.stackpos = stack
      		 local item = getThingFromPos(x)
          	 if item.itemid == config.closedID then
          		 doTransformItem(item.uid, config.openID)
                   break
               end
           end
       end
   elseif param == "close" then
    for i,x in ipairs(doors) do
      	 for stack = 0, 255 do
          	 x.stackpos = stack
      		 local item = getThingFromPos(x)
          	 if item.itemid == config.openID then
          		 doTransformItem(item.uid, config.closedID)
                   break
               end
           end
       end
   end
   return true
end

 

!coliseum open

!coliseum close

 

Bota o resto das pos la, soh ir botando todas as pos das portas... flw

Link para o comentário
Compartilhar em outros sites

  • 0

 

Teria como você ver se existe algum erro no meu script?

Se tiver e você puder concertar fica muito mais fácil pra ele configurar o script...

 

@Seu script

local doors = {
[1] = {x=361, y=72, z=7},
[2] = {x=362, y=72, z=7},
}

local config = {
openID = 9170,
closedID = 9169
}

function onSay(cid, words, param)
if param == "open" then
		for i,x in ipairs(doors) do
		for stack = 0, 255 do
			 x.stackpos = stack
			 local item = getThingFromPos(x)
			 if (item.itemid == config.closedID and param == "open") then
				doTransformItem(item.uid, config.openID)
                elseif (item.itemid == config.openID and param == "close") then
				doTransformItem(item.uid, config.closedID)
			 end
		end
		end
end
return true
end

 

Dá no mesmo, não?

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

  • 0

Tem erro sim pq soh vai funcionar quando falar open n vai dar pra fexar (se funcionar tem que testar)

 

Eu fiz da forma que ta la pra ficar mais organizado...

 

E nao consigui oq seria "mais facil" de configurar ai na ediçao que voce fez, ja que o script ele soh tem que configurar a table doors...

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

  • 0

E nao consigui oq seria "mais facil" de configurar ai na ediçao que voce fez, ja que o script ele soh tem que configurar a table doors...

 

O meu se estivesse funcionando seria só mudar fromPos e toPos e o script procuraria todas as portas e trocaria elas.

No caso da table doors teria que adicionar 27 portas. O entendimento do seu script é bem mais fácil. Mas colocar 27 portas e mais tenso que duas posicoes. Anyways, nao to querendo competir nem nada ._. [ironic]Afinal, todos sabemos que voce nao sabe nada de scripting e perderia muito feio.[/ironic]

Link para o comentário
Compartilhar em outros sites

  • 0

http://youtu.be/OrJwbBkh40E




Ai galera não sei que e ;s ajuda ai. que tiver net boa coloca 720 p ;)
nem, um script deu certo.
MatheusMkalo e nem Byerne enem Jhon992 ;s

Obs:As cordernas estão certas das 2 primeiras portas.



E nao consigui oq seria "mais facil" de configurar ai na ediçao que voce fez, ja que o script ele soh tem que configurar a table doors...


O meu se estivesse funcionando seria só mudar fromPos e toPos e o script procuraria todas as portas e trocaria elas.
No caso da table doors teria que adicionar 27 portas. O entendimento do seu script é bem mais fácil. Mas colocar 27 portas e mais tenso que duas posicoes. Anyways, nao to querendo competir nem nada ._. [ironic]Afinal, todos sabemos que voce nao sabe nada de scripting e perderia muito feio.[/ironic]
Bom realmente e verdade seria mais fácil ;/. Editado por godleandro
Link para o comentário
Compartilhar em outros sites

  • 0

Claro, que o meu nao funcionou, voce nao tem que botar !coliseum open;!coliseum close no XML, voce bota soh !coliseum, oq vem depois eh o parameter que eh configurado pelo script..

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

×
×
  • Criar Novo...