Beiträge von myu

    Ich weiß nicht was für dich Ressourcensparend ist, oder worin hier das Tutorial versteckt ist diese Codes da oben regen nur zum C+P an.


    Du sagst Ressourcensparend verwendet aber unnötige String Größen.


    :

    new query[ MAX_PLAYER_NAME + 45 ]; //128 ? orly ich zähle in den unteren Format nur 44 Zeichen + 24 für den Name das heißt 44 + MAX_PLAYER_NAME währe genug dann halt noch +1 für die Symboliserung.
    format(query, MAX_PLAYER_NAME + 45,"SELECT * FROM `accounts` WHERE `Name` = '%s'",name); // warum sizeof verwenden ? Das zieht wieder unnötige "Ressourcen".

    Es ist korrekt, dass du (Mysteriöser Unbekannter) hier eine effizientere Art zeigst, jedoch könntest du ihm das auch freundlich sagen und nicht sagen, dass alles, was er hier released hat Müll sei. Man kann es vielleicht besser umsetzte, jedoch hast du bestimmt selber auch am Anfang nicht alles 100% korrekt gescriptet und tust es auch heute noch nicht, also helf ihm besser zu werden, aber mach nicht alles nieder!


    Ich habe nie gesagt das ALLES von ihm Dreck ist auch nicht das das hier unbedingt Dreck ist, aber da einige immer noch nicht Verstehen das es meine Meinung verkörpert ist wieder Typisch


    Guck die meine Beiträge an, ich Versuche Verbesserungsvorschläge zu geben und das hab ich auch .


    Weitere Diskussionen über PN ich Spamme hier nichts zu.

    Wenn du mit dem Script nicht zufrieden bist kannst du auch ein eigenes machen. Dies dient für Neulinge.

    Dann mach doch mal was ordentliche für die Neulinge ? So lernen sie es auch nicht sondern nur das Falsche.



    Es geht mir nicht um die Zeilen sondern um die Effizienz und dies ist hier == 0


    Und falls du nicht mit der Kritik klar kommst solltest du dein Thread hier schnell löschen, denn meine ist bestimmt nicht die ein zigste.

    Klein, und Schlecht umgesetzt bei so kleinen Skripts erwarte ich schon eine Gewisse Qualität.
    128 Große Strings für einen Text mit einer maximalen Anzahl von 56 + 24 = 80 + (1 \0) = 81 hat...


    if(Soundsan == 1) Hätte man in einer Globalen Funktion unterbringen um Zeilen zu Sparen bzw es übersichtlicher zu machen...
    Und die ganze if else könnte man in einem Switch statement unterbringen, sowieso kriegt man einen Streak beim Selbstmord.


    btw...
    new Soundsan = 0 -> new bool:Soundsan = false; und dann true und false abfragen um Speicher zu sparen.

    Nagut, ein Schutz gegen Aimbot's ist es nicht man kann seine "Rate" wieder ins schlechte bringen indem man ein bisschen Rum schießt.
    Sowie kann man die "Calls" zum Server mit Leichtigkeit unterbinden / Verringern.


    Erweiter das Script Lieber und Verkauf es nicht als "Aimbot" Buster was es nicht ist.

    Du schreibst in der Schleife dies ist 1. Komplett unnötig und du schreibst 13 mal also erst mal dini_set aus der Schleife bei OnPlayeDisconnect raus das gleiche bei SpielerSpeichern ...
    Ich würde dir trotzdem empfehlen auf eine längere Zeile zu gehen das heißt das du Waffen & Mun in einer spalte mit einem Delimiter speicherst = Waffen,Ammo und dann halt mit sscanf oder was auch immer du gerne benutzt zu splitten.

    Suche einfach nach AddStaticVehicle oder CreateVehicle ?
    Es kann auch sein das die Car's über Datenbanken ausgelesen werden wenn ja müsstest du sie halt zurückverfolgen

    ja ich weiß nicht wie das geht


    Kurz erklärung für newbies in Pawn:


    - Wenn du ein Godfather hast suche einfach nach new PlayerInfo darüber befindet sich eine Struktur von daten meistens ist es pLeader, pMember etc.


    Du musst nurnoch die ID's wissen (makeleader playerid id) die ID ist dann die jenige die dazu dann in der Lage sein soll...


    Jetzt musst du halt nurnoch in deinem Skript folgendes einfügen (ganz unten):
    forward GetPlayerLeader(playerid);
    public GetPlayerLeader(playerid)
    {
    if(PlayerInfo[playerid][pLeader] == deineID) return PlayerInfo[playerid][pLeader]; else return 0;
    }
    forward GetPlayerMember(playerid);
    public GetPlayerMember(playerid)
    {
    if(PlayerInfo[playerid][pMember] == deineID) return PlayerInfo[playerid][pMember]; else return 0;
    }

    1.
    Es geht auch in einen anderen Ton....


    2.
    Wenn du GARKEINE ahnung von der Sache hast, lern es lieber als dir alles machen zu Lassen du musst einfach die 2 Public's unten ins Script reinkopieren und an deine Variablen anpassen..

    Nagut, da es niemand auf die Reihe bekommt und nur sagen können das es schon gibt hier eine kleine Erklärung:


    OnPlayerUpdate - Ist ein "zwischen" Callback wo immer vor der Synchronisation aufgerufen wird, das heißt wenn der Spieler sich bewegt werden natürlich mehr Pakete an den Server gesendet und bevor es an die anderen Spieler geht durch OnPlayerUpdate gejagt...


    So, das kannst du natürlich zu deinem nützen machen, undzwar wenn der Spieler auf den Desktop ist kommen auch keine "Idle" Packete mehr das heißt du kannst bei jedem OnPlayerUpdate Call eine Variable für den Spieler auf 0 Setzen nennen wir die mal Ixel .


    Wenn du jetzt einen Timer nimmst, und darin die "Var" immer hoch zählst, während OnPlayerUpdate sie zurückzieht (0), und OnPlayerUpdate nicht mehr aufgerufen wird sobald du auf dem Desktop bist erreicht diese Zahl bald dann einen Wert über 1...


    Ein pseudo beispiel:


    var -> globale variable


    var ixel[MAX_PLAYERS]; // <- globale variable, mit einen Platz für jeden Spieler



    OnPlayerUpdate(playerid)
    ixel[playerid] = 0; // setze variable bei jedem Update wieder auf 0


    Timer (1000 seks)
    //iterator-> spielerschleife
    ixel[iterator]++; // Zähle Variable hoch ..
    ixel[iterator] > 2 // Wenn sie diesen Wert erreicht wird OnPlayerUpdate in diesem Zeitraum nicht aufgerufen das heißt -> Desktop / Timeout / Afk whatsover.
    // Spieler ist in dem Menü

    Den Pfad zum Spiel müsst ihr selber anpassen, wie ihr es anstellt, ist euch überlassen.

    Wie wäre es mit der Registry ?


    Sogar für ein kleines Programm hat es meiner Meinung nach keine "Bewertung" Verdient, es wird mehr Code benutzt wie gebraucht und ist durch die "samp.exe" auch nicht gerade der Zuverlässigste Launcher ...
    Wenn man was für die Anfänger machen will sollte man es schon Richtig / bzw. auf den Richtigen weg machen denn sonst ist später die Aufregung groß wenn jeder so ein "kack" macht...
    Naja, gut ende mit meinem Roman eine Injection der samp.dll in den gta_sa Prozess mit den Parametern die benötigt werden kannst du zB mit procexp.exe von Microsoft auslesen

    Ziemlich klein und Langweilig ?
    - Ich denke nicht der Server hat dabei genug zu tun ;)


    Für mich sieht es ziemlich nach C&P aus ist nicht aufgeräumt und frisst Ressourcen, eine weitere Bewertung gebe ich später ab....

    So, ich wollte mich mal raushalten aber naja passiert..
    Warum müsst ihr ihn immer eure "hilfreichen" Tipps hier in diesem Beitrag geben ?
    Ich denke wenn er schon 100€ Monatlich bezahlt ist er Alt genug um zu wissen was er tut, und falls ihr doch einen guten Rat habt warum keine PN Schreiben ? Dafür sind sie denke ich auch da...

    dini_Set(Spielerdatei,"NName",strlen(inputtext));


    Überlege dir mal den sinn von "strlen" strlen gibt dir die Länge des angegebenen String zurück.
    Wenn du ein "String" Speichern möchtest dann solltest du das strlen( entfernen !

    Wie es schon mehrmals erwähnt wurde wie wäre es wenn du uns einen Code gibst damit wir den Fehler finden können ?
    Beim Bäcker sagst du ja auch nicht ich will das :D

    leute dass ipod ist nur für anfänger gemeint ^^

    Du meinst du bist ein Anfänger und weißt nicht wie du es besser ausschmücken kannst...


    Ich schließe mich den Meinungen oben an, nichts besonderes nicht mal en Filterscript wert in die Tutorial Base würde es gerade noch rein passen aber nicht als FS...


    Und wo ist der verdammte Pastebin Link ? Ließ mal die Regeln durch....