Ir para conteúdo

Featured Replies

Postado

Alguém poderia me ajudar com um script de entrega de donate?

 

Um script como o do servidor wodbo wars, q te entrega os pontos no meu caso o id do item é: 6527 ele entregar para um baú mesmo que o player esteja offline.  Vejam o print para entender melhor. Obg desde já.

 

http://prntscr.com/gp3d37

Screenshot_2.png

Resolvido por luangop

Ir para solução
  • Respostas 21
  • Visualizações 1.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @Chargustavin   Usa assim:     E para o baú:    

  • data/talkactions talkactions.xml <talkaction words="/entregar" log="yes" access="6" script="entregar.lua"/> data/talkactions/scripts entregar.lua data/actions actions.xml

  • Tem como colocar para ficar soltando effect xxx em cima do bau ?  Bom to com Problema    Quando Uso /Entregar  Aparece esse erro na distro http://prntscr.com/gqg75d

Posted Images

Postado

Simples, basta criar uma talk de force storage para setar o valor donate que o player tem a receber, e no bau uma action que checa se o player tem a storage, se tiver entrega os pontos.
Qual o tfs usado?

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

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

Postado
  • Autor
35 minutos atrás, luangop disse:

Simples, basta criar uma talk de force storage para setar o valor donate que o player tem a receber, e no bau uma action que checa se o player tem a storage, se tiver entrega os pontos.
Qual o tfs usado?

tfs 0.4 , tibia 8.6 base dbo rox v2

Postado
  • Solução

data/talkactions talkactions.xml

	<talkaction words="/entregar" log="yes" access="6" script="entregar.lua"/>  

data/talkactions/scripts entregar.lua

Spoiler

