Seite 18 von 271 ErsteErste ... 81415161718192021222868118 ... LetzteLetzte
Ergebnis 256 bis 270 von 4063

Thema: Der Pythonthread

  1. #256
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525
    Zitat Zitat von The_J Beitrag anzeigen
    Um wieder komplett on topic zu kommen:
    CvTechChooser.py ist wohl für den Tech-Baum verantwortlich. Aber wo ist die Standard-Farbe für die Techs festgelegt?
    Wenn ich hier
    Achtung Spoiler:
    PHP-Code:
    if ( gc.getTeam(gc.getPlayer(self.iCivSelected).getTeam()).isHasTech(i) ):
                    
    screen.setPanelColor(szTechRecord8515087)
                    
    self.aiCurrentState.append(CIV_HAS_TECH)
                
    elif gc.getPlayer(self.iCivSelected).getCurrentResearch() == ):
                    
    screen.setPanelColor(szTechRecord104158165)
                    
    self.aiCurrentState.append(CIV_IS_RESEARCHING)
                
    elif gc.getPlayer(self.iCivSelected).isResearchingTech(i) ):
                    
    screen.setPanelColor(szTechRecord104158165)
                    
    self.aiCurrentState.append(CIV_IS_RESEARCHING)
                
    elif gc.getPlayer(self.iCivSelected).canEverResearch(i) ):
                    
    screen.setPanelColor(szTechRecord100104160)
                    
    self.aiCurrentState.append(CIV_NO_RESEARCH)
                else:
                    
    screen.setPanelColor(szTechRecord2066569)
                    
    self.aiCurrentState.append(CIV_TECH_AVAILABLE


    was umändere, ändert sich nix an der Standardfarbe beim Aufbau des Baumes.

    Ich nehm' deswegen mal an, dass es in PanelStyles.PANEL_STYLE_TECH definiert ist, aber wo is dass denn nun wieder zu finden?
    Das hier


  2. #257
    Registrierter Benutzer
    Registriert seit
    04.03.07
    Beiträge
    4.694
    Zitat Zitat von Little Pritt Beitrag anzeigen
    @The_J Ich meinte jetzt nicht umbedingt dich, eher delnan. Der sich hier obwohl er sich mit Python nciht wirklich außeinandersetzt sich mit Alpha Civ über Sachen in Python unterhält, die mir zum Teil noch nicht mal aufgefallen sind.
    Datentypen gibt's in jeder Sprache. Sie sind mehr oder weniger gut versteckt. In Python kann man zwar viel machen, ohne je damit in berührung zu kommen (starke, aber dynamische Typisierung - aka "Wenn ich einen Vogel sehe, der wie eine Ente läuft, wie eine Ente schwimmt und wie eine Ente schnattert, dann nenne ich diesen Vogel eine Ente." ). In anderen Sprachen kommt man garnicht dran vorbei (stark typisiert, keine oder nur umständliche/explizite Umwandlung).
    Zitat Zitat von magic66 Beitrag anzeigen
    Naja, wenn man nur eine Programmiersprache kann, dann kann man da nicht wirklich mitreden.
    Ich kann nur eine Programmier-Sprache Pascal, was in der Hinsicht extrem streng ist, aber sonst sehr bequehm zu handhaben.
    Alles andere, was ich kann, läuft unter der Bezeichnung "Skriptsprache" (Batch, PHP).

  3. #258
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von Little Pritt Beitrag anzeigen
    @The_J Ich meinte jetzt nicht umbedingt dich, eher delnan. Der sich hier obwohl er sich mit Python nciht wirklich außeinandersetzt sich mit Alpha Civ über Sachen in Python unterhält, die mir zum Teil noch nicht mal aufgefallen sind.
    War eigentlich egal, auf wen du dich bezogen hast, nur die Grammatik von dem Satz war halt ziemlich...äh...bescheiden .

    Zitat Zitat von magic66 Beitrag anzeigen
    Naja, wenn man nur eine Programmiersprache kann, dann kann man da nicht wirklich mitreden.
    Lernen .
    Wenn man hierfür genug programmieren kann, sollten die theoretischen Grundlangen nciht mehr das Problem sein.


    Zitat Zitat von magic66 Beitrag anzeigen
    Äh, was ist das Topic denn überhaupt?
    Pritt hat's ja nochmal hervorgebuddelt .

    Keiner ne Idee ?
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  4. #259
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394
    Willst du die Farbe des Panels ändern oder was genau

    Also wenn du einfach den Hintergrund ändern möchtest, dann kannst du 3 Parameter von screen.setPanelColor(str,int,int,int) einfach ändern.

    Zu deinem PanelStyle habe ich zwar ein Ergebnis bekommen, aber das wird dich nicht wirklich weiterbringen: PANEL_STYLE_TECH ist im SDK in der Datei CvEnums.h definiert.

    Oder möchtest du den Hintergrund ändern
    Das geht ganz einfach.
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  5. #260
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Ja, ich würd' gern die Farbe der Panels ändern, das Blau passt mir irgendwie nicht so .
    Was du vorschlägst, würde bedeuten, dass ich nach Aufbau des Techbaums alle umfärben müsste, oder ?


    Hintergrund wollt' ich eigentlich nicht ändern, aber da du's grad erwähnst, kannst du mir auch sagen, wo das gemacht wird .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  6. #261
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394
    Zitat Zitat von The_J Beitrag anzeigen
    Ja, ich würd' gern die Farbe der Panels ändern, das Blau passt mir irgendwie nicht so .
    Was du vorschlägst, würde bedeuten, dass ich nach Aufbau des Techbaums alle umfärben müsste, oder ?


    Hintergrund wollt' ich eigentlich nicht ändern, aber da du's grad erwähnst, kannst du mir auch sagen, wo das gemacht wird .
    Wieso denn umfärben??
    In PlaceTech und in UpdateTechRecord musst du die Farben einfach ändern (wie schon beschrieben). Probier einfach mal bei Paint oder so eine Farbe aus und übernehme dann die Werte.

    Naja, man kann den Techbaum-Hintergrund nicht einfach ändern. Es wird automatisch auch der Civilopedia-Hintergrund geändert.
    Art/Interface/Screens/Civilopedia und dann musst du da 2 Dateien einfügen; musst du mal schauen; einmal ein fast transparentes Bild und einmal den gewollten Hintergrund.
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  7. #262
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von magic66 Beitrag anzeigen
    Wieso denn umfärben??
    In PlaceTech und in UpdateTechRecord musst du die Farben einfach ändern (wie schon beschrieben).
    hab' doch schon gesagt, dass die vorhandenen screen.setPanelColor das nicht für die Techs direkt nach dem Laden des Techbaumes tun.

    Zitat Zitat von magic66 Beitrag anzeigen
    Naja, man kann den Techbaum-Hintergrund nicht einfach ändern. Es wird automatisch auch der Civilopedia-Hintergrund geändert.
    Art/Interface/Screens/Civilopedia und dann musst du da 2 Dateien einfügen; musst du mal schauen; einmal ein fast transparentes Bild und einmal den gewollten Hintergrund.
    Die Civilopedie hat nen Hintergrund ?
    Danke, muss mal schauen .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  8. #263
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.456
    Kann ich einer Einheit(z.B. nach einem Kampf) per Python eine bestimmte Beförderung geben?
    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)

  9. #264
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394
    Ja, klar!
    pUnit.setHasPromotion(iPromotion, true)

    iPromotion ist dabei gc.getInfoTypeForString("PROMOTION_XYZ")
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  10. #265
    Waddehaddedudeda Avatar von Cybah
    Registriert seit
    01.09.06
    Beiträge
    30.456
    danke
    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)

  11. #266
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Mal ne dumme, grundsätzliche Python-Frage
    Wie definiere ich den nen Record?



    Und ne andere Frage:
    Wieso wird beim Quellcode unten die Funtion onUnitPromoted nicht nochmal nach pWinner.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HEROIC_STRENGTH'),True) aufgerufen ?
    Ich hab's jetzt so gemacht, dass ich den eigentliche Effekt für die Beförderung nochmal in den ersten Teil gepackt habe, ist aber halt unschön .
    (die Verschiebung bei der unteresten if-Abfrage kommt durch's kopieren)

    Achtung Spoiler:

    PHP-Code:
        def onUnitPromoted(selfargsList):
            
    'Unit Promoted'
            
    pUnitiPromotion argsList
            player 
    PyPlayer(pUnit.getOwner())
    ###Heroic Strength Promotion Part 1 AI start###
            
    pWinner pUnit
            pPlayer 
    gc.getPlayer(pWinner.getOwner())
            if 
    not pPlayer.isHuman():                        
                            if (
    iPromotion<>gc.getInfoTypeForString('PROMOTION_HEROIC_STRENGTH')):                                
                                    if 
    not pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_HEROIC_STRENGTH')):
                                            if 
    pWinner.canAcquirePromotion(gc.getInfoTypeForString('PROMOTION_HEROIC_STRENGTH')):                                            
                                                    
    dice gc.getGame().getMapRand()
                                                    
    descission dice.get(4"strength")
                                                    if ((
    descission==1) or (descission ==2)):
                                                        
    pWinner.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HEROIC_STRENGTH'),True)
                                                        
    pWinner.setHasPromotion(iPromotion,False)
                                                        
                                                        return
                                                            
    ###Heroic Strength Promotion Part 1 AI End###
    ###Heroic Strength Promotion Part 2 Start ###
                    
    if (iPromotion==gc.getInfoTypeForString('PROMOTION_HEROIC_STRENGTH')):
                        
    strength pUnit.baseCombatStr ()
                        
    pUnit.setBaseCombatStr(strength+1)
    ###Heroic Strength Promotion Part 2 End 
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  12. #267
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zitat Zitat von The_J Beitrag anzeigen
    Mal ne dumme, grundsätzliche Python-Frage
    Wie definiere ich den nen Record?
    Gibt es glaube ich nicht in Python. Wozu brauchst du sowas?


    Und ne andere Frage:
    Wieso wird beim Quellcode unten die Funtion onUnitPromoted nicht nochmal nach pWinner.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HEROIC_STRENGTH'),True) aufgerufen ?
    Was wird nicht zwei-mal aufgerufen? onUnitPromoted oder pWinner.setHasPromotion?


    Kleine Anmerkungen zum Code ():

    Klammern bei "if"-Ausdrücken sind unnötig und verschlechtern nur die Lesbarkeit. Ausnahme: bei komplizierten "or" und "and" Ausdrücken.

    Statt
    Code:
    if ((descission==1) or (descission ==2)):
    ist es so besser:
    Code:
    if descission in (1, 2):

  13. #268
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von alpha civ Beitrag anzeigen
    Gibt es glaube ich nicht in Python. Wozu brauchst du sowas?
    Dann nehm' ich halt ne Klasse .
    Wozu: Muss evtl. Rundenzeit + Einheitennamen kombiniert abspeichern.

    Zitat Zitat von alpha civ Beitrag anzeigen
    Was wird nicht zwei-mal aufgerufen? onUnitPromoted oder pWinner.setHasPromotion?
    onUnitPromoted

    Zitat Zitat von alpha civ Beitrag anzeigen
    Kleine Anmerkungen zum Code ():

    Klammern bei "if"-Ausdrücken sind unnötig und verschlechtern nur die Lesbarkeit. Ausnahme: bei komplizierten "or" und "and" Ausdrücken.
    quatsch:

    PHP-Code:
    if ((eMission==31)or(eMission==29)or(eMission==28)or(eMission==26)or(eMission==30)or(eMission==23)or(eMission==27)):
                            if ((
    pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE1')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE2')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE3')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE4')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE5')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE6')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE7')))): 
    Das ist ganz toll übersichtlich .




    Zitat Zitat von alpha civ Beitrag anzeigen
    Statt
    Code:
    if ((descission==1) or (descission ==2)):
    ist es so besser:
    Code:
    if descission in (1, 2):
    Ah, merci .

    Eigentlich kann ich gar nicht wirklich Python programmieren, deswegen weiß ich so Sachen nicht .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  14. #269
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zitat Zitat von The_J Beitrag anzeigen
    Dann nehm' ich halt ne Klasse .
    Wozu: Muss evtl. Rundenzeit + Einheitennamen kombiniert abspeichern.
    Kannst ja auch an eine bereits existierende Klasse dranhängen.


    onUnitPromoted
    Also rekursiv? Dann musst du auch selbst explizit die Funktion aufrufen. Oder soll das von "pWinner.setHasPromotion" erledigt werden?


    quatsch:

    PHP-Code:
    if ((eMission==31)or(eMission==29)or(eMission==28)or(eMission==26)or(eMission==30)or(eMission==23)or(eMission==27)):
                            if ((
    pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE1')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE2')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE3')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE4')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE5')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE6')))or(pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIVE7')))): 
    Das ist ganz toll übersichtlich .




    Existiert dieser Code wirklich?

    Wenn ja:
    Für den ersten "if"-Teil eignet sich der Ansatz mit "in".
    Für den zweiten Teil könnte man folgendes machen:
    PHP-Code:
    if any(map(lambda xpLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LiVE%d' x)), range(1,8) )): 


    "map" erzeugt eine Liste aus der durch "range" erstellten Liste, indem die durch den "lambda"-Ausdruck definierte Funktion angewendet wird. Elemente von der neuen Liste sind dann "True" oder "False".
    "any" gibt "True" zurück, wenn mindestens 1 "True" vorkommt, andernfalls wird "False" zurückgegeben.

    Das macht den "if"-Teil etwas handbarer.

  15. #270
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von alpha civ Beitrag anzeigen
    Kannst ja auch an eine bereits existierende Klasse dranhängen.
    Muss ich gucken .
    Soll außerdem wohl insgesamt ein Array dynamischer Größe dieser Klasse werden.

    Zitat Zitat von alpha civ Beitrag anzeigen
    Also rekursiv? Dann musst du auch selbst explizit die Funktion aufrufen. Oder soll das von "pWinner.setHasPromotion" erledigt werden?
    Ich dachte eigentlich, dass onUnitPromoted nach einer Beförderung getriggert wird, und pWinner.setHasPromotion befördert nunmal eine Einheit .

    Zitat Zitat von alpha civ Beitrag anzeigen


    Existiert dieser Code wirklich?

    Wenn du dir mal Fictionalization IV runterlädst, schau' besser nicht in die Python-Dateien .

    Zitat Zitat von alpha civ Beitrag anzeigen
    Wenn ja:
    Für den ersten "if"-Teil eignet sich der Ansatz mit "in".
    Für den zweiten Teil könnte man folgendes machen:
    PHP-Code:
    if any(map(lambda xpLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LiVE%d' x)), range(1,8) )): 


    "map" erzeugt eine Liste aus der durch "range" erstellten Liste, indem die durch den "lambda"-Ausdruck definierte Funktion angewendet wird. Elemente von der neuen Liste sind dann "True" oder "False".
    "any" gibt "True" zurück, wenn mindestens 1 "True" vorkommt, andernfalls wird "False" zurückgegeben.

    Das macht den "if"-Teil etwas handbarer.

    Danke .
    Ich glaub', ich hab' in Python noch was zu lernen .
    Umstellen tue ich's nun aber nicht, da mach' ich nur Fehler rein .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


Seite 18 von 271 ErsteErste ... 81415161718192021222868118 ... LetzteLetzte

Berechtigungen

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