Oh, sehr gut! Wo genau lag denn der Fehler? Wäre super, wenn ihr das hier mitteilen könntet. ![]()
Beiträge von Jeffry
-
-
Stelle in der server.cfg den lagcompmode auf 0.
http://wiki.sa-mp.com/wiki/Server.cfg -
Der Umsatz ist doch der Lohn, oder?
Also:
new Umsatz = endLohn -oldBank;
zu:
new Umsatz = Lohn[i];Wenn nicht das, dann poste bitte was ausgegeben wird.
-
Seriöser und vertrauenswürdiger Geschäftspartner, der Guthabenaustausch hat keine 5 Minuten gedauert.
Top, gerne wieder!
-
Ich kann es mir so nicht erklären.
Was ich dir vorschlagen kann ist, dass ich mich morgen mal per TeamViewer bei dir drauf schalte und es mir da mal anschaue.
Würde dir 16 Uhr passen? -
Leere den Server Log und starte dann den Server erneut, dann poste was im Server Log steht.
Bitte in einem neuen Thread. -
-
Einfach das crashdetect Plugin (so bzw. dll) in den plugins Ordner legen und in der server.cfg eintragen, bei plugins.
-
Ganz einfach: Das Limit setzt die CPU des Servers. Pauschal kann man das nicht sagen. Solange alles flüssig läuft und keine Laggs auftreten musst du dir keine Sorgen machen.
Du kannst dir die Laufzeit einer solchen Schleife auch mal ausgeben lassen (GetTickCount()), dann weißt du wie lange die läuft. Wahrscheinlich wird das im Bereich 1-5ms sein, was absolut kein Problem ist. -
Lade dir das Crashdetect Plugin herunter und füge es in deinen Server ein: http://forum.sa-mp.com/showthread.php?t=262796
Dann poste was im Server Log steht, wenn du den Server startest (am besten vorher leeren und dann alles posten), am besten in einem neuen Thread. -
Poste bitte mal den ganzen Code von dem Textdraw, wie du es erstellst.
-
Das ist komisch, denn er dürfte ja gar nicht durch die Kondition (i<5) kommen.
Was kommt im Log, wenn du es so schreibst?
C
Alles anzeigenif(GetPVarInt(playerid,"Eingeloggt") == 1) { print("Spieler Variable Eingeloggt wurde auf 1 gesetzt"); if(ImTutorial[playerid] == 0) { print("Spieler ist nicht im Tutorial"); new test; printf("test = %d", test); for(new i=0;i<5;i++) { test = test + 1; printf("test = %d", test); i = test; printf("i: %d", i); if(Spieler[playerid][pTutMissionComplete][i] == true) { printf("pTutMissionComplete == true"); switch(Spieler[playerid][pAdmin]) { case -1: { TextDrawShowForPlayer(playerid,Reportdraw[4]); } case 1: { TextDrawShowForPlayer(playerid,Reportdraw[0]); TextDrawShowForPlayer(playerid,Reportdraw[1]); } case 2,3,4: { TextDrawShowForPlayer(playerid,Reportdraw[0]); TextDrawShowForPlayer(playerid,Reportdraw[1]); TextDrawShowForPlayer(playerid,Reportdraw[2]); } case 5,6: { TextDrawShowForPlayer(playerid,Reportdraw[0]); TextDrawShowForPlayer(playerid,Reportdraw[1]); TextDrawShowForPlayer(playerid,Reportdraw[2]); TextDrawShowForPlayer(playerid,Reportdraw[3]); } case 7: { for(new i4=0;i4<sizeof(Reportdraw);i4++) { TextDrawShowForPlayer(playerid,Reportdraw[i4]); } } } printf("Nach switch"); mysql_SetInt(""#SQLTAG"_account_main","Online",1,"Name",Spieler[playerid][pName]); SpamChat(playerid,0);// 0 = nur für einen spieler wird der chat kontrolliert 100 zeilen voll gespamt,bei 1 = für alle spieler TextDrawShowForPlayer(playerid,InfoSign[3]); PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~w~Willkommen auf ~y~"SERVERTAG""); TutTime[playerid] = 1; SetPlayerColor(playerid,WEISS); TextDrawHideForPlayer(playerid,BincopfeilR);TextDrawHideForPlayer(playerid,BincopfeilL);TextDrawHideForPlayer(playerid,Bincobox);TextDrawHideForPlayer(playerid,Bincobox2); TextDrawHideForPlayer(playerid,Binconame);PlayerTextDrawHide(playerid,Bincoskinid[playerid]);PlayerTextDrawHide(playerid,Bincoskinpreis[playerid]);TextDrawHideForPlayer(playerid,Bincotext); TextDrawHideForPlayer(playerid,Bincokaufen);TextDrawHideForPlayer(playerid,Bincobinde); SetCameraBehindPlayer(playerid); TogglePlayerControllable(playerid,1); Spieler[playerid][pSkin] = GetPlayerSkin(playerid); ImTutorial[playerid] = 0; Spieler[playerid][pTutorialTime] = 0; Spieler[playerid][AmUmkleiden] = 0; Spieler[playerid][pBank] = 0; printf("1"); Spieler[playerid][pRollerLic] = 1; SetPlayerFightingStyle(playerid,0); SetPlayerLevel(playerid,1); Spieler[playerid][pMinutesAfterPayday] = 0; Spieler[playerid][pTimeAfterRegister] = 0; Spieler[playerid][pRespektFromPayday] = 0; SetPlayerPos(playerid,-1877.9330,57.6026,1055.1687);//German-Midnight-Spawn SetPlayerFacingAngle(playerid,180); SetPlayerInterior(playerid,14); SetPlayerVirtualWorld(playerid,0); SetPlayerCheckpoint(playerid,-1856.6638,43.6890,1055.1687,5.0); printf("2"); StopAudioStreamForPlayer(playerid); PlayAudioStreamForPlayer(playerid,ServerSounds[13],0.0,0.0,0.0); PlayerTextDrawShow(playerid,INFOdraw[playerid][2]); SetTimerEx("HideInfoBox",4000,0,"i",playerid); Spieler[playerid][pOnRegister] = false; SetPlayerWaffenSkill(playerid); printf("3"); TextDrawShowForPlayer(playerid,SERVERUHR); TextDrawShowForPlayer(playerid,SERVERDATUM); //PlayerTextDrawShow(playerid,PAYDAYdraw[playerid]); //format(string,sizeof(string),"~r~PayDay: ~w~%i~r~/~w~60",Spieler[playerid][pMinutesAfterPayday]/60); //PlayerTextDrawSetString(playerid,PAYDAYdraw[playerid],string); //PlayerTextDrawShow(playerid,HPdraw[playerid]); //PlayerTextDrawShow(playerid,ARMOURdraw[playerid]); //Spieler[playerid][DigiHud] = 1; PlayerTextDrawShow(playerid,FPSPingTextdraw[playerid]); Spieler[playerid][PingFPS] = 1; printf("4"); if(GetPlayerLevel(playerid) <= ENABLE_KILLORPAY_BYLEVEL) { format(string,sizeof(string),"ACHTUNG: Solltest du als Level %i´er einen Spieler töten,",GetPlayerLevel(playerid)); SendClientMessage(playerid,LEUCHTENDESROT,string); SendClientMessage(playerid,LEUCHTENDESROT,"wirst du Automatisch vom System bestraft!"); } printf("5"); ShowPlayerDialog(playerid,DIALOG_REGISTER_GEWORBEN,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: User werben User","{C9C9C9}Wurdest du auf unserem Server geworben.\nWenn ja von wem ?\nDu und der angegebene Spieler erhaltet sobald du Level 3 und 5 erreicht hast Premiumpaydays !\nSprich man erhält 2 Respektpunkte mehr als gewöhnlich.\n"#SERVERFARBE"Wichtig{C9C9C9}: Der angegebene Spieler muss registriert sein!","Absenden","Niemand"); return 1; } } printf("Nach Schleife"); } printf("Weiter gehts..."); StopPlayerBurning(playerid); printf("Nach StopPlayerBurning"); -
Du musst das Textdraw dem Spieler nochmal "frisch" anzeigen, sprich Hide-Show (möglicherweise geht es auch ohne den Hide).
-
Öh, da ist irgendwas schief gelaufen, weil das kann so nicht vorkommen.
Hast du die pawn.cfg noch im /pawno/ Ordner, und eine mehrzeilige Meldung im Compiler, wenn du kompilierst?
Wenn ja, lösche die und öffne deinen Code neu, dann kompiliere ihn nochmal. Geht die Meldung dann aus dem Compiler weg? -
Dann stimmt deine Pixel-Zählung nicht, sprich du hast für die Buchstaben zu wenige Pixel gezählt. Mache einen Screenshot von den Buchstaben und zoome mit einem Bild-Bearbeitungs-Programm ganz nah hin, sodass du die Pixel zählen kannst, die ein Buchstabe an Platz benötigt.
-
Ah, perfekt! Das wollte ich dir grade grob machen, wenn ich heim komme, so ist es natürlich besser!
Nutze jetzt bitte mal diese Prints und poste dann was geprintet wird:
C
Alles anzeigenif(GetPVarInt(playerid,"Eingeloggt") == 1) { print("Spieler Variable Eingeloggt wurde auf 1 gesetzt"); if(ImTutorial[playerid] == 0) { print("Spieler ist nicht im Tutorial"); for(new i=0;i<5;i++) { printf("i: %d", i); if(Spieler[playerid][pTutMissionComplete][i] == true) { printf("pTutMissionComplete == true"); switch(Spieler[playerid][pAdmin]) { case -1: { TextDrawShowForPlayer(playerid,Reportdraw[4]); } case 1: { TextDrawShowForPlayer(playerid,Reportdraw[0]); TextDrawShowForPlayer(playerid,Reportdraw[1]); } case 2,3,4: { TextDrawShowForPlayer(playerid,Reportdraw[0]); TextDrawShowForPlayer(playerid,Reportdraw[1]); TextDrawShowForPlayer(playerid,Reportdraw[2]); } case 5,6: { TextDrawShowForPlayer(playerid,Reportdraw[0]); TextDrawShowForPlayer(playerid,Reportdraw[1]); TextDrawShowForPlayer(playerid,Reportdraw[2]); TextDrawShowForPlayer(playerid,Reportdraw[3]); } case 7: { for(new i4=0;i4<sizeof(Reportdraw);i4++) { TextDrawShowForPlayer(playerid,Reportdraw[i4]); } } } printf("Nach switch"); mysql_SetInt(""#SQLTAG"_account_main","Online",1,"Name",Spieler[playerid][pName]); SpamChat(playerid,0);// 0 = nur für einen spieler wird der chat kontrolliert 100 zeilen voll gespamt,bei 1 = für alle spieler TextDrawShowForPlayer(playerid,InfoSign[3]); PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~w~Willkommen auf ~y~"SERVERTAG""); TutTime[playerid] = 1; SetPlayerColor(playerid,WEISS); TextDrawHideForPlayer(playerid,BincopfeilR);TextDrawHideForPlayer(playerid,BincopfeilL);TextDrawHideForPlayer(playerid,Bincobox);TextDrawHideForPlayer(playerid,Bincobox2); TextDrawHideForPlayer(playerid,Binconame);PlayerTextDrawHide(playerid,Bincoskinid[playerid]);PlayerTextDrawHide(playerid,Bincoskinpreis[playerid]);TextDrawHideForPlayer(playerid,Bincotext); TextDrawHideForPlayer(playerid,Bincokaufen);TextDrawHideForPlayer(playerid,Bincobinde); SetCameraBehindPlayer(playerid); TogglePlayerControllable(playerid,1); Spieler[playerid][pSkin] = GetPlayerSkin(playerid); ImTutorial[playerid] = 0; Spieler[playerid][pTutorialTime] = 0; Spieler[playerid][AmUmkleiden] = 0; Spieler[playerid][pBank] = 0; printf("1"); Spieler[playerid][pRollerLic] = 1; SetPlayerFightingStyle(playerid,0); SetPlayerLevel(playerid,1); Spieler[playerid][pMinutesAfterPayday] = 0; Spieler[playerid][pTimeAfterRegister] = 0; Spieler[playerid][pRespektFromPayday] = 0; SetPlayerPos(playerid,-1877.9330,57.6026,1055.1687);//German-Midnight-Spawn SetPlayerFacingAngle(playerid,180); SetPlayerInterior(playerid,14); SetPlayerVirtualWorld(playerid,0); SetPlayerCheckpoint(playerid,-1856.6638,43.6890,1055.1687,5.0); printf("2"); StopAudioStreamForPlayer(playerid); PlayAudioStreamForPlayer(playerid,ServerSounds[13],0.0,0.0,0.0); PlayerTextDrawShow(playerid,INFOdraw[playerid][2]); SetTimerEx("HideInfoBox",4000,0,"i",playerid); Spieler[playerid][pOnRegister] = false; SetPlayerWaffenSkill(playerid); printf("3"); TextDrawShowForPlayer(playerid,SERVERUHR); TextDrawShowForPlayer(playerid,SERVERDATUM); //PlayerTextDrawShow(playerid,PAYDAYdraw[playerid]); //format(string,sizeof(string),"~r~PayDay: ~w~%i~r~/~w~60",Spieler[playerid][pMinutesAfterPayday]/60); //PlayerTextDrawSetString(playerid,PAYDAYdraw[playerid],string); //PlayerTextDrawShow(playerid,HPdraw[playerid]); //PlayerTextDrawShow(playerid,ARMOURdraw[playerid]); //Spieler[playerid][DigiHud] = 1; PlayerTextDrawShow(playerid,FPSPingTextdraw[playerid]); Spieler[playerid][PingFPS] = 1; printf("4"); if(GetPlayerLevel(playerid) <= ENABLE_KILLORPAY_BYLEVEL) { format(string,sizeof(string),"ACHTUNG: Solltest du als Level %i´er einen Spieler töten,",GetPlayerLevel(playerid)); SendClientMessage(playerid,LEUCHTENDESROT,string); SendClientMessage(playerid,LEUCHTENDESROT,"wirst du Automatisch vom System bestraft!"); } printf("5"); ShowPlayerDialog(playerid,DIALOG_REGISTER_GEWORBEN,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: User werben User","{C9C9C9}Wurdest du auf unserem Server geworben.\nWenn ja von wem ?\nDu und der angegebene Spieler erhaltet sobald du Level 3 und 5 erreicht hast Premiumpaydays !\nSprich man erhält 2 Respektpunkte mehr als gewöhnlich.\n"#SERVERFARBE"Wichtig{C9C9C9}: Der angegebene Spieler muss registriert sein!","Absenden","Niemand"); return 1; } } printf("Nach Schleife"); } printf("Weiter gehts..."); StopPlayerBurning(playerid); printf("Nach StopPlayerBurning");Sollte er bis nach "Nach StopPlayerBurning" kommen, dann musst du weitere prints weiter unten einfügen.
-
Das kannst du so machen:
Cfor(new i = 0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnnected(i) || IsPlayerNPC(i)) continue; if(IsPlayerInRangeOfPoint(i, range, x, y, z)) { SetPlayerPos(i, x_zu, y_zu, z_zu); } }
range, x, y, z und x_zu, y_zu, z_zu musst du natürlich jeweils mit den Koordinaten bzw. Werten ersetzen, die da drin stehen sollen. -
Dann wäre es nach diesem Prinzip sinnvoller, nicht die 0 zu nehmen, sondern den höchsten Index (sprich MAX_PLAYERS-1) und dem Server in der server.cfg einen Slot weniger zu geben, als dass du in a_samp.inc bei MAX_PLAYERS stehen hast.
Je nach dem was du mit "umleiten" meinst, könnte man auch einfach INVALID_PLAYER_ID oder -1 anstatt der 0 nutzen, dann fragst du halt ab, ob die Variable -1 ist, anstatt 0. So mache ich es eigentlich immer.
Zeige gegebenenfalls mal ein Beispiel von einem Code mit einer solchen "auf-0-Umleitung".
-
Die Crashdetect Ausgabe ist nicht korrekt.
Hast du folgende Dinge gemacht?
- pawn.cfg Datei in /pawno/ erstellt und "-d3" rein geschrieben (und gespeichert)
- pawno.exe aus /pawno/ öffnen -> Öffnen auswählen -> den Code auswählen
- neu kompilieren
- dann siehst du in Compiler eine mehrzeilige Meldung mit vielen Zahlen=> Dann erneut die Fehlerausgabe erzeugen lassen, indem du dich spawnst/einloggst. Dann sollte die Fehlerzeile im Crashdetect-Report im server_log dabei stehen.
-