function onSay(cid, words, param, channel)
	local sto = 8445610 -- STORAGE USADO PELO SISTEMA
	local pontos = 2160 -- ID DOS PONTOS QUE O PLAYER VAI RECEBER
	local t = string.explode(param, ",")
	local effect = 506
	
	
	function forceSetStorage(name, key, value)
		if not tostring(name) or not tonumber(key) then return nil end
		local p = getPlayerByName(name)
		if p then
			setPlayerStorageValue(p, key, value)
		else
			local have = db.storeQuery("SELECT `key` FROM `player_storage` WHERE `player_id` = ".. getPlayerGUIDByName(name) .." and `key` = ".. key)
			if have then
				local atual = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id`= ".. getPlayerGUIDByName(name) .." and `key` = ".. key ..";")
				local temagr = atual:getDataString("value")
				db.executeQuery("UPDATE `player_storage` SET `value` = '".. temagr + value .."' WHERE `player_id` = '".. getPlayerGUIDByName(name) .."' AND `key` = ".. key)
			else
				local pid = getPlayerGUIDByName(name)
				db.executeQuery("INSERT INTO `player_storage` (`player_id` ,`key` ,`value`) VALUES ('".. pid .."', '".. key .."', '".. value .."');")
			end
		end
		return true
	end
	
	if param == "" or not t[2] then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite /entregar NICK, QUANTIA DE ".. getItemNameById(pontos) .."")
	end
	
	local player = getPlayerByNameWildcard(tostring(t[1]))
	local pos = getCreaturePosition(player)
	local quantia = tonumber(t[2])
	local file = io.open('data/logs/entregar-log.txt','a')
	file:write("Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. quantia .." ".. getItemNameById(pontos) .." entregues para '".. t[1] .."'\n")
	file:close()
	
	if not isPlayer(player) then
		forceSetStorage(t[1], sto, quantia)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. quantia .." ".. getItemNameById(pontos) .." entregues para '".. t[1] .."'")
		return true
	end
	
	local atual = getPlayerStorageValue(cid, sto)
	if atual <= 0 then
		tem = 0
	else
		tem = atual
	end
	
	setPlayerStorageValue(player, sto, quantia + tem)
	doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, "".. getPlayerName(cid) .." te entregou ".. quantia .." ".. getItemNameById(pontos) .."'s!\nVa ate o bau para receber.")
	doSendMagicEffect(pos, effect) 
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. quantia .." ".. getItemNameById(pontos) .." entregues para '".. t[1] .."'")
	return true
end

 


data/actions actions.xml

<action actionid="65470" event="script" value="BauDonate.lua"/>

*actionid="65470" <~~ Action do bau no map-editor.

 

data/actions/scripts BauDonate.lua

Spoiler

function onUse(cid, item, frompos, item2, topos)
	local sto = 8445610 -- STORAGE USADO PELO SISTEMA
	local pontos = 2160 -- ID DOS PONTOS QUE O PLAYER VAI RECEBER
	local delaySto = 8445611 -- STORAGE USADO PARA DAR DELAY NO BAU
	local status = getPlayerStorageValue(cid, sto)
	local statusDelay = getPlayerStorageValue(cid, delaySto)
	local delay = os.time() + 30 -- TEMPO DE DELAY PARA PODER ABRIR O BAU NOVAMENTE E EVITAR BUG
	
	if statusDelay <= os.time() then
		
		if status >= 1 then
			doPlayerAddItem(cid, pontos, sto)
			setPlayerStorageValue(cid, sto, 0)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce recebeu ".. sto .." ".. getItemNameById(pontos) .."'s!")
			local file = io.open('data/logs/entregue-log.txt','a')
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. sto .." ".. getItemNameById(pontos) .." recebido por '".. getCreatureName(cid) .."'")
			file:close()
			setPlayerStorageValue(cid, delaySto, delay)
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce nao tem ".. getItemNameById(pontos) .."'s para receber! Se fez alguma doacao, espere pela confirmacao do ADM.")
			setPlayerStorageValue(cid, delaySto, delay)
			return true
		end
		
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Espere ".. statusDelay - os.time() .." segundos para tentar abrir o bau novamente!")
		return true
	end
	
end

 

 

Observações:
O comando que criei pra vc armazena um log em data/logs com nome de entregar-log.txt com todos os detalhes dos pontos entregues.

A action do bau armazena um log em data/logs com nome de entregue-log.txt com todos os detalhes de quando alguem recebe os pontos no bau.

 

Qualquer dúvida e só avisar, mas como já deve ter percebido eu demoro um pouco a responder rsrs.

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

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

Postado
13 horas atrás, luangop disse:

data/talkactions talkactions.xml


	<talkaction words="/entregar" log="yes" access="6" script="entregar.lua"/>  

data/talkactions/scripts entregar.lua

  Ocultar conteúdo


function onSay(cid, words, param, channel)
	local sto = 8445610 -- STORAGE USADO PELO SISTEMA
	local pontos = 2160 -- ID DOS PONTOS QUE O PLAYER VAI RECEBER
	local t = string.explode(param, ",")
	local effect = 506
	
	
	function forceSetStorage(name, key, value)
		if not tostring(name) or not tonumber(key) then return nil end
		local p = getPlayerByName(name)
		if p then
			setPlayerStorageValue(p, key, value)
		else
			local have = db.storeQuery("SELECT `key` FROM `player_storage` WHERE `player_id` = ".. getPlayerGUIDByName(name) .." and `key` = ".. key)
			if have then
				local atual = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id`= ".. getPlayerGUIDByName(name) .." and `key` = ".. key ..";")
				local temagr = atual:getDataString("value")
				db.executeQuery("UPDATE `player_storage` SET `value` = '".. temagr + value .."' WHERE `player_id` = '".. getPlayerGUIDByName(name) .."' AND `key` = ".. key)
			else
				local pid = getPlayerGUIDByName(name)
				db.executeQuery("INSERT INTO `player_storage` (`player_id` ,`key` ,`value`) VALUES ('".. pid .."', '".. key .."', '".. value .."');")
			end
		end
		return true
	end
	
	if param == "" or not t[2] then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite /entregar NICK, QUANTIA DE ".. getItemNameById(pontos) .."")
	end
	
	local player = getPlayerByNameWildcard(tostring(t[1]))
	local pos = getCreaturePosition(player)
	local quantia = tonumber(t[2])
	local file = io.open('data/logs/entregar-log.txt','a')
	file:write("Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. quantia .." ".. getItemNameById(pontos) .." entregues para '".. t[1] .."'\n")
	file:close()
	
	if not isPlayer(player) then
		forceSetStorage(t[1], sto, quantia)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. quantia .." ".. getItemNameById(pontos) .." entregues para '".. t[1] .."'")
		return true
	end
	
	local atual = getPlayerStorageValue(cid, sto)
	if atual <= 0 then
		tem = 0
	else
		tem = atual
	end
	
	setPlayerStorageValue(player, sto, quantia + tem)
	doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, "".. getPlayerName(cid) .." te entregou ".. quantia .." ".. getItemNameById(pontos) .."'s!\nVa ate o bau para receber.")
	doSendMagicEffect(pos, effect) 
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. quantia .." ".. getItemNameById(pontos) .." entregues para '".. t[1] .."'")
	return true
