[SERVICE] Die Questkontrolle

06/12/2012 14:31 Dewis3#6001
Hey Leute

Ich suche einen Quest Befehl wie z.b. "command("i 19")" nur ohne die Abfrage ob der Spieler genügend Rechte hat.

MFG Dennis
06/12/2012 14:59 [SA]Sibba / Christian#6002
pc.give_item2 <-- das heißt das es dem spieler das item gibt für dein schwer wäre es

pc.give_item2(19, 1)

das bedeutet er gibt dem spieler das item 19 = Schwert +9 und die 1 ist die Anzahl also 1 mal Schwert +9
06/12/2012 15:04 *Summer*#6003
Kann einer mir zwei Quest´s zusammen fügen ?
Ich möchte eine Bank in den Lagerverwalter einfügen.
Da muss dan stehen:
"Lager öffnen, Barren kaufen, Itemshoplager öffnen, BANK, Abbrechen"

statt

"Lager öffnen, Barren kaufen, Itemshoplager öffnen, Abbrechen"

Quest 1 Lagerverwalter:

Quest 2 Bank:

06/12/2012 15:15 Dewis3#6004
Quote:
Originally Posted by [SA]Sibba / Christian View Post
pc.give_item2 <-- das heißt das es dem spieler das item gibt für dein schwer wäre es

pc.give_item2(19, 1)

das bedeutet er gibt dem spieler das item 19 = Schwert +9 und die 1 ist die Anzahl also 1 mal Schwert +9
ICh möchte aber gern das user die rates einschalten können :)
06/12/2012 18:09 .KingDarkness#6005
Quote:
Originally Posted by Dewis3 View Post
ICh möchte aber gern das user die rates einschalten können :)
Die Spieler können die Rates nicht selbst beeinflussen, es geht nur Serverside oder über ein Item, dieses eine Funktion hat, dass er auf die Datenbank zugreift und den 50% Exp Bonus von der Accountliste bekommt.

account -> account die EXP Tabelle müsste "silver_expire" sein. Und dann einfach das Datum ändern lassen per Quest ;). Einfach ist es nicht :)

#Du kannst auch ein Item erstellen per Quest, das die User +EXP gibt für eine gewisse Zeit.
Ich gebe dir mal die Quest:

PHP Code:
quest exp begin
    state start begin
        when 40003.
use begin
            say_color
("orange","Exp Schub:")
            
say_color("orange","Hey moechtest du den 300% Exp schub fuer")
            
say_color("orange","30 Minuten aktivieren? dann druecke jetzt auf den Button:Ja!")
            
say_color("orange","Wenn du keinen Exp schub haben moechtest , dann druecke den Button: Nein!")
            
say_color("red","Das HotIceMt2-Team wuenscht dir viel Spaß mit den Schub!")
            
local main_set select("Ja ich will den Schub!","Nein lieber nicht...")
            if 
