[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Map/HUD wie bekomme ich die schwarz ? Bzw. Kann man den HUD(Nur die kleine Karte) irgendwie ausblenden?

    Entweder über den SpecateModus, dadurch verschwindet die HUD oder ein schwarzes TextDraw / Sprite drüber (gibt ein rundes sprite) :)


    Vielleicht ist ein Fehler im Code?

    Nein. Hier mal ein Zitat, was das ganz gut erklärt:


    Im Durchschnitt ist Heapsort nur dann schneller als Quicksort, wenn Vergleiche auf den zu sortierenden Daten sehr aufwendig sind und gleichzeitig eine für Quicksort ungünstige Datenanordnung besteht (z. B. viele gleiche Elemente). In der Praxis ist bei unsortierten oder teilweise vorsortierten Daten Quicksort oder Introsort um einen konstanten Faktor (2 bis 5) schneller als Heapsort.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ah danke dir, dann scheint QuickSort wirklich besser zu sein fuer den Normalfall :D Bubblesort habe ich mal getestet, das ist derbe langsam!


    Habe folgendes Problem:


    Ich will die 5 Spieler mit den meisten Kills ausgeben im Chat.
    Die Kills werden in einem Array der Groesse MAX_PLAYERS gespeichert mit der playerid als Index.
    Das Array wird dann sortiert, jedoch habe ich ja dann das Problem dass ich die Kills dann einem entsprechenden Spieler nicht mehr zuordnen kann.


    Habe daher gedacht ein zweites Array mit den gleichen Werten zu erstellen, und dann Index Inhalt aus dem urspruenglichen Array mit dem sortierten Array zu vergleichen, aber ich glaube das ist ineffizient.


    Hoffe jemand hat hier bessere Ideen

    Einmal editiert, zuletzt von Sub Royal ()

  • Naja, hier gäbe es 2 gute Möglichkeiten.


    1. Du erstellst ein 2D-Array...1D = Kills...2D = ID und dann sortierst das nach Kills und hast die ID :)


    2. Du durchsuchst einfach nur das Array:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Guten Tag wäre es Möglich ein Fahrzeug auf dem LKW mit der "Ladefläche" für Autos zu transportieren sodass sie nicht runterfallen ?

    Das frage ich mich auch schon seit Längerem, ich hab da eine Idee, aber ob die auch Klappt ist eine andere Frage.


    Vielleicht das Fahrzeug als Objekt Erstellen und das Objekt dann an das Fahrzeug Attachen ?


    Oder auf der "Ladeläche eine Unsichtbare kleine Wand Mappen/Attachen damit das Fahrzeug nicht runterfällt ?


    MfG.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Bei /me Befehlen etc senden die praktisch immer nur halbe Dinge, obwohl mehr eingegeben wurde.
    Woran liegt das?


    ocmd:me(playerid, params[])
    {
    new string[128+MAX_PLAYER_NAME], metext[128], playername[MAX_PLAYER_NAME], Float:X, Float:Y, Float:Z;
    if(sscanf(params, "s", metext))
    return SendClientMessage(playerid, COLOR_GREY, "[OOC] Befehl: /me [Text]");


    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerName(playerid, playername, sizeof(playername));


    format(string, sizeof(string), "* %s %s *", playername, metext);


    foreach(Player, i)
    {
    if(IsPlayerInRangeOfPoint(i, 6.5, X, Y, Z))
    {
    SendClientMessage(i, COLOR_ME, string);
    }
    }
    return 1;
    }

  • Bei /me Befehlen etc senden die praktisch immer nur halbe Dinge, obwohl mehr eingegeben wurde.
    Woran liegt das?


    ocmd:me(playerid, params[]){new string[128+MAX_PLAYER_NAME], metext[128], playername[MAX_PLAYER_NAME], Float:X, Float:Y, Float:Z;if(sscanf(params, "s", metext))return SendClientMessage(playerid, COLOR_GREY, "[OOC] Befehl: /me [Text]");GetPlayerPos(playerid, X, Y, Z);GetPlayerName(playerid, playername, sizeof(playername));format(string, sizeof(string), "* %s %s *", playername, metext);foreach(Player, i){if(IsPlayerInRangeOfPoint(i, 6.5, X, Y, Z)){SendClientMessage(i, COLOR_ME, string);}}return 1;}

    Schon mit größeren Strings versucht?

  • Versuchs doch mal so:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • So,


    Ich will wie vorhin folgendes machen.


    Aktuell werden durch ein Array PKills[MAX_PLAYERS]; jedem Spieler bei einem Kill PKills[playerid] += 1; zugewiesen.


    Nun will ich die Kills der besten 5 Spieler in einer Auflistung darstellen.


    Das ganze sieht fuer mich recht scheisse aus.
    Ausprobieren kann ich es leider nicht da ich nicht soviele Spieler habe, aber vielleicht kann ja einer hinsehen ob das Konstrukt funktionieren wuerde.


    Hier mal kommentiert, mit dem was meiner Ansicht nach geschehen soll


  • Hallo,


    Ich habe ein Problem wen ich /motor mache geht er nicht an wen man nochmal /motor eingibt sollte das Licht und der Motor ausgehn.
    Wen man /licht macht geht es auch nicht an warum?