Postado Outubro 8, 2022 2 anos Alguém poderia me ajudar com script pra online bônus, a a cada 30 horas completa o player ganha 1 item? Servidor OTX
Postado Outubro 18, 2022 2 anos 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.