[Quest]Banking-Function Extended

09/20/2011 14:03 .Risan.#16
Nicht anders zu erwarten von dir Music.. :)
Gute Quest.

(Besser wäre es per os.execte(...) und extra Tabelle in der Datenbank, muss man ja nicht alles in der quest tabelle schleudern, ich melde mich icq bei dir.

Best Regards,
Risan
09/20/2011 14:50 3jfx#17
Geile Idee!

Man könnte den maximalen Wert noch zusätzlich auf 9 223 372 032 559 808 512 anheben, indem man den negativen Bereich von "saved_signed_longs" ausnutzt.
09/20/2011 21:26 .Restince#18
Nice Quest :)

wie immer ein gutes Release von dir.
09/21/2011 07:52 .Risan.#19
Was habt ihr für komische fehlermeldungen...
Theoretisch stimmt alles an seiner Quest:
PHP Code:
quest banker begin
    state start begin
        when 123456.chat
."Bank" begin
            banker
.bankdialog()
        
end
        
function bankdialog()
            
say_title("Banker:")
            
say("Ich biete dir die Möglichkeit, dein Yang")
            
say("Zinsenfrei aufzubewahren.")
            
say("Du kannst jedoch maximal einen Betrag")
            
say("von 4.611.686.016.279.904.256 Yang")
            
say("aufbewahren.")
            
say("")
            
local action = select("Yang einzahlen", "Yang auszahlen", "Abbrechen")
            if 
action == 1 then
                say_title
("Banker:")
                if 
pc.gold < 1 then
                    say
("Du hast kein Yang.")
                    
say("")
                    return
                
end
                say
("Du hast "..pc.gold.." Yang.")
                
say("Wieviel möchtest du davon einzahlen?")
                
local yang = tonumber(input())
                if 
yang < 0 then
                    
return
                
end
                
if yang > pc.gold then
                    yang 
= pc.gold
                end
                pc
.changegold(-yang)
                
local saved_rest = tonumber(pc.getqf("saved_rest"))
                
local saved_signed_longs = tonumber(pc.getqf("saved_signed_longs"))
                if 
saved_rest + yang > 2147483647 then
                    pc
.setqf("saved_signed_longs", saved_signed_longs + 1)
                    
pc.setqf("saved_rest", saved_rest + yang - 2147483647)
                else
                    
pc.setqf("saved_rest", saved_rest + yang)
                
end
                say_title
("Banker:")
                
say("Es wurden "..yang.." Yang eingezahlt.")
                
say("")
                return
            elseif 
action == 2 then
                local saved_rest 
= tonumber(pc.getqf("saved_rest"))
                
local saved_signed_longs = tonumber(pc.getqf("saved_signed_longs"))
                
local saved_yang = saved_signed_longs*2147483647+saved_rest
                say_title
("Banker:")
                if 
saved_yang < 1 then
                    say
("Ich habe kein Geld mehr von dir.")
                    
say("")
                    return
                
end
                say
("Ich kann dir das Geld, das du eingezahlt hast,")
                
say("nun wieder auszahlen.")
                
say("")
                
say_reward("Kontostand: "..saved_yang.." Yang")
                
say("")
                
say("Wieviel Yang möchtest du ausgezahlt bekommen?")
                
local yang = tonumber(input())
                if 
yang < 0 then
                    
return
                
end
                
if yang > saved_yang then
                    yang 
= saved_yang
                end
                
if pc.gold + yang > 1899999999 then
                    yang 
= 1899999999 - pc.gold
                end
                
if yang > saved_yang then
                    yang 
= saved_yang
                end
                
if saved_rest - yang < 0 then
                    pc
.setqf("saved_signed_longs", saved_signed_longs - 1)
                    
pc.setqf("saved_rest", 2147483647 - yang + saved_rest)
                else
                    
pc.setqf("saved_rest", saved_rest - yang)
                
end
                pc
.changegold(yang)
                
say_title("Banker:")
                
say("Es wurden "..yang.." Yang ausgezahlt.")
                
say("")
            
end
        end
    end
end 
09/21/2011 08:19 ~LuckyStrike~#20
Quote:
Originally Posted by Whit3W0lf View Post
Eure Post nerven wirkl wir sind gegangen blablabla!!
Wenn du gegangen bist was machst hier?? Was soll die nummer was ihr hier abzieht die Com verdient es nicht blablabla Hauptsache immer noch hier sein und sowas Posten nervt wirkl! Wenn du/ihr gegangen bist dann bleibt dort wo du bist statt hier zu spammen!!
Und bist du was besseres oder was das ist verdammt noch einmal ein Forum was habt ihr alle? Manchmal kommt es mir so vor als hättet ihr kein "REALLIFE"!!
Und außerdem wenn es hier paar Idioten herum "streifen" heißt das nicht das es alle sind!! und die Idioten werden überall sein hier oder wo anders!!
Das was wichtig ist was einer im Kopf hat und nicht was auf Papier steht das er 18 ist xD!!! Aber du hast kein Recht so über alle zu Urteilen!!! Das ist einfach nur Niveau los!!
Meld dich mal wenn du was alleine auf die Reihe kriegst
und dir nicht alles aus epvp ziehen musst
dann können wir eventuell darüber weiter diskutieren.
09/21/2011 09:23 .Risan.#21
Quote:
Originally Posted by ~LuckyStrike~ View Post
Meld dich mal wenn du was alleine auf die Reihe kriegst
und dir nicht alles aus epvp ziehen musst
dann können wir eventuell darüber weiter diskutieren.
So siehts aus!
09/21/2011 09:54 musicinstructor#22
wer das problem hat, dass die funktion nicht deklariert ist, der sollte sich mal die funktionen in anderen quests mit ihren aufrufen angucken.
name_deiner_quest.name_deiner_funktion()

wer bei dem beispiel probleme hat, sollte sicherstellen, dass die quest auch banker.quest heißt.
09/21/2011 23:10 Sp0ngeb0b ist cool#23
Hey. Erstmal großes dankeschön an dich music :)

ich habe noch eine kleine Frage, undzwar:

Kann man die quest so um schreiben, dass nach einer gewissen Zeit das eingezahlte Yang auf 0 gesetzt wird?
(einen timer hab ich bereits gesetzt..beispiel:
pc.setqf("bespiel", get_time()+60*1)

when 20084.chat."beispiel" with get_time() > pc.getqf("beispiel") begin
(und nun der befehl wofür ich hilfe brauche)
[sowas in der art wie:]
set saved_yang(0)

klar, so gehts nicht aber du weißt ja wie ich das meine :D

einfach den kontobetrag nach einer gewissen zeit auf 0 setzen

würde mich sehr über Lösung freuen
(ich denke, du bekommst das hin music, ist schließlich deine quest :D)
Danke :)
09/21/2011 23:13 .Risan.#24
Um das Yang auf 0 zu setzen is das hier die richtige Variable:

PHP Code:
pc.setqf("saved_rest",0) 
09/21/2011 23:16 Sp0ngeb0b ist cool#25
Vielen Dank Risan!
Hätte ich auch selber drauf kommen können :facepalm:
bin aber zu müde <.<
09/21/2011 23:18 .Risan.#26
Ich vermute es mal..
09/21/2011 23:33 musicinstructor#27
Quote:
Originally Posted by Risan View Post
Um das Yang auf 0 zu setzen is das hier die richtige Variable:

PHP Code:
pc.setqf("saved_rest",0) 
saved_signed_longs muss ebenfalls auf 0 gesetzt werden.