Ir para conteúdo
  • Cadastre-se

(Resolvido)[Quest] Diaria Reset Storage


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

Olá pessoal queria fazer uma quest que seja possivel faze-la todo dia, mais vejam oque tem de errado em meus scripts

	<globalevent name="ResetQuest" time="00:00" event="script" value="cardstor.lua"/>
function onTime()
    local globalstor = 50041
    
    if getGlobalStorageValue(globalstor) > 0 then
        setGlobalStorageValue(globalstor, -1)
    end
    
    return true
end

E depois a action:

local config = {
effect = 52,
premiumdays = 1,
remove_on_use = "yes"
}
 
 
function onUse(cid, item, frompos, item2, topos)
doPlayerAddStamina(cid, (2520 - getPlayerStamina(cid)))
doSendMagicEffect(getThingPos(cid), config.effect)
doPlayerAddPremiumDays(cid, config.premiumdays)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
 
if config.remove_on_use == "yes" then
doRemoveItem(item.uid, 1)
end
return true
end

OBS: Eu registrei no actions.xml so nao axei necessario colocar aqui.

Link para o post
Compartilhar em outros sites

Olá pessoal queria fazer uma quest que seja possivel faze-la todo dia, mais vejam oque tem de errado em meus scripts

	<globalevent name="ResetQuest" time="00:00" event="script" value="cardstor.lua"/>
function onTime()
    local globalstor = 50041
    
    if getGlobalStorageValue(globalstor) > 0 then
        setGlobalStorageValue(globalstor, -1)
    end
    
    return true
end

E depois a action:

local config = {
effect = 52,
premiumdays = 1,
remove_on_use = "yes"
}
 
 
function onUse(cid, item, frompos, item2, topos)
doPlayerAddStamina(cid, (2520 - getPlayerStamina(cid)))
doSendMagicEffect(getThingPos(cid), config.effect)
doPlayerAddPremiumDays(cid, config.premiumdays)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
 
if config.remove_on_use == "yes" then
doRemoveItem(item.uid, 1)
end
return true
end

OBS: Eu registrei no actions.xml so nao axei necessario colocar aqui.

Cara eu não manjo muito, mais fiz uns testes aqui e pelo que parece GlobalStorage é como o nome diz mesmo é 1 GlobalStorage e não a storage de todos os players, tem até 1 table no SQL chamada GlobalStorage, ela serve para fazer eventos diarios por exemplo:

O global event checa se o GlobalStorage XXXX é maior que 0 e faz o teleport ai se tu quiser desligar o evento você muda o storage pra -1 que o evento não vai funcionar.

 

Agora se fosse fazer 1 quest utilizando GlobalStorage como você quer seria assim:

O player ia usar o item e a GlobalStorage XXXX ia mudar para 1, então ninguém mais ia conseguir fazer até o global event mudar o GlobalStorage XXXX para -1, porém ia ficar nisso e só 1 player iria poder fazer a quest por dia no caso...

Acho que é isso, sou iniciante então pode ter algo errado na minha informação!

 

To tentando fazer algum script de quest diaria também, se eu conseguir eu posto aqui pra tu.

