[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Warum geht das nicht?


  • 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;
    }

    Mit freundlichen Grüßen,
    Derakar

  • 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,"","");
    }

    Mit freundlichen Grüßen,
    Derakar

  • Nochmal zu den Stunden. Das ist diesesmal ja nicht
    new zeitBisEnde = gettime() + tage * 86400;
    Durch wie viel muss ich denn da teilen? durch die 86400? Um die Stunden zu bekommen?
    new Minuten = differenz / 60;

    Mit freundlichen Grüßen,
    Derakar

  • 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!

    Mit freundlichen Grüßen,
    Derakar

  • Die momentane Zeit muss noch abgezogen werden.
    nochpremium = sInfo[playerid][pPremiumZeit] - gettime();


    Dachte das machst du schon.
    Das darfst du aber erst NACH der Abfrage machen.


    EDIT:
    Also so:

    Spoiler anzeigen
    new timestamp = gettime();
    if(sInfo[playerid][pPremium] == 1){
    new nochpremium = sInfo[playerid][pPremiumZeit];
    if(timestamp < nochpremium)
    {
    nochpremium = sInfo[playerid][pPremiumZeit] - gettime();
    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,"","");
    }
    }

  • Hey,
    ich habe folgendes Problem:
    Ich möchte das mit dem Befehl /random ein Randomplayer der gerade auf dem server ist zu einer Postmition geportet wird.
    Ich bin mit meinen Latein am ende, und google konnte mir auch nicht wirklich helfen.
    mfg.
    Mausibiba

  • Ich möchte für eine Fraktion alle Skins zur verfügung stellen. Ist es hier möglich?



    new BincoSystemFraktionsSkins[][BincoFrakt_daten] =//{Skinid,Fraktid}
    {
    {283,1},{282,1},{281,1},{280,1},{267,1},{266,1},{288,1},
    {163,2},{164,2},{165,2},{166,2},{286,2},{141,2}
    };


    Oder muss ich da jetzt wirklich jede ID eintragen?#


    @Jeffry

    Mit freundlichen Grüßen

    26552

    6 Mal editiert, zuletzt von N3xiz ()