[Release] Yang-Barren Quest

01/02/2013 18:23 Zymos#1
Hab mal schnell für mich eine Yangbarren Quest geschrieben.
Und wollte diese gerne mit euch teilen <3

PHP Code:
--[[
-- 
Barren Quest
-- lvl x
-- Copyright ©Zymos
]]

quest yang_barren begin
    state start begin
    when 80003.
use or 80004.use or 80005.use or 80006.use or 80007.use or 830003.use begin
        local vnum 
item.get_vnum()
        
local barren = {
        [
80003] = {5000000}, --Silberbarren(50kk Yang)
        [
80004] = {100000000}, --Silberbarren(100kk Yang)
        [
80005] = {500000000}, --Goldbarren(500kk Yang)
        [
80006] = {1000000000}, --Goldbarren(1kkk Yang)
        [
80007] = {1500000000}, --Goldbarren(1,5kkk Yang)
        [
830003] = {500000000} --Goldbarren(500kk Yang) (nicht handelbar)
        }
        
local give_yang barren[vnum][1]
        
local check_can_gold pc.get_gold() + give_yang
        
if tonumber(check_can_gold) >= tonumber(1999999999then
            syschat
("Du kannst diesen "..item_name(vnum).." nicht einlösen. Du überschreitest die Yangrenze.")
        else
            
syschat("Dein "..item_name(vnum).." konnte eingelöst werden. Du erhälst "..give_yang.." Yang.")
            
pc.change_gold(give_yang)
            
item.remove()
        
end
    end
    end
end 
mfg Zymos
01/02/2013 18:25 .Onlyx3#2
Paar mal Public
Unnötig !
01/02/2013 18:30 Zymos#3
Ich darf wohl bitten???

Schau dir mal die anderen Crap Quests an...
Soviel müllcode muss nicht sein..
01/02/2013 18:33 iSouli~#4
Ist zwar nett von dir diese kurze Version zu releasen, aber du könntest sie eig. auch in den Sammelthread für kleine Releases tun.
01/02/2013 18:39 .Hiяo#5
Quote:
Originally Posted by iSouli~ View Post
Ist zwar nett von dir diese kurze Version zu releasen, aber du könntest sie eig. auch in den Sammelthread für kleine Releases tun.
Merk dir das!.... Kleine Releases Sammelthread ist unnötiger als unnötig :)
01/02/2013 18:46 iSouli~#6
Quote:
Originally Posted by .Hiro View Post
Merk dir das!.... Kleine Releases Sammelthread ist unnötiger als unnötig :)
Also da gibt es schon paar Kleinigkeiten die nützlich sind.
01/02/2013 18:51 .iXream.#7
Quote:
Originally Posted by .Onlyx3 View Post
Paar mal Public
Unnötig !
Aber nicht in einer kuhlen Tabelle.
01/02/2013 21:14 √π.#8
Quote:
Originally Posted by Zymos View Post
Ich darf wohl bitten???

Schau dir mal die anderen Crap Quests an...
Soviel müllcode muss nicht sein..
"Crap" Code gibt's nicht, gibt nur mehrere Möglichkeiten das Ziel zu erreichen.
Aber so ist's auf jedenfall leichter auszubauen.
01/03/2013 01:15 .Alpha.#9
Quote:
Originally Posted by Zymos View Post
Ich darf wohl bitten???

Schau dir mal die anderen Crap Quests an...
Soviel müllcode muss nicht sein..
Ich darf wohl bitten???
Deine Quest sieht auch nicht viel besser aus und du hast auch teilweise ziemlich redundanten Code.

Was soll zum Beispiel dass?
[80003] = {5000000}, --Silberbarren(50kk Yang)
Dadurch hast du nachher nur:
local give_yang = barren[vnum][1]

Was unnötig ist einfach:
[80003] = 5000000, --Silberbarren(50kk Yang)
und fertig dadurch machst du simpel
local give_yang = barren[vnum]

Das zwischenspeichern in eine lokale Variable von check_can_gold ist auch unnötig.
Genau wie die ganzen Checks im when teil die lassen sich vereinfachen.

Also komm mal wieder runter ...


Wenn ihr es wirklich anpassbar wollt warum nicht so?
PHP Code:
quest goldGiver begin
    state start begin
        when 
use begin
            local goldGivers 
= {
                [
80003] = 50, --Silberbarren(50kk Yang)
                [
80004] = 100, --Silberbarren(100kk Yang)
                [
80005] = 500, --Goldbarren(500kk Yang)
                [
80006] = 1000, --Goldbarren(1kkk Yang)
                [
80007] = 1500, --Goldbarren(1,5kkk Yang)
                [
830003] = 500 --Goldbarren(500kk Yang) (nicht handelbar)
            }
            
            
