[SERVICE] Die Questerstellung

02/08/2015 17:00 .Crystal#2146
Quote:
Originally Posted by [Sensenmann] View Post
PHP Code:
quest pvpkills begin
    state start begin
        when xxx
.chat."PvP Quest" with pc.get_empire() == 1 begin
            say
("Bli bla blub")
            
say("Möchtest du die PvP Quest starten?")
            
local s select("Ja""Abbrechen")
            if 
== 2 then
                
return
            elseif 
== 1 then
                say
("Wurde gestartet.")
                
pc.setqf("count"50)
                
set_state(pvpkills_do)
            
end
        end
    end
    state pvpkills_do begin
        when kill with npc
.is_pc() begin
            
if pc.getqf("count") >= 2 then
                pc
.setqf("count"pc.getqf("count")-1)
            else
                
say("Quest abgeschlossen")
                
set_state(_COMPLETE_)
            
end
        end
    end
    state _COMPLETE_ begin
    end
end 
Kills hab ich jetzt auf 50 gesetzt, die kannst du auch einfach ändern.
Npc musst noch ändern (xxx) und die Texte und die Belohnung einfügen.
ja habe die ähnliche gerade ein paar seiten vorher gefunden von dir, danke.
Habe allerdings an anfang eingefügt..
PHP Code:
when 3005.chat."Waldreinigung" with pc.get_level() < 25 begin 
Warum kann ich die Quest nicht mit Level 25 starten? :o
Ach und kann ich das empire einfach dahinter packen mit "and" ?
Also Level 25 + Rotes Reich?
02/08/2015 17:05 rollback#2147
Quote:
Originally Posted by .Crystal View Post
ja habe die ähnliche gerade ein paar seiten vorher gefunden von dir, danke.
Habe allerdings an anfang eingefügt..
PHP Code:
when 3005.chat."Waldreinigung" with pc.get_level() < 25 begin 
Warum kann ich die Quest nicht mit Level 25 starten? :o
Ach und kann ich das empire einfach dahinter packen mit "and" ?
Also Level 25 + Rotes Reich?
1. pc.get_level() < 25 heisst größer 25, also ab 26. Wenn du ab 25 machen willst machst du am besten pc.get_level() <= 25 (größer/gleich level 25)

2. Ja einfach mit "and" dahinter
02/08/2015 17:12 .Crystal#2148
Quote:
Originally Posted by [Sensenmann] View Post
1. pc.get_level() < 25 heisst größer 25, also ab 26. Wenn du ab 25 machen willst machst du am besten pc.get_level() <= 25 (größer/gleich level 25)

2. Ja einfach mit "and" dahinter
hm sie will trotzdem immernoch nicht starten, kriege keinen fehler angezeigt aber wenn ich den npc anklicke erscheint dort keine quest.. und der char ist sogar level 40 und ja npc on_click ist auf 2
02/08/2015 17:17 rollback#2149
Quote:
Originally Posted by .Crystal View Post
hm sie will trotzdem immernoch nicht starten, kriege keinen fehler angezeigt aber wenn ich den npc anklicke erscheint dort keine quest.. und der char ist sogar level 40 und ja npc on_click ist auf 2
on_click hab ich bei mir immer auf 0 bei solchen quests/npcs
02/08/2015 17:26 .Crystal#2150
Quote:
Originally Posted by [Sensenmann] View Post
on_click hab ich bei mir immer auf 0 bei solchen quests/npcs
brachte keine veränderung, immernoch nicht auswählbar..

Edit: ok das pc.get_level() <= 25 muss ein dachschaden haben, habe es mal entfernt und nur die reichsprüfung drin gelassen und jetzt geht sie.. sicher das es so richtig geschrieben war mit dem level?
02/08/2015 17:40 rollback#2151
Quote:
Originally Posted by .Crystal View Post
brachte keine veränderung, immernoch nicht auswählbar..

Edit: ok das pc.get_level() <= 25 muss ein dachschaden haben, habe es mal entfernt und nur die reichsprüfung drin gelassen und jetzt geht sie.. sicher das es so richtig geschrieben war mit dem level?
ah sry >= 25 ^^
02/08/2015 17:43 .Crystal#2152
ja jetzt klappt sie :D danke sensenmann, was quest angeht haste wirklich was drauf :)
02/08/2015 21:44 G.I Duke#2153
Servus, kann mir jemand eine "Automessage" -Quest schreiben die folgendes kann:

- starten UND beenden in einem "letter"
- wenn gestartet kommt eine "notice_all" und dann alle
30min eine weitere "notice_all"
- die "notice_all" -Messages am besten in einer " local a = { "xy", "xxy" } "
so dass ich sie beliebig erweitern kann..
- wenn sie gestartet wurde lässt sie sich nur durch im Punkt 1
genannten "letter" wieder beenden und nicht durch ausloggen des "GMs"

wäre cool wenn dass jemand hinbekommt denn ich verzweifle grade..

Greetings.
02/09/2015 07:04 rollback#2154
Quote:
Originally Posted by G.I Duke View Post
Servus, kann mir jemand eine "Automessage" -Quest schreiben die folgendes kann:

- starten UND beenden in einem "letter"
- wenn gestartet kommt eine "notice_all" und dann alle
30min eine weitere "notice_all"
- die "notice_all" -Messages am besten in einer " local a = { "xy", "xxy" } "
so dass ich sie beliebig erweitern kann..
- wenn sie gestartet wurde lässt sie sich nur durch im Punkt 1
genannten "letter" wieder beenden und nicht durch ausloggen des "GMs"

wäre cool wenn dass jemand hinbekommt denn ich verzweifle grade..

Greetings.
Versuchs mal ...

PHP Code:
quest noticeall begin
    state start begin
        when letter with pc
.is_gm() begin
            send_letter
("Automatische Ankündigung")
        
end
        when button 
or info with pc.is_gm() begin
            notices 
= {
                
"Bei Fragen wendet Euch bitte an einen GM!",
                
"Du hast Verbesserungsvorschläge? Zögere nicht, sie uns mitzuteilen!",
                
"Du hast einen Bug gefunden? Bitte melde ihn schnellstmöglich an einen Teamler!"
            
}
            
select_notices = {}
            for 
1table.getn(notices) do
                
table.insert(select_noticesstring.sub(notices[i], 130).."...")
            
end
            say_title
("Ankündigungen")
            
say("")
            
say_reward("Ankündigung starten oder stoppen?")
            
say("")
            
local main_menu select("Starten""Stoppen""Abbrechen")
            if 
main_menu == 3 then return end
            say_title
("Ankündigungen")
            
say("")
            
say_reward("Welche Ankündigung möchtest du starten/stoppen?")
            
say("")
            
local s select_table(select_notices"Abbrechen")
            if 
== table.getn(select_notices)+1 then return end
            say
("Du hast folgende Ankündigung ausgewählt:")
            
say_reward(notices[s])
            if 
main_menu == 1 then
                say
("Wie oft soll diese gesendet werden (in Minuten)?")
                
local countdown tonumber(input())
                if 
countdown 1 then return end
                say
("Möchtest du die Ankündigung ...")
                
say(notices[s])
                
say("... wirklich alle "..countdown.." Minuten senden lassen?")
                
local accept select("Ja""Nein, abbrechen")
                if 
accept == 2 then return end
                server_timer
("notice"..scountdown*60)
                
game.set_event_flag(s1)
                
notice_all(notices[s])
            elseif 
main_menu == 2 then
                say
("Möchtest du diese Ankündigung wirklich stoppen?")
                
local accept select("Ja""Nein, abbrechen")
                if 
accept == 2 then return end
                game
.set_event_flag(s0)
                
clear_server_timer("notice"..s)
            
end
        end
        when notice1
.server_timer with game.get_event_flag(1) == 1 begin
            notice_all
(notices[1])
        
end
        when notice2
.server_timer with game.get_event_flag(2) == 1 begin
            notice_all
(notices[2])
        
end
        when notice3
.server_timer with game.get_event_flag(3) == 1 begin
            notice_all
(notices[3])
        
end
    end
end 
02/09/2015 19:55 .Various#2155
Moin, wollte mal fragen ob es eine Möglichkeit gibt (die gibt es ganz sicher), dieses Problem schöner zu lösen.
Also ich will jede 20 Level ein Attribut (immer das gleiche) geben um immer den gleichen Wert.
Man könnte jetzt 8 when bedingungen machen, aber ich will anfangen kürzere schönere Quests zu schreiben und da dachte ich mir da gibt es bestimmt eine kurz und knackige Variante.

Also statt sowas:
02/09/2015 20:10 rollback#2156
Quote:
Originally Posted by C-3PO. View Post
Moin, wollte mal fragen ob es eine Möglichkeit gibt (die gibt es ganz sicher), dieses Problem schöner zu lösen.
Also ich will jede 20 Level ein Attribut (immer das gleiche) geben um immer den gleichen Wert.
Man könnte jetzt 8 when bedingungen machen, aber ich will anfangen kürzere schönere Quests zu schreiben und da dachte ich mir da gibt es bestimmt eine kurz und knackige Variante.

Also statt sowas:
PHP Code:
quest test begin
    state start begin
        when levelup with pc
.get_level() == 50 or pc.get_level() == 70 or pc.get_level() == 90 begin
            affect
.add_collect(110060*60*24*365*60)
            if 
pc.get_level() == 90
                set_state
(_COMPLETE_)
            
