mhh das währe ziemlich Aufwändig und da ist dann wieder das Problem mit der Abfrage, ob OK gedrückt wurde, dass das dann weggeht.
Habs jetzt gelöst, indem ich mehrere einzelne Dialoge gemacht habe!
Beiträge von virtualmarc
-
-
Also es sieht momentan so aus:
ShowPlayerDialog(playerid, 7, DIALOG_STYLE_MSGBOX, "Grundgesetz", "Dies ist das Grundgesetz von San Andreas.\
Das Grundgesetz und die anderen Gesetze können jederzeit mit /gesetzbuch abgerufen werden.\nGesetze:\n\
§1: Das Cheaten ist strengstens untersagt. Cheater werden mit einem lebenslänglichen Ban bestraft.\n\
§2: Death Matching ist ohne Erlaubnis eines Admins strengstens verboten!\n§3: Jedes Menschenleben ist kostbar!\
Daher wird das töten anderer Personen mit einer Freiheisstrafe geahndet.\n\
§4: Es muss sich an alle weiteren Gesetzen gehalten werden, vor allem an die Straßenverkehsverordnung.\n\
§5: Das beleidigen anderer Personen wird mit einer Freiheitsstrafe geahndet.\n\
§6: Wenn man umgebracht oder überwallen worden ist oder einen Mord oder Überfall beobachtet hat,\
melde diesen bei der Polizei.Fertige, wenn möglich, einen Screenshot als Beweis an.", "OK", "Abbrechen"); -
bringt nix, jetzt kommt wieder:
ZitatF:\SA-MP\rlneu\gamemode.pwn(982) : error 075: input line too long (after substitutions)
F:\SA-MP\rlneu\gamemode.pwn(983) : error 037: invalid string (possibly non-terminated string)
F:\SA-MP\rlneu\gamemode.pwn(983) : error 017: undefined symbol "Dies"
F:\SA-MP\rlneu\gamemode.pwn(983) : error 017: undefined symbol "ist"
F:\SA-MP\rlneu\gamemode.pwn(983) : fatal error 107: too many error messages on one lineIch habe aber auch schon Server gesehen, die so lange Nachrichten im Dialog hatten ...
-
Kürzer gehts leider nicht, aber wenn ich zwischendurch Zeilenumbrüche einfüge, ist die 1. Fehlermeldung weg!
Dann kommt nurnoch:ZitatF:\SA-MP\rlneu\gamemode.pwn(978) : error 037: invalid string (possibly non-terminated string)
F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "Dies"
F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "ist"
F:\SA-MP\rlneu\gamemode.pwn(978) : fatal error 107: too many error messages on one line -
Ich habe ein kleines Problem mit dem ShowPlayerDialog.
Und zwar bekomme ich folgenden Fehler:
ZitatF:\SA-MP\rlneu\gamemode.pwn(977) : error 075: input line too long (after substitutions)
F:\SA-MP\rlneu\gamemode.pwn(978) : error 037: invalid string (possibly non-terminated string)
F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "Dies"
F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "ist"für folgende Zeile:
ShowPlayerDialog(playerid, 7, DIALOG_STYLE_MSGBOX, "Grundgesetz", "Dies ist das Grundgesetz von San Andreas.Das Grundgesetz und die anderen Gesetze können jederzeit mit /gesetzbuch abgerufen werden.\nGesetze:\n§1: Das Cheaten ist strengstens untersagt. Cheater werden mit einem lebenslänglichen Ban bestraft.\n§2: Death Matching ist ohne Erlaubnis eines Admins strengstens verboten!\n§3: Jedes Menschenleben ist kostbar! Daher wird das töten anderer Personen mit einer Freiheisstrafe geahndet.\n§4: Es muss sich an alle weiteren Gesetzen gehalten werden, vor allem an die Straßenverkehsverordnung.\n§5: Das beleidigen anderer Personen wird mit einer Freiheitsstrafe geahndet.\n§6: Wenn man umgebracht oder überwallen worden ist oder einen Mord oder Überfall beobachtet hat, melde diesen bei der Polizei.Fertige, wenn möglich, einen Screenshot als Beweis an.", "OK", "Abbrechen");Wie kann ich das Problem lösen?
-
Irgendwie wird bei mir die Funktion OnPlayerInfoChange nicht ausgeführt.
Hier mein Quellcode:
public OnPlayerInfoChange(playerid)
{
if(SpielerInfo[playerid][login] == 1)
{
new infoupdateqry[255],updplname[255];
GetPlayerName(playerid,updplname,sizeof(updplname));
samp_mysql_real_escape_string(updplname, updplname);
format(infoupdateqry, sizeof(infoupdateqry), "UPDATE user SET geld='%d', level='%d', newsrep='%d', polizei='%d' WHERE name='%s'", GetPlayerMoney(playerid), GetPlayerScore(playerid), SpielerJob[playerid][newsreporter], SpielerJob[playerid][polizei], updplname);
samp_mysql_query(infoupdateqry);
SendClientMessage(playerid, FARBE_ROT, infoupdateqry);
}
else
{
SendClientMessage(playerid, FARBE_ROT, "Loggen Sie sich ein, um änderungen zu speichern!");
}
return 1;
}Getestet habe ichs mit einem Stunt, aber in der Datenbank wird das Geld nicht geupdated und die SendClientMessage kommt auch net!
-
jetzt nicht hier über eure probleme diskutieren, es geht bei mir immer noch net
Das hält meine ganze planung auf, denn solange das net geht, kann ich nicht weiter machen!Also ich kann es schonmal eingränzen:
Es muss bei /login liegen, denn wenn ich /login nicht ausführe, kann ich /help so oft benutzen, wie ich will! -
Hab ich auch schon probiert
irgendwie will das ganze nicht, als ob der compiler nicht compilen würde, aber das tut er ja, was ich daran bemerkt habe, dass ich einfach mal nen Text geändert habe!
Ich komme aus Essen->Eiberg!
ja
hab ich auch schon, aber bringt nix, es geht ja noch nichtmals /login und /reg!
-
die eins war vorher ne null und ist nachdem ic hden thread geschrieben habe auch wieder zu einer null geworden.
Daran liegts nicht, hatte es nur mal zum testen auf 1 stehen! -
Hab ich auch schon probiert
irgendwie will das ganze nicht, als ob der compiler nicht compilen würde, aber das tut er ja, was ich daran bemerkt habe, dass ich einfach mal nen Text geändert habe!
Ich komme aus Essen->Eiberg!
-
nein, das ist ja das komische. es kahm als ich den erstellt habe, aber es geht nicht mehr weg!
-
ne bringt nix
-
ne bringt auch nix! ist immernoch!
setz mal Hilfe for /reg und /log
was meinst du damit? -
Hallo,
ich habe 3 Commands (/login, /reg und /help).
Als ich nur /login und /reg hatte, lief alles ohne probleme, jetzt habe ich noch /help hinzugefügt und jetzt kommt bei jedem Befehl:ZitatSERVER: Unknown Command
Hier mein OnPlayerCommandText Quellcode:
public OnPlayerCommandText(playerid, cmdtext[])
{
new val[128],cmd[256],idx,plname[100],chkqry[100],plcnt,insqry[100],pwcnt,selqry[255],line[1024];
cmd = strtok(cmdtext,idx);
// Registration
if(strcmp("/reg", cmd, true) == 0)
{
val = strvalue(cmdtext,idx);
if(!val[0])
{
// Es wurde kein Parameter angegeben
SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /reg [PASSWORT]");
}
else
{
// Parameter wurde angegeben
// Spielername herausfinden
GetPlayerName(playerid, plname, sizeof(plname));
// Überprüfen ob Spieler schon existiert
format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
samp_mysql_query(chkqry);
samp_mysql_store_result();
plcnt=samp_mysql_num_rows();
if(plcnt == 1)
{
// Spieler existiert bereits
// Aufforderung zum einloggen anzeigen!
SendClientMessage(playerid, FARBE_ROT, "Es existiert bereits ein Account mit diesem Namen!");
SendClientMessage(playerid, FARBE_ROT, "Bitte /login [PASSWORT] benutzen!");
}
else
{
// Spieler existiert nicht
// Spieler registrieren
samp_mysql_real_escape_string(plname, plname);
format(insqry,sizeof(insqry),"INSERT INTO user (name,pass,mail, money) VALUES ('%s',MD5('%s'), 'none', '500')", plname, val[0]);
samp_mysql_query(insqry);
// ID auslesen
format(selqry,sizeof(selqry),"SELECT * FROM user WHERE name='%s'", plname);
samp_mysql_query(selqry);
samp_mysql_store_result();
samp_mysql_fetch_row(line);
new SpDv[30][50];
split(line, SpDv, '|');
// Konto eröffnen
format(insqry,sizeof(insqry),"INSERT INTO konten (playerid,betrag) VALUES ('%s','100')", SpDv[0]);
samp_mysql_query(insqry);
// Registration fertig
SendClientMessage(playerid, FARBE_ROT, "Registration erfolgreich!");
// Aufforderung zum einloggen anzeigen
SendClientMessage(playerid, FARBE_ROT, "Benutzen Sie /login [PASSWORT] um sich einzuloggen!");
}
}
return 1;
}
// Login
if(strcmp("/login", cmd, true) == 0)
{
val = strvalue(cmdtext,idx);
if(!val[0])
{
// Es wurde kein Parameter angegeben
SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /login [PASSWORT]");
}
else
{
//Parameter wurde angegeben
// Spielername herausfinden
GetPlayerName(playerid, plname, sizeof(plname));
// Überprüfen ob Spieler schon registriert ist
format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
samp_mysql_query(chkqry);
samp_mysql_store_result();
plcnt=samp_mysql_num_rows();
if(plcnt == 1)
{
// Spieler ist registriert
// Prüfen ob das Passwort stimmt
format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE (name='%s' AND pass=MD5('%s'))", plname, val[0]);
samp_mysql_query(chkqry);
samp_mysql_store_result();
pwcnt=samp_mysql_num_rows();
if(pwcnt == 1)
{
// Passwort stimmt
SendClientMessage(playerid, FARBE_ROT, "Sie sind erfolgreich eingeloggt!");
// Loginvariablen setzen
SpielerInfo[playerid][login] = 1;
// Geld setzten
format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
samp_mysql_query(chkqry);
samp_mysql_store_result();
new line[1024];
samp_mysql_fetch_row(line);
new SpDv[30][50];
split(line, SpDv, '|');
SpielerInfo[playerid][startmoney] = strval(SpDv[5]);
SpielerInfo[playerid][dbid] = strval(SpDv[0]);
//SetPlayerMoney(playerid, SpielerInfo[playerid][startmoney]);
new testmoney[255];
testmoney = "500";
SetPlayerMoney(playerid,SpielerInfo[playerid][startmoney]);
new ausg[255];
format(ausg,sizeof(ausg),"Spielergeld: %d",SpielerInfo[playerid][startmoney]);
print(ausg);
}
else
{
// Passwort stimmt nicht
SendClientMessage(playerid, FARBE_ROT, "Das Passwort war falsch!");
}
}
else
{
// Spieler ist noch nicht registriert
SendClientMessage(playerid, FARBE_ROT, "Es existiert noch lein Account mit diesem Namen!");
// Aufforderung zum registrieren anzeigen
SendClientMessage(playerid, FARBE_ROT, "Bitte /reg [PASSWORT] benutzen!");
}
}
return 1;
}
// Hilfe
if(strcmp("/help", cmd, true) == 0)
{
SendClientMessage(playerid, FARBE_AQUA, "*****[HILFE]*****");
SendClientMessage(playerid, FARBE_WEISS, "BENUTZER: /reg, /login");
return 1;
}
return 1;
} -
OK, habs Problem gefunden, es lag an Windows!
Unter Linux auf meinem Root-Server läuft das ganze ohne Probleme, nur mit dem Windows-Server stürzt alles ab! -
Hallo,
ich habe soebend bemerkt, dass nur die kleinste Auslesung aus einer MySQL Datenbank den Client mir einem "Exception Error" zum Absturz bringt.Hier mein Code:
new chkqry[255]
format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
samp_mysql_query(chkqry);
samp_mysql_store_result();
new money[255];
new line[1024];
samp_mysql_fetch_row(line);
new SpDv[30][50];
split(line, SpDv, '|');
new ausg[255];
format(ausg,sizeof(ausg),"Wert: %s",SpDv[5]);
print(ausg);Weiß jmd. ob ich da was falsch mache oder ob das an irgendwas anderem liegt?
In der Konsole kommt die Ausgabe:
ZitatWert: 500
-
110 sind in der Liste
700 ist maximum
und 150 ist Model maximum (was auch imemr damit gemeint ist).
Ausgelesen wird alles korrekt, also sind so keien Fehler drin (hab ausgaben gemacht!)OK, Fehler gefunden,
lag beim Modden der Vehikel! -
nein das war nicht das Problem, habs mittlerweile. (HAb nur die Variable SplitDiv umbenannt).
Die Autos Spawne njetzt alle, allerdings stürzt der client jetzt immer beim joinen ab! -
Hallo, ich spawne meine Vehikel jetzt aus einer Datei, allerdings werden die For-Schleifen nicht ausgeführt ...
Hier der Code:
public OnGameModeInit()
{
[...]
// Autos per Datei:
new File:VehicleFile;
new blank[256];
new count = 0;
VehicleFile = fopen(VEHIKEL_DATEI);
while(fread(VehicleFile, blank, sizeof(blank))) {
count++;
}
fclose(VehicleFile);
vehcount = count;
new vehmes[256];
format(vehmes,sizeof(vehmes),"Verifying %s (Complete) - %d Vehicle Spawns Verified!", VEHIKEL_DATEI, vehcount);
printf(vehmes);
new SplitDiv[99][1024];
new filestring[256];
new File: file = fopen(VEHIKEL_DATEI, io_read);
format(filestring,sizeof(filestring),"%d",vehcount);
print(filestring);
for(new vehicleid = 1;vehicleid<=vehcount;vehicleid++)
{
fread(file, filestring);
split(filestring, SplitDiv, ',');
AutoInfo[vehicleid][id] = strval(SplitDiv[0]);
AutoInfo[vehicleid][vid] = strval(SplitDiv[1]);
AutoInfo[vehicleid][x] = floatstr(SplitDiv[2]);
AutoInfo[vehicleid][y] = floatstr(SplitDiv[3]);
AutoInfo[vehicleid][z] = floatstr(SplitDiv[4]);
AutoInfo[vehicleid][angle] = floatstr(SplitDiv[5]);
AutoInfo[vehicleid][color1] = strval(SplitDiv[6]);
AutoInfo[vehicleid][color2] = strval(SplitDiv[7]);
AutoInfo[vehicleid][mod1] = strval(SplitDiv[8]);
AutoInfo[vehicleid][mod2] = strval(SplitDiv[9]);
AutoInfo[vehicleid][mod3] = strval(SplitDiv[10]);
AutoInfo[vehicleid][mod4] = strval(SplitDiv[11]);
AutoInfo[vehicleid][mod5] = strval(SplitDiv[12]);
AutoInfo[vehicleid][mod6] = strval(SplitDiv[13]);
AutoInfo[vehicleid][mod7] = strval(SplitDiv[14]);
AutoInfo[vehicleid][mod8] = strval(SplitDiv[15]);
AutoInfo[vehicleid][mod9] = strval(SplitDiv[16]);
AutoInfo[vehicleid][mod10] = strval(SplitDiv[17]);
AutoInfo[vehicleid][mod11] = strval(SplitDiv[18]);
AutoInfo[vehicleid][mod12] = strval(SplitDiv[19]);
AutoInfo[vehicleid][mod13] = strval(SplitDiv[20]);
AutoInfo[vehicleid][mod14] = strval(SplitDiv[21]);
AutoInfo[vehicleid][mod15] = strval(SplitDiv[22]);
AutoInfo[vehicleid][mod16] = strval(SplitDiv[23]);
AutoInfo[vehicleid][mod17] = strval(SplitDiv[24]);
AutoInfo[vehicleid][paintjob] = strval(SplitDiv[25]);
AutoInfo[vehicleid][owner] = strval(SplitDiv[26]);
AddStaticVehicleEx(AutoInfo[vehicleid][vid], AutoInfo[vehicleid][x], AutoInfo[vehicleid][y], AutoInfo[vehicleid][z], AutoInfo[vehicleid][angle], AutoInfo[vehicleid][color1], AutoInfo[vehicleid][color2],-1);
new addmess[256];
format(addmess,sizeof(addmess),"--:: Vehicle %d successfully Loaded and placed - owner: %d ::--",vehicleid,AutoInfo[vehicleid][vid],AutoInfo[vehicleid][owner]);
print(addmess);
}
fclose(file);
for(new c=1;c<=vehcount;c++)
{
ModVehicle(c);
}
[..]
return 1;
}Die Datei mit den Vehikeln existiert und ist auch im richtigen ordner, er sagt mir ja, wie viele Vehikel in der Datei sind!
-
7851 ist mein letzter wert, das ganze minus 633 und dann haste den startwert
Das lag aber an meinem Browser. Firefox hat komischerweise jede seite (ohne dass ichs bemerkt habe) 12 mal aufgerufen
Deswegen benutze ich auch IE hier im Forum, weil ich sonst vom Security System gebant werde
das mit den gesplitteten werten ausgeben, werd ich sofort mal versuchen!
So die ausgaben:
Zitatstrval(arrCoords[1]): 593
floatstr(arrCoords[2]): 1352.110229 (wenn man floats mit %f ausgibt)
floatstr(arrCoords[3]): 1779.000000
floatstr(arrCoords[4]): 11.288000
floatstr(arrCoords[5]): 270.000000
strval(arrCoords[6]): 2
strval(arrCoords[7]): 1ES GEHT!
Es lag nicht an dem Spawnsystem, nur die Vehikelliste war nicht gerade gut. die ganzen autos waren in SF und man spawn in LV -.-
Naja kennt jemand eine gute Vehikelliste mit max. 700 Vehikel, die überall in SA verteilt sind?Was den Absturz ausgelöst hat:
Das war der Login O_o, aber wenn ich das Vehikelsystem auskommentiere geht der Login ohne Probleme, wenn mir da jmd. helfen kann, bitte melden, dann schicke ich den Quelltext zum drüber gucke n(ist nich nicht gearde viel)!