Register for your free account! | Forgot your password?

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

  • 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 09/08/2015, 11:45   #11896
 
elite*gold: 0
Join Date: Sep 2015
Posts: 3
Received Thanks: 0
VIP Quest

Hatte die VIP Quest eingefügt, das VIP geht zwar, aber sofort wenn ich einen neuen Acc, mit einem neuen Charakter erstelle, bin ich sofort VIP, ohne das VIP Item zu benutzen?

Quote:
.Ryuzaki™ Calls uncleared function:

mysql_query
pc.can_warp
split
string.find
__________________________________________-

Er sagt er kann diese Funktionen nicht "erklären".
Trag diese Funktionen bitte in deine quest_functions ein.
Wenn du Vanilla Core hast, dann heißt es: game.mysql_query

lg
ArmaniMetin2 is offline  
Old 09/08/2015, 14:42   #11897
 
.Delta's Avatar
 
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
Quote:
Originally Posted by ArmaniMetin2 View Post
Hatte die VIP Quest eingefügt, das VIP geht zwar, aber sofort wenn ich einen neuen Acc, mit einem neuen Charakter erstelle, bin ich sofort VIP, ohne das VIP Item zu benutzen?
Wie wäre es, wenn du die Quest mal zeigst?
.Delta is offline  
Thanks
1 User
Old 09/09/2015, 15:20   #11898
 
elite*gold: 0
Join Date: Jan 2009
Posts: 170
Received Thanks: 8
Code:
quest jagd05 begin
	state start begin
		when login or levelup with pc.level >= 1 begin
			set_state(information_lv5)
		end
	end
	
	state information_lv5 begin
		when letter begin
			send_letter("Die Bitte des Hauptmannes")
		end
		
		when button or info begin
			say_title("Die Bitte des Hauptmannes")
			say("")
			say("Der Hauptmann möchte, dass du die")
			say("Dorfbewohner von den grausamen")
			say("Kreaturen schützt, die vor dem Dorf")
			say("ihr Unwesen treiben.")
			say("")
			say_reward("Welche Kreaturen möchtest du erledigen?")
			local a = select("35 Alpha-Blauwolf", "20 Grauwolf")
				if a == 1 then
					say_title("Alpha-Blauwölfe")
					say("")
					say("Der Hauptmann hat dir die Aufgabe erteilt")
					say("35 Alpha-Blauwölfe zu erledigen.")
					say("Du findest sie vor dem Dorf!")
					say("")
					pc.setqf("state1", 35)
					q.set_counter("Alpha-Blauwolf", 35)
					set_state(blauwolf)
				else
					say_title("Grauwölfe")
					say("")
					say("Der Hauptmann hat dir die Aufgabe erteilt")
					say("20 Grauwölfe zu erledigen.")
					say("Du findest sie vor dem Dorf!")
					say("")
					pc.setqf("state2", 20)
					q.set_counter("Grauwolf", 20)
					set_state(grauwolf)
				end
		end
	end
	
	state blauwolf begin
		when letter begin
			send_letter("Alpha-Blauwölfe")
		end
		
		when button or info begin
			say_title("Alpha-Blauwölfe")
			say("")
			say("Der Hauptmann hat dir die Aufgabe erteilt")
			say("35 Alpha-Blauwölfe zu erledigen.")
			say("")
			say_reward("Du musst noch "..pc.getqf("state1").." Alpha-Blauwölfe töten!")
		end
		
		when 105.kill begin
			local count1 = pc.getqf("state1") - 1
			if count1 <= 35 then
				pc.setqf("state1", count1)
				q.set_counter("Alpha-Blauwolf", count1)
			end
			if count == 35 then
				set_state(reward)
			end
		end
	end
	
	state grauwolf begin
		when letter begin
			send_letter("Grauwölfe")
		end
		
		when button or info begin
			say_title("Grauwölfe")
			say("")
			say("Der Hauptmann hat dir die Aufgabe erteilt")
			say("20 Grauwölfe zu erledigen.")
			say("")
			say_reward("Du musst noch "..pc.getqf("state2").." Grauwölfe töten!")
		end
		
		when 106.kill begin
			local count2 = pc.getqf("state2") - 1
			if count2 <= 20 then
				pc.setqf("state2", count2)
				q.set_counter("Grauwolf", count2)
			end
			if count == 20 then
				set_state(reward)
			end
		end
	end
	
	state reward begin
		when letter begin
			send_letter("Auftrag abgeschlossen")
		end
		
		when button or info begin
			say_title("Auftrag abgeschlossen")
			say("")
			say("Du hast die Aufgabe des Hauptmannes")
			say("mit Erfolg abgeschlossen.")
			say("")
			say("Du erhälst:")
			set_state(__COMPLETE__)
		end
	end
	state __COMPLETE__ begin
	end
