Ir para conteúdo

[Resolvido]


jpdiman

Posts Recomendados

Olha, a ideia é colocar um sistema de /go "cidade" e o player VIP, que estiver sem battle se teleporte para o lugar X, nessa ideia, juntei alguns scripts do fórum e fui usando a minha experiencia (que não é muita) e para minha surpresa, está dando um erro.

 

Alguem poderia me informar onde está o erro, e se o resto está certo ?

 

Obrigado.

 

Scripts no spoil abaixo :

 

<talkaction words="/go difujia" script="go difujia.lua" />

 

function onSay(cid,words,param)

local access = getPlayerAccess(cid)

pid=getPlayerGUID(cid), -- não mecha

config = {

bat="yes" --players precisam estar sem fight pra teleportar? ("yes" or "no").

}

 

if(config.bat == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then

doPlayerSendTextMessage(cid,22,"Você não pode teleportar durante uma batalha.")

return TRUE

end

 

if premiumdays < 0

local pos = {x=1051, y=1024, z=7}

doTeleportThing(cid,pos)

end

end

 

E o erro na hora de executar o server :

 

[23/11/2009 18:34:51] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/go difujia.lua)

[23/11/2009 18:34:51] data/talkactions/scripts/go difujia.lua:4: unexpected symbol near '='

Link para o comentário
Compartilhar em outros sites

Tenta este

 

function onSay(cid,words,param)
local access = getPlayerAccess(cid)
local pos = {x=1051, y=1024, z=7}
pid = getPlayerGUID(cid), -- não mecha

if getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then
doPlayerSendTextMessage(cid,22,"Você não pode teleportar durante uma batalha.")
else
if getCreaturePremiumDays(cid) => 1 then
doTeleportThing(cid,pos)
return TRUE
end
end
end

 

O script não foi testado e eu diminui o tamanho do script.

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

Não garanto o funcionamento mas tenta ae:

 

function onSay(cid, words, param)

 

local config = {

pos = {x=10,y=10,z=10},

battle = "yes"

}

 

if config.battle == "yes" then

if getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then

doPlayerSendTextMessage(cid,22,"Você não pode teleportar durante uma batalha.")

else

doTeleportThing(cid, config.pos)

doSendMagicEffect(getCreaturePosition(cid),2)

end

elseif config.battle == "no" then

doTeleportThing(cid, config.pos)

doSendMagicEffect(getCreaturePosition(cid),2)

end

return TRUE

end

 

acho q funciona.

flw

Link para o comentário
Compartilhar em outros sites

@Up

 

Amigo, creio que não precise disse tudo, por isso a função do ELSE e você ainda esqueceu se o player for Premium Account... :positive:

 

Eu estou um bom tempo fora do mundo da OpenTibia e nao lembro todas as funções, mas creio que o meu Script esteja funcionando perfeitamente e é muito menor que o seu !!

 

Procure encurtar sempre os Scripts

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

eu não vou discutir... a questão de encurtamento do script depende da funcionalidade que ele oferece. seu script não funciona porque tem erros:

 

ERROR: untitled.lua:6: unexpected symbol near 'if'

 

O erro acima foi acusado pelo debugger de lua scripts próprio para open tibia que uso.

 

ps: jaja edito o post com a resolução para uso restrito à players premium account.

 

flw

 

 

edited: aqui está o restrito à players premium account:

 

function onSay(cid, words, param)

 

local config = {

battle = TRUE, -- aqui os valores admitidos são TRUE e FALSE

pa = getPlayerPremiumDays(cid),

pos = {x=10, y=10, z=10},

condition = getCreatureCondition(cid, CONDITION_INFIGHT)

}

 

if config.battle == FALSE then

if config.pa > 0 then

doTeleportThing(cid, config.pos)

doSendMagicEffect(getPlayerPosition(cid),2)

else

doPlayerSendTextMessage(cid,22,"Somente premium accounts podem usar este comando.")

end

 

elseif config.battle == TRUE then

if config.condition == FALSE then

if config.pa > 0 then

doTeleportThing(cid, config.pos)

doSendMagicEffect(getPlayerPosition(cid),2)

doPlayerSendTextMessage(cid,22, "Você foi teleportado.")

else

doPlayerSendTextMessage(cid,22,"Somente premium accounts podem usar este comando.")

end

else

doPlayerSendTextMessage(cid,22,"Você não pode teleportar durante uma batalha.")

end

end

return TRUE

end

 

Testa ae e fala se deu certo.

 

flw

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

EDIIIIIIIT :

 

OBRIGADOOO apocarai !! =D

 

Funcionou sim, tá bonitinho agora o script. DUHASUIDAS

 

Brigadao ae mano :)

 

E também vou agradecer ao Nottinghster que também se propos a me ajudar. OBRIGADO :]

 

Algum moderador pode fechar o tópico, problema resolvido :positive:

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

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