[SERVICE] Die Questkontrolle

09/04/2013 18:42 ©Fitchi#8941
Quote:
Originally Posted by .LuckyStrike View Post
PHP Code:
quest blutstein_grotte begin
    state start begin
        when 20091.chat
"In die Grotte" begin
            say_title
("Seon-Pyeong")
            
say("")
            
say("Hallo "..pc.get_name().."")
            
say("Du möchtest in die Grotte?")
            
say("Ich kann dich gerne hinein")
            
say("lassen, jedoch musst du mir ein")
            
say("Blutstein besorgen, damit ich sehen")
            
say("kann das du auch würdig genug bist,"
            
say("um die Grotte zu überstehen!")
            
say("")
            
say("Hast du einen dabei?")
            
local x select("Ja""Nein")
            if 
== and pc.get_level >= 75 then
                
if pc.countitem(30190) != 0 then
                    pc
.remove_item(301901)
                        
pc.warp(100001208000)
                else
                    
say_title("Seon-Pyeong")
                    
say("")
                    
say("Du hast kein Blutstein dabei")
                    
say("Ich kann dich daher nicht")
                    
say("in die Grotte Lassen")
                    
say("")
                
end
            
else
                
say_title("Sean-Pyeong")
                
say("")
                
say("Dein Level ist zu Niedrig!")
                
say("Du musst Level 75 erreicht haben")
                
say("um in die Grotte zu kommen.")
            
end
        end
    end 
end 
Es kommt weder ein Fenster wenn ich unter Lv75 bin vonwegen ich sei zu Niedrig, noch ein Fenster wenn ich kein Blutstein dabei habe...

MFG
Fitchi
09/04/2013 20:37 Noa_#8942
PHP Code:
quest blutstein_grotte begin 
    state start begin 
        when 20091.chat
."In die Grotte" begin 
            say_title
(mob_name(20091)) 
            
say(""
            
say("Hallo "..pc.get_name()) 
            
say("Du möchtest in die Grotte?"
            
say("Ich kann dich gerne hinein"
            
say("lassen, jedoch musst du mir ein"
            
say("Blutstein besorgen, damit ich sehen"
            
say("kann das du auch würdig genug bist,")  
            
say("um die Grotte zu überstehen!"
            
say(""
            
say("Hast du einen dabei?"
            if 
select("Ja""Nein") == 2 then return end
            
if pc.get_level() >= 75 then 
                
if pc.count_item(30190) > 0 then 
                    pc
.remove_item(301901
                    
pc.warp(100001208000
                else 
                    
say_title("Seon-Pyeong"
                    
say(""
                    
say("Du hast kein Blutstein dabei"
                    
say("Ich kann dich daher nicht"
                    
say("in die Grotte Lassen"
                    
say(""
                
end 
            
else 
                
say_title("Sean-Pyeong"
                
say(""
                
say("Dein Level ist zu Niedrig!"
                
say("Du musst Level 75 erreicht haben"
                
say("um in die Grotte zu kommen."
            
end 
        end 
    end  
end 
09/04/2013 20:46 NightCrash#8943
Halli Hallo,

ich versuche mich mal wieder im questen im kombination mit neuer Functionen in der questlib. Nur irgendwie will der Spaß nicht gehen.

Funktion in der Lib:
Code:
function horse_summon(vnum)
	pc.mount(vnum, 36000000)
	chat("Dein Pferd wurde gerufen.")

	return 0
end
Befehl in der Quest:
Code:
horse_summon(20102)
Die Funktion ist in der quest_functions eingetragen

Syserr:
Code:
SYSERR: Sep  4 19:36:34 :: RunState: LUA_ERROR: [string "horse_summon"]:8: attempt to call global `horse_summon' (a table value)
SYSERR: Sep  4 19:36:34 :: WriteRunningStateToSyserr: LUA_ERROR: quest horse_summon.start click
Wer könnte mir mal erklären, was ich vergessen habe?

Lg. Nighti
09/04/2013 21:17 ©Fitchi#8944
PHP Code:
quest dr_gutschein begin
    state start begin   
        when 80014.
use begin
        give_dm
(1000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 1.000 Coins gutgeschrieben")
        
item.remove()
        
end
        when 80015.
use begin
        give_dm
(10000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 10.000 Coins gutgeschrieben")
        
item.remove()
        
end
        when 80016.
use begin
        give_dm
(20000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 20.000 Coins gutgeschrieben")
        
item.remove()
        
end
        when 80017.
use begin
        give_dm
(40000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 40.000 Coins gutgeschrieben")
        
item.remove()
        
end
    end
end 
sorry das ich wieder spamen muss, aber er bucht keine Coins zu ;(

MFG
Fitchi

P.s: bedanke mich immer und so :*
09/04/2013 21:42 Tiger121282#8945
Habe ein Problem mit meiner Quest, will das man Ingame ein Item anklicken kann und 200 Coins ausgezahlt bekommt.
Aber Putty sagt:

Calls undeclared function! :
mysql_query

PHP Code:
## QUEST BY XEVOS FOR XEVONIA&PARANORMAL2 - COIN_ITEM QUEST
quest coin_item begin
    state start begin
            when 30013.
use begin
                say_title
("Coins Item")
                
say("Sollen dir 200 Coins gutgeschrieben werden?")
                
say("Die Coins lassen sich später nichtmehr in ein Coins Item umwandeln")
                
local b select("Ja","Nein")
                if 
== 2 then
                    
return
                
end
                
if pc.count_item(30013) == 0 then
                    syschat
("Du hast keine Coins erhalten, da du einen Bug benutzen wolltest.")
                
end
                local Coins_Def 
200
                local get_id 
pc.get_account_id()
                
pc.remove_item(300131)
                
mysql_query("UPDATE account.account SET coins = coins + "..Coins_Def.." WHERE id = "..get_id.."")
                
syschat("Du hast 200 Coins erhalten.")
        
end
    end
end 
09/04/2013 21:56 ProfessorEnte#8946
Quote:
Originally Posted by ©Fitchi View Post
PHP Code:
quest dr_gutschein begin
    state start begin   
        when 80014.
use begin
        give_dm
(1000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 1.000 Coins gutgeschrieben")
        
item.remove()
        
end
        when 80015.
use begin
        give_dm
(10000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 10.000 Coins gutgeschrieben")
        
item.remove()
        
end
        when 80016.
use begin
        give_dm
(20000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 20.000 Coins gutgeschrieben")
        
item.remove()
        
end
        when 80017.
use begin
        give_dm
(40000)
        
say_size(300100)
        
say_green("Dir wurden erfolgreich 40.000 Coins gutgeschrieben")
        
item.remove()
        
end
    end
end 
sorry das ich wieder spamen muss, aber er bucht keine Coins zu ;(

MFG
Fitchi

P.s: bedanke mich immer und so :*

Schau mal in deiner questlib.lua nach den Funktion:

give_dm

Danach schaust du welche MYSQL version du hast.
fuer MySQL55 ersetzt du die Funktion give_dm mit dieser:
PHP Code:
function give_dm(z)
    
os.execute("mysql -u root account -execute='UPDATE account SET coins = coins + ".. .." WHERE id = ".. pc.get_account_id() ..";'")
    
os.execute("mysql -u root log -execute='INSERT INTO voucher_log (account_id, pocet, cas) VALUES (".. pc.get_account_id() ..", ".. ..", NOW());'")
end 
Bei MySQL51 mit dieser:
PHP Code:
function give_dm(z)
    
os.execute("mysql -u root account --execute='UPDATE account SET coins = coins + ".. .." WHERE id = ".. pc.get_account_id() ..";'")
    
os.execute("mysql -u root log --execute='INSERT INTO voucher_log (account_id, pocet, cas) VALUES (".. pc.get_account_id() ..", ".. ..", NOW());'")
end 
Und ueberpruefe bitte ob du give_dm in der quest_functions eingetragen hast.

---------------------------

Quote:
Originally Posted by Tiger121282 View Post
Habe ein Problem mit meiner Quest, will das man Ingame ein Item anklicken kann und 200 Coins ausgezahlt bekommt.
Aber Putty sagt:

Calls undeclared function! :
mysql_query

PHP Code:
## QUEST BY XEVOS FOR XEVONIA&PARANORMAL2 - COIN_ITEM QUEST
quest coin_item begin
    state start begin
            when 30013.
use begin
                say_title
("Coins Item")
                
say("Sollen dir 200 Coins gutgeschrieben werden?")
                
say("Die Coins lassen sich später nichtmehr in ein Coins Item umwandeln")
                
local b select("Ja","Nein")
                if 
== 2 then
                    
return
                
end
                
if pc.count_item(30013) == 0 then
                    syschat
("Du hast keine Coins erhalten, da du einen Bug benutzen wolltest.")
                
end
                local Coins_Def 
200
                local get_id 
pc.get_account_id()
                
pc.remove_item(300131)
                
mysql_query("UPDATE account.account SET coins = coins + "..Coins_Def.." WHERE id = "..get_id.."")
                
syschat("Du hast 200 Coins erhalten.")
        
end
    end
end 
Du musst die Funktion von mijago in die questlib.lua eintragen.
Dann noch in die quest_functions den Befehl mysql_query am ende eintragen.

[Only registered and activated users can see links. Click Here To Register...]

PHP Code:
mysql_query = function(query)
    if 
not pre then
        local rt 
io.open('CONFIG','r'):read('*all')
        
pre,_string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
    
end
    math
.randomseed(os.time())
    
local fi,t,out 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
    
os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51
    
-- os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- für MySQL55
    
for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) endos.remove(fi);
    for 
2table.getn(t) do table.foreach(t[i],function(a,b)
        
out[i-1]               = out[i-1] or {}
        
out[i-1][a]            = tonumber(b) or or 'NULL'
        
out[t[1][a]]           = out[t[1][a]] or {}
        
out[t[1][a]][i-1]      = tonumber(b) or or 'NULL'
    
endend
    
return out
end 
Du musst auch darauf achten welche MYSQL version du besitzt.
MySQL55 oder MySQL51. Je nachdem auskommentieren in der Funktion.
09/04/2013 23:02 Noa_#8947
Quote:
Originally Posted by NightCrash View Post
Halli Hallo,

ich versuche mich mal wieder im questen im kombination mit neuer Functionen in der questlib. Nur irgendwie will der Spaß nicht gehen.

Funktion in der Lib:
Code:
function horse_summon(vnum)
	pc.mount(vnum, 36000000)
	chat("Dein Pferd wurde gerufen.")

	return 0
end
Befehl in der Quest:
Code:
horse_summon(20102)
Die Funktion ist in der quest_functions eingetragen

Syserr:
Code:
SYSERR: Sep  4 19:36:34 :: RunState: LUA_ERROR: [string "horse_summon"]:8: attempt to call global `horse_summon' (a table value)
SYSERR: Sep  4 19:36:34 :: WriteRunningStateToSyserr: LUA_ERROR: quest horse_summon.start click
Wer könnte mir mal erklären, was ich vergessen habe?

Lg. Nighti
steht doch da 'attempt to call global `horse_summon' (a table value)'
du versuchst eine Tabelle aufzurufen horse_summon ist eine tabelle, gib der Funktion einen anderen Namen dann sollte es klappen.
09/05/2013 17:34 ©Fitchi#8948
Quote:
Originally Posted by ProfessorEnte View Post
Schau mal in deiner questlib.lua nach den Funktion:

give_dm

Danach schaust du welche MYSQL version du hast.
fuer MySQL55 ersetzt du die Funktion give_dm mit dieser:
PHP Code:
function give_dm(z)
    
os.execute("mysql -u root account -execute='UPDATE account SET coins = coins + ".. .." WHERE id = ".. pc.get_account_id() ..";'")
    
os.execute("mysql -u root log -execute='INSERT INTO voucher_log (account_id, pocet, cas) VALUES (".. pc.get_account_id() ..", ".. ..", NOW());'")
end 
Bei MySQL51 mit dieser:
PHP Code:
function give_dm(z)
    
os.execute("mysql -u root account --execute='UPDATE account SET coins = coins + ".. .." WHERE id = ".. pc.get_account_id() ..";'")
    
os.execute("mysql -u root log --execute='INSERT INTO voucher_log (account_id, pocet, cas) VALUES (".. pc.get_account_id() ..", ".. ..", NOW());'")
end 
Und ueberpruefe bitte ob du give_dm in der quest_functions eingetragen hast.
Ich habe alles beide Querys für die Questlib ausprobiert. Es war vorher eine in der Questlib drinne, und er schreibt die nicht gut, aber von der Quest her gibt es keine Fehler(-meldungen). Es ist auch give_dm in der quest_funktion eingetragen.

MFG
Fitchi
09/05/2013 18:32 ProfessorEnte#8949
Quote:
Originally Posted by ©Fitchi View Post
Ich habe alles beide Querys für die Questlib ausprobiert. Es war vorher eine in der Questlib drinne, und er schreibt die nicht gut, aber von der Quest her gibt es keine Fehler(-meldungen). Es ist auch give_dm in der quest_funktion eingetragen.

MFG
Fitchi
Ein Coins Eintrag in der Account Table ist aber schon vorhanden oder :D?
09/05/2013 20:39 ©Fitchi#8950
[Only registered and activated users can see links. Click Here To Register...]

das kommt direkt nach dem ich das Item angeklickt hab und mir laut Item die Coins gutgeschrieben wurden
09/05/2013 23:22 Yiv#8951
Dann hat dein root-User in MySQL der auf den Host 'localhost' zugelassen ist wohl ein Passwort. Entweder entfernst du dieses, oder passt die Query an.

MfG
09/05/2013 23:59 -Tuni#8952
Code:
quest itemwear begin
    state start begin
        when 28760.use begin
		notice("Ich habe das Item angezogen")
        end
    end
end
Hii
wenn ich das Item anziehe (geht in den Slot wo auch z.B der Windschuh rein geht)
kommt keine Notiz!!

Also ich will dass es über den Kopf erscheint, als ob man Chatten würde!!

PS: Es tauchen keine Fehler beim reloaden auf!

Bitte um hilfe!

LG
09/06/2013 00:16 Yiv#8953
Quote:
Originally Posted by Tunii View Post
Code:
quest itemwear begin
    state start begin
        when 28760.use begin
		notice("Ich habe das Item angezogen")
        end
    end
end
Hii
wenn ich das Item anziehe (geht in den Slot wo auch z.B der Windschuh rein geht)
kommt keine Notiz!!

Also ich will dass es über den Kopf erscheint, als ob man Chatten würde!!

PS: Es tauchen keine Fehler beim reloaden auf!

Bitte um hilfe!

LG
1. Das Item muss dafür den Type 18 haben
2. Du kannst das meines Wissens nicht so machen, dass eine Notiz über dem Kopf erscheint
3. Wenn der Type 18 ist, geht es aber auch nicht mehr in den Slot hinein

MfG
09/06/2013 10:54 .Soυzα#8954
HMMMM woran kann es liegen "
Error occured on compile info.quest
"

PHP Code:
quest info begin 
    state start begin
        when 70004.
use begin 
            local a 
select ("Itemshop Info","Drops","Devils Catacomb","Bruthöhle","Teamerliste","Abrechen"
            if 
== 1 then 
            say
("Itemshop Info"
            
say("Spenden:"
            
say("10€ = xxx"
            
say("25€ = xxx"
            
say("50€ = xxx"
            
say("100€ = xxx"
            
say(""
            
say("Vote 4 Coins:"
            
say("Pro Voten bekommt ihr xxx coins gutgeschrieben."
            
say("Man kann nur alle 24 Stunden voten."
        
end 
        
if == 2 then 
            say
("Drops"
            
say("Die aktuellen Drops findet ihr im Forum."
            
say("Das Forum ist unter: xxxxx erreichbar."
        
end 
        
if == 3 then 
            say
("Devils Catacomb"
            
say("Das Devils Catacomb befindet sich unterhalb des"
            
say("Dämonenturms, um eintreten"
            
say("zu dürfen musst du Level 80 sein."
            
say("In diesem Gebiet treiben sich viele Untote herum.")
        
end 
        
if == 4 then 
            say
("Bruthöhle"
            
say("Die Bruthöhle könnt ihr über den Grabstein am Ende"
            
say("vom Sd3 betreten."
            
say("Um in die Bruthöhle zu kommen braucht ihr einen"
            
say("Schlüssel, diesen droppt ihr von der"
            
say("Königsspinne aus dem SD1."
        
end 
        
if == 5 then 
            say
("Teamerliste"
            
say("SA Schmerz) 
            say("
SL Nettel ") 
            say("
NA Happy") 
            say("
GM cRYME") 
        end 
        if a == 6 then 
        return 
        end 
    end 
end
end 
09/06/2013 10:57 .LuckyStrike#8955
Quote:
Originally Posted by HappyMiss View Post
HMMMM woran kann es liegen "
Error occured on compile info.quest
"

PHP Code:
quest info begin 
    state start begin
        when 70004.
use begin 
            local a 
select ("Itemshop Info","Drops","Devils Catacomb","Bruthöhle","Teamerliste","Abrechen"
            if 
== 1 then 
            say
("Itemshop Info"
            
say("Spenden:"
            
say("10€ = xxx"
            
say("25€ = xxx"
            
say("50€ = xxx"
            
say("100€ = xxx"
            
say(""
            
say("Vote 4 Coins:"
            
say("Pro Voten bekommt ihr xxx coins gutgeschrieben."
            
say("Man kann nur alle 24 Stunden voten."
        
end 
        
if == 2 then 
            say
("Drops"
            
say("Die aktuellen Drops findet ihr im Forum."
            
say("Das Forum ist unter: xxxxx erreichbar."
        
end 
        
if == 3 then 
            say
("Devils Catacomb"
            
say("Das Devils Catacomb befindet sich unterhalb des"
            
say("Dämonenturms, um eintreten"
            
say("zu dürfen musst du Level 80 sein."
            
say("In diesem Gebiet treiben sich viele Untote herum.")
        
end 
        
if == 4 then 
            say
("Bruthöhle"
            
say("Die Bruthöhle könnt ihr über den Grabstein am Ende"
            
say("vom Sd3 betreten."
            
say("Um in die Bruthöhle zu kommen braucht ihr einen"
            
say("Schlüssel, diesen droppt ihr von der"
            
say("Königsspinne aus dem SD1."
        
end 
        
if == 5 then 
            say
("Teamerliste"
            
say("SA Schmerz) 
            say("
SL Nettel ") 
            say("
NA Happy") 
            say("
GM cRYME") 
        end 
        if a == 6 then 
        return 
        end 
    end 
end
end 

Du hast bei der Teamliste ein " vergessen.
Und du kannst statt if elseif benutzen :D


PHP Code:
quest info begin 
    state start begin
        when 70004.
use begin 
            local a 
select ("Itemshop Info","Drops","Devils Catacomb","Bruthöhle","Teamerliste","Abrechen"
            if 
== 1 then 
                say
("Itemshop Info"
                
say("Spenden:"
                
say("10€ = xxx"
                
say("25€ = xxx"
                
say("50€ = xxx"
                
say("100€ = xxx"
                
say(""
                
say("Vote 4 Coins:"
                
say("Pro Voten bekommt ihr xxx coins gutgeschrieben."
                
say("Man kann nur alle 24 Stunden voten."
            elseif 
== 2 then 
                say
("Drops"
                
say("Die aktuellen Drops findet ihr im Forum."
                
say("Das Forum ist unter: xxxxx erreichbar."
            elseif 
== 3 then 
                say
("Devils Catacomb"
                
say("Das Devils Catacomb befindet sich unterhalb des"
                
say("Dämonenturms, um eintreten"
                
say("zu dürfen musst du Level 80 sein."
                
say("In diesem Gebiet treiben sich viele Untote herum.")
            elseif 
== 4 then 
                say
("Bruthöhle"
                
say("Die Bruthöhle könnt ihr über den Grabstein am Ende"
                
say("vom Sd3 betreten."
                
say("Um in die Bruthöhle zu kommen braucht ihr einen"
                
say("Schlüssel, diesen droppt ihr von der"
                
say("Königsspinne aus dem SD1."
            elseif 
== 5 then 
                say
("Teamerliste"
                
say("SA Schmerz"
                
say("SL Nettel "
                
say("NA Happy"
                
say("GM cRYME"
            elseif 
== 6 then 
                
return 
            
end 
        end 
    end
end