Tipologie server: PvM-PvP
*Resursă folosită:-sursa/dungeon-info-full-t82215.html
*ServerFiles utilizat:
*Syserr:
*quest
-- [[ Data Dungeon Lister Library initialize] ]
dungeonListerData = {};
dungeonListerData.ReturnData = function()
if (dungeonListerData.data == nil) then
dungeonListerData.data = {
{
["type"] = 2, -- astea nu te int
["organization"] = 0, -- astea nu te int
["level_limit"] = 75, -- nivel limita
["party_members"] = 8, -- cati membri de grupa
["map"] = 66, -- map index
["map_coords"] = {5906, 1108}, -- coordonate de teleportare
["cooldown"] = 60, -- cat ai de asteptat dupa ce termini ( 60 inseamna 1 munut 600 1 h si asa mai departe )
["duration"] = 60, -- cat ai la dispozitie ( 60 inseamna 1 munut 600 1 h si asa mai departe )
["entrance_map"] = "Templu Hwang", -- mapa de unde intri in dungeon ( pui tu nume )
["strength_bonus"] = "Vampiri", -- bonsu de atac impotriva (pui tu nume)
["resistance_bonus"] = "Sageti", -- bonsu de rezistenta impotriva (pui tu nume)
["item_vnum"] = 0, -- cod la item cu care intri
["mapName"] = "Turnul Demonilor" -- numele dungeon-ului
},
{
["type"] = 2,
["organization"] = 0,
["level_limit"] = 75,
["party_members"] = 8,
["map"] = 216,
["map_coords"] = {5921, 1004},
["cooldown"] = 30,
["duration"] = 30,
["entrance_map"] = "Templu Hwang",
["strength_bonus"] = "Intunericului",
["resistance_bonus"] = "Vampiri",
["item_vnum"] = 30319,
["mapName"] = "Catacomba Diavolului"
},
{
["type"] = 2,
["organization"] = 0,
["level_limit"] = 85,
["party_members"] = 8,
["map"] = 207,
["map_coords"] = {1825, 12207},
["cooldown"] = 0,
["duration"] = 60,
["entrance_map"] = "V4",
["strength_bonus"] = "Diavolului",
["resistance_bonus"] = "Fulgerului",
["item_vnum"] = 30179,
["mapName"] = "Dragonului Albastru"
},
{
["type"] = 2,
["organization"] = 0,
["level_limit"] = 95,
["party_members"] = 8,
["map"] = 352,
["map_coords"] = {4318, 1644},
["cooldown"] = 30,
["duration"] = 30,
["entrance_map"] = "Sohan",
["strength_bonus"] = "Gheata",
["resistance_bonus"] = "Nimic",
["item_vnum"] = 71175,
["mapName"] = "Turnul lui Nemere"
},
{
["type"] = 2,
["organization"] = 0,
["level_limit"] = 95,
["party_members"] = 8,
["map"] = 235,
["map_coords"] = {6004, 7071},
["cooldown"] = 30,
["duration"] = 30,
["entrance_map"] = "Tara de foc",
["strength_bonus"] = "Foc",
["resistance_bonus"] = "Focului",
["item_vnum"] = 71174,
["mapName"] = "Purgatoriul lui Razador"
},
{
["type"] = 2,
["organization"] = 1,
["level_limit"] = 95,
["party_members"] = 8,
["map"] = 353,
["map_coords"] = {8291, 14188},
["cooldown"] = 60,
["duration"] = 60,
["entrance_map"] = "Padurea legendara",
["strength_bonus"] = "Vant",
["resistance_bonus"] = "Vantului",
["item_vnum"] = 30613,
["mapName"] = "Jotun"
},
}
end
return dungeonListerData.data;
end
dungeonListerData.improveRank = function(dungeonID, name, level, finished, fastestTime, highestDamage)
local index, value = mysql_direct_query2(string.format("SELECT * FROM log.dungeon_ranking WHERE dungeon_id = %d and name = '%s';", dungeonID, name));
if (index > 0) then
local actualTime = value[index]["fastest_time"];
local actualDamage = value[index]["highest_damage"];
if (fastestTime > actualTime) then
fastestTime = actualTime;
end
if (highestDamage < actualDamage) then
highestDamage = actualDamage;
end
return mysql_direct_query2(string.format("UPDATE log.dungeon_ranking SET level = %d, finished = finished + %d, fastest_time = %d, highest_damage = %d WHERE dungeon_id = %d and name = '%s';", level, finished, fastestTime, highestDamage, dungeonID, name));
end return mysql_direct_query2(string.format("INSERT INTO log.dungeon_ranking VALUES(%d, '%s', %d, %d, %d, %d);", dungeonID, name, level, finished, fastestTime, highestDamage));
end
dungeonListerData.updateRankData = function(dungeonID, rankingType)
local rankTypes = {{"finished", "DESC"}, {"fastest_time", "ASC"}, {"highest_damage", "DESC"}};
cmdchat(string.format("CleanDungeonRanking"));
local mysqlQueryStr = string.format("SELECT name, level, %s FROM log.dungeon_ranking WHERE dungeon_id = %d ORDER BY %s %s LIMIT 100;", rankTypes[rankingType][1], dungeonID, rankTypes[rankingType][1], rankTypes[rankingType][2]);
local index, value = mysql_direct_query2(mysqlQueryStr);
if (index > 0) then
for secIndex in value do
local strData = string.format("UpdateDungeonRanking %s %d %d", value[secIndex]["name"], value[secIndex]["level"], value[secIndex][rankTypes[rankingType][1]]);
cmdchat(strData);
end
end return cmdchat(string.format("OpenDungeonRanking"));
end
dungeonListerData.getRankData = function(dungeonID, name, pointType)
local index, value = mysql_direct_query2(string.format("SELECT finished, fastest_time, highest_damage FROM log.dungeon_ranking WHERE dungeon_id = %d and name = '%s';", dungeonID, name));
local rankTypes = {"finished", "fastest_time", "highest_damage"};
if index > 0 then
return (value[index][rankTypes[pointType]]);
end return 0;
end
dungeonListerData.updateData = function()
local data = dungeonListerData.ReturnData();
if (table.getn(data) == 0) then return false; end
cmdchat(string.format("DungeonInfo %d", q.getcurrentquestindex()));
cmdchat(string.format("CleanDungeonInfo"));
for index in data do
local dataValue = data[index];
local dungeonFinished = dungeonListerData.getRankData(index-1, pc.get_name(), 1);
local dungeonFastestTime = dungeonListerData.getRankData(index-1, pc.get_name(), 2);
local dungeonHighestDamage = dungeonListerData.getRankData(index-1, pc.get_name(), 3);
local dungeonMapName = string.gsub(dataValue["mapName"], " ", "_");
local dungeonEntranceMapName = string.gsub(dataValue["entrance_map"], " ", "_");
local dungeonStrengthBonusName = string.gsub(dataValue["strength_bonus"], " ", "_");
local dungeonResistanceBonusName = string.gsub(dataValue["resistance_bonus"], " ", "_");
local dataStr = string.format("UpdateDungeonInfo %d %d %d %d %s %d %d %d %d %d %s %s %s %d %d %d %d",
dataValue["type"],
dataValue["organization"],
dataValue["level_limit"],
dataValue["party_members"],
dungeonMapName,
dataValue["map"],
dataValue["map_coords"][1],
dataValue["map_coords"][2],
dataValue["cooldown"],
dataValue["duration"],
dungeonEntranceMapName,
dungeonStrengthBonusName,
dungeonResistanceBonusName,
dataValue["item_vnum"],
dungeonFinished,
dungeonFastestTime,
dungeonHighestDamage
);
cmdchat(dataStr);
end
end




