Code:
quest lv15_pvp_rang begin
state start begin
function calc_level(level, hislevel)
if level==hislevel then return 10 -- Gleiches Level 10 Punkte
elseif level>hislevel then
if level-hislevel==1 then return 8 --Levelunterschied 1 heißt 8 Punkte
elseif level-hislevel==2 then return 6 -- Levelunterschied 2 heißt 6 Punkte
elseif level-hislevel==3 then return 4 -- Levelunterschied 3 heißt 4 Punkte
elseif level-hislevel==4 then return 2 -- Levelunterschied 4 heißt 2 Punkte
elseif level-hislevel==5 then return 1 -- Levelunterschied 5 heißt 1 Punkte
elseif level-hislevel>5 then return 0 -- Levelunterschied größer 5 heißt 0 Punkte
end
elseif hislevel>level then
if hislevel-level==1 then return 8 --Levelunterschied 1 heißt 8 Punkte
elseif hislevel-level==2 then return 6 -- Levelunterschied 2 heißt 6 Punkte
elseif hislevel-level==3 then return 4 -- Levelunterschied 3 heißt 4 Punkte
elseif hislevel-level==4 then return 2 -- Levelunterschied 4 heißt 2 Punkte
elseif hislevel-level==5 then return 1 -- Levelunterschied 5 heißt 1 Punkte
elseif hislevel-level>5 then return 0 -- Levelunterschied größer 5 heißt 0 Punkte
end
end
end
function check_top10(name, t)
rang_len = table.getn(t.name)
for i=1, 10, 1 do
if t[i][1]==name then
return true
end
if i==rang_len then break end
end
end
function own_position(list)
rang_len = table.getn(list.name)
pos = 0
for i=1, rang_len, 1 do -- Finde Spielerposition
if list.name[i]==pc.get_name() then
pos = i
break
end
end
return pos
end
function own_top10(list)
rang_len = table.getn(list.name)
pos = lv15_pvp_rang.own_position(list)
if pos-5<=0 then
for i=1,pos,1 do
if pos-i==1 then
pos = pos-i
break
end
end
else
pos = pos-5
end
for c = pos, pos+10, 1 do -- Rangliste
if list.name[c]==nil then break end
rang = lv15_pvp_rang.rang_name(list.name[c], list.rang[c])
say(c..". "..list.name[c]..", Rang: "..rang.." ; "..list.rang[c])
if c==pos+10 then break end
end
end
function make_rangliste(list)
rang_len = table.getn(list.name)
for c = 1, 10, 1 do -- Ranglisten Einträge
rang = lv15_pvp_rang.rang_name(list.name[c], list.rang[c])
say(c..". "..list.name[c]..", Rang: "..rang.." ; "..list.rang[c])
if c==rang_len then break end
end
end
function rang_name(name, rang)
if lv15_pvp_rang.check_top10(name, mysql_query("SELECT * FROM player.rangpunkte WHERE name NOT LIKE '[%' order by rang DESC;")) and rang > 15000 then
return "Diamant"
else
if rang < 5001 then
return "Bronze"
elseif rang > 5000 and rang < 10001 then
return "Silber"
elseif rang > 10000 and rang < 15001 then
return "Gold"
elseif rang > 15000 then
return "Platin"
end
end
end
when letter with pc.get_level()>14 begin
if pc.getqf("Is_PvP")!=1 then
if tonumber(mysql_query("SELECT count(*) FROM player.rangpunkte WHERE name = '"..pc.get_name().."';")[1][1]) == 0 then
mysql_query("INSERT player.rangpunkte SET name = '"..pc.get_name().."';")
pc.setqf("Is_PvP", 1)
end
end
send_letter("PvP-Rang-Punkte")
end
when button or info with pc.get_level()>14 begin
say_title("PvP-Rang-Punkte")
say("")
say("Was tun?")
s = select("Eigener Rang", "Top 10 auf meinem Rang ", "Top 10 Spieler", "Info zum Rangsystem", "Schließen")
if s==5 then send_letter("PvP-Rang-Punkte") return end
if s==1 then
say_title("Eigener Rang")
say("")
say("Platz: "..lv15_pvp_rang.own_position(mysql_query("SELECT * FROM player.rangpunkte WHERE name NOT LIKE '[%' order by rang DESC;")))
rang = tonumber(mysql_query("SELECT rang FROM player.rangpunkte WHERE name = '"..pc.get_name().."';")[1][1])
say("Rang: "..rang)
say("Ranggruppe: "..lv15_pvp_rang.rang_name(pc.get_name(), rang))
elseif s==2 then
say_title("Top 10 Eigener Rang")
say("")
lv15_pvp_rang.own_top10(mysql_query("SELECT * FROM player.rangpunkte WHERE name NOT LIKE '[%' order by rang DESC;"))
elseif s==3 then
say_title("Top 10")
say("")
lv15_pvp_rang.make_rangliste(mysql_query("SELECT * FROM player.rangpunkte WHERE name NOT LIKE '[%' order by rang DESC;"))
elseif s==4 then
say_title("Info zum Rangsystem")
say("")
say("Bronze: 0 - 5000")
say("Silber: 5001 - 10000")
say("Gold: 10001 - 15000")
say("Platin: 15001 - bis ins unendliche")
say("Diamant: in Top10 ")
end
say("")
select("Ok")
setskin(NOWINDOW)
send_letter("PvP-Rang-Punkte")
end
when kill with npc.is_pc() and pc.get_level()>14 begin
vid = npc.get_vid()
myVid = pc.select(vid)
hisName = pc.get_name()
hisLevel = pc.get_level()
pc.select(myVid)
if tonumber(mysql_query("SELECT rang FROM player.rangpunkte WHERE name = '"..hisName.."'")[1][1])-lv15_pvp_rang.calc_level()<0 then
mysql_query("UPDATE player.rangpunkte SET rang=0 WHERE name = '"..hisName.."'")
else
mysql_query("UPDATE player.rangpunkte SET rang=rang-'"..lv15_pvp_rang.calc_level(pc.get_level(), hisLevel).."' WHERE name = '"..hisName.."'")
end
mysql_query("UPDATE player.rangpunkte SET rang=rang+'"..lv15_pvp_rang.calc_level(pc.get_level(), hisLevel).."' WHERE name = '"..pc.get_name().."'")
end
end
end