OFPEC Forum
Editors Depot - Mission Editing and Scripting => OFP - Editing/Scripting General => Topic started by: Fanus on 12 Aug 2006, 10:50:20
-
Hi there. I need help creating script that can put a vehicle into a temporary cache which can be retrieved later if needed. I created a script so far but it doesn't work yet. Can anyone help me please. Here is wat i got so far...
; create dialog
_cacheMenu = CreateDialog "CacheDialog"
_cache = []
#start
_vehiclePlayer = vehicle player
btnCache=false
btnSave=false
#loop
; if button pressed "Cache"
? btnCache : btnCache=false;if ((_vehiclePlayer distance garage > 10 ) && (player in _vehiclePlayer)) then {player action ["eject",_vehiclePlayer]; lbAdd [2000, typeof _vehiclePlayer]; deletevehicle _vehiclePlayer} else {hint "exit"}
; if button pressed "Save"
? btnSave : btnSave=false; goto "cache"
goto "loop"
#cache
; list saved to an array
_cache set [(0,lbText [2000, 0])]
goto "start"
By pressing the "Cache" button: The vehicle is deleted and added to a list.
By pressing the "Save" button: The vehicle needs to be added to an array. Then the array must be "saved" and every time the dialog is created, the list must be occupied by all the cached vehicles.
The script must create a Garage. When i drive a vehicle into a garage, the vehicle must be deleted, saved and recovered if needed. This will help me lower the lag of my mission.
Please help. Thx in advance.
Fanus.
-
Dialogue scripts are not my thing so unfortunately I can't help, but
Welcome to the forum!
-
All I want to do is to make an array that can "save" and later on when the file is opened, the array must be loaded first before the script starts. Please! :banghead:
-
hi fanus,
here a small suggestion, how it could look.
In the "Init.sqs" the relevant variables must be defined and initialize.
;init.sqs
;---------------------
LB_Cache = []
btnCache=false
btnSave=false
Then the "CreateDialog.sqs", in order to open the dialogue:
;createDialog.sqs
;---------------------
_cacheMenu = CreateDialog "CacheDialog"
#fillLB
;///Here the LB is filled by the entries in the array
?(count LB_Cache == 0):goto "loop"
lbclear 2000;_i = 0
while "_i < count LB_Cache" do {_Entry = LB_Cache select _i;_index = lbAdd [2000, _Entry];lbSetData [2000, _index, _Entry];_i = _i + 1}
~0.1
lbSetCurSel [2000, (lbsize 2000 - 1)]
#loop
~1
;///if you hit "ESC" to close the dialog
?(!(ctrlvisible 2000)):btnCache=false;btnSave=false;exit
;///if button pressed "Cache"
?(btnCache):btnCache=false;if(!(vehicle player == player)) then {_vehiclePlayer = vehicle player;if((_vehiclePlayer distance garage < 10 ) && (player in _vehiclePlayer)) then {goto "addEntry"} else {cuttext["not possible","plain",0.2]}} else {cuttext["no vehicle available","plain",0.2]}
;///if button pressed "Save"
? btnSave : btnSave=false; goto "cache"
goto "loop"
#addEntry
;///Adds a new entry, if not yet available
player action ["eject",_vehiclePlayer]
_entry = format["%1",typeof _vehiclePlayer]
~1
deletevehicle _vehiclePlayer
?(_entry in LB_Cache):goto "loop"
_index = lbAdd [2000, _entry]
lbSetData [2000, _index, _entry]
lbSetCurSel [2000, (lbsize 2000 - 1)]
goto "loop"
#cache
;list saved to an array
_entry = lbData[2000, lbCurSel 2000]
?(_entry in LB_Cache):hint "This entry exists already";goto "loop"
LB_Cache = LB_Cache + [_entry]
goto "start"
Even if the empty vehicles are to be generated from the dialogue,
the dialogue would have to contain the Button "create".
The scripts would look as follows then.
;init.sqs
;---------------------
LB_Cache = []
btnCache=false
btnSave=false
btnCreate=false
;createDialog.sqs
;---------------------
_cacheMenu = CreateDialog "CacheDialog"
#fillLB
;///Here the LB is filled by the entries in the array
?(count LB_Cache == 0):goto "loop"
lbclear 2000;_i = 0
while "_i < count LB_Cache" do {_Entry = LB_Cache select _i;_index = lbAdd [2000, _Entry];lbSetData [2000, _index, _Entry];_i = _i + 1}
~0.1
lbSetCurSel [2000, (lbsize 2000 - 1)]
#loop
~1
;///if you hit "ESC" to close the dialog
?(!(ctrlvisible 2000)):btnCache=false;btnSave=false;exit
;///if button pressed "Cache"
?(btnCache):btnCache=false;if(!(vehicle player == player)) then {_vehiclePlayer = vehicle player;if((_vehiclePlayer distance garage < 10 ) && (player in _vehiclePlayer)) then {goto "addEntry"} else {cuttext["not possible","plain",0.2]}} else {cuttext["no vehicle available","plain",0.2]}
;///if button pressed "Save"
? btnSave : btnSave=false; goto "cache"
goto "loop"
;///if button pressed "Create"
? btnCreate : btnCreate=false; goto "createVeh"
goto "loop"
#addEntry
;///Adds a new entry, if not yet available
player action ["eject",_vehiclePlayer]
_entry = format["%1",typeof _vehiclePlayer]
~1
deletevehicle _vehiclePlayer
?(_entry in LB_Cache):goto "loop"
_index = lbAdd [2000, _entry]
lbSetData [2000, _index, _entry]
lbSetCurSel [2000, (lbsize 2000 - 1)]
goto "loop"
#createVeh
;///generate a new empty vehicle
_entry = lbCurSel 2000
_newUnit = _entry createvehicle getpos garage
goto "loop"
#cache
;list saved to an array
_entry = lbData[2000, lbCurSel 2000]
?(_entry in LB_Cache):hint "This entry exists already";goto "loop"
LB_Cache = LB_Cache + [_entry]
goto "start"
Please excuse my bad English :-(
bye
silola
-
May I ask why this script is needed? Where is it going to be used?