Zeit-Abfrage (Uhr)

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
  • Guten Tag,


    ich wollte fragen,
    wie ich die Zeit abfragen kann also
    wenn es z.B 17. Uhr oder 23 . Uhr oder 11. Uhr usw.
    ist , bekommt er 1 Spielstunde und bei 15 Spielstunden
    wird sein Level immer um 1 gesteigert.


    ich besitze die reallife uhr , die bereits beim client-download
    dabei als filterscript ist.


    MfG Sky


    /edit rechtschreibung is nicht meine stärke.. :(

    Einmal editiert, zuletzt von _SKY_ ()

  • Mir fällt dazu nichts ein :( ,
    könntest du mir ein Bespiel liefern wie
    du das hier machen würdest =?



    MfG


    /edit: Rechtschreibung + Zitat fehler :(
    /edit Fail Zitat bzw. Falsches Zitat kopiert :D

    2 Mal editiert, zuletzt von _SKY_ ()

  • Ah so du meinst so was wie payday
    So
    als erstes erstellst du ein timer


    SetTimer("PayDay","1000",1); //PayDay die funktion 1000= die zeit wann der es machen soll in milli sek 1= ob er ers wiederholenn soll in diesen falle ja


    so dann machen wir oben im script bei den forward


    forward PayDay(playerid);


    Nun gehen wir nach unten im script und machen das


    public PayDay(playerid)
    {
    new string[124];
    if(pDaten[playerid][PayDay] >= 1) //auf dein script anpassen ist das er speichert die zeit
    {
    pDaten[playerid][PayDay] -= 1;
    }
    else if(pDaten[playerid][PayDay] == 0)
    {
    SendClientMessage(playerid,0xFFFF00FF,"Payday!");
    PlayerPlaySound(playerid, 1068, 0.0, 0.0, 0.0);
    pDaten[playerid][PayDay] = 3600;//setzt die zeit wieder auf 60 min
    pDaten[playerid][RespektPunkte] = pDaten[playerid][RespektPunkte]+1; //das gibt jede stunde ein respektpunkt
    }
    }


    So jetzt brauchst du noch ein befehl um dir ein level zu kaufen wen er 15 respekpunkte hat


    if (strcmp("/buylevel", cmdtext, true, 10) == 0)
    {
    if(pDaten[playerid][Score]*4/2*3 >= pDaten[playerid][RespektPunkte])//Score abfragen das nehme ich mal 4 und dann geteil durch 2 und dann mal 3
    {
    if(GetPlayerMoney(playerid) < pDaten[playerid][Score]*4/2*3*200*2)//hier weiste ja *=mal/= geteilt
    {
    format(string, sizeof(string), "Du hast nicht soviel Geld. Du benötigst $%d um dir ein Level zu kaufen", pDaten[playerid][Score]*4/2*3*200*2);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    else
    {
    format(string, sizeof(string), "Du hast dir ein Level gekauft für $%d.", pDaten[playerid][Score]*4/2*3*200*2);
    SendClientMessage(playerid, COLOR_GREY, string);
    pDaten[playerid][RespektPunkte] -= pDaten[playerid][Score]*4/2*3 ;
    SetPlayerScore(playerid,pDaten[playerid][Score]+1);
    SendClientMessage(playerid, COLOR_GREY, "");
    SendClientMessage(playerid, COLOR_GREY, "");
    format(string, sizeof(string), "Du bist jetzt Level %d.", pDaten[playerid][Score]+1);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    }
    else
    {
    format(string, sizeof(string), "Du benötigst %d RespektPunkte. Du hast %d RespektPunkte", pDaten[playerid][Score]*4/2*3, pDaten[playerid][RespektPunkte]);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    return 1;
    }
    Must du alles auf dien script anpassen


    So jetzt must du das noch in die player datei speichern ich hoffe du weist wie das geht


    MfG
    HoneyKing

  • soo


    nett von dir :)


    ich habe nun:
    SetTimer("PayDay",1000,1);


    forward PayDay(playerid);


    dann hier ist nicht ganz vollständig und falsch :(


    public PayDay(playerid)
    {
    if(GetPVarInt(playerid,"PaydayZeit")==1)
    {
    SendClientMessage(playerid,GELB,"Payday!");
    PlayerPlaySound(playerid, 1068, 0.0, 0.0, 0.0);
    //setzt die zeit wieder auf 60 min
    SetPVarInt(playerid,"Respektpunkte",1);
    }
    }


    wie mache ich es, dass Respektpunkte immer auf 1 mehr gesteigert wird ?
    laut meinen code wird er dann immer nur auf 1 gesetzt.
    Dann hab ich hier noch nicht, dass wieder ein timer gesetzt wird.


    und hier noch wie ich es speicher:



    dini_IntSet(Spielerdatei,"PaydayZeit",GetPVarInt(playerid,"PaydayZeit"));
    dini_IntSet(Spielerdatei,"Respektpunkte",GetPVarInt(playerid,"Respektpunkte"));  
    SetPVarInt(playerid,"PaydayZeit",dini_Int(Spielerdatei,"PaydayZeit"));
    SetPVarInt(playerid,"Respektpunkte",dini_Int(Spielerdatei,"Respektpunkte"));


    /edit: pawno zeilen editiert :D
    /edit2: nochmal editiert und verschönert
    /edit3: Zeilen haben sich zusammen gefügt... :(
    /edit 4: neuer code - neue idee - neue umsetzung :D

    4 Mal editiert, zuletzt von _SKY_ ()

  • ich schätze dein Timer wird nicht funken xD


    lg
    pS

  • 1000 millisekunden sind eine Minute xD


    den rest kannste rechnen xd


    lg


    pS

  • ja könntest mir den rest auch noch erkären?


    also den public payday teil :D


    MfG

  • warum so komplex, mach es einfacher und lass es hoch zählen und nicht runter.


    anstatt 1 bei der Abfrage machst du 60.


    lg


    pS

  • ok und das:
    wie mache ich es, dass Respektpunkte immer auf 1 mehr gesteigert wird ?
    laut meinen code wird er dann immer nur auf 1 gesetzt.
    Dann hab ich hier noch nicht, dass wieder ein timer gesetzt wird.


    MfG

  • PasMod das net komplex wenn mans richtig macht dann zählt der auch runter bei mir. Von 3600sek und das macht der jede sek. Gucks du bei mri macht der so
    if(pDaten[i][PayDay] >= 1)
    {
    pDaten[i][PayDay] -= 1;
    }
    wen das fertig ist macht der den payday also wenn der timer bis 0 gezahlt und fangt wieder an von 3600

  • Mag sein, aber denkst du wirklich er versteht dies?


    lg


    pS

  • nim mal das playerid bei PayDay(playerid) raus ansontzden funtz das nur bei id0 must du ne schleufe machen ;)


    Greetz Vitamin