local itemVnum item.get_vnum()
            
            if 
goldGiver.tableContainsKey(goldGiversitemVnum) != false then
                
                local goldValue 
goldGiver.toMill(itemVnum)
                if (
goldValue pc.get_gold()) > 1999999999 then
                    syschat
("Du hast zu viel Geld bei dir.")
                else
                    
pc.change_gold(goldValue)
                    
pc.remove_item(itemVnum1) -- stackable fix
                end
            
            end
        end
    end
    state __FUNC__ begin
        
function toMill(n)
            return 
1000000
        end
        
function tableContainsKey(tablekey)
                for 
value_ in pairs(table) do
                        if 
value == key then
                                
return true
                        end
                end
                
return false
        end
    end
end 
01/03/2013 02:02 Zymos#10
Das mit den Variablen mach ich rein zu übersicht.
Und das prüfen ob die vnum in der Tabelle exestiert ist auch sinnlos..
Das hat man automatisch drinne, die werte und co.
Aber man könnte es auch direkt aus der Datenbank auslesen mit hilfe des Socket bzw. Value :)
Dann würde die Tabelle wegfallen.

mfg Zymos
01/03/2013 02:03 .Alpha.#11
Quote:
Originally Posted by Zymos View Post
Das mit den Variablen mach ich rein zu übersicht.
Und das prüfen ob die vnum in der Tabelle exestiert ist auch sinnlos..
Das hat man automatisch drinne, die werte und co.

mfg Zymos
das ersetzt die with abfrage und macht es leichter zu erweitern
01/03/2013 02:07 Zymos#12
Da gibs nicht zu erweitern.
01/03/2013 02:09 Mijago#13
when use begin würde bei Jedem item zuschlagen.. Was Speicher kostet.
Wenn man mal eine Homepage in Lua geschrieben hat, sieht man, wie eine simple Schleife, von der man eigl denkt, sie würde keine Ressourchen kosten, die Aufrufdauer von 0,9ms auf 90ms hochbringt..
Was ich eigl damit sagen möchte: Jeder hier hat seinen eigenen Queststil. Man kann alles auf verschiedene Arten machen, natürlich, aber es gibt - solange am Ende das Rauskommt, was soll, kein Richtig oder Falsch (okay, doch, aber wir reden hier nicht von 0815 Questwritern).

Grüße, Mijago
01/03/2013 02:28 .Alpha.#14
Quote:
Originally Posted by Mijago View Post
when use begin würde bei Jedem item zuschlagen.. Was Speicher kostet.
Wenn man mal eine Homepage in Lua geschrieben hat, sieht man, wie eine simple Schleife, von der man eigl denkt, sie würde keine Ressourchen kosten, die Aufrufdauer von 0,9ms auf 90ms hochbringt..
Was ich eigl damit sagen möchte: Jeder hier hat seinen eigenen Queststil. Man kann alles auf verschiedene Arten machen, natürlich, aber es gibt - solange am Ende das Rauskommt, was soll, kein Richtig oder Falsch (okay, doch, aber wir reden hier nicht von 0815 Questwritern).

Grüße, Mijago
Es ging ja um die Anpassbarkeit und das ist mit der genauen Angabe von item.use nicht so gut möglich wenn ich es mit with mache wird es genau so in eine if abfrage umgewandelt also macht es im Prinzip keinen Unterschied nur das ich halt noch die Tabelle durchgehe man muss immer überlegen ob man es nun anpassbar macht oder Ressourcen schonend.

Natürlich hat jeder seinen Stil das respektiere ich auch, aber so etwas wie sagen wir goldValue[vnum][1] obwohl es auch mit goldValue[vnum] ginge finde ich persönlich nicht gut. So etwas sollte man sich auch nicht angewöhnen genau wie das deklarieren zu vieler lokaler Variablen. Wenn ein wert nur ein mal gebraucht wird warum ihn dann in einer Variable speichern? Villt. ist es etwas Stilistisches aber ich bin der Meinung das es unnötig ist und je nach Programmiersprache auch mehr Ressourcen verbrauchen kann.

Es wird nur bei Items mit dem Type 18 ausgeführt nicht bei jedem Item und das sind nicht so arg viele.
01/03/2013 06:26 Teh Plex#15
Ich finde es gut danke :)
Bekommst nen Thanks :)