Ir para conteúdo

Featured Replies

Postado

Boa noite, tibianos. Eu comecei a mexer com Tibia recentemente, e eu resolvi fazer um script igual a um server de SAMP que eu jogava, no qual é o seguinte, quando a pessoa entra no servidor, o log de quem entrou e saiu no default chat está desativado, mas se ela digitar /toggleentrousaiu, ela irá ativar o log, e consequentemente, as pessoas que logarem dali pra diante, aparecerão no chat, e se a pessoa digitar /toggleentrousaiu novamente, ela irá desativar o log. E assim, criando um loop, se quiser ela habilita, se quiser ela desliga.

 

Mas acontece que eu criei um script desse baseado em storage, dessa maneira:

 

Spoiler

function onSay(cid, words, param)

local hasToggled = getPlayerStorageValue(cid, 50514) --Essa variável é atribuída se a pessoa estiver com o comando habilitado.                                                          As duas são desnecessárias,
local hasNotToggled = getPlayerStorageValue(cid, 50513) --Essa variável é atribuída se a pessoa estiver com o comando desabilitado.                                             mas eu achei bacana trazê-las.

    if(param == ' ') then
        if hasToggled == 1 then --Se estiver habilitado
            setPlayerStorageValue(cid, 50514, 0) --Tira o storage de habilitado
            setPlayerStorageValue(cid, 50513, 1) --Coloca o storage de desabilitado
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "O log de quem entrou e saiu foi desativado.")
            doSendMagicEffect(getCreaturePosition(cid), 39)
            return true
        end
        if hasNotToggled == 1 then   --Se estiver desabilitado
            setPlayerStorageValue(cid, 50513, 0) --Tira o storage de desabilitado
            setPlayerStorageValue(cid, 50514, 1) --Coloca o storage de habilitado
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_GREEN, "O log de quem entrou e saiu foi ativado.")
            doSendMagicEffect(getCreaturePosition(cid), 40)
            return true
        end
    return true
    else --Se o comando tiver param, exemplo (/toggleentrousaiu param1 param2 ou /toggleentrousaiu param1).
             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite apenas /toggleentrousaiu.")
             doSendMagicEffect(getCreaturePosition(cid), 2)
    return false;
    end
return false
end
        

 

Na classe login.lua eu coloquei o seguinte:

Spoiler

setPlayerStorageValue(cid, 50513, 1) -- Quando o player entrar, vai estar desabilitado.

 

Mas acontece que, depois de logar (desabilitado), se eu usar o /toggleentrousaiu, ele vai habilitar normalmente, mas se eu tentar desabilitar novamente, o Tibia fecha dando este erro:

 

58e56641b18f7_Semttulo.png.e185788fcec30a8354bb88ea70537bd2.png

 

E só acontece quando eu o executo novamente, sendo assim, creio eu, o erro por conta do script.

 

Eu gostaria de pedir que me ajudassem com isso, se possível remodelar o código de uma maneira que não crashe, e também, gostaria de saber como faço para fazer a questão do onLogin, ou seja, quando a pessoa entrar, mandar mensagem apenas para quem tem o storage 50514, e no logout também. Obrigado!!!! Rep+ pra quem souber xD

Postado

Cometeu alguns erros... mas está no caminho certo!
Não tem necessidade de usar duas storages para habilitar/desabilitar... teste a talkaction assim:
 

function onSay(cid, words, param)
	local stosys = 50514
	if(param == '') then
		if getPlayerStorageValue(cid, stosys) == 1 then -- Se estiver habilitado
			setPlayerStorageValue(cid, stosys, 0) -- Desabilita
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "O log de quem entrou e saiu foi desativado.")
			doSendMagicEffect(getCreaturePosition(cid), 39)
			return true
		end
		if getPlayerStorageValue(cid, stosys) <= 0 then -- Se estiver desabilitado
			setPlayerStorageValue(cid, stosys, 1) -- Habilita
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_GREEN, "O log de quem entrou e saiu foi ativado.")
			doSendMagicEffect(getCreaturePosition(cid), 40)
			return true
		end
	else -- Se o comando tiver param, exemplo (/toggleentrousaiu param1 param2 ou /toggleentrousaiu param1).
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite apenas /toggleentrousaiu.")
		doSendMagicEffect(getCreaturePosition(cid), 2)
		return false
	end
	return false
end

E no login.lua para quando logar ficar desabilitado use assim:
setPlayerStorageValue(cid, 50514, 0)

Editado por luangop
esqueci algo.. (veja o histórico de edições)

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Postado
  • Autor
Agora, luangop disse:

Cometeu alguns erros... mas está no caminho certo!
Não tem necessidade de usar duas storages para habilitar/desabilitar... teste a talkaction assim:
 


function onSay(cid, words, param)
	local stosys = 50514
	if(param == '') then
		if getPlayerStorageValue(cid, stosys) == 1 then -- Se estiver habilitado
			setPlayerStorageValue(cid, stosys, 0) -- Desabilita
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "O log de quem entrou e saiu foi desativado.")
			doSendMagicEffect(getCreaturePosition(cid), 39)
			return true
		end
		if getPlayerStorageValue(cid, stosys) <= 0 then -- Se estiver desabilitado
			setPlayerStorageValue(cid, stosys, 1) -- Habilita
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_GREEN, "O log de quem entrou e saiu foi ativado.")
			doSendMagicEffect(getCreaturePosition(cid), 40)
			return true
		end
	else -- Se o comando tiver param, exemplo (/toggleentrousaiu param1 param2 ou /toggleentrousaiu param1).
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite apenas /toggleentrousaiu.")
		doSendMagicEffect(getCreaturePosition(cid), 2)
		return false
	end
	return false
end

 

Muito obrigado, amigo! :D. E eu tive que remover o "MESSAGE_STATUS_CONSOLE_RED/GREEN/ORANGE", porque os mesmos estavam crashando meu Tibia xD.

E, você poderia me ajudar a como eu faço pra mandar mensagens no default de quem entrou e deslogou só pra quem tem "stosys == 1"? Muito obrigado novamente1

Postado
1 minuto atrás, SoyColombiaa disse:

Muito obrigado, amigo! :D. E eu tive que remover o "MESSAGE_STATUS_CONSOLE_RED/GREEN/ORANGE", porque os mesmos estavam crashando meu Tibia xD.

E, você poderia me ajudar a como eu faço pra mandar mensagens no default de quem entrou e deslogou só pra quem tem "stosys == 1"? Muito obrigado novamente1

Use MESSAGE_STATUS_CONSOLE_BLUE
Deve funcionar.... quanto ao sistema amanhã posso tentar te ajudar, pois preciso ir dormir já que acordo muito cedo.

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo