Beiträge von Kaliber

    Mein Problem ist das sich mein Filterscript durch den public OnPlayerUpdate an den public OnPlayerConnect bindet.
    Meine frage ist jetzt ob es eine andere möglichkeit gibt Textraws ab einem bestimmten Zeitpunkt abzudaten und das ohne OnPlayerUpdate.
    Ich dachte mir ich mache aus den Updates einen stock aber wohin dann mit dem stock, das sich der auch regelmäßig Updatet?


    Mal ein paar Informationen:


    1. Es gibt keinen "stock"..das ist nur ein Wort welches für den pre-Compiler da ist, der dann die Variable oder Funktion ignoriert, mehr dazu hier: [ SCRIPTING ] Der Mythos "stock"
    2. Normale Funktionen (ohne public), können nicht per Timer oder CallxxxFunction aufgerufen werden.
    3. Du kannst jederzeit einfach einen Timer erstellen, der zu einer x-Zeit wiederholt diese public-Funktion aufruft, somit kannst du auch OnPlayerUpdate ignrieren.


    Wie kann ich eine eigenen AudioDatei im Server abspielen lassen?


    Schau dir das mal an: PlayAudioStreamForPlayer


    mfg. :thumbup:

    und es verändert sich die Sicht usw....
    Also muss irgendwo ein Fehler sein bei der Abfrage oder bei der wiedergabe der Variable.


    Willst du mir gerade klar machen, dass eine String abfrage die Kamera Position vom Spieler beeinflusst? :huh:


    Kommt dir das nicht selbst unmöglich und suspekt vor? :rolleyes:


    Wenn die Kamera plötzlich nicht mehr hinter dem Spieler ist, nutzt du auch Funktionen die das beeinflussen...


    Also lösche alle diese Funktionen oder als "Notlösung" setz die Kamera Position mit SetCameraBehindPlayer(playerid); wieder hinter ihn ;)


    mfg. :thumbup:

    Einfach sowas machen:


    //Oben im Skript:
    new Zustand = 100;


    //Unter OnGameModeInit
    SetTimer("@z_v",1000*10,1);


    //Und dann unten im Skript
    @z_v();@z_v() {
    if(!Zustand) {
    //Was passieren soll, wenn der Zustand 0% hat
    }
    return Zustand--;
    }


    //Und den Command schreib mal so:
    ocmd:zustand(playerid) {
    new string[12];
    format(string, sizeof(string),"Leben: %d%", Zustand);
    return ShowPlayerDialog(playerid, DIALOG_ZUSTAND, DIALOG_STYLE_MSGBOX, "Zustand", string, "Ok", "");
    }


    mfg. :thumbup:

    Frage 1: Mich würde mal interessieren was denn alles genau viele Ressourcen zieht, also unnötige Zeilen die man sich sparren kann?


    [ SCRIPTING ] Code Optimierung


    Frage 2: Wie schauts aus mit ocmd: wenn alle Befehle mit ocmd: und strcmp sind ist das schlecht, oder was ist am besten?


    Das macht keinen direkten Unterschied...


    Frage 3: Und ist es schlimm wenn man viele publics und stocks benutzt oder sollte man dies lieber vermeiden?


    Naja, Funktionsaufrufe dauern natürlich ein wenig länger, als wenn man das direkt schreibt. Allerdings ist es auch manchmal Notwendig Funktionen zu nutzen...


    Frage 4: Und wie kann man eigentlich die Ressourcen eines Scripts herausfinden? An der Speicherkapazität eines Scripts?


    Mit Ressourcen wird zum einen der Speicher gemeint, zum anderen aber auch wie flüssig das Skript läuft...


    Frage 5: Wenn ja wie viele MB's sollte ein komplettes, Ressourcen sparrendes Script betragen?


    Das kann man pauschal nicht sagen...oder kannst du mir sagen, wie viel MB eine gute Software hat? :rolleyes:
    Man sollte halt so gut es geht versuchen Speicher zu sparen ;)


    mfg. :thumbup:

    jetzt geht mein login system nicht mehr und es wird auch kein geld o.ä geladen


    Tja...das ist natürlich doof, wenn man Includes von Leuten nutzt, die nicht richtig hooken können :rolleyes:


    Schreib im Include unter OnPlayerConnect...


    CallLocalFunction("FB_OnPlayerConnect","d",playerid);


    Dann sollte es gehen ;)


    mfg. :thumbup:

    Ändere folgendes mal in der FoXban.inc:


    In der letzten Zeile steht folgendes:


    # Define OnPlayerConnect FB_OnPlayerConnect


    Lösche die Zeile und schreib folgendes:


    #if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
    #else
    #define _ALS_OnPlayerConnect
    #endif
    #define OnPlayerConnect FB_OnPlayerConnect


    mfg. :thumbup:

    Die unterbricht komischerweise so komisch...


    Mach es mal so:


    ApplyAnimation(i, "ON_LOOKERS", "wave_loop", 4.0, 1, 0, 0, 1, 0, 1);


    Wie erstelle ich ein Random aus Spieler welche nur eine gewisse Variable haben.
    Also Beispiel, Spieler XY und Spieler ZY haben beide die Variable 1 und sollten somit beim random dabei sein.
    Es sollte immer einer der ganzen im random ausgewählt werden.


    So kann man das lösen:


    new list[4],idx;
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !var[i]) continue;
    list[idx] = i,idx++;
    }
    //Und hier kannst du das dann so nutzen:
    new randomSpielerID = list[random(4)];


    Bei dem Beispiel nehme ich an, dass es nur 4 Spieler sind die diese Variable (var[ i ]) auf true bzw nicht gleich 0 haben ;)


    mfg. :thumbup:

    In diesem Thread sollen bitte nur Verbesserungsvorschläge, Bugs und neue Ideen gepostet werden.


    Habe es mir noch nicht genau angeschaut, aber ein Bug ist mir direkt aufgefallen, die API mit Facebook funktioniert nicht :D


    //Edit: Entweder ist deine Seite offline..oder der Bug hat sie crashen lassen :D


    mfg. :thumbup:

    Aber die Inkludierung von der samp include brauchst du doch eigendlich nicht, oder täusche ich mich da?


    Nun, sicher ist sicher ;)


    #include <a_samp>
    #include <KindVehicle>
    Das würde ohne Fehler funktionieren, da könnte man auch das Includieren weg lassen, da man es ja im Gamemode schon macht.


    Aber folgendes:


    #include <KindVehicle>
    #include <a_samp>
    Das würde zu Fehlern kommen, da auf Funktionen zugegriffen werden, die in der a_samp Include sind ;)


    Aus diesem Grund ist es halt sicherer, dass es auch ja nicht zu Fehlern kommt und durch die Directives in der a_samp Include kann sie auch nicht 2x includiert werden ;)


    Aus diesem Grund ist das besser so, wie er es gemacht hat ;)


    //Edit:
    Was er noch machen sollte wäre sowas:
    #if defined _KindaVehicle
    #endinput
    #endif
    #define _KinaVehicle
    Damit sein Include nicht 2x includiert werden kann ;)


    mfg. :thumbup:

    "UPDATE Spielerautos SET X='%f',Y='%f',Z='%f',ROTATION='%f' WHERE DB_ID='%i'"


    Diese Zeile verursacht den Fehler ;)


    Schreibe sie mal so:


    format(query,sizeof(query),"UPDATE `Spielerautos` SET `X`='%f',`Y`='%f',`Z`='%f',`ROTATION`='%f' WHERE `DB_ID`='%i'",cInfo[i][carx],cInfo[i][cary],cInfo[i][carz],cInfo[i][carrota],cInfo[i][DB_ID]);


    und wenn das nichts hilft, printe dir mal, was daraus kommt...überprüfe deine Werte und schau ob das auch alles wirklich existiert ;)


    mfg. :thumbup:

    Bisschen was falsch kann das sein ?


    Ja...mach es so:


    new bool:d_response; //Das ist eine globale Variable
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_SPIELAUSWAHL) {
    if(!response) return 1;
    switch(listitem) {
    case 0: //Hier Code, aber kein return!
    case 1: //Hier Code, aber kein return!
    case 2: //Hier Code, aber kein return!
    }
    if(!d_response) d_response=true;
    else {
    d_response=false;
    //Hier kannst du dann weiter machen, da beide gewählt haben
    }
    }
    return 0;
    }


    mfg. :rolleyes: