Hängt sich der Server denn immer noch auf?
Kannst du mal sagen, was du überhaupt eingegeben hast?
Poste mal den ganzen Code der dazugehört, du hast das bestimmt überall falsch gemacht, deshalb klappt das auch nicht.
Hängt sich der Server denn immer noch auf?
Kannst du mal sagen, was du überhaupt eingegeben hast?
Poste mal den ganzen Code der dazugehört, du hast das bestimmt überall falsch gemacht, deshalb klappt das auch nicht.
Bei OnPlayerUpdate zum Beispiel, mit: http://wiki.sa-mp.com/wiki/GetPlayerKeys
Oder eben in einem Timer.
Du kannst dir ruhig auch mal den Ansatz von SylpheedW anschauen, das klingt interessant, falls es das erfüllt was du haben willst.
EDIT:
Oder im Post drunter das Beispiel! ![]()
Bei deinem zReport musst du das gleiche machen:
format(zReport[f][2*MAX_PLAYER_NAME+10],2*MAX_PLAYER_NAME+10,"%d:",f+1);
zu:
format(zReport[f],2*MAX_PLAYER_NAME+10,"%d:",f+1);
Und bei diesem print hab ich noch vergessen die 128 weg zu machen:
printf("fReport = %s", fReport[i][128]);
mach das auch noch.
split("inputtext",DateInfo,'.');
auf jeden Fall zu:
split(inputtext,DateInfo,'.');
In dem Teil stimmt sonst eigentlich alles.
Hast du den split-stock denn in deinen Code eingefügt?
Wenn ja, zähle mal die Klammern nach, stimmen die überein?
Hast du vielleicht allgemein einen Klammerfehler drin?
Er kommt jedes mal bis zum "FERTIG".
Was ist das eigentlich?
Hast du das eingegeben?
Zitat252375263523862348762378
Wenn nein, hat es einen bestimmten Grund, warum du [128] in Klammer hinter fReport hast?
Wenn nein, schreib es mal so:
for(new i; i<5; i++)
{
printf("Starte i=%d", i);
printf("%d / %d", aReport[i], bReport[i]);
if(aReport[i] == true || bReport[i] == true)
{
failed++;
printf("failed = %d", failed);
continue;
}
if(aReport[i] == false && bReport[i] == false)
{
printf("Beides false");
bReport[i] = true;
printf("bReport = %d", bReport[i]);
format(fReport[i],128,"Frage: %s",grund);
printf("fReport = %s", fReport[i][128]);
format(string,sizeof(string),"[SUP] Spieler %s hat ein Ticket erstellt! ID: %d",SpielerName(playerid),i+1);
printf("string = %s", string);
SendeAllenAdmins(string);
printf("ID: %i (+1 = %i) - aReport: %d - bReport: %d",i,i+1,aReport[i],bReport[i]);
format(string2,sizeof(string2),"%s %s",zReport[i],SpielerName(playerid));
printf("DEBUG-TDS: %s",string2);
TextDrawSetString(Text:Report[i],string2);
printf("break");
break;
}
if(failed == 5)
{
printf("failed");
SendClientMessage(playerid,COL_aREPORT,"DEBUG TEST FÜR'S ERSTE!");
break;
}
printf("ganz unten");
}
printf("FERTIG");
Was? Warum? Du hast das doch hier:
Was willst du damit in OnGameModeInit? ![]()
Mach das weg da.
for(new i; i<5; i++)
{
printf("Starte i=%d", i);
printf("%d / %d", aReport[i], bReport[i]);
if(aReport[i] == true || bReport[i] == true)
{
failed++;
printf("failed = %d", failed);
continue;
}
if(aReport[i] == false && bReport[i] == false)
{
printf("Beides false");
bReport[i] = true;
printf("bReport = %d", bReport[i]);
format(fReport[i][128],128,"Frage: %s",grund);
printf("fReport = %s", fReport[i][128]);
format(string,sizeof(string),"[SUP] Spieler %s hat ein Ticket erstellt! ID: %d",SpielerName(playerid),i+1);
printf("string = %s", string);
SendeAllenAdmins(string);
printf("ID: %i (+1 = %i) - aReport: %d - bReport: %d",i,i+1,aReport[i],bReport[i]);
format(string2,sizeof(string2),"%s %s",zReport[i][2*MAX_PLAYER_NAME+10],SpielerName(playerid));
printf("DEBUG-TDS: %s",string2);
TextDrawSetString(Text:Report[i],string2);
printf("break");
break;
}
if(failed == 5)
{
printf("failed");
SendClientMessage(playerid,COL_aREPORT,"DEBUG TEST FÜR'S ERSTE!");
break;
}
printf("ganz unten");
}
printf("FERTIG");
Lass es mal so laufen und poste dann was im Log steht.
Ändere:
if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
zu:
new tmp[16];
format(tmp, sizeof(tmp), "%02d.%02d.%d", strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]));
if(!IsValidDate(tmp))
Die split Funktion musst du einfach nur ganz untem in Gamemode einfügen.
Oh ![]()
Hast du da irgendwelche Schleifen? Das klingt mir sehr nach einer Endlosschleife. Kannst du zu dem Teil den kompletten Code mal posten? Bzw, hast du schon versucht, jede Zeile einzeln zu debuggen, an welcher Zeile er hängt?
Dein Server geht aus, oder? Das ist normal, dass dann die Verbindung neu aufgebaut wird, wenn du den Server wieder startest, bzw. wenn der Server automatisch wieder gestartet wird.
Genau dafür ist das Plugin.
Ich sehe da direkt auch keinen Fehler.
Nutze doch mal das crashdetect Plugin und lass dir den Fehler ausgeben.
Vielleicht findest du es dann schon selbst, ansonsten poste das Ergebnis:
http://forum.sa-mp.com/showthread.php?t=262796
IsValidDate:
http://pastebin.com/MGJ30HmV
split:
http://wiki.sa-mp.com/wiki/Cod…ed_Snippets_and_Functions
(ganz unten)
Du sollst es natürlich NICHT 1:1 in deinen Code kopieren. Das kann ja nicht funktionieren. Du sollst dir nur das Prinzip anschauen, und es nachbauen.
Versuch es bitte mal.
Hier, schau dir mal das an:
Mysql Alter wird falsch registriert
Da habe ich das schonmal gemacht. Musst es eben an deinen Code anpassen.
Ja, zum Beispiel über phpMyAdmin. Da ist es noch leichter, da musst du einfach nur den Schlüssel neben "Primary" andrücken.
Du muss der Spalte userid den Primary Key zuweisen. Schau mal in die Eigenschaften der Spalte, dort sollte das gehen.
sorry hab vergessen den Fehler bei deinem zu posten: Da kommt dann dreimal die Message
Bei meiner Variante (die von Wolf-Vito sollte auch klappen) ist es ab und zu auch so, dass die Nachricht mehrfach kommt, dann mach es einfach so:
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(IsVehicleInWater(vehicleid) == 1)
{
static lastMessage[MAX_PLAYERS];
new Float:x, Float:y, Float:z, seat;
GetPlayerPos(playerid, x, y, z);
seat = GetPlayerVehicleSeat(playerid);
SetPlayerPos(playerid, x, y, z);
PutPlayerInVehicle(playerid, vehicleid, seat);
if(lastMessage[playerid] != gettime()) SendClientMessage(playerid, 0xFF0000FF, "Du kannst das Fahrzeug im Wasser nicht verlassen!");
lastMessage[playerid] = gettime();
}
return 1;
}
Equ:
Tut mir Leid, ich bin gestern einfach nicht mehr dazu gekommen. Aber jetzt:
Diesen Bereich kannst du nun auswählen:
Es sieht so aus:
Und das ist der Code:
AccLogin[playerid] = CreatePlayerTextDraw(playerid, 233.666702, 231.466857, "> Einloggen");
PlayerTextDrawLetterSize(playerid, AccLogin[playerid], 0.340000, 1.558518);
PlayerTextDrawAlignment(playerid, AccLogin[playerid], 0);
PlayerTextDrawColor(playerid, AccLogin[playerid], -1);
PlayerTextDrawSetShadow(playerid, AccLogin[playerid], 0);
PlayerTextDrawSetOutline(playerid, AccLogin[playerid], -1);
PlayerTextDrawBackgroundColor(playerid, AccLogin[playerid], 255);
PlayerTextDrawFont(playerid, AccLogin[playerid], 2);
PlayerTextDrawSetProportional(playerid, AccLogin[playerid], 1);
PlayerTextDrawSetSelectable(playerid, AccLogin[playerid], true);
PlayerTextDrawUseBox(playerid,AccLogin[playerid],0);
PlayerTextDrawTextSize(playerid, AccLogin[playerid], 322.0, 13.0 );
AccRegister[playerid] = CreatePlayerTextDraw(playerid, 233.666702, 277.925781, "> Registrieren");
PlayerTextDrawLetterSize(playerid, AccRegister[playerid], 0.340000, 1.558518);
PlayerTextDrawAlignment(playerid, AccRegister[playerid], 0);
PlayerTextDrawColor(playerid, AccRegister[playerid], -1);
PlayerTextDrawSetShadow(playerid, AccRegister[playerid], 0);
PlayerTextDrawSetOutline(playerid, AccRegister[playerid], 1);
PlayerTextDrawBackgroundColor(playerid, AccRegister[playerid], 255);
PlayerTextDrawFont(playerid, AccRegister[playerid], 2);
PlayerTextDrawSetProportional(playerid, AccRegister[playerid], 1);
PlayerTextDrawSetSelectable(playerid, AccRegister[playerid], true);
PlayerTextDrawUseBox(playerid,AccRegister[playerid],0);
PlayerTextDrawTextSize(playerid, AccRegister[playerid], 349.0, 13.0 );
AccPasswort[playerid] = CreatePlayerTextDraw(playerid, 233.666702, 325.214477, "> Passwort vergessen");
PlayerTextDrawLetterSize(playerid, AccPasswort[playerid], 0.340000, 1.558518);
PlayerTextDrawAlignment(playerid, AccPasswort[playerid], 0);
PlayerTextDrawColor(playerid, AccPasswort[playerid], -1);
PlayerTextDrawSetShadow(playerid, AccPasswort[playerid], 0);
PlayerTextDrawSetOutline(playerid, AccPasswort[playerid], 1);
PlayerTextDrawBackgroundColor(playerid, AccPasswort[playerid], 255);
PlayerTextDrawFont(playerid, AccPasswort[playerid], 2);
PlayerTextDrawSetProportional(playerid, AccPasswort[playerid], 1);
PlayerTextDrawSetSelectable(playerid, AccPasswort[playerid], true);
PlayerTextDrawUseBox(playerid,AccPasswort[playerid],0);
PlayerTextDrawTextSize(playerid, AccPasswort[playerid], 414.0, 13.0 );