Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 20:05

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

Advertisement



[SERVICE] Die Questerstellung

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

Reply
 
Old 04/08/2017, 18:41   #3631
 
elite*gold: 0
Join Date: Jun 2011
Posts: 13
Received Thanks: 0
Geht immernoch nicht

Moin, die Quest funktioniert jetzt so wie sie soll allerdings stört mich noch eine sache..
der 2. questbrief zurück zum stallburschen soll ja erscheinen sobald ich lvl 10 erreicht habe und 10 pms habe..
aber mal angenommen ich werde lvl 10, habe aber erst 9 medailen, hebe ich dann die 10. auf kommt der 2. questbrief nicht...
erscheint nur wenn ich bereits 10 medailen habe und dann lvl 10 erreiche..
kann einer das noch so umschreiben das es egal ist was ich zuerst erreiche, wenn die bedingungen lvl 10 und 10 pms erfüllt sind der questbrief automatisch aufploppt?
PHP Code:
quest horse_getting begin
    state start begin
        when login begin
            send_letter
("Der Stallbursche braucht deine Hilfe")
        
end
        when button 
or info begin
            say_title
("Ich brauche dringend Hilfe "..pc.get_name())
            
say("Ich war letztens auf einer Fortbildung.")
            
say("Auf dem Rueckweg ist mir meine Tasche gerissen")
            
say("und habe ein paar meiner Medailen verloren.")
            
say_item_vnum(50050)
            
say(string.format("Geh und bringe mir bitte %d dieser Medailen wieder"10))
            
say(string.format("wenn du hier dein %d. Lebensjahr erreicht hast."10))
        
end
        when login 
or levelup with pc.get_level()>=and pc.count_item(50050)>=9 begin
            set_state
(anfang)
        
end
    end
    state anfang begin
        when letter begin
            send_letter
("Zurueck zum Stallburschen")
            
local vid find_npc_by_vnum(20349)
            if 
vid ~= 0 then
                target
.vid("TARGET_HORSE_GETTING"vid"Zurueck zum Stallburschen")
            
end
        end
        when TARGET_HORSE_GETTING
.target.click begin
            
if pc.count_item(50050)<=9 then
                say
("Komme wieder wenn du 10 meiner Medailen hast")
                return
            
end
            pc
.remove_item(5005010)
            
pc.give_item2(500511)
            
pc.set_skill_level(13110)
            
horse.set_level(1)
            
horse.summon()
            
horse.ride()
            
say("Heey nicht so schnell das Ding hat")
            
say("mich viel Arbeit gekostet.")
            
set_state(ende)
        
end
    end
    state ende begin
    end
end 
Delta371 is offline  
Old 04/16/2017, 00:42   #3632
 
thecryfromhell's Avatar
 
elite*gold: 0
Join Date: Aug 2010
Posts: 135
Received Thanks: 6
irdenwelche Sachen gegen Coins tauschen, geht das?

hallo,
gibt es überhaupt eine Quest wo ich zb irgendwelche sachen habe und die gegen Coins tauschen kann.
Also besser ausgedrück wenn der Player z.b 100x von einem X item (sagen wir mal Perlen) hat kann er sie bei einem NPC gegen Coins umtauschen.
danke.
thecryfromhell is offline  
Old 04/22/2017, 11:45   #3633
 
.Risan.'s Avatar
 
elite*gold: 30
Join Date: Jul 2010
Posts: 1,627
Received Thanks: 1,450
Quote:
Originally Posted by Delta371 View Post
Moin, die Quest funktioniert jetzt so wie sie soll allerdings stört mich noch eine sache..
der 2. questbrief zurück zum stallburschen soll ja erscheinen sobald ich lvl 10 erreicht habe und 10 pms habe..
aber mal angenommen ich werde lvl 10, habe aber erst 9 medailen, hebe ich dann die 10. auf kommt der 2. questbrief nicht...
erscheint nur wenn ich bereits 10 medailen habe und dann lvl 10 erreiche..
kann einer das noch so umschreiben das es egal ist was ich zuerst erreiche, wenn die bedingungen lvl 10 und 10 pms erfüllt sind der questbrief automatisch aufploppt?
PHP Code:
quest horse_getting begin
    state start begin
        when login begin
            send_letter
("Der Stallbursche braucht deine Hilfe")
        
end
        when button 
or info begin
            say_title
("Ich brauche dringend Hilfe "..pc.get_name())
            
say("Ich war letztens auf einer Fortbildung.")
            
say("Auf dem Rueckweg ist mir meine Tasche gerissen")
            
say("und habe ein paar meiner Medailen verloren.")
            
say_item_vnum(50050)
            
say(string.format("Geh und bringe mir bitte %d dieser Medailen wieder"10))
            
say(string.format("wenn du hier dein %d. Lebensjahr erreicht hast."10))
        
end
        when login 
or levelup with pc.get_level()>=and pc.count_item(50050)>=9 begin
            set_state
(anfang)
        
end
    end
    state anfang begin
        when letter begin
            send_letter
("Zurueck zum Stallburschen")
            
local vid find_npc_by_vnum(20349)
            if 
