Nein, das ist die Funktion um abzufragen wie viele Punkte der Spieler braucht um das nächste Level zu erreichen.
Beiträge von Jeffry
-
-
Hast du deinen Gamemode mit den neusten Includes vom MapAndreas Plugin kompiliert? Wenn nein, mach das.
-
Ja, da steht ja auch Level:
Spieler[playerid][pLevel] ++;Wenn du Respektpunkte vergeben willst muss es anstatt pLevel eben pRespekt oder pRespektPunkte heißen, oder sonstwas, ich weiß ja nicht wie deine Variable heißt. Das musst du schon selbst wissen.

-
Das machste dann einfach so:
DatenbankErstellen()
{
//HIER OBEN IST ORGINAL !
new query[512];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar(30), `password` varchar(130) NOT NULL, `admin` int(10),");
format(query, sizeof(query), "%s`member` int(10), `leader` int(10), `rank` int(10),`fraktion` int(11),`skin` int(11),`level` int(11),`money` int(10),`autoschein` int(11) NOT NULL default '0')", query);
mysql_query(MysqlVerbindung, query, false);
return 1;
}Von den Ressourcen ist es optimal.
-
Heißt also, die 1 von bdInfo verweist auf Index 1 (= 2. Zeile) von bsInfo? So sollte es nämlich sein.
Und die 1 ist im enum das: bdInfo[b][bdID] ? -
Nein.
stock PayDay(playerid)
{
new string[128];
Spieler[playerid][pPayDay] ++;
if(Spieler[playerid][pPayDay] >= 3600)
{
new Lohn;
new steuerGeld;
new fraktGehalt;
Spieler[playerid][pPayDay] = 1;
//==== H I E R ====== !!!!
Spieler[playerid][pLevel] ++;
//==== H I E R ====== !!!!
switch(Spieler[playerid][pFraktion])
{ -
Und wo lag sein Problem?
Im zweiten Query hat
gefehlt.Ich habe beide Queries zusammengefügt, das ist besser, da nur eine Anfrage gesendet wird, und die WHERE Anweisung nach unten geholt.
-
Dann wird es wohl doch das R7 sein, auch wenn du sagst damit geht es nicht. Welche Fehler bekommst du denn damit?
-
Deshalb hast du ja nachzählen sollen...
Schreibe es so:
format(query,sizeof query,"`pFrakSperre`='%d',`pBoxMats`='%d',`pBoxDrugs`='%d',`pban`='%d',`pTot`='%d',`pFarmTime`='%d',`pGDeaths`='%d',`pGKills`='%d',`pMeldung`='%d' WHERE `name`='%s'",
PlayerInfo[playerid][pFrakSperre],PlayerInfo[playerid][pBoxMats],PlayerInfo[playerid][pBoxDrugs],PlayerInfo[playerid][pban],PlayerInfo[playerid][pFarmTime],PlayerInfo[playerid][pTot],PlayerInfo[playerid][pGDeaths],PlayerInfo[playerid][pGKills],PlayerInfo[playerid][pMeldung],pname);
strcat(stringzusammen,query);
strdel(query,0,sizeof(query));PlayerInfo[pTot][pFarmTime]
war nicht richtig. -
Wieso ist die "fremdID" immer 1?
-
Du musst die Werte in einem Query zwischen zwei (wie die auch immer heissen) ' packen.
Nein, das wird bei Integers nicht zwingend benötigt. Schadet zwar nicht (wobei es bei Access schadet, aber egal), muss aber bei MySQL nicht zwingend vorhanden sein. Bei strings (%s) jedoch muss es dran sein. -
Du musst es natürlich nach der Abfrage ob 3600 Sekunden = 1 Stunde vorbei ist einfügen, am besten nach der Zeile:
Spieler[playerid][pPayDay] = 1; -
@Azcaq: Da fehlt trotzdem die WHERE Anweisung.
Schreibe es so:
SpielerdatenUpdate(playerid)
{
if(SpielerInfo[playerid][Spielereingeloggt] == false) return 0;
SpielerInfo[playerid][Level] = GetPlayerScore(playerid);new query[512];
mysql_format(MysqlVerbindung, query, sizeof(query), "UPDATE `players` SET `money` = '%d',`admin` = '%d',`member` = '%d',`leader` = '%d',`rank` = '%d',`fraktion` = '%d',`skin` = '%d',`level` = '%d',",
SpielerInfo[playerid][Money],SpielerInfo[playerid][Admin],SpielerInfo[playerid][Member],SpielerInfo[playerid][Leader],SpielerInfo[playerid][Rank],SpielerInfo[playerid][Fraktion],SpielerInfo[playerid][Skin],SpielerInfo[playerid][Level]);mysql_format(MysqlVerbindung, query, sizeof(query), "%s`autoschein`='%d' WHERE `id` = '%d' LIMIT 1", query,
SpielerInfo[playerid][Autoschein],SpielerInfo[playerid][ID]);
mysql_tquery(MysqlVerbindung, query, "", "");
return 1;
} -
pMeldung soll bestimmt auch nicht 91 sein.
Dann hast du einen Platzhalter mehr (%s/%d/...) als Variablen in den Parametern. Zähle da mal nach, da fehlt irgendwo einer. -
Das MySQL Plugin welches du benötigst ist wahrscheinlich das R5 oder das R6, nicht das R39-2.
Außerdem fehlt dir das MapAndreas Plugin. -
GivePlayerMoney(playerid,sInfo[playerid][geld] - input);
zu:
GivePlayerMoney(playerid,-input);EDIT:
Und wahrscheinlich auch:
sInfo[playerid][karte] += input;
zu:
sInfo[playerid][karte] -= input; -
Unter die Includes:
new befehlSperre[MAX_PLAYERS];Im Befehl:
if(befehlSperre[playerid] > gettime()) return SendClientMessage(playerid, 0xFF0000FF, "Du kannst den Befehl noch nicht verwenden.");
befehlSperre[playerid] = gettime() + (60*MINUTEN_DIE_ER_GESPERRT_SEIN_SOLL);Anstatt des Arrays könntest du auch PVars nutzen.
Andernfalls, aber das ist die weniger schöne Variante, wäre es mit Timern (http://wiki.sa-mp.com/wiki/SetTimerEx) zu arbeiten.
-
Du hast ja nur eine Zeile pro Spieler, also ändere:
while(mysql_fetch_row_format(string,"|"))
zu:
mysql_fetch_row_format(string,"|");oder füge nach mysql_free_result(); ein return 1; ein.
Bei SavePlayer einfach das mysql_free_result(); weg machen, da du kein result gespeichert hast (mysql_store_result wird ja in SavePlayer nicht aufgerufen).
-
Ja, das musst du im PayDay(playerid) public einfügen, wenn ein Spieler einen PayDay bekommt. Je nach dem wie deine Variable heißt, musst du das pRespektPunkte anpassen.
-
Ja soweit verstanden also bei Jeden Befehl muss ich das einfügen das das nur admins können und ab welchen level?
Ja. Da es bei jedem Befehl ein unterschiedliches Level sein kann, muss es bei jedem Befehl explizit angegeben werden.