PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CreateUnit Init section


Sajiki
22.03.2014, 13:10
Hallo, :)

ich komme nicht weiter und wollten heute meine Mission los spielen >.<

Folgendes, nach dem ich gemerkt habe das sich nur maximal 144 Einheiten pro Seite erstellen lassen muss ich umdenken um Städte zu bevölkern. Was sogar ressourcen schonend ist sie einfach per Script spawnen zu lassen.

Bei verlassen der Stadt dann einfach wieder löschen, habe ich und klappt toll :D

Nun aber mein anderes Problem mit CreateUnit und dem Init teil.

Ich rufe bei meinen Zivis folgendes auf:
this addAction [localize "STR_ZIVI_01", "peoples.sqf", [this,"zufall"], -1, false, True, "", "(_target distance _this) < 2"]

Was macht es, es ruft die peoples.sqf auf und gibt mir eben meinen gewünschten teil aus dieser Datei. Und das soll so beibehalten sein.

Jedoch wenn ich jetzt mit CreatUnit arbeite habe ich es so gemacht:
veh1 = grp01 createunit ["C_man_w_worker_F",getMarkerPos "spawn", [this addAction [localize "STR_ZIVI_01", "peoples.sqf", [this,"info1"], -1, false, True, "", "(_target distance _this) < 2"]], 0, "none"];

Aber danach spawnt die Einheit nicht mehr oO

mit:
veh1 = grp01 createunit ["C_man_w_worker_F",getMarkerPos "spawn", [], 0, "none"];

geht es, habe schon versucht mit ["Code"] oder nur "" oder nichts oO
Wie gesagt der CreateUnit Code alleine klappt aber sobald ich die INIT befülle ist es vorbei!

In der beschreibung steht ja drin das es der Bereich für die INIT ist und bei den Modellen wenn ich sie direkt platziere klappt mein code oben doch auch oO
https://community.bistudio.com/wiki/createUnit


Was mache ich da schon wieder falsch :(

mfg
Sajiki

Duke49th
22.03.2014, 15:35
Als jemand mit schwacher Hardware, mein Tipp: Warte bis DAC fertig ist. Dieses erstellt bei Missionsbeginn alle Einheiten und reduziert dann alles bis auf den Lead.

Beim Wiederherstellen der Einheiten die zum Lead gehören, gibt es weniger Ruckler, als wenn eine ganze Gruppe erstellt wird.

Ich habe das vor allem bemerkt als einer aus unserer Staffel bei seiner Mission Gruppen per Trigger hat erstellen lassen.

Beim Spawnen von von Gruppen werden wohl so viele Paramete und Daten erzeugt/abgefragt das dies eine deutlich größere Performance benötigt als wenn die nur wie im DAC Script reduziert werden. Ich glaube hier sind die Einheiten gecached (werden also nicht jedesmal komplett neu erstellt). Daher so vergleichsweise wenig Performanceeinbrüche.


Ausserdem gibts ein Addon welches die Insel mit Zivilisten belebt...weiss nur nicht mehr den Namen.


Ansonsten kann ich nicht viel dazu sagen, ausser das ich mich wundere warum Du der KI Einheit versuchst einen Actionmenü Eintrag zu verpassen?! (this addaction) - Was ja nicht geht..da KI...vielleicht gehts daher nicht...?

Drunken Officer
22.03.2014, 16:12
Löscht denn DAC auch die Gruppen? Er hat ja das 144er Obergrenzenproblem.
Auch wenn nur der Führer da ist, ist es ein Gruppe.

Beim erstellen der Gruppen, kann man mit Sleep/ waitUntil / unitready arbeiten. Da dürfte es nicht so massiv reinhauen.

Und man kann einer KI sehrwohl einen Actioneintrag verpassen! z.B. wenn man sie retten oder gefangen nehmen will. :jaaa:

Probiere mal das hier:
veh1 = grp01 createunit ["C_man_w_worker_F",getMarkerPos "spawn", [veh1 addAction [localize "STR_ZIVI_01", "peoples.sqf", [this,"info1"], -1, false, True, "", "(_target distance _this) < 2"]], 0, "none"]

Duke49th
22.03.2014, 16:25
Der KI einen Actioneintrag verpassen?

Dann ist das wohl so gemeint, daß man selber einen Actioneintrag hat, wenn man der KI begegnet? Weil...die KI hat ja keine 3. Maustaste^^
Ok...in dem Fall verstehe ich es...dachte aber man verpasst dazu dem Spieler ein Actioneintrag...!?

@DAC: So wie ich das in Erinnerung habe, löscht DAC nix, ausser maximal die Einheiten, abseits vom Lead. Und 144 Gruppen muss man erstmal erstellen^^

Frage mich gerade was für ein Rechenzentrum man dazu braucht :ugly:
(Das ist ja 144 pro Seite...und man will ja auch noch was machen..also noch mehr Skripte, Einheiten usw.)
P.s.: Sorry für OT...

Sajiki
22.03.2014, 20:26
Als jemand mit schwacher Hardware, mein Tipp: Warte bis DAC fertig ist. Dieses erstellt bei Missionsbeginn alle Einheiten und reduziert dann alles bis auf den Lead.

Beim Wiederherstellen der Einheiten die zum Lead gehören, gibt es weniger Ruckler, als wenn eine ganze Gruppe erstellt wird.

Ich habe das vor allem bemerkt als einer aus unserer Staffel bei seiner Mission Gruppen per Trigger hat erstellen lassen.

Beim Spawnen von von Gruppen werden wohl so viele Paramete und Daten erzeugt/abgefragt das dies eine deutlich größere Performance benötigt als wenn die nur wie im DAC Script reduziert werden. Ich glaube hier sind die Einheiten gecached (werden also nicht jedesmal komplett neu erstellt). Daher so vergleichsweise wenig Performanceeinbrüche.


Ausserdem gibts ein Addon welches die Insel mit Zivilisten belebt...weiss nur nicht mehr den Namen.

Aus dem Grund das externe spawnen jetzt ;)



