[SERVICE] Die Questerstellung

04/08/2017 18:41 Delta371#3631
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 
04/16/2017 00:42 thecryfromhell#3632
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.
04/22/2017 11:45 .Risan.#3633
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
04/30/2017 21:41 "Sh4Xx"#3634
Bräuchte ne Quest, wenn ein bestimtes monste Stirbt das ein NPC für 5 minuten Spawnt danach verschwindet
05/01/2017 01:29 rollback#3635
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.
05/05/2017 20:10 Kiyoshi2#3636
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
05/06/2017 12:27 x"Kazuki#3637
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
05/19/2017 00:46 Valerius1992#3638
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
05/21/2017 12:27 humanforu#3639
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
05/27/2017 00:20 Ide.#3640
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. :p
05/28/2017 00:12 rycius'#3641
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ß.
05/28/2017 11:11 .Delta#3642
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 
05/28/2017 17:10 rollback#3643
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.
05/28/2017 19:18 rycius'#3644
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 :D, 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:
05/29/2017 15:49 MetinLegende#3645
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