Editado por Wakon (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local config = {
	premiumDays = 1,
	storageQuest = 9999,
	seconds = 86400, -- seconds de 1 dia.
}

function onUse(cid, item, frompos, item2, topos)
	
	if getPlayerStorageValue(cid, storageQuest) < os.time then
		setPlayerStorageValue(cid, storageQuest, os.time + config.seconds)
		doPlayerAddStamina(cid, (2520 - getPlayerStamina(cid)))
		doSendMagicEffect(getThingPos(cid), 52)
		doPlayerAddPremiumDays(cid, config.premiumDays)
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
	end
		
	return true
end
Link para o post
Compartilhar em outros sites
local config = {
	premiumDays = 1,
	storageQuest = 9999,
	seconds = 86400, -- seconds de 1 dia.
}

function onUse(cid, item, frompos, item2, topos)
	
	if getPlayerStorageValue(cid, storageQuest) < os.time then
		setPlayerStorageValue(cid, storageQuest, os.time + config.seconds)
		doPlayerAddStamina(cid, (2520 - getPlayerStamina(cid)))
		doSendMagicEffect(getThingPos(cid), 52)
		doPlayerAddPremiumDays(cid, config.premiumDays)
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
	end
		
	return true
end

 

To tentando usar esse script aqui, mais quando dou use no item aparece assim na distro:

laIRj3b.png

Achei que fosse eu fazendo cagada na hora de editar o script, mais testei o seu sem mexer nada e da isso também :S

Link para o post
Compartilhar em outros sites

nesta linha:

if getPlayerStorageValue(cid, storageQuest) < os.time then

muda o: storageQuest para config.storageQuest

Mesmo erro, tentei até mudar a storage pra variavel unica mais dá a mesma coisa :S

Link para o post
Compartilhar em outros sites
local config = {
	premiumDays = 1,
	storageQuest = 9999,
	secondsWait = 86400, -- seconds de 1 dia.
}

function onUse(cid, item, frompos, item2, topos)

	if (getPlayerStorageValue(cid, config.storageQuest) < os.time) then
		setPlayerStorageValue(cid, config.storageQuest, os.time + config.secondsWait)
		doPlayerAddStamina(cid, (2520 - getPlayerStamina(cid)))
		doSendMagicEffect(getThingPos(cid), 52)
		doPlayerAddPremiumDays(cid, config.premiumDays)
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
	end

	return true
end
Link para o post
Compartilhar em outros sites
local config = {
	premiumDays = 1,
	storageQuest = 9999,
	secondsWait = 86400, -- seconds de 1 dia.
}

function onUse(cid, item, frompos, item2, topos)

	if getPlayerStorageValue(cid, config.storageQuest) < os.time then
		setPlayerStorageValue(cid, config.storageQuest, os.time + config.secondsWait)
		doPlayerAddStamina(cid, (2520 - getPlayerStamina(cid)))
		doSendMagicEffect(getThingPos(cid), 52)
		doPlayerAddPremiumDays(cid, config.premiumDays)
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
	end

	return true
end

Mesmo erro, igualzinho :S

Link para o post
Compartilhar em outros sites

Editei acima, tentea novamente, se der erro me manda o erro.

Deu o mesmo erro lá de cima!

 

Depois de testar de novo eu coloquei assim:

local config = {
premiumDays = 1,
storageQuest = 10135,
secondsWait = 86400, -- seconds de 1 dia.
}


function onUse(cid, item, frompos, item2, topos)


if (getPlayerStorageValue(cid, config.storagequest) < os.time(t)) then
setPlayerStorageValue(cid, config.storageQuest, os.time(t) + config.secondsWait)
doPlayerAddStamina(cid, (2520 - getPlayerStamina(cid)))
doSendMagicEffect(getThingPos(cid), 52)
doPlayerAddPremiumDays(cid, config.premiumDays)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
doRemoveItem(item.uid, 1)
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
end


return true
end

Ai apareceu outro erro:

UIUyjJC.png

 

@Edit, fui olhar no lib e não tem a função doPlayerAddStamina, pode ser isso, poderia me passar?

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

trocar por doPlayerSetStamina

Agora funcionou sem nenhum erro, porém eu posso ficar usando o item toda hora.

 

@Edit e minha stamina fica em 0:00

Editado por Wakon (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local config = {
	premiumDays = 1,
	storageQuest = 9999,
	timeWait = 86400, -- tempo em horas.
	staminaRefuel = 3, -- tempo que irá recuperar em horas 
}

function onUse(cid, item, frompos, item2, topos)

	if (getPlayerStorageValue(cid, config.storageQuest) < os.time) then
		setPlayerStorageValue(cid, config.storageQuest, os.time + (config.timeWait * 24 * 60 * 60))
		doPlayerSetStamina(cid, (getPlayerStamina(cid)) + (config.staminaRefuel * 60 * 60))
		doSendMagicEffect(getThingPos(cid), 52)
		doPlayerAddPremiumDays(cid, config.premiumDays)
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
	end

	return true
end
Link para o post
Compartilhar em outros sites
local config = {
	premiumDays = 1,
	storageQuest = 9999,
	timeWait = 86400, -- tempo em horas.
	staminaRefuel = 3, -- tempo que irá recuperar em horas 
}

function onUse(cid, item, frompos, item2, topos)

	if (getPlayerStorageValue(cid, config.storageQuest) < os.time) then
		setPlayerStorageValue(cid, config.storageQuest, os.time + (config.timeWait * 24 * 60 * 60))
		doPlayerSetStamina(cid, (getPlayerStamina(cid)) + (config.staminaRefuel * 60 * 60))
		doSendMagicEffect(getThingPos(cid), 52)
		doPlayerAddPremiumDays(cid, config.premiumDays)
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
	end

	return true
end

Voltou ao primeiro bug lá de "Attempt to compare number with function".

Ai quando eu adiciono 1 (t) na frente do os.time ele funciona porém dá aquele problema de ficar usando o item toda hora.

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

tente assim:

 

local config = {
    premiumDays = 1,
    storageQuest = 9999,
    timeWait = 1, -- tempo em dias.
    staminaRefuel = 3, -- tempo que irá recuperar em horas
}

function onUse(cid, item, frompos, item2, topos)

    if (getPlayerStorageValue(cid, config.storageQuest) < os.time()) then
        setPlayerStorageValue(cid, config.storageQuest, os.time() + (config.timeWait * 24 * 60 * 60 * 1000))
        doPlayerSetStamina(cid, (getPlayerStamina(cid)) + (config.staminaRefuel * 60 * 60))
        doSendMagicEffect(getThingPos(cid), 52)
        doPlayerAddPremiumDays(cid, config.premiumDays)
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
        doRemoveItem(item.uid, 1)
    else
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
    end

    return true
end

 

Boa sorte,

caso não dê bolo um script pra você aqui.

 

Abraços.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

tente assim:

local config = {
    premiumDays = 1,
    storageQuest = 9999,
    timeWait = 1, -- tempo em dias.
    staminaRefuel = 3, -- tempo que irá recuperar em horas
}

function onUse(cid, item, frompos, item2, topos)

    if (getPlayerStorageValue(cid, config.storageQuest) < os.time()) then
        setPlayerStorageValue(cid, config.storageQuest, os.time() + (config.timeWait * 24 * 60 * 60 * 1000))
        doPlayerSetStamina(cid, (getPlayerStamina(cid)) + (config.staminaRefuel * 60 * 60))
        doSendMagicEffect(getThingPos(cid), 52)
        doPlayerAddPremiumDays(cid, config.premiumDays)
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber um dia de GOLD CARD.")
        doRemoveItem(item.uid, 1)
    else
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
    end

    return true
end

Boa sorte,

caso não dê bolo um script pra você aqui.

 

Abraços.

Aee, funcionou, depois que eu reparei no seu script fui no do luan e adicionei 1 () na frente dos os.time e também funcionou, acho que era isso o problema e eu ficava tentando adicionar (t) e nunca tentei sem o t no meio ;/, valeu mesmo !!

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

Que bom que funcionou, foi um pouco de desatenção do Luan, mas o crédito é todo dele, pois como disse, apenas reparei no erro simples do ótimo script dele.

 

Faça bom aproveito.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Voltou ao primeiro bug lá de "Attempt to compare number with function".

Ai quando eu adiciono 1 (t) na frente do os.time ele funciona porém dá aquele problema de ficar usando o item toda hora.

Teria como fazer ela da exp?

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Teria como fazer ela da exp?

Ai modifiquei o script que o Adriano fez, testa ai!

local config = {
    expr = 50000, -- Exp que vai ganhar!
    storageQuest = 9999,
    timeWait = 1, -- tempo em dias.
    staminaRefuel = 3, -- tempo que irá recuperar em horas
}


function onUse(cid, item, frompos, item2, topos)


    if (getPlayerStorageValue(cid, config.storageQuest) < os.time()) then
        setPlayerStorageValue(cid, config.storageQuest, os.time() + (config.timeWait * 24 * 60 * 60 * 1000))
        doPlayerSetStamina(cid, (getPlayerStamina(cid)) + (config.staminaRefuel * 60 * 60))
        doSendMagicEffect(getThingPos(cid), 52)
        doPlayerAddExp(cid, config.expr)
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabens! Voce acabou de receber "..config.expr.." de experiencia.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ainda nao pode usar.")
    end


    return true
end
Link para o post
Compartilhar em outros sites

Vlw vou testar

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

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