vid ~= 0 then
                target
.vid("TARGET_HORSE_GETTING"vid"Zurueck zum Stallburschen")
            
end
        end
        when TARGET_HORSE_GETTING
.target.click begin
            
if pc.count_item(50050)<=9 then
                say
("Komme wieder wenn du 10 meiner Medailen hast")
                return
            
end
            pc
.remove_item(5005010)
            
pc.give_item2(500511)
            
pc.set_skill_level(13110)
            
horse.set_level(1)
            
horse.summon()
            
horse.ride()
            
say("Heey nicht so schnell das Ding hat")
            
say("mich viel Arbeit gekostet.")
            
set_state(ende)
        
end
    end
    state ende begin
    end
end 

Klar: Hier:

Code:
quest horse_getting begin
	state start begin
		when login begin
			send_letter("Der Stallbursche braucht deine Hilfe")
		end
		when button or info begin
			say_title("Ich brauche dringend Hilfe "..pc.get_name())
			say("Ich war letztens auf einer Fortbildung.")
			say("Auf dem Rueckweg ist mir meine Tasche gerissen")
			say("und habe ein paar meiner Medailen verloren.")
			say_item_vnum(50050)
			say(string.format("Geh und bringe mir bitte %d dieser Medailen wieder", 10))
			say(string.format("wenn du hier dein %d. Lebensjahr erreicht hast.", 10))
		end
		when login or levelup or pick.50050 with pc.get_level()>=10 and pc.count_item(50050)>=10 begin 
			set_state(anfang)
		end
	end
	state anfang begin
		when letter begin
			send_letter("Zurueck zum Stallburschen")
			local vid = find_npc_by_vnum(20349)
			if vid ~= 0 then
				target.vid("TARGET_HORSE_GETTING", vid, "Zurueck zum Stallburschen")
			end
		end
		when TARGET_HORSE_GETTING.target.click begin
			if pc.count_item(50050)<=9 then
				say("Komme wieder wenn du 10 meiner Medailen hast")
				return
			end
			pc.remove_item(50050, 10)
			pc.give_item2(50051, 1)
			pc.set_skill_level(131, 10)
			horse.set_level(1)
			horse.summon()
			horse.ride()
			say("Heey nicht so schnell das Ding hat")
			say("mich viel Arbeit gekostet.")
			set_state(ende)
		end
	end
	state ende begin
	end
end
.Risan. is offline  
Old 04/30/2017, 21:41   #3634
 
"Sh4Xx"'s Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 669
Received Thanks: 243
Bräuchte ne Quest, wenn ein bestimtes monste Stirbt das ein NPC für 5 minuten Spawnt danach verschwindet
"Sh4Xx" is offline  
Old 05/01/2017, 01:29   #3635

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by "Sh4Xx" View Post
Bräuchte ne Quest, wenn ein bestimtes monste Stirbt das ein NPC für 5 minuten Spawnt danach verschwindet
Das geht leider nicht sauber ohne eine Anpassung am Source.

Ein NPC ist (für die Questfunktionen) an einen Spieler gebunden. Man kann also ohne Spieler keinen NPC despawnen.
Wenn der Spieler, der das Monster tötet und damit den NPC spawnt die kompletten 5 Minuten Online und auf der gleichen Map bleibt kann man das machen, allerdings kann man das natürlich nicht garantieren.

Ich kann nicht wirklich C++ und kenne mich mit dem Source von Metin auch nicht wirklich aus, aber folgendes könnte funktionieren:
questlua_npc.cpp
Code:
	int npc_purge_vid(lua_State * L)
	{
		if (!lua_isnumber(L, 1))
		{
			lua_pushboolean(L, 0);
			return 1;
		}
		
		// check if npc exists
		LPCHARACTER npc = CHARACTER_MANAGER::instance().Find((DWORD)lua_tonumber(L, 1));
		if (npc)
		{
			// remove selected npc if necessary
			LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
			if (ch && ch->GetQuestNPC() == npc)
			{
				ch->SetQuestNPCID(0);
			}
			
			M2_DESTROY_CHARACTER(npc);
			lua_pushboolean(L, 1);
		}
		else
		{
			lua_pushboolean(L, 0);
		}
		
		return 1;
	}
Quest
Code:
define MONSTER_VNUM 1093
define NPC_VNUM 9001
define NPC_ALIVE_DURATION 60 * 5

quest npc_spawn begin
	state start begin
		when kill with npc.get_race() == MONSTER_VNUM begin
			local oldNpcVID = game.get_event_flag("special_npc_spawn_vid")
			if oldNpcVID ~= 0 then
				clear_server_timer("purge_special_npc")
				npc.purge_vid(oldNpcVID)
			end
			
			local spawnedNpcVID = mob.spawn(NPC_VNUM, pc.get_local_x(), pc.get_local_y(), 1)
			game.set_event_flag("special_npc_spawn_vid", spawnedNpcVID)
			server_timer("purge_special_npc", NPC_ALIVE_DURATION)
		end
		
		when purge_special_npc.server_timer begin
			local npcVID = game.get_event_flag("special_npc_spawn_vid")
			if npcVID ~= 0 then
				npc.purge_vid(npcVID)
			end
		end
	end
end
Noch besser wäre es natürlich, wenn man die Questfunktion zum Spawnen eines Monsters/NPCs um ein Argument mit der "Lebenszeit" erweitern würde. Das müsste allerdings jemand anderes für dich machen.
rollback is offline  
Thanks
1 User
Old 05/05/2017, 20:10   #3636
 
elite*gold: 0
Join Date: Sep 2015
Posts: 49
Received Thanks: 2
ich kann den namen nicht ändern vip quest

PHP Code:
--------------------------------------------
-- 
written by Kilroy.  
-- 
Benötigt Questlib ErweitMijago
--------------------------------------------
quest vip_by_kilroy begin
    state start begin
        when 9010.take with item
.get_vnum()== 35004 and string.find(pc.get_name(), "VIP)") != nil begin
            say
("Sehr Gut, du konntest dich mit deinem")
            
say("VIP-Ticket ausweisen.")
            
say("")
            
say("Soll ich dich also zur VIP-Map bringen?")
            if 
select("Ja""Nein")==2 then return end
            pc
.warp9477800,9484700) -- natürlich Anpassen.
        
end
        when login with not npc
.is_pc() and pc.getqf("first_vip")==0 begin
            
if string.find(pc.get_name(), "VIP)") != nil then
                timer
("login_vip"2)
            
end
        end
        when login_vip
.timer begin 
            say_title
("VIP-Status")
            
say("")
            
say("Da diese Meldung erschienen ist, wurde der")
            
say("VIP-Vorgang erfolgreich abgeschlossen.")
            
say("")
            
say("Dir stehen nun einige Features zu, die andere")
            
say("Spieler nicht haben.")
            
wait()
            
say_title("VIP-Status")
            
say("")
            
say("Nun erhälst du erstmal dein VIP-Kit")
            
say("und weitere Informationen.")
            
say("")
            
say("Wie du bestimmt bemerkt hast, schwebt")
            
say("über dir ein VIP-Symbol, dieses kannst du")
            
say("durch die Chateingabe von (vip) rufen.")
            
say("")
            
say("Du erhälst jetzt ein VIP-Ticket mit dem du")
            
say_reward("Hiermit kannst du zur VIP Map.")
            
say("")
            
say("Ziehe dafür das VIP-Ticket auf den jeweiligen")
            
say("NPC. Das war erstmal, Viel Spaß noch!")
            
pc.give_item2(350041)
            
pc.setqf("first_vip",1)
        
end
        when 35002.
use begin
            
if string.find(pc.get_name(), "VIP)") == nil then
                say_title
("Hallo "..pc.get_name().."!")
                
say("Mit diesem Item kannst du den VIP Status aktivieren.")
                
say("")
                
say_title("Infos:")
                
say("Nach erfolgreicher Nutzung wirst du gekickt!")
                
say("Du hast dann einen 20 Minuten Bann, nach der ")
                
say("den 20 Minuten ist der Vorgang abgeschlossen ")
                
say("und dein Account ist wieder frei!")
                
say("")
                
say("")
                
say("Möchtest du?")
                
say(pc.get_name().." --------> (VIP)"..pc.get_name())
                if 
select("Ja""Nein")==2 then return end
                vip_by_kilroy
.check_premise(35002)
                if 
string.len(pc.get_name())<= and not vip_by_kilroy.player_exists("(VIP)"..pc.get_name()) then
                    say_title
("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
notice_all(pc.get_name().." ist nun ein VIP-Mitglied auf Kiyoshi2")
                    
mysql_query("UPDATE player.player SET name='(VIP)"..pc.get_name().."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='(VIP)"..pc.get_name().."');")
                    
pc.remove_item(350021)
                    
cmdchat("exit")
                else
                    
say_title(pc.get_name().."!")
                    
say("")
                    
say("Die Vorraussetzungen zwingen dich einen")
                    
say("neuen Namen zuwählen. Mögliche Gründe")
                    
say("sind ein zu langer Name oder dein")
                    
say("Name existiert mit VIP bereits.")
                    
say("")
                    
say_reward("Möchtest du ihn ändern um VIP zuwerden?")
                    if 
select("Ja""Nein")==2 then return end
                    say_title
("Name wechseln")
                    
say("Gib bitte deinen Wunschnamen ein:")
                    
say_reward("Beachte!")
                    
say_reward("Nicht mehr als 7 oder weniger als 2 Buchstaben.")
                    
say_reward("Sonderzeichen sind nicht erlaubt.")
                    
local inp input()
                    if 
vip_by_kilroy.vip_premise(inp721then
                        say_title
("Name wechseln")
                        
say("")
                        
say("Dein neuer Name besitzt entweder mehr als 7,")
                        
say("weniger als 2 Buchstaben oder enthält ein")
                        
say("unzulässiges Zeichen.")
                        return
                    elseif 
vip_by_kilroy.player_exists("(VIP)"..inpthen
                        say_title
("Name wechseln")
                        
say("")
                        
say("Dieser Name existiert bereits,")
                        
say("versuch es mit einem neuen erneut!")
                        return 
                    
end
                    say_title
("Super!")
                    
say("Dein Name erfüllt alle Voraussetzungen.")
                    
say("")
                    
say_title("Letzter Check")
                    
say("Möchtest du wirklich mit dem Namen")
                    
say("(VIP)"..inp.." dein Vip-Status aktivieren?")
                    if 
select("Ja""Nein")==2 then return end
                    vip_by_kilroy
.check_premise(35002)
                    
say_title("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
notice_all(pc.get_name(), " heißt jetzt "..inp.." und ist nun ein VIP-Mitglied auf ....")
                    
mysql_query("UPDATE player.player SET name='(VIP)"..inp.."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='(VIP)"..inp.."');")
                    
pc.remove_item(350021)
                    
cmdchat("exit")
                
end
            
else
                
say_title("Hallo "..pc.get_name().."!")
                
say("")
                
say("Du hast dein VIP-Status schon aktiviert,")
                
say("sollte dies nicht der Fall sein, kontaktiere")
                
say("bitte einen Teamler.")
                
say("")
                
say("Viel Spaß weiterhin!")
            
end
        end
        when 35003.
use begin
            
if string.find(pc.get_name(), "VIP)") != nil then
                say_title
("Hallo "..pc.get_name().."!")
                
say("Mit diesem Item kannst du den VIP Status")
                
say("zurücksetzen..")
                
say("")
                
say_title("Infos:")
                
say("Nach erfolgreicher Nutzung wirst du gekickt!")
                
say("Du hast dann einen 20 Minuten Bann, nach der ")
                
say("den 20 Minuten ist der Vorgang abgeschlossen ")
                
say("und dein Account ist wieder frei!")
                
say("")
                
say("")
                
say("VIP Status zurücksetzen?")
                
say(string.format("%s ----> %s"pc.get_name(), string.sub(pc.get_name(), string.len("(VIP) "))))
                if 
select("Ja""Nein")==2 then return end
                vip_by_kilroy
.check_premise(35003)
                
spl split(pc.get_name(), "VIP)") -- Split Name bei VIP)
                if 
not vip_by_kilroy.player_exists(spl[2]) then
                    say_title
("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
mysql_query("UPDATE player.player SET name='"..spl[2].."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='"..spl[2].."');")
                    
item.remove()
                    
cmdchat("exit")
                else
                    
say_title("Dein Name!")
                    
say("Es scheint so als würde dein Name.")
                    
say("ohne das (VIP) bereits existieren,")
                    
say("das ist aber nicht schlimm, denn du kannst")
                    
say("ihn hier und jetzt ändern.")
                    
say("")
                    
say_reward("Möchtest du ihn ändern um VIP loszuwerden?")
                    if 
select("Ja""Nein")==2 then return end
                    say_title
("Name wechseln")
                    
say("Gib bitte deinen Wunschnamen ein:")
                    
say_reward("Beachte!")
                    
say_reward("Nicht mehr als 7 oder weniger als 2 Buchstaben.")
                    
say_reward("Sonderzeichen sind nicht erlaubt.")
                    
local inp input()
                    if 
vip_by_kilroy.vip_premise(inp721then
                        say_title
("Name wechseln")
                        
say("")
                        
say("Dein neuer Name besitzt entweder mehr als 7,")
                        
say("weniger als 2 Buchstaben oder enthält ein")
                        
say("unzulässiges Zeichen.")
                        return
                    elseif 
not vip_by_kilroy.player_exists(inpthen
                        say_title
("Name wechseln")
                        
say("")
                        
say("Ich habe festgestellt das dein neuer Name bereits")
                        
say("existiert, versuch es mit einem neuen erneut!")
                        return 
                    
end
                    say_title
("Super!")
                    
say("Dein Name erfüllt alle Voraussetzungen.")
                    
say("")
                    
say_title("Letzter Check")
                    
say("Möchtest du wirklich mit dem Namen")
                    
say(inp.." dein Vip-Status zurücksetzen?")
                    if 
select("Ja""Nein")==2 then return end
                    vip_by_kilroy
.check_premise(35003)
                    
say_title("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
spl split(pc.get_name(), "VIP)")
                    
mysql_query("UPDATE player.player SET name='"..inp.."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='"..inp.."');")
                    
item.remove()
                    
cmdchat("exit")
                
end
            
else
                
say_title("Hallo "..pc.get_name().."!")
                
say("Du hast deinen VIP-Status")
                
say("noch garnicht aktiviert.")
            
end
        end
        
function player_exists(name)
            if 
tonumber(mysql_query("select count(*) from player.player where name = '"..name.."';")[1][1]) >= 1 then
                
return true
            end
        end
        
function vip_premise(namemaximinisonder)
            if 
sonder != 0 then
                
if string.len(name) > maxi or name == "" or string.len(name) < mini then
                    
return true
                end
            
else
                if 
string.len(name) > maxi or name == "" or string.len(name) < mini or string.find(name"(%W)") ~= nil then
                    
return true
                end
            end
        end
        
function check_premise(item)
            if 
pc.is_married() then
                say
("Während du verheiratet bist kannst du")
                
say("kein VIP werden.")
                return
            elseif 
pc.is_polymorphed() then
                say
("Während du verwandelt bist kannst du")
                
say("kein VIP werden.")
                return
            elseif 
not pc.can_warp() then
                say
("Du hast vorkurzem gehandelt, so kannst du")
                
say("kein VIP werden.")    
                return
            elseif 
pc.has_guild() then
                say
("Während du in einer Gilde bist kannst du")
                
say("kein VIP werden.")
                return
            elseif 
party.is_party() then
                say
("Während du in einer Gruppe bist kannst du")
                
say("kein VIP werden.")
                return                        
            elseif 
pc.count_item(item) < 1 then
                say
("Bugusern wird kein VIP entzogen!")
                return
            
end
        end
    end
end
-----------------------------------------
-- 
written by Kilroy.
-- 
Benötigt Questlib ErweitMijago
------------------------------------------ 

bekomme diesen fehler

SYSERR: May 5 19:35:09 :: RunState: LUA_ERROR: locale/germany/quest/questlib.lua:3439: invalid pattern capture
SYSERR: May 5 19:35:09 :: WriteRunningStateToSyserr: LUA_ERROR: quest vip_by_kilroy.start click
SYSERR: May 5 19:36:08 :: RunState: LUA_ERROR: locale/germany/quest/questlib.lua:3439: invalid pattern capture
SYSERR: May 5 19:36:08 :: WriteRunningStateToSyserr: LUA_ERROR: quest vip_by_kilroy.start click
Kiyoshi2 is offline  
Old 05/06/2017, 12:27   #3637
 
x"Kazuki's Avatar
 
elite*gold: 50
Join Date: Aug 2014
Posts: 508
Received Thanks: 201
Guten Tag,

ich bräuchte eine Quest, die dauerhaft als "Quest-Rolle" angezeigt wird.
Am schönsten wäre es, wenn die Quest immer den aktuellen Spielerzahlenstand anzeigen würde.

Ist das möglich?

Best Regards,
x"Kazuki
x"Kazuki is offline  
Old 05/19/2017, 00:46   #3638

 
elite*gold: 0
Join Date: Nov 2011
Posts: 343
Received Thanks: 10
Ich hab ein Neues Problem:

Wie schaff ich es, das hier die 24 Stunden raus genommen werden, das ich das pferd nach meiner Abgabe der PM bekomme?


Code:
quest pony_buy begin
	state start begin
		when 20349.chat.gameforge.pony_buy._10_npcChat with horse.get_grade()==0 begin
			if pc.level<=24 then
				say_title(gameforge.horse_exchange_ticket._20_sayTitle)
				say(gameforge.pony_buy._20_say)
			elseif pc.countitem("50050")<1 then
				say_title(gameforge.horse_levelup._240_sayTitle)
				say(gameforge.pony_buy._30_say)
				setstate(need_item50050)
			elseif pc.countitem("50050")>=1 and pc.level>=25 then
				say_title(gameforge.horse_levelup._240_sayTitle)
				say(gameforge.pony_buy._40_say)
				local b= select(gameforge.find_brother_article._90_select, gameforge.find_brother_article._100_select)
				if 1==b then
					if pc.countitem("50050")>=1 then
						pc.removeitem("50050", 1)
						setstate(test)
					end
				elseif 2==b then
					say_title(gameforge.horse_exchange_ticket._20_sayTitle)
					say(gameforge.pony_buy._50_say)
				else
					say(string.format(gameforge.find_squareguard._70_say, b))
				end
			else
				say_title(gameforge.horse_exchange_ticket._20_sayTitle)
				say(gameforge.pony_buy._60_say)
			end
		end
	end
	state need_item50050 begin
		when letter begin
			setskin(NOWINDOW)
			makequestbutton(gameforge.horse_upgrade2._100_makequestbutton)
			q.set_title(gameforge.horse_upgrade2._100_makequestbutton)
			q.start()
		end
		when button begin
			say_title(gameforge.buy_fishrod._210_sayTitle)
						say_reward(gameforge.pony_buy._70_sayReward)
			setstate(start)
			q.done()
		end
		when info begin
			say_title(gameforge.buy_fishrod._210_sayTitle)
						say_reward(gameforge.pony_buy._70_sayReward)
			setstate(start)
			q.done()
		end
	end
	state test begin
		when letter begin
			q.set_counter(gameforge.pony_buy._test_503_count, 20-pc.getqf("kill_count"))
		end
		when 503.kill begin
			pc.setqf("kill_count", pc.getqf("kill_count")+1)
			q.set_counter(gameforge.pony_buy._test_503_count, 20-pc.getqf("kill_count"))
			if get_time()>=pc.getqf("limit_time") then
				setstate(failure)
			end
		end
		when letter begin
			q.set_clock(gameforge.horse_upgrade2.rest_time, pc.getqf("limit_time")-get_time())
		end
		when enter begin
			pc.setqf("limit_time", get_time()+30*60)
			pc.setqf("kill_count", 0)
		end
		when leave begin
			q.done()
		end
		when letter begin
			setskin(NOWINDOW)
			makequestbutton(gameforge.pony_buy._80_makequestbutton)
			q.set_title(gameforge.pony_buy._80_makequestbutton)
			q.start()
		end
		when button begin
			say_title(gameforge.pony_buy._80_makequestbutton)
						say_reward(gameforge.pony_buy._90_sayReward)
					end
		when info begin
			say_title(gameforge.pony_buy._80_makequestbutton)
			say(gameforge.pony_buy._100_say)
		end
		when 503.kill with pc.getqf("kill_count") >= 20 and pc.getqf("limit_time")>=get_time() begin
			setstate(report)
		end
		when 20349.chat.gameforge.pony_buy._110_npcChat with horse.get_grade()!=0 begin
			setstate(start)
			q.done()
		end
		when 20349.chat.gameforge.pony_buy._120_npcChat begin
			say_title(gameforge.horse_exchange_ticket._20_sayTitle)
						say_reward(gameforge.pony_buy._130_sayReward)
						local b= select(gameforge.locale.levelup.prev_quest_go, gameforge.pony_buy._140_select)
			if 1==b then
			elseif 2==b then
				say_title(gameforge.horse_exchange_ticket._20_sayTitle)
				say(gameforge.pony_buy._150_say)
				local b= select(gameforge.locale.guild.yes, gameforge.pony_buy._160_select)
				if 1==b then
					say_title(gameforge.horse_exchange_ticket._20_sayTitle)
					say(gameforge.pony_buy._170_say)
					setstate(start)
					q.done()
				elseif 2==b then
					say_title(gameforge.pony_buy._180_sayTitle)
					say(gameforge.pony_buy._190_say)
				else
					say(string.format(gameforge.find_squareguard._70_say, b))
				end
			else
				say(string.format(gameforge.find_squareguard._70_say, b))
			end
		end
	end
	state report begin
		when letter begin
			setskin(NOWINDOW)
			makequestbutton(gameforge.horse_upgrade2._230_makequestbutton)
			q.set_title(gameforge.horse_upgrade2._230_makequestbutton)
			q.start()
		end
		when button begin
			say_title(gameforge.horse_upgrade2._230_makequestbutton)
						say_reward(gameforge.horse_upgrade2._240_sayReward)
					end
		when info begin
			say_title(gameforge.horse_upgrade2._230_makequestbutton)
						say_reward(gameforge.horse_upgrade2._240_sayReward)
					end
		when 20349.chat.gameforge.horse_upgrade2._250_npcChat with horse.get_grade()!=0 begin
			setstate(start)
			q.done()
		end
		when 20349.chat.gameforge.horse_upgrade2._260_npcChat with horse.get_grade()==0 begin
			say_title(gameforge.horse_exchange_ticket._20_sayTitle)
			say(gameforge.pony_buy._200_say)
			if is_test_server() then
				pc.setqf("make_time", get_time()+10)
			else
				pc.setqf("make_time", get_time()+number(8, 16)*60*60)
			end
			setstate(wait)
		end
	end
	state wait begin
		when letter begin
			setskin(NOWINDOW)
			makequestbutton(gameforge.pony_buy._210_makequestbutton)
			q.set_title(gameforge.pony_buy._210_makequestbutton)
			q.start()
		end
		when button begin
			say_title(gameforge.pony_buy._210_makequestbutton)
			say(gameforge.pony_buy._220_sayReward)
		end
		when info begin
			say_title(gameforge.pony_buy._210_makequestbutton)
			say(gameforge.pony_buy._220_sayReward)
		end
		when login with get_time()>=pc.getqf("make_time") begin
			setstate(buy)
		end
		when 20349.chat.gameforge.horse_upgrade2._250_npcChat with horse.get_grade()!=0 begin
			setstate(start)
			q.done()
		end
		when 20349.chat.gameforge.pony_buy._230_npcChat with horse.get_grade()==0 begin
			say_title(gameforge.horse_exchange_ticket._20_sayTitle)
			say(gameforge.pony_buy._240_say)
		end
	end
	state buy begin
		when letter begin
			setskin(NOWINDOW)
			makequestbutton(gameforge.pony_buy._250_makequestbutton)
			q.set_title(gameforge.pony_buy._250_makequestbutton)
			q.start()
		end
		when button begin
			say_title(gameforge.pony_buy._250_makequestbutton)
			say(gameforge.pony_buy._260_sayReward)
		end
		when info begin
			say_title(gameforge.pony_buy._250_makequestbutton)
			say(gameforge.pony_buy._260_sayReward)
		end
		when 20349.chat.gameforge.pony_buy._270_npcChat with horse.get_grade()==0 and get_time()>=pc.getqf("make_time") begin
			say_title(gameforge.pony_buy._280_sayTitle)
			say(gameforge.pony_buy._290_say)
			local b= select(gameforge.buy_fishrod._40_select, gameforge.pony_buy._300_select, gameforge.pony_buy._140_select)
			if 1==b then
				if pc.money>=100000 then
					char_log(0, " HORSE_BUY", "BEGIN")
					pc.changemoney(-100000)
					char_log(0, " HORSE_BUY", " DEC money 100000")
					horse.unride()
					horse.advance()
					horse.ride()
					char_log(0, " HORSE_BUY", "INC horse_advance 1")
					pc.give_item2("50051", 1)
					char_log(0, " HORSE_BUY", "INC 50051 1")
					char_log(0, " HORSE_BUY", "END")
					say_title(gameforge.horse_exchange_ticket._20_sayTitle)
					say(gameforge.pony_buy._310_say)
					setstate(start)
					q.done()
				else
					say_title(gameforge.horse_exchange_ticket._20_sayTitle)
					say(gameforge.pony_buy._320_say)
				end
			elseif 2==b then
				say_title(gameforge.horse_exchange_ticket._20_sayTitle)

				say(gameforge.pony_buy._330_say)
			elseif 3==b then
				say_title(gameforge.horse_exchange_ticket._20_sayTitle)
				say(gameforge.pony_buy._340_say)
				local b= select(gameforge.locale.guild.yes, gameforge.pony_buy._350_select)
				if 1==b then
					setstate(start)
				elseif 2==b then
				else
					say(string.format(gameforge.find_squareguard._70_say, b))
				end
			else
				say(string.format(gameforge.find_squareguard._70_say, b))
			end
		end
	end
	state failure begin
		when letter begin
			setskin(NOWINDOW)
			makequestbutton(gameforge.pony_buy._360_makequestbutton)
			q.set_title(gameforge.pony_buy._360_makequestbutton)
			q.start()
		end
		when button begin
			say_title(gameforge.pony_buy._360_makequestbutton)
						say_reward(gameforge.pony_buy._370_sayReward)
						say_reward(gameforge.pony_buy._380_sayReward)
			setstate(start)
			q.done()
		end
		when info begin
			say_title(gameforge.pony_buy._360_makequestbutton)
						say_reward(gameforge.pony_buy._370_sayReward)
						say_reward(gameforge.pony_buy._380_sayReward)
			setstate(start)
			q.done()
		end
	end
	state __COMPLETE__ begin
		when enter begin
			q.done()
		end
	end
end
Valerius1992 is offline  
Old 05/21/2017, 12:27   #3639
 
humanforu's Avatar
 
elite*gold: 0
Join Date: Sep 2012
Posts: 146
Received Thanks: 15
Need a quest with timing spawn of mobs

Hi there,
I just need to make a quest with timing that is

In a map timer starts
where regen1.txt or mob set 1.txt will spawn those mobs at required spots and they will be there for (x) mins duration after that all will vanished after (x) mins is over
saying announcement of " new Monsters will be spawned in 5 secs "
again new set regen2.txt of mobs will spawned at locations for (y) mins duration and vanished after (y)mins of time
saying announcement of " new Monsters will be spawned in 5 secs "

i dont know how to create quest using timer so any help will be appreciated.
If you want you can pm me here so i provide any other messenger to add me

Thanks in advance
humanforu is offline  
Old 05/27/2017, 00:20   #3640
 
Ide.'s Avatar
 
elite*gold: 6
Join Date: Dec 2007
Posts: 4,075
Received Thanks: 1,235
Quote:
Originally Posted by Valerius1992 View Post
Ich hab ein Neues Problem:

Wie schaff ich es, das hier die 24 Stunden raus genommen werden, das ich das pferd nach meiner Abgabe der PM bekomme?
PHP Code:
            if is_test_server() then
                pc
.setqf("make_time"get_time()+10)
            else
                
pc.setqf("make_time"get_time()+number(816)*60*60)
            
end 
Du musst den Teil aus der Quest entfernen.

Übrigens, das hier ist die falsche "Abteilung" für sowas.
Ide. is offline  
Old 05/28/2017, 00:12   #3641
Trade Restricted
 
elite*gold: 0
Join Date: Dec 2016
Posts: 123
Received Thanks: 23
Hallo, könnte mir kurz jemand eine Simpel Quest erstellen? Wäre super :P

Wenn man Startet, sprich sich zum ersten mal einloggt, soll ein fenster mit Text kommen wo folgendes kommt:

Hi. Welches item willste haben?

Item1

oder

Item2

oder

Item 3

Hier bitteschön, und viel spaß.
rycius' is offline  
Old 05/28/2017, 11:11   #3642
 
.Delta's Avatar
 
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
könnte funktionieren, bin mir da nicht mehr so sicher, zulange nichts gemacht^^

PHP Code:
quest firstitem begin
    state start begin
        when login begin
            say
("Welches Item möchtest du haben?")
            
local sel select("Item1""Item2""Item3")
            
pc.give_item2(({item1vnumitem2vnumitem3vnum})[sel], 1)
            
say("Viel Spaß damit")
            
set_state(__complete)
        
end
    end
    state __complete begin
    end
end 
.Delta is offline  
Old 05/28/2017, 17:10   #3643

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by .Delta View Post
könnte funktionieren, bin mir da nicht mehr so sicher, zulange nichts gemacht^^

PHP Code:
quest firstitem begin
    state start begin
        when login begin
            say
("Welches Item möchtest du haben?")
            
local sel select("Item1""Item2""Item3")
            
pc.give_item2(({item1vnumitem2vnumitem3vnum})[sel], 1)
            
say("Viel Spaß damit")
            
set_state(__complete)
        
end
    end
    state __complete begin
    end
end 
Der login-Trigger darf keine Funktionen ausführen, die auf einen Userinput warten.
rollback is offline  
Old 05/28/2017, 19:18   #3644
Trade Restricted
 
elite*gold: 0
Join Date: Dec 2016
Posts: 123
Received Thanks: 23
Quote:
Originally Posted by .Delta View Post
könnte funktionieren, bin mir da nicht mehr so sicher, zulange nichts gemacht^^

PHP Code:
quest firstitem begin
    state start begin
        when login begin
            say
("Welches Item möchtest du haben?")
            
local sel select("Item1""Item2""Item3")
            
pc.give_item2(({item1vnumitem2vnumitem3vnum})[sel], 1)
            
say("Viel Spaß damit")
            
set_state(__complete)
        
end
    end
    state __complete begin
    end
end 
Quote:
Originally Posted by rollback View Post
Der login-Trigger darf keine Funktionen ausführen, die auf einen Userinput warten.
beim erstmaligen einloggen kommt nur ein fenster mit der auswahl, aber nach dem anklicken bekommt man nix , auserdem kommt die quest beim jedem einloggen, will es aber das es nur beim start, also wenn man anfängt kommt und dann nie wieder. (Wäre cool wenn es auch ab lvl 10 oder so kommt, halt die quest)

ich hab noch ein kleines problemchen bei einer anderen quest


beim compilen kommt folgender fehler:
rycius' is offline  
Old 05/29/2017, 15:49   #3645

 
MetinLegende's Avatar
 
elite*gold: 10
Join Date: Feb 2012
Posts: 1,097
Received Thanks: 574
Quote:
Originally Posted by .Lauch' View Post
ich hab noch ein kleines problemchen bei einer anderen quest


beim compilen kommt folgender fehler:
Ändere die 2 mal in eine 1. Du hast bei beiden Abfragen select == 2 als Bedingung ausgewählt
MetinLegende is offline  
Reply

Tags
community, projekt, questerstellung, questkontrolle, service


Similar Threads Similar Threads
[Community]Questerstellung
09/06/2015 - Metin2 Private Server - 5 Replies
Hallo liebe Community, ich möchte meine Questkenntnisse ein wenig erweitern, deshalb möchte ich euch hier die Möglichkeit geben, Ideen, Wünsche und alles was mit Quests zu tun hat an mich weiterzuleiten. Ich werde, sobald ich Zeit und Lust habe, die Ideen größtenteils umsetzen und das Ergebnis hier veröffentlichen. Wie oben schon erwähnt bin ich Quasi noch am 'lernen' (ja ich weis, man lernt nie aus), deshalb bitte ich euch, mich zu informieren wenn ich irgendwo gefailed hab, man es...
Hilfe bei Questerstellung
02/25/2012 - Metin2 Private Server - 0 Replies
€dit: Kan gelöscht werden habe jemanden gefunden!!!!
Hilfe bei Questerstellung
02/15/2012 - Metin2 Private Server - 8 Replies
Heyy Ich hätte eine bitte an euch. Und zwar einer von euch mir einige quests erstellst. Ich habe voll kp von quests. Als blohnung würde ich dir auf meinem server 5k coins (Wert 50€) geben. also hier die quests: 30 Quest Belohnung: 100kk 42 rüssi+7 je nach der klasse.
Hilfe bei Questerstellung
08/16/2011 - Metin2 Private Server - 0 Replies
Mahlzeit also ich suche jemanden der mir ein grundgerüst einer quest erstellen kann so das ich diese weiter ausbauen kann, So nun zur quest idee Also ich möchte einen NPC hinstellen nennen wir den mal Questnpc wenn man den anklickt soll man dem levelabhängig quest angeboten bekommen,zum beispiel ab lvl10 töte 50 weisse Tiger,aber lvl40 töte 30 Oberork und so weiter,was mit levelanstieg natürlich komplexer werden sollte.Manche Quest sollten nur einmal zumachen gehen und manche im höheren lvl...
[SERVICE]Questerstellung
05/24/2011 - Metin2 Private Server - 4 Replies
Abend e*pvp, nach langem Überlegen hab ich mich doch dazu entschlossen, meine Arbeit gegen e*gold zur Verfügung zu stellen. Ich werde euch mal die wichtigsten Fragen beantworten ;) Woraus besteht dein Service? Zum einen erstelle ich einzelne, sowie ganze Questreihen. Die von mir verschickten Dateien werden Unikate bleiben, und sofort nach erfolgreichem Transfer gelöscht. Außerdem biete ich nochmal seperat eine Questverbesserung zum Sammelthread an. Diese wird dann natürlich...



All times are GMT +1. The time now is 20:11.


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.