Beiträge von BOMBER

    In der Datenbank steht 5?


    Edit: Ich sehe grad der Name des Stocks ist TBan2. Kann es sein, dass du 2 Stocks verwechselst?


    Nein habe den extra umbenannt, stock wird hier abgerufen:


    //-OCMD-TBan-//
    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]");
    SpielerInfo[pID][TBan] = dauer;
    TBan2(pID,grund, dauer,playerid);
    return 1;
    }


    Ja in der Datenbank steht 5 (Also die Dauer, die bei /tban angegeben wurde)

    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.


    Funktioniert immer noch nicht, hab mich 5minuten gebannt der Wert in der Datenbank steht auch auf 5, aber naja Connecten kann ich immer noch.


    Hier mal SpielerLaden;


    new timestamp = gettime();
    new bisgebannt = SpielerInfo[playerid][TBan] = r_mysql_GetInt("TBan");
    if(timestamp < bisgebannt)
    {
    SendClientMessage(playerid,0xFF3200FF,"Du bist noch gebannt! Komm später wieder!");
    Kick(playerid);
    }


    if(!IsACop)
    {
    SendClientMessage(playerid, FARBE, TEXT);
    RemovePlayerFromVehicle(playerid);
    }


    Wenn die Position in nem Interior ist (Pickup für die Waffen) > SetPlayerInterior(playerid, InteriorID);

    Zeig uns mal den gesamten Stock Tban.


    Mich beschleicht da so ein Verdacht.


    //Stock-TBan
    stock TBan2(playerid,const string[],dauer,bannerid)
    {
    new timestamp;
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    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);
    Kick(playerid);
    r_mysql_SetInt(SpielerInfo[playerid][TBan],timestamp);
    return 1;
    }


    @Antony_Morvai: SpielerLaden = OnPlayerConnect.

    Moin, hab grad versucht n Timeban System zu schreiben, nach Tutorial funktioniert auch soweit, Zeit wird gespeichert, kann allerdings immer noch connecten..



    //Hier wirds gespeichert (Stock TBan):
    r_mysql_SetInt(SpielerInfo[playerid][TBan],timestamp);
    //SpielerLaden
    new timestamp = gettime();
    new bisgebannt = SpielerInfo[playerid][TBan] = r_mysql_GetInt("TBan");
    if(timestamp < bisgebannt)
    {
    SendClientMessage(playerid,ROT,"Du bist noch gebannt! Komm später wieder!");
    Kick(playerid);
    }


    //Edit: Eingerückt


    Weil die IP n Integer ist? :P
    //Edit falls du /GetIP ID haben willst, solltest du nicht playerid angeben.


    //enum SpielerDaten //<<<Sollte ans eigene angepasst werden
    {
    pName[MAX_PLAYER_NAME],
    Mute
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten]; //Oder wie auch immer das bei dir heisst


    //OCMD-Mute//
    ocmd:mute(playerid,params[])
    {
    new reason[64];
    new pID;
    new string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,WEISS,"/Mute ID Grund");
    format(string,sizeof(string), "%s hat dich gemuted! Grund: %s", SpielerName(playerid), reason); //Muss ebenfalls angepasst werden
    if(SpielerInfo[playerid][Adminlevel] > 0)
    {
    SpielerInfo[pID][Mute] = 1;
    SendClientMessage(pID,ROT, string);
    } else return SendClientMessage(playerid, ROT, "Du hast nicht die nötigen Rechte dafür!");
    return 1;
    }
    //OCMD-Unmute:
    ocmd:unmute(playerid,params[])
    {
    if(sscanf(params,"us",pID))return SendClientMessage(playerid,WEISS,"/unmute ID");
    format(string,sizeof(string), "%s hat dich entmuted!", SpielerName(playerid)); //Hier auch wieder anpassen
    if(SpielerInfo[playerid][Adminlevel] > 0)
    {
    SpielerInfo[pID][Mute] = 0;
    SendClientMessage(pID,ROT, string);
    } else return SendClientMessage(playerid, ROT, "Du hast nicht die benötigten Rechte!");
    return 1;
    }
    //OnPlayerText
    public OnPlayerText(playerid, text[])
    {
    if(SpielerInfo[playerid][Mute] == 1)return SendClientMessage(playerid, ROT, "Du bist noch gemuted!");
    return 1;
    }


    Hier mal eben ausm Kopf geschrieben, hoffe hiflt als kleiner Denkanstoff, MFG

    Was bitte ist an dem Satz "Dieser Callback wird aufgerufen, wenn ein Spieler stirbt." so unverständlich?
    Wenn der Spieler erschossen wird, stirbt er.
    Stürzt er vom Hochaus, stirbt er.
    Wird er überfahren, stirbt er.
    Setzt du via Script seine HP auf 0, stirbt er.


    Was du letztlich innerhalb dieses Callbacks scriptest, kann weder hier jemand wissen, noch ändert es was an der Tatsache, dass der Callback aufgerufen wird, wenn ein Spieler stirbt.


    Also in dem Callback, soll Tode vom Spieler plus 1 gesetzt werden ungefähr so:


    WaffenInfo[playerid][TodeGesamt] += 1 //Enum, und die Playerid soll +1 auf Tod kriegen, allerdings funktioniert das nicht so richtig..

    http://wiki.sa-mp.com/wiki/OnPlayerDeath


    "This callback is called when a player dies." (Dieser Callback wird aufgerufen, wenn ein Spieler stirbt.)


    Man, das war jetzt aber ne harte Nuss. Wiki aufschlagen und auch noch einen englischen Satz aus 8 Wörtern lesen -.-


    Ja, lustig dass es für GetPlayerMoney zum + & - setzen aber auch geht?


    MFG


    //Edit und ausserdem war die Frage, ob die Tode nur von Waffen dazu gezählt werden, und nicht wann das Callback aufgerufen wird :P