Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 08:51

  • 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/14/2015, 20:58   #11896
 
Ide.'s Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 4,075
Received Thanks: 1,235
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   #11897

 
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   #11898
 
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   #11899
 
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   #11900
 
.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   #11901
 
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   #11902
 
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   #11903
 
zazadi's Avatar
 
elite*gold: 76
Join Date: Mar 2015
Posts: 698
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   #11904
 
MilkingCow's Avatar
 
elite*gold: 0
Join Date: Mar 2015
Posts: 119
Received Thanks: 29
Vielen Dank, werde ich testen.
MilkingCow is offline  
Old 09/27/2015, 20:56   #11905
 
MilkingCow's Avatar
 
elite*gold: 0
Join Date: Mar 2015
Posts: 119
Received Thanks: 29
Ich nochmal^^
Bei der Quest ist noch ein Fehler drinne.
Hab noch ein paar mal durchgeschaut aber nichts gefunden.

Danke im vorraus
MilkingCow is offline  
Old 09/27/2015, 22:41   #11906
 
Ide.'s Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 4,075
Received Thanks: 1,235
Quote:
Originally Posted by MilkingCow View Post
Ich nochmal^^
Bei der Quest ist noch ein Fehler drinne.
Hab noch ein paar mal durchgeschaut aber nichts gefunden.

Danke im vorraus
Was wird denn als Fehler angegeben?

Update:

Ich habe mal drüber geschaut und war der Meinung das ein end falsch gesetzt war.
Teste mal folgendes:


Update²: Naverwy's Ausbesserung editiert.
Ide. is offline  
Thanks
1 User
Old 09/27/2015, 23:25   #11907
wild wild son




 
Nick's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 5,994
Received Thanks: 3,389
Quote:
Originally Posted by Ide. View Post
Was wird denn als Fehler angegeben?

Update: Ich habe mal drüber geschaut und war der Meinung das ein end falsch gesetzt war.
Teste mal folgendes:

Der Name der Quest muss noch geändert werden, andernfalls können die Funktionen nicht aufgerufen werden.

Code:
quest give_basic_weapon begin
durch
Code:
quest eq begin
ersetzen. Der Name kann auch beibehalten werden, dafür müsste

Code:
eq.normal()
durch

Code:
give_basic_weapon.normal()
und

Code:
eq.maltasia()
durch

Code:
give_basic_weapon.maltasia()
ersetzt werden.

lg
Nick is offline  
Thanks
1 User
Old 09/27/2015, 23:29   #11908
 
Ide.'s Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 4,075
Received Thanks: 1,235
Quote:
Originally Posted by Naverwy View Post
Danke für's verbessern, hatte das Problem noch nie.
Bin aber dennoch der Meinung das auch ein end falsch gesetzt war...

Habe deins mal mit reineditiert.
Ide. is offline  
Old 09/28/2015, 14:11   #11909
 
MilkingCow's Avatar
 
elite*gold: 0
Join Date: Mar 2015
Posts: 119
Received Thanks: 29
Quote:
Originally Posted by Naverwy View Post
Der Name der Quest muss noch geändert werden, andernfalls können die Funktionen nicht aufgerufen werden.

Code:
quest give_basic_weapon begin
durch
Code:
quest eq begin
ersetzen. Der Name kann auch beibehalten werden, dafür müsste

Code:
eq.normal()
durch

Code:
give_basic_weapon.normal()
und

Code:
eq.maltasia()
durch

Code:
give_basic_weapon.maltasia()
ersetzt werden.

lg
Vielen dank. Dachte ich kann das so verwenden wenn es aufgerufen wird.

Mfg

€: Habe die Quest getestet. Geht auch alles soweit. Aber sobald ich ein EQ wähle bleiben die schwarzen Ränder und es passiert nichts.
MilkingCow is offline  
Old 09/28/2015, 18:52   #11910
 
elite*gold: 0
Join Date: Apr 2009
Posts: 103
Received Thanks: 53
game svn revision: 1765

Hello,

I have a give_basic_weapon.start question, but doesn't work ! I'll be mad soon

Code:
if pc . getqf ( "basic_weapon" ) == 0 then
	say ( pc.get_name() .. " İllüminati2'ye Hoşgeldin.") 
	say ( "" ) 
	say ("Karakterine uygun ekipmanlarını aldın" ) 
	say ( "") 
	say ( "" ) 
	say ("Katokamb, Şeytan Kulesi aktiftir,") 
	say ("70'den sonra seviye görevleri başlar") 
	say ("Server ne kolay ne de zordur, edit satışı yoktur.") 
	say ("[TL]Myth") 
	say ("[TL]REAL") 
	say ("ile iletişime geçebilirsiz") 
	say ( "" ) 
	if pc . get_job ( ) == 0 then --savasci
		pc . give_item2 ( "11269" , 1 )
		pc . give_item2 ( "109" , 1 )
		pc . give_item2 ( "3099" , 1 ) --buzlu uc
		pc . give_item2 ( "12249" , 1 ) --kask
		notice_all ( pc.get_name( .. " (Savaşçı) Yeni oyuncu ") 
	elseif pc . get_job ( ) == 1 then --ninja
		pc . give_item2 ( "1069" , 1 )  -- hancer
		pc . give_item2 ( "2099" , 1 ) --yay
		pc . give_item2 ( "8004" , 200 ) --ok
		pc . give_item2 ( "8004" , 200 ) --ok
		pc . give_item2 ( "8004" , 200 ) --ok
		pc . give_item2 ( "8004" , 200 ) --ok
		pc . give_item2 ( "11469" , 1 ) -- zırh
		notice_all ( pc.get_name( .. " (Ninja) Yeni Oyuncu ") 
	elseif pc . get_job ( ) == 2 then --sura
		pc . give_item2 ( "109" , 1 )
		pc . give_item2 ( "11669" , 1 )
		pc . give_item2 ( "12529" , 1 ) --kask
		notice_all ( pc.get_name( .. " (Sura) Yeni Oyuncu ") 
	elseif pc . get_job ( ) == 3 then --saman
		pc . give_item2 ( "7099" , 1 )
		pc . give_item2 ( "5059" , 1 )
		pc . give_item2 ( "5069" , 1 ) --50lv can
		pc . give_item2 ( "12669" , 1 )
		pc . give_item2 ( "11869" , 1 )
		notice_all ( pc.get_name( .. " (Şaman) Yeni Oyuncu ") 
	end 
	command ("level 48")
	-- iç item
	pc . give_item2 ( "14149" , 1 )
	pc . give_item2 ( "16149" , 1 )
	pc . give_item2 ( "17169" , 1 )
	pc . give_item2 ( "15169" , 1 )
	pc . give_item2 ( "13049" , 1 ) 
	pc . give_item2 ( "40002" , 1 )
	-- iç item

	--ay özütleri
	pc . give_item2 ( "72730" , 1 ) --oto mana
	pc . give_item2 ( "72726" , 1 ) --oto hp
	--ay özütleri

	horse . set_level ( 21 )
	horse . ride ()
	pc . give_item2 ( "71050" , 200 ) 
	pc . give_item2 ( "72702" , 1 ) 
	pc . give_gold ( "5000000" ) 
	pc . give_item2 ( 50052 )
	pc . changealignment ( 2500 ) 
	pc . setqf ( "basic_weapon" , 1 ) 
end
When If I did in GM account /reload q, is refresh object in all quest?

Thankl you for interest.
poXavincS is offline  
Reply




All times are GMT +1. The time now is 08:52.


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.