29.07.2008, 15:19 | #1 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
per Skript erstellte Einheiten Namen vergeben
Hallo,
Ich möchte Einheiten die im laufe der Map (genauer gesagt bei Warfare) gekauft werden einen Namen verpassen. Es soll so sein als würde man im Editor einem Fahrzeug im Feld Name dort den Namen vergibt. Was ich bis jetzt herausgefunden habe dass man Fahrzeugen etc Namen vergibt in dem man z.B. _name = name f1 schreibt leider weiß ich nicht wo und genau wie ich dieses im betreffenden Skript hineinschreiben muss. Hier das Skript wo die Hubschrauber bei der warfare erstellt werden Code:
;Last modified 3/18/8 ;***************************************************************************************** ;Description: Aircraft factory configurations. ;_o = One man vehicle. ;***************************************************************************************** ;WEST _u = ["MH6"] _d = [Localize "STR_DN_MH6"] _c = [2500] _m = [2500 + (westBarracksCosts Select WPILOTTYPE)] _t = [35] _p = [20] _o = [true] _i = ["\ca\air\data\ico\mh6_lb_CA.paa"] _name = name WestSlot1 _u = _u + ["AH6"] _d = _d + [Localize "STR_DN_AH6"] _c = _c + [2800] _m = _m + [2800 + (westBarracksCosts Select WPILOTTYPE)] _t = _t + [40] _p = _p + [30] _o = _o + [true] _i = _i + ["\ca\air\data\ico\ah6_lb_CA.paa"] _u = _u + ["UH60MG"] _d = _d + [Localize "STR_DN_UH60_MG"] _c = _c + [1800] _m = _m + [1800 + (westBarracksCosts Select WPILOTTYPE) * 3] _t = _t + [40] _p = _p + [25] _o = _o + [false] _i = _i + ["\ca\air\data\ico\uh_60mg_CA.paa"] _u = _u + ["UH60"] _d = _d + [Localize "STR_DN_UH60"] _c = _c + [5000] _m = _m + [5000 + (westBarracksCosts Select WPILOTTYPE)] _t = _t + [45] _p = _p + [40] _o = _o + [true] _i = _i + ["\ca\air\data\ico\uh_60_CA.paa"] _u = _u + ["AH1W"] _d = _d + [Localize "STR_DN_AH1Z"] _c = _c + [8000] _m = _m + [8000 + (westBarracksCosts Select WPILOTTYPE) * 2] _t = _t + [55] _p = _p + [50] _o = _o + [false] _i = _i + ["\ca\air\data\ico\ah1z_CA.paa"] for [{_count = Count _u - 1},{_count >= 0},{_count = _count - 1}] do {Call Compile Format["%1TYPE = %2",_u Select _count,_count];} ;Used to calculate amount of units needed to buy vehicle. westOneManAircraftVehicles = [] for [{_count = Count _u - 1},{_count >= 0},{_count = _count - 1}] do {if (_o Select _count) then {westOneManAircraftVehicles = westOneManAircraftVehicles + [_count]};} westAircraftUnits = _u westAircraftDescriptions = _d westAircraftCosts = _c westAircraftMannedCosts = _m westAircraftTimes = _t westAircraftPoints = _p westAircraftImages = _i ;EAST _u = ["MI17_MG"] _d = [Localize "STR_DN_MI17_MG"] _c = [2800] _m = [2800 + (eastBarracksCosts Select EPILOTTYPE) * 2] _t = [35] _p = [20] _o = [false] _i = ["\ca\air\data\ico\mi17_hip_mg_CA.paa"] _u = _u + ["MI17"] _d = _d + [Localize "STR_DN_MI17"] _c = _c + [5500] _m = _m + [5500 + (eastBarracksCosts Select EPILOTTYPE)] _t = _t + [45] _p = _p + [40] _o = _o + [true] _i = _i + ["\ca\air\data\ico\mi17_HIP_CA.paa"] _u = _u + ["KA50"] _d = _d + [Localize "STR_DN_KA50"] _c = _c + [9000] _m = _m + [9000 + (eastBarracksCosts Select EPILOTTYPE)] _t = _t + [55] _p = _p + [50] _o = _o + [true] _i = _i + ["\ca\air\data\ico\ka50_CA.paa"] for [{_count = Count _u - 1},{_count >= 0},{_count = _count - 1}] do {Call Compile Format["%1TYPE = %2",_u Select _count,_count];} ;Used to calculate amount of units needed to buy vehicle. eastOneManAircraftVehicles = [] for [{_count = Count _u - 1},{_count >= 0},{_count = _count - 1}] do {if (_o Select _count) then {eastOneManAircraftVehicles = eastOneManAircraftVehicles + [_count]};} eastAircraftUnits = _u eastAircraftDescriptions = _d eastAircraftCosts = _c eastAircraftMannedCosts = _m eastAircraftTimes = _t eastAircraftPoints = _p eastAircraftImages = _i ;RESISTANCE resistanceAircraftUnits = [] resistanceAircraftDescriptions = [] resistanceAircraftCosts = [] resistanceAircraftMannedCosts = [] resistanceAircraftTimes = [] resistanceAircraftPoints = [] resistanceAircraftImages = [] aircraftUnits = westAircraftUnits + eastAircraftUnits + resistanceAircraftUnits aircraftUnitCosts = westAircraftCosts + eastAircraftCosts + resistanceAircraftCosts aircraftUnitDescriptions = westAircraftDescriptions + eastAircraftDescriptions + resistanceAircraftDescriptions ;Determine longest build time. longestAircraftBuildTime = 0 _t = eastAircraftTimes + westAircraftTimes + resistanceAircraftTimes for [{_count = Count _t - 1},{_count >= 0},{_count = _count - 1}] do {if (_t Select _count > longestAircraftBuildTime) then {longestAircraftBuildTime = _t Select _count};} ;***************************************************************************************** ;6/13/7 MM - Created file. Welche Frage sich mir dann auch stellen würde ist was passiert wenn mehr als einer das selber Fahrzeug kauft wird der name dann erweiter z.b. In f1_1 statt f1 oder stößt man hier auf ein Problem da man den Namen festgelegt hat und alle erstellten Fahrzeugen zwangsläufig den selben Namen tragen aber nur eines einen Namen haben kann und das 2. Fahrzeug sozusagen leerausgeht also keinen namen bekommt? Mfg
__________________
stolzes member der Freaky Fraggers |
29.07.2008, 19:04 | #3 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
ich möchte das flare system von mando in die map hinzufügen da man in der init zeile den namen des vehicles angeben muss damit die raketen überhaupt auf die flares reagieren
init.sqf // Mando Missile ArmA initialization []execVM"mando_missiles\mando_missileinit.sqf"; [names des AH6 Hubschraubers, 400, 1, 2, true]execVM"mando_missiles\units\mando_missileecm.sqf"; /// [["AH6"], 0, "", [0,0], [0,0], 15, 15, "mando_missiles\units\mando_missilevehicle.sqf ", false, false, false, false, [0,0,0], "mando_missiles\units\keysets\mando_air1_keys.sqf" , 5, 20, 3, 0]execVm"mando_missiles\units\mando_assignvehicle_by _type.sqf"; wenn der aufruf mit dem namen des fahrzeuges nicht vorhanden ist funktionieren zwar die flares aber die raketen reagieren nicht drauf deshalb muessen die fahrzeuge namen haben
__________________
stolzes member der Freaky Fraggers |
29.07.2008, 19:47 | #5 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
ein skript das so ähnlich heißt hab ich nicht gefunden aber im skript client_buyUnit gibt es ne kategorie createvehicle
Code:
;Last modified 4/24/8 ;***************************************************************************************** ;Description: Buys a unit. ;***************************************************************************************** _type = _this Select 0 _unitType = _this Select 1 _factory = _this Select 2 _empty = _this Select 3 _team = Group player if (Count _this > 4) then {_team = _this Select 4} if (IsNull _factory) then {Exit}; if (GetDammage _factory >= 1) then {Exit}; _factoryName = "" if (Call Compile Format["_type == %1AIRPORTTYPE",sideJoinedText]) then {_factoryName = "WingedAircraft"}; if (Call Compile Format["_type == %1DEPOTTYPE",sideJoinedText]) then {_factoryName = "Depot"}; if (_factoryName == "") then {_factoryName = Call Compile Format["%1Structures Select _type",sideJoinedText]}; _unit = Call Compile Format["%1%2Units Select _unitType",sideJoinedText,_factoryName] _cost = Call Compile Format["%1%2Costs Select _unitType",sideJoinedText,_factoryName] if (!_empty) then {_cost = Call Compile Format["%1%2MannedCosts Select _unitType",sideJoinedText,_factoryName]}; _time = Call Compile Format["%1%2Times Select _unitType",sideJoinedText,_factoryName] _oneMan = Call Compile Format["(_unitType In %1OneMan%2Vehicles)",sideJoinedText,_factoryName] _totalUnits = Count (Units _team Call GetLiveUnits) ;Vehicles have 2 units instead of one, so increase by 1. if (_type != EASTBARRACKSTYPE && _type != WESTBARRACKSTYPE && !_empty && !_oneMan) then {_totalUnits = _totalUnits + 1}; if (!_empty && _totalUnits + 1 > MAXPLAYERTEAMSIZE) then {Exit}; if (_cost > (Call GetPlayerFunds)) then {Exit}; (-_cost) Call ChangePlayerFunds [CMDREQUESTUSESTRUCTURE,_factory,_time] Exec "Client\Client_CommandToServer.sqs" ~_time if (IsNull _factory) then {Exit}; if (GetDammage _factory >= 1) then {Exit}; if (!Local Leader _team) then {Goto "CreateRemote"}; _position = [GetPos _factory,14,GetDir _factory + 180] Call GetPositionFrom if (Call Compile Format["_type == %1AIRCRAFTTYPE",sideJoinedText]) then {_position = [GetPos _factory,21,GetDir _factory] Call GetPositionFrom}; if (Call Compile Format["_type == %1AIRPORTTYPE",sideJoinedText]) then {_position = [GetPos _factory,38,GetDir _factory + 180] Call GetPositionFrom}; if (_unit In soldierUnits) then {Goto "CreateUnit"}; #CreateVehicle _vehicle = _unit CreateVehicle _position if(_unit == "AH6") then {_vehicle addWeapon "TwinM134";}; if(_unit == "SU34B") then {_vehicle removeWeapon "Ch29Launcher"; _vehicle removeMagazine "4Rnd_Ch29"; _vehicle addWeapon "BombLauncher"; _vehicle addMagazine "6Rnd_GBU12_AV8B";}; if(_unit == "KA50") then {_vehicle removeWeapon "VikhrLauncher"; _vehicle removeMagazine "12Rnd_Vikhr_KA50"; _vehicle addWeapon "Ch29Launcher"; _vehicle addMagazine "4Rnd_Ch29"; _vehicle addMagazine "4Rnd_Ch29"; _vehicle addMagazine "4Rnd_Ch29"; _vehicle addMagazine "40Rnd_80mm";}; if(_unit == "A10") then {_vehicle removeWeapon "MaverickLauncher"; _vehicle removeMagazine "5Rnd_Maverick_A10"; _vehicle addWeapon "BombLauncher"; _vehicle addMagazine "6Rnd_GBU12_AV8B";}; if(_unit == "ZSU") then {_vehicle addMagazine "2000Rnd_23mm_AZP85"; _vehicle addWeapon "AZP85"; _vehicle addMagazine "2000Rnd_23mm_AZP85"; _vehicle addWeapon "AZP85"; _vehicle addMagazine "2000Rnd_23mm_AZP85"; _vehicle addWeapon "AZP85"; _vehicle addMagazine "2000Rnd_23mm_AZP85";}; if(_unit == "Vulcan") then {_vehicle addMagazine "2100Rnd_20mm_M168";}; _vehicle SetDir ((GetDir _factory + 270) % 360) [_vehicle,sideJoined] Call InitUnit if (_unit == Format["Warfare%1SupplyTruck",sideJoinedText]) then {[sideJoined,_vehicle] Spawn UpdateSupplyTruck}; if (_empty) then {Exit}; _soldierName = Call Compile Format["%1SOLDIER",sideJoinedShortText] #CreateDriver _driver = _team CreateUnit [_soldierName,GetPos _vehicle,[],0.2,"FORM"] [_driver,sideJoined] Call InitUnit [_driver] AllowGetIn true _driver MoveInDriver _vehicle #CreateGunner if (_vehicle EmptyPositions "gunner" < 1) then {Exit}; _gunner = _team CreateUnit [_soldierName,GetPos _vehicle,[],0.2,"FORM"] [_gunner,sideJoined] Call InitUnit [_gunner] AllowGetIn true _gunner MoveInGunner _vehicle Exit #CreateUnit _soldier = _team CreateUnit [_unit,_position,[],0.2,"FORM"] [_soldier,sideJoined] Call InitUnit Exit #CreateRemote [CMDCREATEVEHICLE,_team,_vehicle,_factory] Exec "Client\Client_CommandToServer.sqs" ;***************************************************************************************** ;3/28/7 MM - Created file.
__________________
stolzes member der Freaky Fraggers |
29.07.2008, 20:48 | #7 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
muesste es dann in etwa so aussehen?
if(_unit == "AH6") then {_name = name ah6_1}; und wie erstelle ich dann mehrrere namen für die selben fahrzeuge in etwa so? if(_unit == "AH6") then {"_name = name ah6_1","_name = name ah6_2"}; wenn ja wird dann ein freier name automatisch rausgesucht?
__________________
stolzes member der Freaky Fraggers |
29.07.2008, 21:08 | #9 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wenn du mit Skript ein Objekt (Soldat, Fahrzeug usw.) erstellst, dann wird dem Objekt vom Programm eine Bezeichnung zur Identifizierung zugeteilt. Diese Bezeichnung kannst du speichern.
z.B.: _unit = createVehicle …… In der Variablen _unit ist nun die Bezeichnung des Objekt gespeichert. Allerdings ist die Variable _unit eine lokale Variable des Skripts. Um die Variable außerhalb des Skripts zu verwenden, musst du eine globale Variable nehmen. z.B.: Panzer1 = createVehicle …… Diese globale Variable steht jetzt außerhalb des Skripts zur Verfügung und du kannst mit diesem Namen (Panzer1) das erstellte Objekt ansprechen. Allerdings nur auf dem PC wo diese Variable in dem Skript erstellt wurde. Um das Objekt in dieser Variablen den übrigen PCs bekannt zu machen, musst du die Variable und deren Inhalt zu diesen PCs übertragen. Das geschieht so: publicVariable "Panzer1" publicVariable - Bohemia Interactive Community … |
30.07.2008, 11:41 | #10 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
ich hab das bis jetzt mit
if(_unit == "AH6") then {_name = name ah}; was anscheinent nicht funktioniert hat wie muesste es richtig aussehen? bei publicVariable "Panzer1" habe ich erstmal folgendes problem woher weiß ich dass der name panzer1 für welches fahrzeug gilt (sprich ah6 ah1 harrier etc) und wie und wo muss ich dann publicVariable "Panzer1" einfügen
__________________
stolzes member der Freaky Fraggers |
30.07.2008, 19:05 | #11 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
if(_unit == "AH6") then {Heli1 = _unit};
publicVariable "Heli1"; Dann hat der Heli den Namen Heli1 Variable mit Unterstrich beginnend (z.B. _unit) sind lokal und nur im Skript sichtbar. Variable ohne Unterstich am Anfang sind global auf dem PC in jedem Skript, Auslöser usw. sichtbar. Durch publicVariable "Heli1" ist er auf allen PC sichtbar. Geändert von Vienna (30.07.2008 um 19:11 Uhr). |
31.07.2008, 12:38 | #13 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
leider funktioniert es nicht so sieht momentan meine client_buyunit.sqf aus
Code:
#CreateVehicle _vehicle = _unit CreateVehicle _position if(_unit == "SU34B") then {_vehicle removeWeapon "Ch29Launcher"; _vehicle removeMagazine "4Rnd_Ch29"; _vehicle addWeapon "BombLauncher"; _vehicle addMagazine "6Rnd_GBU12_AV8B";}; if(_unit == "KA50") then {_vehicle removeWeapon "VikhrLauncher"; _vehicle removeMagazine "12Rnd_Vikhr_KA50"; _vehicle addWeapon "Ch29Launcher"; _vehicle addMagazine "4Rnd_Ch29"; _vehicle addMagazine "4Rnd_Ch29"; _vehicle addMagazine "4Rnd_Ch29"; _vehicle addMagazine "40Rnd_80mm";}; if(_unit == "A10") then {_vehicle removeWeapon "MaverickLauncher"; _vehicle removeMagazine "5Rnd_Maverick_A10"; _vehicle addWeapon "BombLauncher"; _vehicle addMagazine "6Rnd_GBU12_AV8B";}; if(_unit == "ZSU") then {_vehicle addMagazine "2000Rnd_23mm_AZP85"; _vehicle addWeapon "AZP85"; _vehicle addMagazine "2000Rnd_23mm_AZP85"; _vehicle addWeapon "AZP85"; _vehicle addMagazine "2000Rnd_23mm_AZP85"; _vehicle addWeapon "AZP85"; _vehicle addMagazine "2000Rnd_23mm_AZP85";}; if(_unit == "Vulcan") then {_vehicle addMagazine "2100Rnd_20mm_M168";}; if(_unit == "AH6") then {[_unit, 400, 1, 2, true] execVM"mando_missiles\units\mando_missileecm.sqf";}; _vehicle SetDir ((GetDir _factory + 270) % 360) [_vehicle,sideJoined] Call InitUnit if (_unit == Format["Warfare%1SupplyTruck",sideJoinedText]) then {[sideJoined,_vehicle] Spawn UpdateSupplyTruck}; if (_empty) then {Exit};
__________________
stolzes member der Freaky Fraggers |
31.07.2008, 13:52 | #15 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
ich teste es auf einem dedicated
was nicht funktioniert is das mando flare system ich habe es einmal sogemacht wie du mir es beschrieben hast sprich mit publicVariable "Heli1"; dieses habe ich in der client_buyunit.sqf eingefügt und dann habe ich es so gemacht wie mir i0n0s zuletzt beschrieben hat die umsetzung davon kann man ja in meinem letzten post sehen und nein ich bekomme keine fehlermeldung
__________________
stolzes member der Freaky Fraggers |
31.07.2008, 16:44 | #16 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Keine Ahnung wie das "mando flare system" abläuft. Jedenfalls ist das Skript bei Warfare nur auf dem Erstellenden PC aktiv, weil das Objekt während des Spiels erstellt wurde. Wenn du den Skriptaufruf im Editor in die Initialisieurng des Objekts eingibst, dann wird es auf allen PCs gestartet.
Wäre der Skriptstart auf allen PCs erforderlich, so müßtest du das extra programmieren. Dabei ist zu bedenken, dass auch Neueinsteiger das Skript dann laden müßten. Ohne fundierte Kenntnisse über die MP-Programmierung von Arma würde ich in Warfare solche Funktionen nicht hinzufügen. |
31.07.2008, 19:37 | #17 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
also zur funktionweise zum flare system
in der init.sqf hat man einmal folgendes drin stehen []execVM"mando_missiles\mando_missileinit.sqf"; und [["AH6"], 0, "", [0,0], [0,0], 15, 15, "mando_missiles\units\mando_missilevehicle.sqf ", false, false, false, false, [0,0,0], "mando_missiles\units\keysets\mando_air1_keys.sqf" , 5, 20, 3, 0]execVm"mando_missiles\units\mando_assignvehicle_by _type.sqf"; hier werden anzahl der flares etc bestimmt und für welches fahrzeug das gelten soll bzw fahrzeugklasse nun stößt man folgendes problem die falres reagieren nur auf die mando missiles und nicht auf normalen arma raketen und deshalb fügt man noch diese zeile hinzu [Heli1, 400, 1, 2, true]execVM"mando_missiles\units\mando_missileecm2.sqf" ; somit funktionieren die flares auch bei den normalen arma raketen problem das sich mir jetzt stellt ist dass man in dieser zeile den namen des fahrzeugs eingeben muss der hier Heli1 lautet und deshalb das ganze wollte damit nur eventuelle unklarheiten beseitigen bzw das ganze verdeutlichen
__________________
stolzes member der Freaky Fraggers |
31.07.2008, 19:47 | #18 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Erstelle einmal in Warfare im Editor einen Heli und gib das in die Initialisierung ein:
[this, 400, 1, 2, true]execVM"mando_missiles\units\mando_missileecm2.sqf" ; Dann begib dich zum Heli und schau ob es bei dem funktioniert. |
31.07.2008, 21:52 | #19 (permalink) |
Registriert seit: 08.08.2004
Ort: Mainz
Beiträge: 68
|
wennn ich das so in die init zeile schreibe bekomme ich nur die meldung
typ script, erwartet nichts hab da auch ein wenig rumprobiert aber bekomme nur eine andere fehlermeldung
__________________
stolzes member der Freaky Fraggers |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
c4only - Skript | b3ck5 | Editing | 25 | 06.04.2009 20:01 |
Skript für Sperrfeuer ? | Nocverus Nectath | Editing | 4 | 28.12.2006 20:16 |
Airstrike Skript | =[LB]= Meazza | Offizielle Missionen & Kampagnen | 6 | 09.12.2006 22:04 |
Schnee Skript | 1337Jin | Editing | 8 | 12.09.2004 14:32 |