Beiträge von Kaliber

    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:

    Einfach mit nem boolean:


    new bool:d_response;


    //Unter OnDialogResponse
    if(response) {
    if(!d_response) d_response=true;
    else {
    d_response=false;
    //Hier kannst du dann weiter machen, da beide gewählt haben
    }
    }


    PS: Das würde nur klappen, wenn immer nur 2 Spieler auf dem ganzen Server spielen können! Andernfalls, musst du mit einem Array arbeiten ;)


    mfg. :thumbup:

    Du kannst nicht nut strcmp benutzen!


    Doch in diesem Fall könnte er das tun:


    ocmd:accept(playerid,params[]) {
    if(!params[0]) return SendClientMessage(playerid,-1,"Benutzung: /accept [Aktion]");
    if(!strcmp(params,"invite",true)) {
    //Wenn invite angegben wurde...
    } else if(!strcmp(params,"pd",true)) {
    //Wenn pd angegben wurde...
    }
    return 1;
    }


    mfg. :thumbup:

    anscheinend ist die Wirkung in Java anders als in Pawn oder C.


    Nein, eigentlich nicht.


    Das ist halt das Bitwise OR...auf Binärer Ebene kannst du das halt nutzen:


    Nehmen wir ein Beispiel:


    11001 //25
    |
    10010 //18
    = 11011 //27
    Zur kurzen Erklärung, wenn du im Binär rechnen aufgepasst hast, wird hier einfach wo mind eine 1 ist, bleibt es bei eins und wo eine 0 ist wird diese übernommen ;)


    In Pawn kannst du das so rechnen:


    new x = 0b11001;
    x |= 18;
    printf("%d",x); //-> x ist 27


    So nutzt man diesen Operator ;)


    mfg. :thumbup: