NPC Manager

Hier ist der ideale Ort um über Scripts und Mods für X Rebirth zu diskutieren.

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

Post Reply
Revenge22
Posts: 12
Joined: Sun, 6. Apr 14, 09:53

NPC Manager

Post by Revenge22 » Fri, 26. Aug 16, 22:53

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.

User avatar
Marvin Martian
Posts: 3546
Joined: Sun, 8. Apr 12, 09:40
x4

Post by Marvin Martian » Sat, 27. Aug 16, 10:07

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)

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>

Revenge22
Posts: 12
Joined: Sun, 6. Apr 14, 09:53

Post by Revenge22 » Sat, 27. Aug 16, 21:18

Hi, Danke dir. Hast recht, habe den Fehler gefunden, war ein altes mod was Klamotten bei npc tauscht, Mensch, daran habe gar nicht gedacht.

Post Reply

Return to “X Rebirth - Scripts und Modding”