end
        end
    end
    state _COMPLETE_ begin
    end
end 
02/09/2015 20:21 .Various#2157
Quote:
Originally Posted by [Sensenmann] View Post
PHP Code:
quest test begin
    state start begin
        when levelup with pc
.get_level() == 50 or pc.get_level() == 70 or pc.get_level() == 90 begin
            affect
.add_collect(110060*60*24*365*60)
            if 
pc.get_level() == 90
                set_state
(_COMPLETE_)
            
end
        end
    end
    state _COMPLETE_ begin
    end
end 
Und wenn ich das ganze jetzt bei vielen Leveln mache muss ich ja immer pc.get_level() or ... machen kann das nicht per Liste lösen also in eine liste alle lvl eintragen und die dann abfragen?
02/09/2015 20:29 rollback#2158
Quote:
Originally Posted by C-3PO. View Post
Und wenn ich das ganze jetzt bei vielen Leveln mache muss ich ja immer pc.get_level() or ... machen kann das nicht per Liste lösen also in eine liste alle lvl eintragen und die dann abfragen?
nicht im when und soweit ich weiss gibt es in LUA auch keine "in table" funktion , also müsstest du mit einer schleife alle einträge durchgehen ... nicht schön :D
02/09/2015 22:50 QuickFlameZ#2159
Quote:
Originally Posted by C-3PO. View Post
Und wenn ich das ganze jetzt bei vielen Leveln mache muss ich ja immer pc.get_level() or ... machen kann das nicht per Liste lösen also in eine liste alle lvl eintragen und die dann abfragen?
PHP Code:
quest test begin 
    state start begin 
        
function in_table(vs)
            for 
1table.getn(s) do
                if 
== s[ithen
                    
return true
                end
            end
            
return false
        end
    
        when levelup with test
.in_table(pc.get_level(), {50,75,90}) begin 
            affect
.add_collect(110060*60*24*365*60
            if 
pc.get_level() == 90 
                set_state
(_COMPLETE_
            
end 
        end 
    end 
    state _COMPLETE_ begin 
    end 
end 
Ich finde es so schöner, da man die funktion vielseitig verwenden kann.
kind regards
02/09/2015 23:37 G.I Duke#2160
Quote:
Originally Posted by [Sensenmann] View Post
Versuchs mal ...

PHP Code:
quest noticeall begin
    state start begin
        when letter with pc
.is_gm() begin
            send_letter
("Automatische Ankündigung")
        
end
        when button 
or info with pc.is_gm() begin
            notices 
= {
                
"Bei Fragen wendet Euch bitte an einen GM!",
                
"Du hast Verbesserungsvorschläge? Zögere nicht, sie uns mitzuteilen!",
                
"Du hast einen Bug gefunden? Bitte melde ihn schnellstmöglich an einen Teamler!"
            
}
            
select_notices = {}
            for 
1table.getn(notices) do
                
table.insert(select_noticesstring.sub(notices[i], 130).."...")
            
end
            say_title
("Ankündigungen")
            
say("")
            
say_reward("Ankündigung starten oder stoppen?")
            
say("")
            
local main_menu select("Starten""Stoppen""Abbrechen")
            if 
main_menu == 3 then return end
            say_title
("Ankündigungen")
            
say("")
            
say_reward("Welche Ankündigung möchtest du starten/stoppen?")
            
say("")
            
local s select_table(select_notices"Abbrechen")
            if 
== table.getn(select_notices)+1 then return end
            say
("Du hast folgende Ankündigung ausgewählt:")
            
say_reward(notices[s])
            if 
main_menu == 1 then
                say
("Wie oft soll diese gesendet werden (in Minuten)?")
                
local countdown tonumber(input())
                if 
countdown 1 then return end
                say
("Möchtest du die Ankündigung ...")
                
say(notices[s])
                
say("... wirklich alle "..countdown.." Minuten senden lassen?")
                
local accept select("Ja""Nein, abbrechen")
                if 
accept == 2 then return end
                server_timer
("notice"..scountdown*60)
                
game.set_event_flag(s1)
                
notice_all(notices[s])
            elseif 
main_menu == 2 then
                say
("Möchtest du diese Ankündigung wirklich stoppen?")
                
local accept select("Ja""Nein, abbrechen")
                if 
accept == 2 then return end
                game
.set_event_flag(s0)
                
clear_server_timer("notice"..s)
            
end
        end
        when notice1
.server_timer with game.get_event_flag(1) == 1 begin
            notice_all
(notices[1])
        
end
        when notice2
.server_timer with game.get_event_flag(2) == 1 begin
            notice_all
(notices[2])
        
end
        when notice3
.server_timer with game.get_event_flag(3) == 1 begin
            notice_all
(notices[3])
        
end
    end
end 
not working.. aber auch keine Fehlermeldung