Ir para conteúdo

Featured Replies

  • 2 weeks later...
Postado
Em 08/10/2022 em 06:32, vitinhoo96 disse:

Alguém poderia me ajudar com script pra online bônus, a a cada 30 horas completa o player ganha 1 item?

 

Servidor OTX

 tenho um script que funciona, porém eh necessário vc criar uma coluna na DB chamada "online_bonus", pq ele checa no máximo 4 por IP. O que acho valido pois a otservList só aceita 4 IP's validos, e não deixa que abram varios MC's no mesmo PC, isso meio que vai ajudar o servidor.

 

local reward = 2157  --id do item que vai dar
local quantidade = 1	-- quantidade de item (isso só serve pra item stackavel, se o item não for stackavel tipo armadura, não vai adiantar colocar numeros maiores)

function addOnlineBonus(cid, horas, bonus_contador, bonus_max)

   if not isPlayer(cid) then
		return false
   end  
   if getPlayerIp(cid) == 0 or not isCreature(cid) then
		return true
   end
	setPlayerStorageValue(cid, bonus_contador, getPlayerStorageValue(cid, bonus_contador) + 1)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Por completar uma hora online sem deslogar, você ganhou 1 Online Bônus. Total: ".. getPlayerStorageValue(cid,bonus_contador) .. ".")   
   if getPlayerStorageValue(cid, bonus_contador) >= bonus_max then
		doPlayerSendTextMessage(cid, 19, "Seus ".. bonus_max .." Online Bônus foram convertidos em 1 Premium Account!") 
		doPlayerAddItem(cid, reward, quantidade) 		-- ITEM QUE VAI DAR AO COMPLETAR A QUANTIDADE DE HORAS
		setPlayerStorageValue(cid, bonus_contador, 0)
   end	  
   addEvent(addOnlineBonus, horas * 3600 * 1000, cid, horas, bonus_contador, bonus_max)   
   
end

function onLogin(cid)
   registerCreatureEvent(cid, "onlinebonuslogout")
	local checkIP = getPlayerIp(cid)
	local players = {}
	
    for _, pid in pairs (getPlayersOnline()) do
		if getPlayerIp(pid) ==  checkIP then
			table.insert(players, pid)
		end
    end
	
	if #players < 5 then
		local func = db.query or db.executeQuery
		func('UPDATE players set online_bonus = 1 where id = '..getPlayerID(cid))
	end
	
	local result = db.getResult('SELECT `online_bonus` FROM `players` WHERE `id` = ' ..getPlayerID(cid))
	local online = 0
	if result:getID() ~= -1 then
		online = tonumber(result:getDataInt('online_bonus'))
		result:free()
	end
	
	if online == 0 then
		addEvent(function()
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "[Online Bonus]: Você já tem 4 chares logados com o mesmo IP, este não irá contar!")
			return true
		end, 1100)
	else
	   local bonus_contador = 72702 -- Storage que vai guardar quantos online bonus o char possui.
	   local horas = 1 -- Quantidade de horas o char precisa ficar logado pra receber cada online bonus. 
	   local bonus_max = 24 -- HORAS ONLINE Quantidade de bonus que o char precisa atingir para ganhar 1 dia de premium account, zerando o contador.
	   if getPlayerStorageValue(cid, bonus_contador) > 0 then
			doPlayerSendTextMessage(cid,22,"Você está com: " .. getPlayerStorageValue(cid,bonus_contador) .. " Online Bônus. Ao completar 24 você ganhará 1 premium points!")
	   else
			setPlayerStorageValue(cid, bonus_contador, 0)
			addEvent(function()
				doPlayerSendTextMessage(cid,19,"Você está com: 0 Online Bônus. Ao completar 24h online você ganhará 1 premium points!")
			end, 1000)
	   end
	   addEvent(addOnlineBonus, horas * 3600 * 1000, cid, horas, bonus_contador, bonus_max) 
	end

return true   
end

function onLogout(cid)

	local result = db.getResult('SELECT `online_bonus` FROM `players` WHERE `id` = ' ..getPlayerID(cid))
	local online = 0
	if result:getID() ~= -1 then
		online = tonumber(result:getDataInt('online_bonus'))
		result:free()
	end

	local func = db.query or db.executeQuery
	func('UPDATE players set online_bonus = 0 where id = '..getPlayerID(cid))


return true
end

 

adicionar as tags no creaturescripts.xml

 

  	<!-- Online Bonus -->
    <event type="login" name="onlinebonus" event="script" value="onlinebonus.lua"/>
	<event type="logout" name="onlinebonuslogout" event="script" value="onlinebonus.lua"/>


 

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo