Postado Agosto 1, 2017 7 anos Autor 58 minutos atrás, Vodkart disse: No caso teria que remover o frag do server inteiro, isso não tem problema também... Mas acho que no casos seria legal dar todo domingo, toda semana, não uma vez por mês! eu já fiz um rank frags, no caso só pegar o 1° colocado(nick) e dar a premiação, direto pelo DP(pra caso estiver offline) Sim, exato. No caso eu queria no final do mês para ter o top frag mensal com premiação. Assim os players disputam quem faz mais frag ate o final do mês e assim recebendo um premio. @Vodkart teria como ajudar ?
Postado Agosto 1, 2017 7 anos Consegui arrumar um tempo para tentar fazer agora pela manhã, tenta assim: <globalevent name="TopFragger" interval="5" script="monthlyfragger.lua" /> function addItemToDepot(cid, item, count) local items = {item} local count = (count>1) and {count} or {1} for a,b in ipairs(items) do local pid = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..cid.." AND `itemtype` = 2589 ORDER BY `sid` DESC LIMIT 1"):getDataInt("sid") local sid = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..cid.." AND `itemtype` = 2594 AND `pid` = "..pid.." ORDER BY `sid`"):getDataInt("sid") local newsid = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..cid.." ORDER BY `sid` DESC LIMIT 1"):getDataInt("sid")+1 return db.executeQuery("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..cid..","..newsid..","..sid..","..b..","..count[a]..",'')") or false end end local hora = 22 -- pode ser de 0 (meia-noite) do último dia do mês até 24, que seria meia noite do primeiro dia do próximo mês function onThink(cid, interval) local gStorage = 56661 if(os.date("%m", os.time()+(3600 * 24-hora)) ~= os.date("%m") and os.time() >= getGlobalStorageValue(gStorage)) then local period = 86400 * 30 local fraggers = db.getResult("SELECT `p`.`id`, COUNT(*) `kills` FROM `player_killers` pk LEFT JOIN `killers` k ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` WHERE `k`.`unjustified` = 1 AND `pd`.`date` >= "..(os.time()-period).." GROUP BY `p`.`id` ORDER BY `kills` DESC") local fragrank = {} local reward = {2160, 1} -- id do item e quantidade if(fraggers:getID() ~= -1) then repeat table.insert(fragrank, {id=fraggers:getDataInt("id"), frags=fraggers:getDataInt("kills")}) until not fraggers:next() fraggers:free() end if(fragrank[1]) then local playeron = false local playercid = nil for _, pid in ipairs(getPlayersOnline()) do if getCreatureName(pid) == getPlayerNameByGUID(fragrank[1].id) then playeron = true playercid = pid end end if(playeron) then doPlayerAddItem(playercid, reward[1], reward[2]) doBroadcastMessage(getPlayerNameByGUID(fragrank[1].id).." foi o jogador com mais frags no mês.") setGlobalStorageValue(gStorage, os.time()+2590000) else if(addItemToDepot(fragrank[1].id, reward[1], reward[2]) ~= false) then doBroadcastMessage(getPlayerNameByGUID(fragrank[1].id).." foi o jogador com mais frags no mês.") setGlobalStorageValue(gStorage, os.time()+2590000) end end end end return true end Obs: Em vez de apagar os frags do servidor, estou levando em conta apenas os que aconteceram no último mês. Editado Agosto 1, 2017 7 anos por Rusherzin (veja o histórico de edições) Ajudei? De nada \o/ Att Rusherzin
Postado Agosto 3, 2017 7 anos @Rusherzin tem como fazer por semana ? uso otx @Rusherzin o ruim que o cara pode criar um char fake e ficar kilando ele divia ter um anti mc no script. ou ja tem ?
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.