end

 


data/actions actions.xml


<action actionid="65470" event="script" value="BauDonate.lua"/>

*actionid="65470" <~~ Action do bau no map-editor.

 

data/actions/scripts BauDonate.lua

  Ocultar conteúdo


function onUse(cid, item, frompos, item2, topos)
	local sto = 8445610 -- STORAGE USADO PELO SISTEMA
	local pontos = 2160 -- ID DOS PONTOS QUE O PLAYER VAI RECEBER
	local delaySto = 8445611 -- STORAGE USADO PARA DAR DELAY NO BAU
	local status = getPlayerStorageValue(cid, sto)
	local statusDelay = getPlayerStorageValue(cid, delaySto)
	local delay = os.time() + 30 -- TEMPO DE DELAY PARA PODER ABRIR O BAU NOVAMENTE E EVITAR BUG
	
	if statusDelay <= os.time() then
		
		if status >= 1 then
			doPlayerAddItem(cid, pontos, sto)
			setPlayerStorageValue(cid, sto, 0)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce recebeu ".. sto .." ".. getItemNameById(pontos) .."'s!")
			local file = io.open('data/logs/entregue-log.txt','a')
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. sto .." ".. getItemNameById(pontos) .." recebido por '".. getCreatureName(cid) .."'")
			file:close()
			setPlayerStorageValue(cid, delaySto, delay)
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce nao tem ".. getItemNameById(pontos) .."'s para receber! Se fez alguma doacao, espere pela confirmacao do ADM.")
			setPlayerStorageValue(cid, delaySto, delay)
			return true
		end
		
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Espere ".. statusDelay - os.time() .." segundos para tentar abrir o bau novamente!")
		return true
	end
	
end

 

 

Observações:
O comando que criei pra vc armazena um log em data/logs com nome de entregar-log.txt com todos os detalhes dos pontos entregues.

A action do bau armazena um log em data/logs com nome de entregue-log.txt com todos os detalhes de quando alguem recebe os pontos no bau.

 

Qualquer dúvida e só avisar, mas como já deve ter percebido eu demoro um pouco a responder rsrs.

Tem como colocar para ficar soltando effect xxx em cima do bau ? 

Bom to com Problema 

 

Quando Uso /Entregar 

Aparece esse erro na distro

http://prntscr.com/gqg75d

Desde cedo a mãe da gente fala assim: “Filho, por você jogar Tibia, você tem que ser duas vezes melhor.” Aí passado alguns anos eu pensei: Como fazer 2 vezes melhor, se você tá pelo menos 100 vezes atrasado pelos Nubs, pela história, pelos Items, pelas Guilds, pelos Reds… Por tudo que aconteceu? Duas vezes melhor como ? Ou melhora ou ser o melhor ou o pior de uma vez. E sempre foi assim. Você vai escolher o que tiver mais perto de você, o que tiver dentro da sua realidade. Você vai ser duas vezes melhor como? Quem inventou isso aí? Quem foi o pilantra que inventou isso aí ? Acorda pra vida rapaz.

 

YanLoco

 

Projetos: https://www.facebook.com/Dbo-Here-524519644549602/ 70%

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