Ir para conteúdo
  • Cadastre-se

(Resolvido)[Action] Bau


Ir para solução Resolvido por MatteusDeli,

Posts Recomendados

Bom galera estou querendo uma action de um bau que ao clicar o player recebe um item que vai direto para o Dp(DePot).

 

                                                            Requisitos:

 

  • O player pode clicar no bau a cada X horas no dia (Storage).
  • Ao clicar no bau e receber o item, mande uma mensagem X (Configurável).
  • Ao clicar no bau aparece um effect X (Configurável).
  • Se o player clicar no bau e ele estiver antes de (X horas) ele não recebe o item, mas recebe uma mensagem X (Configurável).
  • Se o DP (Depot) do player não ter espaço ele não recebe o item, mas recebe uma mensagem X(Configurável).
  • Quando o bau resetar e o player ter permissão para pegar novamente mande uma mensagem X no Default do player.

 

 

 

Tentei explicar tudo certinho, se caso tiverem alguma duvida em questão do que aconteceria de o player tomasse tal ação comente por favor.

REP ++ pra quem me ajudar nesse enigma. hahaha xD

 

Link para o post
Compartilhar em outros sites
19 minutos atrás, ASSAFSAF disse:

Bom galera estou querendo uma action de um bau que ao clicar o player recebe um item que vai direto para o Dp(DePot).

 

                                                            Requisitos:

 

  • O player pode clicar no bau a cada X horas no dia (Storage).
  • Ao clicar no bau e receber o item, mande uma mensagem X (Configurável).
  • Ao clicar no bau aparece um effect X (Configurável).
  • Se o player clicar no bau e ele estiver antes de (X horas) ele não recebe o item, mas recebe uma mensagem X (Configurável).
  • Se o DP (Depot) do player não ter espaço ele não recebe o item, mas recebe uma mensagem X(Configurável).
  • Quando o bau resetar e o player ter permissão para pegar novamente mande uma mensagem X no Default do player.

 

 

 

Tentei explicar tudo certinho, se caso tiverem alguma duvida em questão do que aconteceria de o player tomasse tal ação comente por favor.

REP ++ pra quem me ajudar nesse enigma. hahaha xD

 

 

Bom dia, qual versão?

Link para o post
Compartilhar em outros sites
function onUse(cid, item, fromPosition, itemEx, toPosition)
local daysvalue = 1 * 60 * 60 -- 1 hora
storage = 928938923
local daily = getAccountStorageValue(getPlayerAccountId(cid), 13222423)




if getAccountStorageValue(getPlayerAccountId(cid), storage) <= os.time() then
		
			setAccountStorageValue(getPlayerAccountId(cid), storage, os.time() + daysvalue)
			local item = doPlayerSendMailByName(cid, 1990) -- 1990 = id item
				doItemSetAttribute(item, "description", " Premio Diario [FREE].")
				doItemSetAttribute(item, 'aid', 10032)
				doSendMagicEffect(getThingPos(cid), 29)
	else
		local left = getAccountStorageValue(getPlayerAccountId(cid), storage) - os.time()
		left = {hour = math.floor(left/3600), minutes = math.ceil((left % 3600)/60)}
		doPlayerSendCancel(cid, 'You have to wait '.. left.hour ..'h and '..left.minutes..'min [1 present per account].')
		doSendMagicEffect(getThingPos(cid), 2)
	end
return true
end

Qualquer coisa tenta o de baixo:

function onUse(cid, item, fromPosition, itemEx, toPosition)
local daysvalue = 1 * 60 * 60 -- 1 hora
storage = 928938923
local daily = getAccountStorageValue(getPlayerAccountId(cid), 13222423)




if getAccountStorageValue(getPlayerAccountId(cid), storage) <= os.time() then
		
			setAccountStorageValue(getPlayerAccountId(cid), storage, os.time() + daysvalue)
			local item = doPlayerAddDepotItems(cid, 1990, 0) -- 1990 = id item e 0 townid
				doItemSetAttribute(item, "description", " Premio Diario [FREE].")
				doItemSetAttribute(item, 'aid', 10032)
				doSendMagicEffect(getThingPos(cid), 29)
	else
		local left = getAccountStorageValue(getPlayerAccountId(cid), storage) - os.time()
		left = {hour = math.floor(left/3600), minutes = math.ceil((left % 3600)/60)}
		doPlayerSendCancel(cid, 'You have to wait '.. left.hour ..'h and '..left.minutes..'min [1 present per account].')
		doSendMagicEffect(getThingPos(cid), 2)
	end
return true
end

 

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

[Error - Action Interface]
data/actions/scripts/bautk.lua:onUse
Description:
data/actions/scripts/bautk.lua:4: attempt to call global 'getAccountStorageValue' (a nil value)
stack traceback:
        data/actions/scripts/bautk.lua:4: in function <data/actions/scripts/bautk.lua:1>

Link para o post
Compartilhar em outros sites

tente assim:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
local daysvalue = 1 * 60 * 60 -- 1 hora
storage = 928938923
local daily = getStorage(getPlayerAccount(cid), 13222423)

if getStorage(getPlayerAccount(cid), storage) <= os.time() then
		
			setAccountStorageValue(getPlayerAccount(cid), storage, os.time() + daysvalue)
			local item = doPlayerAddDepotItems(cid, 1990, 0) -- 1990 = id item e 0 townid
				doItemSetAttribute(item, "description", " Premio Diario [FREE].")
				doItemSetAttribute(item, 'aid', 10032)
				doSendMagicEffect(getThingPos(cid), 29)
	else
		local left = getStorage(getPlayerAccount(cid), storage) - os.time()
		left = {hour = math.floor(left/3600), minutes = math.ceil((left % 3600)/60)}
		doPlayerSendCancel(cid, 'You have to wait '.. left.hour ..'h and '..left.minutes..'min [1 present per account].')
		doSendMagicEffect(getThingPos(cid), 2)
	end
return true
end

ou

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
local daysvalue = 1 * 60 * 60 -- 1 hora
storage = 928938923
local daily = getAccountStorageValue(getPlayerAccount(cid), 13222423)




if getAccountStorageValue(getPlayerAccount(cid), storage) <= os.time() then
		
			setAccountStorageValue(getPlayerAccount(cid), storage, os.time() + daysvalue)
			local item = doPlayerAddDepotItems(cid, 1990, 0) -- 1990 = id item e 0 townid
				doItemSetAttribute(item, "description", " Premio Diario [FREE].")
				doItemSetAttribute(item, 'aid', 10032)
				doSendMagicEffect(getThingPos(cid), 29)
	else
		local left = getAccountStorageValue(getPlayerAccount(cid), storage) - os.time()
		left = {hour = math.floor(left/3600), minutes = math.ceil((left % 3600)/60)}
		doPlayerSendCancel(cid, 'You have to wait '.. left.hour ..'h and '..left.minutes..'min [1 present per account].')
		doSendMagicEffect(getThingPos(cid), 2)
	end
return true
end

 

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

O primeiro apareceu o seguinte erro:

 

[Error - Action Interface]
data/actions/scripts/bautk.lua:onUse
Description:
data/actions/scripts/bautk.lua:4: attempt to call global 'getAccountStorageValue' (a nil value)
stack traceback:
        data/actions/scripts/bautk.lua:4: in function <data/actions/scripts/bautk.lua:1>

 

 

o segundo: 

 

[Error - Action Interface]
data/actions/scripts/bautk.lua:onUse
Description:
data/actions/scripts/bautk.lua:4: attempt to call global 'getAccountStorageValue' (a nil value)
stack traceback:
        data/actions/scripts/bautk.lua:4: in function <data/actions/scripts/bautk.lua:1>

 

Link para o post
Compartilhar em outros sites

@ASSAFSAF.

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
local daysvalue = 1 * 60 * 60 -- 1 hora
storage = 928938923
local daily = getStorage(getPlayerAccount(cid), 13222423)

if getStorage(getPlayerAccount(cid), storage) <= os.time() then
		
			setAccountStorageValue(getPlayerAccount(cid), storage, os.time() + daysvalue)
			local item = doPlayerAddDepotItems(cid, 1990, 0) -- 1990 = id item e 0 townid
				doItemSetAttribute(item, "description", " Premio Diario [FREE].")
				doItemSetAttribute(item, 'aid', 10032)
				doSendMagicEffect(getThingPos(cid), 29)
	else
		local left = getStorage(getPlayerAccount(cid), storage) - os.time()
		left = {hour = math.floor(left/3600), minutes = math.ceil((left % 3600)/60)}
		doPlayerSendCancel(cid, 'You have to wait '.. left.hour ..'h and '..left.minutes..'min [1 present per account].')
		doSendMagicEffect(getThingPos(cid), 2)
	end
