Selfmade Scoreboard :)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Selfmade Scoreboard :)

    Hallo liebe Community.
    Bin dabei bissle Scripten zu lernen und brauche bisschen hilfe.
    Habe jetzt via Guieditor ein kleines Scoreboard gemacht.
    Hier habt ihr erstmal den code dazu:

    Quellcode

    1. ScoreBoard = {
    2. gridlist = {}
    3. }
    4. local screenW, screenH = guiGetScreenSize()
    5. ScoreBoard.gridlist[1] = guiCreateGridList((screenW - 777) / 2, (screenH - 214) / 2, 777, 214, false)
    6. local players = getElementsByType("player")
    7. guiGridListAddColumn(ScoreBoard.gridlist[1], "Name", 0.2)
    8. guiGridListAddColumn(ScoreBoard.gridlist[1], "Spielzeit", 0.2)
    9. guiGridListAddColumn(ScoreBoard.gridlist[1], "Status", 0.2)
    10. guiGridListAddColumn(ScoreBoard.gridlist[1], "Fraktion", 0.2)
    11. guiGridListAddColumn(ScoreBoard.gridlist[1], "Handynummer", 0.2)
    12. guiGridListAddRow(ScoreBoard.gridlist[1])
    13. guiSetAlpha(ScoreBoard.gridlist[1], 0.82)
    14. guiGridListSetItemText(ScoreBoard.gridlist[1], 0, 1, ""..getPlayerName(getLocalPlayer()), false, false) --GRIDLIST!
    15. guiGridListSetItemText(ScoreBoard.gridlist[1], 0, 2, ""..getElementData(getLocalPlayer(),"Spielzeit"), false, false)--GRIDLIST!
    16. guiGridListSetItemText(ScoreBoard.gridlist[1], 0, 3, ""..getElementData(getLocalPlayer(),"Status"), false, false)--GRIDLIST!
    17. guiGridListSetItemText(ScoreBoard.gridlist[1], 0, 4, ""..getElementData(getLocalPlayer(),"Fraktion"), false, false)--GRIDLIST!
    18. guiGridListSetItemText(ScoreBoard.gridlist[1], 0, 5, ""..getElementData(getLocalPlayer(),"Handynummer"), false, false)--GRIDLIST!
    Alles anzeigen
    So jetzt möchte ich aber, dass jeder spieler der aud dem Server ist dort eingetragen wird. Habe nur keinen plan wie das funnzen soll :D
    ich denke mal mit for schleifen müsste das funktionieren nur habe ich keine ahnung wie die funktionieren deshalb bitte ich euch
    mir alles so zu erklären dass es ein 12 jähriger versteht(also das mit den for schleifen, ich bin 19 nur damit ihr bescheid wisst).

    Bedanke mich schonmal im vorraus :)
  • LUA-Quellcode

    1. ScoreBoard = {
    2. gridlist = {}
    3. }
    4. local screenW, screenH = guiGetScreenSize()
    5. ScoreBoard.gridlist[1] = guiCreateGridList((screenW - 777) / 2, (screenH - 214) / 2, 777, 214, false)
    6. local players = getElementsByType("player")
    7. local name = guiGridListAddColumn(ScoreBoard.gridlist[1], "Name", 0.2)
    8. local spielzeit = guiGridListAddColumn(ScoreBoard.gridlist[1], "Spielzeit", 0.2)
    9. local status = guiGridListAddColumn(ScoreBoard.gridlist[1], "Status", 0.2)
    10. local fraktion = guiGridListAddColumn(ScoreBoard.gridlist[1], "Fraktion", 0.2)
    11. local handynummer = guiGridListAddColumn(ScoreBoard.gridlist[1], "Handynummer", 0.2)
    12. guiGridListAddRow(ScoreBoard.gridlist[1])
    13. guiSetAlpha(ScoreBoard.gridlist[1], 0.82)
    14. for a, players in ipairs(getElementsByType("player")) do
    15. local playerrow = guiGridListAddRow(ScoreBoard.gridlist[1])
    16. guiGridListSetItemText ( ScoreBoard.gridlist[1], playerrow, name, getPlayerName ( players ), false, false )
    17. guiGridListSetItemText ( ScoreBoard.gridlist[1], playerrow, spielzeit, getElementData( players,"Spielzeit" ), false, false )
    18. guiGridListSetItemText ( ScoreBoard.gridlist[1], playerrow, status, getPlayerName ( players, "Status" ), false, false )
    19. guiGridListSetItemText ( ScoreBoard.gridlist[1], playerrow, fraktion, getElementData( players,"Fraktion" ), false, false )
    20. guiGridListSetItemText ( ScoreBoard.gridlist[1], playerrow, handynummer, getPlayerName ( players,"Handynummer" ), false, false )
    21. end
    Alles anzeigen
  • Es wird um eine Erklärung gebeten. Anstatt einer Erklärung um was lernen zu können, bekommt er ein fertiges Ergebnis. Mit Sicherheit steckt dahinter auch ein positiver Gedanke, wird jedoch nie den gewünschten Lerneffekt mit sich bringen.

    Solltest du beim Lesen und Verstehen des Codes Probleme haben, melde dich nochmal.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Florian ()

  • Florian schrieb:

    Es wird um eine Erklärung gebeten. Anstatt einer Erklärung um was lernen zu können, bekommt er ein fertiges Ergebnis. Mit Sicherheit steckt dahinter auch ein positiver Gedanke, wird jedoch nie den gewünschten Lerneffekt mit sich bringen.
    Das "fertige" Ergebnis enthält leider auch nebenbei Fehler und schlechte Art & Weise Code zu schreiben.
    Teils unpassende und schlechte Benennung der Variablen, Verwechselung von getPlayerName & getElementData und keine Einrückungen.


    Ich versuch es mal:

    Zuerst müsstest du alle Spieler durchgehen, das machst du mit einer einfachen for-Schleife.
    Dafür kannst du erstmal zwischen numerischer for-Schleife und generischer for-Schleife wählen:
    lua.org/pil/4.3.4.html
    lua.org/pil/4.3.5.html
    Am einfachsten wäre eine generische for-Schleife mit "pairs".

    Nun kannst du in der for-Schleife mit "guiGridListAddRow" Zeilen pro Spieler erstellen, in diese Zeilen an den Spalten dann dazu die Werte eintragen.
    Ungefähr wie du es getan hast (Zeilen 16-20 bei dir), nur bei rowIndex dann statt 0 eben den return-Wert von guiGridListAddRow nutzen - also die neu erstelle Reihe nutzen - und bei getElementData und getPlayerName statt getLocalPlayer() den Spieler, den du in der for-Schleife bekommst.

    Wenn du das alles aber so machst, hast du das Problem, dass die Spielerliste nicht sortiert ist.
    Dafür kannst die Spielerdaten zuerst in eine Tabelle packen, diese sortieren (table.sort), danach die Tabelle von 1 bis Ende durchgehen (numerische for-Schleife) und die Werte einzeln in die Zeilen eintragen.
    lua.org/pil/19.3.html
  • Ich danke euch erstmal.
    Hier meine frage zu dem Script was @Nevo geschrieben hatte.
    Ich verstehe alles bis zur for schleife.
    Ich zeige euch mal wie ich die forschleife von ihm/ihr verstehe :D

    "for a, players in ipairs(getElementsByType("player")) do"
    for[um die forschleife anzufangen natürlich]
    a[das weiss ich nicht, warum a? ich denke das a ein datentyp ist wo was abgespeichert ist kann das sein? oder wo man etwas abspeichert?],
    players[oben definiert als getElementsByType("players") man bekommt dadurch also die anzahl der spieler die auf dem server sind
    in [versteht sich glaube ich von selbst]
    ipairs[keine ahnung, pairs bedeutet auf jeeden fall paare/paaren auf deutsch wie ich das in lua umsetzen könnte? Keine plan und dann wäre das "i" vor dem pairs auch noch zu verstehen]
    do versteht sich auch von selbst




    Parameter der For-Anweisung:
    1. Startwert
    2. Endwert
    3. Inkrement


    wenn ich nach der anweisung gehen würde verdreht sich mein kopf
    normal wäre ja dann

    LUA-Quellcode

    1. for variable = 1, 10, 1 do
    2. print ( variable )
    3. end
    Startwert 1, endwert 10, der Inkrement(soweit ich weiss ist das dafür um zu definieren wie aufgezählt wird)
    normal müsste der ja jetzt das ausgeben
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Wäre der inkrement 2 wäre das ergebnis
    2
    4
    6
    8
    10


    das was ich hier geschrieben habe und das was Nevo geschrieben hatte sind 2 andere welten in meinen augen :D





    Wer mir das erklären kann sodass ich das auch verstehe ist auf jeden fall nicht wie ich KingOfNothing :D

  • Quelle: activevb.de/tutorials/tut_lua/tut_lua.html

    #Edit:

    wegen "a" oder "players" oder wie in bild "k", "v", "i" ... du kannst die egal benennen wie du möchtet. Da er die "a" nicht braucht, hat er einfach "a" gemacht, Er brauchte ja nur die Value, definiert als "Players", ist wie ein "local variables"

    Du hast ein Rechtsschreibung von mir gefunden?
    Danke, du darfst die behalten. Es gibt nur ein Grund.
    Ich bin Gehörlos Danke!


    Falls du über mich besser Kennenlernen, klick den link. ^^ :saint:
    mta-sa.org/thread/37684-vorstellung-von-mir/

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von ChisleLP () aus folgendem Grund: Image zeigt nicht richtig an

  • Danke dir ChisleLp habe alles hinbekommen und es funktioniert soweit auch :)
    //EDIT wenn ich tab drücke kann ich nicht mehr laufen wieso? und wie kann ich das beheben?
    also wenn ich es wieder loslasse dann geht alles wieder :)

    LUA-Quellcode

    1. addEventHandler( "onClientKey", root, function(button,press)
    2. if getElementData(getLocalPlayer(),"isPlLoggedIn") == 1 then
    3. if button == "tab" then
    4. if press == true then
    5. local screenW, screenH = guiGetScreenSize()
    6. playerList = guiCreateGridList((screenW - 777) / 2, (screenH - 214) / 2, 777, 214, false)
    7. column = guiGridListAddColumn(playerList, "Name", 0.2)
    8. column2 = guiGridListAddColumn(playerList, "Spielzeit", 0.2)
    9. column3 = guiGridListAddColumn(playerList, "Status", 0.2)
    10. column4 = guiGridListAddColumn(playerList, "Fraktion", 0.2)
    11. column5 = guiGridListAddColumn(playerList, "Handynummer", 0.2)
    12. guiSetAlpha(playerList, 0.82)
    13. if ( column ) then
    14. showCursor(true)
    15. for id, playeritem in ipairs(getElementsByType("player")) do
    16. local row = guiGridListAddRow ( playerList )
    17. local players = getElementsByType("player")
    18. guiGridListSetItemText ( playerList, row, column, getPlayerName ( playeritem ), false, false )
    19. guiGridListSetItemText ( playerList, row, column2, getElementData( playeritem, "Spielzeit"), false, false )
    20. guiGridListSetItemText ( playerList, row, column3, getElementData( playeritem,"Status"), false, false )
    21. guiGridListSetItemText ( playerList, row, column4, getElementData( playeritem,"Fraktion"), false, false )
    22. guiGridListSetItemText ( playerList, row, column5, getElementData( playeritem,"Handynummer"), false, false )
    23. end
    24. end
    25. elseif button == "tab" and press == false then
    26. guiSetVisible(playerList,false)
    27. showCursor(false)
    28. end
    29. end
    30. end
    31. end )
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von KingOfNothing ()

  • Alles geregelt. Ich habe es endlich verstanden und auch ordentlich gescriptet denke ich mal.
    Schreibe mein fertiges script hier rein, wenn es verbesserungsvorschläge gibt dann haut raus, lasse dafür das thema noch
    bis heute abend 22 uhr auf "unerledigt" markiert. DANKE EUCH ALLEN <3

    Quellcode

    1. function showCursorWhenScreenScore (button)
    2. if button == "mouse2" then
    3. showCursor(true)
    4. end
    5. end
    6. function showScore (button,press)
    7. if getElementData(getLocalPlayer(),"isPlLoggedIn") == 1 then
    8. if button == "tab" then
    9. if press == true then
    10. local screenW, screenH = guiGetScreenSize()
    11. playerList = guiCreateGridList((screenW - 777) / 2, (screenH - 214) / 2, 777, 214, false)
    12. column = guiGridListAddColumn(playerList, "Name", 0.2)
    13. column2 = guiGridListAddColumn(playerList, "Spielzeit", 0.2)
    14. column3 = guiGridListAddColumn(playerList, "Status", 0.2)
    15. column4 = guiGridListAddColumn(playerList, "Fraktion", 0.2)
    16. column5 = guiGridListAddColumn(playerList, "Handynummer", 0.2)
    17. guiSetAlpha(playerList, 0.82)
    18. bindKey("mouse2", "up", showCursorWhenScreenScore)
    19. if ( column ) then
    20. for id, playeritem in ipairs(getElementsByType("player")) do
    21. local row = guiGridListAddRow ( playerList )
    22. local players = getElementsByType("player")
    23. guiGridListSetItemText ( playerList, row, column, getPlayerName ( playeritem ), false, false )
    24. guiGridListSetItemText ( playerList, row, column2, getElementData( playeritem, "Spielzeit"), false, false )
    25. guiGridListSetItemText ( playerList, row, column3, getElementData( playeritem,"Status"), false, false )
    26. guiGridListSetItemText ( playerList, row, column4, getElementData( playeritem,"Fraktion"), false, false )
    27. guiGridListSetItemText ( playerList, row, column5, getElementData( playeritem,"Handynummer"), false, false )
    28. end
    29. end
    30. elseif button == "tab" and press == false then
    31. guiSetVisible(playerList,false)
    32. showCursor(false)
    33. unbindKey("mouse2","up")
    34. end
    35. end
    36. end
    37. end
    38. addEventHandler( "onClientKey", root, showScore)
    Alles anzeigen
  • Wie machste Cursor wieder weg? ^^(Oke, Tab loslassen...)

    hint:

    LUA-Quellcode

    1. showCursor( not isCursorShowing() )
    schmeiß das in 3. line. Dann kannste per rechtsklick immer aktivieren/Deaktivieren. :P

    Viel Erfolg mit dein Skript/Projekt.

    Du hast ein Rechtsschreibung von mir gefunden?
    Danke, du darfst die behalten. Es gibt nur ein Grund.
    Ich bin Gehörlos Danke!


    Falls du über mich besser Kennenlernen, klick den link. ^^ :saint:
    mta-sa.org/thread/37684-vorstellung-von-mir/