[SERVICE] Die Questkontrolle

08/27/2013 01:58 Noa_#8851
ja, formatieren, so zb
PHP Code:
a='Noa'
str=''
for key in string.gfind(a,'.') do
    
str=str..string.byte(key)..','
end
print(string.format('%c%c%c',loadstring('return '..str:gsub('(%w),$','%1'))())) 
08/27/2013 11:56 Crankiboiii#8852
quest lager begin
state start begin
when letter begin
send_letter ( "Lager öffnen" )
end
when button or info begin
game.open_safebox()
end
end
end

Wie muss ich das ändern, dass die Quest nach dem Anklicken wieder erscheint ? Quasi eine Quest die immer wieder zurück kommt links an der seite wo die Quests stehen...
08/27/2013 12:14 .LuckyStrike#8853
Quote:
Originally Posted by Wython View Post
PHP Code:
quest byincredible begin
    state start begin
        when login with pc
.getqf("firstlogin") == 0 begin
            notice_all
("Wir begruessen einen neuen Gladiator namens "..pc.get_name().."!")
            
say_title("Willkommen auf Wython, "..pc.get_name().." .")
            
say("")
set_text_color("dark brown")
            
say("Schon seid langer langer Zeit herrscht Krieg zwischen den 3 Reichen!")
            
say("Das Chunjo-Reich, steht zwischen den beiden Maechten, Jinno und Shinsoo")
            
say("Die Fuehrer des Jinno Reiches geben dem Meister der Shinsoo Sprache die Schuld dafuer,")
            
say("das der Gott aller Monster sein Zorn ueber die drei Reiche bringt.")
            
say("Da der Lehrer der Shinsoo Sprache versucht hat,")
            
say("den Gott der Monster mit seinem Wissen und Weisheit zu bendigen,")
            
say("dies erzornte den maechtigen Azrael nur nochmehr.")
            
say("Das Shinsoo Reich bestreitet dies jedoch.")
            
say("Die starken Meinungsverschiedenheiten,")
            
say("fuehren zu starkem Krieg zwischen den Welten. Das Chunjo Reich,")
            
say("das friedlichste der Drei Maechte, versucht den Fuehrern der anderen Reiche,")
            
say("zu erklaeren, das sie nur gemeinsam eine Chance haben...")
            
say("Nun liegt es am Volk! Es liegt an dir!")
            
say("Kannst du frieden ueber das Land bringen? Beweis es!")
set_text_color("red")
            
say("ACHTUNG! Wenn du deine Lehrlingstruhe I nicht siehst, benutze")
            
say("die andere .exe in deinem Clienten!")
            
say("")
            
chat("Beweise dich, und werde zum ultimativen Gladiator!")
        
end
    end
end 
Könnte mir jemand sagen, was daran falsch ist ? (quest war länger, habe sie kürzer gemacht, da ich nur einen anfangstext brauche..)

EDIT: Error at Line 27 ist weg, geht aber trotzdme nicht warum ?

Geh mal in die Datenbank
Code:
 Player -> quest
und überprüfe ob bei "firstlogin" eine 0 oder eine 1 steht.
08/27/2013 12:23 Noa_#8854
die quest würde sowieso immer abgespielt werden, weil er die qf nicht setzt
außerdem könnte man es schneller herausfinden
say(pc.getqf(''firstlogin))
08/27/2013 14:22 MakkeNN#8855
Hello. i need quest auto day/night with time me OS.
08/27/2013 17:22 .CHJonas#8856
Hab wieder ein Problem:

PHP Code:
local q = mysql_query("SELECT username FROM player.bank WHERE username = '"..inp.."'")[1][1] 
Falls er nichts findet soll er was anderes machen aber das klappt nicht richtig.
Ich hab zum test mal das ausprobiert:

PHP Code:
 if q[1][1] == nil then return end 
und das:

PHP Code:
ig q == (0 or nil) then return end 
Aber dann kommt dieser Fehler:

PHP Code:
attempt to index field '?' (a nil value) 
08/27/2013 18:26 ProfessorEnte#8857
Quote:
Originally Posted by .CHJonas View Post
Hab wieder ein Problem:

PHP Code:
local q = mysql_query("SELECT username FROM player.bank WHERE username = '"..inp.."'")[1][1] 
Falls er nichts findet soll er was anderes machen aber das klappt nicht richtig.
Ich hab zum test mal das ausprobiert:

PHP Code:
 if q[1][1] == nil then return end 
und das:

PHP Code:
ig q == (0 or nil) then return end 
Aber dann kommt dieser Fehler:

PHP Code:
attempt to index field '?' (a nil value) 
PHP Code:
local q = mysql_query("SELECT count(username) FROM player.bank WHERE username = '"..inp.."';")[1][1] > 0 
gibt dir true/false zurueck, je nachdem ob ers findet oder nicht.
08/27/2013 18:34 Noa_#8858
PHP Code:
if q and true or false then
    
