|
You last visited: Today at 20:05
Advertisement
[SERVICE] Die Questerstellung
Discussion on [SERVICE] Die Questerstellung within the Metin2 Private Server forum part of the Metin2 category.
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()>=9 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(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/16/2017, 00:42
|
#3632
|
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.
|
|
|
04/22/2017, 11:45
|
#3633
|
elite*gold: 30
Join Date: Jul 2010
Posts: 1,627
Received Thanks: 1,450
|
Quote:
Originally Posted by Delta371
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()>=9 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(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
|
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
|
#3634
|
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
|
|
|
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"
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
|
#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 Erweit. Mijago
--------------------------------------------
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.warp( 9477800,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(35004, 1)
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())<= 7 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(35002, 1)
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(inp, 7, 2, 1) then
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)"..inp) then
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(35002, 1)
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(inp, 7, 2, 1) then
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(inp) then
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(name, maxi, mini, sonder)
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 Erweit. Mijago
------------------------------------------
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
|
#3637
|
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
|
|
|
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
|
|
|
05/21/2017, 12:27
|
#3639
|
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
|
|
|
05/27/2017, 00:20
|
#3640
|
elite*gold: 6
Join Date: Dec 2007
Posts: 4,075
Received Thanks: 1,235
|
Quote:
Originally Posted by Valerius1992
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(8, 16)*60*60)
end
Du musst den Teil aus der Quest entfernen.
Übrigens, das hier ist die falsche "Abteilung" für sowas.
|
|
|
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ß.
|
|
|
05/28/2017, 11:11
|
#3642
|
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(({item1vnum, item2vnum, item3vnum})[sel], 1) say("Viel Spaß damit") set_state(__complete) end end state __complete begin end end
|
|
|
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
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(({item1vnum, item2vnum, item3vnum})[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
|
#3644
|
Trade Restricted
elite*gold: 0
Join Date: Dec 2016
Posts: 123
Received Thanks: 23
|
Quote:
Originally Posted by .Delta
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(({item1vnum, item2vnum, item3vnum})[sel], 1)
say("Viel Spaß damit")
set_state(__complete)
end
end
state __complete begin
end
end
|
Quote:
Originally Posted by rollback
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
PHP Code:
quest pvpschild begin
state start begin
when 20001.chat."PvP Schild" begin
say_title("PvP Schild")
say("Hallo du, ich kann dir ein Pvp Schild für")
say("folgende Items geben.")
say("")
say("1x Löwenkantenschild+9 ")
say("1x Drachenschuppenschild+9")
say("1x Tigerschild+9")
say("1x Falkenschild+9")
say("")
say("Möchtest du das Tauschgeschäft eingehen?.")
local v = select ("Ja","Nein")
if v == 2 then
return
end
elseif v == 2 then
if pc.count_item(13109) >= 2 then
pc.count_item(13129) >= 2 then
pc.count_item(13089) >= 2 then
pc.count_item(13069) >= 2 then
pc.remove_item(13109, 1)
pc.remove_item(13129, 1)
pc.remove_item(13089, 1)
pc.remove_item(13069, 1)
pc.give_item2(6930, 1)
say_title("PvP Schild")
say("Hier ist PvP Schild, viel Spaß damit.")
else
say_title("PvP Schild")
say("Du hast nicht alle Schilder!")
say("")
return
end
end
end
end
end
beim compilen kommt folgender fehler:
Quote:
pvpschild.quest:37:syntax error : [string "start"]:15: <eof> expected near `elseif'
Error occured on compile pvpschild.quest
|
|
|
|
05/29/2017, 15:49
|
#3645
|
elite*gold: 10
Join Date: Feb 2012
Posts: 1,097
Received Thanks: 574
|
Quote:
Originally Posted by .Lauch'
ich hab noch ein kleines problemchen bei einer anderen quest
PHP Code:
quest pvpschild begin
state start begin
when 20001.chat."PvP Schild" begin
say_title("PvP Schild")
say("Hallo du, ich kann dir ein Pvp Schild für")
say("folgende Items geben.")
say("")
say("1x Löwenkantenschild+9 ")
say("1x Drachenschuppenschild+9")
say("1x Tigerschild+9")
say("1x Falkenschild+9")
say("")
say("Möchtest du das Tauschgeschäft eingehen?.")
local v = select ("Ja","Nein")
if v == 2 then
return
end
elseif v == [COLOR="red"]2[/COLOR] then
if pc.count_item(13109) >= 2 then
pc.count_item(13129) >= 2 then
pc.count_item(13089) >= 2 then
pc.count_item(13069) >= 2 then
pc.remove_item(13109, 1)
pc.remove_item(13129, 1)
pc.remove_item(13089, 1)
pc.remove_item(13069, 1)
pc.give_item2(6930, 1)
say_title("PvP Schild")
say("Hier ist PvP Schild, viel Spaß damit.")
else
say_title("PvP Schild")
say("Du hast nicht alle Schilder!")
say("")
return
end
end
end
end
end
beim compilen kommt folgender fehler:
|
Ändere die 2 mal in eine 1. Du hast bei beiden Abfragen select == 2 als Bedingung ausgewählt
|
|
|
 |
|
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.
|
|