Neues Problem:
Wenn ich zum ersten mal den Befehl '/friends' eingebe, sehe ich ganz normal die User, die ich als Freunde eingetragen habe. Und nur einmal, wie das so sollte.
Gebe ich den Befehl aber zum zweiten mal ein, sehe ich die doppelt aufgelistet.
erste Eingabe:
Name: User1 (online)
Name: User2 (offline)
zweite Eingabe:
Name: User1 (online)
Name: User2 (offline)
Name: User1 (online)
Name: User2 (offline)
Und immer so weiter. Das ist echt ein merkwürdiges Problem..
Aber hier der Code:
Befehl /friends
COMMAND:friends(playerid, params[])
{
new query[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i", Spieler[playerid][pDBID]);
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", REQUEST_FRIEND_THREAD, playerid);
return 1;
}
Die Funktion 'OnPlayerRequestFriends
public OnPlayerRequestFriends(thread, playerid, Friend_ID)
{
switch(thread)
{
case THREAD_NO_RESULT:
{
return 1;
}
case ADD_FRIEND_THREAD:
{
new rows, fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows)
{
new
query[128],
szResult[64],
szFriendName[64],
FriendDBID;
for(new row; row < rows; row++) {
cache_get_field_content(row, "Name", szResult, MySqlConnection, sizeof(szResult)); szFriendName = szResult;
cache_get_field_content(row, "id", szResult, MySqlConnection, sizeof(szResult)); FriendDBID = strval(szResult);
SetPVarInt(playerid, "New_Friend_DBID", FriendDBID);
SetPVarString(playerid, "New_Friend_Name", szFriendName);
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i AND `FriendDBID` = %i", Spieler[playerid][pDBID], FriendDBID);
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", FINAL_FRIEND_THREAD, playerid);
return 1;
}
}
else {
SendClientMessage(playerid, WEISS, "Der Name existiert nicht.");
}
return 1;
}
case FINAL_FRIEND_THREAD:
{
new rows,
fields;
cache_get_data(rows, fields, MySqlConnection);
if(!rows) {
new query[128],
FriendName[MAX_PLAYER_NAME+1];
mysql_format(MySqlConnection, query, sizeof(query), "INSERT INTO `"#SQL_TAG"_account_friends` (`UserDBID`, `FriendDBID`) VALUES (%i, %i)", Spieler[playerid][pDBID], GetPVarInt(playerid, "New_Friend_DBID"));
mysql_function_query(MySqlConnection, query, false, "OnPlayerRequestFriends", "i", THREAD_NO_RESULT);
GetPVarString(playerid, "New_Friend_Name", FriendName, sizeof FriendName);
format(query, sizeof query, "Du hast %s zum Freund ernannt.", FriendName);
SendClientMessage(playerid, WEISS, query);
DeletePVar(playerid, "New_Friend_Name");
DeletePVar(playerid, "New_Friend_DBID");
return 1;
}
else {
SendClientMessage(playerid, WEISS, "Du hast bereits einen Freund mit diesem Namen.");
}
return 1;
}
case REQUEST_FRIEND_THREAD:
{
new rows,
fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows) {
new szResult[64];
for(new row; row < rows; row++) {
cache_get_field_content(row, "FriendDBID", szResult, MySqlConnection, sizeof(szResult));
new query[128];
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_main` WHERE `id` = %i", strval(szResult));
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriendNames", "ii", playerid, strval(szResult));
}
}
return 1;
}
}
return 1;
}
Die Funktion 'OnPlayerRequestFriendNames'
public OnPlayerRequestFriendNames(playerid, Friend_DBID, thread)
{
switch(thread)
{
case 0:
{
new rows, fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows) {
new
szPlayerName[MAX_PLAYER_NAME],
szTitle[64];
SetPVarInt(playerid, "Friend_DBID", Friend_DBID);
for(new row; row < rows; row++)
{
cache_get_field_content(row, "Name", szPlayerName, MySqlConnection, sizeof(szPlayerName));
foreach(Player, i) {
if(Spieler[i][pDBID] == Friend_DBID){
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {8BA870}(online)", szFriendList, szPlayerName);
}
else {
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {FF0000}(offline)", szFriendList, szPlayerName);
}
}
}
format(szTitle, sizeof szTitle, "%s's Freundesliste", SpielerName(playerid));
ShowPlayerDialog(playerid, DIALOG_FRIENDLIST, DIALOG_STYLE_LIST, szTitle, szFriendList, "Select", "Cancel");
}
}
case 1:
{