|
You last visited: Today at 22:37
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
07/01/2015, 15:13
|
#11716
|
elite*gold: 0
Join Date: Oct 2013
Posts: 239
Received Thanks: 70
|
Wollte mir die Monarch-Item-Quest neu schreiben (Viruz 40k Files) weil die alte nicht in den neuen Files geht.
Leider funktioniert meine nicht und ich weiß nicht warum:
Code:
-- Quest: Monarch-Item
quest siege begin
state start begin
when 70021.use begin
say_title("Segen des Engels")
say("Als Kaiser Deines Reichs kannst Du")
say("Dein Volk auf verschiedene Arten segnen")
say("Wähle aus:")
local s = select("Goldener Frosch","Monster beschwören","Abbrechen")
if s == 1 then
say_title("Goldener Frosch")
say("In schlechten Zeiten kannst Du")
say("den goldenen Frosch rufen.")
say("Er bietet dem Volk die Möglichkeit")
say("die Steuern wieder zu erhalten")
local s = select("Rufen","Nicht rufen")
if s == 1 then
d.spawn_mob(11505)
end
else
return
end
if s == 2 then
say_title("Monster beschwören")
local s = select("Lykos","Scrofa","Abbrechen")
if s == 1 then
d.spawn_mob(191)
end
if s == 2 then
d.spawn_mob(192)
end
end
end
end
end
Wenn ich auf "Goldener Frosch" klicke, komme ich ins nächste Menü, aber egal was ich da anklicke, es passiert gar nichts.
Wenn ich auf "Monster beschwören" klicke, komme ich nichtmal zum Auswahlmenü für die Mobs, es schließt sich einfach die ganze Quest.
Beim compilen kommen aber keine Fehler.
|
|
|
07/01/2015, 15:17
|
#11717
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by ihrnervt
Wollte mir die Monarch-Item-Quest neu schreiben (Viruz 40k Files) weil die alte nicht in den neuen Files geht.
Leider funktioniert meine nicht und ich weiß nicht warum:
Code:
-- Quest: Monarch-Item
quest siege begin
state start begin
when 70021.use begin
say_title("Segen des Engels")
say("Als Kaiser Deines Reichs kannst Du")
say("Dein Volk auf verschiedene Arten segnen")
say("Wähle aus:")
local s = select("Goldener Frosch","Monster beschwören","Abbrechen")
if s == 1 then
say_title("Goldener Frosch")
say("In schlechten Zeiten kannst Du")
say("den goldenen Frosch rufen.")
say("Er bietet dem Volk die Möglichkeit")
say("die Steuern wieder zu erhalten")
local s = select("Rufen","Nicht rufen")
if s == 1 then
d.spawn_mob(11505)
end
else
return
end
if s == 2 then
say_title("Monster beschwören")
local s = select("Lykos","Scrofa","Abbrechen")
if s == 1 then
d.spawn_mob(191)
end
if s == 2 then
d.spawn_mob(192)
end
end
end
end
end
Wenn ich auf "Goldener Frosch" klicke, komme ich ins nächste Menü, aber egal was ich da anklicke, es passiert gar nichts.
Wenn ich auf "Monster beschwören" klicke, komme ich nichtmal zum Auswahlmenü für die Mobs, es schließt sich einfach die ganze Quest.
Beim compilen kommen aber keine Fehler.
|
Du kannst auf normalen Maps keine "d." Befehle benutzen, das sind Dungeon Befehle und funktionieren deshalb auch nur in Dungeons.
Der normale Befehl zum spawnen von NPCs ist "mob.spawn()":
Code:
mob.spawn(vnum, local_x, local_y, 1)
wofür die 1 steht weiss ich nicht genau, allerdings muss sie (soweit ich weiss) dahin. Die Anzahl ist es nicht.
edit:
habe gerade im source nachgeschaut, die 1 steht für den radius in dem das monster / der npc um die genannte position spawnen kann.
optional kann als 5. parameter noch angeben werden, ob das monster aggressiv oder nicht gespawnt werden soll und als 6. parameter die anzahl.
|
|
|
07/01/2015, 15:25
|
#11718
|
elite*gold: 0
Join Date: Oct 2013
Posts: 239
Received Thanks: 70
|
Ok, das werde ich mal ausprobieren.
Frage Nr. 2 bleibt aber noch: Klicke ich auf Monster beschwören, schließt sich die Quest einfach, statt wie gewünscht ins Menü der Monster zu kommen?
Edit: Hab mob.spawn ausprobiert: Es passiert trotzdem nichts, sieht jetzt so aus:
Code:
-- Quest: Monarch-Item
quest siege begin
state start begin
when 70021.use begin
say_title("Segen des Engels")
say("Als Kaiser Deines Reichs kannst Du")
say("Dein Volk auf verschiedene Arten segnen")
say("Wähle aus:")
local s = select("Goldener Frosch","Monster beschwören","Abbrechen")
if s == 1 then
say_title("Goldener Frosch")
say("In schlechten Zeiten kannst Du")
say("den goldenen Frosch rufen.")
say("Er bietet dem Volk die Möglichkeit")
say("die Steuern wieder zu erhalten")
local s = select("Rufen","Nicht rufen")
if s == 1 then
mob.spawn(11505, local_x, local_y, 1)
end
else
return
end
if s == 2 then
say_title("Monster beschwören")
local s = select("Lykos","Scrofa","Abbrechen")
if s == 1 then
mob.spawn(191, local_x, local_y, 1)
end
if s == 2 then
mob.spawn(192, local_x, local_y, 1)
end
end
end
end
end
|
|
|
07/01/2015, 22:53
|
#11719
|
elite*gold: 0
Join Date: Oct 2014
Posts: 408
Received Thanks: 208
|
Du solltest auch die Koordinaten zu den Mobs anpassen.
|
|
|
07/01/2015, 22:55
|
#11720
|
wild wild son
elite*gold: 0
Join Date: Feb 2011
Posts: 5,994
Received Thanks: 3,389
|
Quote:
Originally Posted by ihrnervt
Ok, das werde ich mal ausprobieren.
Frage Nr. 2 bleibt aber noch: Klicke ich auf Monster beschwören, schließt sich die Quest einfach, statt wie gewünscht ins Menü der Monster zu kommen?
Edit: Hab mob.spawn ausprobiert: Es passiert trotzdem nichts, sieht jetzt so aus:
Code:
-- Quest: Monarch-Item
quest siege begin
state start begin
when 70021.use begin
say_title("Segen des Engels")
say("Als Kaiser Deines Reichs kannst Du")
say("Dein Volk auf verschiedene Arten segnen")
say("Wähle aus:")
local s = select("Goldener Frosch","Monster beschwören","Abbrechen")
if s == 1 then
say_title("Goldener Frosch")
say("In schlechten Zeiten kannst Du")
say("den goldenen Frosch rufen.")
say("Er bietet dem Volk die Möglichkeit")
say("die Steuern wieder zu erhalten")
local s = select("Rufen","Nicht rufen")
if s == 1 then
mob.spawn(11505, local_x, local_y, 1)
end
else
return
end
if s == 2 then
say_title("Monster beschwören")
local s = select("Lykos","Scrofa","Abbrechen")
if s == 1 then
mob.spawn(191, local_x, local_y, 1)
end
if s == 2 then
mob.spawn(192, local_x, local_y, 1)
end
end
end
end
end
|
local_x und local_y müsste durch pc.get_local_x() bzw. pc.get_local_y() ersetzt werden, die entsprechenden Koordinaten kann sich die Funktion ja nicht aus den Fingern saugen.
lg
|
|
|
07/02/2015, 00:16
|
#11721
|
elite*gold: 0
Join Date: Oct 2013
Posts: 239
Received Thanks: 70
|
Sehr gut, wir kommen aber nicht näher... Es bestehen trotzdem noch alle Probleme die auch vorher bestanden haben...
|
|
|
07/02/2015, 06:02
|
#11722
|
wild wild son
elite*gold: 0
Join Date: Feb 2011
Posts: 5,994
Received Thanks: 3,389
|
Quote:
Originally Posted by ihrnervt
Sehr gut, wir kommen aber nicht näher... Es bestehen trotzdem noch alle Probleme die auch vorher bestanden haben...
|
Die Quest habe ich mir nicht angesehen.
Code:
-- Quest: Monarch-Item
quest siege begin
state start begin
when 70021.use begin
say_title("Segen des Engels")
say("Als Kaiser Deines Reichs kannst Du")
say("Dein Volk auf verschiedene Arten segnen")
say("Wähle aus:")
local s = select("Goldener Frosch", "Monster beschwören", "Abbrechen")
if s == 1 then
say_title("Goldener Frosch")
say("In schlechten Zeiten kannst Du")
say("den goldenen Frosch rufen.")
say("Er bietet dem Volk die Möglichkeit")
say("die Steuern wieder zu erhalten")
if select("Rufen", "Nicht rufen") == 2 then return end
mob.spawn(11505, pc.get_local_x(), pc.get_local_y(), 1)
elseif s == 2 then
say_title("Monster beschwören")
local m = ({191, 192})[select("Lykos", "Scrofa", "Abbrechen")]
if not m then return end
mob.spawn(m, pc.get_local_x(), pc.get_local_y(), 1)
else
return
end
end
end
end
lg
|
|
|
07/02/2015, 17:39
|
#11723
|
elite*gold: 0
Join Date: Oct 2013
Posts: 239
Received Thanks: 70
|
Vielen dank, das funktioniert wunderbar!
|
|
|
07/05/2015, 22:05
|
#11724
|
elite*gold: 350
Join Date: May 2009
Posts: 189
Received Thanks: 40
|
Crafting Window by Kilroy.
Hi,
ich habe über das TuT im Thread die Quest erstellt mit der es mir möglich sein soll das Crafting Window über einen NPC aus zu führen.
Leider bekomme ich beim Questreload diese Fehlermeldung:
Code:
QUEST : craftingwindowopen
new_quest/craftingwindowopen.quest:2:expecting 'state'
Error occured on compile new_quest/craftingwindowopen.quest
Die Quest schaut so aus:
Code:
quest craftingwindowopen begin
starte start begin
when 20369.chat."Crafting" begin
say_title(mob_name(npc.get_race())..":")
say("Alle Crafting Rezepte findest du in unserem WiKi.")
say("Möchtest du jetzt Craften?")
if select("Ja", "Nein") == 2 then return end
cmdchat("OpenCraftingSystem")
end
end
end
Kann mir jemand ne Lösung sagen?
Mfg.
|
|
|
07/05/2015, 22:34
|
#11725
|
elite*gold: 0
Join Date: Oct 2014
Posts: 408
Received Thanks: 208
|
Quote:
Originally Posted by keni3
Hi,
ich habe über das TuT im Thread die Quest erstellt mit der es mir möglich sein soll das Crafting Window über einen NPC aus zu führen.
Leider bekomme ich beim Questreload diese Fehlermeldung:
Code:
QUEST : craftingwindowopen
new_quest/craftingwindowopen.quest:2:expecting 'state'
Error occured on compile new_quest/craftingwindowopen.quest
Die Quest schaut so aus:
Code:
quest craftingwindowopen begin
starte start begin
when 20369.chat."Crafting" begin
say_title(mob_name(npc.get_race())..":")
say("Alle Crafting Rezepte findest du in unserem WiKi.")
say("Möchtest du jetzt Craften?")
if select("Ja", "Nein") == 2 then return end
cmdchat("OpenCraftingSystem")
end
end
end
Kann mir jemand ne Lösung sagen?
Mfg.
|
PHP Code:
quest craftingwindowopen begin
state start begin
when 20369.chat."Crafting" begin
say_title(mob_name(npc.get_race())..":")
say("Alle Crafting Rezepte findest du in unserem WiKi.")
say("Möchtest du jetzt Craften?")
if select("Ja", "Nein") == 2 then return end
cmdchat("OpenCraftingSystem")
end
end
end
|
|
|
07/05/2015, 23:12
|
#11726
|
elite*gold: 350
Join Date: May 2009
Posts: 189
Received Thanks: 40
|
Danke
Der Fehler ist weg!
Aber ein Problem bleibt... Das Crafting Window öffnet sich nicht...
Fehlt da noch was in der Quest?
€dit: Gerade nen Questreload gemacht da kam plötzlich ein Fehler:
Code:
Traceback (most recent call last):
File "make_quest", line 10, in <module>
r = pre_qc.run (line)
File "/usr/home/game/share/locale/germany/quest/pre_qc.py", line 158, in run
lines = open (filename).readlines()
IOError: [Errno 2] No such file or directory: 'argus/craftingwindow_1'
|
|
|
07/06/2015, 12:38
|
#11727
|
elite*gold: 50
Join Date: Aug 2014
Posts: 508
Received Thanks: 201
|
Habe zwei evtl auch drei Fragen.
Frage 1:
Gibt es ein Quest Attribut, was Stärke gibt? Finde in keinen Threads bzw. listen dazu, das passende Attribut. Generell zu Str,Dex,Int..finde ich keine. Vielleicht weis jemand diese. Danke
Frage 2:
PHP Code:
quest buffs begin
state start begin
when 71135.use begin
affect.add_collect(apply.EXP_DOUBLE_BONUS, 50, 60*60*24*365*60)
affect.add_collect(apply.ATT_SPEED, 20, 60*60*24*365*60)
affect.add_collect(apply.CAST_SPEED, 20, 60*60*24*365*60)
affect.add_collect(apply.MAX_HP, 10, 60*60*24*365*60)
affect.add_collect(apply.MAX_SP, 10, 60*60*24*365*60)
cmdchat("buff1")
end
Habe mir eigene Effekte erstellt..& Wollte diesen Bonis zu teilen & habe diese Quest zusammen gebastelt..Aus TuT´s & der gleichen. Jetzt möchte ich aber, das wenn ich das Icon "klicke" & der Effekt erscheint das der Boni aktiviert wird. Aber nicht anhand von Zeiten, sondern solange bis Ausgeloggt wird, oder ein andere "Buff/Effekt" davon benutzt wird. Wie stelle ich das an?
Frage 3:
Bei dem Rad des Schicksaals von Yoshi,ist es in der Lua Datei so eingestellt, das man entweder mit ein bestimmtes Item benötigt oder 7,500 (wovon keine Ahnung). Kann das einer so umschreiben, das man es erstens bei einem NPC öffnen kann & dann pro Spin ein bestimmtes Item benötigt wird?
Hier die Lua:
PHP Code:
quest spin begin
state start begin
when info or button begin
local x = input()
if x == "1" then
spin._DoSpin(1)
elseif x == "2" then
spin._SetItem(1)
end
end
function _SetItem(arg)
if pc.getqf("spin_item") > 0 then return cmdchat("SpinItem 1") end
if pc.count_item(700019) < 1 then return cmdchat("SendTextInfo Du_besitzt_das_Item_nicht!") end
pc.remove_item(700019,1)
cmdchat("SpinItem 1")
pc.setqf("spin_item",1)
end
function _GetCostInfo()
return (game.get_event_flag("cost_spin") < 1 and 7500 or game.get_event_flag("cost_spin"))
end
function _ItemTables(arg)
if arg then
return {80018,80019,80020,80023,80024,50512,5374,71129,71123,71135,71136,30005,30015,98701,98702,98703,98704,71051,71052,90060,70029,90199,700003,700019,28533,28534,28535,28536} -- Gute Items
end
return {27987,70102,71110,72723,72724,72725,72726,72727,72728,72729,72730,50512,27990,30006,30015,30141,30144,30186} -- Nieten
end
function CreateString(tab)
local str_c = ""
for i = 1, table.getn(tab) do
str_c = str_c..tab[i].."|"
end
return str_c
end
function GiveItem(vnum)
mysql_query("INSERT into quest.is_depot (account_id,item_id,item_count) VALUES ('"..pc.get_account_id().."','"..vnum.."','1');")
end
function _DoSpin(arg)
-- if pc.getqf("spin_day_check") != tonumber(os.date("%d")) or pc.getqf("spin_login_wait") > get_time() then
-- return cmdchat("SendTextInfo Du_kannst_erst_10_Minuten_nach_deinem_Login_drehen!")
-- end
if pc.getqf("wait_spin") > get_time() then return end
pc.setqf("wait_spin",get_time()+3)
local good_items,item_list,win = spin._ItemTables(true),{},number(1,8)-1
if pc.getqf("spin_item") > 0 then
pc.delqf("spin_item")
for i = 1, 8 do
table.insert(item_list,good_items[number(1,table.getn(good_items))])
end
cmdchat("DoSpin "..win.."#1#"..spin.CreateString(item_list))
spin.GiveItem(item_list[win+1])
return
end
-- local paid,chr_c = false,spin.CheckIfTrueSpin()
local paid = false
-- if (tostring(chr_c) == "1") or pc.level < 125 then
-- say_title("Rad des Schicksals")
-- say("")
-- say("Da du schon in den letzten 24 Stunden mit diesem")
-- say("oder einem anderen Account kostenlos gedreht")
-- say("hast, kostet dich die nächste Drehung etwas.")
-- if select("Drehen","Abbrechen") == 2 then return end
-- if not spin.CanBuy() then return cmdchat("SendTextInfo Du_hast_nicht_genug_Coins!") end
-- paid = true
-- mysql_query("UPDATE account.account set coins = coins - "..spin._GetCostInfo().." where id = '"..pc.get_account_id().."' limit 1;")
-- end
-- if not paid then
-- mysql_query("UPDATE account.account set last_spin = '"..(get_time()+60*60*24).."' where id in (SELECT account_id from player.player where ip='"..chr_c.."');")
-- end
if not spin.CanBuy() then return cmdchat("SendTextInfo Du_hast_nicht_genug_Coins!") end
local poor_items,bads = spin._ItemTables(false),0
-- pc.setqf("last_day_wheel",tonumber(os.date("%d")))
for i = 1, 5 do
-- if (number(1,2) == 1 and bads < 3) or (bads == 2 and i > 7) or (bads == 1 and i > 6) or (bads == 0 and i > 5) then
-- bads = bads + 1
table.insert(item_list,poor_items[number(1,table.getn(poor_items))])
-- else
-- table.insert(item_list,good_items[number(1,table.getn(good_items))])
-- end
end
for i = 1, 3 do
-- if (number(1,2) == 1 and bads < 3) or (bads == 2 and i > 7) or (bads == 1 and i > 6) or (bads == 0 and i > 5) then
-- bads = bads + 1
-- table.insert(item_list,poor_items[number(1,table.getn(poor_items))])
-- else
table.insert(item_list,good_items[number(1,table.getn(good_items))])
-- end
end
cmdchat("DoSpin "..win.."#0#"..spin.CreateString(item_list))
spin.GiveItem(item_list[win+1])
end
function CheckIfTrueSpin()
local last_c = mysql_query("SELECT account.last_spin,player.ip from account.account left join player.player on player.account_id = account.id where account.id = '"..pc.get_account_id().."' limit 1;")
if tonumber(last_c[1][1]) > get_time() then
return 1
end
return spin.CheckIpBoard(last_c)
end
function CheckIpBoard(last_c)
local acc_c = mysql_query("SELECT account.last_spin from account.account left join player.player on player_account_id = account.id where player.ip = '"..last_c[1][2].."' and account.last_spin > "..get_time()..";")
if table.getn(acc_c) > 0 then
return 1
end
return tostring(last_c[1][2])
end
function CanBuy()
local coins = mysql_query("SELECT coins from account.account where id = '"..pc.get_account_id().."' limit 1;")
if tonumber(coins[1][1]) < spin._GetCostInfo() or table.getn(coins) < 1 then return false end
return true
end
when login begin
cmdchat("SpinInfo "..spin._GetCostInfo().."#"..pc.getf("pyth_api","spin_item").."#"..q.getcurrentquestindex())
end
end
end
|
|
|
07/06/2015, 13:45
|
#11728
|
elite*gold: 0
Join Date: Oct 2014
Posts: 408
Received Thanks: 208
|
Quote:
Originally Posted by keni3
Danke
Der Fehler ist weg!
Aber ein Problem bleibt... Das Crafting Window öffnet sich nicht...
Fehlt da noch was in der Quest?
|
PHP Code:
quest craftingwindowopen begin
state start begin
when 20369.chat."Crafting" begin
say_title(mob_name(npc.get_race())..":")
say("Alle Crafting Rezepte findest du in unserem WiKi.")
say("Möchtest du jetzt Craften?")
if select("Ja", "Nein") == 2 then return end
setskin(NOWINDOW)
cube_open(--ID des Shops ohne "--")
cmdchat("OpenCraftingSystem")
end
end
end
Versuche es mal so
|
|
|
07/06/2015, 15:39
|
#11729
|
elite*gold: 0
Join Date: Jul 2015
Posts: 27
Received Thanks: 41
|
Quote:
Originally Posted by Zaturix
PHP Code:
quest craftingwindowopen begin
state start begin
when 20369.chat."Crafting" begin
say_title(mob_name(npc.get_race())..":")
say("Alle Crafting Rezepte findest du in unserem WiKi.")
say("Möchtest du jetzt Craften?")
if select("Ja", "Nein") == 2 then return end
setskin(NOWINDOW)
cube_open(--ID des Shops ohne "--")
cmdchat("OpenCraftingSystem")
end
end
end
Versuche es mal so
|
cube_open ist keine Standardfunktion. Wenn dann npc.open_shop(id) oder du machst ne extra funktion wobei das unnötig ist :
Code:
function cube_open(id)
if id == nil then return false end
npc.open_shop(tonumber(id))
end
|
|
|
07/06/2015, 18:03
|
#11730
|
elite*gold: 0
Join Date: Jun 2013
Posts: 4
Received Thanks: 0
|
quest ocurred compile with quest
quest 32kk begin
state start begin
when login with pc.get_hp() < -10000 begin
affect.add_collect(10,32000,4)
end
end
end
|
|
|
All times are GMT +1. The time now is 22:37.
|
|