Seite 4 von 7 ErsteErste 1234567 LetzteLetzte
Ergebnis 46 bis 60 von 91

Thema: PAE V - Events

  1. #46
    Keinpferd
    Gast
    Thorgal, kaum die Koffer ausgepackt, und ich nerve schon mit Event-Fragen. Aber falls du zwischendurch eine Minute hast:

    Wie kann man ein Event einem bestimmten Szenario fest zuordnen, ohne daß es in normalen Spielen auftritt? Ich versuche es im Augenblick mit einem sehr dichten Netz von prereqs, die in einem "normalen Spiel" nur mit sehr geringer Wahrscheinlichkeit alle zusammentreten. Aber es kann natürlich immer sein, also doch mal so zusammentreffen in einem normalen Spiel. Ich dachte auch an ein Fakegebäude, baubar ab Future-Tech, das ich ins Szenario reinsetze und dies dann im BuildingsRequired-Tag zur Voraussetzung mache.

    Oder, Pie, ist es möglich, per Python ein Fake-Event zu kreieren in Runde 1 des Szenarios, und alle weiteren Events hätten in diesem Szenario unterm Tag PrereqEvents dieses erste Fake-Event zur Vorbedingung? Obwohl das wohl Quatsch ist. In dem Szenario können ja alle folgenden Events einfach ein erstes, früheres Event zur Vorbedingung haben. Meine Frage beschränkt sich als nur auf die Eingangsfrage: Wie spezifiziere ich ein Event für ein Szenario so, daß es nur in diesem einen Szenario auftreten kann?

    Und worauf muß man nebenbei achten (oder was sollte man unbedingt umschiffen), daß die Erfüllung der Event-Bedingungen nicht ründlich gecheckt wird? (Die Rundenzeiten!)

    Ich bilde, ich habe die Erklärung des iWeight-Tags im Prinzip verstanden:
    iWeight- is a number that affects the probability of this trigger triggering. Applies to events that are active in this game only (as does everything else). Set to -1 if the trigger needs to always occur if the other conditions are met (for example, triggers that determine quest completion should be with -1).

    Wenn mir aber jemand für Doofe simpel erklären kann, wie ich ein Event mit hundertprozentiger Wahrscheinlichkeit in Runde x triggern lasse, wär mir schon sehr geholfen. Inzwischen mach ich weiter mit Trial-and-Error…

  2. #47
    Antiker Benutzer Avatar von BoggyB
    Registriert seit
    21.08.11
    Beiträge
    7.041
    Nun, Events haben ja den Tag <PythonCanDo>, in dem der Name der Python-Funktion festgelegt wird (die Event-Python-Funktionen liegen alle in Python/EntryPoints/CvRandomEventInterface), die überprüft, ob ein Event ausgelöst werden kann (zusätzlich zu dem XML-Kram, denk ich - wenn Python also true zurückgibt, das Event laut XML aber eigentlich nicht möglich ist, wird es auch nicht ausgelöst, ist aber nur ne Vermutung von mir, könnte auch sein, dass PythonCanDo dabei immer Priorität hat, wenn vorhanden). Darin solltest du dann mit gc.getMap().plot(0,0).getScriptData() den auf Plot (0|0) gespeicherten ScriptData-Text des Szenarios, z.B. "EuropeLarge" oder "EasternMed", abfragen können. Mit gc.getGame().getGameTurn() kriegst du die aktuelle Runde und fragst, ob die x ist. Wenn ansonsten keine XML-Bedingungen vorhanden sind, sollte das Event dann genau in Runde x triggern.

    Ründlich geprüft wird das aber eigentlich immer. Ist halt so, wird der ganze XML-Kram der Events ja auch. Meistens ist das ja auch nicht viel und dementsprechend nicht tragisch, und wenn der Python-Kram wirklich viel wäre, kann man den in einen "if gc.getGame().getGameTurn() % z == 0:"-Block setzen, um ihn nur alle z Runden durchzuführen.
    "Only Germans, perhaps, could make a game about economics - a stylish, intelligent and captivating one at that." - The New York Times

  3. #48
    Keinpferd
    Gast
    Danke Boggy, bin am Rumprobieren, aber im Moment paßt eigentlich nur dieser Smiley: .

    .

  4. #49
    Antiker Benutzer Avatar von BoggyB
    Registriert seit
    21.08.11
    Beiträge
    7.041
    Geht's genauer? Um Python kommst du jedenfalls nicht herum.
    "Only Germans, perhaps, could make a game about economics - a stylish, intelligent and captivating one at that." - The New York Times

  5. #50
    Keinpferd
    Gast
    Ja pff, bevor ich andere frage und ihnen mein Zeug auf die Fußmatte kippe, mach du's für mich, versuche ich es doch noch irgendwie erst mal selber geistig zu durchdringen. Aber heute haben unsere Wissenschftler leider eher Rückschläge erlitten. Manchmal geht es mit der Wissenschaft nur langsam voran, oder wie hieß dieser Eventtext noch mal.

    Bild
    Angehängte Grafiken Angehängte Grafiken

  6. #51
    Registrierter Benutzer Avatar von Thorgal
    Registriert seit
    06.08.09
    Beiträge
    5.238
    Der arme Roberto.

    Der Vorschlag von Boggy ist doch gar nicht so schlecht. Aber ohne Hilfe wüsst ich auch nicht, wie man das umsetzt.

    Noch mal ganz allgemein: Ein Event mit -1 bei iWeight triggert immer sofort, wenn die Bedingungen für das Event erfüllt sind. Angenommen du willst ein Event, dass sofort für eine bestimmte Ziv triggert, dann könntest du auch folgendes machen: Dieser Ziv im Szenario irgendwas zuschanzen, was nur diese Ziv dann im Szenario hat und was ne Bedingung in der CIV4EventTriggerInfos-XML ist. Das kann eine Heilige Stadt, ein "Headquarter" eines Kults, ne Tech oder vieles mehr sein. Dann wird das Event für diese Ziv in Runde 1 triggern.
    An dieses Event kannst du dann viele Events dranhängen (Zeile PrereqEvents). Wichtig wär aber, dass du das Event auch wieder schnell veralten lässt, damit das nicht doch noch für jemand triggert (wenn er z.B. die Heilige Stadt erobert).

    Gibt aber noch ein ganz anderes Problem damit, Events für bestimmte Szenarien einzubauen: Mit jedem Event mehr, sinkt auch die Chance aller Events überhaupt zu triggern. Da gibt's sowas wie einen Lostopf aller Events, aus dem Civ dann pro Runde die Wahrscheinlichkeit für das Triggern eines bestimmten Events ableitet. Bei einem einzigen Event für ein spezielles Szenario sicher kein Problem, aber bei sagen wir 10 Events wird's dann doch eher blöd, für alle anderen Spiele.
    Pie's Antikes Europa (PAE): Genieße CIV in der Antike.

    PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.

    Kingdom of Africa: Auf Abwegen im PB 73

  7. #52
    Keinpferd
    Gast
    Neues von der Event-Front. Das "Sokrates-ist-beim-Feldzug-Wissenschaftliche-Arbeit-bleibt-liegen"-Event triggert mit dem iWeight-Minus-1-Tag erfolgreich, dann auch ohne den Minus-1-Tag mit dem Wert 1000, aber die World-News-Meldung dazu erscheint 14 mal.

    BUILDING_ACADAMY1 (Platon ≈ Sokrates) ist Voraussetzung, Hellenismus verobsoletiert es. Ist alles vom SETBACK-Event kopiert und nur diese Tags verändert:

    EventTriggerInfos:
    PHP-Code:
                <BuildingsRequired>
                  <
    BuildingClass>BUILDINGCLASS_ACADEMY_1</BuildingClass>
                </
    BuildingsRequired>
                <
    iNumBuildings>1</iNumBuildings>

                <
    Events>
                    <
    Event>EVENT_SETBACK_SOCRATES_AT_WAR</Event>
                </
    Events>

                <
    ObsoleteTechs>
                    <
    ObsoleteTech>TECH_HELLENISMUS</ObsoleteTech>
                </
    ObsoleteTechs
    Eventinfos:
    <iTechPercent>-80</iTechPercent>

    Dazu oben die Textverweise. Keinen anderen Tag habe ich angefaßt. Was mach ich fasch? Die Meldung darf wohl für den Spieler und in den "World News" doppelt kommen, aber eben nicht vierzehnfach? Thorgal? Oder ein anderer Event-Kundiger?

  8. #53
    Antiker Benutzer Avatar von BoggyB
    Registriert seit
    21.08.11
    Beiträge
    7.041
    Worldnews 14-mal hatte ich auch, das war allerdings eine von Python geschickte Nachricht. Wenn du alles vom ursprünglichen Event kopiert hast, kann es das ja nicht sein
    Oder... Wenn du das Event zum Testen so eingestellt hast, dass es sofort triggert, kann es sein, dass es einfach tatsächlich in derselben Runde für jeden Spieler erschienen ist und dementsprechend so häufig in den Worldnews auftrat?
    "Only Germans, perhaps, could make a game about economics - a stylish, intelligent and captivating one at that." - The New York Times

  9. #54
    Keinpferd
    Gast
    Ja, irgendwo da hängts. Der Wert, den ich anschließend eingegeben hate, war immer noch sehr hoch, und wenn das Ereignis kommt, dann anscheinend für alle. Weiter ausprobieren, es ist noch kein Eventmeister vom Himmel gefallen.

    Edith: Allerdings hätte ich erwartet, daß der Athener Spieler das Event kriegt, denn der hat ja die BUILDINGCLASS_ACADEMY_1, die Platonische Akademie (Platon ≈ Sokrates) als einziger! Wenn das Event "Schmiede-abgebrannt" kommt, das jeder kennt, dann ja nur, wenn man eine Schmiede auch hat.
    Geändert von Keinpferd (20. August 2014 um 19:43 Uhr)

  10. #55
    Registrierter Benutzer Avatar von Thorgal
    Registriert seit
    06.08.09
    Beiträge
    5.238
    Hm, poste doch mal den ganzen Teil aus der Trigger-XML. Meine Erfahrung mit Events ist, dass meistens nur irgendein Detail fehlt. Die Event-XML ist halt leider nicht sehr geordnet aufgebaut, sondern wild durchgemischt...
    Pie's Antikes Europa (PAE): Genieße CIV in der Antike.

    PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.

    Kingdom of Africa: Auf Abwegen im PB 73

  11. #56
    Registrierter Benutzer Avatar von Thorgal
    Registriert seit
    06.08.09
    Beiträge
    5.238
    Ah Moment, kurz überlegt. Du willst ja ein Gebäude als Bedingung haben, dann musst du bei bPickCity eine 1 setzen.
    Pie's Antikes Europa (PAE): Genieße CIV in der Antike.

    PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.

    Kingdom of Africa: Auf Abwegen im PB 73

  12. #57
    Keinpferd
    Gast
    EventInfos:
    Achtung Spoiler:
    <EventInfo>
    <Type>EVENT_SETBACK_SOCRATES_AT_WAR</Type>
    <Description>TXT_KEY_EVENT_SETBACK_SOCRATES_AT_WAR</Description>
    <LocalInfoText/>
    <WorldNewsTexts/>
    <OtherPlayerPopup/>
    <QuestFailText/>
    <bQuest>0</bQuest>
    <bGlobal>0</bGlobal>
    <bTeam>0</bTeam>
    <bPickCity>0</bPickCity>
    <bPickOtherPlayerCity>0</bPickOtherPlayerCity>
    <bDeclareWar>0</bDeclareWar>
    <iGold>0</iGold>
    <bGoldToPlayer>0</bGoldToPlayer>
    <iRandomGold>0</iRandomGold>
    <iCulture>0</iCulture>
    <iEspionagePoints>0</iEspionagePoints>
    <bGoldenAge>0</bGoldenAge>
    <iFreeUnitSupport>0</iFreeUnitSupport>
    <iInflationMod>0</iInflationMod>
    <iSpaceProductionMod>0</iSpaceProductionMod>
    <Tech>NONE</Tech>
    <TechFlavors/>
    <iTechPercent>-80</iTechPercent>
    <iTechCostPercent>0</iTechCostPercent>
    <iTechMinTurnsLeft>2</iTechMinTurnsLeft>
    <PrereqTech>NONE</PrereqTech>
    <UnitClass>NONE</UnitClass>
    <iNumFreeUnits>0</iNumFreeUnits>
    <bDisbandUnit>0</bDisbandUnit>
    <iUnitExperience>0</iUnitExperience>
    <iUnitImmobileTurns>0</iUnitImmobileTurns>
    <UnitPromotion/>
    <UnitName/>
    <UnitCombatPromotions/>
    <UnitClassPromotions/>
    <BuildingClass>NONE</BuildingClass>
    <iBuildingChange>0</iBuildingChange>
    <BuildingExtraYields/>
    <BuildingExtraCommerces/>
    <BuildingExtraHappies/>
    <BuildingExtraHealths/>
    <iHappy>0</iHappy>
    <iHealth>0</iHealth>
    <iHurryAnger>0</iHurryAnger>
    <iHappyTurns>0</iHappyTurns>
    <iRevoltTurns>0</iRevoltTurns>
    <iMinPillage>0</iMinPillage>
    <iMaxPillage>0</iMaxPillage>
    <iFood>0</iFood>
    <iFoodPercent>0</iFoodPercent>
    <FreeSpecialistCounts/>
    <FeatureType>NONE</FeatureType>
    <iFeatureChange>0</iFeatureChange>
    <ImprovementType>NONE</ImprovementType>
    <iImprovementChange>0</iImprovementChange>
    <BonusType>NONE</BonusType>
    <iBonusChange>0</iBonusChange>
    <RouteType>NONE</RouteType>
    <iRouteChange>0</iRouteChange>
    <BonusRevealed>NONE</BonusRevealed>
    <BonusGift>NONE</BonusGift>
    <PlotExtraYields/>
    <iConvertOwnCities>0</iConvertOwnCities>
    <iConvertOtherCities>0</iConvertOtherCities>
    <iMaxNumReligions>-1</iMaxNumReligions>
    <iOurAttitudeModifier>0</iOurAttitudeModifier>
    <iAttitudeModifier>0</iAttitudeModifier>
    <iTheirEnemyAttitudeModifier>0</iTheirEnemyAttitudeModifier>
    <iPopulationChange>0</iPopulationChange>
    <AdditionalEvents/>
    <EventTimes/>
    <ClearEvents/>
    <PythonCallback/>
    <PythonExpireCheck/>
    <PythonCanDo/>
    <PythonHelp/>
    <Button>,Art/Interface/Buttons/Process/Blank.dds,Art/Interface/Buttons/Beyond_the_Sword_Atlas.dds,8,5</Button>
    <iAIValue>1000</iAIValue>
    </EventInfo>


    Trigger:
    Achtung Spoiler:
    <EventTriggerInfo>
    <Type>EVENTTRIGGER_SOCRATES_AT_WAR</Type>
    <WorldNewsTexts>
    <Text>TXT_KEY_EVENT_TRIGGER_SOCRATES_AT_WAR_ALL</Text>
    </WorldNewsTexts>
    <TriggerTexts>
    <TriggerText>
    <Text>TXT_KEY_EVENT_TRIGGER_SOCRATES_AT_WAR</Text>
    <Era>NONE</Era>
    </TriggerText>
    </TriggerTexts>
    <bSinglePlayer>0</bSinglePlayer>
    <iPercentGamesActive>100</iPercentGamesActive>
    <iWeight>800</iWeight>
    <bProbabilityUnitMultiply>0</bProbabilityUnitMultiply>
    <bProbabilityBuildingMultiply>0</bProbabilityBuildingMultiply>
    <Civic>NONE</Civic>
    <iMinTreasury>0</iMinTreasury>
    <iMinPopulation>0</iMinPopulation>
    <iMaxPopulation>0</iMaxPopulation>
    <iMinMapLandmass>0</iMinMapLandmass>
    <iMinOurLandmass>0</iMinOurLandmass>
    <iMaxOurLandmass>-1</iMaxOurLandmass>
    <MinDifficulty>NONE</MinDifficulty>
    <iAngry>0</iAngry>
    <iUnhealthy>0</iUnhealthy>
    <UnitsRequired/>
    <iNumUnits>0</iNumUnits>
    <iNumUnitsGlobal>0</iNumUnitsGlobal>
    <iUnitDamagedWeight>0</iUnitDamagedWeight>
    <iUnitDistanceWeight>0</iUnitDistanceWeight>
    <iUnitExperienceWeight>0</iUnitExperienceWeight>
    <bUnitsOnPlot>0</bUnitsOnPlot>
    <BuildingsRequired>
    <BuildingClass>BUILDINGCLASS_ACADEMY_1</BuildingClass>
    </BuildingsRequired>
    <iNumBuildings>1</iNumBuildings>
    <iNumBuildingsGlobal>0</iNumBuildingsGlobal>
    <iNumPlotsRequired>0</iNumPlotsRequired>
    <bOwnPlot>1</bOwnPlot>
    <iPlotType>-1</iPlotType>
    <FeaturesRequired/>
    <TerrainsRequired/>
    <ImprovementsRequired/>
    <BonusesRequired/>
    <RoutesRequired/>
    <ReligionsRequired/>
    <iNumReligions>0</iNumReligions>
    <CorporationsRequired/>
    <iNumCorporations>0</iNumCorporations>
    <bPickReligion>0</bPickReligion>
    <bStateReligion>0</bStateReligion>
    <bHolyCity>0</bHolyCity>
    <bPickCorporation>0</bPickCorporation>
    <bHeadquarters>0</bHeadquarters>
    <Events>
    <Event>EVENT_SETBACK_SOCRATES_AT_WAR</Event>
    </Events>
    <PrereqEvents/>
    <bPrereqEventPlot>0</bPrereqEventPlot>
    <OrPreReqs/>
    <AndPreReqs/>
    <ObsoleteTechs>
    <ObsoleteTech>TECH_HELLENISMUS</ObsoleteTech>
    </ObsoleteTechs>
    <bRecurring>1</bRecurring>
    <bTeam>0</bTeam>
    <bGlobal>0</bGlobal>
    <bPickPlayer>0</bPickPlayer>
    <bOtherPlayerWar>1</bOtherPlayerWar>
    <bOtherPlayerHasReligion>0</bOtherPlayerHasReligion>
    <bOtherPlayerHasOtherReligion>0</bOtherPlayerHasOtherReligion>
    <bOtherPlayerAI>0</bOtherPlayerAI>
    <iOtherPlayerShareBorders>0</iOtherPlayerShareBorders>
    <OtherPlayerHasTech>NONE</OtherPlayerHasTech>
    <bPickCity>1</bPickCity>
    <bPickOtherPlayerCity>0</bPickOtherPlayerCity>
    <bShowPlot>0</bShowPlot>
    <iCityFoodWeight>0</iCityFoodWeight>
    <PythonCanDo/>
    <PythonCanDoCity/>
    <PythonCanDoUnit/>
    <PythonCallback/>
    </EventTriggerInfo>


    Der XML-Log verrät, daß in der EventInfos-Datei schwer was verkehrt sein muß
    Angehängte Dateien Angehängte Dateien

  13. #58
    Keinpferd
    Gast
    Zitat Zitat von Thorgal Beitrag anzeigen
    Gibt aber noch ein ganz anderes Problem damit, Events für bestimmte Szenarien einzubauen: Mit jedem Event mehr, sinkt auch die Chance aller Events überhaupt zu triggern. Da gibt's sowas wie einen Lostopf aller Events, aus dem Civ dann pro Runde die Wahrscheinlichkeit für das Triggern eines bestimmten Events ableitet. Bei einem einzigen Event für ein spezielles Szenario sicher kein Problem, aber bei sagen wir 10 Events wird's dann doch eher blöd, für alle anderen Spiele.
    Auch bei Events, die nur einen Spieler betreffen können, sagen wir, er hätte die Corporation Headquarters eines Kultes oder eine Holy City oder 3 Akademien? In PAE gibt es 197 Events abzüglich der erledigten Quest, die technisch, wenn ich's richtig verstehe, auch einen Eventtrigger-Tag besitzen. Also schätzungsweise so 150. Wenn ein Event vorher ein iWeight von 300 hatte, muß es nach den 10 neugeschaffenen Events ein iWeight von 320 bekommen, dann sollte es mit der alten Wahrscheinlichkeit triggern. Man müßte halt nur einen Sklaven finden, der in allen 150 Eventtags den Wert raufsetzt.

  14. #59
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Warum 320 und nicht 310?
    Tick tock goes the clock...

  15. #60
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.397
    @antriot:
    150 - 300
    160 - ?



    @Keinpferd:
    Thorgal hat dir die Lösung doch schon genannt. "dann musst du bei bPickCity eine 1 setzen"

Seite 4 von 7 ErsteErste 1234567 LetzteLetzte

Berechtigungen

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