Ir para conteúdo

Script >> Movements


alex008

Posts Recomendados

to fazendo um mapa, e to usando aquela escada em espiral, e descobri q meu mapeamento nao tava compatindo com as posições da escada. ou seja quando sobe ou dece ele entra na parede :/ , to fazendo esse script pra fazer com q nao saia no lugar errado!!!

 

O que q eu to fazendo errado?

 

 

function onStepIn(cid, item, position, fromPosition)

fromPosition.z = fromPosition.z + 1

parameters = {cid = cid, fromPosition = fromPosition}

addEvent(talk, 2000, parameters)

end

 

 

function talk(parameters)

doTeleportThing(parameters.fromPosition)

 

end

 

 

Mensagem de error:

Lua Script Error: [MoveEvents Interface]
in a timer event called from:
data/movements/scripts/escada.lua:onStepIn

luaDoTeleportThing(). Thing not found

Link para o comentário
Compartilhar em outros sites

Correto!!

 

deu certo porem nao era o q eu queria.

era pra pegar a posição dele depois q ele estiver em cima da escada, se souber como fazer me avisa aí ;]

 

exemplo explicativo:

2cd8w45.jpg

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

Correto!!

 

deu certo porem nao era o q eu queria.

era pra pegar a posição dele depois q ele estiver em cima da escada, se souber como fazer me avisa aí ;]

 

exemplo explicativo:

2cd8w45.jpg

 

 

Alex , Desculpa , Mais axo que isso ai na img que vc mostrou é Impossivel , Porque quand oele decer nao sera a dereção que ir que vai faser onde ele sai , e sim o sqm da decida , ex : vc dece ali de boae passa em cima dakele SQM , ai vai tar programado pra te mandar -1 andar para baixo e assim visse verça , intaum vc pode só excolher 1 lado pra ele decer e nao varios , bom , é isos qeu axo , Vlw ai. qualquer coisa , Me CORRIJEM

Link para o comentário
Compartilhar em outros sites

Primeiro veja se a posição da escada abaixo está na mesma posição X e Y do buraco.

 

Caso esteja, olhe o que você tem:

 

fromPosition.z = fromPosition.z + 1

 

Mas não tem outra função de mudar o X ou Y.

 

Então, tente isso:

 

fromPosition.x = fromPosition.x + 1
fromPosition.y = fromPosition.y + 1

 

Não sei se vai funcionar =/

Link para o comentário
Compartilhar em outros sites

nada disse ta me ajudando, vou postar outra ideia

 

tipo se pudesse usar IF

 

exemplo:

 

if (se estiver acima do buraco da escada) == 1 then

fromPosition.z = fromPosition.z + 1

fromPosition.y = fromPosition.y + 1 ----- isso faria com q ele caisse em cima da escada se estivesse acima do buraco

doTeleportThing(parameters.fromPosition)

 

elseif (se estiver a direita do buraco da escada) == 1 then

fromPosition.z = fromPosition.z + 1

fromPosition.x = fromPosition.x + 1

doTeleportThing(parameters.fromPosition)

 

 

 

e assim para as outras posições ;]

se alguem puder me ajuda aí

Link para o comentário
Compartilhar em outros sites

getPlayerLookDir(cid)

 

NORTH = 0

EAST = 1

SOUTH = 2

WEST = 3

 

Norte = 0

Leste = 1

Sul = 2

Oeste = 4

 

Eu acho =X, não sei inglês...

 

function onStepIn(cid, item, position, fromPosition)
playerdir = getPlayerLookDir(cid)
fromPosition.z = fromPosition.z + 1
if playerdir = 2 then
fromPosition.y = fromPosition.y + 1
elseif playerdir = 4 then
fromPosition.x = fromPosition.x + 1
elseif playerdir = 0 then
fromPosition.y = fromPosition.y - 1
elseif playerdir = 1 then
fromPosition.x = fromPosition.x - 1
end
parameters = {cid = cid, fromPosition = fromPosition}
addEvent(talk, 2000, parameters)
end


function talk(parameters)
doTeleportThing(parameters.fromPosition)

end

 

Ve se funfa...

 

;D

Link para o comentário
Compartilhar em outros sites

error

 

Warning: [Event::loadScript] Can not load script. data/movements/scripts/escada.
lua
data/movements/scripts/escada.lua:4: 'then' expected near '='

 

 

 

AEW galera deixa pra la, axu melhor eu deixa como tava a escada e ir mudar no meu map msm.

 

vlw aí pra quem tentou me ajudar

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

as comparações com IF devem ser seguidas de dois sinais comparativos:

 

== igual a

<= menor ou igual a

>= maior ou igual a

<> diferente de

 

troque todos os if xxxxxx = y then por

if xxxxxxx == y then

Link para o comentário
Compartilhar em outros sites

Senhor brainless, tem um tutorial de for e do pra mim aí? *-*

 

Tenho muitos scripts aqui, mas estão gigantes, usando for e do diminuiria e muito meus scripts, tem como me ensinar? Nem que seja por PM/MSN \o/

Link para o comentário
Compartilhar em outros sites

sinto um tom de ironia na sua msg =P

 

e abra um tpc pra sua dúvida =P[2]

 

for

 

sintaxe for variável = valor inicial, valor final do

{...}

end

 

traduzindo:

 

para cada variável = valor inicial, valor final faça

{...}

próximo/fim

 

assim que o for encontra um end, adiciona automaticamente +1 à variável

 

 

na prática:

 

for a = 1, 3 do

"oi xtibia"

end

 

saída:

"oi xtibia

oi xtibia

oi xtibia"

 

para cada a = iniciando em 1, terminando em 3 faça

"oi xtibia"

fim

 

é mais utilizado quando se precisa encher uma bp ou bag de items

local backpack = doPlayerAddItem(cid, 1998, 1)

for a = 1, 20 do

doAddContainerItem(backpack, itemID, itemCount, itemCharges)

end

 

o comando acima seria executado 20 vezes, adicionando 20 vezes o mesmo item à backpack

 

o valor da variável também pode ser utilizado dentro da subrotina for quando estivermos trabalhando com índices(arrays)

 

local items = {2463, 2465, 2466}
local backpack = doPlayerAddItem(cid, 1998, 1)
for a = 1, 3
doAddContainerItem(backpack, items[a], 1)
end

 

o código acima adiciona uma plate armour, brass armour e golden armour à uma backpack que será entregue ao player

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...