Postado Dezembro 15, 2018 6 anos data/lib rst.lua rank_storages = {[1] = 789421,[2] = 789422,[3] = 789423,[4] = 789424,[5] = 789425} grank_stor = 10082 function deletePlayerStorage(name, id, storage) local target_online = getPlayerByNameWildcard(name) if not isPlayer(target_online) then local Query = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. id .." AND `key` = ".. storage) if (Query:getID() ~= -1) then db.executeQuery("DELETE FROM `player_storage` WHERE `player_id` = ".. id .." AND `key` = "..storage) db.executeQuery("UPDATE `players` SET `looktype` = "..(getPlayerdbSex(id) == 0 and 136 or 128).." WHERE `id` = "..id) end else setPlayerStorageValue(target_online, storage, -1) doCreatureChangeOutfit(target_online,{lookType = getPlayerSex(cid)== 0 and 136 or 128}) end end function doPlayerAddRankStorage(name, id, storage) local target_online = getPlayerByNameWildcard(name) if not isPlayer(target_online) then local Query = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. id .." AND `key` = ".. storage) if (Query:getID() ~= -1) then db.executeQuery("UPDATE `player_storage` SET `value` = 1 WHERE `player_id` = ".. id .." AND `key` = "..storage) else db.executeQuery("INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES (" .. id .. ", " .. storage .. ", 1);") end else setPlayerStorageValue(target_online, storage, 1) end end function getPlayerdbSex(id) return db.getResult("SELECT `sex` FROM `players` WHERE `id` = "..id):getDataInt("sex") end -- data/globalevents/scripts rts.lua function onTimer() local max, query = 5, db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..grank_stor.." ORDER BY cast(value as INTEGER) DESC;") local str = "TOP "..max.." Rank Task ATUALIZADA:\n\n" if (query:getID() ~= -1) then k = 1 repeat local old = 0 if query:getDataInt("value") > 0 then if getGlobalStorageValue(rank_storages[k]) ~= -1 then old = getGlobalStorageValue(rank_storages[k]) end local new = query:getDataInt("player_id") setGlobalStorageValue(rank_storages[k], new) doPlayerAddRankStorage(getPlayerNameByGUID(new), new, rank_storages[k]) if old > 0 and old ~= new then deletePlayerStorage(getPlayerNameByGUID(old), old, rank_storages[k]) end str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(new).." - [" .. query:getDataInt("value") .. "]" k = k + 1 end until k > max or not query:next() end doBroadcastMessage(str, 22) return true end TAG <globalevent name="rank storage" time="20:00" event="script" value="rts.lua"/> obs: todo dia as 20:00 horas vai ser mudado o rank, aconselho a colocar para atualizar o rank depois do serve save que é quando é atualizado os valores dentro da data base. -------------------------------------- COMO DAR OUTFITS DE ACORDO COM A STORAGE? na lib tem esses valores: rank_storages = {[1] = 789421,[2] = 789422,[3] = 789423,[4] = 789424,[5] = 789425} então o rank 1 tem a storage 789421, o rank 2 tem a storage 789422, etc... ai vc vai no outfits.xml e coloca assim mais ou menos: <outfit id="20" quest="789421"> <list gender="0" lookType="288" name="Demonhunter"/> <list gender="1" lookType="289" name="Demonhunter"/> </outfit> <outfit id="21" quest="789422"> <list gender="0" lookType="324" name="Yalaharian"/> <list gender="1" lookType="325" name="Yalaharian"/> </outfit> <outfit id="22" quest="789423"> <list gender="0" lookType="336" name="Warmaster"/> <list gender="1" lookType="335" name="Warmaster"/> </outfit> <outfit id="23" quest="789424"> <list gender="0" lookType="329" name="Wife"/> <list gender="1" lookType="328" name="Husband"/> </outfit> <outfit id="24" quest="789425"> <list gender="0" lookType="366" name="Wayfarer"/> <list gender="1" lookType="367" name="Wayfarer"/> </outfit> está vendo que eu coloquei essa parte: quest="789424"> o que estives dentro das "" é o valor das storages no meu caso o top rank 1 vai liberar a Demonhunter outfit. [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Dezembro 16, 2018 6 anos Autor @Vodkart bom primeiro em globalevents eu troquei o Ontimer por Ontime (no meu server só funcionar com ontime, otimer da error). fis tudo certo, mas quando o vai aparece a msg dos rank, aparece isso: Editado Dezembro 16, 2018 6 anos por BangxD (veja o histórico de edições)
Postado Dezembro 16, 2018 6 anos @BangxD @BangxD Só trocar essa linha: local max, query = 5, db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..grank_stor.." ORDER BY cast(value as INTEGER) DESC;") por essa: local max, query = 5, db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..grank_stor.." ORDER BY cast(value as SIGNED) DESC;") [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Dezembro 16, 2018 6 anos Autor @Vodkart desculpe ainda nao está funcionando Editado Dezembro 21, 2019 5 anos por BangxD (veja o histórico de edições)
Postado Dezembro 21, 2019 5 anos Autor Em 16/12/2018 em 11:51, Vodkart disse: @BangxD @BangxD Só trocar essa linha: local max, query = 5, db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..grank_stor.." ORDER BY cast(value as INTEGER) DESC;") por essa: local max, query = 5, db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..grank_stor.." ORDER BY cast(value as SIGNED) DESC;") Não está dando as storage pra as posiçao . 2, 3, 4, 5. elas são msm storage. só numero 1 que fica diferente. Editado Dezembro 21, 2019 5 anos por BangxD (veja o histórico de edições)
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.