end
Der State REWARD wird nicht abgerufen.
Bitte im Hilfe!
xKingix is offline  
Old 09/09/2015, 15:41   #11899
 
Ide.'s Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 4,072
Received Thanks: 1,234
Quote:
Originally Posted by xKingix View Post

Der State REWARD wird nicht abgerufen.
Bitte im Hilfe!
Du musst deinem count auch die richtige Benennung geben. In deinem Fall count1 und count2.

PHP Code:
when 105.kill begin
            local count1 
pc.getqf("state1") - 1
            
if count1 <= 35 then
                pc
.setqf("state1"count1)
                
q.set_counter("Alpha-Blauwolf"count1)
            
end
            
if count1 == 35 then
                set_state
(reward)
            
end
        end 
PHP Code:
when 106.kill begin
            local count2 
pc.getqf("state2") - 1
            
if count2 <= 20 then
                pc
.setqf("state2"count2)
                
q.set_counter("Grauwolf"count2)
            
end
            
if count2 == 20 then
                set_state
(reward)
            
end
        end 
Ide. is offline  
Old 09/10/2015, 16:06   #11900
 
Ide.'s Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 4,072
Received Thanks: 1,234
Jetzt habe ich leider selber ein Problem wo ich feststecke. Und zwar möchte ich die Yangbomben an den Bossen per Quest einstellen, damit diese unabhängig von den Rates sind und nicht beeinflusst werden. Zur Zeit sieht das ganze so aus:

PHP Code:
when 1901.kill with pc.get_level() <= 82 begin                -- max 10 level    höher    
            pc
.setqf("bomben_anzahl"66)
            
pc.setqf("bomben_anzahl"pc.getqf("bomben_anzahl") - 1)
            
game.drop_item_with_ownership(25040,1)                    -- 100Segi 
            game
.drop_item_with_ownership(70102,1)                    -- 100Zen-Bohne
            game
.drop_item_with_ownership(50077,1)                    -- 100Truhe
            game
.drop_item_with_ownership(1,200)
            if 
pc.getqf("bomben_anzahl") > 0 then
                game
.drop_item_with_ownership(1,200)
            
end
            
if pc.getqf("bomben_anzahl") <= 0 then
            end    
end 
Da droppt er dann aber leider nur 2x die Yangbombe :/
Ide. is offline  
Old 09/14/2015, 20:27   #11901

 
elite*gold: 0
Join Date: Dec 2008
Posts: 2,825
Received Thanks: 1,538
Quote:
Originally Posted by Ide. View Post
Jetzt habe ich leider selber ein Problem wo ich feststecke. Und zwar möchte ich die Yangbomben an den Bossen per Quest einstellen, damit diese unabhängig von den Rates sind und nicht beeinflusst werden. Zur Zeit sieht das ganze so aus:

PHP Code:
when 1901.kill with pc.get_level() <= 82 begin                -- max 10 level    höher    
            pc
.setqf("bomben_anzahl"66)
            
pc.setqf("bomben_anzahl"pc.getqf("bomben_anzahl") - 1)
            
game.drop_item_with_ownership(25040,1)                    -- 100Segi 
            game
.drop_item_with_ownership(70102,1)                    -- 100Zen-Bohne
            game
.drop_item_with_ownership(50077,1)                    -- 100Truhe
            game
.drop_item_with_ownership(1,200)
            if 
pc.getqf("bomben_anzahl") > 0 then
                game
.drop_item_with_ownership(1,200)
            
end
            
if pc.getqf("bomben_anzahl") <= 0 then
            end    
end 
Da droppt er dann aber leider nur 2x die Yangbombe :/
Code:
when 1901.kill with pc.get_level() <= 82 begin                -- max 10 level    höher    
			if pc.getqf("bomben_anzahl") <= 0 then
				pc.setqf("bomben_anzahl", 66)
            end    
            pc.setqf("bomben_anzahl", pc.getqf("bomben_anzahl") - 1)
            game.drop_item_with_ownership(25040,1)                    -- 100% Segi 
            game.drop_item_with_ownership(70102,1)                    -- 100% Zen-Bohne
            game.drop_item_with_ownership(50077,1)                    -- 100% Truhe
            game.drop_item_with_ownership(1,200)
            if pc.getqf("bomben_anzahl") > 0 then
                game.drop_item_with_ownership(1,200)
            end
end
.Colossus. is offline  
Thanks
1 User
Old 09/14/2015, 20:58   #11902
 
Ide.'s Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 4,072
Received Thanks: 1,234
Yangbomben per Quest

Quote:
Originally Posted by .Colossus. View Post
Code:
when 1901.kill with pc.get_level() <= 82 begin                -- max 10 level höher    
			if pc.getqf("bomben_anzahl") <= 0 then
				pc.setqf("bomben_anzahl", 66)
            end    
            pc.setqf("bomben_anzahl", pc.getqf("bomben_anzahl") - 1)
            game.drop_item_with_ownership(25040,1)                    -- 100% Segi 
            game.drop_item_with_ownership(70102,1)                    -- 100% Zen-Bohne
            game.drop_item_with_ownership(50077,1)                    -- 100% Truhe
            game.drop_item_with_ownership(1,200)
            if pc.getqf("bomben_anzahl") > 0 then
                game.drop_item_with_ownership(1,200)
            end
end
Habe es wie folgt gelöst:

PHP Code:


--------------------------------------------------------------------------------------------------------------------
                                     -- 
Neunschwanz Lv.72 -- 
--------------------------------------------------------------------------------------------------------------------
when kill with npc.get_race() == 1901 and pc.get_level() <= 82 begin    -- max 10 Level höher
            game
.drop_item_with_ownership(25040,1)                    -- 100Segi 
            game
.drop_item_with_ownership(70102,1)                    -- 100Zen-Bohne
            game
.drop_item_with_ownership(50077,1)                    -- 100Truhe
            
for 166do
                
game.drop_item_with_ownership(1,200)
            
end
end 
Für die Leute, die wissen wollen was genau passiert:

Code:
for i = 1, 66, 1 do
Dies ist eine Schleifenfunktion, sprich der darauf folgende Befehl/e, in meinem Fall:

Code:
game.drop_item_with_ownership(1,200)
wird 66x mal wiederholt. Wer jetzt einen zufälligen Yangdrop haben will (es gibt keine Begrenzung soweit ich weiß), löst das ganze mit folgendem Befehl:
Code:
number(200,400)
Der niedrigste Yangdrop beträgt in diesem Fall 200 und der höchste 400 Yang.

Zusammen gesetzt sieht das ganze wie folgt aus:

Code:
game.drop_item_with_ownership(1,number(200,400))
Hoffe damit konnte ich anderen weiterhelfen.
Ide. is offline  
Old 09/15/2015, 14:14   #11903

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by Ide. View Post
Habe es wie folgt gelöst:
Gut erklärt

Ich würde die Abfrage, ob das Monster 10 Level höher ist generisch machen.
Dafür müsste folgendes in die Questlib:
Code:
local mob_levels = {}

for _,v in ipairs(game.mysql_query("SELECT vnum, level FROM player.mob_proto;")) do
	mob_levels[tonumber(v[1])] = tonumber(v[2])
end

function npc.get_level(vnum)
	return mob_levels[vnum or npc.get_race()]
end

function npc.get_level_difference(vnum)
	return math.abs(pc.get_level() - npc.get_level(vnum))
end
Die Quest könnte dann so aussehen:
Code:
when kill with npc.get_race() == 1901 and npc.get_level_difference() <= 10 begin    -- max 10 Level höher 
	game.drop_item_with_ownership(25040,1)                    -- 100% Segi  
	game.drop_item_with_ownership(70102,1)                    -- 100% Zen-Bohne 
	game.drop_item_with_ownership(50077,1)                    -- 100% Truhe 
	for i = 1, 66 do 
		game.drop_item_with_ownership(1,math.random(200, 400)) 
	end
end
ausserdem würde ich vielleicht das Level des Spielers / den Levelunterschied zum Monster bei der Größe der Yangklumpen mit einbeziehen.
rollback is offline  
Thanks
1 User
Old 09/16/2015, 18:24   #11904
 
elite*gold: 0
Join Date: Sep 2015
Posts: 1
Received Thanks: 1
Quote:
Originally Posted by Seחsi View Post
Gut erklärt

Ich würde die Abfrage, ob das Monster 10 Level höher ist generisch machen.
Dafür müsste folgendes in die Questlib:
Code:
local mob_levels = {}

for _,v in ipairs(game.mysql_query("SELECT vnum, level FROM player.mob_proto;")) do
	mob_levels[tonumber(v[1])] = tonumber(v[2])
end

function npc.get_level(vnum)
	return mob_levels[vnum or npc.get_race()]
end

function npc.get_level_difference(vnum)
	return math.abs(pc.get_level() - npc.get_level(vnum))
