Nicht schlimm. Ich habe gerade festgestellt, dass ich die Syntax in der Vorlage nicht kenne und im Moment nicht die Geduld habe, mich damit zu befassen. Obendrein hat ja auch Zulan schon einen Stil kreiert.
@Zulan: Das Sortieren den Spielerliste habe ich fertig (noch nicht gepusht), aber zum Filtern der Log-Nachrichten habe ich eine Frage. Die Log-Nachrichten sind ja in viele Unterklassen verteilt. Ich bin mir auch nicht sicher, ob in jeder Unterklasse das Attribut 'ingame_id' zur Verfügung steht.
Ist es möglich einen Filter ähnlich zu dieser Zeile ( views.py ) zu basteln?
xxxx habe ich nur genutzt, um die folgenden Ausschnitt der Fehlermeldung zu provozieren:Code:context['log'] = game.gamelog_set.filter(xxxx=0).order_by('-id')
Aber sowohl mit polymorphic_ctype_id=1 oder gamelogplayer=1 oder gamelogplayer='Ramk' erhalte ich ein leeres Log.Code:Cannot resolve keyword 'xxxx' into field. Choices are: date, game, game_id, gamelogadminaction, gamelogforcedisconnect, gamelogmetachange, gamelogpause, gamelogplayer, gamelogreload, gamelogservertimeout, gamelogtimerchanged, gamelogturn, id, polymorphic_ctype, polymorphic_ctype_id, turn, year
Wie können wir nach Spielerid oder Typ der Log-Nachricht filtern?
Probier mal mit filter(GameLogPlayer___player__id=1) oder filter(GameLogPlayer___player__ingame_id=0)
Anzahl der Unterstriche beachten!
Siehe: https://django-polymorphic.readthedo...erited-classes
Achtung Spoiler:
Ja, mit dieser Syntax läuft es. Testfall mit Klassenfilter:
Muss es jetzt nur noch mit Optionenfeldern kombinieren.Code:context['log'] = game.gamelog_set.filter( Q(instance_of=GameLogTurn) | Q(instance_of=GameLogReload) | Q(GameLogPlayer___player__id=1) ).order_by('-id')
Evtl. noch überlegen, ob ihr Englisch, Deutsch oder 2 Sprachig verfahren wollt:
"logged in"
"abgemeldet"
Freedom's just another word for nothing left to lose
Bei dem Test von Borgg, Zulan und mir hat sich höchstwahscheinlich Zulans Vermutung bestätigt!
Bevor die Liste der Anführer eingeblendet wird, versendet Civ4 ein Paket mit Informationen über die Anführer. Unter normalen Umständen ist dieses Paket klein genung, um im ganzen versendet zu werden. Sind die Namen der Spieler aber sehr lang oder (wie hier) die Anzahl der Nationen so hoch, dass es zu lang wird, so wird es in kleinere Pakete gesplittet. Andererseits ist aber das „Don'f Fragment“-Flag gesetzt (und außerdem das More-Fragments nicht)
Ist die Verbindung zum Server nicht gut kann es dann vorkommen, dass nicht alle Daten ankommen. Da es der Server weiter probiert, kommt man nach ettlichen Minuten dann irgendwann doch noch zum Screen.
Der verrückte Lösungsvorschlag: Namen der Spieler kürzen Das wird derzeit getestet.
Also ich glaube fuer das zu grosse Paket ist don't fragment dann nicht gesetzt - aber bei den normalen/kleinen ist es gesetzt. Ich fuerchte halt, dass der Netzwerk code davon ausgeht, dass diese Info am Stueck. Bei den meisten Verbindungen klappt das, aber bei Verbindungen mit hohem jitter koennte es da halt Probleme geben.
Achtung Spoiler:
Bin leider noch nicht mit der neuen Version fertig. Die Namen werden automatisch gekürzt.
Die größtmögliche Anzahl von Buchstaben bei 52 Zivs, welche den Verbindungs-Bug nicht auslöst ist 4+1. Ich suche noch nach einem Trick, damit diese Kurzformen nicht in Spielständen landen, aber das ist leider sehr knifflig, da außerhalb der DLL
Ich frage mich, ist es ueberhaupt sinnvoll das technich zu loesen, oder sollten das kuerzen der Spielernamen/Civs nicht die Spieler selbst uebernehmen. Also zumindest wenn die Kurzvorm dann im Save landet ist das Ergebnis ja gleich, oder?
Achtung Spoiler:
Ein Problem ist dann aber, dass die Spieler sich dann Extra immer umbenennen müssen, bevor sie dem Spiel beitreten. Das finde ich eigentlich auf Dauer unpraktikabel.
Ich habe es jetzt aber endlich geschafft, dass im Spielstand (und allen anderen Aufrufen) die langen Namen landen
Nach etlichen Fehlversuchen ist sogar eine sehr kompakte Lösung entstanden.
Dadurch ist nun diese Frage sinnvoll geworden: Ist es besser vier Buchstaben für den Namen oder vier für die Civ zu verwenden. Derzeit nummeriere ich die Civs durch (A-z).
ganz klar: vier für den Namen, alles was länger is als mauz is unförmig
Passt so
4 für den Namen, 1 Civ
Dann bin ich zB. CIV f
Freedom's just another word for nothing left to lose
Ich Depp hätte es erst einmal mit der Nicht-Debug-DLL probieren sollen bevor ich hier rumposaune
Jetzt muss ich erst mal recherchieren ob und wie das geht, wenn die Optimierungsflags an sind.
Edit: Es geht um folgendes Konstrukt, wobei CriticalParent_LeaderName ein fester Pointer ist.
Ich vermute es muss entweder daran liegen, das „-fomit-frame-pointer“ aktiviert ist oder die Methode als Inline deklariert ist.
Code:void ** puEBP = NULL; __asm { mov puEBP, ebp }; void * pvReturn1 = puEBP[1]; // this is the caller of my function if( pvReturn1 == CriticalParent_LeaderName ){ [...] }
Du koenntest noch versuchen das asm als volatile zu deklarieren (keine Ahnung wie der Microsoft compiler das handhabt). Ich fuerchte aber der Ansatz ist generell problematisch. Wenn da buffer overflow Schutztechniken wie ASLR zum tragen kommen koennte das wohl nicht mehr zuverlaessig funktionieren. Bleibt die Frage ob der Code nur auf dem Server ausgefuehrt wird, dann koennte man es evtl. probieren. Aber ansonsten haben wir wieder 10% Spieler bei denen es aus nun anderen Gruenden nicht mehr funktioniert .
Achtung Spoiler: