Beiträge von Studs

    Also ganz einfach:


    Ich hab eine Zeit bis zum PayDay (pPayDayTime)


    Diese möchte ich abspeichern, heißt also wenn ich z.B


    schon 35 Minuten Online bin also PayDayTime = 35,


    möchte ich wenn ich wieder online bin wieder


    35 Minuten haben, heißt also noch 25 Minuten bis zum PayDay


    Und beim payday wird das wieder auf 1(paydaytime) gesetzt

    Das kannst du wesentlich einfacher machen, indem du einfach einen einzigen Timer bei OnGameModeInit startest, und diesen immer für alle Spieler ausführst:
    public PayDayAbzug(){ for(new i = 0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue; PlayerInfo[i][pPayDayTime]++; if(PlayerInfo[i][pPayDayTime] >= 60) { //PayDayForPlayer(i); PlayerInfo[i][pPayDayTime] = 0; SendClientMessage(i,-1,"yo-ho hahaha du hast payday yoo"); } else { SendClientMessage(i,-1,"get schwiftyyy alter du hast eine minute"); } } return 1;}


    Und bei OnGameModeInit einfach nur:
    SetTimer("PayDayAbzug", 60000, true);

    So möchte ich das ja nicht,


    das war in dem Script vorher genau so,


    aber die Zeit bis zum PayDay soll einfach gespeichert werden


    wie auf RPG oder Liberty reallife

    Also folgendes Problem:


    Ich möchte ein PayDay System machen, aber nicht jede stunde, sondern einfach so,


    dass die Zeit bis zum PayDay gespeichert wird.



    Folgendes:


    SetTimerEx("PayDayAbzug", 60000, true, "i", playerid);


    Ich überprüfe jede Minute ob PayDay ist mit dem Befehl.


    Und den PayDay sette ich nach


    SetTimerEx("PayDayForPlayer", PlayerInfo[playerid][pPayDayTime] * 1000 * 60, true, "i", playerid);



    PayDay Abzug: https://pastebin.com/TQnGiYEf


    Nach dem PayDay wird der Wert dann auf 1 Gesetzt (da man ja bei 60 Minuten PayDay bekommt)



    Problem ist jedoch, das dann SetTimerEx("PayDayForPlayer", PlayerInfo[playerid][pPayDayTime] * 1000 * 60, true, "i", playerid);


    Mal 1 ausgeführt wird also bekomme ich jede Minute payday.



    [pwn]public PayDayAbzug(playerid){if(PlayerInfo[playerid][pPayDayTime] >= 60)



    Auf 60 Setzten kann ichs auch nicht, da ich ja dann bei PayDayAbzug payday bekomme.


    Pro PayDayAbzug bekomme ich dann ja +1 PayDayTime, welcher natürlich bei


    public PayDay wd auf 1 gesetzt wurde, da ich ihn ja nicht auf 0 setzten kann,


    da ich nicht 0 * 1000 nehmen kann...


    Hab schon viel nachgedacht und bin irgendwie ein bisschen durcheinander gekommen,


    bräuchte da mal ein bisschen hilfe xd












    hier ist btw noch der payday public


    PayDay Public: https://pastebin.com/J7657Xnn
















    @Jeffry > Neues Thema

    Also folgendes Problem:


    Ich möchte ein PayDay System machen, aber nicht jede stunde, sondern einfach so,


    dass die Zeit bis zum PayDay gespeichert wird.



    Folgendes:


    SetTimerEx("PayDayAbzug", 60000, true, "i", playerid);


    Ich überprüfe jede Minute ob PayDay ist mit dem Befehl.


    Und den PayDay sette ich nach


    SetTimerEx("PayDayForPlayer", PlayerInfo[playerid][pPayDayTime] * 1000 * 60, true, "i", playerid);



    public PayDayAbzug(playerid){if(PlayerInfo[playerid][pPayDayTime] >= 60){PayDayForPlayer(playerid);SendClientMessage(playerid,-1,"yo-ho hahaha du hast payday yoo");return 1;}else{PlayerInfo[playerid][pPayDayTime] = PlayerInfo[playerid][pPayDayTime]+=1; // hier wird jede minute +1 addiertreturn 1;}}


    Nach dem PayDay wird der Wert dann auf 1 Gesetzt (da man ja bei 60 Minuten PayDay bekommt)



    Problem ist jedoch, das dann SetTimerEx("PayDayForPlayer", PlayerInfo[playerid][pPayDayTime] * 1000 * 60, true, "i", playerid);


    Mal 1 ausgeführt wird also bekomme ich jede Minute payday.



    [pwn]public PayDayAbzug(playerid){if(PlayerInfo[playerid][pPayDayTime] >= 60)



    Auf 60 Setzten kann ichs auch nicht, da ich ja dann bei PayDayAbzug payday bekomme.


    Pro PayDayAbzug bekomme ich dann ja +1 PayDayTime, welcher natürlich bei


    public PayDay wd auf 1 gesetzt wurde, da ich ihn ja nicht auf 0 setzten kann,


    da ich nicht 0 * 1000 nehmen kann...


    Hab schon viel nachgedacht und bin irgendwie ein bisschen durcheinander gekommen,


    bräuchte da mal ein bisschen hilfe xd












    hier ist btw noch der payday public


    public PayDayForPlayer(playerid){new string[128];new account,interest;new rent = 0;for(new i = 0; i < MAX_PLAYERS; i++){if(IsPlayerConnected(i)){PlayerInfo[playerid][pPayDayTime] = 1;//if(M_Bot[i][PAFK] == 0)//{if(MoneyMessage[i]==1){SendClientMessage(i, COLOR_LIGHTRED, "Du konntest deine Schulden nicht Bezahlen.");GameTextForPlayer(i, "~r~Busted!", 2000, 1);SetPlayerInterior(i, 6);SetPlayerPos(i, 264.6288,77.5742,1001.0391);PlayerInfo[i][pJailed] = 1;ResetPlayerWeapons(i);ResetPlayerMoney(i);WantedLevel[i] = 0;PlayerInfo[i][pJailTime] = 240;format(string, sizeof(string), "Du bist eingesperrt für %d sekunden. Kaution: Keine", PlayerInfo[i][pJailTime]);SendClientMessage(i, COLOR_LIGHTBLUE, string);}new playername2[MAX_PLAYER_NAME];GetPlayerName(i, playername2, sizeof(playername2));account = PlayerInfo[i][pAccount];new key = PlayerInfo[i][pPhousekey];if(key != 255){rent = HouseInfo[key][hRent];if(strcmp(playername2, HouseInfo[key][hOwner], true) == 0){rent = 0;}else if(rent > GetPlayerMoney(i)){PlayerInfo[i][pPhousekey] = 255;SendClientMessage(i, COLOR_WHITE, "You have been evicted.");rent = 0;}HouseInfo[key][hTakings] = HouseInfo[key][hTakings]+rent;}new tmpintrate;if (key != 255 && strcmp(playername2, HouseInfo[key][hOwner], true) == 0){if(PlayerInfo[i][pDonateRank] > 0) { tmpintrate = intrate+4; }else { tmpintrate = intrate+2; }//HouseInfo[key][hLevel]}else{if(PlayerInfo[i][pDonateRank] > 0) { tmpintrate = 3; }else { tmpintrate = 1; }}Tax += TaxValue;//Should work for every player onlinePlayerInfo[i][pAccount] -= TaxValue;if(PlayerInfo[i][pDonateRank] > 0){new bonus = PlayerInfo[i][pPayCheck] / 2;PlayerInfo[i][pPayCheck] += bonus;}new checks = PlayerInfo[i][pPayCheck];new ebill = (PlayerInfo[i][pAccount]/10000)*(PlayerInfo[i][pLevel]);//new oil = (PlayerInfo[i][pPhousekey]*100);ConsumingMoney[i] = 1;GivePlayerMoney(i, checks);PlayerInfo[i][pMoneys] = PlayerInfo[i][pMoneys]+checks;if(PlayerInfo[i][pAccount] > 0){PlayerInfo[i][pAccount] -= ebill;SBizzInfo[4][sbTill] += ebill;}else{ebill = 0;}if(PlayerInfo[i][pPhousekey] != 255){//PlayerInfo[i][pAccount] -= oil;//SBizzInfo[3][sbTill] += oil;}else{//oil = 0;}if(PlayerInfo[i][pMember] == 0 && PlayerInfo[i][pLeader] == 0){checks += 500;}interest = (PlayerInfo[i][pAccount]/1000)*(tmpintrate);PlayerInfo[i][pExp]++;PlayerPlayMusic(i);PlayerInfo[i][pAccount] = account+interest;SendClientMessage(i, COLOR_GOLD, "|================| KONTO AUSZUG |================|");format(string, sizeof(string), " Gehalt: $%d Miete: -$%d Steuern: -$%d", checks, rent, TaxValue);SendClientMessage(i, COLOR_GRAD1, string);if(PlayerInfo[i][pPhousekey] != 255 || PlayerInfo[i][pPbiskey] != 255){format(string, sizeof(string), " Strom Kosten [incl.: Heitzkosten,Wasser: -$%d", ebill);SendClientMessage(i, COLOR_GRAD1, string);}if(PlayerInfo[i][pHandyVer] == 1){SendClientMessage(i,COLOR_GRAD2," Handyvertragskosten: -$100");GivePlayerMoney(i, -100);PlayerInfo[i][pMoneys] = PlayerInfo[i][pMoneys]-100;}format(string, sizeof(string), " Zinsen: $%d [0.%d prozent]", interest,tmpintrate);SendClientMessage(i, COLOR_GRAD2, string);SendClientMessage(i, COLOR_GOLD, "|=================||============||=================|");format(string, sizeof(string), " Neuer Kontostand: $%d", PlayerInfo[i][pAccount]);SendClientMessage(i, COLOR_GRAD5, string);format(string, sizeof(string), "~g~PayDay~y~!!!");GameTextForPlayer(i, string, 5000, 1);rent = 0;PlayerInfo[i][pPayDay] = 0;PlayerInfo[i][pPayCheck] = 0;PlayerInfo[i][pConnectTime] += 1;if(PlayerInfo[i][pDonateRank] > 0){PlayerInfo[i][pPayDayHad] += 1;if(PlayerInfo[i][pPayDayHad] >= 5){PlayerInfo[i][pExp]++;PlayerInfo[i][pPayDayHad] = 0;}}if(PlayerInfo[i][pLevel] >= 0){new nxtlevel = PlayerInfo[i][pLevel]+1;// new costlevel = nxtlevel*levelcost;//10k for testing purposesnew expamount = nxtlevel*levelexp;new infostring[256];if (PlayerInfo[i][pExp] < expamount){format(infostring, 256, " Du brauchst noch mindestens %d Respekt Punkte für ein Level Up, du hast [%d] !",expamount,PlayerInfo[i][pExp]);SendClientMessage(i, COLOR_GRAD1, infostring);PlayerInfo[playerid][pPayDayTime] = 1;return 1;}else{format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist jetzt Level %d", nxtlevel);PlayerPlaySound(i, 1052, 0.0, 0.0, 0.0);SetPlayerScore(i,PlayerInfo[i][pLevel]);PlayerPlayMusic(i);// PayDAy SYSPlayerInfo[i][pLevel]++;if(PlayerInfo[i][pDonateRank] > 0){PlayerInfo[i][pExp] -= expamount;new total = PlayerInfo[i][pExp];if(total > 0){PlayerInfo[i][pExp] = total;}else{PlayerInfo[i][pExp] = 0;}}else{PlayerInfo[i][pExp] = 0;}PlayerInfo[i][gPupgrade] = PlayerInfo[i][gPupgrade]+2;GameTextForPlayer(i, string, 5000, 1);format(infostring, 256, " Du hast nun Level %d. Glückwunsch", nxtlevel);SendClientMessage(i, COLOR_GRAD1, infostring);//format(infostring, 256, " Du hast %d unspent Upgrade Punkte",PlayerInfo[playerid][gPupgrade]);//SendClientMessage(playerid, COLOR_GRAD2, infostring);}}/* }else{SendClientMessage(i, COLOR_LIGHTRED, "* Du hast kannst keinen PayDay bekommen solange du AFK bist!");}*/}}Checkprop();return 1;}













    EDIT: Pro PayDayAbzug bekomme ich dann ja +1 PayDayTime, welcher natürlich bei


    public PayDay wd auf 1 gesetzt wurde, da ich ihn ja nicht auf 0 setzten kann,


    da ich nicht 0 * 1000 nehmen kann...

    ocmd:teleportz(playerid,params[])
    {
    new locations;
    if(sscanf(params,"u", locations))
    {
    SendClientMessage(playerid,-1,"nutze /teleportz TPID");
    return 1;
    }
    switch (locations)
    {
    case 0:
    {
    SetPlayerPos(playerid,371.6122,187.4087,1008.3893);
    }
    case 1:
    {
    SetPlayerPos(playerid,371.6122,187.4087,1008.3893);
    }
    case 2:
    {
    SetPlayerPos(playerid,347.7374,193.7241,1014.1875);
    }
    case 3:
    {
    SetPlayerPos(playerid,1215.1304,-11.8431,1000.9219);
    }
    case 4:
    {
    SetPlayerPos(playerid,2166.3772,-1675.3829,15.0859);
    }
    case 5:
    {
    SetPlayerPos(playerid,1109.3318,-1796.3042,16.5938);
    }
    case 6:
    {
    SetPlayerPos(playerid,-1932.3859,276.2117,41.0391);
    }
    case 7:
    {
    SetPlayerPos(playerid,2226.1716,-1718.1792,13.5165);
    }
    case 8:
    {
    SetPlayerPos(playerid,1366.4325,-1275.2096,13.5469);
    }
    case 9:
    {
    SetPlayerPos(playerid,531.7930,-1292.4044,17.2422);
    }
    case 10:
    {
    SetPlayerPos(playerid,766.0804,14.5133,1000.7004);
    }
    case 11:
    {
    SetPlayerPos(playerid,1154.2208,-1770.8203,16.5992);
    }
    case 12:
    {
    SetPlayerPos(playerid,-2040.9436,456.2395,35.1719);
    }
    case 13:
    {
    SetPlayerPos(playerid,-77.7288,-1136.3896,1.0781);
    }
    case 14:
    {
    SetPlayerPos(playerid,-1891.7045,-1699.3231,21.7500);
    }
    case 15:
    {
    SetPlayerPos(playerid,375.9512,-2054.5193,8.0156);
    }
    case 16:
    {
    SetPlayerPos(playerid,2104.4329,-1803.5864,13.5547);
    }


    }
    return 1;


    }



    Teleportiert sich nur zu 0 & 1



    bei den anderen passiert nix

    sscanf warning: Strings without a length are deprecated, please add a destination size.


    ocmd:setsname(playerid,params[])
    {
    new pid,name[128],getter[128];
    if(sscanf(params,"us", pid,name))
    {
    return SendClientMessage(playerid, COLOR_WHITE, "FEHLER: /setaname [playerid] [Funktion] ");
    }


    Befehl funktioniert, aber woher der warning?

    Du bekommst doch einen Fehler, zeig uns doch einfach mal die Zeile, wie du es bis jetzt machst.und das new PlayerInfo würde ich gern noch sehen

    new PlayerInfo[MAX_PLAYERS][pInfo];


    Ja und das ist der error:
    error 047: array sizes do not match, or destination array is too small


    Fehlerzeile: PlayerInfo[playerid][pFunktionName] = "namebeispiel";




    zu:strcat(PlayerInfo[playerid][pFunktionName], "namebeispiel", MAX_PLAYER_NAME);
    oder:
    format(PlayerInfo[playerid][pFunktionName], MAX_PLAYER_NAME, "namebeispiel");


    Was dir lieber ist.


    Wird das Enum dann auch Global gesetzt im Script also kann ichs dann auch abspeichern und


    in nem anderen public verwenden ?


    Desweiteren, zeig doch mal ganz genau wie du die Variable von dem enum deklariert hast und dann wie du den string deklariert hast, den du zuweisen willst und dann wie du es zuweist ^^


    Gib doch einfach ein wenig von deinem Code preis...oder sollen wir das alles erraten?! :D


    Also eigentlich möchte ich nur einen Namen auf pFunktionName[MAX_PLAYER_NAME] setzen


    enum pInfo
    {
    pFunktionName[MAX_PLAYER_NAME]
    };



    und dieser soll dann gespeichert werden per mysql (das hab ich schon gemacht, da gibts auch kein problem)



    PlayerInfo[playerid][pFunktionName] = "namebeispiel";



    Wenn nicht ohne einen string geht, dann halt den wert von


    PlayerInfo[playerid][pFunktionName]


    auf einen bestimmten string setzen (den ich noch nicht habe)

    Das kannst du genau so machen...Falls es nicht geht...zeige uns Code und erkläre was du vor hast ^^



    Das liegt daran, dass pPlayer immer 0 ist, sobald GetPlayerName aufgerufen wird, da du das vor dem sscanf aufrufst und erst ab dem sscanf aber pPlayer einen Wert zugewiesen bekommt ;)
    Die Lösung, einfach GetPlayerName unter das sscanf packen :)

    (16929) : error 047: array sizes do not match, or destination array is too smal
    enum pInfo
    { // so sieht der anfang vom enum aus
    pFunktionName[MAX_PLAYER_NAME] ( IM ENUM)


    Habs schon mit n paar größen probiert (512 z.B)