moin,
nach knapp einem Jahr hab ich mal wieder was mit pawn angefangen,
und zwar für SAMP.
Man merkt doch, man ist da zimlich rausgekommen in der Zwischenzeit :D.
Nun ja, zur Frage,
und zwar weiß ich nicht, ob ich da gerade einfach nur nen Logikfehler habe, den ich nicht bemerke oder so,
vielleicht findet ihr ja was ^^.
Im Endeffekt will ich ein MySQL Query in zwei Teile sliten, einem integer (der ID) und einem string.
Die Arrays, in den ich die Werte speicher, für jeden User werden 5 querys gespeichert, hier das oben im Skript:
[pwn]
new text[MAX_PLAYERS][5][128];
new IDs[MAX_PLAYERS][5];
[/pwn]
Hier habe ich nun einmal den String text, für jeden Spieler eben 5 Ememente (0-4) und das selbe nochmal mit einem Integer.
Hier nun die SQL Abfrage:
[pwn]
format(string, sizeof(string), "SELECT id, name FROM `%s` LIMIT 1,5", table);
mysql_query(string);
mysql_store_result();
[/pwn]
Nun habe ich soweit ja die beiden Werte,
Beispiels:
[pwn]
new querytext[128], id, i=0;
while(mysql_fetch_row(string)){
sscanf(string, "p<|>is[128]", id, querytext);
format(text[playerid], 128, querytext);
IDs[playerid][i] = id;
i++;
}
[/pwn]
hier erstelle ich also 3 variablen, den String querytext und die beiden integer id und i.
dann rattert die whileschleife durch (5 mal),
in jedem Durchgang wird die momentane Zeile gesplittet, einmal in den integer "id" und in den String "querytext".
dannach speicher ich den querytext in dem array "text[playerid][i]", also für den Spieler in dem gerade genutzten Element (0-4).
danach speicher ich den integer "id" in dem Array IDs des Spielers im jeweiligem Element (0-4).
zum Schluss erhöhe ich den Wert des Integers um 1.
soweit zum Code und der Theorie.
Den ganzen Kram habe ich mir natürlich dann auch mal ausgeben lassen in der Schleife:
[pwn]
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, ContentIDs[playerid][i]);
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, Contents[playerid][i]);
print(ContentIDs[playerid][i]);
print(Contents[playerid][i]);
[/pwn]
Die Ausgabe:
[pwn]
new test[6];
format(test, 6, ContentIDs[playerid][i]);
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, test);
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, Contents[playerid][i]);
print(test);
print(Contents[playerid][i]);
[/pwn]
Die Ausgabe hier:
das war zwar jetzt eine sehr lange Rede für einen sehr kurzen Sinn,
aber damit ihr euch ungefähr den Gedankengang vorstellen könnt ^^.
Ich sehe da so auf Anhieb keinen Fehler und dachte ich frage einfach mal,
dafür ist das Forum ja da.
Also falls wer eine Idee hat, bzw. ieinen Logkikfehler oder so entdeckt einfach mal antworten,
danke euch ^^.
Gruß,
Dennis
nach knapp einem Jahr hab ich mal wieder was mit pawn angefangen,
und zwar für SAMP.
Man merkt doch, man ist da zimlich rausgekommen in der Zwischenzeit :D.
Nun ja, zur Frage,
und zwar weiß ich nicht, ob ich da gerade einfach nur nen Logikfehler habe, den ich nicht bemerke oder so,
vielleicht findet ihr ja was ^^.
Im Endeffekt will ich ein MySQL Query in zwei Teile sliten, einem integer (der ID) und einem string.
Die Arrays, in den ich die Werte speicher, für jeden User werden 5 querys gespeichert, hier das oben im Skript:
[pwn]
new text[MAX_PLAYERS][5][128];
new IDs[MAX_PLAYERS][5];
[/pwn]
Hier habe ich nun einmal den String text, für jeden Spieler eben 5 Ememente (0-4) und das selbe nochmal mit einem Integer.
Hier nun die SQL Abfrage:
[pwn]
format(string, sizeof(string), "SELECT id, name FROM `%s` LIMIT 1,5", table);
mysql_query(string);
mysql_store_result();
[/pwn]
Nun habe ich soweit ja die beiden Werte,
Beispiels:
Nun ja ich will natürlich beides einzeln nutzen, daher splitte ich das mit sscanf, das ganze in einer Schleife:1|test
[pwn]
new querytext[128], id, i=0;
while(mysql_fetch_row(string)){
sscanf(string, "p<|>is[128]", id, querytext);
format(text[playerid], 128, querytext);
IDs[playerid][i] = id;
i++;
}
[/pwn]
hier erstelle ich also 3 variablen, den String querytext und die beiden integer id und i.
dann rattert die whileschleife durch (5 mal),
in jedem Durchgang wird die momentane Zeile gesplittet, einmal in den integer "id" und in den String "querytext".
dannach speicher ich den querytext in dem array "text[playerid][i]", also für den Spieler in dem gerade genutzten Element (0-4).
danach speicher ich den integer "id" in dem Array IDs des Spielers im jeweiligem Element (0-4).
zum Schluss erhöhe ich den Wert des Integers um 1.
soweit zum Code und der Theorie.
Den ganzen Kram habe ich mir natürlich dann auch mal ausgeben lassen in der Schleife:
[pwn]
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, ContentIDs[playerid][i]);
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, Contents[playerid][i]);
print(ContentIDs[playerid][i]);
print(Contents[playerid][i]);
[/pwn]
Die Ausgabe:
Da die ID nun ein Integer ist, habe ich den nochmal in einem string gesetzt:InGame:
KEINE
Test
CMD:
FEHLERHAFT (Sonderzeichen)
Test
[pwn]
new test[6];
format(test, 6, ContentIDs[playerid][i]);
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, test);
SendClientMessage(playerid, COLOR_DEBUG_MESSAGE, Contents[playerid][i]);
print(test);
print(Contents[playerid][i]);
[/pwn]
Die Ausgabe hier:
als im endeffekt bekomme ich die id nicht richtig raus,InGame:
KEINE
Test
CMD:
FEHLERHAFT (Sonderzeichen)
Test
das war zwar jetzt eine sehr lange Rede für einen sehr kurzen Sinn,
aber damit ihr euch ungefähr den Gedankengang vorstellen könnt ^^.
Ich sehe da so auf Anhieb keinen Fehler und dachte ich frage einfach mal,
dafür ist das Forum ja da.
Also falls wer eine Idee hat, bzw. ieinen Logkikfehler oder so entdeckt einfach mal antworten,
danke euch ^^.
Gruß,
Dennis