Seite 33 von 180 ErsteErste ... 232930313233343536374383133 ... LetzteLetzte
Ergebnis 481 bis 495 von 2699

Thema: Der SDK-Fragen-Thread

  1. #481
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Folgenden Stack habe ich.

    Code:
     	CvGameCoreDLL.dll!CvTeam::isHasMet(TeamTypes eIndex=0xffffffff)  Zeile 3975 + 0x39 Bytes	C++
    >	CvGameCoreDLL.dll!CyTeam::isHasMet(int eIndex=0xffffffff)  Zeile 622 + 0x16 Bytes	C++
     	CvGameCoreDLL.dll!boost::python::detail::invoke<boost::python::to_python_value<bool const &>,bool (__thiscall CyTeam::*)(int),boost::python::arg_from_python<CyTeam &>,boost::python::arg_from_python<int> >(boost::python::detail::invoke_tag_<0,1> __formal={...}, const boost::python::to_python_value<bool const &> & rc={...}, bool (int)* & f=0x05ce88a3, boost::python::arg_from_python<CyTeam &> & tc={...}, boost::python::arg_from_python<int> & ac0={...})  Zeile 88 + 0x1c Bytes	C++
     	CvGameCoreDLL.dll!boost::python::detail::caller_arity<2>::impl<bool (__thiscall CyTeam::*)(int),boost::python::default_call_policies,boost::mpl::vector3<bool,CyTeam &,int> >::operator()(_object * args_=0x056a9c88, _object * __formal=0x00000000)  Zeile 199 + 0x2f Bytes	C++
     	CvGameCoreDLL.dll!boost::python::objects::caller_py_function_impl<boost::python::detail::caller<bool (__thiscall CyTeam::*)(int),boost::python::default_call_policies,boost::mpl::vector3<bool,CyTeam &,int> > >::operator()(_object * args=0x056a9c88, _object * kw=0x00000000)  Zeile 39	C++
     	[...]
     	CvGameCoreDLL.dll!CvDllPythonEvents::postEvent(CyArgsList & eventData={...})  Zeile 24 + 0x4a Bytes	C++
     	CvGameCoreDLL.dll!CvDllPythonEvents::reportGenericEvent(const char * szEventName=0x068a2fe4, void * pyArgs=0x02e37f30)  Zeile 1148	C++
     	CvGameCoreDLL.dll!CvEventReporter::genericEvent(const char * szEventName=0x068a2fe4, void * pyArgs=0x02e37f30)  Zeile 40	C++
     	CvGameCoreDLL.dll!CvGame::update()  Zeile 2148	C++
    Wie kann ich rausfinden, wo der Fehler in Python liegt? Den Fehler gibt es schon länger in Base, aber ich finde den Ursprung einfach nicht. Es gibt einfach zu viele Möglichkeiten. Der eigentliche Fehler ist, dass kein Team übergeben wird.

    edit: Das war, glaub ich, beim erstkontakt. Der Fehler tritt aber nich nur dort auf.

  2. #482
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Kannst du am SDK was machen? Weil dann könnte man diesen C++ Fehler abfangen (bzw. auf -1 testen, das ist doch der Fehler, oder), und eine Python-Ausnahme werfen. Dann sollte man zumindest in Python sehen können, wo die Funktion falsch aufgerufen wird.

  3. #483
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Wie wirft man eine Pythonausnahme? Ich habe das komplette Base-SDK.

  4. #484
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Müsste so gehen:

    PyErr_SetString(PyExc_ValueError, "hier steht die Nachricht"); // Aus python.h - sollte bereits inkludiert sein
    python::throw_error_already_set();

    Das gibt dann einen ValueError in Python, zusammen mit der Nachricht.

  5. #485
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Das ist das Ergebnis. Danke für die Hilfe.

    Bild
    Angehängte Grafiken Angehängte Grafiken

  6. #486
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Hat jetzt nicht mehr direkt mit dem SDK zu tun, gehört aber trotzdem zu meiner Frage oben. Ich habe jetzt den Fehler analysiert.

    Achtung Spoiler:
    Code:
    	def check(self):
    		if (not Civ4lertsOpt.isShowWorstEnemyAlert()):
    			return
    		eActivePlayer = PlayerUtil.getActivePlayerID()
    		eActiveTeam, activeTeam = PlayerUtil.getActiveTeamAndID()
    		enemies = self.enemies[eActivePlayer]
    		newEnemies = AttitudeUtil.getWorstEnemyTeams()
    		delayedMessages = {}
    		for eTeam, eNewEnemy in newEnemies.iteritems():
    			if activeTeam.isHasMet(eTeam):
    				eOldEnemy = enemies[eTeam]
    				if eOldEnemy != -1 and not gc.getTeam(eOldEnemy).isAlive():
    					eOldEnemy = -1
    					enemies[eTeam] = -1
    				if eActiveTeam != eNewEnemy and not activeTeam.isHasMet(eNewEnemy):
    					eNewEnemy = -1
    				if eOldEnemy != eNewEnemy:
    					enemies[eTeam] = eNewEnemy
    					if eNewEnemy == -1:
    						if eOldEnemy == eActiveTeam:
    							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_YOU_NO_WORST_ENEMY", gc.getTeam(eTeam).getName())
    						else:
    							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_NO_WORST_ENEMY", 
    									(gc.getTeam(eTeam).getName(), gc.getTeam(eOldEnemy).getName()))
    					elif eOldEnemy == -1:
    						message = None # handled below
    						if eNewEnemy not in delayedMessages:
    							delayedMessages[eNewEnemy] = gc.getTeam(eTeam).getName()
    						else:
    							delayedMessages[eNewEnemy] += u", " + gc.getTeam(eTeam).getName()
    					else:
    						if eOldEnemy == eActiveTeam:
    							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY_FROM_YOU", 
    									(gc.getTeam(eTeam).getName(), gc.getTeam(eNewEnemy).getName()))
    						elif eNewEnemy == eActiveTeam:
    							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY_TO_YOU", 
    									(gc.getTeam(eTeam).getName(), gc.getTeam(eOldEnemy).getName()))
    						else:
    							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY", 
    									(gc.getTeam(eTeam).getName(), gc.getTeam(eNewEnemy).getName(), gc.getTeam(eOldEnemy).getName()))
    					if message:
    						addMessageNoIcon(eActivePlayer, message)
    		for eEnemy, haters in delayedMessages.iteritems():
    			if eActiveTeam == eEnemy:
    				message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_YOU_WORST_ENEMY", haters)
    			else:
    				message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_WORST_ENEMY", (haters, gc.getTeam(eEnemy).getName()))
    			addMessageNoIcon(eActivePlayer, message)
    Code:
    def getWorstEnemyTeams():
    	"""
    	Returns a dictionary of the team IDs that are each team's worst enemy.
    	
    	The key is team ID; the value is the worst enemy team ID.
    	If a team has no worst enemy, -1 is stored as its value.
    	Ignores dead, human, barbarian, and minor teams.
    	
    	Loops over players because CyTeam does not have getWorstEnemyName().
    	"""
    	namesToID = {}
    	for team in PlayerUtil.teams(alive=True, barbarian=False, minor=False):
    		namesToID[team.getName()] = team.getID()
    	enemies = {}
    	for team in PlayerUtil.teams(alive=True, human=False, barbarian=False, minor=False):
    		eTeam = team.getID()
    		eLeader = team.getLeaderID()
    		if eLeader != -1:
    			player = PlayerUtil.getPlayer(eLeader)
    			worstEnemyName = player.getWorstEnemyName()
    			if worstEnemyName:
    				try:
    					enemies[eTeam] = namesToID[worstEnemyName]
    				except KeyError:
    					BugUtil.debug("Cannot find team \"%s\"", worstEnemyName)
    					enemies[eTeam] = -1
    			else:
    				enemies[eTeam] = -1
    	return enemies


    getWorstEnemyTeams() findet zu einen Team den schlimmsten Feind. Jetzt kommt es! Es wird der Name des schlimmsten Feindes gesucht und dieser mit einer mir nicht bekannten Methode zu einer ID gewandelt. Das geht scheinbar nicht gut, wie man es am Try und Catch sieht. Aber man kann auch direkt die ID abfragen per Python und muss nicht diesen Umständigen Weg gehen! Dann wird noch in def check(self): nicht auf -1 geprüft, wo es doch offensichtlich vorkommmen kann.

    Woher hat nur Cybah so einen schrott Code?

  7. #487
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.454
    Ähm... den hat das eigentlich recht kompetente BUG Team verbrochen.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)

  8. #488
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    Ähn...dumme frage von mir, was genau ist der bug mod und was macht der BUG genau?!?

    Edit. Ja ne is klar...Interface mod...gibt es Screenshots, worin die Besserungen, unterschiede bestehen???
    Geändert von Monaldinio (10. August 2013 um 22:37 Uhr)
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  9. #489
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Auf dem Screenshort oben siehst du zum Teil die Verbesserungen.

    Hauptsächlich werden die Berater verbessert. Der Militärberater ist brauchbar. Der Auslandberater liefert wesentlich mehr Informationen. Die Stadtlisten sind individuel einstellbar und es gibt viele Voreinstellungen.

  10. #490
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    Kann mir einer meine DLL kompilieren???
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  11. #491
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    Keiner der meine fertigen Sourcedateien mal eben zu ner fertigen DLL kompilieren kann?!?
    Sonst müsste ich mir den ganzen SDK mist runterladen...
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  12. #492
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Soll ich mich angesprochen fühlen? Ich habe es nicht vergessen.

    Zitat Zitat von Monaldinio Beitrag anzeigen
    Keiner der meine fertigen Sourcedateien mal eben zu ner fertigen DLL kompilieren kann?!?
    Sonst müsste ich mir den ganzen SDK mist runterladen...
    Das ist kein Mist, sondern produktives Arbeiten.

  13. #493
    Registrierter Benutzer Avatar von Monaldinio
    Registriert seit
    10.11.09
    Ort
    HRO
    Beiträge
    7.650
    Also ich wollte hier jetzt niemanden zwingen! Sorry wenn das so rüber gekommen ist.
    Ich hatte in den letzten Tagen ein bischen zeit zu mergen! Ich hoffe nur das da alles richtig ist...
    Ich brauch halt nur jemanden der mir das packet schnürt, sprich mir die Source Dateien zu ner DLL kompiliert!

    Schade, das die Beschreibung zum kompilieren DLL so viele fragen offen lässt, gerade was den projektorder angeht, gerade wo ich meine zu kompilierende Dateien hinpacken muss und ect...
    Conflict on Chiron - Sid Meier's Alpha Centauri vs. Call to Power!

    Neu Version Conflict on Chiron v3.4 BETA - 16.01.16

    Patch1 - 07.04.16

    Die deutschen Sounds und Wunderfilme sind bereits in der MainFile integriert!
    Ihr könnt sofort loslegen.

    Über Feedback würde ich mich freuen...

  14. #494
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.454
    Wenn du es einmal hinbekommen hast, kannste in Zukunft immer mal schnell selbst was ändern. Das Konfigurieren musst du nur einmal machen.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)

  15. #495
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.454
    Allerdings kann ich dich trösten, ich nutze zum Kompilieren noch mein Netbook mit Win XP, weil ich es bei Win 7 auch noch nicht hinbekommen habe.
    Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5

    Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)

Seite 33 von 180 ErsteErste ... 232930313233343536374383133 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •