Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 01:24

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[SERVICE] Die Questkontrolle

Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old 01/27/2016, 01:59   #12151
 
elite*gold: 0
Join Date: Apr 2009
Posts: 114
Received Thanks: 4
Quote:
Originally Posted by Rofelmau View Post
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
bzyHac is offline  
Old 01/27/2016, 23:39   #12152
 
Rofelmau's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
Quote:
Originally Posted by dogan93 View Post
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
Rofelmau is offline  
Old 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 View Post
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
rollback is offline  
Old 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
bzyHac is offline  
Old 01/28/2016, 19:26   #12155
 
Rofelmau's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
währe vlt mal nen tut wert, sql querys befehle aufbau usw
Rofelmau is offline  
Thanks
1 User
Old 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 View Post
währe vlt mal nen tut wert, sql querys befehle aufbau usw
rollback is offline  
Thanks
1 User
Old 01/29/2016, 10:08   #12157
 
IzeBreakzz's Avatar
 
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 
== 3 then
            
return
                elseif 
== 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 
== 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 
IzeBreakzz is offline  
Old 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)..
.TehLeno~ is offline  
Old 01/31/2016, 15:23   #12159
 
IzeBreakzz's Avatar
 
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.
IzeBreakzz is offline  
Old 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..
.TehLeno~ is offline  
Old 02/01/2016, 14:39   #12161
 
IzeBreakzz's Avatar
 
elite*gold: 20
Join Date: Sep 2012
Posts: 579
Received Thanks: 139
Quote:
Originally Posted by IzeBreakzz View Post
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 
== 3 then
            
return
                elseif 
== 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 
== 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?
IzeBreakzz is offline  
Old 02/02/2016, 23:49   #12162
 
Blao's Avatar
 
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
Blao is offline  
Old 02/03/2016, 21:17   #12163
 
hacker-2012's Avatar
 
elite*gold: 0
Join Date: Apr 2012
Posts: 121
Received Thanks: 64
Exclamation

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 
== 1 then
            say_title
("User panel:")
                
pc give_exp2 (10000000 )
                
pc change_money (-900000000 )
            elseif 
==2 then
                pc 
give_exp2 (25000000 )
                
pc change_money (-1500000000 )
            elseif 
== 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 
== 4 then
                    
return
                elseif 
== 1 then
                    pc
.warp(969600278400)
                elseif 
== 2 then
                    pc
.warp(469300964200)
                elseif 
== 3 then
                    pc
.warp(55700157900)
                
end
            end
        end
    end
end 


When money are < 900000000 then it continues giving exp....
hacker-2012 is offline  
Old 02/03/2016, 21:40   #12164
 
.Delta's Avatar
 
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 
== 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 
==2 then 
                
if pc.get_money() < 1500000000 then
                    say
("not enough yang")
                    return
                
end
                pc 
give_exp2 (25000000 
                
pc change_money (-1500000000 
            elseif 
== 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 
== 4 then 
                    
return 
                elseif 
== 1 then 
                    pc
.warp(969600278400
                elseif 
== 2 then 
                    pc
.warp(469300964200
                elseif 
== 3 then 
                    pc
.warp(55700157900
                
end 
            end 
        end 
    end 
end 
.Delta is offline  
Thanks
1 User
Old 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 
!= 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(500551)
            
clear_letter()
            
set_state(__COMPLETE__)
        
end
    end

    state __COMPLETE__ begin
    end  
end 
Falo55 is offline  
Reply




All times are GMT +1. The time now is 01:25.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.