Guten Mitternacht liebe Breadfish Gemeinschaft,
bin gerade dabei ein dynamisches Navigationssystem zur entwickeln, darunter darf man sich
vorstellen, dass man Kategorien erstellen, bearbeiten und löschen kann, nicht nur das sondern
auch Routen erstellen, bearbeiten und löschen kann, allerdings hab ich das Problem, dass sich
die Datensätze von der Navigationspunkte Tabelle mit der dazugehörige Kategorie die in der Db
als Datensatz gespeichert ist nicht im Spiel angezeigt wird, natürlich braucht man auch die
Navigationskategorie Tabelle, aber da liegt kein Fehler vor, da alles perfekt ausgegeben wird.
Mein Vorhaben wäre, wenn ich z.b. die Kategorie "Behörden" auswähle, dann in einem neuen Dialog
alle Navigationspunkte angezeigt werden die der Kategorie "Behörden" entsprechen. Ein Anliegen
wäre da noch und zwar wird auf mysteriöse Art und Weise den Namen des jeweiligen Charakters
nicht ausgegeben, was seltsam ist.
Der Code vom Navigationssystem:
ocmd:navi(playerid, params[])
{
mysql_query(handle, "SELECT * FROM "NG_Table" ORDER BY `NGID` DESC");
if(!cache_num_rows())return print("- Es wurden keine Navigationskategorien gefunden!"), ShowPlayerDialog(playerid, D_ERR_MSG, DIALOG_STYLE_MSGBOX, "{FFFFFF}["Servertag"] Navigationssystem", "{FF0000}Es sind keine Navigationskategorien in der Datenbank vorhanden.", "", "Schließen");
new id, string[1024];
format(string, sizeof(string), "{FFFFFF}Kategorie:\t{FFFFFF}Beschreibung:\n");
for(new i; i < cache_num_rows(); i++) {
cache_get_value_name_int(i, "NGID", id);
cache_get_value_name(i, "Genname", nG_Info[id][nG_Name], 24);
cache_get_value_name(i, "Gendescr", nG_Info[id][nG_Descr], 24);
Iter_Add(navGenres, id);
}
foreach(new i : navGenres)
format(string, sizeof(string), "%s\n%s\t%s\n", string, nG_Info[i][nG_Name], nG_Info[i][nG_Descr]);
ShowPlayerDialog(playerid, D_NAVI, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}["Servertag"] Navigationssystem", string, "Weiter", "Abbruch");
return 1;
}
// OnDialogResponse
case D_NAVI:
{
if(!response)return ListClickID[playerid] = -1;
ListClickID[playerid] = listitem+1;
new query[128];
mysql_format(handle, query, sizeof(query), "SELECT * FROM "NP_Table" ORDER BY `NID` DESC WHERE GenId = '%d'", ListClickID[playerid]);
mysql_query(handle, query);
if(!cache_num_rows())return print("- Es wurden keine Navigationspunkte gefunden!")/*, SendErrorMessage(playerid, "")*/;
new id, headstr[48];
format(headstr, sizeof(headstr), "{FFFFFF}"Servertag" Navigationssystem -> %s", nG_Info[ListClickID[playerid]][nG_Name]);
format(string, 64, "{FFFFFF}Ortsname:\n");
for(new i; i < cache_num_rows(); i++) {
cache_get_value_name_int(i, "NID", id);
cache_get_value_name(i, "Naviname", nP_Info[id][nP_Name], 24);
cache_get_value_name_float(i, "PosX", nP_Info[id][nP_PosX]);
cache_get_value_name_float(i, "PosY", nP_Info[id][nP_PosY]);
cache_get_value_name_float(i, "PosZ", nP_Info[id][nP_PosZ]);
cache_get_value_name_int(i, "mIcon", nP_Info[id][nP_mIcon]);
Iter_Add(navPoints, id);
}
foreach(new i : navGenres)
format(string, sizeof(string), "%s\n%s\n", string, nP_Info[i][nP_Name]);
if(!id) ShowPlayerDialog(playerid, D_ERR_MSG, DIALOG_STYLE_MSGBOX, "{FFFFFF}["Servertag"] Navigationssystem", "{FF0000}Es sind keine Navigationspunkte in der Datenbank vorhanden.", "", "Schließen");
ShowPlayerDialog(playerid, D_NAVI_SELECTED, DIALOG_STYLE_TABLIST_HEADERS, headstr, string, "Navigieren", "Zurück");
return 1;
}
case D_NAVI_SELECTED:
{
if(!response)return ListClickID[playerid] = -1, ocmd_navi(playerid, "");
SetPlayerCheckpoint(playerid, nP_Info[ListClickID[playerid]][nP_PosX], nP_Info[ListClickID[playerid]][nP_PosY], nP_Info[ListClickID[playerid]][nP_PosZ], 3.0);
format(string, sizeof(string), "Navi:{FFFFFF} Ihre gewünschte Route wird berechnet.. "HEX_RED"Ziel:"HEX_WHITE" %s", nP_Info[ListClickID[playerid]][nP_Name]);
SCM(playerid, COLOR_RED, string);
ListClickID[playerid] = -1;
return 1;
}
Alles anzeigen
Die Funktion der Charakternamen Ausgabe & der Befehl dazu:
ocmd:stats(playerid)
{
new string[512];
mysql_format(handle, string, sizeof(string), "SELECT Betrag FROM `kontos` WHERE `Besitzer_ID` = '%d'", cInfo[playerid][c_DBID]);
mysql_query(handle, string);
new tempVar, k_Bilanz, Bargeld;
cache_get_value_name_int(0, "Betrag", tempVar);
k_Bilanz = tempVar;
Bargeld = cInfo[playerid][c_Geld];
if(!cInfo[playerid][c_Logged])return SendErrorMessage(playerid, "Du musst dafür eingeloggt sein!");
format(string, sizeof(string), "{FF0000}[Allgemein]{FFFFFF}\n\nName: %s\nTeam-Status: %s\nLevel: %d\nRespektpunkte: %d/%d\nZeit bis PayDay: %d Minuten\nMorde: %d\nTode: %d\n\n{FF0000}[Vermögen/Besitztum]{FFFFFF}\n\nBargeld: %d\nKonto Bilanz: %d\nHausschlüssel: %d\n\n{FF0000}[Beruf/Fraktion]{FFFFFF}\n\nFraktion: %s\nRang: %s (%d)",
cInfo[playerid][c_Name], GetAdminRang(playerid), cInfo[playerid][c_Level], cInfo[playerid][c_Respektpunkte], cInfo[playerid][c_Level] * 4, cInfo[playerid][c_Zeit_PayDay], cInfo[playerid][c_Morde], cInfo[playerid][c_Tode], Bargeld, k_Bilanz, cInfo[playerid][c_houseKey], fInfo[cInfo[playerid][c_Fraktion]][f_Name], GetFraktionsRang(playerid), cInfo[playerid][c_Rang]);
ShowPlayerDialog(playerid, _D_STATS, DIALOG_STYLE_MSGBOX, "{FFFFFF}Statistiken", string, "{FFFFFF}Schließen", "");
return 1;
}
stock CharakterName(playerid)
{
new Name[32];
format(Name, sizeof(Name), "%s", cInfo[playerid][c_Name]);
return Name;
}
Alles anzeigen
Ps: Falls die Codeabschnitte nicht ausreichen sollten, um den Fehler zur finden, dann schreibt drunter.
Ich hab bisher noch nie mit ner doppelten Auslesung und das mergen gearbeitet, deshalb in dieser Sache unerfahren.
Mit freundlichem Gruß,
Szertockz