Den Code kannst du mit der Funktion "print" debuggen.
Außerdem empfehle ich dir das "CrashDetect" Plugin zu downloaden.
//Edit:
Schickmal bitte den Code wie du die die Zolltore erstellst.
Den Code kannst du mit der Funktion "print" debuggen.
Außerdem empfehle ich dir das "CrashDetect" Plugin zu downloaden.
//Edit:
Schickmal bitte den Code wie du die die Zolltore erstellst.
Danke für deine Hilfe Jeffry
Ich habe den Fehler selber gefunden. Es war ein Compieler Fehler, ein Include hat im /pawno/includes Ordner gefehlt, aber der Compieler hat keinen Fehler (Warning, Error) angzeigt.
Trotzdem vielen Dank.
MfG
Hallo Brotfische,
Wie an der Übersschrieft schon zu erkennen, stürzt der Server andauert ab... Hier ein Teil des Serverlogs.. (crashdetector)
[15:04:08] [part] German_ScripterHD has left the server (0:0)
[15:04:12] [connection] incoming connection: xxx.xxx.xxx.xxx:xxxxx id: 0
[15:04:12] [join] German_ScripterHD has joined the server (0:xxx.xxx.xxx.xxx)
[15:04:12] [debug] Run time error 4: "Array index out of bounds"
[15:04:12] [debug] Accessing element at negative index -1
[15:04:12] [debug] AMX backtrace:
[15:04:12] [debug] #0 00059670 in ?? (0) from script.amx
[15:04:12] [debug] #1 0000eea0 in public Itter_OnPlayerConnect (0) from script.amx
[15:04:12] [debug] #2 0000b6d4 in public SSCANF_OnPlayerConnect (0) from script.amx
[15:04:12] [debug] #3 0000133c in public OnPlayerConnect (0) from script.amx
[15:04:26] [part] German_ScripterHD has left the server (0:0)
Alles anzeigen
//Edit: Habe die Datenbank wieder neu erstellt.
//Edit 2: Kleiner Fehler behoben / Funktioniert leider immernoch nicht.
Nun habe ich noch zwei Probleme, undzwar wird alles richtig gespeichert, aber wenn man den Server neustartet, dann Flasht die Gangzone nicht. Außerdem beim Einloggen werden mir die Textdraws nicht angezeigt.
Code:
for(new i = 1; i<MAX_GANGZONES; i++)
{
mysql_format(dbhandle, querye,256, "SELECT * FROM gangzones WHERE id = %d",i);
mysql_function_query(dbhandle, querye, true, "GangZonesLoad","d",i)
}
public GangZonesLoad(id)
{
new rows, field;
cache_get_data(rows, field);
if(!rows)return 1;
cache_get_row(0, 1, gwInfo[id][f_gebiet], dbhandle, 258);
printf("Gangzoneid: %i = %s",id,gwInfo[id][f_gebiet]);
gwInfo[id][besitzer] = cache_get_row_int(0, 2);
gwInfo[id][minx] = cache_get_row_float(0, 3);
gwInfo[id][miny] = cache_get_row_float(0, 4);
gwInfo[id][maxx] = cache_get_row_float(0, 5);
gwInfo[id][maxy] = cache_get_row_float(0, 6);
gwInfo[id][running] = cache_get_row_int(0, 9);
gwInfo[id][punkteAngreifer] = cache_get_row_int(0, 7);
gwInfo[id][punkteVerteidiger] = cache_get_row_int(0, 8);
gwInfo[id][angreifer] = cache_get_row_int(0, 13);
gwInfo[id][RemainingHour] = cache_get_row_int(0, 10);
gwInfo[id][RemainingMin] = cache_get_row_int(0, 11);
gwInfo[id][RemainingSec] = cache_get_row_int(0, 12);
gwInfo[id][angreifer] = cache_get_row_int(0, 13);
printf("Besitzer des Gebiets %d ist: %d", id, gwInfo[id][besitzer]);
CreateGangZones(id);
return 1;
}
stock SaveGangWar(id)
{
new query[354];
format(query,sizeof(query),"UPDATE `gangzones` SET `besitzer`='%i',
`punkteAngreifer`='%i',`punkteVerteidiger`='%i',`running`='%i',
`RemainingHour`='%i',`RemainingMin`='%i',`RemainingSec`='%i',`angreifer`='%i'WHERE `id`='%i'",gwInfo[id][besitzer], gwInfo[id][punkteAngreifer],
gwInfo[id][punkteVerteidiger],gwInfo[id][running],gwInfo[id][RemainingHour],
gwInfo[id][RemainingMin],gwInfo[id][RemainingSec],gwInfo[id][angreifer],id);
mysql_function_query(dbhandle,query,false,"","");
return print("[- Debug -] Gangwar Informationen wurden gespeichert.");
}
stock CreateGangZones(id)
{
gwInfo[id][Area] = CreateDynamicRectangle(gwInfo[id][minx],gwInfo[id][miny],gwInfo[id][maxx],gwInfo[id][maxy],-1,-1,-1);
gangZone[id] = GangZoneCreate(gwInfo[id][minx],gwInfo[id][miny],gwInfo[id][maxx],gwInfo[id][maxy]);
UpdateGangZones(id);
return true;
}
stock UpdateGangZones(id)
{
GangZoneHideForAll(gangZone[id]);
GangZoneShowForAll(gangZone[id],fInfo[gwInfo[id][besitzer]][f_color]);
if(gwInfo[id][running]==1)
{
GangZoneFlashForAll(gangZone[id],fInfo[gwInfo[id][angreifer]][f_color]);
}
return true;
}
Alles anzeigen
Beim Einloggen:
for(new i;i<sizeof(gangZone);i++)
{
if(gwInfo[i][running]==1)
{
if(sInfo[playerid][fraktion]==gwInfo[i][angreifer] || sInfo[playerid][fraktion]==gwInfo[i][besitzer])
{
new string[100];
PlayerTextDrawShow(playerid,GangTD[playerid][Box]);
PlayerTextDrawShow(playerid,GangTD[playerid][Fraktion1]);
PlayerTextDrawShow(playerid,GangTD[playerid][Fraktion2]);
PlayerTextDrawShow(playerid,GangTD[playerid][PunkteFraktion1]);
PlayerTextDrawShow(playerid,GangTD[playerid][PunkteFraktion2]);
PlayerTextDrawShow(playerid,GangTD[playerid][Zeit]);
PlayerTextDrawShow(playerid,GangTD[playerid][GebietName]);
PlayerTextDrawShow(playerid,GangTD[playerid][Abstandhalter1]);
PlayerTextDrawShow(playerid,GangTD[playerid][Abstandhalter2]);
format(string,sizeof(string),"%s",fInfo[gwInfo[i][besitzer]][f_name]);
PlayerTextDrawSetString(playerid,GangTD[playerid][Fraktion1],string);
format(string,sizeof(string),"%s",fInfo[gwInfo[i][angreifer]][f_name]);
PlayerTextDrawSetString(playerid,GangTD[playerid][Fraktion2],string);
format(string,sizeof(string),"%d",gwInfo[i][punkteVerteidiger]);
PlayerTextDrawSetString(playerid,GangTD[playerid][PunkteFraktion1],string);
format(string,sizeof(string),"%d",gwInfo[i][punkteAngreifer]);
PlayerTextDrawSetString(playerid,GangTD[playerid][PunkteFraktion2],string);
format(string,sizeof(string),"~g~Kampf um %s",gwInfo[i][f_gebiet]);
PlayerTextDrawSetString(playerid,GangTD[playerid][GebietName],string);
}
}
}
Alles anzeigen
Vielen Dank
Jetzt habe ich noch ein risiges Problem mit meiner Datenbank, der Fehler ist mir erst jetzt aufgefallen.
Wenn ich auf meine Samp Datenbank klicke und dann "gangzones" auswähle kommt folgender Fehler : "#1305 FUCTION samp_db.angreifer does not exist." Und ich kann somit nichts in dem Bereich "gangzones" editieren oder sonnstiges.. (es öffnet sich nicht mal).
Wenn ich den Server starte, wird die Textdatei Mysql-Log erstellt, mit folgendem Inhalt:
[19:31:55] [ERROR] cache_get_field_content_int - invalid datatype
[19:31:55] [ERROR] cache_get_field_content_int - invalid datatype
Hab den Timer gefixt .. also es geht alles wie es soll *hust* *hust* Denkfehler
Aber nun habe ich noch eine Frage... undzwar ein Gangkampf geht 24 Stunden. Wenn man jetzt aber 1000 Punkte hat bevor die Zeit des Gangkampf abläut, so gehört der jeweiligen Fraktion das gebiet. Nun meine eigentliche Frage, wo frage ich das am besten ab ob die Fraktion 1000 Punkte hat?
Danke Jeffry Klappt jetzt auch.
Jetzt habe ich nur noch das Problem mit der Zeit das diese falsch angezeigt wird.
Funktioniert leider immer noch nicht.
Problem 2:
Die Zeit bleibt so stehen da der Textdraw nur aktualisiert wird, sobald der Spieler im Gebiet ist.
Schau dir den Code mal genauer an, dann siehst du das.
Ja, das habe ich gestern schon entfernt Hab nur das vergessen oben das ganze zu editieren.
Aber die Uhr funktioniert immer noch nicht richtig.
Und zu Problem 3:
warning 213: tag mismatch
//Edit: Problem 1 gelöst... sInfo[playerid][InWar] wurde nirgendwo gesetzt.
Problem 2/3 besteht weiterhin.
[Problem 2]: Die Zeit wird nicht richtig angzeigt (siehe Screen im Spoiler). Und sobald man das Ganggebiet verlässt bleibt die Zeit an der stelle stehen.
Verbleidende Zeit: 24:-1:51
(Wenn die Sekunden Zahl (also in diesem Fall die 51) auf 0 ist, geht die Minutenzahl hoch... also auf 2 .. aber sie sollte ja von 59 runterzählen)
Code ----> Pastebin
[Problem 3]: Gangzone flasht nicht, wenn man /gw eintippt.
Code ---> Pastebin
Wäre echt super wenn ihr mir dabei nochmal helfen könntet, da ich seit ein paar Tagen daraun arbeite... bisher leider ohne Erfolg.
MfG
Ich nehme auch teil.
Wie kann ich dir nur danken? Es klappt ENDLICH
Jetzt habe ich aber noch eine Frage
Undzwar...
Angenommen ich bin in der Fraktion Grove Street und ich möchte das Gebiet der VLA angreifen und jetzt möchte ich abfragen ob die VLA schon ein Gangwar führt wenn ja dann soll returnt werden. Aber wie mache ich das?
Upps habe mich falsch ausgedrückt... Ich meine angenommen ich bin in der Grove Street und ich führe bereits ein Gangwar und möchte ein zweites Gangwar starten, das soll natürlich nicht gehen, aber wie frage ich das ab?
ocmd:gw --> Pastebin
Dann dürfte es passen.
Erstmal ein Super großes Lob an dich Jeffry, das du mir hier hilfst Aber leider funktioniert es immer noch nicht, ich kann zwar in Dillimore ein Gangwar starten aber die Farben sind immer noch falsch. Auch Dillimore ist noch nicht sichtbar... Ich verstehe es selbst nicht mehr. Ich bin echt am verzweifeln.
Ich habe jetzt den Code dort eingefügt:
//passwort richtig
for(new i; i<sizeof(gangZone);i++)
{
GangZoneShowForPlayer(playerid,i,fInfo[gwInfo[i][besitzer]+1][f_color]);
}
stock UpdateGangZones(sid)
{
GangZoneHideForAll(sid);
GangZoneShowForAll(sid,fInfo[gwInfo[sid][besitzer]+1][f_color]);
if(gwInfo[sid][running]==1)
{
GangZoneFlashForAll(sid,fInfo[gwInfo[sid][angreifer]][f_color]);
}
return true;
}
Alles anzeigen
@Jeffry ist das so richtig?
Erhöhe die Anzahl der Gangzones im Array um eines, da du bei 1 anfängst, anstatt bei 0 (also 17 rein schreiben).
Ich habe jetzt MAX_GANGZONES auf 17 gestellt, doch mir ist aufgefallen das die ersten Gangzone also Dillimore nie geladen wird bzw. ist sie auf der Map nicht sichtbar.
Zur Farbe:
Bei welcher Zonen-ID war die Farbe falsch? Welche Farbe hatte sie, und welche Farbe sollte sie haben?
Wenn es bei zwei oder mehreren so ist, dann nenne bitte alle, vielleicht lässt sich da ein Muster erkennen.
Gebietsname (Farbe eigentlich) = Farbe die sie gerade hat
Dillimore ( grün ) = nicht sichtbar
Blueberry ( rot ) = grün
Redsands ( blau ) = rot
Prickle Pine ( rot ) = blau
Las Barrancas ( blau ) = rot
Country City ( grün ) = blau
Las Payasadas ( blau ) = grün
Ocan Flats ( blau ) = blau
Doherty ( rot ) = blau
Glen Park ( grün ) = rot
East Beach ( rot ) = grün
Willowfield ( grün ) = rot
Fortcarson ( orange ) =grün
Las Colinas ( orange ) = orange
Downtown ( orange ) = orange
So wie ich das sehe verschiebt sich das ganze ja immer um eins... also wenn die Gangzone Dillimore geladen werden sollte müsste es ja der Fehler behoben sein oder? (Leider bekomme ich die Gangzones 1 nicht zum laden... bitte um Hilfe)
Nochmal alle Fraktionen die bei den Ganggebieten eine Rolle spielen:
Fraktid : 3 = Grove Street (Grün)
Fraktid : 4 = VLA (Blau)
Fraktid : 5 = The Smoker Lounge (Rot)
Fraktid : 6 = MLG (Orange)
Welches Gebiet ist das Gebiet, mit der falschen Farbe?
Ist bei mehreren Gangzones so das die Farben falsch angzeigt werden. (Achja... mir ist vorhin aufgefallen das ich in der Datenbank 16 Gangzones habe und geladen werden aber bloß 15...)
//Edit:
Mysql Datenbank:
Print: (Serverlog)
[20:19:44] Gangzoneid: 1 = Dillimore
[20:19:44] Besitzer des Gebiets 1 ist: 3
[20:19:44] Gangzoneid: 2 = Blueberry
[20:19:44] Besitzer des Gebiets 2 ist: 5
[20:19:44] Gangzoneid: 3 = Redsands
[20:19:44] Besitzer des Gebiets 3 ist: 4
[20:19:44] Gangzoneid: 4 = Prickle Pine
[20:19:44] Besitzer des Gebiets 4 ist: 5
[20:19:44] Gangzoneid: 5 = Las Barrancas
[20:19:44] Besitzer des Gebiets 5 ist: 4
[20:19:44] Gangzoneid: 6 = Country City
[20:19:44] Besitzer des Gebiets 6 ist: 3
[20:19:44] Gangzoneid: 7 = Las Payasadas
[20:19:44] Besitzer des Gebiets 7 ist: 4
[20:19:44] Gangzoneid: 8 = Ocan Flats
[20:19:44] Besitzer des Gebiets 8 ist: 4
[20:19:44] Gangzoneid: 9 = Doherty
[20:19:44] Besitzer des Gebiets 9 ist: 5
[20:19:44] Gangzoneid: 10 = Glen Park
[20:19:44] Besitzer des Gebiets 10 ist: 3
[20:19:44] Gangzoneid: 11 = East Beach
[20:19:44] Besitzer des Gebiets 11 ist: 5
[20:19:44] Gangzoneid: 12 = Willowfield
[20:19:44] Besitzer des Gebiets 12 ist: 3
[20:19:44] Gangzoneid: 13 = Fortcarson
[20:19:44] Besitzer des Gebiets 13 ist: 6
[20:19:44] Gangzoneid: 14 = Las Colinas
[20:19:44] Besitzer des Gebiets 14 ist: 6
[20:19:44] Gangzoneid: 15 = Downtown
[20:19:44] Besitzer des Gebiets 15 ist: 6
Alles anzeigen
Ich verstehe es nicht mehr der print gibt alles wieder wie in der Datenbank also muss ja der fehler bei einem der stocks liegen:
oder sehe ich das falsch?
stock CreateGangZones(id)
{
gangZone[id] = GangZoneCreate(gwInfo[id][minx],gwInfo[id][miny],gwInfo[id][maxx],gwInfo[id][maxy]);
gwInfo[id][Area] = Area_AddBox(gwInfo[id][minx],gwInfo[id][miny],gwInfo[id][maxx],gwInfo[id][maxy]);
UpdateGangZones(id);
return true;
}
stock UpdateGangZones(sid)
{
GangZoneHideForAll(sid);
GangZoneShowForAll(sid,fInfo[gwInfo[sid][besitzer]][f_color]);
if(gwInfo[sid][running]==1)
{
GangZoneFlashForAll(sid,fInfo[gwInfo[sid][angreifer]][f_color]);
}
return true;
}
Alles anzeigen
MfG
Du sagtest, es ist Rot sollte aber Grün sein. Die Grove Street kann es aber angreifen (Grove = grün). Das widerspricht sich für mich.
Neee, umgekehrt also es sollte Rot sein aber es ist grün
Ist das Grün zufällig die Farbe der Fraktion in der Liste die vor oder nach der Grove steht?
Nein, das Grün gehört zur Grove... siehe Liste (unten)
Hier
new fInfo[MAX_FRAKS][fraktEnum] = {
{"Zivilist", 0.0, 0.0, 0.0, 0.0, 0, 0, COLOR_WHITE},//Weiß
{"LSPD", 295.2865,-55.4151,2.7772,293.463, 0, 0, 0, COLOR_BLUE},//Blau
{"Terror", 0.0, 0.0, 0.0, 0.0, 0, 0, 1, 785318},//Bin mir nicht sicher :)
{"Grove Street", 0.0, 0.0, 0.0, 0.0, 0, 0, 1, 0x26FF68A4},//Grün
{"Varrios Los Aztecas", 0.0, 0.0, 0.0, 0.0, 0, 0, 1, 0x0069FFAF},//Hellblau
{"The Smoker Lounge", -295.8035,-2146.9890,28.5814,204.8678, 0, 0, 1, 0xFF0005AB},//Rot
{"MLG",0.0, 0.0, 0.0, 0.0, 0, 0, 1, 0xFF9600BB},//Orange
{"Oamt",757.9287,-1339.2076,13.5301,268.5271, 0, 0, 1, 0xFF9600BB},//Spielt keine Rolle
{"San News",0.0,0.0,0.0,0.0,0,0,1,0xFF8200FF},//Spielt keine Rolle
{"Rettungsdienst",0.0,0.0,0.0,0.0,0,0,1,0x37FF00FF},//Spielt keine Rolle
{"Los Santos Biker",757.9287,-1339.2076,13.5301,268.5271, 0, 0, 1, 0xFF9600BB}//Spielt keine Rolle
};
Alles anzeigen
Ja, verstehe ich, hast du die Änderung gemacht? Das behebt möglicherweise beides.
Du hattest fast recht Undzwar ist das Feld was eigentlich Rot sein sollte zwar immernoch Grün aber die Grove Street kann diese Gebiet jetzt angreifen aber die Farben stimmen immer noch nicht.