Beiträge von BlackFoX

    if(dini_Exists(save))
    {
    dini_IntSet(save,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(save,"Wanteds",GetPlayerWantedLevel(playerid));
    dini_IntSet(save,"skin",GetPlayerSkin(playerid));
    }

    new pname[16];
    GetPlayerName(playerid,pname,sizeof(pname));
    new disconnectreason[64];
    switch(reason)
    {
    case 0: format(disconnectreason, sizeof(disconnectreason), "%s hat den Server verlassen. (Verbindung unterbrochen)", pname);
    case 1: format(disconnectreason, sizeof(disconnectreason), "%s hat den Server verlassen. (verlassen)", pname);
    case 2: format(disconnectreason, sizeof(disconnectreason), "%s hat den Server verlassen. (Kick/Ban)", pname);
    }
    SendClientMessageToAll(0xAAAAAAAA, disconnectreason);

    Die Positions Daten werden per GetVehiclePos in die Variablen auf Float basierend
    reingepackt, in dem fall vX, vY, vZ


    Sobald du den befehl benutzt werden sie immer wieder neu ermittelt

    SetPlayerCheckpoint oder SetPlayerRaceCheckpoint


    new Fahrschule[3]; // Lokal Definieren



    // OnGameModeInit
    Fahrschule[0] = AddStaticVehicle(492,284.5026,-1526.1539,24.3755,234.5499,77,26);
    Fahrschule[1] = AddStaticVehicle(492,299.0179,-1536.2606,24.3755,55.1702,81,27);



    Bei OnPlayerStateChange:

    if(newstate == 2)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid == Fahrschule[0] ||vehicleid == Fahrschule[1])
    {
    // Aktion
    }
    }

    Ihr wollt euren Code Optimieren ?


    Ok fang ich mal an , es geht klar um Pawn/C++/C egal jetzt, jedenfalls erster Tipp das euer Code kürzer und schneller wird,
    was man oft im Script ,,The Godfather´´ sieht wäre:


    if(!strlen(tmp))
    {
    SendClientMessage(playerid,farbe,"nachricht");
    return 1;
    }


    Noch Kürzer ?? klar ! warum nicht ?


    if(!tmp[0])return SendClientMessage(playerid,farbe,"nachricht");


    Tja kurz genug ? :>




    .:::: Hilfreich ::::.


    Mich kotzt es persönlich an wenn Variablen einzeln definiert werden wobei man doch eig mehrere z.b. für einen Spieler braucht ,
    das sieht meist so aus:


    new Bank[MAX_PLAYERS];
    new Geld[MAX_PLAYERS];


    vllt auch so ?


    new Bank[MAX_PLAYERS],
    Geld[MAX_PLAYERS];


    naja beides der gleiche Müll wenn man es doch für jeden Spieler haben möchte , daran sitzt man ewig,
    hier so gehts am besten:


    enum spielerpaket
    {
    geld,
    bank,
    }
    new SpielerDaten[MAX_PLAYERS][spielerpaket];


    nun könnt ihr es so z.b. nutzen ( Für die, die Kein Plan haben )


    SpielerDaten[playerid][geld] = 10000;




    .:::: Text Optimieren :::::.


    Manchmal wenn ich durch ein Skript schaue sehe ich das manche variablen auf 256 stehen und als Textwert genutzt werden X(


    new String[256];


    Da denk ich mir doch Sa-mp unterstützt allgemein nur 128 Zeichen ,
    und zuviele Text Index Zellen machen das Skript noch unnötig Groß und den Code Langsamer


    new String[128];


    schon besser, aber was ihr auch noch beachten solltet definiert wirklich nur die Zeichenlänge die man in dem fall braucht.


    Das beste Beispiel , was ich übringens früher aus gewohnheit gemacht habe, eine Variable mit 128 Zellen zu definieren und darin einen Namen zu packen, aber ein Name kann maximal nur 16 Zeichen nutzen O_O"


    also:


    new Playername[16];
    GetPlayerName(playerid,Playername,sizeof Playername);




    .:::: Speichern von Daten im Script::::.


    So das ist mal gegen, die Leute die MySql nutzen für ihr Skript, es mag sein das MySql evntl. schneller ist und ihr Prima damit klar kommt, aber die normalen Datei Funktionen haben ebenso
    ein gute Leistung und benutzen mit dieser Methode auch so gut wie keine großen Resourcen:



    DMA's Zitat:
    Man muss ja nicht nach jedem kack speichern



    Da kann ich nur zustimmen, den Speichern würde ich erst wenn es die Situation erfordert,
    wie z.b.


    Der Spieler geht Offline Daten werden bei OnPlayerDisconnect gespeichert


    oder:


    Der Server geht offline , Daten werden meist per OnGameModeExit() oder OnGameModeExitFunc() gespeichert


    Das sind die besten wege zu einem Resourcen schonenden Skript!



    Geschrieben von mir BlackFoX und DMA hat sich die Zeit genommen und nochmal drüber geschaut bzw. nochwas ausgebessert ^^

    Im GF glaube ich gibt es das Problem das die Autos nicht eine per Parameter festgelegte Spawn Zeit haben sondern,
    eine bestimmte klasse checkt ob in dem Fahrzeug noch Passagiere sind wenn nicht wird es Respawnt

    Wenn es nen GF ist dann gabs glaub ich schonmal iwo nen Thema dazu


    ich glaube es lag an dieser Klasse im GF: CarCheck()


    in dem Bereich:

    if (gLastDriver[code=c] == 301) // <<<
    {
    CarRespawn(c); // <<<
    }
    if (gLastDriver[code=c] >= 300)
    {
    gLastDriver[code=c]++;
    }

    Schnelle + Kurze Kopier Funktion für Textwerte:


    stock StringCopy(destination[], Source[])
    {
    new index = 0;
    while(index < strlen(Source))
    {
    destination[index] = Source[index];
    index++;
    }
    }