oke supi,
danke
oke supi,
danke
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
mh,
sieht so aus
Wie heißt denn diese seite wo man Codes Posten kann ?
Verwechsle den namen immer mit pinterest
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...
Forum ist seit gestern wieder on
Hast du einen grafikmod drin?
Sonst zu der map: Wirkt freundlich und offen, ein bisschen rötlich liegt aber vermutlich nicht an der map,
detailliert, 10 / 10
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?
Mir persönlich zu viele Fachworte und beispiele würden noch fehlen
cache_get_value_name(row, "spaltenname", dest);
Bei Arrays mit enums:
cache_get_value_name(row, "spaltenname", pInfo[playerid][Name], LAENGE_HIER_ANGEBEN);
super, danke
btw
Wie lade ich einen string bei mysql ?
Sollte halt so aussehen
cache_get_value_name_string
Danke an euch beide^^
Funktioniert mit format
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?!
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)
Wie setzte ich einen string auf ein Enum?
So bspw:
PlayerInfo[playerid][pFunktionName] = "fname";
Das einzige was mich ein bisschen stört ist das Bett oben und die leiter aus holz, sonst
Genug details, passende texturen
8/10