Esse script se coloca em movements, o cara vai pisar no piso que voce colocar a ID do script e vai ser teleportado e ganhar o premio que voce coloco, no caso ali 100 crystal coin.
info
Grupo: Campones
Registrado: 02/04/13
Posts: 83
Reputação: +41

Presisa Registrar em alguma lugar???
Tem alguns erros, e algumas coisas desnecessárias.
mF7VUE2Z[/pastebin]
Primeira coisa, identação é de suma importância, adquira esse habito.
Bom, existem erros lógicos e de sintaxe.
1º erro lógico:
if getCreaturePosition(cid) == pos then
Positions são do tipo table, quando compara uma tabela com outra através do metametodo __eq(==) você está comparando seus endereços na memoria, e não seus valores.
o correto seria:
local p = getCreaturePosition(cid) if p.x == pos.x and p.y == pos.y and p.z == pos.z then
2º erro lógico:
doTeleportThing(cid,tele)
Lua é case-sensitivy, a variavel 'tele' não foi previamente declara, e sim 'Tele'. Lembre-se: "Lua diferencia maiusculas de minusculas"
Correção:
doTeleportThing(cid,Tele)
1º erro sintatico:
Na linha 10 tem um else perdido, não entendi bem o que tu queria fazer
else só podem ser usados dentro do bloco de um if ou elseif, e deve-se ter um end ao final do bloco desse else
if true then -- bloco if elseif false then -- bloco elseif else -- bloco else end --ou if true then -- bloco if else -- bloco do else end --ou if true then --bloco do if elseif false then -- bloco do elseif end
Obs.: o elseif pode ser repetido varias vezes, o if e o else não
onStepIn é um move event, voce coloca em movements ![]()
Editado Abril 13 por dalvorsn
Obrigado Por me corrigir davorsn Rep+ pra voce por me corrigir e ensinar '-'
@EDIT
Só nao entendi oque é identaçao '-'
E nessa parte nao intendi muito bem como funciona os codigos
local p = getCreaturePosition(cid) if p.x == pos.x and p.y == pos.y and p.z == pos.z then
Oque esta querendo dizer Voce ja ganho o rep+ só nao intendi éssa parte oque quer dizer esses codigos
'-'
Editado Abril 13 por 448055
info
Grupo: Visconde
Registrado: 12/09/10
Posts: 416
Reputação: +160
Char no Tibia: Draky Lucas

dlavorson.. sua correção até está certa mas o que vc falou sobre tabelas nao está..
para uma tabela ser igual a outra, basta terem TODOS os valores iguais.. (nenhum valor a mais ou a menos)
exemplo
{x = 10,y , 20,z = 30} == {x = 10,y , 20,z = 30} retorna verdadeiro porem
{x = 10,y , 20,z = 30} == {x = 10,y , 20} retorna falso...
o unico problema la em questão seria a stackpos ^^
dlavorson.. sua correção até está certa mas o que vc falou sobre tabelas nao está..
para uma tabela ser igual a outra, basta terem TODOS os valores iguais.. (nenhum valor a mais ou a menos)
exemplo
{x = 10,y , 20,z = 30} == {x = 10,y , 20,z = 30} retorna verdadeiro porem
{x = 10,y , 20,z = 30} == {x = 10,y , 20} retorna falso...
o unico problema la em questão seria a stackpos ^^
Tu ta viajando ...
Faz o seguinte, executa isso:
local newTable = {1,2,5,33}
print(newTable)
O que vai printar é um algo como: 'table: 0x000A3'
A variavel que guarda a tabela, não guarda os seus valores, e sim um endereço de memoria, e não seus valores. E a menos que você edite atraves da função setmetatable o metametodo __eq para fazer a comparação dos elementos da tabela, ela vai compara é os endereços, pois é isso que a variavel grava para tabelas
@EDIT
Só nao entendi oque é identaçao '-'
É esse espaçamento de tabulação que se dá no código, ele ajuda a definir onde iniciam e terminam os blocos, e deixa mais organizado.
Joga no google para mais detalhes
E nessa parte nao intendi muito bem como funciona os codigos
local p = getCreaturePosition(cid) if p.x == pos.x and p.y == pos.y and p.z == pos.z then
Oque esta querendo dizer Voce ja ganho o rep+ só nao intendi éssa parte oque quer dizer esses codigos
'-'
Bom, com oeu disse, position é uma tabela. Para acessa elementos de uma tabela você pode fazer das seguintes formas:
-- atraves da função rawget que não invoca metametodos rawget(table, index) -- atraves do metametodo __index -- forma padrão: table[index] -- sintax suggar table.index
Bom, como pode ver acima, ao usar p.x você acessa o index x da tabela p, e pos.x é a mesma coisa
Traduzindo o if a uma definição logica, seria mais ou menos assim:
"Se o index x da tabela p for igual ao index x da tabela pos e o index y da tabela p for igual ao index y da tabela pos e o index z da tabela p for igual ao index z da tabela pos então execute esse bloco:"
info
Grupo: Visconde
Registrado: 12/09/10
Posts: 416
Reputação: +160
Char no Tibia: Draky Lucas

