KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Parameter in Funktionen [PGE LUA]
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey Developer,

ich habe eine kleine Frage: Und zwar würde es mich immens an Code sparen, wenn ich Parameter in Funktionen verwenden könnte. Ich meine es ungefähr so:

Code:
function name(parameter_1,parameter_2)
  --Code
  bild:draweasy(x[parameter_1],y[parameter2])
end


Ich hoffe jemand versteht was ich meine. So könnte ich dann im Script etwas für parameter_1 und parameter_2 einsetzen, das dann automatisch hinter dem x und dem y unten erscheint.

Geht soetwas und wenn ja wie?

Gruß,
Sunny

Ja, dass geht.
Ich schreibe von der PSP deswegen wurde eine Erklarung zulang dauern, aber schau dir mal die functions.lua von meinem HB PSPOKEMON GREY an, da verwende ich das ofters.
Wie meinst du das?
Ist doch schon in deinem Beispiel richtig angegeben, du willst einer Funktion Parameter übergeben:

Code:
function name(parameter_1,parameter_2)
  bild:draweasy(x..parameter_1,y..parameter2)
end


aufruf
name(5,5)

@Blacky94:

Das geht nicht, da spuckt er eine Fehlermeldung aus und sagt er hätte gerne ein "=" anstelle des "..".

@shaplayer:

Wenn ich deinen Code richtig verstehe müsste es nämlich auch mir eckigen Klammern funktionieren.. Tuts aber nicht. Am besten poste ich mal den Code:

Code:
c_nr = 1
comet_status[c_nr] = 0

function comet(c_nr,c_startX,c_startY,c_endX,c_endY,c_stepX,c_stepY)
    if comet_status == 0 then
        currentX[c_nr] = c_startX[c_nr]
        currentY[c_nr] = c_startY[c_nr]
        if currentX[c_nr] == c_startX[c_nr] and currentY[c_nr] == c_startY[c_nr] then
            comet_status[c_nr] = 1
        end
    end
    if comet_status == 1 then
        currentX[c_nr] = currentX[c_nr] + c_stepX[c_nr]
        currentY[c_nr] = currentY[c_nr] + c_stepY[c_nr]
        if c_endX[c_nr] >= c_startX[c_nr] then
            if currentX[c_nr] >= c_endX[c_nr] then
                comet_status[c_nr] = 0
            end
        else
            if currentX[c_nr] <= c_endX[c_nr] then
                comet_status[c_nr] = 0
            end
        end
        if c_endY[c_nr] >= c_startY[c_nr] then
            if currentY[c_nr] >= c_endY[c_nr] then
                comet_status[c_nr] = 0
            end
        else
            if currentY[c_nr] <= c_endY[c_nr] then
                comet_status[c_nr] = 0
            end
        end
    end
    stone:draweasy(currentX[c_nr],currentY[c_nr],rotation_fast,255)
end


ich würde nun einfach gerne erreichen, dass ich für "c_nr" im Script einfach eine Zahl einsetze und der mir dann halt diese Zahl an die sämtlichen Parameter ranhängt. Würde um die 700 Zeilen Code sparen, deshalb von größerer Bedeutung Wink

Moin,
wie meinst du das mit ranhängen? Im sinne von dahinterschreiben?
Nach dem Motto:
1234 hänge 5678 dran dass 12345678 rauskommt?
ich verstehe nicht ganz was du meinst
Edit:
Die eckigen klammern sind normalerweise für Arrays/Listen, also ich kenne mich mit Lua nicht so kenne ich dass aus andren Sprachen..
E2:Ich glaube langsam versteh ich was du meinst..
du hast also sozusagen viele variablen
x1, x2, x3, x4, x5
und willst nun jeweils eine davon ansprechen in dem du eine weitere Varible hast, nennen wir sie z und dann im Script bestimmst, z=1 und dadurch der ausdruch

Code:
bild:draweasy(xZ,yZ)

zu

Code:
bild:draweasy(x1,y1)

wird?
Ob das geht weiß ich nicht aber da würd ich dann Arrays(="Listen") empfehlen, den genauen Syntax kenn ich zwar nicht, aber müsste in so in etwa gehen:

Code:
xWertListe[5] = {1,6,2,7,9}

Dann kannst du mit

Code:
n = 0 oder n=1 ...
xWertListe[n]

jeweils das n-te element ansprechen, wobei die Nummerierung bei 0 beginnt.
In diesem Falle wäre also xWertListe[1] 6
Anmerkung: Wie schon gesagt, den genauen Syntax kenne ich nicht von Lua, aber so in etwa müsste es sein, kannst ja nochmal nachlesen..

mfg Gigor

Jupp, genau das mein' ich Smile
So hab jetzt ne weile rumeditiert, aber jetzt bin ich fertigSmile

Zitat:
jeweils das n-te element ansprechen, wobei die Nummerierung bei 0 beginnt.
In diesem Falle wäre also xWertListe[1] 6
Anmerkung: Wie schon gesagt, den genauen Syntax kenne ich nicht von Lua, aber so in etwa müsste es sein, kannst ja nochmal nachlesen..


Bei Lua fängt der Index meines wissens nach schon bei 1 an ;o
Sorry, ich habe deine Frage nicht richtig verstanden und wusste nicht das es hier um Tabellen/Arrays geht. Ist das Problem den schon gelöst oder kommt noch eine Fehlermeldung?

Leider funktioniert alles nicht. Ich habe lange daran rumprobiert, jedoch nicht mehr so viel Zeit mich intensiv damit zu beschäftigen. Wird der Code halt etwas länger und unschöner, das funktioniert dann jedoch auch wenigstens.

Danke trotzdem, schade dass es nicht geklappt hat.
Referenz-URLs