Beiträge von Kinimod

    Zum Einen würde das den Reallife Faktor steigern, zum Anderen würden dies viele ausnutuzen, denn bspw. wird so gerne mal gereloggt, um einige Annehmlichkeiten wiederzubekommen(bspw. Heal). Somit würde ich das Heal auch noch speichern.

    xDDDDDDDDDDDDDDDDDDD


    Dachte ich mir gerade auch, als ich diesen Post gelesen habe.


    Wie wäre es mal, wenn Du mal einen Duden in die Hand nimmst und uns in deutschen(!!!) Sätzen näher erläuterst, was Dein Anliegen ist?

    Hey,


    Da man unter 0.3x nun gefreezed immer verliert(schlechteste idee ever) frage ich mich nun, ob es nun Alternativen dazu gibt.


    Ich rede hier nicht von dem, wo man NICHT gefreezed nichts verliert. Ich suche eine Alternative.


    Danke schonmal.


    Viele Grüße

    Ich habe ein Array:


    enum tralala{
    lalalla,
    lululu,
    etc
    };


    new blablabla[100][tralala];


    Beim Filterscript Start werden verschiedene Daten im Array gespeichert. Nun werden auch zur Laufzeit neue Einträge erzeugt, die dann auch gespeichert werden. Jedoch möchte ich dann nicht die komplette Liste neu laden und im Array speichern.


    Daher nun meine Frage: Wie kann man einem Array(bspw. ist der höchste besetzte Index 9) den 10. Index zu belegen, quasi dem Array einen Eintrag hinzuzufügen?


    Grüße

    Du hats anscheinend meinen Post nicht richtig gelesen.


    Mach es mal so:


    ocmd:tban(playerid,params[])
    {
    new pID,grund[64],dauer;
    if(SpielerInfo[playerid][Adminlevel] < 2)return SendClientMessage(playerid, ROT, "Du hast nicht die nötigen Rechte!");
    if(sscanf(params, "uis", pID, dauer, grund))return SendClientMessage(playerid, WEISS, "/tban [ID] [Dauer (in Minuten)] [Grund]");
    TBan2(pID,grund, dauer,playerid);
    return 1;
    }


    stock TBan2(playerid,const string[],dauer,bannerid)
    {
    new timestamp;
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    SpielerInfo[playerid][TBan] = timestamp;
    new str[256];
    new name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(bannerid,bannername,sizeof(bannername));
    format(str,sizeof(str),"Admin-Command: %s wurde von %s für %d Minuten gebannt",name,bannername,dauer);
    SendClientMessageToAll(ROT,str);
    format(str,sizeof(str),"Grund: %s",string);
    SendClientMessageToAll(ROT,str);

    r_mysql_SetInt(SpielerInfo[playerid][TBan],timestamp);
    Kick(playerid);
    return 1;
    }

    Das kann dann ja nicht funktionieren.


    Du nimmst folgende Zeile raus:


    SpielerInfo[pID][TBan] = dauer;


    Und fügst diese in stock Tban2 unter timestamp +=sekunden hinzu.


    und ersetzt dauer durch timestamp.


    Du darfst nicht die Dauer speichern, sondern den timestamp.


    Denn: der timestamp sind die Anzahl der Sekunden seit dem 01.01.1970. Bedeutet: Der timestamp der Zeit, an dem der Bann abläuft ist größer, als der aktuelle Timestamp.
    Und 5 sind 5 Sekunden nach dem 01.01.1970, was bedeutet, dass der Bann garnicht mehr besteht, da diese Zeit in der Vergangenheit liegt.


    /EDIT: PWN Tags
    //EDIT 2: Erklärung hinzugefügt

    Kick(playerid);
    r_mysql_SetInt(SpielerInfo[playerid][TBan],timestamp);


    Du kickst, bevor es gespeichert wird.
    Das ist der Fehler. Da du ihn kickst, gibt es die playerid auch nicht mehr, somit kann er den Wert nicht abrufen und speichern.

    Du hast xpos,ypos und zpos ja auch nicht definiert.Außerdem musst Du hier einen Float holen und keinen Integer:


    new Float:xpos,Float:ypos,Float:zpos;


    xpos = GetPVarFloat(playerid,"xpos");
    ypos = GetPVarFloat(playerid,"ypos");
    zpos = GetPVarFloat(playerid,"zpos");
    SetPlayerPos(playerid,xpos,ypos,zpos);

    Eventuell selber machen?


    Hier ist eine Anleitung:


    Du erstellst einen Timer, der bspw. jede Sekunde aufgerufen wird. Dann fragst Du mit einer For Each Schleife den Gesundheitsstatus von allen Fahrzeugen ab.
    Wenn die HP an der Stelle ist, wo das Auto anfängt zu brennen, setzt du die HP Anzahl auf eins mehr und stellst den Motor ab(SetVehicleParams) und lässt die Nachricht ausgeben.
    Nun fragst du bei /motor immer ab, wieviel HP das Fahrzeug hat. Wenn es 1 HP mehr, als die Grenze zum Brennen hat, lässt Du den Motor gar nicht erst starten und die Nachricht ausgeben.


    Wie Du die einzelnen Schritte ausführst, kannst Du hier im Forum per SuFu und auch im SA:MP Wiki erfahren.


    //E: Hinweis zum SA:MP Wiki hinzugefügt

    Wenn dann auch so.
    if(IsteinMember(playerid,fraktionsid) && IstEinLeader(playerid,fraktionsid))


    //edit


    Mit || (oder) fragt er nur eine ab.
    Mit && (und) fragt er beide ab.


    Was macht das für einen Sinn?


    Wenn man es so macht, kann es nur der Leader, was genau das Gegenteil von dem ist, wie es ohnehin schon ist.


    Also wieso nicht mit dem oder arbeiten?

    Nunja, mir ist es bei einem Supermoderator aufgefallen, ich frage ihn freundlich, wieso mein Tutorial gelöscht wurde und argumentiere, wieso es wiederhergestellt werden sollte, er liest die PN auch, aber leider antwortet er nicht. Ich warte nun seit 5 Tagen, vor genau dieser Zeit hat er es gelesen. Schade...

    123Maffin:
    Zum ersten Problem:
    Kann es sein, dass Du Dich in einer anderen virtuellen Welt befindest, wenn Du das Label nicht siehst?


    Zum 2. Problem:
    Zum Ausschalten musst du 00 durch 0xFFFFFF00 ersetzen. Somit wird es unsichtbar.



    //EDIT: Erstes Problem hinzugefügt

    Such trotzdem mal nach beiden Dateien. Es darf nur jeweils eine existieren.


    Das war damals mein Problem, ich hatte mehrmals neuinstalliert, aber die GENRL mit der falsch gemoddeten Datei war immernoch auf der Platte und wurde vom Programm verwendet, wieso auch immer.