Wie setzt du dort die Start-Werte?
Also dort wo der Timer beginnt, wie setzt du Sekunden, Minuten, Stunden auf den Startwert, von dem der Timer aus beginnt?
Problem mit Gangfightsystem
- German_ScripterHD
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
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?
-
Überall dort wo du einen Punkt hochzählst.
-
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 -
Kannst du mal einen Screenshot davon machen? Das Problem ist mir so nicht bekannt.
-
-
Hm, irgendwo nutzt du darin eine falsche Anweisung.
Vielleicht hilft dir das: http://blog.152.org/2009/12/my…unction-xxx-does-not.htmlAnsonsten lege die Tabelle nochmal neu an, dann sollte es klappen.
-
//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:
C
Alles anzeigenfor(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; }
Beim Einloggen:C
Alles anzeigenfor(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); } } }
-
Erstmal zu Problem 1:
for(new id = 0; id < sizeof(gangZone); id++)
{
if(gwInfo[id][running]==1)
{
GangZoneFlashForAll(gangZone[id],fInfo[gwInfo[id][angreifer]][f_color]);
}
}
Füge das beim Login des Spielers ein. -
Es besteht wieder ein Problem, die Zeit wird jetzt richtig angzeigt aber mir ist aufgefallen das wieder Gangzone ID 0 (Dillomore) nicht angezeigt wird. Außerdem werden die Punkte auf dem Textraw nicht sycron Akktuallisiert.
[tabmenu][tab='OnGameModeInit']
COnGameModeInit(){ for(new i = 0; 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); }
[tab='GangZonesLoad']
C
Alles anzeigenpublic 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; }
[tab='print (GangZonesLoad)']
C
Alles anzeigen[15:08:17] Gangzoneid: 1 = Dillimore [15:08:17] Besitzer des Gebiets 1 ist: 0 [15:08:17] Gangzoneid: 2 = Blueberry [15:08:17] Besitzer des Gebiets 2 ist: 3 [15:08:17] Gangzoneid: 3 = Redsands [15:08:17] Besitzer des Gebiets 3 ist: 5 [15:08:17] Gangzoneid: 4 = Prickle Pine [15:08:17] Besitzer des Gebiets 4 ist: 4 [15:08:17] Gangzoneid: 5 = Las Barrancas [15:08:17] Besitzer des Gebiets 5 ist: 5 [15:08:17] Gangzoneid: 6 = Country City [15:08:17] Besitzer des Gebiets 6 ist: 4 [15:08:17] Gangzoneid: 7 = Las Payasadas [15:08:17] Besitzer des Gebiets 7 ist: 3 [15:08:17] Gangzoneid: 8 = Ocan Flats [15:08:17] Besitzer des Gebiets 8 ist: 4 [15:08:17] Gangzoneid: 9 = Doherty [15:08:17] Besitzer des Gebiets 9 ist: 4 [15:08:17] Gangzoneid: 10 = Glen Park [15:08:17] Besitzer des Gebiets 10 ist: 5 [15:08:17] Gangzoneid: 11 = East Beach [15:08:17] Besitzer des Gebiets 11 ist: 3 [15:08:17] Gangzoneid: 12 = Willowfield [15:08:17] Besitzer des Gebiets 12 ist: 5 [15:08:17] Gangzoneid: 13 = Fortcarson [15:08:17] Besitzer des Gebiets 13 ist: 3 [15:08:17] Gangzoneid: 14 = Las Colinas [15:08:17] Besitzer des Gebiets 14 ist: 6 [15:08:17] Gangzoneid: 15 = Downtown [15:08:17] Besitzer des Gebiets 15 ist: 6 [15:08:17] Gangzoneid: 16 = Pilgrim [15:08:17] Besitzer des Gebiets 16 ist: 6
[/tabmenu] -
ID 0 (Dillomore) nicht angezeigt wird
Wie sieht das in deiner Datenbank aus? Sieht so aus als hättest du da gar keine ID 0.
Textraw nicht sycron Akktuallisiert
Um welches Textdraw geht es da?
-
Das Problem mit dem nicht sichtbaren Gangwar gebiet habe ich hinbekommen.
Nur noch das Problem das die Punkte nicht syncron geupdatet werden:
C
Alles anzeigenpublic OnPlayerDeath(playerid,killerid) { if(killerid != INVALID_PLAYER_ID) { new string1[40],string2[30]; new gangzone = IsPlayerInGangZone(playerid); if(gangzone==-1)return print("[debug] OnPlayerDeath - gangzone==-1"); if(gwInfo[gangzone][running] == 1) { if(sInfo[playerid][fraktion] == gwInfo[gangzone][angreifer] && sInfo[killerid][fraktion] == gwInfo[gangzone][besitzer]) { gwInfo[gangzone][punkteVerteidiger]++; SendClientMessageToAllEx(-1,"gwInfo[gangzone][punkteVerteidiger]= %d",gwInfo[gangzone][punkteVerteidiger]); SendClientMessageToAll(-1,"Punkte wurden angezeigt...."); format(string1,sizeof(string1),"%d",gwInfo[gangzone][punkteVerteidiger]); for(new i; i < MAX_PLAYERS; i++) { if(sInfo[i][fraktion] == gwInfo[gangzone][angreifer] && sInfo[i][fraktion] == gwInfo[gangzone][besitzer]) { PlayerTextDrawSetString(i,GangTD[i][PunkteFraktion1],string1); } } } else if(sInfo[playerid][fraktion] == gwInfo[gangzone][besitzer] && sInfo[killerid][fraktion] == gwInfo[gangzone][angreifer]) { gwInfo[gangzone][punkteAngreifer]++; SendClientMessageToAllEx(-1,"gwInfo[gangzone][punkteAngreifer]= %d",gwInfo[gangzone][punkteAngreifer]); SendClientMessageToAll(-1,"Punkte wurden angezeigt...."); format(string2,sizeof(string2),"%d",gwInfo[gangzone][punkteAngreifer]); for(new i; i < MAX_PLAYERS; i++) { if(sInfo[i][fraktion] == gwInfo[gangzone][besitzer] || sInfo[i][fraktion] == gwInfo[gangzone][angreifer]) { PlayerTextDrawSetString(i,GangTD[i][PunkteFraktion2],string2); } } } return 1; } return 1; } return 1; }
-
Warum erstellst du eig. jedem Spieler ein eigenes TextDraw anstatt einen bzw. 2 globale für alle die im Gangfight anzeigst/updatest?
Und was meinst du mit synchron geupdated wenn der string nur eine variable immer einzelnt updated (+1)? -
breadfish.de
Hat das Thema geschlossen.