NPC Manager
Moderators: Moderators for English X Forum, Scripting / Modding Moderators
NPC Manager
Hi, mir ist aufgefallen, das auf vielen stationen manager fehlen,und dadurch kein handel zustande kommt.Kann man einer npc station manager zuweisen? egal wie, mit mod oder console? Danke.
- Marvin Martian
- Posts: 3546
- Joined: Sun, 8. Apr 12, 09:40
normal fehlen keine NPCs, IMO werden die für gewöhnlich auch nicht zufällig getötet
das kann nur vorkommen wenn eine Station per Script zerstört wird und beim neu laden wieder spawnt oder erst in ein laufendes Spiel als neues Karten-Objekt integriert wird, wobei dann eigentlich garkeine Kontroll-NPCs vorhanden sein sollten
nun prinzipiell kann man das schon per mod lösen, allerdings würde ich vorher erst mal auskaspern warum überhaupt der NPC fehlt
sonst kannst du es mal damit versuchen (hab es jetzt nicht gestest sollte aber gehen)
das kann nur vorkommen wenn eine Station per Script zerstört wird und beim neu laden wieder spawnt oder erst in ein laufendes Spiel als neues Karten-Objekt integriert wird, wobei dann eigentlich garkeine Kontroll-NPCs vorhanden sein sollten
nun prinzipiell kann man das schon per mod lösen, allerdings würde ich vorher erst mal auskaspern warum überhaupt der NPC fehlt
sonst kannst du es mal damit versuchen (hab es jetzt nicht gestest sollte aber gehen)
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<mdscript name="NPCfixer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="md.xsd">
<cues>
<cue name="NPCfixer_work" >
<conditions>
<event_game_loaded />
</conditions>
<actions>
<find_station name="$stations" space="player.galaxy" multiple="true">
<match owner="faction.enemy" negate="true"/>
<match owner="faction.criminal" negate="true"/>
<match owner="faction.smuggler" negate="true"/>
<match owner="faction.neutral" negate="true"/>
<match owner="faction.ownerless" negate="true"/>
<match owner="faction.player" negate="true"/>
<match owner="faction.friend" negate="true"/>
</find_station>
<do_all exact="$stations.count" counter="$i" >
<do_if value="$stations.{$i}.tradenpc and $stations.{$i}.engineer and $stations.{$i}.defencenpc">
<continue />
</do_if>
<do_if value="$stations.{$i}.tradenpc or $stations.{$i}.engineer or $stations.{$i}.defencenpc" negate="true">
<signal_objects object="player.galaxy" param="'init station'" param2="$stations.{$i}"/>
</do_if>
<do_else>
<do_if value="$stations.{$i}.tradenpc" negate="true">
<do_if value="$stations.{$i}.resources.list.count or $stations.{$i}.products.list.count">
<create_cue_actor name="$manager" cue="this">
<select race="[race.argon, race.split, race.terran, race.teladi].random" tags="tag.manager"/>
<owner exact="$stations.{$i}.owner"/>
</create_cue_actor>
<set_entity_type entity="$manager" type="entitytype.manager" />
<assign_trade_manager object="$stations.{$i}" actor="$manager"/>
<do_if value="$stations.{$i}.canbuildships">
<start_script object="$manager" name="'trade.shipyard'"/>
</do_if>
<do_elseif value="$stations.{$i}.canproduceships">
<start_script object="$manager" name="'trade.shipyard.small'"/>
</do_elseif>
<do_elseif value="$stations.{$i}.isplayerowned">
<start_script object="$manager" name="'trade.station.player'"/>
</do_elseif>
<do_else>
<start_script object="$manager" name="'trade.station'"/>
</do_else>
</do_if>
</do_if>
<do_if value="$stations.{$i}.engineer" negate="true">
<create_cue_actor name="$engineer" cue="this">
<select race="[race.argon, race.split, race.terran, race.teladi].random" tags="tag.engineer"/>
<owner exact="$stations.{$i}.owner"/>
</create_cue_actor>
<set_entity_type entity="$engineer" type="entitytype.engineer" />
<assign_engineer object="$stations.{$i}" actor="$engineer" />
<start_script object="$engineer" name="'engineer.ai'" />
</do_if>
<do_if value="$stations.{$i}.defencenpc" negate="true">
<create_cue_actor name="$defencemanager" cue="this">
<select race="[race.argon, race.split, race.terran, race.teladi].random" tags="tag.defencecontrol"/>
<owner exact="$stations.{$i}.owner"/>
</create_cue_actor>
<set_entity_type entity="$defencemanager" type="entitytype.defencecontrol" />
<assign_defence_manager object="$stations.{$i}" actor="$defencemanager"/>
<start_script object="$defencemanager" name="if $stations.{$i}.owner == faction.player then 'fight.station.player' else 'fight.attack.object'" />
<create_ai_unit object="$stations.{$i}" />
</do_if>
<remove_value name="$defencemanager"/>
<remove_value name="$engineer"/>
<remove_value name="$manager"/>
</do_else>
</do_all>
<reset_cue cue="this" />
</actions>
</cue>
</cues>
</mdscript>