Werden die Namen denn ohne die Funktion angezeigt?
Übertragst du denn auch richtig die Namen in diese Variablen?
Werden die Namen denn ohne die Funktion angezeigt?
Übertragst du denn auch richtig die Namen in diese Variablen?
//edit hat sich erledigt rechtschreib fehler .D
Werden die Namen denn ohne die Funktion angezeigt?
Übertragst du denn auch richtig die Namen in diese Variablen?
Mei Fehler liegt wohl daran, das nichtmal OnPlayer Login aufgeufe wird.
Hier mein OnPlayerRequestClass
public OnPlayerRequestClass(playerid, classid)
{
if(IsPlayerNPC(playerid)) return 1;
if(!UserDaten[playerid][user_Eingeloggt])
{
new query[128];
mysql_format(handle, query, sizeof(query), "SELECT `user_id` FROM `user` WHERE `username` = '%e'", UserDaten[playerid][user_Name]);
mysql_pquery(handle, query, "OnUserCheck", "d", playerid);
ChatLoeschen(playerid,0);
SendClientMessage(playerid,WEISS,"Die Verbindung zum Server wird hergestellt");
SetPlayerPos(playerid, -2766.0786,375.2064,6.3347);
SetPlayerCameraPos(playerid, -2758.8291,374.4656,4.3381);
SetPlayerCameraLookAt(playerid, -2766.0786,375.2064,6.3347);
}
return 1;
}
Alles anzeigen
Hier mein OnUserCheck
{
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_MSGBOX, "{B90000}Austrian Roleplay {FFFFFF}- Serverinfo", "{FFFFFF}Um dich zu registrieren besuche bitte unsere Website {B90000}austrian-roleplay.at", "{FFFFFF}Ausloggen", "");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
}
return 1;
}
Alles anzeigen
Edit: Der Name wird jetzt ausgelsen, da sich das andere Problem erledigt hat.
Hallo habe ein Problem die ServerInfo wird in der Datenbank geupdatet aber nicht richtig er löscht denn vorhandenen servernamen weg und schreib garnix rein.
Hier wird ServerInfo[servername] auf Inputtext gesetzt im Print steht auch der Inputtext.
Aber sobald ich in SaveServerInfo | ServerInfo[servername] abfrage kommt im print nix raus.
if(dialogid == DIALOG_SERVERINFO_SERVERNAME)
{
if(response)
{
new input[30];
format(input,sizeof(input),"%s", inputtext);
ServerInfo[servername] = input[25];
printf("%s",input);
new log[120];
format(log,sizeof(log),"%s hat den Servernamen zu %s geändert", PlayerInfo[playerid][pName], input);
Log("Serververwaltung",log);
SaveServerInfo();
}
else
{
SCM(playerid,ROT,"Vorgang Abgebrochen!");
}
return 1;
}
stock SaveServerInfo()
{
new query[600];
printf("Vorher: %s",ServerInfo[servername]); //hier kommt nix
mysql_format(handle, query, sizeof(query), "UPDATE server_info SET servername = '%s',servertag = '%s',slogan = '%s',serverversion = '%s',scripter = '%s',inhaber = '%s',mapname = '%s',weburl = '%s',ucpurl = '%s',tsip = '%s'",
ServerInfo[servername],
ServerInfo[servertag],
ServerInfo[slogan],
ServerInfo[serverversion],
ServerInfo[scripter],
ServerInfo[inhaber],
ServerInfo[mapname],
ServerInfo[weburl],
ServerInfo[ucpurl],
ServerInfo[tsip]);
mysql_pquery(handle, query);
printf("nachher: %s",ServerInfo[servername]); // hier kommt nix
return query;
}
Hallo habe ein Problem die ServerInfo wird in der Datenbank geupdatet aber nicht richtig er löscht denn vorhandenen servernamen weg und schreib garnix rein.
Hier wird ServerInfo[servername] auf Inputtext gesetzt im Print steht auch der Inputtext.
Aber sobald ich in SaveServerInfo | ServerInfo[servername] abfrage kommt im print nix raus.
if(dialogid == DIALOG_SERVERINFO_SERVERNAME) { if(response) { new input[30]; format(input,sizeof(input),"%s", inputtext); ServerInfo[servername] = input[25]; printf("%s",input); new log[120]; format(log,sizeof(log),"%s hat den Servernamen zu %s geändert", PlayerInfo[playerid][pName], input); Log("Serververwaltung",log); SaveServerInfo(); } else { SCM(playerid,ROT,"Vorgang Abgebrochen!"); } return 1; }
stock SaveServerInfo(){ new query[600]; printf("Vorher: %s",ServerInfo[servername]); //hier kommt nix mysql_format(handle, query, sizeof(query), "UPDATE server_info SET servername = '%s',servertag = '%s',slogan = '%s',serverversion = '%s',scripter = '%s',inhaber = '%s',mapname = '%s',weburl = '%s',ucpurl = '%s',tsip = '%s'", ServerInfo[servername], ServerInfo[servertag], ServerInfo[slogan], ServerInfo[serverversion], ServerInfo[scripter], ServerInfo[inhaber], ServerInfo[mapname], ServerInfo[weburl], ServerInfo[ucpurl], ServerInfo[tsip]); mysql_pquery(handle, query); printf("nachher: %s",ServerInfo[servername]); // hier kommt nix return query;}
if(dialogid == DIALOG_SERVERINFO_SERVERNAME)
{
if(response)
{
new input[30];
format(input,sizeof(input),"%s", inputtext);
format(ServerInfo[servername], 25, "%s" inputtext);
printf("%s",input);
new log[120];
format(log,sizeof(log),"%s hat den Servernamen zu %s geändert", PlayerInfo[playerid][pName], input);
Log("Serververwaltung",log);
SaveServerInfo();
}
else
{
SCM(playerid,ROT,"Vorgang Abgebrochen!");
}
return 1;
}
So vllt?
//edit neuer fehler
error #1064 while executing query "UPDATE server_info SET servername = 'Selfmade Reallife',servertag = '[XYZ]',slogan = 'Das ist mein Server Slogan',serverversion = 'XYZ v0.1',scripter = 'RooT',inhaber = 'RooT',mapname = 'San Andreas',weburl = 'www.Selfmade-Reallife.de',ucpurl = 'ucp.Selfmade-Reallife.de',tsip = 'ts.Selfmade-Reallife.de',noobX = '0.000000',noobY = '0.000000',noobZ = '0.000000',": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
stock SaveServerInfo()
{
new query[600];
printf("Vorher: %s",ServerInfo[servername]);
mysql_format(handle, query, sizeof(query), "UPDATE server_info SET servername = '%s',servertag = '%s',slogan = '%s',serverversion = '%s',scripter = '%s',inhaber = '%s',mapname = '%s',weburl = '%s',ucpurl = '%s',tsip = '%s',noobX = '%f',noobY = '%f',noobZ = '%f',",
ServerInfo[servername],
ServerInfo[servertag],
ServerInfo[slogan],
ServerInfo[serverversion],
ServerInfo[scripter],
ServerInfo[inhaber],
ServerInfo[mapname],
ServerInfo[weburl],
ServerInfo[ucpurl],
ServerInfo[tsip],
ServerInfo[noobX],
ServerInfo[noobY],
ServerInfo[noobZ]);
mysql_pquery(handle, query);
printf("nachher: %s",ServerInfo[servername]);
return query;
}
Ein Komma am Ende des Querys zu viel würd ich sagen
Neues Problem .
Nur ServerInfo[noobX] wird im Dialog angezeigt.
new string[150];
format(string,sizeof(string),"Aktueller Noob Spawn: %f, %f, %f \n\nMöchtest du hier die Neue Spawnposition haben ?", ServerInfo[noobX], ServerInfo[noobY], ServerInfo[noobZ]); // Hier im Dialog wird nur ServerInfo[noobX] angezeigt.
SPD(playerid,DIALOG_SERVERINFO_NOOBPOS,DIALOG_STYLE_MSGBOX,"Serververwaltung: Inhaber",string,"Ja","Nein");
Zeig mal wie du ServerInfo[noobX] etc. einen Float zuweist (+ die Erstellung der Float Variablen).
Wird nur nicht Angezeit aber wird in die DB eingetragen.
[b]enum[/b] sDataEnum
{
servername[25],
servertag[6],
slogan[30],
serverversion[10],
scripter[MAX_PLAYER_NAME],
inhaber[MAX_PLAYER_NAME],
mapname[15],
weburl[25],
ucpurl[25],
tsip[35],
Float:noobX[15],
Float:noobY[15],
Float:noobZ[15]
}
[b]new[/b] ServerInfo[sDataEnum];
[b]if[/b](dialogid == DIALOG_SERVERINFO_NOOBPOS)
{
[b]if[/b](response)
{
[b]new[/b] Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
ServerInfo[noobX] = Pos[0];
ServerInfo[noobY] = Pos[1];
ServerInfo[noobZ] = Pos[2];
printf("%f %f %f",ServerInfo[noobZ],ServerInfo[noobZ],ServerInfo[noobZ]);
[b]new[/b] log[120];
format(log,sizeof(log),"%s hat die Nobbspawn Position zu %f,%f,%f geändert", PlayerInfo[playerid][pName], Pos[0], Pos[1], Pos[2]);
Log("Serververwaltung",log);
SaveServerInfo();
}
[b]else[/b]
{
SCM(playerid,ROT,"Vorgang Abgebrochen!");
}
[b]return[/b] 1;
}
In der Enum die [15] hinter den Floats löschen.
In der Enum die [15] hinter den Floats löschen.
Hat leider nix gebracht.
Bin selber am rätzeln
Bin zwar nicht wirklich erfahren aber versuch mal folgendes im Dialog
Wird nur nicht Angezeit aber wird in die DB eingetragen.
Pls Lesen dann Antworten sry das ich das sage aber es nervt.
Ich habs gelesen, nur ist da vllt. ein Unterschied zwischen SQL und dem Enum. Wie gesagt bin ich nicht sehr erfahren, möchte aber trotzdem gern meine Lösungsideen äußern. Viellecht ist die Zeile auch zu lang, wenn alle drei angezeigt werden müssen, weshalb es den Rest abscheidet.
an zu lang liegt es nicht habe den String auch vergrößert und habe es auch nicht mit noobX noobY noobZ versucht
Moin!
Ich möchte bim Login prüfen ob der Name stimmt, damit man ihn ansonsten ändern an im dialog. wie mache ich das am besten?
Folgenderr Lösungsansatz klappt keider icht.
if(!response)return Kick(playerid);
if(!strfind(inputtext,UserDaten[playerid][user_Name]))
{
SendClientMessage(playerid,ROT,"Der angegebene Name ist falsch");
return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_INPUT, "{FFFFFF}Anmeldung", "{FFFFFF}Gib bitte deinen OOC Namen ein.", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
}
return 1;
Danke im Voraus
Allrounder18
Edit: Habs jetzt folgendermaßen gelöst.
if(!response)return Kick(playerid);
if(strfind(inputtext,UserDaten[playerid][user_Name]) !=UserDaten[playerid][user_Name])
{
SendClientMessage(playerid,ROT,"Der angegebene Name ist falsch");
return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_INPUT, "{FFFFFF}Anmeldung", "{FFFFFF}Gib bitte deinen OOC Namen ein.", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
}
else
{
return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_INPUT, "{FFFFFF}Anmeldung", "{FFFFFF}Gib bitte deinen OOC Namen ein.", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
}
return 1;
Alles anzeigen
Jetzt sagt er mir unreachable Code bei return 1; und "Dieser Name ist falsch" obwohl ich ihn gleich beim ersten mal richtig eingeb. Woran liegt das?
Alles anzeigenif(!response)return Kick(playerid);
if(strfind(inputtext,UserDaten[playerid][user_Name]) !=UserDaten[playerid][user_Name])
{
SendClientMessage(playerid,ROT,"Der angegebene Name ist falsch");
return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_INPUT, "{FFFFFF}Anmeldung", "{FFFFFF}Gib bitte deinen OOC Namen ein.", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
}
else
{
return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_INPUT, "{FFFFFF}Anmeldung", "{FFFFFF}Gib bitte deinen OOC Namen ein.", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
}
return 1; Jetzt sagt er mir unreachable Code bei return 1; und "Dieser Name ist falsch" obwohl ich ihn gleich beim ersten mal richtig eingeb. Woran liegt das?
mach das return1; weg. Ist eben wie der Compiler schon sagt "unreachable code" => Der Code wird nicht erreicht.
Du hast eine if -else Verzweigung wo in beiden Fällen ein return stattfindet somit kann das statement am ende "return 1"; nicht erreicht werden. Entweder im ersten Codeblock oder im zweiten wird bereits returned.
Dies habe ich gemacht, jedoch kommt immer noch "Dieser Name ist falsch".
Wieso überhaupt strfind?
Mach das:
zu dem:
DAmit vergleichst du zwei Strings Miteinander. Sollten die nicht gleich sehen geht er in den Block ansetzten in den Else Zweig