Ansonsten kann ich nicht viel dazu sagen, ausser das ich mich wundere warum Du der KI Einheit versuchst einen Actionmenü Eintrag zu verpassen?! (this addaction) - Was ja nicht geht..da KI...vielleicht gehts daher nicht...?
Weil ich dem Spieler die Möglichkeiten gebe die Bevölkerung zu befragen und dem entsprechend manchmal hilfreiche Informationen gibt die dem Leader helfen ;)



Probiere mal das hier:
veh1 = grp01 createunit ["C_man_w_worker_F",getMarkerPos "spawn", [veh1 addAction [localize "STR_ZIVI_01", "peoples.sqf", [this,"info1"], -1, false, True, "", "(_target distance _this) < 2"]], 0, "none"]

Leider nein, damit funzt der komplette eintrag nicht mehr und das Script stürzt ab :/

mfg
Sajiki

Sajiki
23.03.2014, 17:06
ERLEDIGT

und für andere weil ich kein Unmensch bin ;)
createUnit [getMarkerPos "spawn",grp01,"this setVehicleVarName 'veh1'; this addAction [localize 'STR_ZIVI_01','peoples.sqf', [this,'zufall'], -1, false, True, '', '(_target distance _this) < 2']"
];

mfg
Sajiki

Sajiki
25.03.2014, 13:58
Ich muss mein Thema leider wieder hoch holen :rolleyes:

Also es geht dieses mal darum die Einheit zu löschen die ich erstellt habe. Sitze schon seit zwei Tagen dran ohne Erfolg :/

Die Einheit wird so nun erstellt:
grp01 = creategroup civilian;
veh1 = "C_man_polo_6_F"
createUnit [getMarkerPos "spawn_town01_01",grp01,"this setVehicleVarName 'veh1'; this addAction [localize 'STR_ZIVI_01', 'people.sqf', [this,'zufallfeind'], -1, false, True, '', '(_target distance _this) < 2']"];


Das ganze wird über eine Switch funktion gesteuert falls das wichtig ist.


Wenn ich nun aber meine Eihnheit wieder löschen möchte habe ich folgendes genommen was bis jetzt immer klappte:
deleteVehicle veh1;

klappt aber nicht. Bereits getestet:
deleteVehicle veh1;
deleteVehicle grp01;

deleteGroup grp01;
deleteVehicle veh1;
{deleteVehicle veh1} forEach allUnits;
{deleteGroup grp01} forEach allUnits;

:nixweiss:

mfg
Sajiki

Vienna
25.03.2014, 14:12
In veh1 steht ja jetzt der String "C_man_polo_6_F"

Das löscht alle Einheiten der Gruppe grp01:

{deleteVehicle _x} forEach units grp01;

Sajiki
25.03.2014, 15:00
In veh1 steht ja jetzt der String "C_man_polo_6_F"
:omg: ich idiot! Das ist mir gar nicht aufgefallen, dann kann ich ja lange nach veh1 greifen :/


Das löscht alle Einheiten der Gruppe grp01:

{deleteVehicle _x} forEach units grp01;
Danke :) Damit kann ich weiter bauen, hat dir schon mal wer gesagt wie schlau du bist?!

mfg
Sajiki

Drunken Officer
25.03.2014, 17:34
Denke daran, dass es die Gruppe noch gibt, auch wenn alle Einheiten tot sind. Du solltest also auch die Gruppe löschen, wenn du sie nimmer brauchst

Sajiki
25.03.2014, 17:47
Denke daran, dass es die Gruppe noch gibt, auch wenn alle Einheiten tot sind. Du solltest also auch die Gruppe löschen, wenn du sie nimmer brauchst

Hab ich mir schon gedacht ;) Aber danke trotzdem für das aufmerksam machen :)