end
Die Quest könnte dann so aussehen:
Code:
when kill with npc.get_race() == 1901 and npc.get_level_difference() <= 10 begin    -- max 10 Level höher 
	game.drop_item_with_ownership(25040,1)                    -- 100% Segi  
	game.drop_item_with_ownership(70102,1)                    -- 100% Zen-Bohne 
	game.drop_item_with_ownership(50077,1)                    -- 100% Truhe 
	for i = 1, 66 do 
		game.drop_item_with_ownership(1,math.random(200, 400)) 
	end
end
ausserdem würde ich vielleicht das Level des Spielers / den Levelunterschied zum Monster bei der Größe der Yangklumpen mit einbeziehen.
solltest bei der npc.get_level funktion ein bisschen error handling betreiben
return mob_levels[vnum or npc.get_race()] or 0 würde besser sein falls der index nicht existiert
brrr Remix is offline  
Thanks
1 User
Old 09/24/2015, 11:13   #11905
 
I´m Raylee's Avatar
 
elite*gold: 105
Join Date: Jun 2015
Posts: 453
Received Thanks: 294
Hi
Kann mir jemand bitte bei dieser Quest helfen?

Ich kann diese Quest nicht compilen :/
Code:
quest levelup_notice begin
	state start begin
		when login or levelup begin
			local gm_allowed = true -- Ob bei GMs die Meldung auch kommt
			if not gm_allowed and pc.is_gm() then return end
			local level_list = {
				10,20,30,40,50,60,70,80,90,100
			}
			table.foreach(level_list, function(i)
				if pc.get_level() == level_list[i] then
					notice_all(string.format("Der Spieler %s hat soeben das Level %d erreicht!", pc.get_name(), level_list[i])) break
				end
			end)
		end
	end
end


Fehler:
I´m Raylee is offline  
Old 09/24/2015, 13:07   #11906
 
.Various's Avatar
 
elite*gold: 35
Join Date: Aug 2014
Posts: 336
Received Thanks: 267
Quote:
Originally Posted by I´m Raylee View Post
Hi
Kann mir jemand bitte bei dieser Quest helfen?

Ich kann diese Quest nicht compilen :/
Code:
quest levelup_notice begin
	state start begin
		when login or levelup begin
			local gm_allowed = true -- Ob bei GMs die Meldung auch kommt
			if not gm_allowed and pc.is_gm() then return end
			local level_list = {
				10,20,30,40,50,60,70,80,90,100
			}
			table.foreach(level_list, function(i)
				if pc.get_level() == level_list[i] then
					notice_all(string.format("Der Spieler %s hat soeben das Level %d erreicht!", pc.get_name(), level_list[i])) break
				end
			end)
		end
	end
end


Fehler:
Untested, sollte aber gehen:

Code:
quest levelup_notice begin
	state start begin
		when login or levelup begin
			local level_list = ({
				[10] = 10,	[20] = 20,	[30] = 30,	[40] = 40,	[50] = 50,	[60] = 60,	[70] = 70,	[80] = 80,	[90] = 90,	[100] = 100
			})[pc.get_level()]
			if level_list == nil then
				return
			else
				notice_all(string.format("Der Spieler %s hat soeben das Level %d erreicht!", pc.get_name(), level_list))
			end
		end
	end
end
.Various is offline  
Thanks
1 User
Old 09/24/2015, 21:30   #11907
 
I´m Raylee's Avatar
 
elite*gold: 105
Join Date: Jun 2015
Posts: 453
Received Thanks: 294
Danke dir funktioniert super!
I´m Raylee is offline  
Old 09/25/2015, 18:12   #11908
 
MilkingCow's Avatar
 
elite*gold: 0
Join Date: Mar 2015
Posts: 119
Received Thanks: 29
Hab ein kleines Problem mit meiner give_basic_weapon.quest.
Queste erst seit gestern, und konnte den Fehler nicht finden.
Bin über jede Antwort erfreut

MilkingCow is offline  
Old 09/25/2015, 19:04   #11909
 
zazadi's Avatar
 
elite*gold: 21
Join Date: Mar 2015
Posts: 679
Received Thanks: 245
Quote:
Originally Posted by MilkingCow View Post
Hab ein kleines Problem mit meiner give_basic_weapon.quest.
Queste erst seit gestern, und konnte den Fehler nicht finden.
Bin über jede Antwort erfreut

So sollte es denke ich mal gehen:
zazadi is offline  
Old 09/25/2015, 19:32   #11910
 
MilkingCow's Avatar
 
elite*gold: 0
Join Date: Mar 2015
Posts: 119
Received Thanks: 29
Vielen Dank, werde ich testen.
MilkingCow is offline  
Reply




All times are GMT +2. The time now is 01:52.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.