|
You last visited: Today at 16:45
Advertisement
[SERVICE] Die Questerstellung
Discussion on [SERVICE] Die Questerstellung within the Metin2 Private Server forum part of the Metin2 category.
09/30/2014, 18:21
|
#1741
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
Quote:
Originally Posted by ImTweet
Hey Quester,ich wollte Fragen ob ihr Zeit hättet mir 2 Quests zu schreiben
Ja?
Quest 1 (Easy für euch)
Würde gerne eine Quest haben
sobald ich auf item xxx drücke dann bekomme ich Coins
also das Item xxx bringt jetz z.b 500coins,wenn ich drauf klicke
habe ich auf der hp 500coins 
Quest 2 (Easy für euch)
Also serveradmin kann an allen spielern die online sind
per quest coins versenden danke
|
Ich weiß nicht wo bei dir in der Datenbank die coins festgelegt werden. Ich hab jetzt einfach auf account.account coins getippt.
Code:
quest coins_item begin
state start begin
when xxx.use begin -- ItemID
pc.remove_item(xxx, 1) -- ItemID
mysql_query("UPDATE account.account SET coins = coins + 500 WHERE id = '"..pc.get_account_id().."';")
syschat("500 Coins erhalten.")
end
end
end
Bei der 2ten Quest, gibt es ne Liste, dort kannste Namen eintragen, die Ingame Coins verteilen dürfen.
Code:
quest coins_gm begin
state start begin
function check_name()
namen = {"[SA]Admin", "[GM]Etc"} -- Berechtigte
for i=1, table.getn(namen), 1 do
if namen[i]==pc.get_name() then
return true
end
end
end
when letter with coins_gm.check_name() begin
send_letter("Jemanden Coins senden")
end
when button or info with with coins_gm.check_name() begin
say_title("Coins geben")
say("")
say("Gebe den Namen, dem du Coins ")
say("geben möchtest, an:")
inp = input()
if inp=="" then send_letter("Jemanden Coins senden") return end
if tonumber(mysql_query("select count(*) from player.player where name = '"..inp.."';")[1][1]) == 0 then
setskin(NOWINDOW)
syschat("Dieser Spieler existiert nicht.")
send_letter("Jemanden Coins senden")
return
end
say_title("Coins geben")
say("Wie viele Coins soll er haben?")
coins = tonumber(input())
if coins=="" then return end
say_title("Coins geben")
say("")
say("Zusammenfassung:")
say("Coins an: "..inp)
say("Coinanzahl: "..coins)
say("")
say("Coins geben?")
if select("Ja","Nein")==2 then return end
mysql_query("UPDATE account.account SET coins = coins + '"..coins.."' WHERE id = (SELECT account_id FROM player.player WHERE name='"..inp.."');")
syschat("Coins gutgeschrieben.")
send_letter("Jemanden Coins senden")
end
end
end
Quote:
Originally Posted by Penk767
Hallo 
Kann mir jemand helfen eine Quest zu schreiben die:
-Dauerhaft ab level 15 an der Seite ist
-mehrere optionen zur Verfügung stellt
-Mit PvP kills zu tun hat
je nachdem wie es machbar ist..
Falls es gut zu wissen ist: Ich benutze die Daroo files.
Vielen Dank schon mal und einen schönen Tag noch
Mit besten Grüßen
Penk767
|
Was meinst du mit Rangpunkten? Die Rangpunkte Ingame oder sind damit "imaginäre" gemeint?
|
|
|
09/30/2014, 19:32
|
#1742
|
elite*gold: 0
Join Date: Sep 2014
Posts: 10
Received Thanks: 1
|
Quote:
Originally Posted by Kilroy.
Ich weiß nicht wo bei dir in der Datenbank die coins festgelegt werden. Ich hab jetzt einfach auf account.account coins getippt.
Code:
quest coins_item begin
state start begin
when xxx.use begin -- ItemID
pc.remove_item(xxx, 1) -- ItemID
mysql_query("UPDATE account.account SET coins = coins + 500 WHERE id = '"..pc.get_account_id().."';")
syschat("500 Coins erhalten.")
end
end
end
Bei der 2ten Quest, gibt es ne Liste, dort kannste Namen eintragen, die Ingame Coins verteilen dürfen.
Code:
quest coins_gm begin
state start begin
function check_name()
namen = {"[SA]Admin", "[GM]Etc"} -- Berechtigte
for i=1, table.getn(namen), 1 do
if namen[i]==pc.get_name() then
return true
end
end
end
when letter with coins_gm.check_name() begin
send_letter("Jemanden Coins senden")
end
when button or info with with coins_gm.check_name() begin
say_title("Coins geben")
say("")
say("Gebe den Namen, dem du Coins ")
say("geben möchtest, an:")
inp = input()
if inp=="" then send_letter("Jemanden Coins senden") return end
if tonumber(mysql_query("select count(*) from player.player where name = '"..inp.."';")[1][1]) == 0 then
setskin(NOWINDOW)
syschat("Dieser Spieler existiert nicht.")
send_letter("Jemanden Coins senden")
return
end
say_title("Coins geben")
say("Wie viele Coins soll er haben?")
coins = tonumber(input())
if coins=="" then return end
say_title("Coins geben")
say("")
say("Zusammenfassung:")
say("Coins an: "..inp)
say("Coinanzahl: "..coins)
say("")
say("Coins geben?")
if select("Ja","Nein")==2 then return end
mysql_query("UPDATE account.account SET coins = coins + '"..coins.."' WHERE id = (SELECT account_id FROM player.player WHERE name='"..inp.."');")
syschat("Coins gutgeschrieben.")
send_letter("Jemanden Coins senden")
end
end
end
Was meinst du mit Rangpunkten? Die Rangpunkte Ingame oder sind damit "imaginäre" gemeint?
|
Wenn es geht, imaginäre.
|
|
|
09/30/2014, 21:57
|
#1743
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
Quote:
Originally Posted by Penk767
Wenn es geht, imaginäre. 
|
Navicat -> player -> neue Query
Code:
create table rangpunkte
(
name varchar(256) NOT NULL ,
rang integer NOT NULL default 1000,
PRIMARY KEY(name)
);
Ziemlich kompliziert geschrieben, erfüllt aber seinen Zweck.
Benötigt: mysql_query und npc.get_vid
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
|
|
|
09/30/2014, 23:18
|
#1744
|
elite*gold: 0
Join Date: Sep 2014
Posts: 10
Received Thanks: 1
|
Quote:
Originally Posted by Kilroy.
Navicat -> player -> neue Query
Code:
create table rangpunkte
(
name varchar(256) NOT NULL ,
rang integer NOT NULL default 1000,
PRIMARY KEY(name)
);
Ziemlich kompliziert geschrieben, erfüllt aber seinen Zweck.
Benötigt: mysql_query und npc.get_vid
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
|
Wow  danke schön
Edit: Er bringt beim einbinden der Quest einen Fehler.
|
|
|
10/01/2014, 01:14
|
#1745
|
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
|
Quote:
Originally Posted by Penk767
Wow  danke schön
Edit: Er bringt beim einbinden der Quest einen Fehler.

