Beiträge von Goldkiller

    format(zustand,64,"Zustand: %s",GetVehicleHealth(veh,health));
    Wie kommst du darauf,den String so zu formatieren ?


    1. GetVehicleHealth gibt keinen brauchbaren Wert zurück.
    2. Der Wert den du bei GetVehicleHealth bekommst ist vom Typ Float
    3. Float-Werte werden mit %f ( %.2f für 2. Kommastellen ) angegeben für format
    4. Musst du GetVehicleHealth ausführen bevor du format machst.
    5. Was hat der Fahrzeugename mit Health zu tun :/ ?

    Das ist ja mal absolute Grundlage bezüglich SQL. Immer wieder diese Anfängerfragen zu SQL , aber hauptsache MySQL benutzen . Übrigens ist Scripting Base dazu eh der falsche Themenbereich.


    SQL
    SELECT * FROM tabelle


    Dazu eine while Schleife ( Funktion abhänging von Plugin ) und du gehst alle Zeilen durch.

    Das Beispiel stimmt nicht ganz.
    random(2) hat folgende Ausgänge: 0 , 1
    random(3) hat folgendes Ausgänge: 0, 1 , 2


    random( X ) hat folgendes Ausgänge: 0, 1 , 2 , X - 1

    Bist du überhaupt sicher,dass du die Vorteile von MySQL nutzen wirst ? Ein Großteil aller,die ihren Gamemode gerne auf MySQL umschreiben,tun es nämlich nicht.
    Alleine die Begründung "MySQL" ist schneller ist auch nebensächlich. Niemand wird extra wegen der MySQL Anbindung auf deinem Server spielen oder nicht spielen. Der Geschwindigkeitsunterschied ist sowieso nicht zu bemerken.#


    //Edit:
    http://forum.sa-mp.de/san-andr…-login-register-beispiel/

    Selbständiges Debuggen ist keine Hilfe für mich, da ich das schon immer verwende ;) Doch diesmal hilft es leider nicht :(


    Och klar,das funktioniert immer. Hast es wohl nur falsch gemacht :p

    Zitat

    Crashdetect Plugin hilft nicht, weil es ja keinen Servercrash verursacht, da der Server ja weiterläuft aber er das Script nicht lädt also die main Methode nicht mal aufruft und somit startet nichts. Aber die Konsole läuft weiter.


    Das Plugin solltest immer laufen lassen. Es hilft ja nicht nur bei einem Crash,sondern auch bei Laufzeit Fehlern.
    Beispiel:
    new i = 5353;
    new test[MAX_PLAYERS];
    test[i] = 5; // index out of bounce - runtime error
    Habe das Plugin immer am Laufen,kann ja nicht Schaden.


    Für den Fall einer Endlosschleife hätte dir aber das Plugin tatsächlich nichts angezeigt.

    Installier folgendes Plugin:
    [Plugin] nativechecker


    Zitat

    IMPORTANT: In order to make it work correcly you must put it in the end of the plugins line of your server.cfg so it will be the last one, e.g. plugins sscanf streamer nativechecker.


    Anhand der Funktionen musst du dann auf das Plugin schließen. Schaffst es nicht,kannst ja hier die Funktionsnamen posten.

    Ganz einfach.
    GetVehicleModel gibt die ModelID zurück. Vorher gibst natürlich die VehicleID an.
    GetVehicleModel - 400 ist dann im Array CarName der entsprechende Indexwert,da die ModelID's erst bei 400 beginnen.

    Weil bei dir der String den Text "zString" enthält und nicht die Variable ist. Du hast nicht die Variable angegeben,sondern den Text direkt eingegeben.
    mysql_GetInt("fcars", "modelID", "CarID", zString);


    Grundlagen sind da wohl nicht so sicher bei dir.


    Auch hier gilt:
    new zString[12];
    new zString[12] = "zString";
    ^- Du hast dieses zString

    Steht dort doch ganz klar. Das 4. Argument ist nicht korrekt vom Typ her.
    mysql_GetInt(Table[], Field[], Where[], Is[])
    Is[] ist ein Array bzw String, bei dir aber nich. Du solltest aus i einen String machen,der die Zahl vom i enthält.


    Als Tipp:

    Spoiler anzeigen
    i = 5
    ist nicht identisch zu
    i[] = "5"

    Hmm ja, das ist richtig. Allerdings muss man sich davon auch nicht irritieren lassen, selbst wenn (testweise) ein User auf unterschiedliche Weise einem Team zugeteilt wird - denn letzten Endes ist er immer nur in einem Team... und wird auch über alle Varianten hinweg auf "Team 0" gestellt, wenn er den DM-Modus verlässt ^^.
    Werd ich umstrukturieren.


    Nur müsstest du dann auch alle Unterschiedlichen Fälle abdecken bzw überall gleichzeitig bearbeiten.



    Zitat

    Kannst du mir da ein Beispiel aufzeigen, was du genau meinst?
    Wie werden die Spieler in ein "Array" gelegt und wie frage ich ab in welchem "Array" dieser sich befindet?
    Zwei/drei Zeilen sollten als Beispiel reichen.


    Sry, vor ein paar Tagen das erste mal einen SAMP-Server installiert, so viel im Wiki und im Forum hier gelesen - ich bin schon ganz wirr, kann diesbezüglich kaum mehr einen sortierten Gedanken fassen. X-x


    Naja gut,wenn du erst seit paar Tagen dabei bist,ist es vielleicht doch nicht so gut es mit Arrays zu probieren.
    Ich meine zB sowas:
    enum e_TeamData {
    TD_iSpieler,
    TD_iKills
    }
    new g_TeamData[2][e_TeamData];


    stock Verteilen1(playerid)
    {
    // Aufpassen!
    // die Teamid fängt hier bei 0 an,nicht bei 1
    // Ist der Spieler in keinem Team,gibt es die konstante: NO_TEAM
    // SetPlayerTeam(playerid, NO_TEAM );
    new
    teamid;
    if( g_TeamData[0] > g_TeamData[1] ) {
    teamid = 1;
    }
    else if( g_TeamData[0] < g_TeamData[1] ) {
    teamid = 0;
    }
    else {
    new
    r = random(2);
    if( r == 0 ) {
    teamid = 0;
    }
    else {
    teamid = 1;
    }
    }
    g_TeamData[teamid][TD_iSpieler]++;
    SetPlayerTeam(playerid, teamid);
    SetPlayerHealth(playerid,0.0);
    // Man könnte jetzt alles Teamabhängig hier machen
    if(teamid == 0 ) {
    SetSpawnInfo(playerid,teamid,174,961.2678,2100.2549,1011.0256,7.5695,24,250,31,500,0,1);
    SetPlayerColor(playerid, 0x0073FF00);
    }
    else {
    SetSpawnInfo(playerid,teamid,185,959.1449,2167.9775,1011.0234,358.7257,24,250,31,500,0,1);
    SetPlayerColor(playerid, 0xFFE60000);
    }
    return 1;
    }
    Mehr als GetPlayerTeam und g_TeamData[ X ][TD_iSpieler] brauch ich jetzt gar nicht mehr für den groben Codeablauf.

    Toll. Verschwendest doch nur deine Zeit,egal ob es schneller oder nicht schneller wird.
    So viele Leute haben schon ihren "eigenen" Command-Processor rausgebracht. Kaum einer kommt dabei aber auf die Idee, die Zeit in etwas sinnvolleres zu investieren.Etwas, was es noch nicht gibt und wirklich nützlich ist. Wen jucken denn die 1000 *CMD Versionen ? Mich persönlich sowieso nicht,da es sowieso immer das Gleiche ( Ausnahme: RyDeR` ) ist.
    Der minimale Zeitliche Unterschied wird sowieso niemals bemerkt, also wieso da so viel Zeit rein stecken. Leute releasen in der Regel ihren Code, damit Andere davon profitieren und es einfach anwenden können. Das ist ja der Sinn dabei. Ich brauch mich nicht darum kümmern wie die Befehle verarbeitet wurden, darum haben sich bereits Andere gekümmert. Natürlich kann man sich da auch Tipps und Tricks abschauen.
    Wenn jeder sein eigenes *CMD rausbringt, bräuchten wir bald ein eigenes Sub-Forum wo jeder sein *CMD vorstellen kann.
    Bringt dann aber wahrscheinlich eh nichts,jeder verwendet dann eh sein eigenes.


    Um zum Schluss zu kommen. Versuch dein Glück, ich rate aber davon ab. Für sowas würde ich meine Zeit nicht verschwenden.

    Du machst das irgendwie total umständlich.
    Das ist so viel Code,ich blick da auch nicht auf Anhieb durch.


    Gruppe[playerid] = 2;
    Gruppe2++;
    Gruppe2Tod++;
    SetPlayerTeam(playerid, 2);
    sSpieler[playerid][Team] = 2;

    Das sind 5 Anweisung,ich würde da mit maximal 2 auskommen.So viel Anweisungen machen den Code auf dauer sehr unübersichtlich. Du hast da leider extrem viel von :p.


    Ich an deiner Stelle würde das lieber nochmal alles verwerfen und versucht abstrakter den Code zu schreiben. Heisst, alles etwas allgemeiner zu coden und nicht mit Gruppe1 / Gruppe2, sondern lieber direkt ein Array Gruppe[].
    Auch würde ich kein Gruppe1Tod und Gruppe1 verwenden.Eine Variable mit der Anzahl der Spieler reicht doch die entweder immer +1 bzw -1 gemacht wird,je nach Ereignis.

    Bei sa-mp.com hab ich davon noch nichts gelesen :p.


    Zitat

    Nun hingehen die Sicherheitslücke benutzen und per Cheat Engine den Dialog STYLE herausfinden.
    Diesen dan +4 Rechnen und ihr habt die Dialog ID.


    Wieso sollte das funktionieren :-O?