verdade errei =/
fiz o teste aqui agora para confirmar..
local newTable = {1,2,5,33}
local twoTable = {1,2,5,33}
print(newTable == twoTable)
e retornou false..
desculpem-me =/
Olhem lah ve se Agora esta certo
Olhem lah ve se Agora esta certo
A parte de lua está corretissima, só faltou a indentação.
Só tem uma especificidade do tfs/opentibia que é quanto ao return aos callbacks, eles geralmente tem alguma função. No caso do onStepIn não notei nenhum, mas fique atento a outros principalmente as creature scripts
Entao se eu executar esse script no otserver vai pegar Eu acho '-' Presisa registrar ?? no Movements.xml ? Acho que sim '-' kk
Entao se eu executar esse script no otserver vai pegar Eu acho '-' Presisa registrar ?? no Movements.xml ? Acho que sim '-' kk
Sim precisa, e com type stepin, alem disso tem que usar um identificador que pode ser tanto uma posição, como um itemid, quanto um actionid ou uniqueid(acho que é só, preguiça de ver nas sources se tem mais >.<)
Ficou assim no Movements.xml
<!-- Piza Num pizo e ganha 1kk -->
<movevent type="StepIn" itemid="16592" event="script" value="bugue.lua"/>
eu ponhei o nome de bugue.lua '-' kk
Acho que é isso
Aewww Deu certoo '-' TY A todos




info
Grupo: Campones
Registrado: 15/02/13
Posts: 17
Reputação: +4
Aew Pessoal beleza Entao Vamos direto ao ponto hoje estou aki para pedir a ajuda de voces para corrigir meu script para ver se esta certo ou falta alguma coisa Tipo essas coisas como eu sou iniciante ainda estou produzindo scripts basicos para treinar e vo começar a postar alguns scripts aki para alguem ver ou me corrigir se fis alguma coisa de errado mais vamos ao que intereça vo postar o script aki e se tiver alguma coisa errada voces falam criticas aceito tudo '-'
function onStepIn(cid, item, frompos, item2, topos) local pos = {x=160, y=69, z=7} local Tele = {x=160, y=54, z=7} if getCreaturePosition(cid) == pos then doPlayerSendTextMessage(cid,22, "Voce Achou Um Bug Nao Fale Pra Ninguem") doPlayerAddItem(cid,2160,100) doTeleportThing(cid,tele) end else return true endagora uma duvida se estiver certo o script que fis ai aomde eu devo por ?? actions ?? creaturescripts qual local ?? éssa tbm é uma duvida ou dificuldade minha mais com o decorrer do tempo acho que ja vou ter pegado o jeito tai entao espero Comentarios Se possivel da 1 rep+ pelo esforço apenas se kiser '-' ninguem é obrigado a nada ;D
Nao é por nada mais acho que falto o Storage '-' mais eu nao usei pq quero que ele pegue quantas vezes quiser '-'
@EDIT
Sera que agora ta certo eu fis uma coisa diferente '-' Com o Exemplo de Dalvorsn
function onStepIn(cid, item, frompos, item2, topos) local p = getCreaturePosition(cid) local pos = {x=160, y=69, z=7} local Tele = {x=160, y=54, z=7} if p.x == pos.x and p.y == pos.y and p.z == pos.z then if getPlayerStorageValue(cid,16592) == -1 then doPlayerSendTextMessage(cid,22, "Voce Achou Um Bug Nao Fale Pra Ninguem") doPlayerAddItem(cid,2160,100) doTeleportThing(cid,Tele) setPlayerStorageValue(cid,16592,1) else doPlayerSendTextMessage(cid,22, " Voce Ja Pizou Uma ves") end else return true end endEditado Abril 13 por 448055