Also eine art Live-Übertragung auf die Tafel? Das ist leider nicht möglich.
Beiträge von SLaYz
-
-
Was sagt dein MySQL Log?
-
ich biete auch die 20€
-
Ich mache es dir am besten ganz Neu ohne Dialogid
-
setzt du die Variabel pSetFarbe auf true?
-
Ich steh gerade auf dem Schlauch... wie kann ich Fraktionsnamen im einem switch definieren und dann in den Stock FraktionName(fID) einbauen?
so ca:
stock GetFactionRanks(f, Rank)
{
new str[40];
switch(Rank)
{
case 0: format(str, sizeof(str), "---");
case 1: format(str, sizeof(str), "%s", cF->fRank1[f]);
case 2: format(str, sizeof(str), "%s", cF->fRank2[f]);
case 3: format(str, sizeof(str), "%s", cF->fRank3[f]);
case 4: format(str, sizeof(str), "%s", cF->fRank4[f]);
case 5: format(str, sizeof(str), "%s", cF->fRank5[f]);
case 6: format(str, sizeof(str), "%s", cF->fRank6[f]);
case 7: format(str, sizeof(str), "%s", cF->fRank7[f]);
}
return str;
} -
Das ist alles was im Log steht?
-
Poste mal deinen aktuellen MySQL Log.
-
Okay, dann entferne mal das strval(level) und ersetze es durch level
-
dcmd_setadmin(playerid, params[])
{
new pID, Level, string[100], playername[MAX_PLAYER_NAME];
if(sSpieler[playerid][Adminlevel] != 5) return SendClientMessage(playerid, 0xC8C8C8FF, "Dein Adminlevel reicht nicht aus, um diesen Befehl zu benutzen.");
if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid, 0xC8C8C8FF, "Tippe: /setadmin [Spielername / ID] [Adminlevel 0-5]");
if(Level < 0 || Level > 5) return SendClientMessage(playerid, 0xC8C8C8FF, "Das Adminlevel muss zwichen 0 [Uninvite] und 5 liegen.");
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
format(string, sizeof(string), "* %s hat dir das Adminlevel %d zugewiesen.", playername, Level);
SendClientMessage(pID, 0xC8C8C8FF, string);
GetPlayerName(pID, playername, MAX_PLAYER_NAME);
format(string, sizeof(string), "* Du hast %s das Adminlevel %d zugewiesen.", playername, Level);
SendClientMessage(playerid, 0xC8C8C8FF, string);
sSpieler[pID][Adminlevel] = Level;
return 1;
}
Sollte gehen^^ hatte ein Groß/Klein Fehler drin. -
dcmd_setadmin(playerid, params[])
{
new pID, level, string[100], playername[MAX_PLAYER_NAME];
if(sSpieler[playerid][Adminlevel] != 5) return SendClientMessage(playerid, 0xC8C8C8FF, "Dein Adminlevel reicht nicht aus, um diesen Befehl zu benutzen.");
if(sscanf(params, "ud", pID, level)) return SendClientMessage(playerid, 0xC8C8C8FF, "Tippe: /setadmin [Spielername / ID] [Adminlevel 0-5]");
if(strval(Level) < 0 || strval(Level) > 5) return SendClientMessage(playerid, 0xC8C8C8FF, "Das Adminlevel muss zwichen 0 [Uninvite] und 5 liegen.");
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
format(string, sizeof(string), "* %s hat dir das Adminlevel %d zugewiesen.", playername, Level);
SendClientMessage(pID, 0xC8C8C8FF, string);
GetPlayerName(pID, playername, MAX_PLAYER_NAME);
format(string, sizeof(string), "* Du hast %s das Adminlevel %d zugewiesen.", playername, Level);
SendClientMessage(playerid, 0xC8C8C8FF, string);
sSpieler[pID][Adminlevel] = strval(Level);
return 1;
} -
Versuch es mal so:
dcmd_setadmin(playerid, params[])
{
new pID, level, string[100], playername[MAX_PLAYER_NAME];
if(sSpieler[playerid][Adminlevel] != 5) return SendClientMessage(playerid, 0xC8C8C8FF, "Dein Adminlevel reicht nicht aus, um diesen Befehl zu benutzen.");
if(sscanf(params, "ud", pID, level)) return SendClientMessage(playerid, 0xC8C8C8FF, "Tippe: /setadmin [Spielername / ID] [Adminlevel 0-5]");
if(strval(Level) < 0 || strval(Level) > 5) return SendClientMessage(playerid, 0xC8C8C8FF, "Das Adminlevel muss zwichen 0 [Uninvite] und 5 liegen.");
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
format(string, sizeof(string), "* %s hat dir das Adminlevel %d zugewiesen.", playername, Level));
SendClientMessage(pID, 0xC8C8C8FF, string);
GetPlayerName(pID, playername, MAX_PLAYER_NAME);
format(string, sizeof(string), "* Du hast %s das Adminlevel %d zugewiesen.", playername, Level);
SendClientMessage(playerid, 0xC8C8C8FF, string);
sSpieler[pID][Adminlevel] = strval(Level);
return 1;
} -
-
ist ein Klammerfehler. Zähl mal due { und } Klammern
-
Mann sollte eine Hide-Reply Funktion einbauen. Oder Hide-Thanks. So ist man gezwungen sich zu Bedanken um was zu Sehen
-
Hier auch mal mit Escaped Strings von der Query aus.
stock SaveFraktion(fID)
{
new query[800], miniquery[600], string[150];
new count = GetTickCount();
format(miniquery, sizeof(miniquery), "UPDATE `frakinfo` SET `Geld` = '%d', `Drogen` = '%d', `Mats` = '%d', `Gehalt0` = '%d', `Gehalt1` = '%d', `Gehalt2` = '%d', `Gehalt3` = '%d', `Gehalt4` = '%d', `Gehalt5` = '%d',`Gehalt6` = '%d',",
FrakInfo[fID][fGeld], FrakInfo[fID][fDrogen], FrakInfo[fID][fMaterials], FrakInfo[fID][fGehalt0], FrakInfo[fID][fGehalt1], FrakInfo[fID][fGehalt2], FrakInfo[fID][fGehalt3], FrakInfo[fID][fGehalt4], FrakInfo[fID][fGehalt5], FrakInfo[fID][fGehalt6]);
mysql_function_query(sqlHandle, miniquery, false, "QueryMeldung", "");
format(miniquery, sizeof(miniquery), "%s `RangName0` = '%e', `RangName1` = '%e', `RangName2` = '%e',`RangName3` = '%e',`RangName4` = '%e', `RangName5` = '%e', `RangName6` = '%e', `LongName` = '%e', `SmallName` = '%e', `MitgliederLimit` = '%d', `Status` = '%d', `BewerbungsStatus` = '%d', `PayDayPunkte` = '%d' WHERE fID = '%d'",
miniquery,FrakInfo[fID][fRangName0],FrakInfo[fID][fRangName1],FrakInfo[fID][fRangName2],FrakInfo[fID][fRangName3],FrakInfo[fID][fRangName4],FrakInfo[fID][fRangName5],FrakInfo[fID][fRangName6], FrakInfo[fID][fLongName], FrakInfo[fID][fSmallName], FrakInfo[fID][fMitgliederLimit], FrakInfo[fID][fStatus], FrakInfo[fID][fBewerbungsStatus], FrakInfo[fID][fPayDayPunkte], fID);
mysql_function_query(sqlHandle, miniquery, false, "QueryMeldung", "");
format(string, sizeof(string), "[MySQL] Die Fraktionsinformationen von Fraktions ID %d wurde mit einer Geschwindigkeit von %d Millisekunden gespeichert!", fID, GetTickCount() - count);
SendMySQLMessage(string);
UpdateFraktionsSchild(fID);
return 1;
} -
Bei deiner ersten Miniquery, hast du am Ende ein Komma was da nicht sein Sollte. Des weiteren werden dann ALLE Datensätze gleich gesetzt da du keinen eindeutigen Eintrag einen Wert geben willst.
Du nutzt auch die MySQL R31+ anscheinend. Dann brauchst du deine Rangnamen nicht selbst Escapen sonder kannst in der Query %e anstatt %s nehmen, dann Escaped er die selbst.
-
Ist es schlimm, wenn du SSCANF und einen anderen Commandprozessor benutzen würdest?
Es wäre dann übersichtlicherBeispiel:
ocmd:newbiz(playerid, params[])
{
new price, businessname[30], Float:Pos[3], query[130];
if(!IsPlayerAdmin(playerid) || PlayerInfo[playerid][ALeve] == 0) return SendClientMessage(playerid, -1, "Dieser Befehl ist nur für Admins!");
if(PlayerInfo[playerid][ALevel] == 1) return SendClientMessage(playerid, -1, "Supporter sind nur für Supports da!");
if(sscanf(params, "ds[30]", price, businessname)) return SendClientMessage(playerid, -1, "Tippe: /newbiz [Preis] [Business Name]");
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
ladebize++;
format(query, sizeof(query), "INSERT INTO biz (id, name, besitzer, x, y, z, kostet) VALUES (%d, '%s', 'Niemand', %f, %f, %f, %d", ladebize, businessname, Pos[0], Pos[1], Pos[2], price);
mysql_query(query);
return 1;
} -
Der geht nur als Rcon-Admin. Die Texte, das man als Supporter nur Supporten kann und so sollten kommen.
Entscheidend ist diese Abfrage:
if(IsPlayerAdmin(playerid)) -
Das ist Super! Dann am besten das Thema als Erledigt makieren, und Spaß mit deinem Script haben
Solltest du noch Probleme haben, kannst du gern ein neues Thema erstellen.