|
Geh in die quest_funcs Datei und fügen
das ans ende oder wo auch immer ein
PHP Code:
mysql_query npc.get_vid
Hat aber Kilroy extra dazu geschrieben das diese Funktionen benötigt werden..
Mfg Copy
|
|
|
10/01/2014, 07:00
|
#1746
|
elite*gold: 0
Join Date: Sep 2014
Posts: 10
Received Thanks: 1
|
Quote:
Originally Posted by .He3o Copy™
Geh in die quest_funcs Datei und fügen
das ans ende oder wo auch immer ein
PHP Code:
mysql_query
npc.get_vid
Hat aber Kilroy extra dazu geschrieben das diese Funktionen benötigt werden..
Mfg Copy
|
Oh danke. Hab ich wohl überlesen.
Danke fürs darauf hinweisen.
Und nochmals danke dafür dass ihr euch Zeit nehmt für sowas. Super Service hier.
Mit besten Grüßen
Penk767
|
|
|
10/01/2014, 12:55
|
#1747
|
elite*gold: 1
Join Date: Aug 2014
Posts: 1,339
Received Thanks: 875
|
Hööy, suche eine Quest, die wie folgt aussieht:
Eine Killanzeige bzw. eine Rolle die man anklicken kann "wann man will bzw. die erscheint
beim Porten, Rlg etc.." Sie zeigt Kills an: Rot, Gelb, Blau & Monster.
Wäre cool. Danke im Vorraus.
|
|
|
10/01/2014, 16:51
|
#1748
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
Quote:
Originally Posted by iBrowly
Hööy, suche eine Quest, die wie folgt aussieht:
Eine Killanzeige bzw. eine Rolle die man anklicken kann "wann man will bzw. die erscheint
beim Porten, Rlg etc.." Sie zeigt Kills an: Rot, Gelb, Blau & Monster.
Wäre cool. Danke im Vorraus.
|
Code:
quest ibrowlyx5 begin
state start begin
when letter begin
send_letter("Killsanzeige")
end
when button or info begin
say_title("Killsanzeige")
say("")
say("Rote: "..(pc.getqf("Rote_Spieler") or 0))
say("Gelbe: "..(pc.getqf("Gelbe_Spieler") or 0))
say("Blaue: "..(pc.getqf("Blaue_Spieler") or 0))
say("Monster: "..(pc.getqf("Monster_Kills") or 0))
say("")
select("Ok")
setskin(NOWINDOW)
send_letter("Killsanzeige")
end
when kill begin
if npc.is_pc() then
if npc.get_empire()==1 then
pc.setqf("Rote_Spieler", pc.getqf("Rote_Spieler")+1)
elseif npc.get_empire()==2 then
pc.setqf("Gelbe_Spieler", pc.getqf("Gelbe_Spieler")+1)
elseif npc.get_empire()==3 then
pc.setqf("Blaue_Spieler", pc.getqf("Blaue_Spieler")+1)
end
else
pc.setqf("Monster_Kills", pc.getqf("Monster_Kills")+1)
end
end
end
end
|
|
|
10/01/2014, 16:54
|
#1749
|
elite*gold: 1
Join Date: Aug 2014
Posts: 1,339
Received Thanks: 875
|
Quote:
Originally Posted by Kilroy.
Code:
quest ibrowlyx5 begin
state start begin
when letter begin
send_letter("Killsanzeige")
end
when button or info begin
say_title("Killsanzeige")
say("")
say("Rote: "..(pc.getqf("Rote_Spieler") or 0))
say("Gelbe: "..(pc.getqf("Gelbe_Spieler") or 0))
say("Blaue: "..(pc.getqf("Blaue_Spieler") or 0))
say("Monster: "..(pc.getqf("Monster_Kills") or 0))
say("")
select("Ok")
setskin(NOWINDOW)
send_letter("Killsanzeige")
end
when kill begin
if npc.is_pc() then
if npc.get_empire()==1 then
pc.setqf("Rote_Spieler", pc.getqf("Rote_Spieler")+1)
elseif npc.get_empire()==2 then
pc.setqf("Gelbe_Spieler", pc.getqf("Gelbe_Spieler")+1)
elseif npc.get_empire()==3 then
pc.setqf("Blaue_Spieler", pc.getqf("Blaue_Spieler")+1)
end
else
pc.setqf("Monster_Kills", pc.getqf("Monster_Kills")+1)
end
end
end
end
|
Danke dir mein Schatz <3
War klar, dass du es wieder schreibst.
Nächstes mal kriegste direkt nh Pn xd
|
|
|
10/01/2014, 19:09
|
#1750
|
elite*gold: 0
Join Date: Sep 2014
Posts: 10
Received Thanks: 1
|
Quote:
Originally Posted by Kilroy.
Navicat -> player -> neue Query
Code:
create table rangpunkte
(
name varchar(256) NOT NULL ,
rang integer NOT NULL default 1000,
PRIMARY KEY(name)
);
Ziemlich kompliziert geschrieben, erfüllt aber seinen Zweck.
Benötigt: mysql_query und npc.get_vid
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
|
Tut mir leid wenn ich nochmal störe. Aber die Quest wird ingame nicht angezeigt. Ich hab sie auf jeden Fall richtig eingefügt, da ich mehrere Quests eingefügt hab und diese auch funktionieren. :/
Ist dort vielleicht noch ein fehler im Quellcode? Oder hab ich doch nen fehler gemacht beim einfügen?.. <.<
Bitte ein weiteres mal um Hilfe. Danke.
Mit besten Grüßen
Penk767
|
|
|
10/01/2014, 19:47
|
#1751
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
Quote:
Originally Posted by Penk767
Tut mir leid wenn ich nochmal störe. Aber die Quest wird ingame nicht angezeigt. Ich hab sie auf jeden Fall richtig eingefügt, da ich mehrere Quests eingefügt hab und diese auch funktionieren. :/
Ist dort vielleicht noch ein fehler im Quellcode? Oder hab ich doch nen fehler gemacht beim einfügen?.. <.<
Bitte ein weiteres mal um Hilfe. Danke.
Mit besten Grüßen
Penk767
|
Fehler im Quellcode -> nein, hab sie bei mir getestet.
Besitzt du denn die mysql_query bzw. npc.get_vid Funktion? npc.get_vid kannste per dif nachpatchen und die mysql_query ist von Mijago.
|
|
|
10/01/2014, 20:05
|
#1752
|
elite*gold: 0
Join Date: Sep 2014
Posts: 10
Received Thanks: 1
|
Quote:
Originally Posted by Kilroy.
Fehler im Quellcode -> nein, hab sie bei mir getestet.
Besitzt du denn die mysql_query bzw. npc.get_vid Funktion? npc.get_vid kannste per dif nachpatchen und die mysql_query ist von Mijago.
|
ah...... okay  jetzt funktioniert es  danke nochmal
|
|
|
10/02/2014, 15:30
|
#1753
|
elite*gold: 0
Join Date: Jun 2014
Posts: 1,046
Received Thanks: 956
|
@Kilroy
Danke für die Quests,bei quest 2 meinte ich eigentlich das ich aufeinmal an allen Online Spielern senden kann(am besten mit ip check wenn sowas geht)
|
|
|
10/02/2014, 16:48
|
#1754
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
Quote:
Originally Posted by ImTweet
@Kilroy
Danke für die Quests,bei quest 2 meinte ich eigentlich das ich aufeinmal an allen Online Spielern senden kann(am besten mit ip check wenn sowas geht)
|
Mh okay, mir ist nicht bekannt, wie man nur per Quest checkt, ob jemand Online ist. Es gibt zwar Möglichkeiten, diese sind aber nicht zu 100% und weisen Fehler auf.
|
|
|
10/02/2014, 18:41
|
#1755
|
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
|
Quote:
Originally Posted by Kilroy.
Mh okay, mir ist nicht bekannt, wie man nur per Quest checkt, ob jemand Online ist. Es gibt zwar Möglichkeiten, diese sind aber nicht zu 100% und weisen Fehler auf.
|
Da kann ich dir nur Recht geben. Man muss sich das ja so vorstellen jede Quest wird für einen bestimmten Spieler ausgelöst also möchtest du jetzt wenn du diese Startest an alle Spieler etwas senden.
Nun aber woher sollte die Quest die Namen wirklich her bekommen. Man könnte natürlich die ganze DB durch gehen und alle checken lassen keine Frage aber das wird sicherlich sehr rechenaufwendig.
Da empfielt sich leider eher mit C++ zu arbeiten und eine neue Funktion zu schreiben die diese Aufgabenkette aufweißt.
Mfg
Copy
|
|
|
 |
|
Similar Threads
|
[Community]Questerstellung
09/06/2015 - Metin2 Private Server - 5 Replies
Hallo liebe Community,
ich möchte meine Questkenntnisse ein wenig erweitern, deshalb möchte ich euch hier die Möglichkeit geben, Ideen, Wünsche und alles was mit Quests zu tun hat an mich weiterzuleiten.
Ich werde, sobald ich Zeit und Lust habe, die Ideen größtenteils umsetzen und das Ergebnis hier veröffentlichen. Wie oben schon erwähnt bin ich Quasi noch am 'lernen' (ja ich weis, man lernt nie aus), deshalb bitte ich euch, mich zu informieren wenn ich irgendwo gefailed hab, man es...
|
Hilfe bei Questerstellung
02/25/2012 - Metin2 Private Server - 0 Replies
€dit:
Kan gelöscht werden habe jemanden gefunden!!!!
|
Hilfe bei Questerstellung
02/15/2012 - Metin2 Private Server - 8 Replies
Heyy
Ich hätte eine bitte an euch.
Und zwar einer von euch mir einige quests erstellst.
Ich habe voll kp von quests.
Als blohnung würde ich dir auf meinem server
5k coins (Wert 50€) geben.
also hier die quests:
30 Quest
Belohnung: 100kk 42 rüssi+7 je nach der klasse.
|
Hilfe bei Questerstellung
08/16/2011 - Metin2 Private Server - 0 Replies
Mahlzeit
also ich suche jemanden der mir ein grundgerüst einer quest erstellen kann so das ich diese weiter ausbauen kann,
So nun zur quest idee
Also ich möchte einen NPC hinstellen nennen wir den mal Questnpc
wenn man den anklickt soll man dem levelabhängig quest angeboten bekommen,zum beispiel ab lvl10 töte 50 weisse Tiger,aber lvl40 töte 30 Oberork und so weiter,was mit levelanstieg natürlich komplexer werden sollte.Manche Quest sollten nur einmal zumachen gehen und manche im höheren lvl...
|
[SERVICE]Questerstellung
05/24/2011 - Metin2 Private Server - 4 Replies
Abend e*pvp,
nach langem Überlegen hab ich mich doch dazu entschlossen, meine Arbeit gegen e*gold zur Verfügung zu stellen.
Ich werde euch mal die wichtigsten Fragen beantworten ;)
Woraus besteht dein Service?
Zum einen erstelle ich einzelne, sowie ganze Questreihen. Die von mir verschickten Dateien werden Unikate bleiben, und sofort nach erfolgreichem Transfer gelöscht. Außerdem biete ich nochmal seperat eine Questverbesserung zum Sammelthread an. Diese wird dann natürlich...
|
All times are GMT +1. The time now is 16:48.
|
|