|
You last visited: Today at 01:24
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
01/27/2016, 01:59
|
#12151
|
elite*gold: 0
Join Date: Apr 2009
Posts: 114
Received Thanks: 4
|
Quote:
Originally Posted by Rofelmau
PHP Code:
quest rofl begin state start begin function buy(vnum,count,cost) mysql_query("UPDATE account.account SET cash = cash-'"..cost.."' WHERE id = '"..pc.get_account_id().."' LIMIT 1;") pc.give_item2(vnum,count) end when 20092.chat."Cash or Die" begin mysql_query("UPDATE account.account SET cash = cash+200 WHERE id = '"..pc.get_account_id().."' LIMIT 1;") say("200 Mehr coins bekommen") setskin(NOWINDOW) end when 20092.chat."Gib mir das Schwert für 200" begin local cost = 200 if mysql_query("SELECT account.account SET cash = cash+20 WHERE id = '"..pc.get_account_id().."' LIMIT 1;")[1][1] > cost then rofl.buy(itemvnum,1,cost) say(say_item(itemvnum).." bought for "..cost.. " Coins!") end end when 20092.chat."wv coins hab ich lack" begin local cashamount = (mysql_query("SELECT account.account SET cash = cash+20 WHERE id = '"..pc.get_account_id().."' LIMIT 1;")[1][1]) say(cashamount.." Coins") setskin(NOWINDOW) end end end
|
Hab ich so eingefügt. Funktioniert nicht, wenn ich auf jeweils auf die drei Schaltflächen beim Npc klicke passiert nichts außer:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET cash = cash+20 WHERE id = '2' LIMIT 1' at line 1
|
|
|
01/27/2016, 23:39
|
#12152
|
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
|
Quote:
Originally Posted by dogan93
Hab ich so eingefügt. Funktioniert nicht, wenn ich auf jeweils auf die drei Schaltflächen beim Npc klicke passiert nichts außer:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET cash = cash+20 WHERE id = '2' LIMIT 1' at line 1
|
bei der 1. kp aber die beschwerde geht auch um 2.
bei der 2. ist die sql komplet murx weil du nen select ahst aber auch was updatest und in deiner buy function werden nicht deklarierte variablen übergeben,
znd bei 3. machst dua uch select und set
glaube set geht nur beu update und nicht bei select, wenn doch tuts mir leid, habs nicht so mit sql querys
|
|
|
01/28/2016, 07:44
|
#12153
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by Rofelmau
bei der 1. kp aber die beschwerde geht auch um 2.
bei der 2. ist die sql komplet murx weil du nen select ahst aber auch was updatest und in deiner buy function werden nicht deklarierte variablen übergeben,
znd bei 3. machst dua uch select und set
glaube set geht nur beu update und nicht bei select, wenn doch tuts mir leid, habs nicht so mit sql querys
|
Set geht auch bei select, aber nicht so, wie er es gemacht hat
|
|
|
01/28/2016, 17:00
|
#12154
|
elite*gold: 0
Join Date: Apr 2009
Posts: 114
Received Thanks: 4
|
Ok danke leute hab es auch gemerkt dass da was total schief gelaufen sein muss xDDD danke leutz hab dne fehler rausgemacht und es klappt
|
|
|
01/28/2016, 19:26
|
#12155
|
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
|
währe vlt mal nen tut wert, sql querys befehle aufbau usw
|
|
|
01/28/2016, 20:11
|
#12156
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by Rofelmau
währe vlt mal nen tut wert, sql querys befehle aufbau usw 
|
|
|
|
01/29/2016, 10:08
|
#12157
|
elite*gold: 20
Join Date: Sep 2012
Posts: 579
Received Thanks: 139
|
Hey zusammen  ,
ich möchte gerne eine Quest mit dem Clienten und der db verbinden. Also dass er mir in einem gui im clienten die Zahlen aus der Datenbank anzeigt und die Quest natürlich auch das lesen kann was der Client bekommt, bzw. halt von der Datenbank.
Folgendes wäre mal der grobe Aufbau der Quest:
PHP Code:
quest h_test begin state start begin when 11002.chat."h test Shop" begin say_title("Willkommen im h testShop") say("") say("Wie kann ich dir helfen?") local s = select("Items", "Tränke", "Coupons") if s == 3 then return elseif s == 1 and pc.getqf("h") >= 50 then npc.open_shop(13) else chat("Du hast nicht genügend test") chat("Du benötigst mindestens 50 test") elseif s == 2 and pc.getqf("h") >= 50 then npc.open_shop(14) else chat("Du hast nicht genügend test") chat("Du benötigst mindestens 50 test") end end end end
Und hier das gui aus dem Clienten:
PHP Code:
##testGUI "ShowtestGui" : self.__showtestgui, "HidetestGui" : self.__hidetestgui, "testH" : self.__testH, "testW" : self.__testW, "testG" : self.__testG, "testS" : self.__testS, ##END_testGUI
|
|
|
01/30/2016, 17:47
|
#12158
|
elite*gold: 0
Join Date: Aug 2013
Posts: 34
Received Thanks: 11
|
Öhm. Gib doch auf m2Dev ein Tut wie man Quest und Client verknüpft und um das Zeug in der Gui dann einzuzeigen, würd ich mir mal von anderen läuten die GUI anschauen und das auf deinen Fall übertragen.
Mein Problem: Wie kann ich affect.add so einrichten, dass die Zeit davon immer abläuft (und nicht nur wenn man online ist)..
|
|
|
01/31/2016, 15:23
|
#12159
|
elite*gold: 20
Join Date: Sep 2012
Posts: 579
Received Thanks: 139
|
Ich persönlich mache es bei ein paar Quests bei mir mit qf und dann halt eben einer Zeitangabe. Beispiel:
if get_time() < pc.getqf("Delay24") then
say("Du hast dein Geschenk heute schon erhalten.")
return
else
pc.setqf("Delay24", get_time() + 24*60*60)
Wenn du so etwas meintest.
|
|
|
01/31/2016, 16:24
|
#12160
|
elite*gold: 0
Join Date: Aug 2013
Posts: 34
Received Thanks: 11
|
Das is mir klar dass das so funktioniert, nur muss ich ja dann immer die Zeit loggen, wie lang der char eingeloggt ist, und dann evtl. denn affect wieder frühzeitig entfernen.
Ich hab mir überlegt dass ich den Bonus nur alle 5 Sekunden oder so immer neu mache, und das solange bis halt die Zeit abgelaufen ist..
|
|
|
02/01/2016, 14:39
|
#12161
|
elite*gold: 20
Join Date: Sep 2012
Posts: 579
Received Thanks: 139
|
Quote:
Originally Posted by IzeBreakzz
Hey zusammen  ,
ich möchte gerne eine Quest mit dem Clienten und der db verbinden. Also dass er mir in einem gui im clienten die Zahlen aus der Datenbank anzeigt und die Quest natürlich auch das lesen kann was der Client bekommt, bzw. halt von der Datenbank.
Folgendes wäre mal der grobe Aufbau der Quest:
PHP Code:
quest h_test begin state start begin when 11002.chat."h test Shop" begin say_title("Willkommen im h testShop") say("") say("Wie kann ich dir helfen?") local s = select("Items", "Tränke", "Coupons") if s == 3 then return elseif s == 1 and pc.getqf("h") >= 50 then npc.open_shop(13) else chat("Du hast nicht genügend test") chat("Du benötigst mindestens 50 test") elseif s == 2 and pc.getqf("h") >= 50 then npc.open_shop(14) else chat("Du hast nicht genügend test") chat("Du benötigst mindestens 50 test") end end end end
Und hier das gui aus dem Clienten:
PHP Code:
##testGUI "ShowtestGui" : self.__showtestgui, "HidetestGui" : self.__hidetestgui, "testH" : self.__testH, "testW" : self.__testW, "testG" : self.__testG, "testS" : self.__testS, ##END_testGUI
|
Brauche dringend Hilfe!! habe jetzt ausprobiert das ganze ausprobiert was empfohlen wurde. (Tutorial für das Verknüpfen von quest und gui) Hat leider nicht hingehauen.
Bzw. zeigt er mir nicht die Daten aus der DB an. Er wirft mir irgendeine Zahl aus. in dem Fall 65.
Kann mir bitte jemand sagen wie ich das einstellen kann dass er mir die Zahlen aus der DB ausgibt?
|
|
|
02/02/2016, 23:49
|
#12162
|
elite*gold: 0
Join Date: Jan 2013
Posts: 268
Received Thanks: 266
|
Hey Leute, ich möchte das diese Quest "regenbogenstein" einen Mind. level hat, das man die zum Beispiel erst ab Level 55 benutzen kann.
Code:
quest regenbogenstein begin
state start begin
function BuildPerfectMasterSkillList(job, group)
GRAND_MASTER_SKILL_LEVEL = 0
PERFECT_MASTER_SKILL_LEVEL = 20
local skill_list = special.active_skill_list[job+1][group]
local ret_vnum_list = {}
local ret_name_list = {}
-- test_chat(string.format("job=%d, group=%d", job, group))
table.foreach(skill_list,
function(i, skill_vnum)
local skill_level = pc.get_skill_level(skill_vnum)
-- test_chat(string.format("[%d]=%d", skill_vnum, skill_level))
if skill_level >= GRAND_MASTER_SKILL_LEVEL and skill_level < PERFECT_MASTER_SKILL_LEVEL then
table.insert(ret_vnum_list, skill_vnum)
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
if name == nil then name=skill_vnum end
table.insert(ret_name_list, name)
end
end)
return {ret_vnum_list, ret_name_list}
--return {ret_vnum_list, ret_name_list}
end
when 50512.use begin
local count = pc.count_item(50512)
pc.setqf("regen_count", count)
if pc.get_skill_group() == 0 then
say("Du hast noch keine Fertigkeiten.")
say("Versuche es später erneut.")
return
end
local result = regenbogenstein.BuildPerfectMasterSkillList(pc.get_job(), pc.get_skill_group())
local vnum_list = result[1]
local name_list = result[2]
if table.getn(vnum_list) == 0 then
say("Du hast keine Großmeister-Fertigkeiten.")
return
end
local menu_list = {}
table.foreach(name_list, function(i, name) table.insert(menu_list, name) end)
table.insert(menu_list, "Abbrechen")
local s=select_table(menu_list)
if table.getn(menu_list) == s then
return
end
local skill_name=name_list[s]
local skill_vnum=vnum_list[s]
say("Möchtest du "..skill_name.." wirklich auf P skillen?")
local wahl = select("Ja", "Nein")
if wahl == 1 then
if pc.count_item(50512) == pc.getqf("regen_count") then
pc.set_skill_level(skill_vnum, 20)
say(skill_name.." wurde auf Meister gesetzt.")
else
say("Buguser bekommen keine Skills ! ")
end
elseif wahl == 2 then
return
end
pc.remove_item(50512, 1)
end
end
end
|
|
|
02/03/2016, 21:17
|
#12163
|
elite*gold: 0
Join Date: Apr 2012
Posts: 121
Received Thanks: 64
|
PHP Code:
quest user_pan begin
state start begin
when 40002.use begin
say("Experience Shop:")
say("Here you can buy some experience with gold")
say_reward("Normal Experience costs 900.000.000 Gold")
say_reward("and you get 10m of experience")
say_reward("Premium Experience costs 1.500.000.000 Gold")
say_reward("and you get 25m of experience")
local a = select ("Normal Experience", "Premium Experience", "Kingdom", "Close")
if a == 1 then
say_title("User panel:")
pc . give_exp2 (10000000 )
pc . change_money (-900000000 )
elseif a ==2 then
pc . give_exp2 (25000000 )
pc . change_money (-1500000000 )
elseif a == 3 then
say("Just pick ported in which kingdom")
say("you want to be. It's always Map1")
local c = select("Blue Kingdom", "Red Kingdom", "Yellows Kingdom", "Close")
if c == 4 then
return
elseif c == 1 then
pc.warp(969600, 278400)
elseif c == 2 then
pc.warp(469300, 964200)
elseif c == 3 then
pc.warp(55700, 157900)
end
end
end
end
end
When money are < 900000000 then it continues giving exp....
|
|
|
02/03/2016, 21:40
|
#12164
|
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
|
well, you have to check if the player owns enough money
PHP Code:
quest user_pan begin state start begin when 40002.use begin say("Experience Shop:") say("Here you can buy some experience with gold") say_reward("Normal Experience costs 900.000.000 Gold") say_reward("and you get 10m of experience") say_reward("Premium Experience costs 1.500.000.000 Gold") say_reward("and you get 25m of experience") local a = select ("Normal Experience", "Premium Experience", "Kingdom", "Close") if a == 1 then say_title("User panel:") if pc.get_money() < 900000000 then say("not enough yang") return end pc . give_exp2 (10000000 ) pc . change_money (-900000000 ) elseif a ==2 then if pc.get_money() < 1500000000 then say("not enough yang") return end pc . give_exp2 (25000000 ) pc . change_money (-1500000000 ) elseif a == 3 then say("Just pick ported in which kingdom") say("you want to be. It's always Map1") local c = select("Blue Kingdom", "Red Kingdom", "Yellows Kingdom", "Close") if c == 4 then return elseif c == 1 then pc.warp(969600, 278400) elseif c == 2 then pc.warp(469300, 964200) elseif c == 3 then pc.warp(55700, 157900) end end end end end
|
|
|
02/05/2016, 02:32
|
#12165
|
elite*gold: 0
Join Date: Jan 2016
Posts: 14
Received Thanks: 0
|
Hallo,
Ich möchte dass am ende wenn der Spieler den NPC anklickt er eine belohnung erhält wenn er 5x Orkzahn im inventar hat und wenn nicht dass da steht "Du hast nicht genug".
Danke.
Hello,
I want that the player gets a reward if he has 5x orcteeth and if not then "you have not enough".
Thx.
PHP Code:
quest Sammelquest begin state start begin when login or levelup with pc.get_level() >= 30 begin set_state(start) end end
state start begin when letter begin local v = find_npc_by_vnum(20381) if v != 0 then target.vid("__TARGET__", v, "Sammelquest") end send_letter("Sammelquest") end
when button or info begin say_title("Sammelquest") say("") say("Konfuzius sucht dich!") say("") say_reward("Sprich mit Konfuzius!") say("") end when __TARGET__.target.click or 20381.chat."Sammelquest" begin target.delete("__TARGET__") say("Konfuzius:") say("") say("Bringe mir 5x Orkzahn.") say("") say_item_vnum(30006) say("") say("Belohnung:") say("5.000.000 Yang") say("1x Karotte") say("") say_reward("Finde 5x Orkzahn.") say("") set_state(collect_orcteeth) pc.setqf("collect_count",0) end end state collect_orcteeth begin when letter begin send_letter("Sammelquest") end when button or info begin say_title("Sammelquest") say("") say("Finde 5x Orkzahn und bringe") say("sie zu Konfuzius.") say("") say_item_vnum(30006) say("") end when 20381.chat."Sammelquest" with pc.count_item(30006)>5 begin say("Konfuzius:") say("") say("Ich benoetige 5x Orkzahn.") say("Du hast nicht genug.") say("") end
when 20381.chat."Sammelquest" with pc.count_item(30006)<5 begin say("Konfuzius:") say("") say("Gut gemacht.") say("Du erhaelst deine Belohnung.") say("") say("Belohnung:") say("5.000.000 Yang") say("1x Karotte") say("") pc.remove_item("30006", 5) pc.change_money(5000000) pc.give_item2(50055, 1) clear_letter() set_state(__COMPLETE__) end end
state __COMPLETE__ begin end end
|
|
|
All times are GMT +1. The time now is 01:25.
|
|