return true
end

mudei a função 'getAccountStorageValue' por getStorage.

Link para o post
Compartilhar em outros sites

@ikaroangelo21

 

[Error - Action Interface]
data/actions/scripts/bautk.lua:onUse
Description:
data/actions/scripts/bautk.lua:8: attempt to call global 'setAccountStorageValue' (a nil value)
stack traceback:
        data/actions/scripts/bautk.lua:8: in function <data/actions/scripts/bautk.lua:1>

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

@ASSAFSAF 

 

Veja se é assim que você quer:  

 

1 - data/scripts/actions crie um arquivo chamado questDaily.lua:

 

local storageBlock = 451112 -- Não alterar este Storage
local storage = 44541

local hour = 1 -- Tempo em horas que o player poderá pegar a recompensa novamente
local effectChest = 10 -- Efeito Bau
local itemRewardID = 2160 -- ItemID que será enviado para o depot
local count = 1 -- Quantidade do Item

local time = 60 * 60 * hour 

local messageSucess = "Voce recebeu uma recompensa do bau, ela foi enviada para o seu depot." -- mensagem que irá aparecer quando o player pegar a recompensa
local messageFail = "Voce tem que esperar para poder pegar a quest novamente." -- mensagem que irá aparecer quando o player já pegou a recompensa


function onUse(cid, item, fromPosition, itemEx, toPosition)

	local playerName = getCreatureName(cid)
	
	if (getPlayerStorageValue(cid, storage) - os.time() < storage) then

		local timeLeft = getPlayerStorageValue(cid, storage) - os.time()
		local time = {
			hour = math.floor(timeLeft/3600), 
			minutes = math.ceil((timeLeft % 3600)/60)
		}

		doPlayerSendCancel(cid, messageFail)
	end

		if (getPlayerStorageValue(cid, storage) <= os.time()) then

			doPlayerSendMailByName(playerName, doCreateItemEx(itemRewardID, count), getPlayerTown(cid))
			doSendMagicEffect(getThingPos(cid), effectChest)
			doPlayerSendCancel(cid,messageSucess)
			setPlayerStorageValue(cid, storage, os.time() + time)
			setPlayerStorageValue(cid, storageBlock, 1)
		end
	
end 

 

Agora vamos registrar a ActionID do baú que fará a action no arquivo actions.XML.

 

 

2 - Vá em data/actions e abra o arquivo actions.xml e cole esta tag:

 

<action actionid="9991" script="questDaily.lua"/>

 

Agora vamos configurar a mensagem que vai ser enviada para o player quando ele tiver a permissão de pegar a recompensa outra vez.

 

 

3 - Vá em data/creaturescripts/scripts, crie um arquivo lua chamado questDaily.lua:


local storage = 44541 -- Mesmo Storage que você colocou no Script do Bau (data/actions/scripts/dailyQuest.lua)
local storageBlock = 451112 -- Não alterar este Storage
local message = "Voce ja pode pegar a recompensa novamente." -- mensagem que será enviada quando o player tiver a permissao para pegar a recompensa novamente.

function onThink(cid, interval)

	if(not isCreature(cid)) then
		return
	end

	if (os.time() == getPlayerStorageValue(cid, storage) and getPlayerStorageValue(cid, storageBlock) >= 1) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, message)
		setPlayerStorageValue(cid, storageBlock, -1)
	end

	return true
end

 

Agora vamos registrar o evento no Creaturescripts.XML

 

 

4 - Vá em data/creaturescripts e abra o arquivo creaturescripts.xml e cole está linha:

<event type="think" name="questDaily" interval="10" event="script" value="questDaily.lua"/>

 

 

Agora vamos registrar o evento no Login.lua

 

 

5 - Vá em data/creaturescripts/login.lua e cole esta linha la dentro:

registerCreatureEvent(cid, "questDaily")

 

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