print('es lebt')
else
    print(
'es lebt nicht')
end 
08/27/2013 18:36 .CHJonas#8859
Quote:
Originally Posted by ProfessorEnte View Post
PHP Code:
local q = mysql_query("SELECT count(username) FROM player.bank WHERE username = '"..inp.."';")[1][1] > 0 
gibt dir true/false zurueck, je nachdem ob ers findet oder nicht.
Also es klappt beides nicht hier mal die Quest:

PHP Code:
quest test_bank begin
    state start begin
        when 9010.Chat
."Konto eröffnen" with pc.getqf("konto_open") <= 1 begin
                say_title
(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
                
say()
                
say("Bei mir kannst du ein Konto eröffnen.")
                
say()
                
say_reward("Willst du dies wirklich tun ?")
                
            if 
select("Ja", "Nein") == 2 then return end
            
                say_title
(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
                
say()
                
say_reward("Bitte gib einen Benutzernamen ein.")
                
say_reward("min. 4 Zeichen")
                
say()
                
            
local inp = tostring(input())

            if 
inp == "" or inp == pc.get_name() then
            say_title
(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
            
say()
            
say_reward(locale.ban_panel.say_wrong2)
            
say()
                return 
            
end
            
            
if string.len(inp) < 4 then
            say_title
(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
            
say()
            
say("Dein Benutzername muss mind. 4 Zeichen haben.")
            
say()
            
end

            local q 
= mysql_query("SELECT username FROM player.bank WHERE username = '"..inp.."'")[1][1] > 0
            
            
if q and true or false then 
            say
("Dieser Name exestiert bereits!")
            else 
            print(
'es lebt nicht') 
            
end  
            
            say_title
(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
            
say()
            
say("Bitte gebe ein Passwort ein:")
            
say()
                
            
local pwd = input()
            
            if 
string.len(pwd) < 4 then
                say_title
(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
                
say()
                
say("Das von dir eingegebene Passwort ist zu kurz!")
                
say()
                return
            
end
                
                    mysql_query
("INSERT INTO player.bank (username,passwort,guthaben) VALUES ('"..usrname.."', '"..pwd.."', '0');")
                    return 
chat("Du hast erfolgreich einen Bank Account erstellt.")
            
            
end
        end
    end 
Der Fehler:

PHP Code:
attempt to index locale 'q' (a string value) 
08/27/2013 18:39 ProfessorEnte#8860
Quote:
Originally Posted by .CHJonas View Post
Heißt ich muss es dann so abfragen:

PHP Code:
if q == false then 
z.b. ja

oder so
PHP Code:
if q then
    chat
("Wurde gefunden")
elseif 
not q then
    chat
("Wurde nicht gefunden")
end 

EDIT: schau dir mal meine query an und dann deine.
08/27/2013 19:09 Noa_#8861
mysql gibt immer werte als typ string zurück, man kann keine zahlen mit strings vergleichen >> "attempt to compare string with number"

@Jonas "es klappt beides nicht" meinst du seine Ratschläge? weil meine müssten zu 120% gehen
08/27/2013 19:28 .CHJonas#8862
Quote:
Originally Posted by ΞΠ∪Μ View Post
mysql gibt immer werte als typ string zurück, man kann keine zahlen mit strings vergleichen >> "attempt to compare string with number"

@Jonas "es klappt beides nicht" meinst du seine Ratschläge? weil meine müssten zu 120% gehen
Ich hab eure beiden Ratschläge falsch eingesetzt deswegen hat es nicht geklappt.
Es klappt jetzt nur wie kann ich verhindern das User keine Zahlen eingeben können?
Danke nochmal für eure Hilfe.
08/27/2013 19:54 Noa_#8863
ich hab ein kleinen beispiel geschrieben, >>
PHP Code:
local inp = input()

if 
tonumber(inp) then
    say
('es lässt sich zur Zahl umwandeln')
else
    
say('es lässt sich "nicht" zur Zahl umwandeln')
end 
08/27/2013 20:07 ProfessorEnte#8864
Quote:
Originally Posted by ΞΠ∪Μ View Post
mysql gibt immer werte als typ string zurück, man kann keine zahlen mit strings vergleichen >> "attempt to compare string with number"

@Jonas "es klappt beides nicht" meinst du seine Ratschläge? weil meine müssten zu 120% gehen
Ey meine klappen jawohl auch zu 120%! :D
08/27/2013 20:24 Noa_#8865
schreib einfach
PHP Code:
local pwd = tonumber(input()) or pcall(error('wrong value')) 
hast ganze 6 Funktionen in einer zeile