31.08.2009, 13:28 | #1 (permalink) |
Registriert seit: 22.08.2009
Beiträge: 29
|
Fallschirmspringer anfordern
Ich möchte mir ein script schreiben mit dem ich einen trupp falschirmspringer anfordern kann.
Die Theorie hirzu schaut wie folgt aus. ini.sqs Code:
callParaTroopers = compile preprocessFile "callParaTroop.sqf"; paraTroopsJump = compile preprocessFile "ParaTroopsJump.sqf"; _spawnPos = [0,0,1000]; _vehicle = "vehicleName"; _groupArray = ["soldier0", "soldier1", "soldier2", "soldier3"]; onMapSingleClick "paraGroup = call [_spawnPos, _pos, _vehicle, _groupArray] callParaTroopers;"; Code:
_spawnPoint = _this select 0; _jumpPoint = _this select 1; _vehicleType = _this select 2; _soldiers = _this select 3; _newGroup = createGroup west; _vehicle = _vehicleType createVehicle[_spawnPoint]; _waypoint = _vehicle addWaypoint[_jumpPoint,0]; _waypoint select 0 setWaypointType "MOVE"; _waypoint select 0 setWaypointSpeed "LIMITED"; _waypoint = _vehicle addWaypoint[[0, 0, 0],0]; _waypoint select 1 setWaypointType "SCRIPTED"; _waypoint select 1 setWaypointScript "call [waypointAttachedVehicle [_this, 1]] paraTroopsJump;"; /*waypointAttachedVehicle sollte irgendwie das fahrzeug zurück geben*/ _waypoint = _vehicle addWaypoint[_spawnPoint,0]; waypoint select 2 setWaypointType "MOVE"; _waypoint select 2 setWaypointSpeed "FULL"; _waypoint = _vehicle addWaypoint[[0, 0, 0],0]; _waypoint select 3 setWaypointType "SCRIPTED"; _waypoint select 3 setWaypointScript "deleteVehicle waypointAttachedVehicle [_this, 1];"; for "_index" from 0 to count _soldiers do { _tempSold = _soldiers select _index createUnit[[0,0,0], _newGroup]; _tempSold moveInCargo _vehicle; }; _newGroup; //keine ahnung wie man einen wert zurück gibt Code:
_vehicle = _this select 0; _soldiers = _vehicle assignedCargo; {sleep random 1; _x moveOut;} foreach _soldiers; kann es leider momentan nicht testen. geht mir eigentlich nur mal darum ob das von der logik her so funktionieren würde, oder ob ich es anders machen muss. edit: ok das _waypoint select 1 setWaypointScript "call [waypointAttachedVehicle [_this, 1]] paraTroopsJump;"; ist blödsinn aber das sollte funktionieren _waypoint select 1 setWaypointScript "call [this] paraTroopsJump;"; Geändert von bigbigmek (31.08.2009 um 15:05 Uhr). |
31.08.2009, 23:02 | #2 (permalink) |
Registriert seit: 22.08.2009
Beiträge: 29
|
ok habs leider heute nichtmehr hinbekommen stehe aber kurz davor.
hier mal meine resultate. init (funktioniert) Code:
callParaTroopers = compile preprocessFile "callParaTroop.sqf"; _spawnPos = [600,600,600]; _vehicle = "C130J"; groupArray = ["USMC_Soldier", "USMC_Soldier", "USMC_Soldier", "USMC_Soldier"]; onMapSingleClick {hint 'onMapSingleClick'; paraGroup = [[1500,1500, 800], _pos, "C130J", groupArray] call callParaTroopers;} _waypoint = player addWaypoint[[600,600,0],0]; _waypoint select 0 setWaypointType "MOVE"; player flyInHeight _spawnPoint select 2; Code:
_spawnPoint = _this select 0; _jumpPoint = _this select 1; _jumpPoint set [2,_spawnPoint select 2]; _vehicleType = format['%1', _this select 2]; _soldiers = _this select 3; _vehicle = createVehicle [_vehicleType, _spawnPoint, [], 0, "FLY"]; _vehicle setPos [getPos _vehicle select 0, getPos _vehicle select 1, _spawnPoint select 2]; _pilotes = createGroup west; _pilote = _pilotes createUnit ["USMC_Soldier_Pilot",_spawnPoint ,[], 0, "NONE"]; _pilote moveInDriver _vehicle; _waypoint = _pilotes addWaypoint[_jumpPoint,0]; [_pilotes,0] setWaypointType "MOVE"; [_pilotes,0] setWaypointSpeed "LIMITED"; _vehicle flyInHeight 800; _waypoint = _pilotes addWaypoint[[0, 0, 0],0]; [_pilotes,1] setWaypointType "SCRIPTED"; [_pilotes,1] setWaypointScript "ParaTroopsJump.sqs [this]"; _waypoint = _pilotes addWaypoint[_jumpPoint,0]; [_pilotes,2] setWaypointType "MOVE"; [_pilotes,2] setWaypointSpeed "FULL"; _waypoint = _pilotes addWaypoint[[0, 0, 0],0]; [_pilotes,3] setWaypointType "SCRIPTED"; [_pilotes,3] setWaypointScript "deleteVehicle this"; _newGroup = createGroup west; for "_i" from 0 to count _soldiers do{_soldier = _newGroup createUnit ["USMC_Soldier",_jumpPoint ,[], 0, "NONE"]; _soldier moveInCargo _vehicle;}; player moveInCargo _vehicle; _newGroup; Code:
_vehicle = _this select 0; _soldiers = _vehicle assignedCargo; for "_i" from 0 to count _soldiers do{ _i _vehicle;}; |
01.09.2009, 19:53 | #3 (permalink) |
Registriert seit: 22.08.2009
Beiträge: 29
|
ok jetzt funktioniert alles bis auf dieses kleine script
Code:
_driver = _this select 0; _vehicle = assignedVehicle _this select 0; _soldiers = assignedCargo _vehicle; hint format [ "driver: %1 vehicle: %2 soldiers: %3" ,_driver , _vehicle, _soldiers]; for "_i" from 0 to count (_soldiers) do{ _i leaveVehicle _vehicle;}; kann mir wer helfen? achja in _this 0 sollte der pilot stehen siehe: [_pilotes,1] setWaypointScript "ParaTroopsJump.sqs [this]"; |
01.09.2009, 23:11 | #4 (permalink) |
Registriert seit: 22.08.2009
Beiträge: 29
|
EDIT:
script funktioniert jetzt. kann beliebige viele flugzeuge spawnen lassen welche, brav ihre truppen abwerfen und dann zurücklfiegen und sich anschließend in luft auflösen. auch wenn es bei 20 flugzeugen zu 12 soldaten schon arg zu ruckeln beginn bei mir. schaut aber dafür umso cooler aus ps: schau es mir morgen nochmal durch und poste es dann hier. |
02.09.2009, 21:06 | #5 (permalink) |
Registriert seit: 22.08.2009
Beiträge: 29
|
Script ist fertig
hier ist der link zu meinem script. würde mich freuen wenn es wer testen will. ParaTroopsScript.zip ... at uploaded.to - Free File Hosting, Free Image Hosting, Free Music Hosting, Free Video Hosting, ... aufgerufen wird das script wie folgt. Code:
callParaTroopers = compile preprocessFile "callParaTroop.sqf"; returnValue= [spawnPosition, JumpPosition, VehicleName, groupArray] call callParaTroopers; spawnPosition = ist die spawn position des vehicles JumpPosition = ist der punkt wo die falschrimspringer abgeworfen werden. VehicleName = klassenname des Fahrzeugs groupArray = array mit klassennamen der soldaten die gespawnt werden sollen. beispiel: Code:
groupArray = ["USMC_Soldier", "USMC_Soldier", "USMC_Soldier"]; onMapSingleClick {paraGroup = [[1500,1500, 200], _pos, "C130J", groupArray] call callParaTroopers;} bei fragen stehe ich gerne zu verfügung auch anregungen höre ich gerne. ist mein erstes script ich hoffe es kann jemand damit was anfangen. |
03.09.2009, 08:46 | #7 (permalink) |
Registriert seit: 22.08.2009
Beiträge: 29
|
hmm ich weis nicht, hab mich mit MP nochnicht beschäftigt. wenns nicht multiplayertauglich ist mach ich so schnell wie möglich mutliplayertauglich. was müsste ich den da beachten? ich schau mal die wiki durch vieleicht find ich was. edit: schaut kompliziert aus, wenns wo tuts für mp scirpting gibt wäre ich dankbar wenn hier wer die links posten würde oder mir per pn schickt. ps: script ist natürlich frei, jeder kann es ändern und verwenden wo er will. wenn wer angeben möchte das das scirpt von mir ist bin ich natürlich auch nicht beleidigt editedit: wichtiger hinwesi hab ich oben vergessen ParaId=0; muss vor dem ersten scriptaufruf ausgeführt werden Geändert von bigbigmek (03.09.2009 um 09:18 Uhr). |
03.09.2009, 09:43 | #8 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Also damit es MP fähig wird , müssen globale variablen definiert werden, macht man in der Init.
in wievern das nun funktioniert kann ich dir auch nicht sagen. So hab ich es aufjedenfall in meiner Coop Map für die Tasks gemacht , damit die bei allen spielern die später ins spiel kommen .. die "fertigen" tasks auch schon erfüllt sind. bin mir bei deinem script natürlich nicht sicher ob bzw. welche varibalen du als global definieren musst. P.s.: setz doch einfach einen Header in dein Script ... in dem kannst du dann auch die editir möglichkeiten erfassen ... wie z.b. Code:
; Improvised Explosive Device Script ; By Jeevz ; v1.2 12/13/06 ; This script will create an explosion of a ; selected size on any object when called ; The arguments are [objectName, explosionPower] ; Explosion Power will be 1 of 4 choices ; Small - Good for Anti-Personnel use ; Medium - Will usually disable a Humvee without killing the occupants ; Large - Will usually destroy a passing humvee and kill or severly injure all occupants, will disable the tracks and possibly engine on M1A1 ; Huge - Nothing will survive, I mean... it's HUGE :-) |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Artillerie Anfordern | Alverio | Offizielle Missionen & Kampagnen | 8 | 10.12.2006 16:25 |
Ari in der Kampagne anfordern... | viper-ba | Technische Fragen & Probleme | 5 | 06.12.2006 17:58 |
Fallschirmspringer Hilfe | AAsder | Editing | 9 | 01.11.2006 10:09 |
Fallschirmspringer Problem | Firefighter15 | Editing | 10 | 22.08.2006 17:29 |
Unterstützung anfordern | Syntax | Editing | 9 | 26.11.2005 18:11 |