Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Arrumar meu script


Ir para solução Resolvido por Sekk,

Posts Recomendados

Bom gente, sei que existem vários scripts disso, mas como estou tentando entender a linguagem LUA, estou tentando criar o script, com o que eu já observei nos fórums, e que foi gravado na minha memória ^^.

 

Bom, o script é pra checar se o player tem X storage, se ele tiver, ele pode passar pelo tile com a actionID Y, se não tiver a storage, ele é teleportado para a "fromposition"..

 

Ai vai o script:

function onStepIn(cid, item, position, fromposition)
local storage = 18597
 
if getPlayerStorageValue(cid) <= 0 then
doSendPlayerCancel(cid, "You/'re not a VIP player.")
doTeleportThing(cid, fromposition)
doSendMagicEffect(position, 13)
else
getPlayerStorageValue(cid) == getStorageValue(storage) then
doSendTextMessage(cid, "Welcome to the VIP Area!", 27)
doSendMagicEffect(position, 14)
    end
return true
end

EDIT:

 

Quando abro o server, acontece isso:

xK0JPz.png

Editado por jvcasarin (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

jvcasarin, o else não exige then, pelo fato dele precisar somente que a condição em que ele está, seja falsa.

Ele é diferente do elseif, que adiciona uma outra condição ao if, é bem parecido com o switch e case do c++.

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Você esqueceu de uma coisinha aqui nessa parte :

if getPlayerStorageValue(cid) <= 0 then

que no caso seria assim :

if getPlayerStorageValue(cid, storage) <= 0 then

e você pode remover isso :

getPlayerStorageValue(cid) == getStorageValue(storage) then

haha, seja bem vindo ao mundo dos scripters.

Editado por HallsSantos (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

E qual seria o problema com seu script?

 

Esse é o erro KKKKKKKKKKK

xK0JPz.png

 

 

 

jvcasarin, o else não exige then, pelo fato dele precisar somente que a condição em que ele está, seja falsa.

Ele é diferente do elseif, que adiciona uma outra condição ao if, é bem parecido com o switch e case do c++.

 

Obrigado cara, mas então a linha

getPlayerStorageValue(cid) == getStorageValue(storage) then

 

 

Não precisa do "then" ?

 

 

Você esqueceu de uma coisinha aqui nessa parte :

if getPlayerStorageValue(cid) <= 0 then

que no caso seria assim :

if getPlayerStorageValue(cid, storage) <= 0 then

e você pode remover isso :

getPlayerStorageValue(cid) == getStorageValue(storage) then

haha, seja bem vindo ao mundo dos scripters.

 

 

Obrigado cara! Mas essa linha que você disse que pode remover, não serve pra checar se a storage realmente existe no char?

Link para o post
Compartilhar em outros sites

Obrigado cara! Mas essa linha que você disse que pode remover, não serve pra checar se a storage realmente existe no char?

É que tipo: o else faz parte do if. Então se o valor da storage for <(menor) ou =(igual) a 0, será executado os códigos logo abaixo do if :

doSendPlayerCancel(cid, "You/'re not a VIP player.")
doTeleportThing(cid, fromposition)
doSendMagicEffect(position, 13)

mas se o valor da storage for >(maior) que 0, o código a cima será ignorado e então o será executado os códigos depois do else :

doSendTextMessage(cid, "Welcome to the VIP Area!", 27)
doSendMagicEffect(position, 14)

Tendeu? rs, no começo é meio chato de decorar mas você vai ver muito isso pela frente então vai se acostumar :) boa noite!

Link para o post
Compartilhar em outros sites

hmm.... entendi mais ou menos agr uehueheuhe vlw :)

de nada!

modifiquei seu script aqui caso você queira :

function onStepIn(cid, item, position, fromPosition)
    local storage = 18597
    if getPlayerStorageValue(cid, storage) <= 0 then
        doPlayerSendCancel(cid, "You/'re not a VIP player.")
        doTeleportThing(cid, fromPosition)
        doSendMagicEffect(position, 13)
    else
        doPlayerSendTextMessage(cid, "Welcome to the VIP Area!", 27)
        doSendMagicEffect(position, 14)
    end
    return true
end
Link para o post
Compartilhar em outros sites

 

de nada!

modifiquei seu script aqui caso você queira :

function onStepIn(cid, item, position, fromPosition)
    local storage = 18597
    if getPlayerStorageValue(cid, storage) <= 0 then
        doPlayerSendCancel(cid, "You/'re not a VIP player.")
        doTeleportThing(cid, fromPosition)
        doSendMagicEffect(position, 13)
    else
        doPlayerSendTextMessage(cid, "Welcome to the VIP Area!", 27)
        doSendMagicEffect(position, 14)
    end
    return true
end

 

Eu tinha atualizado o tópico, colocando uma foto do erro que acontece, e mesmo com o script seu modificado, acontece aquilo...

Link para o post
Compartilhar em outros sites

Eu tinha atualizado o tópico, colocando uma foto do erro que acontece, e mesmo com o script seu modificado, acontece aquilo...

acontece isso se você remover a TAG no talkactions.xml desse teu script?

Link para o post
Compartilhar em outros sites
  • Solução

acontece isso se você remover a TAG no talkactions.xml desse teu script?

 

Se eu retiro a tag desse script do movements.xml não acontece o erro nem nada, o server abre normal.

RESOLVIDO!

 

O ERRO ESTAVA NA TAG! Na parte de informar o "value" eu escrevi "valur"

 

Mas eu usei o script assim:

function onStepIn(cid, item, position, fromPosition)
local storage = 18597
 
if getPlayerStorageValue(cid, storage) <= 0 then
doPlayerSendCancel(cid, "You're not a VIP player.")
doTeleportThing(cid, fromPosition)
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
return true
else
doPlayerSendTextMessage(cid, "Welcome to the VIP Area!")
doSendMagicEffect(getThingPos(cid), 14)
end
return true
end

Mas alguém pode me dizer o por que de eu ter usado o return true?

Editado por jvcasarin (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Se eu retiro a tag desse script do movements.xml não acontece o erro nem nada, o server abre normal.

RESOLVIDO!

 

O ERRO ESTAVA NA TAG! Na parte de informar o "value" eu escrevi "valur"

 

Mas eu usei o script assim:

function onStepIn(cid, item, position, fromPosition)
local storage = 18597
 
if getPlayerStorageValue(cid, storage) <= 0 then
doPlayerSendCancel(cid, "You're not a VIP player.")
doTeleportThing(cid, fromPosition)
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
return true
else
doPlayerSendTextMessage(cid, "Welcome to the VIP Area!")
doSendMagicEffect(getThingPos(cid), 14)
end
return true
end

Mas alguém pode me dizer o por que de eu ter usado o return true?

o return serve para retornar um valor a partir daquela parte do script.

Link para o post
Compartilhar em outros sites

n consigo entender uheueheu

husahusa to ligado, eu também tive dificuldade com return.

dá uma olhada nesse TÓPICO.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo