|
You last visited: Today at 07:49
Advertisement
[Quest-Update] Achievementsystem
Discussion on [Quest-Update] Achievementsystem within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
10/08/2013, 17:04
|
#1
|
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,446
|
[Quest-Update] Achievementsystem
Heyho,
da ich schon immer der Meinung war, dass die Achievementquest von DaRealFreak etwas unübersichtlich ist, wollte ich "Neulingen" es mal etwas leichter machen und habe sie so geschrieben, dass man leicht alles ersetzen kann.
Auch beim Shop muss man jetzt nicht alles sofort umschreiben.
Was ihr braucht:
- Questlib von Mijago
- Clientdateien vom Achievementsystem
Originalthread von DaRealFreak:
Quest:
Code:
quest achievement_update begin
state start begin
-- // shop
when 20094.chat."Achievement Shop" begin
local points = pc.getqf("achieve")
local category = {"Waffen","Rüstungen","Pvm - Equipment","Uppitems","Truhen","Ringe"}
local list = {
-- Kategorie 1
{
-- Name Vnum reward points
{"Giftschwert+9", 9985, 3500},
{"Grollschwert+9", 9986, 3500},
{"Orchideenglocke+9", 9987, 3500},
{"Löwenschwert+9", 9988, 3500},
{"Teufelsflügel-Chakram+9", 9989, 3500},
},
-- Kategorie 2
{
{"Schwarzstahlpanzer+9", 11299, 1000},
{"Schwarzwindanzug+9", 11499, 1000},
{"Magieplattenpanzer+9", 11699, 1000},
{"Schwarze Kleidung+9", 11899, 1000},
},
-- Kategorie 3
{
{"Smaragtarmband", 14549, 5000},
{"Smaragthalskette", 16549, 5000},
{"Smaragtohrringe", 17549, 5000},
},
-- Kategorie 4
{
{"Stück Kristall", 30204, 100},
{"Wasserstein", 27991, 500},
},
-- Kategorie 5
{
{"Truhe der Macht", 38050, 500},
{"Truhe des ewigen Winters", 38053, 3000},
{"Truhe der Könige", 38052, 3000},
},
-- Kategorie 6
{
{"Halbmondring", 10008, 400},
{"Ring des Kampfes", 71143, 1500},
{"Ring des Feuers", 71149, 2500},
{"Ring des Wassers", 71148, 2500},
{"Lolli", 71136, 5000},
}
}
local s = select3(category)
local menu = {}
for i = 1, table.getn(list[s]) do
table.insert(menu, list[s][i][1])
end
say_title("Achievement Shop")
say("Wähle ein Item aus:")
say()
local t = select3(menu)
local reward_item = list[s][t][2]
local reward_count = list[s][t][3]
say_title("Achievement Shop")
say_reward("Achievementpoints: "..points)
say()
say("Gewähltes Item: "..item_name(reward_item))
say_reward(string.format("Das Item kostet %d Achievementpoints", reward_count))
say()
if points < reward_count then
return say("Du hast nicht genügend Achievementpoints")
end
if select("Eintauschen","Abbrechen") == 2 then return end
pc.setqf("achieve", points - reward_count)
pc.give_item2(reward_item)
end
-- // get points
when login begin
mob_data = {
-- Vnum Points qf cmdchat
{691, 20, "691", "achievement ".. mob_name(691) .."_getötet#".. pc.getqf("691") + 1 .."%".. pc.getqf("achieve") + 20},
{791, 20, "791", "achievement ".. mob_name(791) .."_getötet#".. pc.getqf("791") + 1 .."%".. pc.getqf("achieve") + 20},
{792, 20, "792", "achievement ".. mob_name(792) .."_getötet#".. pc.getqf("792") + 1 .."%".. pc.getqf("achieve") + 20},
{1192, 150, "1192", "achievement ".. mob_name(1192) .."_getötet#".. pc.getqf("1192") + 1 .."%".. pc.getqf("achieve") + 20},
}
item_data = {
{12019, 50, "12019", "achievement Blaustahlpanzer+9%".. pc.getqf("achieve") + 50},
{12029, 50, "12029", "achievement Drachenanzug+9%".. pc.getqf("achieve") + 50},
{12039, 50, "12039", "achievement Auraplattenpanzer+9%".. pc.getqf("achieve") + 50},
{12049, 50, "12049", "achievement Drachenkleidung+9%".. pc.getqf("achieve") + 50},
}
level_data = {
-- Level points qf cmdchat
{50, 50, "level50", "achievement Level_50_erreicht%".. pc.getqf("achieve") + 50},
{60, 50, "level60", "achievement Level_60_erreicht%".. pc.getqf("achieve") + 50},
{70, 50, "level70", "achievement Level_70_erreicht%".. pc.getqf("achieve") + 50},
{80, 50, "level80", "achievement Level_80_erreicht%".. pc.getqf("achieve") + 50},
{90, 50, "level90", "achievement Level_90_erreicht%".. pc.getqf("achieve") + 50},
{99, 50, "level99", "achievement Level_99_erreicht%".. pc.getqf("achieve") + 50},
}
end
when kill with not npc.is_pc() begin
local vid = npc.get_vid()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(vid)
if d ~= false then
pc.setqf(mob_data[d][3], pc.getqf(mob_data[d][3]) + tonumber(mob_data[d][2]))
cmdchat(mob_data[d][4])
end
end
when use begin
local vnum = item.get_vnum()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(vnum)
if d ~= false and pc.getqf(tostring(item_data[d][3]) == 0 then
pc.setqf(item_data[d][3], 1)
pc.setqf(item_data[d][3], pc.getqf(item_data[d][3]) + tonumber(item_data[d][2]))
cmdchat(item_data[d][4])
end
end
when levelup begin
local lvl = pc.get_level()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(lvl)
if d ~= false and pc.getqf(tostring(level_data[d][3]) == 0 then
pc.setqf(level_data[d][3], 1)
pc.setqf(level_data[d][3], pc.getqf(level_data[d][3]) + tonumber(level_data[d][2]))
cmdchat(level_data[d][4])
end
end
end
end
Wie man was einfügt:
Ihr kopiert einfach eine Zeile, wie diese:
Code:
{"Giftschwert+9", 9985, 3500},
Und fügt die unter den letzten eingerückten Eintrag ein.
Beispiel:
Code:
{"Giftschwert+9", 9985, 3500},
{"Grollschwert+9", 9986, 3500},
{"Orchideenglocke+9", 9987, 3500},
{"Löwenschwert+9", 9988, 3500},
{"Teufelsflügel-Chakram+9", 9989, 3500},
Wird zu:
{"Giftschwert+9", 9985, 3500},
{"Grollschwert+9", 9986, 3500},
{"Orchideenglocke+9", 9987, 3500},
{"Löwenschwert+9", 9988, 3500},
{"Teufelsflügel-Chakram+9", 9989, 3500},
{"Schwert+9", 19, 3500},
Neue Kategorie:
Falls ihr eine neue Kategorie einfügt, müsst ihr drauf achten, dass die Itemlisten in der richtigen Reihenfolge sind - sonst werden die Items falsch angezeigt.
1. Kategorie in die category Liste eintragen
2.
Code:
{
{"Schwarzstahlpanzer+9", 11299, 1000},
{"Schwarzwindanzug+9", 11499, 1000},
{"Magieplattenpanzer+9", 11699, 1000},
{"Schwarze Kleidung+9", 11899, 1000},
},
Das ist ein Abschnitt einer Kategorie.
Am einfachsten ist es so einen zu kopieren und unten einzufügen.
Aber vor der letzten geschweiften Klammer - sonst kommt ein Compileerror
Das war's auch.
Falls ihr Fragen habt, könnt ihr sie mir stellen.
MfG.iRemix
|
|
|
10/08/2013, 17:09
|
#2
|
elite*gold: 0
Join Date: Jun 2012
Posts: 778
Received Thanks: 456
|
Für Neulinge sicher hilfreich..
Danke
|
|
|
10/08/2013, 17:35
|
#3
|
elite*gold: 12
Join Date: Jun 2012
Posts: 978
Received Thanks: 860
|
Danke, Michi  Sehr ordentlich geschrieben!
|
|
|
10/08/2013, 18:36
|
#4
|
elite*gold: 0
Join Date: May 2013
Posts: 265
Received Thanks: 44
|
Danke ist für leute die nicht so viel plan von Quests haben sehr gut zu gebrauchen  Wie mich :P
Thanks
|
|
|
10/08/2013, 23:52
|
#5
|
elite*gold: 222
Join Date: Oct 2012
Posts: 2,369
Received Thanks: 3,389
|
Sehr sauber-, sowie kurz gehaltener Syntax.
nicht anders zu erwarten :3 Danke!
|
|
|
10/09/2013, 17:22
|
#6
|
elite*gold: 191
Join Date: May 2009
Posts: 1,214
Received Thanks: 2,597
|
Kleiner Logikfehler:
if s == table.getn(category) then return end
Da du in category kein Abbrechen hast, ist das nicht korrekt.
Abbrechen ist -1 bei select3
if t == table.getn(menu) then return end
Hier das selbe
Nebenbei,
pc.getqf(tostring(level_data[d][3])
das tostring ist total unnötig, denn der Core selbst wandelt sich die Lua value in einen String um, dh bei dir 2x
## Edit:
Jetzt hast du die Zeilen zwar rausgenommen, aber du musst doch dennoch checken, ob die select-Funktion -1 zurück gibt
|
|
|
10/10/2013, 00:32
|
#7
|
elite*gold: 0
Join Date: Mar 2012
Posts: 646
Received Thanks: 696
|
Michi bist ein verrückter Mongo. Gute Quest. Bis Freitag 
Mfg
|
|
|
10/10/2013, 06:40
|
#8
|
elite*gold: 32
Join Date: Mar 2012
Posts: 6,716
Received Thanks: 2,737
|
Jaja Michi, ich weiß noch vor ca. 1 Jahr.. xD Da haste mich immer gefragt wie man Quest umschreibt oder gar schreibt.. Jetzt randalierst du hier im Questsschreiben. Sehr, sehr nice von dir.. wie eben immer. Hast dich dazu auch noch toll gemacht.
Danke schön.
PS: Kannst dich auch mal wieder in Skype melden, lang nichts mehr von dir gehört!! :>
lG
Syuki
|
|
|
10/10/2013, 08:33
|
#9
|
elite*gold: 0
Join Date: Oct 2013
Posts: 36
Received Thanks: 12
|
Sehr schön, danke dir.
|
|
|
10/15/2013, 09:53
|
#10
|
elite*gold: 0
Join Date: Jul 2012
Posts: 22
Received Thanks: 0
|
Quote:
quest archive_system begin
state start begin
-- // Sklep
when 20091.chat."Sklep z Osiagnieciami !" begin
local points = pc.getqf("achieve")
local category = {"Wszystkie Ulepszacze", "Wierzchowce", "Pety"}
local list = {
-- Kategoria 1
{
-- Nazwa ID Punkty
{"Zielona Perla x1", 2761, 45},
{"Czerwony Piasek x1", 2165, 65},
{"Zolta Perla x1", 2765, 55},
{"Lodowy Krzystal x1", 2760, 45},
},
-- Kategoria 2
{
{"Pieczec Raptora", 2741, 120},
{"Pieczec Czarnego Jaszczura", 2745, 120},
{"Pieczec Bialego Konia", 2747, 100},
{"Pieczec Martwego Konia", 2748, 100},
},
-- Kategoria 3
{
{"Maly Dzik", 53008, 350},
{"Maly Lew", 53007, 450},
},
}
local s = select3(category)
local menu = {}
for i = 1, table.getn(list[s]) do
table.insert(menu, list[s][i][1])
end
say_title("Sklep Osiagniec")
say_arbuz("Nasza Oferta:")
say()
local t = select3(menu)
local reward_item = list[s][t][2]
local reward_count = list[s][t][3]
say_title("Sklep Osiagniec")
say_reward("Twoje Punkty: "..points)
say()
say_limonka("Pomyslny zakup przedmiotu: "..item_name(reward_item))
say_reward(string.format("Pozostalo %d Punktow Osiagniec.", reward_count))
say()
if points < reward_count then
return say_arbuz("Masz za malo punktow !")
end
if select("Zakup!","Anuluj!") == 2 then return end
pc.setqf("achieve", points - reward_count)
pc.give_item2(reward_item)
end
-- // get points
when login begin
mob_data = {
-- ID Punkty qf cmdchat
{691, 2, "691", "Nowe Osiagniecie ".. mob_name(691) .."zakonczone!#".. pc.getqf("691") + 1 .."%".. pc.getqf("achieve") + 2},
{791, 2, "791", "Nowe Osiagniecie ".. mob_name(791) .."zakonczone!#".. pc.getqf("791") + 1 .."%".. pc.getqf("achieve") + 2},
{792, 2, "792", "Nowe Osiagniecie ".. mob_name(792) .."zakonczone!#".. pc.getqf("792") + 1 .."%".. pc.getqf("achieve") + 2},
{1191, 3, "1191", "Nowe Osiagniecie ".. mob_name(1191) .."zakonczone!#".. pc.getqf("1191") + 1 .."%".. pc.getqf("achieve") + 3},
{1193, 3, "1193", "Nowe Osiagniecie ".. mob_name(1193) .."zakonczone!#".. pc.getqf("1193") + 1 .."%".. pc.getqf("achieve") + 3},
{1094, 3, "1094", "Nowe Osiagniecie ".. mob_name(1094) .."zakonczone!#".. pc.getqf("1094") + 1 .."%".. pc.getqf("achieve") + 3},
{1095, 4, "1095", "Nowe Osiagniecie ".. mob_name(1095) .."zakonczone!#".. pc.getqf("1095") + 1 .."%".. pc.getqf("achieve") + 4},
{1304, 3, "1304", "Nowe Osiagniecie ".. mob_name(1304) .."zakonczone!#".. pc.getqf("1304") + 1 .."%".. pc.getqf("achieve") + 3},
{2697, 5, "2697", "Nowe Osiagniecie ".. mob_name(2697) .."zakonczone!#".. pc.getqf("2697") + 1 .."%".. pc.getqf("achieve") + 4},
{2597, 6, "2597", "Nowe Osiagniecie ".. mob_name(2597) .."zakonczone!#".. pc.getqf("2597") + 1 .."%".. pc.getqf("achieve") + 6},
{16061, 5, "16061", "Nowe Osiagniecie ".. mob_name(16061) .."zakonczone!#".. pc.getqf("16061") + 1 .."%".. pc.getqf("achieve") + 5},
{2599, 5, "2599", "Nowe Osiagniecie ".. mob_name(2599) .."zakonczone!#".. pc.getqf("2599") + 1 .."%".. pc.getqf("achieve") + 5},
{2997, 5, "2997", "Nowe Osiagniecie ".. mob_name(2997) .."zakonczone!#".. pc.getqf("2997") + 1 .."%".. pc.getqf("achieve") + 5},
{2599, 5, "2599", "Nowe Osiagniecie ".. mob_name(2599) .."zakonczone!#".. pc.getqf("2599") + 1 .."%".. pc.getqf("achieve") + 5},
}
item_data = {
{44000, 3, "44000", "Nowe Osiagniecie Szmaragdowe Ubranie+0%".. pc.getqf("achieve") + 3},
{42000, 3, "42000", "Nowe Osiagniecie Szmaragdowa Zbroja+0%".. pc.getqf("achieve") + 3},
{46000, 3, "46000", "Nowe Osiagniecie Szmaragdowy Pancerz+0%".. pc.getqf("achieve") + 3},
{48000, 3, "48000", "Nowe Osiagniecie Szmaragdowa Szata+0%".. pc.getqf("achieve") + 3},
}
level_data = {
-- Level points qf cmdchat
{80, 3, "level80", "Nowe Osiagniecie Level_80_erreicht%".. pc.getqf("achieve") + 3},
{90, 3, "level90", "Nowe Osiagniecie Level_90_erreicht%".. pc.getqf("achieve") + 3},
{99, 3, "level99", "Nowe Osiagniecie Level_99_erreicht%".. pc.getqf("achieve") + 3},
}
end
when kill with not npc.is_pc() begin
local vid = npc.get_vid()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(vid)
if d ~= false then
pc.setqf(mob_data[d][3], pc.getqf(mob_data[d][3]) + tonumber(mob_data[d][2]))
cmdchat(mob_data[d][4])
end
end
when use begin
local vnum = item.get_vnum()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(vnum)
if d ~= false and pc.getqf(tostring(item_data[d][3]) == 0 then
pc.setqf(item_data[d][3], 1)
pc.setqf(item_data[d][3], pc.getqf(item_data[d][3]) + tonumber(item_data[d][2]))
cmdchat(item_data[d][4])
end
end
when levelup begin
local lvl = pc.get_level()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(lvl)
if d ~= false and pc.getqf(tostring(level_data[d][3]) == 0 then
pc.setqf(level_data[d][3], 1)
pc.setqf(level_data[d][3], pc.getqf(level_data[d][3]) + tonumber(level_data[d][2]))
cmdchat(level_data[d][4])
end
end
end
end
|
Please help me !
|
|
|
10/22/2013, 22:47
|
#11
|
elite*gold: 0
Join Date: Jul 2012
Posts: 22
Received Thanks: 0
|
Calls undeclared function! :
in_table
npc.get_vid
select3
|
|
|
10/24/2013, 21:59
|
#12
|
elite*gold: 10
Join Date: Feb 2012
Posts: 1,097
Received Thanks: 574
|
dann definier die funktionen....
du wirst es doch schaffen das in die quest_functions reinzuschreiben
ich war seit fast 1 1/2 jahren nicht on und komme wieder und es ist immernoch alles gleich  jeder will pserver machen aber fast keiner hat ahnung
und zur quest
die gefällt mir zur ausnahme mal echt gut weiß nicht was da alles so released wurde zwecks achievment system aber wenn ich mir das von jetzt anschaue und von wo ich noch aktiv war hast dus echt gut gemacht weiter so
|
|
|
10/25/2013, 12:01
|
#13
|
elite*gold: 0
Join Date: Oct 2013
Posts: 25
Received Thanks: 23
|
Hey, aufjedenfall schönes Release, neulinge können damit einiges machen!
|
|
|
10/29/2013, 17:26
|
#14
|
elite*gold: 0
Join Date: Aug 2012
Posts: 974
Received Thanks: 89
|
push wegen fehler
|
|
|
 |
Similar Threads
|
[TrinityCore] Achievementsystem - Fertige SQL zum Download!
07/07/2013 - WoW Private Server - 2 Replies
Hallo Community,
Ich stelle Euch von meinem Tool erstellte SQL von einem aufgelösten Projekt frei zur Verfügung.
Diese SQL kam auf einem Highrateserver zum Einsatz.
Was macht dieses?
Bei dem Erfolg X bekommt der Spieler ein Brief. Dort können Kisten, Mounts etc. enthalten sein. Was genau, müsst Ihr im Script schauen.
Bitte beachtet, dass eine Sicherung der alten Tabelle achievement_reward notwendig ist! Sollte es zu einem Crash beim Start des Servers kommen, sichert Ihr Euch damit...
|
Problem: Achievementsystem
09/01/2012 - Metin2 Private Server - 0 Replies
Hallo,
ich hab das Problem, das beim Achievementsystem die Punkte nicht speichern. Das heißt es steht immer: Deine Achievementpoints steigen auf 53. Aber beim Achievementshop hab ich immer 0 Punkte...
|
Achievementsystem "erkennt" manche Mobs nicht?
12/04/2011 - Metin2 Private Server - 2 Replies
Heyho,
ich war gerade dabei das Achievementsystem zu erweitern.
Also Shopquest mit Ownpoints abfrage und all so nem schnick schnack.
Dazu noch nen ordentlichen "Trophäenschrank" per Quest in welcher die gesammelten Achievements angeschaut werden können, sowie die der anderen.
Naja soweit auch okay, alles geschafft, nur harpert es an EINEM scheiss Punkt.
Das Achievement zählt nicht alle Mobs ....
|
All times are GMT +1. The time now is 07:49.
|
|