get_time() >= pc.getqf("extra_exp_timer"then
                
if main_set == 1 then
                    say_color
("red","Ohh du moechtest anscheinend wirklich deinen Exp-Schub nutzen...")
                    
say_color("red","Also gut ich aktiviere dir den Exp-Schub viel Spaß!")
                    
notice_all("Der Spieler: ".. pc.get_name() .." hat soeben den Exp Schub aktiviert!")
                    
get_time(1600)
                    
__give_char_priv(4300)
                    
pc.remove_item(400031)
                    
pc.setqf("extra_exp_timer"get_time()+60*60)
                elseif 
main_set == 2 then
                    say_color
("red","Ok ueberleg es dir fuer das andere mal ob du den Schub haben moechtest.")
                    return
                
end
            
else
                
say("Die Zeit läuft noch..!")
            
end
        end
        when letter begin
            
if get_time() < pc.getqf("extra_exp_timer"then
                __give_char_priv
(4, -300)
            
end
        end
    end
end 
in questlib.lua das einfügen:

PHP Code:
function say_color(color,text)
    if 
color=="blue" then
        say
(color256(00255)..text..color256(196196196))
    elseif 
color == "green" then
        say
(color256(02550)..text..color256(196196196))
    elseif 
color == "red" then
        say
(color256(25500)..text..color256(196196196))
    elseif 
color == "yellow" then
        say
(color256(2552550)..text..color256(196196196))
    elseif 
color == "white" then
        say
(color256(255255255)..text..color256(196196196))
    elseif 
color == "black" then
        say
(color256(000)..text..color256(196196196))
    elseif 
color == "cyan" then
        say
(color256(0255255)..text..color256(196196196))
    elseif 
color == "pink" then
        say
(color256(2550255)..text..color256(196196196))
    elseif 
color == "orange" then
        say
(color256(2551450)..text..color256(196196196))
    elseif 
color == "purple" then
        say
(color256(1000255)..text..color256(196196196))
    else
        
say(color256(196196196)..text..color256(196196196))
    
end
end 
und in quest_functions das eintragen:

PHP Code:
say_color 
Die Quest wird mit das Item -> 40003 aktiviert.

Dieser EXP-Bonus sollte für gut 1 Std reichen denke ich mal... Falls die Zeit falsch ist dann bitte ändern kenne mich nicht so gut mit dieser Zeit-Definition aus.

Hier noch eine Erklärung:

PHP Code:
__give_char_priv(4300
4 bedeutet -> die priv definiton. (1 = Itemdrop, 2 = Yangbomben, 3 = Yang, 4 = Exp) glaube ich^^
300 bedeutet -> EXP-Erfahrung +
06/12/2012 20:57 .Pѕєυ∂σηум#6006
PHP Code:
quest guild_manage begin 
    state start begin 
     
    when guild_man1
.chat."Gilde verlassen" or  
        
guild_man2.chat."Gilde verlassen" or  
        
guild_man3.chat."Gilde verlassen"  
        
with pc.hasguild() and not pc.isguildmaster() and (pc.is_gm() or npc.empire == pc.empirebegin 
        
-- ?? 
        
say(locale.guild.withdraw_confirm
        
local s select("Ja""Nein"
        if 
s==1 then 
        say
("Du bist nun wieder Gildenlos!"
        
pc.remove_from_guild() 
        
pc.setqf("new_withdraw_time",get_global_time()) 
        
end 
    end 

    when guild_man1
.chat."Gilde auflösen" or  
        
guild_man2.chat."Gilde auflösen" or  
        
guild_man3.chat."Gilde auflösen" 
        
with pc.hasguild() and pc.isguildmaster() and (pc.is_gm() or npc.empire == pc.empirebegin 
        
-- ?? 
        
say(locale.guild.disband_confirm
        
local s select("Ja""Nein"
        if 
s==1 then 
        say
("Deine Gilde ist nun aufgelöst!"
        
pc.destroy_guild() 
        
pc.setqf("new_disband_time",get_global_time()) 
        
pc.setqf("new_withdraw_time",get_global_time()) 
        
end 
    end 

    when guild_man1
.chat."Gilde gründen" or  
        
guild_man2.chat."Gilde gründen" or  
        
guild_man3.chat."Gilde gründen"  
        
with (pc.is_gm() or npc.empire == pc.empirebegin 
        local level_limit

        
local guild_create_item 

        
if get_locale() == "euckr" then 
        level_limit 
135 
        guild_create_item 
false 
        
else 
        
level_limit 135 
        guild_create_item 
false  
        end 
         
        
if pc.hasguild() then 
        
return 
        
end 
        
if game.get_event_flag("guild_withdraw_delay")*86400 >  
        
get_global_time() - pc.getqf("new_withdraw_time"then 

        say
(string.format("Du kannst jetzt noch keine neue Giled gründen! Warte noch eine Weile!"game.get_event_flag("guild_withdraw_delay"))) 
        return 
        
end 

        
if game.get_event_flag("guild_disband_delay")*86400 >  
        
get_global_time() - pc.getqf("new_disband_time"then 
         
        say
(string.format("Du kannst jetzt noch keine neue Giled gründen! Warte noch eine Weile!"game.get_event_flag("guild_disband_delay"))) 
        return 
        
end 

        say
(locale.guild.create_confirm
        
local s select("Ja""Nein"
        if 
== 2 then 
        
return 
        
end 

        
if pc.level >= level_limit then 
        
if pc.item >= 102034 then 
            
if not guild_create_item or pc.countitem(guild_create_item)>0 then 
            game
.request_make_guild() 
            else 
            
say("Dir Fehlt das Buch der Vorsehung!"
            
end 
        
else 
            
say("Du hast nicht genug Geld um eine Gilde zu gründen!"
        
end 
        
else 
        
say("Dein Level ist nicht hoch genug um eine Gilde zu gründen!"
        
end 
    end 
    end 
end 
Ich möchte das ein Item für eine Gildeneröffnung benötigt wird. Die Quest die ich gepostet habe Funktioniert leider nicht. Deswegen bitte ich euch um Hilfe. Vielen dank im vorraus.
06/13/2012 12:27 BlackBynes#6007
Hallo zusammen,

ich habe gerade mein DT-Quest überarbeitet. Dabei ist mir aufgefallen das wenn man nach dem Blauen Tod einen der drei Schmieds anspricht man direkt in die "Oberen" Etagen kann. Gibt es da eine Möglichkeit dies zu beheben? Also das man nach dem Blauen Tod nicht mehr in die "Oberen" Etagen kann?

Vielen Danke
Gruß Blacky

€dit:

habe leider keine Zeit es zu testen, aber versuche mal diesen Befehl

Quote:
Originally Posted by .Pѕєυ∂σηум View Post
PHP Code:

        
if pc.item >= 102034 then 
Ich möchte das ein Item für eine Gildeneröffnung benötigt wird. Die Quest die ich gepostet habe Funktioniert leider nicht. Deswegen bitte ich euch um Hilfe. Vielen dank im vorraus.

PHP Code:
if pc.count_item(102034) >= then 
06/13/2012 19:48 [SA]Imbattle#6008
#deleted

habs schon selbst rausgefunden
06/13/2012 21:56 |★|554#6009
BlackBynes:
06/13/2012 23:03 BlackBynes#6010
Quote:
Originally Posted by 554 View Post

Du kannst eine "Location-Abfrage" machen, mit den nützlichen Befehlen
PHP Code:
pc.get_y() 
und
PHP Code:
pc.get_x() 
Damit kann man einen Koordinatenbereich definieren und u.A. sagen, dass nur in diesem Bereich ein anklicken der Schmiede möglich ist, bei mir sieht es so aus, falls du keine neuen Koordinaten für den Dt hast kannst du es übenehmen:
PHP Code:
when 20074.chat."Die oberen Stockwerke" with pc.in_dungeon() and pc.get_x() > 2048+350 and pc.get_y() > 6656+150 and pc.get_x() < 2048+450 and pc.get_y() < 6656+250 begin 
BlackBynes:

Besten Dank hat direkt auf Anhieb geklappt.
Gruß Blacky
06/14/2012 11:13 buja12#6011
Servus Leute mal ne Frage hab schon alles ausprobiert nur will der Timer nicht ich denke da fehlt was o.O kann mir vllt einer sagen was? :D
Man soll nur alle 15min Schreiben können..

THX IM VORRAUS
06/14/2012 15:42 Fuzzy111#6012
Hallo
Kann mit jemand bitte hier den Fehler sagen?
Ich finde den nicht.
Ich wollte einen eigenen Arena_manager.quest schreiben.
Fehler: Must start with 'quest'..Error occoured arena_manager.quest.....
Hier die quest:
PHP Code:
quest arena_manager begin
    state start begin
        when 20017.chat
."Duell mit einem Spieler" begin
            say_title
("Arena-Management")
            
say("Hallo mutiger Kämpfer,")
            
say("Du möchtest dich also mit einem anderen")
            
say("Spieler in der Arena duellieren.")
            
say("")
            
say_reward("Möchtest du in die Arena?")
            
game.set_event_flag("arena_open"1)
            
local b select("Ja, ich möchte""Abbruch")
            
            if 
== 2 then
                say_title
("Arena_Management")
                
say("Oh.. Da hat wohl jemand Angst")
                
notice_all(""pc.get_name().."hat Angst vor einem Duell in der Arena!")
                return
            
end
            
            
if == 1 then
                say_title
("Arena-Management")
                
local put input()
                
say("Möchtest du diesen Spieler herrausfordern?")
            
local y select("Ja""Nein")
            
            if 
== 2 then
                
return
            
end
            
            
if == 1 then        
                notice_all
(""..pc.get_name().." fordert "..pc.get_name(put).." zu einem Duell in der Arena herraus!")
                
game.get_event_flag("arena_open"1)
            
end
            
            
if put == "" then
                say_title
("Arena-Management")
                
say("Du musst hier den Namen des Spielers eingeben!")
                return
            
end    
        end
    end
end 
06/14/2012 21:35 DarkNessWorld2#6013
PHP Code:
quest test100 begin
    state start begin
        when login 
or levelup with pc.get_level() >=100  begin
            set_state
(information)
        
end    
    end

    state information begin
        when letter begin
            local v 
find_npc_by_vnum(20095)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Quest")
            
end
            send_letter
("100 Level Quest")
        
end

        when button 
or info begin
            say_title
("100 Level Quest")
            
say("")
            
say("Hilf Seon-Hae die mächtige Kreatur")
            
say(" zu töten.")
            
say("")
            
say("")
            
say("")
            
say("")
            
say("")
        
end

        when __TARGET__
.target.click or
            
20095.chat."Quest" begin
            target
.delete("__TARGET__")
            
say("Seon-Hae:")
            ---                                                   
l
            say
("Ein böses altes Mönster")
            
say("aus vergessener Zeit")
            
say("ist zurückgekehrt.")
            
say("Es sucht die level 100 Player um ")
            
say("sie zu vernichten.")
            
say("SUCHE IHN!!!")
            
say("Sein letzter durch den Metin2 Gott bekanter")
            
say("aufenthaltsort war ~~~Das Feuerland~~~")
            
say("")    
            
set_state(go_to_disciple)
            
pc.setqf("collect_count",0)
            
pc.setqf("drink_drug",0
        
end
    end

    state go_to_disciple begin
        when letter begin
            send_letter
("Auftrag von Seon-Hae")

        
end
        when button 
or info begin
            say_title
("Quest")
            ---                                                   
l
            say
("")
            
say("Seon-Hae gab euch den Auftrag")
            
say("5 Expertenrezept zu sammeln!")
            
say("Das Item bekommt ihr von Roter Drache.")
            
say("Viel Glueck!")
            
say("")
            
say_item_vnum(50904)
            
say_reward("   Du hast".." "..pc.getqf("collect_count").." bis jetzt gesammelt!")
            
say("")
        
end

        when 71035.
use begin --°g´bÃĤô
            
if pc.getqf("drink_drug")==1 then
                say
("")
                
say("Bessere Droppchance!")
                
say("")

                return
            
end
            
if pc.count_item(50904)==0 then
                say
("")
                
say("Du hast keine!")
                
say("Lauf los und besorg mir welche!")
                
say("")
                return
            
end
            item
.remove()    
            
pc.setqf("drink_drug",1)
        
end


        when 2291.kill begin
            
if pc.count_item(50904)<5-pc.getqf("collect_count"then
                pc
.give_item2(509041)
            
end
        end

        when 20095.chat
."Quest" with pc.count_item(50904) >0   begin
                say
("Einen Moment!")
                ---                                                   
l
                say
("Ich werde das Item")
                
say("schnell mal ueberpruefen.")
                
say("Hoffentlich klappt alles!")
                
say("")
                
pc.remove_item(509041)
                
wait()

                
local pass_percent
                
if pc.getqf("drink_drug")==0 then
                    pass_percent
=71107
                
else        
                    
pass_percent=71107
                end

                local s
number(1,100)
            if 
s<= pass_percent  then
               
if pc.getqf("collect_count")< 4 then     --5*Ó¥H¤U 
                        local index 
=pc.getqf("collect_count")+
                        pc
.setqf("collect_count",index)     --¨ú±o¤@*Ӯɠ+1
                        say
("Seon-Hae:")
                        
say("Perfekt! Das Item ist in Ordnung")
                        
say("Du hast bis jetzt ".." "..5-pc.getqf("collect_count").. " abgegeben!")
                        
say("Bring mir die restlichen!")
                        
say("")
                        
pc.setqf("drink_drug",0)     --ÃĤôªì©l¤Æ
                        
return
                    
end
                    say
("Seon-Hae:")
                    
say("Yuhu! Du hast mir")
                    
say("alles gebracht!")
                    
say("Dafür werde ich dich wie versprochen")
                    
say("belohnen!")
                    
say("")
                    
say_reward("Du bekommst ein Frucht des Lebens!")
                    
say_reward("Du bekommst ein Trank der Hast!")
                    
say_reward("Du bekommst ein Wiederstand gegen Fertigkeitsschaden 50%!")
                    
say_reward("Du bekommst 500000000 Yang!")
                    
say_reward("Du bekommst 1000000000 Erfahrung!")
                    
pc.setqf("collect_count",0)
                    
pc.setqf("drink_drug",0)
                    
clear_letter()
                    
set_state(__complete)

                    
pc.give_item2(71107)
                    
pc.give_item2(71101)
                    
pc.give_item2(28112)
                    
pc.change_money(500000000)
                    
pc.give_exp2(1000000000)
                    
set_quest_state("levelup","run")


                    return
                else                                
                
say("Seon-Hae:")
                
say("Dieses Item ist von schlechter Qualität!")
                
say("Es kann nicht verwendet werden.")
                
say("Hole mir ein neues!")
                
say("")
                
pc.setqf("drink_drug",0)     --ÃĤôªì©l¤Æ
                
return
                
end
            end
        end    
    state __complete begin
    end
end 
Error occured on compile test100.quest
06/14/2012 21:49 .KingDarkness#6014
Brauche SCHNELL hilfe bei meiner Quest,

when kill begin
local s = number(1, 500)
if s <= 10 then
game.drop_item_with_ownership(50033, 1)

Das problem dabei ist man droppt mit level 99 trotzdem bei Wildhunden die Truhe. Die Chance kann sich i-wie nicht verringern oder? Gibt es ein Command dafür?
06/14/2012 22:33 |★|554#6015
Fuzzy111:
.KingDarkness: