Beiträge von Derakar

    Mein ADuty Befehl bugt ein wenig... Wenn ich aus dem Dienst gehe sterbe ich?


    ocmd:aduty(playerid,params[])
    {
    new Float:Leben, Float:Ruestung, str[128];
    if(sInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid, GRAU, LOGINERROR);
    if(sInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, GRAU, ADMERROR);
    GetPlayerArmour(playerid,Ruestung);
    GetPlayerHealth(playerid,Leben);
    switch(GetPVarInt(playerid, "ADUTY"))
    {
    case 0:
    {
    SetPlayerHealth(playerid, FLOAT_INFINITY);
    SetPlayerArmour(playerid, 100);
    format(str,sizeof(str), "%s hat den Admindienst betreten.", SpielerName(playerid));
    SendClientMessageToAll(ADMIN, str);
    SetPVarInt(playerid, "ADUTY", 1);
    }
    case 1:
    {
    SetPlayerArmour(playerid,Ruestung);
    SetPlayerHealth(playerid,Leben);
    format(str,sizeof(str), "%s hat den Admindienst verlassen.", SpielerName(playerid));
    SetPVarInt(playerid, "ADUTY", 0);
    }
    }
    return 1;
    }


    Ich habs auch auch so probiert:


    ocmd:aduty(playerid,params[])
    {
    new Float:Leben, Float:Ruestung, str[128];
    if(sInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid, GRAU, LOGINERROR);
    if(sInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, GRAU, ADMERROR);
    switch(GetPVarInt(playerid, "ADUTY"))
    {
    case 0:
    {
    GetPlayerArmour(playerid,Ruestung);
    GetPlayerHealth(playerid,Leben);
    SetPlayerHealth(playerid, FLOAT_INFINITY);
    SetPlayerArmour(playerid, 100);
    format(str,sizeof(str), "%s hat den Admindienst betreten.", SpielerName(playerid));
    SendClientMessageToAll(ADMIN, str);
    SetPVarInt(playerid, "ADUTY", 1);
    }
    case 1:
    {
    SetPlayerArmour(playerid,Ruestung);
    SetPlayerHealth(playerid,Leben);
    format(str,sizeof(str), "%s hat den Admindienst verlassen.", SpielerName(playerid));
    SetPVarInt(playerid, "ADUTY", 0);
    }
    }
    return 1;
    }

    Wenn ich das so mache sagt der mir ich hätte einen Tag Fehler.


    Code
    Script.p(57) : warning 213: tag mismatch
    Script.p(58) : warning 213: tag mismatch


    public OnPlayerConnect(playerid)
    {
    new Tank = CreatePlayerProgressBar(playerid, 634.0, 394.0, 55.5, 3.2, 0x009C00FF, BAR_DIRECTION_RIGHT);
    ShowPlayerProgressBar(playerid, Tank);
    return 1;
    }

    Ich denke das hier wäre was für dich:
    http://forum.sa-mp.com/showthread.php?t=537468


    Da ist alles dabei was du willst.


    Jeffry ich hab versucht das zu installieren aber der sagt mir immer ich hätte einen Fehler und das Filterscript zum Createn funktioniert auch nicht?


    public OnPlayerConnect(playerid)
    {
    Tank:CreatePlayerProgressBar(playerid, Float:634, Float:394, Float:55.5, Float:3.2, 0x009C00FF, Float:100.0, BAR_DIRECTION_RIGHT);
    ShowPlayerProgressBar(playerid, Tank);
    return 1;
    }


    Code
    Script.p(58) : error 029: invalid expression, assumed zero
    Script.p(57) : warning 203: symbol is never used: "Tank"

    Okay wie kann ich das dann mit einem Dialog machen?


    Hier wird das Geschlecht gemacht:


    if(dialogid == DIALOG_GESCHLECHT){
    if(response){
    sInfo[playerid][pGeschlecht] = 1;
    ShowPlayerDialog(playerid,DIALOG_ALTER,1,"{FF9E00}Wähle dein Alter","Gebe nun dein Alter hier ein, mit welchem du auf dem Server spielen willst.\nDu kannst auch dein richtiges Alter angeben.","OK","");
    } else {
    sInfo[playerid][pGeschlecht] = 2;
    ShowPlayerDialog(playerid,DIALOG_ALTER,1,"{FF9E00}Wähle dein Alter","Gebe nun dein Alter hier ein, mit welchem du auf dem Server spielen willst.\nDu kannst auch dein richtiges Alter angeben.","OK","");
    }
    return 1;
    }

    Wie kann ich ein Integer zu einem String machen?


    Ungefair so? (ist aber falsch)


    if(sInfo[playerid][pGeschlecht] == 1){
    sInfo[playerid][pGeschlecht] = "Männlich";
    } else if(sInfo[playerid][pGeschlecht] == 2){
    sInfo[playerid][pGeschlecht] = "Weiblich";
    }

    Hab da ne Frage zu meinem Unban befehl.


    Wenn ich jemanden unbanne funktioniert das aber ich bekomme auch die Message, dass der Befehl nicht existiert.


    ocmd:unban(playerid,params[])
    {
    new name, grund[128], n1[128],query[1024];
    if(sInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid, GRAU, LOGINERROR);
    if(sInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid, GRAU, ADMERROR);
    if(sscanf(params, "s[128]s[128]", name, grund)) return SendClientMessage(playerid, GRAU, "Verwende: /unban {FF9E00}<Spieler-Name> <Grund>");
    format(query,sizeof(query), "UPDATE accounts SET Gebannt='0' WHERE Name='%s'", name);
    mysql_function_query(mysql,query,false,"","");
    format(n1,sizeof(n1), "%s hat %s den Zugang zum Server wieder gewehrt. Grund: %s", SpielerName(playerid), name, grund);
    SendClientMessageToAll(ADMIN, n1);
    return 1;
    }


    Der Chat:


    Code
    [19:29:52] Jonny_Ramirez hat Maik den Zugang zum Server wieder gewehrt. Grund: Test
    
    
    [19:29:52] Der Befehl {FF9E00}/unban Maik Test {908B8E}existiert nicht! Um eine Liste mit Befehlen zu bekommen nutze {FF9E00}/help{908B8E}.

    mhm.... also entwerde stehe ich total auf dem Schlauch oder das nicht nicht richtig...


    So hab ichs jetzt
    new timestamp = gettime();
    if(sInfo[playerid][pPremium] == 1){
    new nochpremium = sInfo[playerid][pPremiumZeit];
    if(timestamp < nochpremium)
    {
    new tage = nochpremium / 86400;
    nochpremium -= tage * 86400;
    new stunden = nochpremium / 3600;
    nochpremium -= stunden * 3600;
    new minuten = nochpremium / 60;
    nochpremium -= minuten * 60;
    new str[256];
    format(str,sizeof(str), "Du bist noch für {FF9E00}%i Tage{FFFFFF}, {FF9E00}%i {FFFFFF}Stunden und {FF9E00}%i {FFFFFF}Minuten Premium!", tage, stunden, minuten);
    SendClientMessage(playerid, WEISS, str);
    } else {
    new query[1024];
    format(query,sizeof(query), "UPDATE accounts SET PremiumZeit='0', Premium='0' WHERE ID='%i'", sInfo[playerid][pDBID]);
    mysql_function_query(mysql,query,false,"","");
    }
    }


    Und das kommt dann im CHat bei 1 Tag Premium:


    Code
    [21:46:43] Du bist noch für 16482 Tage, 20 Stunden und 45 Minuten Premium!

    Ok geht.


    kann ich das abfagen auch wie hier bei meinem timeban machen.
    Also bei dem login anzeigen wie lange der SPieler noch Premium hat.


    new timestamp = gettime();
    new bisgebannt = sInfo[playerid][pTimeBanZeit];
    if(timestamp < bisgebannt)
    {
    new differenz = bisgebannt - timestamp;
    new Minuten = differenz / 60;
    new str[256];
    format(str,sizeof(str), "Du bist noch für %i Minuten gebannt!", Minuten);
    SendClientMessage(playerid, ADMIN, str);
    SetTimer("KickTimer", 1000, false);
    return 1;
    } else {
    new query[1024];
    format(query,sizeof(query), "UPDATE accounts SET TimeBanZeit='0' WHERE ID='%i'", sInfo[playerid][pDBID]);
    mysql_function_query(mysql,query,false,"","");
    }

    So ich hab da jetzt mal etwas versucht aber ich glaube das funktioniert nicht ganz...


    In der Datenbank wird diese zahl gespeichert, wenn ich 1 Tag Premium gebe.
    -1446823452


    stock MakePremium(playerid,dauer,makerid)
    {
    new timestamp,str[128],str2[128],query[1024];
    timestamp = gettime();
    new zeitBisEnde = gettime() + dauer * 86400;
    timestamp += zeitBisEnde;
    format(str,sizeof(str), "%s hat dir %i Tage den Premiumrank übergeben.", SpielerName(makerid), dauer);
    SendClientMessage(playerid, GELB, str);
    format(str2,sizeof(str2), "%s hat %s %i Tage den Premiumrank übergeben.", SpielerName(makerid), SpielerName(playerid), dauer);
    SendAdminMessage(ADMIN, str2);
    format(query,sizeof(query), "UPDATE accounts SET PremiumZeit='%d' WHERE ID='%i'", timestamp, sInfo[playerid][pDBID]);
    mysql_function_query(mysql,query,false,"","");
    return 1;
    }