_a fraire.txt^K)_commandes sympas.txt J(_fourtout.txt'J( AAHALO\_old\altimeter.paa JWAAHALO\_old\Copie de altimeter.paa JWAAHALO\_old\freeFall.sqf>JAAHALO\_old\jump.sqf JG%AAHALO\_old\mouseTracker.hpp JAAHALO\images\para_00.paaJIAAHALO\images\para_15.paaJIAAHALO\images\para_15b.paaJIAAHALO\images\para_30.paaJIAAHALO\images\para_45.paaJIAAHALO\images\para_60.paaJIAAHALO\images\para_75.paaJIAAHALO\images\para_90.paaJIAAHALO\Parachute\JumpOut_cord.sqfV J AAHALO\Parachute\KnockOut.sqfJIAAHALO\Parachute\Parachute.sqfV J$AAHALO\Parachute\Parachute_init.sqfJIAAHALO\Parachute\Ripcord.sqfV JAAHALO\Parachute\Ripcord_DropGear.sqfJIAAHALO\Parachute\SkyDive.sqfV Ju AAHALO\Parachute\SPON_directionName.sqfJIAAHALO\Parachuteold\JumpOut_cord.sqf J AAHALO\Parachuteold\KnockOut.sqf JAAHALO\Parachuteold\Parachute.sqf J$AAHALO\Parachuteold\Parachute_init.sqf JAAHALO\Parachuteold\Ripcord.sqf JAAHALO\Parachuteold\Ripcord_DropGear.sqf JAAHALO\Parachuteold\SkyDive.sqf J= AAHALO\Parachuteold\SPON_directionName.sqf JAAHALO\ParaDrop\CheckIfPlayersRdy.sqfJIpAAHALO\ParaDrop\Copie de StartDrop.sqfV J AAHALO\ParaDrop\DropCond.sqfJIxAAHALO\ParaDrop\floatchins.sqfJIAAHALO\ParaDrop\LoadUp.sqfJI1AAHALO\ParaDrop\MakeClouds.sqfJIAAHALO\ParaDrop\SkyDive_ViewDistance.sqfJI=AAHALO\ParaDrop\StartDrop.sqfV JAAHALO\Start.sqfH(,Jagressive.sqf JJartill_eni.sqf Jtbase.sqf JUbase2.sqf J boucle_obj2.sqf Jbriefing.html Jz.cdg_debug.sqf Jchrono.sqf J_chrono_top.sqf Jcivil_mort.sqf Jzcivils_crea.sqf Jclear.sqf Jcommon.hppJmComputer\base\classe1.sqfE5JComputer\base\classe10.sqf6G5J) Computer\base\classe11.sqf6G5J) Computer\base\classe2.sqfE5JComputer\base\classe3.sqfE5JComputer\base\classe4.sqfE5JComputer\base\classe5.sqfE5JComputer\base\classe6.sqfF5JP Computer\base\classe7.sqfF5JP Computer\base\classe8.sqfF5JP Computer\base\classe9.sqf6G5J Computer\boutons\artill_action.sqf JGComputer\boutons\artyr_action.sqf JComputer\boutons\base_action.sqf J Computer\boutons\brume_action.sqf JCComputer\boutons\camp_action.sqf JComputer\boutons\chrono_action.sqf JComputer\boutons\civils_action.sqf JComputer\boutons\grps_action.sqf J*Computer\boutons\heure_action.sqf JxComputer\boutons\ia_action.sqf J Computer\boutons\insertion_action.sqf JComputer\boutons\mater_action.sqf JComputer\boutons\objectif_action.sqf JSComputer\boutons\paras_action.sqf JNComputer\boutons\pluie_action.sqf JBComputer\boutons\respawn_action.sqf JzComputer\boutons\sate_action.sqf:8JComputer\boutons\zone_action.sqf JT Computer\brume_dialog.sqfJComputer\console\commande_rt.sqfJComputer\console\console_add_sec_obj.sqfJComputer\console\console_convoi.sqf>J Computer\console\console_Go2marker.sqfJ^Computer\console\console_Heli.sqfDJComputer\console\console_IAinBat.sqf:JComputer\console\console_map.sqfJ 5Computer\console\console_moverespawn.sqf)KComputer\console\Copie de spawn_rt.sqfJZComputer\console\gps_eni_rt.sqfJoComputer\console\gps_rt.sqfDJLComputer\console\joueursolo_map.sqf>JComputer\console\mines.sqf J~Computer\console\preview.sqfPJDComputer\console\spawn_camera.sqf JComputer\console\spawn_convoi.sqfvԇJ4Computer\console\spawn_debug.sqf J^Computer\console\spawn_heli.sqftJComputer\console\spawn_IAinBat.sqf$].JComputer\console\spawn_marqueur.sqflJComputer\console\spawn_rt.sqf-JYComputer\console\teleport_rt.sqf>JComputer\console\teleportsolo_spawn.sqf JaComputer\console\telunits_rt.sqf J Computer\console\trig_marqueur.sqf JComputer\console\trig_rt.sqf JComputer\console\trigger_map.sqf>JX Computer\cpu_arty.sqf J Computer\cpu_dialog.sqfpJ#Computer\cpu_insertion.sqf J1Computer\cpu_lsr.sqf JComputer\cpu_obj.sqf JComputer\cpu_objectifs.sqf J*Computer\cpu_requests.sqfJComputer\msge_sat.sqf>JComputer\playerInit.sqf J^ Computer\pluie_dialog.sqf>JComputer\request_arty.sqf>JComputer\request_insertionpara.sqf>J8Computer\request_insertionsol.sqf>J2Computer\request_obj.sqfJ*Computer\request_Sat.sqf>JComputer\rscComputer.hppxX%KF6Computer\timetostring.sqf Jconvoi.sqf JCopie de description.ext*KQ!crea_base.sqf JJdamagetempo.sqf$J.debug.sqf Jxdeplacement.sqf Jdescription.ext\%K!fin.sqf JMgonza\acctime.sqf?Jgonza\ammo.sqf*Kcgonza\cli_marker.sqfhJ*gonza\cli_setcaptive.sqfoJ gonza\combotest.sqfJgonza\heli\cli_drop_charge_now.sqf J<gonza\heli\cli_need_avance.sqf Jgonza\heli\cli_need_drop.sqfmods\RT\code\old\fin.sqf JMmods\RT\code\old\fullbox.sqf Jmods\RT\code\old\move_respawn.sqf J>mods\RT\code\old\music_intro.sqf J+mods\RT\code\old\music_outro.sqf J+mods\RT\code\old\setcaptive.sqf Jkmods\RT\code\old\silentbox.sqf Jmods\RT\code\para_eni.sqf:>JYmods\RT\code\spectat.sqf Jamods\RT\code\take.sqf Jsmods\RT\units_init\garde.sqf Jmods\RT\units_init\Go2marker.sqfStJqmods\RT\units_init\go_come.sqfCJ mods\RT\units_init\Go_map.sqfCJGmods\RT\units_init\old\Copie de Go point.sqf4J mods\RT\units_init\old\Go point on map.sqf Jmods\RT\units_init\old\Go point.sqf J=mods\RT\units_init\On Master.sqf J mods\RT\units_init\patrouille.sqf J7mods\RT\units_init\ronde.sqf Jmods\RT\units_init\script1.sqf Jmods\RT\units_init\script2.sqf Jmods\RT\units_init\script3.sqf Jmodule_temps.sqf Jymouvement.sqf J*mouvement_agressif.sqf Jamouvement_inerte.sqf J)NORRN_spectate\CAM_KEY_pressed.sqftJgNORRN_spectate\cam_spectate.sqf29JNORRN_spectate\cam_spectate_freecam.sqflͻJNORRN_spectate\cam_spectate_Obj.sqfɣJNORRN_spectate\cammove VTSCAM_KEY_pressed.sqfJ NORRN_spectate\mouse_KEY_pressed.sqfuJNORRN_spectate\place.sqfãJ3NORRN_spectate\placeexit.sqf,ģJNORRN_spectate\start3d.sqfJ NORRN_spectate\start3d_Freecam.sqfJNORRN_spectate\Start3d_Obj.sqfJ NORRN_spectate\VTSCAM_KEY_pressed.sqfzJ NORRN_spectate\VTSCAM_KEY_pressed_Freecam.sqf=J NORRN_spectate\VTSspectate_cam_dialog.hpp" J%objec_verif.sqf Jobjectifs\appel_otage.sqf Jobjectifs\cible.sqffJ objectifs\decl_cible1.sqf Jobjectifs\decl_cible2.sqf Jobjectifs\decl_destruction.sqf J<objectifs\decl_otage1.sqf J objectifs\decl_otage2.sqf Jobjectifs\decl_prise.sqf J objectifs\destruction.sqfJ6objectifs\fin_otage.sqf Jobjectifs\fuite_off.sqf Jobjectifs\otage.sqfJ$objectifs\otage_addaction.sqf Jobjectifs\otage_gps.sqf Jobjectifs\otage_hop.sqf JGobjectifs\otage_poursuite.sqf Jobjectifs\prise.sqf:J?para_eni.sqf>>Jplouf.sqf Jpresentation.sqfZJprogression.sqfbJ}progression_cdg_killed.sqfοJrepli_basic.sqfJS#repli_ge1.sqfJ!repli_gen.sqfJ8'respawnSpecial\respawnSpecial.sqfd_JyrespawnSpecial\Spawn_chopperInit.sqfdcQJrevive_init.sqf)K@revive_sqf\cam_dead.sqfhcJrevive_sqf\cam_follow.sqf@JsZrevive_sqf\CAM_KEY_pressed.sqfnTJ revive_sqf\carry.sqfTJTrevive_sqf\COD\body_damage.sqfEJorevive_sqf\dialogs\config.cpp3Jyrevive_sqf\dialogs\dead_cam_dialog.hppJgJ< revive_sqf\dialogs\define.hppF~JP9revive_sqf\dialogs\OK_map.hppzgJrevive_sqf\dialogs\respawn_button_1.hppgJrevive_sqf\dialogs\respawn_button_1b.hpp~'TJPrevive_sqf\dialogs\respawn_button_1c.hpp'TJArevive_sqf\dialogs\respawn_button_1map.hppgJrevive_sqf\dialogs\respawn_button_2.hppgJrevive_sqf\dialogs\respawn_button_2b.hpp4(TJ revive_sqf\dialogs\respawn_button_2map.hppgJrevive_sqf\dialogs\respawn_button_3.hppgJrevive_sqf\dialogs\respawn_button_3b.hppR(TJrevive_sqf\dialogs\respawn_button_3map.hppgJrevive_sqf\dialogs\respawn_button_4.hpp*gJrevive_sqf\dialogs\respawn_button_4b.hpp(TJrevive_sqf\dialogs\respawn_button_4map.hppgJrevive_sqf\dialogs\rev_cam_dialog.hppgJ!revive_sqf\drag.sqfJYrevive_sqf\drop_body.sqfIJrevive_sqf\functions\AI_throwSmoke.sqfJrevive_sqf\functions\AIBehaviour.sqfJ(revive_sqf\functions\CallOut.sqfcJ2revive_sqf\functions\createBody.sqfZJrevive_sqf\functions\DeleteUncBody.sqf~pQJMrevive_sqf\functions\dropWeapons.sqfTJrevive_sqf\functions\GetTerrainSlope.sqftMJrevive_sqf\functions\I_need_help.sqfJrevive_sqf\functions\LeaderFix.sqf(Jrevive_sqf\functions\LivesRemain.sqf6Jrevive_sqf\functions\respawn_chance.sqfEJrevive_sqf\functions\respawn_time.sqflEJ[revive_sqf\functions\RespawnPos1.sqf4KJrevive_sqf\functions\RespawnPos2.sqf/JWrevive_sqf\functions\RespawnPos2AI.sqfPhJrevive_sqf\functions\SlopeFix.sqfJRJOrevive_sqf\functions\toggle_dialog_fade.sqfؘIrevive_sqf\functions\UncAnimFix.sqf 7Jhrevive_sqf\functions\wait_check.sqfܺJyrevive_sqf\functions\WaterFix.sqfJrevive_sqf\go_back.sqfcJXrevive_sqf\heal.sqfPQJarevive_sqf\heal_sqf\heal.sqf&lIrevive_sqf\heal_sqf\player_heal.sqflIOrevive_sqf\init_related_scripts.sqfJrevive_sqf\isplayer.sqff:Jrevive_sqf\Load_wounded\Load_act.sqfMJrevive_sqf\Load_wounded\load_wounded.sqfȞMJwrevive_sqf\Load_wounded\unLoad_act.sqf^JJrevive_sqf\marker_color.sqf=Hrevive_sqf\medic\bandage.sqfЯ?Jrevive_sqf\medic\bandage_teammate.sqf6@Jurevive_sqf\medic\supplies.sqfEJ2revive_sqf\mission_end.sqfHJrevive_sqf\mobile\deploy_camo.sqf6J&revive_sqf\mobile\deploy_camo_man.sqf2Jsrevive_sqf\mobile\mobile_Marker.sqf$/Irevive_sqf\mobile\mobile_remove_spawn.sqfLGrevive_sqf\mobile\mobile_spawn.sqf|J revive_sqf\mobile\move_spawn.sqf6uJGrevive_sqf\mobile\stow_camo.sqf 6J$revive_sqf\mobile\stow_camo_man.sqfJ%revive_sqf\mobile\vcl_respawn.sqfԝqHrevive_sqf\onConnect.sqfpJ revive_sqf\putDown_body.sqfЖ:Jrevive_sqf\respawn\init_respawn.sqf"LJrevive_sqf\respawn\respawn.sqflJ,revive_sqf\respawn_at_base.sqfJ)revive_sqf\respawn_at_base_jip.sqfȋJIrevive_sqf\respawn_at_base_water.sqfV=Hrevive_sqf\respawn_counter.sqfV=HGrevive_sqf\revive_init.sqf>cJ revive_sqf\Revive_player.sqfRJ`revive_sqf\rPrn.sqfPJ revive_sqf\show_map_loc.sqfFcJCrevive_sqf\Sound\UNIV_v05.lipV=Hrevive_sqf\Sound\UNIV_v05.ogg^6JK revive_sqf\Sound\UNIV_v06.lipV=Hrevive_sqf\Sound\UNIV_v06.ogg6J#revive_sqf\Sound\UNIV_v07.lipV=Hrevive_sqf\Sound\UNIV_v07.ogg~6J#revive_sqf\Sound\UNIV_v10.lipV=Hrevive_sqf\Sound\UNIV_v10.oggl6Jrevive_sqf\Sound\UNIV_v11.lipV=Hrevive_sqf\Sound\UNIV_v11.oggZ6J8,revive_sqf\Sound\UNIV_v18.lipV=Hrevive_sqf\Sound\UNIV_v18.ogg46J"revive_sqf\Sound\UNIV_v24.lipV=HVrevive_sqf\Sound\UNIV_v24.ogg6Jvrevive_sqf\Sound\UNIV_v25.lipV=H~revive_sqf\Sound\UNIV_v25.ogg6Jwrevive_sqf\Sound\UNIV_v31.lipV=Htrevive_sqf\Sound\UNIV_v31.ogg6Jsrevive_sqf\Sound\UNIV_v50.lipV=Hrevive_sqf\Sound\UNIV_v50.oggȗ6Jt#revive_sqf\Sound\UNIV_v51.lipV=Hrevive_sqf\Sound\UNIV_v51.ogg"6J(revive_sqf\team_killer.sqfR=JNrevive_sqf\trigger_mkr.sqfnI-'Satellite\adjustCamera.sqf J Satellite\init.sqf JSatellite\KRON_Strings.sqf JSatellite\requestsat.sqfbJSatellite\rscSatellite.hppJn#Satellite\sat_action.sqf JSatellite\sat_dialog.sqf J$Satellite\sat_events.sqfTJSatellite\sat_move.sqf JSatellite\sat_obj.sqf JSatellite\sat_track.sqf JBSatellite\sat_trigger.sqf JSatellite\sat_update.sqf JGsaut.paa JUsc_hint_false.sqf Joscript_prison.sqf Jc!script_prison_fonctio.sqf Jsound\ari.ogg Jsound\arty1.ogg Jsound\arty2.ogg Jsound\arty3.ogg Jgsound\arty4.ogg Jsound\arty5.ogg J2Msound\bipavion.ogg JƂsound\convoi_log1.ogg Jsound\convoi_log2.ogg J gsound\flick.ogg Jsound\UNIV_r30.lip J~sound\UNIV_r30.ogg J.sound\UNIV_r31.lip Jsound\UNIV_r31.ogg J9sound\UNIV_r32.lip Jsound\UNIV_r32.ogg JGsound\UNIV_r33.lip Jsound\UNIV_r33.ogg JFsound\UNIV_r34.lip J(sound\UNIV_r34.ogg JpSsound\UNIV_r35.lip J sound\UNIV_r35.ogg J}Vsound\UNIV_r36.lip Jsound\UNIV_r36.ogg J=sound\UNIV_r37.lip Jsound\UNIV_r37.ogg J=sound\UNIV_r38.lip Jsound\UNIV_r38.ogg Jb0sound\UNIV_r39.lip Jsound\UNIV_r39.ogg J.sound\UNIV_r40.lip Jsound\UNIV_r40.ogg J:1sound\UNIV_v05.lipV=Hsound\UNIV_v05.ogg^6JK sound\UNIV_v06.lipV=Hsound\UNIV_v06.ogg6J#sound\UNIV_v07.lipV=Hsound\UNIV_v07.ogg~6J#sound\UNIV_v10.lipV=Hsound\UNIV_v10.oggl6Jsound\UNIV_v11.lipV=Hsound\UNIV_v11.oggZ6J8,sound\UNIV_v18.lipV=Hsound\UNIV_v18.ogg46J"sound\UNIV_v24.lipV=HVsound\UNIV_v24.ogg6Jvsound\UNIV_v25.lipV=H~sound\UNIV_v25.ogg6Jwsound\UNIV_v31.lipV=Htsound\UNIV_v31.ogg6Jssound\UNIV_v50.lipV=Hsound\UNIV_v50.oggȗ6Jt#sound\UNIV_v51.lipV=Hsound\UNIV_v51.ogg"6J(spect\common.hppƺJ+#spect\specta.sqf Jhspect\specta_events.sqf J2spect\spectating.hpp J spect\spectavts.sqfJlspect\spectavtsold.sqf Jqlspect\unitspectavts.sqf Jqlstatique.sqf JHtitle.jpggGJ AWarfare\Common_GetTerrainSlope.sqf Jbug ---------------------------------------------------------- cacher les corps player addeventhandler ["killed",{_this exec "delete.sqs"}] _corpse = _this select 0 player removealleventhandlers "killed" @playerRespawnTime == 0 HideBody _corpse player addeventhandler ["killed",{_this exec "delete.sqs"}] exit ---------------------------------------------------------- "deletevehicle _X" foreach (crew Chopername); deletevehicle Chopername _frog = "frog" createVehicle [0,0,0]; _name = format ["%1%2_%3_Frog",random 500,random 1000,name buyer]; _frog setVehicleInit format["this setVehicleVarName ""%1""",_name]; processInitCommands; les vehicules qui sont detruit apres l'apatition ou meme l'otage faire un script qui _soldier3 setVehicleInit "this allowfleeing 0" player allowDamage false pas de computer apres le revive revive present pour tout le monde dans les vehicules mettre de nvg et des armes au master marker sur les objets sauf si plac via place virer le marker sur les animaux mettre la full cam de norrin mettre des particules ajouter un tatique shilka sans pilote faire apparaitre les vehicule sur le marker preview avant de les placer en 3d faire en sorte que les objets apparaisse au dessus du sol OK changer la camera bug du mouvement probleme de vehicule dans les groupes faire un script pour modifier les groupes allier faire un script pour choisir le camp enemis priorits ajouter des shilka sans pilote dans les static from Grimm's original work faire en sorte que les IA se soignent entre elles tous le monde ne sort pas du camion mettre un marker sur le respon quand il est deplac OK- reparer l'hotage (il n'y a pas d'otage) OK reparer le transpar de troup en helico (pas de troupes) OK ameliorer le go to marker mettre des caisses -OK-faire en sorte que les combo reste au meme etat quand on sort de l'interface mettre 3 groupe ennemis par defaut dans les missions virer quelques IA dans les groupes auto se deplacer depuis l'helico OK CTD si pas de mission OK liste des vehicules OK materiel marche pas (le bouton 2 ne change pas) OK reinitialiste pour les statiques (virer le mouvement) bug de deplacement de la tente (ca me un point) ***************************** boite a ide ********************************** this allowDammage false;this setCombatMode ""BLUE"";this setBehaviour ""CARELESS"";this setcaptive true;this addAction [""Se poser a..."", ""Computer\console\console_Heli.sqf"",joueur1,"evac"];this addAction [""Avance vers..."", ""Computer\console\console_Heli.sqf"",joueur1,"avance"];this addAction [""Stop"", ""Computer\console\console_Heli.sqf"",joueur1,"stop"];null0 = this execVM ""gonza\ammo.sqf"" mettre le choix de la caisse de mun en parametre Full weapons Light weapons Silent/no RPG weapons Silent/RPG weapons No RPG weapons No scop weapons Simple weapons mettre le bateau en mer et mettre le camp dessus augmenter la taille des caractere des objectifs - OK - cmettre des unites specops - faire fonctionner le parachutage - faire fonctionne le in build - en cours - refaire les static - PB script convoi - Ambient Combat Module Yes, you simply synchronize (F5) the module with a unit and it will kick in. Do not group (F2) it, for that will not do anything We will add more configuration information to the BiKi soon, but here's some stuff to get you started (ACM reference means either the module itself or one of the units in the group it's synchronized to) - en cours - refaire le HAlo (mettre le son) - Changer le nom du mod "Missions Master" & modifier les images de fond - agrandire les teams - mettre god mod (regler pb couleur) - optimiser le spectatingscript (garder en memoire le dernier object vue) faire un bouton a cot de & mettre une camera free pour se deplacer) - mettre une caisse de munition apres l'aterrissage de l'helico - cacher les corps - aider trouver l'heure et gerer les minutes - mission failed succes mettre en rouge - ajouter objectif secondaire (textbox+bouton+click sur map --> marker + message) - creer un script d'helico de couverture deplacable sur la map avec un apache (via des waypoint) - mettre plusieurs markers gotomarker - ajouter une option afficher les ennemis sur le GPS - mettre un nom sur chaque unit et rendre possible le deplacement vers un point de chaque unit, la desdruction - mettre les noms la place des muneros sur les markers - changer le script de camera simple - faire un script de camera fixer sur un objet qu'on peut deplacer via les touches - la camera peut faire des rotation autour de l'objet via la souris Z --> avancer l'objet (par rapport la camera) S --> reculer l'objet Q & D --> deplacer lateralement A & E --> faire faire tourner l'objet X & C --> deplacer l'objet en hauteur - faire le menage dans les scripts - mettre une liste box pour les commandes (avec un fichier qu'on peut remplir) - mettre des combos la place des boutons - faire des static canons, des static DCA & static tente + feu des postes avanc (piquer ceux du concour ofpect) - ajouter la possibilit de mettre un text pour objective complete (textbox) - ajouter arriv de para dans l'interface - augmenter le zoom de la map ***************************** En cours ********************************** - mettre des feux dans les statics - refaire le script d'helico ***************************** valid *********************************** - OK - system de soin - OK -cmettre des unites specops - OK -modifier les drapeau -ok- script deplacemanment du respawn -ok- changer le nom platoon -OK- faire un script go marker (avec une boucle toute les minutes pour un suivit du marker) -ok- corriger le bug ACE 1.08 -ok- trouver la caisse pleine d'arme et muns -OK- optimiser le spectatscript (closedialog avant et reouvrir l'inteface apres) -OK- optimiser le on master (closedialog,pas besoin de cliquer sur la map,message vous n'etes pas invisible,ajouter addaction pour en mettre a volont) -OK- changer les couleurs et la police (mettre tout en blanc) -OK- virer helidrop caisse -OK- modifier le largage de caisse -ok- refaire le script de depose d'ennemis dans les batiments -ok- virer bombe de l'helico -OK-refaire de script de convoi -OK- mettre des fleches et nom sur le gps -OK- activer le gps par default -OK- refaire le Halo -OK- refaire l'inteface pour placer plus de trucs -OK- mettre le mode captife -OK- virer l'arriere plan -OK- agrandir la zone en hauteur pour mettre plus d'options -OK- acceleration du temps -OK- ajouter forcer fin -OK- virer les UAZ lance grenade des checkpoint -OK- acceleration du temps pas fluide -OK- ajouter objective complete ***************************** bugs ********************************** le on master qui vire le addaction avant les 30 secondes tempo +boucle for virer la possibilit de lancer la mission pour les joueurs remettre les console_init dans les consoles verifier qu'il n'y a pas un bug avec go marker bug de placement du respawn ***************************** pour plutard ********************************** - marker sur chaque unit ennemis cre & ajoute dans une listebox pour pouvoir la reselectionner et lui donner de nouveau ordre (+ possibilit de cliquer dessus sur la map pour la selectionner comme dans spectat) - mettre une interface pour le choix d'armes en debut de partie - mettre des image pour les stactics - ajouter de nouveaux objectifs (detruire pont) - ajouter les insurgs & CDF ***************************** notes ********************************** a ajouter dans mission pour le script de Heli. class Item47 { position[]={-3476.171875,0.230197,24240.650391}; a=1.000000; b=1.000000; repeating=1; interruptable=1; age="UNKNOWN"; expCond="console_heli"; expActiv="cons_heli = [] execVM ""computer\console\spawn_heli.sqf"";"; class Effects { }; };toto setDammage 1 --> tuer l'unit toto doMove (getpos tata) deleteMarkerLocal "Marker1" _streetlamp = nearestObject [getpos joueur1, "StreetLamp"] _bridge = nearestObject [getpos joueur1, "Bridge"] Building = nearestBuilding Object [toto1,toto2,toto3] DoWatch getpos player toto moveInCargo truck1 [toto1,toto2] join tata this addEventHandler ["Dammaged",{this disableAI "MOVE";{unassignVehicle _x ;doGetOut _x} foreach units group grptoto; "this and not alive (position Factorylocation nearestObject 299) and not (alive scientist)"; _MydualList3 = [ [nomvts2_StaW1,"0"], [nomvts2_StaW2,"1"], [nomvts2_StaW3,"2"], [nomvts2_StaW4,"3"], [nomvts2_StaW5,"4"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; // Check for new units every 2 seconds if(time - _lastCheckNewUnits > 2) then { _lastCheckNewUnits = time; _allUnits = []; _allVehicles = []; // Avoid game logics _foo = []; //Next line of code adapted by norrin for revive script {if(side _x != sideLogic && (_x distance getMarkerPos "Boot_Hill") > 700) then {_foo = _foo + [_x]}} foreach KEGsAllUnits; {_allUnits = _allUnits + (crew _x);_allVehicles = _allVehicles + [_x]} foreach _foo; _newUnits = _allUnits - deathCam; _newVehicles = _allVehicles - _ehVehicles; if(count _newVehicles > 0) then { // Add event handlers to new vehicles _ehVehicles = _ehVehicles + _newVehicles; { // Add fired eventhandler for map indication _fh = _x addeventhandler["fired", {["UnitFired",_this] call spectate_events}]; //_kh = _x addeventhandler["killed", {["UnitKilled",_this] call spectate_events}]; _x setVariable["KEGsEHfired", _fh]; //_x setVariable["KEGsEHkilled", _kh]; } foreach _newVehicles; }; if(count _newUnits > 0) then { // Add new units to end of list deathCam = deathCam + _newUnits; // Request listbox update KEGsNeedUpdateLB = true; // Create markers { // Crete marker _m = createMarkerLocal[format["KEGsMarker%1", count _markers], getpos player]; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.4, 0.4]; _markers = _markers + [_m]; // Set marker color if(side _x == west) then {_m setMarkerColorLocal "ColorBlue";}; if(side _x == east) then {_m setMarkerColorLocal "ColorRed";}; if(side _x == resistance) then {_m setMarkerColorLocal "ColorGreen";}; if(side _x == civilian) then {_m setMarkerColorLocal "ColorWhite";}; // Create particle source _s = "#particlesource" createvehiclelocal (getpos _x); KEGsTagSources = KEGsTagSources + [[_x, _s]]; // If tags are on, turn them off and back again to include new units if(KEGsTags) then { ["ToggleTags",[false, (_cameras select KEGs_cameraIdx)]] call spectate_events; ["ToggleTags",[true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; } foreach _newUnits; }; }; **************************** a mettre dans mission ****************************** class Item7 { position[]={-3735.728027,0.408519,24126.201172}; a=1.000000; b=1.000000; timeoutMin=3.000000; timeoutMid=3.000000; timeoutMax=3.000000; interruptable=1; type="END2"; age="UNKNOWN"; expCond="exercice_Failed"; expActiv="boucle_cinema = false ; forcer_fin = true ;"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Mission Failed"; };GGATCGVARhvGGATCXAMGGATGALFGGATSFFO@*жm۶a0kUUmCb'sUI^NDb1/j$bzX蒐jQx EjU4mۃUUZ*I$I$(UUUT 0m۶m,LUUU Edm۶1TUUU*!ضm۶1TUU6d1jQUUbcIk}Y"A bCIUgjA/zzApɵEjcI()ӄRJ*m۰lUUTRI$IUUUIyuU ᨪ$I$gj_js%*aɋrWiAzbIUZ *QUUxbCI.-rcIW^ebIUU~pQ@^za8Y"A 8b;)I$+K/6ضm۰KUUTRzm۶m#sUUU%϶mc`{U k_j肨b{RzIs9Zk{ s/rנJj cIx*zBI7x)Y_}b {#AUWWXDI86QAʧ-=iCIWƊB Zm۰UUTV7I$I|UUUmcVUX$I$lBzs bZ{)(}UhZ b)/b#1ׯbzj) {ZWˋgZW b (su]rJ"IzcQ%{)Q 8Wp*0Q@\rYH5 ؑGbiZhh m۶a;UUe6HsI`xIsAzW(Z \UխAb -bD1*w kA/{HZ b sJ{bwP kZWK{b_UJ*&Z\*ˋfjUˋYz0Ж)@u^邀0+gr8z?Y@`ʶ=ہ}aUVZPm۶m,ΜUUU=nvAzJXWA!% &B#9FBAݾ hZ9{j$9|pj0-K{dA ̋GZUڃkQ*gb/̓rŠgZ_耀iIj0jbz1~zIUh AXeQa0- `(.?7Q_ PUUVX!I$IUUUֶmۆUU )ڶa1*sub9_WHs(^WUrX׽FJB R9FJ9:ΪbBU+jJ( sJ>Zo͋1`gZ#9_xj1_͋c9/U-A+͋bFZ̋FZ=~jZj kI {a _Q!(8$I>/ {(7'/*jfj  jca`F V mۑ/UUP4I$IUUU0m۶KUUURжaV.XMIz~_b({R0nw_Iz_ J JA+ RFJubFJ}UU/j&Jիsb}gjeZ jEZj%RJ0p j EZAU**fZ") kc9U_c9 U͋c9 퓃IX 퓄I &Z-^DAdI_j|pjY / {;IQ8$,:0˓)U]’ ՂYzWWL/GƂB*'mۅhUUPB1m۶m#{UUU3im۶UUUm۶UUUP ޏo9C9qX\],(zWU)s0rjd9T]RA- R:"bgJUkfRU" jb>>H{bWjbpkb_jb^jb=i){A &rp%Z!  &b%Z5eZIz(EZ9_ꀀ%Zc9U_GZ1c9UU퓄9Ű&R%gb xZ+Fbժ*˓fr^Pfr&AI`x^a"Q 7ia2?Ha%UUƶ-ۑƒUTRJ؏̓QzzF͠8@*0׶aNR@(FJd9{' bc1*kFJU kfJ(kj(sj?r]kj8'sbwjbpjeZ jDZrjDZBrEbh{hr )ra(P`EZ ( b%ZFbR^fbZ{EbQEbAW *fbA]_(EZ"11 UJ{0=I{In sAr9@~__b8//bI~x+iBQ-jaxsZi@VnnŅbbWִrZHsbu+jEJ(kb 'sbkb*>'sj}%'sZ+'sb&sj{kj~zjb_jb^/jEZp>*jDZYkrY57)Q_ o()R_ Y_zQUrQ_EbbI(EbQ5jEbJM)Eb1zI@ |J{A( UUk0/+{8~xY0WW\Y8a"I«a"Q?ƒaUUm۶a+UUabtMb\Uheb'sj>'sjîkjrkjkj?GsbWjbkj+&sb־'sj{'sjzsb\^jbjEZ>*(jjjbȢbR|ˋQ*  &j)+j sxjrVZȂ`0p̛BI-jQ_,j"I_ zbQ^b"Ix|#Ib0VxZ0! UV|r! -UUrA x5Y XcQA( /Y@ FHCYUUI$IUUU%ڶmۆ<-UUmcP)sUX$I$ebxUH{Db-G{s*YGss`U(sjmkjoujjXk\jbc+jbjb, sb6kj5;'sj{gdkj#kj'sj_w~bebjjEZЫ sb￯sb}慠ˋZ__Ycb* 5 (˓)ueJz+sjz@>.YJ. QoYC2 8¢YcI#I_*!(U~ȂA(UU^$I! UU,Hj  YA(x fQ /ߜ@`HzQsI$IUUUU'޶mqUhfjUH6 W")rU)ji(`zb;-?zQ`)%bjY~-$Zp {b}jb)(sbW_jEbjb "'sb'sjPݯkj=<(sjseZ|jDZjebjj';sjmO̓`(* B@ RAUQ zr(QbkQ7%Q C̛Yb%br IbQp,YCs"AYBP CQz Wza(^Hb0R୕  z0k.I$IUU@6ˋ8XZ^^sA W5%kQ(sEZ(sEZ W(sQ_jAWrc9 {#I}^k0W1́( %51cIX`j9rb%/sj[sjgx@wsb_'kjoGsjYM'sjR sbxjEb^|xhj$b+5jj-'sbz; rRXTR b$JU_ M@rXgrA )HZz jP%bMb̛aqaR߭:YxjcQBpaPbnIr48jrb\rYz~Q(x  j!( ͶmVpU%E\WUUfzܮzA x|||b Gs'k)-Hsk*`Gsj Gss{shk sFjp YWJDI_̛@1(VѴcjCArb*sb)sbkj*'sj,/Gsk ð'sjX~hjebbjejZ@jY +,Q?/K&b TWUgZbI);=MI?N \VWUR(=+Jc9++U)9 jca@;aٲa̓%jAab-bڗfjz^ {YxVFj8_WH   (a@  5acj{* (zx)z 7 z||||b Gsj-hsj*Gs'k+;0Gs'k(,({&bzzb& r9/~jpppZ! ' -%ѴIM7 pb"I 'sjY}sb*sb'sj 8h{jz'sjÊsjUVTj%bz'ZUW ՅjiᣲLTީ_0h``Q(Օ5bI7EZc9WIc9 rA UUU){A ujA +jfb8 -%j bpPP"Z`@j {Axgr@(z_W8x_B(  a0 &I$IɃUUU5m[U!`XWUU)ǂo#20JȂ?j肥7Ja(\\V\j---%Hsj'/hs'kqhsknfbJZږ Q7zb5;)r 25kJzyzpppXb@ %%%-IsbK `(k>7 \jQ sb(sj(sj0Y[w(sj_sjb/rUU-r- EG)aXŢU˴ӽ ppXXFR 55%%bB//ebQXzZI /ejJ_ bA_FZAeZ"1+zJ"1AU&b`U8_gj x^W0W#IB($I z  !( U m UHsjTUib j)?Onz+"jA \T\\jA %%%%iskHs'kRyHsEb@!A( )"I6 b90@r) Ѵ@~'<rյRNjx0Pjj ( %%&sb'sjZ['sj=GsUUU5j-%D "B CeZ$C*s`{@ PrER  j$B- r$Z~zhZIxjQ*+jDZxȊj%Zj$Z 7Eb"9fbA]WQ0bdA! br(u %b(&bcIkMjY5  gjA'I$InUUU-۶a+/Lj\h{ss{'sj r%/˛jws˛)oIJ! \\\\fZ!-%55Gsb+Gskju({b@rY-jfjأ r{&JaK"z8j%գI%N/ x-(Vs0% *&sbfjUU5sU-H-Ed-D &>Ë́r#Յ7 Eխ%ݢ^^}+ eZV^X`j$R_ujEZ !+rb.jQ^\xjQ-%jeb*{jeb jY^p"%bI@EbbI .Ej$RU rI {Eb `rQzXgjIeb"I?/^  rCI76h{h{s5?{s7~{sH{cj'7jN7˛)6IֽJ! \X\\&R55k%R*HsfbO "A, )Y /&jb'jfj>z`za``XgR  NER_mNzz`ܵjI__/G{EJ*&jU-z`ã6Cp@@ţ D 9d ec7c6B '<D`$jUUWTrjrb寸rEbzxEbQ^\rQjdb'jZ jZzrQח+r$b*({Eb zWr$ZXWwUfbQ%ZcA0n|jQ  fjdQZp Ѷe#6ol{r{'s `{j_ήGsj.h{k˓r''77̓jzxJݞ)ka \\\XA5555kR(saKvJYŠ(YFjU{/J%b YjfZ ؔ' jJտhb/Uj(Xh{A/bUխ {+ )ż@ ă<̃dB$$D(fd=*F Eբ2F+ r^Xp`jj~rjpӺsjujYXpEbQ'jEbWjZ~rDb#rZ\r$ZwjZjZʈbYajhebQ練gjII  b( WI$I1UUU2 h{s7h{'s{'sUhs's]YHsb ˛j%575Kh*˓J a X\XXdA55s%R iJY/kj%bzJQʠ jfj돴ro0 hxGs(+*Gsb+fjUU/̧jU*rF䣍^+%c("&.̤5+̢($%c# e Fÿ& FկUG@ĦjUVTXrj?2rjIjjxEbY~XprQ- I{jݿjsQ`/r$Zsj$Zj$Z~wjEbw=r#Z'*jQrꬨ%ZI@  ZcA]"(/a{k;HseZzjrh{b:"!g{'s`h~{({h{'sH{csJ*()_jja(\XxXC9rQ?JYjY `JFj.[U)r*mGY*brb 6' bUU j F)%E&㣠xz>ep`:D++*ģXr$ ̄ ͫG'F̀*E?_gze"+zDݥjx`rCZ( $reb?rdZsj*'{eZ^s$Rp.#r#Z#{jEbljZn;jDZݙkjEZ@Hw'seb5b$Z^bZ]St  QI<vcihsbs{kh{bHsk/;U's%'sH{k~jb???H쵡웋 k%A XpXX#AQ csJQfj(6Jjr}{0zz݁+* W-U_ݤVx⣺p`eBˉebfb& %zK%k *͆B&$ Y&'~F͈E 2f%\e%կEj @eC¶%ͅjV^Xp'{j-8{jx({$Zz޿(sb߽keZL jeZ$*jDZ3 jDZHj$Z^֛jEZ5oreb}v|r$ZϪj$Z߭  jZU[\OULj~~||'sb 7HskdHsjYsQ\\sQ-%Ijݟ m kZ?웋*̓a ppXpI {#I*Qjb,~jr-B)dQPa(' -톼fgZXDj($ͥ{ģ`zkeãcߜ"+żfX\^e检`'ţÍ7qpp&ͦ)Fզ*FV%&FՅzEՅ% Fj^H{xWUUH{b`sb'j$ZjJ$sbkeb*keZ(sDZjjEZjEZvb$Z82bEZjebegsEZwV?  $ZU]rz%GsbzbHsdZŠ'Hsj ukQT\\psY%%-/Hj k (ppp`b(7j@ zb?Uzb/z&b !cr(`hrHJ5=夛 GYYgzpľ|~X$ 㫉4,' (䫂eěZ<#" ƼěZȼޕ$j%XzYkfzY%i 0VX`ebA0 -5'sZ  jIZn+6j-ʃrXxHsRPX'{bbrdR (sj/"isr^X~_ 9 .̓? &Z@eIUWVTY --5GjYr&b+ *r9xܾ/'sR Gss" 6ieb?冓 Fݤpx&Gwk(ͧzZzbE`fRA ע?/Vƛ] E5&p %z ^H{pWUUgr'sb G{bJ{j'sb'seb'sbsb[OjEb$jQ.zY7r$r/z#j GzU&aXp$rHjꪊ#Y(W\xfb( 5  ebbA)"Nc{aӽUUŅj#J'kj3kb8(sjݣGsjjjI .̓Z`z ⾯-̓+%k (WVܜfQ(Ta(?z8UHsA hss~H{'s]}gsjjfݦj -%EgꨀHzV@48E&%ue^ fģFd --(Hp{xWu{'{WzH{j PV'sj鎴'sjgj]uGsj~Gsb*'sb o'sbwd2r8$b_%zz#j\/G#jU'rՕ*Gz}8 g{__f{o}&{iW^\xiA0~xQ(5W  eb8 ʏotj 'sb(sbCJ*sZGssj a.{ k e.5̓0pHjVVT\&J --%Z0*Hskj9'sk J?Hssh{s㊾ieZF GwV\H~v^E~jE/fx^ gCx(dBI*^UHH{\U]]h{jh{bH{jJH{je'sj\(Gsj)Gsjb'sbI3H{bُ'{Db<zAI&zj/{Cr gz+g&{2{}G{gzF{%Gjpz!Q_~CY(^\Xp  Fb ( %)vo6bI{Q 7(sDbʌ'jebrb&'kj { -.}훋ck*̓0`@'jXXscFR! %jEJ?=--(sj'ssHss(h{j'sjhݥj -%`gojgx(P ޢ&`Z%G7棧6GzW)G{pWUhbh{ebຩ'sbǐ'{b8Qsjqn4Gsb #GsbάHskG=H{b,o'sj*Np'{Cj&rzj|z$rUW=&drF{_'sg{)g{g&{G{:*G{uubg{5Gax~~$za8^xr  CI(W:e6RU swAŨcQsEZreZ&kEb+ j --̓j *jm̓j2&쓋H (}ovD9 5jA/+ sje'sj)(sj#bGss(5G{{) W)jf% Gե\e`*fֽ`:% &{^ȼixWU]˓jPhj^m(sbC({j.Ysb2aϬsbj#G{jh{jm'sb<H{bh{j rdrz}zDrXwWz#jzdr5=+G{_?G{?zG&{"g&{+g&{$g&{jZzg{urG{Gz@aW^^x  r(W^\|m۶a+jUU6hjj"A:Xj{&j%- sYi{$Zzj$Z*nrEZj-%5̓jYJmI:y_r`$ATPR0 Tj9 )sjw_(sj>?'sj Hss_c({j {Gs~Xr %Fեľ 'ͦx~̆kzhf `^i^UUj*xbxH{b'{jGgsb'{bH{jfH{jyΤ'sjO*;G{jeG{j{{b'zdr@\WzdrWzdr*'r+GzݫG&{CG{ G{+g&{56g&{,ʲh&{h&{ZG&{/g&{+hax  i@X`Yfm۶a箜UU2FssbAzrCApk{cA)̋0s%Z(sbgZseZAjb/--%웋u r(fjj-%b/ ArfQ WVVTb0 ---jjI{jr'sjc(sj* H{kjG{r? ebh$ *+)'e X'H^UUj bj`H{bH{jOseb`sebZwseb7k'{bO'sj,9'sjvsDjGrXU_zr#r{'r㫵rww &dr}.Gz)g{*h&G{++G{xG{&g{GG{g'{zg{‚G&{ Cg&{p&{y   'aW^xpoМ sb6j{j֗k{b~ jB9$I$I ?BojUWTh{ebX~H{b##ab5> rZ j zEj %b >̓I`@eI T\ZPgZ ---sbsj5s(sjέ(sj?Hss:H{jVj jɋjjj`h{j(sjH{jH{jS{*'sj sj(nrEb촜rebwsdb.ardj 3;zdj&-cj_ zU*rh傽LGUUQʓ{tGsrgGyuG(0g'vg{g&{{g{g{ˋ"G&{8g{(h&{K>g&{ <   drx`6b۶m۴UUU2Vn kJ{jU,«(B m*JVUH$I$TUUUoFnR{jbh{bȨ'sjMGrPzרJ%b_.gjZ<r@hjA([^~xI -%55(sfZ󫉫jj--(sj=(sjj}]5 r-r*@j`Ti{j5yH{bn((sj jsjӫH{j0H{j:ynH{jn*H{jiGreb0ej݉z$j\WDj -ɓj&{--ȋgࣩ;j`Y|{S~\{\QH{j *zh{jkH{bΨ2hsbz\Vhj^--$jUgj G HȋZ`-Zz#ZԊrZRQ孩W{rscϬeb|TrZR{GIgGUgGWGm'G^gGQ{G]i]G{8:G{g{낿  gGhI$I$UUUo6ɃGso$ˋDZ7̓Q`쓇j*Yj Gj\̓b構-Gj! Xpx@H{ i{fZXU(sb^i{b<Hsjh8h{bi{km*{(s^eth{k8h{kcni{j{'sj8Z's$jXib_-ɓ#jUWz{#r-z-5GoDb*zvdbZ>7Db/_RjWmM1r6QrR{SZRziZ|z#ZO/G$Z 6_Gexh&zޯg'*- g'{g'+.GUzgGuUUG{,g'{*  g'{*Y^I$WUZ:{UUV\ȃZ^\xx̓r! fjZJYxJ@zkQ  J#AlXXb %55(kbO(sbϼ(sZ(j{bǮ{jyOi{k${ji{kh{k2I'sdj"P{$jpW$jUh#jȋ{ -ɋ{xZlGDbkw{Z;k{DbkDb]BZcIRdb<r#Zb֖rrzҨ$rGmqrZDz#Z|=(ZOogZGYiigGKgG۪g'gGG?g{g&{  G&{_ onzᅅ{DZ`ƒj%b JcI8jr١Jr@j{C7@XXzIU{gj(*sQ #Hsj^(sb(i{j,Oi{j$*i{b,*`Hsr" _H{DjxWuƂDjW+GDrU.*Gj(h&{hj JdjutrZrZb{-DbU՝rrj8 Qej5db5VTdbq^UϬDb5%zuw{UU_p j{pX\rDbOqrZ-zz#ZGsGZGG}aGG&Xg&{g&{^  G&{{;cmۛUU$XbꏭIzl7kz̓ ]/ J5(̓Z@@I뭭8WWWTja0 (sb(sbI{jOi{jsjzzErh Ger]׷*Gz{g'`BGZU˓G==w_jLhDbUU-Z|wRDbVRs2dbaMWDb\_U QbVDbwiwֈ&j djVVVXjZ@rZF\'krZ7rDb vhZ g&GGGUUG_g' *0g'{.g{  h{Fo+i[д$b)Z[r Y~8z! _U8%%5֣8\\XXj ( %%5(sb7H{eb~DbrzergSUzErW+Hz*g'G_ZTg'GW- ZG^og'./Lrk?$bW|rebVT}Zl^IZHI;z_Q- ޅjpWrvϬr'UUuͅjxBU#ZW]jUUZ\jZ Kr$bueGZ7wF{xGW_g'=g&{ g'{"g{G{`   h{I$I$1UUU)`Ur*(QXr0zW'bA(~U?gR W Z( ̛R%%,8prckb!(7'{jcHer kzDrx}zDr=* Gz7 hGkG{kGUejGGRz\hGe-=GW\gG5= jrRJ'{Z[r$ZèkrZ6I7Hbp#Zmr'7Mjϥ#b|{Zۺk6$b75UdbvO`^ DbUUtrQhrQ):A&{ت*GV[h&{Xg'{y/g&{y h{쬢  g&{U˛ ))0p``bjka(կ/b&Jb)%BW/nZu rͧr6.IMMǎ8 srCI#Dj{ zEr+*Gz Hzg7grȋHG:g(GhjGK.g],mr;ʓ#Z||z$Zix'{DbuI5%%ޥrp`pp QzPmjJRj^ZsKzDbXF{#b'Wgdb5)=$bvWVTrZ|rZjI &{g'{&g'{g'{谰gG{~~gG{r*  g'{W^ Vn6oPoBI`prR-"A z]/rj zUa_̓#9z//-@(UWVTz  ʓj멩gUh{*GzںhG&{* G^G,h hhUe/F? jqb:#Zgr#Z rQ'r``r} Eb|Vrm ŅjηdbU_rDbU]4$ZUV\Dbֽ$ZU%Dbp|{Z ȓG{g'{}h&{-og{/g'{Z}h{  '{s m۶m$OUUU)Ŷc){I$H$cQ"&bYzYzW-%j FbP`Y  0(\X j %64ɓEjGjhG(G'h:ɓ_ɋp0ɋݾ~pTC{?ɓU]Wgܺ",goϬj_\~qrZrYSzcZ! w듛{ˋV 3*R 檃5I{&w֢I\,w{Ұxdb:_6DbrxWU$ZG{~h'{VX~G{{G{{ *?G{{~{{W  '{r^*6o#geŕQa0w-#I%5({jr mhz`n` xI_Uj ~gZ@'BI%5% GxGjhiɓhݿ?ɋɋ ɓ˫铈-ɋ^ɓg>. ɓphhjQrk?˓DbuWr#ZIZ%6MsSΎ,ίR218z695քb zVօj`^UrQJgDbu%h5G{ohs`G{r*~Hr^U'{jzsDj^  rbW ^nA!(~85U1kPI B9~n"9Vb1 (+IsFZUU/i{fR}j%Jifb'7ʓ{ōhZh` G+ # 铩_铩sꓩ铉^铨W^+{ϯɓ[]h ebj*rdjVZskzQy{$Z{5uU{ 撽8(IwQޮ#r(Q^51#ZUuϬDbUU^G{Q ɋh5G{j~hsz_rer^rDj}zbUDji  jY*V0n;aUI$M$b@UTmIQUZA`*jI^jI sb*:'>H{b*jsbrHjbv_{Ij z_պ'hݭ?ɋ#ɓ|ɓ+ʓ%ꓩ~V^ꓨuUoɋ}ȓh{WH (>h6{Rj?1$bU0zTWdbzz6dj wֆj&jDžé)Υjw֜V#Z5DbpDb]g'{_W^G{?--=ɋ'{xx'{DjrbDjj\Z]$jYejY/  %b8*x%%6`sU+Zmb*UUˏjY>rQ )*+'sj4Hsjݏsb,'sj׵{i(sb{κsb~^ꓦr7ɓr'h#޽ :ɓ/ɋꓩu铩ozꓨJpRWɋU">gjgzǯG{?h5UWhUZ)rU]W\VzPPZXY%eb5Th Xx Q/rY}#bUDb'{j{+) #b`pz$bzrqU$ja~EjY ejY/eja0x^W  cQ _UUon#drzH77Gsj/- %h{b7(sj2%h{j_vH{bH{Z:.ʛrK{UH]h35ʓhɓꓩo ꓩW}ɓܗ铩u铩}WUh ..gg@hoPZH#k*QG UUWsVr\\zW$ZjTTTVdb-UUeb\VWUnDbCAyUQ>) ɋG{xjjG{jhs*xapppxEjYi$bBI pej(^^&j k]U( VU  R U PcmErUUIobU_whsb 'sj'sb(sj;喽(Z hr HmHpGh*'ɓH{**铉ꓩk铩iwj铩U]SɓYzOKɋkiKUUɓhgh֯Hmh5UU*rjhrhebkjUG{ebmh{{鯩ɋ'{o{#b<>7HZpXzY_Ej8 XY(\VUQ WU-Z խ Z#9+  ZJ2jXX4v`r H{j|us$ZhrEZchjG']hUھHʓhU|H+h4}^h8,)ꓩ}ꓩ铩>铩ZTɋ'ɋhp꓈UUUsh~wUG{/Gjk G{HG{ZhH{'{ */hejXX{H{ejjra6Ur8za(UGj \VUFR U+Z9-"ZEJ;bhRJ  ZI.!U!((jUA(PXXbj0 ''/){dR%%(sb%b=hz8Hh]H{HhZ_Uhɋh$ 铩U铩铩b铩׎ɋzg jh0g)gH~ɋh%ɋG^'{ڟ~h'{'{%'{$bXHejja`^ibA(wY(xWUFR U fR0)b$J*ZJ޲eZ%J5bJ_   EZUUmg;6UrJ$& ;[h MW@‚W0z@5bA sb8"Jj%%hr )HH %hU[hԿWh_h o^wh+hʓWꓩWu-ɋpPɓ?ɋ~gּh " ɓ{{H*xxG's'{bC{zkh'{wH{$j~Wza\Wյ$b8|&j(~WUFR(UխZa0 ZERbJϾbER{o(kERieZu ibI: pV  iBApUU/a[i;j-- VXPpa!( %&b@ jZ*ɋrkcshz)+/HHhYuUh^o]ah]mGoGޝɓhhɋ)?铩|]ɓH{hCnhb h'XH -ɋh~\jG{*(꿿ɓ'{gu{b/WH$buU$b!8pb (pXWfZ(_U-Z +ZR|^seR_wjeZwߵj%Rb]UUiaA*\bIb^UUQ"A|  Q"A6Ea{k;p`J-9I$I!͡ bB€a!(5Ua@`zA-zS~h{ +'{﫯.hW^mUhyhS}'{h'{H{گhh+ë*V(6o}ɋh({ hehx{hr(hj=hjjG{$jWHZjbA0`Fj(U&Z ^W-Z -ZdA  "b%RTERApZ)) bUw|jUե+BAXW{Q"A.Q8 `CIUU-  ϬaAU% 8Dc;iддzӓP=дG&&I$L$A(UWVTYb0bQ5%g{(g{ **G{?'{>'{({Hw~h'{, ({hH<#7he~UH{ H{yH{'{]hjZHrH{$jzEj\X_]r$jUU$j@p%b {Q(xWUZ % ZI "bZSUO,keZo#keZ:bIr~QZ9 Q̓YpX_WBIUUU-0bI-r쓩    2`Pм)SJj5ޮ$$,$` \\t qŢ0J@MoQz'{'{ワhGhGh&{"'{({ h({hG{+⎗hWjzH{rwH{rU{j _{Dj_Wrb~frbzEjQ XEjA0WUQ(x_UgZ _-b(kZ}W9hsbhsb(sjkvjuUbAX켠8_[ 飠8!A_5"IW5 rʼn U-U p  5쓀pWUII$U𼋋;>.4//UHHH$I$TTUU7I$1@U"ȏ0ɓGZXrgr`q({U_RUh&{zh'{Th'{p_U{h'{yh'{*uh'{ hH{kur~'{ej_rEj|rEj}TUer$bwrb{zAZEj!0z_I _Z UU Z -ZER*!beR hsZߧ hsk/ʋj_ "ApV˛8xb!9EjAI.z0bIW-0`I 40U?5,*`4WU1\UUU  ͋>*p̓6e?@@@H5Fnbqɓr'%'{|h{wBG{{,+jh'{|]h'{{MG'{G{'{G{{ |H{ejWzej~_Ur$bjej$jsej%jEj@fr8UCQ(_UR U- FRa(cFRcfRЫkZHsZ-)(k%ꋣI BV9^$b"A%"aAQUU5 Q8-0xTގ/b4ˋ^U1XUUW-̋UV  r Z-Vn6!!  `88I$I$UUUT?cmۓUU ʏrXg{WWW^H&{םGszh'{uh'{+UUGsXHr*Z'{Ejx~_er%jjj+rYZFjY &j`8^Y o]I UU-&R(-ZI>;bFRojeJ*h{buwiju[-I*\ʋbI\fjBA%%bbIZPŃQUU qŃQ q^]0~&̋*xWj{x ͋a\< j̋j`̋b6  jNvo6n;y?v揤b2:۰TTTT^nn+ɓZ/&{V^u'{r kH{{{ۻHrs{Dbx{Dj~UUej$jZ]Eja.rb7j%b`00Fj x\I _U%J /FR#9"fRIxb%J)jER!IbUu%1*XI{0ܵjbA fjQoPYUU-Y-)+0 `^5 xWUU ͋.͋_|W͋ s@틨j+̋ s褐*̋  ̋J{jII$wU~毬b@]ؙV[[OɑI$UMP#bG{z˺'{r( b'{rU{Ej XWzaEjbrVEjBQ*EjY 'j8W&j VUFR W Z0-bJjj`- .({$JH{bU? Q5̋ z̓@ rI EbQHqYUrūq}X \UUNT^.xc.̋s*s*̋jh&틋X틋^7+  0p ʏoV1f6X(m۰UUTTI I$UUEUUoFogDbza rbwerYhz%j"Ij`frI @r`0. Fj x^UZ(U- ZA(bb9 ~jAz]ZA|Wb(>j sa0%틅Q ̋r(-*{-jQp(j8`͠0 Տ bͬ`^UN ̋(P.]. spJ{B6*{싌Ve}j̃aK{~jl(X  b0- n#gv8x.۳اpTS[LI$I6UUU Fon ŁGaIzY.Z_{YpzY Fj84'r@(`pXVFZ!(_W Zb8 ZJUbA_߯jC9W.bI]ꪢj$Ru (sZsA(=(͋j xr JY@(Q&zWFjUՇr%ͬxWUU ,&ŐN̋U}b sܭ̋ s.͋k{\;͋j{*퓋{{=b9@\(p֭b1   bRkZ*o6oI?rx ~m۰UUVSLɓEH6bʟV8_~8ʀ&@~z@0zWUa(_-b խZA fZ%R^|bJ"kfZWkERjEZ8rb~sbj?ja(0`KY`IɕHWrH_grb@ ~Uz@jե+ jZZ {+)̋U} . { `^ s`4̋IkJ{cJ{sk{&Z@c9p֭j17 sfZ~WbQ{  fZ#A~_6I$I$UUUXFn#$8YgϬ*{RU_ojIo/Gb(^dI!(_UU\@!(UUU=Fb(5Ub#A(kfRvj%R_[jEZ{bsb5jb-2jeb_CjEZseZHr07& j@\Xrhrb@}5 zb@UJY s*oO s獩̋r tFZغkrz~kj Uj sj{R`i{IXHsb}jfZ~wbI^WQCAz'5dIAw[SI$I$vUUU"c+ sEZ`:)sQ%prIz«jIhHb`(x肢a8U@(^b 0 %5{b]%{cް(seb@sbj'sebjebjJ j%Z_]ub%ZjDZ*@pfbQ }zY8.=JEb r" &Zⰺ jFbb`jJ{UzY`Gj0J{I^5+'sR5jbL1jQ&ZI,xÒQA~$G CIZV2m۶mAPUUUFo^nr싧bUt sb([jQ\( ZcIr(6?!A%" !I\X^z!I@նjcQa0_j@0 {b9%5h{kvw'sbGsbsvj%ZhnbRpb%ZVjR)jZPtEbI~zQ=JGj jFbjJY' jgb~Jgjx*{CI >+{pba x "b0-keZUsR_jQ FZQ~0@aX=!,۶m$I@TUUI$I$ZUUUbn+i啕MjUUW){R~.GM* J&lm@UU ׶b6h[P @UUWTb@0` Ia8% ohDZX(sb%H{j~V'sbZjEZJbRjEZf>;+j%b"hjYpwUZIxQ"AʢKQ? {&bh@jFb`kFbX׭zQ`zQ-Ϭ0 !9`b0bIEbIߧ4Q@mZhVUH$I$QTUUUJon{r̓QPBoomۅUURJI$I5UU) (w0VW prA(_P*ڙm+UU*Fo+pꩩ듅bpHsb+%b*seZbAj9Uj1zUQ)UY)U$b1 U)1ˊUz9_UzJ+Uj8"FZ 1){ *&bp9 -A(\'JsIu- m)s PU:m۶mRPUUU I$I$sUUUFn#r (bY 6bXQ`mw95U~h?V`x|B}ٵ=0wRRT%ȶmؘUU`U"۶ IUUE!~UUZUHJ$1*1E1e!2)U 2)*U)2f))2)j2)U2)U2)U2)W:!%Lk)"/_l".o WX,Єm?u_U mۀN׽UURI$I$8UUUTI$I$̓UUUvoQ(Ȃ>{Hh(XUWUUX%!A*:U RE!UURe!UU RE!URf!U Z)U [1-ciBLcRMc [--cUU)M[UWTVmc [ mc-[ncR~kJ_sI:Umc 2UsI*UkI2UkI*U~M[I*_U2!W(*=UUU=/?tUR/ m۰׵UUVK a{bueQѬXUUUJUU JU-Jf)-RJRJ* ZR奵ZRZR.*ZZ* [ZLkRZ!x-c)Ge [E)Im-[! [E!DDnkE! 5Mc [/t-c,[Mc [ +mc [Mc,[UMc,[**mk-[.sMcUUUkJx{(2UzsI2UUWX&5_ =اUR[N^^V1E!````McE!JJuRJ RJ ZJZRZRꊂZR ZR [RMcRU*Mc1*nk1֪Mcf)mc)BYmc9-[E!%-cR [ZTU@ [ZUU,[ZuU [Z,[ZUMcR*McRUMc [mc-c+/(:oKBC*++))?nKHHh`1p1b1e!XXذmcRyZx\ [JkRUUcJ~Mc:Wk!WcUmcUmcUkUk%!UUk%!UUc%!UUk%!UUcUWk%!UUkE!UUcE! UUmcUMcUmcUMc% UMc)ncJmcRUkRU^J555֯kBJnC))))D5i"  Ӝ-c%BE!kR||||8Rյ55s|TJ~RURURE!R߿R$! ZiJRRRRRRZJ ZRUZRR9@Z1UR9Z1UZ1_ ZE!W [U/RUR/WkA/jB776ƖIɭNC)--//w??Ci2``O$H$TVVV8]a;c׵2 M[f!McR||||YR5555nkRJURhJRRR$!@@@iJmR RRݪRR RJ *RJ*RJRJRJ* RD!@ [ URAAaa [!U+cM [AW [!%>&&RJRJ R0 JU)---1Ci"@@Pv۱4TVVVIdɑv(2k)55McR|zzzY-[5555R1RJ꠪RRRR *zR$!@RbU RA RJRRU_ZJRRZRU_RRԸRR [`X [@U [bq [UURAIAZ!R  SRUUUk,[RUUUk+[9RRrrRY----C2B‚.ֳMہsVVRR6b#bmcI2)k)55%% [RMc%%%%R(: RR_U SR*RRﯿR$!@@@iJ U} [! ZRZRWZRWWU+[R [Ru,[RU+[Rջ [<<\+[! %+[AИXK[b@jULcaqs+[lcA [)URe)>ȏȏ1TTVV:1xzxxs!mc [Y0| S9,[R [R [ S+c S+[ [U&* K[ [+[ [Lc+[}wLc SLc SLc+[Lc*[Kc,[Kc,[Lc+[Kc,[ꪨkk,[kk,[lc+c?lc+c輸lc+ckc,clc9@@@@q-[RRRP4s 4)2PPPPmC2---%4*ȏȏӔ!j:1xxxzs!mc [:88qŅ [9 [ S [ S+c S+[ [+c+[ݽLc+[Lc+[uKc,[}Kc,[kk,[Lc*[ꪨLcJ[lc+cLc*[((lc+c**lcKc_ULklclcKctlklc_W_LklclcLc"kLclk:@@@@McXXXXs 4)2PPPPMC2----GQ|*ߟ(a;c;HʯQ$J21xxxxs!mc-[:r [(: +c S+c S+[ [ciJJ+[+c1 Lc [Lc+[/lc [*,c\Lc-*lcKcvlcKcnlcLc+lklcLklcLklculklckLclklc *kLclkck:@@@@ӔmcX\\\| (2PPPPM;2----?s*H$H$4TVVV(IIPqȏȏ KE!I21xxxxs!mc-cYr%---Rppk1U+[1UK[1UKc1Umklc1 ULc1KcL[lc$!@`Lca39lcDkRlklcUUlklc_klc-lklcU*msc{lcskUUUslkkkꪪslcs(:``Unc\\\\0| (2PPPP-;2----?NC2ppH$H$BTTTT&(c;c(:qȏȏI2f!%'''I21xxxxc! nk,[zzzQ----/|!~+[!ULc!ULc!UKc!ULc$!Ulc$!Ulc$!lc+c*(lc@@ke)U]kYkLcklcխklkklkslckmkk!PP{<s scsk*sJpАUkTTTTq U(2XXXX ;2---?M;I*```D ۳uUTTT∾ZpI:%!$$&&)2)xxxxc!Mc,[`@@Y0|))))1k+[U [4ׂRk [LcJ[kc,clcKclcLcsJj*LcApk! % klkkmkkkUkkuskUcs Р|E)(sskss޿/hBkTT !j: 3zxxx@,;I*``@@U=۱TTTTII [i:E!&&2)ppxxkf!%%%%Mc-c@@@AXk)))YHBKc SlcJ RlcVLc lcTlckk*[klcUWklk7klkkkkkk9@s!s <${a\&{A sa`|A`sRssUR7qk 5)\\\\2i2----  ;H*@@@@TH$H$TTTTIIR2%!2)Xxzzkf!%555Mc-cMc 1Kc [+[ k$! [a?kW+cbIaqk!klc? klkkmkkmksksks@{bW|A&&/|$!'WWs!-5{!xX|$!ppՕ|mk|s>J&s55ӌ/2\TTT2i2+---  :)*@@@@TH$H$TTTTaa;R1E!1)hce!55k-c-c %iBPp`@lcR"!+[b LcAmk}is!U+k1BsP{k]WVVkkklkscskskss*+/{Lc(JO/|A |46|HJO$ؘOs/|{URs55%%UӔ??Q|2TTTV2i2-+- :(*@@@@TX ۰TTTT&caZp(:%1)xxjzM[e!sMcVVTTMc%%55֍cjJʪLc) LclcAժlcAlk!5*kaXs*{mcs*[*Jk)skss=ss++ss|lcN{|bU|%!% |W|E!*/k|IB@@Rs% 4;+M[!2i2--)-_:I2BbbbF-۰ 8TTWW(IIRqȏȏ:$1)zz2E!kMc\^_YMc5Y>~:lc+clcLclklckk]klc klkkJ@`s$!W{`ZU*sbUU{Usss{su/|s{s*|s.|s/|{/|s O||J&sTVWUt Uk@I2) 2i2-)--  :I2bH$H$BTTTT(IIqȏȏMk1)zz~^)$xzjsI:Q|McUӔhj):PbBlc%-lc1Uc1Uk1Uk:UkE!@sUV{$5 s(:UsIBUsIBUsiBU{iBU{JU|JU|JU/|JU/|RU/|JUP2xW׵J1|s}_5qU2@@I2!2i2;/?m[J*ߟH$H$mcTTTT( @8/uE!VVVT1)ZzZZf!$!`ncE! mc-cjjMc r7_WVXpmcUUUU$UZXXv$!U% %USbE!U0kE!U%!U7qF!U&Ӕf!U64f!U8()U폊Q1UIv1U%U1Uv:U Q|):UVTTӌ):% 4|\TWU5|Օ5U!``ppI2*2j2Gk)H$I$rTUUUȏU)){_!E!vnc% mkMc}Mc 5rzzz׭:B*vUUTPRUUUIBU-c$!pUUUIB_|E!UUU Se!:UUUIBf)UUU|f)8UUU0|)&UUUk)UUUs)UUUMc10UUUQ1KUUU,[2UUU1|(:/UUUM[2UI:WU%J0||t5% v2PXX\I2**2i2-/ Ɗ2ՕBFnFnk)e)$)f!kE!%%5cMcUUWTӔMc5r~~|^q0|`1B *ΣUWx:e)%!e)%!/)E!f)e!+ )f)+)).1)*.1)11%*):1(:2I::+i:(:rI:U%QB 1q| *0kt yUu>)2\TTV):i2VWU2I2 +Mî[JJJJvnn-[)e!k)%!n[E!kMcWTT^mcMc kEXrj2 UY S/zD!xYU~*$UU~U$!UUUJ)E!)E!_1f! 1)* R1UUU-1|1UUU 41UU2UvBUM[ x2W)2%0|UՕ5* yƒ@[!2i2Uo2I2 +/6OooK\ɕ\eeeE!%!f!E!pprxf)jnc)cNcqc/22o}22+W2I2zXI21^VdMS0WVTUVnV\Yq1E!)--I21---I:)2 :I2_UI22U9)2W(21wꪨ21*'212121*21*21}\\21*21(22} :(2 :H2)2i*j:i*):2UU^I:2U21xz_1)x^^ӏ|ڒ?oO[Ӷbe4EURbI21-52I2U/-):2UU:2Ui2)2U}zI22*I22W^zI22UU_)212121+2121 .*9*21*)22WU9)2___ :I2 :*i2)2 }I21~)2)~9jp$N$kSWTU"ovo+yT]Ue1 +-j22 +/-22_{22z):2UUj:i*i2)2^쮂I2)2zު):(2I:2W_Z(21{(21z21:)212121)22 U)21)21~WU1)1f!ٖ?oO[kcmyUUo0yUUTqI2) -52j2:*22VJ:22i2z࠸2I2_޾ :*I21R@*I21_W2E!~2f! 21z2121 z21U21WU11UU1)1e!^_? q?K$ ۶mWTUUɑI$ŕUUX`n/Ui2E! 2(222u22Uj:2UU2i2jhj :*I:)2]]wi:2W)22xzWW212) z2)_1)1)1)W1f!)E!g?_7M -۶mSVUUv6b۶mzUUUjU^i)1kbj:$j21U21*Uj21UI21U)21_U(21_21WU1)1)U))w))UU)E!)j&R -cWS UIT Wm۶mRUUU@6b۶mQUUUomsUU9&`VU LbU m@U)UUU5fOUfI [UfIZUfIZUfIkU <+ UE!UUU IiBEU, IҌUUK7tlqBU%Om۷JUU'H$I$QTUUU /m۶5άUUU m62UUඁ5r@XjcI}W?fjQ.MUB*@I$I$UUUT &I$IsUUU$m/UI6Pաh{Jh˃jp*){QW cIr9z`Q8/>5RJ+I$I$PUUUT $m6jU  ~Ikab9 +KsAuJ{9 b5UzQx&br0܀FjIX#QPX`@ m۶m,/UUUDmVUȟ:#1WUFJA ޭZ9/sIUe?lC9K{c9 Ub- R JIZ(z8Ϊ\_hj0/-1jY^`&mۄUUR,I$I#&UUUA 2m۶mUUU"Vgvn)s0FRB z* R() jfJUխjfRkbo~){cAC*j9FZc97xc9Wkc9.-UA -Gbj&b bQ jij*aWUU ]UPJ* jx_x70cQ@j0 j9 kb  'kj("kjxhjeZjjebWt{9` { "zZUWFjI[ebAW s9%^~ sA(j0\pa@,%@rY5 I$IUUUI$I^j{UU.e'sb'sjkjkbVjb.&*'sj_kjhzjeb~jjzY .%RJ9  Jrh*ja6;)Y^3zcQ^A(WWzhj! UQ0a_i0*- qm۶m#UUUܶa,,0jeZ ){%ZZrDIN0*jUUUTsb׾jb)&kj{'sbjEbjj" Ь@ * ozDIJ )BY) kj&ZJb.iJfjr {A`  HbA0+7 -m۶a;UU%FȂ0````Hs( Gsj" GsjpJfjW--J0``1()kj'sj5='sj`j$bhxZ TބIUU͡0[^\{"1-)A U$J芫jz FjJQ`r (^W  NJ! 7 %% ֶmƢPUȂ*Ia ````'sa hsko&bX &j 'xJ(``3` 29jj ( 'sjrUU r $j@փ } jBヂbQ%%7bIWz"1/IU_Ia(p^Yտ  z8U Va{{rsJښ! ````j! -(sY0jgj9)zҋz R#) #1`I(*sU!ʉ%Մi Dĥ:Eb*eZW\XprbjQpjZ"jZtrQ-r$Z `^jAz  FbcQwH eb7/h{s/h{bj;?*hja ``@@b- z%b&! r~5,z0`k() IA{ g%R-f *"(*#@$# eݤ/&͇*r`%jUUWTjY`rQ.rebխJrEbVU^b$bz.jY_  Z0` "Poh{j'sIk??͛Is˓0``@` { JfjI )rI$A_߷/'զb&$?hã(ؠě JEd."%d^&f%wEj`%եj\Xp@{jUrbʼjdb,x jebYb%Z j$Z:  ebQ^X ovoq'sb <kQ``@rcQ웋z ̓1@@@r! -%JFjuU)dIjzݣI /&}ej̥($`n)`)kƼΌ$ *&ͅgZF{`^UU(sebjebפjbjeb|WUbY(`bI"-  H{EZWO ݶn#k{v{R`'sj'Hsj ̓ &Z@Y%5ja.% ({Iޖ& 's5Ue'ͅetxle%@ ě棭&%F zf* `'{pVUk_UU'sjsj_upjebp`s$b/ezb/+aZBiA0'Xp  ebA(" cmӽUU&r]vkb'sj .J .?K ~x|bb0 'sQG{kz gj %gxxx͆bzE‹eţ`%H{zW'sXUUU({j\'sj6Gsj{^sbrQ "*&DjW-/ gr媠F{'H~|  Fb ( 7 Ư0k{Zkeb */s̛:hb! )--%sj 9Gss/s5UU%͆zz\FV`VjWhj`]sjr-'sj/Gsjgsrs{Drb^W&{$r G{/.g&{G{'i`  (^zh pI$IsUUU6jj sCA*&<Q꨽sbUe&j )`I`@JBb!(%%57sj/'(sj*.+zGsjr %H\fj_s\UUrb(prbsj srjsrЊzdr\ Grխ G{*G{2g&{g'{~Ϊg&{  GHx *n#a{U*sj.zHr@a_6nЬH{b&j%r{0rHɇR! 76sb(sj-j)s5_hj}(sj'srg'sj rj"GDj7r]5-z],r'{~tGjG'{ G'{g'g'{  rJ* *bmrUU7H$I${TUUU6I$I$UUUoR˓j͓r}&b { xxhi{I)ijjHssv3Hsjjh{sH{k@(s$rh$jV/ry r+hDb~ϬDb) 1r}{GZ /gGUW&{gGZG{,  {+ vo#g61b_|̓r҂r@WUkA(bj  HsjUUHski{kGs(s诧'sDjX'DjhCj hj ^hjUj=Ur5ˢ|GJr~^ dbpRSZ'{ejUUUGjgG[ygG找g'zz  g{ oFniFbqzu_+ @jʂCIWXX{j#A(sj%IsDjz'{erZu'Dj/Grr_riDb_%cjnDbjT6֦j)WhUodjVVVTjDbgj 5GGm_G\W  g{ 3cmФU ͇jpz̓8zWI{(^8AIkrb0 {erpZ'erW+GVֵGzG]ejKTˋejPWUUޅj%wzvdjK2ebXjUT_\r$b:ݿrgGng'{   G'{ o-d9 ϼ&Zկz&b77rA('Gerh{ g GgG듄jrj*jDb0(DbɍZrjoSjUUWR#Zsk&rjUUeqjGG{g'{(}  g'{r_U mcc[/UՕ4S웁( 551R'>b7R<(^01BI G=ɋ%ɋ谪ɋWcɓW꓈UUMdjV^Zrdb%5Ύ_Mr"V֏wj~jJ^UUrhs|'{j  '{$b^ o ?ϬQ(J^UjI+sfR_j)'5{ h 铩Uʓ{jꓨ7]Wh,CbJ*Cb'wI{櫋ZebU ,jG{K'{$j^ra_  $jCA b bmsUUEnc$j sBQ )i{j_^(sj}Hb'' zh/)ꓩ]Uɓ^ꓨ\v_ɓhh{hRgc UzEF@wdbyy{ejiUŅjWrxxX$jHHra^_ub!(V  Ej@ xWU I$I$jUUU%PpVr]}rQsb^hj;) hNh+h"ꓩ?铩u{hhWzʓhs_u({Ӫ'{U /*G{ej $ $bZz8^%b |-fZa   fRA I$IUUj7WA(@¢j@ ) /b??hz. hYU}hz۟uh)ɓ.铩U{ɋg &8g`hPC'{|HDjpz"I{%bA(^fR(%ZA * ({ERUW/  r"9*\ "a{k;rP0H1(bB YA(" '{@ hz  HGphH hɓWh^hbj]jhjXhcQ~{A(zZa0^)0)?/bUU^s Ir({cIXUU  ncIUU "cg%yW5ދ'''9ɒ8UW..δEbg'{ hHɪ:({hHH/sWrUH$jW{%j`WUDjA0xUja(z_ b )kZ͂A/ 81YB{%QQ   쓫*X II$2UU>(^- bmqUUh$I$ɍUoȟނQ|Wra?yza0b@(| Z#A * bI^? j%R/j8k$Q([*I W*H Ьr.K**j X}̋k{ugZZb9`  b#Az Fn#avU JjwXX)s&ZU[}\GZA(Wx€Y!(]b 0 {%R'sbmjebzjEZ b@C ){HU)* rrrxor~ kQ^j{Rྩk%Zz jIz_0ajV &6jxFZNg} R1o18VWYqr@5Hsj'sbhznjEZ|V^xjEZjQ|Z~kQ-JFb;.JY{*{(k A\jQWUHZ`ٶmۤYXTU hovn;l?Z 6ov>uر5PT؟P Uk)_Uj)UUb)UI)Uj) Uj)*UUo(2/UUдBUU?)Pb²*sJWm۶ 8WUUT I$I$̓UUUoF*}TVJ!URE!U R)ZiBZ9`-c1Mc1M[)Bmc [mkBWMci2UMcI*_^?M[J-!9USo 7Re!tw~McJUVncRUUբ-c(:znc9UcE)W,[%!UMc%!U,[%!U-[E!U [f)mc:,[R%McRUMcU H?MCi*# -ak;4BE!9;5RMcD!\RD!Re)VXRE)RR RR RRR)XR)[ [$!)RE!~ cE)-J C)2;O$J$TTTV J4ذmۮsO[TU VncmUUj۳UohU1UUU|a%B)$21$):)^ [!_UUR3e!UUU+egmrOU!,۶mmRUU @ n̶m۶m#OUUmjU6ꪐKrQ_hϲ?^J/I$I$PUUUT 6m۶m#UUUm#Fa #)^K{I-oA+*-J{&b|&b86اW_^* I$Ib$&UUUP mvnUSFneAy\_b1jfR jebw({IU {I {!9/z 0*{׉_ƚH m۶g3UU>mCd$U~F%bUERjj0''kjbhBjeb ' A &j0 Qz" zA(x?? 8 8mδU_iQ`jJ@'sI){Fj8NQ2jUUWX%sUUŬbՕOcAu``xII-)J JcA bW  z! < Pжe.I'k???jQ@@@r(zZ @oC1'E&RԵ r $դ?%ejrH&QzjjY) r$Z%  ebQ^j H{fb ̓GbH@za  )FQ?7E݇%^\+e=EjrT\\Ujb⋩bEb~  jQzꪋ Aovn'sj kj"jA -G%Z5G&{E\X=߶H{pVsxWUUkj^&ejW5&{i  &8 I$IsUUUn+`m)sbX{b 'sj++'{ 5h\Hjx_UH{jߵz'k^Grz_/&Dr g{ꪪ  G@0x cmUUITl s@UMvnjJ0p``H{b-(s^Us^U'sjPDjߥ*r jZHU]aGebGF{   g'.?7 cmۗUUoI{UUWT̛QjIHsr jGsr`-ger MjWI{uU%dj~pGdb5gGh  g{ ;Fn6o%-Az׽Ma0Ger_/'{ GjbT\PrSqjjZ ejVT\g'{  g'{_ nvn !gb:`U %R`xhb)gʓU>~j`@ 1ej ->WwgRjX]Djp  '{aW WI$I$hRUUUcovnN%'kfjhj  ɓh+铩kgz舨ЬhUU3HWUUCb{0h  EZa(` bvnR!'{0 /-h{h7WWɋ g rnhCA^m8_?Lc9  Ik^5 evaS!!)\voQ&{h'{ WhjxWH`0zr0z)'k0 Q?_QY   1Q 6k+6b5%׶{6bCjx{YwFj(b("*fZr%b_U%/Q-̋xWUU  FRp 'I$I$UUU؟hi8Pj{a0zba0/''s%R]jRK*{Yv>a )̋bzb]b#Ax^ KqvnmZUU,BQŨjU(?`lU#AVjʋ1_j)(U {9>Uz)2+U I@G=2O$m۶mۤYXTUU ;n#6oNHsXR1ZJ @WMc(:ߪ-cJUnkR_q)2U?Aا CTRPP vnoQrJ[SSSR1@@RHB  SRUU R9R9#׭J5555K5}Kjjj cJ))))Ӕ:SR:+[R*+[R+[RLcRu  [5555l?rlhhhh ȏRSSSS+[R* BlcRLciJ kLcUkLcUӌLc555%?Qlhh( 'ȏ [1v+[QqqiLc:lcB kiJ kHJlsR7*k55??: q)WWTMciMͅlciJݮkB kB)sZ | [.|5='2U coo) +)f)\`Qf)uUpk)}UUs(:UU-1|B5 ׵H*Blê:@@@ ovnUkE! )\r C )!(rR@C})ו5-]i2b`pPÏ5ooO_ 6on#1ke!%5k5u9J*1|)Ui2* Q|- 2XTVUٗcZZZR @ضcg)E! s) %PkMk* W8Ӕ5---]2@p\2)`KޱM۳ YSWWW I$I$UUWIJe!R)UUU1|1UQ1UI2 jWUs2TUUUT?21`p ۶mVTUU oFn1|22Ui2121(21 +21  ǿخ[:nn[ 6bmUUH^n{|121$(21}1)^H r?S Á ۶mێkSTUU @ I$I{UUU1Ѷm[FU᪫w Q5Wz^ ۳+UWWb ضm6UU?6j9-rRZ + {Z W S?)CIWb Hжm#ޏi{%R gjdjU%ͨbmBI%Z-Uw  {cI^ 2ӽsUWWT̓0Fr %ETX'szV%jTVUU  &{cIp,mcksUU) J#1@&'sUUs\UUgj% z  GCQ@ 4I$I$oUUUj!EZr׭j91Db  g'{ n; %jɋ sU({``U  hBA| ζcioqZj zQzH{I`)  REZUW/ caVU1VFb{Z\r8 rA%j%?ϴ9 nii;-jL9Z9 ΃R_5<ۏǍsjRj` Jo6o0|ť|iJVtT+[J +[HBW O?Bqqs Y6n6oI:QRTXkRkZ 0^?q CsssR 6s jgZ}n vn4aێUq b6jr\Օ r} ao䏬ZzEbx_W ɗՠjIJ?.&Rz_ ¶a{k;I:shB?shBŏ Scg)Q(:zU:mos #cmMcUUI$Hb5|1 %UU%?8)ѶmH)gebURpo6o+MjJ6b{gvsZ* Yca1U(Ӕ(2 IU +Foi$cZo͋1`gZ#9_xj1_͋c9/U-A+͋bFZ̋FZ=~jZj kI {a _Q!(8$I>/ {(7'/*jfj  jca`F ez)+//mۑPծĘ4I$INxxxx0m۶+g+hPPPPsHssHssJsnJs5MaaaaqqqqɃ````͓M6nxxxx8hhhhJsxxxx2baaaa c Ф(sNNNNФZZ{@@@@:uppppͫ жaVisPPPP.XMIz~_b({R0nw_Iz_ J JA+ RFJubFJ}UU/j&Jիsb}gjeZ jEZj%RJ0p j EZAU**fZ") kc9U_c9 U͋c9 퓃IX 퓄I &Z-^DAdI_j|pjY / {;IQ8$,:0˓)U]’ ՂYzWWL/GLa-UU'mۅ+asHssHssJsnJs5MaaaaqqqqɃ````͓M6nxxxx8hhhhJsxxxx2baaaa c Ф(sNNNNФZZ1m۶m#{@@@@3im۶:PPpXm۶ؼ ޏo9dApX\\,(zWU)s0rjd9T]RA- R:"bgJUkfRU" jb>>H{bWjbpkb_jb^jb=i){A &rp%Z!  &b%Z5eZIz(EZ9_ꀀ%Zc9U_GZ1c9UU퓄9Ű&R%gb xZ+Fbժ*˓fr^Pfr&AI`x^a"Q 7ia2?Ha%UUƶ-ۑ犢asHssHssJsnJs5MaaaaqqqqɃ````͓M6nxxxx8hhhhJsxxxx2baaaa c i{NNNNj z5U؏1z̓QzzF@*0׶arI||~R@(FJd9{' bc1*kFJU kfJ(kj(sj?r]kj8'sbwjbpjeZ jDZrjDZBrEbh{hr )ra(P`EZ ( b%ZFbR^fbZ{EbQEbAW *fbA]_(EZ"11 UJ{0=I{In sAr9@~__b8//bI~x+iBQ-jaxsZ#raUsHssHssJsnJs5MaaaaqqqqɃ````͓M6nxxxx8hhhhJsxxxx2baaaa c {NNNNjT%%%%Rh@@VnnHs^ŅbbWִrZHsbu+jEJ(kb 'sbkb*>'sj}%'sZ+'sb&sj{kj~zjb_jb^/jEZp>*jDZYkrY57)Q_ o()R_ Y_zQUrQ_EbbI(EbQ5jEbJM)Eb1zI@ |J{A( UUk0/+{8~xY0WW\Y8a"I«a"Q?ƒaUUsHssHssJsnJs5MaaaaqqqqɃ````͓M6nxxxx8hhhhJsxxxx2baaaa c {NNNNjm۶a+T---}abdZxWtMb\Uheb'sj>'sjîkjrkjkj?GsbWjbkj+&sb־'sj{'sjzsb\^jbjEZ>*(jjjbȢbR|ˋQ*  &j)+j sxjrVZȂ`0p̛BI-jQ_,j"I_ zbQ^b"Ix|#Ib0VxZ0! UV|r! -UUrA x5Y XcQA( /Y@ FHCYUUsHssHssJsnJs5MaaaaqqqqɃ````͓M6nxxxx8hhhhJsxxxx2baaaaI$Ij %ڶmۆ.YJ. QoYC2 8¢YcI#I_*!(U~ȂA(UU^$I! UU,Hj  YA(x fQ /ߜ@`HzQssHssHssJsnJs5MaaaaqqqqɃ````͓M6nxxxxI$I8hhh'޶mQ hr0UUH6 6C1rU)ji(`zb;-?zQ`)%bjY~-$Zp {b}jb)(sbW_jEbjb "'sb'sjPݯkj=<(sjseZ|jDZjebjj';sjmO̓`(* B@ RAUQ zr(QbkQ7%Q C̛Yb%br IbQp,YCs"AYBP CQz Wza(^Hb0R୕  z0k.sHssHssJsnJs5MaaaaqqqqɃ````͓MI$IV,xx@6zxWUˋ8XZ^^sA W5%kQ(sEZ(sEZ W(sQ_jAWrc9 {#I}^k0W1́( %51cIX`j9rb%/sj[sjgx@wsb_'kjoGsjYM'sjR sbxjEb^|xhj$b+5jj-'sbz; rRXTR b$JU_ M@rXgrA )HZz jP%bMb̛aqaR߭:YxjcQBpaPbnIr48jrb\rYz~Q(x  j!( sHssHssJsnJs5MaaaaqqqqɃ````!œſͶmV{>^^E\WUUfzܮzA x|||b Gs'k)-Hsk*`Gsj Gss{shk sFjp YWJDI_̛@1(VѴcjCArb*sb)sbkj*'sj,/Gsk ð'sjX~hjebbjejZ@jY +,Q?/K&b TWUgZbI);=MI?N \VWUR(=+Jc9++U)9 jca@;aٲa̓%jAab-bڗfjz^ {YxVFj8_WH   (a@  sHssHssJsnJs5MaaaaqqqqɃ````Τmɉ5ac){^xpj{* (zx)z 7 z||||b Gsj-hsj*Gs'k+;0Gs'k(,({&bzzb& r9/~jpppZ! ' -%ѴIM7 pb"I 'sjY}sb*sb'sj 8h{jz'sjÊsjUVTj%bz'ZUW ՅjiᣲLTީ_0h``Q(Օ5bI7EZc9WIc9 rA UUU){A ujA +jfb8 -%j bpPP"Z`@j {Axgr@(z_W8x_B(  a0 sHssHssJsnJs5Maaaaqqqq&I$IɃ````5m['c k_!`XWUU)ǂo#20JȂ?j肥7Ja(\\V\j---%Hsj'/hs'kqhsknfbJZږ Q7zb5;)r 25kJzyzpppXb@ %%%-IsbK `(k>7 \jQ sb(sj(sj0Y[w(sj_sjb/rUU-r- EG)aXŢU˴ӽ ppXXFR 55%%bB//ebQXzZI /ejJ_ bA_FZAeZ"1+zJ"1AU&b`U8_gj x^W0W#IB($I z  !( UsHssHssJsnJs5Maaaa m XjzjXWUHsjTUib j)?Onz+"jA \T\\jA %%%%iskHs'kRyHsEb@!A( )"I6 b90@r) Ѵ@~'<rյRNjx0Pjj ( %%&sb'sjZ['sj=GsUUU5j-%D "B CeZ$C*s`{@ PrER  j$B- r$Z~zhZIxjQ*+jDZxȊj%Zj$Z 7Eb"9fbA]WQ0bdA! br(u %b(&bcIkMjY5  gjA'sHssHssJsI$InJs-۶a+Isc[WLj\h{ss{'sj r%/˛jws˛)oIJ! \\\\fZ!-%55Gsb+Gskju({b@rY-jfjأ r{&JaK"z8j%գI%N/ x-(Vs0% *&sbfjUU5sU-H-Ed-D &>Ë́r#Յ7 Eխ%ݢ^^}+ eZV^X`j$R_ujEZ !+rb.jQ^\xjQ-%jeb*{jeb jY^p"%bI@EbbI .Ej$RU rI {Eb `rQzXgjIeb"I?/^  rCI7sJssJsjsis6h Iss[Yh{s5?{s7~{sH{cj'7jN7˛)6IֽJ! \X\\&R55k%R*HsfbO "A, )Y /&jb'jfj>z`za``XgR  NER_mNzz`ܵjI__/G{EJ*&jU-z`ã6Cp@@ţ D 9d ec7c6B '<D`$jUUWTrjrb寸rEbzxEbQ^\rQjdb'jZ jZzrQח+r$b*({Eb zWr$ZXWwUfbQ%ZcA0n|jQ  fjdQZpМ{UМ{U Ѷe#6o(sozX{r{'s `{j_ήGsj.h{k˓r''77̓jzxJݞ)ka \\\XA5555kR(saKvJYŠ(YFjU{/J%b YjfZ ؔ' jJտhb/Uj(Xh{A/bUխ {+ )ż@ ă<̃dB$$D(fd=*F Eբ2F+ r^Xp`jj~rjpӺsjujYXpEbQ'jEbWjZ~rDb#rZ\r$ZwjZjZʈbYajhebQ練gjII  b( W1NUUUI$I1NUUU2jX^VWh{s7h{'s{'sUhs's]YHsb ˛j%575Kh*˓J a X\XXdA55s%R iJY/kj%bzJQʠ jfj돴ro0 hxGs(+*Gsb+fjUU/̧jU*rF䣍^+%c("&.̤5+̢($%c# e Fÿ& FկUG@ĦjUVTXrj?2rjIjjxEbY~XprQ- I{jݿjsQ`/r$Zsj$Zj$Z~wjEbw=r#Z'*jQrꬨ%ZI@  ZcA]"(޳U/a{k;ޑUj@HseZzjrh{b:"!g{'s`h~{({h{'sH{csJ*()_jja(\XxXC9rQ?JYjY `JFj.[U)r*mGY*brb 6' bUU j F)%E&㣠xz>ep`:D++*ģXr$ ̄ ͫG'F̀*E?_gze"+zDݥjx`rCZ( $reb?rdZsj*'{eZ^s$Rp.#r#Z#{jEbljZn;jDZݙkjEZ@Hw'seb5b$Z^bZ]St  QI<{VΪUvci:@@@jhsbs{kh{bHsk/;U's%'sH{k~jb???H쵡웋 k%A XpXX#AQ csJQfj(6Jjr}{0zz݁+* W-U_ݤVx⣺p`eBˉebfb& %zK%k *͆B&$ Y&'~F͈E 2f%\e%կEj @eC¶%ͅjV^Xp'{j-8{jx({$Zz޿(sb߽keZL jeZ$*jDZ3 jDZHj$Z^֛jEZ5oreb}v|r$ZϪj$Z߭  jZU[\QUUOqUULj~~||'sb 7HskdHsjYsQ\\sQ-%Ijݟ m kZ?웋*̓a ppXpI {#I*Qjb,~jr-B)dQPa(' -톼fgZXDj($ͥ{ģ`zkeãcߜ"+żfX\^e检`'ţÍ7qpp&ͦ)Fզ*FV%&FՅzEՅ% Fj^H{xWUUH{b`sb'j$ZjJ$sbkeb*keZ(sDZjjEZjEZvb$Z82bEZjebegsEZwV?  $ZU]rzUU%gsVT\GsbzbHsdZŠ'Hsj ukQT\\psY%%-/Hj k (ppp`b(7j@ zb?Uzb/z&b !cr(`hrHJ5=夛 GYYgzpľ|~X$ 㫉4,' (䫂eěZ<#" ƼěZȼޕ$j%XzYkfzY%i 0VX`ebA0 -5'sZ  jIZbUbUn+6jbzUʃrXxHsRPX'{bbrdR (sj/"isr^X~_ 9 .̓? &Z@eIUWVTY --5GjYr&b+ *r9xܾ/'sR Gss" 6ieb?冓 Fݤpx&Gwk(ͧzZzbE`fRA ע?/Vƛ] E5&p %z ^H{pWUUgr'sb G{bJ{j'sb'seb'sbsb[OjEb$jQ.zY7r$r/z#j GzU&aXp$rHjꪊ#Y(W\xfb( 5  ebbA)"50U50UNc{a50UŅj#J'kj3kb8(sjݣGsjjjI .̓Z`z ⾯-̓+%k (WVܜfQ(Ta(?z8UHsA hss~H{'s]}gsjjfݦj -%EgꨀHzV@48E&%ue^ fģFd --(Hp{xWu{'{WzH{j PV'sj鎴'sjgj]uGsj~Gsb*'sb o'sbwd2r8$b_%zz#j\/G#jU'rՕ*Gz}8 g{__f{o}&{iW^\xiA0~xQ(5W  eb8޳U޳U޳U ʏoxebXXpj 'sb(sbCJ*sZGssj a.{ k e.5̓0pHjVVT\&J --%Z0*Hskj9'sk J?Hssh{s㊾ieZF GwV\H~v^E~jE/fx^ gCx(dBI*^UHH{\U]]h{jh{bH{jJH{je'sj\(Gsj)Gsjb'sbI3H{bُ'{Db<zAI&zj/{Cr gz+g&{2{}G{gzF{%Gjpz!Q_~CY(^\Xp  Fb ( %Ύ_)s Z籔 )vo6br``I{Q 7(sDbʌ'jebrb&'kj { -.}훋ck*̓0`@'jXXscFR! %jEJ?=--(sj'ssHss(h{j'sjhݥj -%`gojgx(P ޢ&`Z%G7棧6GzW)G{pWUhbh{ebຩ'sbǐ'{b8Qsjqn4Gsb #GsbάHskG=H{b,o'sj*Np'{Cj&rzj|z$rUW=&drF{_'sg{)g{g&{G{:*G{uubg{5Gax~~$za8^xr  CI(Wnxxxx{gZpsb֖:e6wbUUU swAŨcQsEZreZ&kEb+ j --̓j *jm̓j2&쓋H (}ovD9 5jA/+ sje'sj)(sj#bGss(5G{{) W)jf% Gե\e`*fֽ`:% &{^ȼixWU]˓jPhj^m(sbC({j.Ysb2aϬsbj#G{jh{jm'sb<H{bh{j rdrz}zDrXwWz#jzdr5=+G{_?G{?zG&{"g&{+g&{$g&{jZzg{urG{Gz@aW^^x  r(W^\|nxxxxm۶a+{jpppp6hjsb|j"A:Xj{&j%- sYi{$Zzj$Z*nrEZj-%5̓jYJmI:y_r`$ATPR0 Tj9 )sjw_(sj>?'sj Hss_c({j {Gs~Xr %Fեľ 'ͦx~̆kzhf `^i^UUj*xbxH{b'{jGgsb'{bH{jfH{jyΤ'sjO*;G{jeG{j{{b'zdr@\WzdrWzdr*'r+GzݫG&{CG{ G{+g&{56g&{,ʲh&{h&{ZG&{/g&{+hax  i@X`Yfm۶a瓵Z`2F{jpT}sbAzrCApk{cA)̋0s%Z(sbgZseZAjb/--%웋u r(fjj-%b/ ArfQ WVVTb0 ---jjI{jr'sjc(sj* H{kjG{r? ebh$ *+)'e X'H^UUj bj`H{bH{jOseb`sebZwseb7k'{bO'sj,9'sjvsDjGrXU_zr#r{'r㫵rww &dr}.Gz)&h&G{++G{xG{&g{GG{g'{zg{‚G&{ Cg&{p&{y   'aW^xpo䴵b\W]i sb6j{j֗k{b~ jB9$I$I(?ojUWTh{ebX~H{b##ab5> rZ j zEj %b >̓I`@eI T\ZPgZ ---sbsj5s(sjέ(sj?Hss:H{jVj jɋjjj`h{j(sjH{jH{jS{*'sj sj(nrEb촜rebwsdb.ardj 3;zdj&-cj_ zU*rh傽g&*( GUiaWg'{gGyuG(0g'vg{g&{{g{g{ˋ"G&{8g{(h&{K>g&{ <   drx`6b۶m۴R2Vn+sb舸J{jU,.b_W= mzH$I$Z oFnJs^X`{jbh{bȨ'sjMGrPzרJ%b_.gjZ<r@hjA([^~xI -%55(sfZ󫉫jj--(sj=(sjj}]5 r-r*@j`Ti{j5yH{bn((sj jsjӫH{j0H{j:ynH{jn*H{jiGreb0ej݉z$j\WDj -ɓj&{--ȋgࣩ;ɋ'j0ȋhGkGg'G]E}gz*g'{{jG'{Kyg{g'Z''{g' g'{g'{.  G_ RI$I$+sbG=`۸jU55x$I$r {Z2''1cm:@ ΣAbHsboJ웦b-%bb *kY`쓧r){c0xxA 5j$A sbij}W i{s0s ZʋjU{j\I{j錼i{j^Hsji,H{jͬ8:h{sh{'sEl4jrH{j+(sb`sjz_U&{jW-r-+ rWzr -GXZuG;=ɋ/ɋeʨg[Gj$XGy~g&pg&g{""&{U.g&6GuZg']G{G&{*{  G狕R+sb[b5555{@@@@z[6UU[6UUFFnkfiZzȀ.jbg欪˓DZ rH̓r_=̓Q̓&b Z{y[(b W^\\i0 j+j pjxץ{j:i{b(ki{kǧh{j {jg:h{b+jh{j>H{j *zh{jkH{bΨ2hsbz\Vhj^--$jUgj Gh-ȋ&z&{hg/;kɓ/ȋשG(j8GWug'+gGUgGWGm'G^gGQ{G]i]G{8:G{g{낿  gGhR+sb[b5555{@@@@ s%%7U7UI$I$WUo[W^XpɃGso$ˋDZ7̓Q`쓇j*Yj Gj\̓b構-Gj! Xpx@H{ i{fZXU(sb^i{b<Hsjh8h{bi{km*{(s^eth{k8h{kcni{j{'sj8Z's$jXib_-ɓ#jUWz{#r-z-5GouhGZh--铈Gx GGg (h Hg:Gx(GwGexh&zޯg'*- g'{g'+.GUzgGuUUG{,g'{*  g'{*Y^R+sb[b5555{@@@@Zz%%%%Z:UZ着Z着I$:N@Z:{UUV\ȃZ^\xx̓r! fjZJYxJ@zkQ  J#AlXXb %55(kbO(sbϼ(sZ(j{bǮ{jyOi{k${ji{kh{k2I'sdj"P{$jpW$jUh#jȋ{ -ɋ{xgzhgz%GӵG_7g;铨uhpHG*nh? ɋ~GsF.&GYiigGKgG۪g'gGG?g{g&{  G&{_R+sb[b5555{@@@@{z% :{:{:{:{ on[kP`{DZ`ƒj%b JcI8jr١Jr@j{C7@XXzIU{gj(*sQ #Hsj^(sb(i{j,Oi{j$*i{b,*`Hsr" _H{DjxWuƂDjW+GDrU.*Gj(h&{'ɓG 5ɓg^xpjh&j.GG+? GɓgXh<gŽhXg;BɓgG gg@Gz7GG}aGG&Xg&{g&{^  G&{{R+sb[b5555{n@@@@ МUМUМUМU;cmۛU$[jV\X_bꏭIzl7kz̓ ]/ J5(̓Z@@I뭭8WWWTja0 (sb(sbI{jOi{jsjzzErh Ger]׷*Gz{g'`BGZUGyw^g& .bg]GWW^XGmg-Gg*]gȋkGbg`G(,G 0G(gwgmGrg&GGGUUG_g' *0g'{.g{  h{R+sb[b5555{@@@oUUU.U.U.U.U.UFo+i[gjzjд$b)Z[r Y~8z! _U8%%5֣8\\XXj ( %%5(sb7H{eb~DbrzergSUzErW+Hz*g'G_ZTg'GW- ZG^og'./g&6>gGkGzꪟG]GGxhGH.hږgugg,+訠ݣg gb[&{GW_g'=g&{ g'{"g{G{`   h{R+sb[b5555[jX1rU1rU1rU1rU1rU1rUI$I$1rU)`Ur*(QXr0zW'bA(~U?gR W Z( ̛R%%,8prckb!(7'{jcHer kzDrx}zDr=* Gz7 hGkG{kGUejGGRz\hGe-=GW\gGG]GɋGק'GGG7'hVhy}g:G/*g2G.⾯gZG8* &{ت*GV[h&{Xg'{y/g&{y h{쬢  g&{UR+sb[b5555[bX\VWjbUUjbUUjbUUjbUUjbUUjbUUjbUUn%Z%70p``bjka(կ/b&Jb)%BW/nZu rͧr6.IMMǎ8 srCI#Dj{ zEr+*Gz Hzg7grȋHG:g(GhjGK.g],Gk6GWgWG'{GzzʈGG*h"hʓGgmgTɋg[h $ ɋg.6&{g'{&g'{g'{谰gG{~~gG{r*  g'{W^sRs kUU:b5s{Us{Us{Us{Us{Us{Us{UsU0 Vn6oqQp`@oBI`prR-"A z]/rj zUa_̓#9z//-@(UWVTz  ʓj멩gUh{*GzںhG&{* G^G,h hhUe/g7ohv_GG_ZGHv*G&G{h+#H8.zh2 -gW}zgg!>h.zȓG{g'{}h&{-og{/g'{Z}h{  '{s sUsUsUsUsUsUsUsUsUsUm۶m$s͋)ŶcoEb@ߺI$H$cQ"&bYzYzW-%j FbP`Y  0(\X j %64ɓEjGjhG(G'h:ɓ_ɋp0ɋݾ~pTC{?ɓU]Wgܺ"h骊hן7hUz}G5:GG_G7U'{zh[ ʓhտ GzG"'{gAgu>?-G{~h'{VX~G{{G{{ *?G{{~{{W  '{r^{IU{IU{IU{IU{IU{IU{IU{IU{IU{IU*6o#g{a `Qa0w-#I%5({jr mhz`n` xI_Uj ~gZ@'BI%5% GxGjhiɓhݿ?ɋɋ ɓ˫铈-ɋ^ɓg>. ɓphhjh́h~V'{gUG/-h&{h{*+h -铈z^hh}Wh'{+G=hnG{h5G{ohs`G{r*~Hr^U'{jzsDj^  rbWI9I9I9I9I9I9I9I9I9I9I9 ^nA!0~85U1kPI B9~n"9Vb1 (+IsFZUU/i{fR}j%Jifb'7ʓ{ōhZh` G+ # 铩_铩sꓩ铉^铨W^+{ϯɓ[]hhCp[hzhו=hy]G{h{ /s*.h-5ɓgGkph'{j (G{'ɋGg'{ɋh5G{j~hsz_rer^rDj}zbUDji  jY*V &JU &JU &JU &JU &JU &JU &JU &JU &JU &JU &JU0n;a{(I$M$b@UTmIQUZA`*jI^jI sb*:'>H{b*jsbrHjbv_{Ij z_պ'hݭ?ɋ#ɓ|ɓ+ʓ%ꓩ~V^ꓨuUoɋ}ȓh{WH (>h6{hUho=H{򪪂Gjg'{(*G['{?//꓈ݻɋG~jxxh&{5/G{=gp`B`g'{_W^G{?--=ɋ'{xx'{DjrbDjj\Z]$jYejY/  %b8*xtoUUtoUUtoUUtoUUtoUUtoUUtoUUtoUUtoUUtoUUtoUUtoUU%%6`S#1V+Zm*{cIˏjY>rQ )*+'sj4Hsjݏsb,'sj׵{i(sb{κsb~^ꓦr7ɓr'h#޽ :ɓ/ɋꓩu铩ozꓨJpRWɋU">gjgzǯG{.hUnnjGH{G.'{'{/ h h`pHG{^'{ +ɋGprr'{j{+) #b`pz$bzrqU$ja~EjY ejY/eja0x^W  cQ _UUt3t3t3t3t3t3t3t3t3t3t3t3JJJJ+BIon#rjzjzH77Gsj/- %h{b7(sj2%h{j_vH{bH{Z:.ʛrK{UH]h35ʓhɓꓩo ꓩW}ɓܗ铩u铩}WUh ..gg@hoPZHk*Gh]uz'{hG#'Gu_^G //h``j@h'{w'{=ݵɋG{xjjG{jhs*xapppxEjYi$bBI pej(^^&j k]U( VU  R Ut3t3t3t3t3t3t3t3t3t3t3t3ѤJJJJ ivT Pcm(iժIoϼaϪbU_whsb 'sj'sb(sj;喽(Z hr HmHpGh*'ɓH{**铉ꓩk铩iwj铩U]SɓYzOKɋkiKUUɓhgh֯HhvVGhG hH{*.G/ ɋhjjG{jph{{鯩ɋ'{o{#b<>7HZpXzY_Ej8 XY(\VUQ WU-Z խ Z#9+  ZJ2jSUUSUUSUUSUUSUUSUUSUUSUUSUUSUUSUUSUU:O: U:+UXX]Zv`r H{j|us$ZhrEZchjG']hUھHʓhU|H+h4}^h8,)ꓩ}ꓩ铩>铩ZTɋ'ɋhp꓈UUUsh~wUG{/Gjk G{HG{ZhH{'{ */hejXX{H{ejjra6Ur8za(UGj \VUFR U+Z9-"ZEJ;bhRJ  ZI.:5U:5U:5U:5U:5U:5U:5U:5U:5U:5U:5U:5U:5U:5U:5U!v拓<4$jUA(PXXbj0 ''/){dR%%(sb%b=hz8Hh]H{HhZ_Uhɋh$ 铩U铩铩b铩׎ɋzg jh0g)gH~ɋh%ɋG^'{ڟ~h'{'{%'{$bXHejja`^ibA(wY(xWUFR U fR0)b$J*ZJ޲eZ%J5bJ_   EZUUSUSUSUSUSUSUSUSUSUSUSUSUSUSUmg;S*UrJ$& ;[h MW@‚W0z@5bA sb8"Jj%%hr )HH %hU[hԿWh_h o^wh+hʓWꓩWu-ɋpPɓ?ɋ~gּh " ɓ{{H*xxG's'{bC{zkh'{wH{$j~Wza\Wյ$b8|&j(~WUFR(UխZa0 ZERbJϾbER{o(kERieZu ibI: pV  iBApUU֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U/a[i;Qj-- VXPpa!( %&b@ jZ*ɋrkcshz)+/HHhYuUh^o]ah]mGoGޝɓhhɋ)?铩|]ɓH{hCnhb h'XH -ɋh~\jG{*(꿿ɓ'{gu{b/WH$buU$b!8pb (pXWfZ(_U-Z +ZR|^seR_wjeZwߵj%Rb]UUiaA*\bIb^UUQ"A|  Q"AqUqUqUqUqUqUqUqUqUqUqUqUqUqU6Ea{k;růp`J-9I$I!͡ bB€a!(5Ua@`zA-zS~h{ +'{﫯.hW^mUhyhS}'{h'{H{گhh+ë*V(6o}ɋh({ hehx{hr(hj=hjjG{$jWHZjbA0`Fj(U&Z ^W-Z -ZdA  "b%RTERApZ)) bUw|jUե+BAXW{Q"A.Q8 `CIUU-  ϬaAU% 111111111111118Dc;i1дzӓP=дG&&I$L$A(UWVTYb0bQ5%g{(g{ **G{?'{>'{({Hw~h'{, ({hH<#7he~UH{ H{yH{'{]hjZHrH{$jzEj\X_]r$jUU$j@p%b {Q(xWUZ % ZI "bZSUO,keZo#keZ:bIr~QZ9 Q̓YpX_WBIUUU-0bI-r쓩    UUUUUUUUUUUUUUUUUUUUUUUUUUUU2`UUPм)SJj5ޮ$$,$` \\t q8 MoQYz'{'{ワhGhGh&{"'{({ h({hG{+⎗hWjzH{rwH{rU{j _{Dj_Wrb~frbzEjQ XEjA0WUQ(x_UgZ _-b(kZ}W9hsbhsb(sjkvjuUbAX켠8_[ 飠8!A_5"IW5 rʼn U-U p  5쓀pWU̓U̓U̓U̓U̓U̓U̓U̓U̓U̓U̓U̓U̓U̓UII$U𼋋;>.4//V$$44H$I$Qzxxx7I$m :"ȏ'{XXXPɓGZXrgr`q({U_RUh&{zh'{Th'{p_U{h'{yh'{*uh'{ hH{kur~'{ej_rEj|rEj}TUer$bwrb{zAZEj!0z_I _Z UU Z -ZER*!beR hsZߧ hsk/ʋj_ "ApV˛8xb!9EjAI.z0bIW-0`I 40U?5,*`4WU1\UUU  ͋>ՓՓՓՓՓՓՓՓՓՓՓՓՓՓ͓ſտ*p̓6e?Ǘ殤6wr_M5Fnbvrp``ɓr'%'{|h{wBG{{,+jh'{|]h'{{MG'{G{'{G{{ |H{ejWzej~_Ur$bjej$jsej%jEj@fr8UCQ(_UR U- FRa(cFRcfRЫkZHsZ-)(k%ꋣI BV9^$b"A%"aAQUU5 Q8-0xTގ/b4ˋ^U1XUUW-̋UV  r Zwwwwwwwwwwwwwww-Vn6˓ܘ  `88I$I$VUPz?cmVr@U ʏrXg{WWW^H&{םGszh'{uh'{+UUGsXHr*Z'{Ejx~_er%jjj+rYZFjY &j`8^Y o]I UU-&R(-ZI>;bFRojeJ*h{buwiju[-I*\ʋbI\fjBA%%bbIZPŃQUU qŃQ q^]0~&̋*xWj{x ͋a\< j̋j`̋b6  j{UU{UU{UU{UU{UU{UU{UU{UU{UU{UU{UU{UU{UU{UU{UUNvo6n;{nz`?v揤b2:۰ۛWW{jjU^nn+djxzɓZ/&{V^u'{r kH{{{ۻHrs{Dbx{Dj~UUej$jZ]Eja.rb7j%b`00Fj x\I _U%J /FR#9"fRIxb%J)jER!IbUu%1*XI{0ܵjbA fjQoPYUU-Y-)+0 `^5 xWUU ͋.͋_|W͋ s@틨j+̋ s褐*̋  ̋J{j攽U攽U攽U攽U攽U攽U攽U攽U攽U攽U攽U攽U攽U攽U攽UII$攽ժ~毬b@]ؙr ;wU5ު?}ɑI$ @MP#bG{z˺'{r( b'{rU{Ej XWzaEjbrVEjBQ*EjY 'j8W&j VUFR W Z0-bJjj`- .({$JH{bU? Q5̋ z̓@ rI EbQHqYUrūq}X \UUNT^.xc.̋s*s*̋jh&틋X틋^7+  0pުUުUުUުUުUުUުUުUުUުUުUުUުUުUުUvު ʏovبV"9&6X(m۰6j`I I$8T^ZoFoG{^^ZpgDbza rbwerYhz%j"Ij`frI @r`0. Fj x^UZ(U- ZA(bb9 ~jAz]ZA|Wb(>j sa0%틅Q ̋r(-*{-jQp(j8`͠0 Տ bͬ`^UN ̋(P.]. spJ{B6*{싌Ve}j̃aK{~jl(X  b0-5UU5UU5UU5UU5UU5UU5UU5UU5UU5UU5UU5UU5UU5UU5UU5UU n#gUֵv8x.۳ا"9 &SݨI$I/ Fon #Z`@GaIzY.Z_{YpzY Fj84'r@(`pXVFZ!(_W Zb8 ZJUbA_߯jC9W.bI]ꪢj$Ru (sZsA(=(͋j xr JY@(Q&zWFjUՇr%ͬxWUU ,&ŐN̋U}b sܭ̋ s.͋k{\;͋j{*퓋{{=b9@\(p֭b1   bRkZv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUUv֪UUU*o6oR` I?rdA`@ ~m۰եi Lɓ5ֳ/=7H6bʟVIp\V8_~8ʀ&@~z@0zWUa(_-b խZA fZ%R^|bJ"kfZWkERjEZ8rb~sbj?ja(0`KY`IɕHWrH_grb@ ~Uz@jե+ jZZ {+)̋U} . { `^ s`4̋)kJ{cJ{sk{&Z@c9p֭j17 sfZ~WbQ{  fZ#A~_V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪V֪6I$I$v555XFn# `$@ 'j`X^*{RU_ojIo/Gb(^dI!(_UU\@!(UUU=Fb(5Ub#A(kfRvj%R_[jEZ{bsb5jb-2jeb_CjEZseZHr07& j@\Xrhrb@}5 zb@UJY s*oO s獩̋r tFZغkrz~kj Uj sj{R`i{IXHsb}jfZ~wbI^WQCAz'5dIAw[֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U֓U瓵***USI$I$U"c+I` sEZ`:)sQ%prIz«jIhHb`(x肢a8U@(^b 0 %5{b]%{cް(seb@sbj'sebjebjJ j%Z_]ub%ZjDZ*@pfbQ }zY8.=JEb r" &Zⰺ jFbb`jJ{UzY`Gj0J{I^5+'sR5jbL1jQ&ZI,xÒQA~$G ۄI82m۶m#A@2U2U2U2U2U2U2U2U2U2U2U2U2U2U2U2U2U2U2UFo^n k[^z싧bUt sb([jQ\( ZcIr(6?!A%" !I\X^z!I@նjcQa0_j@0 {b9%5h{kvw'sbGsbsvj%ZhnbRpb%ZVjR)jZPtEbI~zQ=JGj jFbjJY' jgb~Jgjx*{CI >+{pba x "b0-keZUsR_jQ FZQ~0@ZAx^^=!,۶mdI@hkkkAb8----#A@22222222222222222222222222222222222222I$I$Z))))bn+i(s\xMjUUW){R~.GŇr%&lmQ*`zzz ׶b6h[1dj @UUWTb@0` Ia8% ohDZX(sb%H{j~V'sbZjEZJbRjEZf>;+j%b"hjYpwUZIxQ"AʢKQ? {&bh@jFb`kFbX׭zQ`zQ-Ϭ0 !9`b0bIEbIߧ4ZIykmZBAx^__H$I$Q8xxxxCI@KKKKAb8----#A@22222222222222222222222222222222222222Z))))nVVVJon{ sr̓QPBojmۅ̓MuI$I5{/*) (w8VW pra0_*ڙma*Fo+CZ듅bpHsb+%b*seZbAj9Uj1zUQ)UY)U$b1 U)1ˊUz9_UzJ+Uj8"FZ 1){ *&bp9 -A(\'JsIu- m׽IU:m۶m9RUW88AUU::׵CAUU XAUUX8UUXAUUTT22222222222222222222222222222222222222Z {nTTVU I$I$-==Fn# \PbY 6bX _mw95̓~h?V`x|B}ٵ=0V9€v%ȶmؘ]zU"۶ IUUE!~UUZUHJ$1*1E1e!2)U 2)*U)2f))2)j2)U2)U2)U2)W:!%Lk)"/_l".o WX,Єm?!5UmۀN׽(:I$I$8-cumcq y0|y7XATTTT22222222222222222222222222222222222222w.ssssn.NI$I$̓@vouTXȂ>{Hh(XUWUUX%!A*:U RE!UURe!UU RE!URf!U Z)U [1-ciBLcRMc [--cUU)M[UWTVmc [ mc-[ncR~kJ_sI:Umc 2UsI*UkI2UkI*U~M[I*_U2!W(*=UUU=/?!:+W m۰H: y0|y7XATTTT22222222222222222222222222222222222222w.ssssn.N a{bApXѬXUUUJUU JU-Jf)-RJRJ* ZR奵ZRZR.*ZZ* [ZLkRZ!x-c)Ge [E)Im-[! [E!DDnkE! 5Mc [/t-c,[Mc [ +mc [Mc,[UMc,[**mk-[.sMcUUUkJx{(2UzsI2UUWX&5_ =ا8 'X׽U8ATTTTW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUW2UUUw sssNUUUNUqU^^&&RJRJ R0 JU)---1Ci"@@Pv۱BATTVVVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUUVUUU3??@Idɑ]1@@`j(2k)55McR|zzzY-[5555R1RJ꠪RRRR *zR$!@RbU RA RJRRU_ZJRRZRU_RRԸRR [`X [@U [bq [UURAIAZ!R  SRUUUk,[RUUUk+[9RRrrRY----C2B‚.ֳMہطBAVVVs@@6b#b~E!zpI2)k)55%% [RMc%%%%R(: RR_U SR*RRﯿR$!@@@iJ U} [! ZRZRWZRWWU+[R [Ru,[RU+[Rջ [<<\+[! %+[AИXK[b@jULcaqs+[lcA [)URe)J&s55ӌ/2\TTT2i2+---  :)*@@@@TH$H$aa;R@@@@1E!1)hce!55k-c-c %iBPp`@lcR"!+[b LcAmk}is!U+k1BsP{k]WVVkkklkscskskss*+/{Lc(JO/|A |46|HJO$ؘOs/|{URs55%%UӔ??Q|2TTTV2i2-+- :(*@@@@TX ۰&caZ@@@@p(:%1)xxjzM[e!sMcVVTTMc%%55֍cjJʪLc) LclcAժlcAlk!5*kaXs*{mcs*[*Jk)skss=ss++ss|lcN{|bU|%!% |W|E!*/k|IB@@Rs% 4;+M[!2i2--)-_:I2BbbbF-۰ (2(IIR@@@@qȏȏ:$1)zz2E!kMc\^_YMc5Y>~:lc+clcLclklckk]klc klkkJ@`s$!W{`ZU*sbUU{Usss{su/|s{s*|s.|s/|{/|s O||J&sTVWUt Uk@I2) 2i2-)--  :I2bH$H$B(IIs@@qȏȏMk1)zz~^)$xzjsI:Q|McUӔhj):PbBlc%-lc1Uc1Uk1Uk:UkE!@sUV{$5 s(:UsIBUsIBUsiBU{iBU{JU|JU|JU/|JU/|RU/|JUP2xW׵J1|s}_5qU2@@I2!2i2;/?m[J*ߟH$H$mc( @U@/uE!VVVT1)ZzZZf!$!`ncE! mc-cjjMc r7_WVXpmcUUUU$UZXXv$!U% %USbE!U0kE!U%!U7qF!U&Ӕf!U64f!U8()U폊Q1UIv1U%U1Uv:U Q|):UVTTӌ):% 4|\TWU5|Օ5U!``ppI2*2j2Gk)H$I$J,c@ȏ]e!WWV\)){_!E!vnc% mkMc}Mc 5rzzz׭:B*vUUTPRUUUIBU-c$!pUUUIB_|E!UUU Se!:UUUIBf)UUU|f)8UUU0|)&UUUk)UUUs)UUUMc10UUUQ1KUUU,[2UUU1|(:/UUUM[2UI:WU%J0||t5% v2PXX\I2**2i2-/ Ɗ2ՕkZ@BFnFn$\__Z)e)$)f!kE!%%5cMcUUWTӔMc5r~~|^q0|`1B *ΣUWx:e)%!e)%!/)E!f)e!+ )f)+)).1)*.1)11%*):1(:2I::+i:(:rI:U%QB 1q| *0kt yUu>)2\TTV):i2VWU2I2 +MI*5%Mc@vnn%!Z_zp)e!k)%!n[E!kMcWTT^mcMc kEXrj2 UY S/zD!xYU~*$UU~U$!UUUJ)E!)E!_1f! 1)* R1UUU-1|1UUU 41UU2UvBUM[ x2W)2%0|UՕ5* yƒ@[!2i2Uo2I2 +/6I2%s0@\ɕ\`jj@!%!f!E!pprxf)jnc)cNcqc/22o}22+W2I2zXI21^VdMS0I:UUUUUUVnV\Xp1E!)--I21---I:)2 :I2_UI22U9)2W(21wꪨ21*'212121*21*21}\\21*21(22} :(2 :H2)2i*j:i*):2UU^I:2U21xz_1)x^^ӏ|E!5% ׵U]׵U]׵U]׵U@UUUUӶbe۾!`RbI21-52I2U/-):2UU:2Ui2)2U}zI22*I22W^zI22UU_)212121+2121 .*9*21*)22WU9)2___ :I2 :*i2)2 }I21~)2)~9jp$N$) ]U]U]U]U]@UUUUU"ovo+yT\X`1 +-j22 +/-22_{22z):2UUj:i*i2)2^쮂I2)2zު):(2I:2W_Z(21{(21z21:)212121)22 U)21)21~WU1)1f!پ%5% UUUUUUUUUU@UUUUUkcmMkjo0y%UUTpI2) -52j2:*22VJ:22i2z࠸2I2_޾ :*I21R@*I21_W2E!~2f! 21z2121 z21U21WU11UU1)1e!^_? qE!UU $ ۶miJ着着着着着JJɑI$B@X`n/=e!UUVXi2E! 2(222u22Uj:2UU2i2jhj :*I:)2]]wi:2W)22xzWW212) z2)_1)1)1)W1f!)E!g?_7 -۶mۺiB׵ 着着着着着v6b۶m cjjU^h)1kbj:$j21U21*Uj21UI21U)21_U(21_21WU1)1)U))w))UU)E!)j&R -cWS $U Wm۶m5,Y UI$I$LPLrUUU+()))+\\\\isPPPPsisr샅֌hhhh0ϤIIIIxxxx %%%%Z|hhhh֪{@@@@hsb$m6jh{z ~Ikab9 +KsAuJ{9 b5UzQx&br0܀FjIXdY@X0PUU%dr+\\\\isPPPPsisr샅֌hhhh0ϤIIIIxxxx %%%%Z|hhhh֪{@@@@ m۶m,sSDmV%JWȟ:#1WUFJA ޭZ9/sIUe?lC9K{c9 Ub- R JIZ(z8Ϊ\_hj0/-1jY^`&mۄ#Y ,I$I#傼+\\\\isPPPPsisr샅֌hhhh0ϤIIIIxxxx %%%%Z 2m۶m{hhhl"VgvnvJ@p)s0FRB z* R() jfJUխjfRkbo~){cAC*j9FZc97xc9Wkc9.-UA -Gbj&b bQ jij*aWUU ]KiisPPPPsisr샅֌hhhh0ϤIIIIxxxxj/__z jx_x70cQ@j0 j9 kb  'kj("kjxhjeZjjebWt{9` { "zZUWFjI[ebAW s9%^~ sA(j0\pa@,%@rY5isPPPPsisr샅֌hhhh0ϤIIIIxxxxI$II$I^-jА.ejzUU'sb'sjkjkbVjb.&*'sj_kjhzjeb~jjzY .%RJ9  Jrh*ja6;)Y^3zcQ^A(WWzhj! UQ0a_i0*-isPPPPsisr샅֌hhhh0 qm۶m#Mcܶa,8z,0jeZ ){%ZZrDIN0*jUUUTsb׾jb)&kj{'sbjEbjj" Ь@ * ozDIJ )BY) kj&ZJb.iJfjr {A`  HbA0+7isPPPPsisr샅֌hhhh-m۶a;|zB%FrVUUȂ0````Hs( Gsj" GsjpJfjW--J0``1()kj'sj5='sj`j$bhxZ TބIUU͡0[^\{"1-)A U$J芫jz FjJQ`r (^W  NJ! 7 %%isPPPPsisr샅ֶmƢވ{hh^Vrb^UȂ*Ia ````'sa hsko&bX &j 'xJ(``3` 29jj ( 'sjrUU r $j@փ } jBヂbQ%%7bIWz"1/IU_Ia(p^Yտ  z8UisPPPPsjs_UVaQIs{WW{rsJښ! ````j! -(sY0jgj9)zҋz R#) #1`I(*sU!ʉ%Մi Dĥ:Eb*eZW\XprbjQpjZ"jZtrQ-r$Z `^jAz  FbcQwHNPPPPeb7(sjzPh{s/h{bj;?*hja ``@@b- z%b&! r~5,z0`k() IA{ g%R-f *"(*#@$# eݤ/&͇*r`%jUUWTjY`rQ.rebխJrEbVU^b$bz.jY_  Z0`P"PobZXXXh{j'sIk??͛Is˓0``@` { JfjI )rI$A_߷/'զb&$?hã(ؠě JEd."%d^&f%wEj`%եj\Xp@{jUrbʼjdb,x jebYb%Z j$Z:  ebQ^XPPPP ovoGsPpp`'sb <kQ``@rcQ웋z ̓1@@@r! -%JFjuU)dIjzݣI /&}ej̥($`n)`)kƼΌ$ *&ͅgZF{`^UU(sebjebפjbjeb|WUbY(`bI"-  H{EZWONPݶn#k{9`@jU{R`'sj'Hsj ̓ &Z@Y%5ja.% ({Iޖ& 's5Ue'ͅetxle%@ ě棭&%F zf* `'{pVUk_UU'sjsj_upjebp`s$b/ezb/+aZBiA0'Xp  ebA(" PPPcmۙq&r]vkb'sj .J .?K ~x|bb0 'sQG{kz gj %gxxx͆bzE‹eţ`%H{zW'sXUUU({j\'sj6Gsj{^sbrQ "*&DjW-/ gr媠F{'H~|  Fb ( 7pp*k UUƯEZXk{Zkeb */s̛:hb! )--%sj 9Gss/s5UU%͆zz\FV`VjWhj`]sjr-'sj/Gsjgsrs{Drb^W&{$r G{/.g&{G{'i`  (^zhpI$Isp6j{b~ sCA*&<Q꨽sbUe&j )`I`@JBb!(%%57sj/'(sj*.+zGsjr %H\fj_s\UUrb(prbsj srjsrЊzdr\ Grխ G{*G{2g&{g'{~Ϊg&{  GHx*n#asPPP*sj.zHݤA?a_6nͥIH{b&j%r{0rHɇR! 76sb(sj-j)s5_hj}(sj'srg'sj rj"GDj7r]5-z]ɋ&G_g'jG'{ G'{g'g'{  rJ*{*bm6jU7H$I${ {6I$I$Ao(sUV^x˓j͓r}&b { xxhi{I)ijjHssv3Hsjjh{sH{k@(s$rh$jV/ry zg %ȋGgGjngGUW&{gGZG{,  {+{j s:xvo#g:x`1b_|̓r҂r@WUkA(bj  HsjUUHski{kGs(s诧'sDjX'DjhCj gz G//hz믽g_h * G(G]_~gG[ygG找g'zz  g{{jj8(vΪUvΪUoFnj\XpjiFbqzu_+ @jʂCIWXX{j#A(sj%IsDjz'{erZu'Dj/GrGWWG\XroGG/ϭg:gȬh*ugׂGGGm_G\W  g{{j[ XT1̋U1̋U3cm1rj ͇jpz̓8zWI{(^8AIkrb0 {erpZ'erW+GVֵGzgGU]Hﯿɋ'Ghhg+hgjG|zgGng'{   G'{sj*xިbTWsbUUsbUURbUUR%ZIfl-d9 ϼ&Zկz&b77rA('Gerh{ g GgGGGHGhﯾhɋgh#gjZXjGG{g'{(}  g'{r_UKsPP2bU2bU2bU2bUmcc[2'R4S웢8 51R'>b7R<(^01BI G=ɋ%ɋ谪ɋWcɓWU^uuhﻠgթGG'-h{^Gg*ZZhJrZhs|'{j  '{$b^APPP{AUU{AUU{AUU{AUU{AUUo{8WVpϬQ(J^UjI+sfR_j)'5{ h 铩Uʓ{jꓨ7]WhhpۿHG~'{ +ʓgzzj&{?=/'{xxxG{K'{$j^ra_  $jCA b/PToUToUToUToUToUbmSJZEncrYUsBQ )i{j_^(sj}Hb'' zh/)ꓩ]Uɓ^ꓨ\v_ɓhhW{hGhUVUvGmh'{??rxxX$jHHra^_ub!(V  Ej@ xWUSPPPSUUUSUUUSUUUSUUUSUUUSUUI$I$:aW%PpVr]}rQsb^hj;) hNh+h"ꓩ?铩u{hhWzh^ZhG{ zhG{ej $ $bZz8^%b |-fZa   fRA P:sժU:sժU:sժU:sժU:sժU:sժUI$I:ժUj7WA(@¢j@ ) /b??hz. hYU}hz۟uh)ɓ.铩U{ɋg &8g`hPC'{|HDjpz"I{%bA(^fR(%ZA * ({ERUW/  r"9*\PP0UU0UU0UU0UU0UU0UU "a{k;ͮP0H1(bB YA(" '{@ hz  HGphH hɓWh^hbj]jhjXhcQ~{A(zZa0^)0)?/bUU^s Ir({cIXUU  ncIUU 1PPPPrUrUrUrUrUrU "cgrдjj%yW5ދ'''9ɒ8UW..δEbg'{ hHɪ:({hHH/sWrUH$jW{%j`WUDjA0xUja(z_ b )kZ͂A/ 81YB{%QQ   쓫*X P U U U U U UII$-U>(^- bmvQVV VI<`$I$ɍވzoȟނQ|Wra?yza0b@(| Z#A * bI^? j%R/j8k$Q([*I W*H Ьr.K**j X}̋k{ugZZb9`  b#AzPƪUƪUƪUƪUƪUƪUƪUƪUFn#a۷ޓB JjwXX)s&ZU[}\GZA(Wx€Y!(]b 0 {%R'sbmjebzjEZ b@C ){HU)* rrrxor~ kQ^j{Rྩk%Zz jIz_0QAX{_UPPPP222222222&6jZjW^bFZNg}μY1o1IVWZrr@5Hsj'sbhznjEZ|V^xjEZjQ|Z~kQ-JFb;.JY{*{(k A\jQWUHEZBAzٶmZAVVWA8 2PPPP222222222222222222nbrs_hovn;z_nl?1z06ov>0rر5t$!|؟P Uk)_Uj)UUb)UI)Uj) Uj)*UUo(2/UUдBUU?)Pb²AUm۶ ׵IU#AUX@U```2PPPP222222222222222222N\\\\I$I$-I oF*|VVJ!URE!U R)ZiBZ9`-c1Mc1M[)Bmc [mkBWMci2UMcI*_^?ӜI25UW-!8:"!5XA````P2U2U2U2U2U2U2U2U2UoV9΍sX7Re!tw~McJUVncRUUբ-c(:znc9UcE)W,[%!UMc%!U,[%!U-[E!U [f)mc:,[R%McRUMcU H?MCi*#uAzz`jVPPPPV6֪V6֪V6֪V6֪V6֪V6֪V6֪V6֪V6֪V6֪-ak;W,[xBE!9;5RMcD!\RD!Re)VXRE)RR RR RRR)XR)[ [$!)RE!~ cE)-J C)2;O$J$A`zb{VPVUVUVUVUVUVUVUVUVUVUJ4ذm)5 /.着着////Vncm(:\ j1UU[#ohU1UUU|a%B)$21$):)^ [!_UUR3e!UUU+egm׽)UU!,۶my$''''着着////@ is@@@@1is5555TP掜OOOO {````֎\\\\Zs n̶m۶m#s<<mCd$#9~F%bUERjj0''kjbhBjeb ' A &j0 Qz" zA(x?? 8is@@@@1is55558mwi{HtW_iQ`jJ@'sI){Fj8NQ2jUUWX%sUUŬbՕOcAu``xII-)J JcA bW  z! <Hk@@Pжe1IsUWTI'k???jQ@@@r(zZ @oC1'E&RԵ r $դ?%ejrH&QzjjY) r$Z%  ebQ^j@@kTVT\H{fb ̓GbH@za  )FQ?7E݇%^\+e=EjrT\\Ujb⋩bEb~  jQzꪋ1@Aovn:H{\VZZ'sj kj"jA -G%Z5G&{E\X=߶H{pVsxWUUkj^&ejW5&{i  &8I$Ijs@n+`jrUU)sbX{b 'sj++'{ 5h\Hjx_UH{jߵz'k^Grz_/&Dr g{ꪪ  G@0x cm@@@@ITl sUUMvn(sU^XpjJ0p``H{b-(s^Us^U'sjPDjߥ*r (GuGG{GF{   g'.?7O@@@@ k͍ cm:-`oI{UUWT̛QjIHsr jGsr`-rw-*{+(hxhǃ GgGh  g{O@@@@ k}ФbU;Fn6ojµ-Az׽Ma0Ger_/'{ G_GGgh+&{  g'{_1@SAUSAUnvnN0 zgb:`U %R`xhb)gʓU>~hGzGG{oMDjp  '{aW3@@@WѤUWѤUWI$I$wiRjcovnVa'kfjhj  ɓh+铩kgz舨hw_~G{Djj{0h  EZa(` @1U1U1Ubvnpzz'{0 /-h{h7WWɋ g rnhCA^m8_?Lc9  Ik^5@@@ůUůUůUevaS̓> \vocI&{h'{ WhjxWH`0zr0z)'k0 Q?_QY   1Q 6@@6U6U6U6k+6b毬ڰ׶{ۗj``Cjx{YwFj(b("*fZr%b_U%/Q-̋xWUU  FRpv@@@@vUvUvU'I$I$U*U؟hiv {`Pj{a0zba0/''s%R]jRK*{Yv>a )̋bzb]b#Ax^2@@@@2ќ2ќ2ќ2ќKqvnm{̃_O,BQŨjU(?`lU#AVjʋ1_j)(U {9>Uz)2+U I@G=8RUUՍ$m۶m#AUUR@@@w2UUw2UUw2UUw2UUwN;n#6o1RZZHsXR1ZJ @WMc(:ߪ-cJUnkR_q)2U?Aا8BueV@@VUUVUUVUUVUUVUUvno}(:^^TTrJ[SSSR1@@RHB  SRUU R9R9#׭J5555K\ Kuuc}I2TTTTӔ:SR:+[R*+[R+[RLcRu  [5555l?< C ȏ\IBTTVWRSSSS+[R* BlcRLciJ kLcUkLcUӌLc555%?<:W'ȏ [1v+[QqqiLc:lcB kiJ kIJlsR7*k55??: q)WWTMciMͅlciJݮkB kB)sZ | [.|5='2Ucoo})VTTT) +)f)\`Qf)uUpk)}UUs(:UU-1|B5 ׵H*Bl}2ovn}E!\\XXkE! )\r C )!(rR@C})ו5-]i2b`pPÏ}25%6on#1XXXxke!%5k5u9J*1|)Ui2* Q|- 2XTVUٗ\I:%5%-@ضcg}1@@hh)E! s) %PkMk* W8Ӕ5---]2@p\2)`KޱM۳ ۾ :)=))I$I$<,c@WIJe!R)UUU1|1UQ1UI2 jWUs2TUUUT?21`p ۶m}M[)***;@VUVUJo6o(:zPPP|iJVtT+[J +[HBW O?BqqsY6n6oI:PPPPQRTXkRkZ 0^?q CsssR6s jgZ}n vn4ajTTq b6gs\rm{PaoQEZZxLIzXXɗvFZ`jjIJ?.&Rz_X¶a{k;iBj@@@shB?shBŏScg)@@@@Q(:zU:mos#cm)@I$Hb5|1 %UU%?2Z)Ѷmsl\TgebURpo6o+({U\\xj`6b{g(B@@vsZ* Yca1@@@(Ӕ(2 IU +Fo{TuUT$c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //Igor Drukov Player_Track= createMarkerLocal ["Player_Track", position player]; "Player_Track" setMarkerTypeLocal "arrow"; "Player_Track" setMarkerSizeLocal [0.5, 0.5]; "Player_Track" setMarkerColorLocal "ColorGreen"; // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //===================CONFIG======================== _float_divingAngleMin = 0; _float_divingAngleMax = 85; _float_divingAngleApprox = 10; _float_speedLimitMin = 40; _float_speedLimitMax = 150; _float_speedApprox = 2; _float_fwdRatioMin = 0.1; _float_fwdRatioMax = 0.8; _float_turnApprox = 40; _float_gravity = 10; _float_nullZone = 0.1; _float_delay = 0.01; _float_camDist = 4; _float_camOSize = 0.5; //================================================= _obj_camera = objNull; _bool_camera = false; if( count _this > 1 )then{ _bool_camera = true; _obj_camera = _this select 1; }; _float_gravABreak = 0.25*_float_gravity^2/_float_speedApprox; _float_angleRange = _float_divingAngleMax - _float_divingAngleMin; _float_limitRange = _float_speedLimitMax - _float_speedLimitMin; _float_fwdRatioRange = _float_fwdRatioMax - _float_fwdRatioMin; _float_camROSize = 0; //v__float_mousePos =[ 0.5,0.5 ]; _float_mouseX = 0; _float_mouseY = 0; _float_mouseDir = 0; _float_mouseDist = 0; _float_maxDist = 0; _float_angle = 80; if( sqrt( ( vectorUp _obj_jump select 1 )^2 + ( vectorUp _obj_jump select 0 )^2 )!= 0 )then { _float_angle = -1*atan( ( vectorUp _obj_jump select 2 )/sqrt( ( vectorUp _obj_jump select 1 )^2 + ( vectorUp _obj_jump select 0 )^2 ) ); }; _float_dir = 90; if( ( vectorUp _obj_jump select 0 )!= 0 )then { _float_dir = atan( ( vectorUp _obj_jump select 1 )/( vectorUp _obj_jump select 0 ) ); }; _float_speedV = -1*( velocity _obj_jump select 2 ); _float_speedH = 0; _float_angleReq = 0; _float_dirReq = 0; _float_speedVReq = 0; //_float_speedHReq = 0; //Direct translation _float_angleCh = 0; _float_dirCh = 0; _float_speedVCh = 0; //_float_speedHCh = 0; //Direct translation _obj_ps = "#particlesource" createVehicleLocal getPos _obj_jump; _obj_ps setParticleParams [ [ "\Ca\Data\Cl_water",1,0,1 ], "", "Billboard", 1, 2, [ 0,0,4 ], [ 0,0,0 ], 0, 1, 1, 0, [ 0.1,0.6 ], [ [ 0.8,0.8,0.9,0.5 ] ], [ 0 ], 0,0,"","",_obj_jump ]; _obj_ps setParticleRandom [ 0.5, [ 3,3,0 ], [ 0,0,0 ],0,0,[ 0,0,0,0 ],0,0 ]; _obj_ps setDropInterval 0.05; _f__float_sqApprox = { _float_approxFac = _this select 0; _float_value = _this select 1; _float_return = 2*sqrt( _float_approxFac*abs _float_value ); if( abs( _float_return*_float_delay )> abs _float_value )then { _float_return = 0; }else{ if( _float_value<0 )then{ _float_return = -1*_float_return; }; }; _float_return; }; while{ _obj_jump getVariable "bool_freeFall" }do { _float_mouseX =( v__float_mousePos select 0 )- 0.5; _float_mouseY = 0.5 -( v__float_mousePos select 1 ); _float_mouseDist = sqrt( _float_mouseX^2 + _float_mouseY^2 ); if( _float_mouseDist < 0 )then{ _float_mouseDist = 0.001 }; if( _float_mouseY > 0 )then { _float_mouseDir = acos( _float_mouseX/_float_mouseDist ); }else{ _float_mouseDir = 360 - acos( _float_mouseX/_float_mouseDist ); }; _float_angleAmount = ( _float_angle - _float_divingAngleMin )/_float_angleRange; if( abs( _float_mouseX )> abs( _float_mouseY ) )then { _float_maxDist = abs( 0.5*_float_mouseDist/_float_mouseX ); }else{ _float_maxDist = abs( 0.5*_float_mouseDist/_float_mouseY ); }; _float_angleReq = _float_divingAngleMin + _float_angleRange*( _float_mouseDist - _float_nullZone )/( _float_maxDist - _float_nullZone ); if( _float_mouseDist < _float_nullZone )then{ _float_angleReq = _float_divingAngleMin; }; _float_dirReq = _float_mouseDir; _float_speedVReq = _float_speedLimitMin + _float_angleAmount*_float_limitRange; _float_angleCh =[ _float_divingAngleApprox,_float_angleReq - _float_angle ]call _f__float_sqApprox; if( abs( _float_dirReq - _float_dir )> 180 )then { if( _float_dirReq > _float_dir )then { _float_dirCh =[ _float_turnApprox,_float_dirReq - 360 - _float_dir ]call _f__float_sqApprox; }else{ _float_dirCh =[ _float_turnApprox,_float_dirReq + 360 - _float_dir ]call _f__float_sqApprox; }; }else{ _float_dirCh =[ _float_turnApprox,_float_dirReq - _float_dir ]call _f__float_sqApprox; }; if( ( _float_speedVReq - _float_speedV )> _float_gravABreak )then { _float_speedVCh = _float_gravity; }else{ _float_speedVCh =[ _float_speedApprox,_float_speedVReq - _float_speedV ]call _f__float_sqApprox; }; _float_angle = _float_angle + _float_angleCh*_float_delay; _float_speedV = _float_speedV + _float_speedVCh*_float_delay; _float_dir = _float_dir + _float_dirCh*_float_delay; _float_speedH = _float_speedVReq*( _float_fwdRatioMin +( 1 - _float_angleAmount )*_float_fwdRatioRange ); _float_vX = cos _float_dir; _float_vY = sin _float_dir; _float_vZ = tan _float_angle; _obj_jump setVelocity [ _float_speedH*_float_vX, _float_speedH*_float_vY, -1*_float_speedV ]; _obj_jump setVectorDir [ -1*_float_vX*_float_vZ, -1*_float_vY*_float_vZ, -1*( ( -1*_float_vX )^2 + _float_vY^2 ) ]; _obj_jump setVectorUp [ _float_vX, _float_vY, -1*_float_vZ ]; if( _bool_camera && _obj_jump getVariable "bool_freeFall" )then { _float_camROSize = ( _float_camOSize*cos _float_angle )/2; _pos_jump = getPos _obj_jump; _obj_camera camSetPos [ ( _pos_jump select 0 )+ _float_vX*_float_camROSize, ( _pos_jump select 1 )+ _float_vY*_float_camROSize, ( _pos_jump select 2 )+_float_camDist ]; _obj_camera camSetTarget [ ( _pos_jump select 0 )+ _float_vX*_float_camROSize, ( _pos_jump select 1 )+ 1, 0 ]; _obj_camera camCommit 0; }; //This part by Igor Drukov ShowCinemaBorder false; "Player_Track" SetmarkerPosLocal position player; "Player_Track" SetmarkerDirLocal (180+getdir player); _display = finddisplay 856; _map = _display displayctrl 858; ctrlMapAnimClear _map; _map ctrlmapAnimAdd [0, 0.5, markerPos "Player_Track"];ctrlmapAnimCommit _map; //End of Drukov ctrlSetText[ 857,format[ "%1",round( getPos _obj_jump select 2 ) ] ]; _obj_ps setPos[ getPos _obj_jump select 0,getPos _obj_jump select 1,( getPos _obj_jump select 2 )-6 ]; /*hint format [ "===DEBUG===\n" + "Approx. Breakpoint: %1\n" + "Current VSpeed: %2\n" + "Target VSpeed: %3\n" + "VSpeed desired Change: %4\n" + "------------------------\n" + "Current Angle: %5\n" + "Target Angle: %6\n" + "Angle desired Change %7\n" + "------------------------\n" + "Current HSpeed: %8\n" + "------------------------\n" + "Current Dir: %9\n" + "Target Dir: %10\n" + "Dir desired Change %11\n" + "Result Velocity:\n%12,%13\n" + "------------------------\n" + "Keys listed: %14", _float_gravABreak, _float_speedV, _float_speedVReq, _float_speedVCh, _float_angle, _float_angleReq, _float_angleCh, _float_speedH, _float_dir, _float_dirReq, _float_dirCh, _float_speedH*_float_vX, _float_speedH*_float_vY, v__float_mousePos ];*/ // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> sleep _float_delay; }; // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //Igor DeleteMarkerLocal "Player_Track"; _obj_ps setDropInterval 0; deleteVehicle _obj_ps; // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>_obj_jump = player; //if( vehicle player == player )exitWith{ }; //===================CONFIG======================== _float_time = 2; _float_delay = 0.025; // >>>>>>>>>>>>>>> possibilit de ptage de parachute si ramdom1 plus petit que ce chiffre ??? > _float_failProb = 0.5; _float_failProb = 0; _float_ctrlHSpeedStart = 4; _float_ctrlVSpeedStart = 4; _float_ctrlVSpeedEnd = -20; _int_opensMax = 2; _float_camMinFBH = 200.0; _float_freezeTime = 3; _float_crashSpeed = 10; //================================================= _float_startVel = velocity vehicle _obj_jump select 2; if( getPos vehicle player select 2 < ( _float_time*( _float_ctrlVSpeedStart + _float_startVel )+ 0.5*( _float_ctrlVSpeedEnd + _float_startVel - _float_ctrlVSpeedEnd - _float_startVel )*_float_time ) )exitWith{ _obj_jump action[ "EJECT",vehicle _obj_jump ]; }; //----------EJECTING SEQUENCE, INDEPENDENT AND DEPENDENT ADAPTATION---------- _v__float_door =[ ]; _v__float_vehVU = vectorUp vehicle _obj_jump; _v__float_vehVD = vectorDir vehicle _obj_jump; _bool_getouSeqAdapt = false; _v__float_offSet =[ 0,0,0 ]; _pos_vehicle =[ 0,0,0 ]; _v__float_VDxVU = [ ( _v__float_vehVU select 1 )*( _v__float_vehVD select 2 )-( _v__float_vehVD select 1 )*( _v__float_vehVU select 2 ), ( _v__float_vehVU select 2 )*( _v__float_vehVD select 0 )-( _v__float_vehVD select 2 )*( _v__float_vehVU select 0 ), ( _v__float_vehVU select 0 )*( _v__float_vehVD select 1 )-( _v__float_vehVD select 0 )*( _v__float_vehVU select 1 ) ]; _float_DxUNorm = sqrt( ( _v__float_VDxVU select 0 )^2 +( _v__float_VDxVU select 1 )^2 +( _v__float_VDxVU select 2 )^2 ); _float_DNorm = sqrt( ( _v__float_vehVD select 0 )^2 +( _v__float_vehVD select 1 )^2 +( _v__float_vehVD select 2 )^2 ); _v__float_VDxVU = [ ( _v__float_VDxVU select 0 )/_float_DxUNorm, ( _v__float_VDxVU select 1 )/_float_DxUNorm, ( _v__float_VDxVU select 2 )/_float_DxUNorm ]; _pos_vehicle = getPos vehicle _obj_jump; switch( typeOf( vehicle _obj_jump ) )do { case "UH60MG":{ _v__float_door =[ 2,2.28,1 ]; }; default { _obj_jump action[ "GETOUT",vehicle _obj_jump ]; _bool_getouSeqAdapt = true; } }; if( !_bool_getouSeqAdapt )then { _obj_jump setPos [ ( getPos vehicle _obj_jump select 0 )+( _v__float_VDxVU select 0 )*( _v__float_door select 0 )+( _v__float_vehVD select 0 )*( _v__float_door select 1 )/_float_DNorm, ( getPos vehicle _obj_jump select 1 )+( _v__float_VDxVU select 1 )*( _v__float_door select 0 )+( _v__float_vehVD select 1 )*( _v__float_door select 1 )/_float_DNorm, ( _v__float_door select 2 )+( getPos vehicle _obj_jump select 2 )+( _v__float_VDxVU select 2 )*( _v__float_door select 0 ) +( _v__float_vehVD select 2 )*( _v__float_door select 1 )/_float_DNorm ]; }; waitUntil{ vehicle _obj_jump == _obj_jump }; _v__float_offSet =[ ( getPos _obj_jump select 0 )-( _pos_vehicle select 0 ), ( getPos _obj_jump select 1 )-( _pos_vehicle select 1 ), ( getPos _obj_jump select 2 )-( _pos_vehicle select 2 ) ]; _v_float_getOutV =[ ( _v__float_VDxVU select 0 )*( ( _v__float_VDxVU select 0 )*( _v__float_offSet select 0 )+ ( _v__float_VDxVU select 1 )*( _v__float_offSet select 1 )+ ( _v__float_VDxVU select 2 )*( _v__float_offSet select 2 ) ), ( _v__float_VDxVU select 1 )*( ( _v__float_VDxVU select 0 )*( _v__float_offSet select 0 )+ ( _v__float_VDxVU select 1 )*( _v__float_offSet select 1 )+ ( _v__float_VDxVU select 2 )*( _v__float_offSet select 2 ) ), ( _v__float_VDxVU select 2 )*( ( _v__float_VDxVU select 0 )*( _v__float_offSet select 0 )+ ( _v__float_VDxVU select 1 )*( _v__float_offSet select 1 )+ ( _v__float_VDxVU select 2 )*( _v__float_offSet select 2 ) ) ]; if( ( _v_float_getOutV select 0 )== 0 )then { if( ( _v_float_getOutV select 1 )< 0 )then{ _obj_jump setDir 180; }else{ _obj_jump setDir 0; }; } else { if( ( _v_float_getOutV select 0 )> 0 )then { _obj_jump setDir( 90 - atan( ( _v_float_getOutV select 1 )/( _v_float_getOutV select 0 ) ) ); }else{ _obj_jump setDir( 270 - atan( ( _v_float_getOutV select 1 )/( _v_float_getOutV select 0 ) ) ); }; }; v__int_reqKeys = [ ]; v__float_mousePos =[ 0,0 ]; _int_cycle = 0; _float_dir = 90 -( getDir _obj_jump ); _bool_open = false; _int_opens = 0; _float_vUpX = 0; _float_vUpY = 0; _float_vUpZ = 0; _v__str_weapons = weapons _obj_jump; _v__str_mags = magazines _obj_jump; removeAllWeapons _obj_jump; if( "NVGoggles" in _v__str_weapons )then{ _obj_jump addWeapon "NVGoggles"; }; _obj_jump switchMove "para_pilot"; _dis_diag = displayNull; _ctrl_emerg = controlNull; _obj_camera = "Camera" camCreate[ 0,0,0 ]; _obj_camera camSetTarget _obj_jump; _obj_camera camSetRelPos[ -10,2,-1 ]; _obj_camera camCommit 0; _obj_camera cameraEffect[ "INTERNAL","BACK" ]; showCinemaBorder false; while{ _int_cycle <( _float_time/_float_delay ) }do { _int_cycle = _int_cycle + 1; _obj_jump setVelocity [ cos _float_dir * _float_ctrlHSpeedStart*( 1 - ( _int_cycle*_float_delay/_float_time ) ), sin _float_dir * _float_ctrlHSpeedStart*( 1 - ( _int_cycle*_float_delay/_float_time ) ), _float_startVel+_float_ctrlVSpeedStart -( _float_ctrlVSpeedStart - _float_ctrlVSpeedEnd )*_int_cycle*_float_delay/_float_time ]; _float_vUpX = cos _float_dir*( _float_ctrlHSpeedStart -( _float_ctrlHSpeedStart - 1 )*_int_cycle*_float_delay/_float_time ); _float_vUpY = sin _float_dir*( _float_ctrlHSpeedStart -( _float_ctrlHSpeedStart - 1 )*_int_cycle*_float_delay/_float_time ); _float_vUpZ = _float_ctrlVSpeedStart -( _float_ctrlVSpeedStart + 2 )*_int_cycle*_float_delay/_float_time; _obj_jump setVectorDir [ _float_vUpX*_float_vUpZ, _float_vUpY*_float_vUpZ, -1*( _float_vUpX^2 + _float_vUpY^2 ) ]; _obj_jump setVectorUp [ _float_vUpX, _float_vUpY, _float_vUpZ ]; if( _int_cycle ==( _float_time/_float_delay )/2 )then{ cutText[ "","BLACK OUT" ]; }; sleep _float_delay; }; _bool_diag = createDialog "ctrlParaDiag"; cutText[ "","BLACK IN" ]; [ _obj_jump,_obj_camera ]execVM "AAHALO\freeFall.sqf"; [ _obj_jump,-1*_float_crashSpeed ]spawn { waitUntil{ ( getPos vehicle( _this select 0 )select 2 )<10 }; if( alive( _this select 0 )&&( velocity vehicle( _this select 0 )select 2 )<( _this select 1 ) )then { ( _this select 0 )setDammage 1; }; }; [ _obj_camera,_obj_jump,_v__str_weapons ]spawn { _bool_NVOn = false; _v__int_reqKeysNew =[ ]; while{ true }do { while{ ( count v__int_reqKeys )> 0 }do { if( ( v__int_reqKeys select 0 )in( actionKeys "nightVision" ) && "NVGoggles" in( _this select 2 ) )then { _bool_NVOn = !_bool_NVOn; camUseNVG _bool_NVOn; }; _v__int_reqKeysNew =[ ]; for[ { _int_i = 1; },{ _int_i < count v__int_keyReq },{ _int_i = _int_i + 1; } ]do { _v__int_reqKeysNew = _v__int_reqKeysNew +( v__int_reqKeys select _int_i ); }; v__int_reqKeys = _v__int_reqKeysNew; }; waitUntil{ ( count v__int_reqKeys )> 0 }; }; }; waitUntil{ !dialog || !alive _obj_jump }; while{ _int_opens < _int_opensMax && !_bool_open && alive _obj_jump &&( getPos _obj_jump select 2 )>10 }do { _int_opens = _int_opens + 1; _obj_jump setVariable[ "bool_freeFall",false ]; if( ( random 1 )< _float_failProb )then { _obj_jump setVelocity [ velocity _obj_jump select 0, velocity _obj_jump select 1, ( velocity _obj_jump select 2 )/2 ]; _obj_jump addWeapon "ACE_ParachutePack"; _obj_camera camSetTarget vehicle _obj_jump; _obj_camera camCommit 0; _obj_jump setVariable[ "bool_freeFall",false ]; _obj_camera cameraEffect[ "Terminate","Back" ]; camDestroy _obj_camera; if( dialog )then{ closeDialog 856; }; ["",_obj_jump] execVM "AAHALO\Parachute\Ripcord.sqf"; }else{ _bool_open = true; _obj_jump addWeapon "ACE_ParachutePack"; _obj_camera camSetTarget vehicle _obj_jump; _obj_camera cameraEffect[ "Terminate","Back" ]; camDestroy _obj_camera; _obj_camera camCommit 0; _obj_jump setVariable[ "bool_freeFall",false ]; if( dialog )then{ closeDialog 856; }; ["",_obj_jump] execVM "AAHALO\Parachute\Ripcord.sqf"; }; if( ( getPos _obj_jump select 2 )> _float_camMinFBH )then { _obj_camera camSetTarget vehicle _obj_jump; _obj_camera camCommit 0; }else{ _obj_camera cameraEffect[ "Terminate","Back" ]; camDestroy _obj_camera; _obj_camera = objNull; }; if( !_bool_open )then { sleep _float_freezeTime; if( isNull _obj_camera )then { _obj_camera = "Camera" camCreate[ 0,0,0 ]; _obj_camera cameraEffect[ "External","Back" ]; }; _bool_diag = createDialog "ctrlParaDiag"; _dis_diag = findDisplay 856; _ctrl_emerg = _dis_diag displayCtrl 857; _ctrl_emerg ctrlSetTextColor[ 1,0,0,1 ]; [ _obj_jump,_obj_camera ]execVM "AAHALO\freeFall.sqf"; }else{ sleep _float_freezeTime; if( !isNull _obj_camera )then { _obj_camera cameraEffect[ "Terminate","Back" ]; camDestroy _obj_camera; _obj_camera = objNull; }; }; waitUntil{ _int_opens >= _int_opensMax || _bool_open ||( !alive _obj_jump )||( !dialog )||( getPos _obj_jump select 2 )<10 }; }; waitUntil{ ( !alive _obj_jump )||( getPos _obj_jump select 2 )<10 }; { _obj_jump addMagazine _x }forEach _v__str_mags; { if( _x != "NVGoggles" )then{ _obj_jump addWeapon _x; }; }forEach _v__str_weapons; _obj_jump setVariable[ "bool_freeFall",false ]; if( dialog )then{ closeDialog 856; };//By ManDay, RscMap added by Igor Drukov (July 2007) class ctrlParaDiag { idd = 856; moving = false; movingEnable = false; movingEnabled = false; controlsBackground[ ]={ interface }; objects[ ]={ }; controls[ ]={ mouseField,altmeter,Map }; class mouseField { idc = -1; type = 0; style = 16; colorText[ ]={ 0,0,0,0 }; colorBackground[ ]={ 1,1,1,0 }; font = "Zeppelin32"; sizeEx = 0.05; lineSpacing = 0; x = 0; y = 0; w = 1; h = 1; text = ""; onMouseMoving = "v__float_mousePos =[ _this select 1,_this select 2 ];"; onKeyDown = "v__int_reqKeys = v__int_reqKeys +[ _this select 1 ];" }; class altmeter { idc = 857; type = 0; style = 0x01; colorText[ ]={ 0,0,0,1 }; colorBackground[ ]={ 0,0,0,0 }; font = "Zeppelin32"; sizeEx = 0.03; lineSpacing = 0; x = 0.865; y = 0.55; w = 0.1; h = 0.2; border = 1; borderSize = 10; text = "Height"; }; //Control Map added by Igor Drukov class Map: RscMapControl { idc = 858; colorBackground[] = {1,1,1,1}; colorSea[] = {0.56,0.8,0.98,0.5}; x = 0.0; y = 0.0; w = 0.3; h = 0.3; default = true; }; class interface { idc = -1; type = 0; style = 48; colorText[ ]={ 1,1,1,1 }; colorBackground[ ]={ 0.4,0.4,0.4,1 }; font = "Zeppelin32"; sizeEx = 0.01; lineSpacing = 0; x = 0.7; y = 0.1; w = 0.3; h = 0.8; border = 1; borderSize = 10; text = "AAHALO\altimeter.paa"; }; };GGATCGVAXfpGGATCXAMGGATGALFGGATSFFO@@@qls{{{}}}s(B,cWWWUUUwwwUUUE)0UUUlkWWW{ m{FcѼ__2۳ѴWW0m۶m#ֵ̓`yu*s`p^UIٰ۟UhR5?m۶c׽{ImۅطGR 5HJT _I$IҔL(mbI$O'Ӕ1I$Iq{Cm۶q cxxxx4նm۶a{q*SJ{ WUm۰׽9חI$ICpTVkb~_2mn5HRUUUܑ bBBE.ZU)*kuݶmۅ HJI$I Rrr hvֵ`pxHJj`7.1 B$I$ k ̃JBѬ9bjCgZ%%#hsmۖr{5555R+o6h׵Kk\\$1Z(*kMNhR`ob~_p.GR +kA:,̃bc_o̓Z€_{1h_0A M``pJl ۰ ۗ````{5555hR׵Lk\\\\YI$I$Z퍍!6dpb퉉7o#{UU^1^(9 Ӝ9WU/ ?UGJ}U*P ќ'Jj c\TyIV ۳D)U# ۶mۗsiR||||````shR c^^^Z{UUU___H$I$mk cW|m#vgs_> ۶mIB׿Q]]] cWWWvUUUr PQs]]Z|UI$Ij} m۰6jO׽gR^W[])$Ub!]]ۗvGJ ׶m6bֵ,kG-B0m0b{{ & k|u={GbQKsCoa+kԔo(p kߟM_.(J^__{ZI΃'*AmVZUkh7 ۶mv0sU,kתuH$I$sߪ%,a;m{j3[m۶mk c5Um۠&bUζm۲lsmۂ9%mgUbm{UUqmlsUU$lZUU ) ۶mns@$m۶ {*m6\fUQFc۶m{UضmKkեu@JksUUGGATCGVAWeoGGATCXAMGGATGALFGGATSFFO@@@ѤTTT!m۶m W$mDJkLkGRkk{JZUUUP___R___{UUUUUUlsUUUWWW4UUU0e4Vnkk{|TT`1IW~k{'Jk ѰmۂLqJ:*mGZrИHJ`pPXb5%% T@׽{rrP9pppPQsrlsRͶͪU$I$lsTTF6b۶mYJVV'ojogRs Z ~ ۱خ{HJܔMk }I$ɒT@0Lm۶DM1ؘsCbqlsLk%%%I$IͶͪ>m۶UMktt׵(J G6bm׵Kk\\VV`n c#i̓*kτhg bN¶mZBj6hFb.+kjB@ݯ's9% Ҷmې$0+k m6RqLk`m۶miJ7' I|I _&c'pķ<&ROUPIJ|||\׵hR/Z|~6b۶m{bbbp%^ncӔ*k}+.Z*. k_\^U{GR &KsGJ6'hR *̃ k *{JhO%'J?1` ʲ/hJ4m۶m$OxZ\\\\׵BBBBsZZpؘ{/,o0mZzJB+hAU_9߂ {&J"A_{9W {$)`NA5Iࠫ5*?d % }R2` sZ\\\\׵BBBBsZZZbbbbsZАI$I$ӔcrRRC\6j۶m;ULkToRA@`w, /D¶mr % 1h۶m۳I`pp- l۶mB%% | Z\0+kUsUPUZmkUrU%I$I$MkW$H$I$J_(BR)R_9UU  ֶmC`yJ_ր]SygRcm۶y+c~vw,cIJnnnY{,kWWWc۶m8ƉR|<X4 k]l̓hRB*om۶U"ֵb -?U'Jh2sm۶Qs;u&öm۶e# c ہMTҼΊR#I$I${ cGGbېbB{98ר{B/ k {9߬j2beNĠ'ubZKkUU/UUI$I$ c oVo1liJOFضm1ս;@d۶miRתσW_)ᶬ6oyI89 ہhls*#m۰URPm6ęޑ I$I$}s___Go0mN$TO{4444bgRr(JPPp,c %%T@@ֶm۶a+{XrmkBPX^m25{iJ 6&rksu{ZX^*'J5.V?(Rȏ\ذm *+{T̃<<I$UksX5b`@hm6f/uGRbB*m۰r(J`@@HJ==I$I$ c[@n{rXX.1xGJ̃ k)kx{9xZp_/|سA/ I$mQIVV\H$I$ cs?? vm6bTbjub|WU?}bN9FZ{խLNKk_u8̶]B*Zbb~hR_GR_̃bz ls ~?ȯs~=-&ʁ=۶mr9 I\XXpB ޯz bx~mӔ'JUUV @n*k}QbNb.Kknb7hR1+k9p^ O9C)t2l5Ai1!r!<ضmrrRIppppJ{UUUHJ_~~7$I$+kUUU>Xc[mlsUUU8"mUUURFm cUX$I$MkUUUH$I$ZZW ۶mZ}}}(B}}}RBR Usw(J_sUlsm۶mWҜp4sDDDD9IJ7777XXXx{Zm۶m(mk'7 lHňZ|~I4"?0 ThZ @ ldsV^I$I${26b۶msVFmKsU-Vf{)WGGATCGVAWeoGGATCXAMGGATGALFGGATSFFO@@@m۶a;j{{m۶BuI$I&OI$I$s_UU,c׵(BzZhRUUsUUӜ}{5 b6dsPPP]oA|E#@Z}u"]۱-5{% ULk`X%GR pGR& Bp\Z5 8ƖҜ0 Cp\+c??JpPo;g{hRUUߠ GR}϶ ۳R- I$Ir$GR pGR& Bp\Z5 8ƖҜ0 Cp\E)`%!7=??1c;iKk@x^W.hRr"oZ *هۓ&J$ Bp\Z5 8ƖҜ0 Cp\E)`{E)6 {LkpPPPI$I$Z߷-oLk1;̓Kkk/ڳؗHJs^ּb5 8ƖҜ0 Cp\E)`{E)6 ls p{KkPPPP c p\0o6opb Z6*)اOKk׷'5m۰R+:7@mۖ0Lp\E)`{E)6 ls pQls7 lkLkPPPPp c%"I6bm۲{&8ZXo kXx^U!ɑtGR %P{w۲Ǒ9j{E)6 ls pQls7 R~7b%)**{PPPP{&Z/r:Vna׵Z\-̏ cC) rJs'J˫{A _?nB ~mۂs pQls7 Lk_WR OPPPPZ/r c\}QRz7 bca۳ZC  Ab.S̃ kn^ƒm!gq k?{ -ؕPiRʼnR I$I$Ͷͪ I$I$Ҵ??Rp c\}QRz7 c mk>CPyyҜZ {Tkse1 /{AAѿ9??MiŬUU AҊ;TK )6]س LkPPPPQRz7 c mk>CP,cTU U^jmےiJ`X#k6`۳ Wɿje)U_8[Az'J/GRxXx5ؗu9/''/??ZPP c mk>CP,cTUiJ`XӔIJ5xq(B8RJx^odvBՕ%(?6f۬5.̣rL[¶-ءΛ>?%5P,cW,c}JIJRrUJUIJU%I$I$m{_,H$I$% 4fTI$I ֶ ֵb_qIJ0sA PTTTT6bmҜZr~NFn#Ҝ1a?{A ; ۙ0+k:^I$I Z?I$I$ ,c|\TӔZ'"UIɛ$ӔiJkK*o9WBoHRg>Q0PZ / ۶m Z,c_תjJwnkζbmIJ_ת)d0mWj۶m  Ͷmb[jP`׶mہ}+kZ*7cmLk````D:q*klm۶ض+kx{555%Lk`` Vn#eq'Jꂠ/9 7 m -;=%r`sWEI$I$iR*x l۶m@ mv`ls I$I$qs~q c_ZiJT|baRo-o{{9m}?{HR(pb ۶ cWUIJRTTӔZW 'bmr9~kFn+ӔAݞJZܸ7k{ _I$`o 4I$I$ c\RWIWU&6b#c{A_U[b0'JuV lulsHH$I$JTTT5BUU/BU+ 8I$-c-o#e۬55ߟ}ةdTz+ $I$I$ͱa\pTTTUUUUUUs_{_UKFjmWUU]ضmO ls````^nf'J qm۰Ks)5 ^Xm۶a; c``-?ub|xm۶usׂ4mkY3acs````@Ǭ{ZJUH$I$iR_ ZW y#c;gsP```Z9"=4Rmۄֵ{ ֵPW}I$I$k``ќZuwpB*_{R\ (Y&cmJ`(؏^n|1_z3?{'J ۲۶Lk_5 Y{````UI$I$rJ^oѬ(Jo'ρwhZ I$H$B`ࠀJի6bmYr}__ lym   @ks\\XT#I$I${ \0ci6h;iIJTT c̓Z BIdI kI$I$qlsUsIJTTyPb7vc+D)^P{1 y ̃JC۱ q cULk?rTTTT#6b۶mӔs@0oA6$,?B4ն-۱}ֽRUZ)***ATTT,kJUUMoooJ5Ѭ9 X*Ϗw"3J{ %% -د??5TTTT󜪪b[m/UCG|(B.R 3[cm,c````I΃/-.?0 k{ Z``*Fn6n+iRؐňZ/I$O' {`76b۶mU؊mΖgZ*/ m۶m m۶g#\\\\]ڑGJ/-'/q6nvnls\\\\Α-۰MLs55)/$vnoZX\T\ر}ls55=5 6baRx\%ȁ=-55-@Qmk;{````$۳ ks 6b#g+kPP`Mہ= uks/* This script is NORMALLY executed when you use the "Eject" or "Jump Out" options, and you just happen to be above 10m altitude. I start this mission test by calling this script manually, as if you had used Eject or Jump Out. - Kyle Wilcox aka "Homer Johnston", Feb 09 */ private ["_jumper", "_action"]; _jumper = _this select 0; // If _jumper doesn't have a chute, then they're screwed. Make them play the ACE animation of a falling person, and abort the script. If !(_jumper hasWeapon "ACE_ParachutePack") exitWith {_jumper switchMove "ACE_IC_ParaFail";}; // Otherwise ... keep going... waitUntil {vehicle _jumper == _jumper}; _jumper switchMove "ACE_IC_Para"; _jumper setVariable ["ChuteOpen", 0]; if (_jumper == Player) then { _jumper spawn { //player sidechat "create sound dummies"; _dummy1 = "Logic" createVehicleLocal [(getPos _this select 0),(getPos _this select 1),0]; _dummy2 = "Logic" createVehicleLocal [(getPos _this select 0),(getPos _this select 1),0]; // SPAWN script which relocates dummy sound makers to directly below the player [player,_dummy1,_dummy2] spawn { _player = (_this select 0); while {(vehicle _player == _player) AND (alive Player)} do { _pos = [(getpos Player select 0),(getpos Player select 1),0]; (_this select 1) setPos _pos; (_this select 2) setPos _pos; sleep 0.1; }; // Now player is in a parachute, or dead on the ground sleep 1; deleteVehicle (_this select 1); deleteVehicle (_this select 2); }; // SPAWN script which makes dummy sound makers say the wind sound [player,_dummy1,_dummy2] spawn { _player = (_this select 0); _dummy1 = _this select 1; _dummy2 = _this select 2; _i = 1; while {vehicle _player == _player} do { call compile format ["_dummy%1 say 'SkyDiveWind';",_i]; if (_i == 1) then {_i = 2} else {_i = 1}; sleep 15; }; }; // WAIT until player is in parachute waitUntil {vehicle player != player}; //player sidechat "In a parachute now"; // SPAWN script which makes parachute say chuteflutter player spawn { _player = _this; _chute = vehicle _this; while {vehicle _player == _chute} do { _chute say "ChuteFlutter2"; sleep 10; }; }; }; }; // Check if Human : AI players are too dumb to open their own chutes. Make AI open their chute, or give humans option to open theirs. if (_jumper != player) then { waitUntil {((getPos Vehicle _jumper) select 2) < (300+ random 200)}; ["",_jumper] execVM "AAHALO\Parachute\Ripcord.sqf"; } else { _jumper execVM "AAHALO\Parachute\SkyDive.sqf"; // Wait until player is lower than 1000m ASL, give him option to pull ripcord. waitUntil {((getPosASL Vehicle player) select 2) < 1100}; _action = _jumper addAction [format ["%1 - %2",localize "STR_ACE_EJECT2",actionKeysImages ["Salute", 1]],"AAHALO\Parachute\Ripcord.sqf", [], 4, true, true, "Salute"]; };CutText ["You've been knocked out from excess G-forces.", "BLACK OUT"]; _time = time; _UncTime = 20 + random 90; waitUntil {(vehicle player == player) OR (time > (_time + _UncTime))}; CutText ["You've been knocked out from excess G-forces.", "BLACK IN"]; ACEChute_Unconcious = FALSE; if (vehicle player != player) then // player still in parachute -> has regained conciousness but must be injured. { waitUntil {vehicle player == player}; player setDamage ((Damage player) + 0.25); } else // player has landed but still hasn't regained conciousness -> Transfer them over to the ACE wounded unconciousness system. { sleep 0.25; [player, "", .76] call ACE_Sys_Wound_HitEH; };/* This script is the actual steering algorithm for the parachute. It is called after the player pulls his ripcord (Ripcord.sqf) How it works (sort of): approx. 100 times a second it checks whether the player has a steering key pressed down by the player vehicle variables ACE_ChuteSteer, and ACE_ChutePitch. Holding these keys change the position where the parachute "wants to point" ... the parachute is always moved slowly towards that position. */ private ["_dump","_Fwd","_HdgX","_Fwd","_HdgY","_Drop","_spd","_Weight", "_Col1","_Col2"]; _image = ""; _linebreak = "
"; _text_size = ""; _text_normal = ""; _text_yel = ""; _text_ora = ""; _text_red = ""; _text_grn = ""; // ChuteOpen 0 means there is no chute open // ChuteOpen 1 means the MAIN parachute is open. // ChuteOpen 2 means a chute has been cut -> it will soon be set to 4, or 0 // ChuteOpen 3 means the player has landed -> it will soon be set to 0 // ChuteOpen 4 means the RESERVE parachute is open // THIS is the main "control script" -- everything in this .sqf is executed exactly in the order presented within: f_ChuteMain = { _Weight = (player call ACE_Sys_Stamina_CalculateInventoryWeight); if ((player getVariable "ChuteOpen") == 4) then {cutText ["Reserve parachute open!", "PLAIN DOWN"];player removeWeapon "ACE_ParachutePack" }; player setVariable ["ChuteOpen",1]; _chute = vehicle player; [] call f_ChuteSteer; // start f_Chutesteer loop, and wait til it is done if ((player getVariable "ChuteOpen") == 2) then { [] call f_CutChute } else { [] call f_ChuteDelete }; }; // LOOPED STEERING FUNCTION, 100 times per second f_ChuteSteer = { _Hdg = getDir _chute; _Bank = 0; // DESIRED bank index factor (keys A,D,Left,Right will change this) _NewBank = 0; // ACTUAL bank the chute will be set to. This "follows" _Bank as best it can with a delay, for smoother turns :D _Pitch = 0; _NewPitch = 0; _Speed = 1; // basic velocity magnitude, caused by pitching forwards _Drop = -3 - (_weight/25); // basic descent speed, to be modified later -> -3 for ~80 kg? therefore drop = weight / 25 _badLand = false; // rough landing, i.e. hitting a tree, player will drop to the ground in a gentler manner _Fwd = 6; // start parachute with some flight speed _Descent = 0.333 * ((velocity vehicle player) select 2); // start parachute with some downwards speed _DsdFwd = 12; _DsdDescent = -10; ACEChute_Steer = "CENTER"; ACEChute_Pitch = "CENTER"; while {(player getVariable "ChuteOpen") == 1} do //double loop in case players drop from REALLY high and break ArmA's 10,000 iteration limit of WHILE command { while {(player getVariable "ChuteOpen") == 1} do { if (ACEChute_Unconcious) then { _Bank = (_Bank * 0.99); // Slowly bring the desired bank back to zero, when keys are released _Pitch = (_Pitch * 0.99); } else { switch (ACEChute_Steer) do { case "CENTER": { _Bank = (_Bank * 0.99); // Slowly bring the desired bank back to zero, when keys are released }; case "LEFT": { if ((Abs _Bank) < 1) then {_Bank = _Bank - 0.0175;}; // Slowly move desired bank left. MAX value of -1 or +1 }; case "RIGHT": { if ((Abs _Bank) < 1) then {_Bank = _Bank + 0.0175;}; // Slowly move desired bank right. MAX value of -1 or +1 }; }; switch (ACEChute_Pitch) do { case "CENTER": { _Pitch = (_Pitch -0.2) * 0.99 + 0.2; // Center-pitch is offset to ~20-30% brakes }; case "FORWARD": { if ((_Pitch) > -0.1) then // apply less brakes { _Pitch = _Pitch - 0.01; } else { _Pitch = -0.1 }; }; case "BACK": { if ((_Pitch) < 1) then // apply more brakes { _Pitch = _Pitch + 0.01; } else { _Pitch = 1; }; }; }; }; // Convert the index factor into a number of degrees _BAngle = 20 * _Bank; _NewBank = _NewBank + 0.015*(_BAngle - _NewBank); _Hdg = _Hdg + 0.0625*_NewBank; _HdgX = sin(_Hdg); // WHEN you are heading 0, this is MINIMUM _HdgY = cos(_Hdg); // when you are heading 0, this is MAXIMUM _NY = sin(_NewBank); _NZ = cos(_NewBank); _PAngle = 20 * _Pitch; _NewPitch = _NewPitch + 0.05*((_PAngle - 6) - _NewPitch); // A six-degree nosedown attitude is induced _DsdFwd = _Speed - 1.75*(_NewPitch); if (_DsdFwd < 1) then {_DsdFwd = 1}; _DsdDescent = _Drop + 0.5*(_NewPitch) - 1.75*abs(_Bank); _Fwd = _Fwd + 0.008*(_DsdFwd - _Fwd); if (_Fwd < 4 AND !_badLand) then {_DsdDescent = _DsdDescent - 2.25*(5 - _Fwd);}; _Descent = _Descent + 0.025*(_DsdDescent - _Descent); _sinP = sin(_NewPitch); _Chute setVectorUp [_HdgY * _NY - _HdgX * _sinP, -_HdgX * _NY - _HdgY * _sinP, _NZ]; _Chute setVectorDir [_HdgX,_HdgY,1]; // Tree or building impact detection: // if player is injured during the last 10m of the fall, slow down descent rate so they don't keep being setVelocity'd into the object and die. Problem: player who is SHOT in this period, will land very weirdly. Still seeking solution to this! if ((_NewDam - _OldDam > 0.0001) AND (position (vehicle player) select 2 < 10) AND !_badLand) then {_badLand = true;}; if (_badLand) then {_Descent = -2.5;_Fwd = 1;}; _Chute setVelocity [_Fwd*_HdgX,_Fwd*_HdgY,_Descent]; _spd = (velocity _chute select 2); // Set colors for hint-dialog: if (_Fwd < 6.5) then { if (_Fwd < 3.5) then { _Col1 = _text_red; } else { if (_Fwd < 4.5) then { _Col1 = _text_ora; } else { _Col1 = _text_yel; }; }; } else { _Col1 = _text_grn; }; if (_Descent < -5.5) then { if (_Descent < -9.5) then { _Col2 = _text_red; } else { if (_Descent < -8) then { _Col2 = _text_ora; } else { _Col2 = _text_yel; }; }; } else { _Col2 = _text_grn; }; //Calculate brakes percentage for hint dialog: _Br = 10*round(10*(_NewPitch + 8)/22); hint parseText ("Altitude (A.G.L.):" + _lineBreak + str(10*round((getpos player select 2)/10)) + _lineBreak + _lineBreak + "Heading:" + _lineBreak + str(round(0.2*(Direction vehicle player))*5) + " degrees, " + ([Direction vehicle player, 8, false] call SPON_directionName) + _lineBreak + _lineBreak + "Ground Speed:" + _lineBreak + _Col1 + str(round(_Fwd)) + " m/s" + _text_normal + _lineBreak + _lineBreak + "Descent Rate:" + _lineBreak + _Col2 + str(-round(_Descent)) + " m/s" + _text_normal + _lineBreak + _lineBreak + "Brakes amount:" + _lineBreak + str(_Br) + " %"); // if player is low, end control and goto chuteDelete! if ((position (vehicle player) select 2) < 1) exitWith {_chute setVelocity [0,0, -1];player setVariable ["ChuteOpen", 3];}; _OldDam = Damage Player; sleep 0.01; _NewDam = Damage Player; }; sleep 0.01; }; }; // Player lands successfully! f_ChuteDelete = { hint " "; player removeWeapon "ACE_ParachutePack"; player setVariable ["ChuteOpen", 0]; _V1 = VectorDir _chute; _V2 = VectorUp _chute; _V3 = getpos _chute; deleteVehicle _chute; player setVelocity [0,0,0]; player setpos [(getpos player select 0),(getpos player select 1),0]; if !(surfaceIsWater (position vehicle player)) then { player switchmove "SprintCivilBaseDf"; player setVehicleInit "this say [""ParaLand"", 50, 1]"; processInitCommands; if (_spd < (-9.5-random 1)) then { player switchmove "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon"; player setDamage (getDammage player + 0.3); [player, "", .76] call ACE_Sys_Wound_HitEH; } else { if (_spd < (-6 - random 1)) then { player switchmove "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon"; player setDamage (getDammage player + 0.25); } else { if (_spd < -3) then { player switchmove "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon"; } else { player switchmove "SprintCivilBaseDf"; sleep 2; player switchmove "AmovPercMevaSnonWnonDfl"; }; }; }; } else { player setVehicleInit "this say [""ParaLandinWater"", 50, 1]"; processInitCommands; }; }; // Player cuts his chute! f_CutChute = { deleteVehicle _chute; player setVelocity [0,0,0]; //player setpos [getpos Player select 0,getpos Player select 1,0]; if ((getpos Player select 2) > 20) then { [player] execVM "AAHALO\Parachute\JumpOut_Cord.sqf"; // NOTE: PLAYER WILL NOT HAVE A PARACHUTE PACK, AND WILL PLUMMET TO THEIR DEATH waitUntil {player getVariable "ChuteOpen" == 0}; player setVariable ["ChuteOpen", 4]; // 4 is "reserve" status } else { waitUntil {(getPos player select 2) < 2}; _vel = Velocity player; player setVelocity [(_vel select 0),(_vel select 1),(_vel select 2)/1.5]; }; }; call f_ChuteMain;/* ACE -- RAS_Parachutes steering script, by Kyle Wilcox aka "Homer Johnston" This script is executed at mission start. It makes the WSAD and U/D/L/R arrow keys set variables which are read in the parachute steering script "Parachute.sqf" ... FUTURE CONSIDERATIONS: Would it be more CPU friendly to only have these keys active when the player is in a chute? Or would a "WaitUntil player in chute" command running in the background take up more CPU instead? */ // Define functions which will be executed whenever keys are pressed DOWN or UP: // Get keys: // MoveForward // MoveBackward // turnLeft // turnRight ACEChute_Lkeys = actionkeys "turnLeft"; ACEChute_Rkeys = actionkeys "turnRight"; ACEChute_Fkeys = actionkeys "moveForward"; ACEChute_Bkeys = actionkeys "moveBack"; ACEChute_SteerDOWN = { _Key = _this select 1; if (_Key in ACEChute_Lkeys) then {ACEChute_Steer = "LEFT";}; if (_Key in ACEChute_Rkeys) then {ACEChute_Steer = "RIGHT";}; }; ACEChute_SteerUP = { _Key = _this select 1; if ((_Key in ACEChute_Lkeys) OR (_Key in ACEChute_Rkeys)) then {ACEChute_Steer = "CENTER";}; }; ACEChute_PitchDOWN = { _Key = _this select 1; if (_Key in ACEChute_Fkeys) then {ACEChute_Pitch = "FORWARD";}; if (_Key in ACEChute_Bkeys) then {ACEChute_Pitch = "BACK";}; }; ACEChute_PitchUP = { _Key = _this select 1; if ((_Key in ACEChute_Fkeys) OR (_Key in ACEChute_BKeys)) then {ACEChute_Pitch = "CENTER";}; }; // Add key handlers for steering, using the above functions ["ACEChute_SteerDOWN","_this call ACEChute_SteerDOWN;"] call S_displayEventHandler_KeyDown_add; ["ACEChute_SteerUP","_this call ACEChute_SteerUP;"] call S_displayEventHandler_KeyUp_add; // Add key handlers for pitch controlling ["ACEChute_PitchDOWN","_this call ACEChute_PitchDOWN;"] call S_displayEventHandler_KeyDown_add; ["ACEChute_PitchUP","_this call ACEChute_PitchUP;"] call S_displayEventHandler_KeyUp_add; /* This script is executed by the "Pull Rip Cord" addAction command, or if the jumper is AI then it is executed automatically by Jumpout_Cord.sqf. Original script by ACE, modified by Kyle Wilcox AKA "Homer Johnston" Feb 2009. */ private ["_jumper", "_vel", "_chute","_chute_object"]; // Argument(s) passed from addAction command or script. 1 = The unit activating the action (jumper). (0 = not used ??? Placeholder?) _jumper = _this select 1; _jumper removeAction (_this select 2); // ChuteOpen variables: track status of chute and determines script running order. 0 = not open ... 1 = open ... 3 = landed ... 2 = cut // Create a parachute near the jumper. if (!isPlayer(_jumper)) then { _chute_object = "Parachute" } else {playsound "ChuteOpen";_chute_object = "RAS_Parachute" }; _chute = _chute_object createVehicle [0,0,0]; _chute setDir getDir _jumper; _chute setPos getPos _jumper; // If jumper is high enough then simulate succesfull full deployment of parachute by moving the jumper into it. if (getPos vehicle _jumper select 2 > 50) then { if !(isPlayer(_jumper)) then { _jumper assignAsDriver _chute; _jumper moveInDriver _chute; } else { _vel = velocity _jumper; if (abs(_vel select 2) > (65 + random 10)) then {[_jumper] execVM "AAHALO\Parachute\Ripcord_DropGear.sqf";}; if (abs(_vel select 2) > (79 + random 10)) then { ACEChute_Unconcious = TRUE; _jumper execVM "AAHALO\Parachute\KnockOut.sqf" } else { ACEChute_Unconcious = FALSE; }; _jumper moveInGunner _chute; _chute setvelocity _vel; [_chute] execVM "AAHALO\Parachute\Parachute.sqf"; }; };private ["_AmountToLose"]; if (random 100 < 25) then // 25% chance of losing gear { [] spawn { sleep 2; if !(player getvariable "ACEChute_Unconcious") then {cutText ["It felt like I might have lost some gear!","Plain Down"];}; }; _jumper = _this select 0; _MustKeep = [ "ACE_VTAC_Rush72", "ACE_FAST_PackEDC", "ACE_CharliePack", "ACE_Rucksack_MOLLE_Wood", "ACE_Rucksack_MOLLE_green_Medic", "ACE_ParachutePack" ]; _Hgt = (Position _jumper select 2); _Mags = magazines _jumper; _Guns = weapons _jumper; _Gear = _Mags + _Guns - _MustKeep; // player sidechat format ["%1",_Gear]; if (count _Gear < 7) then { _AmountToLose = ceil (random count _Gear); } else { _AmountToLose = (2 + ceil (random 4)); // lose up to 6 pieces of gear }; for "_x" from 1 to _AmountToLose do { _i = ceil(random (count _Gear)) - 1; // select a random element from the GEAR array _DropThis = _Gear select _i; // get the name of that element _holder = "weaponholder" createVehicle [(getpos _Jumper select 0) + (Random (_Hgt/5) - _Hgt/10),(getpos _Jumper select 1) + (Random (_Hgt/5) - _Hgt/10), 0.15]; player reveal _holder; if (_DropThis in _Guns) then { _jumper removeWeapon _DropThis; _Gear set [(_Gear find _DropThis), "DELETE"]; // set that element of the gear array to a null value _Gear = _Gear - ["DELETE"]; //delete that null value _holder addWeaponCargo [_dropThis, 1]; } else { _jumper removeMagazine _DropThis; _Gear set [(_Gear find _DropThis), "DELETE"]; _Gear = _Gear - ["DELETE"]; _holder addMagazineCargo [_dropThis, 1]; }; }; };/* This script controls the skydiving player */ private ["_Col1"]; _DivePics = [ "AAHALO\images\para_15b.paa", "AAHALO\images\para_00.paa", "AAHALO\images\para_15.paa", "AAHALO\images\para_30.paa", "AAHALO\images\para_45.paa", "AAHALO\images\para_60.paa", "AAHALO\images\para_75.paa", "AAHALO\images\para_90.paa" ]; _image = ""; _linebreak = "
"; _text_size = ""; _text_normal = ""; _text_yel = ""; _text_ora = ""; _text_red = ""; _text_grn = ""; _jumper = _this; _Weight = (player call ACE_Sys_Stamina_CalculateInventoryWeight); ACEChute_Steer = "CENTER"; ACEChute_Pitch = "CENTER"; _Hdg = getDir _jumper; _DsdHdg = _Hdg; _Pitch = 0; _NewPitch = 0; _Drop = -52 - (_Weight / 1.65); _Fwd = 0; _DsdFwd = 0; _vZ = 0; _DsdvZ = -70; while {!((player getVariable "ChuteOpen") == 1) AND (alive _jumper)} do { switch (ACEChute_Steer) do { case "CENTER": { //player sidechat "center"; }; case "LEFT": { _DsdHdg = _DsdHdg - 2; }; case "RIGHT": { _DsdHdg = _DsdHdg + 2; }; }; _Hdg = _Hdg + 0.015 * (_DsdHdg - _Hdg); _HdgX = sin(_Hdg); // WHEN you are heading 0, this is MINIMUM _HdgY = cos(_Hdg); // when you are heading 0, this is MAXIMUM switch (ACEChute_Pitch) do { /* don't auto-center pitch. Let player control it! case "CENTER": { _Pitch = (_Pitch * 0.999); }; */ case "FORWARD": { if ((_Pitch) < .95) then {_Pitch = _Pitch + 0.01;}; }; case "BACK": { if ((_Pitch) > -.12) then {_Pitch = _Pitch - 0.01;}; }; }; _NewPitch = (_NewPitch + 0.05 * (-_Pitch - _NewPitch)); _DsdVZ = _Drop - 20*sin((180*_NewPitch)-90); if (_DsdVZ < _VZ) then { _VZ = _VZ + 0.003 * (_DsdVZ - _VZ); } else { _VZ = _VZ + 0.0075 * (_DsdVZ - _VZ); }; _DsdFwd = -25 * cos((180*_NewPitch)-90); _Fwd = _Fwd + 0.010 * (_DsdFwd - _Fwd); _sinP = sin(_NewPitch); _jumper setVelocity [(_HdgX*_Fwd), (_HdgY*_Fwd), _VZ]; _jumper setDir _Hdg; _jumper SetVectorUp [_HdgX * (sin(-90*_NewPitch)), _HdgY * (sin(-90*_NewPitch)),cos(-90*_NewPitch)]; _PIndex = Round(7*(-_NewPitch+0.085)); _DivePic = (_DivePics select _PIndex); _Alt = str(20*round((getposASL player select 2)/20)); if (_VZ < -62.5) then { if (_VZ < -79.5) then { _Col1 = _text_red; } else { if (_VZ < -70.5) then { _Col1 = _text_ora; } else { _Col1 = _text_yel; }; }; } else { _Col1 = _text_grn; }; hint parseText ("Altitude (A.S.L.): " + _lineBreak + _Alt + " m" + _lineBreak + _lineBreak + "Heading: " + _lineBreak + str (round(0.2*(Direction _jumper))*5) + " degrees, " + ([getDir vehicle player, 8, false] call SPON_directionName) + _lineBreak + _lineBreak + "Your orientation:" + _lineBreak + format [_text_size, 5] + format[_image, _DivePic] + _text_normal + _lineBreak + "Descent Rate: " + _lineBreak + _Col1 + str (-round(0.5*_VZ)/0.5) + " m/s" + _text_normal); sleep 0.01; };// ----------------------------------------------------------------------------- // Function: SPON_directionName // // Author: Bil Bas (bil dot bagpuss at gmail dot com / Spooner at OFPEC) // Based on an idea by [seven] // // Last Modified: $Date: 2007/10/16 22:02:41 $ // // Version: 0.1.1 // // Description: // Works out the correct name, or abbreviated name, for a direction based on // its angle (provided as degrees clockwise from North or as a 2 or 3 element // vector array). // // Result can be in terms of 4 cardinal directions (N,E,S,W), // 8 directions (including directions like NE), 16 directions (including // directions like NNE) or 32 directions (including directions like NEbE). // // I got the idea for this script from looking at [seven]'s sniper script, // where he calculates information like this (but in a considerably less // generic way). // http://www.ofpec.com/index.php?option=com_smf&Itemid=36&topic=29503.0 // // Parameters: // 0: _angle - Angle to describe [Vector array of 2 or more elements OR // Number: degrees clockwise from North]. // 1: _numDirections - Number of possible directions to name // [Number: 4, 8, 16 or 32 only]. // 2: _abbreviated - True if you want the abbreviated version (NNE), false // if you want the full text (North North-East) [Boolean]. // // Returns: // Descriptive name or abbreviation for direction [String]. // // Usage: // // First, you must precomile the function. // SPON_directionName = compile preprocessFileLineNumbers "SPON_directionName.sqf"; // // // Find out the abbreviated direction name the player is facing. // _visualDirection = [getDir player, 32, true] call SPON_directionName; // // // Find the full direction name that the player is pointing his M4 Aimpoint. // _aimDirection = [player weaponDirection "M4AIM", 32, false] call SPON_directionName; // // // The full direction name of the current wind direction. // _windDirection = [wind, 32, false] call SPON_directionName; // // ChangeLog: // v0.1.1 - Correctly accepts degree values outside range of 0-359. // v0.1.0 - First release at OFPEC. // // ----------------------------------------------------------------------------- private ["_angle", "_directions", "_index"]; _angle = _this select 0; _numDirections = _this select 1; _abbreviated = _this select 2; // Ensure that whatever we have been given, we end up with an angle of 0-360 // degrees clockwise from North. if ((typeName _angle) == "ARRAY") then { // Convert from vector to angle. _angle = (round (((_angle select 0) atan2 (_angle select 1)) + 360)) mod 360; } else{if (_angle < 0) then { // Angle is negative, so convert it to the equivalent positive angle. _angle = 360 - ((-angle) mod 360); } else { // Angle is positive, so make sure it is within the range 0-359. _angle = _angle mod 360; }; }; // Ensure that the number of directions requested is reasonable. if (not (_numDirections in [4, 8, 16, 32])) exitWith { hint "SPON_directionName requires that 4, 8, 16 or 32 directions be specified (parameter index 1)"; nil; // Return value is undefined. }; if (_abbreviated) then { // Abbreviated versions of direction names. _directions = [ "N", "NbE", "NNE", "NEbN", "NE", "NEbE", "ENE", "EbN", "E", "EbS", "ESE", "SEbE", "SE", "SEbS", "SSE", "SbE", "S", "SbW", "SSW", "SWbS", "SW", "SWbW", "WSW", "WbS", "W", "WbN", "WNW", "NWbW", "NW", "NWbN", "NNW", "NbW" ]; } else { // Full versions of direction names. _directions = [ "North", "North by East", "North North-East", "North-East by North", "North-East", "North-East by East", "East North-East", "East by North", "East", "East by South", "East South-East", "South-East by Eeast", "South-East", "South-East by South", "South South-East", "South by East", "South", "South by West", "South South-West", "South-West by South", "South-West", "South-West by West", "West South-West", "West by South", "West", "West by North", "West North-West", "North-West by West", "North-West", "North-West by North", "North North-West", "North by West" ]; }; // Work out which name to use, by calculating the nearest named angle. _index = (round(_angle * _numDirections / 360) * (32 / _numDirections)) mod 32; _directions select _index; // Return. /* This script is NORMALLY executed when you use the "Eject" or "Jump Out" options, and you just happen to be above 10m altitude. I start this mission test by calling this script manually, as if you had used Eject or Jump Out. - Kyle Wilcox aka "Homer Johnston", Feb 09 */ private ["_jumper", "_action"]; _jumper = _this select 0; // If _jumper doesn't have a chute, then they're screwed. Make them play the ACE animation of a falling person, and abort the script. If !(_jumper hasWeapon "ACE_ParachutePack") exitWith {_jumper switchMove "ACE_IC_ParaFail";}; // Otherwise ... keep going... waitUntil {vehicle _jumper == _jumper}; _jumper switchMove "ACE_IC_Para"; _jumper setVariable ["ChuteOpen", 0]; if (_jumper == Player) then { _jumper spawn { //player sidechat "create sound dummies"; _dummy1 = "Logic" createVehicleLocal [(getPos _this select 0),(getPos _this select 1),0]; _dummy2 = "Logic" createVehicleLocal [(getPos _this select 0),(getPos _this select 1),0]; // SPAWN script which relocates dummy sound makers to directly below the player [player,_dummy1,_dummy2] spawn { _player = (_this select 0); while {(vehicle _player == _player) AND (alive Player)} do { _pos = [(getpos Player select 0),(getpos Player select 1),0]; (_this select 1) setPos _pos; (_this select 2) setPos _pos; sleep 0.1; }; // Now player is in a parachute, or dead on the ground sleep 1; deleteVehicle (_this select 1); deleteVehicle (_this select 2); }; // SPAWN script which makes dummy sound makers say the wind sound [player,_dummy1,_dummy2] spawn { _player = (_this select 0); _dummy1 = _this select 1; _dummy2 = _this select 2; _i = 1; while {vehicle _player == _player} do { call compile format ["_dummy%1 say 'SkyDiveWind';",_i]; if (_i == 1) then {_i = 2} else {_i = 1}; sleep 15; }; }; // WAIT until player is in parachute waitUntil {vehicle player != player}; //player sidechat "In a parachute now"; // SPAWN script which makes parachute say chuteflutter player spawn { _player = _this; _chute = vehicle _this; while {vehicle _player == _chute} do { _chute say "ChuteFlutter2"; sleep 10; }; }; }; }; // Check if Human : AI players are too dumb to open their own chutes. Make AI open their chute, or give humans option to open theirs. if (_jumper != player) then { waitUntil {((getPos Vehicle _jumper) select 2) < (300+ random 200)}; ["",_jumper] execVM "AAHALO\Parachute\Ripcord.sqf"; } else { _jumper execVM "AAHALO\Parachute\SkyDive.sqf"; // Wait until player is lower than 1000m ASL, give him option to pull ripcord. waitUntil {((getPosASL Vehicle player) select 2) < 1100}; _action = _jumper addAction [format ["%1 - %2",localize "STR_ACE_EJECT2",actionKeysImages ["Salute", 1]],"AAHALO\Parachute\Ripcord.sqf", [], 4, true, true, "Salute"]; };CutText ["You've been knocked out from excess G-forces.", "BLACK OUT"]; _time = time; _UncTime = 20 + random 90; waitUntil {(vehicle player == player) OR (time > (_time + _UncTime))}; CutText ["You've been knocked out from excess G-forces.", "BLACK IN"]; ACEChute_Unconcious = FALSE; if (vehicle player != player) then // player still in parachute -> has regained conciousness but must be injured. { waitUntil {vehicle player == player}; player setDamage ((Damage player) + 0.25); } else // player has landed but still hasn't regained conciousness -> Transfer them over to the ACE wounded unconciousness system. { sleep 0.25; [player, "", .76] call ACE_Sys_Wound_HitEH; };/* This script is the actual steering algorithm for the parachute. It is called after the player pulls his ripcord (Ripcord.sqf) How it works (sort of): approx. 100 times a second it checks whether the player has a steering key pressed down by the player vehicle variables ACE_ChuteSteer, and ACE_ChutePitch. Holding these keys change the position where the parachute "wants to point" ... the parachute is always moved slowly towards that position. */ private ["_dump","_Fwd","_HdgX","_Fwd","_HdgY","_Drop","_spd","_Weight", "_Col1","_Col2"]; _image = ""; _linebreak = "
"; _text_size = ""; _text_normal = ""; _text_yel = ""; _text_ora = ""; _text_red = ""; _text_grn = ""; // ChuteOpen 0 means there is no chute open // ChuteOpen 1 means the MAIN parachute is open. // ChuteOpen 2 means a chute has been cut -> it will soon be set to 4, or 0 // ChuteOpen 3 means the player has landed -> it will soon be set to 0 // ChuteOpen 4 means the RESERVE parachute is open // THIS is the main "control script" -- everything in this .sqf is executed exactly in the order presented within: f_ChuteMain = { _Weight = (player call ACE_Sys_Stamina_CalculateInventoryWeight); if ((player getVariable "ChuteOpen") == 4) then {cutText ["Reserve parachute open!", "PLAIN DOWN"];player removeWeapon "ACE_ParachutePack" }; player setVariable ["ChuteOpen",1]; _chute = vehicle player; [] call f_ChuteSteer; // start f_Chutesteer loop, and wait til it is done if ((player getVariable "ChuteOpen") == 2) then { [] call f_CutChute } else { [] call f_ChuteDelete }; }; // LOOPED STEERING FUNCTION, 100 times per second f_ChuteSteer = { _Hdg = getDir _chute; _Bank = 0; // DESIRED bank index factor (keys A,D,Left,Right will change this) _NewBank = 0; // ACTUAL bank the chute will be set to. This "follows" _Bank as best it can with a delay, for smoother turns :D _Pitch = 0; _NewPitch = 0; _Speed = 1; // basic velocity magnitude, caused by pitching forwards _Drop = -3 - (_weight/25); // basic descent speed, to be modified later -> -3 for ~80 kg? therefore drop = weight / 25 _badLand = false; // rough landing, i.e. hitting a tree, player will drop to the ground in a gentler manner _Fwd = 6; // start parachute with some flight speed _Descent = 0.333 * ((velocity vehicle player) select 2); // start parachute with some downwards speed _DsdFwd = 12; _DsdDescent = -10; ACEChute_Steer = "CENTER"; ACEChute_Pitch = "CENTER"; while {(player getVariable "ChuteOpen") == 1} do //double loop in case players drop from REALLY high and break ArmA's 10,000 iteration limit of WHILE command { while {(player getVariable "ChuteOpen") == 1} do { if (ACEChute_Unconcious) then { _Bank = (_Bank * 0.99); // Slowly bring the desired bank back to zero, when keys are released _Pitch = (_Pitch * 0.99); } else { switch (ACEChute_Steer) do { case "CENTER": { _Bank = (_Bank * 0.99); // Slowly bring the desired bank back to zero, when keys are released }; case "LEFT": { if ((Abs _Bank) < 1) then {_Bank = _Bank - 0.0175;}; // Slowly move desired bank left. MAX value of -1 or +1 }; case "RIGHT": { if ((Abs _Bank) < 1) then {_Bank = _Bank + 0.0175;}; // Slowly move desired bank right. MAX value of -1 or +1 }; }; switch (ACEChute_Pitch) do { case "CENTER": { _Pitch = (_Pitch -0.2) * 0.99 + 0.2; // Center-pitch is offset to ~20-30% brakes }; case "FORWARD": { if ((_Pitch) > -0.1) then // apply less brakes { _Pitch = _Pitch - 0.01; } else { _Pitch = -0.1 }; }; case "BACK": { if ((_Pitch) < 1) then // apply more brakes { _Pitch = _Pitch + 0.01; } else { _Pitch = 1; }; }; }; }; // Convert the index factor into a number of degrees _BAngle = 20 * _Bank; _NewBank = _NewBank + 0.015*(_BAngle - _NewBank); _Hdg = _Hdg + 0.0625*_NewBank; _HdgX = sin(_Hdg); // WHEN you are heading 0, this is MINIMUM _HdgY = cos(_Hdg); // when you are heading 0, this is MAXIMUM _NY = sin(_NewBank); _NZ = cos(_NewBank); _PAngle = 20 * _Pitch; _NewPitch = _NewPitch + 0.05*((_PAngle - 6) - _NewPitch); // A six-degree nosedown attitude is induced _DsdFwd = _Speed - 1.75*(_NewPitch); if (_DsdFwd < 1) then {_DsdFwd = 1}; _DsdDescent = _Drop + 0.5*(_NewPitch) - 1.75*abs(_Bank); _Fwd = _Fwd + 0.008*(_DsdFwd - _Fwd); if (_Fwd < 4 AND !_badLand) then {_DsdDescent = _DsdDescent - 2.25*(5 - _Fwd);}; _Descent = _Descent + 0.025*(_DsdDescent - _Descent); _sinP = sin(_NewPitch); _Chute setVectorUp [_HdgY * _NY - _HdgX * _sinP, -_HdgX * _NY - _HdgY * _sinP, _NZ]; _Chute setVectorDir [_HdgX,_HdgY,1]; // Tree or building impact detection: // if player is injured during the last 10m of the fall, slow down descent rate so they don't keep being setVelocity'd into the object and die. Problem: player who is SHOT in this period, will land very weirdly. Still seeking solution to this! if ((_NewDam - _OldDam > 0.0001) AND (position (vehicle player) select 2 < 10) AND !_badLand) then {_badLand = true;}; if (_badLand) then {_Descent = -2.5;_Fwd = 1;}; _Chute setVelocity [_Fwd*_HdgX,_Fwd*_HdgY,_Descent]; _spd = (velocity _chute select 2); // Set colors for hint-dialog: if (_Fwd < 6.5) then { if (_Fwd < 3.5) then { _Col1 = _text_red; } else { if (_Fwd < 4.5) then { _Col1 = _text_ora; } else { _Col1 = _text_yel; }; }; } else { _Col1 = _text_grn; }; if (_Descent < -5.5) then { if (_Descent < -9.5) then { _Col2 = _text_red; } else { if (_Descent < -8) then { _Col2 = _text_ora; } else { _Col2 = _text_yel; }; }; } else { _Col2 = _text_grn; }; //Calculate brakes percentage for hint dialog: _Br = 10*round(10*(_NewPitch + 8)/22); hint parseText ("Altitude (A.G.L.):" + _lineBreak + str(10*round((getpos player select 2)/10)) + _lineBreak + _lineBreak + "Heading:" + _lineBreak + str(round(0.2*(Direction vehicle player))*5) + " degrees, " + ([Direction vehicle player, 8, false] call SPON_directionName) + _lineBreak + _lineBreak + "Ground Speed:" + _lineBreak + _Col1 + str(round(_Fwd)) + " m/s" + _text_normal + _lineBreak + _lineBreak + "Descent Rate:" + _lineBreak + _Col2 + str(-round(_Descent)) + " m/s" + _text_normal + _lineBreak + _lineBreak + "Brakes amount:" + _lineBreak + str(_Br) + " %"); // if player is low, end control and goto chuteDelete! if ((position (vehicle player) select 2) < 1) exitWith {_chute setVelocity [0,0, -1];player setVariable ["ChuteOpen", 3];}; _OldDam = Damage Player; sleep 0.01; _NewDam = Damage Player; }; sleep 0.01; }; }; // Player lands successfully! f_ChuteDelete = { hint " "; player removeWeapon "ACE_ParachutePack"; player setVariable ["ChuteOpen", 0]; _V1 = VectorDir _chute; _V2 = VectorUp _chute; _V3 = getpos _chute; deleteVehicle _chute; player setVelocity [0,0,0]; player setpos [(getpos player select 0),(getpos player select 1),0]; if !(surfaceIsWater (position vehicle player)) then { player switchmove "SprintCivilBaseDf"; player setVehicleInit "this say [""ParaLand"", 50, 1]"; processInitCommands; if (_spd < (-9.5-random 1)) then { player switchmove "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon"; player setDamage (getDammage player + 0.3); [player, "", .76] call ACE_Sys_Wound_HitEH; } else { if (_spd < (-6 - random 1)) then { player switchmove "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon"; player setDamage (getDammage player + 0.25); } else { if (_spd < -3) then { player switchmove "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon"; } else { player switchmove "SprintCivilBaseDf"; sleep 2; player switchmove "AmovPercMevaSnonWnonDfl"; }; }; }; } else { player setVehicleInit "this say [""ParaLandinWater"", 50, 1]"; processInitCommands; }; }; // Player cuts his chute! f_CutChute = { deleteVehicle _chute; player setVelocity [0,0,0]; //player setpos [getpos Player select 0,getpos Player select 1,0]; if ((getpos Player select 2) > 20) then { [player] execVM "AAHALO\Parachute\JumpOut_Cord.sqf"; // NOTE: PLAYER WILL NOT HAVE A PARACHUTE PACK, AND WILL PLUMMET TO THEIR DEATH waitUntil {player getVariable "ChuteOpen" == 0}; player setVariable ["ChuteOpen", 4]; // 4 is "reserve" status } else { waitUntil {(getPos player select 2) < 2}; _vel = Velocity player; player setVelocity [(_vel select 0),(_vel select 1),(_vel select 2)/1.5]; }; }; call f_ChuteMain;/* ACE -- RAS_Parachutes steering script, by Kyle Wilcox aka "Homer Johnston" This script is executed at mission start. It makes the WSAD and U/D/L/R arrow keys set variables which are read in the parachute steering script "Parachute.sqf" ... FUTURE CONSIDERATIONS: Would it be more CPU friendly to only have these keys active when the player is in a chute? Or would a "WaitUntil player in chute" command running in the background take up more CPU instead? */ // Define functions which will be executed whenever keys are pressed DOWN or UP: // Get keys: // MoveForward // MoveBackward // turnLeft // turnRight ACEChute_Lkeys = actionkeys "turnLeft"; ACEChute_Rkeys = actionkeys "turnRight"; ACEChute_Fkeys = actionkeys "moveForward"; ACEChute_Bkeys = actionkeys "moveBack"; ACEChute_SteerDOWN = { _Key = _this select 1; if (_Key in ACEChute_Lkeys) then {ACEChute_Steer = "LEFT";}; if (_Key in ACEChute_Rkeys) then {ACEChute_Steer = "RIGHT";}; }; ACEChute_SteerUP = { _Key = _this select 1; if ((_Key in ACEChute_Lkeys) OR (_Key in ACEChute_Rkeys)) then {ACEChute_Steer = "CENTER";}; }; ACEChute_PitchDOWN = { _Key = _this select 1; if (_Key in ACEChute_Fkeys) then {ACEChute_Pitch = "FORWARD";}; if (_Key in ACEChute_Bkeys) then {ACEChute_Pitch = "BACK";}; }; ACEChute_PitchUP = { _Key = _this select 1; if ((_Key in ACEChute_Fkeys) OR (_Key in ACEChute_BKeys)) then {ACEChute_Pitch = "CENTER";}; }; // Add key handlers for steering, using the above functions ["ACEChute_SteerDOWN","_this call ACEChute_SteerDOWN;"] call S_displayEventHandler_KeyDown_add; ["ACEChute_SteerUP","_this call ACEChute_SteerUP;"] call S_displayEventHandler_KeyUp_add; // Add key handlers for pitch controlling ["ACEChute_PitchDOWN","_this call ACEChute_PitchDOWN;"] call S_displayEventHandler_KeyDown_add; ["ACEChute_PitchUP","_this call ACEChute_PitchUP;"] call S_displayEventHandler_KeyUp_add; /* This script is executed by the "Pull Rip Cord" addAction command, or if the jumper is AI then it is executed automatically by Jumpout_Cord.sqf. Original script by ACE, modified by Kyle Wilcox AKA "Homer Johnston" Feb 2009. */ private ["_jumper", "_vel", "_chute","_chute_object"]; // Argument(s) passed from addAction command or script. 1 = The unit activating the action (jumper). (0 = not used ??? Placeholder?) _jumper = _this select 1; _jumper removeAction (_this select 2); // ChuteOpen variables: track status of chute and determines script running order. 0 = not open ... 1 = open ... 3 = landed ... 2 = cut // Create a parachute near the jumper. if (!isPlayer(_jumper)) then { _chute_object = "Parachute" } else {playsound "ChuteOpen";_chute_object = "RAS_Parachute" }; _chute = _chute_object createVehicle [0,0,0]; _chute setDir getDir _jumper; _chute setPos getPos _jumper; // If jumper is high enough then simulate succesfull full deployment of parachute by moving the jumper into it. if (getPos vehicle _jumper select 2 > 50) then { if !(isPlayer(_jumper)) then { _jumper assignAsDriver _chute; _jumper moveInDriver _chute; } else { _vel = velocity _jumper; if (abs(_vel select 2) > (65 + random 10)) then {[_jumper] execVM "AAHALO\Parachute\Ripcord_DropGear.sqf";}; if (abs(_vel select 2) > (79 + random 10)) then { ACEChute_Unconcious = TRUE; _jumper execVM "AAHALO\Parachute\KnockOut.sqf" } else { ACEChute_Unconcious = FALSE; }; _jumper moveInGunner _chute; _chute setvelocity _vel; [_chute] execVM "AAHALO\Parachute\Parachute.sqf"; }; };private ["_AmountToLose"]; if (random 100 < 25) then // 25% chance of losing gear { [] spawn { sleep 2; if !(player getvariable "ACEChute_Unconcious") then {cutText ["It felt like I might have lost some gear!","Plain Down"];}; }; _jumper = _this select 0; _MustKeep = [ "ACE_VTAC_Rush72", "ACE_FAST_PackEDC", "ACE_CharliePack", "ACE_Rucksack_MOLLE_Wood", "ACE_Rucksack_MOLLE_green_Medic", "ACE_ParachutePack" ]; _Hgt = (Position _jumper select 2); _Mags = magazines _jumper; _Guns = weapons _jumper; _Gear = _Mags + _Guns - _MustKeep; // player sidechat format ["%1",_Gear]; if (count _Gear < 7) then { _AmountToLose = ceil (random count _Gear); } else { _AmountToLose = (2 + ceil (random 4)); // lose up to 6 pieces of gear }; for "_x" from 1 to _AmountToLose do { _i = ceil(random (count _Gear)) - 1; // select a random element from the GEAR array _DropThis = _Gear select _i; // get the name of that element _holder = "weaponholder" createVehicle [(getpos _Jumper select 0) + (Random (_Hgt/5) - _Hgt/10),(getpos _Jumper select 1) + (Random (_Hgt/5) - _Hgt/10), 0.15]; player reveal _holder; if (_DropThis in _Guns) then { _jumper removeWeapon _DropThis; _Gear set [(_Gear find _DropThis), "DELETE"]; // set that element of the gear array to a null value _Gear = _Gear - ["DELETE"]; //delete that null value _holder addWeaponCargo [_dropThis, 1]; } else { _jumper removeMagazine _DropThis; _Gear set [(_Gear find _DropThis), "DELETE"]; _Gear = _Gear - ["DELETE"]; _holder addMagazineCargo [_dropThis, 1]; }; }; };/* This script controls the skydiving player */ private ["_Col1"]; _DivePics = [ "images\para_15b.paa", "images\para_00.paa", "images\para_15.paa", "images\para_30.paa", "images\para_45.paa", "images\para_60.paa", "images\para_75.paa", "images\para_90.paa" ]; _image = ""; _linebreak = "
"; _text_size = ""; _text_normal = ""; _text_yel = ""; _text_ora = ""; _text_red = ""; _text_grn = ""; _jumper = _this; _Weight = (player call ACE_Sys_Stamina_CalculateInventoryWeight); ACEChute_Steer = "CENTER"; ACEChute_Pitch = "CENTER"; _Hdg = getDir _jumper; _DsdHdg = _Hdg; _Pitch = 0; _NewPitch = 0; _Drop = -52 - (_Weight / 1.65); _Fwd = 0; _DsdFwd = 0; _vZ = 0; _DsdvZ = -70; while {!((player getVariable "ChuteOpen") == 1) AND (alive _jumper)} do { switch (ACEChute_Steer) do { case "CENTER": { //player sidechat "center"; }; case "LEFT": { _DsdHdg = _DsdHdg - 2; }; case "RIGHT": { _DsdHdg = _DsdHdg + 2; }; }; _Hdg = _Hdg + 0.015 * (_DsdHdg - _Hdg); _HdgX = sin(_Hdg); // WHEN you are heading 0, this is MINIMUM _HdgY = cos(_Hdg); // when you are heading 0, this is MAXIMUM switch (ACEChute_Pitch) do { /* don't auto-center pitch. Let player control it! case "CENTER": { _Pitch = (_Pitch * 0.999); }; */ case "FORWARD": { if ((_Pitch) < .95) then {_Pitch = _Pitch + 0.01;}; }; case "BACK": { if ((_Pitch) > -.12) then {_Pitch = _Pitch - 0.01;}; }; }; _NewPitch = (_NewPitch + 0.05 * (-_Pitch - _NewPitch)); _DsdVZ = _Drop - 20*sin((180*_NewPitch)-90); if (_DsdVZ < _VZ) then { _VZ = _VZ + 0.003 * (_DsdVZ - _VZ); } else { _VZ = _VZ + 0.0075 * (_DsdVZ - _VZ); }; _DsdFwd = -25 * cos((180*_NewPitch)-90); _Fwd = _Fwd + 0.010 * (_DsdFwd - _Fwd); _sinP = sin(_NewPitch); _jumper setVelocity [(_HdgX*_Fwd), (_HdgY*_Fwd), _VZ]; _jumper setDir _Hdg; _jumper SetVectorUp [_HdgX * (sin(-90*_NewPitch)), _HdgY * (sin(-90*_NewPitch)),cos(-90*_NewPitch)]; _PIndex = Round(7*(-_NewPitch+0.085)); _DivePic = (_DivePics select _PIndex); _Alt = str(20*round((getposASL player select 2)/20)); if (_VZ < -62.5) then { if (_VZ < -79.5) then { _Col1 = _text_red; } else { if (_VZ < -70.5) then { _Col1 = _text_ora; } else { _Col1 = _text_yel; }; }; } else { _Col1 = _text_grn; }; hint parseText ("Altitude (A.S.L.): " + _lineBreak + _Alt + " m" + _lineBreak + _lineBreak + "Heading: " + _lineBreak + str (round(0.2*(Direction _jumper))*5) + " degrees, " + ([getDir vehicle player, 8, false] call SPON_directionName) + _lineBreak + _lineBreak + "Your orientation:" + _lineBreak + format [_text_size, 5] + format[_image, _DivePic] + _text_normal + _lineBreak + "Descent Rate: " + _lineBreak + _Col1 + str (-round(0.5*_VZ)/0.5) + " m/s" + _text_normal); sleep 0.01; };// ----------------------------------------------------------------------------- // Function: SPON_directionName // // Author: Bil Bas (bil dot bagpuss at gmail dot com / Spooner at OFPEC) // Based on an idea by [seven] // // Last Modified: $Date: 2007/10/16 22:02:41 $ // // Version: 0.1.1 // // Description: // Works out the correct name, or abbreviated name, for a direction based on // its angle (provided as degrees clockwise from North or as a 2 or 3 element // vector array). // // Result can be in terms of 4 cardinal directions (N,E,S,W), // 8 directions (including directions like NE), 16 directions (including // directions like NNE) or 32 directions (including directions like NEbE). // // I got the idea for this script from looking at [seven]'s sniper script, // where he calculates information like this (but in a considerably less // generic way). // http://www.ofpec.com/index.php?option=com_smf&Itemid=36&topic=29503.0 // // Parameters: // 0: _angle - Angle to describe [Vector array of 2 or more elements OR // Number: degrees clockwise from North]. // 1: _numDirections - Number of possible directions to name // [Number: 4, 8, 16 or 32 only]. // 2: _abbreviated - True if you want the abbreviated version (NNE), false // if you want the full text (North North-East) [Boolean]. // // Returns: // Descriptive name or abbreviation for direction [String]. // // Usage: // // First, you must precomile the function. // SPON_directionName = compile preprocessFileLineNumbers "SPON_directionName.sqf"; // // // Find out the abbreviated direction name the player is facing. // _visualDirection = [getDir player, 32, true] call SPON_directionName; // // // Find the full direction name that the player is pointing his M4 Aimpoint. // _aimDirection = [player weaponDirection "M4AIM", 32, false] call SPON_directionName; // // // The full direction name of the current wind direction. // _windDirection = [wind, 32, false] call SPON_directionName; // // ChangeLog: // v0.1.1 - Correctly accepts degree values outside range of 0-359. // v0.1.0 - First release at OFPEC. // // ----------------------------------------------------------------------------- private ["_angle", "_directions", "_index"]; _angle = _this select 0; _numDirections = _this select 1; _abbreviated = _this select 2; // Ensure that whatever we have been given, we end up with an angle of 0-360 // degrees clockwise from North. if ((typeName _angle) == "ARRAY") then { // Convert from vector to angle. _angle = (round (((_angle select 0) atan2 (_angle select 1)) + 360)) mod 360; } else{if (_angle < 0) then { // Angle is negative, so convert it to the equivalent positive angle. _angle = 360 - ((-angle) mod 360); } else { // Angle is positive, so make sure it is within the range 0-359. _angle = _angle mod 360; }; }; // Ensure that the number of directions requested is reasonable. if (not (_numDirections in [4, 8, 16, 32])) exitWith { hint "SPON_directionName requires that 4, 8, 16 or 32 directions be specified (parameter index 1)"; nil; // Return value is undefined. }; if (_abbreviated) then { // Abbreviated versions of direction names. _directions = [ "N", "NbE", "NNE", "NEbN", "NE", "NEbE", "ENE", "EbN", "E", "EbS", "ESE", "SEbE", "SE", "SEbS", "SSE", "SbE", "S", "SbW", "SSW", "SWbS", "SW", "SWbW", "WSW", "WbS", "W", "WbN", "WNW", "NWbW", "NW", "NWbN", "NNW", "NbW" ]; } else { // Full versions of direction names. _directions = [ "North", "North by East", "North North-East", "North-East by North", "North-East", "North-East by East", "East North-East", "East by North", "East", "East by South", "East South-East", "South-East by Eeast", "South-East", "South-East by South", "South South-East", "South by East", "South", "South by West", "South South-West", "South-West by South", "South-West", "South-West by West", "West South-West", "West by South", "West", "West by North", "West North-West", "North-West by West", "North-West", "North-West by North", "North North-West", "North by West" ]; }; // Work out which name to use, by calculating the nearest named angle. _index = (round(_angle * _numDirections / 360) * (32 / _numDirections)) mod 32; _directions select _index; // Return. if (!isServer) exitWith {}; while{true} do { //Count the number of living WEST soldiers on map (only players are WEST) _Trg1 = createTrigger ["EmptyDetector", getPos DropAreaGL]; _Trg1 setTriggerActivation ["WEST","PRESENT", false]; _Trg1 setTriggerArea [100,100,0,true]; _Trg1 setTriggerType "switch"; _Trg1 setTriggerStatements ["this", "",""]; _Trg1 setTriggerTimeout [0,0,0, false]; sleep 2.5; _pList = list _Trg1; _Alive = []; {{if ((alive _x) AND (isPlayer _x)) then {_Alive = _Alive + [_x]}} foreach crew _x} foreach _pList; _Total = count _Alive; deletevehicle _Trg1; //_Total = playersNumber WEST; //Count the number of people in the mission-completion area _Trg2 = createTrigger ["EmptyDetector", getPos DropAreaGL]; _Trg2 setTriggerActivation ["WEST","PRESENT", false]; _Trg2 setTriggerArea [11.25,30,0,false]; _Trg2 setTriggerType "switch"; _Trg2 setTriggerStatements ["this", "", ""]; _Trg2 setTriggerTimeout [0,0,0, false]; sleep 2.5; _pList = list _Trg2; _Alive = []; {{if ((alive _x) AND (isPlayer _x)) then {_Alive = _Alive + [_x]}} foreach crew _x} foreach _pList; if (count _Alive == _Total) exitWith { PlayersReady = true; }; deletevehicle _Trg2; sleep 1; }; sleep 60; for "_i" from 1 to 12 do { call compile format ["deleteVehicle baseObj%1",_i]; sleep 1; };if (isNull(Player)) exitWith {}; private ["_Plane","_Unit"]; cutText ["TEN SECONDS TO DROP! GET READY!","PLAIN"]; _DropTime = time; for "_i" from 0 to ((count DropInstructions) - 1) do { // This should now be looking at each PLANE'S array ... _PlaneArray = DropInstructions select _i; for "_j" from 0 to ((count _PlaneArray) - 1) do { // This should now be looking at each SOLDIER'S array ... WHO, WHEN, WHERE _UnitArray = _PlaneArray select _j; if ((_UnitArray select 0) == player) then {_Plane = _i;_Unit = _j}; }; }; // Retrieve wait-time, drop-position _Instruct = ((DropInstructions) select _Plane) select _Unit; _Wait = _Instruct select 1; _Pos = _Instruct select 2; _Pos execVM "AAHALO\ParaDrop\MakeClouds.sqf"; execVM "scripts\Map\HideBISMap.sqf"; while {!(vehicle player iskindof "man")} do { waitUntil {(time - _DropTime) > _Wait}; disableUserInput TRUE; // For some reason, if the player is holding W when they drop, they will get tired and "pass out" during the descent. This prevents that. player action ["GETOUT",vehicle player]; waitUntil {vehicle player iskindof "man"}; disableUserInput FALSE; player setPos _Pos; player setDir (random 360); player setVelocity [0,0,0]; }; // Now player is airborne!! Start the parachute scripts and some mission Special FX scripts on them: [player] execVM "AAHALO\Parachute\JumpOut_Cord.sqf"; execVM "AAHALO\ParaDrop\SkyDive_ViewDistance.sqf"; execVM "Scripts\TracerControl.sqf"; execVM "Scripts\AmbienceSiren.sqf";waitUntil {PlayersReady}; LoadUp = true; publicVariable "LoadUp"; sleep 30; // A long wait, to make sure everyone gets loaded. I SHOULD do some sort of checking-code, but it's too much of a pain in the ass. // Now server will assign drop times and positions based on who is in the choppers on a person-by-person basis, store all this in an array that's the size of the moon, and broadcast that array. Clients will take care of the rest. _planes = [Chin1,Chin2,Chin3]; _dropzones = [DZ1,DZ2,DZ3]; _Units = (crew chin1) + (crew chin2) + (crew chin3); DropInstructions = []; _TimeOffset = 10; // Warning time to give players that the drop is near while {count _Units > 0} do { _Man = _Units select 0; _plane = vehicle _Man; _Group = crew _Plane; _DZIndex = _planes find _plane; _DZ = _dropzones select _DZIndex; _FlightDir = (getDir _DZ) - 5 + random 10; _DZStart = [((getpos _DZ) select 0) - 200 + random 400, ((getpos _DZ) select 1) - 200 + random 400]; _GroupInstruct = []; for "_i" from 0 to ((Count _Group)-1) do { _space = 100 + random 50; _jumper = _Group select _i; _jumpPosX = (_DZStart select 0) + (_i * _space * sin (_FlightDir)) - 30 + random 60; _jumpPosY = (_DZStart select 1) + (_i * _space * cos (_FlightDir)) - 30 + random 60; _JumperInstruct = [_jumper,_TimeOffset,[_jumpPosX,_jumpPosY,4000]]; // WHO, WHEN, WHERE _GroupInstruct = _GroupInstruct + [_JumperInstruct]; _Units = _Units - [_jumper]; _TimeOffset = _TimeOffset + 0.5; sleep 0.5; }; DropInstructions = DropInstructions + [_GroupInstruct]; sleep 0.5; }; publicVariable "DropInstructions"; sleep 5; // Length of time players sit waiting in the airplanes StartDrop = true; publicVariable "StartDrop"; sleep 90; [ZEast, (getMarkerPos "Center"), [2700,2600], 0, 1, 1] call DAC_fChangeZone; sleep 10; [ZNorth, (getMarkerPos "Center"), [2700,2600], 0, 1, 1] call DAC_fChangeZone; sleep 10; [ZCenter, (getMarkerPos "Center"), [2700,2600], 0, 1, 1] call DAC_fChangeZone; execVM "scripts\Choppers.sqf"; sleep 30; {deletevehicle _x} foreach [chin1,chin2,chin3];// This script makes the chinooks stay in the middle of nowheres in the air. _Pos = [[0,0,4000],[500,500,4000],[1000,1000,4000]]; _Chins = [Chin1,Chin2,Chin3]; while {!isNil(str Chin1)} do { for "_i" from 0 to 2 do { (_Chins select _i) setpos (_Pos select _i); (_Chins select _i) setVelocity [0,0,0]; (_Chins select _i) setDir 0; (_Chins select _i) setVectorUp [0,0,1]; }; sleep 0.01; };_planes = [Chin1,Chin1,Chin2,Chin2,Chin3,Chin3]; _groups = [GrpBLU_1Plt_Alpha,GrpBLU_1Plt_Bravo,GrpBLU_1Plt_Charlie,GrpBLU_1Plt_Delta,GrpBLU_1Plt_Echo,GrpBLU_1Plt_Foxtrot]; //player sidechat "LoadUp.sqf"; if !(IsNull(Player)) then // THEN THIS IS ON A PLAYER'S PC! { sleep 0.5; CutText ["A few hours later, you're en-route to the dropzone...","BLACK OUT"]; sleep 1.5; while {vehicle Player isKindOf "man"} do { _grp = group Player; Player AssignAsCargo (_Planes select (_Groups find (_grp))); Player moveInCargo (_Planes select (_Groups find (_grp))); sleep 0.01; }; Player addWeapon "ACE_ParachutePack"; [] spawn { while {player != (leader group player)} do { [player] JoinSilent GrpNull; sleep 2 + random 4; }; }; 2.5 spawn { while {vehicle Player != player} do { vehicle Player say "PlaneFly"; sleep _this; }; }; }; if (isServer) then { { if !(isPlayer _x) then { deleteVehicle _x; }; sleep 0.01; } foreach (units GrpBLU_1Plt_Alpha + units GrpBLU_1Plt_Bravo + units GrpBLU_1Plt_Charlie + units GrpBLU_1Plt_Delta + units GrpBLU_1Plt_Echo + units GrpBLU_1Plt_Foxtrot); }; sleep 5; TitleText [" ","BLACK IN"]; cutText ["Your plane is only a few kilometers off-shore.","PLAIN"];_Clouds = "Logic" createVehicleLocal [(_this select 0),(_this select 1),0]; _Clouds setVectorUp [0,0,1]; _cloudHeight = 600; // loose, HIGH clouds, so player doesn't notice those damn stars as much. for "_i" from 1 to 1500 do { drop ["\ca\data\cl_basic.p3d", "", "Billboard", 1, 150, [- 3000 + random 6000,- 3000 + random 6000,2500 + random 800], [random 0.1,random 0.1,random 0.5], 1, 0.005, 0.0042, 0.7, [200+random 100,300+random 100,200 + random 100], [[0.5,0.5,0.5,0],[0.7,0.7,0.7,0.5],[0.9,0.9,0.9,0]], [0,1,0,1,0,1], 0.2, 0.2, "", "", _Clouds]; sleep 0.0001; }; waitUntil {getpos (vehicle player) select 2 > _cloudHeight}; // Dense LOW clouds, that keep generating until player is below their height. while {getpos (vehicle player) select 2 > _cloudHeight} do { drop ["\ca\data\cl_basic.p3d", "", "Billboard", 1, 45, [- 3000 + random 6000,- 3000 + random 6000,_cloudHeight + random 200], [random 0.1,random 0.1,random 0.5], 1, 0.005, 0.0042, 0.7, [200+random 100,300+random 100,200 + random 100], [[0.5,0.5,0.5,0],[0.7,0.7,0.7,1],[0.9,0.9,0.9,0]], [0,1,0,1,0,1], 0.2, 0.2, "", "", _Clouds]; sleep 0.05; }; 5 setOvercast 0.5;_VD = 2500; while {_VD < 4999} do { setViewDistance _VD; _VD = _VD + 200; sleep 0.5; }; waitUntil {((getPos (vehicle player)) select 2) < 2000}; while {(((getPos (vehicle player)) select 2) > 25)} do { _VD = 5000-1*(((getpos Player select 2)-2000)^2/2000); setviewDistance _VD; sleep 0.25; };if (isNull(Player)) exitWith {}; player addWeapon "ACE_ParachutePack"; // Retrieve wait-time, drop-position //player setpos [ getPos player select 0, getPos player select 1, (getPos player select 2) +2000]; _Pos = [ getPos player select 0, getPos player select 1, getPos player select 2]; _Pos execVM "AAHALO\ParaDrop\MakeClouds.sqf"; //execVM "scripts\HideBISMap.sqf"; while {!(vehicle player iskindof "man")} do { waitUntil {(time - _DropTime) > _Wait}; disableUserInput TRUE; // For some reason, if the player is holding W when they drop, they will get tired and "pass out" during the descent. This prevents that. player action ["GETOUT",vehicle player]; waitUntil {vehicle player iskindof "man"}; disableUserInput FALSE; player setPos _Pos; player setDir (random 360); player setVelocity [0,0,0]; }; // Now player is airborne!! Start the parachute scripts and some mission Special FX scripts on them: [player] execVM "AAHALO\Parachute\JumpOut_Cord.sqf"; execVM "AAHALO\ParaDrop\SkyDive_ViewDistance.sqf"; if (isNull(Player)) exitWith {}; //player addWeapon "ACE_ParachutePack"; // Retrieve wait-time, drop-position //player setpos [ getPos player select 0, getPos player select 1, (getPos player select 2) +2000]; //hint "start.sqf"; //playsound "BIS_HALO_Flapping" player setVelocity [0,0,0]; [player] exec "ca\air2\halo\data\Scripts\HALO.sqs"; _Pos = [ getPos player select 0, getPos player select 1, getPos player select 2]; _Pos execVM "AAHALO\ParaDrop\MakeClouds.sqf"; //execVM "scripts\HideBISMap.sqf"; /* while {!(vehicle player iskindof "man")} do { waitUntil {(time - _DropTime) > _Wait}; disableUserInput TRUE; // For some reason, if the player is holding W when they drop, they will get tired and "pass out" during the descent. This prevents that. player action ["GETOUT",vehicle player]; waitUntil {vehicle player iskindof "man"}; disableUserInput FALSE; player setPos _Pos; player setDir (random 360); player setVelocity [0,0,0]; }; */ // Now player is airborne!! Start the parachute scripts and some mission Special FX scripts on them: //[player] execVM "AAHALO\Parachute\JumpOut_Cord.sqf"; //execVM "AAHALO\ParaDrop\SkyDive_ViewDistance.sqf"; agressive = true ; publicvariable "agressive" ; If (true) ExitWith {}if (local serveur) then { deletevehicle cible_artill ; cible_artill = "HeliHempty" createVehicle position cible ; // on vrifie si la cible est assez loin de l'objectif et si l'artillerie ennemie est disponible : pas la peine d'atomiser l'objectif ;) if (((cible_artill distance objectif) > 300) and (arty_eni_dispo)) then { // on dclenche l'enfer ^^ : 4 sries de 4 coups. J'utilise la munition Sh_105_HE plutt que Bo_GBU12_LGB qui dtruit tout... arty_eni_dispo = false ; publicvariable "arty_eni_dispo"; sleep (15 + (random 5)); // les fumis for[{_i=0},{_i<=2},{_i=_i+1}] do { fumi= "SmokeShellRed" createVehicle [(getpos cible_artill select 0)+((random 200)-(random 200)), (getpos cible_artill select 1)+((random 200)-(random 200)),350] ; sleep (random 1); }; sleep 40 ; // l'enfer ;) for[{_i=0},{_i<=4},{_i=_i+1}] do { for[{_e=0},{_e<=4},{_e=_e+1}] do { sifflement = true ; publicvariable "sifflement"; sleep 1.5; bomb= "Sh_105_HE" createVehicle [(getpos cible_artill select 0)+((random 200)-(random 200)), (getpos cible_artill select 1)+((random 200)-(random 200)),0] ; sleep (random 1); }; sleep 5 ; }; // On calme le jeu pendant environ trois minutes sleep 200 ; arty_eni_dispo = true ; publicvariable "arty_eni_dispo"; }; }; If (true) ExitWith {}if (local serveur) then { base = false ; publicvariable "base"; if (mat_eni == 1) then { for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _i = round (random 12); if ((_i > 2) and (_i <= 4)) then { [_e] spawn mat_meca_transport ; }; if ((_i > 4) and (_i <= 6)) then { [_e] spawn mat_blinde_attaque ; }; if ((_i > 6) and (_i <= 7)) then { [_e] spawn mat_helico_transport ; }; if ((_i > 7) and (_i <= 10)) then { [_e] spawn mat_moto_jeep ; }; sleep 0.2 ; }; }; // infanterie motorisée if (mat_eni == 2) then { for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _i = round (random 100); if ((_i > 10) and (_i <= 60)) then { // jeeps et assimilés [_e] spawn mat_moto_jeep ; }; if ((_i > 60) and (_i <= 90)) then { // camions transport [_e] spawn mat_moto_camion ; }; if ((_i > 90) and (_i <= 100)) then { // hélicos de transport [_e] spawn mat_helico_transport ; }; }; }; // infanterie méca if (mat_eni == 3) then { for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _i = round (random 100); if ((_i > 10) and (_i <= 60)) then { // transport blindé infanterie [_e] spawn mat_meca_transport ; }; if ((_i > 60) and (_i <= 90)) then { // véhicule meca d'attaque [_e] spawn mat_meca_attaque ; }; if ((_i > 90) and (_i <= 100)) then { // hélicos de transport [_e] spawn mat_helico_transport ; }; }; }; // infanterie méca / blindés if (mat_eni == 4) then { for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _i = round (random 100); if ((_i > 10) and (_i <= 60)) then { // transport blindé infanterie [_e] spawn mat_meca_transport ; }; if ((_i > 60) and (_i <= 90)) then { // chars d'assaut [_e] spawn mat_blinde_attaque ; }; if ((_i > 90) and (_i <= 100)) then { // hélicos d'attaque [_e] spawn mat_air_attaque ; }; }; }; // On autorise le lancement de la base matérielle base2 = true; publicvariable "base2"; } ; If (true) ExitWith {}if (local serveur) then { // spawn de la classe 1 if (code_classe1 != "0") then { for[{_i=1},{_i<=var_classe1},{_i=_i+1}] do { call compile format["vw1%1 = code_classe1 createvehicle [(destination2_x)+place_classe1, (destination2_y)+20,0] ;",_i]; place_classe1 = place_classe1 + 7 ; }; }; sleep 0.5 ; if (code_classe2 != "0") then { for[{_i=1},{_i<=var_classe2},{_i=_i+1}] do { call compile format["vw2%1 = code_classe2 createvehicle [(destination2_x)+place_classe2, (destination2_y),0] ;",_i]; place_classe2 = place_classe2 + 7 ; }; }; sleep 0.5 ; if (code_classe3 != "0") then { for[{_i=1},{_i<=var_classe3},{_i=_i+1}] do { call compile format["vw3%1 = code_classe3 createvehicle [(destination2_x)+place_classe3, (destination2_y)-20,0] ;",_i]; place_classe3 = place_classe3 + 7 ; }; }; sleep 0.5 ; if (code_classe4 != "0") then { for[{_i=1},{_i<=var_classe4},{_i=_i+1}] do { call compile format["vw4%1 = code_classe4 createvehicle [(destination2_x)+place_classe1, (destination2_y)+20,0] ;",_i]; place_classe1 = place_classe1 + 7 ; }; }; sleep 0.5 ; if (code_classe5 != "0") then { for[{_i=1},{_i<=var_classe5},{_i=_i+1}] do { call compile format["vw5%1 = code_classe5 createvehicle [(destination2_x)+place_classe2, (destination2_y),0] ;",_i]; place_classe2 = place_classe2 + 7 ; }; }; sleep 0.5 ; if (code_classe6 != "0") then { for[{_i=1},{_i<=var_classe6},{_i=_i+1}] do { call compile format["vw6%1 = code_classe6 createvehicle [(destination2_x)-place_classe6, (destination2_y)+20,0] ;",_i]; place_classe6 = place_classe6 - 14 ; }; }; sleep 0.5 ; if (code_classe7 != "0") then { for[{_i=1},{_i<=var_classe7},{_i=_i+1}] do { call compile format["vw7%1 = code_classe7 createvehicle [(destination2_x)-place_classe7, (destination2_y),0] ;",_i]; place_classe7 = place_classe7 - 14 ; }; }; sleep 0.5 ; if (code_classe8 != "0") then { for[{_i=1},{_i<=var_classe8},{_i=_i+1}] do { call compile format["vw8%1 = code_classe8 createvehicle [(destination2_x)-place_classe8, (destination2_y)-20,0] ;",_i]; place_classe8 = place_classe8 - 14 ; }; }; sleep 0.5 ; if (code_classe9 != "0") then { for[{_i=1},{_i<=var_classe9},{_i=_i+1}] do { call compile format["vw9%1 = code_classe9 createvehicle [(destination2_x), (destination2_y)+place_classe9,0] ;",_i]; place_classe9 = place_classe9 + 3 ; }; }; sleep 0.5 ; if (code_classe10 != "0") then { for[{_i=1},{_i<=var_classe10},{_i=_i+1}] do { call compile format["vw10%1 = code_classe10 createvehicle [(destination2_x), (destination2_y)+place_classe9,0] ;",_i]; place_classe9 = place_classe9 + 3 ; }; }; sleep 0.5 ; if (code_classe11 != "0") then { for[{_i=1},{_i<=var_classe11},{_i=_i+1}] do { call compile format["vw11%1 = code_classe11 createvehicle [(destination2_x), (destination2_y)+place_classe9,0] ;",_i]; place_classe9 = place_classe9 + 3 ; }; }; // Créa du convoi potentiel crea_radio_bravo = true ; publicvariable "crea_radio_bravo" ; nouveau_convoi = true ; publicvariable "nouveau_convoi" ; } ; If (true) ExitWith {}// boucle des objectifs secondaires : boucle_obj2.sqf if (local serveur) then { objec_sec = false ; publicvariable "objec_sec"; objec_boucle = true ; publicvariable "objec_boucle"; while {objec_boucle} do { for[{_i=1},{_i<=var_trigg},{_i=_i+1}] do { call compile format ["if (approche%1) then {_jbork = [] execVM ""objec_verif.sqf"";}",(_i)]; sleep 2; }; }; }; If (true) ExitWith {}

by [CTR]Grimm, Centurions Team (www.clan-centurions.com).




Credits



User Manual

Introduction
- Virtual TrainingSpace 2 : the concept.
- Quick start.

Platoon leader : use of the computer
- Basic operations.
- Description of the mission parameters.
- Real-time editing.

! Don't forget to adjust your fire selector at the beginning of the exercise (default key : "F") !



VTS2 - in game :
Insertion
Objective



Credits



Grimm wishes to thank the following :




* Igor Drukov : Computer idea (reprogrammé par [CTR]Grimm)

* snYpir for his function TimeToString (modifiée par [CTR]Grimm);

* ManDay for his halo system (modifié par [CTR]Grimm);

* Vektorboson and some code from Kronzky for the satellite view

* every other scripts (global mission | damage anf health system | tactical withdraw | random patrol, etc.) have been made by [CTR]Grimm.

* Thanks to Centurions team for their outstanding support. Without you, I won't have do anything!

* Thanks to the beta testers, more precisely the =dB= Team : =dB=Sniper121 for his tests and his help in translating everything from french to english, =dB=08.Ed for his amazing support.




Virtual TrainingSpace 2 : the concept


VTS2 allows the creation of cooperative online missions in real-time. The players choose their side, the environment, the equipment, the canopy, the place of the objective,… Everything can be customized.

It’s composed of 2 modules that can work separately or together :

- The pre-mission module lets you choose, from a canvas, all the environment of your mission ;

- The real-time module, lets you create a mission from A to Z.

Both modules can also be complementary : i.E, nothing prevents adding objectives to a parametered mission while it’s running.

Quelques mots sur le système de dégâts et de soins
Un nouveau système de soin a été implanté dans cette mission, donnant une importance particulière au médecin. En cas de blessure, les joueurs peuvent être en état de choc (voile noir). En cas de blessure grave, une hémorragie peut se déclencher (tête de mort et message "hémorragie"). Dans ce dernier cas, si le joueur n'est pas soigné par le médecin dans les minutes qui suivent, il finit par mourir.
Le médecin, quand à lui, n'a que 3 kits de soins. L'action de soigner dure également plus longtemps.

Le convoi logistique
Si vous paramétrez la partie en demandant l'insertion de véhicules et d'armes, vous pourrez faire appel à un convoi logistique. Celui-ci se dirigera vers le chef de section. Si le chef de section meurt, le convoi logistique restera à son dernier point.

Back



Quick Start


To start a quick game, you have to be platoon leader.

* Select « computer » in your action menu

* The computer’s main page appears. It offers you all the options of the pre-mission module.

* Click « ok », at the end of the « locate objective » line.

* Left click on the map to set the objective (hold right click to move the map).

* Click ok at the end of the “insertion” line.

* Left click on the map to set the insertion spot (hold right click to move the map).

* Press Esc to leave the computer, or click “Close” at the bottom.

* Take your radio, and select “Start exercise” (shortcut 0,0,1).

BEWARE !
The default respawn makes the dead respawn next to their squad leader, the squad leader respawning at the insertion spot. You can cancel the respawn in the mission configuration.

[Back to menu]


Basic operations


The mission is entirely customizable from the platoon leader's computer. Platoon leader must be a player.

You can subdivide the computer settings in 2 parts:

- A first part must be set up before running the mission via radio : the preparatory operations, on the main page. Once the mission is run, thos parameters will be unchangeable. For instance, you can respawn in real-time. But if you set an objective via the preparatory operations, and cancel the respawn, you will have, to activate the enemy area and the objective set up in pre-mission, to run the mission via radio. Once it’s running, you won’t be able to modify the respawn option anymore, or change the main objective.

- The second part that comprehends optional orders and the real time module, includes parameters that you can modify at any time, before or after the mission start. For instance, you can make night fall, call artillery support, or spawn new units and objectives in real-time.



[Back to menu]


Description of the mission parameters


Preparatory orders :

Once each option is set, don’t forget to validate it by clicking the « ok » button attached to it.

* Enemy side
Depending on the side you chose, you can select one of two enemy sides. For instance, playing BLUFOR will let you choose your enemy among OPFOR or Resistance.

* AI mode
You can select an inert AI, that will remain still or will move very little and usually won’t attack you. You can also select a mobile AI, that patrols, retreats if it’s endangered, and will call reinforcements. Or you can select an aggressive AI that will tend to hunt you in the hostile area.

* Size of the hostile area
That value represents the length of the side of the square limiting the hostile area. If you set that figure on 400, the zone will measure 160000 square meters (400x400).

* Number of enemy groups
That options sets the number of AI randomly sparsed in the hostile zone. The minimum is 2, knowing that the group guarding the objective is composed of 3 units and that a standard group has 5 men.

* Activate vehicles/weapons
That options parameters the base that will appear at the insertion spot. By clicking « ok », you’ll reach a new page to set it up. Select the kind that you want, the vehicles of that kind, and click “ok”. You can also customize enemy canopy and reinforcements (paratroopers, artillery... you can set up the frequency of the reinforcement calls).

* Locating the objective
There are 4 kinds of objectives : "Take" : reach a flag in the enemy area ; "Target" : Kill an enemy officer ; "Destr" : destroy the enemy atenna ; "Hostage" : free a hostage and bring him back to insertion. Once the objective is selected, click « ok », then click on the map to place it. BEWARE: choosing “Hostage” means that the hostage will join the platoon leader’s group once he’s been called. Platoon leader and hostage then must survive for the mission to succeed.

* Insertion
Choose the insertion method, by ground or parachute, then click « ok » and on the map to place the marker. When para is chosen, you’ll start the mission flying, and the dispersion of the unit will depend on the weather conditions. Head where you want with the mouse, and open your parachute by pressing “Esc”.

* Respawn
Select it on or off. With respawn on, the players will be back after 15 seconds next to the squad leader if they are killed. With respawn off, the dead will leave the battlefield but will see their companions fighting. Respawn must be chosen before setting pre-mission insertion point, or real time insertion point.

* Civilians in hostile area
This option adds civilians in the enemy area. If they are killed, the mission will fail. There will be 2 civilians by enemy group. So 5 enemy groups will spawn 10 civilians that will randomly wander in the enemy zone.



Optional orders :

* Rain setting
0 (good weather) to 10 (storm).

* Fog setting
0 (no fog) to 10 (no visibility).

* Time setting
add x hours to the actual time.

* Timer
the time in minutes to finish the mission. When it’s up, the mission finishes, though you can stop it before the end of the countdown.

* Artillery
there are 2 sorts of fires. The adjustment fire (“Fire1”) is a test fire to check that the targeting is correct. The efficiency fire (“Eff”) starts 4 salvas of 4 shots each. Once the efficiency fire is done, the artillery will stay unreachable for a time.

* Satellite
Select « call » to point the satellite on a spot on the map then « confirm » to shoot a picture.



[Back to menu]


Real-Time editing


Click on « Real-time » at the bottom of the main page to access that module.

The real-time module allows the creation of all the units, all the vehicles, and many tactical objects (fortresses,…) and game logics, to build new objectives.

There are 2 versions : « Player », allows only the creation of units or objects, and to teleport players, and « Coder » that gives you all the real-time options. You can jump from one version to the other by clicking the “player” button at the upper left corner of the real-time page.

The « Coder » version (the most complete version) has 4 parts :

- Units/objects : you can spawn anything anywhere. Set it up then validate with « ok » and click on the map to place it. A marker will indicate the initial position of the new object and the name you gave it, or by default, its type. You can give the unit different moves set by default : insertion (will move to insertion point), objective (will move to objective point), player (will move to player's position) and guard, circle, patrolling, for random moves. You can allow your own scripts to your real time units (see “Modding and scripting with VTS2 (PDF)”).

- Players: interact with the players. You can teleport the group, weapons will be attributed depending on their class, teleport a particular player, activate the GPS (for the squad leader only) or create a free-view camera on the battlefield (read the user manual (PDF) for camera commands).

- Command line : encode in real-time, and start your own scripts by clicking « script » (see PDF file « Modding and scripting with VTS2 (PDF) » for further info).

- Triggers : create some triggers in real-)time, and insert new objectives or events. The triggers work as those in the editor except "2-Obj" triggers, which are a unique feature (readthe user manual (PDF)).



[Back to menu]


if ((local joueur1) or (local joueure1)) then { waituntil {marqueurs_base_debug}; sleep 5 ; for[{_i=1},{_i<=nbre_ge+8},{_i=_i+1}] do { call compile format["markerbase%1 = createMarkerlocal [""marqueurbase%1"",position base_ge%1] ; markerbase%1 setMarkerShapelocal ""ICON"" ; ""marqueurbase%1"" setMarkerTypelocal ""Dot"" ; ""marqueurbase%1"" setMarkerColorlocal ""ColorBlack"";",_i]; }; waituntil {marqueurs_eni_debug}; sleep 5 ; for[{_i=1},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["markereni%1 = createMarkerlocal[""marqueureni%1"",position (leader ge%1)] ; markereni%1 setMarkerShapelocal ""ICON"" ; ""marqueureni%1"" setMarkerTypelocal ""Dot"" ; ""marqueureni%1"" setMarkerColorlocal ""ColorRed""; ""marqueureni%1"" setMarkerTextlocal ""%1""; ",_i]; }; sleep 5 ; while {true} do { for[{_i=1},{_i<=nbre_ge},{_i=_i+1}] do { // call compile format ["if ((!alive loona%1) and (!alive loonb%1) and (!alive loonc%1) and (!alive loond%1) and (!alive loone%1)) then deletemarkerlocal ""marqueureni%1"";",_i]; call compile format ["""marqueureni%1"" setMarkerPoslocal position (leader ge%1);",_i]; sleep 1 ; }; }; }; If (true) ExitWith {}// On vérifie que le script n'est exécuté que sur une machine en local. // Si c'est le cas, on détermine les variables // une pour la boucle : _faux if (local serveur) then { _faux = true; _chrono = 0; sleep 1 ; // tant que la boucle est active, on execute le script de compte // avec le format for : [postulat de base, condition, effet] // pour i=1 seconde, i=i+1, execute la boucle while {_faux} do { _chrono=_chrono+1; sleep 1; call compile format["if fin_mission then {_faux = false;};",_chrono]; }; temps = _chrono; publicvariable "temps"; }; If (true) ExitWith {} _Temps = chrono_depart ; while {chron==1} do { sleep 60; _Temps = _Temps-1; if (_Temps == 0) then {chron = 0; temps_fini = true ; publicvariable "temps_fini";}; call compile format["hint ""Time left : %1 minutes"";",_Temps]; }; If (true) ExitWith {}_faux = true ; while {_faux} do { for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["if (!alive civila%1) then {civil_abattu = true ; publicvariable ""civil_abattu""; _faux = false;};",_i]; call compile format["if (!alive civilb%1) then {civil_abattu = true ; publicvariable ""civil_abattu""; _faux = false;};",_i]; }; sleep 2 ; }; If (true) ExitWith {}// on dtermine les grpes civils for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["gca%1 = createGroup civilian ; ",_e]; }; for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["gcb%1 = createGroup civilian ; ",_e]; }; // Creation sur les diffrentes bases for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _random = (random 7) ; if (_random<=1) then { call compile format["vts2_Civilian createUnit [position base_ge%1 , gca%1,""civila%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>1) and (_random<=2)) then { call compile format["vts2_Civilian4 createUnit [position base_ge%1 , gca%1,""civila%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>2) and (_random<=3)) then { call compile format["vts2_Civilian7 createUnit [position base_ge%1 , gca%1,""civila%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>3) and (_random<=4)) then { call compile format["vts2_Civilian12 createUnit [position base_ge%1 , gca%1,""civila%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>4) and (_random<=5)) then { call compile format["vts2_Civilian13 createUnit [position base_ge%1 , gca%1,""civila%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>5) and (_random<=6)) then { call compile format["vts2_Civilian17 createUnit [position base_ge%1 , gca%1,""civila%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if (_random>6) then { call compile format["vts2_Civilian21 createUnit [position base_ge%1 , gca%1,""civila%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; // crea du 2e _random = (random 7) ; if (_random<=1) then { call compile format["vts2_Civilian createUnit [position base_ge%1 , gcb%1,""civilb%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>1) and (_random<=2)) then { call compile format["vts2_Civilian4 createUnit [position base_ge%1 , gcb%1,""civilb%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>2) and (_random<=3)) then { call compile format["vts2_Civilian7 createUnit [position base_ge%1 , gcb%1,""civilb%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>3) and (_random<=4)) then { call compile format["vts2_Civilian12 createUnit [position base_ge%1 , gcb%1,""civilb%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>4) and (_random<=5)) then { call compile format["vts2_Civilian13 createUnit [position base_ge%1 , gcb%1,""civilb%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if ((_random>5) and (_random<=6)) then { call compile format["vts2_Civilian17 createUnit [position base_ge%1 , gcb%1,""civilb%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; if (_random>6) then { call compile format["vts2_Civilian21 createUnit [position base_ge%1 , gcb%1,""civilb%1 = this"", 0.5, ""sergent""];",_e]; sleep 0.2 ; }; }; sleep 2 ; // lancement du script de vrification de mort _gnuff = [] execVM "civil_mort.sqf"; // lancement des rondes _temps_mouv = ((concentration/10)*4); _faux = true ; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["civila%1 SetSpeedMode ""LIMITED"" ; civila%1 setBehaviour ""careless"";",_i]; sleep 0.2 ; call compile format["civilb%1 SetSpeedMode ""LIMITED"" ; civilb%1 setBehaviour ""careless"";",_i]; sleep 0.2 ; }; while {_faux} do { for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { _random = (round (random nbre_ge))+8 ; if (_random == 0) then {_random = _random +1} ; call compile format["civila%1 move position base_ge%2; civila%1 setBehaviour attitude_civils ; civila%1 SetSpeedMode vitesse ;",(_i),(_random)]; sleep 0.2 ; _random = (round (random nbre_ge))+8 ; if (_random == 0) then {_random = _random +1} ; call compile format["civilb%1 move position base_ge%2; civilb%1 setBehaviour attitude_civils ; civilb%1 SetSpeedMode vitesse ;",(_i),(_random)]; call compile format["if fin_mission then {_faux = false;};"]; sleep 0.2 ; }; sleep _temps_mouv ; // sleep 360 ; }; If (true) ExitWith {}If (true) ExitWith {}; /* Controls */ // Control types #define CT_STATIC 0 #define CT_BUTTON 1 #define CT_EDIT 2 #define CT_ACTIVETEXT 11 #define CT_STRUCTURED_TEXT 13 #define CT_LISTBOX 5 #define CT_COMBO 4 #define CT_MAP_MAIN 101 /*#define CT_SLIDER 3 #define CT_TOOLBOX 6 #define CT_CHECKBOXES 7 #define CT_PROGRESS 8 #define CT_HTML 9 #define CT_STATIC_SKEW 10 #define CT_TREE 12 #define CT_CONTEXT_MENU 14 #define CT_CONTROLS_GROUP 15 #define CT_XKEYDESC 40 #define CT_XBUTTON 41 #define CT_XLISTBOX 42 #define CT_XSLIDER 43 #define CT_XCOMBO 44 #define CT_ANIMATED_TEXTURE 45 #define CT_OBJECT 80 #define CT_OBJECT_ZOOM 81 #define CT_OBJECT_CONTAINER 82 #define CT_OBJECT_CONT_ANIM 83 #define CT_LINEBREAK 98 #define CT_USER 99 #define CT_MAP 100 // Static styles #define ST_POS 0x0F #define ST_HPOS 0x03 #define ST_VPOS 0x0C #define ST_LEFT 0x00 #define ST_RIGHT 0x01 #define ST_CENTER 0x02 #define ST_DOWN 0x04 #define ST_UP 0x08 #define ST_VCENTER 0x0c #define ST_TYPE 0xF0 #define ST_SINGLE 0 #define ST_MULTI 16 #define ST_TITLE_BAR 32 #define ST_PICTURE 48 #define ST_FRAME 64 #define ST_BACKGROUND 80 #define ST_GROUP_BOX 96 #define ST_GROUP_BOX2 112 #define ST_HUD_BACKGROUND 128 #define ST_TILE_PICTURE 144 #define ST_WITH_RECT 160 #define ST_LINE 176 #define ST_SHADOW 0x100 #define ST_NO_RECT 0x200 #define ST_KEEP_ASPECT_RATIO 0x800 #define ST_TITLE ST_TITLE_BAR + ST_CENTER // Slider styles #define SL_DIR 0x400 #define SL_VERT 0 #define SL_HORZ 0x400 #define SL_TEXTURES 0x10 // Listbox styles #define LB_TEXTURES 0x10 #define LB_MULTI 0x20 /* /*******************/ /* Basic classes */ class RscBackground { type = CT_STATIC; IDC = -1; style = 512; x=0.0; y=0.0; w=1.0; h=1.0; text=""; ColorBackground[]={0.6,0.6,0.6,1}; ColorText[]={0.1,0.1,0.1,1}; font="BitStream"; SizeEx = 1; }; class RscText { type = CT_STATIC; IDC = -1; style = ST_LEFT + ST_MULTI + ST_NO_RECT; LineSpacing = 1.000000; h = 0.040000; ColorBackground[] = {1,1,1,0.2}; ColorText[] = {0.1,0.1,0.1,1}; // ColorBackground[] = CA_UI_grey; // ColorText[] = Color_Black; font = "BitStream"; SizeEx = 0.030000; }; class RscEdit { type = CT_EDIT; idc = -1; style = ST_LEFT; font = LucidaConsoleB; sizeEx = 0.018; colorText[] = {0, 0, 0, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; autocomplete = false; text = ; }; class boutons { idc = -1; type = CT_BUTTON ; style = ST_LEFT; font="BitStream"; sizeEx = 0.02; colorText[] = { 0.9,0.9,0.9, 1 }; colorFocused[] = { 0, 0, 0, 1 }; // border color for focused state colorDisabled[] = { 1, 0, 0, 1 }; // text color for disabled state colorBackground[] = { 0, 0, 0, 0.7 }; colorBackgroundDisabled[] = { 0, 0, 0, 1 }; // background color for disabled state colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; colorShadow[] = { 0, 0, 0, 0.5 }; colorBorder[] = { 0, 0, 0, 1 }; borderSize = 0; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "buttonpushed.ogg", 0.1, 1 }; soundClick[] = { "", 0, 1 }; // no sound soundEscape[] = { "", 0, 1 }; // no sound }; class RscStructuredText { access = ReadAndWrite; type = CT_STRUCTURED_TEXT; idc = -1; style = ST_CENTER + ST_MULTI; lineSpacing = 1; w = 0.1; h = 0.05; size = 0.0170; colorBackground[] = {0,0,0,0}; colorText[] = {0,0,0,0}; text = ""; font = "BitStream"; sizeEx = 0.02; class Attributes { font = "BitStream"; color = "#ffffff"; align = "left"; shadow = true; }; }; class RscText2 { type = CT_STATIC; IDC = -1; style = ST_LEFT + ST_MULTI + ST_NO_RECT; LineSpacing = 1.000000; h = 0.040000; ColorBackground[] = {1,1,1,0.2}; ColorText[] = {0.1,0.1,0.1,1}; // ColorBackground[] = CA_UI_grey; // ColorText[] = Color_Black; font = "BitStream"; SizeEx = 0.030000; }; /* class RscButton { type = 1; style = 0; x = 0; y = 0; w = 0.097500; h = 0.040000; font = LucidaConsoleB; sizeEx = 0.024000; colorText[] = {0,0,0,1}; colorDisabled[] = {0.400000,0.400000,0.400000,1}; colorBackground[] = {1,1,1,1}; colorBackgroundActive[] = {0.840000,1,0.550000,1}; colorBackgroundDisabled[] = {1,1,1,0.700000}; offsetX = 0.003000; offsetY = 0.003000; offsetPressedX = 0.002000; offsetPressedY = 0.002000; colorFocused[] = {0.840000,1,0.550000,1}; colorShadow[] = {0,0,0,1}; colorBorder[] = {0,0,0,1}; borderSize = 0.000000; soundEnter[] = {"\ca\ui\data\sound\mouse2",0.150000,1}; soundPush[] = {"\ca\ui\data\sound\new1",0.150000,1}; soundClick[] = {"\ca\ui\data\sound\mouse3",0.150000,1}; soundEscape[] = {"\ca\ui\data\sound\mouse1",0.150000,1}; }; class RscPicture { type = CT_STATIC; IDC = -1; style = ST_PICTURE; ColorBackground[] = {0,0,0,0}; ColorText[] = {1,1,1,1}; font = "BitStream"; SizeEx = 0; }; */ class RscActiveText { type = CT_ACTIVETEXT; style = ST_LEFT; SizeEx = 0.05; font = LucidaConsoleB; color[]= {1,1,1,0.8}; colorActive[] = {1, 1, 1,1}; soundEnter[] = {"", 0.1, 1}; soundPush[] = {"", 0.1, 1}; soundClick[] = {"", 0.1, 1}; soundEscape[] = {"", 0.1, 1}; text = ""; }; /* class CA_Mainback: RscText { style = 48; x = 0.350000; y = 0.800000; w = 0.300000; h = 0.200000; text = "#(argb,8,1,3)color(0.7,0.7,0.7,0.8)"; colorText[] = {1,1,1,0.900000}; }; class RscControls { type = 15; idc = -1; style = 0; x = 0; y = 0; w = 1; h = 1; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; }; class Controls {}; }; */ class RscListBox { type = CT_LISTBOX; style = ST_LEFT; idc = -1; colorSelect[] = {0.1, 1, 0.1, 1}; colorSelectBackground[] = {0.1, 0.1, 1, 1}; colorText[] = {0.1, 1, 0.1, 1}; colorBackground[] = {0, 0, 1, 1}; font = LucidaConsoleB; sizeEx = 0.014; rowHeight = 0.02; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; colorFocused[] = {1,0,0,0}; colorShadow[] = {0.2, 0.2, 0.2, 0.8}; colorBorder[] = {0, 0, 0, 1}; borderSize = 0.0; soundEnter[] = {"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[] = {"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[] = {"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[] = {"\ca\ui\data\sound\mouse1", 0.15, 1}; }; class RscEdit2 { type = CT_EDIT; idc = -1; style = ST_LEFT; font = LucidaConsoleB; sizeEx = 0.018; colorText[] = {0, 0, 0, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; autocomplete = false; text = ; }; /* class RscSlider { access = ReadAndWrite; type = 3; style = 1024; h = 0.028; w = 0.3; color[] = {1, 1, 1, 1}; colorActive[] = {1, 1, 1, 1}; }; class RscSliderH : RscSlider {}; */ class Vtscombo { idc = -1; type = CT_COMBO; style = ST_LEFT; colorSelect[] = {0.9,0.9,0.9, 1 }; colorSelectBackground[] = {0.9,0.9,0.9,0.1}; colorText[] = { 0.9,0.9,0.9, 1 }; colorScrollbar[] = {0, 0, 0, 1}; colorBackground[] = { 0, 0, 0, 0.7 }; colorBorder[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 1}; soundSelect[] = { "", 0, 1 }; soundExpand[] = { "", 0, 1 }; soundCollapse[] = { "", 0, 1 }; borderSize = 0; font = "TahomaB"; sizeEx = 0.02; rowHeight = 0.025; wholeHeight = 10 * 0.025; // 3 lines to display + 1 line of the unelapsed control text = ""; maxHistoryDelay = 0; default = true; x = 0; y = 0; w = 0; h = 0; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = 0; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; }; class VtsMapControl { access = ReadAndWrite; type = 101; idc = -1; style = 48; colorBackground[] = {1, 1, 1, 1}; colorText[] = {0, 0, 0, 1}; font = "TahomaB"; sizeEx = 0.04; colorSea[] = {0.56, 0.8, 0.98, 0.5}; colorForest[] = {0.6, 0.8, 0.2, 0.5}; colorRocks[] = {0.5, 0.5, 0.5, 0.5}; colorCountlines[] = {0.65, 0.45, 0.27, 0.5}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1}; colorCountlinesWater[] = {0, 0.53, 1, 0.5}; colorMainCountlinesWater[] = {0, 0.53, 1, 1}; colorForestBorder[] = {0.4, 0.8, 0, 1}; colorRocksBorder[] = {0.5, 0.5, 0.5, 1}; colorPowerLines[] = {0, 0, 0, 1}; colorRailWay[] = {0.8, 0.2, 0.3, 1}; colorNames[] = {0, 0, 0, 1}; colorInactive[] = {1, 1, 1, 0.5}; colorLevels[] = {0, 0, 0, 1}; colorOutside[] = {0, 0, 0, 1}; fontLabel = "TahomaB"; sizeExLabel = 0.04; fontGrid = "TahomaB"; sizeExGrid = 0.04; fontUnits = "TahomaB"; sizeExUnits = 0.04; fontNames = "TahomaB"; sizeExNames = 0.04; fontInfo = "TahomaB"; sizeExInfo = 0.04; fontLevel = "TahomaB"; sizeExLevel = 0.04; text = "#(argb,8,8,3)color(1,1,1,1)"; stickX[] = {0.2, {"Gamma", 1, 1.5}}; stickY[] = {0.2, {"Gamma", 1, 1.5}}; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; showCountourInterval = "true"; maxSatelliteAlpha = 0; alphAFadeStartScale = 0; alphAFadeEndScale = 0; class Task { icon = "\ca\ui\data\map_waypoint_ca.paa"; iconCreated = "#(argb,8,8,3)color(1,1,1,1)"; iconCanceled = "#(argb,8,8,3)color(0,0,1,1)"; iconDone = "#(argb,8,8,3)color(0,0,0,1)"; iconFailed = "#(argb,8,8,3)color(1,0,0,1)"; colorCreated[] = {1,1,1,1}; colorCanceled[] = {1,1,1,1}; colorDone[] = {1,1,1,1}; colorFailed[] = {1,1,1,1}; size = 20; color[] = {0, 0.900000, 0, 1}; importance = "1.2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class CustomMark { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Legend { x = 0; y = 0; w = 0; h = 0; font = "Zeppelin32"; sizeEx = 0.0151; colorBackground[] = {1, 1, 1, 0.3}; color[] = {0, 0, 0, 1}; }; class ActiveMarker { color[] = {0.3, 0.1, 0.9, 1}; size = 50; }; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {1, 1, 1, 1}; size = 14; importance = 1.5 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0, 0.3, 0, 1}; size = 14; importance = 0.2 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {1, 1, 1, 1}; size = 10; importance = 1 * 10 * 0.05; coefMin = 0.25; coefMax = 4; }; class Command { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {1, 1, 1, 1}; size = 16; importance = 0.7 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.75; coefMax = 4; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0, 0, 0, 1}; size = 12; importance = 1 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 3 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 12; importance = 0.5 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1.2 * 16 * 0.05; coefMin = 1; coefMax = 4; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.6 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.9 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.7; coefMax = 4; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; }; //keygetis map /* class RscMapControl { access = ReadAndWrite; type = 101; idc = 51; style = 48; colorBackground[] = {1, 1, 1, 1}; colorText[] = {0, 0, 0, 1}; font = "TahomaB"; sizeEx = 0.04; colorSea[] = {0.56, 0.8, 0.98, 0.5}; colorForest[] = {0.6, 0.8, 0.2, 0.5}; colorRocks[] = {0.5, 0.5, 0.5, 0.5}; colorCountlines[] = {0.65, 0.45, 0.27, 0.5}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1}; colorCountlinesWater[] = {0, 0.53, 1, 0.5}; colorMainCountlinesWater[] = {0, 0.53, 1, 1}; colorForestBorder[] = {0.4, 0.8, 0, 1}; colorRocksBorder[] = {0.5, 0.5, 0.5, 1}; colorPowerLines[] = {0, 0, 0, 1}; colorNames[] = {0, 0, 0, 1}; colorInactive[] = {1, 1, 1, 0.5}; colorLevels[] = {0, 0, 0, 1}; fontLabel = "Zeppelin32"; sizeExLabel = 0.027; fontGrid = "Zeppelin32"; sizeExGrid = 0.027; fontUnits = "Zeppelin32"; sizeExUnits = 0.027; fontNames = "Zeppelin32"; sizeExNames = 0.027; fontInfo = "Zeppelin32"; sizeExInfo = 0.027; fontLevel = "Zeppelin32"; sizeExLevel = 0.027; text = "#(argb,8,8,3)color(1,1,1,1)"; stickX[] = {0.2, {"Gamma", 1, 1.5}}; stickY[] = {0.2, {"Gamma", 1, 1.5}}; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 1.5 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.2 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {0, 0, 1, 1}; size = 10; importance = 1 * 10 * 0.05; coefMin = 0.25; coefMax = 4; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.7 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.75; coefMax = 4; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 12; importance = 1 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 20; importance = 3 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.5 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1.2 * 16 * 0.05; coefMin = 1; coefMax = 4; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.6 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.9 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.7; coefMax = 4; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; size = 20; color[] = {0, 0.35, 0.7, 1}; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; size = 16; color[] = {0, 0.35, 0.7, 1}; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; size = 16; color[] = {0, 0.35, 0.7, 1}; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; size = 16; color[] = {0, 0.35, 0.7, 1}; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; }; /* class RscMapControl { access = 0; type = 101; idc = -1; style = 48; colorBackground[] = {1, 1, 1, 1}; colorText[] = {0, 0, 0, 1}; font = "TahomaB"; sizeEx = 0.040000; colorSea[] = {0.560000, 0.800000, 0.980000, 0.500000}; colorForest[] = {0.600000, 0.800000, 0.200000, 0.500000}; colorRocks[] = {0.500000, 0.500000, 0.500000, 0.500000}; colorCountlines[] = {0.650000, 0.450000, 0.270000, 0.500000}; colorMainCountlines[] = {0.650000, 0.450000, 0.270000, 1}; colorCountlinesWater[] = {0, 0.530000, 1, 0.500000}; colorMainCountlinesWater[] = {0, 0.530000, 1, 1}; colorForestBorder[] = {0.400000, 0.800000, 0, 1}; colorRocksBorder[] = {0.500000, 0.500000, 0.500000, 1}; colorPowerLines[] = {0, 0, 0, 1}; colorNames[] = {0, 0, 0, 1}; colorInactive[] = {1, 1, 1, 0.500000}; colorLevels[] = {0, 0, 0, 1}; fontLabel = "TahomaB"; sizeExLabel = 0.020000; fontGrid = "TahomaB"; sizeExGrid = 0.020000; fontUnits = "TahomaB"; sizeExUnits = 0.020000; fontNames = "TahomaB"; sizeExNames = 0.020000; fontInfo = "TahomaB"; sizeExInfo = 0.020000; fontLevel = "TahomaB"; sizeExLevel = 0.020000; stickX = {0.200000, {"Gamma", 1, 1.500000}}; stickY = {0.200000, {"Gamma", 1, 1.500000}}; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; text = "\ca\ui\data\map_background2_co.paa"; showCountourInterval = "false"; class ActiveMarker { color[] = {0.300000, 0.100000, 0.900000, 1}; size = 50; }; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 14; importance = "1.5 * 14 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0.550000, 0.640000, 0.430000, 1}; size = 14; importance = "0.2 * 14 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {0, 0, 1, 1}; size = 10; importance = "1 * 10 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class Command { icon = "#(argb,8,8,3)color(1,1,1,1)"; color[] = {0, 0, 0, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 16; importance = "0.7 * 16 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {1, 0.350000, 0.350000, 1}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.750000; coefMax = 4; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 12; importance = "1 * 12 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0.780000, 0, 0.050000, 1}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.500000; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 16; importance = "1 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0.780000, 0, 0.050000, 1}; size = 20; importance = "3 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.500000; coefMax = 4; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.35, 0.350000, 0.350000, 1}; size = 12; importance = "0.5 * 12 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.780000, 0, 0.050000, 1}; size = 16; importance = "1.2 * 16 * 0.05"; coefMin = 1; coefMax = 4; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 20; importance = "2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.550000, 0.640000, 0.430000, 1}; size = 12; importance = "0.9 * 16 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.550000, 0.640000, 0.430000, 1}; size = 12; importance = "0.6 * 12 * 0.05"; coefMin = 0.250000; coefMax = 4; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.780000, 0, 0.050000, 1}; size = 16; importance = "1 * 16 * 0.05"; coefMin = 0.700000; coefMax = 4; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 20; importance = "2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 16; importance = "2.5 * 16 * 0.05"; coefMin = 0.500000; coefMax = 4; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0, 0.350000, 0.700000, 1}; size = 32; importance = "1.2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {0, 0, 0, 1}; size = 24; importance = 1; coefMin = 1; coefMax = 1; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; color[] = {0, 0, 0, 1}; size = 24; importance = 1; coefMin = 1; coefMax = 1; }; } // classe1 _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe1_veh < 0) then {classe1_veh = 13}; if (classe1_veh > 13) then {classe1_veh = 0}; if (classe1_veh == 0) then {vehicule_classe1 = "None"; code_classe1 = "0";}; if (classe1_veh == 1) then {vehicule_classe1 = nomvts2_VehW1; code_classe1 = vts2_VehW1;}; if (classe1_veh == 2) then {vehicule_classe1 = nomvts2_VehW2; code_classe1 = vts2_VehW2;}; if (classe1_veh == 3) then {vehicule_classe1 = nomvts2_VehW3; code_classe1 = vts2_VehW3;}; if (classe1_veh == 4) then {vehicule_classe1 = nomvts2_VehW4; code_classe1 = vts2_VehW4;}; if (classe1_veh == 5) then {vehicule_classe1 = nomvts2_VehW5; code_classe1 = vts2_VehW5;}; if (classe1_veh == 6) then {vehicule_classe1 = nomvts2_VehW6; code_classe1 = vts2_VehW6;}; if (classe1_veh == 7) then {vehicule_classe1 = nomvts2_VehW7; code_classe1 = vts2_VehW7;}; if (classe1_veh == 8) then {vehicule_classe1 = nomvts2_VehW8; code_classe1 = vts2_VehW8;}; if (classe1_veh == 9) then {vehicule_classe1 = nomvts2_VehW14; code_classe1 = vts2_VehW14;}; if (classe1_veh == 10) then {vehicule_classe1 = nomvts2_VehW15; code_classe1 = vts2_VehW15;}; if (classe1_veh == 11) then {vehicule_classe1 = nomvts2_VehW16; code_classe1 = vts2_VehW16;}; if (classe1_veh == 12) then {vehicule_classe1 = nomvts2_VehW17; code_classe1 = vts2_VehW17;}; if (classe1_veh == 13) then {vehicule_classe1 = nomvts2_VehW18; code_classe1 = vts2_VehW18;}; ctrlSetText [10059,vehicule_classe1]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe1_veh < 0) then {classe1_veh = 13}; if (classe1_veh > 13) then {classe1_veh = 0}; if (classe1_veh == 0) then {vehicule_classe1 = "None"; code_classe1 = "0";}; if (classe1_veh == 1) then {vehicule_classe1 = nomvts2i_M1Abrams; code_classe1 = vts2i_M1Abrams;}; if (classe1_veh == 2) then {vehicule_classe1 = nomvts2i_M113_RACS; code_classe1 = vts2i_M113_RACS;}; if (classe1_veh == 3) then {vehicule_classe1 = nomvts2i_M113Ambul; code_classe1 = vts2i_M113Ambul;}; if (classe1_veh == 4) then {vehicule_classe1 = nomvts2i_Vulcan_RACS; code_classe1 = vts2i_Vulcan_RACS;}; if (classe1_veh == 5) then {vehicule_classe1 = nomvts2i_Landrover; code_classe1 = vts2i_Landrover;}; if (classe1_veh == 6) then {vehicule_classe1 = nomvts2i_LandroverMG; code_classe1 = vts2i_LandroverMG;}; if (classe1_veh == 7) then {vehicule_classe1 = nomvts2i_HMMWVTOW; code_classe1 = vts2i_HMMWVTOW;}; if (classe1_veh == 8) then {vehicule_classe1 = nomvts2i_HMMWVMK; code_classe1 = vts2i_HMMWVMK;}; if (classe1_veh == 9) then {vehicule_classe1 = nomvts2i_Truck5tMG; code_classe1 = vts2i_Truck5tMG;}; if (classe1_veh == 10) then {vehicule_classe1 = nomvts2i_Stryker_ICV_M2; code_classe1 = vts2i_Stryker_ICV_M2;}; if (classe1_veh == 11) then {vehicule_classe1 = nomvts2i_Stryker_ICV_MK19; code_classe1 = vts2i_Stryker_ICV_MK19;}; if (classe1_veh == 12) then {vehicule_classe1 = nomvts2i_Stryker_TOW; code_classe1 = vts2i_Stryker_TOW;}; if (classe1_veh == 13) then {vehicule_classe1 = nomvts2i_M1030; code_classe1 = vts2i_M1030;}; ctrlSetText [10059,vehicule_classe1]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe1_veh < 0) then {classe1_veh = 11}; if (classe1_veh > 11) then {classe1_veh = 0}; if (classe1_veh == 0) then {vehicule_classe1 = "None"; code_classe1 = "0";}; if (classe1_veh == 1) then {vehicule_classe1 = nomvts2_VehE1; code_classe1 = vts2_VehE1;}; if (classe1_veh == 2) then {vehicule_classe1 = nomvts2_VehE2; code_classe1 = vts2_VehE2;}; if (classe1_veh == 3) then {vehicule_classe1 = nomvts2_VehE3; code_classe1 = vts2_VehE3;}; if (classe1_veh == 4) then {vehicule_classe1 = nomvts2_VehE4; code_classe1 = vts2_VehE4;}; if (classe1_veh == 5) then {vehicule_classe1 = nomvts2_VehE5; code_classe1 = vts2_VehE5;}; if (classe1_veh == 6) then {vehicule_classe1 = nomvts2_VehE6; code_classe1 = vts2_VehE6;}; if (classe1_veh == 7) then {vehicule_classe1 = nomvts2_VehE7; code_classe1 = vts2_VehE7;}; if (classe1_veh == 8) then {vehicule_classe1 = nomvts2_VehE9; code_classe1 = vts2_VehE9;}; if (classe1_veh == 9) then {vehicule_classe1 = nomvts2_VehE13; code_classe1 = vts2_VehE13;}; if (classe1_veh == 10) then {vehicule_classe1 = nomvts2_VehE13_ATGM; code_classe1 = vts2_VehE13_ATGM;}; if (classe1_veh == 11) then {vehicule_classe1 = nomvts2_VehE14; code_classe1 = vts2_VehE14;}; ctrlSetText [10059,vehicule_classe1]; }; }; if (_n == 1) then { if (classe1_nbre < 0) then {classe1_nbre = 9}; if (classe1_nbre > 9) then {classe1_nbre = 0}; if (classe1_nbre == 0) then {nbre_classe1 = "0"; var_classe1 = 0;}; if (classe1_nbre == 1) then {nbre_classe1 = "1"; var_classe1 = 1;}; if (classe1_nbre == 2) then {nbre_classe1 = "2"; var_classe1 = 2;}; if (classe1_nbre == 3) then {nbre_classe1 = "3"; var_classe1 = 3;}; if (classe1_nbre == 4) then {nbre_classe1 = "4"; var_classe1 = 4;}; if (classe1_nbre == 5) then {nbre_classe1 = "5"; var_classe1 = 5;}; if (classe1_nbre == 6) then {nbre_classe1 = "6"; var_classe1 = 6;}; if (classe1_nbre == 7) then {nbre_classe1 = "7"; var_classe1 = 7;}; if (classe1_nbre == 8) then {nbre_classe1 = "8"; var_classe1 = 8;}; if (classe1_nbre == 9) then {nbre_classe1 = "9"; var_classe1 = 9;}; ctrlSetText [10062,nbre_classe1]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe1"; publicvariable "var_classe1"; }; If (true) ExitWith {}// classe1_mun (classe 10) _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe2_mun < 0) then {classe2_mun = 3}; if (classe2_mun > 3) then {classe2_mun = 0}; if (classe2_mun == 0) then {mun_classe2 = "None"; code_classe10 = "0";}; if (classe2_mun == 1) then {mun_classe2 = nomvts2_VehW32; code_classe10 = vts2_VehW32;}; if (classe2_mun == 2) then {mun_classe2 = nomvts2_VehW33; code_classe10 = vts2_VehW33;}; if (classe2_mun == 3) then {mun_classe2 = nomvts2_VehW34; code_classe10 = vts2_VehW34;}; ctrlSetText [10124,mun_classe2]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe2_mun < 0) then {classe2_mun = 3}; if (classe2_mun > 3) then {classe2_mun = 0}; if (classe2_mun == 0) then {mun_classe2 = "None"; code_classe10 = "0";}; if (classe2_mun == 1) then {mun_classe2 = nomvts2i_WeaponBoxGuer; code_classe10 = vts2i_WeaponBoxGuer;}; if (classe2_mun == 2) then {mun_classe2 = nomvts2i_AmmoBoxGuer; code_classe10 = vts2i_AmmoBoxGuer;}; if (classe2_mun == 3) then {mun_classe2 = nomvts2i_SpecialBoxGuer; code_classe10 = vts2i_SpecialBoxGuer;}; ctrlSetText [10124,mun_classe2]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe2_mun < 0) then {classe2_mun = 3}; if (classe2_mun > 3) then {classe2_mun = 0}; if (classe2_mun == 0) then {mun_classe2 = "None"; code_classe10 = "0";}; if (classe2_mun == 1) then {mun_classe2 = nomvts2_VehE22; code_classe10 = vts2_VehE22;}; if (classe2_mun == 2) then {mun_classe2 = nomvts2_VehE23; code_classe10 = vts2_VehE23;}; if (classe2_mun == 3) then {mun_classe2 = nomvts2_VehE24; code_classe10 = vts2_VehE24;}; ctrlSetText [10124,mun_classe2]; }; }; if (_n == 1) then { if (classe10_nbre < 0) then {classe10_nbre = 9}; if (classe10_nbre > 9) then {classe10_nbre = 0}; if (classe10_nbre == 0) then {nbre_classe10 = "0"; var_classe10 = 0;}; if (classe10_nbre == 1) then {nbre_classe10 = "1"; var_classe10 = 1;}; if (classe10_nbre == 2) then {nbre_classe10 = "2"; var_classe10 = 2;}; if (classe10_nbre == 3) then {nbre_classe10 = "3"; var_classe10 = 3;}; if (classe10_nbre == 4) then {nbre_classe10 = "4"; var_classe10 = 4;}; if (classe10_nbre == 5) then {nbre_classe10 = "5"; var_classe10 = 5;}; if (classe10_nbre == 6) then {nbre_classe10 = "6"; var_classe10 = 6;}; if (classe10_nbre == 7) then {nbre_classe10 = "7"; var_classe10 = 7;}; if (classe10_nbre == 8) then {nbre_classe10 = "8"; var_classe10 = 8;}; if (classe10_nbre == 9) then {nbre_classe10 = "9"; var_classe10 = 9;}; ctrlSetText [10127,nbre_classe10]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe10"; publicvariable "var_classe10"; }; If (true) ExitWith {}// classe3_mun (classe 11) _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe3_mun < 0) then {classe3_mun = 3}; if (classe3_mun > 3) then {classe3_mun = 0}; if (classe3_mun == 0) then {mun_classe3 = "None"; code_classe11 = "0";}; if (classe3_mun == 1) then {mun_classe3 = nomvts2_VehW32; code_classe11 = vts2_VehW32;}; if (classe3_mun == 2) then {mun_classe3 = nomvts2_VehW33; code_classe11 = vts2_VehW33;}; if (classe3_mun == 3) then {mun_classe3 = nomvts2_VehW34; code_classe11 = vts2_VehW34;}; ctrlSetText [10131,mun_classe3]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe3_mun < 0) then {classe3_mun = 3}; if (classe3_mun > 3) then {classe3_mun = 0}; if (classe3_mun == 0) then {mun_classe3 = "None"; code_classe11 = "0";}; if (classe3_mun == 1) then {mun_classe3 = nomvts2i_WeaponBoxGuer; code_classe11 = vts2i_WeaponBoxGuer;}; if (classe3_mun == 2) then {mun_classe3 = nomvts2i_AmmoBoxGuer; code_classe11 = vts2i_AmmoBoxGuer;}; if (classe3_mun == 3) then {mun_classe3 = nomvts2i_SpecialBoxGuer; code_classe11 = vts2i_SpecialBoxGuer;}; ctrlSetText [10131,mun_classe3]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe3_mun < 0) then {classe3_mun = 3}; if (classe3_mun > 3) then {classe3_mun = 0}; if (classe3_mun == 0) then {mun_classe3 = "None"; code_classe11 = "0";}; if (classe3_mun == 1) then {mun_classe3 = nomvts2_VehE22; code_classe11 = vts2_VehE22;}; if (classe3_mun == 2) then {mun_classe3 = nomvts2_VehE23; code_classe11 = vts2_VehE23;}; if (classe3_mun == 3) then {mun_classe3 = nomvts2_VehE24; code_classe11 = vts2_VehE24;}; ctrlSetText [10131,mun_classe3]; }; }; if (_n == 1) then { if (classe11_nbre < 0) then {classe11_nbre = 9}; if (classe11_nbre > 9) then {classe11_nbre = 0}; if (classe11_nbre == 0) then {nbre_classe11 = "0"; var_classe11 = 0;}; if (classe11_nbre == 1) then {nbre_classe11 = "1"; var_classe11 = 1;}; if (classe11_nbre == 2) then {nbre_classe11 = "2"; var_classe11 = 2;}; if (classe11_nbre == 3) then {nbre_classe11 = "3"; var_classe11 = 3;}; if (classe11_nbre == 4) then {nbre_classe11 = "4"; var_classe11 = 4;}; if (classe11_nbre == 5) then {nbre_classe11 = "5"; var_classe11 = 5;}; if (classe11_nbre == 6) then {nbre_classe11 = "6"; var_classe11 = 6;}; if (classe11_nbre == 7) then {nbre_classe11 = "7"; var_classe11 = 7;}; if (classe11_nbre == 8) then {nbre_classe11 = "8"; var_classe11 = 8;}; if (classe11_nbre == 9) then {nbre_classe11 = "9"; var_classe11 = 9;}; ctrlSetText [10134,nbre_classe11]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe11"; publicvariable "var_classe11"; }; If (true) ExitWith {}// classe2 _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe2_veh < 0) then {classe2_veh = 13}; if (classe2_veh > 13) then {classe2_veh = 0}; if (classe2_veh == 0) then {vehicule_classe2 = "None"; code_classe2 = "0";}; if (classe2_veh == 1) then {vehicule_classe2 = nomvts2_VehW1; code_classe2 = vts2_VehW1;}; if (classe2_veh == 2) then {vehicule_classe2 = nomvts2_VehW2; code_classe2 = vts2_VehW2;}; if (classe2_veh == 3) then {vehicule_classe2 = nomvts2_VehW3; code_classe2 = vts2_VehW3;}; if (classe2_veh == 4) then {vehicule_classe2 = nomvts2_VehW4; code_classe2 = vts2_VehW4;}; if (classe2_veh == 5) then {vehicule_classe2 = nomvts2_VehW5; code_classe2 = vts2_VehW5;}; if (classe2_veh == 6) then {vehicule_classe2 = nomvts2_VehW6; code_classe2 = vts2_VehW6;}; if (classe2_veh == 7) then {vehicule_classe2 = nomvts2_VehW7; code_classe2 = vts2_VehW7;}; if (classe2_veh == 8) then {vehicule_classe2 = nomvts2_VehW8; code_classe2 = vts2_VehW8;}; if (classe2_veh == 9) then {vehicule_classe2 = nomvts2_VehW14; code_classe2 = vts2_VehW14;}; if (classe2_veh == 10) then {vehicule_classe2 = nomvts2_VehW15; code_classe2 = vts2_VehW15;}; if (classe2_veh == 11) then {vehicule_classe2 = nomvts2_VehW16; code_classe2 = vts2_VehW16;}; if (classe2_veh == 12) then {vehicule_classe2 = nomvts2_VehW17; code_classe2 = vts2_VehW17;}; if (classe2_veh == 13) then {vehicule_classe2 = nomvts2_VehW18; code_classe2 = vts2_VehW18;}; ctrlSetText [10066,vehicule_classe2]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe2_veh < 0) then {classe2_veh = 13}; if (classe2_veh > 13) then {classe2_veh = 0}; if (classe2_veh == 0) then {vehicule_classe2 = "None"; code_classe2 = "0";}; if (classe2_veh == 1) then {vehicule_classe2 = nomvts2i_M1Abrams; code_classe2 = vts2i_M1Abrams;}; if (classe2_veh == 2) then {vehicule_classe2 = nomvts2i_M113_RACS; code_classe2 = vts2i_M113_RACS;}; if (classe2_veh == 3) then {vehicule_classe2 = nomvts2i_M113Ambul; code_classe2 = vts2i_M113Ambul;}; if (classe2_veh == 4) then {vehicule_classe2 = nomvts2i_Vulcan_RACS; code_classe2 = vts2i_Vulcan_RACS;}; if (classe2_veh == 5) then {vehicule_classe2 = nomvts2i_Landrover; code_classe2 = vts2i_Landrover;}; if (classe2_veh == 6) then {vehicule_classe2 = nomvts2i_LandroverMG; code_classe2 = vts2i_LandroverMG;}; if (classe2_veh == 7) then {vehicule_classe2 = nomvts2i_HMMWVTOW; code_classe2 = vts2i_HMMWVTOW;}; if (classe2_veh == 8) then {vehicule_classe2 = nomvts2i_HMMWVMK; code_classe2 = vts2i_HMMWVMK;}; if (classe2_veh == 9) then {vehicule_classe2 = nomvts2i_Truck5tMG; code_classe2 = vts2i_Truck5tMG;}; if (classe2_veh == 10) then {vehicule_classe2 = nomvts2i_Stryker_ICV_M2; code_classe2 = vts2i_Stryker_ICV_M2;}; if (classe2_veh == 11) then {vehicule_classe2 = nomvts2i_Stryker_ICV_MK19; code_classe2 = vts2i_Stryker_ICV_MK19;}; if (classe2_veh == 12) then {vehicule_classe2 = nomvts2i_Stryker_TOW; code_classe2 = vts2i_Stryker_TOW;}; if (classe2_veh == 13) then {vehicule_classe2 = nomvts2i_M1030; code_classe2 = vts2i_M1030;}; ctrlSetText [10066,vehicule_classe2]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe2_veh < 0) then {classe2_veh = 11}; if (classe2_veh > 11) then {classe2_veh = 0}; if (classe2_veh == 0) then {vehicule_classe2 = "None"; code_classe2 = "0";}; if (classe2_veh == 1) then {vehicule_classe2 = nomvts2_VehE1; code_classe2 = vts2_VehE1;}; if (classe2_veh == 2) then {vehicule_classe2 = nomvts2_VehE2; code_classe2 = vts2_VehE2;}; if (classe2_veh == 3) then {vehicule_classe2 = nomvts2_VehE3; code_classe2 = vts2_VehE3;}; if (classe2_veh == 4) then {vehicule_classe2 = nomvts2_VehE4; code_classe2 = vts2_VehE4;}; if (classe2_veh == 5) then {vehicule_classe2 = nomvts2_VehE5; code_classe2 = vts2_VehE5;}; if (classe2_veh == 6) then {vehicule_classe2 = nomvts2_VehE6; code_classe2 = vts2_VehE6;}; if (classe2_veh == 7) then {vehicule_classe2 = nomvts2_VehE7; code_classe2 = vts2_VehE7;}; if (classe2_veh == 8) then {vehicule_classe2 = nomvts2_VehE9; code_classe2 = vts2_VehE9;}; if (classe2_veh == 9) then {vehicule_classe2 = nomvts2_VehE13; code_classe2 = vts2_VehE13;}; if (classe2_veh == 10) then {vehicule_classe2 = nomvts2_VehE13_ATGM; code_classe2 = vts2_VehE13_ATGM;}; if (classe2_veh == 11) then {vehicule_classe2 = nomvts2_VehE14; code_classe2 = vts2_VehE14;}; ctrlSetText [10066,vehicule_classe2]; }; }; if (_n == 1) then { if (classe2_nbre < 0) then {classe2_nbre = 9}; if (classe2_nbre > 9) then {classe2_nbre = 0}; if (classe2_nbre == 0) then {nbre_classe2 = "0"; var_classe2 = 0;}; if (classe2_nbre == 1) then {nbre_classe2 = "1"; var_classe2 = 1;}; if (classe2_nbre == 2) then {nbre_classe2 = "2"; var_classe2 = 2;}; if (classe2_nbre == 3) then {nbre_classe2 = "3"; var_classe2 = 3;}; if (classe2_nbre == 4) then {nbre_classe2 = "4"; var_classe2 = 4;}; if (classe2_nbre == 5) then {nbre_classe2 = "5"; var_classe2 = 5;}; if (classe2_nbre == 6) then {nbre_classe2 = "6"; var_classe2 = 6;}; if (classe2_nbre == 7) then {nbre_classe2 = "7"; var_classe2 = 7;}; if (classe2_nbre == 8) then {nbre_classe2 = "8"; var_classe2 = 8;}; if (classe2_nbre == 9) then {nbre_classe2 = "9"; var_classe2 = 9;}; ctrlSetText [10069,nbre_classe2]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe2"; publicvariable "var_classe2"; }; If (true) ExitWith {}// classe2 _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe3_veh < 0) then {classe3_veh = 13}; if (classe3_veh > 13) then {classe3_veh = 0}; if (classe3_veh == 0) then {vehicule_classe3 = "None"; code_classe3 = "0";}; if (classe3_veh == 1) then {vehicule_classe3 = nomvts2_VehW1; code_classe3 = vts2_VehW1;}; if (classe3_veh == 2) then {vehicule_classe3 = nomvts2_VehW2; code_classe3 = vts2_VehW2;}; if (classe3_veh == 3) then {vehicule_classe3 = nomvts2_VehW3; code_classe3 = vts2_VehW3;}; if (classe3_veh == 4) then {vehicule_classe3 = nomvts2_VehW4; code_classe3 = vts2_VehW4;}; if (classe3_veh == 5) then {vehicule_classe3 = nomvts2_VehW5; code_classe3 = vts2_VehW5;}; if (classe3_veh == 6) then {vehicule_classe3 = nomvts2_VehW6; code_classe3 = vts2_VehW6;}; if (classe3_veh == 7) then {vehicule_classe3 = nomvts2_VehW7; code_classe3 = vts2_VehW7;}; if (classe3_veh == 8) then {vehicule_classe3 = nomvts2_VehW8; code_classe3 = vts2_VehW8;}; if (classe3_veh == 9) then {vehicule_classe3 = nomvts2_VehW14; code_classe3 = vts2_VehW14;}; if (classe3_veh == 10) then {vehicule_classe3 = nomvts2_VehW15; code_classe3 = vts2_VehW15;}; if (classe3_veh == 11) then {vehicule_classe3 = nomvts2_VehW16; code_classe3 = vts2_VehW16;}; if (classe3_veh == 12) then {vehicule_classe3 = nomvts2_VehW17; code_classe3 = vts2_VehW17;}; if (classe3_veh == 13) then {vehicule_classe3 = nomvts2_VehW18; code_classe3 = vts2_VehW18;}; ctrlSetText [10073,vehicule_classe3]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe3_veh < 0) then {classe3_veh = 13}; if (classe3_veh > 13) then {classe3_veh = 0}; if (classe3_veh == 0) then {vehicule_classe3 = "None"; code_classe3 = "0";}; if (classe3_veh == 1) then {vehicule_classe3 = nomvts2i_M1Abrams; code_classe3 = vts2i_M1Abrams;}; if (classe3_veh == 2) then {vehicule_classe3 = nomvts2i_M113_RACS; code_classe3 = vts2i_M113_RACS;}; if (classe3_veh == 3) then {vehicule_classe3 = nomvts2i_M113Ambul; code_classe3 = vts2i_M113Ambul;}; if (classe3_veh == 4) then {vehicule_classe3 = nomvts2i_Vulcan_RACS; code_classe3 = vts2i_Vulcan_RACS;}; if (classe3_veh == 5) then {vehicule_classe3 = nomvts2i_Landrover; code_classe3 = vts2i_Landrover;}; if (classe3_veh == 6) then {vehicule_classe3 = nomvts2i_LandroverMG; code_classe3 = vts2i_LandroverMG;}; if (classe3_veh == 7) then {vehicule_classe3 = nomvts2i_HMMWVTOW; code_classe3 = vts2i_HMMWVTOW;}; if (classe3_veh == 8) then {vehicule_classe3 = nomvts2i_HMMWVMK; code_classe3 = vts2i_HMMWVMK;}; if (classe3_veh == 9) then {vehicule_classe3 = nomvts2i_Truck5tMG; code_classe3 = vts2i_Truck5tMG;}; if (classe3_veh == 10) then {vehicule_classe3 = nomvts2i_Stryker_ICV_M2; code_classe3 = vts2i_Stryker_ICV_M2;}; if (classe3_veh == 11) then {vehicule_classe3 = nomvts2i_Stryker_ICV_MK19; code_classe3 = vts2i_Stryker_ICV_MK19;}; if (classe3_veh == 12) then {vehicule_classe3 = nomvts2i_Stryker_TOW; code_classe3 = vts2i_Stryker_TOW;}; if (classe3_veh == 13) then {vehicule_classe3 = nomvts2i_M1030; code_classe3 = vts2i_M1030;}; ctrlSetText [10073,vehicule_classe3]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe3_veh < 0) then {classe3_veh = 11}; if (classe3_veh > 11) then {classe3_veh = 0}; if (classe3_veh == 0) then {vehicule_classe3 = "None"; code_classe3 = "0";}; if (classe3_veh == 1) then {vehicule_classe3 = nomvts2_VehE1; code_classe3 = vts2_VehE1;}; if (classe3_veh == 2) then {vehicule_classe3 = nomvts2_VehE2; code_classe3 = vts2_VehE2;}; if (classe3_veh == 3) then {vehicule_classe3 = nomvts2_VehE3; code_classe3 = vts2_VehE3;}; if (classe3_veh == 4) then {vehicule_classe3 = nomvts2_VehE4; code_classe3 = vts2_VehE4;}; if (classe3_veh == 5) then {vehicule_classe3 = nomvts2_VehE5; code_classe3 = vts2_VehE5;}; if (classe3_veh == 6) then {vehicule_classe3 = nomvts2_VehE6; code_classe3 = vts2_VehE6;}; if (classe3_veh == 7) then {vehicule_classe3 = nomvts2_VehE7; code_classe3 = vts2_VehE7;}; if (classe3_veh == 8) then {vehicule_classe3 = nomvts2_VehE9; code_classe3 = vts2_VehE9;}; if (classe3_veh == 9) then {vehicule_classe3 = nomvts2_VehE13; code_classe3 = vts2_VehE13;}; if (classe3_veh == 10) then {vehicule_classe3 = nomvts2_VehE13_ATGM; code_classe3 = vts2_VehE13_ATGM;}; if (classe3_veh == 11) then {vehicule_classe3 = nomvts2_VehE14; code_classe3 = vts2_VehE14;}; ctrlSetText [10073,vehicule_classe3]; }; }; if (_n == 1) then { if (classe3_nbre < 0) then {classe3_nbre = 9}; if (classe3_nbre > 9) then {classe3_nbre = 0}; if (classe3_nbre == 0) then {nbre_classe3 = "0"; var_classe3 = 0;}; if (classe3_nbre == 1) then {nbre_classe3 = "1"; var_classe3 = 1;}; if (classe3_nbre == 2) then {nbre_classe3 = "2"; var_classe3 = 2;}; if (classe3_nbre == 3) then {nbre_classe3 = "3"; var_classe3 = 3;}; if (classe3_nbre == 4) then {nbre_classe3 = "4"; var_classe3 = 4;}; if (classe3_nbre == 5) then {nbre_classe3 = "5"; var_classe3 = 5;}; if (classe3_nbre == 6) then {nbre_classe3 = "6"; var_classe3 = 6;}; if (classe3_nbre == 7) then {nbre_classe3 = "7"; var_classe3 = 7;}; if (classe3_nbre == 8) then {nbre_classe3 = "8"; var_classe3 = 8;}; if (classe3_nbre == 9) then {nbre_classe3 = "9"; var_classe3 = 9;}; ctrlSetText [10076,nbre_classe3]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe3"; publicvariable "var_classe3"; }; If (true) ExitWith {}// classe4 _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe4_veh < 0) then {classe4_veh = 13}; if (classe4_veh > 13) then {classe4_veh = 0}; if (classe4_veh == 0) then {vehicule_classe4 = "None"; code_classe4 = "0";}; if (classe4_veh == 1) then {vehicule_classe4 = nomvts2_VehW1; code_classe4 = vts2_VehW1;}; if (classe4_veh == 2) then {vehicule_classe4 = nomvts2_VehW2; code_classe4 = vts2_VehW2;}; if (classe4_veh == 3) then {vehicule_classe4 = nomvts2_VehW3; code_classe4 = vts2_VehW3;}; if (classe4_veh == 4) then {vehicule_classe4 = nomvts2_VehW4; code_classe4 = vts2_VehW4;}; if (classe4_veh == 5) then {vehicule_classe4 = nomvts2_VehW5; code_classe4 = vts2_VehW5;}; if (classe4_veh == 6) then {vehicule_classe4 = nomvts2_VehW6; code_classe4 = vts2_VehW6;}; if (classe4_veh == 7) then {vehicule_classe4 = nomvts2_VehW7; code_classe4 = vts2_VehW7;}; if (classe4_veh == 8) then {vehicule_classe4 = nomvts2_VehW8; code_classe4 = vts2_VehW8;}; if (classe4_veh == 9) then {vehicule_classe4 = nomvts2_VehW14; code_classe4 = vts2_VehW14;}; if (classe4_veh == 10) then {vehicule_classe4 = nomvts2_VehW15; code_classe4 = vts2_VehW15;}; if (classe4_veh == 11) then {vehicule_classe4 = nomvts2_VehW16; code_classe4 = vts2_VehW16;}; if (classe4_veh == 12) then {vehicule_classe4 = nomvts2_VehW17; code_classe4 = vts2_VehW17;}; if (classe4_veh == 13) then {vehicule_classe4 = nomvts2_VehW18; code_classe4 = vts2_VehW18;}; ctrlSetText [10080,vehicule_classe4]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe4_veh < 0) then {classe4_veh = 13}; if (classe4_veh > 13) then {classe4_veh = 0}; if (classe4_veh == 0) then {vehicule_classe4 = "None"; code_classe4 = "0";}; if (classe4_veh == 1) then {vehicule_classe4 = nomvts2i_M1Abrams; code_classe4 = vts2i_M1Abrams;}; if (classe4_veh == 2) then {vehicule_classe4 = nomvts2i_M113_RACS; code_classe4 = vts2i_M113_RACS;}; if (classe4_veh == 3) then {vehicule_classe4 = nomvts2i_M113Ambul; code_classe4 = vts2i_M113Ambul;}; if (classe4_veh == 4) then {vehicule_classe4 = nomvts2i_Vulcan_RACS; code_classe4 = vts2i_Vulcan_RACS;}; if (classe4_veh == 5) then {vehicule_classe4 = nomvts2i_Landrover; code_classe4 = vts2i_Landrover;}; if (classe4_veh == 6) then {vehicule_classe4 = nomvts2i_LandroverMG; code_classe4 = vts2i_LandroverMG;}; if (classe4_veh == 7) then {vehicule_classe4 = nomvts2i_HMMWVTOW; code_classe4 = vts2i_HMMWVTOW;}; if (classe4_veh == 8) then {vehicule_classe4 = nomvts2i_HMMWVMK; code_classe4 = vts2i_HMMWVMK;}; if (classe4_veh == 9) then {vehicule_classe4 = nomvts2i_Truck5tMG; code_classe4 = vts2i_Truck5tMG;}; if (classe4_veh == 10) then {vehicule_classe4 = nomvts2i_Stryker_ICV_M2; code_classe4 = vts2i_Stryker_ICV_M2;}; if (classe4_veh == 11) then {vehicule_classe4 = nomvts2i_Stryker_ICV_MK19; code_classe4 = vts2i_Stryker_ICV_MK19;}; if (classe4_veh == 12) then {vehicule_classe4 = nomvts2i_Stryker_TOW; code_classe4 = vts2i_Stryker_TOW;}; if (classe4_veh == 13) then {vehicule_classe4 = nomvts2i_M1030; code_classe4 = vts2i_M1030;}; ctrlSetText [10080,vehicule_classe4]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe4_veh < 0) then {classe4_veh = 11}; if (classe4_veh > 11) then {classe4_veh = 0}; if (classe4_veh == 0) then {vehicule_classe4 = "None"; code_classe4 = "0";}; if (classe4_veh == 1) then {vehicule_classe4 = nomvts2_VehE1; code_classe4 = vts2_VehE1;}; if (classe4_veh == 2) then {vehicule_classe4 = nomvts2_VehE2; code_classe4 = vts2_VehE2;}; if (classe4_veh == 3) then {vehicule_classe4 = nomvts2_VehE3; code_classe4 = vts2_VehE3;}; if (classe4_veh == 4) then {vehicule_classe4 = nomvts2_VehE4; code_classe4 = vts2_VehE4;}; if (classe4_veh == 5) then {vehicule_classe4 = nomvts2_VehE5; code_classe4 = vts2_VehE5;}; if (classe4_veh == 6) then {vehicule_classe4 = nomvts2_VehE6; code_classe4 = vts2_VehE6;}; if (classe4_veh == 7) then {vehicule_classe4 = nomvts2_VehE7; code_classe4 = vts2_VehE7;}; if (classe4_veh == 8) then {vehicule_classe4 = nomvts2_VehE9; code_classe4 = vts2_VehE9;}; if (classe4_veh == 9) then {vehicule_classe4 = nomvts2_VehE13; code_classe4 = vts2_VehE13;}; if (classe4_veh == 10) then {vehicule_classe4 = nomvts2_VehE13_ATGM; code_classe4 = vts2_VehE13_ATGM;}; if (classe4_veh == 11) then {vehicule_classe4 = nomvts2_VehE14; code_classe4 = vts2_VehE14;}; ctrlSetText [10080,vehicule_classe4]; }; }; if (_n == 1) then { if (classe4_nbre < 0) then {classe4_nbre = 9}; if (classe4_nbre > 9) then {classe4_nbre = 0}; if (classe4_nbre == 0) then {nbre_classe4 = "0"; var_classe4 = 0;}; if (classe4_nbre == 1) then {nbre_classe4 = "1"; var_classe4 = 1;}; if (classe4_nbre == 2) then {nbre_classe4 = "2"; var_classe4 = 2;}; if (classe4_nbre == 3) then {nbre_classe4 = "3"; var_classe4 = 3;}; if (classe4_nbre == 4) then {nbre_classe4 = "4"; var_classe4 = 4;}; if (classe4_nbre == 5) then {nbre_classe4 = "5"; var_classe4 = 5;}; if (classe4_nbre == 6) then {nbre_classe4 = "6"; var_classe4 = 6;}; if (classe4_nbre == 7) then {nbre_classe4 = "7"; var_classe4 = 7;}; if (classe4_nbre == 8) then {nbre_classe4 = "8"; var_classe4 = 8;}; if (classe4_nbre == 9) then {nbre_classe4 = "9"; var_classe4 = 9;}; ctrlSetText [10083,nbre_classe4]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe4"; publicvariable "var_classe4"; }; If (true) ExitWith {}// classe5 _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe5_veh < 0) then {classe5_veh = 13}; if (classe5_veh > 13) then {classe5_veh = 0}; if (classe5_veh == 0) then {vehicule_classe5 = "None"; code_classe5 = "0";}; if (classe5_veh == 1) then {vehicule_classe5 = nomvts2_VehW1; code_classe5 = vts2_VehW1;}; if (classe5_veh == 2) then {vehicule_classe5 = nomvts2_VehW2; code_classe5 = vts2_VehW2;}; if (classe5_veh == 3) then {vehicule_classe5 = nomvts2_VehW3; code_classe5 = vts2_VehW3;}; if (classe5_veh == 4) then {vehicule_classe5 = nomvts2_VehW4; code_classe5 = vts2_VehW4;}; if (classe5_veh == 5) then {vehicule_classe5 = nomvts2_VehW5; code_classe5 = vts2_VehW5;}; if (classe5_veh == 6) then {vehicule_classe5 = nomvts2_VehW6; code_classe5 = vts2_VehW6;}; if (classe5_veh == 7) then {vehicule_classe5 = nomvts2_VehW7; code_classe5 = vts2_VehW7;}; if (classe5_veh == 8) then {vehicule_classe5 = nomvts2_VehW8; code_classe5 = vts2_VehW8;}; if (classe5_veh == 9) then {vehicule_classe5 = nomvts2_VehW14; code_classe5 = vts2_VehW14;}; if (classe5_veh == 10) then {vehicule_classe5 = nomvts2_VehW15; code_classe5 = vts2_VehW15;}; if (classe5_veh == 11) then {vehicule_classe5 = nomvts2_VehW16; code_classe5 = vts2_VehW16;}; if (classe5_veh == 12) then {vehicule_classe5 = nomvts2_VehW17; code_classe5 = vts2_VehW17;}; if (classe5_veh == 13) then {vehicule_classe5 = nomvts2_VehW18; code_classe5 = vts2_VehW18;}; ctrlSetText [10087,vehicule_classe5]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe5_veh < 0) then {classe5_veh = 13}; if (classe5_veh > 13) then {classe5_veh = 0}; if (classe5_veh == 0) then {vehicule_classe5 = "None"; code_classe5 = "0";}; if (classe5_veh == 1) then {vehicule_classe5 = nomvts2i_M1Abrams; code_classe5 = vts2i_M1Abrams;}; if (classe5_veh == 2) then {vehicule_classe5 = nomvts2i_M113_RACS; code_classe5 = vts2i_M113_RACS;}; if (classe5_veh == 3) then {vehicule_classe5 = nomvts2i_M113Ambul; code_classe5 = vts2i_M113Ambul;}; if (classe5_veh == 4) then {vehicule_classe5 = nomvts2i_Vulcan_RACS; code_classe5 = vts2i_Vulcan_RACS;}; if (classe5_veh == 5) then {vehicule_classe5 = nomvts2i_Landrover; code_classe5 = vts2i_Landrover;}; if (classe5_veh == 6) then {vehicule_classe5 = nomvts2i_LandroverMG; code_classe5 = vts2i_LandroverMG;}; if (classe5_veh == 7) then {vehicule_classe5 = nomvts2i_HMMWVTOW; code_classe5 = vts2i_HMMWVTOW;}; if (classe5_veh == 8) then {vehicule_classe5 = nomvts2i_HMMWVMK; code_classe5 = vts2i_HMMWVMK;}; if (classe5_veh == 9) then {vehicule_classe5 = nomvts2i_Truck5tMG; code_classe5 = vts2i_Truck5tMG;}; if (classe5_veh == 10) then {vehicule_classe5 = nomvts2i_Stryker_ICV_M2; code_classe5 = vts2i_Stryker_ICV_M2;}; if (classe5_veh == 11) then {vehicule_classe5 = nomvts2i_Stryker_ICV_MK19; code_classe5 = vts2i_Stryker_ICV_MK19;}; if (classe5_veh == 12) then {vehicule_classe5 = nomvts2i_Stryker_TOW; code_classe5 = vts2i_Stryker_TOW;}; if (classe5_veh == 13) then {vehicule_classe5 = nomvts2i_M1030; code_classe5 = vts2i_M1030;}; ctrlSetText [10087,vehicule_classe5]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe5_veh < 0) then {classe5_veh = 11}; if (classe5_veh > 11) then {classe5_veh = 0}; if (classe5_veh == 0) then {vehicule_classe5 = "None"; code_classe5 = "0";}; if (classe5_veh == 1) then {vehicule_classe5 = nomvts2_VehE1; code_classe5 = vts2_VehE1;}; if (classe5_veh == 2) then {vehicule_classe5 = nomvts2_VehE2; code_classe5 = vts2_VehE2;}; if (classe5_veh == 3) then {vehicule_classe5 = nomvts2_VehE3; code_classe5 = vts2_VehE3;}; if (classe5_veh == 4) then {vehicule_classe5 = nomvts2_VehE4; code_classe5 = vts2_VehE4;}; if (classe5_veh == 5) then {vehicule_classe5 = nomvts2_VehE5; code_classe5 = vts2_VehE5;}; if (classe5_veh == 6) then {vehicule_classe5 = nomvts2_VehE6; code_classe5 = vts2_VehE6;}; if (classe5_veh == 7) then {vehicule_classe5 = nomvts2_VehE7; code_classe5 = vts2_VehE7;}; if (classe5_veh == 8) then {vehicule_classe5 = nomvts2_VehE9; code_classe5 = vts2_VehE9;}; if (classe5_veh == 9) then {vehicule_classe5 = nomvts2_VehE13; code_classe5 = vts2_VehE13;}; if (classe5_veh == 10) then {vehicule_classe5 = nomvts2_VehE13_ATGM; code_classe5 = vts2_VehE13_ATGM;}; if (classe5_veh == 11) then {vehicule_classe5 = nomvts2_VehE14; code_classe5 = vts2_VehE14;}; ctrlSetText [10087,vehicule_classe5]; }; }; if (_n == 1) then { if (classe5_nbre < 0) then {classe5_nbre = 9}; if (classe5_nbre > 9) then {classe5_nbre = 0}; if (classe5_nbre == 0) then {nbre_classe5 = "0"; var_classe5 = 0;}; if (classe5_nbre == 1) then {nbre_classe5 = "1"; var_classe5 = 1;}; if (classe5_nbre == 2) then {nbre_classe5 = "2"; var_classe5 = 2;}; if (classe5_nbre == 3) then {nbre_classe5 = "3"; var_classe5 = 3;}; if (classe5_nbre == 4) then {nbre_classe5 = "4"; var_classe5 = 4;}; if (classe5_nbre == 5) then {nbre_classe5 = "5"; var_classe5 = 5;}; if (classe5_nbre == 6) then {nbre_classe5 = "6"; var_classe5 = 6;}; if (classe5_nbre == 7) then {nbre_classe5 = "7"; var_classe5 = 7;}; if (classe5_nbre == 8) then {nbre_classe5 = "8"; var_classe5 = 8;}; if (classe5_nbre == 9) then {nbre_classe5 = "9"; var_classe5 = 9;}; ctrlSetText [10090,nbre_classe5]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe5"; publicvariable "var_classe5"; }; If (true) ExitWith {}// classe1_air (classe 6) _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe1_air < 0) then {classe1_air = 6}; if (classe1_air > 6) then {classe1_air = 0}; if (classe1_air == 0) then {air_classe1 = "None"; code_classe6 = "0";}; if (classe1_air == 1) then {air_classe1 = nomvts2_VehW19; code_classe6 = vts2_VehW19;}; if (classe1_air == 2) then {air_classe1 = nomvts2_VehW20; code_classe6 = vts2_VehW20;}; if (classe1_air == 3) then {air_classe1 = nomvts2_VehW21; code_classe6 = vts2_VehW21;}; if (classe1_air == 4) then {air_classe1 = nomvts2_VehW22; code_classe6 = vts2_VehW22;}; if (classe1_air == 5) then {air_classe1 = nomvts2_VehW23; code_classe6 = vts2_VehW23;}; if (classe1_air == 6) then {air_classe1 = nomvts2_VehW27; code_classe6 = vts2_VehW27;}; ctrlSetText [10095,air_classe1]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe1_air < 0) then {classe1_air = 6}; if (classe1_air > 6) then {classe1_air = 0}; if (classe1_air == 0) then {air_classe1 = "None"; code_classe6 = "0";}; if (classe1_air == 1) then {air_classe1 = nomvts2i_AH6_RACS; code_classe6 = vts2i_AH6_RACS;}; if (classe1_air == 2) then {air_classe1 = nomvts2i_AH1W; code_classe6 = vts2i_AH1W;}; if (classe1_air == 3) then {air_classe1 = nomvts2i_UH60; code_classe6 = vts2i_UH60;}; if (classe1_air == 4) then {air_classe1 = nomvts2i_UH60MG; code_classe6 = vts2i_UH60MG;}; if (classe1_air == 5) then {air_classe1 = nomvts2i_MH6_RACS; code_classe6 = vts2i_MH6_RACS;}; if (classe1_air == 6) then {air_classe1 = nomvts2i_Camel; code_classe6 = vts2i_Camel;}; ctrlSetText [10095,air_classe1]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe1_air < 0) then {classe1_air = 4}; if (classe1_air > 4) then {classe1_air = 0}; if (classe1_air == 0) then {air_classe1 = "None"; code_classe6 = "0";}; if (classe1_air == 1) then {air_classe1 = nomvts2_VehE15; code_classe6 = vts2_VehE15;}; if (classe1_air == 2) then {air_classe1 = nomvts2_VehE16; code_classe6 = vts2_VehE16;}; if (classe1_air == 3) then {air_classe1 = nomvts2_VehE17; code_classe6 = vts2_VehE17;}; if (classe1_air == 4) then {air_classe1 = nomvts2_VehE20; code_classe6 = vts2_VehE20;}; ctrlSetText [10095,air_classe1]; }; }; if (_n == 1) then { if (classe6_nbre < 0) then {classe6_nbre = 9}; if (classe6_nbre > 9) then {classe6_nbre = 0}; if (classe6_nbre == 0) then {nbre_classe6 = "0"; var_classe6 = 0;}; if (classe6_nbre == 1) then {nbre_classe6 = "1"; var_classe6 = 1;}; if (classe6_nbre == 2) then {nbre_classe6 = "2"; var_classe6 = 2;}; if (classe6_nbre == 3) then {nbre_classe6 = "3"; var_classe6 = 3;}; if (classe6_nbre == 4) then {nbre_classe6 = "4"; var_classe6 = 4;}; if (classe6_nbre == 5) then {nbre_classe6 = "5"; var_classe6 = 5;}; if (classe6_nbre == 6) then {nbre_classe6 = "6"; var_classe6 = 6;}; if (classe6_nbre == 7) then {nbre_classe6 = "7"; var_classe6 = 7;}; if (classe6_nbre == 8) then {nbre_classe6 = "8"; var_classe6 = 8;}; if (classe6_nbre == 9) then {nbre_classe6 = "9"; var_classe6 = 9;}; ctrlSetText [10098,nbre_classe6]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe6"; publicvariable "var_classe6"; }; If (true) ExitWith {}// classe1_air (classe 6) _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe2_air < 0) then {classe2_air = 6}; if (classe2_air > 6) then {classe2_air = 0}; if (classe2_air == 0) then {air_classe2 = "None"; code_classe7 = "0";}; if (classe2_air == 1) then {air_classe2 = nomvts2_VehW19; code_classe7 = vts2_VehW19;}; if (classe2_air == 2) then {air_classe2 = nomvts2_VehW20; code_classe7 = vts2_VehW20;}; if (classe2_air == 3) then {air_classe2 = nomvts2_VehW21; code_classe7 = vts2_VehW21;}; if (classe2_air == 4) then {air_classe2 = nomvts2_VehW22; code_classe7 = vts2_VehW22;}; if (classe2_air == 5) then {air_classe2 = nomvts2_VehW23; code_classe7 = vts2_VehW23;}; if (classe2_air == 6) then {air_classe2 = nomvts2_VehW27; code_classe7 = vts2_VehW27;}; ctrlSetText [10102,air_classe2]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe2_air < 0) then {classe2_air = 6}; if (classe2_air > 6) then {classe2_air = 0}; if (classe2_air == 0) then {air_classe2 = "None"; code_classe7 = "0";}; if (classe2_air == 1) then {air_classe2 = nomvts2i_AH6_RACS; code_classe7 = vts2i_AH6_RACS;}; if (classe2_air == 2) then {air_classe2 = nomvts2i_AH1W; code_classe7 = vts2i_AH1W;}; if (classe2_air == 3) then {air_classe2 = nomvts2i_UH60; code_classe7 = vts2i_UH60;}; if (classe2_air == 4) then {air_classe2 = nomvts2i_UH60MG; code_classe7 = vts2i_UH60MG;}; if (classe2_air == 5) then {air_classe2 = nomvts2i_MH6_RACS; code_classe7 = vts2i_MH6_RACS;}; if (classe2_air == 6) then {air_classe2 = nomvts2i_Camel; code_classe7 = vts2i_Camel;}; ctrlSetText [10102,air_classe2]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe2_air < 0) then {classe2_air = 4}; if (classe2_air > 4) then {classe2_air = 0}; if (classe2_air == 0) then {air_classe2 = "None"; code_classe7 = "0";}; if (classe2_air == 1) then {air_classe2 = nomvts2_VehE15; code_classe7 = vts2_VehE15;}; if (classe2_air == 2) then {air_classe2 = nomvts2_VehE16; code_classe7 = vts2_VehE16;}; if (classe2_air == 3) then {air_classe2 = nomvts2_VehE17; code_classe7 = vts2_VehE17;}; if (classe2_air == 4) then {air_classe2 = nomvts2_VehE20; code_classe7 = vts2_VehE20;}; ctrlSetText [10102,air_classe2]; }; }; if (_n == 1) then { if (classe7_nbre < 0) then {classe7_nbre = 9}; if (classe7_nbre > 9) then {classe7_nbre = 0}; if (classe7_nbre == 0) then {nbre_classe7 = "0"; var_classe7 = 0;}; if (classe7_nbre == 1) then {nbre_classe7 = "1"; var_classe7 = 1;}; if (classe7_nbre == 2) then {nbre_classe7 = "2"; var_classe7 = 2;}; if (classe7_nbre == 3) then {nbre_classe7 = "3"; var_classe7 = 3;}; if (classe7_nbre == 4) then {nbre_classe7 = "4"; var_classe7 = 4;}; if (classe7_nbre == 5) then {nbre_classe7 = "5"; var_classe7 = 5;}; if (classe7_nbre == 6) then {nbre_classe7 = "6"; var_classe7 = 6;}; if (classe7_nbre == 7) then {nbre_classe7 = "7"; var_classe7 = 7;}; if (classe7_nbre == 8) then {nbre_classe7 = "8"; var_classe7 = 8;}; if (classe7_nbre == 9) then {nbre_classe7 = "9"; var_classe7 = 9;}; ctrlSetText [10105,nbre_classe7]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe7"; publicvariable "var_classe7"; }; If (true) ExitWith {}// classe1_air (classe 6) _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe3_air < 0) then {classe3_air = 6}; if (classe3_air > 6) then {classe3_air = 0}; if (classe3_air == 0) then {air_classe3 = "None"; code_classe8 = "0";}; if (classe3_air == 1) then {air_classe3 = nomvts2_VehW19; code_classe8 = vts2_VehW19;}; if (classe3_air == 2) then {air_classe3 = nomvts2_VehW20; code_classe8 = vts2_VehW20;}; if (classe3_air == 3) then {air_classe3 = nomvts2_VehW21; code_classe8 = vts2_VehW21;}; if (classe3_air == 4) then {air_classe3 = nomvts2_VehW22; code_classe8 = vts2_VehW22;}; if (classe3_air == 5) then {air_classe3 = nomvts2_VehW23; code_classe8 = vts2_VehW23;}; if (classe3_air == 6) then {air_classe3 = nomvts2_VehW27; code_classe8 = vts2_VehW27;}; ctrlSetText [10109,air_classe3]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe3_air < 0) then {classe3_air = 6}; if (classe3_air > 6) then {classe3_air = 0}; if (classe3_air == 0) then {air_classe3 = "None"; code_classe8 = "0";}; if (classe3_air == 1) then {air_classe3 = nomvts2i_AH6_RACS; code_classe8 = vts2i_AH6_RACS;}; if (classe3_air == 2) then {air_classe3 = nomvts2i_AH1W; code_classe8 = vts2i_AH1W;}; if (classe3_air == 3) then {air_classe3 = nomvts2i_UH60; code_classe8 = vts2i_UH60;}; if (classe3_air == 4) then {air_classe3 = nomvts2i_UH60MG; code_classe8 = vts2i_UH60MG;}; if (classe3_air == 5) then {air_classe3 = nomvts2i_MH6_RACS; code_classe8 = vts2i_MH6_RACS;}; if (classe3_air == 6) then {air_classe3 = nomvts2i_Camel; code_classe8 = vts2i_Camel;}; ctrlSetText [10109,air_classe3]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe3_air < 0) then {classe3_air = 4}; if (classe3_air > 4) then {classe3_air = 0}; if (classe3_air == 0) then {air_classe3 = "None"; code_classe8 = "0";}; if (classe3_air == 1) then {air_classe3 = nomvts2_VehE15; code_classe8 = vts2_VehE15;}; if (classe3_air == 2) then {air_classe3 = nomvts2_VehE16; code_classe8 = vts2_VehE16;}; if (classe3_air == 3) then {air_classe3 = nomvts2_VehE17; code_classe8 = vts2_VehE17;}; if (classe3_air == 4) then {air_classe3 = nomvts2_VehE20; code_classe8 = vts2_VehE20;}; ctrlSetText [10109,air_classe3]; }; }; if (_n == 1) then { if (classe8_nbre < 0) then {classe8_nbre = 9}; if (classe8_nbre > 9) then {classe8_nbre = 0}; if (classe8_nbre == 0) then {nbre_classe8 = "0"; var_classe8 = 0;}; if (classe8_nbre == 1) then {nbre_classe8 = "1"; var_classe8 = 1;}; if (classe8_nbre == 2) then {nbre_classe8 = "2"; var_classe8 = 2;}; if (classe8_nbre == 3) then {nbre_classe8 = "3"; var_classe8 = 3;}; if (classe8_nbre == 4) then {nbre_classe8 = "4"; var_classe8 = 4;}; if (classe8_nbre == 5) then {nbre_classe8 = "5"; var_classe8 = 5;}; if (classe8_nbre == 6) then {nbre_classe8 = "6"; var_classe8 = 6;}; if (classe8_nbre == 7) then {nbre_classe8 = "7"; var_classe8 = 7;}; if (classe8_nbre == 8) then {nbre_classe8 = "8"; var_classe8 = 8;}; if (classe8_nbre == 9) then {nbre_classe8 = "9"; var_classe8 = 9;}; ctrlSetText [10112,nbre_classe8]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe8"; publicvariable "var_classe8"; }; If (true) ExitWith {}// classe1_mun (classe 9) _n = _this select 0; if (blufor_vts) then { if (_n == 0) then { if (classe1_mun < 0) then {classe1_mun = 3}; if (classe1_mun > 3) then {classe1_mun = 0}; if (classe1_mun == 0) then {mun_classe1 = "None"; code_classe9 = "0";}; if (classe1_mun == 1) then {mun_classe1 = nomvts2_VehW32; code_classe9 = vts2_VehW32;}; if (classe1_mun == 2) then {mun_classe1 = nomvts2_VehW33; code_classe9 = vts2_VehW33;}; if (classe1_mun == 3) then {mun_classe1 = nomvts2_VehW34; code_classe9 = vts2_VehW34;}; ctrlSetText [10117,mun_classe1]; }; }; if (inde_vts) then { if (_n == 0) then { if (classe1_mun < 0) then {classe1_mun = 3}; if (classe1_mun > 3) then {classe1_mun = 0}; if (classe1_mun == 0) then {mun_classe1 = "None"; code_classe9 = "0";}; if (classe1_mun == 1) then {mun_classe1 = nomvts2i_WeaponBoxGuer; code_classe9 = vts2i_WeaponBoxGuer;}; if (classe1_mun == 2) then {mun_classe1 = nomvts2i_AmmoBoxGuer; code_classe9 = vts2i_AmmoBoxGuer;}; if (classe1_mun == 3) then {mun_classe1 = nomvts2i_SpecialBoxGuer; code_classe9 = vts2i_SpecialBoxGuer;}; ctrlSetText [10117,mun_classe1]; }; }; if (opfor_vts) then { if (_n == 0) then { if (classe1_mun < 0) then {classe1_mun = 3}; if (classe1_mun > 3) then {classe1_mun = 0}; if (classe1_mun == 0) then {mun_classe1 = "None"; code_classe9 = "0";}; if (classe1_mun == 1) then {mun_classe1 = nomvts2_VehE22; code_classe9 = vts2_VehE22;}; if (classe1_mun == 2) then {mun_classe1 = nomvts2_VehE23; code_classe9 = vts2_VehE23;}; if (classe1_mun == 3) then {mun_classe1 = nomvts2_VehE24; code_classe9 = vts2_VehE24;}; ctrlSetText [10117,mun_classe1]; }; }; if (_n == 1) then { if (classe9_nbre < 0) then {classe9_nbre = 9}; if (classe9_nbre > 9) then {classe9_nbre = 0}; if (classe9_nbre == 0) then {nbre_classe9 = "0"; var_classe9 = 0;}; if (classe9_nbre == 1) then {nbre_classe9 = "1"; var_classe9 = 1;}; if (classe9_nbre == 2) then {nbre_classe9 = "2"; var_classe9 = 2;}; if (classe9_nbre == 3) then {nbre_classe9 = "3"; var_classe9 = 3;}; if (classe9_nbre == 4) then {nbre_classe9 = "4"; var_classe9 = 4;}; if (classe9_nbre == 5) then {nbre_classe9 = "5"; var_classe9 = 5;}; if (classe9_nbre == 6) then {nbre_classe9 = "6"; var_classe9 = 6;}; if (classe9_nbre == 7) then {nbre_classe9 = "7"; var_classe9 = 7;}; if (classe9_nbre == 8) then {nbre_classe9 = "8"; var_classe9 = 8;}; if (classe9_nbre == 9) then {nbre_classe9 = "9"; var_classe9 = 9;}; ctrlSetText [10120,nbre_classe9]; }; if (_n == 2) then { _mf = [] execVM "computer\msge_basea.sqf" ; publicvariable "code_classe9"; publicvariable "var_classe9"; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_artill < 0) then {valid_artill = 10}; if (valid_artill > 10) then {valid_artill = 0}; if (valid_artill == 0) then {artill_valid = "No" ; artill = 0;}; if (valid_artill == 1) then {artill_valid = "5%" ; artill = 5;}; if (valid_artill == 2) then {artill_valid = "10%" ; artill = 10;}; if (valid_artill == 3) then {artill_valid = "15%" ; artill = 15;}; if (valid_artill == 4) then {artill_valid = "20%" ; artill = 20;}; if (valid_artill == 5) then {artill_valid = "25%" ; artill = 25;}; if (valid_artill == 6) then {artill_valid = "30%" ; artill = 30;}; if (valid_artill == 7) then {artill_valid = "35%" ; artill = 35;}; if (valid_artill == 8) then {artill_valid = "40%" ; artill = 40;}; if (valid_artill == 9) then {artill_valid = "50%" ; artill = 50;}; if (valid_artill == 10) then {artill_valid = "60%" ; artill = 60;}; ctrlSetText [10150,artill_valid]; }; if (_n == 1) then { publicvariable "artill"; _mf = [] execVM "computer\msge_artill_valid.sqf" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_artyr < 0) then {valid_artyr = 2}; if (valid_artyr > 2) then {valid_artyr = 0}; if (valid_artyr == 0) then {artyr_valid = "Coord." ;}; if (valid_artyr == 1) then {artyr_valid = "Fire1" ;}; if (valid_artyr == 2) then {artyr_valid = "Eff." ;}; ctrlSetText [10040,artyr_valid]; }; if (_n == 1) then { publicvariable "valid_artyr"; _gnuf4=[] execVM "Computer\request_arty.sqf"; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_base < 0) then {valid_base = 1}; if (valid_base > 1) then {valid_base = 0}; if (valid_base == 0) then {base_valid = "No" ;crea_base = false;}; if (valid_base == 1) then {base_valid = "Yes" ;crea_base = true;}; ctrlSetText [10012,base_valid]; }; if (_n == 1) then { publicvariable "crea_base"; _mf = [] execVM "computer\msge_base.sqf" ; if ((valid_base == 1) and (initialisat)) then { [] spawn base_loggedin; }; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { brume_active = true; publicvariable "brume_active"; if (valid_brume < 0) then {valid_brume = 10}; if (valid_brume > 10) then {valid_brume = 0}; if (valid_brume == 0) then {brume_valid = "0" ; brume = 0 ;}; if (valid_brume == 1) then {brume_valid = "1" ; brume = 0.1 ;}; if (valid_brume == 2) then {brume_valid = "2" ; brume = 0.2 ;}; if (valid_brume == 3) then {brume_valid = "3" ; brume = 0.3 ;}; if (valid_brume == 4) then {brume_valid = "4" ; brume = 0.4 ;}; if (valid_brume == 5) then {brume_valid = "5" ; brume = 0.5 ;}; if (valid_brume == 6) then {brume_valid = "6" ; brume = 0.6 ;}; if (valid_brume == 7) then {brume_valid = "7" ; brume = 0.7 ;}; if (valid_brume == 8) then {brume_valid = "8" ; brume = 0.8 ;}; if (valid_brume == 9) then {brume_valid = "9" ; brume = 0.9 ;}; if (valid_brume == 10) then {brume_valid = "10" ; brume = 1 ;}; ctrlSetText [10032,brume_valid]; }; if (_n == 1) then { brume_affiche = valid_brume ; brume_active = false ; PublicVariable "brume_active" ; PublicVariable "brume" ; reglage_brume = true ; PublicVariable "reglage_brume"; _mf = [] execVM "computer\msge_brume_valid.sqf" ; sleep 10 ; reglage_brume = false ; publicvariable "reglage_brume" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_camp < 0) then {valid_camp = 1}; if (valid_camp > 1) then {valid_camp = 0}; if (blufor_vts) then { if (valid_camp == 0) then {camp_valid = "Opfor" ;}; if (valid_camp == 1) then {camp_valid = "Res." ;}; }; if (opfor_vts) then { if (valid_camp == 0) then {camp_valid = "Blufor" ;}; if (valid_camp == 1) then {camp_valid = "Res." ;}; }; if (inde_vts) then { if (valid_camp == 0) then {camp_valid = "Opfor" ;}; if (valid_camp == 1) then {camp_valid = "Blufor" ;}; }; ctrlSetText [10048,camp_valid]; }; if (_n == 1) then { publicvariable "camp_valid"; _mf = [] execVM "computer\msge_camp_valid.sqf" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_chrono < 0) then {valid_chrono = 10}; if (valid_chrono > 10) then {valid_chrono = 0}; if (valid_chrono == 0) then {chrono_valid = "No" ;chrono_go = 0;}; if (valid_chrono == 1) then {chrono_valid = "20" ;chrono_go = 20;}; if (valid_chrono == 2) then {chrono_valid = "40" ;chrono_go = 40;}; if (valid_chrono == 3) then {chrono_valid = "60" ;chrono_go = 60;}; if (valid_chrono == 4) then {chrono_valid = "80" ;chrono_go = 80;}; if (valid_chrono == 5) then {chrono_valid = "100" ;chrono_go = 100;}; if (valid_chrono == 6) then {chrono_valid = "120" ;chrono_go = 120;}; if (valid_chrono == 7) then {chrono_valid = "140" ;chrono_go = 140;}; if (valid_chrono == 8) then {chrono_valid = "160" ;chrono_go = 160;}; if (valid_chrono == 9) then {chrono_valid = "180" ;chrono_go = 180;}; if (valid_chrono == 10) then {chrono_valid = "200" ;chrono_go = 200;}; ctrlSetText [9980,chrono_valid]; }; if (_n == 1) then { chron = 0 ; publicvariable "chron"; _mf = [] execVM "computer\msge_chrono_valid.sqf" ; sleep 6; chrono_depart = chrono_go ; publicvariable "chrono_depart"; chron = 1 ; publicvariable "chron"; _chron = [] execVM "chrono_top.sqf"; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_civils < 0) then {valid_civils = 1}; if (valid_civils > 1) then {valid_civils = 0}; if (valid_civils == 0) then {civils_valid = "No" ;civils_zone = false;}; if (valid_civils == 1) then {civils_valid = "Yes" ;civils_zone = true;}; ctrlSetText [9990,civils_valid]; }; if (_n == 1) then { publicvariable "civils_zone" ; _mf = [] execVM "computer\msge_civils_valid.sqf" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_grps < -4) then {valid_grps = 14}; if (valid_grps > 14) then {valid_grps = -4}; if (valid_grps == -4) then {nbre_ge = 2 ; grps_valid = "2" ;nbre_ge_active = false ;}; if (valid_grps == -3) then {nbre_ge = 3 ; grps_valid = "3" ;nbre_ge_active = false ; }; if (valid_grps == -2) then {nbre_ge = 4 ; grps_valid = "4" ;nbre_ge_active = false ; }; if (valid_grps == -1) then {nbre_ge = 5 ; grps_valid = "5" ;nbre_ge_active = false ; }; if (valid_grps == 0) then {nbre_ge = 6 ; grps_valid = "6" ;nbre_ge_active = false ; }; if (valid_grps == 1) then {nbre_ge = 7 ; grps_valid = "7" ;nbre_ge_active = false ; }; if (valid_grps == 2) then {nbre_ge = 8 ; grps_valid = "8" ;nbre_ge_active = false ; }; if (valid_grps == 3) then {nbre_ge = 9 ; grps_valid = "9" ;nbre_ge_active = false ; }; if (valid_grps == 4) then {nbre_ge = 10 ; grps_valid = "10" ;nbre_ge_active = false ; }; if (valid_grps == 5) then {nbre_ge = 11 ; grps_valid = "11" ;nbre_ge_active = false ; }; if (valid_grps == 6) then {nbre_ge = 12 ; grps_valid = "12" ;nbre_ge_active = false ; }; if (valid_grps == 7) then {nbre_ge = 13 ; grps_valid = "13" ;nbre_ge_active = false ; }; if (valid_grps == 8) then {nbre_ge = 14 ; grps_valid = "14" ;nbre_ge_active = false ; }; if (valid_grps == 9) then {nbre_ge = 15 ; grps_valid = "15" ;nbre_ge_active = false ; }; if (valid_grps == 10) then {nbre_ge = 16 ; grps_valid = "16" ;nbre_ge_active = false ; }; if (valid_grps == 11) then {nbre_ge = 17 ; grps_valid = "17" ;nbre_ge_active = false ; }; if (valid_grps == 12) then {nbre_ge = 18 ; grps_valid = "18" ;nbre_ge_active = false ; }; if (valid_grps == 13) then {nbre_ge = 19 ; grps_valid = "19" ;nbre_ge_active = false ; }; if (valid_grps == 14) then {nbre_ge = 20 ; grps_valid = "20" ;nbre_ge_active = false ; }; ctrlSetText [10008,grps_valid]; }; if (_n == 1) then { grps_affiche = nbre_ge ; PublicVariable "nbre_ge_active" ; PublicVariable "nbre_ge"; _mf = [] execVM "computer\msge_grpe_eni_valid.sqf" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { heure_active = true; publicvariable "heure_active"; if (valid_heure < 0) then {valid_heure = 23}; if (valid_heure > 23) then {valid_heure = 0}; if (valid_heure == 0) then {heure_valid = "0" ; heure = 0 ;}; if (valid_heure == 1) then {heure_valid = "1" ; heure = 1 ;}; if (valid_heure == 2) then {heure_valid = "2" ; heure = 2 ;}; if (valid_heure == 3) then {heure_valid = "3" ; heure = 3 ;}; if (valid_heure == 4) then {heure_valid = "4" ; heure = 4 ;}; if (valid_heure == 5) then {heure_valid = "5" ; heure = 5 ;}; if (valid_heure == 6) then {heure_valid = "6" ; heure = 6 ;}; if (valid_heure == 7) then {heure_valid = "7" ; heure = 7 ;}; if (valid_heure == 8) then {heure_valid = "8" ; heure = 8 ;}; if (valid_heure == 9) then {heure_valid = "9" ; heure = 9 ;}; if (valid_heure == 10) then {heure_valid = "10" ; heure = 10 ;}; if (valid_heure == 11) then {heure_valid = "11" ; heure = 11 ;}; if (valid_heure == 12) then {heure_valid = "12" ; heure = 12 ;}; if (valid_heure == 13) then {heure_valid = "13" ; heure = 13 ;}; if (valid_heure == 14) then {heure_valid = "14" ; heure = 14 ;}; if (valid_heure == 15) then {heure_valid = "15" ; heure = 15 ;}; if (valid_heure == 16) then {heure_valid = "16" ; heure = 16 ;}; if (valid_heure == 17) then {heure_valid = "17" ; heure = 17 ;}; if (valid_heure == 18) then {heure_valid = "18" ; heure = 18 ;}; if (valid_heure == 19) then {heure_valid = "19" ; heure = 19 ;}; if (valid_heure == 20) then {heure_valid = "20" ; heure = 20 ;}; if (valid_heure == 21) then {heure_valid = "21" ; heure = 21 ;}; if (valid_heure == 22) then {heure_valid = "22" ; heure = 22 ;}; if (valid_heure == 23) then {heure_valid = "23" ; heure = 23 ;}; ctrlSetText [10036,heure_valid]; }; if (_n == 1) then { heure_active = false ; PublicVariable "heure_active" ; PublicVariable "heure" ; reglage_heure = true ; PublicVariable "reglage_heure"; _mf = [] execVM "computer\msge_heure_valid.sqf" ; sleep 6 ; reglage_heure = false ; publicvariable "reglage_heure"; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_ia < -1) then {valid_ia = 1}; if (valid_ia > 1) then {valid_ia = -1}; if (valid_ia == -1) then {ia_valid = "Inerte" ; typeia = 1 ; statique = true ; mobile = false ; agressive = false ; }; if (valid_ia == 0) then {ia_valid = "Mobile" ;typeia = 2 ; statique = false ; mobile = true ; agressive = false ; }; if (valid_ia == 1) then {ia_valid = "Agress." ;typeia = 3 ; statique = false ; mobile = false ; agressive = true ; }; ctrlSetText [10000,ia_valid]; }; if (_n == 1) then { typeia_affiche = typeia ; publicvariable "typeia" ; publicvariable "statique" ; publicvariable "mobile" ; publicvariable "agressive"; _mf = [] execVM "computer\msge_ia3.sqf" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_insertion < 0) then {valid_insertion = 1}; if (valid_insertion > 1) then {valid_insertion = 0}; if (valid_insertion == 0) then {insertion_valid = "Ground" ;}; if (valid_insertion == 1) then {insertion_valid = "Air" ;}; ctrlSetText [10020,insertion_valid]; }; if (_n == 1) then { PublicVariable "insertion_valid" ; if (insertion_valid == "Ground") then { _mf = [] execVM "computer\request_insertionsol.sqf" ; }; if (insertion_valid == "Air") then { _mf = [] execVM "computer\request_insertionpara.sqf" ; }; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_mater < 0) then {valid_mater = 4}; if (valid_mater > 4) then {valid_mater = 0}; if (valid_mater == 0) then {mater_valid = "None" ; mat_eni = 0;}; if (valid_mater == 1) then {mater_valid = "Random" ; mat_eni = 1;}; if (valid_mater == 2) then {mater_valid = "Motor." ; mat_eni = 2;}; if (valid_mater == 3) then {mater_valid = "Meca" ; mat_eni = 3;}; if (valid_mater == 4) then {mater_valid = "Meca./Armor" ; mat_eni = 4;}; ctrlSetText [10140,mater_valid]; }; if (_n == 1) then { mat_eni = valid_mater ; PublicVariable "mat_eni" ; _mf = [] execVM "computer\msge_basee.sqf" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_objectif < 0) then {valid_objectif = 3}; if (valid_objectif > 3) then {valid_objectif = 0}; if (valid_objectif == 0) then {objectif_valid = "Take" ;}; if (valid_objectif == 1) then {objectif_valid = "Target" ;}; if (valid_objectif == 2) then {objectif_valid = "Destr." ;}; if (valid_objectif == 3) then {objectif_valid = "Hostage" ;}; ctrlSetText [10016,objectif_valid]; }; if (_n == 1) then { publicvariable "objectif_valid"; _obj = [] execVM "Computer\request_obj.sqf"; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_paras < 0) then {valid_paras = 10}; if (valid_paras > 10) then {valid_paras = 0}; if (valid_paras == 0) then {paras_valid = "No" ; paras_eni = 0;}; if (valid_paras == 1) then {paras_valid = "5%" ; paras_eni = 5;}; if (valid_paras == 2) then {paras_valid = "10%" ; paras_eni = 10;}; if (valid_paras == 3) then {paras_valid = "15%" ; paras_eni = 15;}; if (valid_paras == 4) then {paras_valid = "20%" ; paras_eni = 20;}; if (valid_paras == 5) then {paras_valid = "25%" ; paras_eni = 25;}; if (valid_paras == 6) then {paras_valid = "30%" ; paras_eni = 30;}; if (valid_paras == 7) then {paras_valid = "35%" ; paras_eni = 35;}; if (valid_paras == 8) then {paras_valid = "40%" ; paras_eni = 40;}; if (valid_paras == 9) then {paras_valid = "50%" ; paras_eni = 50;}; if (valid_paras == 10) then {paras_valid = "60%" ; paras_eni = 60;}; ctrlSetText [10145,paras_valid]; }; if (_n == 1) then { publicvariable "paras_eni"; _mf = [] execVM "computer\msge_para_valid.sqf" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { pluie_active = true; publicvariable "pluie_active"; if (valid_pluie < 0) then {valid_pluie = 10}; if (valid_pluie > 10) then {valid_pluie = 0}; if (valid_pluie == 0) then {pluie_valid = "0" ; pluie = 0 ;}; if (valid_pluie == 1) then {pluie_valid = "1" ; pluie = 0.1 ;}; if (valid_pluie == 2) then {pluie_valid = "2" ; pluie = 0.2 ;}; if (valid_pluie == 3) then {pluie_valid = "3" ; pluie = 0.3 ;}; if (valid_pluie == 4) then {pluie_valid = "4" ; pluie = 0.4 ;}; if (valid_pluie == 5) then {pluie_valid = "5" ; pluie = 0.5 ;}; if (valid_pluie == 6) then {pluie_valid = "6" ; pluie = 0.6 ;}; if (valid_pluie == 7) then {pluie_valid = "7" ; pluie = 0.7 ;}; if (valid_pluie == 8) then {pluie_valid = "8" ; pluie = 0.8 ;}; if (valid_pluie == 9) then {pluie_valid = "9" ; pluie = 0.9 ;}; if (valid_pluie == 10) then {pluie_valid = "10" ; pluie = 1 ;}; ctrlSetText [10028,pluie_valid]; }; if (_n == 1) then { pluie_affiche = valid_pluie ; pluie_active = false ; PublicVariable "pluie_active" ; PublicVariable "pluie" ; reglage_pluie = true ; PublicVariable "reglage_pluie"; _mf = [] execVM "computer\msge_pluie_valid.sqf" ; sleep 6 ; reglage_pluie = false ; publicvariable "reglage_pluie" ; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_respawn < 0) then {valid_respawn = 1}; if (valid_respawn > 1) then {valid_respawn = 0}; if (valid_respawn == 0) then {respawn_valid = "Yes" ;}; if (valid_respawn == 1) then {respawn_valid = "No" ;}; ctrlSetText [10024,respawn_valid]; }; if (_n == 1) then { if (respawn_valid == "Yes") then { respawn_normal = true ; respawn_carceral = false ; publicvariable "respawn_normal"; publicvariable "respawn_carceral"; sleep 1 ; _mf = [] execVM "computer\msge_respawn.sqf" ; }; if (respawn_valid == "No") then { respawn_normal = false ; respawn_carceral = true ; publicvariable "respawn_normal"; publicvariable "respawn_carceral"; sleep 1 ; _mf = [] execVM "computer\msge_respawn.sqf" ; }; }; If (true) ExitWith {}_n = _this select 0; if (_n == 0) then { if (valid_sate < 0) then {valid_sate = 1}; if (valid_sate > 1) then {valid_sate = 0}; if (valid_sate == 0) then {sate_valid = "Call" ;}; if (valid_sate == 1) then {sate_valid = "Confirm" ;}; // ctrlSetText [10044,sate_valid]; }; if (_n == 1) then { if (sate_valid == "Call") then { OnMapArrayS=[]; OnMapSingleClick "OnMapArrayS=OnMapArrayS+[_pos]; ""Sat_Marker"" setMarkerpos _pos; SAT_Logic setpos _pos"; _Sat=[] execVM "Computer\request_Sat.sqf"; }; if (sate_valid == "Confirm") then { _gnuff=[] execVM "Computer\msge_sat.sqf"; OnMapSingleClick ""; _ok=[] execVM "Satellite\sat_dialog.sqf"; }; };_n = _this select 0; if (_n == 0) then { if (valid_zone < -2) then {valid_zone = 7}; if (valid_zone > 7) then {valid_zone = -2}; if (valid_zone == -2) then {concentration = 200 ; zone_valid = "200" ;}; if (valid_zone == -1) then {concentration = 400 ; zone_valid = "400" ;}; if (valid_zone == 0) then {concentration = 600 ; zone_valid = "600" ;}; if (valid_zone == 1) then {concentration = 800 ; zone_valid = "800" ;}; if (valid_zone == 2) then {concentration = 1000 ; zone_valid = "1000" ;}; if (valid_zone == 3) then {concentration = 1200 ; zone_valid = "1200" ;}; if (valid_zone == 4) then {concentration = 1400 ; zone_valid = "1400" ;}; if (valid_zone == 5) then {concentration = 1600 ; zone_valid = "1600" ;}; if (valid_zone == 6) then {concentration = 1800 ; zone_valid = "1800" ;}; if (valid_zone == 7) then {concentration = 2000 ; zone_valid = "2000" ;}; ctrlSetText [10004,zone_valid]; }; if (_n == 1) then { concentration_affiche = concentration ; concentration_active = false ; PublicVariable "concentration_active" ; PublicVariable "concentration"; _mf = [] execVM "computer\msge_concentration_valid.sqf" ; if (objectifmarq) then { if (local joueur1) then { deletemarker "a" ; markerobj5 = createMarkerLocal ["a",[(destination_x), (destination_y),0]] ; markerobj5 setMarkerShapeLocal "RECTANGLE" ; "a" setMarkerSizeLocal [concentration, concentration] ; "a" setMarkerDirLocal 90 ; "a" setMarkerColorLocal "ColorRed"; }; if (local joueure1) then { deletemarker "a" ; markerobj5 = createMarkerLocal ["a",[(destination_x), (destination_y),0]] ; markerobj5 setMarkerShapeLocal "RECTANGLE" ; "a" setMarkerSizeLocal [concentration, concentration] ; "a" setMarkerDirLocal 90 ; "a" setMarkerColorLocal "ColorRed"; }; if (local joueuri1) then { deletemarker "a" ; markerobj5 = createMarkerLocal ["a",[(destination_x), (destination_y),0]] ; markerobj5 setMarkerShapeLocal "RECTANGLE" ; "a" setMarkerSizeLocal [concentration, concentration] ; "a" setMarkerDirLocal 90 ; "a" setMarkerColorLocal "ColorRed"; }; }; }; If (true) ExitWith {}disableSerialization; // _display = finddisplay 8000; // _txt = _display displayctrl 200; // _txt CtrlSetText "Indiquez la valeur"; // _txt CtrlSetTextColor [0,1,0,1]; // pluie_active = true ; // publicvariable "pluie_active"; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "0 = beau ; 1 = orage ; dcimales"; _txt CtrlSetTextColor [0,1,0,1]; while {dialog} do { Ctrlshow [200,true];sleep 0.75;CtrlShow [200,false];sleep 0.75; }; _txt CtrlSetText "Confirm CAS"; _txt CtrlSetTextColor [1,1,0,1]; while {dialog} do { CtrlShow [200,false];sleep 1;Ctrlshow [200,true];sleep 1; }; brume_active = true ; publicvariable "brume_active"; If (true) ExitWith {} if (CASOn==1) then {[west,"HQ"] sideChat format ["CrossRoad to Raw Hide 1, CAS mission at %1 on the way, over.",[LaserGL] call GetRCoord];}; if (CASOn==2) then {pHarrier SideChat format ["Tango 1 to Raw Hide 1, proceeding on to %1 for CAS, target at %2m. over.",[LaserGL] call GetRCoord,(floor (LaserGL distance Harrier))]}; if (CASOn==0) then {pHarrier SideChat "Tango 1 to Raw Hide 1, no target. Pulling back to safe zone, over."}; if (CASOn==4) exitWith {[west,"HQ"] sideChat "CrossRoad to Raw Hide 1, Harrier destroyed, CAS unavailable until further notice. Good luck, over."}; if (isServer) then { if (CASOn==1) then { CASOn=3;PublicVariable "CASOn"; harrier=createVehicle ["av8b", getMarkerpos "cas", ["cas"], 0, "FLY"]; harrier setpos [getpos harrier select 0,getpos harrier select 1,500]; harrier setdir 90; harrier addEventHandler ["Killed",{CASOn=4;publicVariable "CASOn";}]; harrier addEventHandler ["hit",{harrier setdamage 0;pHarrier sideChat "Tango 1 under fire, I say again, Tango 1 taking fire!"}]; publicVariable "harrier"; _grp=CreateGroup west; pHarrier=_grp createUnit ["SoldierWPilot", [0,0,0], ["cas"], 0, "FORM"]; [pHarrier] join _grp; pHarrier setrank "colonel"; pHarrier setskill 1; publicVariable "pHarrier"; pHarrier moveindriver harrier; harrier flyinheight 500; pHarrier addEventHandler ["Killed",{CASOn=4;PublicVariable "CASOn";}];CASOn=2;PublicVariable "CASOn";}; if (CASOn==2) then { Dostop harrier;harrier setdamage 0; harrier flyinheight 500; pHarrier domove position LaserGL; CASOn=3;PublicVariable "CASOn"; }; if (CASOn==0) then { Dostop harrier;harrier setdamage 0;harrier setfuel 1; harrier removemagazine "300Rnd_25mm_GAU12";harrier removemagazine "6Rnd_GBU12_AV8B"; harrier addmagazine "300Rnd_25mm_GAU12";harrier addmagazine "6Rnd_GBU12_AV8B"; //harrier setpos [getMarkerpos "cas" select 0,getMarkerpos "cas" select 1,500];harrier setdir 90; pHarrier domove getmarkerpos "cas";CASOn=3;PublicVariable "CASOn";}}; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _ack = _display displayctrl 201; _cmd = _display displayctrl 104; ctrlShow [201,true]; sleep 0.5; ctrlShow [201,false]; sleep 0.5; _cmd CtrlSetText ""; If (true) ExitWith {}// attitude _n = _this select 0; if (_n == 0) then { if (joueur_scripteur < 0) then {joueur_scripteur = 1}; if (joueur_scripteur > 1) then {joueur_scripteur = 0}; // On dcline les possibilits if (joueur_scripteur == 0) then { nom_console_joueur = "Player" ; // on masque le nom ctrlShow [10231,false]; ctrlShow [10222,false]; // on masque l'init ctrlShow [10232,false]; ctrlShow [10223,false]; // on masque le module "ligne de commande" _j = 10242; while {_j<=10249} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; // on masque le module "dclencheur" _j = 10250; while {_j<=10293} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; if (console_valid_camp == 4) then { // on masque l'attitude 10211=)10220 , 10225,26,27 _j = 10211; while {_j<=10220} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; ctrlShow [10225,false]; ctrlShow [10226,false]; ctrlShow [10227,false]; }; }; if (joueur_scripteur == 1) then { nom_console_joueur = "Editor" ; // on montre le nom ctrlShow [10231,true]; ctrlShow [10222,true]; // on montre l'init ctrlShow [10232,true]; ctrlShow [10223,true]; // on montre le module "ligne de commande" _j = 10242; while {_j<=10249} do { call compile format ["ctrlShow [%1,true];",_j];_j=_j+1}; // on montre le module "dclencheur" _j = 10250; while {_j<=10293} do { call compile format ["ctrlShow [%1,true];",_j];_j=_j+1}; if (console_valid_camp == 4) then { // on masque l'init ctrlShow [10232,false]; ctrlShow [10223,false]; // on masque l'attitude 10211=)10220 , 10225,26,27 _j = 10211; while {_j<=10220} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; ctrlShow [10225,false]; ctrlShow [10226,false]; ctrlShow [10227,false]; }; if (console_valid_type == 4) then { // on masque l'init ctrlShow [10232,false]; ctrlShow [10223,false]; }; }; ctrlSetText [10235,nom_console_joueur]; }; If (true) ExitWith {}// attitude _n = _this select 0; if (_n == 0) then { if (console_valid_attitude < 0) then {console_valid_attitude = 4}; if (console_valid_attitude > 4) then {console_valid_attitude = 0}; // On décline les possibilités if (console_valid_attitude == 0) then { nom_console_valid_attitude = "Careless" ; var_console_valid_attitude = "CARELESS" ; }; if (console_valid_attitude == 1) then { nom_console_valid_attitude = "Safe" ; var_console_valid_attitude = "SAFE" ; }; if (console_valid_attitude == 2) then { nom_console_valid_attitude = "Aware" ; var_console_valid_attitude = "AWARE" ; }; if (console_valid_attitude == 3) then { nom_console_valid_attitude = "Combat" ; var_console_valid_attitude = "COMBAT" ; }; if (console_valid_attitude == 4) then { nom_console_valid_attitude = "Stealth" ; var_console_valid_attitude = "STEALTH" ; }; ctrlSetText [10212,nom_console_valid_attitude]; }; // camp _n = _this select 0; _MydualList2= [ [" 1- Not move","0"], [" 2- Go to Objective","1"], [" 3- Go to Insertion","2"], [" 4- Go to Player","3"], [" 5- " + script1,"4"], [" 6- " + script2,"5"], [" 7- " + script3,"6"], [" 8- " + script4,"7"], [" 9- " + script5,"8"], ["10- " + script6,"9"], ["11- " + script7,"10"] ]; [10218, _MydualList2] call Dlg_FillListBoxLists; if (_n == 0) then { if (console_valid_camp < 0) then {console_valid_camp = 4}; if (console_valid_camp > 4) then {console_valid_camp = 0}; // On dcline les possibilits if (console_valid_camp == 0) then { nom_console_valid_camp = "Blufor" ; var_console_valid_camp = "Blufor" ; _MydualList = [ ["Homme","0"], ["Vehicle","1"], ["Groupe","2"], ["Statique","3"], ["Matrl","4"] ]; [10305, _MydualList] call Dlg_FillListBoxLists; // On montre le type ctrlShow [10219,true]; ctrlShow [10206,true]; ctrlShow [10207,true]; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On montre la vitesse ctrlShow [10214,true]; ctrlShow [10215,true]; ctrlShow [10216,true]; // On montre le mouvement ctrlShow [10217,true]; ctrlShow [10218,true]; ctrlShow [10219,true]; // On montre le moral ctrlShow [10220,true]; ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; if (console_valid_camp == 1) then { nom_console_valid_camp = "Opfor" ; var_console_valid_camp = "Opfor" ; _MydualList = [ ["Homme","0"], ["Vehicle","1"], ["Groupe","2"], ["Statique","3"], ["Matrl","4"] ]; [10305, _MydualList] call Dlg_FillListBoxLists; // On montre le type ctrlShow [10205,true]; ctrlShow [10206,true]; ctrlShow [10207,true]; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On montre la vitesse ctrlShow [10214,true]; ctrlShow [10215,true]; ctrlShow [10216,true]; // On montre le mouvement ctrlShow [10217,true]; ctrlShow [10218,true]; ctrlShow [10219,true]; // On montre le moral ctrlShow [10220,true]; ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; if (console_valid_camp == 2) then { nom_console_valid_camp = "Res." ; var_console_valid_camp = "Indep." ; _MydualList = [ ["Homme","0"], ["Vehicle","1"], ["Groupe","2"], ["Statique","3"], ["Matrl","4"] ]; [10305, _MydualList] call Dlg_FillListBoxLists; // On montre le type ctrlShow [10205,true]; ctrlShow [10206,true]; ctrlShow [10207,true]; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On montre la vitesse ctrlShow [10214,true]; ctrlShow [10215,true]; ctrlShow [10216,true]; // On montre le mouvement ctrlShow [10217,true]; ctrlShow [10218,true]; ctrlShow [10219,true]; // On montre le moral ctrlShow [10220,true]; ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; if (console_valid_camp == 3) then { nom_console_valid_camp = "Civilian" ; var_console_valid_camp = "Civil" ; _MydualList = [ ["Homme","0"], ["Vehicle","1"], ["Groupe","2"], ["Statique","3"], ["Matrl","4"] ]; [10305, _MydualList] call Dlg_FillListBoxLists; // On montre le type //ctrlShow [10205,true]; ctrlShow [10206,true]; ctrlShow [10207,true]; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On montre la vitesse ctrlShow [10214,true]; ctrlShow [10215,true]; ctrlShow [10216,true]; // On montre le mouvement ctrlShow [10217,true]; ctrlShow [10218,true]; ctrlShow [10219,true]; // On montre le moral ctrlShow [10220,true]; ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; if (console_valid_camp == 4) then { nom_console_valid_camp = "Object" ; var_console_valid_camp = "Objet" ; _MydualList = [ ["Divers","0"] ]; [10305, _MydualList] call Dlg_FillListBoxLists; // On masque le type ctrlShow [10205,false]; ctrlShow [10206,false]; ctrlShow [10207,false]; // On masque l'attitude ctrlShow [10211,false]; ctrlShow [10212,false]; ctrlShow [10213,false]; // On masque la vitesse ctrlShow [10214,false]; ctrlShow [10215,false]; ctrlShow [10216,false]; // On masque le mouvement ctrlShow [10217,false]; ctrlShow [10218,false]; //ctrlShow [10219,false]; // On masque le moral ctrlShow [10220,false]; ctrlShow [10225,false]; ctrlShow [10226,false]; ctrlShow [10227,false]; // on limine le rsidu mouvement console_valid_mouvement = 0 ; }; ctrlSetText [10203,nom_console_valid_camp]; _n = [0] execVM "computer\console\boutons\console_valid_type.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_unite.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_mouvement.sqf"; _n = [0] execVM "computer\console\boutons\console_joueur_scripteur.sqf"; }; If (true) ExitWith {}// moral _n = _this select 0; if (_n == 0) then { if (console_valid_moral < 0) then {console_valid_moral = 10}; if (console_valid_moral > 10) then {console_valid_moral = 0}; // On dcline les possibilits if (console_valid_moral == 0) then { nom_console_valid_moral = "0" ; console_unit_moral = 0; }; if (console_valid_moral == 1) then { nom_console_valid_moral = "0.1" ; console_unit_moral = 0.1; }; if (console_valid_moral == 2) then { nom_console_valid_moral = "0.2" ; console_unit_moral = 0.2; }; if (console_valid_moral == 3) then { nom_console_valid_moral = "0.3" ; console_unit_moral = 0.3; }; if (console_valid_moral == 4) then { nom_console_valid_moral = "0.4" ; console_unit_moral = 0.4; }; if (console_valid_moral == 5) then { nom_console_valid_moral = "0.5" ; console_unit_moral = 0.5; }; if (console_valid_moral == 6) then { nom_console_valid_moral = "0.6" ; console_unit_moral = 0.6; }; if (console_valid_moral == 7) then { nom_console_valid_moral = "0.7" ; console_unit_moral = 0.7; }; if (console_valid_moral == 8) then { nom_console_valid_moral = "0.8" ; console_unit_moral = 0.8; }; if (console_valid_moral == 9) then { nom_console_valid_moral = "0.9" ; console_unit_moral = 0.9; }; if (console_valid_moral == 10) then { nom_console_valid_moral = "1" ; console_unit_moral = 1; }; ctrlSetText [10226,nom_console_valid_moral]; }; If (true) ExitWith {}// mouvement _n = _this select 0; if (_n == 0) then { // if (nom_console_valid_type != "Static" ) then { console_valid_mouvement = lbCurSel 10218; // }; //hint format ["console_valid_unite : %1",console_valid_unite]; // if (console_valid_mouvement < 0) then {console_valid_mouvement = 10}; // if (console_valid_mouvement > 10) then {console_valid_mouvement = 0}; // On dcline les possibilits if (console_valid_mouvement == 0) then { ctrlShow [10304,false]; nom_console_valid_mouvement = "None" ; var_console_valid_mouvement = "" ; }; if (console_valid_mouvement == 1) then { ctrlShow [10304,false]; nom_console_valid_mouvement = "Objve" ; var_console_valid_mouvement = "objectif" ; }; if (console_valid_mouvement == 2) then { ctrlShow [10304,false]; nom_console_valid_mouvement = "Insert" ; var_console_valid_mouvement = "insertion" ; }; if (console_valid_mouvement == 3) then { ctrlShow [10304,false]; nom_console_valid_mouvement = "Player" ; var_console_valid_mouvement = "Joueur" ; }; if (console_valid_mouvement == 4) then { ctrlShow [10304,false]; nom_console_valid_mouvement = script1 ; var_console_valid_mouvement = script1Sqf ; }; if (console_valid_mouvement == 5) then { ctrlShow [10304,false]; nom_console_valid_mouvement = script2 ; var_console_valid_mouvement = script2Sqf ; }; if (console_valid_mouvement == 6) then { ctrlShow [10304,false]; nom_console_valid_mouvement = script3 ; var_console_valid_mouvement = script3Sqf ; }; if (console_valid_mouvement == 7) then { ctrlShow [10304,false]; nom_console_valid_mouvement = script4 ; var_console_valid_mouvement = script4Sqf ; }; if (console_valid_mouvement == 8) then { ctrlShow [10304,false]; nom_console_valid_mouvement = script5 ; var_console_valid_mouvement = script5Sqf ; }; if (console_valid_mouvement == 9) then { ctrlShow [10304,false]; nom_console_valid_mouvement = script6 ; var_console_valid_mouvement = script6Sqf ; }; if (console_valid_mouvement == 10) then { ctrlShow [10304,true]; nom_console_valid_mouvement = script7 ; var_console_valid_mouvement = script7Sqf ; }; ctrlSetText [10218,nom_console_valid_mouvement]; }; If (true) ExitWith {};// orientation _n = _this select 0; if (_n == 0) then { if (console_valid_orientation < 0) then {console_valid_orientation = 7}; if (console_valid_orientation > 7) then {console_valid_orientation = 0}; // On dcline les possibilits if (console_valid_orientation == 0) then { nom_console_valid_orientation = "N" ; console_unit_orientation = 0; }; if (console_valid_orientation == 1) then { nom_console_valid_orientation = "N-E" ; console_unit_orientation = 45; }; if (console_valid_orientation == 2) then { nom_console_valid_orientation = "E" ; console_unit_orientation = 90; }; if (console_valid_orientation == 3) then { nom_console_valid_orientation = "S-E" ; console_unit_orientation = 135; }; if (console_valid_orientation == 4) then { nom_console_valid_orientation = "S" ; console_unit_orientation = 180; }; if (console_valid_orientation == 5) then { nom_console_valid_orientation = "S-W" ; console_unit_orientation = -135; }; if (console_valid_orientation == 6) then { nom_console_valid_orientation = "W" ; console_unit_orientation = -90; }; if (console_valid_orientation == 7) then { nom_console_valid_orientation = "N-W" ; console_unit_orientation = -45; }; ctrlSetText [10229,nom_console_valid_orientation]; }; If (true) ExitWith {}// type //hint format["console_valid_type %1",console_valid_type]; _n = _this select 0; console_valid_type = lbCurSel 10305; //hint format["console_valide %1", console_valid_type]; //hint "console_valide"; //sleep 1; //hint format["_n %1", _n]; //sleep 1; //_n = 0 if (_n == 0) then { //nom_console_valid_type = lbCurSel 10305; //console_valid_type == lbCurSel 10305; // if (console_valid_type < 0) then {console_valid_type = 4}; // if (console_valid_type > 4) then {console_valid_type = 0}; // On dcline les possibilits if (console_valid_type == 0) then { nom_console_valid_type = "Man" ; var_console_valid_type = "Homme" ; // hint format["var_console_valid_type %1", nom_console_valid_type]; // sleep 1; // hint format["nom_console_valid_camp %1", nom_console_valid_camp]; if (nom_console_valid_camp == "Blufor") then { //Blufor // sleep 1; // hint "ok"; _MydualList2 = [ [nomvts2_ManW1,"0"], [nomvts2_ManW2,"1"], [nomvts2_ManW3,"2"], [nomvts2_ManW4,"3"], [nomvts2_ManW5,"4"], [nomvts2_ManW6,"5"], [nomvts2_ManW7,"6"], [nomvts2_ManW8,"7"], [nomvts2_ManW9,"8"], [nomvts2_ManW10,"9"], [nomvts2_ManW11,"10"], [nomvts2_ManW12,"11"], [nomvts2_ManW13,"12"], [nomvts2_ManW14,"13"], [nomvts2_ManW15,"14"], [nomvts2_ManW16,"15"], [nomvts2_ManW17,"16"], [nomvts2_ManW18,"17"], [nomvts2_ManW19,"18"], [nomvts2_ManW20,"19"], [nomvts2_ManW21,"20"], [nomvts2_ManW22,"21"], [nomvts2_ManW23,"22"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Opfor") then { //opfor // sleep 1; // hint "ok"; _MydualList2 = [ [nomvts2_ManE1,"0"], [nomvts2_ManE2,"1"], [nomvts2_ManE3,"2"], [nomvts2_ManE4,"3"], [nomvts2_ManE5,"4"], [nomvts2_ManE6,"5"], [nomvts2_ManE7,"6"], [nomvts2_ManE8,"7"], [nomvts2_ManE9,"8"], [nomvts2_ManE10,"9"], [nomvts2_ManE11,"10"], [nomvts2_ManE12,"11"], [nomvts2_ManE13,"12"], [nomvts2_ManE14,"13"], [nomvts2_ManE15,"14"], [nomvts2_ManE16,"15"], [nomvts2_ManE17,"16"], [nomvts2_ManE18,"17"], [nomvts2_ManE19,"18"], [nomvts2_ManE20,"19"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Res.") then { //Res. // sleep 1; // hint "ok"; _MydualList2 = [ [nomvts2_Mani1,"0"], [nomvts2_Mani2,"1"], [nomvts2_Mani3,"2"], [nomvts2_Mani4,"3"], [nomvts2_Mani5,"4"], [nomvts2_Mani6,"5"], [nomvts2_Mani7,"6"], [nomvts2_Mani8,"7"], [nomvts2_Mani9,"8"], [nomvts2_Mani10,"9"], [nomvts2_Mani11,"10"], [nomvts2_Mani12,"11"], [nomvts2_Mani13,"12"], [nomvts2_Mani14,"13"], [nomvts2_Mani15,"14"], [nomvts2_Mani16,"15"], [nomvts2_Mani17,"16"], [nomvts2_Mani18,"17"], [nomvts2_Mani19,"18"], [nomvts2_Mani20,"19"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Civilian") then { //Res. // sleep 1; // hint "ok"; _MydualList2 = [ [nomvts2_ManCiv1,"0"], [nomvts2_ManCiv2,"1"], [nomvts2_ManCiv3,"2"], [nomvts2_ManCiv4,"3"], [nomvts2_ManCiv5,"4"], [nomvts2_ManCiv6,"5"], [nomvts2_ManCiv7,"6"], [nomvts2_ManCiv8,"7"], [nomvts2_ManCiv9,"8"], [nomvts2_ManCiv10,"9"], [nomvts2_ManCiv11,"10"], [nomvts2_ManCiv12,"11"], [nomvts2_ManCiv13,"12"], [nomvts2_ManCiv14,"13"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On montre la vitesse ctrlShow [10214,true]; ctrlShow [10215,true]; ctrlShow [10216,true]; // On montre le mouvement ctrlShow [10217,true]; ctrlShow [10218,true]; ctrlShow [10219,true]; // On montre le moral ctrlShow [10220,true]; // On montre le 3D & Preview ctrlShow [10210,true]; ctrlShow [10399,true]; ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; //Object if (nom_console_valid_camp == "Object") then { //hint "test"; nom_console_valid_type = "Divers" ; var_console_valid_type = "Divers" ; _MydualList2 = [ [nomvts2_Obj1,"0"], [nomvts2_Obj2,"1"], [nomvts2_Obj3,"2"], [nomvts2_Obj4,"3"], [nomvts2_Obj5,"4"], [nomvts2_Obj6,"5"], [nomvts2_Obj7,"6"], [nomvts2_Obj8,"7"], [nomvts2_Obj9,"8"], [nomvts2_Obj10,"9"], [nomvts2_Obj11,"10"], [nomvts2_Obj12,"11"], [nomvts2_Obj13,"12"], [nomvts2_Obj14,"13"], [nomvts2_Obj15,"14"], [nomvts2_Obj16,"15"], [nomvts2_Obj17,"16"], [nomvts2_Obj18,"17"], [nomvts2_Obj19,"18"], [nomvts2_Obj20,"19"], [nomvts2_Obj21,"20"], [nomvts2_Obj22,"21"], [nomvts2_Obj23,"22"], [nomvts2_Obj24,"23"], [nomvts2_Obj25,"24"], [nomvts2_Obj26,"25"], [nomvts2_Obj27,"26"], [nomvts2_Obj28,"27"], [nomvts2_Obj29,"28"], [nomvts2_Obj30,"29"], [nomvts2_Obj31,"30"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; console_valid_mouvement = 0 ; _n = [0] execVM "computer\console\boutons\console_valid_mouvement.sqf"; // On masque l'attitude ctrlShow [10211,false]; ctrlShow [10212,false]; ctrlShow [10213,false]; // On masque la vitesse ctrlShow [10214,false]; ctrlShow [10215,false]; ctrlShow [10216,false]; // On masque le mouvement ctrlShow [10217,false]; ctrlShow [10218,false]; ctrlShow [10219,true]; ctrlShow [10304,false]; // On montre le 3D & Preview ctrlShow [10210,true]; ctrlShow [10399,true]; // On masque le moral ctrlShow [10220,false]; ctrlShow [10225,false]; ctrlShow [10226,false]; ctrlShow [10227,false]; }; if (console_valid_type == 1) then //if (nom_console_valid_type == "Vehicle") then { nom_console_valid_type = "Vehicle" ; var_console_valid_type = "Vehicle" ; if (nom_console_valid_camp == "Blufor") then { //Blufor _MydualList2 = [ [nomvts2_VehW1,"0"], [nomvts2_VehW2,"1"], [nomvts2_VehW3,"2"], [nomvts2_VehW4,"3"], [nomvts2_VehW5,"4"], [nomvts2_VehW6,"5"], [nomvts2_VehW7,"6"], [nomvts2_VehW8,"7"], [nomvts2_VehW9,"8"], [nomvts2_VehW10,"9"], [nomvts2_VehW11,"10"], [nomvts2_VehW12,"11"], [nomvts2_VehW13,"12"], [nomvts2_VehW14,"13"], [nomvts2_VehW15,"14"], [nomvts2_VehW16,"15"], [nomvts2_VehW17,"16"], [nomvts2_VehW18,"17"], [nomvts2_VehW19,"18"], [nomvts2_VehW20,"19"], [nomvts2_VehW21,"20"], [nomvts2_VehW22,"21"], [nomvts2_VehW23,"22"], [nomvts2_VehW24,"23"], [nomvts2_VehW25,"24"], [nomvts2_VehW26,"25"], [nomvts2_VehW27,"26"], [nomvts2_VehW28,"27"], [nomvts2_VehW29,"28"], [nomvts2_VehW30,"29"], [nomvts2_VehW31,"30"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Opfor") then { //opfor _MydualList2 = [ [nomvts2_VehE1,"0"], [nomvts2_VehE2,"1"], [nomvts2_VehE3,"2"], [nomvts2_VehE4,"3"], [nomvts2_VehE5,"4"], [nomvts2_VehE6,"5"], [nomvts2_VehE7,"6"], [nomvts2_VehE8,"7"], [nomvts2_VehE9,"8"], [nomvts2_VehE10,"9"], [nomvts2_VehE11,"10"], [nomvts2_VehE12,"11"], [nomvts2_VehE13,"12"], [nomvts2_VehE14,"13"], [nomvts2_VehE15,"14"], [nomvts2_VehE16,"15"], [nomvts2_VehE17,"16"], [nomvts2_VehE18,"17"], [nomvts2_VehE19,"18"], [nomvts2_VehE20,"19"], [nomvts2_VehE21,"20"], [nomvts2_VehE22,"21"], [nomvts2_VehE23,"22"], [nomvts2_VehE24,"23"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Res.") then { //Res. _MydualList2 = [ [nomvts2_Vehi1,"0"], [nomvts2_Vehi2,"1"], [nomvts2_Vehi3,"2"], [nomvts2_Vehi4,"3"], [nomvts2_Vehi5,"4"], [nomvts2_Vehi6,"5"], [nomvts2_Vehi7,"6"], [nomvts2_Vehi8,"7"], [nomvts2_Vehi9,"8"], [nomvts2_Vehi10,"9"], [nomvts2_Vehi11,"10"], [nomvts2_Vehi12,"11"], [nomvts2_Vehi13,"12"], [nomvts2_Vehi14,"13"], [nomvts2_Vehi15,"14"], [nomvts2_Vehi16,"15"], [nomvts2_Vehi17,"16"], [nomvts2_Vehi18,"17"], [nomvts2_Vehi19,"18"], [nomvts2_Vehi20,"19"], [nomvts2_Vehi21,"20"], [nomvts2_Vehi22,"21"], [nomvts2_Vehi23,"22"], [nomvts2_Vehi24,"23"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Civilian") then { //Civilian _MydualList2 = [ [nomvts2_VehCiv1,"0"], [nomvts2_VehCiv2,"1"], [nomvts2_VehCiv3,"2"], [nomvts2_VehCiv4,"3"], [nomvts2_VehCiv5,"4"], [nomvts2_VehCiv6,"5"], [nomvts2_VehCiv7,"6"], [nomvts2_VehCiv8,"7"], [nomvts2_VehCiv9,"8"], [nomvts2_VehCiv10,"9"], [nomvts2_VehCiv11,"10"], [nomvts2_VehCiv12,"11"], [nomvts2_VehCiv13,"12"], [nomvts2_VehCiv14,"13"], [nomvts2_VehCiv15,"14"], [nomvts2_VehCiv16,"15"], [nomvts2_VehCiv17,"16"], [nomvts2_VehCiv18,"17"], [nomvts2_VehCiv19,"18"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On montre la vitesse ctrlShow [10214,true]; ctrlShow [10215,true]; ctrlShow [10216,true]; // On montre le mouvement ctrlShow [10217,true]; ctrlShow [10218,true]; ctrlShow [10219,true]; // On montre le 3D & Preview ctrlShow [10210,true]; ctrlShow [10399,true]; // On montre le moral ctrlShow [10220,true]; ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; if (console_valid_type == 2) then { nom_console_valid_type = "Group" ; var_console_valid_type = "Groupe" ; if (nom_console_valid_camp == "Blufor") then { //Blufor _MydualList2 = [ [nomvts2_GrpW1,"0"], [nomvts2_GrpW2,"1"], [nomvts2_GrpW3,"2"], [nomvts2_GrpW4,"3"], [nomvts2_GrpW5,"4"], [nomvts2_GrpW6,"5"], [nomvts2_GrpW7,"6"], [nomvts2_GrpW8,"7"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Opfor") then { //Opfor _MydualList2 = [ [nomvts2_GrpE1,"0"], [nomvts2_GrpE2,"1"], [nomvts2_GrpE3,"2"], [nomvts2_GrpE4,"3"], [nomvts2_GrpE5,"4"], [nomvts2_GrpE6,"5"], [nomvts2_GrpE7,"6"], [nomvts2_GrpE8,"7"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Res.") then { //Res. _MydualList2 = [ [nomvts2_Grpi1,"0"], [nomvts2_Grpi2,"1"], [nomvts2_Grpi3,"2"], [nomvts2_Grpi4,"3"], [nomvts2_Grpi5,"4"], [nomvts2_Grpi6,"5"], [nomvts2_Grpi7,"6"], [nomvts2_Grpi8,"7"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Civilian") then { //Civilian _MydualList2 = [ [nomvts2_GrpCiv1,"0"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On montre la vitesse ctrlShow [10214,true]; ctrlShow [10215,true]; ctrlShow [10216,true]; // On montre le mouvement ctrlShow [10217,true]; ctrlShow [10218,true]; //ctrlShow [10219,true]; ctrlShow [10210,false]; ctrlShow [10399,false]; // On cache le 3D & Preview ctrlShow [10210,false]; ctrlShow [10399,false]; // On montre le moral ctrlShow [10220,true]; ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; if (console_valid_type == 3) then { nom_console_valid_type = "Static" ; var_console_valid_type = "Statique" ; console_valid_mouvement = 0; //nom_console_valid_mouvement = "None"; //var_console_valid_mouvement = ""; _n = [0] execVM "computer\console\boutons\console_valid_mouvement.sqf"; if (nom_console_valid_camp == "Blufor") then { //Blufor _MydualList2 = [ [nomvts2_StaW1,"0"], [nomvts2_StaW2,"1"], [nomvts2_StaW3,"2"], [nomvts2_StaW4,"3"], [nomvts2_StaW5,"4"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Opfor") then { //Opfor _MydualList2 = [ [nomvts2_StaE1,"0"], [nomvts2_StaE2,"1"], [nomvts2_StaE3,"2"], [nomvts2_StaE4,"3"], [nomvts2_StaE5,"4"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Res.") then { //Res. _MydualList2 = [ [nomvts2_Stai1,"0"], [nomvts2_Stai2,"1"], [nomvts2_Stai3,"2"], [nomvts2_Stai4,"3"], [nomvts2_Stai5,"4"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Civilian") then { //Civilian _MydualList2 = [ [nomvts2_StaCiv1,"0"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; // On montre l'attitude ctrlShow [10211,true]; ctrlShow [10212,true]; ctrlShow [10213,true]; // On cache la vitesse ctrlShow [10214,false]; ctrlShow [10215,false]; ctrlShow [10216,false]; // On cache le mouvement ctrlShow [10217,false]; ctrlShow [10218,false]; //ctrlShow [10219,false]; ctrlShow [10304,false]; ctrlShow [10220,true]; // On cache le 3D & Preview ctrlShow [10210,false]; ctrlShow [10399,false]; // On montre le moral ctrlShow [10225,true]; ctrlShow [10226,true]; ctrlShow [10227,true]; }; if (console_valid_type == 4) then { nom_console_valid_type = "Matrl" ; var_console_valid_type = "Matrl" ; if (nom_console_valid_camp == "Blufor") then { //Blufor _MydualList2 = [ [nomvts2_VehW1,"0"], [nomvts2_VehW2,"1"], [nomvts2_VehW3,"2"], [nomvts2_VehW4,"3"], [nomvts2_VehW5,"4"], [nomvts2_VehW6,"5"], [nomvts2_VehW7,"6"], [nomvts2_VehW8,"7"], [nomvts2_VehW9,"8"], [nomvts2_VehW10,"9"], [nomvts2_VehW11,"10"], [nomvts2_VehW12,"11"], [nomvts2_VehW13,"12"], [nomvts2_VehW14,"13"], [nomvts2_VehW15,"14"], [nomvts2_VehW16,"15"], [nomvts2_VehW17,"16"], [nomvts2_VehW18,"17"], [nomvts2_VehW19,"18"], [nomvts2_VehW20,"19"], [nomvts2_VehW21,"20"], [nomvts2_VehW22,"21"], [nomvts2_VehW23,"22"], [nomvts2_VehW24,"23"], [nomvts2_VehW25,"24"], [nomvts2_VehW26,"25"], [nomvts2_VehW27,"26"], [nomvts2_VehW28,"27"], [nomvts2_VehW29,"28"], [nomvts2_VehW30,"29"], [nomvts2_VehW31,"30"], [nomvts2_VehW32,"31"], [nomvts2_VehW33,"32"], [nomvts2_VehW34,"33"], [nomvts2_VehW35,"34"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Opfor") then { //opfor _MydualList2 = [ [nomvts2_VehE1,"0"], [nomvts2_VehE2,"1"], [nomvts2_VehE3,"2"], [nomvts2_VehE4,"3"], [nomvts2_VehE5,"4"], [nomvts2_VehE6,"5"], [nomvts2_VehE7,"6"], [nomvts2_VehE8,"7"], [nomvts2_VehE9,"8"], [nomvts2_VehE10,"9"], [nomvts2_VehE11,"10"], [nomvts2_VehE12,"11"], [nomvts2_VehE13,"12"], [nomvts2_VehE14,"13"], [nomvts2_VehE15,"14"], [nomvts2_VehE16,"15"], [nomvts2_VehE17,"16"], [nomvts2_VehE18,"17"], [nomvts2_VehE19,"18"], [nomvts2_VehE20,"19"], [nomvts2_VehE21,"20"], [nomvts2_VehE22,"21"], [nomvts2_VehE23,"22"], [nomvts2_VehE24,"23"], [nomvts2_VehE25,"24"], [nomvts2_VehE26,"25"], [nomvts2_VehE27,"26"], [nomvts2_VehE28,"27"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Res.") then { //Res. _MydualList2 = [ [nomvts2_Vehi1,"0"], [nomvts2_Vehi2,"1"], [nomvts2_Vehi3,"2"], [nomvts2_Vehi4,"3"], [nomvts2_Vehi5,"4"], [nomvts2_Vehi6,"5"], [nomvts2_Vehi7,"6"], [nomvts2_Vehi8,"7"], [nomvts2_Vehi9,"8"], [nomvts2_Vehi10,"9"], [nomvts2_Vehi11,"10"], [nomvts2_Vehi12,"11"], [nomvts2_Vehi13,"12"], [nomvts2_Vehi14,"13"], [nomvts2_Vehi15,"14"], [nomvts2_Vehi16,"15"], [nomvts2_Vehi17,"16"], [nomvts2_Vehi18,"17"], [nomvts2_Vehi19,"18"], [nomvts2_Vehi20,"19"], [nomvts2_Vehi21,"20"], [nomvts2_Vehi22,"21"], [nomvts2_Vehi23,"22"], [nomvts2_Vehi24,"23"], [nomvts2_Vehi25,"24"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; if (nom_console_valid_camp == "Civilian") then { //Civilian _MydualList2 = [ [nomvts2_VehCiv1,"0"], [nomvts2_VehCiv2,"1"], [nomvts2_VehCiv3,"2"], [nomvts2_VehCiv4,"3"], [nomvts2_VehCiv5,"4"], [nomvts2_VehCiv6,"5"], [nomvts2_VehCiv7,"6"], [nomvts2_VehCiv8,"7"], [nomvts2_VehCiv9,"8"], [nomvts2_VehCiv10,"9"], [nomvts2_VehCiv11,"10"], [nomvts2_VehCiv12,"11"], [nomvts2_VehCiv13,"12"], [nomvts2_VehCiv14,"13"], [nomvts2_VehCiv15,"14"], [nomvts2_VehCiv16,"15"], [nomvts2_VehCiv17,"16"], [nomvts2_VehCiv18,"17"], [nomvts2_VehCiv19,"18"] ]; [10306, _MydualList2] call Dlg_FillListBoxLists; }; // on met le mouvement zro console_valid_mouvement = 0 ; _n = [0] execVM "computer\console\boutons\console_valid_mouvement.sqf"; // On masque l'attitude ctrlShow [10211,false]; ctrlShow [10212,false]; ctrlShow [10213,false]; // On masque la vitesse ctrlShow [10214,false]; ctrlShow [10215,false]; ctrlShow [10216,false]; // On masque le mouvement ctrlShow [10217,false]; ctrlShow [10218,false]; ctrlShow [10219,true]; ctrlShow [10304,false]; // On montre le 3D & Preview ctrlShow [10210,true]; ctrlShow [10399,true]; // On masque le moral ctrlShow [10220,false]; ctrlShow [10225,false]; ctrlShow [10226,false]; ctrlShow [10227,false]; }; _n = [0] execVM "computer\console\boutons\console_joueur_scripteur.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_unite.sqf"; ctrlSetText [10206,nom_console_valid_type]; }; If (true) ExitWith {};// units _n = _this select 0; console_valid_unite = lbCurSel 10306; if (_n == 0) then { // ========================= BLUFOR : HOMMES if (var_console_valid_camp == "Blufor") then { if (var_console_valid_type == "Homme") then { //if (console_valid_unite < 0) then {console_valid_unite = 22}; //if (console_valid_unite > 22) then {console_valid_unite = 0}; //console_valid_unite = lbCurSel 10306; // On dcline les possibilits //Blufo call compile format["nom_console_valid_unite = nomvts2_ManW%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_ManW%1",console_valid_unite+1]; }; // ========================= BLUFOR : Vhicules if (var_console_valid_type == "Vehicle") then { //if (console_valid_unite < 0) then {console_valid_unite = 30}; //if (console_valid_unite > 30) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_VehW%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_VehW%1",console_valid_unite+1]; }; // ========================= BLUFOR : Groupes if (var_console_valid_type == "Groupe") then { //if (console_valid_unite < 0) then {console_valid_unite = 7}; //if (console_valid_unite > 7) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_GrpW1 ; console_unit_unite = vts2_VehW1; }; if (console_valid_unite == 1) then { nom_console_valid_unite = nomvts2_GrpW2 ; console_unit_unite = "Inf. base"; }; if (console_valid_unite == 2) then { nom_console_valid_unite = nomvts2_GrpW3 ; console_unit_unite = "Inf. armes"; }; if (console_valid_unite == 3) then { nom_console_valid_unite = nomvts2_GrpW4 ; console_unit_unite = "Inf. spec"; }; if (console_valid_unite == 4) then { nom_console_valid_unite = nomvts2_GrpW5 ; console_unit_unite = "Inf. motor"; }; if (console_valid_unite == 5) then { nom_console_valid_unite = nomvts2_GrpW6 ; console_unit_unite = "Inf. meca"; }; if (console_valid_unite == 6) then { nom_console_valid_unite = nomvts2_GrpW7 ; console_unit_unite = vts2_VehW22; }; if (console_valid_unite == 7) then { nom_console_valid_unite = nomvts2_GrpW8 ; console_unit_unite = vts2_VehW20; }; }; // ========================= BLUFOR : Materiel if (var_console_valid_type == "Matrl") then { //if (console_valid_unite < 0) then {console_valid_unite = 36}; //if (console_valid_unite > 36) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_VehW%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_VehW%1",console_valid_unite+1]; }; // ========================= BLUFOR : Statique if (var_console_valid_type == "Statique") then { //if (console_valid_unite < 0) then {console_valid_unite = 4}; //if (console_valid_unite > 4) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_StaW1 ; console_unit_unite = vts2_StaW1; }; if (console_valid_unite == 1) then { nom_console_valid_unite = nomvts2_StaW2 ; console_unit_unite = vts2_StaW2; }; if (console_valid_unite == 2) then { nom_console_valid_unite = nomvts2_StaW3 ; console_unit_unite = vts2_StaW3; }; if (console_valid_unite == 3) then { nom_console_valid_unite = nomvts2_StaW4 ; console_unit_unite = "Checkpoint"; }; if (console_valid_unite == 4) then { nom_console_valid_unite = nomvts2_StaW5 ; console_unit_unite = "P.Avanc"; }; }; }; // ========================= OPFOR : HOMMES if (var_console_valid_camp == "Opfor") then { if (var_console_valid_type == "Homme") then { //if (console_valid_unite < 0) then {console_valid_unite = 19}; //if (console_valid_unite > 19) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_ManE1 ; console_unit_unite = vts2_ManE1; }; call compile format["nom_console_valid_unite = nomvts2_ManE%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_ManE%1",console_valid_unite+1]; }; // ========================= OPFOR : Vhicules if (var_console_valid_type == "Vehicle") then { //if (console_valid_unite < 0) then {console_valid_unite = 21}; //if (console_valid_unite > 21) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_VehE%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_VehE%1",console_valid_unite+1]; }; // ========================= OPFOR : Groupes if (var_console_valid_type == "Groupe") then { //if (console_valid_unite < 0) then {console_valid_unite = 7}; //if (console_valid_unite > 7) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_GrpE1 ; console_unit_unite = vts2_VehE3; }; if (console_valid_unite == 1) then { nom_console_valid_unite = nomvts2_GrpE2 ; console_unit_unite = "Inf. base"; }; if (console_valid_unite == 2) then { nom_console_valid_unite = nomvts2_GrpE3 ; console_unit_unite = "Inf. armes"; }; if (console_valid_unite == 3) then { nom_console_valid_unite = nomvts2_GrpE4 ; console_unit_unite = "Inf. spec"; }; if (console_valid_unite == 4) then { nom_console_valid_unite = nomvts2_GrpE5 ; console_unit_unite = "Inf. motor"; }; if (console_valid_unite == 5) then { nom_console_valid_unite = nomvts2_GrpE6 ; console_unit_unite = "Inf. meca"; }; if (console_valid_unite == 6) then { nom_console_valid_unite = nomvts2_GrpE7 ; console_unit_unite = vts2_VehE18; }; if (console_valid_unite == 7) then { nom_console_valid_unite = nomvts2_GrpE8 ; console_unit_unite = vts2_VehE16; }; }; // ========================= OPFOR : Materiel if (var_console_valid_type == "Matrl") then { //if (console_valid_unite < 0) then {console_valid_unite = 27}; //if (console_valid_unite > 27) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_VehE%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_VehE%1",console_valid_unite+1]; }; // ========================= OPFOR : Statique if (var_console_valid_type == "Statique") then { //if (console_valid_unite < 0) then {console_valid_unite = 4}; //if (console_valid_unite > 4) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = vts2_StaE1 ; console_unit_unite = vts2_StaE1; }; if (console_valid_unite == 1) then { nom_console_valid_unite = vts2_StaE2 ; console_unit_unite = vts2_StaE2; }; if (console_valid_unite == 2) then { nom_console_valid_unite = vts2_StaE3 ; console_unit_unite = vts2_StaE3; }; if (console_valid_unite == 3) then { nom_console_valid_unite = "Checkpoint" ; console_unit_unite = "Checkpoint"; }; if (console_valid_unite == 4) then { nom_console_valid_unite = "Outpost" ; console_unit_unite = "P.Avanc"; }; }; }; // ========================= Inds : HOMMES if (var_console_valid_camp == "Indep.") then { if (var_console_valid_type == "Homme") then { //if (console_valid_unite < 0) then {console_valid_unite = 19}; //if (console_valid_unite > 19) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_Mani1 ; console_unit_unite = vts2_Mani1; }; call compile format["nom_console_valid_unite = nomvts2_Mani%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_Mani%1",console_valid_unite+1]; }; // ========================= Inds : Vhicules if (var_console_valid_type == "Vehicle") then { //if (console_valid_unite < 0) then {console_valid_unite = 21}; //if (console_valid_unite > 21) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_Vehi%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_Vehi%1",console_valid_unite+1]; }; // ========================= Inds : Groupes if (var_console_valid_type == "Groupe") then { //if (console_valid_unite < 0) then {console_valid_unite = 7}; //if (console_valid_unite > 7) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_Grpi1 ; console_unit_unite = vts2_Vehi3; }; if (console_valid_unite == 1) then { nom_console_valid_unite = nomvts2_Grpi2 ; console_unit_unite = "Inf. base"; }; if (console_valid_unite == 2) then { nom_console_valid_unite = nomvts2_Grpi3 ; console_unit_unite = "Inf. armes"; }; if (console_valid_unite == 3) then { nom_console_valid_unite = nomvts2_Grpi4 ; console_unit_unite = "Inf. spec"; }; if (console_valid_unite == 4) then { nom_console_valid_unite = nomvts2_Grpi5 ; console_unit_unite = "Inf. motor"; }; if (console_valid_unite == 5) then { nom_console_valid_unite = nomvts2_Grpi6 ; console_unit_unite = "Inf. meca"; }; if (console_valid_unite == 6) then { nom_console_valid_unite = nomvts2_Grpi7 ; console_unit_unite = vts2_Vehi18; }; if (console_valid_unite == 7) then { nom_console_valid_unite = nomvts2_Grpi8 ; console_unit_unite = vts2_Vehi16; }; }; // ========================= Inds : Materiel if (var_console_valid_type == "Matrl") then { //if (console_valid_unite < 0) then {console_valid_unite = 27}; //if (console_valid_unite > 27) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_Vehi%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_Vehi%1",console_valid_unite+1]; }; // ========================= Inds : Statique if (var_console_valid_type == "Statique") then { //if (console_valid_unite < 0) then {console_valid_unite = 4}; //if (console_valid_unite > 4) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = vts2_Stai1 ; console_unit_unite = vts2_Stai1; }; if (console_valid_unite == 1) then { nom_console_valid_unite = vts2_Stai2 ; console_unit_unite = vts2_Stai2; }; if (console_valid_unite == 2) then { nom_console_valid_unite = vts2_Stai3 ; console_unit_unite = vts2_Stai3; }; if (console_valid_unite == 3) then { nom_console_valid_unite = "Checkpoint" ; console_unit_unite = "Checkpoint"; }; if (console_valid_unite == 4) then { nom_console_valid_unite = "Outpost" ; console_unit_unite = "P.Avanc"; }; }; }; // ========================= CIVILS : hommes if (var_console_valid_camp == "Civil") then { if (var_console_valid_type == "Homme") then { //if (console_valid_unite < 0) then {console_valid_unite = 22}; //if (console_valid_unite > 22) then {console_valid_unite = 0}; //console_valid_unite = lbCurSel 10306; // On dcline les possibilits //Blufo call compile format["nom_console_valid_unite = nomvts2_ManCiv%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_ManCiv%1",console_valid_unite+1]; }; // ========================= CIVILS : Vhicules if (var_console_valid_type == "Vehicle") then { //if (console_valid_unite < 0) then {console_valid_unite = 30}; //if (console_valid_unite > 30) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_VehCiv%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_VehCiv%1",console_valid_unite+1]; }; // ========================= CIVILS :Groupes if (var_console_valid_type == "Groupe") then { //if (console_valid_unite < 0) then {console_valid_unite = 7}; //if (console_valid_unite > 7) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_GrpCiv1 ; console_unit_unite = ""; }; }; // ========================= CIVILS : Materiel if (var_console_valid_type == "Matrl") then { //if (console_valid_unite < 0) then {console_valid_unite = 36}; //if (console_valid_unite > 36) then {console_valid_unite = 0}; // On dcline les possibilits call compile format["nom_console_valid_unite = nomvts2_VehCiv%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_VehCiv%1",console_valid_unite+1]; }; // ========================= CIVILS : Statique if (var_console_valid_type == "Statique") then { //if (console_valid_unite < 0) then {console_valid_unite = 4}; //if (console_valid_unite > 4) then {console_valid_unite = 0}; // On dcline les possibilits if (console_valid_unite == 0) then { nom_console_valid_unite = nomvts2_StaCiv1 ; console_unit_unite = vts2_StaCiv1; }; }; }; //======================== OBJETS if (var_console_valid_camp == "Objet") then { if (var_console_valid_type == "Divers") then { //if (console_valid_unite < 0) then {console_valid_unite = 22}; //if (console_valid_unite > 22) then {console_valid_unite = 0}; //console_valid_unite = lbCurSel 10306; // On dcline les possibilits //Blufo call compile format["nom_console_valid_unite = nomvts2_Obj%1",console_valid_unite+1]; call compile format["console_unit_unite = vts2_Obj%1",console_valid_unite+1]; }; }; }; If (true) ExitWith {};// vitesse _n = _this select 0; if (_n == 0) then { if (console_valid_vitesse < 0) then {console_valid_vitesse = 2}; if (console_valid_vitesse > 2) then {console_valid_vitesse = 0}; // On dcline les possibilits if (console_valid_vitesse == 0) then { nom_console_valid_vitesse = "Limited" ; var_console_valid_vitesse = "LIMITED" ; }; if (console_valid_vitesse == 1) then { nom_console_valid_vitesse = "Normal" ; var_console_valid_vitesse = "NORMAL" ; }; if (console_valid_vitesse == 2) then { nom_console_valid_vitesse = "Full" ; var_console_valid_vitesse = "FULL" }; ctrlSetText [10215,nom_console_valid_vitesse]; }; // joueursolo_telep.sqf _n = _this select 0; _bidule = true ; if (_n == 0) then { if (joueursolo_telep < 1) then {joueursolo_telep = nbre_joueursX}; }; if (_n == 1) then { if (joueursolo_telep > nbre_joueursX) then {joueursolo_telep = 1}; }; if (blufor_vts) then { call compile format [" if (joueur_noresp_viv%1) then { code_joueurX = ""joueur%1""; nom_joueurX = name joueur%1 ; } else {code_joueurX = ""joueur%1"";nom_joueurX = ""Mort"" ;} ; ",joueursolo_telep]; }; if (opfor_vts) then { call compile format [" if (joueure_noresp_viv%1) then { code_joueurX = ""joueure%1""; nom_joueurX = name joueure%1 ; } else {code_joueurX = ""joueure%1"";nom_joueurX = ""Mort"" ;} ; ",joueursolo_telep]; }; if (inde_vts) then { call compile format [" if (joueuri_noresp_viv%1) then { code_joueurX = ""joueuri%1""; nom_joueurX = name joueuri%1 ; } else {code_joueurX = ""joueuri%1"";nom_joueurX = ""Mort"" ;} ; ",joueursolo_telep]; }; ctrlSetText [10295,code_joueurX]; ctrlSetText [10297,nom_joueurX]; If (true) ExitWith {}// l1_ellipse1.sqf if (l1_ellipse1 < 0) then {l1_ellipse1 = 1}; if (l1_ellipse1 > 1) then {l1_ellipse1 = 0}; // On dcline les possibilits if (l1_ellipse1 == 0) then { nom_l1_ellipse1 = "Ell." ; var_l1_ellipse1 = false ; }; if (l1_ellipse1 == 1) then { nom_l1_ellipse1 = "Rect." ; var_l1_ellipse1 = true ; }; ctrlSetText [10258,nom_l1_ellipse1]; If (true) ExitWith {}// l2_combien_act1.sqf if (l2_combien_act1 < 0) then {l2_combien_act1 = 1}; if (l2_combien_act1 > 1) then {l2_combien_act1 = 0}; // On dcline les possibilits if (l2_combien_act1 == 0) then { nom_l2_combien_act1 = "1 x" ; var_l2_combien_act1 = false ; }; if (l2_combien_act1 == 1) then { nom_l2_combien_act1 = "Repeat." ; var_l2_combien_act1 = true ; }; ctrlSetText [10265,nom_l2_combien_act1]; If (true) ExitWith {} // l2_qui_act1.sqf if (l2_qui_act1 < 0) then {l2_qui_act1 = 19}; if (l2_qui_act1 > 19) then {l2_qui_act1 = 0}; // On décline les possibilités if (l2_qui_act1 == 0) then { nom_l2_qui_act1 = "None" ; var_l2_qui_act1 = "NONE" ; }; if (l2_qui_act1 == 1) then { nom_l2_qui_act1 = "East" ; var_l2_qui_act1 = "EAST" ; }; if (l2_qui_act1 == 2) then { nom_l2_qui_act1 = "West" ; var_l2_qui_act1 = "WEST" ; }; if (l2_qui_act1 == 3) then { nom_l2_qui_act1 = "Res." ; var_l2_qui_act1 = "GUER" ; }; if (l2_qui_act1 == 4) then { nom_l2_qui_act1 = "Civilian" ; var_l2_qui_act1 = "CIV" ; }; if (l2_qui_act1 == 5) then { nom_l2_qui_act1 = "Logic" ; var_l2_qui_act1 = "LOGIC" ; }; if (l2_qui_act1 == 6) then { nom_l2_qui_act1 = "Any" ; var_l2_qui_act1 = "ANY" ; }; if (l2_qui_act1 == 7) then { nom_l2_qui_act1 = "Alpha" ; var_l2_qui_act1 = "ALPHA" ; }; if (l2_qui_act1 == 8) then { nom_l2_qui_act1 = "Bravo" ; var_l2_qui_act1 = "BRAVO" ; }; if (l2_qui_act1 == 9) then { nom_l2_qui_act1 = "Charlie" ; var_l2_qui_act1 = "CHARLIE" ; }; if (l2_qui_act1 == 10) then { nom_l2_qui_act1 = "Delta" ; var_l2_qui_act1 = "DELTA" ; }; if (l2_qui_act1 == 11) then { nom_l2_qui_act1 = "Echo" ; var_l2_qui_act1 = "ECHO" ; }; if (l2_qui_act1 == 12) then { nom_l2_qui_act1 = "FxTrot" ; var_l2_qui_act1 = "FOXTROT" ; }; if (l2_qui_act1 == 13) then { nom_l2_qui_act1 = "Golf" ; var_l2_qui_act1 = "GOLF" ; }; if (l2_qui_act1 == 14) then { nom_l2_qui_act1 = "Hotel" ; var_l2_qui_act1 = "HOTEL" ; }; if (l2_qui_act1 == 15) then { nom_l2_qui_act1 = "India" ; var_l2_qui_act1 = "INDIA" ; }; if (l2_qui_act1 == 16) then { nom_l2_qui_act1 = "Juliet" ; var_l2_qui_act1 = "JULIET" ; }; if (l2_qui_act1 == 17) then { nom_l2_qui_act1 = "W seized" ; var_l2_qui_act1 = "WEST SEIZED" ; }; if (l2_qui_act1 == 18) then { nom_l2_qui_act1 = "E seized" ; var_l2_qui_act1 = "EAST SEIZED" ; }; if (l2_qui_act1 == 19) then { nom_l2_qui_act1 = "R seized" ; var_l2_qui_act1 = "GUER SEIZED" ; }; ctrlSetText [10262,nom_l2_qui_act1]; If (true) ExitWith {} // l2_quoi_act1.sqf if (l2_quoi_act1 < 0) then {l2_quoi_act1 = 5}; if (l2_quoi_act1 > 5) then {l2_quoi_act1 = 0}; // On décline les possibilités if (l2_quoi_act1 == 0) then { nom_l2_quoi_act1 = "Present" ; var_l2_quoi_act1 = "PRESENT" ; }; if (l2_quoi_act1 == 1) then { nom_l2_quoi_act1 = "Not pres." ; var_l2_quoi_act1 = "NOT PRESENT" ; }; if (l2_quoi_act1 == 2) then { nom_l2_quoi_act1 = "W Detec" ; var_l2_quoi_act1 = "WEST D" ; }; if (l2_quoi_act1 == 3) then { nom_l2_quoi_act1 = "E Detec" ; var_l2_quoi_act1 = "EAST D" ; }; if (l2_quoi_act1 == 4) then { nom_l2_quoi_act1 = "R Detec" ; var_l2_quoi_act1 = "GUER D" ; }; if (l2_quoi_act1 == 5) then { nom_l2_quoi_act1 = "Civ D" ; var_l2_quoi_act1 = "CIV D" ; }; ctrlSetText [10268,nom_l2_quoi_act1]; If (true) ExitWith {} // l3_delai_act1.sqf if (l3_delai_act1 < 0) then {l3_delai_act1 = 1}; if (l3_delai_act1 > 1) then {l3_delai_act1 = 0}; // On décline les possibilités if (l3_delai_act1 == 0) then { nom_l3_delai_act1 = "Delay" ; var_l3_delai_act1 = false ; }; if (l3_delai_act1 == 1) then { nom_l3_delai_act1 = "Count" ; var_l3_delai_act1 = true ; }; ctrlSetText [10271,nom_l3_delai_act1]; If (true) ExitWith {}// l4_type_act1.sqf if (l4_type_act1 < 0) then {l4_type_act1 = 4}; if (l4_type_act1 > 4) then {l4_type_act1 = 0}; // On décline les possibilités if (l4_type_act1 == 0) then { nom_l4_type_act1 = "None" ; var_l4_type_act1 = "NONE" ; ctrlShow [10288,true]; ctrlShow [10289,true]; ctrlShow [10290,true]; ctrlShow [10291,true]; }; if (l4_type_act1 == 1) then { nom_l4_type_act1 = "Switch" ; var_l4_type_act1 = "SWITCH" ; ctrlShow [10288,true]; ctrlShow [10289,true]; ctrlShow [10290,true]; ctrlShow [10291,true]; }; if (l4_type_act1 == 2) then { nom_l4_type_act1 = "Victory" ; var_l4_type_act1 = "Victoire" ; ctrlShow [10288,false]; ctrlShow [10289,false]; ctrlShow [10290,false]; ctrlShow [10291,false]; }; if (l4_type_act1 == 3) then { nom_l4_type_act1 = "2-Obj" ; var_l4_type_act1 = "2-Obj" ; ctrlShow [10288,true]; ctrlShow [10289,true]; ctrlShow [10290,true]; ctrlShow [10291,true]; }; if (l4_type_act1 == 4) then { nom_l4_type_act1 = "Fail" ; var_l4_type_act1 = "Echec" ; ctrlShow [10288,false]; ctrlShow [10289,false]; ctrlShow [10290,false]; ctrlShow [10291,false]; }; ctrlSetText [10280,nom_l4_type_act1]; If (true) ExitWith {}// script_commande.sqf _n = _this select 0; if (_n == 0) then { if (script_commande < 0) then {script_commande = 6}; if (script_commande > 6) then {script_commande = 0}; // On dcline les possibilits if (script_commande == 0) then { var_console_script_commande = "None" ; }; if (script_commande == 1) then { var_console_script_commande = script_com1 ; }; if (script_commande == 2) then { var_console_script_commande = script_com2 ; }; if (script_commande == 3) then { var_console_script_commande = script_com3 ; }; if (script_commande == 4) then { var_console_script_commande = script_com4 ; }; if (script_commande == 5) then { var_console_script_commande = script_com5 ; }; if (script_commande == 6) then { var_console_script_commande = script_com6 ; }; ctrlSetText [10246,var_console_script_commande]; }; if (_n == 1) then { ligne_joueur = format ["%1",ctrlText 10243]; ligne_commande_go = true ; publicvariable "ligne_commande_go"; publicvariable "var_console_script_commande"; publicvariable "ligne_joueur"; }; If (true) ExitWith {}disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "camera_x = _pos select 0; camera_y = _pos select 1; camera_z = _pos select 2 ; camera_spawn = true; publicVariable ""camera_x""; publicVariable ""camera_y""; publicVariable ""camera_z""; publicvariable ""camera_spawn""; closeDialog 0; onMapSingleClick """";" ; If (true) ExitWith {}// commande_rt.sqf if (local serveur) then { // on efface l'unit prcdente deletevehicle commande_civil; // on cr une nouvelle unit call compile format["""Citizen1"" createUnit [position commande_civil,commande_groupe,""commande_civil = this ; %1"", console_unit_moral, ""corporal""];",(ligne_joueur)]; // on remet la variable excitante zro ligne_commande_go = false ; publicvariable "ligne_commande_go"; }; // on excute ensuite sur toutes les machines if (var_console_script_commande==script_com1) then { call compile format["_script1 = [] execVM ""mods\RT\code\%1"";",(script_com1Sqf)]; }; if (var_console_script_commande==script_com2) then { call compile format["_script2 = [] execVM ""mods\RT\code\%1"";",(script_com2Sqf)]; }; if (var_console_script_commande==script_com3) then { call compile format["_script3 = [] execVM ""mods\RT\code\%1"";",(script_com3Sqf)]; }; if (var_console_script_commande==script_com4) then { call compile format["_script4 = [] execVM ""mods\RT\code\%1"";",(script_com4Sqf)]; }; if (var_console_script_commande==script_com5) then { call compile format["_script5 = [] execVM ""mods\RT\code\%1"";",(script_com5Sqf)]; }; if (var_console_script_commande==script_com6) then { call compile format["_script6 = [] execVM ""mods\RT\code\%1"";",(script_com6Sqf)]; }; If (true) ExitWith {}disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! if (breakclic <= 1 ) then { clic1 = false; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt2 = _display displayctrl 10600; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true]; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; console_sec_obj = format [""%1"",ctrlText 10600]; clic1 = true; onMapSingleClick """";"; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; //hint "pause"; //if (_clic1) exitWith {}; if (clic1) then { hint ""; _j=0; clic1 = false; hint ""; inc = inc + 1; // console_add_sec_obj = true; // console_add_sec_obj = false; // publicvariable "console_add_sec_obj"; // hint format ["%1",inc]; _marker = createMarker [format ["marker_%1",inc],[spawn_x,spawn_y,spawn_z]]; // _marker_obj = createMarker ["",[spawn_x,spawn_y,spawn_z]]; // _marker_obj setMarkerShape "icone"; _marker setMarkerType "hd_destroy"; _marker setMarkerText console_sec_obj; // _marker_obj setMarkerSize [0.3, 0.3]; _marker setMarkerDir 0; _marker setMarkerColor "Colorred"; console_sec_obj == ""; // ctrlSetText [10600, ""] }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; If (true) ExitWith {}; //_markerNo = random 10 //{marker = createMarker [format ["marker_%1",_markerNo], _x]}foreach VSP_radarArray disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! _display = finddisplay 8000; _txt = _display displayctrl 200; // Clic 1 _txt CtrlSetText "Left click on the map to put the first point"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2; clic1 = true; onMapSingleClick """";" ; waitUntil {(clic1)}; clic1 = false; _marker1 = createMarkerLocal ["marker1",[spawn_x,spawn_y]]; _marker1 setMarkerTypeLocal "Dot"; _marker1 setMarkerSizeLocal [0.5, 0.5]; _marker1 setMarkerColorLocal "ColorredAlpha"; sleep 1; // Clic 2 _txt CtrlSetText "Left click on the map to put the second point"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x2 = _pos select 0; spawn_y2 = _pos select 1; spawn_z2 = _pos select 2; clic2 = true; onMapSingleClick """";" ; waitUntil {(clic2)}; clic2 = false; _marker2 = createMarkerLocal ["marker2",[spawn_x2,spawn_y2]]; _marker2 setMarkerTypeLocal "Dot"; _marker2 setMarkerSizeLocal [0.5, 0.5]; _marker2 setMarkerColorLocal "ColorredAlpha"; sleep 1; // Clic 3 _txt CtrlSetTextColor [1,0,0,1]; _txt CtrlSetText "Left click on the map to put the third point"; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x3 = _pos select 0; spawn_y3 = _pos select 1; spawn_z3 = _pos select 2 ; clic3 = true; onMapSingleClick """";" ; waitUntil {(clic3)}; clic3 = false; _marker3 = createMarkerLocal ["marker3",[spawn_x3,spawn_y3]]; _marker3 setMarkerTypeLocal "Dot"; _marker3 setMarkerSizeLocal [0.5, 0.5]; _marker3 setMarkerColorLocal "ColorredAlpha"; sleep 1; deletemarker "marker1"; deletemarker "marker2"; deletemarker "marker3"; publicVariable "spawn_x3"; publicVariable "spawn_y3"; publicVariable "spawn_z3"; publicVariable "spawn_x2"; publicVariable "spawn_y2"; publicVariable "spawn_z2"; publicVariable "spawn_x"; publicVariable "spawn_y"; publicVariable "spawn_z"; console_convoi = true; publicvariable "console_convoi"; If (true) ExitWith {}disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! if (breakclic <= 1 ) then { clic1 = false; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true]; onMapSingleClick "markpos_x = _pos select 0; markpos_y = _pos select 1; publicVariable ""markpos_x""; publicVariable ""markpos_y""; clic1 = true; onMapSingleClick """";"; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; console_Go2marker = true; publicvariable "console_Go2marker"; deleteMarkerLocal "Go2marker"; check_Go2marker = true; publicvariable "check_Go2marker"; _marker_Go2 = createMarkerLocal ["Go2marker",[markpos_x,markpos_y,0]]; "Go2marker" setMarkertextLocal "Mark 1"; "Go2marker" setMarkerTypeLocal "Dot"; "Go2marker" setMarkerSizeLocal [0.5, 0.5]; "Go2marker" setMarkerDirLocal 0; "Go2marker" setMarkerColorLocal "Colorblack"; console_Go2marker = false; }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; If (true) ExitWith {}; disableSerialization; if (breakclic <= 1 ) then { clic1 = false; // Attention! il faut faire passer en global toutes les variables sur l'unit! /* If not(fin_heli) then { ExitWith {}; }; fin_heli = false; publicvariable "fin_heli"; */ helimovetype = _this select 3; publicvariable "helimovetype"; //If (helimovetype == "evac") then {hint "Click on map"}; //If (helimovetype == "advance") then {hint "Click on map"}; If (helimovetype == "stop") then {hint "Stop"}; /* switch (_type) do { case "evac": {hint "1"}; case "weapons": {hint "2"}; case "bombe": {hint "1"}; case "avence": {hint "1"}; case "stop": {hint "1"}; default {hint "default"}; } */ _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true]; If (helimovetype == "stop") then { console_heli = true; publicvariable "console_heli"; breakclic = 0; }else{ onMapSingleClick ";spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; clic1 = true; onMapSingleClick """";"; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; console_heli = true; publicvariable "console_heli"; }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; }; }; If (true) ExitWith {}; disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! // ********** mettre des ennemis dans les batiments ************** if (breakclic <= 1 ) then { clic1 = false; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true]; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; clic1 = true; onMapSingleClick """";"; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; //hint "pause"; //if (_clic1) exitWith {}; if (clic1) then { hint ""; _j=0; clic1 = false; console_IAinBat = true; publicvariable "console_IAinBat"; _marker_Take = createMarkerLocal ["Takemarker",[spawn_x,spawn_y,spawn_z]]; _marker_Take setMarkerShapeLocal "ELLIPSE"; // _marker_Take setMarkerTypeLocal "Dot"; _marker_Take setMarkerSizeLocal [30, 30]; _marker_Take setMarkerDirLocal 0; _marker_Take setMarkerColorLocal "ColorredAlpha"; sleep 10; deletemarker "Takemarker"; }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; If (true) ExitWith {}; disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! if (breakclic <= 1 ) then { clic1 = false; clic2 = false; _display = finddisplay 8000; _txt = _display displayctrl 200; if ((var_console_valid_type == "Statique") or (var_console_valid_type == "Divers") or (var_console_valid_type == "Matrl")) then { _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2 ; console_nom = format [""%1"",ctrlText 10231]; console_init = format [""%1"",ctrlText 10232]; nom_du_marqueur = console_nom; publicvariable ""console_valid_unite""; publicvariable ""var_console_valid_camp""; publicvariable ""var_console_valid_attitude""; publicvariable ""console_unit_moral""; publicvariable ""nom_console_valid_mouvement""; publicvariable ""var_console_valid_mouvement""; publicvariable ""console_unit_orientation""; publicvariable ""var_console_valid_type""; publicvariable ""console_unit_unite""; publicvariable ""var_console_valid_vitesse""; publicvariable ""console_nom""; publicvariable ""nom_console_valid_unite""; publicvariable ""console_init""; publicvariable ""nom_du_marqueur""; publicvariable ""console_unit_orientation""; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; console_spawn = true; publicvariable "console_spawn"; }; clic1 = false; sleep 1; }; } else { switch (nom_console_valid_mouvement) do { //Go to Mark 1 case script7: { if check_Go2marker then { _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2 ; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; console_nom = format [""%1"",ctrlText 10231]; console_init = format [""%1"",ctrlText 10232]; nom_du_marqueur = console_nom; publicvariable ""console_valid_unite""; publicvariable ""var_console_valid_camp""; publicvariable ""var_console_valid_attitude""; publicvariable ""console_unit_moral""; publicvariable ""nom_console_valid_mouvement""; publicvariable ""var_console_valid_mouvement""; publicvariable ""console_unit_orientation""; publicvariable ""var_console_valid_type""; publicvariable ""console_unit_unite""; publicvariable ""var_console_valid_vitesse""; publicvariable ""console_nom""; publicvariable ""nom_console_valid_unite""; publicvariable ""console_init""; publicvariable ""nom_du_marqueur""; publicvariable ""console_unit_orientation""; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; console_spawn = true; publicvariable "console_spawn"; }; clic1 = false; sleep 1; }; }else{ _txt CtrlSetText "Go2marker not found, please place it"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true]; }; }; //Put on Master (only men) case script6: { if (nom_console_valid_type == "Man") then { if ((captive joueur1) or (var_console_valid_camp == "Blufor")) then { }else{ _txt CtrlSetText "Your are not invisible for enemy !"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; sleep 5; }; spawn_x = getMarkerPos "OnMaster" select 0; spawn_y = getMarkerPos "OnMaster" select 1; spawn_z = getMarkerPos "OnMaster" select 2 ; console_nom = format ["%1",ctrlText 10231]; console_init = format ["%1",ctrlText 10232]; publicvariable "console_valid_unite"; publicvariable "var_console_valid_camp"; publicvariable "var_console_valid_attitude"; publicvariable "console_unit_moral"; publicvariable "nom_console_valid_mouvement"; publicvariable "var_console_valid_mouvement"; publicvariable "console_unit_orientation"; publicvariable "var_console_valid_type"; publicvariable "console_unit_unite"; publicvariable "var_console_valid_vitesse"; publicvariable "console_nom"; publicvariable "nom_console_valid_unite"; publicvariable "console_init"; publicvariable "nom_du_marqueur"; publicvariable "console_unit_orientation"; publicVariable "spawn_x"; publicVariable "spawn_y"; publicVariable "spawn_z"; console_spawn = true; publicvariable "console_spawn"; closeDialog 0; [] execVM "gonza\onmaster_addaction.sqf"; }else{ _txt CtrlSetText "Aborded, it is not a man !"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true]; }; }; //Go to a point case script4: { _txt CtrlSetText "Left click on the map to put the first point"; _txt CtrlSetTextColor [1,0,0,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; // Clic 1 onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; _marker1 = createMarkerLocal ["marker1",[spawn_x,spawn_y]]; _marker1 setMarkerTypeLocal "Dot"; _marker1 setMarkerSizeLocal [0.5, 0.5]; _marker1 setMarkerColorLocal "ColorredAlpha"; sleep 1; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; _txt CtrlSetText "Left click on the map to put the second point"; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; }; clic1 = false; sleep 1; }; // Clic 2 onMapSingleClick "spawn_x2 = _pos select 0; spawn_y2 = _pos select 1; spawn_z2 = _pos select 2 ; publicVariable ""spawn_x2""; publicVariable ""spawn_y2""; publicVariable ""spawn_z2""; console_nom = format [""%1"",ctrlText 10231]; console_init = format [""%1"",ctrlText 10232]; nom_du_marqueur = console_nom; publicvariable ""console_valid_unite""; publicvariable ""var_console_valid_camp""; publicvariable ""var_console_valid_attitude""; publicvariable ""console_unit_moral""; publicvariable ""nom_console_valid_mouvement""; publicvariable ""var_console_valid_mouvement""; publicvariable ""console_unit_orientation""; publicvariable ""var_console_valid_type""; publicvariable ""console_unit_unite""; publicvariable ""var_console_valid_vitesse""; publicvariable ""console_nom""; publicvariable ""nom_console_valid_unite""; publicvariable ""console_init""; publicvariable ""nom_du_marqueur""; publicvariable ""console_unit_orientation""; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; clic2 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic2) then { hint ""; _j=0; clic2 = false; _marker2 = createMarkerLocal ["marker2",[spawn_x2,spawn_y2]]; _marker2 setMarkerTypeLocal "Dot"; _marker2 setMarkerSizeLocal [0.5, 0.5]; _marker2 setMarkerColorLocal "ColorredAlpha"; sleep 1; deletemarker "marker1"; deletemarker "marker2"; console_spawn = true; publicvariable "console_spawn"; }; clic1 = false; sleep 1; }; }; //Patrol between 2 points case script5: { _txt CtrlSetText "Left click on the map to put the first point"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; // Clic 1 onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; _marker1 = createMarkerLocal ["marker1",[spawn_x,spawn_y]]; _marker1 setMarkerTypeLocal "Dot"; _marker1 setMarkerSizeLocal [0.5, 0.5]; _marker1 setMarkerColorLocal "ColorredAlpha"; sleep 1; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; _txt CtrlSetText "Left click on the map to put the second point"; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; }; clic1 = false; sleep 1; }; // Clic 2 onMapSingleClick "spawn_x2 = _pos select 0; spawn_y2 = _pos select 1; spawn_z2 = _pos select 2 ; publicVariable ""spawn_x2""; publicVariable ""spawn_y2""; publicVariable ""spawn_z2""; console_nom = format [""%1"",ctrlText 10231]; console_init = format [""%1"",ctrlText 10232]; nom_du_marqueur = console_nom; publicvariable ""console_valid_unite""; publicvariable ""var_console_valid_camp""; publicvariable ""var_console_valid_attitude""; publicvariable ""console_unit_moral""; publicvariable ""nom_console_valid_mouvement""; publicvariable ""var_console_valid_mouvement""; publicvariable ""console_unit_orientation""; publicvariable ""var_console_valid_type""; publicvariable ""console_unit_unite""; publicvariable ""var_console_valid_vitesse""; publicvariable ""console_nom""; publicvariable ""nom_console_valid_unite""; publicvariable ""console_init""; publicvariable ""nom_du_marqueur""; publicvariable ""console_unit_orientation""; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; clic2 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic2) then { hint ""; _j=0; clic2 = false; _marker2 = createMarkerLocal ["marker2",[spawn_x2,spawn_y2]]; _marker2 setMarkerTypeLocal "Dot"; _marker2 setMarkerSizeLocal [0.5, 0.5]; _marker2 setMarkerColorLocal "ColorredAlpha"; sleep 1; deletemarker "marker1"; deletemarker "marker2"; console_spawn = true; publicvariable "console_spawn"; }; clic2 = false; sleep 1; }; }; default { _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2 ; console_nom = format [""%1"",ctrlText 10231]; console_init = format [""%1"",ctrlText 10232]; nom_du_marqueur = console_nom; publicvariable ""console_valid_unite""; publicvariable ""var_console_valid_camp""; publicvariable ""var_console_valid_attitude""; publicvariable ""console_unit_moral""; publicvariable ""nom_console_valid_mouvement""; publicvariable ""var_console_valid_mouvement""; publicvariable ""console_unit_orientation""; publicvariable ""var_console_valid_type""; publicvariable ""console_unit_unite""; publicvariable ""var_console_valid_vitesse""; publicvariable ""console_nom""; publicvariable ""nom_console_valid_unite""; publicvariable ""console_init""; publicvariable ""nom_du_marqueur""; publicvariable ""console_unit_orientation""; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; console_spawn = true; publicvariable "console_spawn"; }; clic1 = false; sleep 1; }; }; }; }; sleep 0.5; hint ""; breakclic = 0; }; If (true) ExitWith {};disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! if (breakclic <= 1 ) then { clic1 = false; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true]; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2; publicVariable ""spawn_x""; publicVariable ""spawn_y""; publicVariable ""spawn_z""; clic1 = true; onMapSingleClick """";"; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; if (clic1) then { hint ""; _j=0; clic1 = false; _marker1 = createMarkerLocal ["marker1",[spawn_x,spawn_y]]; _marker1 setMarkerTypeLocal "Dot"; _marker1 setMarkerSizeLocal [0.5, 0.5]; _marker1 setMarkerColorLocal "ColorredAlpha"; respawn_tent setDamage 0; A_ammo setDamage 0; A_Weapon setDamage 0; respawn_tent setpos [spawn_x, spawn_y]; sleep 1; "Resp" setMarkerPos [spawn_x,spawn_y]; "Base" setMarkerPos [spawn_x,spawn_y]; if ((paramsArray select 1) == 0) then { "Resp" setMarkerText "Resp."; "respawn_west" setMarkerPos [spawn_x,spawn_y]; }; deletemarker "marker1"; }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; If (true) ExitWith {}; if (local serveur) then { _positX = spawn_x ; _positY = spawn_y ; _positZ = spawn_z ; if ((var_console_valid_camp== "Blufor") or (var_console_valid_camp== "Opfor") or (var_console_valid_camp== "Indep.") or (var_console_valid_camp== "Civil")) then { // ====================================== HOMMES if (var_console_valid_type == "Homme") then { // Cra du groupe (fais chier...) var_hom_solo = var_hom_solo+1; if (var_console_valid_camp== "Blufor") then {call compile format["solo%1 = creategroup west;",var_hom_solo];}; if (var_console_valid_camp== "Opfor") then {call compile format["solo%1 = creategroup east;",var_hom_solo];}; if (var_console_valid_camp== "Indep.") then {call compile format["solo%1 = creategroup resistance;",var_hom_solo];}; if (var_console_valid_camp== "Civil") then {call compile format["solo%1 = creategroup Civilian;",var_hom_solo];}; // Protection si le joueur n'a pas donn de nom if (console_nom =="") then {call compile format["console_nom = ""nom_h_s%1"";",(var_hom_solo)];}; if from3D then { //call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; call compile format["console_unit_unite createUnit [getMarkerPos ""preview_mark"",solo%1,""%2 = this ; %3 "", console_unit_moral, ""corporal""];",(var_hom_solo),(console_nom),(console_init)]; call compile format["%1 setdir console_unit_orientation ;",(console_nom)]; From3D = false; publicvariable "From3D"; sleep 1; call compile format["%1 setPosASL [_positX,_positY,_positZ ];",(console_nom)]; }else{ call compile format["console_unit_unite createUnit [[_positX,_positY,_positY],solo%1,""%2 = this ; %3 "", console_unit_moral, ""corporal""];",(var_hom_solo),(console_nom),(console_init)]; }; call compile format["%1 setdir console_unit_orientation ;",(console_nom)]; call compile format["%1 setBehaviour var_console_valid_attitude ;",(console_nom)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(console_nom)]; }; // ====================================== VEHICULES if (var_console_valid_type == "Vehicle") then { // ------- Cra du groupe_vehicule avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""%1_%2"";",(nom_console_valid_unite),(var_v_solo)];}; // crea du groupe_vehicule if (var_console_valid_camp== "Blufor") then {equipage = vts2_ManW22 ; call compile format["%1 = creategroup west;",(console_nom)];}; if (var_console_valid_camp== "Opfor") then {equipage = vts2_ManE20 ; call compile format["%1 = creategroup east;",(console_nom)];}; if (var_console_valid_camp== "Indep.") then {equipage = vts2_Mani1 ; call compile format["%1 = creategroup resistance;",(console_nom)];}; if (var_console_valid_camp== "Civil") then {equipage = vts2_ManCiv2 ; call compile format["%1 = creategroup civilian;",(console_nom)];}; // On spawne (d'abord le vhicule) et on donne un nom tous les membres if from3D then { call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; From3D = false; publicvariable "From3D"; nomvehicule allowdamage false; nomvehicule setvehicleVarName format["%1",nomvehicule]; sleep 1; nomvehicule setdir console_unit_orientation ; nomvehicule setPosASL [_positX,_positY,_positZ ]; call compile format ["_damaget%1 = nomvehicule execVM ""damagetempo.sqf"";",(var_v_solo)]; hint "ok"; }else{ call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX,_positY,0], [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; nomvehicule allowdamage false; hint format["%1_%2",(nom_console_valid_unite),(var_v_solo)]; nomvehicule setvehicleVarName format["%1_(V%2)",(nom_console_valid_unite),(var_v_solo)]; nomvehicule setdir console_unit_orientation; call compile format ["_damaget%1 = nomvehicule execVM ""damagetempo.sqf"";",(var_v_solo)]; }; //call compile format ["%1%2 = console_unit_unite createVehicle pos_3D;%1%2 setPos pos_3D;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; //sleep 5; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip1%2 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(nomvehicule),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip2%2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(console_nom),(var_v_solo),(nomvehicule),(console_init)]; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier (on verra plus tard) call compile format["if (vehicle equip1%1 != vehicle equip2%1) then {deletevehicle equip2%1};",(var_v_solo)]; // On donne les ordres d'orientation et de mouvement nomvehicule setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(console_nom)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(console_nom)]; }; // ====================================================================================== // ====================================== GROUPES ======================================= // ====================================================================================== if (var_console_valid_type == "Groupe") then { // -------------------------------------------------------------------------------------- // -------------------- Cra du groupe_vehicule avec le nom donn ----------------------- // -------------------------------------------------------------------------------------- // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // crea du groupe_vehicule _nom_groupe = console_nom ; if (var_console_valid_camp== "Blufor") then {equipage = vts2_ManW22 ; call compile format["%1 = creategroup west;",(_nom_groupe)];}; if (var_console_valid_camp== "Opfor") then {equipage = vts2_ManE20 ; call compile format["%1 = creategroup east;",(_nom_groupe)];}; if (var_console_valid_camp== "Indep.") then {equipage = vts2_SoldierGCrew ; call compile format["%1 = creategroup resistance;",(_nom_groupe)];}; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe vehicule (escadrille ou peloton): // -------------------------------------------------------------------------------------- if ((console_valid_unite == 0) or (console_valid_unite == 6) or (console_valid_unite == 7)) then { _espace = 0; // on spawne le chef _i = 0 ; call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX+_espace,_positY+_espace,0], [], 0, ""FLY""] ;nomvehicule = %1%2; _ve_ori = nomvehicule;",(_nom_groupe),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip1%2 = this ; h_ori = equip1%2 ;this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""CAPTAIN""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip2%2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; _espace = _espace-50; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier (on verra plus tard) call compile format["if (vehicle equip1%1 != vehicle equip2%1) then {deletevehicle equip2%1};",(var_v_solo)]; // on spawne les hommes _i = 1 ; // VEHICULE 2 On spawne (d'abord le vhicule) et on donne un nom tous les membres call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX+_espace,_positY+_espace,0], [], 0, ""FLY""] ;nomvehicule = %1%2;",(_nom_groupe),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip3%2_%3 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""SERGEANT""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip4%2_%3 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; _espace = _espace-50; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier call compile format["if (vehicle equip3%1_%2 != vehicle equip4%1_%2) then {deletevehicle equip4%1_%2};",(var_v_solo),(_i)]; _i = 2; // VEHICULE 3 On spawne (d'abord le vhicule) et on donne un nom tous les membres call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX+_espace,_positY+_espace,0], [], 0, ""FLY""] ;nomvehicule = %1%2;",(_nom_groupe),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip3%2_%3 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""corporal""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip4%2_%3 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; _espace = _espace-50; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier call compile format["if (vehicle equip3%1_%2 != vehicle equip4%1_%2) then {deletevehicle equip4%1_%2};",(var_v_solo),(_i)]; // On donne les ordres d'orientation et de mouvement h_ori setdir console_unit_orientation ; _ve_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; call compile format["%1 setformation ""COLUMN"";",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe inf base // -------------------------------------------------------------------------------------- if (console_valid_unite == 1) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW19 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW6 ; soldat5 = vts2_ManW8 ; soldat6 = vts2_ManW19 ; soldat7 = vts2_ManW2 ; soldat8 = vts2_ManW6 ; soldat9 = vts2_ManW10 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_TeamLeaderE ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE6 ; soldat5 = vts2_ManE7 ; soldat6 = vts2_TeamLeaderE ; soldat7 = vts2_ManE2 ; soldat8 = vts2_ManE2 ; soldat9 = vts2_ManE13 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_TeamLeaderG ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGAR ; soldat5 = vts2_SoldierGAT ; soldat6 = vts2_TeamLeaderG ; soldat7 = vts2_SoldierGG ; soldat8 = vts2_SoldierGAR ; soldat9 = vts2_SoldierGSniper ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // On spawne le groupe for[{_i=2},{_i<=9},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe inf armes // -------------------------------------------------------------------------------------- if (console_valid_unite == 2) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW7 ; soldat3 = vts2_ManW1 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW7 ; soldat6 = vts2_ManW1 ; soldat7 = vts2_ManW1 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE6 ; soldat3 = vts2_ManE1 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE6 ; soldat6 = vts2_ManE1 ; soldat7 = vts2_ManE1 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW7 ; soldat3 = vts2_ManW1 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW7 ; soldat6 = vts2_ManW1 ; soldat7 = vts2_ManW1 ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // On spawne le groupe for[{_i=2},{_i<=7},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe fs // -------------------------------------------------------------------------------------- if (console_valid_unite == 3) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW15 ; soldat2 = vts2_ManW12 ; soldat3 = vts2_ManW12 ; soldat4 = vts2_ManW15 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE15 ; soldat2 = vts2_ManE16 ; soldat3 = vts2_ManE16 ; soldat4 = vts2_ManE15 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SoldierGCommando ; soldat2 = vts2_SoldierGCommando ; soldat3 = vts2_SoldierGCommando ; soldat4 = vts2_SoldierGMarksman ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // On spawne le groupe for[{_i=2},{_i<=4},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe motoris // -------------------------------------------------------------------------------------- if (console_valid_unite == 4) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW7 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW1 ; vehi = vts2_VehW6 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE6 ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE1 ; vehi = vts2_VehE6 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGMG ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGB ; soldat5 = vts2_SoldierGB ; vehi = vts2i_LandroverMG ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // on spawne le vehicule call compile format ["%1%2 = createVehicle [vehi, [_positX,_positY,_positZ], [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; // on spawne conducteur et tireur call compile format["soldat4 createUnit [[_positX,_positY,_positZ],%1,""equi3%2_1 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;"", console_unit_moral, ""SERGEANT""];",(_nom_groupe),(var_v_solo)]; call compile format["soldat5 createUnit [[_positX,_positY,_positZ],%1,""equi4%2_2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo)]; // On spawne le groupe for[{_i=2},{_i<=3},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe mca // -------------------------------------------------------------------------------------- if (console_valid_unite == 5) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW3 ; soldat4 = vts2_ManW2 ; soldat5 = vts2_ManW8 ; soldat6 = vts2_ManW2 ; soldat7 = vts2_ManW1 ; soldat8 = vts2_ManW1 ; vehi = vts2_VehW17 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE3 ; soldat4 = vts2_ManE2 ; soldat5 = vts2_ManE7 ; soldat6 = vts2_ManE2 ; soldat7 = vts2_ManE1 ; soldat8 = vts2_ManE1 ; vehi = vts2_VehE13_ATGM ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGMedic ; soldat4 = vts2_SoldierGG ; soldat5 = vts2_SoldierGAT ; soldat6 = vts2_SoldierGG ; soldat7 = vts2_SoldierGB ; soldat8 = vts2_SoldierGB ; vehi = vts2i_Stryker_TOW ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ; h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // on spawne le vehicule call compile format ["%1%2 = createVehicle [vehi, [_positX,_positY,_positZ], [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; // on spawne conducteur et tireur call compile format["soldat7 createUnit [[_positX,_positY,_positZ],%1,""equi3%2_1 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;"", console_unit_moral, ""SERGEANT""];",(_nom_groupe),(var_v_solo)]; call compile format["soldat8 createUnit [[_positX,_positY,_positZ],%1,""equi4%2_2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo)]; // On spawne le groupe for[{_i=2},{_i<=6},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; call compile format["_replita = [%1,0] execVM ""repli_basic.sqf"";",(console_nom)]; // orientation = je n'arrive pas imprimer le DIR par dfaut, donc je vais demander un lger mouvement aux groupes pour qu'ils soient dans la bonne direction deletevehicle h_dir ; sleep 0.2; distance_or = 10; if (console_unit_orientation == 45) then {h_dir = "HeliHempty" createvehicle [_positX+distance_or,_positY+distance_or,0];}; if (console_unit_orientation == 90) then {h_dir = "HeliHempty" createvehicle [_positX+distance_or,_positY,_positZ];}; if (console_unit_orientation == 135) then {h_dir = "HeliHempty" createvehicle [_positX+distance_or,_positY-distance_or,0];}; if (console_unit_orientation == 180) then {h_dir = "HeliHempty" createvehicle [_positX,_positY-distance_or,0];}; if (console_unit_orientation == -135) then {h_dir = "HeliHempty" createvehicle [_positX-distance_or,_positY-distance_or,0];}; if (console_unit_orientation == -90) then {h_dir = "HeliHempty" createvehicle [_positX-distance_or,_positY,_positZ];}; if (console_unit_orientation == -45) then {h_dir = "HeliHempty" createvehicle [_positX-distance_or,_positY+distance_or,0];}; call compile format["%1 move position h_dir;",(console_nom)]; }; // ====================================================================================== // ====================================== Materiels ======================================= // ====================================================================================== if (var_console_valid_type == "Matrl") then { // ------- Cra du materiel avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // spawn du materiel if from3D then { //call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; call compile format ["%1 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""NONE""] ;nomvehicule = %1;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; From3D = false; publicvariable "From3D"; sleep 1; nomvehicule setPosASL [_positX,_positY,_positZ ]; }else{ call compile format ["%1 = createVehicle [console_unit_unite, [_positX,_positY,0], [], 0, ""NONE""] ;nomvehicule = %1;",(console_nom),(var_v_solo)]; }; // orientation du materiel nomvehicule setdir console_unit_orientation ; }; }; // ====================================================================================== // ====================================== OBJETS ======================================= // ====================================================================================== if (var_console_valid_camp== "Objet") then { // Si les objets sont des objets du jeu : if (console_valid_unite < 27) then { // ------- Cra du materiel avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // spawn du materiel if from3D then { //call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; call compile format ["%1 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""NONE""] ;nomvehicule = %1;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; sleep 1; nomvehicule setPosASL [_positX,_positY,_positZ ]; }else{ call compile format ["%1 = createVehicle [console_unit_unite, [_positX,_positY,0], [], 0, ""NONE""] ;nomvehicule = %1;",(console_nom),(var_v_solo)]; }; // orientation du materiel nomvehicule setdir console_unit_orientation ; }; // Si les objets sont des objets speciaux : if (console_valid_unite > 26) then { // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // variables _larg = 20 ; if (console_valid_unite == 29) then {_larg = 40;}; if (console_valid_unite == 30) then {_larg = 40;}; if (console_valid_unite == 31) then {_larg = 60;}; if (console_valid_unite == 32) then {_larg = 60;}; // spawn du h repre call compile format ["%1 = createVehicle [""HeliHempty"", [_positX,_positY,_positZ], [], 0, ""NONE""] ;_repere = %1;",(console_nom)]; // Panneaux d'avertissement si actifs if ((console_valid_unite == 28) or (console_valid_unite == 30) or (console_valid_unite == 32)) then { _e = 0; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX+_larg,_positY+_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; _e = 1; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX+_larg,_positY-_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; _e = 2; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX-_larg,_positY-_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; _e = 3; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX-_larg,_positY+_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; }; // mines _nbre_mines = _larg*2 ; _nbre_mines2 = _nbre_mines / 4 ; for[{_i=1},{_i<=_nbre_mines2},{_i=_i+1}] do { call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX+(random _larg),_positY+(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX+(random _larg),_positY-(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX-(random _larg),_positY-(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX-(random _larg),_positY+(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; }; // lancement du script de dtection call compile format ["_detect_min = [%1,_larg] execVM ""computer\console\mines.sqf"";",(console_nom)]; }; }; // ====================================================================================== // ====================================== Statique ================================ // ====================================================================================== if (var_console_valid_type == "Statique") then { // Si les objets sont des objets du jeu : if (console_valid_unite < 3) then { // ------- Cra du groupe_vehicule avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // crea du groupe_vehicule if (var_console_valid_camp== "Blufor") then {equipage = vts2_ManW1 ; call compile format["%1 = creategroup west;",(console_nom)];}; if (var_console_valid_camp== "Opfor") then {equipage = vts2_ManE1 ; call compile format["%1 = creategroup east;",(console_nom)];}; if (var_console_valid_camp== "Indep.") then {equipage = vts2_SoldierGB ; call compile format["%1 = creategroup resistance;",(console_nom)];}; // On spawne (d'abord le vhicule) et on donne un nom tous les membres call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX,_positY,_positZ], [], 0, ""NONE""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip1%2 = this ; h_ori = equip1%2 ; this assignasgunner nomvehicule; this moveingunner nomvehicule;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(nomvehicule),(console_init)]; // On donne les ordres d'orientation et de mouvement h_ori setdir console_unit_orientation ; nomvehicule setdir console_unit_orientation ; }; // Si les objets sont des objets speciaux : if (console_valid_unite > 2) then { // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // crea du groupe_vehicule if (var_console_valid_camp== "Blufor") then {call compile format["%1 = creategroup west;",(console_nom)];}; if (var_console_valid_camp== "Opfor") then {call compile format["%1 = creategroup east;",(console_nom)];}; if (var_console_valid_camp== "Indep.") then {call compile format["%1 = creategroup resistance;",(console_nom)];}; if (console_valid_unite == 4) then { // ------------ poste avanc // On dtermine le matriel selon le camp if (var_console_valid_camp== "Blufor") then { drapeau = "FlagCarrierWest"; vehicule = vts2_VehW7 ; soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW8 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW1 ; arme_statique = vts2_StaW2 ; }; if (var_console_valid_camp== "Indep.") then { drapeau = "FlagCarrierSouth"; vehicule = vts2i_HMMWVTOW ; soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGAT ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGB ; soldat5 = vts2_SoldierGB ; arme_statique = vts2i_M2StaticMG ; }; if (var_console_valid_camp== "Opfor") then { drapeau = "FlagCarrierNorth"; vehicule = vts2_VehE6 ; //vehicule = "ACE_ZU23" ; soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE7 ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE1 ; arme_statique = vts2_StaE3 ; }; // On spawne les lments de base _fort = createVehicle ["Land_fortified_nest_big", [_positX,_positY,0], [], 0, "None"]; //vehic = createVehicle [vehicule, [_positX-2,_positY+5,0], [], 0, "None"]; _drap = createVehicle [drapeau, [_positX+5,_positY+5,0], [], 0, "None"]; _fire1 = createVehicle ["Land_Campfire_burning", [_positX+3,_positY+5,0], [], 0, "None"]; MASH1 = createVehicle ["MASH", [_positX,_positY-20,0], [], 0, "None"]; MASH1 setdir 0 ; stat1 = createVehicle [arme_statique, [_positX+7,_positY+7,0], [], 0, "None"]; stat1 setdir 45 ; stat2 = createVehicle [arme_statique, [_positX-7,_positY-7,0], [], 0, "None"]; stat2 setdir -135 ; _mur2 = createVehicle ["Land_fort_bagfence_long", [_positX-5,_positY+13,0], [], 0, "None"]; _mur2 setdir 90 ; _mur3 = createVehicle ["Land_fort_bagfence_long", [_positX,_positY+13,0], [], 0, "None"]; _mur3 setdir 90 ; _mur4 = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY+13,0], [], 0, "None"]; _mur4 setdir 90 ; _mur5 = createVehicle ["Land_fort_bagfence_long", [_positX+13,_positY-5,0], [], 0, "None"]; _mur5 setdir 0 ; _mur6 = createVehicle ["Land_fort_bagfence_long", [_positX+13,_positY,_positZ], [], 0, "None"]; _mur6 setdir 0 ; _mur7 = createVehicle ["Land_fort_bagfence_long", [_positX+13,_positY+5,0], [], 0, "None"]; _mur7 setdir 0 ; _mur8 = createVehicle ["Land_fort_bagfence_long", [_positX-13,_positY-5,0], [], 0, "None"]; _mur8 setdir 0 ; _mur9 = createVehicle ["Land_fort_bagfence_long", [_positX-13,_positY,_positZ], [], 0, "None"]; _mur9 setdir 0 ; _mur10 = createVehicle ["Land_fort_bagfence_long", [_positX-13,_positY+5,0], [], 0, "None"]; _mur10 setdir 0 ; _mur11 = createVehicle ["Land_fort_bagfence_long", [_positX,_positY-13,0], [], 0, "None"]; _mur11 setdir 90 ; _mur12 = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY-13,0], [], 0, "None"]; _mur12 setdir 90 ; _barb1 = createVehicle ["Fort_RazorWire", [_positX-7,_positY+15,0], [], 0, "None"]; _barb1 setdir 0 ; _barb2 = createVehicle ["Fort_RazorWire", [_positX,_positY+15,0], [], 0, "None"]; _barb2 setdir 0 ; _barb3 = createVehicle ["Fort_RazorWire", [_positX+7,_positY+15,0], [], 0, "None"]; _barb3 setdir 0 ; _barb4 = createVehicle ["Fort_RazorWire", [_positX-7,_positY-15,0], [], 0, "None"]; _barb4 setdir 0 ; _barb5 = createVehicle ["Fort_RazorWire", [_positX,_positY-15,0], [], 0, "None"]; _barb5 setdir 0 ; _barb6 = createVehicle ["Fort_RazorWire", [_positX+7,_positY-15,0], [], 0, "None"]; _barb6 setdir 0 ; _barb7 = createVehicle ["Fort_RazorWire", [_positX+15,_positY-7,0], [], 0, "None"]; _barb7 setdir 90 ; _barb8 = createVehicle ["Fort_RazorWire", [_positX+15,_positY,_positZ], [], 0, "None"]; _barb8 setdir 90 ; _barb9 = createVehicle ["Fort_RazorWire", [_positX+15,_positY+7,0], [], 0, "None"]; _barb9 setdir 90 ; _barb10 = createVehicle ["Fort_RazorWire", [_positX-15,_positY-7,0], [], 0, "None"]; _barb10 setdir 90 ; _barb11 = createVehicle ["Fort_RazorWire", [_positX-15,_positY,_positZ], [], 0, "None"]; _barb11 setdir 90 ; _barb12 = createVehicle ["Fort_RazorWire", [_positX-15,_positY+7,0], [], 0, "None"]; _barb12 setdir 90 ; // on spawne les units call compile format ["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY,_positZ],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY,_positZ],%1,""soldat1c = this ; this assignasgunner vehic ; this moveingunner vehic ; "", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat4 createUnit [[_positX,_positY,_positZ],%1,""soldat1d = this ; this assignasgunner stat1 ; this moveingunner stat1 ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1d setdir 45 ; call compile format ["soldat5 createUnit [[_positX,_positY,_positZ],%1,""soldat1e = this ; this assignasgunner stat2 ; this moveingunner stat2 ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1e setdir -135 ; }; if (console_valid_unite == 3) then { // ------------ checkpoint // On dtermine le matriel selon le camp if (var_console_valid_camp== "Blufor") then { vehicule = vts2_VehW6 ; soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW8 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW1 ; arme_statique = vts2_StaW2 ; }; if (var_console_valid_camp== "Indep.") then { vehicule = vts2i_LandroverMG ; soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGAT ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGB ; soldat5 = vts2_SoldierGB ; arme_statique = vts2i_M2StaticMG ; }; if (var_console_valid_camp== "Opfor") then { vehicule = vts2_VehE6 ; soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE7 ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE1 ; arme_statique = vts2_StaE3 ; }; // On spawne les lments de base - selon la direction! Madame redondance, bonjour ;) if (console_unit_orientation == 0) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 0 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY-5,0], [], 0, "None"]; _mur setdir 90 ; _fire1 = createVehicle ["Land_Campfire_burning", [_positX-5,_positY-15,0], [], 0, "None"]; MASH1 = createVehicle ["MASH", [_positX-13,_positY-15,0], [], 0, "None"]; MASH1 setdir 0 ; vehic = createVehicle [vehicule, [_positX-5,_positY-5,0], [], 0, "None"]; vehic setdir 0 ; stat = createVehicle [arme_statique, [_positX+5,_positY-7,0], [], 0, "None"]; stat setdir 0 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 45) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 45 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+3,_positY-7,0], [], 0, "None"]; _mur setdir 135 ; vehic = createVehicle [vehicule, [_positX-10,_positY,_positZ], [], 0, "None"]; vehic setdir 45 ; stat = createVehicle [arme_statique, [_positX+4,_positY-9,0], [], 0, "None"]; stat setdir 45 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 90) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 90 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX-7,_positY-3,0], [], 0, "None"]; _mur setdir 180 ; vehic = createVehicle [vehicule, [_positX,_positY+10,0], [], 0, "None"]; vehic setdir 90 ; stat = createVehicle [arme_statique, [_positX-9,_positY-3,0], [], 0, "None"]; stat setdir 90 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX-5,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX-5,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX-5,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 135) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 135 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX-5,_positY-3,0], [], 0, "None"]; _mur setdir 225 ; vehic = createVehicle [vehicule, [_positX-1,_positY+8,0], [], 0, "None"]; vehic setdir 135 ; stat = createVehicle [arme_statique, [_positX-7,_positY-1,0], [], 0, "None"]; stat setdir 135 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX-5,_positY+5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX-5,_positY+5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX-5,_positY+5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 180) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 180 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY+5,0], [], 0, "None"]; _mur setdir -90 ; vehic = createVehicle [vehicule, [_positX-5,_positY+5,0], [], 0, "None"]; vehic setdir 180 ; stat = createVehicle [arme_statique, [_positX+6,_positY+6,0], [], 0, "None"]; stat setdir 180 ; _fire1 = createVehicle ["Land_Campfire_burning", [_positX+5,_positY+15,0], [], 0, "None"]; MASH1 = createVehicle ["MASH", [_positX+13,_positY+15,0], [], 0, "None"]; MASH1 setdir 180 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX,_positY+5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY+5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY+5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == -135) then { _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir -135 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+7,_positY-3,0], [], 0, "None"]; _mur setdir -45 ; vehic = createVehicle [vehicule, [_positX,_positY+10,0], [], 0, "None"]; vehic setdir -135 ; stat = createVehicle [arme_statique, [_positX+11,_positY,_positZ], [], 0, "None"]; stat setdir -135 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX+5,_positY,_positZ],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX+5,_positY,_positZ],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX+5,_positY,_positZ],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == -90) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir -90 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+7,_positY+3,0], [], 0, "None"]; _mur setdir 180 ; vehic = createVehicle [vehicule, [_positX,_positY-10,0], [], 0, "None"]; vehic setdir -90 ; stat = createVehicle [arme_statique, [_positX+9,_positY+5,0], [], 0, "None"]; stat setdir -90 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX+5,_positY+5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX+5,_positY+5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX+5,_positY+5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == -45) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir -45 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY+3,0], [], 0, "None"]; _mur setdir 225 ; vehic = createVehicle [vehicule, [_positX+1,_positY-8,0], [], 0, "None"]; vehic setdir -45 ; stat = createVehicle [arme_statique, [_positX+7,_positY+1,0], [], 0, "None"]; stat setdir -45 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX+5,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX+5,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX+5,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; // on spawne les dernires units call compile format ["soldat4 createUnit [[_positX,_positY,_positZ],%1,""soldat1d = this ; this assignasgunner stat ; this moveingunner stat ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1d setdir console_unit_orientation ; call compile format ["soldat5 createUnit [[_positX,_positY,_positZ],%1,""soldat1e = this ; this assignasgunner vehic ; this moveingunner vehic ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1e setdir console_unit_orientation ; }; }; }; // ====================================================================================== // ====================================== MOUVEMENT ================================ // ====================================================================================== // Mouvement primaire if (var_console_valid_mouvement!="") then { if (var_console_valid_mouvement=="objectif") then { call compile format["%1 move position objectif;",(console_nom)]; }; if (var_console_valid_mouvement=="insertion") then { call compile format["%1 move position insertion;",(console_nom)]; }; if ((var_console_valid_mouvement=="Joueur") and (blufor_vts)) then { call compile format["%1 move position joueur1;",(console_nom)]; }; if ((var_console_valid_mouvement=="Joueur") and (opfor_vts)) then { call compile format["%1 move position joueure1;",(console_nom)]; }; if ((var_console_valid_mouvement=="Joueur") and (inde_vts)) then { call compile format["%1 move position joueuri1;",(console_nom)]; }; }; // On vrifie si des scripts d'init ont t slectionns if (var_console_valid_mouvement==script1Sqf) then { call compile format["_script1 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script1Sqf)]; }; if (var_console_valid_mouvement==script2Sqf) then { call compile format["_script2 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script2Sqf)]; }; if (var_console_valid_mouvement==script3Sqf) then { call compile format["_script3 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script3Sqf)]; }; if (var_console_valid_mouvement==script4Sqf) then { call compile format["_script4 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script4Sqf)]; }; if (var_console_valid_mouvement==script5Sqf) then { call compile format["_script5 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script5Sqf)]; }; if (var_console_valid_mouvement==script6Sqf) then { call compile format["_script6 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script6Sqf)]; }; if (var_console_valid_mouvement==script7Sqf) then { call compile format["_script7 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script7Sqf)]; }; // On termine par une remise zro de la variable de spawn if not(nom_console_valid_mouvement== "Put on Master (only men)") then { console_spawnmark = true ; publicvariable "console_spawnmark"; }; From3D = false; publicvariable "From3D"; console_spawn = false; publicvariable "console_spawn"; }; If (true) ExitWith {}// // Spectating Script for Armed Assault // by Kegetys // /* _player = _this select 0; _killer = _this select 1; _seagull = _this select 2; // If seagull is valid we came from the respawn scene if(typeName _seagull != "string") then { _seagull setpos[-1000, -1000, 1000]; sleep 1.5; titleCut["","BLACK OUT", 1.5]; }; */ // Globals etc. //spectate_events = compile loadfile "spect\specta_events.sqf"; KEGsMouseButtons = [false, false]; KEGsMouseScroll = 0; KEGsMouseCoord = [0.5, 0.5]; KEGsUseNVG = false; KEGsMissileCamActive = false; KEGsUseMissileCam = true; KEGsMarkerNames = false; // True = display marker names and arrows KEGsMarkerType = 1; // 0 = disabled, 1 = names, 2 = types KEGsTags = true; // Particlesource tags KEGsAIfilter = false; // Filter AI units (only players displayed) KEGsClientAddonPresent = false; // Is client-side addon present? KEGsMarkerSize = 1.0; // Full map marker size KEGsMinimapZoom = 0.5; // Minimap zoom KEGsSelect = 0; // Used to change selected target KEGs1stGunner = false; // Gunner view on 1st person camera? KEGsDroppedCamera = false; // Free camera dropped (non-targeted with free motion)? KEGsCamForward = false; KEGsCamBack = false; KEGsCamLeft = false; KEGsCamRight = false; KEGsNeedUpdateLB = false; _mouseDeltaX = 0; _mouseDeltaY = 0; _sdistance = 1; // camera distance _fangle = 0; // Free camera angle _fangleY = 15; _flybydst = 35; // Distance of flyby camera (adjusted based on target speed) _szoom = 0.976; _markers = []; // Map markers showing positions of all units KEGsTagSources = []; // Particle sources for tags _lastTgt = 0; _nameCache = []; // Used to store valid names since name command cannot be trusted _maxDistance = 50; // Maximum distance for camera _maxZoom = 0.05; // Maximum zoom level _minZoom = 2; // Unit sides shown - Show all if sides not set if(format["%1", KEGsShownSides] == "scalar bool array string 0xe0ffffef") then { KEGsShownSides = [west, east, resistance, civilian]; }; deathCam = []; _ehVehicles = []; // Used to keep track of added eventhandlers KEGsAllUnits = []; // Create trigger for retrieving all vehicles _t = createTrigger["EmptyDetector", getpos player]; _t setTriggerType "NONE"; _t setTriggerStatements ["this", "KEGsAllUnits = thislist", ""]; _t setTriggerArea[50000, 50000, 0, false]; _t setTriggerActivation["ANY", "PRESENT", false]; // Wait until trigger assigns the array waitUntil{count KEGsAllUnits > 0}; /* if(typeName _seagull != "string") then { sleep 1; titleCut ["","BLACK IN", 8]; } else { titleText["","BLACK IN", 0]; }; // Create dialog & assign keyboard handler createDialog "rscSpectate"; _disp = (findDisplay 55001); _disp displaySetEventHandler["KeyDown", "[""KeyDown"",_this] call spectate_events"]; _disp displaySetEventHandler["KeyUp", "[""KeyUp"",_this] call spectate_events"]; // Hide menus by default ["ToggleCameraMenu",0] call spectate_events; ["ToggleTargetMenu",0] call spectate_events; ["ToggleHelp",0] call spectate_events; ["ToggleMap",1] call spectate_events; // IDC's from rsc _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cMap = 55013; _cMapFull = 55014; _cDebug = 55100; _nearest = objNull; // Create cameras _pos = [(getpos player select 0)-1+random 2, (getpos player select 1)-1+random 2, 2]; KEGscam_static = "camera" camCreate _pos; KEGscam_target = "camera" camCreate _pos; // "Dummy" target camera for smooth transitions KEGscam_free = "camera" camCreate _pos; KEGscam_flyby = "camera" camCreate _pos; KEGscam_topdown = "camera" camCreate _pos; KEGscam_1stperson = "camera" camCreate _pos; // Dummy camera KEGscam_missile = "camera" camCreate _pos; // Missile camera KEGscam_fullmap = "camera" camCreate _pos; // Full map view camera _cameras = [KEGscam_free, KEGscam_static, KEGscam_flyby, KEGscam_topdown, KEGscam_1stperson]; _cameraNames = ["Free", "Chase", "Flyby", "Top-down", "1st person"]; _dummy = "helihempty" createVehicleLocal [0,0,0]; // Dummy object for distance command KEGscameras = _cameras; // Hack to allow access from events.sqf // Add cameras to listbox lbClear _cLBCameras; {lbAdd[_cLBCameras, _x]} foreach _cameraNames; // Add separator & toggles _cLbSeparator = lbAdd[_cLBCameras, "---"]; lbSetColor[_cLBCameras, _cLbSeparator, [0.5, 0.5, 0.5, 0.5]]; _cLbMissileCam = lbAdd[_cLBCameras, "Missile camera"]; _cLbToggleNVG = lbAdd[_cLBCameras, "Night vision"]; _cLbToggleTags = lbAdd[_cLBCameras, "Unit tags"]; _cLbToggleAiFilter = lbAdd[_cLBCameras, "Filter AI"]; KEGs_tgtIdx = 0; KEGs_cameraIdx = 0; showcinemaborder false; lbClear _cLBTargets; onMapSingleClick "[""MapClick"",_pos] call spectate_events"; ["EventLogAdd",["Initialize",[1,1,1,1]]] call spectate_events; // Check for client side addon _foo = "KEGsAddon10" createVehicleLocal[-1000,-1000,0]; //_foo = "KEGspect_bar_yellow" createVehicleLocal[-1000,-1000,0]; if(!isNull _foo) then { deletevehicle _foo; KEGsClientAddonPresent = true; }; // Spawn thread to display help reminder after a few seconds [] spawn {sleep(3);if(dialog) then {cutText["\n\n\n\n\nPress F1 for help","PLAIN DOWN", 0.75]}}; _camSelLast = 0; _tgtSelLast = 0; _mouseLastX = 0.5; _mouseLastY = 0.5; _nNoDialog = 0; KEGsCamPos = [0,0,0]; _cxpos = 0; _cypos = 0; _czpos = 0; _cspeedx = 0; _cspeedy = 0; _tbase = 0.1; _h = 2; */ _lastAutoUpdateLB = time; _lastUpdateTags = -100; _lastUpdateMarkers = -100; _lastUpdateMarkerTypes = -100; _lastCheckNewUnits = -100; // Main loop - Ugly double loop to avoid exit after 10000 iterations while{true} do { while{true} do { call { // Check for listbox selections if(_camSelLast != lbCurSel _cLBCameras) then { _cs = lbCurSel _cLBCameras; if(_cs == _cLbSeparator) then {_cs = _camSelLast}; // Special for toggling missile camera if(_cs == _cLbMissileCam) then { KEGsUseMissileCam = !KEGsUseMissileCam; _cs = _camSelLast; }; // Special for toggling NVG if(_cs == _cLbToggleNVG) then { KEGsUseNVG = !KEGsUseNVG; _cs = _camSelLast; }; // Special for toggling tags if(_cs == _cLbToggleTags) then { KEGsTags = !KEGsTags; ["ToggleTags", [KEGsTags, (_cameras select KEGs_cameraIdx)]] call spectate_events; _cs = _camSelLast; }; // Special for toggling AI filter if(_cs == _cLbToggleAiFilter) then { KEGsAIfilter = !KEGsAIfilter; _cs = _camSelLast; KEGsNeedUpdateLB = true; // Request listbox update }; if(_cs != _camSelLast) then { // Selected another camera - disable dropped cam KEGsDroppedCamera = false; }; KEGs_cameraIdx = _cs; }; if(lbCurSel _cLBTargets > lbSize _cLBTargets) then { lbSetCurSel[_cLBTargets, lbSize _cLBTargets]; // Selection outside listbox size }; // Update selected target from listbox if(KEGsSelect != 0) then { lbSetCurSel[_cLBTargets, ((lbCurSel _cLBTargets)+KEGsSelect)]; KEGsSelect = 0; }; if(_tgtSelLast != lbCurSel _cLBTargets) then { KEGsDroppedCamera = false; KEGs_tgtIdx = lbValue[_cLBTargets, (lbCurSel _cLBTargets)]; }; // Process mouse movement _mouseDeltaX = _mouseLastX - (KEGsMouseCoord select 0); _mouseDeltaY = _mouseLastY - (KEGsMouseCoord select 1); if(!(KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Right mouse button - Adjust position _fangle = _fangle - (_mouseDeltaX*360); _fangleY=_fangleY + (_mouseDeltaY*180); if(_fangleY > 89) then {_fangleY = 89}; if(_fangleY < -89) then {_fangleY = -89}; }; if((KEGsMouseButtons select 0) and !(KEGsMouseButtons select 1)) then { // Left mouse button - Adjust distance _sdistance = _sdistance - (_mouseDeltaY*10); if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if(KEGsMouseScroll != 0) then { // Mouse scroll wheel - Adjust distance _sdistance = _sdistance - (KEGsMouseScroll*0.11); KEGsMouseScroll = KEGsMouseScroll * 0.75; if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if((KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Both mousebuttons - Adjust zoom _szoom = _szoom - (_mouseDeltaY*3); if(_szoom > _minZoom) then {_szoom = _minZoom}; if(_szoom < _maxZoom) then {_szoom = _maxZoom}; }; // Check for new units every 2 seconds if(time - _lastCheckNewUnits > 2) then { _lastCheckNewUnits = time; _allUnits = []; _allVehicles = []; // Avoid game logics _foo = []; //Next line of code adapted by norrin for revive script {if(side _x != sideLogic && (_x distance getMarkerPos "Boot_Hill") > 700) then {_foo = _foo + [_x]}} foreach KEGsAllUnits; {_allUnits = _allUnits + (crew _x);_allVehicles = _allVehicles + [_x]} foreach _foo; _newUnits = _allUnits - deathCam; _newVehicles = _allVehicles - _ehVehicles; if(count _newVehicles > 0) then { // Add event handlers to new vehicles _ehVehicles = _ehVehicles + _newVehicles; { // Add fired eventhandler for map indication _fh = _x addeventhandler["fired", {["UnitFired",_this] call spectate_events}]; //_kh = _x addeventhandler["killed", {["UnitKilled",_this] call spectate_events}]; _x setVariable["KEGsEHfired", _fh]; //_x setVariable["KEGsEHkilled", _kh]; } foreach _newVehicles; }; if(count _newUnits > 0) then { // Add new units to end of list deathCam = deathCam + _newUnits; // Request listbox update KEGsNeedUpdateLB = true; // Create markers { // Crete marker _m = createMarkerLocal[format["KEGsMarker%1", count _markers], getpos player]; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.3, 0.3]; _markers = _markers + [_m]; //if(leader _x == _x) then {_m setMarkerTextLocal "Leader";}; if(side _x == civilian) then {deleteMarkerLocal _m;}; //if(leader _x == _x) then {_m setMarkerTextLocal (typeOf (vehicle _x));}; // if(vehicle _x != _x) then {_m setMarkerTextLocal (typeOf (vehicle _x));}; //if(vehicle (leader _x ) != leader _x ) then {_m setMarkerSizeLocal[0.5, 0.5];_m setMarkerTextLocal (typeOf (vehicle _x));}; //if(vehicle (leader _x ) != leader _x ) then {_m setMarkerSizeLocal[0.5, 0.5];_m setMarkerTextLocal (vehicleVarName (vehicle _x));}; if(vehicle (leader _x ) != leader _x ) then {_m setMarkerSizeLocal[0.5, 0.5];_m setMarkerTextLocal (vehicleVarName (vehicle _x));}; //hint format["%1",(vehicle _x)]; // Set marker color if(side _x == west) then {_m setMarkerColorLocal "ColorBlue";}; if(side _x == east) then {_m setMarkerColorLocal "ColorRed";}; if(side _x == resistance) then {_m setMarkerColorLocal "ColorGreen";}; //if(side _x == civilian) then {_m setMarkerColorLocal "ColorWhite";}; // Create particle source _s = "#particlesource" createvehiclelocal (getpos _x); KEGsTagSources = KEGsTagSources + [[_x, _s]]; // If tags are on, turn them off and back again to include new units if(KEGsTags) then { ["ToggleTags",[false, (_cameras select KEGs_cameraIdx)]] call spectate_events; ["ToggleTags",[true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; } foreach _newUnits; }; }; // Request listbox update every 4 seconds to update dead units or jip player names if(time - _lastAutoUpdateLB > 4) then { _lastAutoUpdateLB = time; KEGsNeedUpdateLB = true; }; if(KEGsNeedUpdateLB) then { // Clear and re-fill targets listbox lbClear _cLBTargets; for "_idx" from 0 to ((count deathCam)-1) do { _x = deathCam select _idx; _name = ""; if(alive _x) then { // Unit is alive, use name command _name = name _x; _nameCache set[_idx, _name]; } else { // Dead unit, use cached name _name = _nameCache select _idx; }; if((!KEGsAIfilter or isPlayer _x) and ((side _x) in KEGsShownSides)) then { _i = lbAdd[_cLBTargets, _name]; lbSetValue[_cLBTargets, _i, _idx]; // Value used to id unit if(side _x == west) then {lbSetColor[_cLBTargets, _i, [0.8,0.8,1,1]]}; if(side _x == east) then {lbSetColor[_cLBTargets, _i, [1,0.8,0.8,1]]}; if(side _x == resistance) then {lbSetColor[_cLBTargets, _i, [0.8,1,0.8,1]]}; if(side _x == civilian) then {lbSetColor[_cLBTargets, _i, [1,1,1,1]]}; if(not alive _x) then { // Whoops, unit is dead, change color lbSetColor[_cLBTargets, _i, [0.5,0.5,0.5,1]]; }; //if(_x == KEGs_target) then { // Select target // Not a good idea //lbSetCurSel[_cLBTargets, _i]; //}; }; }; KEGsNeedUpdateLB = false; }; // Check limits if(KEGs_tgtIdx >= count deathCam) then {KEGs_tgtIdx = (count deathCam)-1;}; if(KEGs_tgtIdx < 0) then {KEGs_tgtIdx = 0}; if(KEGs_cameraIdx < 0) then {KEGs_cameraIdx = 0}; if(KEGs_cameraIdx >= count _cameras) then {KEGs_cameraIdx = (count _cameras)-1;}; // Select camera, get target if(!KEGsMissileCamActive) then { (_cameras select KEGs_cameraIdx) cameraEffect["internal", "BACK"]; KEGs_target = deathCam select KEGs_tgtIdx; }; lbSetCurSel[_cLBCameras, KEGs_cameraIdx]; if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] != KEGs_tgtIdx) then { // Find listbox element with matching value for "_idx" from 0 to (lbSize _cLBTargets) do { if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] == KEGs_tgtIdx) then { lbSetCurSel[_cLBTargets, _idx]; _found = true; }; }; }; //if(lbCurSel _cLBTargets != KEGs_tgtIdx) then { // lbSetCurSel[_cLBTargets, KEGs_tgtIdx]; // }; camUseNVG KEGsUseNVG; if(ctrlVisible _cMapFull) then { KEGscam_fullmap cameraEffect["internal", "BACK"]; }; //ctrlSetText[_cDebug, format["%1", count _markers]]; // Update tag particlesources if(time - _lastUpdateTags > (1/5)) then { _lastUpdateTags = time; if(KEGsTags) then { ["ToggleTags", [true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; }; // Update markers 10fps _rate = 15; if(count _markers > 100) then {_rate = 7.5}; // Update large number of markers less often if(time - _lastUpdateMarkers > (1/_rate)) then { _lastUpdateMarkers = time; // setMarkerTypeLocal is very slow, call it only once per second _doMarkerTypes = false; if(time - _lastUpdateMarkerTypes > 1) then { _lastUpdateMarkerTypes = time; _doMarkerTypes = true; // Allow update marker types }; if(ctrlVisible _cMapFull) then { // Position camera in the middle of full map, for sound and // smoother marker motion (distant objects appear less smooth) _mapFull = _disp displayctrl _cMapFull; _mappos = _mapFull posScreenToWorld[0.5, 0.5]; KEGscam_fullmap camsettarget _mappos; KEGscam_fullmap camsetrelpos [0, -1, 150]; KEGscam_fullmap camcommit 0; }; _markedVehicles = []; // Keep track of vehicles with markers to avoid multiple markers for one vehicle for "_i" from 0 to ((count _markers)-1) do { _m = _markers select _i; _u = (deathCam select _i); _m setMarkerPosLocal (getpos vehicle _u); if(not(gps_eni_valid)) then {_m setMarkerTypeLocal "empty";}else{_m setMarkerTypeLocal "Dot";}; if(!((side _u) in KEGsShownSides)) then { // We arent' supposed to show this side unit - hide marker if(_doMarkerTypes) then {_m setMarkerTypeLocal "empty"}; } else { if(KEGsMarkerNames or KEGsMinimapZoom < 0.15) then { // Set full screen map marker types - Also zoomed minimap if(ctrlVisible _cMapFull) then { switch(KEGsMarkerType) do { case 0: { // No text _m setMarkerTextLocal ""; }; case 1: { // Names if(alive (vehicle _u)) then { if(name (vehicle _u) != "Error: no unit") then {_m setMarkerTextLocal name ( _u)}; }; }; case 2: { // Types _m setMarkerTextLocal getText (configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "DisplayName"); }; }; } else { // Minimap with detailed icons but no text _m setMarkerTextLocal ""; }; if(KEGsClientAddonPresent) then { // With client side addon use better icons _type = getText(configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "simulation"); _icon = "Arrow"; switch(_type) do { case "tank": {_icon = "KEGsTank"}; case "car": {_icon = "KEGsCar"}; case "soldier": {_icon = "KEGsMan"}; case "ship": {_icon = "KEGsShip"}; case "airplane": {_icon = "KEGsPlane"}; case "helicopter": {_icon = "KEGsHelicopter"}; case "motorcycle": {_icon = "KEGsMotorcycle"}; case "parachute": {_icon = "KEGsParachute"}; }; if(_doMarkerTypes) then {_m setMarkerTypeLocal _icon}; _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; } else { // No client side addon - basic markers if(_doMarkerTypes) then {_m setMarkerTypeLocal "Arrow"}; if(_u == vehicle _u) then { _m setMarkerSizeLocal[0.33*KEGsMarkerSize, 0.27*KEGsMarkerSize]; } else { _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; }; }; _m setMarkerDirLocal (getdir (vehicle _u)); } else { _m setMarkerTextLocal ""; if(_doMarkerTypes) then {_m setMarkerTypeLocal "Dot"}; _m setMarkerSizeLocal[0.4,0.4]; }; }; if(vehicle (leader _u ) == leader _u ) then { _m setMarkerSizeLocal[0.3, 0.3]; _m setMarkerTextLocal ""; }; if(not alive _u) then { if(KEGsClientAddonPresent) then { // Switch to darker color, cant use side since the unit is already dead if(getMarkerColor _m == "ColorBlue") then {_m setMarkerColorLocal "KEGsDarkBlue"}; if(getMarkerColor _m == "ColorRed") then {_m setMarkerColorLocal "KEGsDarkRed"}; if(getMarkerColor _m == "ColorGreen") then {_m setMarkerColorLocal "KEGsDarkGreen"}; if(getMarkerColor _m == "ColorWhite") then {_m setMarkerColorLocal "KEGsGrey"}; } else { _m setMarkerColorLocal "ColorBlack"; _m setMarkerTextLocal ""; }; }; if(vehicle _u in _markedVehicles) then { // This vehicle was already marked, hide marker _m setMarkerTypeLocal "Empty"; } else { _markedVehicles = _markedVehicles + [vehicle _u]; }; }; // Follow target with small map _map = _disp displayctrl _cMap; ctrlMapAnimClear _map; if(KEGsDroppedCamera) then { // Center on dropped camera position _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, [_cxpos, _cypos,0]]; } else { // Center on target _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, getpos KEGs_target]; }; ctrlMapAnimCommit _map; }; // Check if target changed and center main map if(KEGs_tgtIdx != _lastTgt) then { _map = _disp displayctrl _cMapFull; ctrlMapAnimClear _map; _map ctrlMapAnimAdd [0.2, 1.0, getpos (deathcam select KEGs_tgtIdx)]; ctrlMapAnimCommit _map; }; if((_cameras select KEGs_cameraIdx) == KEGscam_1stperson) then { // 1st person view if(KEGs1stGunner) then { (vehicle KEGs_target) switchCamera "GUNNER"; } else { (vehicle KEGs_target) switchCamera "INTERNAL"; }; (vehicle KEGs_target) cameraEffect ["terminate","FRONT"]; }; // Get target properties _dir = getdir vehicle KEGs_target; _bb = boundingBox vehicle KEGs_target; //_h = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _foo = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _l = ((_bb select 1) select 1) - ((_bb select 0) select 1); // Length _w = ((_bb select 1) select 0) - ((_bb select 0) select 0); // Width _hstr = 0.15; _h = (_foo*_hstr)+(_h*(1-_hstr)); // Set UI texts _role = ""; if(vehicle KEGs_target != KEGs_target) then { if(KEGs_target == driver vehicle KEGs_target) then {_role = "(Driver)"}; if(KEGs_target == gunner vehicle KEGs_target) then {_role = "(Gunner)"}; if(KEGs_target == commander vehicle KEGs_target) then {_role = "(Commander)"}; }; _name = "Unknown"; if(alive KEGs_target) then { _name = name KEGs_target; if(_name == "Error: no unit") then {_name = "Unknown"}; }; if(KEGsDroppedCamera and isNull _nearest) then { // Dropped camera mode - no target _name = ""; _role = ""; }; ctrlSetText[_cName, format["%1 %2", _name, _role]]; ctrlSetText[_cCamera, format["Camera: %1", _cameraNames select KEGs_cameraIdx]]; // Set name color to gray if dropped cam _ccName = _disp displayctrl _cName; if(KEGsDroppedCamera) then { _ccName ctrlSetTextColor[0.6, 0.6, 0.6, 1]; } else { _ccName ctrlSetTextColor[1, 1, 1, 1]; }; // Set toggle text color for camera menu if(KEGsUseMissileCam) then {lbSetColor[_cLBCameras, _cLbMissileCam, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbMissileCam, [1,1,1,0.33]]}; if(KEGsUseNVG) then {lbSetColor[_cLBCameras, _cLbToggleNVG, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleNVG, [1,1,1,0.33]]}; if(KEGsTags) then {lbSetColor[_cLBCameras, _cLbToggleTags, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleTags, [1,1,1,0.33]]}; if(KEGsAIfilter) then {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1,1,1,0.33]]}; if(KEGsDroppedCamera) then { // Dropped free camera, moved with WSAD keys if(KEGs_cameraIdx != 0) then { // User changed camera KEGsDroppedCamera = false; }; // Adjust speed from buttons held down _spd = (_sdistance max 1)*20; if(KEGsCamForward) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((_spd*_tbase)*cos _fangle); }; if(KEGsCamBack) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos _fangle); }; if(KEGsCamLeft) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((_spd*_tbase)*cos (_fangle-90)); }; if(KEGsCamRight) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos (_fangle-90)); }; // Move camera _cxpos = _cxpos + (_cspeedx*_tbase); _cypos = _cypos + (_cspeedy*_tbase); _czpos = 0; _h = 2; // Static camera height _l = 2.2; // Slow down _bstr = 5; _cspeedx = _cspeedx * ((1.0-(_tbase*_bstr)) max 0); _cspeedy = _cspeedy * ((1.0-(_tbase*_bstr)) max 0); // Check for nearby targets _dummy setpos[_cxpos, _cypos, 1.5]; _objs = [_cxpos, _cypos, 1.5] nearObjects 5; _nearest = objNull; _dist = 10; { { _d = _dummy distance _x; if(_d < _dist and _x in deathCam and alive _x) then {_nearest = _x;_dist = _d;}; } foreach crew _x; } foreach _objs; if(!isNull _nearest) then {KEGs_tgtIdx = deathCam find _nearest}; } else { // Set targets for all cameras _cxpos = getpos vehicle KEGs_target select 0; _cypos = getpos vehicle KEGs_target select 1; _czpos = getpos vehicle KEGs_target select 2; }; KEGscam_target camSetPos[_cxpos, _cypos, _czpos+(_h*0.7)]; KEGscam_static camSetTarget KEGscam_target; KEGscam_free camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; KEGscam_flyby camSetTarget KEGscam_target; KEGscam_topdown camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; {_x camSetFov _szoom} foreach _cameras; // Static camera, follows unit from behind KEGscam_static camSetRelPos[sin(_dir)*(-(_l*_sdistance)), cos(_dir)*(-(_l*_sdistance)), 0.6*abs _sdistance]; // Free camera, user rotates camera around target _d = (-(_l*(0.3 max _sdistance))); _z = sin(_fangleY)*(_l*(0.3 max _sdistance)); KEGscam_free camSetRelPos[(sin(_fangle)*_d)*cos(_fangleY), (cos(_fangle)*_d)*cos(_fangleY), _z]; KEGscam_free camCommit 0; // Flyby camera, no user control except zoom if(KEGs_target distance KEGscam_flyby > (_flybydst*1.1)) then { _flybydst = 20+(speed vehicle KEGs_target); KEGscam_flyby camSetRelPos[sin(_dir)*_flybydst, cos(_dir)*_flybydst, 1+((random _h)*1.5)]; KEGscam_flyby camCommit 0; KEGscam_target camCommit 0; }; // Top-down camera KEGscam_topdown camSetRelPos[0.0, -0.01, 2+((0 max _sdistance)*15)]; KEGscam_topdown camCommit 0; // Commit static and flyby cameras _comSpeed = 1.0 - ((speed vehicle KEGs_target)/70); if(_comSpeed < 0.0) then {_comSpeed = 0.0;}; if((vehicle KEGs_target) distance KEGscam_static > 650) then {_comSpeed = 0}; // Jump immediately to distant target KEGscam_static camCommit _comSpeed/2; KEGscam_target camCommit _comSpeed/3; KEGscam_flyby camCommit _comSpeed; _mouseLastX = KEGsMouseCoord select 0; _mouseLastY = KEGsMouseCoord select 1; _camSelLast = lbCurSel _cLBCameras; _tgtSelLast = lbCurSel _cLBTargets; _lastTgt = KEGs_tgtIdx; }; // Wait a moment. 150fps ought to be enough for everyone :-) _tt = time; //sleep(1/150); sleep(0.5); _tbase = time-_tt; }}; /* // Dialog closed with esc key titleText["","BLACK IN", 0.5]; // Destroy cameras, markers, particlesources, etc. {camDestroy _x} foreach _cameras; deletevehicle KEGscam_target; deletevehicle KEGscam_missile; deletevehicle KEGscam_fullmap; {deletemarkerlocal _x} foreach _markers; deletevehicle _t; camUseNVG false; KEGsTags = false; onMapSingleClick ""; {deletevehicle (_x select 1)} foreach KEGsTagSources; KEGsTagSources = []; // Remove eventhandlers TODO: does this work properly? { _fh = _x getVariable "KEGsEHfired"; //_kh = _x getVariable "KEGsEHkilled"; if(typeName _fh == "SCALAR") then {_x removeEventHandler["fired", _fh]}; //if(typeName _kh == "SCALAR") then {_x removeEventHandler["killed", _kh]}; } foreach _ehVehicles; // Create a butterfly for player to fly with _bpos = [(getpos (vehicle KEGs_target) select 0)-5+random 10, (getpos (vehicle KEGs_target) select 1)-5+random 10, 1]; _bird = "ButterFly" createVehicle _bpos; _bird setvelocity[0,0,5]; _bird setpos _bpos; _bird switchCamera "INTERNAL"; _bird cameraEffect["terminate","FRONT"]; _bird camCommand "manual on"; KEGsBird = _bird; onMapSingleClick "KEGsBird setpos [_pos select 0, _pos select 1, 2];KEGsBird setvelocity[0,0,5];"; cutText["\n\n\n\n\nLand on ground to return to spectating\nClick at map to jump to location","PLAIN DOWN", 0.75]; // Wait until landed, delete bird & restart script waitUntil{getpos _bird select 2 < 0.05 and speed _bird < 1}; onMapSingleClick ""; sleep(0.5); titleText["","BLACK OUT", 0.5]; sleep(1); _player switchCamera "INTERNAL"; _player cameraEffect["terminate","FRONT"]; deletevehicle _bird; [_player, _killer, "noWait"] execVM "spect\specta.sqf"; */ // gps_rt.sqf gps_valid = gps_valid+1; if (gps_valid > 1) then {gps_valid = 0;}; if (gps_valid < 1) then { // on efface tous les marqueurs }; if (gps_valid == 1) then { // --------------------------- on cr les marqueurs selon le camp // BLUFOR if (blufor_vts) then { for[{_i=1},{_i<=25},{_i=_i+1}] do { // mise jour des marqueurs. Condition : vivants et pas en carceral call compile format [" if ((joueur_noresp_viv%1) and (alive joueur%1)) then { markerjoueur%1 = createMarkerlocal[""mark_joueur%1"",position joueur%1] ; markerjoueur%1 setMarkerShapelocal ""ICON"" ; ""mark_joueur%1"" setMarkerSizeLocal [0.30, 0.30]; ""mark_joueur%1"" setMarkerTypelocal ""Arrow"" ; ""mark_joueur%1"" setMarkerTextlocal ""%1 -"" + name vehicle joueur%1 ; ""mark_joueur%1"" setMarkerColorlocal ""ColorBlue""; }; ",_i]; sleep 0.2 }; // cra des marqueurs. Condition : vivants et pas en carceral while {gps_valid == 1} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { // mise jour des marqueurs. Condition : vivants et pas en carceral call compile format [" if ((joueur_noresp_viv%1) and (alive joueur%1)) then { ""mark_joueur%1"" setMarkerPoslocal position joueur%1 ; ""mark_joueur%1"" setMarkerdirLocal direction joueur%1 ; }; ",_i]; sleep 0.2 }; sleep 0.2 }; // effaage des marqueurs for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" deleteMarker ""mark_joueur%1""; ",_i]; sleep 0.2 ; }; }; // FIN BLUFOR // OPFOR if (opfor_vts) then { for[{_i=1},{_i<=25},{_i=_i+1}] do { // mise jour des marqueurs. Condition : vivants et pas en carceral call compile format [" if ((joueure_noresp_viv%1) and (alive joueure%1)) then { markerjoueur%1 = createMarkerlocal[""mark_joueur%1"",position joueure%1] ; markerjoueur%1 setMarkerShapelocal ""ICON"" ; ""mark_joueur%1"" setMarkerSizeLocal [0.50, 0.50]; ""mark_joueur%1"" setMarkerTypelocal ""Dot"" ; ""mark_joueur%1"" setMarkerTextlocal ""%1"" ; ""mark_joueur%1"" setMarkerColorlocal ""ColorRed""; }; ",_i]; sleep 0.2 }; // cra des marqueurs. Condition : vivants et pas en carceral while {gps_valid == 1} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { // mise jour des marqueurs. Condition : vivants et pas en carceral call compile format [" if ((joueure_noresp_viv%1) and (alive joueure%1)) then { ""mark_joueur%1"" setMarkerPoslocal position joueure%1 ; }; ",_i]; sleep 0.2 }; sleep 0.2 }; // effaage des marqueurs for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" deleteMarker ""mark_joueur%1""; ",_i]; sleep 0.2 ; }; }; // FIN OPFOR // INDE if (inde_vts) then { for[{_i=1},{_i<=25},{_i=_i+1}] do { // mise jour des marqueurs. Condition : vivants et pas en carceral call compile format [" if ((joueuri_noresp_viv%1) and (alive joueuri%1)) then { markerjoueur%1 = createMarkerlocal[""mark_joueur%1"",position joueuri%1] ; markerjoueur%1 setMarkerShapelocal ""ICON"" ; ""mark_joueur%1"" setMarkerSizeLocal [0.50, 0.50]; ""mark_joueur%1"" setMarkerTypelocal ""Dot"" ; ""mark_joueur%1"" setMarkerTextlocal ""%1"" ; ""mark_joueur%1"" setMarkerColorlocal ""ColorGreen""; }; ",_i]; sleep 0.2 }; // cra des marqueurs. Condition : vivants et pas en carceral while {gps_valid == 1} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { // mise jour des marqueurs. Condition : vivants et pas en carceral call compile format [" if ((joueuri_noresp_viv%1) and (alive joueuri%1)) then { ""mark_joueur%1"" setMarkerPoslocal position joueuri%1 ; }; ",_i]; sleep 0.2 }; sleep 0.2 }; // effaage des marqueurs for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" deleteMarker ""mark_joueur%1""; ",_i]; sleep 0.2 ; }; }; // FIN INDE }; If (true) ExitWith {}disableSerialization; // joueursolo_map.sqf if ((nom_joueurX != "Mort") and (nom_joueurX != "")) then { _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "joueursolo_x = _pos select 0; joueursolo_y = _pos select 1; teleportsolo_spawn = true; publicVariable ""joueursolo_x""; publicVariable ""joueursolo_y""; publicVariable ""joueursolo_telep""; publicvariable ""teleportsolo_spawn""; onMapSingleClick """";" ; }; If (true) ExitWith {}if (local serveur) then { if (blufor_vts) then { _repere = _this select 0 ; _distance = _this select 1; while {true} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["if (joueur%1 distance _repere < _distance) then {_boum= ""GrenadeHand"" createVehicle [(getpos joueur%1 select 0)+((random 5)-(random 5)), (getpos joueur%1 select 1)+((random 5)-(random 5)),0] ;};",_i]; sleep 0.2 ; }; sleep 1.5; }; }; if (opfor_vts) then { _repere = _this select 0 ; _distance = _this select 1; while {true} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["if (joueure%1 distance _repere < _distance) then {_boum= ""GrenadeHand"" createVehicle [(getpos joueure%1 select 0)+((random 5)-(random 5)), (getpos joueure%1 select 1)+((random 5)-(random 5)),0] ;};",_i]; sleep 0.2 ; }; sleep 1.5; }; }; if (inde_vts) then { _repere = _this select 0 ; _distance = _this select 1; while {true} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["if (joueuri%1 distance _repere < _distance) then {_boum= ""GrenadeHand"" createVehicle [(getpos joueuri%1 select 0)+((random 5)-(random 5)), (getpos joueuri%1 select 1)+((random 5)-(random 5)),0] ;};",_i]; sleep 0.2 ; }; sleep 1.5; }; }; }; If (true) ExitWith {}_dist = 10; //if ((var_console_valid_type == "Statique") or (var_console_valid_type == "Groupe")) then //{ //}else{ if (var_console_valid_type == "Homme") then { _dist = 3; }; _preview_unit = console_unit_unite createVehicleLocal (getMarkerPos "preview_mark"); _cam_target = _preview_unit; preview_cam = "camera" CamCreate [(getPos _cam_target select 0)+_dist, (getPos _cam_target select 1)+_dist, (getPos _cam_target select 2)+_dist/2]; preview_cam CamSetTarget _cam_target; preview_cam CameraEffect ["INTERNAL","Back"]; preview_cam CamCommit 2; showcinemaborder false; sleep 3; player switchCamera "INTERNAL"; preview_cam CameraEffect ["Terminate","Back"]; CamDestroy preview_cam; deleteVehicle _preview_unit; //}; [] execVM "Computer\cpu_dialog.sqf"; if (local joueur1) then { deletemarkerlocal "cameralibre"; // sauvegarde position _sauvX = getpos joueur1 select 0; _sauvY = getpos joueur1 select 1; //tel joueur1 setcaptive true ; joueur1 setPos [camera_x, camera_y,0]; sleep 0.2 ; joueur1 exec "camera.sqs"; sleep 0.2 ; joueur1 setPos [_sauvX, _sauvY,0]; joueur1 setcaptive false ; camera_spawn = false ; publicvariable "camera_spawn"; cameralibrex = createMarkerLocal ["cameralibre",[(camera_x), (camera_y),0]] ; cameralibrex setMarkerShapeLocal "ICON" ; "cameralibre" setMarkerTypeLocal "dot"; "cameralibre" setMarkerSizeLocal [0.50, 0.50]; "cameralibre" setMarkerColorLocal "ColorBlack"; "cameralibre" setMarkerTextLocal "Camera"; }; if (local joueure1) then { deletemarkerlocal "cameralibre"; // sauvegarde position _sauvX = getpos joueure1 select 0; _sauvY = getpos joueure1 select 1; //tel joueure1 setcaptive true ; joueure1 setPos [camera_x, camera_y,0]; sleep 0.2 ; joueure1 exec "camera.sqs"; sleep 0.2 ; joueure1 setPos [_sauvX, _sauvY,0]; joueure1 setcaptive false ; camera_spawn = false ; publicvariable "camera_spawn"; cameralibrex = createMarkerLocal ["cameralibre",[(camera_x), (camera_y),0]] ; cameralibrex setMarkerShapeLocal "ICON" ; "cameralibre" setMarkerTypeLocal "dot"; "cameralibre" setMarkerSizeLocal [0.50, 0.50]; "cameralibre" setMarkerColorLocal "ColorBlack"; "cameralibre" setMarkerTextLocal "Camera"; }; if (local joueuri1) then { deletemarkerlocal "cameralibre"; // sauvegarde position _sauvX = getpos joueuri1 select 0; _sauvY = getpos joueuri1 select 1; //tel joueuri1 setcaptive true ; joueuri1 setPos [camera_x, camera_y,0]; sleep 0.2 ; joueuri1 exec "camera.sqs"; sleep 0.2 ; joueuri1 setPos [_sauvX, _sauvY,0]; joueuri1 setcaptive false ; camera_spawn = false ; publicvariable "camera_spawn"; cameralibrex = createMarkerLocal ["cameralibre",[(camera_x), (camera_y),0]] ; cameralibrex setMarkerShapeLocal "ICON" ; "cameralibre" setMarkerTypeLocal "dot"; "cameralibre" setMarkerSizeLocal [0.50, 0.50]; "cameralibre" setMarkerColorLocal "ColorBlack"; "cameralibre" setMarkerTextLocal "Camera"; }; If (true) ExitWith {}// creer les groupes //if playersNumber west > 5 then {}; if (local serveur) then { //_rNumber = random 3; if not(convoy_on) then { // _txt = _display displayctrl 200; // _txt CtrlSetText "Left click on the map"; convoy_on = true; deleteVehicle uaz1; deleteVehicle BMP21; deleteVehicle T721; deleteVehicle truck1; deleteVehicle truck2; deleteVehicle truck3; deleteVehicle BRDM1; deleteWaypoint WP1_conv; deleteWaypoint WP2_conv; deleteMarker marker_map1; deleteMarker marker_map2; deleteMarker marker_map3; //1er clique sur la map _conv_pos1 = [spawn_x,spawn_y,spawn_z]; marker_map1 = createMarker["conv start",_conv_pos1]; marker_map1 setMarkerType "Dot"; marker_map1 setMarkerDir 0; marker_map1 setMarkerText "Convoy start"; marker_map1 setMarkerColor "ColorredAlpha"; //2eme clique sur la map _conv_pos2 = [spawn_x2,spawn_y2,spawn_z2]; marker_map2 = createMarker["conv att",_conv_pos2]; marker_map2 setMarkerShape "ICON"; marker_map2 setMarkerType "Destroy"; marker_map2 setMarkerSizeLocal [0.7,0.7]; marker_map2 setMarkerDir 0; marker_map2 setMarkerText "Convoy Attack"; marker_map2 setMarkerColor "ColorredAlpha"; //3eme clique sur la map _conv_pos3 = [spawn_x3,spawn_y3,spawn_z3]; marker_map3 = createMarker["_conv dest",_conv_pos3]; marker_map3 setMarkerType "Dot"; marker_map3 setMarkerDir 0; marker_map3 setMarkerText "Convoy Destination"; marker_map3 setMarkerColor "ColorredAlpha"; // creation du 1er vehicule conv_grp = createGroup east; uaz1 = createVehicle [vts2_VehE5,_conv_pos1,[], 0, "NONE"]; //T721 setDir (getdir brdm1); publicvariable "uaz1"; _convoyeur9 = vts2_ManE20 createUnit [_conv_pos1, conv_grp,"convoyeur9 = this;this moveindriver uaz1;this assignasdriver uaz1;this forceSpeed 30", 0.9, "sergent"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveincargo uaz1;", 0.9, "private"]; // vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveingunner uaz1;", 0.9, "private"]; WP1_conv = conv_grp addWaypoint [_conv_pos2, 0]; //[conv_grp, 1] setWaypointBehaviour "AWARE"; [conv_grp, 1] setWaypointBehaviour "SAFE"; [conv_grp, 1] setWaypointFormation "NO CHANGE"; [conv_grp, 1] setWaypointSpeed "LIMITED"; [conv_grp, 1] setWaypointType "MOVE"; WP2_conv = conv_grp addWaypoint [_conv_pos3, 0]; [conv_grp, 1] setWaypointBehaviour "SAFE"; [conv_grp, 2] setWaypointFormation "NO CHANGE"; [conv_grp, 2] setWaypointSpeed "LIMITED"; [conv_grp, 2] setWaypointType "MOVE"; // creation du reste sleep 15; BMP21 = createVehicle [vts2_VehE1,uaz1 modelToWorld [0,-25,0],[], 0, "NONE"]; BMP21 setDir (getdir uaz1); // _convoyeur7 = vts2_ManE20 createUnit [_conv_pos1, conv_grp,"convoyeur7 = this;this moveindriver BMP21;this assignasdriver BMP21;", 0.9, "corporal"]; _convoyeur7 = vts2_ManE20 createUnit [_conv_pos1, conv_grp,"convoyeur7 = this;this moveindriver BMP21;this assignasdriver BMP21;", 0.9, "corporal"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveInCommander BMP21;", 0.9, "corporal"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveingunner BMP21", 0.9, "private"]; sleep 5; /* T721 = createVehicle [vts2_VehE3,BMP21 modelToWorld [0,-25,0],[], 0, "NONE"]; T721 setDir (getdir uaz1); _convoyeur6 = vts2_ManE20 createUnit [_conv_pos1, conv_grp,"convoyeur6 = this;this moveInCommander T721;", 0.9, "corporal"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveindriver T721;this assignasdriver T721;", 0.9, "private"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveingunner T721", 0.9, "private"]; */ sleep 5; //BRDM2 = createVehicle [vts2_VehE14,T721 modelToWorld [0,-25,0],[], 0, "NONE"]; BRDM2 = createVehicle [vts2_VehE15,BMP21 modelToWorld [0,-25,0],[], 0, "NONE"]; BRDM2 setDir (getdir uaz1); _convoyeur5 = vts2_ManE20 createUnit [_conv_pos1, conv_grp,"convoyeur5 = this;this moveindriver BRDM2;this assignasdriver BRDM2;", 0.9, "corporal"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveingunner BRDM2", 0.9, "private"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveincargo BRDM2", 0.9, "private"]; sleep 5; truck1 = createVehicle [vts2_VehE9,BRDM2 modelToWorld [0,-25,0],[], 0, "NONE"]; truck1 setVehicleInit "eh = this addEventHandler [""Dammaged"",{truck1 disableAI ""MOVE"";dogetout (leader truck1_grp)}]"; processInitCommands; truck1 setDir (getdir uaz1); //truck1 setVectorDir _conv_pos2; _convoyeur1 = vts2_ManE1 createUnit [_conv_pos1, conv_grp,"convoyeur1 = this;this moveindriver truck1;this assignasdriver truck1;", 0.6, "corporal"]; sleep 5; truck1_grp = createGroup east; vts2_ManE1 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "corporal"]; vts2_ManE6 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE6 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE13 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; vts2_ManE6 createUnit [_conv_pos1, truck1_grp,"this addWeapon ""NVGoggles"";this moveincargo truck1", 0.6, "private"]; sleep 5; truck2 = createVehicle [vts2_VehE9,truck1 modelToWorld [0,-25,0],[], 0, "NONE"]; truck2 setVehicleInit "eh = this addEventHandler [""Dammaged"",{truck2 disableAI ""MOVE"";dogetout (leader truck1_grp)}]"; processInitCommands; truck2 setDir (getdir uaz1); _convoyeur2 = vts2_ManE1 createUnit [_conv_pos1, conv_grp,"convoyeur2 = this;this moveindriver truck2;this assignasdriver truck2;", 0.6, "corporal"]; truck2_grp = createGroup east; vts2_ManE1 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "corporal"]; vts2_ManE6 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE6 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE13 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; vts2_ManE6 createUnit [_conv_pos1, truck2_grp,"this addWeapon ""NVGoggles"";this moveincargo truck2", 0.6, "private"]; sleep 5; truck3 = createVehicle [vts2_VehE8,truck2 modelToWorld [0,-25,0],[], 0, "NONE"]; truck3 setVehicleInit "eh = this addEventHandler [""Dammaged"",{truck3 disableAI ""MOVE"";dogetout (leader truck1_grp)}]"; processInitCommands; truck3 setDir (getdir uaz1); _convoyeur3 = vts2_ManE1 createUnit [_conv_pos1, conv_grp,"convoyeur3 = this;this moveindriver truck3;this assignasdriver truck3;", 0.6, "corporal"]; truck3_grp = createGroup east; vts2_ManE1 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "corporal"]; vts2_ManE6 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE6 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE13 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; vts2_ManE6 createUnit [_conv_pos1, truck3_grp,"this addWeapon ""NVGoggles"";this moveincargo truck3", 0.6, "private"]; BRDM1 = createVehicle [vts2_VehE16,truck3 modelToWorld [0,-25,0],[], 0, "NONE"]; BRDM1 setDir (getdir truck3); _convoyeur5 = vts2_ManE20 createUnit [_conv_pos1, conv_grp,"convoyeur5 = this;this moveindriver BRDM1;this assignasdriver BRDM1;", 0.9, "corporal"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveingunner BRDM1", 0.9, "private"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveincargo BRDM1", 0.9, "private"]; /* truck4 = createVehicle ["ural",_conv_pos1,[], 40, "NONE"]; truck4 setVehicleInit "eh = this addEventHandler [""Dammaged"",{truck4 disableAI ""MOVE"";dogetout (leader truck1_grp)}]"; processInitCommands; _convoyeur4 = vts2_ManE1 createUnit [_conv_pos1, conv_grp,"convoyeur4 = this;this moveindriver truck4;this assignasdriver truck4;", 0.6, "corporal"]; truck4_grp = createGroup east; vts2_ManE1 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "corporal"]; vts2_ManE6 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE6 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE7 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE13 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; vts2_ManE1 createUnit [_conv_pos1, truck4_grp,"this addWeapon ""NVGoggles"";this moveincargo truck4", 0.6, "private"]; */ /* sleep 5; T722 = createVehicle [vts2_VehE3,truck2 modelToWorld [0,-25,0],[], 0, "NONE"]; T722 setDir (getdir uaz1); _convoyeur8 = vts2_ManE20 createUnit [_conv_pos1, conv_grp,"convoyeur8 = this;this moveInCommander T722;", 0.9, "private"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveindriver T722;this assignasdriver T722;", 0.9, "corporal"]; vts2_ManE20 createUnit [_conv_pos1, conv_grp,"this moveingunner T722", 0.9, "private"]; */ uaz1 setVehicleInit "eh = this addEventHandler [""Dammaged"",{truck1 disableAI ""MOVE"";dogetout convoyeur1;dogetout (leader truck1_grp);truck2 disableAI ""MOVE"";dogetout convoyeur1;dogetout (leader truck2_grp);truck2 disableAI ""MOVE"";dogetout convoyeur3;dogetout (leader truck3_grp);deleteWaypoint [conv_grp,1];deleteWaypoint [conv_grp,2]}]"; processInitCommands; convoy_on = false; console_convoi = false; publicvariable "console_convoi"; }; };/* hint format ["%1 \n%2 \n%3 \n%4 \n%5 \n%6 \n%7 \n%8 \n%9",(var_console_valid_camp),(var_console_valid_type),(console_nom),(console_unit_unite),(console_init),(console_unit_moral),(console_unit_orientation),(var_console_valid_attitude),(var_console_valid_vitesse)]; */ hint format ["Nom du groupe: %1 ",(console_nom)]; If (true) ExitWith {}// ********** contrle de l'helico ************** if (local serveur) then { console_heli = false; publicvariable "console_heli"; switch (helimovetype) do { case "evac": { heli1 setdamage 0; heli1 lock false; sleep 2; dest1 = "HeliHempty" createVehicle [spawn_x,spawn_y,spawn_z]; smoke1 = "SmokeShellred" createvehicle [getPos dest1 select 0,(getPos dest1 select 1)+20,0]; _markerRDV = createMarker["RDV",[spawn_x,spawn_y,spawn_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Chopper Evac"; _markerRDV setMarkerColor "ColorgreenAlpha"; _scr = [heli1,[getPos dest1],60, true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 1; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; // heli1 setDir 45; deletevehicle dest1; deletevehicle smoke1; deletemarker "RDV"; fin_heli = true; publicvariable "fin_heli"; }; case "weapons": { heli1 lock false; heli1 setdamage 0; sleep 5; dest1 = "HeliHempty" createVehicle [spawn_x,spawn_y,spawn_z]; smoke1 = "SmokeShellred" createvehicle [getPos dest1 select 0,(getPos dest1 select 1)+20,0]; _markerRDV = createMarker["RDV",[spawn_x,spawn_y,spawn_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Heli DROP"; _markerRDV setMarkerColor "ColorgreenAlpha"; _scr = [heli1,[getPos dest1],100,false]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 1; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; // heli1 setDir 45; deletevehicle dest1; deletevehicle smoke1; deletemarker "RDV"; nul=[heli1,dropme] execVM "gonza\heli\dropitnochut.sqf"; Sleep 2; _scr1 = [heli1,[getMarkerPos "base"],50,true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 10; smoke2 = "SmokeShellgreen" createvehicle [getPos dropme select 0,(getPos dropme select 1)+5,0]; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; deletevehicle smoke2; deletemarker "RDV"; fin_heli = true; publicvariable "fin_heli"; }; case "bombe": { heli1 lock false; sleep 5; heli1 setdamage 0; //dest1 = "HeliHempty" createVehicle [pos_drop_x,pos_drop_y,pos_drop_z]; _markerRDV = createMarker["RDV",[spawn_x,spawn_y,spawn_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Heli DROP Charge"; _markerRDV setMarkerColor "ColorgreenAlpha"; smoke1 = "SmokeShell" createvehicle [(getMarkerPos "RDV" select 0),(getMarkerPos "RDV" select 1),3]; _scr = [heli1,[getMarkerPos "RDV"],60,false]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 1; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; // heli1 setDir 45; //deletevehicle dest1; deletevehicle smoke1; deletemarker "RDV"; _bigbombe_pos1 = getPos bigbombe; nul=[heli1,bigbombe] execVM "gonza\heli\dropitnochut.sqf"; Sleep 1; _scr1 = [heli1,[getMarkerPos "base"],60,true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 7; //smoke2 = "SmokeShellgreen" createvehicle [getPos bigbombe select 0,(getPos bigbombe select 1)+5,0]; _bigbombe_pos2 = getPos bigbombe; bigbombe setpos (_bigbombe_pos1); bomb1= "Bo_GBU12_LGB" createVehicle (_bigbombe_pos2); bomb2= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)+7,(_bigbombe_pos2 select 1),0.2]; bomb3= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)-7,(_bigbombe_pos2 select 1),0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)+7,0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)-7,0.2]; sleep 10; deletevehicle bomb1; deletevehicle bomb2; deletevehicle bomb3; deletevehicle bomb4; deletevehicle bomb5; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; deletemarker "RDV"; fin_heli = true; publicvariable "fin_heli"; }; case "bombe_now": { heli1 setdamage 0; heli1 lock false; _bigbombe_pos1 = getPos bigbombe; nul=[heli1,bigbombe] execVM "gonza\heli\dropitnochut.sqf"; Sleep 1; //_scr1 = [heli1,[getMarkerPos "base"],60,true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 7; //smoke2 = "SmokeShellgreen" createvehicle [getPos bigbombe select 0,(getPos bigbombe select 1)+5,0]; _bigbombe_pos2 = getPos bigbombe; bigbombe setpos (_bigbombe_pos1); bomb1= "Bo_GBU12_LGB" createVehicle (_bigbombe_pos2); bomb2= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)+7,(_bigbombe_pos2 select 1),0.2]; bomb3= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)-7,(_bigbombe_pos2 select 1),0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)+7,0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)-7,0.2]; sleep 10; deletevehicle bomb1; deletevehicle bomb2; deletevehicle bomb3; deletevehicle bomb4; deletevehicle bomb5; fin_heli = true; publicvariable "fin_heli"; }; case "avance": { deletemarker "RDV"; heli1 setdamage 0; heli1 lock false; _pilot = driver heli1; _pilot doMove [spawn_x,spawn_y,60]; fin_heli = true; publicvariable "fin_heli"; _markerRDV = createMarker["RDV",[spawn_x,spawn_y,spawn_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Chopper Advance to"; _markerRDV setMarkerColor "ColorgreenAlpha"; sleep (5); deletemarker "RDV"; }; case "stop": { deletemarker "RDV"; heli1 setdamage 0; heli1 lock false; _pilot = driver heli1; dostop _pilot; fin_heli = true; publicvariable "fin_heli"; }; default { }; }; }; /* if not(take_on) then { take_on = true; grouptake = createGroup east; _general = "SoldierEB" createUnit [[spawn_x,spawn_y,spawn_z],grouptake,"general = this", 0.7,"sergent"]; Area = "HeliHempty" createVehicle [spawn_x,spawn_y,spawn_z]; _area =[Area,30,100,80,0] exec "gonza\TakeBuilding.sqs"; take_on = false; console_IAinBat = false; publicvariable "console_IAinBat"; }; }; sleep 5; // ********** evac demande ************** if (go_evac) then { go_evac = false; publicvariable "go_evac"; heli1 setdamage 0; heli1 lock false; sleep 5; dest1 = "HeliHempty" createVehicle [pos_evac_x,pos_evac_y,pos_evac_z]; smoke1 = "SmokeShellred" createvehicle [getPos dest1 select 0,(getPos dest1 select 1)+20,0]; _markerRDV = createMarker["RDV",[pos_evac_x,pos_evac_y,pos_evac_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Heli RDV"; _markerRDV setMarkerColor "ColorgreenAlpha"; _scr = [heli1,[getPos dest1],60, true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 1; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; // heli1 setDir 45; deletevehicle dest1; deletevehicle smoke1; deletemarker "RDV"; fin_heli = true; publicvariable "fin_heli"; }; // ********** avance demande ************** if (go_avance) then { go_avance = false; publicvariable "go_avance"; heli1 setdamage 0; heli1 lock false; _pilot = driver heli1; _pilot doMove [pos_map_heli_x,pos_map_heli_y,60]; }; */// ********** mettre des ennemis dans les batiments ************** if (local serveur) then { if not(take_on) then { take_on = true; grouptake = createGroup east; _general = vts2_ManE1 createUnit [[spawn_x,spawn_y,spawn_z],grouptake,"general = this", 0.7,"sergent"]; Area = "HeliHempty" createVehicle [spawn_x,spawn_y,spawn_z]; _area =[Area,30,100,80,0] exec "gonza\TakeBuilding.sqs"; take_on = false; console_IAinBat = false; publicvariable "console_IAinBat"; }; };if (local joueur1) then { if ((var_console_valid_type == "Statique") or (var_console_valid_type == "Divers") or (var_console_valid_type == "Matrl")) then { marqueur_tr=marqueur_tr+1; // On dtermine la couleur if (var_console_valid_camp== "Blufor") then {couleur_marqueur = "ColorBlue"}; if (var_console_valid_camp== "Opfor") then {couleur_marqueur = "ColorRed"}; if (var_console_valid_camp== "Indep.") then {couleur_marqueur = "ColorGreen"}; if (var_console_valid_camp== "Civil") then {couleur_marqueur = "ColorYellow"}; if (var_console_valid_camp== "Objet") then {couleur_marqueur = "ColorBlack"}; // On dtermine le nom //hint format ["nom_console_valid_mouvement : %1",nom_console_valid_mouvement]; if (nom_du_marqueur == "") then {nom_du_marqueur = nom_console_valid_unite}; //if (console_nom !="") then {call compile format["nom_du_marqueur = %1;",(console_nom)];} else {call compile format["nom_du_marqueur = %1;",(nom_console_valid_unite)];}; // On spawne le marqueur call compile format [" markertr%1 = createMarkerLocal [""mark%1"",[(spawn_x), (spawn_y),0]] ; markertr%1 setMarkerShapeLocal ""ICON"" ; ""mark%1"" setMarkerTypeLocal ""mil_triangle""; ""mark%1"" setMarkerDirLocal 90 ; ""mark%1"" setMarkerColorLocal couleur_marqueur; ""mark%1"" setMarkerTextLocal ""%2""; ""mark%1"" setMarkerSizeLocal [0.50, 0.50]; ",(marqueur_tr),(nom_du_marqueur),(nom_console_valid_mouvement)]; console_spawnmark = false ; publicvariable "console_spawnmark"; if (local joueure1) then { marqueur_tr=marqueur_tr+1; // On dtermine la couleur if (var_console_valid_camp== "Blufor") then {couleur_marqueur = "ColorBlue"}; if (var_console_valid_camp== "Opfor") then {couleur_marqueur = "ColorRed"}; if (var_console_valid_camp== "Indep.") then {couleur_marqueur = "ColorGreen"}; if (var_console_valid_camp== "Civil") then {couleur_marqueur = "ColorYellow"}; if (var_console_valid_camp== "Objet") then {couleur_marqueur = "ColorBlack"}; // On dtermine le nom if (nom_du_marqueur == "") then {nom_du_marqueur = nom_console_valid_unite}; // On spawne le marqueur call compile format [" markertr%1 = createMarkerLocal [""mark%1"",[(spawn_x), (spawn_y),0]] ; markertr%1 setMarkerShapeLocal ""ICON"" ; ""mark%1"" setMarkerTypeLocal ""mil_triangle""; ""mark%1"" setMarkerDirLocal 90 ; ""mark%1"" setMarkerColorLocal couleur_marqueur; ""mark%1"" setMarkerTextLocal ""%2""; ""mark%1"" setMarkerSizeLocal [0.50, 0.50]; ",(marqueur_tr),(nom_du_marqueur),(nom_console_valid_mouvement)]; console_spawnmark = false ; publicvariable "console_spawnmark"; }; if (local joueuri1) then { marqueur_tr=marqueur_tr+1; // On dtermine la couleur if (var_console_valid_camp== "Blufor") then {couleur_marqueur = "ColorBlue"}; if (var_console_valid_camp== "Opfor") then {couleur_marqueur = "ColorRed"}; if (var_console_valid_camp== "Indep.") then {couleur_marqueur = "ColorGreen"}; if (var_console_valid_camp== "Civil") then {couleur_marqueur = "ColorYellow"}; if (var_console_valid_camp== "Objet") then {couleur_marqueur = "ColorBlack"}; // On dtermine le nom if (nom_du_marqueur == "") then {nom_du_marqueur = nom_console_valid_unite}; // On spawne le marqueur call compile format [" markertr%1 = createMarkerLocal [""mark%1"",[(spawn_x), (spawn_y),0]] ; markertr%1 setMarkerShapeLocal ""ICON"" ; ""mark%1"" setMarkerTypeLocal ""mil_triangle""; ""mark%1"" setMarkerDirLocal 90 ; ""mark%1"" setMarkerColorLocal couleur_marqueur; ""mark%1"" setMarkerTextLocal ""%2""; ""mark%1"" setMarkerSizeLocal [0.50, 0.50]; ",(marqueur_tr),(nom_du_marqueur),(nom_console_valid_mouvement)]; console_spawnmark = false ; publicvariable "console_spawnmark"; }; }else{ console_spawnmark = false ; publicvariable "console_spawnmark"; }; }; If (true) ExitWith {} if (local serveur) then { _positX = spawn_x ; _positY = spawn_y ; _positZ = spawn_z ; if ((var_console_valid_camp== "Blufor") or (var_console_valid_camp== "Opfor") or (var_console_valid_camp== "Indep.") or (var_console_valid_camp== "Civil")) then { // ====================================== HOMMES if (var_console_valid_type == "Homme") then { // Cra du groupe (fais chier...) var_hom_solo = var_hom_solo+1; if (var_console_valid_camp== "Blufor") then {call compile format["solo%1 = creategroup west;",var_hom_solo];}; if (var_console_valid_camp== "Opfor") then {call compile format["solo%1 = creategroup east;",var_hom_solo];}; if (var_console_valid_camp== "Indep.") then {call compile format["solo%1 = creategroup resistance;",var_hom_solo];}; if (var_console_valid_camp== "Civil") then {call compile format["solo%1 = creategroup Civilian;",var_hom_solo];}; // Protection si le joueur n'a pas donn de nom if (console_nom =="") then {call compile format["console_nom = ""nom_h_s%1"";",(var_hom_solo)];}; if from3D then { //call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; call compile format["console_unit_unite createUnit [getMarkerPos ""preview_mark"",solo%1,""%2 = this ; %3 "", console_unit_moral, ""corporal""];",(var_hom_solo),(console_nom),(console_init)]; call compile format["%1 setdir console_unit_orientation ;",(console_nom)]; From3D = false; publicvariable "From3D"; sleep 1; call compile format["%1 setPosASL [_positX,_positY,_positZ ];",(console_nom)]; }else{ call compile format["console_unit_unite createUnit [[_positX,_positY,_positY],solo%1,""%2 = this ; %3 "", console_unit_moral, ""corporal""];",(var_hom_solo),(console_nom),(console_init)]; }; call compile format["%1 setdir console_unit_orientation ;",(console_nom)]; call compile format["%1 setBehaviour var_console_valid_attitude ;",(console_nom)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(console_nom)]; }; // ====================================== VEHICULES if (var_console_valid_type == "Vehicle") then { // ------- Cra du groupe_vehicule avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // crea du groupe_vehicule if (var_console_valid_camp== "Blufor") then {equipage = vts2_ManW22 ; call compile format["%1 = creategroup west;",(console_nom)];}; if (var_console_valid_camp== "Opfor") then {equipage = vts2_ManE20 ; call compile format["%1 = creategroup east;",(console_nom)];}; if (var_console_valid_camp== "Indep.") then {equipage = vts2_Mani1 ; call compile format["%1 = creategroup resistance;",(console_nom)];}; if (var_console_valid_camp== "Civil") then {equipage = vts2_ManCiv2 ; call compile format["%1 = creategroup civilian;",(console_nom)];}; // On spawne (d'abord le vhicule) et on donne un nom tous les membres if from3D then { call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; From3D = false; publicvariable "From3D"; nomvehicule allowdamage false; nomvehicule setvehicleVarName format["%1_V%2",(nom_console_valid_unite),(var_v_solo)]; nomvehicule setdir console_unit_orientation; sleep 1; nomvehicule setdir console_unit_orientation ; nomvehicule setPosASL [_positX,_positY,_positZ ]; //hint "ok"; call compile format ["_damaget%1 = nomvehicule execVM ""damagetempo.sqf"";",(var_v_solo)]; }else{ call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX,_positY,0], [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; nomvehicule allowdamage false; nomvehicule setvehicleVarName format["%1_V%2",(nom_console_valid_unite),(var_v_solo)]; nomvehicule setdir console_unit_orientation; call compile format ["_damaget%1 = nomvehicule execVM ""damagetempo.sqf"";",(var_v_solo)]; }; //call compile format ["%1%2 = console_unit_unite createVehicle pos_3D;%1%2 setPos pos_3D;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; //sleep 5; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip1%2 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(nomvehicule),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip2%2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(console_nom),(var_v_solo),(nomvehicule),(console_init)]; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier (on verra plus tard) call compile format["if (vehicle equip1%1 != vehicle equip2%1) then {deletevehicle equip2%1};",(var_v_solo)]; // On donne les ordres d'orientation et de mouvement nomvehicule setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(console_nom)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(console_nom)]; }; // ====================================================================================== // ====================================== GROUPES ======================================= // ====================================================================================== if (var_console_valid_type == "Groupe") then { // -------------------------------------------------------------------------------------- // -------------------- Cra du groupe_vehicule avec le nom donn ----------------------- // -------------------------------------------------------------------------------------- // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // crea du groupe_vehicule _nom_groupe = console_nom ; if (var_console_valid_camp== "Blufor") then {equipage = vts2_ManW22 ; call compile format["%1 = creategroup west;",(_nom_groupe)];}; if (var_console_valid_camp== "Opfor") then {equipage = vts2_ManE20 ; call compile format["%1 = creategroup east;",(_nom_groupe)];}; if (var_console_valid_camp== "Indep.") then {equipage = vts2_SoldierGCrew ; call compile format["%1 = creategroup resistance;",(_nom_groupe)];}; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe vehicule (escadrille ou peloton): // -------------------------------------------------------------------------------------- if ((console_valid_unite == 0) or (console_valid_unite == 6) or (console_valid_unite == 7)) then { _espace = 0; // on spawne le chef _i = 0 ; call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX+_espace,_positY+_espace,0], [], 0, ""FLY""] ;nomvehicule = %1%2; _ve_ori = nomvehicule;",(_nom_groupe),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip1%2 = this ; h_ori = equip1%2 ;this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""CAPTAIN""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip2%2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; _espace = _espace-50; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier (on verra plus tard) call compile format["if (vehicle equip1%1 != vehicle equip2%1) then {deletevehicle equip2%1};",(var_v_solo)]; // on spawne les hommes _i = 1 ; // VEHICULE 2 On spawne (d'abord le vhicule) et on donne un nom tous les membres call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX+_espace,_positY+_espace,0], [], 0, ""FLY""] ;nomvehicule = %1%2;",(_nom_groupe),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip3%2_%3 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""SERGEANT""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip4%2_%3 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; _espace = _espace-50; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier call compile format["if (vehicle equip3%1_%2 != vehicle equip4%1_%2) then {deletevehicle equip4%1_%2};",(var_v_solo),(_i)]; _i = 2; // VEHICULE 3 On spawne (d'abord le vhicule) et on donne un nom tous les membres call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX+_espace,_positY+_espace,0], [], 0, ""FLY""] ;nomvehicule = %1%2;",(_nom_groupe),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip3%2_%3 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;%4 "", console_unit_moral, ""corporal""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip4%2_%3 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo),(_i),(console_init)]; _espace = _espace-50; sleep1; // On vire le second s'il n'est pas dans le mme vhicule que le premier call compile format["if (vehicle equip3%1_%2 != vehicle equip4%1_%2) then {deletevehicle equip4%1_%2};",(var_v_solo),(_i)]; // On donne les ordres d'orientation et de mouvement h_ori setdir console_unit_orientation ; _ve_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; call compile format["%1 setformation ""COLUMN"";",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe inf base // -------------------------------------------------------------------------------------- if (console_valid_unite == 1) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW19 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW6 ; soldat5 = vts2_ManW8 ; soldat6 = vts2_ManW19 ; soldat7 = vts2_ManW2 ; soldat8 = vts2_ManW6 ; soldat9 = vts2_ManW10 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_TeamLeaderE ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE6 ; soldat5 = vts2_ManE7 ; soldat6 = vts2_TeamLeaderE ; soldat7 = vts2_ManE2 ; soldat8 = vts2_ManE2 ; soldat9 = vts2_ManE13 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_TeamLeaderG ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGAR ; soldat5 = vts2_SoldierGAT ; soldat6 = vts2_TeamLeaderG ; soldat7 = vts2_SoldierGG ; soldat8 = vts2_SoldierGAR ; soldat9 = vts2_SoldierGSniper ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // On spawne le groupe for[{_i=2},{_i<=9},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe inf armes // -------------------------------------------------------------------------------------- if (console_valid_unite == 2) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW7 ; soldat3 = vts2_ManW1 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW7 ; soldat6 = vts2_ManW1 ; soldat7 = vts2_ManW1 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE6 ; soldat3 = vts2_ManE1 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE6 ; soldat6 = vts2_ManE1 ; soldat7 = vts2_ManE1 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW7 ; soldat3 = vts2_ManW1 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW7 ; soldat6 = vts2_ManW1 ; soldat7 = vts2_ManW1 ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // On spawne le groupe for[{_i=2},{_i<=7},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe fs // -------------------------------------------------------------------------------------- if (console_valid_unite == 3) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW15 ; soldat2 = vts2_ManW12 ; soldat3 = vts2_ManW12 ; soldat4 = vts2_ManW15 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE15 ; soldat2 = vts2_ManE16 ; soldat3 = vts2_ManE16 ; soldat4 = vts2_ManE15 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SoldierGCommando ; soldat2 = vts2_SoldierGCommando ; soldat3 = vts2_SoldierGCommando ; soldat4 = vts2_SoldierGMarksman ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // On spawne le groupe for[{_i=2},{_i<=4},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe motoris // -------------------------------------------------------------------------------------- if (console_valid_unite == 4) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW7 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW1 ; vehi = vts2_VehW6 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE6 ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE1 ; vehi = vts2_VehE6 ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGMG ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGB ; soldat5 = vts2_SoldierGB ; vehi = vts2i_LandroverMG ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ;h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // on spawne le vehicule call compile format ["%1%2 = createVehicle [vehi, [_positX,_positY,_positZ], [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; // on spawne conducteur et tireur call compile format["soldat4 createUnit [[_positX,_positY,_positZ],%1,""equi3%2_1 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;"", console_unit_moral, ""SERGEANT""];",(_nom_groupe),(var_v_solo)]; call compile format["soldat5 createUnit [[_positX,_positY,_positZ],%1,""equi4%2_2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo)]; // On spawne le groupe for[{_i=2},{_i<=3},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; // -------------------------------------------------------------------------------------- // Si le groupe est un groupe mca // -------------------------------------------------------------------------------------- if (console_valid_unite == 5) then { // definition des skins selon le camp if (var_console_valid_camp== "Blufor") then { soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW3 ; soldat4 = vts2_ManW2 ; soldat5 = vts2_ManW8 ; soldat6 = vts2_ManW2 ; soldat7 = vts2_ManW1 ; soldat8 = vts2_ManW1 ; vehi = vts2_VehW17 ; }; if (var_console_valid_camp== "Opfor") then { soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE3 ; soldat4 = vts2_ManE2 ; soldat5 = vts2_ManE7 ; soldat6 = vts2_ManE2 ; soldat7 = vts2_ManE1 ; soldat8 = vts2_ManE1 ; vehi = vts2_VehE13_ATGM ; }; if (var_console_valid_camp== "Indep.") then { soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGMedic ; soldat4 = vts2_SoldierGG ; soldat5 = vts2_SoldierGAT ; soldat6 = vts2_SoldierGG ; soldat7 = vts2_SoldierGB ; soldat8 = vts2_SoldierGB ; vehi = vts2i_Stryker_TOW ; }; // On spawne le chef call compile format["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1_%2 = this ; h_ori = soldat1_%2 ;%3 "", console_unit_moral, ""SERGEANT""];",(console_nom),(var_v_solo),(console_init)]; // on spawne le vehicule call compile format ["%1%2 = createVehicle [vehi, [_positX,_positY,_positZ], [], 0, ""FLY""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; // on spawne conducteur et tireur call compile format["soldat7 createUnit [[_positX,_positY,_positZ],%1,""equi3%2_1 = this ; this assignasdriver nomvehicule; this moveindriver nomvehicule;"", console_unit_moral, ""SERGEANT""];",(_nom_groupe),(var_v_solo)]; call compile format["soldat8 createUnit [[_positX,_positY,_positZ],%1,""equi4%2_2 = this ; this assignasgunner nomvehicule; this moveingunner nomvehicule;"", console_unit_moral, ""private""];",(_nom_groupe),(var_v_solo)]; // On spawne le groupe for[{_i=2},{_i<=6},{_i=_i+1}] do { call compile format["soldat%4 createUnit [[_positX,_positY,_positZ],%1,""soldat%4_%2 = this ;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(console_init),(_i)]; }; // ordre d'orientation et mouvement h_ori setdir console_unit_orientation ; call compile format["%1 setBehaviour var_console_valid_attitude ;",(_nom_groupe)]; call compile format["%1 setspeedmode var_console_valid_vitesse;",(_nom_groupe)]; }; call compile format["_replita = [%1,0] execVM ""repli_basic.sqf"";",(console_nom)]; // orientation = je n'arrive pas imprimer le DIR par dfaut, donc je vais demander un lger mouvement aux groupes pour qu'ils soient dans la bonne direction deletevehicle h_dir ; sleep 0.2; distance_or = 10; if (console_unit_orientation == 45) then {h_dir = "HeliHempty" createvehicle [_positX+distance_or,_positY+distance_or,0];}; if (console_unit_orientation == 90) then {h_dir = "HeliHempty" createvehicle [_positX+distance_or,_positY,_positZ];}; if (console_unit_orientation == 135) then {h_dir = "HeliHempty" createvehicle [_positX+distance_or,_positY-distance_or,0];}; if (console_unit_orientation == 180) then {h_dir = "HeliHempty" createvehicle [_positX,_positY-distance_or,0];}; if (console_unit_orientation == -135) then {h_dir = "HeliHempty" createvehicle [_positX-distance_or,_positY-distance_or,0];}; if (console_unit_orientation == -90) then {h_dir = "HeliHempty" createvehicle [_positX-distance_or,_positY,_positZ];}; if (console_unit_orientation == -45) then {h_dir = "HeliHempty" createvehicle [_positX-distance_or,_positY+distance_or,0];}; call compile format["%1 move position h_dir;",(console_nom)]; }; // ====================================================================================== // ====================================== Materiels ======================================= // ====================================================================================== if (var_console_valid_type == "Matrl") then { // ------- Cra du materiel avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // spawn du materiel if from3D then { //call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; call compile format ["%1 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""NONE""] ;nomvehicule = %1;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; From3D = false; publicvariable "From3D"; sleep 1; nomvehicule setPosASL [_positX,_positY,_positZ ]; }else{ call compile format ["%1 = createVehicle [console_unit_unite, [_positX,_positY,0], [], 0, ""NONE""] ;nomvehicule = %1;",(console_nom),(var_v_solo)]; }; // orientation du materiel nomvehicule setdir console_unit_orientation ; }; }; // ====================================================================================== // ====================================== OBJETS ======================================= // ====================================================================================== if (var_console_valid_camp== "Objet") then { // Si les objets sont des objets du jeu : if (console_valid_unite < 27) then { // ------- Cra du materiel avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // spawn du materiel if from3D then { //call compile format ["%1%2 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""FLY""] ;nomvehicule = %1%2;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; call compile format ["%1 = createVehicle [console_unit_unite, getMarkerPos ""preview_mark"", [], 0, ""NONE""] ;nomvehicule = %1;nomvehicule setdir console_unit_orientation ;",(console_nom),(var_v_solo)]; sleep 1; nomvehicule setPosASL [_positX,_positY,_positZ ]; }else{ call compile format ["%1 = createVehicle [console_unit_unite, [_positX,_positY,0], [], 0, ""NONE""] ;nomvehicule = %1;",(console_nom),(var_v_solo)]; }; // orientation du materiel nomvehicule setdir console_unit_orientation ; }; // Si les objets sont des objets speciaux : if (console_valid_unite > 26) then { // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // variables _larg = 20 ; if (console_valid_unite == 29) then {_larg = 40;}; if (console_valid_unite == 30) then {_larg = 40;}; if (console_valid_unite == 31) then {_larg = 60;}; if (console_valid_unite == 32) then {_larg = 60;}; // spawn du h repre call compile format ["%1 = createVehicle [""HeliHempty"", [_positX,_positY,_positZ], [], 0, ""NONE""] ;_repere = %1;",(console_nom)]; // Panneaux d'avertissement si actifs if ((console_valid_unite == 28) or (console_valid_unite == 30) or (console_valid_unite == 32)) then { _e = 0; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX+_larg,_positY+_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; _e = 1; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX+_larg,_positY-_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; _e = 2; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX-_larg,_positY-_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; _e = 3; call compile format ["%1_p%2 = createVehicle [vts2_Danger, [_positX-_larg,_positY+_larg,0], [], 0, ""NONE""];",(console_nom),(_e)]; }; // mines _nbre_mines = _larg*2 ; _nbre_mines2 = _nbre_mines / 4 ; for[{_i=1},{_i<=_nbre_mines2},{_i=_i+1}] do { call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX+(random _larg),_positY+(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX+(random _larg),_positY-(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX-(random _larg),_positY-(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; call compile format ["%1_m%2 = createVehicle [vts2_MineMine, [_positX-(random _larg),_positY+(random _larg),0], [], 0, ""NONE""];",(console_nom),(_i)]; }; // lancement du script de dtection call compile format ["_detect_min = [%1,_larg] execVM ""computer\console\mines.sqf"";",(console_nom)]; }; }; // ====================================================================================== // ====================================== Statique ================================ // ====================================================================================== if (var_console_valid_type == "Statique") then { // Si les objets sont des objets du jeu : if (console_valid_unite < 3) then { // ------- Cra du groupe_vehicule avec le nom donn // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // crea du groupe_vehicule if (var_console_valid_camp== "Blufor") then {equipage = vts2_ManW1 ; call compile format["%1 = creategroup west;",(console_nom)];}; if (var_console_valid_camp== "Opfor") then {equipage = vts2_ManE1 ; call compile format["%1 = creategroup east;",(console_nom)];}; if (var_console_valid_camp== "Indep.") then {equipage = vts2_SoldierGB ; call compile format["%1 = creategroup resistance;",(console_nom)];}; // On spawne (d'abord le vhicule) et on donne un nom tous les membres call compile format ["%1%2 = createVehicle [console_unit_unite, [_positX,_positY,_positZ], [], 0, ""NONE""] ;nomvehicule = %1%2;",(console_nom),(var_v_solo)]; call compile format["equipage createUnit [[_positX,_positY,_positZ],%1,""equip1%2 = this ; h_ori = equip1%2 ; this assignasgunner nomvehicule; this moveingunner nomvehicule;%4 "", console_unit_moral, ""corporal""];",(console_nom),(var_v_solo),(nomvehicule),(console_init)]; // On donne les ordres d'orientation et de mouvement h_ori setdir console_unit_orientation ; nomvehicule setdir console_unit_orientation ; }; // Si les objets sont des objets speciaux : if (console_valid_unite > 2) then { // protection en cas d'absence de nom var_v_solo = var_v_solo+1; if (console_nom =="") then {call compile format["console_nom = ""nom_v_s%1"";",(var_v_solo)];}; // crea du groupe_vehicule if (var_console_valid_camp== "Blufor") then {call compile format["%1 = creategroup west;",(console_nom)];}; if (var_console_valid_camp== "Opfor") then {call compile format["%1 = creategroup east;",(console_nom)];}; if (var_console_valid_camp== "Indep.") then {call compile format["%1 = creategroup resistance;",(console_nom)];}; if (console_valid_unite == 4) then { // ------------ poste avanc // On dtermine le matriel selon le camp if (var_console_valid_camp== "Blufor") then { drapeau = "FlagCarrierWest"; vehicule = vts2_VehW7 ; soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW8 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW1 ; arme_statique = vts2_StaW2 ; }; if (var_console_valid_camp== "Indep.") then { drapeau = "FlagCarrierSouth"; vehicule = vts2i_HMMWVTOW ; soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGAT ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGB ; soldat5 = vts2_SoldierGB ; arme_statique = vts2i_M2StaticMG ; }; if (var_console_valid_camp== "Opfor") then { drapeau = "FlagCarrierNorth"; vehicule = vts2_VehE6 ; //vehicule = "ACE_ZU23" ; soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE7 ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE1 ; arme_statique = vts2_StaE3 ; }; // On spawne les lments de base _fort = createVehicle ["Land_fortified_nest_big", [_positX,_positY,0], [], 0, "None"]; //vehic = createVehicle [vehicule, [_positX-2,_positY+5,0], [], 0, "None"]; _drap = createVehicle [drapeau, [_positX+5,_positY+5,0], [], 0, "None"]; _fire1 = createVehicle ["Land_Campfire_burning", [_positX+3,_positY+5,0], [], 0, "None"]; MASH1 = createVehicle ["MASH", [_positX,_positY-20,0], [], 0, "None"]; MASH1 setdir 0 ; stat1 = createVehicle [arme_statique, [_positX+7,_positY+7,0], [], 0, "None"]; stat1 setdir 45 ; stat2 = createVehicle [arme_statique, [_positX-7,_positY-7,0], [], 0, "None"]; stat2 setdir -135 ; _mur2 = createVehicle ["Land_fort_bagfence_long", [_positX-5,_positY+13,0], [], 0, "None"]; _mur2 setdir 90 ; _mur3 = createVehicle ["Land_fort_bagfence_long", [_positX,_positY+13,0], [], 0, "None"]; _mur3 setdir 90 ; _mur4 = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY+13,0], [], 0, "None"]; _mur4 setdir 90 ; _mur5 = createVehicle ["Land_fort_bagfence_long", [_positX+13,_positY-5,0], [], 0, "None"]; _mur5 setdir 0 ; _mur6 = createVehicle ["Land_fort_bagfence_long", [_positX+13,_positY,_positZ], [], 0, "None"]; _mur6 setdir 0 ; _mur7 = createVehicle ["Land_fort_bagfence_long", [_positX+13,_positY+5,0], [], 0, "None"]; _mur7 setdir 0 ; _mur8 = createVehicle ["Land_fort_bagfence_long", [_positX-13,_positY-5,0], [], 0, "None"]; _mur8 setdir 0 ; _mur9 = createVehicle ["Land_fort_bagfence_long", [_positX-13,_positY,_positZ], [], 0, "None"]; _mur9 setdir 0 ; _mur10 = createVehicle ["Land_fort_bagfence_long", [_positX-13,_positY+5,0], [], 0, "None"]; _mur10 setdir 0 ; _mur11 = createVehicle ["Land_fort_bagfence_long", [_positX,_positY-13,0], [], 0, "None"]; _mur11 setdir 90 ; _mur12 = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY-13,0], [], 0, "None"]; _mur12 setdir 90 ; _barb1 = createVehicle ["Fort_RazorWire", [_positX-7,_positY+15,0], [], 0, "None"]; _barb1 setdir 0 ; _barb2 = createVehicle ["Fort_RazorWire", [_positX,_positY+15,0], [], 0, "None"]; _barb2 setdir 0 ; _barb3 = createVehicle ["Fort_RazorWire", [_positX+7,_positY+15,0], [], 0, "None"]; _barb3 setdir 0 ; _barb4 = createVehicle ["Fort_RazorWire", [_positX-7,_positY-15,0], [], 0, "None"]; _barb4 setdir 0 ; _barb5 = createVehicle ["Fort_RazorWire", [_positX,_positY-15,0], [], 0, "None"]; _barb5 setdir 0 ; _barb6 = createVehicle ["Fort_RazorWire", [_positX+7,_positY-15,0], [], 0, "None"]; _barb6 setdir 0 ; _barb7 = createVehicle ["Fort_RazorWire", [_positX+15,_positY-7,0], [], 0, "None"]; _barb7 setdir 90 ; _barb8 = createVehicle ["Fort_RazorWire", [_positX+15,_positY,_positZ], [], 0, "None"]; _barb8 setdir 90 ; _barb9 = createVehicle ["Fort_RazorWire", [_positX+15,_positY+7,0], [], 0, "None"]; _barb9 setdir 90 ; _barb10 = createVehicle ["Fort_RazorWire", [_positX-15,_positY-7,0], [], 0, "None"]; _barb10 setdir 90 ; _barb11 = createVehicle ["Fort_RazorWire", [_positX-15,_positY,_positZ], [], 0, "None"]; _barb11 setdir 90 ; _barb12 = createVehicle ["Fort_RazorWire", [_positX-15,_positY+7,0], [], 0, "None"]; _barb12 setdir 90 ; // on spawne les units call compile format ["soldat1 createUnit [[_positX,_positY,_positZ],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY,_positZ],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY,_positZ],%1,""soldat1c = this ; this assignasgunner vehic ; this moveingunner vehic ; "", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat4 createUnit [[_positX,_positY,_positZ],%1,""soldat1d = this ; this assignasgunner stat1 ; this moveingunner stat1 ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1d setdir 45 ; call compile format ["soldat5 createUnit [[_positX,_positY,_positZ],%1,""soldat1e = this ; this assignasgunner stat2 ; this moveingunner stat2 ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1e setdir -135 ; }; if (console_valid_unite == 3) then { // ------------ checkpoint // On dtermine le matriel selon le camp if (var_console_valid_camp== "Blufor") then { vehicule = vts2_VehW6 ; soldat1 = vts2_ManW18 ; soldat2 = vts2_ManW8 ; soldat3 = vts2_ManW2 ; soldat4 = vts2_ManW1 ; soldat5 = vts2_ManW1 ; arme_statique = vts2_StaW2 ; }; if (var_console_valid_camp== "Indep.") then { vehicule = vts2i_LandroverMG ; soldat1 = vts2_SquadLeaderG ; soldat2 = vts2_SoldierGAT ; soldat3 = vts2_SoldierGG ; soldat4 = vts2_SoldierGB ; soldat5 = vts2_SoldierGB ; arme_statique = vts2i_M2StaticMG ; }; if (var_console_valid_camp== "Opfor") then { vehicule = vts2_VehE6 ; soldat1 = vts2_ManE10 ; soldat2 = vts2_ManE7 ; soldat3 = vts2_ManE2 ; soldat4 = vts2_ManE1 ; soldat5 = vts2_ManE1 ; arme_statique = vts2_StaE3 ; }; // On spawne les lments de base - selon la direction! Madame redondance, bonjour ;) if (console_unit_orientation == 0) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 0 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY-5,0], [], 0, "None"]; _mur setdir 90 ; _fire1 = createVehicle ["Land_Campfire_burning", [_positX-5,_positY-15,0], [], 0, "None"]; MASH1 = createVehicle ["MASH", [_positX-13,_positY-15,0], [], 0, "None"]; MASH1 setdir 0 ; vehic = createVehicle [vehicule, [_positX-5,_positY-5,0], [], 0, "None"]; vehic setdir 0 ; stat = createVehicle [arme_statique, [_positX+5,_positY-7,0], [], 0, "None"]; stat setdir 0 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 45) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 45 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+3,_positY-7,0], [], 0, "None"]; _mur setdir 135 ; vehic = createVehicle [vehicule, [_positX-10,_positY,_positZ], [], 0, "None"]; vehic setdir 45 ; stat = createVehicle [arme_statique, [_positX+4,_positY-9,0], [], 0, "None"]; stat setdir 45 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 90) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 90 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX-7,_positY-3,0], [], 0, "None"]; _mur setdir 180 ; vehic = createVehicle [vehicule, [_positX,_positY+10,0], [], 0, "None"]; vehic setdir 90 ; stat = createVehicle [arme_statique, [_positX-9,_positY-3,0], [], 0, "None"]; stat setdir 90 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX-5,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX-5,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX-5,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 135) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 135 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX-5,_positY-3,0], [], 0, "None"]; _mur setdir 225 ; vehic = createVehicle [vehicule, [_positX-1,_positY+8,0], [], 0, "None"]; vehic setdir 135 ; stat = createVehicle [arme_statique, [_positX-7,_positY-1,0], [], 0, "None"]; stat setdir 135 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX-5,_positY+5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX-5,_positY+5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX-5,_positY+5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == 180) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir 180 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY+5,0], [], 0, "None"]; _mur setdir -90 ; vehic = createVehicle [vehicule, [_positX-5,_positY+5,0], [], 0, "None"]; vehic setdir 180 ; stat = createVehicle [arme_statique, [_positX+6,_positY+6,0], [], 0, "None"]; stat setdir 180 ; _fire1 = createVehicle ["Land_Campfire_burning", [_positX+5,_positY+15,0], [], 0, "None"]; MASH1 = createVehicle ["MASH", [_positX+13,_positY+15,0], [], 0, "None"]; MASH1 setdir 180 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX,_positY+5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX,_positY+5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX,_positY+5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == -135) then { _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir -135 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+7,_positY-3,0], [], 0, "None"]; _mur setdir -45 ; vehic = createVehicle [vehicule, [_positX,_positY+10,0], [], 0, "None"]; vehic setdir -135 ; stat = createVehicle [arme_statique, [_positX+11,_positY,_positZ], [], 0, "None"]; stat setdir -135 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX+5,_positY,_positZ],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX+5,_positY,_positZ],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX+5,_positY,_positZ],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == -90) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir -90 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+7,_positY+3,0], [], 0, "None"]; _mur setdir 180 ; vehic = createVehicle [vehicule, [_positX,_positY-10,0], [], 0, "None"]; vehic setdir -90 ; stat = createVehicle [arme_statique, [_positX+9,_positY+5,0], [], 0, "None"]; stat setdir -90 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX+5,_positY+5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX+5,_positY+5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX+5,_positY+5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; if (console_unit_orientation == -45) then { // spawn du statique _barb = createVehicle ["Fort_RazorWire", [_positX,_positY,_positZ], [], 0, "None"]; _barb setdir -45 ; _mur = createVehicle ["Land_fort_bagfence_long", [_positX+5,_positY+3,0], [], 0, "None"]; _mur setdir 225 ; vehic = createVehicle [vehicule, [_positX+1,_positY-8,0], [], 0, "None"]; vehic setdir -45 ; stat = createVehicle [arme_statique, [_positX+7,_positY+1,0], [], 0, "None"]; stat setdir -45 ; // On spawne les gardes call compile format ["soldat1 createUnit [[_positX+5,_positY-5,0],%1,""soldat1a = this ; h_ori = soldat1a ;%2 "", console_unit_moral, ""corporal""];",(console_nom),(console_init)]; call compile format ["soldat2 createUnit [[_positX+5,_positY-5,0],%1,""soldat1b = this ;"", console_unit_moral, ""private""];",(console_nom)]; call compile format ["soldat3 createUnit [[_positX+5,_positY-5,0],%1,""soldat1c = this ;"", console_unit_moral, ""private""];",(console_nom)]; h_ori setdir console_unit_orientation ; }; // on spawne les dernires units call compile format ["soldat4 createUnit [[_positX,_positY,_positZ],%1,""soldat1d = this ; this assignasgunner stat ; this moveingunner stat ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1d setdir console_unit_orientation ; call compile format ["soldat5 createUnit [[_positX,_positY,_positZ],%1,""soldat1e = this ; this assignasgunner vehic ; this moveingunner vehic ; "", console_unit_moral, ""private""];",(console_nom)]; soldat1e setdir console_unit_orientation ; }; }; }; // ====================================================================================== // ====================================== MOUVEMENT ================================ // ====================================================================================== // Mouvement primaire if (var_console_valid_mouvement!="") then { if (var_console_valid_mouvement=="objectif") then { call compile format["%1 move position objectif;",(console_nom)]; }; if (var_console_valid_mouvement=="insertion") then { call compile format["%1 move position insertion;",(console_nom)]; }; if ((var_console_valid_mouvement=="Joueur") and (blufor_vts)) then { call compile format["%1 move position joueur1;",(console_nom)]; }; if ((var_console_valid_mouvement=="Joueur") and (opfor_vts)) then { call compile format["%1 move position joueure1;",(console_nom)]; }; if ((var_console_valid_mouvement=="Joueur") and (inde_vts)) then { call compile format["%1 move position joueuri1;",(console_nom)]; }; }; // On vrifie si des scripts d'init ont t slectionns if (var_console_valid_mouvement==script1Sqf) then { call compile format["_script1 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script1Sqf)]; }; if (var_console_valid_mouvement==script2Sqf) then { call compile format["_script2 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script2Sqf)]; }; if (var_console_valid_mouvement==script3Sqf) then { call compile format["_script3 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script3Sqf)]; }; if (var_console_valid_mouvement==script4Sqf) then { call compile format["_script4 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script4Sqf)]; }; if (var_console_valid_mouvement==script5Sqf) then { call compile format["_script5 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script5Sqf)]; }; if (var_console_valid_mouvement==script6Sqf) then { call compile format["_script6 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script6Sqf)]; }; if (var_console_valid_mouvement==script7Sqf) then { call compile format["_script7 = [%1,_positX,_positY] execVM ""mods\RT\units_init\%2"";",(console_nom),(script7Sqf)]; }; // On termine par une remise zro de la variable de spawn if not(nom_console_valid_mouvement== "Put on Master (only men)") then { console_spawnmark = true ; publicvariable "console_spawnmark"; }; From3D = false; publicvariable "From3D"; console_spawn = false; publicvariable "console_spawn"; }; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "teleport_x = _pos select 0; teleport_y = _pos select 1; teleport_z = _pos select 2 ; creation_teleport = true; publicVariable ""teleport_x""; publicVariable ""teleport_y""; publicVariable ""teleport_z""; publicVariable ""creation_teleport""; onMapSingleClick """";" ; If (true) ExitWith {}// teleportsolo_spawn.sqf if (local serveur) then { if (blufor_vts) then { call compile format [" joueur%1 setPos [joueursolo_x, joueursolo_y,0]; ",joueursolo_telep]; }; if (opfor_vts) then { call compile format [" joueure%1 setPos [joueursolo_x, joueursolo_y,0]; ",joueursolo_telep]; }; if (inde_vts) then { call compile format [" joueuri%1 setPos [joueursolo_x, joueursolo_y,0]; ",joueursolo_telep]; }; teleportsolo_spawn = false; publicvariable "teleportsolo_spawn"; }; If (true) ExitWith {}if (local serveur) then { // Destruction et cration du marqueur insertion. Attention l'option avec /sans respawn deletevehicle insertion ; deleteMarker "marqueur_insertion" ; insertion = "HeliHempty" createVehicle [teleport_x,teleport_y ,0] ; markerobj2 = createMarker["marqueur_insertion",position insertion] ; markerobj2 setMarkerShape "ICON" ; "marqueur_insertion" setMarkerType "Dot" ; "marqueur_insertion" setMarkerText "RT Insertion" ; "marqueur_insertion" setMarkerColor "ColorBlack"; // ---------------------------------Cration des bases de respawn if (opfor_vts) then { markerresp_opfor = createMarker ["respawn_east",position insertion] ; markerresp_opfor setMarkerShape "ICON" ; "respawn_east" setMarkerType "empty" ; "respawn_east" setMarkerColor "ColorRed"; "respawn_east" setMarkerText "respawn"; }; if (blufor_vts) then { markerresp_blufor = createMarker ["respawn_west",position insertion] ; markerresp_blufor setMarkerShape "ICON" ; "respawn_west" setMarkerType "empty" ; "respawn_west" setMarkerColor "ColorRed"; "respawn_west" setMarkerText "respawn"; }; if (inde_vts) then { markerresp_inde = createMarker ["respawn_guerrila",position insertion] ; markerresp_inde setMarkerShape "ICON" ; "respawn_guerrila" setMarkerType "empty" ; "respawn_guerrila" setMarkerColor "ColorRed"; "respawn_guerrila" setMarkerText "respawn"; }; if (respawn_carceral) then { if (opfor_vts) then { "respawn_east" setMarkerPos position prisone ; }; if (blufor_vts) then { "respawn_west" setMarkerPos position prison ; }; if (inde_vts) then { "respawn_guerrila" setMarkerPos position prisoni; }; }; // ---------------------------------Tlportation // du ct blufor if (blufor_vts) then { joueur1 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)+2,0] ; joueur2 setPos [(getpos insertion select 0), (getPos insertion select 1),0] ; joueur3 setPos [(getpos insertion select 0)+2, (getPos insertion select 1),0] ; joueur4 setPos [(getpos insertion select 0)+4, (getPos insertion select 1),0] ; joueur5 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-2,0] ; joueur6 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-2,0] ; joueur7 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-2,0] ; joueur8 setPos [(getpos insertion select 0)-2, (getPos insertion select 1),0] ; joueur9 setPos [(getpos insertion select 0)-4, (getPos insertion select 1),0] ; joueur10 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-2,0] ; joueur11 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-2,0] ; joueur12 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-2,0] ; joueur13 setPos [(getpos insertion select 0), (getPos insertion select 1)-2,0] ; joueur14 setPos [(getpos insertion select 0), (getPos insertion select 1)-4,0] ; joueur15 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-4,0] ; joueur16 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-4,0] ; joueur17 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-6,0] ; joueur18 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-6,0] ; joueur19 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-6,0] ; joueur20 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-4,0] ; joueur21 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-4,0] ; joueur22 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-6,0] ; joueur23 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-6,0] ; joueur24 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-6,0] ; joueur25 setPos [(getpos insertion select 0), (getPos insertion select 1)-6,0] ; }; // du ct opfor if (opfor_vts) then { joueure1 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)+2,0] ; joueure2 setPos [(getpos insertion select 0), (getPos insertion select 1),0] ; joueure3 setPos [(getpos insertion select 0)+2, (getPos insertion select 1),0] ; joueure4 setPos [(getpos insertion select 0)+4, (getPos insertion select 1),0] ; joueure5 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-2,0] ; joueure6 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-2,0] ; joueure7 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-2,0] ; joueure8 setPos [(getpos insertion select 0)-2, (getPos insertion select 1),0] ; joueure9 setPos [(getpos insertion select 0)-4, (getPos insertion select 1),0] ; joueure10 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-2,0] ; joueure11 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-2,0] ; joueure12 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-2,0] ; joueure13 setPos [(getpos insertion select 0), (getPos insertion select 1)-2,0] ; joueure14 setPos [(getpos insertion select 0), (getPos insertion select 1)-4,0] ; joueure15 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-4,0] ; joueure16 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-4,0] ; joueure17 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-6,0] ; joueure18 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-6,0] ; joueure19 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-6,0] ; joueure20 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-4,0] ; joueure21 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-4,0] ; joueure22 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-6,0] ; joueure23 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-6,0] ; joueure24 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-6,0] ; joueure25 setPos [(getpos insertion select 0), (getPos insertion select 1)-6,0] ; }; // du ct ind if (inde_vts) then { joueuri1 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)+2,0] ; joueuri2 setPos [(getpos insertion select 0), (getPos insertion select 1),0] ; joueuri3 setPos [(getpos insertion select 0)+2, (getPos insertion select 1),0] ; joueuri4 setPos [(getpos insertion select 0)+4, (getPos insertion select 1),0] ; joueuri5 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-2,0] ; joueuri6 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-2,0] ; joueuri7 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-2,0] ; joueuri8 setPos [(getpos insertion select 0)-2, (getPos insertion select 1),0] ; joueuri9 setPos [(getpos insertion select 0)-4, (getPos insertion select 1),0] ; joueuri10 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-2,0] ; joueuri11 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-2,0] ; joueuri12 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-2,0] ; joueuri13 setPos [(getpos insertion select 0), (getPos insertion select 1)-2,0] ; joueuri14 setPos [(getpos insertion select 0), (getPos insertion select 1)-4,0] ; joueuri15 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-4,0] ; joueuri16 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-4,0] ; joueuri17 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-6,0] ; joueuri18 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-6,0] ; joueuri19 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-6,0] ; joueuri20 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-4,0] ; joueuri21 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-4,0] ; joueuri22 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-6,0] ; joueuri23 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-6,0] ; joueuri24 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-6,0] ; joueuri25 setPos [(getpos insertion select 0), (getPos insertion select 1)-6,0] ; }; creation_teleport = false ; publicvariable "creation_teleport"; }; If (true) ExitWith {}//waitUntil {trig_suite} ; //trig_marqueur.sqf form_marktrig = "RECTANGLE"; // Nom du marqueur var_marktrig = var_marktrig + 1; if (nom_du_marqueur_trig == "") then {call compile format["nom_du_marqueur_trig = ""nom_marktrig%1"";",(var_marktrig)];}; // nom du marqueur texte call compile format["nom_du_marqueur_trigtext = ""nom_marktrigtext%1"";",(var_marktrig)]; // texte du marqueur textmarktrig = var_l4_texte_cadre ; if (textmarktrig == "") then {textmarktrig = nom_l2_qui_act1}; // forme du marqueur if (var_l1_ellipse1) then {form_marktrig = "RECTANGLE"} else {form_marktrig = "ELLIPSE"}; /* // protection en cas d'absence de axea if (var_l1_axeA2 == 0) then {var_l1_axeA2 = 50;}; // protection en cas d'absence de axeb if (var_l1_axeB2 == 0) then {var_l1_axeB2 = 50;}; // protection en cas d'absence de angle if (var_l1_angle2 == 0) then {var_l1_angle2 = 0;}; */ if (local joueur1) then { call compile format [" mark_tru%1 = createMarkerLocal [nom_du_marqueur_trig,[(spawntrig_x), (spawntrig_y),0]] ; mark_tru%1 setMarkerShapeLocal form_marktrig ; nom_du_marqueur_trig setMarkerSizeLocal [%2, %3] ; nom_du_marqueur_trig setMarkerDirLocal %4 ; nom_du_marqueur_trig setMarkerColorLocal ""ColorBlack""; ",(var_marktrig),(var_l1_axeA2),(var_l1_axeB2),(var_l1_angle2)]; call compile format [" mark_trub%1 = createMarkerLocal [nom_du_marqueur_trigtext,[(spawntrig_x), (spawntrig_y),0]] ; mark_trub%1 setMarkerShapeLocal ""ICON"" ; nom_du_marqueur_trigtext setMarkerTypeLocal ""dot""; nom_du_marqueur_trigtext setMarkerSizeLocal [0.50, 0.50]; nom_du_marqueur_trigtext setMarkerDirLocal 0 ; nom_du_marqueur_trigtext setMarkerColorLocal ""ColorBlack""; nom_du_marqueur_trigtext setMarkerTextLocal textmarktrig; ",(var_marktrig)]; trig_spawnmark = false ; publicvariable "trig_spawnmark"; }; if (local joueure1) then { call compile format [" mark_tru%1 = createMarkerLocal [nom_du_marqueur_trig,[(spawntrig_x), (spawntrig_y),0]] ; mark_tru%1 setMarkerShapeLocal form_marktrig ; nom_du_marqueur_trig setMarkerSizeLocal [%2, %3] ; nom_du_marqueur_trig setMarkerDirLocal %4 ; nom_du_marqueur_trig setMarkerColorLocal ""ColorBlack""; ",(var_marktrig),(var_l1_axeA2),(var_l1_axeB2),(var_l1_angle2)]; call compile format [" mark_trub%1 = createMarkerLocal [nom_du_marqueur_trigtext,[(spawntrig_x), (spawntrig_y),0]] ; mark_trub%1 setMarkerShapeLocal ""ICON"" ; nom_du_marqueur_trigtext setMarkerTypeLocal ""dot""; nom_du_marqueur_trigtext setMarkerSizeLocal [0.50, 0.50]; nom_du_marqueur_trigtext setMarkerDirLocal 0 ; nom_du_marqueur_trigtext setMarkerColorLocal ""ColorBlack""; nom_du_marqueur_trigtext setMarkerTextLocal textmarktrig; ",(var_marktrig)]; trig_spawnmark = false ; publicvariable "trig_spawnmark"; }; if (local joueuri1) then { call compile format [" mark_tru%1 = createMarkerLocal [nom_du_marqueur_trig,[(spawntrig_x), (spawntrig_y),0]] ; mark_tru%1 setMarkerShapeLocal form_marktrig ; nom_du_marqueur_trig setMarkerSizeLocal [%2, %3] ; nom_du_marqueur_trig setMarkerDirLocal %4 ; nom_du_marqueur_trig setMarkerColorLocal ""ColorBlack""; ",(var_marktrig),(var_l1_axeA2),(var_l1_axeB2),(var_l1_angle2)]; call compile format [" mark_trub%1 = createMarkerLocal [nom_du_marqueur_trigtext,[(spawntrig_x), (spawntrig_y),0]] ; mark_trub%1 setMarkerShapeLocal ""ICON"" ; nom_du_marqueur_trigtext setMarkerTypeLocal ""dot""; nom_du_marqueur_trigtext setMarkerSizeLocal [0.50, 0.50]; nom_du_marqueur_trigtext setMarkerDirLocal 0 ; nom_du_marqueur_trigtext setMarkerColorLocal ""ColorBlack""; nom_du_marqueur_trigtext setMarkerTextLocal textmarktrig; ",(var_marktrig)]; trig_spawnmark = false ; publicvariable "trig_spawnmark"; }; If (true) ExitWith {}//trig_rt.sqf if (local serveur) then { // ------------------------------------------------------------------------------------ // ----------------------- On fout des protections dans tous les coins ---------------- // ------------------------------------------------------------------------------------ // protection en cas d'absence de nom var_trig = var_trig+1; if (var_l4_nom_cadre =="") then {call compile format["var_l4_nom_cadre = ""nom_trig%1"";",(var_trig)];}; // protection en cas d'absence de axea if (var_l1_axeA2 =="") then {var_l1_axeA2 = 50;}; // protection en cas d'absence de axeb if (var_l1_axeB2 =="") then {var_l1_axeB2 = 50;}; // protection en cas d'absence de angle if (var_l1_angle2 =="") then {var_l1_angle2 = 0;}; // protection en cas de min, max, moy if (var_l3_min_cadre =="") then {var_l3_min_cadre = 0;}; if (var_l3_max_cadre =="") then {var_l3_max_cadre = 0;}; if (var_l3_moy_cadre =="") then {var_l3_moy_cadre = 0;}; // protection en cas d'absence de condition if (var_l5_condition_cadre =="") then {var_l5_condition_cadre = "this";}; // protection au niveau du type type_marqueur_x = var_l4_type_act1; // ------------------------------------------------------------------------------------ // ----------------------- On commence les choses srieuses --------------------------- // ------------------------------------------------------------------------------------ // On force le double guillemet call compile format ["var_l5_condition_cadre = ""%1"";",(var_l5_condition_cadre)]; if (var_l4_type_act1 != "2-Obj") then { call compile format ["var_l6_activation_cadre = ""%1"";",(var_l6_activation_cadre)]; call compile format ["var_l7_desact_cadre = ""%1"";",(var_l7_desact_cadre)]; }; // en cas de selection du trigger victoire ou chec : if (var_l4_type_act1 == "Victoire") then { var_l6_activation_cadre = "approche = true ; publicvariable ""approche"";"; type_marqueur_x = "NONE"; }; if (var_l4_type_act1 == "2-Obj") then { var_trigg = var_trigg+1 ; addition_activation = var_l6_activation_cadre; call compile format ["approche%1 = false;",(var_trigg)]; call compile format ["var_l6_activation_cadre = ""%2;approche%1 = true;objec_sec = true;obj_sc_hint = true ; publicvariable """"approche%1"""";publicvariable """"objec_sec"""" ; publicvariable """"obj_sc_hint""""; ; "";",(var_trigg),(addition_activation)]; addition_desactivation = var_l7_desact_cadre ; call compile format ["var_l7_desact_cadre = ""%2;approche%1 = false;objec_sec = true;obj_sc_hint = false ; publicvariable """"approche%1"""";publicvariable """"objec_sec"""" ; publicvariable """"obj_sc_hint""""; ; "";",(var_trigg),(addition_desactivation)]; publicvariable "var_trigg"; type_marqueur_x = "NONE"; }; if (var_l4_type_act1 == "Echec") then { var_l6_activation_cadre = "echec_mission = true ; publicvariable ""echec_mission"";"; type_marqueur_x = "NONE"; }; publicvariable "var_l4_nom_cadre"; publicvariable "var_l1_axeA2"; publicvariable "var_l1_axeB2"; publicvariable "var_l1_angle2"; publicvariable "var_l3_min_cadre"; publicvariable "var_l3_max_cadre"; publicvariable "var_l3_moy_cadre"; publicvariable "var_l5_condition_cadre"; publicvariable "var_l6_activation_cadre"; publicvariable "var_l7_desact_cadre"; publicvariable "type_marqueur_x"; trig_suite = true ; publicvariable "trig_suite"; }; // puis spawn du trigger en question waitUntil {trig_suite} ; call compile format ["%1 = createTrigger [""EmptyDetector"",[spawntrig_x,spawntrig_y,0]] ;nom_du_decl = %1;",(var_l4_nom_cadre)]; call compile format ["nom_du_decl setTriggerArea [%1,%2,%3,%4];",(var_l1_axeA2),(var_l1_axeB2),(var_l1_angle2),(var_l1_ellipse1)]; call compile format ["nom_du_decl setTriggerActivation[var_l2_qui_act1,var_l2_quoi_act1,%1];",(var_l2_combien_act1)]; nom_du_decl setTriggerStatements [var_l5_condition_cadre, var_l6_activation_cadre, var_l7_desact_cadre]; nom_du_decl setTriggerText var_l4_texte_cadre ; call compile format ["nom_du_decl setTriggerTimeout[%1, %2, %3, %4 ];",(var_l3_min_cadre),(var_l3_max_cadre),(var_l3_moy_cadre),(var_l3_delai_act1)]; nom_du_decl setTriggerType type_marqueur_x ; trig_spawn = false; publicvariable "trig_spawn"; trig_suite = false ; publicvariable "trig_suite"; trig_spawnmark = true ; publicvariable "trig_spawnmark"; If (true) ExitWith {}disableSerialization; // Attention! il faut faire passer en global toutes les variables sur l'unit! _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawntrig_x = _pos select 0; spawntrig_y = _pos select 1; spawntrig_z = _pos select 2 ; var_l1_axeA2 = format [""%1"",ctrlText 10252]; var_l1_axeB2 = format [""%1"",ctrlText 10254]; var_l1_angle2 = format [""%1"",ctrlText 10256]; var_l3_min_cadre = format [""%1"",ctrlText 10274]; var_l3_max_cadre = format [""%1"",ctrlText 10276]; var_l3_moy_cadre = format [""%1"",ctrlText 10278]; var_l4_nom_cadre = format [""%1"",ctrlText 10283]; var_l4_texte_cadre = format [""%1"",ctrlText 10285]; var_l5_condition_cadre = format [""%1"",ctrlText 10287]; var_l6_activation_cadre = format [""%1"",ctrlText 10289]; var_l7_desact_cadre = format [""%1"",ctrlText 10291]; nom_du_marqueur_trig = var_l4_nom_cadre; publicvariable ""var_l1_ellipse1"" ; publicvariable ""var_l2_qui_act1"" ; publicvariable ""nom_l2_qui_act1"" ; publicvariable ""var_l2_combien_act1"" ; publicvariable ""var_l2_quoi_act1"" ; publicvariable ""var_l3_delai_act1"" ; publicvariable ""var_l4_type_act1"" ; publicvariable ""var_l1_axeA2"" ; publicvariable ""var_l1_axeB2"" ; publicvariable ""var_l1_angle2"" ; publicvariable ""var_l3_min_cadre"" ; publicvariable ""var_l3_max_cadre"" ; publicvariable ""var_l3_moy_cadre"" ; publicvariable ""var_l4_nom_cadre"" ; publicvariable ""var_l4_texte_cadre"" ; publicvariable ""var_l5_condition_cadre"" ; publicvariable ""var_l6_activation_cadre"" ; publicvariable ""var_l7_desact_cadre"" ; publicvariable ""nom_du_marqueur_trig""; publicVariable ""spawntrig_x""; publicVariable ""spawntrig_y""; publicVariable ""spawntrig_z""; trig_spawn = true; publicvariable ""trig_spawn""; onMapSingleClick """";" ; If (true) ExitWith {}if (local serveur) then { arty_active = false ; publicvariable "arty_active" ; if (valid_artyr == 0) then { deleteMarker "marqueur_artillerie" ; deletevehicle heli_arty ; heli_arty = "HeliHempty" createVehicle [destination3_x,destination3_y ,destination3_z] ; marker_arty = createMarker["marqueur_artillerie",position heli_arty] ; marker_arty setMarkerShape "ICON" ; "marqueur_artillerie" setMarkerType "Flag" ; "marqueur_artillerie" setMarkerText "Artillery" ; "marqueur_artillerie" setMarkerColor "Colorblue"; }; if (valid_artyr == 2) then { arty_dispo = false; arty_indispo = true ; publicvariable "arty_dispo"; publicVariable "arty_indispo"; arty_debut = true ; publicvariable "arty_debut"; sleep 5 ; arty_debut = false ; publicvariable "arty_debut"; sleep (30 + (random 5)); for[{_i=0},{_i<=4},{_i=_i+1}] do { sifflement = true ; publicvariable "sifflement"; sleep 1.5; bomb= "Bo_GBU12_LGB" createVehicle [(destination3_x)+(random 200)-(random 200), (destination3_y)+(random 200)-(random 200),0] ; sleep (random 1); sifflement = true ; publicvariable "sifflement"; sleep 1.5; bomb= "Bo_GBU12_LGB" createVehicle [(destination3_x)+(random 200)-(random 200), (destination3_y)+(random 200)-(random 200),0] ; sleep (random 1); sifflement = true ; publicvariable "sifflement"; sleep 1.5; bomb= "Bo_GBU12_LGB" createVehicle [(destination3_x)+(random 200)-(random 200), (destination3_y)+(random 200)-(random 200),0] ; sleep (random 1); sifflement = true ; publicvariable "sifflement"; sleep 1.5; bomb= "Bo_GBU12_LGB" createVehicle [(destination3_x)+(random 200)-(random 200), (destination3_y)+(random 200)-(random 200),0] ; sleep (3+(random 2)); }; alerte = true ; publicvariable "alerte" ; arty_fin = true; publicvariable "arty_fin"; sleep 10 ; arty_fin = false; publicvariable "arty_fin"; arty1_off = true ; publicvariable "arty1_off"; sleep 180 ; arty_dispo = true; arty_indispo = false ; publicvariable "arty_dispo"; publicVariable "arty_indispo"; }; if (valid_artyr == 1) then { arty_dispo = false; arty_indispo = true ; publicvariable "arty_dispo"; publicVariable "arty_indispo"; arty_rglge = true ; publicvariable "arty_rglge"; sleep 5 ; arty_rglge = false ; publicvariable "arty_rglge"; sleep (30 + (random 5)); sifflement = true ; publicvariable "sifflement"; sleep 1.5; bomb= "Bo_GBU12_LGB" createVehicle [(destination3_x)+(random 100), (destination3_y)+(random 100),0] ; sleep (3+(random 2)); alerte = true ; publicvariable "alerte" ; arty1_off = true ; publicvariable "arty1_off"; sleep 5 ; arty_fin = false; publicvariable "arty_fin"; // deletevehicle heli_arty ; // deleteMarker "marqueur_artillerie" ; arty_dispo = true; arty_indispo = false ; publicvariable "arty_dispo"; publicVariable "arty_indispo"; }; }; If (true) ExitWith {} disableSerialization; joueur1 removeAction Onmaster_add; //gonza Dlg_FillListBoxLists = { _idc2 = _this select 0; _DualList = _this select 1; lbClear _idc2; { _typeName = typeName _x; if (_typeName == "ARRAY") then { _Item = _x select 0; _Data = _x select 1; _index = lbAdd [_idc2, _Item]; lbSetData [_idc2, _index, _Data]; } else { if (_typeName == "STRING") then { _Item = _x; _index = lbAdd [_idc2, _Item]; }; }; } forEach _DualList; lbSetCurSel [_idc2, 0]; }; //----------------------------------------------------------------------------- //--------------------- //gonza //LaserDisplay CloseDisplay 500; CommIntercepted=false;publicVariable "CommIntercepted"; _ok=createDialog "RscComputer"; if(captive joueur1) then { _display = finddisplay 8000; _bt = _display displayctrl 10603; _bt CtrlSetTextColor [1,0,0,1]; }; if (ShortCut != 0) then { _display = finddisplay 8000; _control = _display displayctrl 101; _details = _display displayCtrl 102; ctrlShow [200,false]; ctrlShow [8000,false]; ctrlShow [8001,false]; _j = 9980; while {_j<=10400} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; _j=102; while {_j<111} do { call compile format ["ctrlShow [%1,false]",_j];_j=_j+1}; }; cpu_loggedin={ choix_page=1 ; // Remise en page des valeurs en mémoire _n = [0] execVM "computer\boutons\ia_action.sqf"; _n = [0] execVM "computer\boutons\zone_action.sqf"; _n = [0] execVM "computer\boutons\grps_action.sqf"; _n = [0] execVM "computer\boutons\base_action.sqf"; _n = [0] execVM "computer\boutons\objectif_action.sqf"; _n = [0] execVM "computer\boutons\insertion_action.sqf"; _n = [0] execVM "computer\boutons\respawn_action.sqf"; _n = [0] execVM "computer\boutons\pluie_action.sqf"; _n = [0] execVM "computer\boutons\brume_action.sqf"; _n = [0] execVM "computer\boutons\heure_action.sqf"; _n = [0] execVM "computer\boutons\artyr_action.sqf"; _n = [0] execVM "computer\boutons\sate_action.sqf"; _n = [0] execVM "computer\boutons\camp_action.sqf"; _n = [0] execVM "computer\boutons\civils_action.sqf"; _n = [0] execVM "computer\boutons\chrono_action.sqf"; // On vire le bouton "page principale" ctrlShow [10053,false]; // On vire au cas où les boutons de la config base materielle _j = 10056; while {_j<=10200} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; // On vire la console TR _j = 10200; while {_j<=10400} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; _display = finddisplay 8000; _control = _display displayctrl 101; _details = _display displayCtrl 102; ctrlShow [102,true]; _text = ""; _text = _text + "Access granted" + "
"; _len=[_text] call KRON_StrLen;_i=0;while {_i<_len+1} do {_left=[_text,_i] call KRON_StrLeft;_details ctrlSetFont "LucidaConsoleB";_details ctrlSetTextColor [0.9,0.9,0.9, 1];_details ctrlSetStructuredText parseText _left;sleep random 0.05;_i=_i+1}; sleep 0.5; _text = _text + format ["%1 %2 logged in.",rank player,name player] + "
"; _text = _text + "
"; _text = _text + "
"; _text = _text + "
"; _text = _text + "
"; _text = _text + "Command menu:" + "
"; _text = _text + "
"; _text = _text + "======PREPARATORY ORDERS==================" + "
"; _text = _text + "
"; _text = _text + "Enemy side-------------------" + "
"; _text = _text + "
"; _text = _text + "AI Mode----------------------" + "
"; _text = _text + "Size of the hostile area-----" + "
"; _text = _text + "Number of enemy groups-------" + "
"; _text = _text + "Activate vehicles/weapons----" + "
"; _text = _text + "
"; _text = _text + "Locate objective-------------" + "
"; _text = _text + "Insertion--------------------" + "
"; _text = _text + "
"; _text = _text + "Respawn----------------------" + "
"; _text = _text + "Civilians in hostile area-----" + "
"; _text = _text + " " + "
"; _text = _text + "======OPTIONAL ORDERS=====================" + "
"; _text = _text + " " + "
"; _text = _text + "Rain setting------------------" + "
"; _text = _text + "Fog setting------------------" + "
"; _text = _text + "Time setting-----------------" + "
"; _text = _text + "Timer------------------------" + "
"; _text = _text + " " + "
"; _text = _text + "Artillery---------------------" + "
"; //_text = _text + "Satellite---------------------" + "
"; _details ctrlSetStructuredText parseText _text; // sleep 0.5; _j=103; while {_j<111} do { call compile format ["ctrlShow [%1,true]",_j];_j=_j+1}; _j = 9980; while {_j<=10051} do { call compile format ["ctrlShow [%1,true];",_j];_j=_j+1}; ctrlShow [10054,true]; ctrlShow [10055,true]; ctrlShow [8000,true]; ctrlShow [8001,true]; [] spawn cpu_update; }; // ---------------------------------------------configuration base base_loggedin={ _n = [0] execVM "computer\base\classe1.sqf"; _n = [1] execVM "computer\base\classe1.sqf"; _n = [0] execVM "computer\base\classe2.sqf"; _n = [1] execVM "computer\base\classe2.sqf"; _n = [0] execVM "computer\base\classe3.sqf"; _n = [1] execVM "computer\base\classe3.sqf"; _n = [0] execVM "computer\base\classe4.sqf"; _n = [1] execVM "computer\base\classe4.sqf"; _n = [0] execVM "computer\base\classe5.sqf"; _n = [1] execVM "computer\base\classe5.sqf"; _n = [0] execVM "computer\base\classe6.sqf"; _n = [1] execVM "computer\base\classe6.sqf"; _n = [0] execVM "computer\base\classe7.sqf"; _n = [1] execVM "computer\base\classe7.sqf"; _n = [0] execVM "computer\base\classe8.sqf"; _n = [1] execVM "computer\base\classe8.sqf"; _n = [0] execVM "computer\base\classe9.sqf"; _n = [1] execVM "computer\base\classe9.sqf"; _n = [0] execVM "computer\base\classe10.sqf"; _n = [1] execVM "computer\base\classe10.sqf"; _n = [0] execVM "computer\base\classe11.sqf"; _n = [1] execVM "computer\base\classe11.sqf"; _n = [0] execVM "computer\boutons\mater_action.sqf"; _n = [0] execVM "computer\boutons\artill_action.sqf"; _n = [0] execVM "computer\boutons\paras_action.sqf"; // sleep 0.5 ; _j = 9980; while {_j<=10055} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; _j=100; while {_j<111} do { call compile format ["ctrlShow [%1,false]",_j];_j=_j+1}; ctrlShow [200,false]; _j = 10200; while {_j<=10400} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; // 53 54 55 = boutons de navigation ctrlShow [10053,true]; ctrlShow [10054,true]; ctrlShow [10055,true]; _j = 10056; while {_j<=10200} do { call compile format ["ctrlShow [%1,true];",_j];_j=_j+1}; }; // ---------------------------------------------- CONSOLE TR console_loggedin={ choix_page=2 ; // sleep 0.5 ; _j = 9980; while {_j<=10055} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; _j=100; while {_j<111} do { call compile format ["ctrlShow [%1,false]",_j];_j=_j+1}; ctrlShow [200,false]; _j = 10056; while {_j<=10200} do { call compile format ["ctrlShow [%1,false];",_j];_j=_j+1}; // 53 54 55 = boutons de navigation ctrlShow [10053,true]; ctrlShow [10055,true]; // la carte ctrlShow [105,true]; _j = 10200; while {_j<=10400} do { call compile format ["ctrlShow [%1,true];",_j];_j=_j+1}; _n = [0] execVM "computer\console\boutons\console_valid_camp.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_type.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_attitude.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_mouvement.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_vitesse.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_moral.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_orientation.sqf"; _n = [0] execVM "computer\console\boutons\console_valid_unite.sqf"; _n = [0] execVM "computer\console\boutons\script_commande.sqf"; lbSetCurSel [10305, Typesave] ; sleep 0.1 ; lbSetCurSel [10306, Unitsave] ; //sleep 0.1 ; lbSetCurSel [10218, Mouvsave] ; _n = [] execVM "computer\console\boutons\l4_type_act1.sqf"; _n = [] execVM "computer\console\boutons\l3_delai_act1.sqf"; _n = [] execVM "computer\console\boutons\l2_qui_act1.sqf"; _n = [] execVM "computer\console\boutons\l2_combien_act1.sqf"; _n = [] execVM "computer\console\boutons\l2_quoi_act1.sqf"; _n = [] execVM "computer\console\boutons\l1_ellipse1.sqf"; _n = [1] execVM "computer\console\boutons\joueursolo_telep.sqf"; _n = [0] execVM "computer\console\boutons\console_joueur_scripteur.sqf"; }; // ---------------------------------------------- On s'occupe de la page d'accueil if (ShortCut == 0) then { // on vire la demande shortcut ctrlShow [100,false]; ctrlShow [101,false]; if (choix_page==1) then { [] spawn cpu_loggedin; }; if (choix_page==2) then { [] spawn console_loggedin; }; }; If (true) ExitWith {}if (local serveur) then { deletevehicle insertion ; deleteMarker "marqueur_insertion" ; insertion = "HeliHempty" createVehicle [destination2_x,destination2_y ,destination2_z] ; markerobj2 = createMarker["marqueur_insertion",position insertion] ; markerobj2 setMarkerShape "ICON" ; "marqueur_insertion" setMarkerType "Dot" ; "marqueur_insertion" setMarkerText "Insertion" ; "marqueur_insertion" setMarkerColor "ColorBlue"; base = true ; insertion_ok = true ; publicvariable "insertion_ok"; publicvariable "base"; }; If (true) ExitWith {}private ["_i","_l","_a"]; _i=0; _l=list detectlaser; _a=[]; while {_i0))then { _a=_a+[_l select _i]};_i=_i+1}; _a; If (true) ExitWith {}if (local serveur) then { deletevehicle objectif ; deleteMarker "marqueur_objectif" ; objectif = "HeliHempty" createVehicle [destination_x,destination_y ,destination_z] ; markerobj1 = createMarker["marqueur_objectif",position objectif] ; markerobj1 setMarkerShape "ICON" ; "marqueur_objectif" setMarkerType "Flag" ; "marqueur_objectif" setMarkerText objectif_valid ; "marqueur_objectif" setMarkerColor "ColorRed"; objectifmarq = true ; publicvariable "objectifmarq"; }; if (local joueur1) then { deletemarkerlocal "a" ; markerobj5 = createMarkerLocal ["a",[(destination_x), (destination_y),0]] ; markerobj5 setMarkerShapeLocal "RECTANGLE" ; "a" setMarkerSizeLocal [concentration, concentration] ; "a" setMarkerDirLocal 90 ; "a" setMarkerColorLocal "ColorRed"; }; if (local joueure1) then { deletemarkerlocal "a" ; markerobj5 = createMarkerLocal ["a",[(destination_x), (destination_y),0]] ; markerobj5 setMarkerShapeLocal "RECTANGLE" ; "a" setMarkerSizeLocal [concentration, concentration] ; "a" setMarkerDirLocal 90 ; "a" setMarkerColorLocal "ColorRed"; }; if (local joueuri1) then { deletemarkerlocal "a" ; markerobj5 = createMarkerLocal ["a",[(destination_x), (destination_y),0]] ; markerobj5 setMarkerShapeLocal "RECTANGLE" ; "a" setMarkerSizeLocal [concentration, concentration] ; "a" setMarkerDirLocal 90 ; "a" setMarkerColorLocal "ColorRed"; }; If (true) ExitWith {}disableSerialization; _req = _this select 0; _display = finddisplay 8000; _cmd = _display displayctrl 104; _conf = _display displayctrl 200; switch (_req) do { // Demandes du joueur comment "Type IA Statique"; case "1": { _conf CtrlSetText "Réglage IA statique"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { typeia = 1 ; statique = true ; mobile = false ; agressive = false ; publicvariable "typeia" ; publicvariable "statique" ; publicvariable "mobile" ; publicvariable "agressive"; _mf = [] execVM "computer\msge_ia1.sqf" ; }; }; comment "Type IA Mobile"; case "2": { _conf CtrlSetText "Réglage IA mobile"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { typeia = 2 ; statique = false ; mobile = true ; agressive = false ; publicvariable "typeia" ; publicvariable "statique" ; publicvariable "mobile" ; publicvariable "agressive"; _mf = [] execVM "computer\msge_ia2.sqf" ; }; }; comment "Type IA Mobile"; case "3": { _conf CtrlSetText "Réglage IA agressive"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { typeia = 3 ; statique = false ; mobile = false ; agressive = true ; publicvariable "typeia" ; publicvariable "statique" ; publicvariable "mobile" ; publicvariable "agressive"; _mf = [] execVM "computer\msge_ia3.sqf" ; }; }; comment "Concentration ennemie"; case "4": { _conf CtrlSetText "Réglage zone ENI"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { concentration_active = true; publicvariable "concentration_active"; _mf = [] execVM "computer\msge_concentration.sqf" ; }; }; comment "Nbre de groupes ennemis"; case "5": { _conf CtrlSetText "Réglage zone ENI"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { nbre_ge_active = true; publicvariable "nbre_ge_active"; _mf = [] execVM "computer\msge_grpe_eni.sqf" ; }; }; comment "Placer Objectif"; case "7": { _conf CtrlSetText "Placer Objectif"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { _gnuf1=[] execVM "Computer\request_obj.sqf"; }; }; comment "Placer Insertion Sol"; case "8": { _conf CtrlSetText "Placer Insertion Sol"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { _gnuf2=[] execVM "Computer\request_insertionsol.sqf"; }; }; comment "Placer Insertion Para"; case "9": { _conf CtrlSetText "Placer Insertion Para"; _conf CtrlSetTextColor [1,0,0,1]; if (initialisat) then { _gnuf3=[] execVM "Computer\request_insertionpara.sqf"; }; }; comment "Respawn carceral"; case "10": { _conf CtrlSetText "Respawn carceral"; _conf CtrlSetTextColor [1,0,0,1]; respawn_normal = false ; respawn_carceral = true ; publicvariable "respawn_normal"; publicvariable "respawn_carceral"; _mf = [] execVM "computer\msge_respawn.sqf" ; if (opfor_vts) then { deletemarker "respawn_east" ; markerresp_opfor = createMarker ["respawn_east",position prisone] ; markerresp_opfor setMarkerShape "ICON" ; "respawn_east" setMarkerType "empty" ; "respawn_east" setMarkerColor "ColorRed"; "respawn_east" setMarkerText "respawn"; }; if (blufor_vts) then { deletemarker "respawn_east" ; markerresp_blufor = createMarker ["respawn_west",position prison] ; markerresp_blufor setMarkerShape "ICON" ; "respawn_west" setMarkerType "empty" ; "respawn_west" setMarkerColor "ColorRed"; "respawn_west" setMarkerText "respawn"; }; }; comment "demande pluie"; case "11": { _conf CtrlSetText "demande pluie"; _conf CtrlSetTextColor [1,0,0,1]; pluie_active = true; publicvariable "pluie_active"; _mf = [] execVM "computer\msge_pluie.sqf" ; }; comment "demande brume"; case "12": { _conf CtrlSetText "demande brume"; _conf CtrlSetTextColor [1,0,0,1]; brume_active = true;publicvariable "brume_active"; _mf = [] execVM "computer\msge_brume.sqf" ; }; comment "demande heure"; case "13": { _conf CtrlSetText "demande heure"; _conf CtrlSetTextColor [1,0,0,1]; heure_active = true;publicvariable "heure_active"; _mf = [] execVM "computer\msge_heure.sqf" ; }; comment "Création de base"; case "6": { _conf CtrlSetText "Créer base"; _conf CtrlSetTextColor [1,0,0,1]; crea_base = true;publicvariable "crea_base"; _mf = [] execVM "computer\msge_base.sqf" ; }; comment "Demande artillerie"; case "14": { _conf CtrlSetText "Artillerie"; _conf CtrlSetTextColor [1,0,0,1]; _gnuf4=[] execVM "Computer\request_arty.sqf"; }; comment "Demande Sat"; case "15": { OnMapArrayS=[]; OnMapSingleClick "OnMapArrayS=OnMapArrayS+[_pos];""Sat_Marker"" setMarkerpos _pos;SAT_Logic setpos _pos"; _Sat=[] execVM "Computer\request_Sat.sqf"; }; comment "Confirmation Sat"; case "16": { _conf CtrlSetText "Position satellite confirmée"; _conf CtrlSetTextColor [1,0,0,1]; OnMapSingleClick ""; _ok=[] execVM "Satellite\sat_dialog.sqf"; }; }; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; //Chopper Data _chop = _display displayctrl 108; _chop ctrlShow true; //Comms _c= _display displayctrl 99; _c ctrlSetTextColor [0.9,0.9,0.9,1]; //Harrier Data _harr = _display displayctrl 109; _harr ctrlShow true; _i=0; while {Dialog} do { ctrlSetText [110,format ["%1",[daytime] call TimeToString]]; _list= [] call cpu_obj; if(ExtractionOn!=-1) then { if (canMove uhEVAC) then { "Track_Evac" setMarkerPos position uhEVAC;"Track_Evac" setMarkerDir getdir uhEVAC; _f=fuel uhEVAC - fuel uhEVAC mod 0.1; _d=damage uhEVAC - damage uhEVAC mod 0.1; _text=""; _text = _text + format ["EVAC Chopper Position: %1",[uhEVAC] call GetRCoord] + "
"; _text = _text + format ["EVAC Chopper Fuel Level: %1",_f] + "
"; _text = _text + format ["EVAC Chopper Damage: %1",_d] + "
"; _chop ctrlSetFont "LucidaConsoleB"; _chop ctrlSetTextColor [0.9,0.9,0.9, 1]; _chop ctrlSetStructuredText parseText _text; } }; if(CASOn!=-1) then { "CAS_Marker" setMarkerPos position LaserGL; "Track_CAS" setMarkerPos position harrier;"Track_CAS" setMarkerDir getdir harrier; if (canMove harrier) then { _f=fuel harrier - fuel harrier mod 0.1; _d=damage harrier - damage harrier mod 0.1; _text=""; _text = _text + format ["Harrier Position: %1",[harrier] call GetRCoord] + "
"; _text = _text + format ["Harrier Fuel Level: %1",_f] + "
"; _text = _text + format ["Harrier Damage: %1",_d] + "
"; _harr ctrlSetFont "LucidaConsoleB"; _harr ctrlSetTextColor [0.9,0.9,0.9, 1]; _harr ctrlSetStructuredText parseText _text; } }; while {_i= _s1) } do { if (abs(_xLeft) < _s2) then { if (_xLeft > 0) then { _xLeft = _xLeft - ((_s3-5) * 2000); }; }; _s1 = _s1 + 2000; _s2 = _s2 + 2000; _s3 = _s3 + 1; }; if (abs(_xLeft) >= 2000) then { _xLeft = _xLeft + (abs(_s3-5) * 2000); _x = 1; }; _s4 = (abs(_xLeft) / 200); _s4 = (_s4 - (_s4 mod 1)); _xCoordB = (_upperArray select (_s3-1)); if(_x == 1) then { _s4 = 9-_s4; }; if(_xCoordB == "Z") then { _s4 = 9-_s4; }; _xCoordS = (_lowerArray select _s4); _s1 = -9520; _s2 = -7520; _s3 = 0; while { (_yLeft >= _s1) } do { if (_yLeft < _s2) then { if (_yLeft < 0) then { _yLeft = _yLeft + (_s3 * 2000); _yLeft = _yLeft * -1; } else { _yLeft = _yLeft - ((_s3-5) * 2000); }; }; _s1 = _s1 + 2000; _s2 = _s2 + 2000; _s3 = _s3 + 1; }; _s4 = ((_yLeft-80) / 200); _yCoordS = (_numbersArray select (_s4 - (_s4 mod 1))); _yCoordB = (_numberArray select (_s3-1)); _coord = format ["%1%2%3%4",_xCoordB,_xCoordS,_yCoordB,_yCoordS]; _coorddisableSerialization; GetRCoord=compile preprocessfile "Computer\GetRCoord.sqf"; cpu_dialog=compile preprocessfile "Computer\cpu_dialog.sqf"; cpu_update=compile preprocessfile "Computer\cpu_update.sqf"; cpu_obj=compile preprocessfile "Computer\cpu_obj.sqf"; cpu_lsr=compile preprocessfile "Computer\cpu_lsr.sqf"; timeToString=compile preprocessfile "Computer\timeToString.sqf"; ExtractionOn=-1;publicVariable "ExtractionOn"; CommIntercepted=false;publicVariable "CommIntercepted"; CASOn=-1;PublicVariable "CASOn"; //Evac_Marker= createMarker ["Evac_Marker", [0,0,0]]; //"Evac_Marker" setMarkerType "Flag"; //"Evac_Marker" setMarkerSize [0.25, 0.25]; //"Evac_Marker" setMarkerColor "ColorGreen"; //"Evac_Marker" setMarkerText "Evac"; //Track_Evac= createMarker ["Track_Evac", [0,0,0]]; //"Track_Evac" setMarkerType "Arrow"; //"Track_Evac" setMarkerSize [0.25, 0.25]; //"Track_Evac" setMarkerColor "ColorGreen"; //"Track_Evac" setMarkerText "UH60"; //CAS_Marker= createMarker ["CAS_Marker", [0,0,0]]; //"CAS_Marker" setMarkerType "Flag"; //"CAS_Marker" setMarkerSize [0.25, 0.25]; //"CAS_Marker" setMarkerColor "ColorGreen"; //"CAS_Marker" setMarkerText "CAS"; //Track_CAS= createMarker ["Track_CAS", [0,0,0]]; //"Track_CAS" setMarkerType "Arrow"; //"Track_CAS" setMarkerSize [0.25, 0.25]; //"Track_CAS" setMarkerColor "ColorGreen"; //"Track_CAS" setMarkerText "AV8B"; LaserGL=createVehicle ["heliHEmpty", [0,0,0], [], 0, "None"]; publicVariable "LaserGL"; hEVAC=createVehicle ["heliH", [0,0,0], [], 0, "none"]; publicVariable "hEVAC"; // >>>>>>>>> attention, condition laser virer! // detectlaser=createTrigger["EmptyDetector",[0,0,0]]; // detectlaser setTriggerArea[50000,50000,0,false]; // detectlaser setTriggerActivation["ANY","PRESENT",true]; // detectlaser setTriggerStatements["(this and (""lasertargetW"" counttype list detectlaser>0))", "player removeaction cpu_action;lt=[] execVM ""Computer\LaserTracker.sqf"";LaserOn=true", "if (player hasweapon ""LaserDesignator"") then {cpu_action=player addaction [""Open Laptop"",""Computer\cpu_dialog.sqf""]};if (CASOn!=-1) then {CASOn=0;publicVariable ""CASOn""};LaserOn=False"]; if ((blufor_vts) and (local joueur1)) then { //joueur1 addaction ["", "menu_clear.sqf"] ; //cpu_action=joueur1 addaction ["Ordinateur (T key)","Computer\cpu_dialog.sqf",joueur1, 1, false, false,"teamSwitch","true"]; //_actionId = _vehicle addAction ["View radar", "mission\radar\viewRadar.sqf", ["forwardRadar", 8], false, true, "teamSwitchPrev", "driver _target == player"]; //advanced_nb = joueur1 addAction ["Advanced Mode", "gonza\advanced_mode.sqf"]; if (CASOn!=-1) then {CASOn=0;publicVariable "CASOn"}; LaserOn=False; } ; /* if ((opfor_vts) and (local joueure1)) then { joueure1 addaction ["", "menu_clear.sqf"] ; cpu_action=joueur1 addaction ["Ordinateur (T key)","Computer\cpu_dialog.sqf",joueur1, 1, false, false,"teamSwitch"]; if (CASOn!=-1) then {CASOn=0;publicVariable "CASOn"}; LaserOn=False; } ; if ((inde_vts) and (local joueuri1)) then { joueuri1 addaction ["", "menu_clear.sqf"] ; cpu_action=joueur1 addaction ["Ordinateur (T key)","Computer\cpu_dialog.sqf",joueur1, 1, false, false,"teamSwitch"]; if (CASOn!=-1) then {CASOn=0;publicVariable "CASOn"}; LaserOn=False; } ; */ // switchlaser=createTrigger["EmptyDetector",[0,0,0]]; // switchlaser setTriggerArea[0,0,0,false]; // switchlaser setTriggerActivation["NONE","PRESENT",true]; // switchlaser setTriggerStatements["player hasWeapon ""LaserDesignator""", "cpu_action=player addaction [""Open Laptop"",""Computer\cpu_dialog.sqf""];", "player removeaction cpu_action"]; // >>>>>>>>> attention, condition laser virer! //switchExtraction=createTrigger["EmptyDetector",[0,0,0]]; //switchExtraction setTriggerArea[0,0,0,false]; //switchExtraction setTriggerActivation["NONE","PRESENT",true]; //switchExtraction setTriggerStatements["ExtractionOn!=-1 and ExtractionOn!=3", "extr=[] execVM ""Computer\evac.sqf""",""]; //switchCAS=createTrigger["EmptyDetector",[0,0,0]]; //switchCAS setTriggerArea[0,0,0,false]; //switchCAS setTriggerActivation["NONE","PRESENT",true]; //switchCAS setTriggerStatements["CASOn!=-1 and CASOn!=3", "cas4=[] execVM ""Computer\cas.sqf""",""]; //switchDetect=createTrigger["EmptyDetector",[0,0,0]]; //switchDetect setTriggerArea[50,50,0,false]; //switchDetect setTriggerActivation["WEST","PRESENT",true]; //switchDetect setTriggerStatements["CommIntercepted", "EnemyD reveal RadioOp","CommIntercepted=false;publicVariable ""CommIntercepted"""]; _i=0; while {_i<10} do { call compile format ["Track_AA%1= createMarker [""Track_AA%1"", [0,0,0]];""Track_AA%1"" setMarkerType ""Warning"";""Track_AA%1"" setMarkerSize [0.25, 0.25];""Track_AA%1"" setMarkerColor ""ColorRed"";",_i];_i=_i+1}; Map_Anim={ _display = finddisplay 8000; _map = _display displayctrl 105; ctrlMapAnimClear _map; _map ctrlmapAnimAdd [1, 0.05, markerPos format ["Track_AA%1",lbCursel 107]];ctrlmapAnimCommit _map; }; If (true) ExitWith {} _h=createVehicle ["heliH", position hEVAC, [], 0, "none"]; uhEVAC land "get in"; waitUntil {getPos uhEVAC select 2<150}; if (IsServer) then {_s0=createVehicle ["smokeshellgreen", [(getpos hEVAC select 0)+35,(getpos hEVAC select 1)], [], 0, "none"]; _s1=createVehicle ["smokeshellgreen", [(getpos hEVAC select 0)-35,(getpos hEVAC select 1)], [], 0, "none"]; _s2=createVehicle ["smokeshellgreen", [(getpos hEVAC select 0),(getpos hEVAC select 1)+35], [], 0, "none"]; _s3=createVehicle ["smokeshellgreen", [(getpos hEVAC select 0),(getpos hEVAC select 1)-35], [], 0, "none"]}; _light = "#lightpoint" createVehicle position hEVAC; _light setLightBrightness 0.5; _light setLightAmbient[0.7, 0.7, 0.7]; _light setLightColor[0.7, 0.7, 0.7]; _i=0; while {_i<180} do {uhEVAC setDamage 0; if (count crew uhEVAC==((count units pathfinders)+1)) then {pEVAC domove getmarkerpos "uh60";uhEVAC flyinheight 50};sleep 1;_i=_i+1}; uhEVAC flyinheight 50; pEVAC domove getmarkerpos "uh60"; If (true) ExitWith {} if (CASOn==3) then {CASOn=2;PublicVariable "CASOn"}; while {LaserOn} do { _lsr=([] call cpu_lsr) select 0; _p=getPos _lsr;LaserGL setpos _p; _p0=position uhEVAC; _p1=position harrier; if (format ["%1",_p]!="array") then { if (format ["%1",_p0]=="array" and format ["%1",_p1]=="array") then {TitleText [format ["LD: %1",_p],"plain down"]}; if (format ["%1",_p0]!="array" and format ["%1",_p1]=="array") then {TitleText [format ["LD: %1\nUH-60: %2",_p,_p0],"plain down"]}; if (format ["%1",_p0]=="array" and format ["%1",_p1]!="array") then {TitleText [format ["LD: %1\nHarrier: %2",_p,_p1],"plain down"]}; if (format ["%1",_p0]!="array" and format ["%1",_p1]!="array") then {TitleText [format ["LD: %1\nUH-60: %2\nHarrier: %3",_p,_p0,_p1],"plain down"]}; }; sleep 2}; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Enemy Arty validated"; _txt CtrlSetTextColor [0,1,0,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "OPEN | CLOSE canopy"; _txt CtrlSetTextColor [0,1,0,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Canopy validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Enemy canopy validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Remplissez le champ variable (0 à 1, décimales)"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Fog Activated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Enemy side validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Timer validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Civilians validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Remplissez le champ variable (200 à 2000, +200)"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Hostile area validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Remplissez le champ variable (2 à 20)"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Enemy groups validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Remplissez le champ variable (0 à 23)"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Time validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; if (typeia == 1) then { _txt CtrlSetText "Inert AI validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; }; if (typeia == 2) then { _txt CtrlSetText "Mobile AI validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; }; if (typeia == 3) then { _txt CtrlSetText "Agressive AI validated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; }; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Enemy paras activated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Remplissez le champ variable (0 à 1, décimales)"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Rain activated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _pas_de_raid_aerien = false ; _raid_aerien_ok = true ; if (raids_avi == 0) then {_pas_de_raid_aerien = true ; _raid_aerien_ok = false}; if (raids_avi == 1) then {_pas_de_raid_aerien = false ; _raid_aerien_ok = true}; if (_pas_de_raid_aerien) then { _txt CtrlSetText "Activation de l'option Raids aériens"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; raids_avi = 1; nbre_options = nbre_options + 1 ; publicvariable "nbre_options"; publicvariable "raids_avi"; }; if (_raid_aerien_ok) then { _txt CtrlSetText "Désactivation de l'option Raids aériens"; _txt CtrlSetTextColor [1,1,0,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; raids_avi = 0; nbre_options = nbre_options - 1 ; publicvariable "nbre_options"; publicvariable "raids_avi"; }; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; if (respawn_normal) then { _txt CtrlSetText "Respawn activated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; }; if (respawn_carceral) then { _txt CtrlSetText "Respawn desactivated"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; }; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Satellite confirmed"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; CtrlShow [200,true];sleep 0.75;Ctrlshow [200,false];sleep 0.75; CtrlShow [200,true] ; If (true) ExitWith {}//Handle: spawned, when the resource "HUD" is loaded hOnLoadHUD = { // root display _dspl = _this; // map control _ctrlMap = _dspl displayCtrl 515201; // text control _ctrlText = _dspl displayCtrl 515202; // initializing local marker _ctrlMarker = createMarkerLocal[format["Marker%1%2",name player,round(random 1000)],getpos player]; _ctrlMarker setMarkerShapeLocal "ICON"; _ctrlMarker setMarkerTypeLocal "ARROW"; _ctrlMarker setMarkerSizeLocal [.4,.5]; _ctrlMarker setMarkerColorLocal "ColorBlack"; // while display is active while{!isnull _dspl}do { // initializing text for text control _text = ""; _text = _text + format ["Name: %1",name player] + "
"; _text = _text + format ["AnimationState: %1",AnimationState vehicle player] + "
"; _text = _text + format ["Damage: %1",getdammage vehicle player] + "
"; _text = _text + format ["Position: %1",getpos vehicle player] + "
"; _text = _text + format ["Direction: %1",getdir vehicle player] + "
"; _text = _text + format ["NearestBuilding: %1",nearestbuilding vehicle player] + "
"; _text = _text + format ["NearestObjects: %1",nearestobjects [player,[],1]] + "
"; _text = _text + format ["NearTargets: %1",player nearTargets 100] + "
"; _text = _text + format ["Speed: %1",speed vehicle player] + "
"; _text = _text + format ["SizeOf: %1",sizeof (typeof vehicle player)] + "
"; _text = _text + format ["SurfaceType: %1",surfaceType (getpos vehicle player)] + "
"; _text = _text + format ["VectorDir: %1",VectorDir vehicle player] + "
"; _text = _text + format ["VectorUp: %1",VectorUp vehicle player] + "
"; _text = _text + format ["Velocity: %1",Velocity vehicle player] + "
"; _text = _text + format ["Weapons: %1",weapons vehicle player] + "
"; _text = _text + format ["WeaponDirection: %1",(vehicle player)weapondirection((weapons (vehicle player))select 0)] + "
"; // parse text and set it to the text control _ctrlText ctrlSetStructuredText parseText _text; // map control animation _ctrlMap ctrlMapAnimAdd [0,(speed vehicle player)/200,getpos vehicle player]; ctrlMapAnimCommit _ctrlMap; _ctrlMarker setmarkerpos getpos vehicle player; _ctrlMarker setmarkerdir getdir vehicle player; // pause sleep .05; }; // when display is not active anymore, delete local marker deletemarkerlocal _ctrlMarker; // reload the resource "HUD" (= automaticly restarting this handle) titleRSC["HUD","PLAIN"]; }; // first load of resource "HUD" titleRSC["HUD","PLAIN"]; If (true) ExitWith {}disableSerialization; // _display = finddisplay 8000; // _txt = _display displayctrl 200; // _txt CtrlSetText "Indiquez la valeur"; // _txt CtrlSetTextColor [0.9,0.9,0.9,1]; // pluie_active = true ; // publicvariable "pluie_active"; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "0 = beau ; 1 = orage ; dcimales"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; while {dialog} do { Ctrlshow [200,true];sleep 0.75;CtrlShow [200,false];sleep 0.75; }; _txt CtrlSetText "Confirm CAS"; _txt CtrlSetTextColor [1,1,0,1]; while {dialog} do { CtrlShow [200,false];sleep 1;Ctrlshow [200,true];sleep 1; }; pluie_active = true ; publicvariable "pluie_active"; If (true) ExitWith {}disableSerialization; if (arty_dispo) then { if (valid_artyr == 0) then { _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "destination3_x = _pos select 0; destination3_y = _pos select 1; destination3_z = _pos select 2 ; arty_active = true ; coord_arty_pos = true ; publicVariable ""arty_active""; publicVariable ""valid_artyr""; publicVariable ""coord_arty_pos""; publicVariable ""destination3_x""; publicVariable ""destination3_y""; publicVariable ""destination3_z""; onMapSingleClick """";" ; }; if (((valid_artyr == 1) or (valid_artyr == 2)) and coord_arty_pos) then { arty_active = true ; publicVariable "arty_active"; publicVariable "valid_artyr"; }; }; if (arty_indispo) then { arty_non = true ; publicvariable "arty_non" ; sleep 10 ; arty_non = false ; publicvariable "arty_non" ; }; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.75; CtrlShow [200,false];sleep 0.75;Ctrlshow [200,true] ; para_spec = true ; insertion_norm = false ; publicvariable "insertion_norm"; publicvariable "para_spec" ; onMapSingleClick "destination2_x = _pos select 0; destination2_y = _pos select 1; destination2_z = _pos select 2; creation_insertion = true; crea_in = true ; publicvariable ""crea_in""; publicVariable ""destination2_x""; publicVariable ""destination2_y""; publicVariable ""destination2_z""; publicVariable ""creation_insertion""; onMapSingleClick """";"; If (true) ExitWith {} disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; para_spec = false ; insertion_norm = true; publicvariable "insertion_norm"; publicvariable "para_spec"; onMapSingleClick "destination2_x = _pos select 0; destination2_y = _pos select 1; destination2_z = _pos select 2; creation_insertion = true; crea_in = true ; publicvariable ""crea_in""; publicVariable ""destination2_x""; publicVariable ""destination2_y""; publicVariable ""destination2_z""; publicVariable ""creation_insertion""; onMapSingleClick """";"; If (true) ExitWith {} disableSerialization; if (breakclic <= 1 ) then { clic1 = false; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "destination_x = _pos select 0; destination_y = _pos select 1; destination_z = _pos select 2 ; publicVariable ""destination_x""; publicVariable ""destination_y""; publicVariable ""destination_z""; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; //hint "pause"; //if (_clic1) exitWith {}; if (clic1) then { hint ""; _j=0; clic1 = false; creation_objectif = true; crea_obj = true ; publicvariable "crea_obj"; publicVariable "creation_objectif"; }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; If (true) ExitWith {}disableSerialization; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; while {dialog and count OnMapArrayS<1} do { CtrlShow [200,false];sleep 0.75;Ctrlshow [200,true];sleep 0.75; }; _txt CtrlSetText "Confirm location"; _txt CtrlSetTextColor [1,1,0,1]; while {dialog and (CASOn==3 or CAS==-1)} do { CtrlShow [200,false];sleep 1;Ctrlshow [200,true];sleep 1; }; If (true) ExitWith {}//by Grimm - Inspired by Igor Drukov #define CT_COMBO 4 class RscComputer { IDD = 8000; MovingEnable = 1; class Controls { class CPUBackground:RscBackground { x=0.05; y=0.04; w=0.9; h=0.9; text=""; // ColorBackground[]={0.1,0.1,.1,0.7}; ColorBackground[]={0.2,0.1,0.2,0.6}; ColorText[]={0.1,0.1,0.1,1}; }; class Comms:RscText { idc=99; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Communication secured"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.250; y = -0.235; w = 0.56; h = 0.61; }; class Login:RscText { idc=100; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Enter code :"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.1; y = -0.2; w = 0.56; h = 0.61; }; class LoginEdit : RscEdit { idc = 101; x = 0.1; y = 0.12; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; onKeyUp="if ((format [""%1"",ctrlText 101]==format [""%1"",name player] or format [""%1"",ctrlText 101]==format [""%1"",ShortCut])) then {[] spawn cpu_loggedin}"; }; class acc_time : boutons { idc = 11557; x = 0.500; y = 0.040; w = 0.13; h = 0.015; text = "Acc Time (1D=12Mn)"; action = "if(go_acctime) then {go_acctime = false ; publicvariable ""go_acctime"";Sync_time = date;publicvariable ""Sync_time""} else {go_acctime = true ; publicvariable ""go_acctime"";};"; }; class spectat:boutons { idc = 10601; x = 0.640; y = 0.040; w = 0.055; h = 0.015; text = "Camera"; //action = "[] execVM ""spect\spectavts.sqf"";"; action = "if (player == (vehicle player)) then {breakclic = breakclic + 1; [] execVM ""NORRN_spectate\start3d_freecam.sqf""} else {hint ""3D Cam desactivated in vehicles"";};"; }; class M_respawn:boutons { idc = 10602; x = 0.705; y = 0.040; w = 0.100; h = 0.015; text = "Move Respawn"; action = "breakclic = breakclic + 1;[] execVM ""Computer\console\console_moverespawn.sqf"";"; }; class God_mod:boutons { idc = 10603; x = 0.815; y = 0.040; w = 0.070; h = 0.015; text = "God Mod"; action = "[] execVM ""gonza\cli_setcaptive.sqf"";"; }; class sec_obj : RscEdit { idc = 10600; x = 0.500; y = 0.759; w = 0.15; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; class add_sec_objective:boutons { idc = 10559; x = 0.500; y = 0.781; w = 0.15; h = 0.020; text = "add sec. Objective"; action = "breakclic = breakclic + 1; [] execVM ""Computer\console\console_add_sec_obj.sqf"";"; }; class obj_complete:boutons { idc = 10556; x = 0.795; y = 0.759; w = 0.15; h = 0.020; text = "OBJECTIVE COMPLETE"; action = "sec_Objective = true ; publicvariable ""sec_Objective"";"; }; class fin_missionS:boutons { idc = 10557; x = 0.795; y = 0.793; w = 0.15; h = 0.020; colorText[] = { 1,0.2,0.2, 1 }; text = "END MISSION (success)"; action = "exercice_okreussi = true ; publicvariable ""exercice_okreussi"";"; }; class fin_missionF:boutons { idc = 10558; x = 0.795; y = 0.815; w = 0.15; h = 0.020; colorText[] = { 1,0.2,0.2, 1 }; text = "END MISSION (Failed)"; action = "exercice_Failed = true ; publicvariable ""exercice_failed"";"; }; class Details : RscStructuredText { idc = 102; font = LucidaConsoleB; x = 0.1; y = 0.14; w = 0.6; h = 1; default = true; colorText[] = {0.9,0.9,0.9, 1}; text = ""; }; // --------------------------------------------------------- boutons // bouton civils class civils_centre:boutons { idc = 9990; x = 0.38; y = 0.496; w = 0.05; h = 0.015; text = "Civils"; }; class civils_gauche:boutons { idc = 9991; x = 0.36; y = 0.496; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_civils = valid_civils-1 ; [0] execVM ""computer\boutons\civils_action.sqf"";};"; }; class civils_droite:boutons { idc = 9992; x = 0.43; y = 0.496; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_civils = valid_civils+1 ; [0] execVM ""computer\boutons\civils_action.sqf"";};"; }; class civils_valider:boutons { idc = 9993; x = 0.46; y = 0.496; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\civils_action.sqf"";};"; }; // bouton ia class IA_centre:boutons { idc = 10000; x = 0.38; y = 0.339; w = 0.05; h = 0.015; text = "type"; }; class IA_gauche:boutons { idc = 10001; x = 0.36; y = 0.339; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_ia = valid_ia-1 ; [0] execVM ""computer\boutons\ia_action.sqf"";};"; }; class IA_droite:boutons { idc = 10002; x = 0.43; y = 0.339; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_ia = valid_ia+1 ; [0] execVM ""computer\boutons\ia_action.sqf"";};"; }; class IA_valider:boutons { idc = 10003; x = 0.46; y = 0.339; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\ia_action.sqf"";};"; }; // bouton zone class zone_centre:boutons { idc = 10004; x = 0.38; y = 0.358; w = 0.05; h = 0.015; text = "zone"; }; class zone_gauche:boutons { idc = 10005; x = 0.36; y = 0.358; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_zone = valid_zone-1 ; [0] execVM ""computer\boutons\zone_action.sqf"";};"; }; class zone_droite:boutons { idc = 10006; x = 0.43; y = 0.358; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_zone = valid_zone+1 ; [0] execVM ""computer\boutons\zone_action.sqf"";};"; }; class zone_valider:boutons { idc = 10007; x = 0.46; y = 0.358; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\zone_action.sqf"";};"; }; // bouton groupes class grps_centre:boutons { idc = 10008; x = 0.38; y = 0.377; w = 0.05; h = 0.015; text = "ENI"; }; class grps_gauche:boutons { idc = 10009; x = 0.36; y = 0.377; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_grps = valid_grps-1 ; [0] execVM ""computer\boutons\grps_action.sqf"";};"; }; class grps_droite:boutons { idc = 10010; x = 0.43; y = 0.377; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_grps = valid_grps+1 ; [0] execVM ""computer\boutons\grps_action.sqf"";};"; }; class grps_valider:boutons { idc = 10011; x = 0.46; y = 0.377; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\grps_action.sqf"";};"; }; // bouton base class base_centre:boutons { idc = 10012; x = 0.38; y = 0.396; w = 0.05; h = 0.015; text = "base"; }; class base_gauche:boutons { idc = 10013; x = 0.36; y = 0.396; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_base = valid_base-1 ; [0] execVM ""computer\boutons\base_action.sqf"";};"; }; class base_droite:boutons { idc = 10014; x = 0.43; y = 0.396; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_base = valid_base+1 ; [0] execVM ""computer\boutons\base_action.sqf"";};"; }; class base_valider:boutons { idc = 10015; x = 0.46; y = 0.396; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\base_action.sqf"";};"; }; // bouton objectif class objectif_centre:boutons { idc = 10016; x = 0.35; y = 0.424; w = 0.05; h = 0.015; text = "Objf"; }; class objectif_gauche:boutons { idc = 10017; x = 0.33; y = 0.424; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_objectif = valid_objectif-1 ; [0] execVM ""computer\boutons\objectif_action.sqf"";};"; }; class objectif_droite:boutons { idc = 10018; x = 0.40; y = 0.424; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_objectif = valid_objectif+1 ; [0] execVM ""computer\boutons\objectif_action.sqf"";};"; }; class objectif_valider:boutons { idc = 10019; x = 0.43; y = 0.424; w = 0.03; h = 0.015; text = "ok"; action = "breakclic = breakclic + 1; if (initialisat) then {[1] execVM ""computer\boutons\objectif_action.sqf"";};"; }; class objectif_3D:boutons { idc = 10045; x = 0.46; y = 0.424; w = 0.03; h = 0.015; text = "3D"; // action = "if ((var_console_valid_type == ""Statique"") or (var_console_valid_type == ""Groupe"")) then {} else {Typesave=lbCurSel 10305;Unitsave=lbCurSel 10306;Mouvsave=lbCurSel 10218;[] execVM ""NORRN_spectate\start3d.sqf""};"; action = "if (player == (vehicle player)) then {breakclic = breakclic + 1; if (initialisat) then {[] execVM ""NORRN_spectate\start3d_Obj.sqf"";}} else {hint ""3D Cam desactivated in vehicles"";};"; }; // bouton insertion class insertion_centre:boutons { idc = 10020; x = 0.38; y = 0.443; w = 0.05; h = 0.015; text = "Insert"; }; class insertion_gauche:boutons { idc = 10021; x = 0.36; y = 0.443; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_insertion = valid_insertion-1 ; [0] execVM ""computer\boutons\insertion_action.sqf"";};"; }; class insertion_droite:boutons { idc = 10022; x = 0.43; y = 0.443; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_insertion = valid_insertion+1 ; [0] execVM ""computer\boutons\insertion_action.sqf"";};"; }; class insertion_valider:boutons { idc = 10023; x = 0.46; y = 0.443; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\insertion_action.sqf"";};"; }; // bouton respawn class respawn_centre:boutons { idc = 10024; x = 0.38; y = 0.477; w = 0.05; h = 0.015; text = "respawn"; }; class respawn_gauche:boutons { idc = 10025; x = 0.36; y = 0.477; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_respawn = valid_respawn-1 ; [0] execVM ""computer\boutons\respawn_action.sqf"";};"; }; class respawn_droite:boutons { idc = 10026; x = 0.43; y = 0.477; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_respawn = valid_respawn+1 ; [0] execVM ""computer\boutons\respawn_action.sqf"";};"; }; class respawn_valider:boutons { idc = 10027; x = 0.46; y = 0.477; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\respawn_action.sqf"";};"; }; // bouton pluie class pluie_centre:boutons { idc = 10028; x = 0.38; y = 0.562; w = 0.05; h = 0.015; text = "pluie"; }; class pluie_gauche:boutons { idc = 10029; x = 0.36; y = 0.562; w = 0.02; h = 0.015; text = "<"; action = "valid_pluie = valid_pluie-1 ; [0] execVM ""computer\boutons\pluie_action.sqf"";"; }; class pluie_droite:boutons { idc = 10030; x = 0.43; y = 0.562; w = 0.02; h = 0.015; text = ">"; action = "valid_pluie = valid_pluie+1 ; [0] execVM ""computer\boutons\pluie_action.sqf"";"; }; class pluie_valider:boutons { idc = 10031; x = 0.46; y = 0.562; w = 0.03; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\pluie_action.sqf"";"; }; // bouton brume class brume_centre:boutons { idc = 10032; x = 0.38; y = 0.581; w = 0.05; h = 0.015; text = "brume"; }; class brume_gauche:boutons { idc = 10033; x = 0.36; y = 0.581; w = 0.02; h = 0.015; text = "<"; action = "valid_brume = valid_brume-1 ; [0] execVM ""computer\boutons\brume_action.sqf"";"; }; class brume_droite:boutons { idc = 10034; x = 0.43; y = 0.581; w = 0.02; h = 0.015; text = ">"; action = "valid_brume = valid_brume+1 ; [0] execVM ""computer\boutons\brume_action.sqf"";"; }; class brume_valider:boutons { idc = 10035; x = 0.46; y = 0.581; w = 0.03; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\brume_action.sqf"";"; }; // bouton heure class heure_centre:boutons { idc = 10036; x = 0.38; y = 0.600; w = 0.05; h = 0.015; text = "heure"; }; class heure_gauche:boutons { idc = 10037; x = 0.36; y = 0.600; w = 0.02; h = 0.015; text = "<"; action = "valid_heure = valid_heure-1 ; [0] execVM ""computer\boutons\heure_action.sqf"";"; }; class heure_droite:boutons { idc = 10038; x = 0.43; y = 0.600; w = 0.02; h = 0.015; text = ">"; action = "valid_heure = valid_heure+1 ; [0] execVM ""computer\boutons\heure_action.sqf"";"; }; class heure_valider:boutons { idc = 10039; x = 0.46; y = 0.600; w = 0.03; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\heure_action.sqf"";"; }; // bouton chronomètre class chrono_centre:boutons { idc = 9980; x = 0.38; y = 0.619; w = 0.05; h = 0.015; text = "Chrono"; }; class chrono_gauche:boutons { idc = 9981; x = 0.36; y = 0.619; w = 0.02; h = 0.015; text = "<"; action = "valid_chrono = valid_chrono-1 ; [0] execVM ""computer\boutons\chrono_action.sqf"";"; }; class chrono_droite:boutons { idc = 9982; x = 0.43; y = 0.619; w = 0.02; h = 0.015; text = ">"; action = "valid_chrono = valid_chrono+1 ; [0] execVM ""computer\boutons\chrono_action.sqf"";"; }; class chrono_valider:boutons { idc = 9983; x = 0.46; y = 0.619; w = 0.03; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\chrono_action.sqf"";"; }; // bouton arty class artyr_centre:boutons { idc = 10040; x = 0.38; y = 0.650; w = 0.05; h = 0.015; text = "arty"; }; class artyr_gauche:boutons { idc = 10041; x = 0.36; y = 0.650; w = 0.02; h = 0.015; text = "<"; action = "valid_artyr = valid_artyr-1 ; [0] execVM ""computer\boutons\artyr_action.sqf"";"; }; class artyr_droite:boutons { idc = 10042; x = 0.43; y = 0.650; w = 0.02; h = 0.015; text = ">"; action = "valid_artyr = valid_artyr+1 ; [0] execVM ""computer\boutons\artyr_action.sqf"";"; }; class artyr_valider:boutons { idc = 10043; x = 0.46; y = 0.650; w = 0.03; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\artyr_action.sqf"";"; }; class start_mision:boutons { idc = 10044; x = 0.36; y = 0.518; w = 0.100; h = 0.015; colorText[] = { 0.2,1,0.2, 1 }; text = "Start"; action = "if (crea_in and crea_obj) then {progression = true ; initialisat = false ; publicvariable ""progression"" ; publicvariable ""initialisat""};"; }; // bouton sate /* class sate_centre:boutons { idc = 10044; x = 0.38; y = 0.669; w = 0.05; h = 0.015; text = "sat"; }; class sate_gauche:boutons { idc = 10045; x = 0.36; y = 0.669; w = 0.02; h = 0.015; text = "<"; action = "valid_sate = valid_sate-1 ; [0] execVM ""computer\boutons\sate_action.sqf"";"; }; class sate_droite:boutons { idc = 10046; x = 0.43; y = 0.669; w = 0.02; h = 0.015; text = ">"; action = "valid_sate = valid_sate+1 ; [0] execVM ""computer\boutons\sate_action.sqf"";"; }; class sate_valider:boutons { idc = 10047; x = 0.46; y = 0.669; w = 0.03; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\sate_action.sqf"";"; }; */ // bouton camp class camp_centre:boutons { idc = 10048; x = 0.38; y = 0.310; w = 0.05; h = 0.015; text = "camp"; }; class camp_gauche:boutons { idc = 10049; x = 0.36; y = 0.310; w = 0.02; h = 0.015; text = "<"; action = "if (initialisat) then {valid_camp = valid_camp-1 ; [0] execVM ""computer\boutons\camp_action.sqf"";};"; }; class camp_droite:boutons { idc = 10050; x = 0.43; y = 0.310; w = 0.02; h = 0.015; text = ">"; action = "if (initialisat) then {valid_camp = valid_camp+1 ; [0] execVM ""computer\boutons\camp_action.sqf"";};"; }; class camp_valider:boutons { idc = 10051; x = 0.46; y = 0.310; w = 0.03; h = 0.015; text = "ok"; action = "if (initialisat) then {[1] execVM ""computer\boutons\camp_action.sqf"";};"; }; // boutons menu bas /* class config_mat:boutons { idc = 10052; x = 0.370; y = 0.700; w = 0.12; h = 0.030; text = "CONFIG. MAT."; action = "[] spawn base_loggedin;"; }; */ class menubas1:boutons { idc = 10053; x = 0.100; y = 0.870; w = 0.12; h = 0.030; text = "MAIN PAGE"; action = "[] spawn cpu_loggedin;"; }; class menubas2:boutons { idc = 10054; x = 0.100; y = 0.870; w = 0.12; h = 0.030; text = "REAL TIME"; action = "[] spawn console_loggedin;"; }; class menubas3:boutons { idc = 10055; x = 0.370; y = 0.870; w = 0.12; h = 0.030; text = "EXIT"; action = "Typesave=lbCurSel 10305;Unitsave=lbCurSel 10306;Mouvsave=lbCurSel 10218; closeDialog 0"; }; // ---------------------------------------------------------paramètres matériel - présentation class base_vehicules:RscText { idc=10056; style = ST_LEFT; colorText[] = {0.9,0.9,0.9,1}; text = "CANOPY"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.200; w = 0.56; h = 0.61; }; // ------------------- Présentation véhicules class materiel_vehicules:RscText { idc=10057; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Vehicles - Ground"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.150; w = 0.56; h = 0.61; }; // ----- véhicules classe 1 class vehicules_classe1_gauche:boutons { idc = 10058; x = 0.100; y = 0.170; w = 0.02; h = 0.015; text = "<"; action = "classe1_veh = classe1_veh-1 ; [0] execVM ""computer\base\classe1.sqf"";"; }; class vehicules_classe1_centre:boutons { idc = 10059; x = 0.120; y = 0.170; w = 0.1; h = 0.015; text = "classe1"; }; class vehicules_classe1_droite:boutons { idc = 10060; x = 0.220; y = 0.170; w = 0.02; h = 0.015; text = ">"; action = "classe1_veh = classe1_veh+1 ; [0] execVM ""computer\base\classe1.sqf"";"; }; class vehicules_nbre1_gauche:boutons { idc = 10061; x = 0.260; y = 0.170; w = 0.02; h = 0.015; text = "<"; action = "classe1_nbre = classe1_nbre-1 ; [1] execVM ""computer\base\classe1.sqf"";"; }; class vehicules_nbre1_centre:boutons { idc = 10062; x = 0.280; y = 0.170; w = 0.02; h = 0.015; text = "0"; }; class vehicules_nbre1_droite:boutons { idc = 10063; x = 0.300; y = 0.170; w = 0.02; h = 0.015; text = ">"; action = "classe1_nbre = classe1_nbre+1 ; [1] execVM ""computer\base\classe1.sqf"";"; }; class vehicules_class1_valid:boutons { idc = 10064; x = 0.340; y = 0.170; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe1.sqf"";"; }; // ----- véhicules classe 2 class vehicules_classe2_gauche:boutons { idc = 10065; x = 0.100; y = 0.190; w = 0.02; h = 0.015; text = "<"; action = "classe2_veh = classe2_veh-1 ; [0] execVM ""computer\base\classe2.sqf"";"; }; class vehicules_classe2_centre:boutons { idc = 10066; x = 0.120; y = 0.190; w = 0.1; h = 0.015; text = "classe2"; }; class vehicules_classe2_droite:boutons { idc = 10067; x = 0.220; y = 0.190; w = 0.02; h = 0.015; text = ">"; action = "classe2_veh = classe2_veh+1 ; [0] execVM ""computer\base\classe2.sqf"";"; }; class vehicules_nbre2_gauche:boutons { idc = 10068; x = 0.260; y = 0.190; w = 0.02; h = 0.015; text = "<"; action = "classe2_nbre = classe2_nbre-1 ; [1] execVM ""computer\base\classe2.sqf"";"; }; class vehicules_nbre2_centre:boutons { idc = 10069; x = 0.280; y = 0.190; w = 0.02; h = 0.015; text = "0"; }; class vehicules_nbre2_droite:boutons { idc = 10070; x = 0.300; y = 0.190; w = 0.02; h = 0.015; text = ">"; action = "classe2_nbre = classe2_nbre+1 ; [1] execVM ""computer\base\classe2.sqf"";"; }; class vehicules_class2_valid:boutons { idc = 10071; x = 0.340; y = 0.190; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe2.sqf"";"; }; // ----- véhicules classe 3 class vehicules_classe3_gauche:boutons { idc = 10072; x = 0.100; y = 0.210; w = 0.02; h = 0.015; text = "<"; action = "classe3_veh = classe3_veh-1 ; [0] execVM ""computer\base\classe3.sqf"";"; }; class vehicules_classe3_centre:boutons { idc = 10073; x = 0.120; y = 0.210; w = 0.10; h = 0.015; text = "classe3"; }; class vehicules_classe3_droite:boutons { idc = 10074; x = 0.220; y = 0.210; w = 0.02; h = 0.015; text = ">"; action = "classe3_veh = classe3_veh+1 ; [0] execVM ""computer\base\classe3.sqf"";"; }; class vehicules_nbre3_gauche:boutons { idc = 10075; x = 0.260; y = 0.210; w = 0.02; h = 0.015; text = "<"; action = "classe3_nbre = classe3_nbre-1 ; [1] execVM ""computer\base\classe3.sqf"";"; }; class vehicules_nbre3_centre:boutons { idc = 10076; x = 0.280; y = 0.210; w = 0.02; h = 0.015; text = "0"; }; class vehicules_nbre3_droite:boutons { idc = 10077; x = 0.300; y = 0.210; w = 0.02; h = 0.015; text = ">"; action = "classe3_nbre = classe3_nbre+1 ; [1] execVM ""computer\base\classe3.sqf"";"; }; class vehicules_class3_valid:boutons { idc = 10078; x = 0.340; y = 0.210; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe3.sqf"";"; }; // ----- véhicules classe 4 class vehicules_classe4_gauche:boutons { idc = 10079; x = 0.100; y = 0.230; w = 0.02; h = 0.015; text = "<"; action = "classe4_veh = classe4_veh-1 ; [0] execVM ""computer\base\classe4.sqf"";"; }; class vehicules_classe4_centre:boutons { idc = 10080; x = 0.120; y = 0.230; w = 0.10; h = 0.015; text = "classe4"; }; class vehicules_classe4_droite:boutons { idc = 10081; x = 0.220; y = 0.230; w = 0.02; h = 0.015; text = ">"; action = "classe4_veh = classe4_veh+1 ; [0] execVM ""computer\base\classe4.sqf"";"; }; class vehicules_nbre4_gauche:boutons { idc = 10082; x = 0.260; y = 0.230; w = 0.02; h = 0.015; text = "<"; action = "classe4_nbre = classe4_nbre-1 ; [1] execVM ""computer\base\classe4.sqf"";"; }; class vehicules_nbre4_centre:boutons { idc = 10083; x = 0.280; y = 0.230; w = 0.02; h = 0.015; text = "0"; }; class vehicules_nbre4_droite:boutons { idc = 10084; x = 0.300; y = 0.230; w = 0.02; h = 0.015; text = ">"; action = "classe4_nbre = classe4_nbre+1 ; [1] execVM ""computer\base\classe4.sqf"";"; }; class vehicules_class4_valid:boutons { idc = 10085; x = 0.340; y = 0.230; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe4.sqf"";"; }; // ----- véhicules classe 5 class vehicules_classe5_gauche:boutons { idc = 10086; x = 0.100; y = 0.250; w = 0.02; h = 0.015; text = "<"; action = "classe5_veh = classe5_veh-1 ; [0] execVM ""computer\base\classe5.sqf"";"; }; class vehicules_classe5_centre:boutons { idc = 10087; x = 0.120; y = 0.250; w = 0.10; h = 0.015; text = "classe5"; }; class vehicules_classe5_droite:boutons { idc = 10088; x = 0.220; y = 0.250; w = 0.02; h = 0.015; text = ">"; action = "classe5_veh = classe5_veh+1 ; [0] execVM ""computer\base\classe5.sqf"";"; }; class vehicules_nbre5_gauche:boutons { idc = 10089; x = 0.260; y = 0.250; w = 0.02; h = 0.015; text = "<"; action = "classe5_nbre = classe5_nbre-1 ; [1] execVM ""computer\base\classe5.sqf"";"; }; class vehicules_nbre5_centre:boutons { idc = 10090; x = 0.280; y = 0.250; w = 0.02; h = 0.015; text = "0"; }; class vehicules_nbre5_droite:boutons { idc = 10091; x = 0.300; y = 0.250; w = 0.02; h = 0.015; text = ">"; action = "classe5_nbre = classe5_nbre+1 ; [1] execVM ""computer\base\classe5.sqf"";"; }; class vehicules_class5_valid:boutons { idc = 10092; x = 0.340; y = 0.250; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe3.sqf"";"; }; // ------------------- Présentation air class materiel_air:RscText { idc=10093; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Vehicles - Air"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.000; w = 0.56; h = 0.61; }; // ----- air classe 1 class air_classe1_gauche:boutons { idc = 10094; x = 0.100; y = 0.320; w = 0.02; h = 0.015; text = "<"; action = "classe1_air = classe1_air-1 ; [0] execVM ""computer\base\classe6.sqf"";"; }; class air_classe1_centre:boutons { idc = 10095; x = 0.120; y = 0.320; w = 0.10; h = 0.015; text = "classe1"; }; class air_classe1_droite:boutons { idc = 10096; x = 0.220; y = 0.320; w = 0.02; h = 0.015; text = ">"; action = "classe1_air = classe1_air+1 ; [0] execVM ""computer\base\classe6.sqf"";"; }; class air_nbre1_gauche:boutons { idc = 10097; x = 0.260; y = 0.320; w = 0.02; h = 0.015; text = "<"; action = "classe6_nbre = classe6_nbre-1 ; [1] execVM ""computer\base\classe6.sqf"";"; }; class air_nbre1_centre:boutons { idc = 10098; x = 0.280; y = 0.320; w = 0.02; h = 0.015; text = "0"; }; class air_nbre1_droite:boutons { idc = 10099; x = 0.300; y = 0.320; w = 0.02; h = 0.015; text = ">"; action = "classe6_nbre = classe6_nbre+1 ; [1] execVM ""computer\base\classe6.sqf"";"; }; class air_class1_valid:boutons { idc = 10100; x = 0.340; y = 0.320; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe6.sqf"";"; }; // ----- air classe 2 class air_classe2_gauche:boutons { idc = 10101; x = 0.100; y = 0.340; w = 0.02; h = 0.015; text = "<"; action = "classe2_air = classe2_air-1 ; [0] execVM ""computer\base\classe7.sqf"";"; }; class air_classe2_centre:boutons { idc = 10102; x = 0.120; y = 0.340; w = 0.10; h = 0.015; text = "classe2"; }; class air_classe2_droite:boutons { idc = 10103; x = 0.220; y = 0.340; w = 0.02; h = 0.015; text = ">"; action = "classe2_air = classe2_air+1 ; [0] execVM ""computer\base\classe7.sqf"";"; }; class air_nbre2_gauche:boutons { idc = 10104; x = 0.260; y = 0.340; w = 0.02; h = 0.015; text = "<"; action = "classe7_nbre = classe7_nbre-1 ; [1] execVM ""computer\base\classe7.sqf"";"; }; class air_nbre2_centre:boutons { idc = 10105; x = 0.280; y = 0.340; w = 0.02; h = 0.015; text = "0"; }; class air_nbre2_droite:boutons { idc = 10106; x = 0.300; y = 0.340; w = 0.02; h = 0.015; text = ">"; action = "classe7_nbre = classe7_nbre+1 ; [1] execVM ""computer\base\classe7.sqf"";"; }; class air_class2_valid:boutons { idc = 10107; x = 0.340; y = 0.340; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe7.sqf"";"; }; // ----- air classe 3 class air_classe3_gauche:boutons { idc = 10108; x = 0.100; y = 0.360; w = 0.02; h = 0.015; text = "<"; action = "classe3_air = classe3_air-1 ; [0] execVM ""computer\base\classe8.sqf"";"; }; class air_classe3_centre:boutons { idc = 10109; x = 0.120; y = 0.360; w = 0.10; h = 0.015; text = "classe1"; }; class air_classe3_droite:boutons { idc = 10110; x = 0.220; y = 0.360; w = 0.02; h = 0.015; text = ">"; action = "classe3_air = classe3_air+1 ; [0] execVM ""computer\base\classe8.sqf"";"; }; class air_nbre3_gauche:boutons { idc = 10111; x = 0.260; y = 0.360; w = 0.02; h = 0.015; text = "<"; action = "classe8_nbre = classe8_nbre-1 ; [1] execVM ""computer\base\classe8.sqf"";"; }; class air_nbre3_centre:boutons { idc = 10112; x = 0.280; y = 0.360; w = 0.02; h = 0.015; text = "0"; }; class air_nbre3_droite:boutons { idc = 10113; x = 0.300; y = 0.360; w = 0.02; h = 0.015; text = ">"; action = "classe8_nbre = classe8_nbre+1 ; [1] execVM ""computer\base\classe8.sqf"";"; }; class air_class3_valid:boutons { idc = 10114; x = 0.340; y = 0.360; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe8.sqf"";"; }; // ------------------- Présentation munitions class materiel_munitions:RscText { idc=10115; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Personal weapons"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.110; w = 0.56; h = 0.61; }; // ----- munitions classe 1 class munitions_classe1_gauche:boutons { idc = 10116; x = 0.100; y = 0.430; w = 0.02; h = 0.015; text = "<"; action = "classe1_mun = classe1_mun-1 ; [0] execVM ""computer\base\classe9.sqf"";"; }; class munitions_classe1_centre:boutons { idc = 10117; x = 0.120; y = 0.430; w = 0.10; h = 0.015; text = "classe1"; }; class munitions_classe1_droite:boutons { idc = 10118; x = 0.220; y = 0.430; w = 0.02; h = 0.015; text = ">"; action = "classe1_mun = classe1_mun+1 ; [0] execVM ""computer\base\classe9.sqf"";"; }; class munitions_nbre1_gauche:boutons { idc = 10119; x = 0.260; y = 0.430; w = 0.02; h = 0.015; text = "<"; action = "classe9_nbre = classe9_nbre-1 ; [1] execVM ""computer\base\classe9.sqf"";"; }; class munitions_nbre1_centre:boutons { idc = 10120; x = 0.280; y = 0.430; w = 0.02; h = 0.015; text = "0"; }; class munitions_nbre1_droite:boutons { idc = 10121; x = 0.300; y = 0.430; w = 0.02; h = 0.015; text = ">"; action = "classe9_nbre = classe9_nbre+1 ; [1] execVM ""computer\base\classe9.sqf"";"; }; class munitions_class1_valid:boutons { idc = 10122; x = 0.340; y = 0.430; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe9.sqf"";"; }; // ----- munitions classe 2 class munitions_classe2_gauche:boutons { idc = 10123; x = 0.100; y = 0.450; w = 0.02; h = 0.015; text = "<"; action = "classe2_mun = classe2_mun-1 ; [0] execVM ""computer\base\classe10.sqf"";"; }; class munitions_classe2_centre:boutons { idc = 10124; x = 0.120; y = 0.450; w = 0.10; h = 0.015; text = "classe2"; }; class munitions_classe2_droite:boutons { idc = 10125; x = 0.220; y = 0.450; w = 0.02; h = 0.015; text = ">"; action = "classe2_mun = classe2_mun+1 ; [0] execVM ""computer\base\classe10.sqf"";"; }; class munitions_nbre2_gauche:boutons { idc = 10126; x = 0.260; y = 0.450; w = 0.02; h = 0.015; text = "<"; action = "classe10_nbre = classe10_nbre-1 ; [1] execVM ""computer\base\classe10.sqf"";"; }; class munitions_nbre2_centre:boutons { idc = 10127; x = 0.280; y = 0.450; w = 0.02; h = 0.015; text = "0"; }; class munitions_nbre2_droite:boutons { idc = 10128; x = 0.300; y = 0.450; w = 0.02; h = 0.015; text = ">"; action = "classe10_nbre = classe10_nbre+1 ; [1] execVM ""computer\base\classe10.sqf"";"; }; class munitions_class2_valid:boutons { idc = 10129; x = 0.340; y = 0.450; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe10.sqf"";"; }; // ----- munitions classe 3 class munitions_classe3_gauche:boutons { idc = 10130; x = 0.100; y = 0.470; w = 0.02; h = 0.015; text = "<"; action = "classe3_mun = classe3_mun-1 ; [0] execVM ""computer\base\classe11.sqf"";"; }; class munitions_classe3_centre:boutons { idc = 10131; x = 0.120; y = 0.470; w = 0.10; h = 0.015; text = "classe3"; }; class munitions_classe3_droite:boutons { idc = 10132; x = 0.220; y = 0.470; w = 0.02; h = 0.015; text = ">"; action = "classe3_mun = classe3_mun+1 ; [0] execVM ""computer\base\classe11.sqf"";"; }; class munitions_nbre3_gauche:boutons { idc = 10133; x = 0.260; y = 0.470; w = 0.02; h = 0.015; text = "<"; action = "classe11_nbre = classe11_nbre-1 ; [1] execVM ""computer\base\classe11.sqf"";"; }; class munitions_nbre3_centre:boutons { idc = 10134; x = 0.280; y = 0.470; w = 0.02; h = 0.015; text = "0"; }; class munitions_nbre3_droite:boutons { idc = 10135; x = 0.300; y = 0.470; w = 0.02; h = 0.015; text = ">"; action = "classe11_nbre = classe11_nbre+1 ; [1] execVM ""computer\base\classe11.sqf"";"; }; class munitions_class3_valid:boutons { idc = 10136; x = 0.340; y = 0.470; w = 0.02; h = 0.015; text = "ok"; action = "[2] execVM ""computer\base\classe11.sqf"";"; }; // ---------------------------------------------------------paramètres matériel ennemi - présentation class baseeni_vehicules:RscText { idc=10137; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "ENEMY CANOPY"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.220; w = 0.56; h = 0.61; }; // paramètre 1 class baseeni_classe1_centre:boutons { idc = 10138; x = 0.100; y = 0.540; w = 0.05; h = 0.015; text = "Mater."; }; class baseeni_choix1_gauche:boutons { idc = 10139; x = 0.170; y = 0.540; w = 0.02; h = 0.015; text = "<"; action = "valid_mater = valid_mater-1 ; [0] execVM ""computer\boutons\mater_action.sqf"";"; }; class baseeni_choix1_centre:boutons { idc = 10140; x = 0.190; y = 0.540; w = 0.1; h = 0.015; text = "classe1"; }; class baseeni_choix1_droite:boutons { idc = 10141; x = 0.290; y = 0.540; w = 0.02; h = 0.015; text = ">"; action = "valid_mater = valid_mater+1 ; [0] execVM ""computer\boutons\mater_action.sqf"";"; }; class baseeni_choix1_valid:boutons { idc = 10142; x = 0.330; y = 0.540; w = 0.02; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\mater_action.sqf"";"; }; // paramètre 2 class baseeni_classe2_centre:boutons { idc = 10143; x = 0.100; y = 0.560; w = 0.05; h = 0.015; text = "Paras"; }; class baseeni_choix2_gauche:boutons { idc = 10144; x = 0.170; y = 0.560; w = 0.02; h = 0.015; text = "<"; action = "valid_paras = valid_paras-1 ; [0] execVM ""computer\boutons\paras_action.sqf"";"; }; class baseeni_choix2_centre:boutons { idc = 10145; x = 0.190; y = 0.560; w = 0.05; h = 0.015; text = "classe1"; }; class baseeni_choix2_droite:boutons { idc = 10146; x = 0.240; y = 0.560; w = 0.02; h = 0.015; text = ">"; action = "valid_paras = valid_paras+1 ; [0] execVM ""computer\boutons\paras_action.sqf"";"; }; class baseeni_choix2_valid:boutons { idc = 10147; x = 0.280; y = 0.560; w = 0.02; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\paras_action.sqf"";"; }; // paramètre 3 class baseeni_classe3_centre:boutons { idc = 10148; x = 0.100; y = 0.580; w = 0.05; h = 0.015; text = "Arty."; }; class baseeni_choix3_gauche:boutons { idc = 10149; x = 0.170; y = 0.580; w = 0.02; h = 0.015; text = "<"; action = "valid_artill = valid_artill-1 ; [0] execVM ""computer\boutons\artill_action.sqf"";"; }; class baseeni_choix3_centre:boutons { idc = 10150; x = 0.190; y = 0.580; w = 0.05; h = 0.015; text = "classe1"; }; class baseeni_choix3_droite:boutons { idc = 10151; x = 0.240; y = 0.580; w = 0.02; h = 0.015; text = ">"; action = "valid_artill = valid_artill+1 ; [0] execVM ""computer\boutons\artill_action.sqf"";"; }; class baseeni_choix3_valid:boutons { idc = 10152; x = 0.280; y = 0.580; w = 0.02; h = 0.015; text = "ok"; action = "[1] execVM ""computer\boutons\artill_action.sqf"";"; }; // ---------------------------------------------------------console TR // ----------------------- Unités et objets = présentation class unit_object:RscText { idc=10201; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "====== Units | Objects ================"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.200; w = 0.56; h = 0.61; }; // ----------------------- Unités et objets = ligne 1 camp class unit_object_camp1:boutons { idc = 10202; x = 0.100; y = 0.140; w = 0.020; h = 0.015; text = "<"; action = "console_valid_camp = console_valid_camp-1 ; [0] execVM ""computer\console\boutons\console_valid_camp.sqf"";"; }; class unit_object_camp2:boutons { idc = 10203; x = 0.120; y = 0.140; w = 0.050; h = 0.015; text = "camp"; }; class unit_object_camp3:boutons { idc = 10204; x = 0.170; y = 0.140; w = 0.020; h = 0.015; text = ">"; action = "console_valid_camp = console_valid_camp+1 ; [0] execVM ""computer\console\boutons\console_valid_camp.sqf"";"; }; // ----------------------- Unités et objets = ligne 1 type class type_combo:VtsCombo { idc = 10305; x = 0.200; y = 0.140; w = 0.09; h = 0.015; text = "unit Type"; //onLBSelChanged = "[_this] call LOC3_Select"; //onLBSelChanged = "[] execVM ""gonza\combotest.sqf"";"; onLBSelChanged = "[0] execVM ""computer\console\boutons\console_valid_type.sqf"";"; //onLBDblClick = "[_this] call LOC3_OkButton"; }; /* class unit_object_type1:boutons { idc = 10205; x = 0.200; y = 0.140; w = 0.020; h = 0.015; text = "<"; action = "console_valid_type = console_valid_type-1 ; [0] execVM ""computer\console\boutons\console_valid_type.sqf"";"; }; class unit_object_type2:boutons { idc = 10206; x = 0.220; y = 0.140; w = 0.050; h = 0.015; text = "type"; }; class unit_object_type3:boutons { idc = 10207; x = 0.270; y = 0.140; w = 0.020; h = 0.015; text = ">"; action = "console_valid_type = console_valid_type+1 ; [0] execVM ""computer\console\boutons\console_valid_type.sqf"";"; }; */ // ----------------------- Unités et objets = ligne 1 unite class unit_combo:VtsCombo { idc = 10306; x = 0.300; y = 0.140; w = 0.15; h = 0.015; text = "unit"; //onLBSelChanged = "[_this] call LOC3_Select"; //onLBSelChanged = "[] execVM ""gonza\combotest.sqf"";"; onLBSelChanged = "[0] execVM ""computer\console\boutons\console_valid_unite.sqf"";"; //onLBDblClick = "[_this] call LOC3_OkButton"; }; /* class unit_object_unite1:boutons { idc = 10208; x = 0.300; y = 0.140; w = 0.020; h = 0.015; text = "<"; action = "console_valid_unite = console_valid_unite-1 ; [0] execVM ""computer\console\boutons\console_valid_unite.sqf"";"; }; class unit_object_unite2:boutons { idc = 10209; x = 0.320; y = 0.140; w = 0.150; h = 0.015; text = "unit"; }; class unit_object_unite3:boutons { idc = 10210; x = 0.470; y = 0.140; w = 0.020; h = 0.015; text = ">"; action = "console_valid_unite = console_valid_unite+1 ; [0] execVM ""computer\console\boutons\console_valid_unite.sqf"";" }; */ // ----------------------- Unités et objets = ligne 2 attitude class unit_object_attitude1:boutons { idc = 10211; x = 0.100; y = 0.160; w = 0.020; h = 0.015; text = "<"; action = "console_valid_attitude = console_valid_attitude-1 ; [0] execVM ""computer\console\boutons\console_valid_attitude.sqf"";"; }; class unit_object_attitude2:boutons { idc = 10212; x = 0.120; y = 0.160; w = 0.050; h = 0.015; text = "attitude"; }; class unit_object_attitude3:boutons { idc = 10213; x = 0.170; y = 0.160; w = 0.020; h = 0.015; text = ">"; action = "console_valid_attitude = console_valid_attitude+1 ; [0] execVM ""computer\console\boutons\console_valid_attitude.sqf"";"; }; // ----------------------- Unités et objets = ligne 2 vitesse class unit_object_vitesse1:boutons { idc = 10214; x = 0.200; y = 0.160; w = 0.020; h = 0.015; text = "<"; action = "console_valid_vitesse = console_valid_vitesse-1 ; [0] execVM ""computer\console\boutons\console_valid_vitesse.sqf"";"; }; class unit_object_vitesse2:boutons { idc = 10215; x = 0.220; y = 0.160; w = 0.050; h = 0.015; text = "vitesse"; }; class unit_object_vitesse3:boutons { idc = 10216; x = 0.270; y = 0.160; w = 0.020; h = 0.015; text = ">"; action = "console_valid_vitesse = console_valid_vitesse+1 ; [0] execVM ""computer\console\boutons\console_valid_vitesse.sqf"";"; }; // ----------------------- Unités et objets = ligne 2 mouvement /* class unit_object_mouvement1:boutons { idc = 10217; x = 0.300; y = 0.160; w = 0.020; h = 0.015; text = "<"; action = "console_valid_mouvement = console_valid_mouvement-1 ; [0] execVM ""computer\console\boutons\console_valid_mouvement.sqf"";"; }; class unit_object_mouvement2:boutons { idc = 10218; x = 0.320; y = 0.160; w = 0.150; h = 0.015; text = "mouvement"; }; */ class unit_object_mouvement_combo:VtsCombo { idc = 10218; x = 0.300; y = 0.160; w = 0.170; h = 0.015; text = "mouvement"; onLBSelChanged = "[0] execVM ""computer\console\boutons\console_valid_mouvement.sqf"";"; }; /* class unit_object_mouvement3:boutons { idc = 10219; x = 0.470; y = 0.160; w = 0.020; h = 0.015; text = ">"; action = "console_valid_mouvement = console_valid_mouvement+1 ; [0] execVM ""computer\console\boutons\console_valid_mouvement.sqf"";"; }; */ class Go2_marker:boutons { idc = 10604; x = 0.500; y = 0.1; w = 0.050; h = 0.015; text = "Mark 1"; action = "breakclic = breakclic + 1;[] execVM ""computer\console\console_Go2marker.sqf"";"; }; // ----------------------- Unités et objets = moral texte class unit_object_moraltexte:RscText { idc=10220; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Skill--------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.110; w = 0.56; h = 0.61; }; // ----------------------- Unités et objets = orientation texte class unit_object_orientationtexte:RscText { idc=10221; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Direction----"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.090; w = 0.56; h = 0.61; }; // ----------------------- Unités et objets = Nom texte class unit_object_nomtexte:RscText { idc=10222; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Name---------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.070; w = 0.56; h = 0.61; }; // ----------------------- Unités et objets = Init texte class unit_object_inittexte:RscText { idc=10223; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Init---------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.050; w = 0.56; h = 0.61; }; // ----------------------- Unités et objets = valid texte class unit_object_validtexte:RscText { idc=10224; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Valid--------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = -0.030; w = 0.56; h = 0.61; }; /* // ----------------------- Unités et objets = delete texte class unit_object_deletetexte:RscText { idc=10219; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Delete--------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.000; w = 0.56; h = 0.61; }; // ----------------------- Unités et objets = delete combo class unit_object_delete_combo:VtsCombo { idc = 10217; x = 0.200; y = 0.288; w = 0.1; h = 0.015; text = "unit Type"; //onLBSelChanged = "[_this] call LOC3_Select"; //onLBSelChanged = "[] execVM ""gonza\combotest.sqf"";"; onLBSelChanged = "[0] execVM ""computer\console\boutons\console_valid_type.sqf"";"; //onLBDblClick = "[_this] call LOC3_OkButton"; }; */ // ----------------------- Unités et objets = ligne 3 moral class unit_object_moral1:boutons { idc = 10225; x = 0.230; y = 0.185; w = 0.020; h = 0.015; text = "<"; action = "console_valid_moral = console_valid_moral-1 ; [0] execVM ""computer\console\boutons\console_valid_moral.sqf"";"; }; class unit_object_moral2:boutons { idc = 10226; x = 0.250; y = 0.185; w = 0.050; h = 0.015; text = "moral"; }; class unit_object_moral3:boutons { idc = 10227; x = 0.300; y = 0.185; w = 0.020; h = 0.015; text = ">"; action = "console_valid_moral = console_valid_moral+1 ; [0] execVM ""computer\console\boutons\console_valid_moral.sqf"";"; }; // ----------------------- Unités et objets = ligne 4 orientation class unit_object_orientation1:boutons { idc = 10228; x = 0.230; y = 0.205; w = 0.020; h = 0.015; text = "<"; action = "console_valid_orientation = console_valid_orientation-1 ; [0] execVM ""computer\console\boutons\console_valid_orientation.sqf"";"; }; class unit_object_orientation2:boutons { idc = 10229; x = 0.250; y = 0.205; w = 0.050; h = 0.015; text = "orient"; }; class unit_object_orientation3:boutons { idc = 10230; x = 0.300; y = 0.205; w = 0.020; h = 0.015; text = ">"; action = "console_valid_orientation = console_valid_orientation+1 ; [0] execVM ""computer\console\boutons\console_valid_orientation.sqf"";"; }; // ----------------------- Unités et objets = ligne 5 nom class unit_object_nom : RscEdit { idc = 10231; x = 0.230; y = 0.223; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // ----------------------- Unités et objets = ligne 6 init class unit_object_init : RscEdit { idc = 10232; x = 0.230; y = 0.245; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // ----------------------- Unités et objets = ligne 5 valid class unit_object_valid1:boutons { idc = 10233; x = 0.220; y = 0.268; w = 0.020; h = 0.015; text = "ok"; action = "breakclic = breakclic + 1;[] execVM ""computer\console\console_map.sqf"";"; }; class unit_object_3D:boutons { idc = 10210; x = 0.260; y = 0.268; w = 0.025; h = 0.015; text = "3D"; //action = "if ((var_console_valid_type == ""Statique"") or (var_console_valid_type == ""Groupe"")) then {} else {Typesave=lbCurSel 10305;Unitsave=lbCurSel 10306;console_valid_mouvement = 0;nom_console_valid_mouvement = ""None"";var_console_valid_mouvement = """";[] execVM ""NORRN_spectate\start3d.sqf""};"; action = "if (player == (vehicle player)) then {breakclic = breakclic + 1; Typesave=lbCurSel 10305;Unitsave=lbCurSel 10306;console_valid_mouvement = 0;nom_console_valid_mouvement = ""None"";var_console_valid_mouvement = """";[] execVM ""NORRN_spectate\start3d.sqf"";} else {hint ""3D Cam desactivated in vehicles"";}"; }; class unit_object_preview:boutons { idc = 10399; x = 0.300; y = 0.268; w = 0.055; h = 0.015; text = "Preview"; //action = "if ((var_console_valid_type == ""Statique"") or (var_console_valid_type == ""Groupe"")) then {} else {Typesave=lbCurSel 10305;Unitsave=lbCurSel 10306;Mouvsave=lbCurSel 10218;closeDialog 0;[] execVM ""computer\console\preview.sqf""};"; action = "if (player == (vehicle player)) then {Typesave=lbCurSel 10305;Unitsave=lbCurSel 10306;Mouvsave=lbCurSel 10218;closeDialog 0;[] execVM ""computer\console\preview.sqf""} else {hint ""3D Cam desactivated in vehicles"";};"; }; //action = "Typesave=lbCurSel 10305;Unitsave=lbCurSel 10306;Mouvsave=lbCurSel 10218;closeDialog 0;[] execVM ""computer\console\preview.sqf"";"; // -------------------------- Switch joueur / scripteur class switch_joueur_scripteur1:boutons { idc = 10234; x = 0.100; y = 0.050; w = 0.020; h = 0.015; text = "<"; action = "joueur_scripteur = joueur_scripteur-1 ; [0] execVM ""computer\console\boutons\console_joueur_scripteur.sqf"";"; }; class switch_joueur_scripteur2:boutons { idc = 10235; x = 0.120; y = 0.050; w = 0.050; h = 0.015; text = "joueur"; }; class switch_joueur_scripteur3:boutons { idc = 10236; x = 0.170; y = 0.050; w = 0.020; h = 0.015; text = ">"; action = "joueur_scripteur = joueur_scripteur+1 ; [0] execVM ""computer\console\boutons\console_joueur_scripteur.sqf"";"; }; // -------------------------------------------------------------- // ----------------------- Joueur = présentation // -------------------------------------------------------------- class joueur_object:RscText { idc=10237; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "====== Players ======================="; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.020; w = 0.56; h = 0.61; }; // Joueur = teleport et gps titres class joueur_telep_titre:RscText { idc=10238; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Teleport and equip players ------------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.035; w = 0.56; h = 0.61; }; // téléportation d'un joueur solo class joueursolo_telep_titre:RscText { idc=10294; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Teleport -----------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.055; w = 0.56; h = 0.61; }; class joueursolo_telep_code:boutons { idc = 10295; x = 0.240; y = 0.350; w = 0.060; h = 0.015; text = "joueure1"; }; class joueursolo_telep_nom1:boutons { idc = 10296; x = 0.310; y = 0.350; w = 0.020; h = 0.015; text = "<"; action = "joueursolo_telep = joueursolo_telep-1 ; [0] execVM ""computer\console\boutons\joueursolo_telep.sqf"";"; }; class joueursolo_telep_nom:boutons { idc = 10297; x = 0.330; y = 0.350; w = 0.100; h = 0.015; text = "[CTR]Grimm"; }; class joueursolo_telep_nom2:boutons { idc = 10298; x = 0.430; y = 0.350; w = 0.020; h = 0.015; text = ">"; action = "joueursolo_telep = joueursolo_telep+1 ; [1] execVM ""computer\console\boutons\joueursolo_telep.sqf"";"; }; class joueursolo_telep_valid:boutons { idc = 10299; x = 0.460; y = 0.350; w = 0.020; h = 0.015; text = "ok"; action = "[] execVM ""computer\console\joueursolo_map.sqf"";"; }; class joueur_gps_titre:RscText { idc=10239; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Activate / Deactivate GPS -------------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.075; w = 0.56; h = 0.61; }; class camera_titre:RscText { idc=10390; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Create camera -----------------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.095; w = 0.56; h = 0.61; }; class copter_titre:RscText { idc=10393; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Call chopper ----------------------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.115; w = 0.56; h = 0.61; }; class addbat:RscText { idc=10398; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Put enemy in buildings (30M radius) ---"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.138; w = 0.56; h = 0.61; }; class convoi:RscText { idc=10302; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Create a enemy convoy ---------------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.160; w = 0.56; h = 0.61; }; /* class captive:RscText { idc=10399; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Become invisible for enemy ------------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.182; w = 0.56; h = 0.61; }; */ // Teleport_valid class teleport_valid:boutons { idc = 10240; x = 0.460; y = 0.330; w = 0.020; h = 0.015; text = "ok"; action = "[] execVM ""computer\console\teleport_rt.sqf"";"; }; // gps_valid class gps_valid:boutons { idc = 10241; x = 0.390; y = 0.372; w = 0.050; h = 0.015; text = "Players"; action = "[] execVM ""computer\console\gps_rt.sqf"";"; }; class gps_eni_valid:boutons { idc = 10209; x = 0.450; y = 0.372; w = 0.030; h = 0.015; text = "All"; action = "if(gps_eni_valid) then {gps_eni_valid = false;} else {gps_eni_valid = true;};"; }; // camera_valid // camera_valid class camera_valid:boutons { idc = 10391; x = 0.430; //x = 0.370; y = 0.394; w = 0.050; h = 0.015; text = "Free"; //action = "[] execVM ""computer\console\camera_map.sqf"";"; action = "if (player == (vehicle player)) then {breakclic = breakclic + 1; [] execVM ""NORRN_spectate\start3d_freecam.sqf""} else {hint ""3D Cam desactivated in vehicles"";}"; }; /* class camera_valid2:boutons { idc = 10392; x = 0.430; y = 0.394; w = 0.050; h = 0.015; text = "Spectat"; action = "closeDialog 0;[] execVM ""NORRN_cam\init_NORRNCam.sqf"";"; }; */ // copter_valid class copter_valid1:boutons { idc = 10394; x = 0.430; y = 0.416; w = 0.050; h = 0.015; text = "Evac"; action = "breakclic = breakclic + 1; [""evac"",""evac"",""evac"",""evac""] execVM ""Computer\console\console_Heli.sqf"";"; }; /* class copter_valid2:boutons { idc = 10395; x = 0.320; y = 0.416; w = 0.100; h = 0.015; text = "Drop Weapons"; action = """weapons"" execVM ""Computer\console\console_Heli.sqf"";"; }; */ // gps_valid class addbat_valid:boutons { idc = 10301; x = 0.460; y = 0.438; w = 0.020; h = 0.015; text = "ok"; action = "breakclic = breakclic + 1;[] execVM ""Computer\console\console_IAinBat.sqf"";"; }; class convoi_valid:boutons { idc = 10303; x = 0.460; y = 0.460; w = 0.020; h = 0.015; text = "ok"; action = "[] execVM ""Computer\console\console_convoi.sqf"";"; }; /* class captive_valid:boutons { idc = 10397; x = 0.460; y = 0.482; w = 0.020; h = 0.015; text = "ok"; action = "[] execVM ""gonza\cli_setcaptive.sqf"";"; }; class copter_valid3:boutons { idc = 10396; x = 0.430; y = 0.416; w = 0.050; h = 0.015; text = "bombe"; action = """bombe"" execVM ""Computer\console\console_Heli.sqf"";"; }; */ // -------------------------------------------------------------- // ----------------------- Ligne de commande = présentation // -------------------------------------------------------------- class ligne_commande_pres:RscText { idc=10242; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "====== Command Line =================="; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.270; w = 0.56; h = 0.61; }; // ligne de commande class ligne_commande_cadre : RscEdit { idc = 10243; x = 0.100; y = 0.590; w = 0.350; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // Script : titre class script_titre:RscText { idc=10244; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Script :"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.320; w = 0.56; h = 0.61; }; // ----------------------- Script class scriptbouton1:boutons { idc = 10245; x = 0.180; y = 0.617; w = 0.020; h = 0.015; text = "<"; action = "script_commande = script_commande-1 ; [0] execVM ""computer\console\boutons\script_commande.sqf"";"; }; class scriptbouton2:boutons { idc = 10246; x = 0.200; y = 0.617; w = 0.100; h = 0.015; text = "Script"; }; class scriptbouton3:boutons { idc = 10247; x = 0.300; y = 0.617; w = 0.020; h = 0.015; text = ">"; action = "script_commande = script_commande+1 ; [0] execVM ""computer\console\boutons\script_commande.sqf"";"; }; //------------------------- valider class command_validtexte:RscText { idc=10248; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Valid--------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.350; w = 0.56; h = 0.61; }; class command_valid1:boutons { idc = 10249; x = 0.230; y = 0.645; w = 0.020; h = 0.015; text = "ok"; action = "[1] execVM ""computer\console\boutons\script_commande.sqf"";"; }; // ------------------------------------------------------------------------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------------------------------------------------------------------------- // ------------------------------------------ DECLENCHEURS ------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------------------------------------------------------------------------- // -------------------------------------présentation class decl_pres:RscText { idc=10250; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "====== Triggers ======================"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.380; w = 0.56; h = 0.61; }; // ---------------------------------- Ligne1 : axe, angle, ellipse... class l1_axea1:RscText { idc=10251; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "W---"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.400; w = 0.56; h = 0.61; }; class l1_axeA2 : RscEdit { idc = 10252; x = 0.145; y = 0.692; w = 0.045; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; class l1_axeB1:RscText { idc=10253; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "H---"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.195; y = 0.400; w = 0.56; h = 0.61; }; class l1_axeB2 : RscEdit { idc = 10254; x = 0.240; y = 0.692; w = 0.045; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; class l1_angle1:RscText { idc=10255; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Angle"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.290; y = 0.400; w = 0.56; h = 0.61; }; class l1_angle2 : RscEdit { idc = 10256; x = 0.340; y = 0.692; w = 0.045; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; class l1_ellipse1:boutons { idc = 10257; x = 0.395; y = 0.695; w = 0.020; h = 0.015; text = "<"; action = "l1_ellipse1 = l1_ellipse1-1 ; [] execVM ""computer\console\boutons\l1_ellipse1.sqf"";"; }; class l1_ellipse2:boutons { idc = 10258; x = 0.415; y = 0.695; w = 0.050; h = 0.015; text = "Ell."; }; class l1_ellipse3:boutons { idc = 10259; x = 0.465; y = 0.695; w = 0.020; h = 0.015; text = ">"; action = "l1_ellipse1 = l1_ellipse1+1 ; [] execVM ""computer\console\boutons\l1_ellipse1.sqf"";"; }; // ---------------------------------- Ligne2 : activation class l2_acti_text:RscText { idc=10260; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Activation"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.420; w = 0.56; h = 0.61; }; // Activé par qui class l2_qui_act1:boutons { idc = 10261; x = 0.200; y = 0.717; w = 0.020; h = 0.015; text = "<"; action = "l2_qui_act1 = l2_qui_act1-1 ; [] execVM ""computer\console\boutons\l2_qui_act1.sqf"";"; }; class l2_qui_act2:boutons { idc = 10262; x = 0.220; y = 0.717; w = 0.050; h = 0.015; text = "Ouest"; }; class l2_qui_act3:boutons { idc = 10263; x = 0.270; y = 0.717; w = 0.020; h = 0.015; text = ">"; action = "l2_qui_act1 = l2_qui_act1+1 ; [] execVM ""computer\console\boutons\l2_qui_act1.sqf"";"; }; // Combien de fois class l2_combien_act1:boutons { idc = 10264; x = 0.300; y = 0.717; w = 0.020; h = 0.015; text = "<"; action = "l2_combien_act1 = l2_combien_act1-1 ; [] execVM ""computer\console\boutons\l2_combien_act1.sqf"";"; }; class l2_combien_act2:boutons { idc = 10265; x = 0.320; y = 0.717; w = 0.050; h = 0.015; text = "1 fois"; }; class l2_combien_act3:boutons { idc = 10266; x = 0.370; y = 0.717; w = 0.020; h = 0.015; text = ">"; action = "l2_combien_act1 = l2_combien_act1+1 ; [] execVM ""computer\console\boutons\l2_combien_act1.sqf"";"; }; // Quoi class l2_quoi_act1:boutons { idc = 10267; x = 0.400; y = 0.717; w = 0.020; h = 0.015; text = "<"; action = "l2_quoi_act1 = l2_quoi_act1-1 ; [] execVM ""computer\console\boutons\l2_quoi_act1.sqf"";"; }; class l2_quoi_act2:boutons { idc = 10268; x = 0.420; y = 0.717; w = 0.050; h = 0.015; text = "Present"; }; class l2_quoi_act3:boutons { idc = 10269; x = 0.470; y = 0.717; w = 0.020; h = 0.015; text = ">"; action = "l2_quoi_act1 = l2_quoi_act1+1 ; [] execVM ""computer\console\boutons\l2_quoi_act1.sqf"";"; }; // ---------------------------------- Ligne3 : délai class l3_delai_act1:boutons { idc = 10270; x = 0.100; y = 0.737; w = 0.020; h = 0.015; text = "<"; action = "l3_delai_act1 = l3_delai_act1-1 ; [] execVM ""computer\console\boutons\l3_delai_act1.sqf"";"; }; class l3_delai_act2:boutons { idc = 10271; x = 0.120; y = 0.737; w = 0.050; h = 0.015; text = "Délai"; }; class l3_delai_act3:boutons { idc = 10272; x = 0.170; y = 0.737; w = 0.020; h = 0.015; text = ">"; action = "l3_delai_act1 = l3_delai_act1+1 ; [] execVM ""computer\console\boutons\l3_delai_act1.sqf"";"; }; // Min class l3_min_text:RscText { idc=10273; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Min"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.195; y = 0.440; w = 0.56; h = 0.61; }; class l3_min_cadre : RscEdit { idc = 10274; x = 0.230; y = 0.733; w = 0.045; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // Max class l3_max_text:RscText { idc=10275; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Max"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.280; y = 0.440; w = 0.56; h = 0.61; }; class l3_max_cadre : RscEdit { idc = 10276; x = 0.315; y = 0.733; w = 0.045; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // Moy class l3_moy_text:RscText { idc=10277; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Mid"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.365; y = 0.440; w = 0.56; h = 0.61; }; class l3_moy_cadre : RscEdit { idc = 10278; x = 0.400; y = 0.733; w = 0.045; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // ---------------------------------- Ligne4 : type, nom, texte class l4_type_act1:boutons { idc = 10279; x = 0.100; y = 0.757; w = 0.020; h = 0.015; text = "<"; action = "l4_type_act1 = l4_type_act1-1 ; [] execVM ""computer\console\boutons\l4_type_act1.sqf"";"; }; class l4_type_act2:boutons { idc = 10280; x = 0.120; y = 0.757; w = 0.050; h = 0.015; text = "Type"; }; class l4_type_act3:boutons { idc = 10281; x = 0.170; y = 0.757; w = 0.020; h = 0.015; text = ">"; action = "l4_type_act1 = l4_type_act1+1 ; [] execVM ""computer\console\boutons\l4_type_act1.sqf"";"; }; // Nom class l4_nom_text:RscText { idc=10282; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Nm."; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.195; y = 0.460; w = 0.56; h = 0.61; }; class l4_nom_cadre : RscEdit { idc = 10283; x = 0.230; y = 0.755; w = 0.060; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // texte class l4_texte_text:RscText { idc=10284; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Text"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.295; y = 0.460; w = 0.56; h = 0.61; }; class l4_texte_cadre : RscEdit { idc = 10285; x = 0.350; y = 0.755; w = 0.060; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // ---------------------------------- Ligne5 : condition class l5_condition_text:RscText { idc=10286; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Condition"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.480; w = 0.56; h = 0.61; }; class l5_condition_cadre : RscEdit { idc = 10287; x = 0.200; y = 0.775; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // ---------------------------------- Ligne6 : activation class l6_activation_text:RscText { idc=10288; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Activation"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.500; w = 0.56; h = 0.61; }; class l6_activation_cadre : RscEdit { idc = 10289; x = 0.200; y = 0.795; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // ---------------------------------- Ligne6 : desact class l7_desact_text:RscText { idc=10290; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Deactivat."; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; y = 0.520; w = 0.56; h = 0.61; }; class l7_desact_cadre : RscEdit { idc = 10291; x = 0.200; y = 0.815; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; }; // ---------------------------------- Ligne7 : valid class l7_validtrig_text:RscText { idc=10292; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Valid--------"; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.100; // y = 0.410; y = 0.540; w = 0.56; h = 0.61; }; class l7_validtrig_valid1:boutons { idc = 10293; x = 0.230; y = 0.837; // y = 0.707; w = 0.020; h = 0.015; text = "ok"; action = "[] execVM ""computer\console\trigger_map.sqf"";"; }; // ---------------------------------------------------------fin des boutons /* class Cmd:RscText { idc=103; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Commande : "; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.1; y = 0.4; w = 0.56; h = 0.61; }; class CmdEdit : RscEdit { idc = 104; x = 0.1; y = 0.72; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; onKeyUp="if ((_this select 1==28) or (_this select 1==156)) then {[format [""%1"",ctrlText 104]] execVM ""Computer\cpu_requests.sqf""}"; }; class Cmd2:RscText2 { idc=8001; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = "Variable (si nécessaire) : "; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.1; y = 0.48; w = 0.56; h = 0.61; }; class CmdEdit2 : RscEdit2 { idc = 8000; x = 0.1; y = 0.80; w = 0.2; h = 0.02; colorText[] = {0.9,0.9,0.9, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; onKeyUp="if ((_this select 1==28) or (_this select 1==156)) then {[format [""%1"",ctrlText 8000]] execVM ""Computer\cpu_variables.sqf""}"; }; */ class Map: VtsMapControl { idc = 105; colorBackground[] = {1,1,1,0.75}; colorSea[] = {0.56,0.8,0.98,0}; x = 0.5; y = 0.12; w = 0.45; h = 0.63; default = true; }; class ClickMap:RscText { idc=200; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = ""; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.5; y = 0.52; w = 0.56; h = 0.61; }; class TimeCPU:RscText { idc=110; style = ST_LEFT; colorText[] = {1, 1, 0, 1}; text = ""; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.1; y = 0.55; w = 0.80; h = 0.61; }; /* class Likely : RscText { idc = 106; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.018; x = 0.51; y = -0.2; w = 0.56; h = 0.61; text = "COucou "; }; class ListOfSources : RscListBox { idc = 107; x = 0.5; y = 0.12; w = 0.4; h = 0.08; soundselect[]={}; rowHeight = 0.02; onLBSelChanged="m=[] spawn Map_Anim"; }; */ class Chopper : RscStructuredText { idc = 108; font = LucidaConsoleB; x = 0.55; y = 0.67; w = 0.6; h = 1; default = true; colorText[] = {0.9,0.9,0.9, 1}; text = ""; }; class Harrier : RscStructuredText { idc = 109; font = LucidaConsoleB; x = 0.55; y = 0.73; w = 0.6; h = 1; default = true; colorText[] = {0.9,0.9,0.9, 1}; text = ""; }; /* class Enter : RscActiveText { idc = 102; style = ST_PICTURE + ST_KEEP_ASPECT_RATIO; x = 0.3; y = 0.57; w = 0.2; h = 0.05; sizeEx = 0.015; color[]= {0.9,0.9,0.9,1}; colorActive[] = {1, .5, .5,1}; text = "Computer\enter.paa"; action = "((finddisplay 3) displayCtrl 105) ctrlshow false;((finddisplay 3) displayCtrl 107) ctrlshow true"; }; class TVDay { x = -0.2; y = -0.12; w = 1.4; h = 1.2; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "\Campaigns\ca\Missions\x02BreakingNews.Sara\tv_screen_ca.paa"; }; */ }; };  /*----------------------------------------------------------- TimeToString function -=- by snYpir Returns a 24-hour time as a string from a decimal. This is meant to be used with the 'daytime' command, for example if 'daytime' was 7.36, '[daytime] call TimeToString' would return 07:21:36 No rounding of the time is done - ie time is returned as per a clock The second array element passed in is the return time format. It can be: "HH" - Hour "HH:MM" - Hour:Minute "HH:MM:SS" - Hour:Minute:Seconds "HH:MM:SS:MM" - Hour:Minute:Seconds:Milliseconds "ARRAY" - [Hour,Minute,Seconds,Milliseconds] If the second parameter is not passed in, it defaults to "HH:MM:SS" Called with: [,] call TimeToString Thanks to CoC mod for the inspiration and some code! ------------------------------------------------------------*/ private ["_in", "_format", "_min", "_hour", "_sec", "_msec", "_return"]; _in = _this select 0; if (count _this > 1) then { _format = _this select 1 } else { _format = "HH:MM:SS" }; _min = _in mod 1; _hour = _in - _min; _sec = (60 * _min) mod 1; _msec = (60 * _sec) mod 1; if (_hour <= 9) then {_hour = format ["0%1", _hour]} else {_hour = format ["%1", _hour]}; _min = (60 * _min) - ((60 * _min) mod 1); if (_min <= 9) then {_min = format ["0%1", _min]} else {_min = format ["%1", _min]}; _sec = (60 * _sec) - ((60 * _sec) mod 1); if (_sec <= 9) then {_sec = format ["0%1", _sec]} else {_sec = format ["%1", _sec]}; _msec = (60 * _msec) - ((60 * _msec) mod 1); if (_msec <= 9) then {_msec = format ["0%1", _msec]} else {_msec = format ["%1", _msec]}; if ( _format == "HH" ) then { _return = format["%1",_hour] }; if ( _format == "HH:MM" ) then { _return = format["%1:%2",_hour,_min] }; if ( _format == "HH:MM:SS" ) then { _return = format["Summary : ENI area %4 m/side | %5 ENI groups | AI mode %6 | Rain %7 | Fog %8 | %1:%2:%3 ",_hour,_min,_sec,concentration_affiche,grps_affiche,typeia_affiche,pluie_affiche,brume_affiche] }; if ( _format == "HH:MM:SS:MM" ) then { _return = format["%1:%2:%3:%4",_hour,_min,_sec,_msec] }; if ( _format == "ARRAY" ) then { _return = [_hour,_min,_sec,_msec] }; _return if (local serveur) then { // ---------- code executé en tout premier appel radio (unique) if (nouveau_convoi) then { // Spawn des véhicules, des hommes insérés if (blufor_vts) then { [] spawn vts2_convoilog_blufor ; }; if (opfor_vts) then { [] spawn vts2_convoilog_opfor ; }; if (inde_vts) then { [] spawn vts2_convoilog_inde ; }; // Variables de lancement au spawn du convoi nouveau_convoi = false ; publicvariable "nouveau_convoi" ; convoi_vivant = true ; publicvariable "convoi_vivant" ; // Marqueur du convoi markerobj_convoi = createMarker["marqueur_convoi",position (leader conv)] ; markerobj_convoi setMarkerShape "ICON" ; "marqueur_convoi" setMarkerType "Dot" ; "marqueur_convoi" setMarkerText "Logistics Convoy" ; "marqueur_convoi" setMarkerColor "ColorBlue"; }; // ---------------- code executé à chaque appel radio if (blufor_vts) then { conv SetSpeedMode "FULL" ; conv setBehaviour "CARELESS" ; conv setFormation "COLUMN" ; conv move position (leader gw) ; conv SetSpeedMode "FULL" ; conv setBehaviour "CARELESS" ; conv setFormation "COLUMN" ; _convoipasarrive = true ; _convoi_en_route = true ; convoispeechdepart = true ; publicvariable "convoispeechdepart" ; sleep 5 ; convoispeechdepart = false ; publicvariable "convoispeechdepart" ; convoispeecharrive = false ; publicvariable "convoispeecharrive" ; // on définit la condition de vie du convoi : verification_convoi_vivant = { if (((!alive convoyeur1) or (!alive vw12)) and ((!alive convoyeur2) or (!alive vw13)) and ((!alive convoyeur3) or (!alive vw14))) then { deletemarker "marqueur_convoi"; convoi_vivant = false ; }; }; // ------- tant que convoi vivant : marqueur mis à jour, tests de distance sur le point d'arrivée while {((convoi_vivant) and (_convoi_en_route))} do { [] spawn verification_convoi_vivant ; if (convoi_vivant) then { "marqueur_convoi" setMarkerPos position (leader conv) ; }; while {((_convoipasarrive) and (convoi_vivant))} do { [] spawn verification_convoi_vivant ; "marqueur_convoi" setMarkerPos position (leader conv) ; if ((((leader conv) distance (leader gw))<100) and (convoi_vivant)) then { _convoipasarrive = false ; _convoi_en_route = false ; convoispeecharrive = true ; publicvariable "convoispeecharrive" ; conv SetSpeedMode "NORMAL" ; } ; sleep 1; }; sleep 1; }; }; if (opfor_vts) then { conv SetSpeedMode "FULL" ; conv setBehaviour "CARELESS" ; conv setFormation "COLUMN" ; conv move position (leader gpe) ; conv SetSpeedMode "FULL" ; conv setBehaviour "CARELESS" ; conv setFormation "COLUMN" ; _convoipasarrive = true ; _convoi_en_route = true ; convoispeechdepart = true ; publicvariable "convoispeechdepart" ; sleep 5 ; convoispeechdepart = false ; publicvariable "convoispeechdepart" ; convoispeecharrive = false ; publicvariable "convoispeecharrive" ; // on définit la condition de vie du convoi : verification_convoi_vivant = { if (((!alive convoyeur1) or (!alive vw12)) and ((!alive convoyeur2) or (!alive vw13)) and ((!alive convoyeur3) or (!alive vw14))) then { deletemarker "marqueur_convoi"; convoi_vivant = false ; }; }; // ------- tant que convoi vivant : marqueur mis à jour, tests de distance sur le point d'arrivée while {((convoi_vivant) and (_convoi_en_route))} do { [] spawn verification_convoi_vivant ; if (convoi_vivant) then { "marqueur_convoi" setMarkerPos position (leader conv) ; }; while {((_convoipasarrive) and (convoi_vivant))} do { [] spawn verification_convoi_vivant ; "marqueur_convoi" setMarkerPos position (leader conv) ; if ((((leader conv) distance (leader gpe))<100) and (convoi_vivant)) then { _convoipasarrive = false ; _convoi_en_route = false ; convoispeecharrive = true ; publicvariable "convoispeecharrive" ; conv SetSpeedMode "NORMAL" ; } ; sleep 1; }; sleep 1; }; }; if (inde_vts) then { conv SetSpeedMode "FULL" ; conv setBehaviour "CARELESS" ; conv setFormation "COLUMN" ; conv move position (leader gpi) ; conv SetSpeedMode "FULL" ; conv setBehaviour "CARELESS" ; conv setFormation "COLUMN" ; _convoipasarrive = true ; _convoi_en_route = true ; convoispeechdepart = true ; publicvariable "convoispeechdepart" ; sleep 5 ; convoispeechdepart = false ; publicvariable "convoispeechdepart" ; convoispeecharrive = false ; publicvariable "convoispeecharrive" ; // on définit la condition de vie du convoi : verification_convoi_vivant = { if (((!alive convoyeur1) or (!alive vw12)) and ((!alive convoyeur2) or (!alive vw13)) and ((!alive convoyeur3) or (!alive vw14))) then { deletemarker "marqueur_convoi"; convoi_vivant = false ; }; }; // ------- tant que convoi vivant : marqueur mis à jour, tests de distance sur le point d'arrivée while {((convoi_vivant) and (_convoi_en_route))} do { [] spawn verification_convoi_vivant ; if (convoi_vivant) then { "marqueur_convoi" setMarkerPos position (leader conv) ; }; while {((_convoipasarrive) and (convoi_vivant))} do { [] spawn verification_convoi_vivant ; "marqueur_convoi" setMarkerPos position (leader conv) ; if ((((leader conv) distance (leader gpi))<100) and (convoi_vivant)) then { _convoipasarrive = false ; _convoi_en_route = false ; convoispeecharrive = true ; publicvariable "convoispeecharrive" ; conv SetSpeedMode "NORMAL" ; } ; sleep 1; }; sleep 1; }; }; } ; If (true) ExitWith {}OnLoadMission = "Virtual TrainingSpace 3"; OnLoadMissionTime = FALSE; // description.ext settings for revive /////////////////////////////////////////////////////////////////////////////////////////// respawn = "BASE"; respawndelay = 4; disabledAI = 1; class RscPicture { type=0; idc=-1; style=2; colorBackground[]={0,0,0,0}; colorText[]={1,1,1,1}; font="BitStream"; size=3; }; // Include revive script resources //#include "revive_sqf\dialogs\config.cpp" //#include "revive_sqf\dialogs\VTSconsol.hpp" #include "revive_sqf\dialogs\define.hpp" #include "revive_sqf\dialogs\rev_cam_dialog.hpp" #include "revive_sqf\dialogs\respawn_button_1.hpp" #include "revive_sqf\dialogs\respawn_button_2.hpp" #include "revive_sqf\dialogs\respawn_button_3.hpp" #include "revive_sqf\dialogs\respawn_button_4.hpp" #include "revive_sqf\dialogs\respawn_button_1b.hpp" #include "revive_sqf\dialogs\respawn_button_1c.hpp" #include "revive_sqf\dialogs\respawn_button_2b.hpp" #include "revive_sqf\dialogs\respawn_button_3b.hpp" #include "revive_sqf\dialogs\respawn_button_4b.hpp" #include "revive_sqf\dialogs\respawn_button_1map.hpp" #include "revive_sqf\dialogs\respawn_button_2map.hpp" #include "revive_sqf\dialogs\respawn_button_3map.hpp" #include "revive_sqf\dialogs\respawn_button_4map.hpp" #include "revive_sqf\dialogs\OK_map.hpp" #include "revive_sqf\dialogs\dead_cam_dialog.hpp" #include "NORRN_spectate\VTSspectate_cam_dialog.hpp" // Include spectating script resource #include "spect\spectating.hpp" /////////////////////////////////////////////////////////////////////////////////////////// title(paramsArray select 1) = "Number of Revives:"; values(paramsArray select 1)[] = {0,1000,20,10,6,3,1}; defValue(paramsArray select 1) = 3; texts(paramsArray select 1)[] = {"Standard respawn","Infinite - Revive-Cadet","20 - Revive-Easy ","10 - Revive-Normal","6 - Revive-Hard","3 - Revive-Extreme","1 - Revive-Crazy"}; /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// title(paramsArray select 0) = "Weapons in the Ammobox:"; //values(paramsArray select 0)[] = {0,1,2,3,4,5,6}; values(paramsArray select 0)[] = {0,1,2,3,4,5}; defValue(paramsArray select 0) = 0; texts(paramsArray select 0)[] = {"Full Weapons","Silent/RPG","Silent/No RPG","No RPG","No Scop","No Scop/No RPG"}; //texts(paramsArray select 0)[] = {"Full weapons","Light weapons","Silent/RPG","Silent/RPG","No RPG","No scop","Simple weapons"}; /////////////////////////////////////////////////////////////////////////////////////////// class Header { gameType = COOP; //DM, Team, Coop, CTI minPlayers = 1; //min # of players the mission supports maxPlayers = 25; //Max # of players the mission supports playerCountMultipleOf = 1; //OFP:Elite option. }; class CfgRadio { sounds[] = {}; class bipavion { name = ""; sound[] = {"\sound\bipavion.ogg", db 0, 1.0}; title = "PILOT : Dudes, we’re approaching the drop zone ; get ready and… good luck !"; }; class arty1 { name = ""; sound[] = {"\sound\arty1.ogg", db 0, 1.0}; title = "KILO1 : Fire for effect coordinates recorded. First impact in 30 seconds. Over."; }; class arty2 { name = ""; sound[] = {"\sound\arty2.ogg", db 0, 1.0}; title = "KILO1 : Negative. Adjusting. Repeat your last in a few minutes. Over and out."; }; class arty3 { name = ""; sound[] = {"\sound\arty3.ogg", db 0, 1.0}; title = "KILO1 : Fire for effect over. Adjusting. Out."; }; class arty4 { name = ""; sound[] = {"\sound\arty4.ogg", db 0, 1.0}; title = "KILO1 : Fire One coordinates recorded. First impact in 30 seconds. Over."; }; class arty5 { name = ""; sound[] = {"\sound\arty5.ogg", db 0, 1.0}; title = "KILO1 : Artillery ready. Over."; }; class convoi_log1 { name = ""; sound[] = {"\sound\convoi_log1.ogg", db 0, 1.0}; title = "Logistics convoy : Coordinates recorded. We’re leaving immediately. Over and out."; }; class convoi_log2 { name = ""; sound[] = {"\sound\convoi_log2.ogg", db 0, 1.0}; title = "Logistics Convoy : Arriving on your position. Over."; }; }; class RscTitles { titles[]={"img", "saut", "saut",}; class img { idd=-1; movingEnable=0; duration=5; fadein=2; fadeout = 1; name="img"; controls[]={"GR"}; class GR : RscPicture { style=48; text="title.jpg"; sizeEx = 0.04; x=0.25; y=0.3; w=0.5; h=0.4; }; }; class saut { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "saut"; controls[] = {saut}; class saut { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "saut.paa"; }; }; }; /* class RscTitles { class Logo { idd = -1; movingEnable = false; duration = 6; fadein = 1; fadeout = 1; name = "Logo"; controls[] = {Logo}; class Logo { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; //text = "fond.paa"; text = "title.jpg"; }; }; class saut { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "saut"; controls[] = {saut}; class saut { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "saut.paa"; }; }; }; */ /* class crane { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "crane"; controls[] = {crane}; class crane { idc = -1; type = 0; style = 48; colorText[ ]={ 1,1,1,1 }; colorBackground[ ]={ 0.4,0.4,0.4,1 }; font = "Zeppelin32"; sizeEx = 0.01; lineSpacing = 0; x = 0.7; y = 0.1; w = 0.3; h = 0.8; border = 1; borderSize = 10; text = "crane.paa"; }; }; class saut { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "saut"; controls[] = {saut}; class saut { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "saut.paa"; }; }; }; class CfgMusic { tracks[]={}; class hemo { name = ""; sound[] = {"\music\hemo.ogg", db+20, 1.0}; }; class Intro { name = ""; sound[] = {"\music\Intromus.ogg", db+10, 1.0}; }; class outro { name = ""; sound[] = {"\music\outromus.ogg", db+10, 1.0}; }; }; */ #include "common.hpp" //#include "AAHALO\mouseTracker.hpp" //#include "Satellite\rscSatellite.hpp" #include "Computer\rscComputer.hpp" crea_base = true ; publicvariable "crea_base" ; If (true) ExitWith {}sleep 10; _this allowDamage true; hint "OK";call compile format ["hint ""var_trigg = %1 ;\nobj sec = %2"";",(var_trigg),(somme_secondaires)]; If (true) ExitWith {}if (local serveur) then { _temps_mouv = 10; while {true} do { sleep 1 ; if (alerte) then { attitude = "aware" ; publicvariable "attitude"; attitude_civils = "aware" ; publicvariable "attitude_civils"; formation_deplacement = "line"; publicvariable "formation_deplacement"; vitesse = "normal"; publicvariable "vitesse"; _random = round (random nbre_ge) ; if (_random <= 2) then {_random = 2} ; call compile format [" if ((count units ge%1) > 3) then { ge%1 move position cible; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setFormation ""LINE""; ge%1 setBehaviour ""AWARE""; } ",_random]; while {alerte} do { call compile format [" if ((count units ge%1) > 1) then { ge%1 move position cible; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setFormation ""LINE""; ge%1 setBehaviour ""AWARE""; } ",_random]; sleep 30 ; }; }; sleep _temps_mouv ; }; }; If (true) ExitWith {}OnLoadMission = "Virtual TrainingSpace 3"; OnLoadMissionTime = FALSE; // description.ext settings for revive /////////////////////////////////////////////////////////////////////////////////////////// respawn = "BASE"; respawndelay = 4; disabledAI = 1; class RscPicture { type=0; idc=-1; style=2; colorBackground[]={0,0,0,0}; colorText[]={1,1,1,1}; font="BitStream"; size=3; }; // Include revive script resources //#include "revive_sqf\dialogs\config.cpp" //#include "revive_sqf\dialogs\VTSconsol.hpp" #include "revive_sqf\dialogs\define.hpp" #include "revive_sqf\dialogs\rev_cam_dialog.hpp" #include "revive_sqf\dialogs\respawn_button_1.hpp" #include "revive_sqf\dialogs\respawn_button_2.hpp" #include "revive_sqf\dialogs\respawn_button_3.hpp" #include "revive_sqf\dialogs\respawn_button_4.hpp" #include "revive_sqf\dialogs\respawn_button_1b.hpp" #include "revive_sqf\dialogs\respawn_button_1c.hpp" #include "revive_sqf\dialogs\respawn_button_2b.hpp" #include "revive_sqf\dialogs\respawn_button_3b.hpp" #include "revive_sqf\dialogs\respawn_button_4b.hpp" #include "revive_sqf\dialogs\respawn_button_1map.hpp" #include "revive_sqf\dialogs\respawn_button_2map.hpp" #include "revive_sqf\dialogs\respawn_button_3map.hpp" #include "revive_sqf\dialogs\respawn_button_4map.hpp" #include "revive_sqf\dialogs\OK_map.hpp" #include "revive_sqf\dialogs\dead_cam_dialog.hpp" #include "NORRN_spectate\VTSspectate_cam_dialog.hpp" // Include spectating script resource #include "spect\spectating.hpp" class Params { class WeaponsType /* {//paramsArray[0] title= "Weapons in the Ammobox:"; texts[]= {"Full Weapons","Silent/RPG","Silent/No RPG","No RPG","No Scop","No Scop/No RPG"}; values[]= {0,1,2,3,4,5}; default= 0; }; */ {//paramsArray[0] title= "Weapons in the Ammobox:"; texts[]= {"Disabled for the moment"}; values[]= {0}; default= 0; }; class ReviveNb {//paramsArray[1] title= "Number of Revives:"; texts[]= {"Standard respawn","Infinite - Revive-Cadet","20 - Revive-Easy ","10 - Revive-Normal","6 - Revive-Hard","3 - Revive-Extreme","1 - Revive-Crazy"}; values[]= {0,1000,20,10,6,3,1}; default= 3; }; class ViewDist {//paramsArray[2] title= "view distance:"; texts[]= {"1000m","1500m","2000m","2500m","3000m","3500m","4000m","4500m","5000m","6000m","7000m","8000m","10000m"}; values[]= {1000,1500,2000,2500,3000,3500,4000,4500,5000,6000,7000,8000,10000}; default= 1500; }; class ShowGrass {//paramsArray[3] title= "show grass"; texts[]= {"full","normal","no grass"}; values[]= {6.25,25,50}; default= 25; }; }; class Header { gameType = COOP; //DM, Team, Coop, CTI minPlayers = 1; //min # of players the mission supports maxPlayers = 25; //Max # of players the mission supports playerCountMultipleOf = 1; //OFP:Elite option. }; class CfgRadio { sounds[] = {}; class bipavion { name = ""; sound[] = {"\sound\bipavion.ogg", db 0, 1.0}; title = "PILOT : Dudes, we’re approaching the drop zone ; get ready and… good luck !"; }; class arty1 { name = ""; sound[] = {"\sound\arty1.ogg", db 0, 1.0}; title = "KILO1 : Fire for effect coordinates recorded. First impact in 30 seconds. Over."; }; class arty2 { name = ""; sound[] = {"\sound\arty2.ogg", db 0, 1.0}; title = "KILO1 : Negative. Adjusting. Repeat your last in a few minutes. Over and out."; }; class arty3 { name = ""; sound[] = {"\sound\arty3.ogg", db 0, 1.0}; title = "KILO1 : Fire for effect over. Adjusting. Out."; }; class arty4 { name = ""; sound[] = {"\sound\arty4.ogg", db 0, 1.0}; title = "KILO1 : Fire One coordinates recorded. First impact in 30 seconds. Over."; }; class arty5 { name = ""; sound[] = {"\sound\arty5.ogg", db 0, 1.0}; title = "KILO1 : Artillery ready. Over."; }; class convoi_log1 { name = ""; sound[] = {"\sound\convoi_log1.ogg", db 0, 1.0}; title = "Logistics convoy : Coordinates recorded. We’re leaving immediately. Over and out."; }; class convoi_log2 { name = ""; sound[] = {"\sound\convoi_log2.ogg", db 0, 1.0}; title = "Logistics Convoy : Arriving on your position. Over."; }; }; class RscTitles { titles[]={"img", "saut", "saut",}; class img { idd=-1; movingEnable=0; duration=5; fadein=2; fadeout = 1; name="img"; controls[]={"GR"}; class GR : RscPicture { style=48; text="title.jpg"; sizeEx = 0.04; x=0.25; y=0.3; w=0.5; h=0.4; }; }; class saut { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "saut"; controls[] = {saut}; class saut { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "saut.paa"; }; }; }; /* class RscTitles { class Logo { idd = -1; movingEnable = false; duration = 6; fadein = 1; fadeout = 1; name = "Logo"; controls[] = {Logo}; class Logo { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; //text = "fond.paa"; text = "title.jpg"; }; }; class saut { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "saut"; controls[] = {saut}; class saut { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "saut.paa"; }; }; }; */ /* class crane { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "crane"; controls[] = {crane}; class crane { idc = -1; type = 0; style = 48; colorText[ ]={ 1,1,1,1 }; colorBackground[ ]={ 0.4,0.4,0.4,1 }; font = "Zeppelin32"; sizeEx = 0.01; lineSpacing = 0; x = 0.7; y = 0.1; w = 0.3; h = 0.8; border = 1; borderSize = 10; text = "crane.paa"; }; }; class saut { idd = -1; movingEnable = false; duration = 6; fadein = 0; fadeout = 1; name = "saut"; controls[] = {saut}; class saut { x = 0; y = 0; w = 1; h = 1; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "saut.paa"; }; }; }; class CfgMusic { tracks[]={}; class hemo { name = ""; sound[] = {"\music\hemo.ogg", db+20, 1.0}; }; class Intro { name = ""; sound[] = {"\music\Intromus.ogg", db+10, 1.0}; }; class outro { name = ""; sound[] = {"\music\outromus.ogg", db+10, 1.0}; }; }; */ #include "common.hpp" //#include "AAHALO\mouseTracker.hpp" //#include "Satellite\rscSatellite.hpp" #include "Computer\rscComputer.hpp" fin_mission = true ; publicvariable "fin_mission"; If (true) ExitWith {}// le serveur accelere le temps go_acctime = false; //if (local serveur) then //{ while {true} do { sleep 0.1; // ********** accelerate time ************** if (go_acctime) then { skiptime 0.00333 }; }; //}; //while {alive _this} do //{ clearweaponcargo _this; clearmagazinecargo _this; //BIS WEAPONS// switch ((paramsArray select 0)) do { //Silent/RPG case 1: { // _this addWeaponCargo ["AK_107_kobra",20]; // _this addWeaponCargo ["AK_107_GL_kobra",20]; // _this addWeaponCargo ["AK_107_GL_pso",20]; // _this addWeaponCargo ["AK_107_pso",20]; // _this addWeaponCargo ["AK_74",20]; // _this addWeaponCargo ["AK_74_GL",20]; // _this addWeaponCargo ["AK_47_M",20]; // _this addWeaponCargo ["AK_47_S",20]; // _this addWeaponCargo ["AKS_74_kobra",20]; // _this addWeaponCargo ["AKS_74_pso",20]; // _this addWeaponCargo ["AKS_74_U",20]; // _this addWeaponCargo ["AKS_74_UN_kobra",20]; // _this addWeaponCargo ["Bizon",20]; _this addWeaponCargo ["bizon_silenced",20]; // _this addWeaponCargo ["G36a",20]; // _this addWeaponCargo ["G36C",20]; _this addWeaponCargo ["G36_C_SD_eotech",20]; // _this addWeaponCargo ["G36K",20]; // _this addWeaponCargo ["M1014",20]; // _this addWeaponCargo ["M16A2",20]; // _this addWeaponCargo ["M16A2GL",20]; // _this addWeaponCargo ["M16A4",20]; // _this addWeaponCargo ["M16A4_GL",20]; // _this addWeaponCargo ["M16A4_ACG_GL",20]; // _this addWeaponCargo ["M16A4_ACG",20]; // _this addWeaponCargo ["M4A1",20]; // _this addWeaponCargo ["M4A1_HWS_GL",20]; // _this addWeaponCargo ["M4A1_HWS_GL_camo",20]; _this addWeaponCargo ["M4A1_HWS_GL_SD_Camo",20]; // _this addWeaponCargo ["M4A1_RCO_GL",20]; // _this addWeaponCargo ["M4A1_Aim",20]; // _this addWeaponCargo ["M4A1_Aim_camo",20]; _this addWeaponCargo ["M4A1_AIM_SD_camo",20]; // _this addWeaponCargo ["MP5A5",20]; _this addWeaponCargo ["MP5SD",20]; // _this addWeaponCargo ["Saiga12K",20]; // _this addWeaponCargo ["VSS_vintorez",20]; // _this addWeaponCargo ["M8_carbine",20]; // _this addWeaponCargo ["M8_carbineGL",20]; // _this addWeaponCargo ["M8_compact",20]; // _this addWeaponCargo ["MG36",20]; // _this addWeaponCargo ["Mk_48",20]; // _this addWeaponCargo ["M240",20]; // _this addWeaponCargo ["M249",20]; // _this addWeaponCargo ["Pecheneg",20]; // _this addWeaponCargo ["PK",20]; // _this addWeaponCargo ["RPK_74",20]; // _this addWeaponCargo ["M8_SAW",20]; // _this addWeaponCargo ["Huntingrifle",20]; // _this addWeaponCargo ["DMR",20]; // _this addWeaponCargo ["KSVK",20]; // _this addWeaponCargo ["M107",20]; // _this addWeaponCargo ["M24",20]; // _this addWeaponCargo ["M40A3",20]; // _this addWeaponCargo ["M4SPR",20]; // _this addWeaponCargo ["SVD",20]; // _this addWeaponCargo ["SVD_CAMO",20]; // _this addWeaponCargo ["M8_sharpshooter",20]; // _this addWeaponCargo ["Colt1911",20]; // _this addWeaponCargo ["M9",20]; _this addWeaponCargo ["M9SD",20]; // _this addWeaponCargo ["Makarov",20]; _this addWeaponCargo ["MakarovSD",20]; _this addWeaponCargo ["Igla",20]; _this addWeaponCargo ["Javelin",20]; _this addWeaponCargo ["M136",20]; _this addWeaponCargo ["MetisLauncher",20]; _this addWeaponCargo ["RPG18",20]; _this addWeaponCargo ["RPG7V",20]; _this addWeaponCargo ["SMAW",20]; _this addWeaponCargo ["Stinger",20]; _this addWeaponCargo ["Strela",20]; _this addWeaponCargo ["Binocular",20]; _this addWeaponCargo ["NVGoggles",20]; _this addWeaponCargo ["Laserdesignator",10]; }; //Silent/No RPG case 2: { // _this addWeaponCargo ["AK_107_kobra",20]; // _this addWeaponCargo ["AK_107_GL_kobra",20]; // _this addWeaponCargo ["AK_107_GL_pso",20]; // _this addWeaponCargo ["AK_107_pso",20]; // _this addWeaponCargo ["AK_74",20]; // _this addWeaponCargo ["AK_74_GL",20]; // _this addWeaponCargo ["AK_47_M",20]; // _this addWeaponCargo ["AK_47_S",20]; // _this addWeaponCargo ["AKS_74_kobra",20]; // _this addWeaponCargo ["AKS_74_pso",20]; // _this addWeaponCargo ["AKS_74_U",20]; // _this addWeaponCargo ["AKS_74_UN_kobra",20]; // _this addWeaponCargo ["Bizon",20]; _this addWeaponCargo ["bizon_silenced",20]; // _this addWeaponCargo ["G36a",20]; // _this addWeaponCargo ["G36C",20]; _this addWeaponCargo ["G36_C_SD_eotech",20]; // _this addWeaponCargo ["G36K",20]; // _this addWeaponCargo ["M1014",20]; // _this addWeaponCargo ["M16A2",20]; // _this addWeaponCargo ["M16A2GL",20]; // _this addWeaponCargo ["M16A4",20]; // _this addWeaponCargo ["M16A4_GL",20]; // _this addWeaponCargo ["M16A4_ACG_GL",20]; // _this addWeaponCargo ["M16A4_ACG",20]; // _this addWeaponCargo ["M4A1",20]; // _this addWeaponCargo ["M4A1_HWS_GL",20]; // _this addWeaponCargo ["M4A1_HWS_GL_camo",20]; _this addWeaponCargo ["M4A1_HWS_GL_SD_Camo",20]; // _this addWeaponCargo ["M4A1_RCO_GL",20]; // _this addWeaponCargo ["M4A1_Aim",20]; // _this addWeaponCargo ["M4A1_Aim_camo",20]; _this addWeaponCargo ["M4A1_AIM_SD_camo",20]; // _this addWeaponCargo ["MP5A5",20]; _this addWeaponCargo ["MP5SD",20]; // _this addWeaponCargo ["Saiga12K",20]; // _this addWeaponCargo ["VSS_vintorez",20]; // _this addWeaponCargo ["M8_carbine",20]; // _this addWeaponCargo ["M8_carbineGL",20]; // _this addWeaponCargo ["M8_compact",20]; // _this addWeaponCargo ["MG36",20]; // _this addWeaponCargo ["Mk_48",20]; // _this addWeaponCargo ["M240",20]; // _this addWeaponCargo ["M249",20]; // _this addWeaponCargo ["Pecheneg",20]; // _this addWeaponCargo ["PK",20]; // _this addWeaponCargo ["RPK_74",20]; // _this addWeaponCargo ["M8_SAW",20]; // _this addWeaponCargo ["Huntingrifle",20]; // _this addWeaponCargo ["DMR",20]; // _this addWeaponCargo ["KSVK",20]; // _this addWeaponCargo ["M107",20]; // _this addWeaponCargo ["M24",20]; // _this addWeaponCargo ["M40A3",20]; // _this addWeaponCargo ["M4SPR",20]; // _this addWeaponCargo ["SVD",20]; // _this addWeaponCargo ["SVD_CAMO",20]; // _this addWeaponCargo ["M8_sharpshooter",20]; // _this addWeaponCargo ["Colt1911",20]; // _this addWeaponCargo ["M9",20]; _this addWeaponCargo ["M9SD",20]; // _this addWeaponCargo ["Makarov",20]; _this addWeaponCargo ["MakarovSD",20]; // _this addWeaponCargo ["Igla",20]; // _this addWeaponCargo ["Javelin",20]; // _this addWeaponCargo ["M136",20]; // _this addWeaponCargo ["MetisLauncher",20]; // _this addWeaponCargo ["RPG18",20]; // _this addWeaponCargo ["RPG7V",20]; // _this addWeaponCargo ["SMAW",20]; // _this addWeaponCargo ["Stinger",20]; // _this addWeaponCargo ["Strela",20]; _this addWeaponCargo ["Binocular",20]; _this addWeaponCargo ["NVGoggles",20]; _this addWeaponCargo ["Laserdesignator",10]; }; //No RPG case 3: { _this addWeaponCargo ["AK_107_kobra",20]; _this addWeaponCargo ["AK_107_GL_kobra",20]; _this addWeaponCargo ["AK_107_GL_pso",20]; _this addWeaponCargo ["AK_107_pso",20]; _this addWeaponCargo ["AK_74",20]; _this addWeaponCargo ["AK_74_GL",20]; _this addWeaponCargo ["AK_47_M",20]; _this addWeaponCargo ["AK_47_S",20]; _this addWeaponCargo ["AKS_74_kobra",20]; _this addWeaponCargo ["AKS_74_pso",20]; _this addWeaponCargo ["AKS_74_U",20]; _this addWeaponCargo ["AKS_74_UN_kobra",20]; _this addWeaponCargo ["Bizon",20]; _this addWeaponCargo ["bizon_silenced",20]; _this addWeaponCargo ["G36a",20]; _this addWeaponCargo ["G36C",20]; _this addWeaponCargo ["G36_C_SD_eotech",20]; _this addWeaponCargo ["G36K",20]; _this addWeaponCargo ["M1014",20]; _this addWeaponCargo ["M16A2",20]; _this addWeaponCargo ["M16A2GL",20]; _this addWeaponCargo ["M16A4",20]; _this addWeaponCargo ["M16A4_GL",20]; _this addWeaponCargo ["M16A4_ACG_GL",20]; _this addWeaponCargo ["M16A4_ACG",20]; _this addWeaponCargo ["M4A1",20]; _this addWeaponCargo ["M4A1_HWS_GL",20]; _this addWeaponCargo ["M4A1_HWS_GL_camo",20]; _this addWeaponCargo ["M4A1_HWS_GL_SD_Camo",20]; _this addWeaponCargo ["M4A1_RCO_GL",20]; _this addWeaponCargo ["M4A1_Aim",20]; _this addWeaponCargo ["M4A1_Aim_camo",20]; _this addWeaponCargo ["M4A1_AIM_SD_camo",20]; _this addWeaponCargo ["MP5A5",20]; _this addWeaponCargo ["MP5SD",20]; _this addWeaponCargo ["Saiga12K",20]; _this addWeaponCargo ["VSS_vintorez",20]; _this addWeaponCargo ["M8_carbine",20]; _this addWeaponCargo ["M8_carbineGL",20]; _this addWeaponCargo ["M8_compact",20]; _this addWeaponCargo ["MG36",20]; _this addWeaponCargo ["Mk_48",20]; _this addWeaponCargo ["M240",20]; _this addWeaponCargo ["M249",20]; _this addWeaponCargo ["Pecheneg",20]; _this addWeaponCargo ["PK",20]; _this addWeaponCargo ["RPK_74",20]; _this addWeaponCargo ["M8_SAW",20]; _this addWeaponCargo ["Huntingrifle",20]; _this addWeaponCargo ["DMR",20]; _this addWeaponCargo ["KSVK",20]; _this addWeaponCargo ["M107",20]; _this addWeaponCargo ["M24",20]; _this addWeaponCargo ["M40A3",20]; _this addWeaponCargo ["M4SPR",20]; _this addWeaponCargo ["SVD",20]; _this addWeaponCargo ["SVD_CAMO",20]; _this addWeaponCargo ["M8_sharpshooter",20]; _this addWeaponCargo ["Colt1911",20]; _this addWeaponCargo ["M9",20]; _this addWeaponCargo ["M9SD",20]; _this addWeaponCargo ["Makarov",20]; _this addWeaponCargo ["MakarovSD",20]; // _this addWeaponCargo ["Igla",20]; // _this addWeaponCargo ["Javelin",20]; // _this addWeaponCargo ["M136",20]; // _this addWeaponCargo ["MetisLauncher",20]; // _this addWeaponCargo ["RPG18",20]; // _this addWeaponCargo ["RPG7V",20]; // _this addWeaponCargo ["SMAW",20]; // _this addWeaponCargo ["Stinger",20]; // _this addWeaponCargo ["Strela",20]; _this addWeaponCargo ["Binocular",20]; _this addWeaponCargo ["NVGoggles",20]; _this addWeaponCargo ["Laserdesignator",10]; }; //No scop case 4: { // _this addWeaponCargo ["AK_107_kobra",20]; // _this addWeaponCargo ["AK_107_GL_kobra",20]; // _this addWeaponCargo ["AK_107_GL_pso",20]; // _this addWeaponCargo ["AK_107_pso",20]; _this addWeaponCargo ["AK_74",20]; _this addWeaponCargo ["AK_74_GL",20]; _this addWeaponCargo ["AK_47_M",20]; _this addWeaponCargo ["AK_47_S",20]; _this addWeaponCargo ["AKS_74_kobra",20]; // _this addWeaponCargo ["AKS_74_pso",20]; _this addWeaponCargo ["AKS_74_U",20]; _this addWeaponCargo ["AKS_74_UN_kobra",20]; _this addWeaponCargo ["Bizon",20]; _this addWeaponCargo ["bizon_silenced",20]; // _this addWeaponCargo ["G36a",20]; // _this addWeaponCargo ["G36C",20]; _this addWeaponCargo ["G36_C_SD_eotech",20]; // _this addWeaponCargo ["G36K",20]; _this addWeaponCargo ["M1014",20]; _this addWeaponCargo ["M16A2",20]; _this addWeaponCargo ["M16A2GL",20]; _this addWeaponCargo ["M16A4",20]; _this addWeaponCargo ["M16A4_GL",20]; // _this addWeaponCargo ["M16A4_ACG_GL",20]; // _this addWeaponCargo ["M16A4_ACG",20]; _this addWeaponCargo ["M4A1",20]; _this addWeaponCargo ["M4A1_HWS_GL",20]; _this addWeaponCargo ["M4A1_HWS_GL_camo",20]; _this addWeaponCargo ["M4A1_HWS_GL_SD_Camo",20]; // _this addWeaponCargo ["M4A1_RCO_GL",20]; _this addWeaponCargo ["M4A1_Aim",20]; _this addWeaponCargo ["M4A1_Aim_camo",20]; _this addWeaponCargo ["M4A1_AIM_SD_camo",20]; _this addWeaponCargo ["MP5A5",20]; _this addWeaponCargo ["MP5SD",20]; _this addWeaponCargo ["Saiga12K",20]; // _this addWeaponCargo ["VSS_vintorez",20]; // _this addWeaponCargo ["M8_carbine",20]; // _this addWeaponCargo ["M8_carbineGL",20]; // _this addWeaponCargo ["M8_compact",20]; // _this addWeaponCargo ["MG36",20]; _this addWeaponCargo ["Mk_48",20]; _this addWeaponCargo ["M240",20]; _this addWeaponCargo ["M249",20]; // _this addWeaponCargo ["Pecheneg",20]; _this addWeaponCargo ["PK",20]; // _this addWeaponCargo ["RPK_74",20]; // _this addWeaponCargo ["M8_SAW",20]; // _this addWeaponCargo ["Huntingrifle",20]; // _this addWeaponCargo ["DMR",20]; // _this addWeaponCargo ["KSVK",20]; // _this addWeaponCargo ["M107",20]; // _this addWeaponCargo ["M24",20]; // _this addWeaponCargo ["M40A3",20]; // _this addWeaponCargo ["M4SPR",20]; // _this addWeaponCargo ["SVD",20]; // _this addWeaponCargo ["SVD_CAMO",20]; // _this addWeaponCargo ["M8_sharpshooter",20]; _this addWeaponCargo ["Colt1911",20]; _this addWeaponCargo ["M9",20]; _this addWeaponCargo ["M9SD",20]; _this addWeaponCargo ["Makarov",20]; _this addWeaponCargo ["MakarovSD",20]; _this addWeaponCargo ["Igla",20]; _this addWeaponCargo ["Javelin",20]; _this addWeaponCargo ["M136",20]; _this addWeaponCargo ["MetisLauncher",20]; _this addWeaponCargo ["RPG18",20]; _this addWeaponCargo ["RPG7V",20]; _this addWeaponCargo ["SMAW",20]; _this addWeaponCargo ["Stinger",20]; _this addWeaponCargo ["Strela",20]; _this addWeaponCargo ["Binocular",20]; _this addWeaponCargo ["NVGoggles",20]; _this addWeaponCargo ["Laserdesignator",10]; }; //No scop/No RPG case 5: { // _this addWeaponCargo ["AK_107_kobra",20]; // _this addWeaponCargo ["AK_107_GL_kobra",20]; // _this addWeaponCargo ["AK_107_GL_pso",20]; // _this addWeaponCargo ["AK_107_pso",20]; _this addWeaponCargo ["AK_74",20]; _this addWeaponCargo ["AK_74_GL",20]; _this addWeaponCargo ["AK_47_M",20]; _this addWeaponCargo ["AK_47_S",20]; _this addWeaponCargo ["AKS_74_kobra",20]; // _this addWeaponCargo ["AKS_74_pso",20]; _this addWeaponCargo ["AKS_74_U",20]; _this addWeaponCargo ["AKS_74_UN_kobra",20]; _this addWeaponCargo ["Bizon",20]; _this addWeaponCargo ["bizon_silenced",20]; // _this addWeaponCargo ["G36a",20]; // _this addWeaponCargo ["G36C",20]; _this addWeaponCargo ["G36_C_SD_eotech",20]; // _this addWeaponCargo ["G36K",20]; _this addWeaponCargo ["M1014",20]; _this addWeaponCargo ["M16A2",20]; _this addWeaponCargo ["M16A2GL",20]; _this addWeaponCargo ["M16A4",20]; _this addWeaponCargo ["M16A4_GL",20]; // _this addWeaponCargo ["M16A4_ACG_GL",20]; // _this addWeaponCargo ["M16A4_ACG",20]; _this addWeaponCargo ["M4A1",20]; _this addWeaponCargo ["M4A1_HWS_GL",20]; _this addWeaponCargo ["M4A1_HWS_GL_camo",20]; _this addWeaponCargo ["M4A1_HWS_GL_SD_Camo",20]; // _this addWeaponCargo ["M4A1_RCO_GL",20]; _this addWeaponCargo ["M4A1_Aim",20]; _this addWeaponCargo ["M4A1_Aim_camo",20]; _this addWeaponCargo ["M4A1_AIM_SD_camo",20]; _this addWeaponCargo ["MP5A5",20]; _this addWeaponCargo ["MP5SD",20]; _this addWeaponCargo ["Saiga12K",20]; // _this addWeaponCargo ["VSS_vintorez",20]; // _this addWeaponCargo ["M8_carbine",20]; // _this addWeaponCargo ["M8_carbineGL",20]; // _this addWeaponCargo ["M8_compact",20]; // _this addWeaponCargo ["MG36",20]; _this addWeaponCargo ["Mk_48",20]; _this addWeaponCargo ["M240",20]; _this addWeaponCargo ["M249",20]; // _this addWeaponCargo ["Pecheneg",20]; _this addWeaponCargo ["PK",20]; // _this addWeaponCargo ["RPK_74",20]; // _this addWeaponCargo ["M8_SAW",20]; // _this addWeaponCargo ["Huntingrifle",20]; // _this addWeaponCargo ["DMR",20]; // _this addWeaponCargo ["KSVK",20]; // _this addWeaponCargo ["M107",20]; // _this addWeaponCargo ["M24",20]; // _this addWeaponCargo ["M40A3",20]; // _this addWeaponCargo ["M4SPR",20]; // _this addWeaponCargo ["SVD",20]; // _this addWeaponCargo ["SVD_CAMO",20]; // _this addWeaponCargo ["M8_sharpshooter",20]; _this addWeaponCargo ["Colt1911",20]; _this addWeaponCargo ["M9",20]; _this addWeaponCargo ["M9SD",20]; _this addWeaponCargo ["Makarov",20]; _this addWeaponCargo ["MakarovSD",20]; // _this addWeaponCargo ["Igla",20]; // _this addWeaponCargo ["Javelin",20]; // _this addWeaponCargo ["M136",20]; // _this addWeaponCargo ["MetisLauncher",20]; // _this addWeaponCargo ["RPG18",20]; // _this addWeaponCargo ["RPG7V",20]; // _this addWeaponCargo ["SMAW",20]; // _this addWeaponCargo ["Stinger",20]; // _this addWeaponCargo ["Strela",20]; _this addWeaponCargo ["Binocular",20]; _this addWeaponCargo ["NVGoggles",20]; _this addWeaponCargo ["Laserdesignator",10]; }; //Full weapons default { _this addWeaponCargo ["AK_107_kobra",20]; _this addWeaponCargo ["AK_107_GL_kobra",20]; _this addWeaponCargo ["AK_107_GL_pso",20]; _this addWeaponCargo ["AK_107_pso",20]; _this addWeaponCargo ["AK_74",20]; _this addWeaponCargo ["AK_74_GL",20]; _this addWeaponCargo ["AK_47_M",20]; _this addWeaponCargo ["AK_47_S",20]; _this addWeaponCargo ["AKS_74_kobra",20]; _this addWeaponCargo ["AKS_74_pso",20]; _this addWeaponCargo ["AKS_74_U",20]; _this addWeaponCargo ["AKS_74_UN_kobra",20]; _this addWeaponCargo ["Bizon",20]; _this addWeaponCargo ["bizon_silenced",20]; _this addWeaponCargo ["G36a",20]; _this addWeaponCargo ["G36C",20]; _this addWeaponCargo ["G36_C_SD_eotech",20]; _this addWeaponCargo ["G36K",20]; _this addWeaponCargo ["M1014",20]; _this addWeaponCargo ["M16A2",20]; _this addWeaponCargo ["M16A2GL",20]; _this addWeaponCargo ["M16A4",20]; _this addWeaponCargo ["M16A4_GL",20]; _this addWeaponCargo ["M16A4_ACG_GL",20]; _this addWeaponCargo ["M16A4_ACG",20]; _this addWeaponCargo ["M4A1",20]; _this addWeaponCargo ["M4A1_HWS_GL",20]; _this addWeaponCargo ["M4A1_HWS_GL_camo",20]; _this addWeaponCargo ["M4A1_HWS_GL_SD_Camo",20]; _this addWeaponCargo ["M4A1_RCO_GL",20]; _this addWeaponCargo ["M4A1_Aim",20]; _this addWeaponCargo ["M4A1_Aim_camo",20]; _this addWeaponCargo ["M4A1_AIM_SD_camo",20]; _this addWeaponCargo ["MP5A5",20]; _this addWeaponCargo ["MP5SD",20]; _this addWeaponCargo ["Saiga12K",20]; _this addWeaponCargo ["VSS_vintorez",20]; _this addWeaponCargo ["M8_carbine",20]; _this addWeaponCargo ["M8_carbineGL",20]; _this addWeaponCargo ["M8_compact",20]; _this addWeaponCargo ["MG36",20]; _this addWeaponCargo ["Mk_48",20]; _this addWeaponCargo ["M240",20]; _this addWeaponCargo ["M249",20]; _this addWeaponCargo ["Pecheneg",20]; _this addWeaponCargo ["PK",20]; _this addWeaponCargo ["RPK_74",20]; _this addWeaponCargo ["M8_SAW",20]; _this addWeaponCargo ["Huntingrifle",20]; _this addWeaponCargo ["DMR",20]; _this addWeaponCargo ["KSVK",20]; _this addWeaponCargo ["M107",20]; _this addWeaponCargo ["M24",20]; _this addWeaponCargo ["M40A3",20]; _this addWeaponCargo ["M4SPR",20]; _this addWeaponCargo ["SVD",20]; _this addWeaponCargo ["SVD_CAMO",20]; _this addWeaponCargo ["M8_sharpshooter",20]; _this addWeaponCargo ["Colt1911",20]; _this addWeaponCargo ["M9",20]; _this addWeaponCargo ["M9SD",20]; _this addWeaponCargo ["Makarov",20]; _this addWeaponCargo ["MakarovSD",20]; _this addWeaponCargo ["Igla",20]; _this addWeaponCargo ["Javelin",20]; _this addWeaponCargo ["M136",20]; _this addWeaponCargo ["MetisLauncher",20]; _this addWeaponCargo ["RPG18",20]; _this addWeaponCargo ["RPG7V",20]; _this addWeaponCargo ["SMAW",20]; _this addWeaponCargo ["Stinger",20]; _this addWeaponCargo ["Strela",20]; _this addWeaponCargo ["Binocular",20]; _this addWeaponCargo ["NVGoggles",20]; _this addWeaponCargo ["Laserdesignator",10]; }; }; /* _this addWeaponCargo ["AK_107_kobra",20]; _this addWeaponCargo ["AK_107_GL_kobra",20]; _this addWeaponCargo ["AK_107_GL_pso",20]; _this addWeaponCargo ["AK_107_pso",20]; _this addWeaponCargo ["AK_74",20]; _this addWeaponCargo ["AK_74_GL",20]; _this addWeaponCargo ["AK_47_M",20]; _this addWeaponCargo ["AK_47_S",20]; _this addWeaponCargo ["AKS_74_kobra",20]; _this addWeaponCargo ["AKS_74_pso",20]; _this addWeaponCargo ["AKS_74_U",20]; _this addWeaponCargo ["AKS_74_UN_kobra",20]; _this addWeaponCargo ["Bizon",20]; _this addWeaponCargo ["bizon_silenced",20]; _this addWeaponCargo ["G36a",20]; _this addWeaponCargo ["G36C",20]; _this addWeaponCargo ["G36_C_SD_eotech",20]; _this addWeaponCargo ["G36K",20]; _this addWeaponCargo ["M1014",20]; _this addWeaponCargo ["M16A2",20]; _this addWeaponCargo ["M16A2GL",20]; _this addWeaponCargo ["M16A4",20]; _this addWeaponCargo ["M16A4_GL",20]; _this addWeaponCargo ["M16A4_ACG_GL",20]; _this addWeaponCargo ["M16A4_ACG",20]; _this addWeaponCargo ["M4A1",20]; _this addWeaponCargo ["M4A1_HWS_GL",20]; _this addWeaponCargo ["M4A1_HWS_GL_camo",20]; _this addWeaponCargo ["M4A1_HWS_GL_SD_Camo",20]; _this addWeaponCargo ["M4A1_RCO_GL",20]; _this addWeaponCargo ["M4A1_Aim",20]; _this addWeaponCargo ["M4A1_Aim_camo",20]; _this addWeaponCargo ["M4A1_AIM_SD_camo",20]; _this addWeaponCargo ["MP5A5",20]; _this addWeaponCargo ["MP5SD",20]; _this addWeaponCargo ["Saiga12K",20]; _this addWeaponCargo ["VSS_vintorez",20]; _this addWeaponCargo ["M8_carbine",20]; _this addWeaponCargo ["M8_carbineGL",20]; _this addWeaponCargo ["M8_compact",20]; _this addWeaponCargo ["MG36",20]; _this addWeaponCargo ["Mk_48",20]; _this addWeaponCargo ["M240",20]; _this addWeaponCargo ["M249",20]; _this addWeaponCargo ["Pecheneg",20]; _this addWeaponCargo ["PK",20]; _this addWeaponCargo ["RPK_74",20]; _this addWeaponCargo ["M8_SAW",20]; _this addWeaponCargo ["Huntingrifle",20]; _this addWeaponCargo ["DMR",20]; _this addWeaponCargo ["KSVK",20]; _this addWeaponCargo ["M107",20]; _this addWeaponCargo ["M24",20]; _this addWeaponCargo ["M40A3",20]; _this addWeaponCargo ["M4SPR",20]; _this addWeaponCargo ["SVD",20]; _this addWeaponCargo ["SVD_CAMO",20]; _this addWeaponCargo ["M8_sharpshooter",20]; _this addWeaponCargo ["Colt1911",20]; _this addWeaponCargo ["M9",20]; _this addWeaponCargo ["M9SD",20]; _this addWeaponCargo ["Makarov",20]; _this addWeaponCargo ["MakarovSD",20]; _this addWeaponCargo ["Igla",20]; _this addWeaponCargo ["Javelin",20]; _this addWeaponCargo ["M136",20]; _this addWeaponCargo ["MetisLauncher",20]; _this addWeaponCargo ["RPG18",20]; _this addWeaponCargo ["RPG7V",20]; _this addWeaponCargo ["SMAW",20]; _this addWeaponCargo ["Stinger",20]; _this addWeaponCargo ["Strela",20]; _this addWeaponCargo ["Binocular",20]; _this addWeaponCargo ["NVGoggles",20]; _this addWeaponCargo ["Laserdesignator",10]; */ //BIS AMMO// _this addMagazineCargo ["30Rnd_545x39_AK",100]; _this addMagazineCargo ["30Rnd_545x39_AKSD",100]; _this addMagazineCargo ["30Rnd_762x39_AK47",100]; _this addMagazineCargo ["64Rnd_9x19_Bizon",100]; _this addMagazineCargo ["64Rnd_9x19_SD_Bizon",100]; _this addMagazineCargo ["30Rnd_556x45_G36",100]; _this addMagazineCargo ["30Rnd_556x45_G36SD",100]; _this addMagazineCargo ["8Rnd_B_Beneli_74Slug",100]; _this addMagazineCargo ["30Rnd_556x45_Stanag",100]; _this addMagazineCargo ["30Rnd_556x45_StanagSD",100]; _this addMagazineCargo ["30Rnd_9x19_MP5",100]; _this addMagazineCargo ["30Rnd_9x19_MP5SD",100]; _this addMagazineCargo ["8Rnd_B_Saiga12_74Slug",100]; _this addMagazineCargo ["10Rnd_9x39_SP5_VSS",100]; _this addMagazineCargo ["20Rnd_9x39_SP5_VSS",100]; _this addMagazineCargo ["1Rnd_HE_GP25",100]; _this addMagazineCargo ["FlareWhite_GP25",100]; _this addMagazineCargo ["FlareGreen_GP25",100]; _this addMagazineCargo ["FlareRed_GP25",100]; _this addMagazineCargo ["FlareYellow_GP25",100]; _this addMagazineCargo ["1Rnd_SMOKE_GP25",100]; _this addMagazineCargo ["1Rnd_SMOKERED_GP25",100]; _this addMagazineCargo ["1Rnd_SMOKEGREEN_GP25",100]; _this addMagazineCargo ["1Rnd_SMOKEYELLOW_GP25",100]; _this addMagazineCargo ["1Rnd_HE_M203",100]; _this addMagazineCargo ["FlareWhite_M203",100]; _this addMagazineCargo ["FlareGreen_M203",100]; _this addMagazineCargo ["FlareRed_M203",100]; _this addMagazineCargo ["FlareYellow_M203",100]; _this addMagazineCargo ["1Rnd_Smoke_M203",100]; _this addMagazineCargo ["1Rnd_SmokeRed_M203",100]; _this addMagazineCargo ["1Rnd_SmokeGreen_M203",100]; _this addMagazineCargo ["1Rnd_SmokeYellow_M203",100]; _this addMagazineCargo ["100Rnd_556x45_BetaCMag",100]; _this addMagazineCargo ["100Rnd_762x51_M240",100]; _this addMagazineCargo ["200Rnd_556x45_M249",100]; _this addMagazineCargo ["100Rnd_762x54_PK",100]; _this addMagazineCargo ["75Rnd_545x39_RPK",100]; _this addMagazineCargo ["5x_22_LR_17_HMR",100]; _this addMagazineCargo ["20Rnd_762x51_DMR",100]; _this addMagazineCargo ["5Rnd_127x108_KSVK",100]; _this addMagazineCargo ["10Rnd_127x99_m107",100]; _this addMagazineCargo ["5Rnd_762x51_M24",100]; _this addMagazineCargo ["20Rnd_556x45_Stanag",100]; _this addMagazineCargo ["10Rnd_762x54_SVD",100]; _this addMagazineCargo ["7Rnd_45ACP_1911",100]; _this addMagazineCargo ["15Rnd_9x19_M9",100]; _this addMagazineCargo ["15Rnd_9x19_M9SD",100]; _this addMagazineCargo ["8Rnd_9x18_Makarov",100]; _this addMagazineCargo ["8Rnd_9x18_MakarovSD",100]; _this addMagazineCargo ["Igla",20]; _this addMagazineCargo ["Javelin",20]; _this addMagazineCargo ["M136",20]; _this addMagazineCargo ["AT13",20]; _this addMagazineCargo ["RPG18",20]; _this addMagazineCargo ["PG7V",20]; _this addMagazineCargo ["PG7VL",20]; _this addMagazineCargo ["PG7VR",20]; _this addMagazineCargo ["OG7",20]; _this addMagazineCargo ["SMAW_HEAA",20]; _this addMagazineCargo ["SMAW_HEDP",20]; _this addMagazineCargo ["Stinger",20]; _this addMagazineCargo ["Strela",20]; _this addMagazineCargo ["HandGrenade",50]; _this addMagazineCargo ["HandGrenade_West",50]; _this addMagazineCargo ["HandGrenade_East",50]; _this addMagazineCargo ["SmokeShell",50]; _this addMagazineCargo ["SmokeShellRed",50]; _this addMagazineCargo ["SmokeShellGreen",50]; _this addMagazineCargo ["SmokeShellYellow",50]; _this addMagazineCargo ["TimeBomb",50]; _this addMagazineCargo ["PipeBomb",50]; _this addMagazineCargo ["Mine",50]; _this addMagazineCargo ["MineE",50]; _this addMagazineCargo ["HandGrenade_Stone",50]; _this addMagazineCargo ["Laserbatteries",50]; //sleep 1800; //};_marker_on = false; markerobj_heli1 = createMarkerlocal["marqueur_heli1",position heli1]; markerobj_heli1 setMarkerShapelocal "ICON"; "marqueur_heli1" setMarkerTypelocal "Arrow" ; "marqueur_heli1" setMarkerSizeLocal [0.7,0.7]; "marqueur_heli1" setMarkerTextlocal "Rescue Chopper"; "marqueur_heli1" setMarkerColorlocal "Coloryellow"; while {true} do { "marqueur_heli1" setMarkerPoslocal (position heli1); "marqueur_heli1" setMarkerdirLocal (direction heli1); sleep 2; if (alive uaz1) then { if not(_marker_on) then { sleep 2; _marker_on = true; markerobj_convoy = createMarkerlocal["marqueur_convoy",getPos uaz1]; "marqueur_convoy" setMarkerShapelocal "ICON"; "marqueur_convoy" setMarkerTypelocal "Destroy"; "marqueur_convoy" setMarkerSizeLocal [0.5,0.5]; "marqueur_convoy" setMarkerTextlocal "convoy"; "marqueur_convoy" setMarkerColorlocal "Colorred"; }else{ "marqueur_convoy" setMarkerPosLocal getPos uaz1; }; }else{ deleteMarker "marqueur_convoy"; _marker_on = false; }; }; disableSerialization; if (local joueur1) then { _display = finddisplay 8000; _txt = _display displayctrl 200; _bt = _display displayctrl 10603; if(captive joueur1) then { joueur1 setCaptive false; joueur1 allowDamage true; titletext ["Your are not invisible for enemy !","plain down"]; _txt CtrlSetText "Your are not invisible for enemy !"; _txt CtrlSetTextColor [1,0,0,1]; _bt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.5; CtrlShow [200,false];sleep 0.5;Ctrlshow [200,true]; }else{ joueur1 setCaptive true; joueur1 allowDamage false; titletext ["Your are invisible for enemy !","plain down"]; _txt CtrlSetText "Your are invisible for enemy !"; _bt CtrlSetTextColor [1,0,0,1]; }; }; disableSerialization; //_index = lbAdd [10396, "First item2"] //hint "toto"; //_display = finddisplay 8000; //_control = _display displayctrl 10305; // _index = lbCurSel _control; // hint format["%1", _index]; // nom_console_valid_type = _index select 0; // hint format["%1", nom_console_valid_type]; // var_console_valid_type = ( _index select 1); // console_valid_type = ( _index select 2); // _n = [0] execVM "computer\console\boutons\console_valid_unite.sqf"; /* _MytripleList = [ ["Man","Homme","0"], ["Vehicle","Vehicle","1"], ["Group","Groupe","2"], ["Static","Statique","3"], ["Matrl","Matrl","4"] ]; [10305, _MytripleList] call Dlg_FillListBoxLists; */if (local joueur1) then { _Z=(getPos heli1 select 2); if (_z>45) then { drop_charge_now = true; publicvariable "drop_charge_now"; } else{ titletext ["altitude trop basse","plain down"]; }; // if not(fin_heli) then // { // drop_charge_now = true; // publicvariable "drop_charge_now"; // }; }; if (local joueur1) then { if (fin_heli) then { // fin_heli = false; // publicvariable "fin_heli"; titletext ["Choisir le point sur la carte","plain down"]; onMapSingleClick "pos_map_heli_x = _pos select 0; pos_map_heli_y = _pos select 1; pos_map_heli_z = _pos select 2; go_avance = true; publicvariable ""pos_map_heli_x""; publicvariable ""pos_map_heli_y""; publicvariable ""pos_map_heli_z""; publicvariable ""go_avance""; onMapSingleClick """";"; // waitUntil {(fin_heli)}; // titleText["Helico en attente d'ordres", "PLAIN DOWN"]; } else { titleText["Helico indisponible", "PLAIN DOWN"]; }; }; disableSerialization; if (local joueur1) then { _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0,1,0,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; if (fin_heli) then { fin_heli = false; publicvariable "fin_heli"; titletext ["Choisir le point sur la carte","plain down"]; onMapSingleClick "pos_drop_x = _pos select 0; pos_drop_y = _pos select 1; pos_drop_z = _pos select 2; go_drop = true; publicvariable ""pos_drop_x""; publicvariable ""pos_drop_y""; publicvariable ""pos_drop_z""; publicvariable ""go_drop""; onMapSingleClick """";"; waitUntil {(fin_heli)}; titleText["Helico en attente d'ordres", "PLAIN DOWN"]; } else { titleText["Helico indisponible", "PLAIN DOWN"]; }; }; disableSerialization; if (local joueur1) then { _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0,1,0,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; if (fin_heli) then { fin_heli = false; publicvariable "fin_heli"; titletext ["Choisir le point sur la carte","plain down"]; onMapSingleClick "pos_drop_x = _pos select 0; pos_drop_y = _pos select 1; pos_drop_z = _pos select 2; go_drop_charge = true; publicvariable ""pos_drop_x""; publicvariable ""pos_drop_y""; publicvariable ""pos_drop_z""; publicvariable ""go_drop_charge""; onMapSingleClick """";"; waitUntil {(fin_heli)}; titleText["Helico en attente d'ordres", "PLAIN DOWN"]; } else { titleText["Helico indisponible", "PLAIN DOWN"]; }; }; disableSerialization; if (local joueur1) then { _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0,1,0,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; if (fin_heli) then { fin_heli = false; publicvariable "fin_heli"; titletext ["Choisir le point sur la carte","plain down"]; onMapSingleClick "pos_evac_x = _pos select 0; pos_evac_y = _pos select 1; pos_evac_z = _pos select 2; go_evac = true; publicvariable ""pos_evac_x""; publicvariable ""pos_evac_y""; publicvariable ""pos_evac_z""; publicvariable ""go_evac""; onMapSingleClick """";"; waitUntil {(fin_heli)}; titleText["Helico en attente d'ordres", "PLAIN DOWN"]; } else { titleText["Helico indisponible", "PLAIN DOWN"]; }; }; if (local joueur1) then { // if not(fin_heli) then // { stop_heli = true; publicvariable "stop_heli"; // }; }; /********************************* mando_heliroute_arma.sqf v1.2 August 2007 Mandoble Moves a chopper accurately to the desired destination point following the indicated route and land it if so indicated. Execute it there were the chopper is local. Sintax: [chopper, route positions array, flying height, landing true/fasle] execVM "mando_heliroute_arma.sqf" Route positions array is an array of at least one position that defines the route the chopper will follow. Once it reaches the final destination it will land if landing parameter is set to true. When the route is completed, the chopper will set its internal mando_heliroute variable to "waiting". While the chopper is executing the route that variable is set to "busy" and, if the chopper is damaged or the pilot is killed, the variable is set to "damaged". If you want to check when the route has been completed, you may do it this way: Sleep 2; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; if (heli1 getVariable "mando_heliroute" == "damaged") then { hint "Chopper damaged or pilot dead, not available for more routes."; } else { if (heli1 getVariable "mando_heliroute" == "waiting") then { hint "Chopper waiting for a new route."; }; }; **********************************/ private["_heli", "_route", "_endpos", "_height", "_landing ", "_pilot", "_i", "_j", "_pos", "_dist", "_distold", "_angh", "_dir", "_accel", "_speed", "_steps", "_inipos", "_offset"]; _heli = _this select 0; _route = _this select 1; _height = _this select 2; _landing = _this select 3; if (!local _heli) exitWith {hint "mando_heliroute: vehicle must be local";}; // First of all chopper gets its indicated flying height for the route _pilot = driver _heli; _heli setVariable ["mando_heliroute", "busy"]; _heli flyinHeight _height; _pilot doMove [getPos _heli select 0, getPos _heli select 1, _height]; Sleep 2; while {(!unitReady _pilot)&&(alive _pilot)&&(damage _heli < 0.5)} do { Sleep 2; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];}; // The chopper moves through the route positions for [{_j = 0},{_j < count _route},{_j = _j + 1}] do { _endpos = _route select _j; _inipos = getPos _heli; _dist = sqrt(((_endpos select 0) - (_inipos select 0))^2 + ((_endpos select 1) - (_inipos select 1))^2); _steps = _dist / 3000; _steps = _steps - (_steps % 1); _ang = ((_endpos select 0) - (_inipos select 0)) atan2 ((_endpos select 1) - (_inipos select 1)); // Each route position is reached in steps no larger than 3Km for [{_i = 0},{_i < _steps},{_i = _i + 1}] do { _pos = [(_inipos select 0) + sin(_ang)*3000*_i,(_inipos select 1) + cos(_ang)*3000*_i]; _pilot doMove _pos; Sleep 2; if (_i < (_steps - 1)) then { _offset = 5; } else { _offset = 1; }; while {((sqrt(((_pos select 0) - (getPos _heli select 0))^2 + ((_pos select 1) - (getPos _heli select 1))^2))>500)&&(alive _pilot)&&(damage _heli < 0.5)} do { Sleep 2; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; _pilot doMove _endpos; Sleep 2; while {((!unitReady _pilot) || (abs(speed _heli) > 1))&&(alive _pilot)&&(damage _heli < 0.5)} do { Sleep 0.2; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; }; while {(abs(vectorUp _heli select 2) < 0.996)&&(alive _pilot)&&(damage _heli < 0.5)} do { Sleep 0.2; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];}; _pilot doMove [getPos _heli select 0, getPos _heli select 1]; // If chopper is not closer than 2m to final route point, it aligns with it and moves towards it _dist = sqrt(((_endpos select 0) - (getPos _heli select 0))^2 + ((_endpos select 1) - (getPos _heli select 1))^2); _dir = getDir _heli; if (_dist > 2) then { _pos = _heli worldToModel _endpos; _angh = (_pos select 0) atan2 (_pos select 1); _dist = sqrt((_pos select 0)^2+(_pos select 1)^2); for [{_i = 0},{_i < abs(_angh)},{_i = _i + 1}] do { if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; _heli setDir ((getDir _heli)+abs(_angh)/_angh); _heli setVelocity [0,0,0]; Sleep 0.05; }; }; _heli setDir (_dir + _angh); _dir = getDir _heli; _distold = 99999; _dist = 99998; _speed = 0; while {(_distold > _dist) && (alive _pilot) && (damage _heli < 0.5)} do { if (_speed < 7) then { _speed = _speed + 0.1; }; _distold = _dist; _dist = sqrt(((_endpos select 0) - (getPos _heli select 0))^2 + ((_endpos select 1) - (getPos _heli select 1))^2); _heli setVelocity [sin(_dir)*_speed, cos(_dir)*_speed, 0]; _heli setDir _dir; Sleep 0.005; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];}; // Do we need to land? if (_landing) then { while {(isEngineOn _heli) && (alive _pilot) && (damage _heli < 0.5)} do { if ((getPos _heli select 2) > 1) then { _heli setDir _dir; if ((getPos _heli select 2) > 5) then { _heli setVelocity [0,0,-7]; } else { _heli setVelocity [0,0,7*(getPos _heli select 2)/-5 min -1]; }; } else { _pilot action ["ENGINEOFF", _heli]; _heli setVelocity [0,0,0]; }; Sleep 0.01; }; for [{_i = 0},{_i < 100},{_i = _i + 1}] do { _heli setVelocity [0,0,-0.1]; Sleep 0.05; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; _heli setVariable ["mando_heliroute", "waiting"]; while {(alive _pilot) && (damage _heli < 0.5) && ((_heli getVariable "mando_heliroute") == "waiting")} do { _pilot action ["ENGINEOFF", _heli]; Sleep 0.01; }; } else { _heli setVariable ["mando_heliroute", "waiting"]; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];};/* ====================================================================================== Air Drop Version: 1.1.4 (ArmA) Author: Kronzky (www.kronzky.info / kronzky@gmail.com) ====================================================================================== Parachutes an item from a plane. Place into your mission folder, and call at the desired drop-off point via: nul=[plane,object] execVM "dropit.sqf"; Required parameters: 'plane' - Name of the air vehice the item should be dropped out of. 'object' - Name of the item to be dropped. This item has to be exist somewhere on the map. Optional parameters: "smoke" - Will create a smoke plume at the landing point. "message" - Will display a message with drop-off and landing coordinates. "usebox" - Eject item inside heavier shipping box. ====================================================================================== */ if !(requiredVersion "1.12") exitWith {}; _carrier = _this select 0; if (isNil ("_carrier")) exitWith {hint format["Plane not found"]}; _dropitem = _this select 1; if (isNil ("_dropitem")) exitWith {hint format["Item not found"]}; _orgitem = _dropitem; _orgitem allowDammage false; _message = (("message" in _this) || ("MESSAGE" in _this)); _drop=.2; _delay=.01; _forceDrop = (getText (configFile >> "cfgVehicles" >> typeof _dropitem >> "simulation")=="House"); if (("usebox" in _this) || ("USEBOX" in _this)) then {_forceDrop=true}; _velfact=.5; if (_forceDrop) then { _dropitem = "ReammoBox" createVehicle [0,0]; _velfact=.25; }; _pos=position _carrier; _vel=velocity _carrier; _vel=[(_vel select 0) min 20,(_vel select 1) min 20,-10]; _dropitem setDir getDir _carrier; _z=(_pos select 2)-2; if (_z<50) then { _z=abs((_carrier worldToModel position _carrier) select 2); }; _zoff=((boundingBox _dropitem select 1) select 2); _z=_z-_zoff; _yoff=((boundingBox _dropitem select 1) select 1) - ((boundingBox _carrier select 0) select 1)+2; if (_message) then {player sidechat format["%1: Dropped at %2 (height: %3m)",getText (configFile >> "CfgVehicles" >> typeof _orgitem >> "displayName"), (_pos),round(_z)]}; _chute = "ParachuteWest" createVehicle [_pos select 0,_pos select 1,_z]; _chute setvelocity [(_vel select 0)*_velfact,(_vel select 1)*_velfact,10]; _pos=getpos _carrier; _dir=direction _carrier; _pos=[(_pos select 0)-sin(_dir)*_yoff,(_pos select 1)-cos(_dir)*_yoff,_z]; _chute setpos [_pos select 0, _pos select 1, _z]; _dropitem setpos [_pos select 0, _pos select 1, _z]; _dropitem setvelocity [(_vel select 0)*_velfact,(_vel select 1)*_velfact,10]; while {_z > 0.2} do { _dropitem setpos [getpos _dropitem select 0, getpos _dropitem select 1, _z]; _z=_z-_drop; _chute setvelocity [velocity _chute select 0,velocity _chute select 1,10]; _chute setpos [getpos _dropitem select 0, getpos _dropitem select 1, _z]; sleep _delay; }; if (_forceDrop) then { sleep .5; deleteVehicle _dropitem; }; _orgitem setpos [getpos _dropitem select 0, getpos _dropitem select 1, 0]; _orgitem setVelocity [0,0,0]; _orgitem setVectorUp [0,0,1]; _orgitem allowDammage true; if (_message) then {player sidechat format["%1: Landed at %2",getText (configFile >> "CfgVehicles" >> typeof _orgitem >> "displayName"), (position _orgitem)]}; sleep 5; if !(isNull _chute) then { _chute setPos [(getpos _orgitem select 0)+1,(getpos _orgitem select 1)+1,0]; _chute setvelocity [0,0,0]; }; _orgitem setVectorUp [0,0,1]; if (("smoke" in _this) || ("SMOKE" in _this)) then { _smoke = "Logic" createVehicle [(getpos _orgitem select 0)+2,(getpos _orgitem select 1)+2,.5]; _ps = "#particlesource" createVehicleLocal position _smoke; _ps setParticleCircle [0, [0.25, 0, 0]]; _ps setParticleRandom [0, [0.25, 0.25, 0], [0.2, 0.2, 0], 0, 0.25, [0, 0, 0, 0.1], 0, 0]; _ps setParticleParams [["\Ca\Data\ParticleEffects\FireAndSmokeAnim\SmokeAnim.p3d", 8, 3, 1], "", "Billboard", 1, 10, [0, 0, 0], [0, 0, 1], 0, 10, 10, 0.1, [2, 6, 12], [[1, 1, 1, 0.7], [1, 1, 1, 0.15], [1, 1, 1, 0]], [0.125], 1, 0, "", "", _orgitem]; _ps setDropInterval 0.05; sleep 30; deleteVehicle _ps; deleteVehicle _smoke; };/* ====================================================================================== Air Drop Version: 1.1.4 (ArmA) Author: Kronzky (www.kronzky.info / kronzky@gmail.com) ====================================================================================== Parachutes an item from a plane. Place into your mission folder, and call at the desired drop-off point via: nul=[plane,object] execVM "dropit.sqf"; Required parameters: 'plane' - Name of the air vehice the item should be dropped out of. 'object' - Name of the item to be dropped. This item has to be exist somewhere on the map. Optional parameters: "smoke" - Will create a smoke plume at the landing point. "message" - Will display a message with drop-off and landing coordinates. "usebox" - Eject item inside heavier shipping box. ====================================================================================== */ if !(requiredVersion "1.12") exitWith {}; _carrier = _this select 0; if (isNil ("_carrier")) exitWith {hint format["Plane not found"]}; _dropitem = _this select 1; if (isNil ("_dropitem")) exitWith {hint format["Item not found"]}; _orgitem = _dropitem; _orgitem allowDammage false; _message = (("message" in _this) || ("MESSAGE" in _this)); _drop=.6; _delay=.01; _forceDrop = (getText (configFile >> "cfgVehicles" >> typeof _dropitem >> "simulation")=="House"); if (("usebox" in _this) || ("USEBOX" in _this)) then {_forceDrop=true}; _velfact=.5; if (_forceDrop) then { _dropitem = "ReammoBox" createVehicle [0,0]; _velfact=.25; }; _pos=position _carrier; _vel=velocity _carrier; _vel=[(_vel select 0) min 20,(_vel select 1) min 20,-10]; _dropitem setDir getDir _carrier; _z=(_pos select 2)-3; //if (_z<50) then { // _z=abs((_carrier worldToModel position _carrier) select 2); //}; //_zoff=((boundingBox _dropitem select 1) select 2); //_z=_z-_zoff; //_yoff=((boundingBox _dropitem select 1) select 1) - ((boundingBox _carrier select 0) select 1)+2; if (_message) then {player sidechat format["%1: Dropped at %2 (height: %3m)",getText (configFile >> "CfgVehicles" >> typeof _orgitem >> "displayName"), (_pos),round(_z)]}; //_chute = "ParachuteWest" createVehicle [_pos select 0,_pos select 1,_z]; //_chute setvelocity [(_vel select 0)*_velfact,(_vel select 1)*_velfact,10]; _pos=getpos _carrier; _dir=direction _carrier; //_pos=[(_pos select 0)-sin(_dir)*_yoff,(_pos select 1)-cos(_dir)*_yoff,_z]; _pos=[(_pos select 0),(_pos select 1),_z]; //_chute setpos [_pos select 0, _pos select 1, _z]; _dropitem setpos [_pos select 0, _pos select 1, _z]; //_dropitem setvelocity [(_vel select 0)*_velfact,(_vel select 1)*_velfact,10]; //_dropitem setvelocity [0,0,10]; while {_z > 0.2} do { _dropitem setpos [getpos _dropitem select 0, getpos _dropitem select 1, _z]; _z=_z-_drop; // _chute setvelocity [velocity _chute select 0,velocity _chute select 1,10]; // _chute setpos [getpos _dropitem select 0, getpos _dropitem select 1, _z]; sleep _delay; }; if (_forceDrop) then { sleep .5; deleteVehicle _dropitem; }; _orgitem setpos [getpos _dropitem select 0, getpos _dropitem select 1, 0]; _orgitem setVelocity [0,0,0]; _orgitem setVectorUp [0,0,1]; //_orgitem allowDammage true; if (_message) then {player sidechat format["%1: Landed at %2",getText (configFile >> "CfgVehicles" >> typeof _orgitem >> "displayName"), (position _orgitem)]}; sleep 5; //if !(isNull _chute) then { // _chute setPos [(getpos _orgitem select 0)+1,(getpos _orgitem select 1)+1,0]; // _chute setvelocity [0,0,0]; //}; _orgitem setVectorUp [0,0,1]; if (("smoke" in _this) || ("SMOKE" in _this)) then { _smoke = "Logic" createVehicle [(getpos _orgitem select 0)+2,(getpos _orgitem select 1)+2,.5]; _ps = "#particlesource" createVehicleLocal position _smoke; _ps setParticleCircle [0, [0.25, 0, 0]]; _ps setParticleRandom [0, [0.25, 0.25, 0], [0.2, 0.2, 0], 0, 0.25, [0, 0, 0, 0.1], 0, 0]; _ps setParticleParams [["\Ca\Data\ParticleEffects\FireAndSmokeAnim\SmokeAnim.p3d", 8, 3, 1], "", "Billboard", 1, 10, [0, 0, 0], [0, 0, 1], 0, 10, 10, 0.1, [2, 6, 12], [[1, 1, 1, 0.7], [1, 1, 1, 0.15], [1, 1, 1, 0]], [0.125], 1, 0, "", "", _orgitem]; _ps setDropInterval 0.05; sleep 30; deleteVehicle _ps; deleteVehicle _smoke; };/********************************* if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; mando_heliroute_arma.sqf v1.2 August 2007 Mandoble Moves a chopper accurately to the desired destination point following the indicated route and land it if so indicated. Execute it there were the chopper is local. Sintax: [chopper, route positions array, flying height, landing true/fasle] execVM "mando_heliroute_arma.sqf" Route positions array is an array of at least one position that defines the route the chopper will follow. Once it reaches the final destination it will land if landing parameter is set to true. When the route is completed, the chopper will set its internal mando_heliroute variable to "waiting". While the chopper is executing the route that variable is set to "busy" and, if the chopper is damaged or the pilot is killed, the variable is set to "damaged". If you want to check when the route has been completed, you may do it this way: Sleep 2; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; if (heli1 getVariable "mando_heliroute" == "damaged") then { hint "Chopper damaged or pilot dead, not available for more routes."; } else { if (heli1 getVariable "mando_heliroute" == "waiting") then { hint "Chopper waiting for a new route."; }; }; **********************************/ private["_heli", "_route", "_endpos", "_height", "_landing ", "_pilot", "_i", "_j", "_pos", "_dist", "_distold", "_angh", "_dir", "_accel", "_speed", "_steps", "_inipos", "_offset"]; _heli = _this select 0; _route = _this select 1; _height = _this select 2; _landing = _this select 3; if (!local _heli) exitWith {hint "mando_heliroute: vehicle must be local";}; // First of all chopper gets its indicated flying height for the route _pilot = driver _heli; _heli setVariable ["mando_heliroute", "busy"]; _heli flyinHeight _height; _pilot doMove [getPos _heli select 0, getPos _heli select 1, _height]; Sleep 2; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; while {(!unitReady _pilot)&&(alive _pilot)&&(damage _heli < 0.5)} do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; Sleep 2; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];}; // The chopper moves through the route positions if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; for [{_j = 0},{_j < count _route},{_j = _j + 1}] do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; _endpos = _route select _j; _inipos = getPos _heli; _dist = sqrt(((_endpos select 0) - (_inipos select 0))^2 + ((_endpos select 1) - (_inipos select 1))^2); _steps = _dist / 3000; _steps = _steps - (_steps % 1); _ang = ((_endpos select 0) - (_inipos select 0)) atan2 ((_endpos select 1) - (_inipos select 1)); // Each route position is reached in steps no larger than 3Km if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; for [{_i = 0},{_i < _steps},{_i = _i + 1}] do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; _pos = [(_inipos select 0) + sin(_ang)*3000*_i,(_inipos select 1) + cos(_ang)*3000*_i]; _pilot doMove _pos; Sleep 2; if (_i < (_steps - 1)) then { _offset = 5; } else { _offset = 1; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; while {((sqrt(((_pos select 0) - (getPos _heli select 0))^2 + ((_pos select 1) - (getPos _heli select 1))^2))>500)&&(alive _pilot)&&(damage _heli < 0.5)} do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; Sleep 2; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; _pilot doMove _endpos; Sleep 2; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; while {((!unitReady _pilot) || (abs(speed _heli) > 1))&&(alive _pilot)&&(damage _heli < 0.5)} do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; Sleep 0.2; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; while {(abs(vectorUp _heli select 2) < 0.996)&&(alive _pilot)&&(damage _heli < 0.5)} do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; Sleep 0.2; }; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];}; _pilot doMove [getPos _heli select 0, getPos _heli select 1]; // If chopper is not closer than 2m to final route point, it aligns with it and moves towards it _dist = sqrt(((_endpos select 0) - (getPos _heli select 0))^2 + ((_endpos select 1) - (getPos _heli select 1))^2); _dir = getDir _heli; if (_dist > 2) then { _pos = _heli worldToModel _endpos; _angh = (_pos select 0) atan2 (_pos select 1); _dist = sqrt((_pos select 0)^2+(_pos select 1)^2); for [{_i = 0},{_i < abs(_angh)},{_i = _i + 1}] do { if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; _heli setDir ((getDir _heli)+abs(_angh)/_angh); _heli setVelocity [0,0,0]; Sleep 0.05; }; }; _heli setDir (_dir + _angh); _dir = getDir _heli; _distold = 99999; _dist = 99998; _speed = 0; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; while {(_distold > _dist) && (alive _pilot) && (damage _heli < 0.5)} do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; if (_speed < 7) then { _speed = _speed + 0.1; }; _distold = _dist; _dist = sqrt(((_endpos select 0) - (getPos _heli select 0))^2 + ((_endpos select 1) - (getPos _heli select 1))^2); _heli setVelocity [sin(_dir)*_speed, cos(_dir)*_speed, 0]; _heli setDir _dir; Sleep 0.005; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];}; // Do we need to land? if (_landing) then { if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; while {(isEngineOn _heli) && (alive _pilot) && (damage _heli < 0.5)} do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; if ((getPos _heli select 2) > 1) then { _heli setDir _dir; if ((getPos _heli select 2) > 5) then { _heli setVelocity [0,0,-7]; } else { _heli setVelocity [0,0,7*(getPos _heli select 2)/-5 min -1]; }; } else { _pilot action ["ENGINEOFF", _heli]; _heli setVelocity [0,0,0]; }; Sleep 0.01; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; for [{_i = 0},{_i < 100},{_i = _i + 1}] do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; _heli setVelocity [0,0,-0.1]; Sleep 0.05; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {}; _heli setVariable ["mando_heliroute", "waiting"]; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; while {(alive _pilot) && (damage _heli < 0.5) && ((_heli getVariable "mando_heliroute") == "waiting")} do { if (stop_heli) exitWith {dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; _pilot action ["ENGINEOFF", _heli]; Sleep 0.01; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; } else { _heli setVariable ["mando_heliroute", "waiting"]; }; if (stop_heli) exitWith {stop_heli = false;publicvariable "stop_heli";dostop _pilot;_heli setVariable ["mando_heliroute", "waiting"];}; if (!(alive _pilot) || (damage _heli >= 0.5)) exitWith {_heli setVariable ["mando_heliroute", "damaged"];}; // le serveur envoi l'Heli if (local serveur) then { while {true} do { sleep 5; // ********** evac demande ************** if (go_evac) then { go_evac = false; publicvariable "go_evac"; heli1 setdamage 0; heli1 lock false; sleep 5; dest1 = "HeliHempty" createVehicle [pos_evac_x,pos_evac_y,pos_evac_z]; smoke1 = "SmokeShellred" createvehicle [getPos dest1 select 0,(getPos dest1 select 1)+20,0]; _markerRDV = createMarker["RDV",[pos_evac_x,pos_evac_y,pos_evac_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Heli RDV"; _markerRDV setMarkerColor "ColorgreenAlpha"; _scr = [heli1,[getPos dest1],60, true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 1; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; // heli1 setDir 45; deletevehicle dest1; deletevehicle smoke1; deletemarker "RDV"; fin_heli = true; publicvariable "fin_heli"; }; // ********** avance demande ************** if (go_avance) then { go_avance = false; publicvariable "go_avance"; heli1 setdamage 0; heli1 lock false; _pilot = driver heli1; _pilot doMove [pos_map_heli_x,pos_map_heli_y,60]; }; // ********** stop demande ************** if (stop_heli) then { stop_heli = false; publicvariable "stop_heli"; heli1 setdamage 0; heli1 lock false; _pilot = driver heli1; dostop _pilot; }; // ********** lacher la bombe now ************** if (drop_charge_now) then { drop_charge_now = false; publicvariable "drop_charge_now"; heli1 setdamage 0; heli1 lock false; _bigbombe_pos1 = getPos bigbombe; nul=[heli1,bigbombe] execVM "gonza\heli\dropitnochut.sqf"; Sleep 1; //_scr1 = [heli1,[getMarkerPos "base"],60,true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 7; //smoke2 = "SmokeShellgreen" createvehicle [getPos bigbombe select 0,(getPos bigbombe select 1)+5,0]; _bigbombe_pos2 = getPos bigbombe; bigbombe setpos (_bigbombe_pos1); bomb1= "Bo_GBU12_LGB" createVehicle (_bigbombe_pos2); bomb2= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)+7,(_bigbombe_pos2 select 1),0.2]; bomb3= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)-7,(_bigbombe_pos2 select 1),0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)+7,0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)-7,0.2]; sleep 10; deletevehicle bomb1; deletevehicle bomb2; deletevehicle bomb3; deletevehicle bomb4; deletevehicle bomb5; //waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; }; // ********** Drop matos demande ************** if (go_drop) then { go_drop = false; heli1 lock false; publicvariable "go_drop"; heli1 setdamage 0; sleep 5; dest1 = "HeliHempty" createVehicle [pos_drop_x,pos_drop_y,pos_drop_z]; smoke1 = "SmokeShellred" createvehicle [getPos dest1 select 0,(getPos dest1 select 1)+20,0]; _markerRDV = createMarker["RDV",[pos_drop_x,pos_drop_y,pos_drop_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Heli DROP"; _markerRDV setMarkerColor "ColorgreenAlpha"; _scr = [heli1,[getPos dest1],100,false]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 1; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; // heli1 setDir 45; deletevehicle dest1; deletevehicle smoke1; deletemarker "RDV"; nul=[heli1,dropme] execVM "gonza\heli\dropitnochut.sqf"; Sleep 2; _scr1 = [heli1,[getMarkerPos "base"],50,true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 10; smoke2 = "SmokeShellgreen" createvehicle [getPos dropme select 0,(getPos dropme select 1)+5,0]; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; deletevehicle smoke2; deletemarker "RDV"; fin_heli = true; publicvariable "fin_heli"; }; // ********** Drop Charge demande ************** if (go_drop_charge) then { go_drop_charge = false; heli1 lock false; sleep 5; heli1 setdamage 0; publicvariable "go_drop_charge"; //dest1 = "HeliHempty" createVehicle [pos_drop_x,pos_drop_y,pos_drop_z]; _markerRDV = createMarker["RDV",[pos_drop_x,pos_drop_y,pos_drop_z]]; _markerRDV setMarkerType "Dot"; _markerRDV setMarkerDir 0; _markerRDV setMarkerText "Heli DROP Charge"; _markerRDV setMarkerColor "ColorgreenAlpha"; smoke1 = "SmokeShell" createvehicle [(getMarkerPos "RDV" select 0),(getMarkerPos "RDV" select 1),3]; _scr = [heli1,[getMarkerPos "RDV"],60,false]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 1; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; // heli1 setDir 45; //deletevehicle dest1; deletevehicle smoke1; deletemarker "RDV"; _bigbombe_pos1 = getPos bigbombe; nul=[heli1,bigbombe] execVM "gonza\heli\dropitnochut.sqf"; Sleep 1; _scr1 = [heli1,[getMarkerPos "base"],60,true]execVM"gonza\heli\mando_heliroute_arma_gonza.sqf"; Sleep 7; //smoke2 = "SmokeShellgreen" createvehicle [getPos bigbombe select 0,(getPos bigbombe select 1)+5,0]; _bigbombe_pos2 = getPos bigbombe; bigbombe setpos (_bigbombe_pos1); bomb1= "Bo_GBU12_LGB" createVehicle (_bigbombe_pos2); bomb2= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)+7,(_bigbombe_pos2 select 1),0.2]; bomb3= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0)-7,(_bigbombe_pos2 select 1),0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)+7,0.2]; bomb4= "Sh_105_HE" createVehicle [(_bigbombe_pos2 select 0),(_bigbombe_pos2 select 1)-7,0.2]; sleep 10; deletevehicle bomb1; deletevehicle bomb2; deletevehicle bomb3; deletevehicle bomb4; deletevehicle bomb5; waitUntil {heli1 getVariable "mando_heliroute" != "busy"}; deletemarker "RDV"; fin_heli = true; publicvariable "fin_heli"; }; }; }; If (true) ExitWith {}sleep 10; TitleRsc ["img","Plain"]; sleep 10; titleText ["Welcome to VTS 3", "PLAIN"]; sleep 5; titleText ["By Gonza, from Grimm s original work", "PLAIN"]; // respawn_tent setpos [getPos joueur1 select 0, getPos joueur1 select 1, -4]; respawn_tent setDamage 0; A_ammo setDamage 0; A_Weapon setDamage 0; respawn_tent setpos getPos joueur1; A_IR setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)-3]; A_ammo setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)-1]; A_Weapon setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)+1]; A_Rucksack setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)+3]; //A_M2HB setpos [(getPos joueur1 select 0)-2, (getPos joueur1 select 1)-6]; //A_MK19 setpos [(getPos joueur1 select 0), (getPos joueur1 select 1)-6]; //A_KonkursM setpos [(getPos joueur1 select 0)+2, (getPos joueur1 select 1)-6]; if ((paramsArray select 1) == 0) then { "respawn_west" setMarkerPos getPos joueur1; } // respawn_tent setpos [getPos joueur1 select 0, getPos joueur1 select 1, -4]; respawn_tent setDamage 0; A_ammo setDamage 0; A_Weapon setDamage 0; respawn_tent setpos getPos joueur1; A_IR setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)-3]; A_ammo setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)-1]; A_Weapon setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)+1]; A_Rucksack setpos [(getPos joueur1 select 0)+4, (getPos joueur1 select 1)+3]; A_M2HB setpos [(getPos joueur1 select 0)-2, (getPos joueur1 select 1)-6]; A_MK19 setpos [(getPos joueur1 select 0), (getPos joueur1 select 1)-6]; A_KonkursM setpos [(getPos joueur1 select 0)+2, (getPos joueur1 select 1)-6]; if ((paramsArray select 1) == 0) then { "respawn_west" setMarkerPos getPos joueur1; } if (local joueur1) then { // joueur1 removeAction evac_nb; // joueur1 removeAction drop_nb; // joueur1 removeAction dropcharge_nb; joueur1 removeAction normal_nb; // joueur1 removeAction captive_nb; // joueur1 removeAction spectat_nb; joueur1 removeAction respawn_nb; joueur1 removeAction respawntri_nb; advanced_nb = joueur1 addAction ["Advanced Mode", "gonza\advanced_mode.sqf"]; };_camera = "camera" camCreate [0,0,30] _camera cameraEffect ["internal","back"] checkcam = "on" ;cam on leader player _camera camSetTarget vehicle (leader _player) _camera camSetRelPos [0,0,30] _camera camSetFOV 0.700 _camera camCommit 0 if (local joueur1) then { // Parachute INIT scripts normal_nb = joueur1 addAction ["Normal Mode", "gonza\normal_mode.sqf"]; // evac_nb = joueur1 addAction ["Heli: Need Heli Evac", "gonza\heli\cli_need_evac.sqf"]; // drop_nb = joueur1 addAction ["Heli: Need weapons box", "gonza\heli\cli_need_drop.sqf"]; // dropcharge_nb = joueur1 addAction ["Heli: Need BigBombe", "gonza\heli\cli_need_drop_charge.sqf"]; // captive_nb = joueur1 addAction ["Captive mode On/Off", "gonza\cli_setcaptive.sqf"]; // spectat_nb = joueur1 addAction ["Spectating script", "spect\spectavts.sqf"]; // Halo_nb = joueur1 addAction ["Halo", "scripts\ParaDrop\StartDrop.sqf"]; // if ((paramsArray select 1) == 0) then // { respawn_nb = joueur1 addAction ["Move respawn", "gonza\moverespawn.sqf"]; respawntri_nb = joueur1 addAction ["spectat", "spect\spectavts.sqf"]; // }; joueur1 removeAction advanced_nb; }; if (local joueur1) then { joueur1 removeAction Onmaster_add; Onmaster_add = joueur1 addAction ["Put on Master", "Computer\console\console_map.sqf"]; sleep 30; joueur1 removeAction Onmaster_add; }; If (true) ExitWith {};while {true} do { sleep 1; if not(alive player) then { _weapons = weapons player; _magazines = magazines player; waitUntil {(alive player)}; removeallweapons player; {player addMagazine _x} foreach _magazines; {player addWeapon _x} foreach _weapons; }; }; while {true} do { Sync_time = date; publicvariable "Sync_time"; sleep 60; };; ******************************************************************************* ; ** Script: TakeBuilding.sqs ; ** Description: Place enemies on buildings inside an area ; ******************************************************************************* ; ** Author: RAVEN ; ******************************************************************************* ; ** Usage: [this, 100, 50, 60, 0] exec "TakeBuilding.sqs" ; ******************************************************************************* ; ** Consideraciones: ; ******************************************************************************* _unidades = [vts2_ManE7,vts2_ManE6,vts2_ManE6,vts2_ManE6,vts2_ManE13,vts2_ManE13,vts2_ManE7] ;this is to place a specific unit when the building's position is high (towers, high buildings, ..) _francotirador = vts2_ManE13 #Init _sitio = _this select 0 _Radio = _this select 1 _OcuCity = _this select 2 _OcuCasa = _this select 3 _OcuGen = _this select 4 _Ocuhome = 0 _pp = []; _ret = []; _ord = 0 ;--- Reading buildings in the area _edificios = nearestObjects [AREA, ["HOUSE"], _Radio] _max = count _edificios _quedan = ((_OcuCity * _Max) / 100) + 0.5 _quedan = _quedan - (_quedan mod 1) ;--- Get the buildings as required (_OcuCity) #Area ? _quedan <= 0 or _ord >= _max : goto "Fin_Area" _cual = random(_max) _cual = _cual - (_cual mod 1) ? _cual < 1 : _cual = 0 ? _cual in _ret : goto "Area" _ret = _ret + [_cual] _ord = _ord + 1 _quedan = _quedan - 1 goto "Area" #Fin_Area {_pp = _pp + [_edificios select _x]} foreach _ret _edificios = _pp _max = (count _edificios) ;--- Processing the selected buildings #loop _max = _max - 1 ? _max < 0 : goto "Salida" _edi = _edificios select _max _Posiciones = [] _ordPos = 0 _vacio = false ;--- Calculating the "fillable" positions on selected buildings #loop2 _pos = (_edi buildingPos _ordPos) ? (_pos select 0) + (_pos select 1) + (_pos select 2) == 0: _vacio = true ? _vacio and _ordPos == 0 : goto "loop" ? _vacio and _ordPos != 0 : goto "Coloca" _Posiciones = _Posiciones + [_pos] _ordPos = _ordPos + 1 goto "loop2" ;--- Positions selection (_Ocuhome) on building #Coloca _Ocubuild = random(_OcuCasa) if (_OcuGen != 0) then {_Ocuhome = _OcuGen} else {_Ocuhome = _Ocubuild} _quedan = ((_Ocuhome * _ordPos) / 100) + 0.5 _quedan = _quedan - (_quedan mod 1) ? _quedan > _ordPos : _quedan = _ordPos ? _quedan < 1 : _quedan = 1 _pp = []; _ret = []; _ord = 0 _XX = (count _posiciones) #Coloca2 ? _ord >= _XX : goto "Coloca3" _cual = random(_XX) _cual = _cual - (_cual mod 1) ? _cual < 1 : _cual = 0 ? _cual in _ret : goto "Coloca2" _ret = _ret + [_cual] _ord = _ord + 1 _quedan = _quedan - 1 ? _quedan > 0 : goto "Coloca2" ;--- Placing units in the selected positions of each selected building #Coloca3 {_pp = _pp + [_posiciones select _x]} foreach _ret _posiciones = _pp _MaxPos = count _posiciones #Coloca4 _MaxPos = _MaxPos - 1 ? _MaxPos < 0 : goto "loop" _pos = _posiciones select _MaxPos _cual = random(count _unidades) _tipoMan = _unidades select _cual _man = _tipoMan createunit [_pos, group general] _sol = units (group general) select 1 [general] joinsilent grpnull ? random(100) > 50 : _sol setunitpos "middle" ? (position _sol) select 2 < 10 : goto "coloca5" [_sol] joinsilent grpnull deletevehicle _sol _man = _francotirador createunit [_pos, group general] _sol = units (group general) select 1 _sol setskill 1 #coloca5 _sol setPos _pos _sol move _pos _sol setdir (random 360) ~0.10 goto "Coloca4" #salida deletevehicle Area exit// hint_missions.sqf if (objc_prise) then { hint "MISSION : \n\nReach the flag in enemy territory."; }; if (objc_cible) then { hint "MISSION : \n\nNeutralize the enemy officer. If your squad is detected in the vicinity, the officer will try to escape."; }; if (objc_destrc) then { hint "MISSION : \n\nDestroy the antenna in enemy territory."; }; if (objc_otage) then { hint "MISSION : \n\nTake the hostage away to the insertion spot.\n\nIf your squad is detected in the vicinity, the hostage will get killed.\n\nThe hostage and your platoon leader must survive."; }; If (true) ExitWith {}// A remettre pour version finale! // Gonza modif enableSaving [false, false]; removeAllWeapons player; player addWeapon "Binocular"; player addWeapon "NVGoggles"; player addMagazine "15Rnd_9x19_M9SD"; player addMagazine "15Rnd_9x19_M9SD"; player addMagazine "15Rnd_9x19_M9SD"; player addWeapon "M9SD"; SetViewDistance (paramsArray select 2); SetTerrainGrid (paramsArray select 3); check3d = false; From3D = false; breakclic = 0; _intro = [] execVM "gonza\intro.sqf"; if (isServer) then { obj1=false; obj2=false; obj3=false; obj4=false; PublicVariable "obj1"; PublicVariable "obj2"; PublicVariable "obj3"; PublicVariable "obj4"; Sync_time = date; publicvariable "Sync_time"; _sync =[] execVM "gonza\SyncTime.sqf"; }; setdate Sync_time; if ((paramsArray select 1) == 0) then { "respawn_west" setMarkerPos getMarkerpos "base"; _savew =[] execVM "gonza\saveweapon.sqf"; }else{ //Initialise revive script (this next line is needed for revive script) server execVM "revive_init.sqf"; /* //Mission parameters skiptime (paramsArray select 0); ACE_Respawn = false; ACE_RespawnFade = false; ACE_RespawnNoChat = false; if (!isServer) then {waitUntil {!isNull player}}; //re-enable code if you want to disable ACE burning [] spawn { waitUntil {!isNil "ACE_FireBurn"}; ACE_FireBurn = {_nothing = nil}; }; //set true for no ACE wounds ACE_NoWoundEffects = false; */ }; fin_heli = true ; publicvariable "fin_heli"; stop_heli = false; publicvariable "stop_heli"; spectat_on = false; convoy_on = false; take_on = false; check_Go2marker = false; helimovetype = "evac"; fin_mission = false; publicvariable "fin_mission"; _srv_heli_boucle = [] execVM "gonza\heli\srv_heli_boucle.sqf"; _acc_time = [] execVM "gonza\acctime.sqf"; _mark = [] execVM "gonza\cli_marker.sqf"; // fin Gonza modif // cra des groupes if (format ["%1", (count units gw)] == "scalar") then {gw = creategroup west;}; if (format ["%1", (count units grp_alpha)] == "scalar") then {grp_alpha = creategroup west;}; if (format ["%1", (count units grp_bravo)] == "scalar") then {grp_bravo = creategroup west;}; if (format ["%1", (count units grp_charlie)] == "scalar") then {grp_charlie = creategroup west;}; /* if (format ["%1", (count units gpe)] == "scalar") then {gpe = creategroup east;}; if (format ["%1", (count units grpe_alpha)] == "scalar") then {grpe_alpha = creategroup east ;}; if (format ["%1", (count units grpe_bravo)] == "scalar") then {grpe_bravo = creategroup east;}; if (format ["%1", (count units grpe_charlie)] == "scalar") then {grpe_charlie = creategroup east;}; if (format ["%1", (count units grpe_delta)] == "scalar") then {grpe_delta = creategroup east ;}; if (format ["%1", (count units grpe_echo)] == "scalar") then {grpe_echo = creategroup east ;}; if (format ["%1", (count units grpe_foxtrot)] == "scalar") then {grpe_foxtrot = creategroup east ;}; if (format ["%1", (count units gpi)] == "scalar") then {gpi = creategroup Resistance;}; if (format ["%1", (count units grpi_alpha)] == "scalar") then {grpi_alpha = creategroup Resistance ;}; if (format ["%1", (count units grpi_bravo)] == "scalar") then {grpi_bravo = creategroup Resistance;}; if (format ["%1", (count units grpi_charlie)] == "scalar") then {grpi_charlie = creategroup Resistance;}; if (format ["%1", (count units grpi_delta)] == "scalar") then {grpi_delta = creategroup Resistance ;}; if (format ["%1", (count units grpi_echo)] == "scalar") then {grpi_echo = creategroup Resistance ;}; if (format ["%1", (count units grpi_foxtrot)] == "scalar") then {grpi_foxtrot = creategroup Resistance ;}; */ // insertion des joueurs prsents [joueur2, joueur3, joueur4, joueur5,joueur6, joueur7, joueur8, joueur9] join grp_alpha ; [joueur10, joueur11, joueur12, joueur13,joueur14, joueur15, joueur16, joueur17] join grp_bravo ; [joueur18, joueur19, joueur20, joueur21,joueur22, joueur23, joueur24, joueur25] join grp_charlie ; /* [joueure2, joueure3, joueure4, joueure5] join grpe_alpha ; [joueure6, joueure7, joueure8, joueure9] join grpe_bravo ; [joueure10, joueure11, joueure12, joueure13] join grpe_charlie ; [joueure14, joueure15, joueure16, joueure17] join grpe_delta ; [joueure18, joueure19, joueure20, joueure21] join grpe_echo ; [joueure22, joueure23, joueure24, joueure25] join grpe_foxtrot ; [joueuri2, joueuri3, joueuri4, joueuri5] join grpi_alpha ; [joueuri6, joueuri7, joueuri8, joueuri9] join grpi_bravo ; [joueuri10, joueuri11, joueuri12, joueuri13] join grpi_charlie ; [joueuri14, joueuri15, joueuri16, joueuri17] join grpi_delta ; [joueuri18, joueuri19, joueuri20, joueuri21] join grpi_echo ; [joueuri22, joueuri23, joueuri24, joueuri25] join grpi_foxtrot ; */ groupe_joueur = ((count units gw)+(count units grp_alpha)+(count units grp_bravo)+(count units grp_charlie)) ; /*groupe_joueure = ((count units gpe)+(count units grpe_alpha)+(count units grpe_bravo)+(count units grpe_charlie)+(count units grpe_delta)+(count units grpe_echo)+(count units grpe_foxtrot)) ; groupe_joueuri = ((count units gpi)+(count units grpi_alpha)+(count units grpi_bravo)+(count units grpi_charlie)+(count units grpi_delta)+(count units grpi_echo)+(count units grpi_foxtrot)) ; */ // -------------- lancement de VTS // variables blufor_vts = false ; opfor_vts = false ; inde_vts = false ; vcs = false ; opfor_vts = false ; blufor_vts = true ; inde_vts = false ; publicvariable "opfor_vts" ; publicvariable "blufor_vts" ; publicvariable "inde_vts" ; //sat0=[] execVM "Satellite\init.sqf"; cpu0=[] execVM "Computer\init.sqf"; /* if (((groupe_joueur<1) and (groupe_joueure<1)) or ((groupe_joueure<1) and (groupe_joueuri<1)) or ((groupe_joueur<1) and (groupe_joueuri<1))) then { if (groupe_joueure>0) then { opfor_vts = true ; blufor_vts = false ; inde_vts = false ; publicvariable "opfor_vts" ; publicvariable "blufor_vts" ; publicvariable "inde_vts" ; //sat0=[] execVM "Satellite\init.sqf"; cpu0=[] execVM "Computer\init.sqf"; }; if (groupe_joueur>0) then { opfor_vts = false ; blufor_vts = true ; inde_vts = false ; publicvariable "opfor_vts" ; publicvariable "blufor_vts" ; publicvariable "inde_vts" ; //sat0=[] execVM "Satellite\init.sqf"; cpu0=[] execVM "Computer\init.sqf"; }; if (groupe_joueuri>0) then { opfor_vts = false ; blufor_vts = false ; inde_vts = true ; publicvariable "opfor_vts" ; publicvariable "blufor_vts" ; publicvariable "inde_vts" ; //sat0=[] execVM "Satellite\init.sqf"; cpu0=[] execVM "Computer\init.sqf"; }; /* TitleText [" ", "BLACK FADED",1]; sleep 1; titleText [" ", "BLACK IN",1]; cutText [" ","PLAIN DOWN",1]; cutRsc ["Logo","plain"]; } else { vcs = true ; publicvariable "vcs"; }; */ // -------------- On charge les fichiers de config _config_guerilla = [] execVM "mods\config\00_guerilla_config.sqf"; _config_blufor = [] execVM "mods\config\01_blufor_config.sqf"; _config_opfor = [] execVM "mods\config\02_opfor_config.sqf"; _config_global = [] execVM "mods\config\03_global_config.sqf"; _config_civil = [] execVM "mods\config\04_civil_config.sqf"; /* // --------------A enlever pour version finale : sat0=[] execVM "Satellite\init.sqf"; cpu0=[] execVM "Computer\init.sqf"; opfor_vts = false ; blufor_vts = false ; inde_vts = true ; publicvariable "opfor_vts" ; publicvariable "blufor_vts" ; publicvariable "inde_vts" ; */ // ---------------------------------------------------------- Toujours pas optimis ;) //_debug = [] execVM "cdg_debug.sqf"; _temps = execVM "module_temps.sqf" ; // ---------- On dsarme // Ct blufor /* for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["removeAllWeapons joueur%1 ;",_i]; }; // Ct opfor for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["removeAllWeapons joueure%1 ;",_i]; }; // Ct ind for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["removeAllWeapons joueuri%1 ;",_i]; }; */ // --------- init de certaines variables ordi choix_page = 1 ; alerte = false ; alerte1 = false ; crea_base = false ; nbre_ge = 6 ; concentration = 600 ; respawn_normal = true ; respawn_carceral = false ; arty_dispo = true ; coord_arty_pos = false ; mobile = true ; statique = false ; agressive = false ; typeia = 2 ; heure = 0 ; insertion_norm = true ; pluie = 0 ; brume = 0 ; 0 setOvercast pluie ; 0 setFog brume ; distanceobj = 0 ; temps = 0 ; // permet de faire les rglages en dbut de partie initialisat = true ; // variables boutons inc = 0; valid_ia = 0; ia_valid = "mobile"; typeia_affiche = typeia ; valid_zone = 0 ; zone_valid = "600" ; concentration_affiche = concentration ; valid_grps = 0 ; grps_valid = "6" ; grps_affiche = nbre_ge ; valid_base = 0 ; base_valid = "Non" ; valid_objectif = 0 ; objectif_valid = "Prise" ; valid_insertion = 0 ; insertion_valid = "Sol" ; valid_respawn = 0 ; respawn_valid = "Oui" ; valid_pluie = 0 ; pluie_valid = "0" ; pluie_affiche = pluie ; valid_brume = 0 ; brume_valid = "0" ; brume_affiche = brume ; valid_heure = 0 ; heure_valid = "0" ; valid_chrono = 0 ; chrono_valid = "Non" ; chrono_go = 0; chrono_depart = 0; chron = 0 ; temps_fini = false ; valid_artyr = 0 ; artyr_valid = "rglage" ; valid_sate = 0 ; sate_valid = "Appel" ; valid_camp = 0 ; camp_valid = "Blufor" ; if (blufor_vts) then {camp_valid = "Opfor" ;}; if (opfor_vts) then {camp_valid = "Blufor" ;}; if (inde_vts) then {camp_valid = "Opfor" ;}; valid_civils = 0 ; civils_valid = "Non" ; valid_mater = 0 ; mater_valid = "Rien" ; mat_eni = 0; valid_artill = 0 ; artill_valid = "Non" ; artill = 0 ; arty_eni_dispo = true ; valid_paras = 0 ; paras_valid = "Non" ; paras_eni = 0 ; paras_eni_dispo = true ; // variables base place_classe1 = 14 ; place_classe2 = 14 ; place_classe3 = 14 ; place_classe6 = 14 ; place_classe7 = 14 ; place_classe8 = 14 ; place_classe9 = 14 ; place_classe10 = 14 ; place_classe11 = 14 ; classe1_veh = 0 ; vehicule_classe1 = "Rien"; classe1_nbre = 0 ; nbre_classe1 = "0"; var_classe1 = 0; classe2_veh = 0 ; vehicule_classe2 = "Rien"; classe2_nbre = 0 ; nbre_classe2 = "0"; var_classe2 = 0; classe3_veh = 0 ; vehicule_classe3 = "Rien"; classe3_nbre = 0 ; nbre_classe3 = "0"; var_classe3 = 0; classe4_veh = 0 ; vehicule_classe4 = "Rien"; classe4_nbre = 0 ; nbre_classe4 = "0"; var_classe4 = 0; classe5_veh = 0 ; vehicule_classe5 = "Rien"; classe5_nbre = 0 ; nbre_classe5 = "0"; var_classe5 = 0; classe1_air = 0 ; air_classe1 = "Rien"; classe6_nbre = 0 ; nbre_classe6 = "0"; var_classe6 = 0; classe2_air = 0 ; air_classe2 = "Rien"; classe7_nbre = 0 ; nbre_classe7 = "0"; var_classe7 = 0; classe3_air = 0 ; air_classe3 = "Rien"; classe8_nbre = 0 ; nbre_classe8 = "0"; var_classe8 = 0; classe1_mun = 0; mun_classe1 = "Rien"; classe9_nbre = 0 ; nbre_classe9 = "0"; var_classe9 = 0; classe2_mun = 0; mun_classe2 = "Rien"; classe10_nbre = 0 ; nbre_classe10 = "0"; var_classe10 = 0; classe3_mun = 0; mun_classe3 = "Rien"; classe11_nbre = 0 ; nbre_classe11 = "0"; var_classe11 = 0; // ---- Variables console TR console_valid_camp = 0; console_valid_type = 0; console_valid_attitude = 2; console_valid_mouvement = 0; console_valid_vitesse = 1; console_valid_moral = 3; console_valid_orientation = 0; console_valid_unite = 0; var_hom_solo = 0; var_v_solo = 0 ; marqueur_tr = 0; joueur_scripteur = 0; gps_valid = 0; gps_eni_valid = true; script_commande = 0; ligne_commande_go = false ; l1_ellipse1 = 0; nom_l1_ellipse1 = "Ell." ; var_l1_ellipse1 = false ; l2_qui_act1 = 0; nom_l2_qui_act1 = "Nant" ; var_l2_qui_act1 = "NONE" ; l2_combien_act1 = 0; nom_l2_combien_act1 = "1 x" ; var_l2_combien_act1 = false ; l2_quoi_act1 = 0; nom_l2_quoi_act1 = "Prsent" ; var_l2_quoi_act1 = "PRESENT" ; l3_delai_act1 = 0; nom_l3_delai_act1 = "Dlai" ; var_l3_delai_act1 = false ; l4_type_act1 = 0; nom_l4_type_act1 = "Nant" ; var_l4_type_act1 = "NONE" ; var_trig = 0; var_marktrig = 0 ; var_l1_axeA2="" ; var_l1_axeB2="" ; var_l1_angle2="" ; var_l3_min_cadre="" ; var_l3_max_cadre="" ; var_l3_moy_cadre="" ; var_l4_nom_cadre="" ; var_l4_texte_cadre="" ; var_l5_condition_cadre="" ; var_l6_activation_cadre="" ; var_l7_desact_cadre="" ; var_trig = 0; joueursolo_telep = 1 ; code_joueurX = ""; nom_joueurX = name joueur1; // --------- init de certaines variables jeu boucle_cinema = true ; attitude = "safe" ; attitude_civils = "careless" ; formation_deplacement = "column" ; vitesse = "limited" ; alerte = false ; soin = false ; soine = false ; soini = false; approche = false; arty1_off = false; crea_in = false ; crea_obj = false ; objc_prise = false ; objc_cible = false ; objc_destrc = false ; objc_otage = false ; exercice_okreussi = false ; obj_sc_hint = false ; objec_sec = false ; var_trigg = 0; trig_suite = false; equipement_needed = true ; // ----------- addeventhandler de mort pour VTS // Ct BLUFOR joueur1 addEventHandler ["killed", {cdkilled = execVM "progression_cdg_killed.sqf"}] ; /* for[{_i=2},{_i<=25},{_i=_i+1}] do { call compile format["joueur%1 addEventHandler [""killed"", {killed%1 = execVM ""killed\progression_%1_killed.sqf""}] ;",_i]; }; // Ct OPFOR joueure1 addEventHandler ["killed", {cdkillede = execVM "killed\progression_cdge_killed.sqf"}] ; for[{_i=2},{_i<=25},{_i=_i+1}] do { call compile format["joueure%1 addEventHandler [""killed"", {killed%1e = execVM ""killed\progression_%1e_killed.sqf""}] ;",_i]; }; // Ct ind joueuri1 addEventHandler ["killed", {cdkilledi = execVM "killed\progression_cdgi_killed.sqf"}] ; for[{_i=2},{_i<=25},{_i=_i+1}] do { call compile format["joueuri%1 addEventHandler [""killed"", {killed%1i = execVM ""killed\progression_%1i_killed.sqf""}] ;",_i]; }; // ---------------- Ajout de la fonction soin // ------Ct BLUFOR for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["EHkilled%1 = joueur%1 addEventHandler [""dammaged"", {_this execVM ""soin\blast.sqf""}]",_i]; }; // infirmier blufor if (local joueur10) then { joueur10 addAction ["", "soin\clear.sqf"]; joueur10 addAction ["Soigner", "soin\soigner.sqf"]; }; kits = 3 ; // Ct OPFOR for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["EHkillede%1 = joueure%1 addEventHandler [""dammaged"", {_this execVM ""soine\blast.sqf""}]",_i]; }; // infirmier opfor if (local joueure10) then { joueure10 addAction ["", "soine\clear.sqf"]; joueure10 addAction ["Soigner", "soine\soigner.sqf"]; }; kitse = 3 ; // Ct Ind for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["EHkilledi%1 = joueuri%1 addEventHandler [""dammaged"", {_this execVM ""soini\blast.sqf""}]",_i]; }; // infirmier opfor if (local joueuri10) then { joueuri10 addAction ["", "soini\clear.sqf"]; joueuri10 addAction ["Soigner", "soini\soigner.sqf"]; }; kitsi = 3 ; */ // --------------------Pour le script camra... // Ct blufor for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["joueur_noresp_viv%1 = true ; ",_i]; }; // Ct opfor /* for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["joueure_noresp_viv%1 = true ; ",_i]; }; // Ct Ind for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["joueuri_noresp_viv%1 = true ; ",_i]; }; */ // --------------------Debug sur le nbre de joueurs prsents //call compile format["hint ""nbre opfor : %1 ; \nnbre blufor : %2"";",(groupe_joueure),(groupe_joueur)]; debug_para = false ; debug_artill = false ; even = false; if (local joueur1) then { [] execVM "computer\console\gps_rt.sqf"; [] execVM "computer\console\gps_eni_rt.sqf"; }; If (true) ExitWith {}If (true) ExitWith {}version=11; class Mission { addOns[]= { "cacharacters2", "chernarus", "CAAir2_UH1Y", "camisc3", "CAMisc", "CAAir", "CABuildings", "caweapons_ammoboxes", "ca_missions_alternativeinjurysimulation", "ca_modules_animals", "ca_modules_functions", "CAWheeled2_HMMWV_Ambulance", "CAAir2_C130J", "CAAir2_MV22", "ace_c_weapon", "acex_c_weapon", "acex_c_veh_mah6", "ace_sys_huntir", "ca_missions_garbagecollector" }; addOnsAuto[]= { "cacharacters2", "ca_modules_functions", "CAAir2_UH1Y", "ca_modules_animals", "ca_missions_alternativeinjurysimulation", "ca_missions_garbagecollector", "CAMisc", "camisc3", "CABuildings", "caweapons_ammoboxes", "CAAir", "CAWheeled2_HMMWV_Ambulance", "CAAir2_C130J", "CAAir2_MV22", "ace_c_weapon", "acex_c_weapon", "acex_c_veh_mah6", "ace_sys_huntir", "chernarus" }; randomSeed=14639115; class Intel { startWeather=0; forecastWeather=0; year=2008; month=8; day=7; hour=9; minute=20; }; class Groups { items=16; class Item0 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={-2032.8232,400.58514,17744.41}; azimut=0.33687899; id=13; side="LOGIC"; vehicle="Logic"; leader=1; skill=0.466667; text="serveur"; }; }; }; class Item1 { side="WEST"; class Vehicles { items=1; class Item0 { position[]={-178.6283,507.2753,17873.67}; id=36; side="WEST"; vehicle="USMC_Soldier"; leader=1; skill=0.60000002; text="pilote"; init="this setcaptive true ;"; description="Pilote"; }; }; }; class Item2 { side="WEST"; class Vehicles { items=1; class Item0 { position[]={-199.42664,508.00034,17858.811}; id=37; side="WEST"; vehicle="USMC_Soldier"; leader=1; skill=0.60000002; text="artilleur"; init="this setcaptive true ;"; description="Artilleur"; }; }; }; class Item3 { side="WEST"; class Vehicles { items=1; class Item0 { position[]={1339.5143,556.58429,17869.648}; id=48; side="WEST"; vehicle="USMC_Soldier"; leader=1; skill=0.60000002; init="megagroup = group this ; this setcaptive true ;"; }; }; }; class Item4 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={363.80725,554.98517,18307.723}; id=49; side="EAST"; vehicle="RU_Soldier"; leader=1; skill=0.60000002; text="h_opfor"; init="megagroupe = group this ; this setcaptive true ;"; }; }; }; class Item5 { side="CIV"; class Vehicles { items=1; class Item0 { position[]={-268.08386,514.20184,17814.002}; id=62; side="CIV"; vehicle="Citizen1"; leader=1; skill=0.60000002; text="commande_civil"; init="commande_groupe = group this ; "; }; }; }; class Item6 { side="GUER"; class Vehicles { items=1; class Item0 { position[]={1677.1388,507.56339,18426.551}; id=64; side="GUER"; vehicle="GUE_Soldier_Base"; leader=1; skill=0.466667; text="h_inde"; init="megagroupi = group this ; this setcaptive true ;"; }; }; }; class Item7 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={-1970.9438,384.61905,17751.461}; azimut=0.33687899; id=67; side="LOGIC"; vehicle="LocationLogic"; leader=1; skill=0.466667; text="server"; }; }; }; class Item8 { side="WEST"; class Vehicles { items=1; class Item0 { position[]={5136.5889,8.9544525,2346.4141}; azimut=-147.075; id=70; side="WEST"; vehicle="UH1Y"; leader=1; rank="LIEUTENANT"; skill=1; text="heli1"; init="this allowDamage false;this setCombatMode ""BLUE"";this setBehaviour ""CARELESS"";this setcaptive true;this addAction [""Land to..."", ""Computer\console\console_Heli.sqf"",""evac"",5,false,false,"""",""player == joueur1""];this addAction [""Advance to..."", ""Computer\console\console_Heli.sqf"",""avance"",6,false,false,"""",""player == joueur1""];this addAction [""Stop"", ""Computer\console\console_Heli.sqf"",""stop"",7,false,false,"""",""player == joueur1""];null0 = this execVM ""gonza\ammo.sqf"""; }; }; }; class Item9 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={5187,8.6052427,2330.0061}; id=75; side="LOGIC"; vehicle="BIS_animals_Logic"; leader=1; skill=0.60000002; synchronizations[]={54,9,1,0}; }; }; }; class Item10 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={5139.6855,8.625,2363.1682}; id=76; side="LOGIC"; vehicle="AlternativeInjurySimulation"; leader=1; skill=0.60000002; text="firstaid"; }; }; }; class Item11 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={5175.7847,8.5386429,2374.2214}; id=95; side="LOGIC"; vehicle="GarbageCollector"; leader=1; skill=0.60000002; text="Garbage_3"; synchronizations[]={0,1,54,9}; }; }; }; class Item12 { side="WEST"; class Vehicles { items=1; class Item0 { position[]={5164.9863,8.7062092,2351.5195}; azimut=32.9254; id=0; side="WEST"; vehicle="FR_TL"; player="PLAYER COMMANDER"; leader=1; rank="SERGEANT"; skill=0.466667; text="joueur1"; init="gw = group this;"; description="Game Master"; synchronizations[]={75,95}; }; }; }; class Item13 { side="WEST"; class Vehicles { items=8; class Item0 { position[]={5158.4346,8.9459953,2348.5801}; azimut=32.9254; id=1; side="WEST"; vehicle="FR_Commander"; player="PLAY CDG"; leader=1; rank="CORPORAL"; skill=0.33333299; text="joueur2"; init="grp_alpha = group this ;"; description="ALPHA - Team Leader"; synchronizations[]={75,95}; }; class Item1 { position[]={5159.7354,8.7786369,2351.9272}; azimut=32.9254; id=2; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur3"; }; class Item2 { position[]={5161.0444,8.7890835,2351.1611}; azimut=32.9254; id=3; side="WEST"; vehicle="USMC_SoldierS_Sniper"; player="PLAY CDG"; skill=0.2; text="joueur4"; }; class Item3 { position[]={5161.8306,8.8161888,2350.1995}; azimut=32.9254; id=4; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur5"; }; class Item4 { position[]={5162.5337,8.872695,2348.6943}; azimut=32.9254; id=5; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.33333299; text="joueur6"; }; class Item5 { position[]={5162.4795,8.9416132,2346.9194}; azimut=32.9254; id=6; side="WEST"; vehicle="FR_Corpsman"; player="PLAY CDG"; skill=0.2; text="joueur7"; }; class Item6 { position[]={5161.9697,8.9678831,2345.9683}; azimut=32.9254; id=7; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur8"; }; class Item7 { position[]={5160.2222,8.9970341,2345.5896}; azimut=32.9254; id=8; side="WEST"; vehicle="FR_Corpsman"; player="PLAY CDG"; skill=0.2; text="joueur9"; }; }; }; class Item14 { side="WEST"; class Vehicles { items=8; class Item0 { position[]={5165.186,8.9308472,2341.3196}; azimut=32.9254; id=9; side="WEST"; vehicle="FR_Commander"; player="PLAY CDG"; leader=1; rank="CORPORAL"; skill=0.33333299; text="joueur10"; init="grp_bravo = group this ;"; description="BRAVO - Team Leader"; synchronizations[]={75,95}; }; class Item1 { position[]={5164.5557,8.9141302,2344.8279}; azimut=32.9254; id=10; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur11"; }; class Item2 { position[]={5166.2212,8.8700008,2344.8069}; azimut=32.9254; id=11; side="WEST"; vehicle="USMC_SoldierS_Sniper"; player="PLAY CDG"; skill=0.2; text="joueur12"; }; class Item3 { position[]={5167.5005,8.8422546,2344.3298}; azimut=32.9254; id=12; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur13"; }; class Item4 { position[]={5168.394,8.8422794,2343.4346}; azimut=32.9254; id=50; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.33333299; text="joueur14"; }; class Item5 { position[]={5168.7808,8.8558779,2342.0283}; azimut=32.9254; id=51; side="WEST"; vehicle="FR_Corpsman"; player="PLAY CDG"; skill=0.2; text="joueur15"; }; class Item6 { position[]={5168.7998,8.8716097,2340.8291}; azimut=32.9254; id=52; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur16"; }; class Item7 { position[]={5168.0391,8.9007568,2339.4038}; azimut=32.9254; id=53; side="WEST"; vehicle="FR_Corpsman"; player="PLAY CDG"; skill=0.2; text="joueur17"; }; }; }; class Item15 { side="WEST"; class Vehicles { items=8; class Item0 { position[]={5171.0552,8.7335157,2347.9111}; azimut=32.9254; id=54; side="WEST"; vehicle="FR_Commander"; player="PLAY CDG"; leader=1; rank="CORPORAL"; skill=0.33333299; text="joueur18"; init="grp_charlie = group this ;"; description="CHARLIE - Team Leader"; synchronizations[]={75,95}; }; class Item1 { position[]={5170.4009,8.6882906,2350.2979}; azimut=32.9254; id=55; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur19"; }; class Item2 { position[]={5171.999,8.662818,2350.2939}; azimut=32.9254; id=56; side="WEST"; vehicle="USMC_SoldierS_Sniper"; player="PLAY CDG"; skill=0.2; text="joueur20"; }; class Item3 { position[]={5173.0215,8.6667995,2349.4224}; azimut=32.9254; id=57; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur21"; }; class Item4 { position[]={5173.8804,8.6757498,2348.4495}; azimut=32.9254; id=58; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.33333299; text="joueur22"; }; class Item5 { position[]={5174.022,8.7030525,2347.0369}; azimut=32.9254; id=59; side="WEST"; vehicle="FR_Corpsman"; player="PLAY CDG"; skill=0.2; text="joueur23"; }; class Item6 { position[]={5173.7383,8.7307901,2345.5872}; azimut=32.9254; id=60; side="WEST"; vehicle="FR_Marksman"; player="PLAY CDG"; skill=0.2; text="joueur24"; }; class Item7 { position[]={5172.646,8.7644749,2344.574}; azimut=32.9254; id=61; side="WEST"; vehicle="FR_Corpsman"; player="PLAY CDG"; skill=0.2; text="joueur25"; }; }; }; }; class Vehicles { items=59; class Item0 { position[]={965.59387,535.45367,18325.121}; id=14; side="EMPTY"; vehicle="Barrels"; skill=0.60000002; }; class Item1 { position[]={-1306.8271,392.30017,18272.266}; id=15; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge1"; }; class Item2 { position[]={-1248.598,404.02188,18271.004}; id=16; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge2"; }; class Item3 { position[]={-1196.6987,410.36523,18269.734}; id=17; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge3"; }; class Item4 { position[]={-1138.4701,420.97754,18274.797}; id=18; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge4"; }; class Item5 { position[]={-1078.9766,425.76242,18274.797}; id=19; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge5"; }; class Item6 { position[]={-1028.3428,424.90469,18273.531}; id=20; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge6"; }; class Item7 { position[]={-978.97559,425.18802,18281.129}; id=21; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge7"; }; class Item8 { position[]={-929.6084,429.0477,18283.66}; id=22; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge8"; }; class Item9 { position[]={-871.37939,438.71902,18286.191}; id=23; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge9"; }; class Item10 { position[]={-809.354,445.77625,18291.254}; id=24; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge10"; }; class Item11 { position[]={40.978149,515.62744,17891.084}; id=25; side="EMPTY"; vehicle="FlagCarrierCDF"; skill=0.60000002; text="centurions"; }; class Item12 { position[]={-1303.2832,387.58905,18223.201}; id=26; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge11"; }; class Item13 { position[]={-1250.597,401.98923,18223.201}; id=27; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge12"; }; class Item14 { position[]={-1184.7397,408.0386,18223.201}; id=28; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge13"; }; class Item15 { position[]={-1129.8584,418.46219,18222.104}; id=29; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge14"; }; class Item16 { position[]={-1071.6846,423.82645,18222.104}; id=30; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge15"; }; class Item17 { position[]={-1010.2183,422.84024,18222.104}; id=31; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge16"; }; class Item18 { position[]={-958.63037,423.13696,18223.201}; id=32; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge17"; }; class Item19 { position[]={-914.7251,427.59119,18223.201}; id=33; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge18"; }; class Item20 { position[]={-857.64893,434.1235,18223.201}; id=34; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge19"; }; class Item21 { position[]={-779.71777,441.83252,18228.689}; id=35; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge20"; }; class Item22 { position[]={1378.9984,559.99194,17833.646}; id=38; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="prison"; }; class Item23 { position[]={-1001.2427,433.69147,18143.299}; id=39; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge21"; }; class Item24 { position[]={-948.02686,437.23926,18144.533}; id=40; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge22"; }; class Item25 { position[]={-887.38623,436.92416,18140.822}; id=41; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge23"; }; class Item26 { position[]={-826.74609,441.58862,18139.584}; id=42; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge24"; }; class Item27 { position[]={-762.39209,450.61227,18139.584}; id=43; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge25"; }; class Item28 { position[]={-698.03906,457.25537,18135.873}; id=44; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge26"; }; class Item29 { position[]={-617.59619,472.53644,18130.924}; id=45; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge27"; }; class Item30 { position[]={-524.77869,473.81339,18129.686}; id=46; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="base_ge28"; }; class Item31 { position[]={524.80725,561.14832,18315.59}; id=47; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="prisone"; }; class Item32 { position[]={1730.0011,501.39417,18457.152}; id=63; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="prisoni"; }; class Item33 { position[]={557.02795,547.81573,18376.875}; id=65; side="EMPTY"; vehicle="Barrels"; skill=0.60000002; }; class Item34 { position[]={1749.3282,491.05988,18503.738}; id=66; side="EMPTY"; vehicle="Barrels"; skill=0.60000002; }; class Item35 { position[]={977.33899,535.64905,18312.902}; azimut=-181.694; id=68; side="EMPTY"; vehicle="Barrels"; leader=1; skill=1; text="dropme"; }; class Item36 { position[]={961.93958,534.45667,18312.613}; azimut=-181.694; id=69; side="EMPTY"; vehicle="Barrel4"; leader=1; skill=1; text="bigbombe"; }; class Item37 { position[]={5170.7471,8.625,2360.4683}; azimut=-238.77321; id=71; side="EMPTY"; vehicle="MASH"; leader=1; skill=1; text="respawn_tent"; }; class Item38 { position[]={5139.0107,8.8988228,2349.5234}; azimut=-147.07458; id=72; side="EMPTY"; vehicle="HeliH"; skill=0.60000002; }; class Item39 { position[]={5166.7715,8.625,2358.9268}; azimut=-58.805599; id=73; side="EMPTY"; vehicle="USSpecialWeaponsBox"; skill=0.60000002; init="null0 = this execVM ""gonza\ammo.sqf"""; }; class Item40 { position[]={5084.8252,8.9435511,2351.908}; azimut=-241.42999; id=74; side="EMPTY"; vehicle="Land_fortified_nest_big"; skill=0.60000002; text="camp"; }; class Item41 { position[]={-3009.9495,475.71634,17997.33}; id=77; side="EMPTY"; vehicle="MH60S"; skill=0.60000002; }; class Item42 { position[]={5156.9814,8.9440002,2301.3184}; azimut=-147.07458; id=78; side="EMPTY"; vehicle="HeliH"; skill=0.60000002; }; class Item43 { position[]={5156.0986,8.9169731,2300.1741}; azimut=34.400162; id=79; side="EMPTY"; vehicle="MH60S"; skill=0.60000002; }; class Item44 { position[]={5084.7061,9,2341.4658}; azimut=-148.55809; id=80; side="EMPTY"; vehicle="HMMWV_Ambulance"; skill=0.60000002; }; class Item45 { position[]={5077.4492,9,2344.4414}; azimut=-149.52095; id=81; side="EMPTY"; vehicle="HMMWV_Ambulance"; skill=0.60000002; }; class Item46 { position[]={4597.0742,10.172782,2582.4937}; azimut=121.1684; id=82; side="EMPTY"; vehicle="C130J"; skill=0.60000002; }; class Item47 { position[]={5172.0591,8.9419947,2286.0901}; azimut=214.40785; id=83; side="EMPTY"; vehicle="MV22"; skill=0.60000002; }; class Item48 { position[]={5172.2891,8.9446011,2286.0559}; azimut=-147.07458; id=84; side="EMPTY"; vehicle="HeliH"; skill=0.60000002; }; class Item49 { position[]={5142.5093,8.9808502,2311.054}; azimut=-147.07458; id=85; side="EMPTY"; vehicle="HeliH"; skill=0.60000002; }; class Item50 { position[]={5144.1846,9,2313.0334}; azimut=34.4002; id=86; side="EMPTY"; vehicle="UH1Y"; skill=0.60000002; }; class Item51 { position[]={5167.9922,8.625,2358.1172}; azimut=-59.339905; id=87; side="EMPTY"; vehicle="ACE_USLaunchersBox"; skill=0.60000002; }; class Item52 { position[]={5169.1377,8.625,2357.4214}; azimut=-60.79549; id=88; side="EMPTY"; vehicle="ACE_USSpecialWeaponsBox"; skill=0.60000002; }; class Item53 { position[]={5111.7524,8.9567013,2336.5833}; azimut=34.652637; id=89; side="EMPTY"; vehicle="ACE_MH6"; skill=0.60000002; }; class Item54 { position[]={5097.4424,9.17834,2344.3481}; azimut=33.29023; id=90; side="EMPTY"; vehicle="ACE_MH6"; skill=0.60000002; }; class Item55 { position[]={5097.8779,9.17834,2344.8357}; azimut=-147.07458; id=91; side="EMPTY"; vehicle="HeliH"; skill=0.60000002; }; class Item56 { position[]={5111.8862,8.9584837,2336.4707}; azimut=-147.07458; id=92; side="EMPTY"; vehicle="HeliH"; skill=0.60000002; }; class Item57 { position[]={5171.1069,8.625,2356.2112}; azimut=-60.413628; id=93; side="EMPTY"; vehicle="ACE_HuntIRBox"; skill=0.60000002; }; class Item58 { position[]={5172.2104,8.625,2355.6353}; azimut=-61.162628; id=94; side="EMPTY"; vehicle="ACE_USOrdnanceBox"; skill=0.60000002; }; }; class Markers { items=8; class Item0 { position[]={5148.0415,9,2345.3469}; name="base"; type="Empty"; angle=-147.07458; }; class Item1 { position[]={5146.4214,9,2342.6228}; name="mobile"; type="Empty"; angle=-147.07458; }; class Item2 { position[]={13736.47,15.896505,3745.8186}; name="Boot_Hill"; type="Empty"; }; class Item3 { position[]={7783.5376,389.59396,7824.1406}; name="center"; type="Empty"; }; class Item4 { position[]={-3201.1223,482.27689,18016.996}; name="respawn_west"; type="Empty"; angle=-147.075; }; class Item5 { position[]={8202.8252,4.858871,2184.2388}; name="OnMaster"; type="Empty"; }; class Item6 { position[]={-1417.8342,56.897404,2927.8281}; name="preview_mark"; type="Empty"; }; class Item7 { position[]={5161.1138,8.7040987,2352.8237}; name="Resp"; text="Base"; type="mil_start"; }; }; class Sensors { items=83; class Item0 { position[]={-2032.041,409.7948,17705.48}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="statique"; expActiv="clic_rouge = true"; class Effects { }; }; class Item1 { position[]={-2006.9395,404.40442,17704.832}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="mobile"; expActiv="clic_rouge = true"; class Effects { }; }; class Item2 { position[]={-1983.6577,397.19751,17706.742}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="agressive"; expActiv="clic_rouge = true"; class Effects { }; }; class Item3 { position[]={-2023.5591,432.27829,17632.988}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and progression and local serveur"; expActiv="progression_null = execVM ""progression.sqf"""; class Effects { }; }; class Item4 { position[]={-2033.4077,433.24362,17643.73}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and progression"; expActiv="hint ""Processing..."""; class Effects { }; }; class Item5 { position[]={-2025.7051,432.52228,17614.219}; a=1; b=1; timeoutMin=1; timeoutMid=1; timeoutMax=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and base2"; expActiv="base2_null = execVM ""base2.sqf"""; class Effects { }; }; class Item6 { position[]={-1943.7378,392.20941,17668.383}; a=1; b=1; timeoutMin=3; timeoutMid=3; timeoutMax=3; interruptable=1; type="END1"; age="UNKNOWN"; expCond="exercice_okreussi"; expActiv="boucle_cinema = false ; forcer_fin = true ;"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Victory"; }; }; class Item7 { position[]={-2129.3794,418.33109,17670.641}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="presentation"; expActiv="presen = [] execVM ""presentation.sqf"""; class Effects { }; }; class Item8 { position[]={-2131.6509,426.67087,17643.229}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="reglage_pluie"; expActiv="0 setOvercast pluie"; class Effects { }; }; class Item9 { position[]={-2130.6089,431.77866,17627.805}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="reglage_brume"; expActiv="0 setfog brume"; class Effects { }; }; class Item10 { position[]={-2131.2925,435.32401,17615.234}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="reglage_heure"; expActiv="skiptime heure;Sync_time = date;publicvariable ""Sync_time"";"; class Effects { }; }; class Item11 { position[]={-2147.4321,415.74643,17670.117}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="spectah"; expActiv="halo=[] execVM ""AAHALO\Start.sqf"";"; class Effects { }; }; class Item12 { position[]={-1984.6128,402.21429,17686.934}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="creation_objectif"; expActiv="creation_objectif = false ; rea_obj_null = [] execVM ""computer\cpu_objectifs.sqf"""; class Effects { }; }; class Item13 { position[]={-1975.5728,398.93204,17687.07}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="creation_insertion"; expActiv="creation_insertion = false ; rea_ins_null = [] execVM ""computer\cpu_insertion.sqf"""; class Effects { }; }; class Item14 { position[]={-1965.9058,395.14856,17687.348}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="arty_active"; expActiv="rea_arty_null = [] execVM ""computer\cpu_arty.sqf"""; class Effects { }; }; class Item15 { position[]={-1961.292,394.7435,17681.691}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="sifflement"; expActiv="sifflement = false ; publicvariable ""sifflement"" ; heli_arty say [""ari"",200]"; class Effects { }; }; class Item16 { position[]={-1958.1265,393.55829,17681.586}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and arty_debut"; expActiv="artilleur globalradio ""arty1"""; class Effects { }; }; class Item17 { position[]={-1955.0952,392.44113,17681.699}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and arty_non"; expActiv="artilleur globalradio ""arty2"""; class Effects { }; }; class Item18 { position[]={-1951.8394,391.2605,17681.699}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and arty_fin"; expActiv="artilleur globalradio ""arty3"""; class Effects { }; }; class Item19 { position[]={1414.275,562.62494,17860.131}; a=1; b=1; activationBy="WEST"; interruptable=1; age="UNKNOWN"; expCond="((count units megagroup) == (groupe_joueur+1)) and blufor_vts and respawn_carceral"; expActiv="echec_mission = true ; boucle_cinema = false ; publicvariable ""boucle_cinema"" ; publicvariable ""echec_mission"""; class Effects { }; }; class Item20 { position[]={-2213.2969,411.83047,17805.254}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="crea_radio_bravo"; expActiv="trigger setTriggerActivation [""BRAVO"", ""PRESENT"", true]; radio_bravo=true"; class Effects { }; }; class Item21 { position[]={-2203.3623,405.29816,17796.906}; a=1; b=1; interruptable=1; age="UNKNOWN"; text="Logistic Convoy"; name="trigger"; expCond="radio_bravo"; expActiv="convoi = execVM ""convoi.sqf"""; class Effects { }; }; class Item22 { position[]={-2202.8628,402.23883,17787.629}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and convoispeechdepart"; expActiv="pilote globalradio ""convoi_log1"""; class Effects { }; }; class Item23 { position[]={-2192.3804,399.49762,17787.969}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and convoispeecharrive"; expActiv="pilote globalradio ""convoi_log2"""; class Effects { }; }; class Item24 { position[]={-1985.27,417.30209,17629.594}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and progression and local serveur"; expActiv="progression_null = execVM ""progression.sqf"""; class Effects { }; }; class Item25 { position[]={-1995.1172,418.60995,17640.336}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and progression"; expActiv="hint ""Processing..."""; class Effects { }; }; class Item26 { position[]={-1995.541,421.79913,17628.148}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and progression"; expActiv="progression2_null = execVM ""equipement_progressione.sqf"""; class Effects { }; }; class Item27 { position[]={-1987.6816,422.76489,17612.156}; a=1; b=1; timeoutMin=1; timeoutMid=1; timeoutMax=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and base2"; expActiv="base2_null = execVM ""base2.sqf"""; class Effects { }; }; class Item28 { position[]={482.19006,554.03094,18120.619}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="((count units megagroupe) == (groupe_joueure+1)) and opfor_vts and respawn_carceral"; expActiv="echec_mission = true ; boucle_cinema = false ; publicvariable ""boucle_cinema"" ; publicvariable ""echec_mission"""; class Effects { }; }; class Item29 { position[]={-1928.0034,392.5444,17654.945}; a=1; b=1; timeoutMin=4; timeoutMid=4; timeoutMax=4; interruptable=1; age="UNKNOWN"; expCond="forcer_fin"; expActiv="forceend"; class Effects { }; }; class Item30 { position[]={-1916.1177,387.21033,17668.84}; a=1; b=1; interruptable=1; type="END3"; age="UNKNOWN"; expCond="vcs"; expActiv="boucle_cinema = false ; forcer_fin = true ;"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Exercise terminated : PvP will only be implemented in a later version."; }; }; class Item31 { position[]={-2111.7695,431.25131,17644.137}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="changement_temps"; expActiv="attente setFog brume ; attente setOvercast pluie ;"; class Effects { }; }; class Item32 { position[]={-1935.7788,389.40793,17670.547}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="mort_otage"; expActiv="echec_mission = true"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Hostage has been shot!"; }; }; class Item33 { position[]={-1947.2974,392.49203,17671.309}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="mort_cible"; expActiv="approche = true"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Target has been neutralized!"; }; }; class Item34 { position[]={-1933.5039,388.86862,17670.531}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="officier_parti and FinMissionFuite"; expActiv="echec_mission = true"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Enemy officer ran away!"; }; }; class Item35 { position[]={-1931.1626,388.37531,17670.469}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="civil_abattu and FinMissionCivil"; expActiv="echec_mission = true"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="No civilian must be killed"; }; }; class Item36 { position[]={1748.5294,478.6503,18561.004}; a=1; b=1; activationBy="WEST"; interruptable=1; age="UNKNOWN"; expCond="((count units megagroupi) == (groupe_joueuri+1)) and inde_vts and respawn_carceral"; expActiv="echec_mission = true ; boucle_cinema = false ; publicvariable ""boucle_cinema"" ; publicvariable ""echec_mission"""; class Effects { }; }; class Item37 { position[]={-1953.625,406.25735,17630.738}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and progression and local serveur"; expActiv="progression_null = execVM ""progression.sqf"""; class Effects { }; }; class Item38 { position[]={-1963.4731,405.74164,17641.48}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and progression"; expActiv="hint ""Processing..."""; class Effects { }; }; class Item39 { position[]={-1963.8965,409.84592,17629.293}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and progression"; expActiv="progression2_null = execVM ""equipement_progressioni.sqf"""; class Effects { }; }; class Item40 { position[]={-1956.0366,413.32828,17613.301}; a=1; b=1; timeoutMin=1; timeoutMid=1; timeoutMax=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and base2"; expActiv="base2_null = execVM ""base2.sqf"""; class Effects { }; }; class Item41 { position[]={-1928.9399,387.89108,17670.465}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="temps_fini and FinMissionChrono"; expActiv="echec_mission = true"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Timer's out!"; }; }; class Item42 { position[]={-1880.6133,389.51443,17684.098}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="otage_mission"; expActiv="objec_otage1 = [] execVM ""objectifs\otage_addaction.sqf"";"; class Effects { }; }; class Item43 { position[]={-1863.4673,393.93921,17684.473}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="otage_hop"; expActiv="objec_otage2 = [] execVM ""objectifs\appel_otage.sqf"";"; class Effects { }; }; class Item44 { position[]={-886.14697,457.36383,17187.848}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="console_spawn"; expActiv="cons_span = [] execVM ""computer\console\spawn_rt.sqf"";"; class Effects { }; }; class Item45 { position[]={-1655.8623,418.95108,17784.246}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; text="camera"; expCond="camera_spawn"; expActiv="qsg = [] execVM ""computer\console\spawn_camera.sqf"";"; class Effects { }; }; class Item46 { position[]={-1684.3103,410.96176,17761.188}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="creation_teleport"; expActiv="cons_tel = [] execVM ""computer\console\telunits_rt.sqf"";rt_equip = true ; publicvariable ""rt_equip"";"; class Effects { }; }; class Item47 { position[]={-1690.3977,415.36609,17727.979}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and rt_equip"; expActiv="progression2_null = execVM ""equipement_progression.sqf"""; class Effects { }; }; class Item48 { position[]={-1660.5325,421.98462,17727.973}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and rt_equip"; expActiv="progression2_null = execVM ""equipement_progressione.sqf"""; class Effects { }; }; class Item49 { position[]={-1632.9639,433.4473,17727.973}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and rt_equip"; expActiv="progression2_null = execVM ""equipement_progressioni.sqf"""; class Effects { }; }; class Item50 { position[]={-1684.0764,417.90073,17701.98}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="ligne_commande_go"; expActiv="lcom = [] execVM ""computer\console\commande_rt.sqf"";"; class Effects { }; }; class Item51 { position[]={-1670.2288,414.27499,17783.375}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="trig_spawn"; expActiv="trig_span = [] execVM ""computer\console\trig_rt.sqf"";"; class Effects { }; }; class Item52 { position[]={-2201.3271,401.01862,17784.918}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and convoispeechdepart"; expActiv="h_inde globalradio ""convoi_log1"""; class Effects { }; }; class Item53 { position[]={-2199.6108,399.92935,17782.75}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and convoispeechdepart"; expActiv="h_opfor globalradio ""convoi_log1"""; class Effects { }; }; class Item54 { position[]={-2190.7544,398.62936,17785.711}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and convoispeecharrive"; expActiv="h_inde globalradio ""convoi_log2"""; class Effects { }; }; class Item55 { position[]={-2188.6768,397.79361,17783.633}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and convoispeecharrive"; expActiv="h_opfor globalradio ""convoi_log2"""; class Effects { }; }; class Item56 { position[]={-1957.165,393.63443,17679.824}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and arty_debut"; expActiv="h_opfor globalradio ""arty1"""; class Effects { }; }; class Item57 { position[]={-1954.1338,392.5358,17679.938}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and arty_non"; expActiv="h_opfor globalradio ""arty2"""; class Effects { }; }; class Item58 { position[]={-1950.8784,391.36572,17679.938}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and arty_fin"; expActiv="h_opfor globalradio ""arty3"""; class Effects { }; }; class Item59 { position[]={-1956.0435,393.61389,17678.301}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and arty_debut"; expActiv="h_inde globalradio ""arty1"""; class Effects { }; }; class Item60 { position[]={-1953.0122,392.51526,17678.414}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and arty_non"; expActiv="h_inde globalradio ""arty2"""; class Effects { }; }; class Item61 { position[]={-1949.7563,391.36066,17678.414}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and arty_fin"; expActiv="h_inde globalradio ""arty3"""; class Effects { }; }; class Item62 { position[]={-1660.5403,418.92487,17761.598}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="objec_hint"; expActiv="nullos = [] execVM ""hint_missions.sqf"""; class Effects { }; }; class Item63 { position[]={-1946.2305,389.32632,17681.828}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and arty1_off and arty_dispo"; expActiv="artilleur globalradio ""arty5"""; class Effects { }; }; class Item64 { position[]={-1945.7349,389.54724,17680.391}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and arty1_off and arty_dispo"; expActiv="h_opfor globalradio ""arty5"""; class Effects { }; }; class Item65 { position[]={-1945.0659,389.74524,17678.793}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and arty1_off and arty_dispo"; expActiv="h_inde globalradio ""arty5"""; class Effects { }; }; class Item66 { position[]={-1946.0767,392.9216,17668.41}; a=1; b=1; interruptable=1; age="UNKNOWN"; expCond="approche"; expActiv="verif = [] execVM ""objec_verif.sqf"";"; class Effects { titleType="TEXT"; title="Main objective accomplished"; }; }; class Item67 { position[]={-1946.0522,393.49222,17666.398}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="objec_sec"; expActiv="verif = [] execVM ""objec_verif.sqf"";"; class Effects { }; }; class Item68 { position[]={-1947.8516,394.20694,17665.723}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="obj_sc_hint"; expActiv="schint = [] execVM ""sc_hint_false.sqf"";"; class Effects { titleType="TEXT"; title="Secondary objective accomplished"; }; }; class Item69 { position[]={-1682.9377,411.26526,17781.34}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="console_spawnmark"; expActiv="cons_span2 = [] execVM ""computer\console\spawn_marqueur.sqf"";"; class Effects { }; }; class Item70 { position[]={-1667.7595,415.04074,17780.082}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="trig_spawnmark"; expActiv="trig_span2 = [] execVM ""computer\console\trig_marqueur.sqf"";"; class Effects { }; }; class Item71 { position[]={-1645.7324,422.61646,17784.555}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="teleportsolo_spawn"; expActiv="qsg2 = [] execVM ""computer\console\teleportsolo_spawn.sqf"";"; class Effects { }; }; class Item72 { position[]={-1949.0449,390.27805,17681.699}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="blufor_vts and arty_rglge"; expActiv="artilleur globalradio ""arty4"""; class Effects { }; }; class Item73 { position[]={-1948.0835,390.42422,17679.938}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="opfor_vts and arty_rglge"; expActiv="h_opfor globalradio ""arty4"""; class Effects { }; }; class Item74 { position[]={-1946.9619,390.45685,17678.414}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="inde_vts and arty_rglge"; expActiv="h_inde globalradio ""arty4"""; class Effects { }; }; class Item75 { position[]={-675.44141,468.04242,17224.67}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="console_IAinBat"; expActiv="cons_AIinBat = [] execVM ""computer\console\spawn_IAinBat.sqf"";"; class Effects { }; }; class Item76 { position[]={-663.16748,476.87155,17026.238}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="console_convoi"; expActiv="cons_convoi = [] execVM ""computer\console\spawn_convoi.sqf"";"; class Effects { }; }; class Item77 { position[]={-268.05554,502.79791,17000.145}; a=1; b=1; repeating=1; interruptable=1; age="UNKNOWN"; expCond="console_heli"; expActiv="cons_heli = [] execVM ""computer\console\spawn_heli.sqf"";"; class Effects { }; }; class Item78 { position[]={-661.73462,485.47937,17618.029}; a=0; b=0; repeating=1; interruptable=1; age="UNKNOWN"; expCond="sec_Objective"; expActiv="sec_Objective = false;"; class Effects { track="ATrack21"; titleType="TEXT"; title="Objective Complete"; }; }; class Item79 { position[]={-2055.0684,437.48074,17622}; a=1; b=1; timeoutMin=3; timeoutMid=3; timeoutMax=3; interruptable=1; type="END2"; age="UNKNOWN"; expCond="echec_mission"; expActiv="boucle_cinema = false ; forcer_fin = true ;"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="You lose"; }; }; class Item80 { position[]={-283.53284,502.992,17440.742}; a=0; b=0; repeating=1; interruptable=1; type="END2"; age="UNKNOWN"; expCond="exercice_Failed"; expActiv="boucle_cinema = false ; forcer_fin = true ;"; class Effects { titleType="TEXT"; titleEffect="BLACK FADED"; title="Mission Failed"; }; }; class Item81 { position[]={889.36987,530.41864,14894.513}; a=0; b=0; repeating=1; interruptable=1; age="UNKNOWN"; expCond="joueur1 != vehicle (joueur1)"; expActiv="cpuaction=vehicle (joueur1) addaction [""Computer (T key)"",""Computer\cpu_dialog.sqf"",joueur1, 1, false, false,""teamSwitch"",""true""]; curvehicle = vehicle (joueur1)"; expDesactiv="curvehicle removeaction cpuaction"; class Effects { }; }; class Item82 { position[]={1220.4711,379.97903,14558.88}; a=0; b=0; repeating=1; interruptable=1; age="UNKNOWN"; expCond="joueur1 == vehicle (joueur1)"; expActiv="cpuaction1=joueur1 addaction [""Computer (T key)"",""Computer\cpu_dialog.sqf"",joueur1, 1, false, false,""teamSwitch"",""true""];"; expDesactiv="joueur1 removeaction cpuaction1"; class Effects { }; }; }; }; class Intro { addOns[]= { "chernarus" }; addOnsAuto[]= { "chernarus" }; randomSeed=10505421; class Intel { startWeather=0.25; forecastWeather=0.25; year=2008; month=10; day=11; hour=9; minute=20; }; }; class OutroWin { addOns[]= { "chernarus" }; addOnsAuto[]= { "chernarus" }; randomSeed=16222739; class Intel { startWeather=0.25; forecastWeather=0.25; year=2008; month=10; day=11; hour=9; minute=20; }; }; class OutroLoose { addOns[]= { "chernarus" }; addOnsAuto[]= { "chernarus" }; randomSeed=9198151; class Intel { startWeather=0.25; forecastWeather=0.25; year=2008; month=10; day=11; hour=9; minute=20; }; }; mobile = true ; publicvariable "mobile" ; If (true) ExitWith {}// -------------------------------------------------------------------------------------------------------- // Ce fichier permet de jouer, au niveau opfor, avec (ou contre) les addons que vous préférez. Remplacez simplement les noms et les références... // Je vous conseille fortement de sauvegarder ce fichier... on ne sait jamais! // AMUSEZ-VOUS BIEN !!! // -------------------------------------------------------------------------------------------------------- // // -------equipement des joueurs. ATTENTION, mettez les munitions avant les armes! // equipement du joueur chef de section (joueure1) /* equipement_cds_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenade"; _joueurx addMagazine "HandGrenade"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "AK74"; _joueurx addweapon "Makarov"; }; // equipement des joueurs chefs de groupes (alpha, bravo, etc...) (joueure2, 6, 10, 14, 18, 22) equipement_cde_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenade"; _joueurx addMagazine "HandGrenade"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "AK74"; }; // equipement des joueurs grenadiers (joueure3 7 11 15 19 23) equipement_grenade_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "AK74GL"; }; // equipement des joueurs mitrailleurs (joueure4 8 12 16 20 24) equipement_auto_e={ _joueurx = _this select 0 ; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "PK"; }; // equipement des joueurs spécialistes AC (joueur5 9 17 21) equipement_ac_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "PG7V"; _joueurx addMagazine "PG7V"; _joueurx addMagazine "PG7V"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "RPG7V"; _joueurx addweapon "AK74"; }; // equipement des joueurs snipers (joueure13 25) equipement_sniper_e={ _joueurx = _this select 0 ; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addweapon "Makarov"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "SVD"; }; */ // ------------------- infanterie // -------hommes vts2_Mani1 = "GUE_Soldier_Base"; nomvts2_Mani1 = "GUE_Soldier_Base"; vts2_Mani2 = "GUE_Soldier_1"; nomvts2_Mani2 = "GUE_Soldier_1"; vts2_Mani3 = "GUE_Soldier_Crew"; nomvts2_Mani3 = "GUE_Soldier_Crew"; // SoldierENOG vts2_Mani4 = "GUE_Soldier_Pilot"; nomvts2_Mani4 = "GUE_Soldier_Pilot"; //Soldieri vts2_Mani5 = "GUE_Soldier_2"; nomvts2_Mani5 = "GUE_Soldier_2"; //Machinegunner vts2_Mani6 = "GUE_Soldier_3"; nomvts2_Mani6 = "GUE_Soldier_3"; //AT Specialist vts2_Mani7 = "GUE_Soldier_GL"; nomvts2_Mani7 = "GUE_Soldier_GL"; //AA Specialist vts2_Mani8 = "GUE_Worker2"; nomvts2_Mani8 = "GUE_Worker2"; //ingineer vts2_Mani9 = "GUE_Woodlander1"; nomvts2_Mani9 = "GUE_Woodlander1"; //Squad Leader vts2_Mani10 = "GUE_Woodlander2"; nomvts2_Mani10 = "GUE_Woodlander2"; //Team Leader vts2_Mani11 = "GUE_Woodlander3"; nomvts2_Mani11 = "GUE_Woodlander3"; //Officeri vts2_Mani12 = "GUE_Villager3"; nomvts2_Mani12 = "GUE_Villager3"; //Sniper vts2_Mani13 = "GUE_Villager4"; nomvts2_Mani13 = "GUE_Villager4"; //SoldieriSaboteur vts2_Mani14 = "GUE_Soldier_CO"; nomvts2_Mani14 = "GUE_Soldier_CO"; //Especas vts2_Mani15 = "GUE_Commander"; nomvts2_Mani15 = "GUE_Commander"; //Especas Saboteur vts2_Mani16 = "GUE_Commander"; nomvts2_Mani16 = "GUE_Commander"; //Especas Marksman vts2_Mani17 = "GUE_Soldier_AA"; nomvts2_Mani17 = "GUE_Soldier_AA"; //Pilot vts2_Mani18 = "GUE_Soldier_AR"; nomvts2_Mani18 = "GUE_Soldier_AR"; //Camel Pilot vts2_Mani19 = "GUE_Soldier_MG"; nomvts2_Mani19 = "GUE_Soldier_MG"; //Crewman vts2_Mani20 = "GUE_Soldier_Sniper"; nomvts2_Mani20 = "GUE_Soldier_Sniper"; // ------------------- matériel // -------- Matériel terrestre //BMP-2 vts2_Vehi1 = "ACE_ATV_Honda_Desert" ; nomvts2_Vehi1 = "Ace Quad" ; //T90 vts2_Vehi2 = "ACE_M113A3" ; nomvts2_Vehi2 = "ACE_M113A3" ; //T-72 vts2_Vehi3 = "ACE_Vulcan" ; nomvts2_Vehi3 = "ACE_Vulcan" ; //Shilka vts2_Vehi4 = "ACE_Stryker_ICV_M2" ; nomvts2_Vehi4 = "ACE_Stryker_ICV_M2" ; //UAZ vts2_Vehi5 = "ACE_Stryker_RV_SLAT" ; nomvts2_Vehi5 = "ACE_Stryker_RV_SLAT" ; //UAZ with Machine Gun vts2_Vehi6 = "ACE_Stryker_MGS_Slat" ; nomvts2_Vehi6 = "ACE_Stryker_MGS_Slat" ; //UAZ AGS-30 vts2_Vehi7 = "ACE_Stryker_TOW_MG" ; nomvts2_Vehi7 = "ACE_Stryker_TOW_MG" ; //ural vts2_Vehi8 = "ACE_Stryker_TOW" ; nomvts2_Vehi8 = "ACE_Stryker_TOW" ; //Ural Open vts2_Vehi9 = "ACE_Stryker_ICV_M2_SLAT" ; nomvts2_Vehi9 = "ACE_Stryker_ICV_M2_SLAT" ; //Ural Repair vts2_Vehi10 = "ACE_Stryker_TOW_Slat" ; nomvts2_Vehi10 = "ACE_Stryker_TOW_Slat" ; //Ural Ammo vts2_Vehi11 = "ACE_M113A3_Ambul" ; nomvts2_Vehi11 = "ACE_M113A3_Ambul" ; //Ural Fuel vts2_Vehi12 = "ACE_M6A1_D" ; nomvts2_Vehi12 = "ACE_M6A1_D" ; //BRDM-2 vts2_Vehi13 = "ACE_M2A2_W" ; nomvts2_Vehi13 = "ACE_M2A2_W_Bradeley" ; //BMD1 vts2_Vehi14 = "ACE_M1A1HC" ; nomvts2_Vehi14 = "ACE_M1A1HC" ; // Moto =) l'OPFOR n'a aucune moto. Celle-ci n'est pas franchement militaire, mais au moins elle est un chouilla différente de la moto Blufor... vts2_Vehi15 = "ACE_M6A1_W" ; nomvts2_Vehi15 = "ACE_M6A1_W" ; // air //KA-50 //vts2_Vehi15 = "KA50" ; //nomvts2_Vehi15 = "H_KA-50" ; //KA-52 vts2_Vehi16 = "ACE_MH6" ; nomvts2_Vehi16 = "ACE_MH6 " ; //Mi17 (57 mm Rockets) vts2_Vehi17 = "ACE_AH6" ; nomvts2_Vehi17 = "ACE_AH6" ; //Mi17 (57 mm Rockets) //vts2_Vehi16 = "Mi17" ; //nomvts2_Vehi16 = "H_Mi17(Rockets)" ; //Mi17 vts2_Vehi18 = "ACE_AH6_GAU19" ; nomvts2_Vehi18 = "ACE_AH6_GAU19" ; //Su-34 vts2_Vehi19 = "" ; nomvts2_Vehi19 = "" ; //Su-34B vts2_Vehi20 = "ACE_HC130_N" ; nomvts2_Vehi20 = "ACE_C130_refuel" ; //Camel i vts2_Vehi21 = "Camel2" ; nomvts2_Vehi21 = "P_Camel" ; // mer vts2_Vehi22 = "PBX"; nomvts2_Vehi22 = "B_PBX"; //----------------------------- Statique // -------- caisses de munition // Armes vts2_Vehi23 = "ACE_USSpecialWeaponsBox"; nomvts2_Vehi23 = "ACE_USSpecialWeaponsBox"; // Munitions vts2_Vehi24 = "ACE_USLaunchersBox"; nomvts2_Vehi24 = "ACE_USLaunchersBox"; // Spécial vts2_Vehi25 = "ACE_USOrdnanceBox"; nomvts2_Vehi25 = "ACE_USOrdnanceBox"; // -------- groupes nomvts2_Grpi1 = "Plt. T72"; nomvts2_Grpi2 = "Inf. base"; nomvts2_Grpi3 = "Inf. armes"; nomvts2_Grpi4 = "Inf. spec"; nomvts2_Grpi5 = "Inf.+ UAZ"; nomvts2_Grpi6 = "Inf. meca"; nomvts2_Grpi7 = "Esc. Mi17"; nomvts2_Grpi8 = "Esc. KA-50"; // -------- armes lourdes //AGS-30 vts2_Stai1 = "AGS" ; nomvts2_Stai1 = "AGS-30" ; //D30 vts2_Stai2 = "D30" ; nomvts2_Stai2 = "D30" ; //DSHKM vts2_Stai3 = "DSHKM" ; nomvts2_Stai3 = "DSHKM" ; nomvts2_Stai4 = "Checkpoint" ; nomvts2_Stai5 = "Outpost" ; If (true) ExitWith {}// -------------------------------------------------------------------------------------------------------- // Ce fichier permet de jouer, au niveau blufor, avec (ou contre) les addons que vous préférez. Remplacez simplement les noms et les références... // Je vous conseille fortement de sauvegarder ce fichier... on ne sait jamais! // AMUSEZ-VOUS BIEN !!! // -------------------------------------------------------------------------------------------------------- // // -------equipement des joueurs. ATTENTION, mettez les munitions avant les armes! /* // equipement du joueur chef de section (joueur1) equipement_cds={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "M4AIM"; _joueurx addweapon "M9"; _joueurx addweapon "NVGoggles" ; }; // equipement des joueurs chefs de groupes (alpha, bravo, etc...) (joueur2, 6, 10, 14, 18, 22) equipement_cde={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "M4AIM"; }; // equipement des joueurs grenadiers (joueur3 7 11 15 19 23) equipement_grenade={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "M4GL"; }; // equipement des joueurs mitrailleurs (joueur4 8 12 16 20 24) equipement_auto={ _joueurx = _this select 0 ; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addweapon "M249"; _joueurx addweapon "NVGoggles"; }; // equipement des joueurs spécialistes AC (joueur5 9 17 21) equipement_ac={ _joueurx = _this select 0 ; _joueurx addMagazine "M136"; _joueurx addMagazine "M136"; _joueurx addMagazine "M136"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addweapon "M4AIM"; _joueurx addweapon "M136"; _joueurx addweapon "NVGoggles"; }; // equipement des joueurs snipers (joueur13 25) equipement_sniper={ _joueurx = _this select 0 ; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "M9"; _joueurx addweapon "M107"; }; */ // ------------------- infanterie // -------hommes //Rifleman vts2_ManW1 = "USMC_Soldier"; nomvts2_ManW1 = "Rifleman"; //Grenadier vts2_ManW2 = "USMC_Soldier_GL"; nomvts2_ManW2 = "Grenadier"; //Medic vts2_ManW3 = "USMC_Soldier_Medic"; nomvts2_ManW3 = "Medic"; //NOG vts2_ManW4 = "SoldierWNOG"; nomvts2_ManW4 = "SoldierWNOG"; //Soldier vts2_ManW5 = "SoldierW"; nomvts2_ManW5 = "Soldier"; //Automatic Rifleman vts2_ManW6 = "USMC_SoldierS"; nomvts2_ManW6 = "Automatic Rifleman"; //Machinegunner vts2_ManW7 = "USMC_Soldier_MG"; nomvts2_ManW7 = "Machinegunner"; //AT Specialist vts2_ManW8 = "USMC_Soldier_AT"; nomvts2_ManW8 = "AT Specialist"; //AA Specialist vts2_ManW9 = "USMC_Soldier_AA"; nomvts2_ManW9 = "AA Specialist"; //Sniper vts2_ManW10 = "USMC_SoldierS_Sniper"; nomvts2_ManW10 = "Sniper"; // Saboteur vts2_ManW11 = "USMC_SoldierS_Engineer"; nomvts2_ManW11 = "Saboteur"; //SF Saboteur vts2_ManW12 = "FR_Sapper"; nomvts2_ManW12 = "SF Saboteur"; //SF Saboteur2 vts2_ManW13 = "FR_Sapper"; nomvts2_ManW13 = "SF Saboteur2"; //SF Recon vts2_ManW14 = "FR_Sapper"; nomvts2_ManW14 = "SF Recon"; //SF Assault vts2_ManW15 = "FR_Assault_R"; nomvts2_ManW15 = "SF Assault"; //SF Marksman vts2_ManW16 = "FR_Marksman"; nomvts2_ManW16 = "SF Marksman"; //Engineer vts2_ManW17 = "USMC_SoldierS_Engineer"; nomvts2_ManW17 = "Engineer"; //Squad Leader vts2_ManW18 = "USMC_Soldier_SL"; nomvts2_ManW18 = "Squad Leader"; //Team Leader vts2_ManW19 = "USMC_Soldier_TL"; nomvts2_ManW19 = "Team Leader"; //Officer vts2_ManW20 = "USMC_Soldier_Officer"; nomvts2_ManW20 = "Officer"; //Pilot vts2_ManW21 = "USMC_Soldier_Pilot"; nomvts2_ManW21 = "Pilote"; //Crewman vts2_ManW22 = "USMC_Soldier_Crew"; nomvts2_ManW22 = "Pilot"; //Camel Pilot vts2_ManW23 = "USMC_LHD_Crew_Green"; nomvts2_ManW23 = "USMC_LHD_Crew_Green"; // ------------------- matériel // -------- Matériel terrestre //M1A1 vts2_VehW1 = "M1A1"; nomvts2_VehW1 = "M1A1"; //M113 vts2_VehW2 = "M1A2_TUSK_MG"; nomvts2_VehW2 = "M1A2_TUSK_MG"; //M113 Ambulance vts2_VehW3 = "HMMWV_Ambulance"; nomvts2_VehW3 = "HMMWV_Ambulance"; //M163 Vulcan vts2_VehW4 = "MLRS"; nomvts2_VehW4 = "MLRS"; // HMMWV vts2_VehW5 = "HMMWV"; nomvts2_VehW5 = "HMMWV"; // HMMWV M2 vts2_VehW6 = "HMMWV_M2"; nomvts2_VehW6 = "HMMWV_M2"; //HMMWV TOW vts2_VehW7 = "HMMWV_TOW"; nomvts2_VehW7 = "HMMWV_TOW"; //ACE_M60_A3 vts2_VehW8 = "HMMWV_MK19"; nomvts2_VehW8 = "HMMWV_MK19"; //5t Truck vts2_VehW9 = "MTVR"; nomvts2_VehW9 = "MTVR"; //5t Truck Open vts2_VehW10 = "Truck5tOpen"; nomvts2_VehW10 = "5t Truck Open"; //Repair Truck vts2_VehW11 = "MtvrRepair"; nomvts2_VehW11 = "MtvrRepair"; //Ammo Truck vts2_VehW12 = "MtvrReammo"; nomvts2_VehW12 = "MtvrReammo"; //Refuel Truck vts2_VehW13 = "MtvrRefuel"; nomvts2_VehW13 = "MtvrRefuel"; //5t Truck with Machine Gun vts2_VehW14 = "Truck5tMG"; nomvts2_VehW14 = "5t Truck MG"; //Stryker ICV (M2) vts2_VehW15 = "Stryker_ICV_M2"; nomvts2_VehW15 = "Stryker M2"; //Stryker ICV (MK19) vts2_VehW16 = "LAV25"; nomvts2_VehW16 = "LAV25"; //Stryker ATGM vts2_VehW17 = "AAV"; nomvts2_VehW17 = "AAV"; // M1030 vts2_VehW18 = "M1030"; nomvts2_VehW18 = "M1030"; // -------- Matériel aérien //AH-6 vts2_VehW19 = "UH1Y"; nomvts2_VehW19 = "H_UH1Y"; //AH-1Z vts2_VehW20 = "AH1Z"; nomvts2_VehW20 = "H_AH-1Z"; //AH64 HE_F vts2_VehW21 = "MH60S"; nomvts2_VehW21 = "H_MH60S"; //UH-60 vts2_VehW22 = "MV22"; nomvts2_VehW22 = "P_MV22"; //MH-6 vts2_VehW23 = "F35B"; nomvts2_VehW23 = "P_F35B"; //AV8B STOVL vts2_VehW24 = "AV8B"; nomvts2_VehW24 = "P_AV8B(GBU)STOVL"; //AV8B (GBU) STOVL vts2_VehW25 = "AV8B2"; nomvts2_VehW25 = "P_AV8B STOVL"; //A-10 vts2_VehW26 = "A10"; nomvts2_VehW26 = "P_A-10"; //Camel vts2_VehW27 = "C130J"; nomvts2_VehW27 = "P_C130"; // mer //CRRC vts2_VehW28 = "Zodiac" ; nomvts2_VehW28 = "B_Zodiac" ; //RHIB vts2_VehW29 = "RHIB" ; nomvts2_VehW29 = "B_RHIB" ; //RHIB (2 Turrets) vts2_VehW30 = "RHIB2Turret" ; nomvts2_VehW30 = "B_RHIB (2)" ; //CRRC vts2_VehW31 = "MMT_USMC" ; nomvts2_VehW31 = "Bike" ; //----------------------------- Statique // -------- caisses de munition // Armes vts2_VehW32 = "USBasicWeaponsBox"; nomvts2_VehW32 = "W_Basic Weapons"; // Munitions vts2_VehW33 = "USBasicAmmunitionBox"; nomvts2_VehW33 = "W_Basic Ammunition"; // Spécial vts2_VehW34 = "USSpecialWeaponsBox"; nomvts2_VehW34 = "W_Special Weapons"; vts2_VehW35 = "USLaunchersBox"; nomvts2_VehW35 = "W_Launchers Weapons"; // -------- groupes nomvts2_GrpW1 = "Plt. M1A1"; nomvts2_GrpW2 = "Inf. base"; nomvts2_GrpW3 = "Inf. armes"; nomvts2_GrpW4 = "Inf. spec"; nomvts2_GrpW5 = "Inf.+ HMMV"; nomvts2_GrpW6 = "Inf. meca"; nomvts2_GrpW7 = "Esc. UH60"; nomvts2_GrpW8 = "Esc. AH1Z"; // -------- armes lourdes //M119 vts2_StaW1 = "M119"; nomvts2_StaW1 = "M119"; //M2 vts2_StaW2 = "M2StaticMG"; nomvts2_StaW2 = "M2"; //Projecteur vts2_StaW3 = "SearchLight"; nomvts2_StaW3 = "Search Light"; nomvts2_StaW4 = "Checkpoint" ; nomvts2_StaW5 = "Outpost" ; If (true) ExitWith {}// -------------------------------------------------------------------------------------------------------- // Ce fichier permet de jouer, au niveau opfor, avec (ou contre) les addons que vous préférez. Remplacez simplement les noms et les références... // Je vous conseille fortement de sauvegarder ce fichier... on ne sait jamais! // AMUSEZ-VOUS BIEN !!! // -------------------------------------------------------------------------------------------------------- // // -------equipement des joueurs. ATTENTION, mettez les munitions avant les armes! // equipement du joueur chef de section (joueure1) /* equipement_cds_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenade"; _joueurx addMagazine "HandGrenade"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "AK74"; _joueurx addweapon "Makarov"; }; // equipement des joueurs chefs de groupes (alpha, bravo, etc...) (joueure2, 6, 10, 14, 18, 22) equipement_cde_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenade"; _joueurx addMagazine "HandGrenade"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "AK74"; }; // equipement des joueurs grenadiers (joueure3 7 11 15 19 23) equipement_grenade_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addMagazine "1Rnd_HE_GP25"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "AK74GL"; }; // equipement des joueurs mitrailleurs (joueure4 8 12 16 20 24) equipement_auto_e={ _joueurx = _this select 0 ; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addMagazine "100Rnd_762x54_PK"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "PK"; }; // equipement des joueurs spécialistes AC (joueur5 9 17 21) equipement_ac_e={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "30Rnd_545x39_AK"; _joueurx addMagazine "PG7V"; _joueurx addMagazine "PG7V"; _joueurx addMagazine "PG7V"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "RPG7V"; _joueurx addweapon "AK74"; }; // equipement des joueurs snipers (joueure13 25) equipement_sniper_e={ _joueurx = _this select 0 ; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "10Rnd_762x54_SVD"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "8Rnd_9x18_Makarov"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addweapon "Makarov"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "SVD"; }; */ // ------------------- infanterie // -------hommes vts2_ManE1 = "RU_Soldier"; nomvts2_ManE1 = "Rifleman"; vts2_ManE2 = "RU_Soldier_GL"; nomvts2_ManE2 = "Grenadier"; vts2_ManE3 = "RU_Soldier_Medic"; nomvts2_ManE3 = "Medic "; // SoldierENOG vts2_ManE4 = "RU_Soldier"; nomvts2_ManE4 = "RU_Soldier"; //SoldierE vts2_ManE5 = "RU_Soldier"; nomvts2_ManE5 = "RU_Soldier"; //Machinegunner vts2_ManE6 = "RU_Soldier_MG"; nomvts2_ManE6 = "Machinegunner"; //AT Specialist vts2_ManE7 = "RU_Soldier_AT"; nomvts2_ManE7 = "AT Specialist"; //AA Specialist vts2_ManE8 = "RU_Soldier_AA"; nomvts2_ManE8 = "AA Specialist"; //Engineer vts2_ManE9 = "RUS_Soldier_Sab"; nomvts2_ManE9 = "Engineer"; //Squad Leader vts2_ManE10 = "RU_Soldier_SL"; nomvts2_ManE10 = "Squad Leader"; //Team Leader vts2_ManE11 = "RU_Soldier_TL"; nomvts2_ManE11 = "Team Leader"; //OfficerE vts2_ManE12 = "RU_Soldier_Officer"; nomvts2_ManE12 = "Officer"; //Sniper vts2_ManE13 = "RU_Soldier_Sniper"; nomvts2_ManE13 = "Sniper"; //SoldierESaboteur vts2_ManE14 = "RUS_Soldier_Sab"; nomvts2_ManE14 = "Saboteur"; //Especas vts2_ManE15 = "RUS_Soldier_GL"; nomvts2_ManE15 = "Especas"; //Especas Saboteur vts2_ManE16 = "RUS_Soldier2"; nomvts2_ManE16 = "Especas Saboteur"; //Especas Marksman vts2_ManE17 = "RUS_Soldier_Marksman"; nomvts2_ManE17 = "Especas Marksman"; //Pilot vts2_ManE18 = "RU_Soldier_Pilot"; nomvts2_ManE18 = "Pilot"; //Camel Pilot vts2_ManE19 = "RU_Soldier_Pilot"; nomvts2_ManE19 = "Camel Pilot"; //Crewman vts2_ManE20 = "RU_Soldier_Crew"; nomvts2_ManE20 = "Crewman"; // ------------------- matériel // -------- Matériel terrestre //BMP-2 vts2_VehE1 = "BMP2_INS" ; nomvts2_VehE1 = "BMP-2" ; //T90 vts2_VehE2 = "T90" ; nomvts2_VehE2 = "T-90" ; //T-72 vts2_VehE3 = "T72_INS" ; nomvts2_VehE3 = "T-72" ; //Shilka vts2_VehE4 = "2S6M_Tunguska" ; nomvts2_VehE4 = "Tunguska" ; //UAZ vts2_VehE5 = "UAZ_RU" ; nomvts2_VehE5 = "UAZ" ; //UAZ with Machine Gun vts2_VehE6 = "UAZ_MG_INS" ; nomvts2_VehE6 = "UAZ MG" ; //UAZ AGS-30 vts2_VehE7 = "UAZ_AGS30_RU" ; nomvts2_VehE7 = "UAZ AGS-30" ; //ural vts2_VehE8 = "Kamaz" ; nomvts2_VehE8 = "Kamaz" ; //Ural Open vts2_VehE9 = "KamazOpen" ; nomvts2_VehE9 = "Kamaz Open" ; //Ural Repair vts2_VehE10 = "KamazRepair" ; nomvts2_VehE10 = "Kamaz Repair" ; //Ural Ammo vts2_VehE11 = "KamazReammo" ; nomvts2_VehE11 = "Kamaz Reammo" ; //Ural Fuel vts2_VehE12 = "KamazRefuel" ; nomvts2_VehE12 = "Kamaz Refuel" ; vts2_VehE13 = "GRAD_RU" ; nomvts2_VehE13 = "GRAD" ; //BRDM-2 vts2_VehE14 = "BTR90" ; nomvts2_VehE14 = "BTR90" ; //BMD1 vts2_VehE15 = "BMP3" ; nomvts2_VehE15 = "BMP3" ; vts2_VehE16 = "BRDM2_INS" ; nomvts2_VehE16 = "BRDM2_INS" ; // Moto =) l'OPFOR n'a aucune moto. Celle-ci n'est pas franchement militaire, mais au moins elle est un chouilla différente de la moto Blufor... vts2_VehE17 = "GAZ_Vodnik_HMG" ; nomvts2_VehE17 = "GAZ_Vodnik_MG" ; // air //KA-50 //vts2_VehE15 = "KA50" ; //nomvts2_VehE15 = "H_KA-50" ; //KA-52 vts2_VehE18 = "Ka52Black" ; nomvts2_VehE18 = "H_Ka52" ; //Mi17 (57 mm Rockets) vts2_VehE19 = "Mi24_V" ; nomvts2_VehE19 = "H_Mi24" ; //Mi17 (57 mm Rockets) //vts2_VehE16 = "Mi17" ; //nomvts2_VehE16 = "H_Mi17(Rockets)" ; //Mi17 vts2_VehE20 = "Mi17_CDF" ; nomvts2_VehE20 = "H_Mi17" ; //Su-34 vts2_VehE21 = "SU34" ; nomvts2_VehE21 = "P_Su-34" ; //Su-34B vts2_VehE22 = "Su39" ; nomvts2_VehE22 = "P_Su-39" ; // mer vts2_VehE23 = "PBX"; nomvts2_VehE23 = "B_PBX"; //Camel E vts2_VehE24 = "MMT_USMC" ; nomvts2_VehE24 = "Bike" ; //----------------------------- Statique // -------- caisses de munition // Armes vts2_VehE25 = "RUBasicWeaponsBox"; nomvts2_VehE25 = "W_Basic Weapons"; // Munitions vts2_VehE26 = "RUBasicAmmunitionBox"; nomvts2_VehE26 = "W_Basic Ammunition"; // Spécial vts2_VehE27 = "RUSpecialWeaponsBox"; nomvts2_VehE27 = "W_Special Weapons"; vts2_VehE28 = "RULaunchersBox"; nomvts2_VehE28 = "W_Launchers Weapons"; // -------- groupes nomvts2_GrpE1 = "Plt. T72"; nomvts2_GrpE2 = "Inf. base"; nomvts2_GrpE3 = "Inf. armes"; nomvts2_GrpE4 = "Inf. spec"; nomvts2_GrpE5 = "Inf.+ UAZ"; nomvts2_GrpE6 = "Inf. meca"; nomvts2_GrpE7 = "Esc. Mi17"; nomvts2_GrpE8 = "Esc. KA-50"; // -------- armes lourdes //AGS-30 vts2_StaE1 = "AGS" ; nomvts2_StaE1 = "AGS-30" ; //D30 vts2_StaE2 = "D30" ; nomvts2_StaE2 = "D30" ; //DSHKM vts2_StaE3 = "DSHKM" ; nomvts2_StaE3 = "DSHKM" ; nomvts2_StaE4 = "Checkpoint" ; nomvts2_StaE5 = "Outpost" ; If (true) ExitWith {}// -------------------------------------------------------------------------------------------------------- // Ce fichier vous permet de modifier le jeu en profondeur (composition des groupes ennemis, etc...) // Je vous conseille fortement de sauvegarder ce fichier... on ne sait jamais! // AMUSEZ-VOUS BIEN !!! // // Important : utilisez les références définies dans les fichiers 00_opfor_config.sqf, 00_blufor_config.sqf, 00_guerilla_config.sqf... par exemple : vts2_ManE10 // // -------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------- // Paramètres généraux // xxxxxxxxxxxxxxxxxxx // Remplacez 'true' par 'false' pour désactiver les options ci-dessous. Mettez ce que vous voulez entre les guillemets du mdp. Modifier les compétences de l'IA par un nombre entre 0 et 1, avec décimales (par exemple : 0.3) // -------------------------------------------------------------------------------------------------------- // ---------- Paramètres généraux // Mot de passe du chef de section * shortcut of the computer ShortCut=0; PublicVariable "ShortCut"; // Compétence de l'IA * AI Skill moral_ia = 0.5; // S'il joue seul et n'a pas d'amis, le joueur sera accompagné d'IA * Do friendly AI spawn if player alone JoueurSeulIA = true ; PublicVariable "JoueurSeulIA"; // nombre de joeurs maximum * max number of players nbre_joueursX = 25; PublicVariable "nbre_joueursX"; // --------- Les objectifs / les fins // La mort d'un civil provoque l'échec de la mission * Civilian death causes mission to end FinMissionCivil = true ; PublicVariable "FinMissionCivil"; // La fin du chrono provoque l'échec de la mission * Timer end causes mission to end FinMissionChrono = true ; publicvariable "FinMissionChrono"; // La fuite de l'officier ennemi (si objectif "cible" activé) provoque l'échec de la mission * enemy officer fleeing causes mission to end FinMissionFuite = true ; PublicVariable "FinMissionFuite"; // Une fois les joueurs détecté ou l'otage libéré, celui-ci peut être pris pour cible par l'ennemi * when hostage is free, he's targeted by enemy OtageLibreCible = true ; PublicVariable "OtageLibreCible"; // Le GPS de l'otage se déclenche quand celui-ci est libéré * Hostage gps on when hostage is free GpsOtage = true ; PublicVariable "GpsOtage"; // L'ennemi poursuit le groupe qui emmène l'otage * Enemy hunting hostage after freedom PoursuiteOtage = true ; PublicVariable "PoursuiteOtage"; // ------------ Scripts unitées de la console TR * Real time scripts for units // Script 1 script1 = "Guard"; script1Sqf = "garde.sqf"; // Script 2 script2 = "Circle"; script2Sqf = "ronde.sqf"; // Script 3 script3 = "Large Patrol"; script3Sqf = "patrouille.sqf"; // Script 2 script4 = "Go to a point on map"; script4Sqf = "go_map.sqf"; // Script 3 script5 = "Patrol between 2 points"; script5Sqf = "go_come.sqf"; // Script 3 script6 = "Put on Master (only men)"; script6Sqf = "On Master.sqf"; script7 = "Follow Mark1"; script7Sqf = "Go2marker.sqf"; // ------------ Scripts commandes de la console TR // Script 1 script_com1 = "spectat"; script_com1Sqf = "spectat.sqf"; // Script 2 script_com2 = "Para drop"; script_com2Sqf = "para_eni.sqf"; // Script 3 script_com3 = "Take Building"; script_com3Sqf = "take.sqf"; // Script 4 script_com4 = "debug"; script_com4Sqf = "debug.sqf"; // Script 5 script_com5 = "creat6_M1A1"; script_com5Sqf = "creat6_M1A1.sqf"; // Script 6 script_com6 = "forcer_fin"; script_com6Sqf = "forcer_fin.sqf"; // -------------------------------------------------------------------------------------------------------- // Composition des groupes ennemis // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // pour enlever un homme, supprimez la ligne correspondante. Pour modifier sa nature, remplacez sa référence par celle désirée // Exemple : dans le groupe de garde opfor sur l'objectif, si vous voulez que 5 snipers gardent l'objectif, il vous suffit de remplacer les cinq références du groupe de garde par 'vts2_ManE13' // -------------------------------------------------------------------------------------------------------- // -----------------------------------Ennemi OPFOR // Composition du groupe ENI en garde sur l'objectif groupe_garde_opfor={ vts2_ManE10 createUnit [position objectif , ge1,"loona1 = this", moral_ia, "sergent"]; vts2_ManE7 createUnit [position objectif , ge1,"loonc1 = this", moral_ia, "corporal"]; vts2_ManE6 createUnit [position objectif , ge1,"loond1 = this", moral_ia, "private"]; }; // groupe appui groupe_1_opfor={ _e = _this select 0; call compile format["vts2_ManE10 createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_ManE1 createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManE1 createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManE6 createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_ManE7 createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; // groupe assaut groupe_2_opfor={ _e = _this select 0; call compile format["vts2_ManE10 createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_ManE1 createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManE1 createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManE2 createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_ManE2 createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; // groupe sniper groupe_3_opfor={ _e = _this select 0; call compile format["vts2_ManE10 createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_ManE10 createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManE13 createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManE10 createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_ManE13 createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; // nature des renforts lors du repli tactique (si l'option "renforts lors du repli tactique" est activée dans ce fichier (voir plus haut) renfort_tactique_opfor={ _allie = _this select 0 ; vts2_ManE1 createUnit [position (leader _allie), _allie,"", moral_ia, "private"]; }; // -----------------------------------Ennemi BLUFOR // Composition du groupe ENI en garde sur l'objectif groupe_garde_blufor={ vts2_ManW18 createUnit [position objectif , ge1,"loona1 = this", moral_ia, "sergent"]; vts2_ManW8 createUnit [position objectif , ge1,"loonc1 = this", moral_ia, "corporal"]; vts2_ManW7 createUnit [position objectif , ge1,"loond1 = this", moral_ia, "private"]; }; // groupe appui groupe_1_blufor={ _e = _this select 0; call compile format["vts2_ManW18 createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_ManW1 createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManW1 createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManW7 createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_ManW8 createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; // groupe assaut groupe_2_blufor={ _e = _this select 0; call compile format["vts2_ManW18 createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_ManW1 createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManW1 createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManW2 createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_ManW2 createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; // groupe sniper groupe_3_blufor={ _e = _this select 0; call compile format["vts2_ManW18 createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_ManW18 createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManW10 createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_ManW18 createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_ManW10 createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; renfort_tactique_blufor={ _allie = _this select 0 ; vts2_ManW1 createUnit [position (leader _allie), _allie,"", moral_ia, "private"]; }; // -----------------------------------Ennemi inde // Composition du groupe ENI en garde sur l'objectif groupe_garde_inde={ vts2_SquadLeaderG createUnit [position objectif , ge1,"loona1 = this", moral_ia, "sergent"]; vts2_SoldierGAT createUnit [position objectif , ge1,"loonc1 = this", moral_ia, "corporal"]; vts2_SoldierGMG createUnit [position objectif , ge1,"loond1 = this", moral_ia, "private"]; }; // groupe appui groupe_1_inde={ _e = _this select 0; call compile format["vts2_SquadLeaderG createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_SoldierGB createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_SoldierGB createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_SoldierGMG createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_SoldierGAT createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; // groupe assaut groupe_2_inde={ _e = _this select 0; call compile format["vts2_SquadLeaderG createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_SoldierGB createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_SoldierGB createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_SoldierGG createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_SoldierGG createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; // groupe sniper groupe_3_inde={ _e = _this select 0; call compile format["vts2_SquadLeaderG createUnit [position base_ge%1 , ge%1,""loona%1 = this"", moral_ia, ""sergent""];",_e]; call compile format["vts2_SquadLeaderG createUnit [position base_ge%1 , ge%1,""loonb%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_SoldierGSniper createUnit [position base_ge%1 , ge%1,""loonc%1 = this"", moral_ia, ""corporal""];",_e]; call compile format["vts2_SquadLeaderG createUnit [position base_ge%1 , ge%1,""loond%1 = this"", moral_ia, ""private""];",_e]; call compile format["vts2_SoldierGSniper createUnit [position base_ge%1 , ge%1,""loone%1 = this"", moral_ia, ""private""];",_e]; }; renfort_tactique_inde={ _allie = _this select 0 ; vts2_SoldierGB createUnit [position (leader _allie), _allie,"", moral_ia, "private"]; }; // -------------------------------------------------------------------------------------------------------- // Matériel ennemi // // -------------------------------------------------------------------------------------------------------- // infanterie motorisée - Jeeps et assimilés mat_moto_jeep={ _e = _this select 0; call compile format[" if (camp_valid == ""Opfor"") then { voa%1 = vts2_VehE6 createvehicle position base_ge%1 ; }; if (camp_valid == ""Blufor"") then { voa%1 = vts2_VehW6 createvehicle position base_ge%1 ; }; if (camp_valid == ""Indep."") then { voa%1 = vts2i_LandroverMG createvehicle position base_ge%1 ; }; loona%1 assignasgunner voa%1 ; loonb%1 assignasdriver voa%1 ; loona%1 moveingunner voa%1 ; loonb%1 moveindriver voa%1 ; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""combat"" ; ",_e]; }; // infanterie motorisée - camions de transport mat_moto_camion={ _e = _this select 0; call compile format[" if (camp_valid == ""Opfor"") then { voa%1 = vts2_VehE9 createvehicle position base_ge%1 ; }; if (camp_valid == ""Blufor"") then { voa%1 = vts2_VehW10 createvehicle position base_ge%1 ; }; if (camp_valid == ""Indep."") then { voa%1 = vts2i_Truck5tOpen createvehicle position base_ge%1 ; }; loona%1 assignasdriver voa%1 ; loona%1 moveindriver voa%1 ; loonb%1 assignascargo voa%1 ; loonb%1 moveincargo voa%1 ; loonc%1 assignascargo voa%1 ; loonc%1 moveincargo voa%1 ; loond%1 assignascargo voa%1 ; loond%1 moveincargo voa%1 ; loone%1 assignascargo voa%1 ; loone%1 moveincargo voa%1 ; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""combat"" ; ",_e]; }; // infanterie motorisée / méca - hélicos de transport mat_helico_transport={ _e = _this select 0; call compile format[" if (camp_valid == ""Opfor"") then { voa%1 = createVehicle [vts2_VehE17, position base_ge%1, [], 0, ""FLY""] ; }; if (camp_valid == ""Blufor"") then { voa%1 = createVehicle [vts2_VehW22, position base_ge%1, [], 0, ""FLY""] ; }; if (camp_valid == ""Indep."") then { voa%1 = createVehicle [vts2i_UH60MG, position base_ge%1, [], 0, ""FLY""] ; }; loonb%1 assignasgunner voa%1 ; loona%1 assignasdriver voa%1 ; loonb%1 moveingunner voa%1 ; loona%1 moveindriver voa%1 ; loonc%1 assignascargo voa%1 ; loonc%1 moveincargo voa%1 ; loond%1 assignascargo voa%1 ; loond%1 moveincargo voa%1 ; loone%1 assignascargo voa%1 ; loone%1 moveincargo voa%1 ; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""combat"" ; ",_e]; }; // transport blindé infanterie mat_meca_transport={ _e = _this select 0; call compile format[" if (camp_valid == ""Opfor"") then { voa%1 = vts2_VehE1 createvehicle position base_ge%1 ; }; if (camp_valid == ""Blufor"") then { voa%1 = vts2_VehW15 createvehicle position base_ge%1 ; }; if (camp_valid == ""Indep."") then { voa%1 = vts2i_Stryker_ICV_M2 createvehicle position base_ge%1 ; }; loona%1 assignasgunner voa%1 ; loonb%1 assignasdriver voa%1 ; loona%1 moveingunner voa%1 ; loonb%1 moveindriver voa%1 ; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""combat"" ; ",_e]; }; // véhicule meca d'attaque mat_meca_attaque={ _e = _this select 0; call compile format[" if (camp_valid == ""Opfor"") then { voa%1 = vts2_VehE13_ATGM createvehicle position base_ge%1 ; }; if (camp_valid == ""Blufor"") then { voa%1 = vts2_VehW17 createvehicle position base_ge%1 ; }; if (camp_valid == ""Indep."") then { voa%1 = vts2i_Stryker_TOW createvehicle position base_ge%1 ; }; loona%1 assignasgunner voa%1 ; loonb%1 assignasdriver voa%1 ; loona%1 moveingunner voa%1 ; loonb%1 moveindriver voa%1 ; deletevehicle loonc%1 ; deletevehicle loond%1 ; deletevehicle loone%1 ; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""combat"" ; ",_e]; }; // véhicule blinde d'attaque mat_blinde_attaque={ _e = _this select 0; call compile format[" if (camp_valid == ""Opfor"") then { voa%1 = vts2_VehE3 createvehicle position base_ge%1 ; vob%1 = vts2_VehE3 createvehicle position base_ge%1 ; }; if (camp_valid == ""Blufor"") then { voa%1 = vts2_VehW1 createvehicle position base_ge%1 ; vob%1 = vts2_VehW1 createvehicle position base_ge%1 ; }; if (camp_valid == ""Indep."") then { voa%1 = vts2i_M1Abrams createvehicle position base_ge%1 ; vob%1 = vts2i_M1Abrams createvehicle position base_ge%1 ; }; loona%1 assignasgunner voa%1 ; loonb%1 assignasdriver voa%1 ; loona%1 moveingunner voa%1 ; loonb%1 moveindriver voa%1 ; loonc%1 assignasgunner vob%1 ; loond%1 assignasdriver vob%1 ; loonc%1 moveingunner vob%1 ; loond%1 moveindriver vob%1 ; deletevehicle loone%1 ; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""combat"" ; ",_e]; }; // véhicule aerien d'attaque mat_air_attaque={ _e = _this select 0; call compile format[" if (camp_valid == ""Opfor"") then { voa%1 = createVehicle [vts2_VehE15, position base_ge%1, [], 0, ""FLY""] ; loona%1 assignasdriver voa%1 ; loona%1 moveindriver voa%1 ; deletevehicle loonb%1 ; }; if (camp_valid == ""Blufor"") then { voa%1 = createVehicle [vts2_VehW20, position base_ge%1, [], 0, ""FLY""] ; loonb%1 assignasgunner voa%1 ; loona%1 assignasdriver voa%1 ; loonb%1 moveingunner voa%1 ; loona%1 moveindriver voa%1 ; }; if (camp_valid == ""Indep."") then { voa%1 = createVehicle [vts2i_AH1W, position base_ge%1, [], 0, ""FLY""] ; loonb%1 assignasgunner voa%1 ; loona%1 assignasdriver voa%1 ; loonb%1 moveingunner voa%1 ; loona%1 moveindriver voa%1 ; }; deletevehicle loonc%1 ; deletevehicle loond%1 ; deletevehicle loone%1 ; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""combat"" ; ",_e]; }; // -------------------------------------------------------------------------------------------------------- // Composition du convoi logistique allié // // -------------------------------------------------------------------------------------------------------- // -----------------------------------convoi log OPFOR vts2_convoilog_opfor={ vw12 = vts2_VehE10 createvehicle [(destination2_x)-50, (destination2_y),0] ; vw13 = vts2_VehE11 createvehicle [(destination2_x)-20, (destination2_y)-20,0] ; vw14 = vts2_VehE12 createvehicle [(destination2_x)-35, (destination2_y)-20,0] ; vts2_ManE1 createUnit [position insertion, conv,"convoyeur1 = this ; this setcaptive true ; this assignasdriver vw12 ; this moveindriver vw12 ;", moral_ia, "corporal"]; vts2_ManE1 createUnit [position insertion, conv,"convoyeur2 = this ; this setcaptive true ; this assignasdriver vw13 ; this moveindriver vw13 ;", moral_ia, "private"]; vts2_ManE1 createUnit [position insertion, conv,"convoyeur3 = this ; this setcaptive true ; this assignasdriver vw14 ; this moveindriver vw14 ;", moral_ia, "private"]; }; // -----------------------------------convoi log BLUFOR vts2_convoilog_blufor={ vw12 = vts2_VehW11 createvehicle [(destination2_x)-50, (destination2_y),0] ; vw13 = vts2_VehW12 createvehicle [(destination2_x)-20, (destination2_y)-20,0] ; vw14 = vts2_VehW13 createvehicle [(destination2_x)-35, (destination2_y)-20,0] ; vts2_ManW1 createUnit [position insertion, conv,"convoyeur1 = this ; this setcaptive true ; this assignasdriver vw12 ; this moveindriver vw12 ;", moral_ia, "corporal"]; vts2_ManW1 createUnit [position insertion, conv,"convoyeur2 = this ; this setcaptive true ; this assignasdriver vw13 ; this moveindriver vw13 ;", moral_ia, "private"]; vts2_ManW1 createUnit [position insertion, conv,"convoyeur3 = this ; this setcaptive true ; this assignasdriver vw14 ; this moveindriver vw14 ;", moral_ia, "private"]; }; // -----------------------------------convoi log inde vts2_convoilog_inde={ vw12 = vts2i_Truck5tRepair createvehicle [(destination2_x)-50, (destination2_y),0] ; vw13 = vts2i_Truck5tReammo createvehicle [(destination2_x)-20, (destination2_y)-20,0] ; vw14 = vts2i_Truck5tRefuel createvehicle [(destination2_x)-35, (destination2_y)-20,0] ; vts2_SoldierGB createUnit [position insertion, conv,"convoyeur1 = this ; this setcaptive true ; this assignasdriver vw12 ; this moveindriver vw12 ;", moral_ia, "corporal"]; vts2_SoldierGB createUnit [position insertion, conv,"convoyeur2 = this ; this setcaptive true ; this assignasdriver vw13 ; this moveindriver vw13 ;", moral_ia, "private"]; vts2_SoldierGB createUnit [position insertion, conv,"convoyeur3 = this ; this setcaptive true ; this assignasdriver vw14 ; this moveindriver vw14 ;", moral_ia, "private"]; }; // -------------------------------------------------------------------------------------------------------- // Les objets du jeu // // -------------------------------------------------------------------------------------------------------- vts2_Obj1 = "UH1Wreck"; nomvts2_Obj1 = "UH1Wreck"; vts2_Obj2 = "HMMWVWreck"; nomvts2_Obj2 = "HMMWVWreck"; vts2_Obj3 = "Mi8Wreck"; nomvts2_Obj3 = "Mi8Wreck"; vts2_Obj4 = "Fort_Nest_M240"; nomvts2_Obj4 = "Fort_Nest_M240"; vts2_Obj5 = "Land_loco_742_blue"; nomvts2_Obj5 = "Land_loco_742_blue"; vts2_Obj6 = "MASH"; nomvts2_Obj6 = "MASH"; vts2_Obj7 = "Land_tent_east"; nomvts2_Obj7 = "Land_tent_east"; vts2_Obj8 = "Land_Vysilac_FM"; nomvts2_Obj8 = "Land_Vysilac_FM"; vts2_Obj9 = "Land_Antenna"; nomvts2_Obj9 = "Land_Antenna"; vts2_Obj10 = "Land_Ind_IlluminantTower"; nomvts2_Obj10 = "Land_Ind_IlluminantTower"; vts2_Obj11 = "RU_WarfareBArtilleryRadar"; nomvts2_Obj11 = "RU_WarfareBArtilleryRadar"; vts2_Obj12 = "RU_WarfareBArtilleryRadar"; nomvts2_Obj12 = "RU_WarfareBArtilleryRadar"; vts2_Obj13 = "RU_WarfareBBarracks"; nomvts2_Obj13 = "RU_WarfareBBarracks"; vts2_Obj14 = "Land_Campfire_burning"; nomvts2_Obj14 = "Land_Campfire_burning"; vts2_Obj15 = "Land_Fort_Watchtower"; nomvts2_Obj15 = "Land_Fort_Watchtower"; vts2_Obj16 = "Land_fortified_nest_big"; nomvts2_Obj16 = "Land_fortified_nest_big"; vts2_Obj17 = "Land_fortified_nest_small"; nomvts2_Obj17 = "Land_fortified_nest_small"; vts2_Obj18 = "Land_Farm_WTower"; nomvts2_Obj18 = "Land_Farm_WTower"; vts2_Obj19 = "Land_Misc_deerstand"; nomvts2_Obj19 = "Land_Misc_deerstand"; vts2_Obj20 = "Land_A_CraneCon"; nomvts2_Obj20 = "Land_A_CraneCon"; vts2_Obj21 = "Land_HBarrier_large"; nomvts2_Obj21 = "Land_HBarrier_large"; vts2_Obj22 = "Land_fort_bagfence_round"; nomvts2_Obj22 = "Land_fort_bagfence_round"; vts2_Obj23 = "Land_fort_bagfence_long"; nomvts2_Obj23 = "Land_fort_bagfence_long"; vts2_Obj24 = "Land_Fregata"; nomvts2_Obj24 = "Land_Fregata"; vts2_Obj25 = "Land_Destroyer"; nomvts2_Obj25 = "Land_Destroyer"; /* // Mine vts2_MineMine = "Mine"; nomvts2_MineMine = "Mine"; // Cône vts2_RoadCone = "RoadCone"; nomvts2_RoadCone = "Road Cone"; // barrière vts2_RoadBarrier_long = "RoadBarrier_long"; nomvts2_RoadBarrier_long = "Road Barrier"; //Cible blindée vts2_TargetGrenade = "TargetGrenade"; nomvts2_TargetGrenade = "Target Grenade"; //Cible vts2_TargetE = "TargetE"; nomvts2_TargetE = "Target E"; //Cible surgissante vts2_TargetEpopup = "TargetEpopup"; nomvts2_TargetEpopup = "Target Pop"; // sable1 vts2_FenceWood = "Land_fort_bagfence_long"; nomvts2_FenceWood = "Sand bags 1"; // sable2 vts2_Fence = "Land_BagFenceLong"; nomvts2_Fence = "Sand bags 2"; //panneau danger vts2_Danger = "Danger"; nomvts2_Danger = "Danger"; //drapeau nord vts2_FlagCarrierNorth = "FlagCarrierNorth"; nomvts2_FlagCarrierNorth = "Flag N"; //drapeau sud vts2_FlagCarrierSouth = "FlagCarrierSouth"; nomvts2_FlagCarrierSouth = "Flag S"; //drapeau us vts2_FlagCarrierWest = "FlagCarrierWest"; nomvts2_FlagCarrierWest = "Flag US"; //feu vts2_Fire = "Fire"; nomvts2_Fire = "Fire"; //feu allumé vts2_FireLit = "Land_Campfire_burning"; nomvts2_FireLit = "Fire Lit"; //forteresse1 vts2_Fortress1 = "Land_Fort_Watchtowerp"; nomvts2_Fortress1 = "Fortress 1"; //forteresse2 vts2_Fortress2 = "Land_fortified_nest_big"; nomvts2_Fortress2 = "Fortress 2"; //Remise vts2_ShedBig = "ShedBig"; nomvts2_ShedBig = "Shed"; //hôpital vts2_MASH = "MASH"; nomvts2_MASH = "MASH"; //H vts2_HeliH = "HeliH"; nomvts2_HeliH = "H"; //H invisible vts2_HeliHEmpty = "HeliHEmpty"; nomvts2_HeliHEmpty = "H Empty"; //Antenne radar vts2_Land_radar = "Land_radar"; nomvts2_Land_radar = "Radar"; //Tente (Ouest) vts2_Camp = "Camp"; nomvts2_Camp = "Camp US"; //Tente (ouest) ouverte vts2_CampEmpty = "CampEmpty"; nomvts2_CampEmpty = "Camp Empty US"; //petite tente vts2_ACamp = "mediumtentcamp3_ru"; nomvts2_ACamp = "mediumtentcamp3_ru"; //Tente (est) vts2_CampEast = "camp_ins2"; nomvts2_CampEast = "camp_ins2"; //Tente (est)2 vts2_CampEastC = "camp_ru1"; nomvts2_CampEastC = "camp_ru1"; //barbelé vts2_Wire = "Fort_RazorWire"; nomvts2_Wire = "Wire"; //Ch. de mines 20 m2 vts2_ChMines1 = "ChMines1"; nomvts2_ChMines1 = "MField400m2"; //Ch. de mines 20 m2 danger vts2_ChMines1d = "ChMines1d"; nomvts2_ChMines1d = "MField400m2!"; //Ch. de mines 40 m2 vts2_ChMines2 = "ChMines2"; nomvts2_ChMines2 = "MField1600m2"; //Ch. de mines 40 m2 danger vts2_ChMines2d = "ChMines2d"; nomvts2_ChMines2d = "MField1600m2!"; //Ch. de mines 60 m2 vts2_ChMines3 = "ChMines3"; nomvts2_ChMines3 = "MField3600m2"; //Ch. de mines 60 m2 danger vts2_ChMines3d = "ChMines3d"; nomvts2_ChMines3d = "MField3600m2!"; */ If (true) ExitWith {}// -------------------------------------------------------------------------------------------------------- // Ce fichier permet de jouer, au niveau blufor, avec (ou contre) les addons que vous préférez. Remplacez simplement les noms et les références... // Je vous conseille fortement de sauvegarder ce fichier... on ne sait jamais! // AMUSEZ-VOUS BIEN !!! // -------------------------------------------------------------------------------------------------------- // // -------equipement des joueurs. ATTENTION, mettez les munitions avant les armes! /* // equipement du joueur chef de section (joueur1) equipement_cds={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "M4AIM"; _joueurx addweapon "M9"; _joueurx addweapon "NVGoggles" ; }; // equipement des joueurs chefs de groupes (alpha, bravo, etc...) (joueur2, 6, 10, 14, 18, 22) equipement_cde={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addMagazine "HandGrenadeTimed"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "M4AIM"; }; // equipement des joueurs grenadiers (joueur3 7 11 15 19 23) equipement_grenade={ _joueurx = _this select 0 ; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addMagazine "1Rnd_HE_M203"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "M4GL"; }; // equipement des joueurs mitrailleurs (joueur4 8 12 16 20 24) equipement_auto={ _joueurx = _this select 0 ; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addMagazine "200Rnd_556x45_M249"; _joueurx addweapon "M249"; _joueurx addweapon "NVGoggles"; }; // equipement des joueurs spécialistes AC (joueur5 9 17 21) equipement_ac={ _joueurx = _this select 0 ; _joueurx addMagazine "M136"; _joueurx addMagazine "M136"; _joueurx addMagazine "M136"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addMagazine "30Rnd_556x45_Stanag"; _joueurx addweapon "M4AIM"; _joueurx addweapon "M136"; _joueurx addweapon "NVGoggles"; }; // equipement des joueurs snipers (joueur13 25) equipement_sniper={ _joueurx = _this select 0 ; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "10Rnd_127x99_M107"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "15Rnd_9x19_M9"; _joueurx addMagazine "SmokeShell"; _joueurx addMagazine "SmokeShell"; _joueurx addweapon "NVGoggles"; _joueurx addweapon "Binocular"; _joueurx addweapon "M9"; _joueurx addweapon "M107"; }; */ // ------------------- infanterie // -------hommes //Rifleman vts2_ManCiv1 = "Assistant"; nomvts2_ManCiv1 = "Assistant"; //Grenadier vts2_ManCiv2 = "Citizen1"; nomvts2_ManCiv2 = "Citizen"; //Medic vts2_ManCiv3 = "Doctor"; nomvts2_ManCiv3 = "Doctor"; //NOG vts2_ManCiv4 = "Functionary1"; nomvts2_ManCiv4 = "Functionary"; //Soldier vts2_ManCiv5 = "Pilot"; nomvts2_ManCiv5 = "Pilot"; //Automatic Rifleman vts2_ManCiv6 = "Policeman"; nomvts2_ManCiv6 = "Policeman"; //Machinegunner vts2_ManCiv7 = "Priest"; nomvts2_ManCiv7 = "Priest"; //AT Specialist vts2_ManCiv8 = "Worker3"; nomvts2_ManCiv8 = "Worker"; //AA Specialist vts2_ManCiv9 = "Damsel1"; nomvts2_ManCiv9 = "Damsel1"; //Sniper vts2_ManCiv10 = "Hooker1"; nomvts2_ManCiv10 = "Hooker"; // Saboteur vts2_ManCiv11 = "Madam5"; nomvts2_ManCiv11 = "Madam"; vts2_ManCiv12 = "Pastor"; nomvts2_ManCiv12 = "Dog 1"; vts2_ManCiv13 = "Fin"; nomvts2_ManCiv13 = "Dog 2"; vts2_ManCiv14 = "WildBoar"; nomvts2_ManCiv14 = "WildBoar"; // ------------------- matériel // -------- Matériel terrestre //M1A1 vts2_VehCiv1 = "Lada1"; nomvts2_VehCiv1 = "Lada"; //M113 vts2_VehCiv2 = "LadaLM"; nomvts2_VehCiv2 = "LadaLM"; //M113 Ambulance vts2_VehCiv3 = "Skoda"; nomvts2_VehCiv3 = "Skoda"; //M163 Vulcan vts2_VehCiv4 = "VWGolf"; nomvts2_VehCiv4 = "VWGolf"; // HMMWV vts2_VehCiv5 = "car_hatchback"; nomvts2_VehCiv5 = "car_hatchback"; // HMMWV M2 vts2_VehCiv6 = "datsun1_civil_1_open"; nomvts2_VehCiv6 = "datsun1_civil_1_open"; //HMMWV TOW vts2_VehCiv7 = "datsun1_civil_2_covered"; nomvts2_VehCiv7 = "datsun1_civil_2_covered"; //ACE_M60_A3 vts2_VehCiv8 = "hilux1_civil_1_open"; nomvts2_VehCiv8 = "hilux1_civil_1_open"; //5t Truck vts2_VehCiv9 = "hilux1_civil_2_covered"; nomvts2_VehCiv9 = "hilux1_civil_2_covered"; //5t Truck Open vts2_VehCiv10 = "tractor"; nomvts2_VehCiv10 = "tractor"; //Repair Truck vts2_VehCiv11 = "Ikarus"; nomvts2_VehCiv11 = "Ikarus"; //Ammo Truck vts2_VehCiv12 = "V3S_Civ"; nomvts2_VehCiv12 = "V3S_Civ"; //Refuel Truck vts2_VehCiv13 = "UralCivil"; nomvts2_VehCiv13 = "UralCivil"; //5t Truck with Machine Gun vts2_VehCiv14 = "UralCivil2"; nomvts2_VehCiv14 = "UralCivilOpen"; //Stryker ICV (M2) vts2_VehCiv15 = "Mi17_Civilian"; nomvts2_VehCiv15 = "Mi17_Civilian"; //Stryker ICV (MK19) vts2_VehCiv16 = "Fishing_Boat"; nomvts2_VehCiv16 = "Fishing_Boat"; //Stryker ATGM vts2_VehCiv17 = "SeaFox"; nomvts2_VehCiv17 = "SeaFox"; // M1030 vts2_VehCiv18 = "Smallboat_1"; nomvts2_VehCiv18 = "Smallboat_1"; // -------- Matériel aérien //AH-6 vts2_VehCiv19 = "Smallboat_2"; nomvts2_VehCiv19 = "Smallboat_2"; // -------- groupes nomvts2_GrpCiv1 = "no"; // -------- armes lourdes //M119 vts2_StaCiv1 = "no"; nomvts2_StaCiv1 = "no"; If (true) ExitWith {}OggS &Ƿ,vorbisDOggS & @-2vorbisXiph.Org libVorbis I 20050304vorbisBCVcT)FRJs1FbJBHsS9לk SP)RRic)RKI%t:'c[I֘kA RL)ĔRBS)ŔRJB%t:SJ(AsctJ$dLBH)JSNBH5R)sRRjA B АU@ P2((#9cI pIɱ$K,KDQU}6UUu]u]u 4d@H d Y F(BCVb(9&|sf9h*tp"In*s9's8srf1h&sf)h&sAks9qFsAj6s9j.s"Im.s9s9sspN8sZnBs>{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggS &.m<`NVOIIJQFBFNGI]CDG?MCAJBFCFFFTFHKFEMCG@DEBAEEIOHM!!!A=??=DCj{0<:b:9θz?6~1Ƙc j7K?wիm{#yG;)xH-1tpiɌ4(t@4h@t?:jB8s\5P`p".-*LB2yLUɞc- $Lt`A&_߽@eFP Mc*qN,U !naemRm]s(7IO]ݳduߐ6Qڽj:@4X`*_5`&> ȢP d/Qpl؝w#P$nϗu8хTn۾(<(x@ Z`'qZj!gQ}Oν7b/phbc}E¬Z6~9cϏxJ8`'^g'l T 羦n4 lwsCLyU7Lk @0*67֝PPzU]SCu|6*vgԣ徐<@@zQ+!&8a t  Gܻv9 ѡJ|k6녘^5c+%:~{G_R }f  mm.7ul nuKjv=WyO>kG a)pKKXibzx^,D9xl[gD!*Pv8^Nl&S MnjׂWҾq/eټLGLهysItK0A#`Jb88(ȡP. {dzfߡU]%0Uݖ zt$h`~:9 Ï{$-@@pFDnz٦a2X_xݓi>>,TDJ*Cx~ cBt`#gO $i=wBJiik{Ԭ`nY(3P(g3WS(T=S8lS8ܺUb`С0sE2ءX.tvҦq5YBZF`L.&8zl ׌/k ov{% d61??JU%YO}p{-.#woloO}Kݷ6SXFr8r~9Թo^b nrx*hhZ+r48(j>?y[y,D3ެ^• ae@TN_=Nô*ZkJۄJZ~EMG:p*^{o [ Rbt-;v?;z^@B)S}z5}sd ;,1qf4G/4'be[XXm2H_&ּc $t&$:!nNعY3VX2HOeY*4˴vQ !+s߬4>G ˭P(0$) K 믢]{s ]ʹJxUܹK/'<~{ެyx U*{{~5{Ҿ:ca~.9Jdõ x(>ެpH62A.R@0( li1Fb2}/EQkulˑgp0n:ެV q )!ؠ83=l7d SW4?c]\;N+;re,&67-XutPyyO޹\;Yxi H'9g\a^ ߬p1NN`'ӫ~ww=Vl1g)#֩l!|^ެK-ZaNi݀0,鈗R6Oɑ]P֦*I3m-w">ID6`'y^=ҧhdS"z)8~iv Ʃ!u'gHb;>,m챋ֽqPGi-^i%RWYY %i(PmK7Hܿl,][g&c?7r-s"ߦ=v6n x+s6\ҽK1 `J>uJ{Gt|  Gb;ۓ(Q;w3'Wb'm,c#5G9#<5v?a{wSdwnO"ze29ߩ>ZZ d [{ F)CKi./ϼia?kg"E%,8_OPZ@/MVhחyN6ub3sFC@>[]lC; l2A8-N_cmozo&^y{f^C.A&3{u EkW-6M ŧv Vm+F,M (W3onP6m)3myl6+ 6M94%+IBI05-͞ L,{֤?Pu¹|3枦穼|?Fz3^S"k,2wwQ4Eј$@.Xs cu($dZO~?7%6d M9û&%~ny=/uҫܐ#;_ r,K}hb88W];@*{E㷭IgkYT&hmo:^%GzZf뜬]R&y *Wy>S/L"`cқt^ ۶(T%D>?xexk+/%hwmx n,b?IL̝R(oG§QLԃ*GM%V ̩u"98}N  嶿ݷ77? kmMv+m0 OggS &c??E>CN?DM>AEFDIZGJM?GJB@BFFADGII ,.1pBݛ u (;a=7@~C 8`\eAX ]m%}kw^*@cnr$ ^LTc⤀ZžD@F~ЍOܽV 4ĿRk3{Pwޫ!WSv2(>+|W`9)r8عC t(§렭͛=@xU[LY/Gxu,tt_wx*W{1l߼ ?j>(xFlEo1%tǶ\@E6q't/=_Nm;NxJ \Y"'o}}}}9#tc6)N)N)N)N)N׵':?ײ 6Ȫ 9@@ؾfJǥ)g7)0̤kjPx@bɤyLC:zeaU˲dʙgP~Y5P_zkҎʕH BE+B> (LPIAmύb{?@k8QCh`& L@&`>?q;8~N( UZ KH58Ē\w^W_x{*B9JS@( ` H^*q;p3 V)M"]fzƃ [91 R*R]8BFj`̙D/ΤF JW1 `<^[vJ M̓" m2']b&Z}g͍ #\0>k޵8}utS#z^-­Kx'[&no[ v@g(i#nHzB+C>4)P h-ƯE-`<0DF=ay2frTt*G)ME+|ו<̻BT{2DNzG-slKiD((x@ZG^N^nE:ךFRb'}ԕ9Tu$9mifOw[sfac`:]C p yVGZsE< ؗ˪ӢUW5B,>*!='@@BgT40Ok۲c]ܸ7.Bb^k+* 7'| ,k>Qj9:  lL5oU=hJ\ mtئBXʓF[WkQ ILxG/d`Mgt(x^{=-B}!m\9 @we*NEOV*,tf@{f ۰rR{n0]( >}_F} ;Lqz;h- 쿋3gZ>;qmCੜ6*DN|{_pU`H !ngX`c7YJޜpf),@7~[쯥bC8c(@j byaj`mnAbkl.aT7KH pBzE`e.˘ѶRkgGrj h&rm!ya[`NMnMȡ@+u>V[#fh.Bq{?^vE59T ޛެX }@t a:pʛ9r$;؄^juk @b>ެn>;vrV1+]xz>y_:_?@. 6c>ެgQTZ-@(@:.R͛~xąYꚙ۱f:I%I}޻;Ѡhf^(҂ǁV~n-ػno~el^'!OUSK=khѼe<5u(^ M!8V@j`_[E/ܫW3Jsd&P] 2a^ެR)qS  /kxk7 X f F2#]uo,V 7'N<=)&7anF N/}$3F=wqT|:Z]`}rB緵0   rGұ9UJ X5X옓"շ3S;O0n{Ańtpi<+IPޕPuܹlwE;y: ؼ2>܄܎}Tq`Pq :/j@dfJUwƯsuf񂣮 '4չ;I݄~:4lq܇EPxm{FrLiپMP,&Tx[ŇS?]5 ` ne7sllx1I'eŪOdC,oW,]PWH7V}A|o3{iZ|Z.)X( >'] ^,}+N-1A6\ @=w$)_@yzx fYYō[aC^̵Esp Q\ x⹿iF ˂C83k \"2@^[Zo6n",sn߄ʱOz'dBL5TlD]j4p^,̭DqҦWIXAmٮDA AJ;aѨ6^.JPήVNG7wCy (sp}x ywco^uNCq{ HzYAȾ'z]j /ӫ&Tk)[ >̽7:Ƒi =w`$Pt=܂fת\㊖L8Orݭ BzLJJ: rRr *Mu0EϛS Ko4F6M)Ga+@tLiŶy;*<"%G XTU*4ssdL'DWEPOggS &ǶvEMPHB@@9CFG9AII^CNSLEKA>BRG>BCGFUD@H>BK>HGC?FGCITKMOAB~{ZM [7@y)(Tė6fyίwuuXbPj-Z K ]N4^`)f)1v+ewGܑs/'d'ڪ ,y(NXF_ݜD1|)q`Z%MfHQỏ%<̽t:Bۜ`xIhucQ`7W %>a4I&+N|  Ο ׆1j^e9){5~nF,̥Dq?t9:v!]XofmqʐG}6Msѵ90/<],,o\khun]O WZwq!v-kk9l C)85蹜^6pgb{=7}>K7~ EIZ@d `]*~'=Z `8Yjq}n9>F{5Hql[ c/$)R /]AmI`M}@z|z'emm V{޴ ޑu uB/L({/gViGi@wqI Aw_@×#6kFS>">1=\_=\J p#g֧υ+#w:~+-T&*#t@z:Ѐ`HzW @]((Xb͸7_O( L(R:HЀ^1} N E3{@ )>gKL|Wo㿺0H`I5 (^߯ ;8~N +*B(@Ǩ;8^eeSGxAP @@  :W8$ԲBp4w7Jϻz|\P=&e0, [xBqsBP(0*!i115A'E+#-uK=N@Kj罄N֢Xp`V\*g&G̉3흩vnd1-I_s۱^{GVib%#@`l8"*zh Lu!nH8zG;8%$ Tf޽݂sۄGheBt>oFO*;5Er*ܯ+K Cc{sKs1ӬJpSAK쳝ojdS &jGV"ՁCVx##Q{]cH2TRu:Uc/9 ޫw !68h{pm+kS@[i~ZwUw ^gNx{, dHn@=0d3ɡB=*^Ă*}[Jzsc'(@ ԛWziμayM7*:ۦ>dCr4˳maB4@Ƨ@ P1.T|@@ }+ss6-Nj.zdw U@^ެS vj$ $" [пB1j{>7hz:A'kZXJ\lh' '2Q(1u6? Kbss=&It>w 6ng.nHR&vIGi❜;p'U>gq,e̡rn# PEl͙<ޫsN9!@xoqȝd*@038؟\ql+i'NE'R4Pht^ s/ Ӽ! 4B)m+ƺ)~f/3?υ3Ra|O^ެۖ+[&zjx2Z Fg~W4G'ŤXv^ެK psG @@[Z3xuϪd[)ȉT&4y@2~߬Blp'Yz ݥw}6nkeaDaO~ ߬RqN%믛`]9ubm=/_8)iɶ=?xqw$:}r :>ެ}\,0f vz3#!~|nԛ&ZƒHG_r32~w }tPxo0!-rmʆ w?kDvGȲ|!knw%ܡ{@*ӧ wAӽ7?_XdMk@m.nqy l]3>&޻," Ə?M@-@d>*x針օ%F\EqM"UR% 6JuiGC@:O@ x;σEp^GY07l >՘FG 4$@ެVqqC:I\9ќэ*nw>H$:puՅzu$&ɪn*]#Ph+B O3GFh[;i!7H ^,)q ?E@=~~TpJ*Dt6-̣Z}<> ݐN27!`B2mWTbg 9 gT7ekw OggS@p &VKEBCAF@AH?MJNTF>>BCIF\E?N>BE=H>C!` أ\0y>?igAZѨ*Ǥ5bp(lQ%P?@ƻ^,, pRDq{wo1vb;\a~o&.mpq~M@ʆi+5*7S!Nh1X ÆX?3>>{_.S͕ c[[C!"].}^P^Yd1Lw0=7FZ\ʟyzSzLiGmf!nB'Ifv+Ӌ)xC2N^"廽 0.>{Tc "HP`~StvıPy1{5u~5i].>QG [v2B]tG 6oW0Zϳ $J]4'-bAd꽶 :c]!1 l꽮Ewd%T30suTwoK,{k<3d(d,ٰ!d :>?Y=>?mUw,SN}I6㷭픵ו%o_ :~ADtcy߅/[ۘ6=yO+tM=LK9ib|uyctwZgR 8s_ L?m;0p/Xhᕔ)^oVFa kF#H3AAu>8z7,̾o8}@K]=Mg{#ߕ߮mRV]Gle8lG]o%1W ovC pعzt _{!*|Fr0`P@Z|:ldW;P#AՠM>|d+2?+Ӓ ' |鷺fm5tx%T$os~Uqަ|aT^+\W>6/FߨJNLa[.ol4yF5ߗ2h 6:fy~w1s¨o1p-b6vx.sϙ>PU:3cDw?wg+&;/ɨy VtZsg~0E4l  ! `1-$($ $^_P p }#",LO BIʏ̄: ]X!OO5{<6L@`@^: ء_@@ BikpQŋ\ 55aR׸~Ƙ *g+A|PrhP( OB7U+V%] ⏩WT s (zn/8a v6 e9 APmZ7-ǿs\+?`zQ;%; 8"50٩ W MՃ 7û3>Fx:k2 ^{GBp*q45P,l783HSV=jcES=T쭔>;=%c ^RX @P=3r]CE*~E5w a VP10 ~{ՂOh79m]֩R(>EB[ꝇ{rWj0\; @~GM ԢY XAB3hy e.Jvj>g8NxIJh@j!x l$-!iŦ60SqݻSPx1 Z.2~{cؐP9@BylT)gOjvZXJ\@ہqBE6Px^6 TGwgnozr th~i  T@2RSuQTfM@$ *>R['[?ḻ-ZBաϏ%z=MŚIܪj=ȣ$+Xc\5s蠃@׸xB8Hh 0}7-><+*sF%k b_޻1 >@G@ MM^EHkVZd\ [58PNnN|x{) f>YBTcW^r-:&B+ @@0>MLp&`yT(N1;h #<.mh!e>{'Zr(QJnǤ9;TN$8-9 纗q[`;Ktޫެ؏ZN,qC(ֺ6?{VsB8צ6BUs|5&l^~ ,ۚpnh\ J'^w¶ՠ\q浛A}urfK>/x^si9*@9::3@* `;)>uLfCqZcO}xMYyy #F$OggS &[>/F?DFCHFSHLMCFCA?CFCBCFIOINF?@@@BF?9AIKSOT>ެ{'0p?r2t@<6hF];VLk~%uX uf0Ƌgϋ C~߬gT#n<X@0&OܔtMaT$P\ujrR;F0{S ԾT ÐrbE ̝3)H5+n87FFX\j !Fq%T!t^,Vb "F6٭PSolkذ$T~9ga2r?Rőc̷)-(/?u̒4+@o5]MQwJjx mͫ9>1I_#ެZPN^NdB!p})q;עj$Y_Nm0nL;.&'%`gouJ xE\~/, KګERye^|Ce[,=܏f = XK#=DZ;9\<66OKw_Α 9vkX놟 G,;88 %PB {DsrO"P(>^1zԏg* v\k(}E2ެQq+/mN@hpVF&R!R}0rkFVbUy50),18N`\-7g Dgo% y2c/p_olB9Y3:.QF69&}0ȼȐ a]Q  9ٜgP[3X3V>;!6+?J jL5 B`LK97[% B( ѻea`<]9J^ ,V qzˮ)+PL|<Q RMχ˅TG#}~,}-68'@oj㝾yg163řuCtTFq~<=u1z8W d&2@!mj<4 61ciP ~ ̵ODɰ ->jMM{>7́w[@{2FaTH^.SI.1gC@ *B6ȵ0 ,UBܰ1So~,rK~,5Ft6Ƒ^ 6mP >SZwJ?bF4B4f>ua$'zh>2jH m*wX},:Δ[nZZ7c}i^Ik8:Ǥ:@BP؉AqzB ('-/G 4 ¿qx7qajΰW"xg݋,NO-W%>LqŰCs+ T(3RU5\V]0ܰ"kbk: PU3^|r 5]@mvvD,;rJPW@APw/n=v}!5$:L] Su]2` lʱ)ffa(Vy,dv%O\6ƜT/'v|,厀tO3^ݷe4ٰ$ϲfYYZSQރ=Im?o)˺IL߾? :؍ƨ k`љɬ ZI'~TTLO-ח= L~bN`,tG )Sb}3tGS^>,LMAʝJ`c¢vb0!X\|*F Ek ۴Vl7pLL1E3pR{N] n! ;x>O걭.p=ͨZ^ LfLA-t҂T_oo6+Pߵp[n`,̾/1M}ulyQnZ:'6V~sTUUlw8`$130) then { _hop = _hop+1 ; // cra du parachutiste et telep sous l'hlico call compile format["parachutiste_eni createUnit [position para_entre , membre_commando,""com_para%1 = this"", moral_ia, ""sergent""] ;",_hop]; call compile format["poa%1 = ""Parachute"" createvehicle position para_entre ;",_hop]; call compile format["poa%1 setPos [(getpos helico_para select 0), (getpos helico_para select 1),(getpos helico_para select 2)-5];",_hop]; call compile format["com_para%1 moveInDriver poa%1;",_hop]; if (_hop > 8) then {_faux = false;}; }; sleep 1; }; // Si l'hlico est toujours vivant, on lui demande de repartir if ((getPos helico_para select 2)>20) then { pilote_helico domove position para_sort; waitUntil {((helico_para distance para_sort)< 400)}; }; // Le groupe para lance le script repli-tactique et se dirige vers le dernier objectif en date sleep 30 ; if (blufor_vts) then { gouff_commando = [membre_commando,0,2,"blufor"] execVM "repli_ge1.sqf"; }; if (opfor_vts) then { gouff_commando = [membre_commando,0,2,"opfor"] execVM "repli_ge1.sqf"; }; if (inde_vts) then { gouff_commando = [membre_commando,0,2,"inde"] execVM "repli_ge1.sqf"; }; membre_commando move position cible ; // On calme le jeu pendant environ trois minutes sleep 170 ; deletevehicle tireur_helico; deletevehicle pilote_helico; deletevehicle helico_para; deleteGroup membre_equip; deleteGroup membre_commando; paras_eni_dispo = true ; publicvariable "paras_eni_dispo"; }; }; If (true) ExitWith {}if not(local joueur1) exitWith {}; foo = [player, player, "null"] execVM "spect\spectavts.sqf"// ********** mettre des ennemis dans les batiments ************** if (local serveur) then { if not(take_on) then { take_on = true; //1er clique sur la map need_Take = true; publicvariable "need_Take"; waitUntil {(go_Take)}; go_Take = false; publicvariable "go_Take"; grouptake = createGroup east; _general = "SoldierEB" createUnit [[pos_map_x,pos_map_y,pos_map_z],grouptake,"general = this", 0.6,"sergent"]; sleep 1; Area = "HeliHempty" createVehicle [pos_map_x,pos_map_y,pos_map_z]; _area =[Area,30,100,80,0] exec "gonza\TakeBuilding.sqs"; take_on = false; }; };// --------------------------------- Script patrouille alatoire_ garde // !!! lors de la cra de l'unit, transformer la position en variables locales transmettre ce script !!! Ce serait bien que les units spawnes excutent le script de repli tac // Transmission _unite = _this select 0; _positX = _this select 1; _positY = _this select 2; // Mmoriser le point de dpart de l'unit _sav_positX = _positX; _sav_positY = _positY; _distance = 50 ; // boucle : effacer le point de mouvement prcdent et cra d'un point de mouvement 200m autour de l'unit. Rcuprer attitude et formation dans l'init principal. une chance sur 9 qu'elle retourne son point de dpart. call compile format["_h = ""h%1"";",(_unite)]; while {true} do { _tempo = 20; _random = random 11; if (_random<1) then {_positY =_posY+_distance;}; if ((_random<2) and (_random>1)) then {_positX =_positX+_distance;_positY =_positY+_distance; }; if ((_random<3) and (_random>2)) then {_positX =_positX+_distance;}; if ((_random<4) and (_random>3)) then {_positX =_positX+_distance;_positY =_positY-_distance;}; if ((_random<5) and (_random>4)) then {_positY =_positY-_distance;}; if ((_random<6) and (_random>5)) then {_positX =_positX-_distance;_positY =_positY-_distance;}; if ((_random<7) and (_random>6)) then {_positX =_positX-_distance;}; if ((_random<8) and (_random>7)) then {_positX =_positX-_distance;_positY =_positY+_distance;}; if (_random>8) then {_positX =_sav_positX;_positY =_sav_positY;}; deletevehicle _h; _h = "HeliHempty" createVehicle [_positX,_positY,0]; _unite move position _h; // ordre de mouvement et retour de boucle sleep 5; sleep random _tempo ; }; If (true) ExitWith {}// --------------------------------- Script1 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unite // Voil, c'est vous!!! * It is now up to you!!!* sleep 1; _unite = _this select 0; //_posmap = [markpos_x,markpos_y,0]; _class=(typeOf (vehicle (leader _unite))); if ((_class == "Ural") or (_class == "UralOpen")) then { vehiunitet = assignedVehicle (leader _unite); leadunite = leader _unite; _posunite1 = getpos vehiunitet; _posunite2 = [_posunite1 select 0,(_posunite1 select 1)+20,0]; // [_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2] truck_grp = createGroup east; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "corporal"]; "SoldierEMG" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierESniper" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; vehiunite setVehicleInit "eh = this addEventHandler [""HIT"",{vehiunitet setFuel 0;leadunite stop true;dogetout (leader truck_grp);dogetout leadunite;truck_grp move (getpos joueur1);}]"; processInitCommands; }; //format["this moveincargo %1",var_vehiunite] /* if ((_class == "Mi17_MG") or (_class == "Mi17"))then { vehiunite = assignedVehicle (leader _unite); leadunite = leader _unite; _posunite1 = getpos vehiunite; _posunite2 = [_posunite1 select 0,(_posunite1 select 1)+20,0]; // [_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2] Mi17_grp = createGroup east; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "corporal"]; "SoldierEMG" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierESniper" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; _go_pos = _posmap; H1 = createVehicle ["HeliHEmpty",_go_pos,[], 0, "NONE"]; _WP_go = _unite addWaypoint [_go_pos, 0]; _WP_go waypointAttachVehicle H1; _WP_go setWaypointType "GETOUT"; _WP_go setWaypointStatements ["true", "vehiunite setFuel 0;dogetout (leader Mi17_grp);dogetout leadunite;Mi17_grp move (getpos joueur1);"]; If (true) ExitWith {} }; */ while {alive leader _unite} do { _unite move [markpos_x,markpos_y,0]; sleep 10; }; If (true) ExitWith {}_unite = _this select 0; _posmap = [spawn_x2,spawn_y2,spawn_z2]; //_posy = _this select 2; //_posz = _this select 3; _grpunit = _unite; if (typeName _unite != "GROUP") then { _grpunit = group _unite; }else{ _grpunit = _unite; }; _WP0_go_come = _grpunit addWaypoint [getpos leader _unite, 0]; _class=(typeOf (vehicle (leader _unite))); if ((_class == vts2_VehE8) or (_class == vts2_VehE9)) then { vehiunitet = assignedVehicle (leader _unite); leadunite = leader _unite; _posunite1 = getpos vehiunitet; _posunite2 = [_posunite1 select 0,(_posunite1 select 1)+20,0]; // [_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2] truck_grp = createGroup east; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "corporal"]; vts2_ManE6 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE6 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE13 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE6 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vehiunite setVehicleInit "eh = this addEventHandler [""HIT"",{vehiunitet setFuel 0;leadunite stop true;dogetout (leader truck_grp);dogetout leadunite;truck_grp move (getpos joueur1);}]"; processInitCommands; }; //_go_come_pos = [_posx,_posy,_posz]; _go_come_pos = _posmap; _WP1_go_come = _grpunit addWaypoint [_go_come_pos, 0]; _WP2_go_come = _grpunit addWaypoint [[_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2], 0]; _WP2_go_come setWaypointType "CYCLE"; sleep 1; _unite = _this select 0; _posmap = [spawn_x2,spawn_y2,spawn_z2]; _class=(typeOf (vehicle (leader _unite))); if ((_class == vts2_VehE8) or (_class == vts2_VehE9)) then { vehiunitet = assignedVehicle (leader _unite); leadunite = leader _unite; _posunite1 = getpos vehiunitet; _posunite2 = [_posunite1 select 0,(_posunite1 select 1)+20,0]; // [_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2] truck_grp = createGroup east; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "corporal"]; vts2_ManE6 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE6 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE13 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vts2_ManE6 createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.3, "private"]; vehiunite setVehicleInit "eh = this addEventHandler [""HIT"",{vehiunitet setFuel 0;leadunite stop true;dogetout (leader truck_grp);dogetout leadunite;truck_grp move (getpos joueur1);}]"; processInitCommands; }; //format["this moveincargo %1",var_vehiunite] if (_class == vts2_VehE18) then { vehiunite = assignedVehicle (leader _unite); leadunite = leader _unite; _posunite1 = getpos vehiunite; _posunite2 = [_posunite1 select 0,(_posunite1 select 1)+20,0]; // [_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2] Mi17_grp = createGroup east; vts2_ManE1 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "corporal"]; vts2_ManE6 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE6 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE13 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE1 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE7 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; vts2_ManE6 createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.3, "private"]; _go_pos = _posmap; H1 = createVehicle ["HeliHEmpty",_go_pos,[], 0, "NONE"]; _WP_go = _unite addWaypoint [_go_pos, 0]; _WP_go waypointAttachVehicle H1; _WP_go setWaypointType "GETOUT"; _WP_go setWaypointStatements ["true", "vehiunite setFuel 0;dogetout (leader Mi17_grp);dogetout leadunite;Mi17_grp move (getpos joueur1);"]; If (true) ExitWith {} }; _unite move _posmap; // --------------------------------- Script1 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unit* _unite = _this select 0; // Position x de l'unit *Position x of the unit* _positX = _this select 1; // Position y de l'unit *Position y of the unit* _positY = _this select 2; // =========================================== // Voil, c'est vous!!! * It is now up to you!!!* //if typeName _unite != ural or typeName _unite != uralopen then ExitWith {}; // _unite move position GO; _unite doMove (getpos GO); deletevehicle GO; deleteMarkerLocal "GO-none"; /* //vts2_ManE1 createUnit [[_positX,_positY], "","this assignasdriver _unite ; this moveindriver _unite ;", moral_ia, "corporal"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "corporal"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; vts2_ManE1 createUnit [[_positX,_positY], convoi1,"this moveincargo _unite ;", moral_ia, "private"]; _unite setVehicleInit {this addEventHandler ["Dammaged",{_unite disableAI "MOVE";{unassignVehicle _x ;doGetOut _x} foreach units group convoi1}; */ /* if typeName _unite != ural then ExitWith {}; _unite addEventHandler ["Dammaged",{_unite disableAI "MOVE";{unassignVehicle _x ;doGetOut _x} foreach units group convoi1; this moveincargo truck3 vts2_convoilog_opfor={ vw12 = vts2_VehE10 createvehicle [(destination2_x)-50, (destination2_y),0] ; vw13 = vts2_VehE11 createvehicle [(destination2_x)-20, (destination2_y)-20,0] ; vw14 = vts2_VehE12 createvehicle [(destination2_x)-35, (destination2_y)-20,0] ; vts2_ManE1 createUnit [position insertion, conv,"convoyeur1 = this ; this setcaptive true ; this assignasdriver vw12 ; this moveindriver vw12 ;", moral_ia, "corporal"]; vts2_ManE1 createUnit [position insertion, conv,"convoyeur2 = this ; this setcaptive true ; this assignasdriver vw13 ; this moveindriver vw13 ;", moral_ia, "private"]; vts2_ManE1 createUnit [position insertion, conv,"convoyeur3 = this ; this setcaptive true ; this assignasdriver vw14 ; this moveindriver vw14 ;", moral_ia, "private"]; }; _unite setVehicleInit addEventHandler ["Dammaged",{_unite disableAI "MOVE"}]; */ If (true) ExitWith {}// --------------------------------- Script1 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unit* _unite = _this select 0; // Position x de l'unit *Position x of the unit* _positX = _this select 1; // Position y de l'unit *Position y of the unit* _positY = _this select 2; // =========================================== // Voil, c'est vous!!! * It is now up to you!!!* //if typeName _unite != ural or typeName _unite != uralopen then ExitWith {}; // _unite move position GO; // Voil, c'est vous!!! * It is now up to you!!!* //_unite move position go; need_unit_dir = true; publicvariable "need_unit_dir"; waitUntil {(send_unit_dir)}; send_unit_dir = false; publicvariable "send_unit_dir"; _class=(typeOf (vehicle (leader _unite))); //hint format["class : %1",_class]; //sleep 3; if ((_class == "Ural") or (_class == "UralOpen")) then //if (_class == "Ural") then { vehiunitet = assignedVehicle (leader _unite); leadunite = leader _unite; _posunite1 = getpos vehiunite; _posunite2 = [_posunite1 select 0,(_posunite1 select 1)+20,0]; // [_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2] truck_grp = createGroup east; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "corporal"]; "SoldierEMG" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierESniper" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, truck_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunitet", 0.6, "private"]; vehiunite setVehicleInit "eh = this addEventHandler [""HIT"",{vehiunitet setFuel 0;leadunite stop true;dogetout (leader truck_grp);dogetout leadunite;truck_grp move (getpos joueur1);}]"; processInitCommands; }; //format["this moveincargo %1",var_vehiunite] if ((_class == "Mi17_MG") or (_class == "Mi17"))then //if (_class == "Ural") then { vehiunite = assignedVehicle (leader _unite); leadunite = leader _unite; _posunite1 = getpos vehiunite; _posunite2 = [_posunite1 select 0,(_posunite1 select 1)+20,0]; // [_go_come_pos select 0,(_go_come_pos select 1) + 5,_go_come_pos select 2] Mi17_grp = createGroup east; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "corporal"]; "SoldierEMG" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierESniper" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEB" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEAT" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; "SoldierEMG" createUnit [_posunite2, Mi17_grp,"this addWeapon ""NVGoggles"";this moveincargo vehiunite", 0.6, "private"]; _go_pos = [pos_map_x,pos_map_y,pos_map_z]; H1 = createVehicle ["HeliHEmpty",_go_pos,[], 0, "NONE"]; _WP_go = _unite addWaypoint [_go_pos, 0]; _WP_go waypointAttachVehicle H1; _WP_go setWaypointType "GETOUT"; _WP_go setWaypointStatements ["true", "vehiunite setFuel 0;dogetout (leader Mi17_grp);dogetout leadunite;Mi17_grp move (getpos joueur1);"]; If (true) ExitWith {} }; _unite move [(pos_map_x),(pos_map_y),(pos_map_z)]; // --------------------------------- Script1 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unit* _unite = _this select 0; // Position x de l'unit *Position x of the unit* _positX = _this select 1; // Position y de l'unit *Position y of the unit* _positY = _this select 2; // =========================================== // Voil, c'est vous!!! * It is now up to you!!!* //if typeName _unite != ural or typeName _unite != uralopen then ExitWith {}; // _unite move position GO; // Voil, c'est vous!!! * It is now up to you!!!* _unite move position go; If (true) ExitWith {}// --------------------------------- Script1 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unit* _unite = _this select 0; // Position x de l'unit *Position x of the unit* //_positX = _this select 1; // Position y de l'unit *Position y of the unit* //_positY = _this select 2; // =========================================== // Voil, c'est vous!!! * It is now up to you!!!* //hint "You can change the level \n by changing CDGlevel variable"; if (typeName _unite == "GROUP") ExitWith {}; _Unite addWeapon "NVGoggles"; _Unite setUnitPos "middle"; _unite setDir (getdir joueur1); _unite disableAI "MOVE"; _joueur_pos=[(getPos joueur1 select 0),(getPos joueur1 select 1),((joueur1 modelToWorld [0,0,0]) select 2)]; sleep 4; _unite setPos (_joueur_pos); If (true) ExitWith {}// --------------------------------- Script patrouille alatoire // Transmission _unite = _this select 0; _positX = _this select 1; _positY = _this select 2; // Mmoriser le point de dpart de l'unit _sav_positX = _positX; _sav_positY = _positY; _distance = 200 ; _distance_next = 10; sleep 5 ; // boucle : effacer le point de mouvement prcdent et cra d'un point de mouvement 200m autour de l'unit. Rcuprer attitude et formation dans l'init principal. une chance sur 9 qu'elle retourne son point de dpart. call compile format["_h = ""h%1"";",(_unite)]; while {true} do { _tempo = 6; _random = random 17; _i = 11; if (_random<2) then {_positY =_posY+_distance;}; if ((_random<4) and (_random>2)) then {_positX =_positX+_distance;_positY =_positY+_distance;}; if ((_random<6) and (_random>4)) then {_positX =_positX+_distance;}; if ((_random<8) and (_random>6)) then {_positX =_positX+_distance;_positY =_positY-_distance;}; if ((_random<10) and (_random>8)) then {_positY =_positY-_distance;}; if ((_random<12) and (_random>10)) then {_positX =_positX-_distance;_positY =_positY-_distance;}; if ((_random<14) and (_random>12)) then {_positX =_positX-_distance;}; if ((_random<16) and (_random>14)) then {_positX =_positX-_distance;_positY =_positY+_distance;}; if (_random>16) then {_positX =_sav_positX;_positY =_sav_positY;_i=20;}; deletevehicle _h; _h = "HeliHempty" createVehicle [_positX,_positY,0]; _unite setformation "STAG COLUMN" ; _unite move position _h; _gigi = true ; while {_gigi} do { if (((leader _unite) distance _h) <_distance_next) then {_gigi = false}; if (_i<=0) then {_gigi = false}; _i = _i-1; sleep 2; }; // ordre de mouvement et retour de boucle sleep 1; sleep random _tempo ; }; If (true) ExitWith {}// --------------------------------- Script patrouille alatoire_ronde // !!! lors de la cra de l'unit, transformer la position en variables locales transmettre ce script !!! Ce serait bien que les units spawnes excutent le script de repli tac // Transmission _unite = _this select 0; _positX = _this select 1; _positY = _this select 2; // Mmoriser le point de dpart de l'unit _sav_positX = _positX; _sav_positY = _positY; _distance = 200 ; // boucle : effacer le point de mouvement prcdent et cra d'un point de mouvement 200m autour de l'unit. Rcuprer attitude et formation dans l'init principal. une chance sur 9 qu'elle retourne son point de dpart. call compile format["_h = ""h%1"";",(_unite)]; while {true} do { _tempo = 10; _random = random 10; if (_random<1) then {_positY =_posY+_distance;}; if ((_random<2) and (_random>1)) then {_positX =_positX+_distance;_positY =_positY+_distance; }; if ((_random<3) and (_random>2)) then {_positX =_positX+_distance;}; if ((_random<4) and (_random>3)) then {_positX =_positX+_distance;_positY =_positY-_distance;}; if ((_random<5) and (_random>4)) then {_positY =_positY-_distance;}; if ((_random<6) and (_random>5)) then {_positX =_positX-_distance;_positY =_positY-_distance;}; if ((_random<7) and (_random>6)) then {_positX =_positX-_distance;}; if ((_random<8) and (_random>7)) then {_positX =_positX-_distance;_positY =_positY+_distance;}; if (_random>8) then {_positX =_sav_positX;_positY =_sav_positY;}; deletevehicle _h; _h = "HeliHempty" createVehicle [_positX,_positY,0]; _unite move position _h; // ordre de mouvement et retour de boucle sleep 5; sleep random _tempo ; }; If (true) ExitWith {}// --------------------------------- Script1 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unit* _unite = _this select 0; // Position x de l'unit *Position x of the unit* _positX = _this select 1; // Position y de l'unit *Position y of the unit* _positY = _this select 2; // =========================================== // Voil, c'est vous!!! * It is now up to you!!!* If (true) ExitWith {}// --------------------------------- Script2 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unit* _unite = _this select 0; // Position x de l'unit *Position x of the unit* _positX = _this select 1; // Position y de l'unit *Position y of the unit* _positY = _this select 2; // =========================================== // Voil, c'est vous!!! * It is now up to you!!!* If (true) ExitWith {}// --------------------------------- Script2 // Il s'agit d'un script vide. Mettez-y ce que vous voulez, en gardant l'entte! * This script is empty. Write whatever you want, but keep the first strings! // =========================================== // Ne pas enlever! *DO NOT remove!* // Nom de l'unit *Name of the unit* _unite = _this select 0; // Position x de l'unit *Position x of the unit* _positX = _this select 1; // Position y de l'unit *Position y of the unit* _positY = _this select 2; // =========================================== // Voil, c'est vous!!! * It is now up to you!!!* If (true) ExitWith {}///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------Indication de localit� ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> if (local serveur) then { ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------VARIABLES ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _random_pluie = 0 ; _random_brume = 0 ; ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------FONCTIONS - PROCEDURES ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------CONSTANTES ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //_attente = 260 ; 4 minutes 20 secs //_degre = 0.1 ; attente = 260 ; publicvariable "attente" ; _degre = 0.1 ; ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------DEBUT PROGRAMME ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> while {true} do { ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------COEUR PROGRAMME ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _random_pluie = (random 10); _random_brume = (random 10); sleep attente ; changement_temps = false ; publicvariable "changement_temps"; if (pluie>0.7) then { if (_random_pluie < 6) then {pluie = pluie-_degre}; if ((_random_pluie >=6) and (_random_pluie <=9)) then {pluie = pluie+_degre}; }; if (brume>0.7) then { if (_random_brume < 6) then {brume = brume-_degre}; if ((_random_brume >=6) and (_random_brume <=9)) then {brume = pluie+_degre}; }; if ((pluie<=0.7) and (pluie>0.3)) then { if (_random_pluie < 5) then {pluie = pluie-_degre}; if (_random_pluie >=5) then {pluie = pluie+_degre}; }; if ((brume<=0.7) and (brume>0.3)) then { if (_random_brume < 5) then {brume = brume-_degre}; if (_random_pluie >=5) then {brume = brume+_degre}; }; if (pluie<=0.3) then { if (_random_pluie < 6) then {pluie = pluie+_degre}; if ((_random_pluie >=6) and (_random_pluie <=9)) then {pluie = pluie-_degre}; }; if (brume<=0.3) then { if (_random_brume < 6) then {brume = brume+_degre}; if ((_random_brume >=6) and (_random_brume <=9)) then {brume = pluie-_degre}; }; if (brume<0) then {brume = 0}; if (brume>1) then {brume = 1}; if (pluie<0) then {pluie = 0}; if (pluie>1) then {pluie = 1}; ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------FIN PROGRAMME ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> // il faut sortir du serveur pour que les changements climatiques soient appliqués à tous les joueurs, donc repasser sur la map sleep 10 ; publicVariable "brume" ; publicVariable "pluie" ; changement_temps = true ; publicVariable "changement_temps" ; }; ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //----------Fin de localit� ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> }; If (true) ExitWith {}if (local serveur) then { temps_mouv = ((concentration/10)*4); publicvariable "temps_mouv"; // call compile format["hint "" temps de mouvement : %1""",temps_mouv]; sleep 5 ; // Le mouvement _faux = true ; // lancement du script de dplacement, qui permet de varier les formation en cours de patrouille, et rgle l'attitude en cas d'alerte _depl = execVM "deplacement.sqf" ; // Plus la peine, le groupe est cr sur l'objectif ge1 setbehaviour "aware"; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["ge%1 SetSpeedMode ""LIMITED"" ; ge%1 setBehaviour attitude;",_i]; sleep 0.1 ; }; // Repli tac if (blufor_vts) then { gouff1 = [ge1,0,2,"blufor"] execVM "repli_ge1.sqf"; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["gouff%1 = [ge%1,0,2,""blufor""] execVM ""repli_gen.sqf"";",_i]; sleep 0.1 ; }; }; if (opfor_vts) then { gouff1 = [ge1,0,2,"opfor"] execVM "repli_ge1.sqf"; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["gouff%1 = [ge%1,0,2,""opfor""] execVM ""repli_gen.sqf"";",_i]; sleep 0.1 ; }; }; if (inde_vts) then { gouff1 = [ge1,0,2,"inde"] execVM "repli_ge1.sqf"; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["gouff%1 = [ge%1,0,2,""inde""] execVM ""repli_gen.sqf"";",_i]; sleep 0.1 ; }; }; while {_faux} do { for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { _random = (round (random nbre_ge))+8 ; if (_random == 0) then {_random = _random +1} ; call compile format["ge%1 move position base_ge%2; ge%1 setFormation formation_deplacement ; ge%1 setBehaviour attitude ; ge%1 SetSpeedMode vitesse ;",(_i),(_random)]; call compile format["if fin_mission then {_faux = false;};"]; sleep 0.2 ; }; sleep temps_mouv ; // sleep 360 ; }; }; If (true) ExitWith {}if (local serveur) then { temps_mouv = ((concentration/10)*4); publicvariable "temps_mouv"; sleep 5 ; // Le mouvement _faux = true ; ge1 setBehaviour "aware" ; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["ge%1 SetSpeedMode ""LIMITED"" ; ge%1 setBehaviour ""aware"";",_i]; sleep 0.1 }; // Repli tac if (blufor_vts) then { gouff1 = [ge1,0,2,"blufor"] execVM "repli_ge1.sqf"; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["gouff%1 = [ge%1,0,2,""blufor""] execVM ""repli_gen.sqf"";",_i]; sleep 0.1 ; }; }; if (opfor_vts) then { gouff1 = [ge1,0,2,"opfor"] execVM "repli_ge1.sqf"; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["gouff%1 = [ge%1,0,2,""opfor""] execVM ""repli_gen.sqf"";",_i]; sleep 0.1 ; }; }; if (inde_vts) then { gouff1 = [ge1,0,2,"inde"] execVM "repli_ge1.sqf"; for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["gouff%1 = [ge%1,0,2,""inde""] execVM ""repli_gen.sqf"";",_i]; sleep 0.1 ; }; }; while {_faux} do { // mouvement de garde for[{_i=2},{_i<=nbre_ge},{_i=_i+1}] do { _random = (round (random nbre_ge))+8 ; if (_random == 0) then {_random = _random +1} ; call compile format["ge%1 move position base_ge%2; ge%1 setFormation ""COLUMN"";",(_i),(_random)]; call compile format["if (fin_mission) then {_faux = false;};"]; _random = 0 ; sleep 0.2 ; }; // mouvement vers joueur (1 unité) _random = round (random nbre_ge) ; if (_random <= 2) then {_random = 2} ; if (blufor_vts) then { call compile format["ge%1 move position (leader gw); ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""AWARE"";",_random]; }; if (opfor_vts) then { call compile format["ge%1 move position (leader gpe); ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""AWARE"";",_random]; }; if (inde_vts) then { call compile format["ge%1 move position (leader gpi); ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""AWARE"";",_random]; }; call compile format["if fin_mission then {_faux = false;};"]; sleep temps_mouv ; }; }; If (true) ExitWith {}if (local serveur) then { for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["loona%1 disableai ""move"" ; loona%1 disableai ""anim"" ;",_e]; call compile format["loonb%1 disableai ""move"" ; loonb%1 disableai ""anim"" ;",_e]; call compile format["loonc%1 disableai ""move"" ; loonc%1 disableai ""anim"" ;",_e]; call compile format["loond%1 disableai ""move"" ; loond%1 disableai ""anim"" ;",_e]; call compile format["loone%1 disableai ""move"" ; loone%1 disableai ""anim"" ;",_e]; sleep 0.2 ; }; }; If (true) ExitWith {}//CAM_KEY_pressed.sqf start switch ((_this select 1)) do { //N key case 49: { if (!NORRN_CAM_NVG) then { camUseNVG true; NORRN_CAM_NVG = true; }else { camUseNVG false; NORRN_CAM_NVG = false; }; }; //A key case 30: { comment "A = Previous target"; if (NORRN_FOCUS_CAM_ON > 0) then { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON - 1; lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; }; }; //D key case 32: { comment "D = Next target"; if (NORRN_FOCUS_CAM_ON < COUNT_CAM_friends - 1) then { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON + 1; lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; }; }; /* //S key case 31: { "S = Next camera"; if (NORRN_CAM_TYPE < 4) then { NORRN_CAM_TYPE = NORRN_CAM_TYPE + 1; lbSetCurSel [10004, NORRN_CAM_TYPE]; }; }; //W key case 17: { comment "W = Previous camera"; if (NORRN_CAM_TYPE > 0) then { NORRN_CAM_TYPE = NORRN_CAM_TYPE - 1; lbSetCurSel [10004, NORRN_CAM_TYPE]; }; }; */ }; /* SPECTATE CAM SCRIPT Upon the player falling dead creates a camera that follows the nearest alive friendly unit AUGUST 2009 - norrin ************************************************************************************************************************** Start camera_follow.sqf */ disableserialization; private ["_alive_friends","_all_dead_dialog","_allUnits","_c","_camera_friends","_Camera_target","_camx","_camy","_camz","_can_be_revived","_can_be_revived_2","_d","_destroy","_destroy2","_dialog_1","_dialog_2","_display","_distance_to_friend","_e","_f","_follow_cam","_follow_cam_distance","_foo","_friends","_index","_index_friends","_max_box","_name_player","_nearest_friend","_nearest_teammate_dialog","_no_respawn_points","_Object","_pos","_respawn_button_timer","_show_respawn_time","_target","_me"]; //define variables _Object = _this select 0; _pos = _this select 1; _foo = []; _allUnits = []; _alive_friends = []; _destroy = false; _switch = false; _c = 0; NORRN_FOCUS_CAM_ON = 0; NORRN_CAM_TYPE = 0; NORRN_CAM_NVG = false; NORRNAllUnits = []; _top_view_height = 70; _r_dialog_0 = ""; _r_display = ""; //set camera to target body _camx = _pos select 0; _camy = _pos select 1; _camz = _pos select 2; NORRN_SPECTATE_cam = "camera" CamCreate [_camx,_camy+5,_camz+1]; NORRN_SPECTATE_cam CamSetTarget object; NORRN_SPECTATE_cam CameraEffect ["INTERNAL","Back"]; NORRN_SPECTATE_cam CamCommit 2; hint ""; //setVars for free camera _angh = 0; _angv = 45; _allUnits = allUnits; {if (side _x != sideLogic && alive _x) then {_alive_friends = _alive_friends + [_x]}} forEach _allUnits; COUNT_CAM_friends = count _alive_friends; //create dialog and initialise keyboard; _r_dialog_0 = createDialog "spectate_cam_dialog"; showcinemaborder false; _r_display = findDisplay 99129; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; _r_display displaySetEventHandler ["MouseButtonDown", "_this call Mouse_KEY_pressed"]; titletext [" ","BLACK IN",1]; CAM_KEY_pressed = compile preprocessfile "NORRN_spectate\VTSCAM_KEY_pressed.sqf"; mouse_KEY_pressed = compile preprocessfile "NORRN_spectate\mouse_KEY_pressed.sqf"; /* //change camera via dialog lbClear 10004; //_index = lbAdd[10004, "3rd Person"]; //_index = lbAdd[10004, "Top Down"]; //_index = lbAdd[10004, "Front Side"]; //_index = lbAdd[10004, "1st Person"]; _index = lbAdd[10004, "Follow/Free"]; lbSetCurSel [10004, 0]; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _alive_friends; lbSetCurSel [10005, 0]; */ while {!_destroy} do { scopeName "FollowCam_01"; //if (mission_Over) then {sleep 5; _destroy = true;breakOut "FollowCam_01";}; if (!dialog) then {sleep 0.1; _destroy = true; breakOut "FollowCam_01";}; /* if (_c == 400) then {_c = 0}; if (_c == 0) then { _allUnits = allUnits; _new_friends = []; {if (side _x != sideLogic && alive _x) then {_new_friends = _new_friends + [_x]}} forEach _allUnits; if (count _new_friends != COUNT_CAM_friends) then {_alive_friends = _new_friends; COUNT_CAM_friends = count _new_friends}; _camera_friends = _alive_friends; _c = 0; }; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _camera_friends; lbSetCurSel [10005, lbCurSel 10005]; if (dialog) then { NORRN_CAM_TYPE = lbCurSel 10004; NORRN_FOCUS_CAM_ON = (lbCurSel 10005); _unit = _camera_friends select NORRN_FOCUS_CAM_ON; _target = vehicle _unit; }; */ /* if (!dialog) then {if (!isNull _me) then {_target = _me; NORRN_SPECTATE_cam camsettarget _target;NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [-3, +1, (_max_box select 2) +1];NORRN_SPECTATE_cam camcommit 1};}; switch (NORRN_CAM_TYPE) do { case 0: {_target switchCamera "EXTERNAL"; NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"];}; case 1: {NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [0, -2, OFPEC_range_to_unit];NORRN_SPECTATE_cam camcommit 0.01}; case 2: {NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [-1.5, 3, 0.2];NORRN_SPECTATE_cam camSetFov 1.1; NORRN_SPECTATE_cam camcommit 0.01}; case 3: {_target switchCamera "INTERNAL";NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"]}; }; */ //======================================================================================== // Free cam courtesy of hoz and mandoble see: OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 _target = vehicle _Object; if (NORRN_CAM_TYPE == 0) then { NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"]; if (OFPEC_MouseButtons select 1) then { if (((OFPEC_MouseCoord select 0) >= 0) && ((OFPEC_MouseCoord select 0) <= 1) && ((OFPEC_MouseCoord select 1) >= 0) && ((OFPEC_MouseCoord select 1) <= 1)) then { _deltah = (0.5 - (OFPEC_MouseCoord select 0))*10/0.2; _deltav = (0.5 - (OFPEC_MouseCoord select 1))*10/0.2; _angv = (_angv + _deltav); _angh = (_angh + _deltah); _angv = _angv max 0; _angv = _angv min 89; }; }; _free_pos = [(getpos _target select 0) + sin(_angh)*OFPEC_range_to_unit, (getpos _target select 1) + cos(_angh)*OFPEC_range_to_unit, (getpos _target select 2) + OFPEC_range_to_unit*sin(_angv)]; NORRN_SPECTATE_cam camSetPos _free_pos; NORRN_SPECTATE_cam camCommit 0.01; }; //======================================================================================== _c = _c + 1; sleep 0.02; }; //destroy camera if (_destroy) exitWith { //detach object3D; closeDialog 0; camUseNVG false; // sleep 1; //if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; deleteVehicle lapin; /* //spawn_x = getpos object3D select 0; //spawn_y =getpos object3D select 1; //spawn_z =(object3D modelToWorld [0,0,0]) select 2; spawn_x = getPosASL object3D select 0; spawn_y = getPosASL object3D select 1; spawn_z = getPosASL object3D select 2; publicVariable "spawn_x"; publicVariable "spawn_y"; publicVariable "spawn_z"; console_unit_orientation = getdir object3D; From3D = true; publicvariable "From3D"; */ deleteVehicle object3D; /* nom_du_marqueur = console_nom; publicvariable "console_valid_unite"; publicvariable "var_console_valid_camp"; publicvariable "var_console_valid_attitude"; publicvariable "console_unit_moral"; publicvariable "nom_console_valid_mouvement"; publicvariable "var_console_valid_mouvement"; publicvariable "console_unit_orientation"; publicvariable "var_console_valid_type"; publicvariable "console_unit_unite"; publicvariable "var_console_valid_vitesse"; publicvariable "console_nom"; publicvariable "nom_console_valid_unite"; publicvariable "console_init"; publicvariable "nom_du_marqueur"; publicvariable "console_unit_orientation"; console_spawn = true; publicvariable "console_spawn"; sleep 3; */ player switchCamera "INTERNAL"; NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_SPECTATE_cam; [] execVM "Computer\cpu_dialog.sqf"; }; //Last edited 19/07/09/* SPECTATE CAM SCRIPT Upon the player falling dead creates a camera that follows the nearest alive friendly unit AUGUST 2009 - norrin ************************************************************************************************************************** Start camera_follow.sqf */ disableserialization; private ["_alive_friends","_all_dead_dialog","_allUnits","_c","_camera_friends","_Camera_target","_camx","_camy","_camz","_can_be_revived","_can_be_revived_2","_d","_destroy","_destroy2","_dialog_1","_dialog_2","_display","_distance_to_friend","_e","_f","_follow_cam","_follow_cam_distance","_foo","_friends","_index","_index_friends","_max_box","_name_player","_nearest_friend","_nearest_teammate_dialog","_no_respawn_points","_Object","_pos","_respawn_button_timer","_show_respawn_time","_target","_me"]; //define variables _Object = _this select 0; _pos = _this select 1; _foo = []; _allUnits = []; _alive_friends = []; _destroy = false; _switch = false; _c = 0; NORRN_FOCUS_CAM_ON = 0; NORRN_CAM_TYPE = 0; NORRN_CAM_NVG = false; NORRNAllUnits = []; _top_view_height = 70; _r_dialog_0 = ""; _r_display = ""; //set camera to target body _camx = _pos select 0; _camy = _pos select 1; _camz = _pos select 2; NORRN_SPECTATE_cam = "camera" CamCreate [_camx,_camy+5,_camz+1]; NORRN_SPECTATE_cam CamSetTarget object; NORRN_SPECTATE_cam CameraEffect ["INTERNAL","Back"]; NORRN_SPECTATE_cam CamCommit 2; hint ""; //setVars for free camera _angh = 0; _angv = 45; _allUnits = allUnits; {if (side _x != sideLogic && alive _x) then {_alive_friends = _alive_friends + [_x]}} forEach _allUnits; COUNT_CAM_friends = count _alive_friends; //create dialog and initialise keyboard; _r_dialog_0 = createDialog "spectate_cam_dialog"; ctrlShow [10004,false]; ctrlShow [10005,false]; showcinemaborder false; _r_display = findDisplay 99129; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; _r_display displaySetEventHandler ["MouseButtonDown", "_this call Mouse_KEY_pressed"]; titletext [" ","BLACK IN",1]; CAM_KEY_pressed = compile preprocessfile "NORRN_spectate\VTSCAM_KEY_pressed_Freecam.sqf"; mouse_KEY_pressed = compile preprocessfile "NORRN_spectate\mouse_KEY_pressed.sqf"; /* //change camera via dialog lbClear 10004; //_index = lbAdd[10004, "3rd Person"]; //_index = lbAdd[10004, "Top Down"]; //_index = lbAdd[10004, "Front Side"]; //_index = lbAdd[10004, "1st Person"]; _index = lbAdd[10004, "Follow/Free"]; lbSetCurSel [10004, 0]; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _alive_friends; lbSetCurSel [10005, 0]; */ while {!_destroy} do { scopeName "FollowCam_01"; //if (mission_Over) then {sleep 5; _destroy = true;breakOut "FollowCam_01";}; if (!dialog) then {sleep 0.1; _destroy = true; breakOut "FollowCam_01";}; /* if (_c == 400) then {_c = 0}; if (_c == 0) then { _allUnits = allUnits; _new_friends = []; {if (side _x != sideLogic && alive _x) then {_new_friends = _new_friends + [_x]}} forEach _allUnits; if (count _new_friends != COUNT_CAM_friends) then {_alive_friends = _new_friends; COUNT_CAM_friends = count _new_friends}; _camera_friends = _alive_friends; _c = 0; }; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _camera_friends; lbSetCurSel [10005, lbCurSel 10005]; if (dialog) then { NORRN_CAM_TYPE = lbCurSel 10004; NORRN_FOCUS_CAM_ON = (lbCurSel 10005); _unit = _camera_friends select NORRN_FOCUS_CAM_ON; _target = vehicle _unit; }; */ /* if (!dialog) then {if (!isNull _me) then {_target = _me; NORRN_SPECTATE_cam camsettarget _target;NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [-3, +1, (_max_box select 2) +1];NORRN_SPECTATE_cam camcommit 1};}; switch (NORRN_CAM_TYPE) do { case 0: {_target switchCamera "EXTERNAL"; NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"];}; case 1: {NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [0, -2, OFPEC_range_to_unit];NORRN_SPECTATE_cam camcommit 0.01}; case 2: {NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [-1.5, 3, 0.2];NORRN_SPECTATE_cam camSetFov 1.1; NORRN_SPECTATE_cam camcommit 0.01}; case 3: {_target switchCamera "INTERNAL";NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"]}; }; */ //======================================================================================== // Free cam courtesy of hoz and mandoble see: OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 _target = vehicle _Object; if (NORRN_CAM_TYPE == 0) then { NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"]; if (OFPEC_MouseButtons select 1) then { if (((OFPEC_MouseCoord select 0) >= 0) && ((OFPEC_MouseCoord select 0) <= 1) && ((OFPEC_MouseCoord select 1) >= 0) && ((OFPEC_MouseCoord select 1) <= 1)) then { _deltah = (0.5 - (OFPEC_MouseCoord select 0))*10/0.2; _deltav = (0.5 - (OFPEC_MouseCoord select 1))*10/0.2; _angv = (_angv + _deltav); _angh = (_angh + _deltah); _angv = _angv max 0; _angv = _angv min 89; }; }; _free_pos = [(getpos _target select 0) + sin(_angh)*OFPEC_range_to_unit, (getpos _target select 1) + cos(_angh)*OFPEC_range_to_unit, (getpos _target select 2) + OFPEC_range_to_unit*sin(_angv)]; NORRN_SPECTATE_cam camSetPos _free_pos; NORRN_SPECTATE_cam camCommit 0.01; }; //======================================================================================== _c = _c + 1; sleep 0.02; }; //destroy camera if (_destroy) exitWith { closeDialog 0; camUseNVG false; deleteVehicle lapin; player switchCamera "INTERNAL"; NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_SPECTATE_cam; [] execVM "Computer\cpu_dialog.sqf"; }; //Last edited 19/07/09/* SPECTATE CAM SCRIPT Upon the player falling dead creates a camera that follows the nearest alive friendly unit AUGUST 2009 - norrin ************************************************************************************************************************** Start camera_follow.sqf */ disableserialization; private ["_alive_friends","_all_dead_dialog","_allUnits","_c","_camera_friends","_Camera_target","_camx","_camy","_camz","_can_be_revived","_can_be_revived_2","_d","_destroy","_destroy2","_dialog_1","_dialog_2","_display","_distance_to_friend","_e","_f","_follow_cam","_follow_cam_distance","_foo","_friends","_index","_index_friends","_max_box","_name_player","_nearest_friend","_nearest_teammate_dialog","_no_respawn_points","_Object","_pos","_respawn_button_timer","_show_respawn_time","_target","_me"]; //define variables _Object = _this select 0; _pos = _this select 1; _foo = []; _allUnits = []; _alive_friends = []; _destroy = false; _switch = false; _c = 0; NORRN_FOCUS_CAM_ON = 0; NORRN_CAM_TYPE = 0; NORRN_CAM_NVG = false; NORRNAllUnits = []; _top_view_height = 70; _r_dialog_0 = ""; _r_display = ""; //set camera to target body _camx = _pos select 0; _camy = _pos select 1; _camz = _pos select 2; NORRN_SPECTATE_cam = "camera" CamCreate [_camx,_camy+5,_camz+1]; NORRN_SPECTATE_cam CamSetTarget object; NORRN_SPECTATE_cam CameraEffect ["INTERNAL","Back"]; NORRN_SPECTATE_cam CamCommit 2; hint ""; //setVars for free camera _angh = 0; _angv = 45; _allUnits = allUnits; {if (side _x != sideLogic && alive _x) then {_alive_friends = _alive_friends + [_x]}} forEach _allUnits; COUNT_CAM_friends = count _alive_friends; //create dialog and initialise keyboard; _r_dialog_0 = createDialog "spectate_cam_dialog"; ctrlShow [10004,false]; ctrlShow [10005,false]; showcinemaborder false; _r_display = findDisplay 99129; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; _r_display displaySetEventHandler ["MouseButtonDown", "_this call Mouse_KEY_pressed"]; titletext [" ","BLACK IN",1]; CAM_KEY_pressed = compile preprocessfile "NORRN_spectate\VTSCAM_KEY_pressed.sqf"; mouse_KEY_pressed = compile preprocessfile "NORRN_spectate\mouse_KEY_pressed.sqf"; /* //change camera via dialog lbClear 10004; //_index = lbAdd[10004, "3rd Person"]; //_index = lbAdd[10004, "Top Down"]; //_index = lbAdd[10004, "Front Side"]; //_index = lbAdd[10004, "1st Person"]; _index = lbAdd[10004, "Follow/Free"]; lbSetCurSel [10004, 0]; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _alive_friends; lbSetCurSel [10005, 0]; */ while {!_destroy} do { scopeName "FollowCam_01"; //if (mission_Over) then {sleep 5; _destroy = true;breakOut "FollowCam_01";}; if (!dialog) then {sleep 0.1; _destroy = true; breakOut "FollowCam_01";}; /* if (_c == 400) then {_c = 0}; if (_c == 0) then { _allUnits = allUnits; _new_friends = []; {if (side _x != sideLogic && alive _x) then {_new_friends = _new_friends + [_x]}} forEach _allUnits; if (count _new_friends != COUNT_CAM_friends) then {_alive_friends = _new_friends; COUNT_CAM_friends = count _new_friends}; _camera_friends = _alive_friends; _c = 0; }; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _camera_friends; lbSetCurSel [10005, lbCurSel 10005]; if (dialog) then { NORRN_CAM_TYPE = lbCurSel 10004; NORRN_FOCUS_CAM_ON = (lbCurSel 10005); _unit = _camera_friends select NORRN_FOCUS_CAM_ON; _target = vehicle _unit; }; */ /* if (!dialog) then {if (!isNull _me) then {_target = _me; NORRN_SPECTATE_cam camsettarget _target;NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [-3, +1, (_max_box select 2) +1];NORRN_SPECTATE_cam camcommit 1};}; switch (NORRN_CAM_TYPE) do { case 0: {_target switchCamera "EXTERNAL"; NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"];}; case 1: {NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [0, -2, OFPEC_range_to_unit];NORRN_SPECTATE_cam camcommit 0.01}; case 2: {NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"];NORRN_SPECTATE_cam camsetrelpos [-1.5, 3, 0.2];NORRN_SPECTATE_cam camSetFov 1.1; NORRN_SPECTATE_cam camcommit 0.01}; case 3: {_target switchCamera "INTERNAL";NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"]}; }; */ //======================================================================================== // Free cam courtesy of hoz and mandoble see: OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 _target = vehicle _Object; if (NORRN_CAM_TYPE == 0) then { NORRN_SPECTATE_cam camsettarget _target; NORRN_SPECTATE_cam cameraeffect ["internal", "back"]; if (OFPEC_MouseButtons select 1) then { if (((OFPEC_MouseCoord select 0) >= 0) && ((OFPEC_MouseCoord select 0) <= 1) && ((OFPEC_MouseCoord select 1) >= 0) && ((OFPEC_MouseCoord select 1) <= 1)) then { _deltah = (0.5 - (OFPEC_MouseCoord select 0))*10/0.2; _deltav = (0.5 - (OFPEC_MouseCoord select 1))*10/0.2; _angv = (_angv + _deltav); _angh = (_angh + _deltah); _angv = _angv max 0; _angv = _angv min 89; }; }; _free_pos = [(getpos _target select 0) + sin(_angh)*OFPEC_range_to_unit, (getpos _target select 1) + cos(_angh)*OFPEC_range_to_unit, (getpos _target select 2) + OFPEC_range_to_unit*sin(_angv)]; NORRN_SPECTATE_cam camSetPos _free_pos; NORRN_SPECTATE_cam camCommit 0.01; }; //======================================================================================== _c = _c + 1; sleep 0.02; }; //destroy camera if (_destroy) exitWith { detach object3D; sleep 2; closeDialog 0; camUseNVG false; //if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; deleteVehicle lapin; //spawn_x = getPosASL object3D select 0; //spawn_y = getPosASL object3D select 1; //spawn_z = getPosASL object3D select 2; destination_x = getPos object3D select 0; destination_y = getPos object3D select 1; destination_z = getPos object3D select 2; publicVariable "destination_x"; publicVariable "destination_y"; publicVariable "destination_z"; destination3D_x = getPosASL object3D select 0; destination3D_y = getPosASL object3D select 1; destination3D_z = getPosASL object3D select 2; publicVariable "destination3D_x"; publicVariable "destination3D_y"; publicVariable "destination3D_z"; objectif_orientation = getdir object3D; publicVariable "objectif_orientation"; From3D = true; publicvariable "From3D"; creation_objectif = true; publicVariable "creation_objectif"; crea_obj = true ; publicvariable "crea_obj"; sleep 3; player switchCamera "INTERNAL"; NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_SPECTATE_cam; [] execVM "Computer\cpu_dialog.sqf"; deleteVehicle object3D; }; //Last edited 19/07/09//CAM_KEY_pressed.sqf start switch ((_this select 1)) do { //N key case 49: { if (!NORRN_CAM_NVG) then { camUseNVG true; NORRN_CAM_NVG = true; }else { camUseNVG false; NORRN_CAM_NVG = false; }; }; //Q key case 16: { if checkattach then { lapin setdir (getDir lapin)-10; }; }; //E key case 18: { if checkattach then { lapin setdir (getDir lapin)+10; }; }; //Space key /* case 57: { if checkattach then { detach object3D; checkattach = false; }else{ object3D attachTo [lapin,[0,0,VtsHight]]; checkattach = true; }; }; */ //H key /* case 35: { if checkattach then { detach object3D; checkattach = false; }else{ object3D attachTo [lapin,[0,0,VtsHight]]; checkattach = true; }; _pos2 = getPos lapin; unita2 = object2place createVehicleLocal _pos2; lapin = unita2; CamName camSetTarget lapin; deleteVehicle insect; }; */ //S key case 31: { if checkattach then { //_direction = direction lapin; _direction = direction NORRN_SPECTATE_cam; _pos = getPos lapin; // lapin setPos [(_pos select 0)-(0.5*sin(_direction)), (_pos select 1)-(0.5*cos(_direction)), (_pos select 2)]; lapin setPos [(_pos select 0)-(Step3d*sin(_direction)), (_pos select 1)-(Step3d*cos(_direction)), 0]; }; }; //W key case 17: { if checkattach then { //_direction = direction lapin; _direction = direction NORRN_SPECTATE_cam; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(Step3d*sin(_direction)), (_pos select 1)+(Step3d*cos(_direction)),0]; }; }; //A key case 30: { if checkattach then { //_direction = direction lapin; _direction = direction NORRN_SPECTATE_cam; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(-Step3d*sin(_direction+90)), (_pos select 1)+(-Step3d*cos(_direction+90)),0]; }; }; //D key case 32: { if checkattach then { //_direction = direction lapin; _direction = direction NORRN_SPECTATE_cam; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(Step3d*sin(_direction+90)), (_pos select 1)+(Step3d*cos(_direction+90)),0]; }; }; //C key case 46: { //lapin setpos [ getPos lapin select 0, getPos lapin select 1, ((lapin modelToWorld [0,0,0]) select 2)+1] ; if checkattach then { VtsHight = VtsHight + VtsHightstep; object3D attachTo [lapin,[0,0,VtsHight ]]; }; }; //X key case 45: { if checkattach then { if (VtsHight > VtsHightmin) then { VtsHight = VtsHight - VtsHightstep; object3D attachTo [lapin,[0,0,VtsHight ]]; //lapin setpos [ getPos lapin select 0, getPos lapin select 1, ((lapin modelToWorld [0,0,0]) select 2)-1] ; }; }; }; }; //mouse_KEY_pressed.sqf start MouseEvents = { _x =0; _y =0; _param = _this select 1; _type = _this select 0; switch (_type) do { case "MouseMoving": { _x = _param select 1; _y = _param select 2; OFPEC_MouseCoord = [_x, _y]; }; case "MouseButtonDown": { _x = _param select 2; _y = _param select 3; _button = _param select 1; OFPEC_MouseButtons set[_button, true]; }; case "MouseButtonUp": { _x = _param select 2; _y = _param select 3; _button = _param select 1; OFPEC_MouseButtons set[_button, false]; }; case "MouseZChanged": { if (((_this select 1) select 1) > 0) then { if (OFPEC_range_to_unit > 2) then { OFPEC_range_to_unit = OFPEC_range_to_unit - OFPEC_camzoomspeed; }; } else { if (OFPEC_range_to_unit < OFPEC_maxzoomout) then { OFPEC_range_to_unit = OFPEC_range_to_unit + OFPEC_camzoomspeed; }; }; }; }; }; detach object3D; //closeDialog 0; camUseNVG false; //sleep 1; //if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; //deleteVehicle lapin; //spawn_x = getpos object3D select 0; //spawn_y =getpos object3D select 1; //spawn_z =(object3D modelToWorld [0,0,0]) select 2; sleep 3; spawn_x = getPosASL object3D select 0; spawn_y = getPosASL object3D select 1; spawn_z = getPosASL object3D select 2; publicVariable "spawn_x"; publicVariable "spawn_y"; publicVariable "spawn_z"; console_unit_orientation = getdir object3D; if ((var_console_valid_type == "Vehicle") or (var_console_valid_type == "Matrl")) then { //sleep 2; VtsHight =VtsHight + 6; }; object3D attachTo [lapin,[0,0,VtsHight ]]; From3D = true; publicvariable "From3D"; //deleteVehicle object3D; nom_du_marqueur = ""; publicvariable "console_valid_unite"; publicvariable "var_console_valid_camp"; publicvariable "var_console_valid_attitude"; publicvariable "console_unit_moral"; publicvariable "nom_console_valid_mouvement"; publicvariable "var_console_valid_mouvement"; publicvariable "console_unit_orientation"; publicvariable "var_console_valid_type"; publicvariable "console_unit_unite"; publicvariable "var_console_valid_vitesse"; publicvariable "console_nom"; publicvariable "nom_console_valid_unite"; publicvariable "console_init"; publicvariable "nom_du_marqueur"; publicvariable "console_unit_orientation"; console_spawn = true; publicvariable "console_spawn"; detach object3D; camUseNVG false; //sleep 1; //if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; if ((var_console_valid_type == "Vehicle") or (var_console_valid_type == "Matrl")) then { sleep 2; VtsHight =VtsHight + 6; }; sleep 2; object3D attachTo [lapin,[0,0,VtsHight ]]; From3D = true; publicvariable "From3D"; //deleteVehicle lapin; //spawn_x = getpos object3D select 0; //spawn_y =getpos object3D select 1; //spawn_z =(object3D modelToWorld [0,0,0]) select 2; spawn_x = getPosASL object3D select 0; spawn_y = getPosASL object3D select 1; spawn_z = getPosASL object3D select 2; publicVariable "spawn_x"; publicVariable "spawn_y"; publicVariable "spawn_z"; console_unit_orientation = getdir object3D; //object3D attachTo [lapin,[0,0,VtsHight ]]; // sleep 2; //deleteVehicle object3D; nom_du_marqueur = ""; publicvariable "console_valid_unite"; publicvariable "var_console_valid_camp"; publicvariable "var_console_valid_attitude"; publicvariable "console_unit_moral"; publicvariable "nom_console_valid_mouvement"; publicvariable "var_console_valid_mouvement"; publicvariable "var_console_valid_type"; publicvariable "console_unit_unite"; publicvariable "var_console_valid_vitesse"; publicvariable "console_nom"; publicvariable "nom_console_valid_unite"; publicvariable "console_init"; publicvariable "nom_du_marqueur"; publicvariable "console_unit_orientation"; console_spawn = true; publicvariable "console_spawn"; sleep 3; closeDialog 0; /* NORRN_SPECTATE_cam CamSetTarget lapin; NORRN_SPECTATE_cam CameraEffect ["INTERNAL","Back"]; NORRN_SPECTATE_cam CamCommit 2; deleteVehicle object3D; sleep 3; camUseNVG false; player switchCamera "INTERNAL"; NORRN_SPECTATE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_SPECTATE_cam; deleteVehicle lapin; */ //[] execVM "Computer\cpu_dialog.sqf";// Initialise spectate cam // norrin // AUGUST 2009 - norrin disableSerialization; if (breakclic <= 1 ) then { clic1 = false; //object3D = console_unit_unite createVehicleLocal [getPos player select 0, (getPos player select 1)+20,getPos player select 2] ; _display = finddisplay 8000; _txt = _display displayctrl 200; ctrlShow [10004,true]; ctrlShow [10005,true]; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2 ; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; //hint "pause"; //if (_clic1) exitWith {}; if (clic1) then { hint ""; _j=0; clic1 = false; console_nom = format ["%1",ctrlText 10231]; console_init = format ["%1",ctrlText 10232]; closeDialog 0; object3D = console_unit_unite createVehicleLocal [spawn_x, spawn_y ,spawn_z] ; check3d = false; Step3d = 0.5; //lapin = "Rabbit" createVehicleLocal getPos object3D; lapin = "Rabbit" createVehicleLocal [getPos object3D select 0, getPos object3D select 1,0] ; object3D allowDamage false; lapin allowDamage false; VtsHightstep = 1; VtsHight = 2.5; VtsHightmin = 2; VTScamtarget = object3D; if (nom_console_valid_type == "Man") then { VtsHightstep = 1;VtsHight = 0; VtsHightmin = 0; VTScamtarget = lapin}; if (nom_console_valid_type == "Divers") then { VtsHightstep = 0.5;VtsHight = 0; VtsHightmin = -5}; object3D attachTo [lapin,[0,0,VtsHight ]]; checkattach = true; _pos = getpos object3D; //hauteur _pos = getpos lapin; //_bee = "butterfly" createVehicle [_pos select 0, _pos select 1, (_pos select 2) + 4]; [VTScamtarget, _pos] execVM "NORRN_spectate\cam_spectate.sqf"; //hauteur [lapin, _pos] execVM "NORRN_spectate\cam_spectate.sqf"; //Camera Options - hoz and mandoble's free cam settings, OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 OFPEC_MouseCoord = [0.5,0.5]; OFPEC_MouseScroll = 0; OFPEC_MouseButtons =[false,false]; OFPEC_camzoomspeed = 5; OFPEC_maxzoomout = 400; OFPEC_range_to_unit = 40; //starting dist from target }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; if (true) exitWith {};// Initialise spectate cam // norrin // AUGUST 2009 - norrin disableSerialization; if (breakclic <= 1 ) then { clic1 = false; //object3D = console_unit_unite createVehicleLocal [getPos player select 0, (getPos player select 1)+20,getPos player select 2] ; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "spawn_x = _pos select 0; spawn_y = _pos select 1; spawn_z = _pos select 2 ; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; //hint "pause"; //if (_clic1) exitWith {}; if (clic1) then { hint ""; _j=0; clic1 = false; console_nom = format ["%1",ctrlText 10231]; console_init = format ["%1",ctrlText 10232]; closeDialog 0; //object3D = console_unit_unite createVehicleLocal [spawn_x, spawn_y ,spawn_z] ; check3d = false; Step3d = 0.5; //lapin = "Rabbit" createVehicleLocal getPos object3D; lapin = "Rabbit" createVehicleLocal [spawn_x, spawn_y ,0.5]; //object3D allowDamage false; lapin allowDamage false; VtsHight = 0.5; VTScamtarget = lapin; //object3D attachTo [lapin,[0,0,VtsHight ]]; checkattach = true; _pos = getpos lapin; //hauteur _pos = getpos lapin; //_bee = "butterfly" createVehicle [_pos select 0, _pos select 1, (_pos select 2) + 4]; [VTScamtarget, _pos] execVM "NORRN_spectate\cam_spectate_freecam.sqf"; //hauteur [lapin, _pos] execVM "NORRN_spectate\cam_spectate.sqf"; //Camera Options - hoz and mandoble's free cam settings, OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 OFPEC_MouseCoord = [0.5,0.5]; OFPEC_MouseScroll = 0; OFPEC_MouseButtons =[false,false]; OFPEC_camzoomspeed = 5; OFPEC_maxzoomout = 400; OFPEC_range_to_unit = 40; //starting dist from target }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; if (true) exitWith {};// Initialise spectate cam // norrin // AUGUST 2009 - norrin disableSerialization; if (breakclic <= 1 ) then { clic1 = false; //object3D = console_unit_unite createVehicleLocal [getPos player select 0, (getPos player select 1)+20,getPos player select 2] ; _display = finddisplay 8000; _txt = _display displayctrl 200; _txt CtrlSetText "Left click on the map"; _txt CtrlSetTextColor [0.9,0.9,0.9,1]; ctrlShow [10004,true]; ctrlShow [10005,true]; Ctrlshow [200,true];sleep 0.2; CtrlShow [200,false];sleep 0.2;Ctrlshow [200,true] ; onMapSingleClick "destination_x = _pos select 0; destination_y = _pos select 1; destination_z = _pos select 2 ; publicVariable ""destination_x""; publicVariable ""destination_y""; publicVariable ""destination_z""; clic1 = true; onMapSingleClick """";" ; for "_j" from 10 to 0 step -1 do { hint format["Click On Map %1",_j]; //hint "pause"; //if (_clic1) exitWith {}; if (clic1) then { hint ""; _j=0; clic1 = false; closeDialog 0; switch (objectif_valid) do { case "Take": { object3D = "FlagCarrierCDF" createVehicleLocal [destination_x, destination_y ,destination_z] ; VtsHight = 4; VtsHightmin = 0; VtsHightstep = 0.5; }; case "Target": { object3D = vts2_ManE12 createVehicleLocal [destination_x, destination_y ,destination_z] ; VtsHight = 0; VtsHightmin = 0; VtsHightstep = 0.5; }; case "Destr.": { object3D = "Land_radar" createVehicleLocal [destination_x, destination_y ,destination_z] ; VtsHight = 3; VtsHightmin = 0; VtsHightstep = 0.5; }; case "Hostage": { object3D = vts2_ManW20 createVehicleLocal [destination_x, destination_y ,destination_z] ; VtsHight = 0; VtsHightmin = 0; VtsHightstep = 0.5; }; }; check3d = false; Step3d = 0.5; //lapin = "Rabbit" createVehicleLocal getPos object3D; lapin = "Rabbit" createVehicleLocal [getPos object3D select 0, getPos object3D select 1,0] ; object3D allowDamage false; lapin allowDamage false; VTScamtarget = lapin; //if (nom_console_valid_type == "Man") then { //}else{ //VtsHight = 2.5; //VTScamtarget = object3D //}; object3D attachTo [lapin,[0,0,VtsHight ]]; checkattach = true; _pos = getpos object3D; //hauteur _pos = getpos lapin; //_bee = "butterfly" createVehicle [_pos select 0, _pos select 1, (_pos select 2) + 4]; [VTScamtarget, _pos] execVM "NORRN_spectate\cam_spectate_Obj.sqf"; //hauteur [lapin, _pos] execVM "NORRN_spectate\cam_spectate.sqf"; //Camera Options - hoz and mandoble's free cam settings, OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 OFPEC_MouseCoord = [0.5,0.5]; OFPEC_MouseScroll = 0; OFPEC_MouseButtons =[false,false]; OFPEC_camzoomspeed = 5; OFPEC_maxzoomout = 400; OFPEC_range_to_unit = 40; //starting dist from target }; clic1 = false; sleep 1; }; sleep 0.5; hint ""; breakclic = 0; // waitUntil {(clic1)}; }; if (true) exitWith {};//CAM_KEY_pressed.sqf start switch ((_this select 1)) do { //N key case 49: { if (!NORRN_CAM_NVG) then { camUseNVG true; NORRN_CAM_NVG = true; }else { camUseNVG false; NORRN_CAM_NVG = false; }; }; //A key case 30: { if checkattach then { lapin setdir (getDir lapin)-10; }; }; //D key case 32: { if checkattach then { lapin setdir (getDir lapin)+10; }; }; /* //Space key case 57: { if checkattach then { detach object3D; checkattach = false; }else{ object3D attachTo [lapin,[0,0,VtsHight]]; checkattach = true; }; }; */ //H key /* case 35: { if checkattach then { detach object3D; checkattach = false; }else{ object3D attachTo [lapin,[0,0,VtsHight]]; checkattach = true; }; _pos2 = getPos lapin; unita2 = object2place createVehicleLocal _pos2; lapin = unita2; CamName camSetTarget lapin; deleteVehicle insect; }; */ //S key case 31: { if checkattach then { _direction = direction lapin; _pos = getPos lapin; // lapin setPos [(_pos select 0)-(0.5*sin(_direction)), (_pos select 1)-(0.5*cos(_direction)), (_pos select 2)]; lapin setPos [(_pos select 0)-(Step3d*sin(_direction)), (_pos select 1)-(Step3d*cos(_direction)), 0]; }; }; //W key case 17: { if checkattach then { _direction = direction lapin; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(Step3d*sin(_direction)), (_pos select 1)+(Step3d*cos(_direction)),0]; }; }; //Q key case 16: { if checkattach then { _direction = direction lapin; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(-Step3d*sin(_direction+90)), (_pos select 1)+(-Step3d*cos(_direction+90)),0]; }; }; //E key case 18: { if checkattach then { _direction = direction lapin; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(Step3d*sin(_direction+90)), (_pos select 1)+(Step3d*cos(_direction+90)),0]; }; }; //C key case 46: { //lapin setpos [ getPos lapin select 0, getPos lapin select 1, ((lapin modelToWorld [0,0,0]) select 2)+1] ; if checkattach then { VtsHight = VtsHight + VtsHightstep; object3D attachTo [lapin,[0,0,VtsHight ]]; }; }; //X key case 45: { if checkattach then { if (VtsHight > VtsHightmin) then { VtsHight = VtsHight - VtsHightstep; object3D attachTo [lapin,[0,0,VtsHight ]]; //lapin setpos [ getPos lapin select 0, getPos lapin select 1, ((lapin modelToWorld [0,0,0]) select 2)-1] ; }; }; }; }; //CAM_KEY_pressed.sqf start switch ((_this select 1)) do { //N key case 49: { if (!NORRN_CAM_NVG) then { camUseNVG true; NORRN_CAM_NVG = true; }else { camUseNVG false; NORRN_CAM_NVG = false; }; }; //S key case 31: { if checkattach then { _direction = direction NORRN_SPECTATE_cam; //_direction = direction lapin; _pos = getPos lapin; lapin setdir _direction; // lapin setPos [(_pos select 0)-(0.5*sin(_direction)), (_pos select 1)-(0.5*cos(_direction)), (_pos select 2)]; lapin setPos [(_pos select 0)-(Step3d*sin(_direction)), (_pos select 1)-(Step3d*cos(_direction)), 0]; }; }; //W key case 17: { if checkattach then { //_direction = direction lapin; _direction = direction NORRN_SPECTATE_cam; _pos = getPos lapin; lapin setdir _direction; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(Step3d*sin(_direction)), (_pos select 1)+(Step3d*cos(_direction)),0]; }; }; //A key case 30: { if checkattach then { _direction = direction NORRN_SPECTATE_cam; //_direction = direction lapin; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(-Step3d*sin(_direction+90)), (_pos select 1)+(-Step3d*cos(_direction+90)),0]; }; }; //D key case 32: { if checkattach then { _direction = direction NORRN_SPECTATE_cam; //_direction = direction lapin; _pos = getPos lapin; // lapin setPos [(_pos select 0)+(0.5*sin(_direction)), (_pos select 1)+(0.5*cos(_direction)),(_pos select 2)]; lapin setPos [(_pos select 0)+(Step3d*sin(_direction+90)), (_pos select 1)+(Step3d*cos(_direction+90)),0]; }; }; /* //C key case 46: { //lapin setpos [ getPos lapin select 0, getPos lapin select 1, ((lapin modelToWorld [0,0,0]) select 2)+1] ; if checkattach then { VtsHight = VtsHight + 1; object3D attachTo [lapin,[0,0,VtsHight ]]; }; }; //X key case 45: { if checkattach then { if (VtsHight > 2.5) then { VtsHight = VtsHight - 1; object3D attachTo [lapin,[0,0,VtsHight ]]; //lapin setpos [ getPos lapin select 0, getPos lapin select 1, ((lapin modelToWorld [0,0,0]) select 2)-1] ; }; }; }; */ }; /* Spectate CAMERA DIALOG JUNE 2009 - norrin ********************************************************************************************************************************** spectate_cam_dialog.hpp */ // Control types #define CT_STATIC 0 #define CT_BUTTON 1 #define CT_EDIT 2 #define CT_SLIDER 3 #define CT_COMBO 4 #define CT_LISTBOX 5 #define CT_TOOLBOX 6 #define CT_CHECKBOXES 7 #define CT_PROGRESS 8 #define CT_HTML 9 #define CT_STATIC_SKEW 10 #define CT_ACTIVETEXT 11 #define CT_TREE 12 #define CT_STRUCTURED_TEXT 13 #define CT_CONTEXT_MENU 14 #define CT_CONTROLS_GROUP 15 #define CT_XKEYDESC 40 #define CT_XBUTTON 41 #define CT_XLISTBOX 42 #define CT_XSLIDER 43 #define CT_XCOMBO 44 #define CT_ANIMATED_TEXTURE 45 #define CT_OBJECT 80 #define CT_OBJECT_ZOOM 81 #define CT_OBJECT_CONTAINER 82 #define CT_OBJECT_CONT_ANIM 83 #define CT_LINEBREAK 98 #define CT_USER 99 #define CT_MAP 100 #define CT_MAP_MAIN 101 // Static styles #define ST_POS 0x0F #define ST_HPOS 0x03 #define ST_VPOS 0x0C #define ST_LEFT 0x00 #define ST_RIGHT 0x01 #define ST_CENTER 0x02 #define ST_DOWN 0x04 #define ST_UP 0x08 #define ST_VCENTER 0x0c #define ST_TYPE 0xF0 #define ST_SINGLE 0 #define ST_MULTI 16 #define ST_TITLE_BAR 32 #define ST_PICTURE 48 #define ST_FRAME 64 #define ST_BACKGROUND 80 #define ST_GROUP_BOX 96 #define ST_GROUP_BOX2 112 #define ST_HUD_BACKGROUND 128 #define ST_TILE_PICTURE 144 #define ST_WITH_RECT 160 #define ST_LINE 176 class spectate_cam_dialog { idd = 99129; movingEnable = true; class controls { class NORRNRscText { access = ReadAndWrite; type = 0; idc = -1; style = 0; x = 0; y = 0; w = 0; h = 0; font = "TahomaB"; sizeEx = 0.02; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; text = ""; }; class NORRNRscActiveText { access = ReadAndWrite; type = 11; idc = -1; style = 2; x = 0; y = 0; h = 0; w = 0; font = "TahomaB"; sizeEx = 0.04; color[] = {1, 1, 1, 1}; colorActive[] = {1, 0.5, 0, 1}; soundEnter[] = {"", 0.1, 1}; soundPush[] = {"", 0.1, 1}; soundClick[] = {"", 0.1, 1}; soundEscape[] = {"", 0.1, 1}; text = ""; default = 0; }; class NORRNRscControlsGroup { type = 15; idc = -1; style = 0; x = 0; y = 0; w = 0; h = 0; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; class Controls {}; }; class NORRNRscCombo { idc = -1; type = CT_COMBO; style = ST_LEFT; colorSelect[] = {1, 1, 1, 1 }; colorSelectBackground[] = {0, 0, 0, 1}; colorText[] = {1, 1, 1, 1}; colorScrollbar[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 1}; colorBorder[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 1}; soundSelect[] = { "", 0, 1 }; soundExpand[] = { "", 0, 1 }; soundCollapse[] = { "", 0, 1 }; borderSize = 0; font = "TahomaB"; sizeEx = 0.02; rowHeight = 0.025; wholeHeight = 0.3; text = ""; maxHistoryDelay = 0; default = true; x = 0; y = 0; w = 0; h = 0; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = 0; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; }; class mouseHandler : NORRNRscControlsGroup { onMouseMoving = "[""MouseMoving"",_this] call MouseEvents"; onMouseButtonDown = "[""MouseButtonDown"",_this] call MouseEvents"; onMouseButtonUp = "[""MouseButtonUp"",_this] call MouseEvents"; onMouseZChanged = "[""MouseZChanged"",_this] call MouseEvents"; idc = 2501; type = 15; style = 0; x = 0.0; y = 0.0; w = 1.0; h = 1.0; colorBackground[] = {0.2, 0.0, 0.0, 0.0}; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; class Controls {}; }; /* class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -0.2; y = -0.2; w = 1.4; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class Speed:NORRNRscButton { idc = 10001; x = 0.05; y = 0.95; w = 0.010; h = 0.020; text = "Preview"; action = "if checkattach then {detach object3D;checkattach = false;}else{object3D attachTo [lapin,[0,0,VtsHight]]; checkattach = true;};"; }; class Button2:NORRNRscButton { idc = 10002; x = 0.05; y = 0.95; w = 0.010; h = 0.020; text = "Place"; action = "if checkattach then {detach object3D;checkattach = false;}else{object3D attachTo [lapin,[0,0,VtsHight]]; checkattach = true;};"; }; */ class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -0.2; y = 0.95; w = 1.4; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 0.9,0.9,0.9, 1 }; colorBackground[] = {0.2,0.1,0.2,0.6}; text = ""; }; class Speed:NORRNRscNavButton { idc = 10003; x = 0.05; y = 0.95; w = 0.060; h = 0.030; text = "Speed"; action = "if (Step3d == 0.5) then {Step3d = 1.5} else {Step3d = 0.5};"; }; class place:NORRNRscNavButton { idc = 10004; x = 0.120; y = 0.95; w = 0.060; h = 0.030; text = "Place"; action = "[] execVM ""NORRN_spectate\place.sqf"";"; }; class Copy:NORRNRscNavButton { idc = 10005; x = 0.190; y = 0.95; w = 0.080; h = 0.030; text = "Place & exit"; action = "[] execVM ""NORRN_spectate\placeexit.sqf"";"; }; /* class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.01; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Spectate Camera"; default = true; }; */ class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = 0.8; y = 0.98; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = 0.8; y = 0.96; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls: A/D - Turn this object W/S/C/X/Q/E - Move this object N - Toggle NV ""]"; text = "Press for Help"; }; /* class CAM_LIST: NORRNRscCombo { idc = 10004; x = 0.09; y = 0.005; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.02; y = 0.005; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = 0.82; y = 0.005; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.75; y = 0.005; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; */ }; }; // objec_verif.sqf if (local serveur) then { somme_secondaires = 0 ; if (var_trigg>0) then { if (approche) then { for[{_i=1},{_i<=var_trigg},{_i=_i+1}] do { call compile format ["if (approche%1) then {somme_secondaires = somme_secondaires + 1 ; }",(_i)]; sleep 2; }; if (somme_secondaires == var_trigg) then {exercice_okreussi = true; publicvariable "exercice_okreussi";}; }; }; if (var_trigg<1) then { if (approche) then {exercice_okreussi = true; publicvariable "exercice_okreussi";}; }; objec_sec = false; publicvariable "objec_sec"; }; If (true) ExitWith {}if (local serveur) then { if (blufor_vts) then { [otage] join gw; }; if (opfor_vts) then { [otage] join gpe; }; if (inde_vts) then { [otage] join gpi; }; }; If (true) ExitWith {}// ----------- cible fuite_officier = false ; publicvariable "fuite_officier"; _extrac = 1 ; extrac_point = "HeliHempty" createVehicle [(position objectif select 0),(position objectif select 1),0]; // Création du vehicule d'extraction _rand1 = random 100 ; _rand2 = random 100 ; _vehicule_extrac_x = (position objectif select 0) + _rand1 - _rand2 ; _vehicule_extrac_y = (position objectif select 1) + _rand2 - _rand1 ; // Création du point d'extrac _rand3 = random 4 ; if (_rand3 <= 1) then {_extrac = 1}; if ((_rand3 <= 2) and (_rand3 > 1)) then {_extrac = 2}; if ((_rand3 <= 3) and (_rand3 > 2)) then {_extrac = 3}; if (_rand3 > 3) then {_extrac = 4}; if (_extrac == 1) then {extrac_point setpos [(getpos objectif select 0)+300, (getPos objectif select 1)+300,0];} ; if (_extrac == 2) then {extrac_point setpos [(getpos objectif select 0)+300, (getPos objectif select 1)-300,0];} ; if (_extrac == 3) then {extrac_point setpos [(getpos objectif select 0)-300, (getPos objectif select 1)+300,0];} ; if (_extrac == 4) then {extrac_point setpos [(getpos objectif select 0)-300, (getPos objectif select 1)-300,0];} ; if (camp_valid == "Opfor") then { jeep_officier = vts2_VehE5 createvehicle [(_vehicule_extrac_x), (_vehicule_extrac_y),0] ; groupe_officier = createGroup east ; vts2_ManE12 createUnit [position objectif , groupe_officier,"officier_cible = this ; this assignasdriver jeep_officier", 0.5, "private"]; sleep 1; if from3D then {From3D = false;publicvariable "From3D";officier_cible setdir objectif_orientation;officier_cible setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; removeAllWeapons officier_cible ; officier_cible allowFleeing 0 ; }; if (camp_valid == "Blufor") then { jeep_officier = vts2_VehW5 createvehicle [(_vehicule_extrac_x), (_vehicule_extrac_y),0] ; groupe_officier = createGroup west ; vts2_ManW20 createUnit [position objectif , groupe_officier,"officier_cible = this ; this assignasdriver jeep_officier", 0.5, "private"]; sleep 1; if from3D then {From3D = false;publicvariable "From3D";officier_cible setdir objectif_orientation;officier_cible setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; removeAllWeapons officier_cible ; officier_cible allowFleeing 0 ; }; if (camp_valid == "Res.") then { jeep_officier = vts2i_Landrover_Closed createvehicle [(_vehicule_extrac_x), (_vehicule_extrac_y),0] ; groupe_officier = createGroup Resistance ; vts2_OfficerG createUnit [position objectif , groupe_officier,"officier_cible = this ; this assignasdriver jeep_officier", 0.5, "private"]; sleep 1; if from3D then {From3D = false;publicvariable "From3D";officier_cible setdir objectif_orientation;officier_cible setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; removeAllWeapons officier_cible ; officier_cible allowFleeing 0 ; }; _cible1 = [] execVM "objectifs\decl_cible1.sqf"; _cible2 = [] execVM "objectifs\decl_cible2.sqf"; If (true) ExitWith {}if (local serveur) then { _faux = true; while {_faux} do { if (!alive officier_cible) then {mort_cible = true ; publicvariable "mort_cible" ; _faux = false;}; sleep 2; }; }; If (true) ExitWith {}if (local serveur) then { _faux = true; if (blufor_vts) then { while {_faux} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" if (((joueur%1 distance officier_cible) < 200) and (alerte)) then { officier_cible move position jeep_officier ; fuite_officier = true ; publicvariable ""fuite_officier""; _faux = false; _burp = [] execVM ""objectifs\fuite_off.sqf""; }; ",_i]; }; sleep 0.5; }; }; if (opfor_vts) then { while {_faux} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" if (((joueure%1 distance officier_cible) < 200) and (alerte)) then { officier_cible move position jeep_officier ; fuite_officier = true ; publicvariable ""fuite_officier""; _faux = false; _burp = [] execVM ""objectifs\fuite_off.sqf""; }; ",_i]; }; sleep 0.5; }; }; if (inde_vts) then { while {_faux} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" if (((joueuri%1 distance officier_cible) < 200) and (alerte)) then { officier_cible move position jeep_officier ; fuite_officier = true ; publicvariable ""fuite_officier""; _faux = false; _burp = [] execVM ""objectifs\fuite_off.sqf""; }; ",_i]; }; sleep 0.5; }; }; }; If (true) ExitWith {}if (local serveur) then { _faux = true; // tant que la boucle est active, on execute le script pour tous les joueurs (joueurx) // avec le format for : [postulat de base, condition, effet] // pour i=1, tant que i est plus petit ou gal au nombre de joueurs, i=i+1, execute la boucle while {_faux} do { if (!alive antenne) then {_faux = false;}; sleep 1; }; // la boucle n'est plus active, la variable donne par le mission maker devient vraie sur toutes les machines approche = true ; publicvariable "approche"; }; If (true) ExitWith {}if (local serveur) then { _faux = true; if (blufor_vts) then { while {_faux} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" if (((joueur%1 distance otage) < 150) and (alerte1)) then { if (OtageLibreCible) then {otage setcaptive false;} ; }; ",_i]; call compile format[" if ((joueur%1 distance otage) < 5) then { if (OtageLibreCible) then {otage setcaptive false;} ; if (GpsOtage) then {_ot1 = [] execVM ""objectifs\otage_gps.sqf"";} ; if (PoursuiteOtage) then {_ot2 = [] execVM ""objectifs\otage_poursuite.sqf"";} ; otage enableai ""move"" ; otage enableai ""anim""; liberation_otage = true ; publicvariable ""liberation_otage""; _faux = false; _burp = [] execVM ""objectifs\fin_otage.sqf""; }; ",_i]; }; sleep 0.5; }; }; if (opfor_vts) then { while {_faux} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" if (((joueure%1 distance otage) < 150) and (alerte1)) then { if (OtageLibreCible) then {otage setcaptive false;} ; }; ",_i]; call compile format[" if ((joueure%1 distance otage) < 5) then { if (OtageLibreCible) then {otage setcaptive false;} ; if (GpsOtage) then {_ot1 = [] execVM ""objectifs\otage_gps.sqf"";} ; if (PoursuiteOtage) then {_ot2 = [] execVM ""objectifs\otage_poursuite.sqf"";} ; otage enableai ""move"" ; otage enableai ""anim""; liberation_otage = true ; publicvariable ""liberation_otage""; _faux = false; _burp = [] execVM ""objectifs\fin_otage.sqf""; }; ",_i]; }; sleep 0.5; }; }; if (inde_vts) then { while {_faux} do { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format [" if (((joueuri%1 distance otage) < 150) and (alerte1)) then { if (OtageLibreCible) then {otage setcaptive false;} ; }; ",_i]; call compile format[" if ((joueuri%1 distance otage) < 5) then { if (OtageLibreCible) then {otage setcaptive false;} ; if (GpsOtage) then {_ot1 = [] execVM ""objectifs\otage_gps.sqf"";} ; if (PoursuiteOtage) then {_ot2 = [] execVM ""objectifs\otage_poursuite.sqf"";} ; otage enableai ""move"" ; otage enableai ""anim""; liberation_otage = true ; publicvariable ""liberation_otage""; _faux = false; _burp = [] execVM ""objectifs\fin_otage.sqf""; }; ",_i]; }; sleep 0.5; }; }; }; If (true) ExitWith {}if (local serveur) then { _faux = true; while {_faux} do { if (!alive otage) then {mort_otage = true ; publicvariable "mort_otage" ; _faux = false;}; sleep 2; }; }; If (true) ExitWith {}if (local serveur) then { if (blufor_vts) then { _faux = true; _repere = _this select 0; _nb_j = _this select 1; _dist = _this select 2; _var = _this select 3; // tant que la boucle est active, on execute le script pour tous les joueurs (joueurx) // avec le format for : [postulat de base, condition, effet] // pour i=1, tant que i est plus petit ou gal au nombre de joueurs, i=i+1, execute la boucle while {_faux} do { for[{_i=1},{_i<=_nb_j},{_i=_i+1}] do { call compile format["if (joueur%1 distance _repere < _dist) then {_faux = false;};",_i]; }; sleep 0.5; }; // la boucle n'est plus active, la variable donne par le mission maker devient vraie sur toutes les machines call compile format ["%1 = true;",_var]; call compile format ["publicVariable ""%1"";",_var]; }; if (opfor_vts) then { _faux = true; _repere = _this select 0; _nb_j = _this select 1; _dist = _this select 2; _var = _this select 3; // tant que la boucle est active, on execute le script pour tous les joueurs (joueurx) // avec le format for : [postulat de base, condition, effet] // pour i=1, tant que i est plus petit ou gal au nombre de joueurs, i=i+1, execute la boucle while {_faux} do { for[{_i=1},{_i<=_nb_j},{_i=_i+1}] do { call compile format["if (joueure%1 distance _repere < _dist) then {_faux = false;};",_i]; }; sleep 0.5; }; // la boucle n'est plus active, la variable donne par le mission maker devient vraie sur toutes les machines call compile format ["%1 = true;",_var]; call compile format ["publicVariable ""%1"";",_var]; }; if (inde_vts) then { _faux = true; _repere = _this select 0; _nb_j = _this select 1; _dist = _this select 2; _var = _this select 3; // tant que la boucle est active, on execute le script pour tous les joueurs (joueurx) // avec le format for : [postulat de base, condition, effet] // pour i=1, tant que i est plus petit ou gal au nombre de joueurs, i=i+1, execute la boucle while {_faux} do { for[{_i=1},{_i<=_nb_j},{_i=_i+1}] do { call compile format["if (joueuri%1 distance _repere < _dist) then {_faux = false;};",_i]; }; sleep 0.5; }; // la boucle n'est plus active, la variable donne par le mission maker devient vraie sur toutes les machines call compile format ["%1 = true;",_var]; call compile format ["publicVariable ""%1"";",_var]; }; }; If (true) ExitWith {}antenne = "Land_radar" createVehicle (position objectif) ; sleep 1; if from3D then {From3D = false;publicvariable "From3D";antenne setdir objectif_orientation;antenne setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; _obj = [] execVM "objectifs\decl_destruction.sqf"; If (true) ExitWith {}if (local serveur) then { _faux = true ; while {_faux} do { if ((otage distance insertion) < 30) then {_faux = false;approche = true; publicvariable "approche";}; sleep 0.5; }; }; If (true) ExitWith {}if (local serveur) then { _faux = true ; while {_faux} do { if ((officier_cible distance jeep_officier)<10) then { officier_cible moveindriver jeep_officier ; officier_cible allowfleeing 1 ; _faux = false ; }; sleep 0.5 ; }; _faux2 = true ; while {_faux2} do { if (((vehicle officier_cible) distance objectif)>200) then { officier_parti = true ; publicvariable "officier_parti"; _faux2 = false ; }; sleep 0.5 ; }; }; If (true) ExitWith {}// otage if (blufor_vts) then { groupe_otage = createGroup west ; vts2_ManW20 createUnit [position objectif , groupe_otage,"otage = this", 0.5, "private"]; sleep 1; if from3D then {From3D = false;publicvariable "From3D";otage setdir objectif_orientation;otage setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; otage allowFleeing 0 ; otage setcaptive true ; removeAllWeapons otage ; otage switchmove "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon" ; otage disableai "move" ; otage disableai "anim" ; }; if (opfor_vts) then { groupe_otage = createGroup east ; vts2_ManE12 createUnit [position objectif , groupe_otage,"otage = this", 0.5, "private"]; sleep 1; if from3D then {From3D = false;publicvariable "From3D";otage setdir objectif_orientation;otage setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; otage allowFleeing 0 ; otage setcaptive true ; removeAllWeapons otage ; otage switchmove "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon" ; otage disableai "move" ; otage disableai "anim" ; }; if (inde_vts) then { groupe_otage = createGroup Resistance ; vts2_OfficerG createUnit [position objectif , groupe_otage,"otage = this", 0.5, "private"]; sleep 1; if from3D then {From3D = false;publicvariable "From3D";otage setdir objectif_orientation;otage setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; otage allowFleeing 0 ; otage setcaptive true ; removeAllWeapons otage ; otage switchmove "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon" ; otage disableai "move" ; otage disableai "anim" ; }; otage_mission = true ; publicvariable "otage_mission"; _otage = [] execVM "objectifs\decl_otage1.sqf"; _otage2 = [] execVM "objectifs\decl_otage2.sqf"; If (true) ExitWith {}if (blufor_vts) then { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["if (local joueur%1) then {otage addAction [""Call hostage"", ""objectifs\otage_hop.sqf""];};",_i]; sleep 0.2; }; }; if (inde_vts) then { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["if (local joueuri%1) then {otage addAction [""Call hostage"", ""objectifs\otage_hop.sqf""];};",_i]; sleep 0.2; }; }; if (opfor_vts) then { for[{_i=1},{_i<=25},{_i=_i+1}] do { call compile format["if (local joueure%1) then {otage addAction [""Call hostage"", ""objectifs\otage_hop.sqf""];};",_i]; sleep 0.2; }; }; If (true) ExitWith {}// otage gps if (local serveur) then { markerobj_otage = createMarker["marqueur_otage",position otage] ; markerobj_otage setMarkerShape "ICON" ; "marqueur_otage" setMarkerType "Dot" ; "marqueur_otage" setMarkerText "Hostage" ; "marqueur_otage" setMarkerColor "ColorBlue"; while {true} do { "marqueur_otage" setMarkerPos position otage ; sleep 10; }; }; If (true) ExitWith {}otage_hop = true; publicvariable "otage_hop"; If (true) ExitWith {}// otage poursuite if (local serveur) then { while {true} do { // mouvement vers l'otage (1 unité) _random = round (random nbre_ge) ; if (_random <= 2) then {_random = 2} ; call compile format["ge%1 move position otage; ge%1 SetSpeedMode ""NORMAL"" ; ge%1 setBehaviour ""AWARE"";",_random]; call compile format["if ((count units ge%1)<2) then {sleep 5;} else {sleep temps_mouv ;};",_random]; }; }; If (true) ExitWith {}centurions setpos (getpos objectif); sleep 1; if from3D then {From3D = false;publicvariable "From3D";centurions setdir objectif_orientation;centurions setPosASL [destination3D_x,destination3D_y,destination3D_z ];}; _detect = [centurions,25,5,"approche"] execVM "objectifs\decl_prise.sqf"; If (true) ExitWith {}if (local serveur) then { // on vrifie que les parachutistes ennemis sont dispos if (paras_eni_dispo) then { // on rend les paras indisponibles paras_eni_dispo = false ; publicvariable "paras_eni_dispo"; // la cible a une golocalit permanente sur la dure du script deletevehicle cible_para ; cible_para = "HeliHempty" createVehicle position cible ; //On cr l'hlico 1000m au nord de la cible, on cr son point d'exfiltration 1000m au sud deletevehicle para_entre ; deletevehicle para_sort ; para_entre = "HeliHempty" createVehicle [(getpos cible_para select 0), (getpos cible_para select 1)+2000,0] ; para_sort = "HeliHempty" createVehicle [(getpos cible_para select 0), (getpos cible_para select 1)-2000,0] ; // On cr l'hlicoptre if (camp_valid == "Opfor") then { helico_para = createVehicle [vts2_VehE20, position para_entre, [], 0, "FLY"] ; }; if (camp_valid == "Blufor") then { helico_para = createVehicle [vts2_VehW22, position para_entre, [], 0, "FLY"] ; }; if (camp_valid == "Res.") then { helico_para = createVehicle [vts2i_UH60MG, position para_entre, [], 0, "FLY"] ; }; // On cr l'quipage (un gunner et un pilote) et on prpare le type de parachutistes if (camp_valid == "Opfor") then { membre_equip = createGroup east ; membre_commando = createGroup east ; vts2_ManE10 createUnit [position para_entre , membre_equip,"pilote_helico= this", moral_ia, "sergent"]; vts2_ManE1 createUnit [position para_entre , membre_equip,"tireur_helico= this", moral_ia, "corporal"]; parachutiste_eni = vts2_ManE15 ; }; if (camp_valid == "Blufor") then { membre_equip = createGroup west ; membre_commando = createGroup west ; vts2_ManW18 createUnit [position para_entre , membre_equip,"pilote_helico= this", moral_ia, "sergent"]; vts2_ManW1 createUnit [position para_entre , membre_equip,"tireur_helico= this", moral_ia, "corporal"]; parachutiste_eni = vts2_ManW15 ; }; if (camp_valid == "Res.") then { membre_equip = createGroup Resistance ; membre_commando = createGroup Resistance ; vts2_SquadLeaderG createUnit [position para_entre , membre_equip,"pilote_helico= this", moral_ia, "sergent"]; vts2_SoldierGB createUnit [position para_entre , membre_equip,"tireur_helico= this", moral_ia, "corporal"]; parachutiste_eni = vts2_SoldierGCommando ; }; // On fait entrer l'quipage dans l'hlico sleep 1; tireur_helico assignasgunner helico_para ; pilote_helico assignasdriver helico_para ; tireur_helico moveingunner helico_para ; pilote_helico moveindriver helico_para ; // On fait prendre de la hauteur l'hlico puis on demande au pilote de se diriger vers la cible helico_para flyinheight 300; membre_equip setBehaviour "CARELESS"; pilote_helico domove position cible_para; // on attend jusqu' ce que l'hlico soit porte waitUntil {(((helico_para distance cible_para)< 400) or ((getPos helico_para select 2)<20))}; _faux = true ; _hop = 0 ; while {_faux} do { // si l'hlico est crash, rien ne se passe. if ((getPos helico_para select 2)<20) then { _faux = false ; }; // Si tout va bien, parachutage puis dpart if ((getPos helico_para select 2)>130) then { _hop = _hop+1 ; // cra du parachutiste et telep sous l'hlico call compile format["parachutiste_eni createUnit [position para_entre , membre_commando,""com_para%1 = this"", moral_ia, ""sergent""] ;",_hop]; call compile format["poa%1 = ""Parachute"" createvehicle position para_entre ;",_hop]; call compile format["poa%1 setPos [(getpos helico_para select 0), (getpos helico_para select 1),(getpos helico_para select 2)-5];",_hop]; call compile format["com_para%1 moveInDriver poa%1;",_hop]; if (_hop > 8) then {_faux = false;}; }; sleep 1; }; // Si l'hlico est toujours vivant, on lui demande de repartir if ((getPos helico_para select 2)>20) then { pilote_helico domove position para_sort; waitUntil {((helico_para distance para_sort)< 400)}; }; // Le groupe para lance le script repli-tactique et se dirige vers le dernier objectif en date sleep 30 ; if (blufor_vts) then { gouff_commando = [membre_commando,0,2,"blufor"] execVM "repli_ge1.sqf"; }; if (opfor_vts) then { gouff_commando = [membre_commando,0,2,"opfor"] execVM "repli_ge1.sqf"; }; if (inde_vts) then { gouff_commando = [membre_commando,0,2,"inde"] execVM "repli_ge1.sqf"; }; membre_commando move position cible ; // On calme le jeu pendant environ trois minutes sleep 170 ; deletevehicle tireur_helico; deletevehicle pilote_helico; deletevehicle helico_para; deleteGroup membre_equip; deleteGroup membre_commando; paras_eni_dispo = true ; publicvariable "paras_eni_dispo"; }; }; If (true) ExitWith {}if (local serveur) then { _unite = _this select 0 ; _armes = weapons _unite ; _chargeurs = magazines _unite; _plouf = false ; // on vrifie que l'unit est dans la flotte if (((getpos _unite select 2)<=0.1) and (surfaceIsWater[(getpos _unite select 0),(getpos _unite select 1)])) then {_plouf = true}; sleep 1 ; while {_plouf} do { if (!(surfaceIsWater[(getpos _unite select 0),(getpos _unite select 1)])) then { _plouf = false ; {_unite removeMagazine _x} forEach magazines _unite; {_unite addMagazine _x} foreach _chargeurs; sleep 2+(random 15) ; {_unite removeWeapon _x} forEach weapons _unite; {_unite addweapon _x} foreach _armes; }; sleep 2 ; }; }; If (true) ExitWith {}// Parachute INIT scripts execVM "AAHALO\Parachute\Parachute_init.sqf"; SPON_directionName = compile preprocessFileLineNumbers "AAHALO\Parachute\SPON_directionName.sqf"; TitleText [" ", "BLACK FADED",1]; if (blufor_vts) then {pilote globalradio "bipavion" ;}; if (opfor_vts) then {h_opfor globalradio "bipavion" ;}; if (inde_vts) then {h_inde globalradio "bipavion" ;}; sleep 1; titleText [" ", "BLACK IN",1]; cutText [" ","PLAIN DOWN",1]; cutRsc ["saut","plain"]; If (true) ExitWith {}if (local serveur) then { // ----------------- placement objectifs // créa et placement de l'objectif /* deletevehicle coco_blufor ; deletevehicle coco_opfor ; deletevehicle coco_inde ; */ if (objectif_valid == "Take") then {_obj = [] execVM "objectifs\prise.sqf"; objc_prise = true ; publicvariable "objc_prise";}; if (objectif_valid == "Target") then {_obj = [] execVM "objectifs\cible.sqf"; objc_cible = true ; publicvariable "objc_cible";}; if (objectif_valid == "Destr.") then {_obj = [] execVM "objectifs\destruction.sqf"; objc_destrc = true ; publicvariable "objc_destrc";}; if (objectif_valid == "Hostage") then {_obj = [] execVM "objectifs\otage.sqf"; objc_otage = true ; publicvariable "objc_otage";}; // ----------------- placement des bases ennemies base_ge1 setpos [(getpos objectif select 0)-(random concentration), (getPos objectif select 1)-(random concentration),0] ; base_ge2 setpos [(getpos objectif select 0)-(random concentration), (getPos objectif select 1)-(random concentration),0]; // for[{_i=1},{_i<=2},{_i=_i+1}] do // { // call compile format["base_ge%1 setpos [(getpos objectif select 0)+(random concentration), (getPos objectif select 1)+(random concentration),0];",_i]; // call compile format["marker%1 = createMarker[""marqueur%1"",position base_ge%1] ; marker%1 setMarkerShape ""ICON"" ; ""marqueur%1"" setMarkerType ""Dot"" ; ""marqueur%1"" setMarkerColor ""ColorRed"";",_i]; // }; for[{_i=3},{_i<=4},{_i=_i+1}] do { call compile format["base_ge%1 setpos [(getpos objectif select 0)-(random concentration), (getPos objectif select 1)+(random concentration),0];",_i]; // call compile format["marker%1 = createMarker[""marqueur%1"",position base_ge%1] ; marker%1 setMarkerShape ""ICON"" ; ""marqueur%1"" setMarkerType ""Dot"" ; ""marqueur%1"" setMarkerColor ""ColorRed"";",_i]; }; for[{_i=5},{_i<=6},{_i=_i+1}] do { call compile format["base_ge%1 setpos [(getpos objectif select 0)+(random concentration), (getPos objectif select 1)-(random concentration),0];",_i]; // call compile format["marker%1 = createMarker[""marqueur%1"",position base_ge%1] ; marker%1 setMarkerShape ""ICON"" ; ""marqueur%1"" setMarkerType ""Dot"" ; ""marqueur%1"" setMarkerColor ""ColorRed"";",_i]; }; for[{_i=7},{_i<=8},{_i=_i+1}] do { call compile format["base_ge%1 setpos [(getpos objectif select 0)-(random concentration), (getPos objectif select 1)-(random concentration),0];",_i]; // call compile format["marker%1 = createMarker[""marqueur%1"",position base_ge%1] ; marker%1 setMarkerShape ""ICON"" ; ""marqueur%1"" setMarkerType ""Dot"" ; ""marqueur%1"" setMarkerColor ""ColorRed"";",_i]; }; // Bases aléatoires for[{_i=9},{_i<=nbre_ge},{_i=_i+1}] do { call compile format["base_ge%1 setpos [(getpos objectif select 0)+(random concentration)-(random concentration), (getPos objectif select 1)+(random concentration)-(random concentration),0];",_i]; // call compile format["marker%1 = createMarker[""marqueur%1"",position base_ge%1] ; marker%1 setMarkerShape ""ICON"" ; ""marqueur%1"" setMarkerType ""Dot"" ; ""marqueur%1"" setMarkerColor ""ColorRed"";",_i]; }; // bases d'angle // exemple : 8 grpes eni. On commence à 9, et on finit à 17 _i=nbre_ge+1 ; call compile format["base_ge%1 setpos [(getpos objectif select 0)+concentration, (getPos objectif select 1)+concentration,0];",_i]; _i=nbre_ge+2 ; call compile format["base_ge%1 setpos [(getpos objectif select 0)-concentration, (getPos objectif select 1)-concentration,0];",_i]; _i=nbre_ge+3 ; call compile format["base_ge%1 setpos [(getpos objectif select 0)-concentration, (getPos objectif select 1)+concentration,0];",_i]; _i=nbre_ge+4 ; call compile format["base_ge%1 setpos [(getpos objectif select 0)+concentration, (getPos objectif select 1)-concentration,0];",_i]; _i=nbre_ge+5 ; call compile format["base_ge%1 setpos [(getpos objectif select 0), (getPos objectif select 1)+concentration,0];",_i]; _i=nbre_ge+6 ; call compile format["base_ge%1 setpos [(getpos objectif select 0), (getPos objectif select 1)-concentration,0];",_i]; _i=nbre_ge+7 ; call compile format["base_ge%1 setpos [(getpos objectif select 0)-concentration, (getPos objectif select 1),0];",_i]; _i=nbre_ge+8 ; call compile format["base_ge%1 setpos [(getpos objectif select 0)+concentration, (getPos objectif select 1),0];",_i]; // DEBUG : call compile format["marker%1 = createMarker[""marqueur%1"",position base_ge%1] ; marker%1 setMarkerShape ""ICON"" ; ""marqueur%1"" setMarkerType ""Dot"" ; ""marqueur%1"" setMarkerColor ""ColorRed"";",_i]; // Debug : crea marqueurs marqueurs_base_debug = true ; publicvariable "marqueurs_base_debug"; // -----------création des groupes ennemis et du groupe convoi allié et du megagroup (groupe de mort) // ------- créa du groupe civils /* if (civils_zone) then { _civils = [] execVM "civils_crea.sqf"; }; // --------créa ennemis et convoi if (blufor_vts) then { */ // on détermine les grpes ennemis if (camp_valid == "Opfor") then { for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["ge%1 = createGroup east ; ",_e]; }; }; if (camp_valid == "Res.") then { for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["ge%1 = createGroup Resistance ; ",_e]; }; }; // convoi conv = createGroup west ; /* }; if (opfor_vts) then { // on détermine les grpes ennemis et convoi allié et groupe scout if (camp_valid == "Res.") then { for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["ge%1 = createGroup Resistance ; ",_e]; }; }; if (camp_valid == "Blufor") then { for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["ge%1 = createGroup west ; ",_e]; }; }; // convoi conv = createGroup east ; }; if (inde_vts) then { // on détermine les grpes ennemis et convoi allié et groupe scout if (camp_valid == "Opfor") then { for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["ge%1 = createGroup east ; ",_e]; }; }; if (camp_valid == "Blufor") then { for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["ge%1 = createGroup west ; ",_e]; }; }; // convoi conv = createGroup Resistance ; }; */ // !!!!!!!!!!!!!Spawn physique des groupes ennemis if (camp_valid == "Opfor") then { // Crea du grpe 1 directement sur l'objectif [] spawn groupe_garde_opfor ; for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _random = (random 3) ; if (_random<=1) then { [_e] spawn groupe_1_opfor ; sleep 0.2 ; }; if ((_random>1) and (_random<=2)) then { [_e] spawn groupe_2_opfor ; sleep 0.2 ; }; if (_random>2) then { [_e] spawn groupe_3_opfor ; sleep 0.2 ; }; }; }; if (camp_valid == "Blufor") then { // Crea du grpe 1 directement sur l'objectif [] spawn groupe_garde_blufor ; for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _random = (random 3) ; if (_random<=1) then { [_e] spawn groupe_1_blufor ; sleep 0.2 ; }; if ((_random>1) and (_random<=2)) then { [_e] spawn groupe_2_blufor ; sleep 0.2 ; }; if (_random>2) then { [_e] spawn groupe_3_blufor ; sleep 0.2 ; }; }; }; if (camp_valid == "Res.") then { // Crea du grpe 1 directement sur l'objectif [] spawn groupe_garde_inde ; for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { _random = (random 3) ; if (_random<=1) then { [_e] spawn groupe_1_inde ; sleep 0.2 ; }; if ((_random>1) and (_random<=2)) then { [_e] spawn groupe_2_inde ; sleep 0.2 ; }; if (_random>2) then { [_e] spawn groupe_3_inde ; sleep 0.2 ; }; }; }; // Debug : creation marqueurs marqueurs_eni_debug = true ; publicvariable "marqueurs_eni_debug"; sleep 0.1 ; // on équipe l'ennemi avec des NVG for[{_e=1},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["loona%1 addweapon ""NVGoggles"";",_e]; call compile format["loonb%1 addweapon ""NVGoggles"";",_e]; call compile format["loonc%1 addweapon ""NVGoggles"";",_e]; call compile format["loond%1 addweapon ""NVGoggles"";",_e]; call compile format["loone%1 addweapon ""NVGoggles"";",_e]; sleep 0.2 ; }; sleep 0.1 ; // --------------------- particularités if (statique) then { mouvement_null = execVM "mouvement_inerte.sqf"; // hint "Statiques"; }; if (mobile) then { mouvement_null = execVM "mouvement.sqf"; // hint "Mobiles"; }; if (agressive) then { mouvement_null = execVM "mouvement_agressif.sqf"; // hint "Agressives"; }; sleep 0.1 ; // --------------------------------- Création base matériel si option activée if ((crea_base) and (base)) then { base_null = execVM "base.sqf"; }; sleep 0.1 ; // ---------------------------------Création des bases de respawn /* if (opfor_vts) then { markerresp_opfor = createMarker ["respawn_east",position insertion] ; markerresp_opfor setMarkerShape "ICON" ; "respawn_east" setMarkerType "empty" ; "respawn_east" setMarkerColor "ColorRed"; "respawn_east" setMarkerText "respawn"; }; if (blufor_vts) then { markerresp_blufor = createMarker ["respawn_west",position insertion] ; markerresp_blufor setMarkerShape "ICON" ; "respawn_west" setMarkerType "empty" ; "respawn_west" setMarkerColor "ColorRed"; "respawn_west" setMarkerText "respawn"; }; if (inde_vts) then { markerresp_inde = createMarker ["respawn_guerrila",position insertion] ; markerresp_inde setMarkerShape "ICON" ; "respawn_guerrila" setMarkerType "empty" ; "respawn_guerrila" setMarkerColor "ColorRed"; "respawn_guerrila" setMarkerText "respawn"; }; if (respawn_carceral) then { if (opfor_vts) then { "respawn_east" setMarkerPos position prisone ; }; if (blufor_vts) then { "respawn_west" setMarkerPos position prison ; }; if (inde_vts) then { "respawn_guerrila" setMarkerPos position prisoni; }; }; */ // ---------------------------------Téléportation // du côté blufor /* if (blufor_vts) then { //------- Elimination du camp adverse for[{_e=1},{_e<=25},{_e=_e+1}] do { call compile format["deletevehicle joueure%1",_e]; }; for[{_e=1},{_e<=25},{_e=_e+1}] do { call compile format["deletevehicle joueuri%1",_e]; }; */ //------- A pieds if (insertion_norm) then { joueur1 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)+2,0] ; joueur2 setPos [(getpos insertion select 0), (getPos insertion select 1),0] ; joueur3 setPos [(getpos insertion select 0)+2, (getPos insertion select 1),0] ; joueur4 setPos [(getpos insertion select 0)+4, (getPos insertion select 1),0] ; joueur5 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-2,0] ; joueur6 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-2,0] ; joueur7 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-2,0] ; joueur8 setPos [(getpos insertion select 0)-2, (getPos insertion select 1),0] ; joueur9 setPos [(getpos insertion select 0)-4, (getPos insertion select 1),0] ; joueur10 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-2,0] ; joueur11 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-2,0] ; joueur12 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-2,0] ; joueur13 setPos [(getpos insertion select 0), (getPos insertion select 1)-2,0] ; joueur14 setPos [(getpos insertion select 0), (getPos insertion select 1)-4,0] ; joueur15 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-4,0] ; joueur16 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-4,0] ; joueur17 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-6,0] ; joueur18 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-6,0] ; joueur19 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-6,0] ; joueur20 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-4,0] ; joueur21 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-4,0] ; joueur22 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-6,0] ; joueur23 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-6,0] ; joueur24 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-6,0] ; joueur25 setPos [(getpos insertion select 0), (getPos insertion select 1)-6,0] ; }; //------- parachute if (para_spec) then { _dispersion_x = 700; _dispersion_y = 400; if (pluie <= 0.3) then { _dispersion_x = 700 ; _dispersion_y = 400 ; }; if ((pluie > 0.3) and (pluie <= 0.7)) then { _dispersion_x = 1000 ; _dispersion_y = 600 ; }; if (pluie > 0.7) then { _dispersion_x = 1400 ; _dispersion_y = 900 ; }; presentation = true; publicvariable "presentation"; sleep 3 ; joueur7 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2130 + (random 10)] ; joueur1 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2250 + (random 10)] ; joueur2 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2230 + (random 10)] ; joueur3 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2210 + (random 10)] ; joueur4 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2190 + (random 10)] ; joueur5 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2170 + (random 10)] ; joueur6 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2150 + (random 10)] ; joueur8 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2110 + (random 10)] ; joueur9 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2090 + (random 10)] ; joueur10 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2070 + (random 10)] ; joueur11 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2050 + (random 10)] ; joueur12 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2030 + (random 10)] ; joueur13 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2010 + (random 10)] ; joueur14 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2250 + (random 10)] ; joueur15 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2230 + (random 10)] ; joueur16 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2210 + (random 10)] ; joueur17 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2190 + (random 10)] ; joueur18 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2170 + (random 10)] ; joueur19 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2150 + (random 10)] ; joueur20 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2110 + (random 10)] ; joueur21 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2090 + (random 10)] ; joueur22 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2070 + (random 10)] ; joueur23 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2050 + (random 10)] ; joueur24 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2030 + (random 10)] ; joueur25 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2010 + (random 10)] ; spectah = true ; publicvariable "spectah" ; }; /* }; // du côté opfor if (opfor_vts) then { //------- Elimination du camp adverse for[{_e=1},{_e<=25},{_e=_e+1}] do { call compile format["deletevehicle joueur%1",_e]; }; for[{_e=1},{_e<=25},{_e=_e+1}] do { call compile format["deletevehicle joueuri%1",_e]; }; //------- A pieds if (insertion_norm) then { joueure1 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)+2,0] ; joueure2 setPos [(getpos insertion select 0), (getPos insertion select 1),0] ; joueure3 setPos [(getpos insertion select 0)+2, (getPos insertion select 1),0] ; joueure4 setPos [(getpos insertion select 0)+4, (getPos insertion select 1),0] ; joueure5 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-2,0] ; joueure6 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-2,0] ; joueure7 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-2,0] ; joueure8 setPos [(getpos insertion select 0)-2, (getPos insertion select 1),0] ; joueure9 setPos [(getpos insertion select 0)-4, (getPos insertion select 1),0] ; joueure10 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-2,0] ; joueure11 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-2,0] ; joueure12 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-2,0] ; joueure13 setPos [(getpos insertion select 0), (getPos insertion select 1)-2,0] ; joueure14 setPos [(getpos insertion select 0), (getPos insertion select 1)-4,0] ; joueure15 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-4,0] ; joueure16 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-4,0] ; joueure17 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-6,0] ; joueure18 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-6,0] ; joueure19 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-6,0] ; joueure20 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-4,0] ; joueure21 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-4,0] ; joueure22 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-6,0] ; joueure23 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-6,0] ; joueure24 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-6,0] ; joueure25 setPos [(getpos insertion select 0), (getPos insertion select 1)-6,0] ; }; //------- parachute if (para_spec) then { _dispersion_x = 700; _dispersion_y = 400; if (pluie <= 0.3) then { _dispersion_x = 700 ; _dispersion_y = 400 ; }; if ((pluie > 0.3) and (pluie <= 0.7)) then { _dispersion_x = 1000 ; _dispersion_y = 600 ; }; if (pluie > 0.7) then { _dispersion_x = 1400 ; _dispersion_y = 900 ; }; presentation = true; publicvariable "presentation"; sleep 3 ; joueure7 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2130 + (random 10)] ; joueure1 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2250 + (random 10)] ; joueure2 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2230 + (random 10)] ; joueure3 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2210 + (random 10)] ; joueure4 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2190 + (random 10)] ; joueure5 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2170 + (random 10)] ; joueure6 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2150 + (random 10)] ; joueure8 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2110 + (random 10)] ; joueure9 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2090 + (random 10)] ; joueure10 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2070 + (random 10)] ; joueure11 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2050 + (random 10)] ; joueure12 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2030 + (random 10)] ; joueure13 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2010 + (random 10)] ; joueure14 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2250 + (random 10)] ; joueure15 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2230 + (random 10)] ; joueure16 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2210 + (random 10)] ; joueure17 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2190 + (random 10)] ; joueure18 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2170 + (random 10)] ; joueure19 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2150 + (random 10)] ; joueure20 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2110 + (random 10)] ; joueure21 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2090 + (random 10)] ; joueure22 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2070 + (random 10)] ; joueure23 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2050 + (random 10)] ; joueure24 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2030 + (random 10)] ; joueure25 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2010 + (random 10)] ; spectah = true ; publicvariable "spectah" ; }; }; // du côté indé if (inde_vts) then { //------- Elimination du camp adverse for[{_e=1},{_e<=25},{_e=_e+1}] do { call compile format["deletevehicle joueur%1",_e]; }; for[{_e=1},{_e<=25},{_e=_e+1}] do { call compile format["deletevehicle joueure%1",_e]; }; //------- A pieds if (insertion_norm) then { joueuri1 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)+2,0] ; joueuri2 setPos [(getpos insertion select 0), (getPos insertion select 1),0] ; joueuri3 setPos [(getpos insertion select 0)+2, (getPos insertion select 1),0] ; joueuri4 setPos [(getpos insertion select 0)+4, (getPos insertion select 1),0] ; joueuri5 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-2,0] ; joueuri6 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-2,0] ; joueuri7 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-2,0] ; joueuri8 setPos [(getpos insertion select 0)-2, (getPos insertion select 1),0] ; joueuri9 setPos [(getpos insertion select 0)-4, (getPos insertion select 1),0] ; joueuri10 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-2,0] ; joueuri11 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-2,0] ; joueuri12 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-2,0] ; joueuri13 setPos [(getpos insertion select 0), (getPos insertion select 1)-2,0] ; joueuri14 setPos [(getpos insertion select 0), (getPos insertion select 1)-4,0] ; joueuri15 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-4,0] ; joueuri16 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-4,0] ; joueuri17 setPos [(getpos insertion select 0)+2, (getPos insertion select 1)-6,0] ; joueuri18 setPos [(getpos insertion select 0)+4, (getPos insertion select 1)-6,0] ; joueuri19 setPos [(getpos insertion select 0)+6, (getPos insertion select 1)-6,0] ; joueuri20 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-4,0] ; joueuri21 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-4,0] ; joueuri22 setPos [(getpos insertion select 0)-2, (getPos insertion select 1)-6,0] ; joueuri23 setPos [(getpos insertion select 0)-4, (getPos insertion select 1)-6,0] ; joueuri24 setPos [(getpos insertion select 0)-6, (getPos insertion select 1)-6,0] ; joueuri25 setPos [(getpos insertion select 0), (getPos insertion select 1)-6,0] ; }; //------- parachute if (para_spec) then { _dispersion_x = 700; _dispersion_y = 400; if (pluie <= 0.3) then { _dispersion_x = 700 ; _dispersion_y = 400 ; }; if ((pluie > 0.3) and (pluie <= 0.7)) then { _dispersion_x = 1000 ; _dispersion_y = 600 ; }; if (pluie > 0.7) then { _dispersion_x = 1400 ; _dispersion_y = 900 ; }; presentation = true; publicvariable "presentation"; sleep 3 ; joueuri7 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2130 + (random 10)] ; joueuri1 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2250 + (random 10)] ; joueuri2 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2230 + (random 10)] ; joueuri3 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2210 + (random 10)] ; joueuri4 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2190 + (random 10)] ; joueuri5 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2170 + (random 10)] ; joueuri6 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2150 + (random 10)] ; joueuri8 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2110 + (random 10)] ; joueuri9 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2090 + (random 10)] ; joueuri10 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2070 + (random 10)] ; joueuri11 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2050 + (random 10)] ; joueuri12 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2030 + (random 10)] ; joueuri13 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2010 + (random 10)] ; joueuri14 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2250 + (random 10)] ; joueuri15 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2230 + (random 10)] ; joueuri16 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2210 + (random 10)] ; joueuri17 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2190 + (random 10)] ; joueuri18 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2170 + (random 10)] ; joueuri19 setPos [(getpos insertion select 0)+(random _dispersion_x), (getPos insertion select 1)+(random _dispersion_y),2150 + (random 10)] ; joueuri20 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2110 + (random 10)] ; joueuri21 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2090 + (random 10)] ; joueuri22 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2070 + (random 10)] ; joueuri23 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2050 + (random 10)] ; joueuri24 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2030 + (random 10)] ; joueuri25 setPos [(getpos insertion select 0)-(random _dispersion_x), (getPos insertion select 1)-(random _dispersion_y),2010 + (random 10)] ; spectah = true ; publicvariable "spectah" ; }; }; */ // ----------------------------------on lance le script de sécurité Plouf pour les ennemis for[{_e=2},{_e<=nbre_ge},{_e=_e+1}] do { call compile format["_plouf1 = [loona%1] execVM ""plouf.sqf"";",_e]; call compile format["_plouf2 = [loonb%1] execVM ""plouf.sqf"";",_e]; call compile format["_plouf3 = [loonc%1] execVM ""plouf.sqf"";",_e]; call compile format["_plouf4 = [loond%1] execVM ""plouf.sqf"";",_e]; call compile format["_plouf5 = [loone%1] execVM ""plouf.sqf"";",_e]; sleep 0.2 ; }; // ---------------------------------- Création d'un repère de sécurité en cas d'appel artillerie /* if (opfor_vts) then { deletevehicle cible ; cible = "HeliHempty" createVehicle [(position joueure1 select 0),(position joueure1 select 1),0]; }; */ if (blufor_vts) then { deletevehicle cible ; cible = "HeliHempty" createVehicle [(position joueur1 select 0),(position joueur1 select 1),0]; }; /* if (inde_vts) then { deletevehicle cible ; cible = "HeliHempty" createVehicle [(position joueuri1 select 0),(position joueuri1 select 1),0]; }; */ // ---------------------------------- Appel des hints de mission objec_hint = true ; publicvariable "objec_hint"; // ------------------------------ Si un seul joueur est en place, spawn d'une équipe à ses côtés if (blufor_vts) then { if (groupe_joueur == 1) then { for[{_e=1},{_e<=5},{_e=_e+1}] do { call compile format["vts2_ManW15 createUnit [position joueur1 , gw,""aide%1 = this"", moral_ia, ""private""];",_e]; sleep 0.2; }; }; }; /* if (opfor_vts) then { if (groupe_joueure == 1) then { for[{_e=1},{_e<=8},{_e=_e+1}] do { call compile format["vts2_ManE5Saboteur createUnit [position joueure1 , gpe,""aide%1 = this"", moral_ia, ""private""];",_e]; sleep 0.2; }; }; }; if (inde_vts) then { if (groupe_joueuri == 1) then { for[{_e=1},{_e<=8},{_e=_e+1}] do { call compile format["vts2_SoldierGCommando createUnit [position joueuri1 , gpi,""aide%1 = this"", moral_ia, ""private""];",_e]; sleep 0.2; }; }; }; */ } ; If (true) ExitWith {};sleep 15; if (local joueur1) then { //joueur1 addaction ["", "menu_clear.sqf"] ; //cpu_action=joueur1 addaction ["Ordinateur (T key)","Computer\cpu_dialog.sqf",joueur1, 1, false, false,"teamSwitch"]; cpuaction=vehicle (joueur1) addaction ["Computer (T key)","Computer\cpu_dialog.sqf",joueur1, 1, false, false,"teamSwitch","true"]; //advanced_nb = joueur1 addAction ["Advanced Mode", "gonza\advanced_mode.sqf"]; } ; If (true) ExitWith {}if (local serveur) then { sleep 10 ; _allie = _this select 0; _pertes = _this select 1; _repli_tac = false ; _jour = false ; _nuit = false ; _fumi = true ; _renforts_control = false ; // mise des variables 0 _kv = 0 ; _leadereni_princ = leader gw ; _leader_alpha = leader grpe_alpha ; _leader_bravo = leader grpe_bravo ; _leader_charlie = leader grpe_charlie ; _leader_delta = leader grpe_delta ; _leader_echo = leader grpe_echo ; _leader_foxtrot = leader grpe_foxtrot ; _kv_alpha = 0 ; _kv_bravo = 0 ; _kv_charlie = 0; _kv_delta = 0 ; _kv_echo = 0 ; _kv_foxtrot = 0 ; _eni_alpha = 0; _eni_bravo = 0; _eni_charlie = 0; _eni_delta = 0; _eni_echo = 0; _eni_foxtrot = 0; while {(count units _allie) > 1} do { // _kv = _allie knowsAbout leader _eni ; if (opfor_vts) then { _leadereni_princ = leader gpe ; _kv_alpha = _allie knowsAbout (leader grpe_alpha) ; _eni_alpha = (count units grpe_alpha) ; _leader_alpha = leader grpe_alpha ; _kv_bravo = _allie knowsAbout (leader grpe_bravo) ; _eni_bravo = (count units grpe_bravo) ; _leader_bravo = leader grpe_bravo ; _kv_charlie = _allie knowsAbout (leader grpe_charlie) ; _eni_charlie = (count units grpe_charlie) ; _leader_charlie = leader grpe_charlie ; }; if (blufor_vts) then { _leadereni_princ = leader gw ; _kv_alpha = _allie knowsAbout (leader grp_alpha) ; _eni_alpha = (count units grp_alpha) ; _leader_alpha = leader grp_alpha ; _kv_bravo = _allie knowsAbout (leader grp_bravo) ; _eni_bravo = (count units grp_bravo) ; _leader_bravo = leader grp_bravo ; _kv_charlie = _allie knowsAbout (leader grp_charlie) ; _eni_charlie = (count units grp_charlie) ; _leader_charlie = leader grp_charlie ; }; if (inde_vts) then { _leadereni_princ = leader gpi ; _kv_alpha = _allie knowsAbout (leader grpi_alpha) ; _eni_alpha = (count units grpi_alpha) ; _leader_alpha = leader grpi_alpha ; _kv_bravo = _allie knowsAbout (leader grpi_bravo) ; _eni_bravo = (count units grpi_bravo) ; _leader_bravo = leader grpi_bravo ; _kv_charlie = _allie knowsAbout (leader grpi_charlie) ; _eni_charlie = (count units grpi_charlie) ; _leader_charlie = leader grpi_charlie ; }; // --------------on sauvegarde le nombre de base du groupe allie _sauv = count units _allie ; sleep 5 ; // --------------on vrifie les pertes du grpe allie et si il y a trp de pertes, enclenchement du repli tactique _nbre_reel = count units _allie ; if ((_sauv - _nbre_reel) > _pertes) then {_repli_tac = true}; // ---------------on compare les diffrents kv // scurit : si aucun groupe ne se dmarque, le rfrent devient le chef de camp _kv = _allie knowsAbout _leadereni_princ ; _leader_eni = _leadereni_princ ; _nbre_eni = 1 ; _debug_eni = "gw"; if ((_kv_alpha > 0) and (_kv_alpha >= _kv_bravo) and (_kv_alpha >= _kv_charlie) and (_kv_alpha >= _kv_delta) and (_kv_alpha >= _kv_echo) and (_kv_alpha >= _kv_foxtrot)) then { _leader_eni = _leader_alpha ; _kv = _kv_alpha ; _nbre_eni = _eni_alpha ; _debug_eni = "alpha"; }; if ((_kv_bravo > 0) and (_kv_bravo >= _kv_alpha) and (_kv_bravo >= _kv_charlie) and (_kv_bravo >= _kv_delta) and (_kv_bravo >= _kv_echo) and (_kv_bravo >= _kv_foxtrot)) then { _leader_eni = _leader_bravo ; _kv = _kv_bravo ; _nbre_eni = _eni_bravo ; _debug_eni = "bravo"; }; if ((_kv_charlie > 0) and (_kv_charlie >= _kv_alpha) and (_kv_charlie >= _kv_bravo) and (_kv_charlie >= _kv_delta) and (_kv_charlie >= _kv_echo) and (_kv_charlie >= _kv_foxtrot)) then { _leader_eni = _leader_charlie ; _kv = _kv_charlie ; _debug_eni = "charlie"; }; if ((_kv_delta > 0) and (_kv_delta >= _kv_alpha) and (_kv_delta >= _kv_bravo) and (_kv_delta >= _kv_charlie) and (_kv_delta >= _kv_echo) and (_kv_delta >= _kv_foxtrot)) then { _leader_eni = _leader_delta ; _kv = _kv_delta ; _nbre_eni = _eni_delta ; _debug_eni = "delta"; }; if ((_kv_echo > 0) and (_kv_echo >= _kv_alpha) and (_kv_echo >= _kv_bravo) and (_kv_echo >= _kv_charlie) and (_kv_echo >= _kv_delta) and (_kv_echo >= _kv_foxtrot)) then { _leader_eni = _leader_echo ; _kv = _kv_echo ; _nbre_eni = _eni_echo ; _debug_eni = "echo"; }; if ((_kv_foxtrot > 0) and (_kv_foxtrot >= _kv_alpha) and (_kv_foxtrot >= _kv_bravo) and (_kv_foxtrot >= _kv_charlie) and (_kv_foxtrot >= _kv_delta) and (_kv_foxtrot >= _kv_echo)) then { _leader_eni = _leader_foxtrot ; _kv = _kv_foxtrot ; _nbre_eni = _eni_foxtrot ; _debug_eni = "foxtrot"; }; // if (_kv > 2) then {_repli_tac = true}; // call compile format ["hint ""ennemi : %1 ; \nkv : %2 ; \nkvA : %3 ;\nkvB : %4 ;\nkvC : %5 ;\nkvD : %6 ;\nkvE : %7 ;\nkvF : %8 ; \nleader : %9"";",(_debug_eni),(_kv),(_kv_alpha),(_kv_bravo),(_kv_charlie),(_kv_delta),(_kv_echo),(_kv_foxtrot),(_leader_eni)]; // -----------repli tactique if ((_repli_tac) and (count units _allie > 1)) then { // le groupe attaqu donne l'alerte // hint "alerte" ; alerte = true ; publicvariable "alerte" ; // initialisation des variables de hasard et arty et para _random = 0; _random2 = 0; _artill = artill; _paras_eni = paras_eni; // debug : hint "repli tactique" ; // dplacement du h sur le leader deletevehicle cible ; cible = "HeliHempty" createVehicle [(position _leader_eni select 0),(position _leader_eni select 1),0]; // -----------creation du fumi ou du flare if ((daytime >= 19) or (daytime <= 5)) then {_jour = false; _nuit = true;}; if ((daytime < 19) and (daytime > 5)) then {_jour = true; _nuit = false;}; if (_jour) then { if ((_fumi) and (count units _allie > 0)) then { _grenade2= "SmokeShell" createVehicle [(position leader _allie select 0),(position leader _allie select 1),0]; _fumi = false ; }; }; if (_nuit) then { if ((_fumi) and (count units _allie > 0)) then { _grenade2= "SmokeShell" createVehicle [(position leader _allie select 0),(position leader _allie select 1),0]; _fumi = false ; }; sleep 0.2 ; if (((_leader_eni distance leader _allie) < 300) and (count units _allie > 0) and (_kv > 0)) then { _tmp = "F_40mm_White" createVehicle [((position _leader_eni select 0)+ ((random 100) - (random 100))),((position _leader_eni select 1)+((random 100) - (random 100))), (150 + (random 50))]; }; }; cible setPos [(getpos _leader_eni select 0), (getPos _leader_eni select 1),0] ; sleep 0.2; // ----------- si <50m le lead lance une grenade vers le groupe joueur if ((_leader_eni distance leader _allie) < 50) then { (leader _allie) addmagazine "HandGrenade" ; sleep 0.2; (leader _allie) dotarget _leader_eni ; // dofire (leader _allie) fire ["HandGrenadeMuzzle","HandGrenadeMuzzle","HandGrenade"]; (leader _allie) addmagazine "HandGrenade" ; sleep 0.2; (leader _allie) dotarget _leader_eni ; // dofire (leader _allie) fire ["HandGrenadeMuzzle","HandGrenadeMuzzle","HandGrenade"]; }; // ----------- Appel arty et paras // Alerte. on vrifie si le groupe appelle renforts arty ou paras _random = (random 100); _random2 = (random 100); sleep 2; if ((_random < _artill) and (arty_eni_dispo) and (_kv > 0)) then {_art_script = [] execVM "artill_eni.sqf";}; if ((_random2 < _paras_eni) and (paras_eni_dispo) and (_kv > 0)) then {_para_script = [] execVM "para_eni.sqf";}; // ----------- repli _allie setspeedMode "FULL" ; _allie allowfleeing 1 ; _allie setbehaviour "Stealth"; sleep 60 ; // ----------- Renforts _nObject = position (leader _allie) nearestObject "house" ; _nObject2 = position _leader_eni nearestObject "house" ; if ((_renforts > 0) and ((_nObject distance leader _allie) < 50) and ((_nObject2 distance _leader_eni) < 50) and ((_leader_eni distance leader _allie) > 100)) then { // DEBUG hint "Renforts possibles" ; _renforts_control = true ; }; if ((_renforts > 0) and ((_leader_eni distance leader _allie) > 300)) then { // DEBUG hint "Renforts2 possibles" ; _renforts_control = true ; }; sleep 1 ; // ---------- contre-attaque if (_kv > 0) then { _repli_tac = false ; _allie allowfleeing moral_ia ; _allie setspeedMode "NORMAL" ; _allie setbehaviour "Stealth"; _allie move position cible ; sleep 60 ; _allie setspeedMode "NORMAL" ; _allie setbehaviour "combat"; _allie move position cible ; alerte = false; publicvariable "alerte"; // hint "fin de l'alerte" ; }; }; }; // DEBUG hint "script mort" ; }; If (true) ExitWith {}if (local serveur) then { sleep 10 ; _allie = _this select 0; _pertes = _this select 1; _renforts = _this select 2; _eni = _this select 3; _repli_tac = false ; _jour = false ; _nuit = false ; _fumi = true ; _renforts_control = false ; // mise des variables 0 _kv = 0 ; _leadereni_princ = leader gw ; _leader_alpha = leader grpe_alpha ; _leader_bravo = leader grpe_bravo ; _leader_charlie = leader grpe_charlie ; _leader_delta = leader grpe_delta ; _leader_echo = leader grpe_echo ; _leader_foxtrot = leader grpe_foxtrot ; _kv_alpha = 0 ; _kv_bravo = 0 ; _kv_charlie = 0; _kv_delta = 0 ; _kv_echo = 0 ; _kv_foxtrot = 0 ; _eni_alpha = 0; _eni_bravo = 0; _eni_charlie = 0; _eni_delta = 0; _eni_echo = 0; _eni_foxtrot = 0; while {(count units _allie) > 0} do { // _kv = _allie knowsAbout leader _eni ; if (_eni == "opfor") then { _leadereni_princ = leader gpe ; _kv_alpha = _allie knowsAbout (leader grpe_alpha) ; _eni_alpha = (count units grpe_alpha) ; _leader_alpha = leader grpe_alpha ; _kv_bravo = _allie knowsAbout (leader grpe_bravo) ; _eni_bravo = (count units grpe_bravo) ; _leader_bravo = leader grpe_bravo ; _kv_charlie = _allie knowsAbout (leader grpe_charlie) ; _eni_charlie = (count units grpe_charlie) ; _leader_charlie = leader grpe_charlie ; }; if (_eni == "blufor") then { _leadereni_princ = leader gw ; _kv_alpha = _allie knowsAbout (leader grp_alpha) ; _eni_alpha = (count units grp_alpha) ; _leader_alpha = leader grp_alpha ; _kv_bravo = _allie knowsAbout (leader grp_bravo) ; _eni_bravo = (count units grp_bravo) ; _leader_bravo = leader grp_bravo ; _kv_charlie = _allie knowsAbout (leader grp_charlie) ; _eni_charlie = (count units grp_charlie) ; _leader_charlie = leader grp_charlie ; }; if (_eni == "inde") then { _leadereni_princ = leader gpi ; _kv_alpha = _allie knowsAbout (leader grpi_alpha) ; _eni_alpha = (count units grpi_alpha) ; _leader_alpha = leader grpi_alpha ; _kv_bravo = _allie knowsAbout (leader grpi_bravo) ; _eni_bravo = (count units grpi_bravo) ; _leader_bravo = leader grpi_bravo ; _kv_charlie = _allie knowsAbout (leader grpi_charlie) ; _eni_charlie = (count units grpi_charlie) ; _leader_charlie = leader grpi_charlie ; }; // --------------on sauvegarde le nombre de base du groupe allie _sauv = count units _allie ; sleep 5 ; // --------------on vrifie les pertes du grpe allie et si il y a trp de pertes, enclenchement du repli tactique _nbre_reel = count units _allie ; if ((_sauv - _nbre_reel) > _pertes) then {_repli_tac = true}; // ---------------on compare les diffrents kv // scurit : si aucun groupe ne se dmarque, le rfrent devient le chef de camp _kv = _allie knowsAbout _leadereni_princ ; _leader_eni = _leadereni_princ ; _nbre_eni = 1 ; _debug_eni = "gw"; if ((_kv_alpha > 0) and (_kv_alpha >= _kv_bravo) and (_kv_alpha >= _kv_charlie) and (_kv_alpha >= _kv_delta) and (_kv_alpha >= _kv_echo) and (_kv_alpha >= _kv_foxtrot)) then { _leader_eni = _leader_alpha ; _kv = _kv_alpha ; _nbre_eni = _eni_alpha ; _debug_eni = "alpha"; }; if ((_kv_bravo > 0) and (_kv_bravo >= _kv_alpha) and (_kv_bravo >= _kv_charlie) and (_kv_bravo >= _kv_delta) and (_kv_bravo >= _kv_echo) and (_kv_bravo >= _kv_foxtrot)) then { _leader_eni = _leader_bravo ; _kv = _kv_bravo ; _nbre_eni = _eni_bravo ; _debug_eni = "bravo"; }; if ((_kv_charlie > 0) and (_kv_charlie >= _kv_alpha) and (_kv_charlie >= _kv_bravo) and (_kv_charlie >= _kv_delta) and (_kv_charlie >= _kv_echo) and (_kv_charlie >= _kv_foxtrot)) then { _leader_eni = _leader_charlie ; _kv = _kv_charlie ; _debug_eni = "charlie"; }; if ((_kv_delta > 0) and (_kv_delta >= _kv_alpha) and (_kv_delta >= _kv_bravo) and (_kv_delta >= _kv_charlie) and (_kv_delta >= _kv_echo) and (_kv_delta >= _kv_foxtrot)) then { _leader_eni = _leader_delta ; _kv = _kv_delta ; _nbre_eni = _eni_delta ; _debug_eni = "delta"; }; if ((_kv_echo > 0) and (_kv_echo >= _kv_alpha) and (_kv_echo >= _kv_bravo) and (_kv_echo >= _kv_charlie) and (_kv_echo >= _kv_delta) and (_kv_echo >= _kv_foxtrot)) then { _leader_eni = _leader_echo ; _kv = _kv_echo ; _nbre_eni = _eni_echo ; _debug_eni = "echo"; }; if ((_kv_foxtrot > 0) and (_kv_foxtrot >= _kv_alpha) and (_kv_foxtrot >= _kv_bravo) and (_kv_foxtrot >= _kv_charlie) and (_kv_foxtrot >= _kv_delta) and (_kv_foxtrot >= _kv_echo)) then { _leader_eni = _leader_foxtrot ; _kv = _kv_foxtrot ; _nbre_eni = _eni_foxtrot ; _debug_eni = "foxtrot"; }; if ((_kv > 0) and (_nbre_eni>((count units _allie)*1.5))) then {_repli_tac = true}; if ((_kv > 3.5) and (_nbre_eni>(count units _allie))) then { _n = (random 3) ; if (_n<=1) then {_repli_tac = true}; }; // call compile format ["hint ""ennemi : %1 ; \nkv : %2 ; \nkvA : %3 ;\nkvB : %4 ;\nkvC : %5 ;\nkvD : %6 ;\nkvE : %7 ;\nkvF : %8 ; \nleader : %9"";",(_debug_eni),(_kv),(_kv_alpha),(_kv_bravo),(_kv_charlie),(_kv_delta),(_kv_echo),(_kv_foxtrot),(_leader_eni)]; // -----------repli tactique if ((_repli_tac) and (count units _allie > 0) and (_nbre_eni>0)) then { // le groupe attaqu donne l'alerte // hint "alerte" ; alerte = true ; publicvariable "alerte" ; alerte1 = true ; publicvariable "alerte1" ; // debug : hint "repli tactique" ; // dplacement du h sur le leader deletevehicle cible ; cible = "HeliHempty" createVehicle [(position _leader_eni select 0),(position _leader_eni select 1),0]; // -----------creation du fumi ou du flare if ((daytime >= 19) or (daytime <= 5)) then {_jour = false; _nuit = true;}; if ((daytime < 19) and (daytime > 5)) then {_jour = true; _nuit = false;}; if (_jour) then { if ((_fumi) and (count units _allie > 0)) then { _grenade2= "SmokeShell" createVehicle [(position leader _allie select 0),(position leader _allie select 1),0]; _fumi = false ; }; }; if (_nuit) then { if ((_fumi) and (count units _allie > 0)) then { _grenade2= "SmokeShell" createVehicle [(position leader _allie select 0),(position leader _allie select 1),0]; _fumi = false ; }; sleep 0.2 ; if (((_leader_eni distance leader _allie) < 300) and (count units _allie > 0)) then { _tmp = "F_40mm_White" createVehicle [((position _leader_eni select 0)+ ((random 100) - (random 100))),((position _leader_eni select 1)+((random 100) - (random 100))), (150 + (random 50))]; }; }; cible setPos [(getpos _leader_eni select 0), (getPos _leader_eni select 1),0] ; sleep 0.2; // ----------- si <50m le lead lance une grenade vers le groupe joueur if ((_leader_eni distance leader _allie) < 50) then { (leader _allie) addmagazine "HandGrenade" ; sleep 0.2; (leader _allie) dotarget _leader_eni ; // dofire (leader _allie) fire ["HandGrenadeMuzzle","HandGrenadeMuzzle","HandGrenade"]; (leader _allie) addmagazine "HandGrenade" ; sleep 0.2; (leader _allie) dotarget _leader_eni ; // dofire (leader _allie) fire ["HandGrenadeMuzzle","HandGrenadeMuzzle","HandGrenade"]; }; // ----------- repli sleep 60 ; // ----------- Renforts _nObject = position (leader _allie) nearestObject "house" ; _nObject2 = position _leader_eni nearestObject "house" ; if ((_renforts > 0) and ((_nObject distance leader _allie) < 50) and ((_nObject2 distance _leader_eni) < 50) and ((_leader_eni distance leader _allie) > 100)) then { // DEBUG hint "Renforts possibles" ; _renforts_control = true ; }; if ((_renforts > 0) and ((_leader_eni distance leader _allie) > 300)) then { // DEBUG hint "Renforts2 possibles" ; _renforts_control = true ; }; sleep 1 ; if ((_renforts_control) and (alive leader _allie)) then { // DEBUG hint "renforts ok" ; for[{_i=1},{_i<=_renforts},{_i=_i+1}] do { "SoldierEB" createUnit [position (leader _allie), _allie,"", 0.6, "private"]; sleep 0.2 ; }; _renforts_control = false ; }; // ---------- contre-attaque _repli_tac = false ; sleep 60 ; alerte = false; publicvariable "alerte"; // hint "fin de l'alerte" ; }; }; // DEBUG hint "script mort" ; }; If (true) ExitWith {}if (local serveur) then { sleep 10 ; _allie = _this select 0; _pertes = _this select 1; _renforts = _this select 2; _eni = _this select 3; _repli_tac = false ; _jour = false ; _nuit = false ; _fumi = true ; _renforts_control = false ; // mise des variables 0 _kv = 0 ; _leadereni_princ = leader gw ; _leader_alpha = leader grpe_alpha ; _leader_bravo = leader grpe_bravo ; _leader_charlie = leader grpe_charlie ; _leader_delta = leader grpe_delta ; _leader_echo = leader grpe_echo ; _leader_foxtrot = leader grpe_foxtrot ; _kv_alpha = 0 ; _kv_bravo = 0 ; _kv_charlie = 0; _kv_delta = 0 ; _kv_echo = 0 ; _kv_foxtrot = 0 ; _eni_alpha = 0; _eni_bravo = 0; _eni_charlie = 0; _eni_delta = 0; _eni_echo = 0; _eni_foxtrot = 0; while {(count units _allie) > 1} do { // _kv = _allie knowsAbout leader _eni ; if (_eni == "opfor") then { _leadereni_princ = leader gpe ; _kv_alpha = _allie knowsAbout (leader grpe_alpha) ; _eni_alpha = (count units grpe_alpha) ; _leader_alpha = leader grpe_alpha ; _kv_bravo = _allie knowsAbout (leader grpe_bravo) ; _eni_bravo = (count units grpe_bravo) ; _leader_bravo = leader grpe_bravo ; _kv_charlie = _allie knowsAbout (leader grpe_charlie) ; _eni_charlie = (count units grpe_charlie) ; _leader_charlie = leader grpe_charlie ; }; if (_eni == "blufor") then { _leadereni_princ = leader gw ; _kv_alpha = _allie knowsAbout (leader grp_alpha) ; _eni_alpha = (count units grp_alpha) ; _leader_alpha = leader grp_alpha ; _kv_bravo = _allie knowsAbout (leader grp_bravo) ; _eni_bravo = (count units grp_bravo) ; _leader_bravo = leader grp_bravo ; _kv_charlie = _allie knowsAbout (leader grp_charlie) ; _eni_charlie = (count units grp_charlie) ; _leader_charlie = leader grp_charlie ; }; if (_eni == "inde") then { _leadereni_princ = leader gpi ; _kv_alpha = _allie knowsAbout (leader grpi_alpha) ; _eni_alpha = (count units grpi_alpha) ; _leader_alpha = leader grpi_alpha ; _kv_bravo = _allie knowsAbout (leader grpi_bravo) ; _eni_bravo = (count units grpi_bravo) ; _leader_bravo = leader grpi_bravo ; _kv_charlie = _allie knowsAbout (leader grpi_charlie) ; _eni_charlie = (count units grpi_charlie) ; _leader_charlie = leader grpi_charlie ; }; // --------------on sauvegarde le nombre de base du groupe allie _sauv = count units _allie ; sleep 5 ; // --------------on vrifie les pertes du grpe allie et si il y a trp de pertes, enclenchement du repli tactique _nbre_reel = count units _allie ; if ((_sauv - _nbre_reel) > _pertes) then {_repli_tac = true}; // ---------------on compare les diffrents kv // scurit : si aucun groupe ne se dmarque, le rfrent devient le chef de camp _kv = _allie knowsAbout _leadereni_princ ; _leader_eni = _leadereni_princ ; _nbre_eni = 1 ; _debug_eni = "gw"; if ((_kv_alpha > 0) and (_kv_alpha >= _kv_bravo) and (_kv_alpha >= _kv_charlie) and (_kv_alpha >= _kv_delta) and (_kv_alpha >= _kv_echo) and (_kv_alpha >= _kv_foxtrot)) then { _leader_eni = _leader_alpha ; _kv = _kv_alpha ; _nbre_eni = _eni_alpha ; _debug_eni = "alpha"; }; if ((_kv_bravo > 0) and (_kv_bravo >= _kv_alpha) and (_kv_bravo >= _kv_charlie) and (_kv_bravo >= _kv_delta) and (_kv_bravo >= _kv_echo) and (_kv_bravo >= _kv_foxtrot)) then { _leader_eni = _leader_bravo ; _kv = _kv_bravo ; _nbre_eni = _eni_bravo ; _debug_eni = "bravo"; }; if ((_kv_charlie > 0) and (_kv_charlie >= _kv_alpha) and (_kv_charlie >= _kv_bravo) and (_kv_charlie >= _kv_delta) and (_kv_charlie >= _kv_echo) and (_kv_charlie >= _kv_foxtrot)) then { _leader_eni = _leader_charlie ; _kv = _kv_charlie ; _debug_eni = "charlie"; }; if ((_kv_delta > 0) and (_kv_delta >= _kv_alpha) and (_kv_delta >= _kv_bravo) and (_kv_delta >= _kv_charlie) and (_kv_delta >= _kv_echo) and (_kv_delta >= _kv_foxtrot)) then { _leader_eni = _leader_delta ; _kv = _kv_delta ; _nbre_eni = _eni_delta ; _debug_eni = "delta"; }; if ((_kv_echo > 0) and (_kv_echo >= _kv_alpha) and (_kv_echo >= _kv_bravo) and (_kv_echo >= _kv_charlie) and (_kv_echo >= _kv_delta) and (_kv_echo >= _kv_foxtrot)) then { _leader_eni = _leader_echo ; _kv = _kv_echo ; _nbre_eni = _eni_echo ; _debug_eni = "echo"; }; if ((_kv_foxtrot > 0) and (_kv_foxtrot >= _kv_alpha) and (_kv_foxtrot >= _kv_bravo) and (_kv_foxtrot >= _kv_charlie) and (_kv_foxtrot >= _kv_delta) and (_kv_foxtrot >= _kv_echo)) then { _leader_eni = _leader_foxtrot ; _kv = _kv_foxtrot ; _nbre_eni = _eni_foxtrot ; _debug_eni = "foxtrot"; }; if ((_kv > 0) and (_nbre_eni>((count units _allie)*1.5))) then {_repli_tac = true}; if ((_kv > 3.5) and (_nbre_eni>(count units _allie))) then { _n = (random 3) ; if (_n<=1) then {_repli_tac = true}; }; // call compile format ["hint ""ennemi : %1 ; \nkv : %2 ; \nkvA : %3 ;\nkvB : %4 ;\nkvC : %5 ;\nkvD : %6 ;\nkvE : %7 ;\nkvF : %8 ; \nleader : %9"";",(_debug_eni),(_kv),(_kv_alpha),(_kv_bravo),(_kv_charlie),(_kv_delta),(_kv_echo),(_kv_foxtrot),(_leader_eni)]; // -----------repli tactique if ((_repli_tac) and (count units _allie > 1) and (_nbre_eni>0)) then { // le groupe attaqu donne l'alerte // hint "alerte" ; alerte = true ; publicvariable "alerte" ; // initialisation des variables de hasard et arty et para _random = 0; _random2 = 0; _artill = artill; _paras_eni = paras_eni; // debug : hint "repli tactique" ; // dplacement du h sur le leader deletevehicle cible ; cible = "HeliHempty" createVehicle [(position _leader_eni select 0),(position _leader_eni select 1),0]; // -----------creation du fumi ou du flare if ((daytime >= 19) or (daytime <= 5)) then {_jour = false; _nuit = true;}; if ((daytime < 19) and (daytime > 5)) then {_jour = true; _nuit = false;}; if (_jour) then { if ((_fumi) and (count units _allie > 0)) then { _grenade2= "SmokeShell" createVehicle [(position leader _allie select 0),(position leader _allie select 1),0]; _fumi = false ; }; }; if (_nuit) then { if ((_fumi) and (count units _allie > 0)) then { _grenade2= "SmokeShell" createVehicle [(position leader _allie select 0),(position leader _allie select 1),0]; _fumi = false ; }; sleep 0.2 ; if (((_leader_eni distance leader _allie) < 300) and (count units _allie > 0)) then { _tmp = "F_40mm_White" createVehicle [((position _leader_eni select 0)+ ((random 100) - (random 100))),((position _leader_eni select 1)+((random 100) - (random 100))), (150 + (random 50))]; }; }; cible setPos [(getpos _leader_eni select 0), (getPos _leader_eni select 1),0] ; sleep 0.2; // ----------- si <50m le lead lance une grenade vers le groupe joueur if ((_leader_eni distance leader _allie) < 50) then { (leader _allie) addmagazine "HandGrenade" ; sleep 0.2; (leader _allie) dotarget _leader_eni ; // dofire (leader _allie) fire ["HandGrenadeMuzzle","HandGrenadeMuzzle","HandGrenade"]; (leader _allie) addmagazine "HandGrenade" ; sleep 0.2; (leader _allie) dotarget _leader_eni ; // dofire (leader _allie) fire ["HandGrenadeMuzzle","HandGrenadeMuzzle","HandGrenade"]; }; // ----------- Appel arty et paras // Alerte. on vrifie si le groupe appelle renforts arty ou paras _random = (random 100); _random2 = (random 100); sleep 2; if ((_random < _artill) and (arty_eni_dispo)) then {_art_script = [] execVM "artill_eni.sqf";}; if ((_random2 < _paras_eni) and (paras_eni_dispo)) then {_para_script = [] execVM "para_eni.sqf";}; // ----------- repli _allie setspeedMode "FULL" ; _allie allowfleeing 1 ; _allie setbehaviour "Stealth"; sleep 60 ; // ----------- Renforts _nObject = position (leader _allie) nearestObject "house" ; _nObject2 = position _leader_eni nearestObject "house" ; if ((_renforts > 0) and ((_nObject distance leader _allie) < 50) and ((_nObject2 distance _leader_eni) < 50) and ((_leader_eni distance leader _allie) > 100)) then { // DEBUG hint "Renforts possibles" ; _renforts_control = true ; }; if ((_renforts > 0) and ((_leader_eni distance leader _allie) > 300)) then { // DEBUG hint "Renforts2 possibles" ; _renforts_control = true ; }; sleep 1 ; // -----Renforts if ((_renforts_control) and (alive leader _allie)) then { // DEBUG hint "renforts ok" ; if (camp_valid == "Opfor") then { for[{_i=1},{_i<=_renforts},{_i=_i+1}] do { [_allie] spawn renfort_tactique_opfor ; sleep 0.2 ; }; _renforts_control = false ; }; if (camp_valid == "Blufor") then { for[{_i=1},{_i<=_renforts},{_i=_i+1}] do { [_allie] spawn renfort_tactique_blufor; sleep 0.2 ; }; _renforts_control = false ; }; if (camp_valid == "Res.") then { for[{_i=1},{_i<=_renforts},{_i=_i+1}] do { [_allie] spawn renfort_tactique_inde ; sleep 0.2 ; }; _renforts_control = false ; }; }; // ---------- contre-attaque _repli_tac = false ; _allie allowfleeing moral_ia ; _allie setspeedMode "NORMAL" ; _allie setbehaviour "Stealth"; _allie move position cible ; sleep 60 ; _allie setspeedMode "NORMAL" ; _allie setbehaviour "combat"; _allie move position cible ; alerte = false; publicvariable "alerte"; // hint "fin de l'alerte" ; }; }; // DEBUG hint "script mort" ; }; If (true) ExitWith {}//respawnSpecial.sqf _name = _this select 0; _spawn1 = _this select 1; _spawn2 = _this select 2; if ((_name distance (getMarkerPos _spawn1)) < 600) then { _name moveINCargo Respawn_carrier; if (_name != player) then {unassignVehicle (vehicle _name); _name action ["EJECT", vehicle _name];}; }; if ((_name distance (getMarkerPos _spawn2)) < 20) then { if (isplayer _name) then {[_name] exec "ca\air2\halo\data\Scripts\HALO_getout.sqs"}; _name moveINCargo Respawn_chopper; if (!isplayer _name) then {unassignVehicle (vehicle _name); _name action ["EJECT", vehicle _name];}; }; if (true) exitWith {};// Spawn_chopperInit.sqf // July - norrin if (!isServer) exitWith {}; _chopper = _this select 0; _pos = getPos _chopper; _c = 0; _chopper setPos [_pos select 0, _pos select 1, 1000]; _chopper flyInHeight 1000; _chopper stop true; _chopper addEventHandler ["HandleDamage", {false}]; _pilot = driver _chopper; _pilot disAbleAI "MOVE"; while {true} do { _chopper setVelocity [0,0,0]; _chopper setVectorUp [0.001, 0.001, 1]; sleep 0.02; }; if (true) exitWith {}; /* ARMA2 REVIVE SCRIPT - AI enabled or disabled JUNE 2009 - norrin (norrin@iinet.net.au) Version: 0.2 ArmA2 ******************************************************************************************************* See release notes for details on contributors and instructions for incorporating revive scripts into your own missions ************************************************************************************ Start revive_init.sqf */ // ===================================================================================================================== // DO NOT MODIFY THIS CODE // ===================================================================================================================== // sickboy's code modified by _xeno T_INIT = false; T_Server = false; T_Client = false; T_JIP = false; T_MP = (if (playersNumber east + playersNumber west + playersNumber resistance + playersNumber civilian > 0) then {true} else {false}); if (isServer) then { T_Server = true; if (!isNull player) then {T_Client = true}; T_INIT = true; } else { T_Client = true; if (isNull player) then { T_JIP = true; [] spawn {waitUntil {!isNull player};T_INIT = true}; } else { T_INIT = true; }; }; waitUntil {T_INIT}; // ===================================================================================================================== // THE FOLLOWING CODE CAN BE MODIFIED // ===================================================================================================================== // GENERAL REVIVE OPTIONS (Off = 0, On = 1) _mission_end_function = 0; //array no.0 - mission ends when all players are unconscious _call_out_function = 1; //array no.6 - whether a unit calls out while unconscious _water_dialog = 1; //array no.45 - whether a dialog appears when a unit dies in water so that it can auto wash ashore _unconscious_drag = 1; //array no.39 - whether a unit can drag the bodies of unconscious players _load_wounded = 1; //array no.61 - allows you to load unconscious units on vehicles _altUnc_animation = 1; //array no.54 - use alternate unconscious animation _JIP_spawn_dialog = 0; //array no.2 - whether a dialog appears when a player JIP so that he can be transported to a spawn point near the action _time_b4_JIP_spawn_dialog = 10000; //array no.17 - time before the respawn dialog appears for JIP players _perpetual_server = 0; //array no.62 - NOT IMPLEMENTED // ================================================================== // LIST OF PLAYABLE UNITS NORRN_player_units = ["joueur1","joueur2","joueur3","joueur4","joueur5","joueur6","joueur7","joueur8","joueur9","joueur10","joueur11","joueur12","joueur13","joueur14","joueur15","joueur16","joueur17","joueur18","joueur19","joueur20","joueur21","joueur22","joueur23","joueur24","joueur25"]; // ================================================================== // WELCOME SCREEN titleText ["Joining Mission", "BLACK FADED", 0.2]; // This next line can be commented out or removed if it interferes with intro movies // ================================================================== // REVIVE OPTIONS _max_respawns = (paramsArray select 1); //array no.38 - Number of lives per unit _JIP_respawns = [3,30]; //array no.63 - 0 - off or the number of lives players receive when they join in progress , JIP time after the mission starts _revive_timer = 1; //array no.7 - Whether you want to limit the amount of timer a player has while unconscious _revive_time_limit = 200; //array no.27 - Amount of time a player remains unconscious before respawning or dying _revive_damage = 0; //array no.37 - Unit's level of damage following revive _unconscious_markers = 1; //array no. 4 - Whether a marker appears on the game map at the location of the unconscious unit _caseVAC = [1, ["MASH"]]; //array no.64 - Allows units to be taken to a hospital etc to be revived _mediVAC = []; //array no.65 - NOT IMPLEMENTED _chance_ofDeath = [0,0]; //array no.66 - Two parameters in the array the first switches off/on (0/1) chance of death when shot, increases dues to hit location and number of times revived and the second parameter switches on/off the decreasing respawn timer based on how many times you have been revived, if using set respawn-time to at least 300 seconds. _dualTimer = 0; //array no.67 - NOT IMPLEMENTED - normal units can only revive for eg 30 seconds whereas medics can heal players up to 120 secs - array - [0/1 - off/on, revive timer for normal unit, timer for medic] _deadSpectator_cam = 1; //array no.92 - leave as 0 - whether a unit can spectate other friendly units when it has run out of lives // ================================================================== // RESPAWN OPTIONS _no_respawn_points = 2; //array no.12 - no of respawn points (Max number 4) _Base_1 = "Mobile"; //array no.13 - spawn position names _Base_2 = "Base"; //array no.14 _Base_3 = "Chopper"; //array no.15 _Base_4 = "USS Khe Sanh"; //array no.16 _Base_free_respawn = [1,0,0,0]; //array no.36 - select whether to allow respawning at spawn points even if enemy troops are present (options OFF = 0, ON = 1) _respawn_at_base_addWeapons = 0; //array no.11 - unit respawns with waepons it commenced the mission with _respawn_at_base_magazines = []; //array no.34 - If using the respawn_at_base_addWeapons option then place the magazine and weapon _respawn_at_base_weapons = []; //array no.35 types in the following arrays, if left blank respawns with weapons from mission start _respawn_position = 2; //array no.28 - 0 - respawn at base_1; 1 - the closest enemy free respawn point; 2 - players choice; and 3 - dies _respawnAtBaseWait = [1,10]; //array no.68 - Two parameters: 1st if = 1 makes players that respawn at base wait for (parameter 2) seconds before being able to see surroundings _objectiveBasedRP = []; //array no.69 - NOT IMPLEMENTED // Mobile Spawn Settings _mobile_spawn = 1; //array no.51 - set to 1 if you want to use mobile spawn _mobile_base_start = "Base"; //array no.52 _mobile_base2_start = ""; //array no.70 - NOT IMPLEMENTED _mobile_type = 1; //array no.60 - set as 0 - for vehicle and 1 for man _mobile_man = joueur1; //array no.53 - place name of unit here or if not used make sure set as objNull _mobile_man2 = objNull; //array no.71 - NOT IMPLEMENTED // ================================================================== // UNITS THAT CAN REVIVE/UNITS THAT CAN BE REVIVED _can_revive = "soldierWB"; //array no.18 _can_revive_2 = ""; //array no.19 _can_revive_3 = ""; //array no.72 - NOT IMPLEMENTED _can_revive_4 = ""; //array no.73 - NOT IMPLEMENTED _can_be_revived = "soldierWB"; //array no.20 _can_be_revived_2 = ""; //array no.21 _can_be_revived_3 = ""; //array no.74 - NOT IMPLEMENTED _can_be_revived_4 = ""; //array no.75 - NOT IMPLEMENTED _medic_1 = "USMC_Soldier_Medic"; //array no.76 - Used in conjunction with medpacks and bleeding _medic_2 = ""; //array no.77 - Used in conjunction with medpacks and bleeding _medic_3 = ""; //array no.78 - NOT IMPLEMENTED _medic_4 = ""; //array no.79 - NOT IMPLEMENTED //======================================================== // MEDPACK AND BLEEDING OPTIONS _medpacks = 0; //array no.80 - Whether you want to give the units a limited number of revive kits 0/1 - no/yes _stabilisation = 0; //array no.81 - NOT IMPLEMENTED _bleeding = 0; //array no.82 - Make units bleed and require bandages _medic_medpacks = 0; //array no.83 - No of medpacks for units specified in the _medic variables - they are required for reviving units _unit_medpacks = 0; //array no.84 - No of medpacks for units specified in the _can_revive variables - they are required for reviving units _medic_bandages = 0; //array no.85 - Bandages stop bleeding _unit_bandages = 0; //array no.86 - _medic_stable = 0; //array no.100 - NOT IMPLEMENTED _unit_stable = 0; //array no.101 - NOT IMPLEMENTED _stabTime_tillDeath = 0; //array no.87 - NOT IMPLEMENTED //Time until death following revive without stabilisation // ================================================================== // ENEMY SIDE TO PLAYABLE UNITS _no_enemy_sides = 1; //array no.22 - No of Enemy sides (0, 1 or 2). _enemy_side_1 = "EAST"; //array no.23 - Enemy sides can be "EAST", "WEST", "GUER" etc _enemy_side_2 = ""; //array no.24 _enemy_side_3 = ""; //array no.88 - NOT IMPLEMENTED _enemy_side_4 = ""; //array no.89 - NOT IMPLEMENTED // ================================================================== // FRIENDLY SIDE TO PLAYABLE UNITS _allied_side_1 = "WEST"; //array no.42 - Friendly sides can be "EAST", "WEST","RESISTANCE" etc. _allied_side_2 = "WEST"; //array no.43 - If all players are from the same side make sure you set the same side for both variables eg "WEST", "WEST" _allied_side_3 = ""; //array no.90 - NOT IMPLEMENTED _allied_side_4 = ""; //array no.91 - NOT IMPLEMENTED // ================================================================== // UNCONSCIOUS CAMERA OPTIONS _follow_cam = 1; //array no.5 - option to allow viewing of friendly units while unconscious _follow_cam_distance = 250; //array no.32 - the range that unconscious players can spectate friendly units _follow_cam_team = 0; //array no.44 - set to 1 if you wish unconscious players only to spectate players within NORRN_player_units array _top_view_height = 70; //array no.55 - allows you to set the top down camera height _visible_timer = 1; //array no.41 - view a cound-down timer while unconscious _unconscious_music = 0; //array no.46 - music must appear as unc_theme in music.hpp // ================================================================== // RESPAWN DIALOG OPTIONS _nearest_teammate_dialog = 0; //array no.3 - whether a respawn dialog appears when there are no players within this distance _all_dead_dialog = 1; //array no.1 - whether a respawn dialog appears when all players are unconscious (_all_dead_player = 1) _respawn_button_timer = 420; //array no.25 - Time until respawn button appears (0 = approx. 12 seconds), NB: Set to a high number like 100000 seconds if you do not want _distance_to_friend = 250; //array no.26 - If the closest friendly unit is further than this distance away trigger respawn dialog _all_dead_player = 0; //array no.56 _all_dead_distance = 2000; //array no.57 - whether a respawn dialog appears when all players within a specified distance are unconscious (_all_dead_player = 1) // ================================================================== // Bonus life for aiding team mates function _reward_function = 0; //array no.96 - specify whether a unit receives bonus lives for reviving other players _revives_required = 0; //array no.97 - Number of revives required before recieving a bonus life // ================================================================== // Team kill function _team_kill_function = 1; //array no.98 - specify whether a unit loses a life for killing team mates _no_team_kills = 1; //array no.99 - Number of teamkills before punishment // ================================================================== // CONFIGURABLE OPTIONS FOR HEAL YOURSELF FUNCTION _heal_yourself = 0; //array no.8 - whether a unit can heal damage to itself _no_of_heals = 1; //array no.29 - Number of heals that each player gets during a mission _lower_bound_heal = 0.1; //array no.30 - The damage level range between which the heal action becomes available _upper_bound_heal = 0.8; //array no.31 // ================================================================== // AI REVIVE BEHAVIOUR OPTIONS _goto_revive = 0; //array no. 9 - closest AI automatically moves to revive a downed team mate _AI_smoke = 0; //array no. 40 - if available reviving AI throws smoke on downed AI position _AI_aware = 0; //array no. 49 - AI will clear an enemy units it is aware of before auto reviving _AI_cover = 1; //array no. 50 - second AI unit moves with AI reviver to give cover _AI_dismount = 0; //array no. 58 - toggles ability of reviving AI units to dismount vehicles (1 = dismount) _call_for_AI_help = 1; //array no. 59 - allows AI units to call for help _goto_revive_distance = 500; //array no. 33 - distance AI units will move to revive a downed team mate // ================================================================== // OPTIONS FOR PLAYER'S DEAD BODIES AND EQUIPMENT - Additional revive functions with many thanks to alef (0 - off, 1 - on except for _bury_timeout) _drop_weapons = 0; //array no.93 - should the respawned player drop his weapons where he died? _cadaver = 0; //array no.94 - should the respawned player's body remain there? _bury_timeout = 12; //array no.95 - if drop weapons OR player body, how long before the body is buried? // 0=maximum (1200s) , n=seconds up to 1200s (hard coded) // ================================================================== // USER CODE - eg. NORRNCustonexec1="execvm ""myscript.sqf"";hint ""myoutput"";" NORRNCustomExec1 ="if (_name == player) then {execVm 'briefing.sqf'};"; // Exec1 occurs following being revived NORRNCustomExec2 =""; // Exec2 occurs when you team kill NORRNCustomExec3 ="[_name,'USS Khe Sanh','chopper']execVm 'respawnSpecial\respawnSpecial.sqf'; if (_name == player) then {execVm 'briefing.sqf'}"; // Exec3 occurs when you spawn at base NORRNCustomExec4 =""; // Exec4 occurs when you try and spawn at base but it is still occupied NORRNCustomExec5 =""; // Must use variables: MAP_r_rejoin (false - first time, // true - rejoining the server, and // MAP_r_no_lives - number of lives if you rejoin server) // ===================================================================================================================== // DO NOT MODIFY THE FOLLOWING CODE // ===================================================================================================================== NORRN_revive_array = []; NORRN_revive_array = [_mission_end_function,_all_dead_dialog,_JIP_spawn_dialog,_nearest_teammate_dialog,_unconscious_markers,_follow_cam,_call_out_function,_revive_timer, _heal_yourself,_goto_revive,_unconscious_invincibility,_respawn_at_base_addWeapons,_no_respawn_points,_Base_1,_Base_2,_Base_3,_Base_4,_time_b4_JIP_spawn_dialog, _can_revive,_can_revive_2,_can_be_revived,_can_be_revived_2,_no_enemy_sides,_enemy_side_1,_enemy_side_2,_respawn_button_timer,_distance_to_friend, _revive_time_limit,_respawn_position,_no_of_heals,_lower_bound_heal,_upper_bound_heal,_follow_cam_distance,_goto_revive_distance,_respawn_at_base_magazines, _respawn_at_base_weapons, _Base_free_respawn, _revive_damage, _max_respawns, _unconscious_drag,_AI_smoke,_visible_timer,_allied_side_1,_allied_side_2,_follow_cam_team, _water_dialog, _unconscious_music, _enemy_units_1, _enemy_units_2, _AI_aware,_AI_cover,_mobile_spawn,_mobile_base_start,_mobile_man,_altUnc_animation,_top_view_height, _all_dead_player,_all_dead_distance,_AI_dismount,_call_for_AI_help,_mobile_type,_load_wounded,_perpetual_server,_JIP_respawns,_caseVAC,_mediVAC,_chance_ofDeath,_dualTimer, _respawnAtBaseWait,_objectiveBasedRP,_mobile_base2_start,_mobile_man2,_can_revive_3,_can_revive_4,_can_be_revived_3,_can_be_revived_4,_medic_1,_medic_2,_medic_3,_medic_4, _medpacks,_stabilisation,_bleeding,_medic_medpacks,_unit_medpacks,_medic_bandages,_unit_bandages,_stabTime_tillDeath,_enemy_side_3,_enemy_side_4, _allied_side_3,_allied_side_4,_deadSpectator_cam,_drop_weapons,_cadaver,_bury_timeout,_reward_function,_revives_required,_team_kill_function,_no_team_kills,_medic_stable, _unit_stable]; // start related revive functions [] execVM "revive_sqf\init_related_scripts.sqf"; if (true) exitWith {}; //Last edited 12/06/09 /* DEAD SPECTATE SCRIPT Upon the player falling dead creates a camera that follows the nearest alive friendly unit JULY 2009 - norrin ************************************************************************************************************************** Start camera_follow.sqf */ disableserialization; private ["_alive_friends","_all_dead_dialog","_allUnits","_c","_camera_friends","_Camera_target","_camx","_camy","_camz","_can_be_revived","_can_be_revived_2","_d","_destroy","_destroy2","_dialog_1","_dialog_2","_display","_distance_to_friend","_e","_f","_follow_cam","_follow_cam_distance","_foo","_friends","_index","_index_friends","_max_box","_name_player","_nearest_friend","_nearest_teammate_dialog","_no_respawn_points","_Object","_pos","_respawn_button_timer","_show_respawn_time","_target","_me"]; //define variables _Object = _this select 0; _pos = _this select 1; _foo = []; _allUnits = []; _alive_friends = []; _destroy = false; _switch = false; _c = 0; NORRN_FOCUS_CAM_ON = 0; NORRN_REVIVE_CAM_TYPE = 0; NORRN_CAM_NVG = false; NORRNAllUnits = []; _boot_hill = getMarkerPos "Boot_hill"; _respawn_mrkr = NORRN_respawn_mrkr; _top_view_height = NORRN_revive_array select 55; _r_dialog_0 = ""; _r_display = ""; showcinemaborder false; //set camera to target body _camx = _pos select 0; _camy = _pos select 1; _camz = _pos select 2; NORRN_REVIVE_cam = "camera" CamCreate [_camx,_camy+5,_camz+1]; NORRN_REVIVE_cam CamSetTarget object; NORRN_REVIVE_cam CameraEffect ["INTERNAL","Back"]; NORRN_REVIVE_cam CamCommit 2; hint ""; //setVars for free camera _angh = 0; _angv = 45; _allUnits = allUnits; {if (side _x != sideLogic && (_x distance _boot_hill) > 100 && (_x distance _respawn_mrkr) > 100 && alive _x) then {_alive_friends = _alive_friends + [_x]}} forEach _allUnits; COUNT_CAM_friends = count _alive_friends; //create dialog and initialise keyboard; _r_dialog_0 = createDialog "dead_cam_dialog"; _r_display = findDisplay 99128; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; titletext [" ","BLACK IN",1]; CAM_KEY_pressed = compile preprocessfile "revive_sqf\CAM_KEY_pressed.sqf"; //change camera via dialog lbClear 10004; _index = lbAdd[10004, "3rd Person"]; _index = lbAdd[10004, "Top Down"]; _index = lbAdd[10004, "Front Side"]; _index = lbAdd[10004, "1st Person"]; _index = lbAdd[10004, "Follow/Free"]; lbSetCurSel [10004, 0]; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _alive_friends; lbSetCurSel [10005, 0]; while {!_destroy} do { scopeName "FollowCam_01"; if (mission_Over) then {sleep 5; _destroy = true;breakOut "FollowCam_01";}; if (_c == 400) then {_c = 0}; if (_c == 0) then { _allUnits = allUnits; _new_friends = []; {if (side _x != sideLogic && (_x distance _boot_hill) > 100 && (_x distance _respawn_mrkr) > 100 && alive _x) then {_new_friends = _new_friends + [_x]}} forEach _allUnits; if (count _new_friends != COUNT_CAM_friends) then {_alive_friends = _new_friends; COUNT_CAM_friends = count _new_friends}; _camera_friends = _alive_friends; _c = 0; }; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _camera_friends; lbSetCurSel [10005, lbCurSel 10005]; if (dialog) then { NORRN_REVIVE_CAM_TYPE = lbCurSel 10004; NORRN_FOCUS_CAM_ON = (lbCurSel 10005); _unit = _camera_friends select NORRN_FOCUS_CAM_ON; _target = vehicle _unit; }; if (!dialog) then {if (!isNull _me) then {_target = _me; NORRN_REVIVE_cam camsettarget _target;NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-3, +1, (_max_box select 2) +1];NORRN_REVIVE_cam camcommit 1};}; switch (NORRN_REVIVE_CAM_TYPE) do { case 0: {_target switchCamera "EXTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"];}; case 1: {NORRN_REVIVE_cam camsettarget _target; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [0, -2, _top_view_height];NORRN_REVIVE_cam camcommit 0.01}; case 2: {NORRN_REVIVE_cam camsettarget _target; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-1.5, 3, 0.2];NORRN_REVIVE_cam camSetFov 1.1; NORRN_REVIVE_cam camcommit 0.01}; case 3: {_target switchCamera "INTERNAL";NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]}; }; //======================================================================================== // Free cam courtesy of hoz and mandoble see: OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 if (NORRN_REVIVE_CAM_TYPE == 4) then { NORRN_REVIVE_cam camsettarget _target; NORRN_REVIVE_cam cameraeffect ["internal", "back"]; if (OFPEC_MouseButtons select 1) then { if (((OFPEC_MouseCoord select 0) >= 0) && ((OFPEC_MouseCoord select 0) <= 1) && ((OFPEC_MouseCoord select 1) >= 0) && ((OFPEC_MouseCoord select 1) <= 1)) then { _deltah = (0.5 - (OFPEC_MouseCoord select 0))*10/0.2; _deltav = (0.5 - (OFPEC_MouseCoord select 1))*10/0.2; _angv = (_angv + _deltav); _angh = (_angh + _deltah); _angv = _angv max 0; _angv = _angv min 89; }; }; _free_pos = [(getpos _target select 0) + sin(_angh)*OFPEC_range_to_unit, (getpos _target select 1) + cos(_angh)*OFPEC_range_to_unit, (getpos _target select 2) + OFPEC_range_to_unit*sin(_angv)]; NORRN_REVIVE_cam camSetPos _free_pos; NORRN_REVIVE_cam camCommit 0.01; }; //======================================================================================== _c = _c + 1; sleep 0.02; }; //destroy camera if (_destroy || _destroy2) exitWith { if (_destroy) then { sleep 0; }; camUseNVG false; closeDialog 4; closeDialog 3; closeDialog 2; closeDialog 1; closeDialog 0; if (_unc_music == 1) then {playMusic ""}; if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; player switchCamera "INTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_REVIVE_cam; deleteVehicle _Object; }; //Last edited 19/07/09/* CAMERA_FOLLOW SCRIPT Upon the player falling unconcious creates a camera that follows the nearest alive friendly unit AUGUST 2009 - norrin Originally converted by xeno to SQF ************************************************************************************************************************** Start camera_follow.sqf */ disableserialization; private ["_alive_friends","_all_dead_dialog","_allUnits","_c","_camera_friends","_Camera_target","_camx","_camy","_camz","_can_be_revived","_can_be_revived_2","_d","_destroy","_destroy2","_dialog_1","_dialog_2","_display","_distance_to_friend","_e","_f","_follow_cam","_follow_cam_distance","_foo","_friends","_index","_index_friends","_max_box","_name_player","_nearest_friend","_nearest_teammate_dialog","_no_respawn_points","_Object","_pos","_respawn_button_timer","_show_respawn_time","_target"]; //define variables _Object = _this select 0; _pos = _this select 1; _name_player = name player; _c = 0; _d = 0; _alive_friends = []; _destroy = false; _destroy2 = false; _switch = false; NORRN_FOCUS_CAM_ON = 0; NORRN_REVIVE_CAM_TYPE = 0; NORRN_CAM_NVG = false; Norrn_helper_list = []; all_dead_check = false; _dialog_fade = Norrn_DialogBlink; _oldtarget = objNull; _oldCam = -1; player switchCamera "INTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_REVIVE_cam; _all_dead_dialog = NORRN_revive_array select 1; _nearest_teammate_dialog = NORRN_revive_array select 3; _follow_cam = NORRN_revive_array select 5; _goto_revive = NORRN_revive_array select 9; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _can_be_revived = NORRN_revive_array select 20; _can_be_revived_2 = NORRN_revive_array select 21; _respawn_button_timer = NORRN_revive_array select 25; _distance_to_friend = NORRN_revive_array select 26; _follow_cam_distance = NORRN_revive_array select 32; _max_respawns = NORRN_revive_array select 38; _ally_side_1 = NORRN_revive_array select 42; _ally_side_2 = NORRN_revive_array select 43; _follow_cam_team = NORRN_revive_array select 44; _unc_music = NORRN_revive_array select 46; _mobile_spawn = NORRN_revive_array select 51; _mobile_base_start = NORRN_revive_array select 52; _QG_animation = NORRN_revive_array select 54; _top_view_height = NORRN_revive_array select 55; _all_dead_player = NORRN_revive_array select 56; _all_dead_distance = NORRN_revive_array select 57; _r_dialog_0 = ""; _r_dialog_1 = ""; _r_dialog_2 = ""; _r_dialog_3 = ""; _r_dialog_4 = ""; _r_display = ""; _ally_side_1 = call compile format ["%1", _ally_side_1]; _ally_side_2 = call compile format ["%1", _ally_side_2]; if (_mobile_spawn == 1) then { if(!NORRN_camo_net) then {norrn_button_update = false} else {norrn_button_update = true}; }; _show_respawn_time = time + _respawn_button_timer; showcinemaborder false; //Play song if (_unc_music == 1) then {playMusic "unc_theme"}; NORRN_REVIVE_cam = "camera" CamCreate (getPos _object); NORRN_REVIVE_cam CamSetTarget _object; NORRN_REVIVE_cam CameraEffect ["INTERNAL","Back"]; NORRN_REVIVE_cam CamCommit 0.1; //Check for all dead if (_all_dead_dialog == 1) then { _f = 0; _e = 0; if(_all_dead_player == 0)then { {call compile format ["if(!isNull %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(!isNull %1 && (%1 getVariable 'NORRN_unconscious') ||!isNull %1 && (_Object distance %1) > _all_dead_distance)then {_e = _e + 1}", _x]}forEach NORRN_player_units; }else{ {call compile format ["if(isplayer %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(isplayer %1 && (%1 getVariable 'NORRN_unconscious'))then {_e = _e + 1}", _x]}forEach NORRN_player_units; }; if (_e == _f && _d == 0) then {all_dead_check = true}; }; titleText ["", "BLACK FADED", 1]; hint ""; titleText ["You are unconscious and waiting to be revived", "BLACK FADED", 0.5]; sleep 4; waitUntil{!isNull unconscious_body || !(player getVariable "NORRN_unconscious")}; if (!(player getVariable "NORRN_unconscious")) then {_destroy = true}; //setVars for free camera _angh = 0; _angv = 0; if (!_destroy) then { //set view on unconscious body NORRN_REVIVE_cam CamSetTarget unconscious_body; NORRN_REVIVE_cam switchCamera "EXTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; _NORRN_west = []; {call compile format ["if (!isNull %1) then {_NORRN_west = _NORRN_west + [%1]}", _x]} forEach NORRN_player_units; _foo = []; _foo = _foo + [unconscious_body]; _friends = nearestObjects [unconscious_body, ["CAManBase","AIR","SHIP","LandVehicle"],_follow_cam_distance]; _friends = allUnits; {if ((vehicle _x) isKindOf "AIR" || (vehicle _x) isKindOf "SHIP" || (vehicle _x) isKindOf "LandVehicle") then {if (count (crew _x) == 0) then {_friends = _friends - [_x]}}} forEach _friends; {if (side _x == playerSide && (_x distance unconscious_body) < _follow_cam_distance && alive _x && _x in _NORRN_west && !(_x getVariable "NORRN_unconscious")) then {_foo = _foo + [_x]}}forEach _friends; _alive_friends = _foo; COUNT_CAM_friends = count _alive_friends; //_camera_friends = _alive_friends - [unconscious_body]; _camera_friends = _alive_friends; //create dialog and initialise keyboard; _r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; CAM_KEY_pressed = compile preprocessfile "revive_sqf\CAM_KEY_pressed.sqf"; //setVars for free camera _angh = getDir unconscious_body; _angv = 45; sleep 0.5; titlecut ["","BLACK IN",1]; }; while {!_destroy} do { scopeName "FollowCam_01"; //create respawn button _e = 0; _f = 0; if (isNull unconscious_body || !alive unconscious_body) then {_destroy = true;breakOut "FollowCam_01";}; if (!(player getVariable "NORRN_unconscious")) then {_destroy = true; breakOut "FollowCam_01"}; if (mission_Over) then {sleep 5; _destroy = true;breakOut "FollowCam_01";}; if (!alive player) then {titleText ["","BLACK FADED",10];_destroy2 = true;breakOut "FollowCam_01";}; //fix for changing dialogs _cam_angle = lbCurSel 10004; _cam_focus = lbCurSel 10005; if (_all_dead_dialog == 1) then { if(_all_dead_player == 0)then { {call compile format ["if(!isNull %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(!isNull %1 && (%1 getVariable 'NORRN_unconscious') ||!isNull %1 && (_Object distance %1) > _all_dead_distance)then {_e = _e + 1}", _x]}forEach NORRN_player_units; }else{ {call compile format ["if(isplayer %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(isplayer %1 && (%1 getVariable 'NORRN_unconscious'))then {_e = _e + 1}", _x]}forEach NORRN_player_units; }; if (_e == _f && !NORRN_r_time_expire) then {all_dead_check = true}; }; //modified for nearest friend dialog bug - now triggers if no players within specified distance can revive downed unit _NORRN_west = []; {call compile format ["if (!isNull %1 && player != %1) then {_NORRN_west = _NORRN_west + [%1]}", _x]} forEach NORRN_player_units; _nearest_friend = 1; {if ((unconscious_body distance _x) <= _distance_to_friend) then {_nearest_friend = _nearest_friend + 1}}forEach _NORRN_west; //Respawn point name for mobile spawn if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; if (_d == 0 && _dialog_fade != Norrn_DialogBlink && !NORRN_r_time_expire) then { _switch = true; closedialog 0; _r_display closedisplay 10004; _r_display closedisplay 10005; waitUntil {!dialog}; _r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; _dialog_fade = Norrn_DialogBlink; }; if (time >= _show_respawn_time && _d == 0 && !NORRN_r_time_expire || _nearest_teammate_dialog == 1 && _nearest_friend == 1 && _d == 0 && !NORRN_r_time_expire || time >= _show_respawn_time && !NORRN_r_time_expire && _dialog_fade != Norrn_DialogBlink || _nearest_teammate_dialog == 1 && _nearest_friend == 1 && !NORRN_r_time_expire && _dialog_fade != Norrn_DialogBlink) then { _switch = true; closedialog 0; _r_display closedisplay 10004; _r_display closedisplay 10005; waitUntil {!dialog}; _d = 1; switch (_no_respawn_points) do { case 0: {_r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 1: {_r_dialog_1 = createDialog "respawn_button_1";_r_display = findDisplay 99124;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; _dialog_fade = Norrn_DialogBlink; }; if (NORRN_r_time_expire && _d < 2 || _all_dead_dialog == 1 && all_dead_check && _d < 2 && !NORRN_r_time_expire) then { unconscious_body setVariable ["NORRN_AIunconscious", false, true]; if (_all_dead_dialog == 1 && all_dead_check && _d < 2) then { unconscious_body setVehicleInit "this switchMove 'Deadstate';"; processInitCommands; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", player]}; titleText ["\n\n\n\n\n\n\n\n\n\nAll players are unconscious. Choose a marker for respawn", "BLACK FADED", 10]; NORRN_r_time_expire = true; }; if (!isNull unconscious_body) then {NORRN_FOCUS_CAM_ON = 0; unconscious_body switchCamera "EXTERNAL"}; sleep 2; closedialog 0; switch (_no_respawn_points) do { case 1: {_dialog_5 = createDialog "respawn_button_1map"}; case 2: {_dialog_5 = createDialog "respawn_button_2map"}; case 3: {_dialog_5 = createDialog "respawn_button_3map"}; case 4: {_dialog_5 = createDialog "respawn_button_4map"}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; _d = 2; }; if (_mobile_spawn == 1 && NORRN_r_time_expire && NORRN_camo_net && !norrn_button_update || _mobile_spawn == 1 && NORRN_r_time_expire && !NORRN_camo_net && norrn_button_update) then { closedialog 0; waitUntil {!dialog}; switch (_no_respawn_points) do { case 1: {_dialog_5 = createDialog "respawn_button_1map"}; case 2: {_dialog_5 = createDialog "respawn_button_2map"}; case 3: {_dialog_5 = createDialog "respawn_button_3map"}; case 4: {_dialog_5 = createDialog "respawn_button_4map"}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; if (!NORRN_camo_net) then {norrn_button_update = false} else {norrn_button_update = true}; NORRN_OK_diag_off = true; }; if (_mobile_spawn == 1 && NORRN_camo_net && _d == 1 && !norrn_button_update && !NORRN_r_time_expire|| _mobile_spawn == 1 && !NORRN_camo_net && _d == 1 && norrn_button_update && !NORRN_r_time_expire)then { _switch = true; closedialog 0; _r_display closedisplay 10004; _r_display closedisplay 10005; waitUntil {!dialog}; switch (_no_respawn_points) do { case 0: {_r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 1: {_r_dialog_1 = createDialog "respawn_button_1";_r_display = findDisplay 99124;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; if (!NORRN_camo_net) then {norrn_button_update = false} else {norrn_button_update = true}; }; {if (alive _x) then {if (name _x == "Error: No unit") then {COUNT_CAM_friends = COUNT_CAM_friends - 50}}}forEach _camera_friends; if (_c == 0 ) then { _foo = []; _allUnits = []; _friends = allUnits; {if ((vehicle _x) isKindOf "AIR" || (vehicle _x) isKindOf "SHIP" || (vehicle _x) isKindOf "LandVehicle") then {if (count (crew _x) == 0) then {_friends = _friends - [_x]}}} forEach _friends; _foo = _foo + [unconscious_body]; if (_follow_cam_team == 0) then { {if ((_x distance unconscious_body) < _follow_cam_distance && (side _x) == _ally_side_1 && alive _x && !(_x getVariable "NORRN_unconscious") || (_x distance unconscious_body) < _follow_cam_distance && (side _x) == _ally_side_2 && alive _x && !(_x getVariable "NORRN_unconscious")) then {_foo = _foo + [_x]}}forEach _friends; }else { {if (alive _x && (unconscious_body distance _x) <= _follow_cam_distance && !(_x getVariable "NORRN_unconscious")) then {_foo = _foo + [_x]}}forEach _NORRN_west; }; if (count _foo != COUNT_CAM_friends) then {_alive_friends = _foo; COUNT_CAM_friends = count _alive_friends}; _camera_friends = _alive_friends; //_camera_friends = _alive_friends - [unconscious_body]; }; while {!alive _target} do { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON - 1; _target = vehicle (_alive_friends select NORRN_FOCUS_CAM_ON); lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; sleep 0.01; }; //change camera via dialog lbClear 10004; if (_follow_cam == 1) then { _index = lbAdd[10004, "3rd Person"]; _index = lbAdd[10004, "Top Down"]; _index = lbAdd[10004, "Front Side"]; _index = lbAdd[10004, "1st Person"]; _index = lbAdd[10004, "Follow/Free"]; }else{ _index = lbAdd[10004, "Follow"]; }; //change target via dialog lbClear 10005; //_index_friends = lbAdd[10005, _name_player]; if (_follow_cam == 1) then {{if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _camera_friends;}; //fix for changing dialogs 130209 if (!_switch) then { lbSetCurSel [10004, lbCurSel 10004]; lbSetCurSel [10005, lbCurSel 10005]; }else { lbSetCurSel [10004, _cam_angle]; lbSetCurSel [10005, _cam_focus]; _switch = false; }; NORRN_REVIVE_CAM_TYPE = lbCurSel 10004; NORRN_FOCUS_CAM_ON = lbCurSel 10005; if (_follow_cam == 0 && NORRN_REVIVE_CAM_TYPE == 0) then { unconscious_body switchCamera "EXTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; } else { if (_follow_cam == 1) then { if (!dialog) then {if (!isNull unconscious_body) then {_target = unconscious_body; NORRN_REVIVE_cam camsettarget _target;NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-3, +1, (_max_box select 2) +1];NORRN_REVIVE_cam camcommit 1};}; if (dialog && !all_dead_check && !NORRN_r_time_expire) then {_target = vehicle(_alive_friends select NORRN_FOCUS_CAM_ON)}; switch (NORRN_REVIVE_CAM_TYPE) do { case 0: {if (_target != _oldTarget || NORRN_REVIVE_CAM_TYPE != _oldCam) then {_oldTarget = _target; _oldCam = NORRN_REVIVE_CAM_TYPE; if (_target == player) then {unconscious_body switchCamera "EXTERNAL";} else {_target switchCamera "EXTERNAL"};NORRN_REVIVE_cam CameraEffect ["Terminate","Back"];}}; case 1: {if (_target == player) then {NORRN_REVIVE_cam camsettarget unconscious_body;} else {NORRN_REVIVE_cam camsettarget _target}; _oldCam = NORRN_REVIVE_CAM_TYPE; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [0, -2, OFPEC_range_to_unit];NORRN_REVIVE_cam camcommit 0.005}; case 2: {if (_target == player) then {NORRN_REVIVE_cam camsettarget unconscious_body;} else {NORRN_REVIVE_cam camsettarget _target}; _oldCam = NORRN_REVIVE_CAM_TYPE; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-1.5, 3, 0.2];NORRN_REVIVE_cam camSetFov 1.1; NORRN_REVIVE_cam camcommit 0.005}; case 3: {if (_target != _oldTarget || NORRN_REVIVE_CAM_TYPE != _oldCam) then {_oldTarget = _target; _oldCam = NORRN_REVIVE_CAM_TYPE; if (_target == player) then {unconscious_body switchCamera "INTERNAL";} else {_target switchCamera "INTERNAL"};NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]}}; }; }; }; _c = _c + 1; if (_c == 400) then {_c = 0}; //======================================================================================== //Add new dialog information if (dialog && !NORRN_r_time_expire || dialog && _all_dead_dialog == 1 && !all_dead_check && !NORRN_r_time_expire) then { _cam_hint0 = ""; _lives = _max_respawns - (player getVariable "NORRN_lives_used"); _cam_hint0 = format ["Lives remaining: %1", _lives]; ctrlSetText [10, _cam_hint0]; _target = _alive_friends select (lbCurSel 10005); _follow_unit = ""; if (NORRN_FOCUS_CAM_ON == 0) then { _follow_unit = name player; }else { if (alive _target) then {_follow_unit = name _target}; }; _cam_hint1 = format ["Camera following: %1", _follow_unit]; ctrlSetText [11, _cam_hint1]; _unit_distance = round (unconscious_body distance _target); _cam_hint2 = format ["Distance to camera: %1 m", _unit_distance]; ctrlSetText [12, _cam_hint2]; ctrlSetText [13, "The following units have been"]; ctrlSetText [14, "notified that you need help:"]; _cam_hint5 = ""; _list_helper = []; {if (!isNull _x && alive _x) then {_list_helper = _list_helper + [(name _x)]}}forEach Norrn_helper_list; if ((count _list_helper) == 0) then {_cam_hint5 = "None"} else {_cam_hint5 = format ["%1", _list_helper]}; ctrlSetText [15, _cam_hint5]; _cam_hint6 = ""; _rev = objNull; _rev = player getVariable "NORRN_AIReviver"; if (_goto_revive == 0 && (count Norrn_helper_list) > 0) then {_rev = Norrn_helper_list select 0}; if (_goto_revive == 1 && (count Norrn_helper_list) > 0) then { if (((Norrn_helper_list select 0) distance unconscious_body) < (_rev distance unconscious_body)) then {_rev = (Norrn_helper_list select 0)}; }; if (isNull _rev || !alive _rev) then {_cam_hint6 = "Current reviver: None"} else {_cam_hint6 = format ["Current reviver: %1", name _rev]}; ctrlSetText [16, _cam_hint6]; _cam_hint7 = ""; if (isNull _rev) then {_cam_hint7 = "Distance to reviver: N/A"} else {_cam_hint7 = format ["Distance to reviver: %1 m", round(unconscious_body distance _rev)]}; ctrlSetText [17, _cam_hint7]; _cam_hint8 = ""; if (Norrn_DialogBlink == 20) then {_cam_hint8 = "Dialog Fade: On"} else {_cam_hint8 = "Dialog Fade: Off"}; ctrlSetText [18, _cam_hint8]; _cam_hint9 = ""; if (!NORRN_CAM_NVG) then {_cam_hint9 = "Free camera NVG: Off"} else {_cam_hint9 = "Free camera NVG: On"}; ctrlSetText [19, _cam_hint9]; }; //======================================================================================== // Free cam courtesy of hoz and mandoble see: OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 if (_follow_cam == 1 && NORRN_REVIVE_CAM_TYPE == 4) then { _target = _alive_friends select NORRN_FOCUS_CAM_ON; _oldCam = NORRN_REVIVE_CAM_TYPE; if (_target == player) then {_target = unconscious_body; NORRN_REVIVE_cam camsettarget _target;} else {NORRN_REVIVE_cam camsettarget _target}; NORRN_REVIVE_cam cameraeffect ["internal", "back"]; if (OFPEC_MouseButtons select 1) then { if (((OFPEC_MouseCoord select 0) >= 0) && ((OFPEC_MouseCoord select 0) <= 1) && ((OFPEC_MouseCoord select 1) >= 0) && ((OFPEC_MouseCoord select 1) <= 1)) then { _deltah = (0.5 - (OFPEC_MouseCoord select 0))*10/0.2; _deltav = (0.5 - (OFPEC_MouseCoord select 1))*10/0.2; _angv = (_angv + _deltav); _angh = (_angh + _deltah); _angv = _angv max 0; _angv = _angv min 89; }; }; _free_pos = [(getpos _target select 0) + sin(_angh)*OFPEC_range_to_unit, (getpos _target select 1) + cos(_angh)*OFPEC_range_to_unit, (getpos _target select 2) + OFPEC_range_to_unit*sin(_angv)]; NORRN_REVIVE_cam camSetPos _free_pos; NORRN_REVIVE_cam camCommit 0.5; }; //======================================================================================== sleep 0.01; }; //destroy camera if (_destroy || _destroy2) exitWith { if (_destroy) then { sleep 0; }; camUseNVG false; closeDialog 4; closeDialog 3; closeDialog 2; closeDialog 1; closeDialog 0; //sleep _cam_black_in; //added for playing music if (_unc_music == 1) then {playMusic ""}; if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; player switchCamera "INTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_REVIVE_cam; deleteVehicle _Object; }; //Last edited 16/08/09//CAM_KEY_pressed.sqf start switch ((_this select 1)) do { //N key case 49: { if (!NORRN_CAM_NVG) then { camUseNVG true; NORRN_CAM_NVG = true; }else { camUseNVG false; NORRN_CAM_NVG = false; }; }; //A key case 30: { comment "A = Previous target"; if (NORRN_FOCUS_CAM_ON > 0) then { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON - 1; lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; }; }; //D key case 32: { comment "D = Next target"; if (NORRN_FOCUS_CAM_ON < COUNT_CAM_friends - 1) then { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON + 1; lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; }; }; //S key case 31: { "S = Next camera"; if (NORRN_REVIVE_CAM_TYPE < 4) then { NORRN_REVIVE_CAM_TYPE = NORRN_REVIVE_CAM_TYPE + 1; lbSetCurSel [10004, NORRN_REVIVE_CAM_TYPE]; }; }; //W key case 17: { comment "W = Previous camera"; if (NORRN_REVIVE_CAM_TYPE > 0) then { NORRN_REVIVE_CAM_TYPE = NORRN_REVIVE_CAM_TYPE - 1; lbSetCurSel [10004, NORRN_REVIVE_CAM_TYPE]; }; }; //H key case 35: { comment "H = Call for help"; [] call Norrn_Call4Help; }; /* //B key case 48: { comment "B = Disable camera dialog blinking"; if (Norrn_DialogBlink == 20) then { Norrn_DialogBlink = 0; }else{ Norrn_DialogBlink = 20; }; }; */ }; MouseEvents = { _x =0; _y =0; _param = _this select 1; _type = _this select 0; switch (_type) do { case "MouseMoving": { _x = _param select 1; _y = _param select 2; OFPEC_MouseCoord = [_x, _y]; }; case "MouseButtonDown": { _x = _param select 2; _y = _param select 3; _button = _param select 1; OFPEC_MouseButtons set[_button, true]; }; case "MouseButtonUp": { _x = _param select 2; _y = _param select 3; _button = _param select 1; OFPEC_MouseButtons set[_button, false]; }; case "MouseZChanged": { if (((_this select 1) select 1) > 0) then { if (OFPEC_range_to_unit > 2) then { OFPEC_range_to_unit = OFPEC_range_to_unit - OFPEC_camzoomspeed; }; } else { if (OFPEC_range_to_unit < OFPEC_maxzoomout) then { OFPEC_range_to_unit = OFPEC_range_to_unit + OFPEC_camzoomspeed; }; }; }; }; }; /* CARRY BODY SCRIPT Allows players to carry unconscious bodies JUNE 2009 - norrin ***************************************************************************************************************************** Start carry.sqf */ private ["_unit","_dragee","_pos","_dir"]; _dragee = _this select 3; _can_be_revived = NORRN_revive_array select 20; _can_be_revived_2 = NORRN_revive_array select 21; _unit = player; r_carry_sqf = true; r_drag_sqf = false; _unit removeAction Norrn_carryAction; if (isNull _dragee) exitWith {}; _dragee setVariable ["NORRN_unit_dragged", true, true]; detach _dragee; sleep 1.5; _dragee setVehicleInit "this switchMove 'ainjpfalmstpsnonwrfldnon_carried_up'"; _unit setVehicleInit "this switchMove 'acinpknlmstpsraswrfldnon_acinpercmrunsraswrfldnon'"; processInitCommands; sleep 10; //_dragee attachto [_unit,[0.11, 0.05, -0.2]]; _dragee attachto [_unit,[-0.2, 0.2, 0]]; while {r_carry_sqf} do { _anim_name = animationstate _unit; if (!(_dragee getVariable "NORRN_AIunconscious")) exitWith { detach _dragee; _unit setVehicleInit "this switchMove ''"; processInitCommands; player removeAction Norrn_dropAction; r_carry_sqf = false; }; //check that dragged unit still exists if (!alive _unit || _anim_name != "acinpknlmstpsraswrfldnon_acinpercmrunsraswrfldnon" && _anim_name != "acinpercmstpsraswrfldnon" && _anim_name != "acinpercmrunsraswrfldf") exitWith { player removeAction NORRN_dropAction; detach _dragee; _dragee setVehicleInit "this switchMove r_unc_animation"; processInitCommands; r_carry_sqf = false; }; sleep 0.1; }; if (alive _dragee && (_dragee getVariable "NORRN_AIunconscious")) then {_dragee setVehicleinit "this switchMove 'ainjppnemstpsnonwrfldnon'"; processInitCommands;}; if (true) exitWith {}; //210609 _unit = _this select 0, _unit setVariable ["NORRN_body_part", _this select 1, false]; if (true)exitWith {};/* CONFIG.CPP Taken and adapted from ArmA Group Link II Plus! script by SNKMAN. ******************************************************************************************************************************** Start config.cpp */ class CfgSounds { sounds[] = { Brian_Im_hit, Brian_Im_bleeding,Brian_Medic,Brian_Bastards,Brian_Shit_Man_down,Brian_Oh_no, Brian_Fuck,Brian_Fuck_it,Brian_Shit,Brian_Need_help,Brian_A_little_help_here }; class Brian_Im_hit { name="Brian_Im_hit"; sound[]={"revive_sqf\sound\UNIV_v05.ogg",0.05,1.0}; titles[]={}; }; class Brian_Im_bleeding { name="Brian_Im_bleeding"; sound[]={"revive_sqf\sound\UNIV_v06.ogg",0.05,1.0}; titles[]={}; }; class Brian_Medic { name="Brian_Medic"; sound[]={"revive_sqf\sound\UNIV_v07.ogg",0.05,1.0}; titles[]={}; }; class Brian_Bastards { name="Brian_Bastards"; sound[]={"revive_sqf\sound\UNIV_v10.ogg",0.05,1.0}; titles[]={}; }; class Brian_Shit_Man_down { name="Brian_Shit_Man_down"; sound[]={"revive_sqf\sound\UNIV_v11.ogg",0.05,1.0}; titles[]={}; }; class Brian_Oh_no { name="Brian_Oh_no"; sound[]={"revive_sqf\sound\UNIV_v18.ogg",0.05,1.0}; titles[]={}; }; class Brian_Fuck { name="Brian_Fuck"; sound[]={"sound\UNIV_v24.ogg",0.05,1.0}; titles[]={}; }; class Brian_Fuck_it { name="Brian_Fuck_it"; sound[]={"revive_sqf\sound\UNIV_v25.ogg",0.05,1.0}; titles[]={}; }; class Brian_Shit { name="Brian_Shit"; sound[]={"revive_sqf\sound\UNIV_v31.ogg",0.05,1.0}; titles[]={}; }; class Brian_Need_help { name="Brian_Need_help"; sound[]={"revive_sqf\sound\UNIV_v50.ogg",0.05,1.0}; titles[]={}; }; class Brian_A_little_help_here { name="Brian_A_little_help_here"; sound[]={"revive_sqf\sound\UNIV_v51.ogg",0.05,1.0}; titles[]={}; }; };/* Dead CAMERA DIALOG JULY 2009 - norrin ********************************************************************************************************************************** dead_cam_dialog.hpp */ class dead_cam_dialog { idd = 99128; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = 0.95; w = 4.0; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.01; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Spectate Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = 0.8; y = 0.98; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = 0.8; y = 0.96; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls: A/D - Previous/Next target W/S - Previous/Next camera N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = 0.09; y = 0.005; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.02; y = 0.005; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = 0.82; y = 0.005; w = 0.15; h = 0.04; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.75; y = 0.005; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; }; #define CT_STATIC 0 #define CT_BUTTON 1 #define CT_EDIT 2 #define CT_SLIDER 3 #define CT_COMBO 4 #define CT_LISTBOX 5 #define CT_TOOLBOX 6 #define CT_CHECKBOXES 7 #define CT_PROGRESS 8 #define CT_HTML 9 #define CT_STATIC_SKEW 10 #define CT_ACTIVETEXT 11 #define CT_TREE 12 #define CT_STRUCTURED_TEXT 13 #define CT_3DSTATIC 20 #define CT_3DACTIVETEXT 21 #define CT_3DLISTBOX 22 #define CT_3DHTML 23 #define CT_3DSLIDER 24 #define CT_3DEDIT 25 #define CT_OBJECT 80 #define CT_OBJECT_ZOOM 81 #define CT_OBJECT_CONTAINER 82 #define CT_OBJECT_CONT_ANIM 83 #define CT_USER 99 // Static styles #define ST_HPOS 0x0F #define ST_LEFT 0 #define ST_RIGHT 1 #define ST_CENTER 2 #define ST_UP 3 #define ST_DOWN 4 #define ST_VCENTER 5 #define ST_TYPE 0xF0 #define ST_SINGLE 0 #define ST_MULTI 16 #define ST_TITLE_BAR 32 #define ST_PICTURE 48 #define ST_FRAME 64 #define ST_BACKGROUND 80 #define ST_GROUP_BOX 96 #define ST_GROUP_BOX2 112 #define ST_HUD_BACKGROUND 128 #define ST_TILE_PICTURE 144 #define ST_WITH_RECT 160 #define ST_LINE 176 #define ST_SHADOW 256 #define ST_NO_RECT 512 #define ST_TITLE ST_TITLE_BAR + ST_CENTER #define FontHTML "Zeppelin32" #define FontM "Zeppelin32" #define Dlg_ROWS 36 #define Dlg_COLS 90 #define Dlg_CONTROLHGT ((100/Dlg_ROWS)/100) #define Dlg_COLWIDTH ((100/Dlg_COLS)/100) #define Dlg_TEXTHGT_MOD 0.9 #define Dlg_ROWSPACING_MOD 1.3 #define Dlg_ROWHGT (Dlg_CONTROLHGT*Dlg_ROWSPACING_MOD) #define Dlg_TEXTHGT (Dlg_CONTROLHGT*Dlg_TEXTHGT_MOD) class NORRNRscText { access = ReadAndWrite; type = CT_STATIC; idc = -1; style = ST_LEFT; x = 0; y = 0; w = 0; h = 0; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = FontM; sizeEx = 0.02; text = ""; }; class NORRNRscListBox { type = CT_LISTBOX; style = ST_LEFT; idc = -1; colorSelect[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.2, 0.4, 1, 1}; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0.02, 0.11, 0.27, 0.4}; font = FontM; sizeEx = 0.02; rowHeight = 0.02; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; colorFocused[] = {0.02, 0.11, 0.27, 0.4}; colorShadow[] = {0.2, 0.2, 0.2, 0.8}; colorBorder[] = {0.4, 0.4, 0.4, 1}; borderSize = 0.03; soundEnter[] = {"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[] = {"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[] = {"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[] = {"\ca\ui\data\sound\mouse1", 0.15, 1}; }; class NORRNRscButton { type = CT_BUTTON; idc = -1; style = ST_CENTER; colorText[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.7}; colorBackground[] = {0.04, 0.22, 054, 0.7}; colorBackgroundActive[] = {0.04, 0.22, 0.54, 0.9}; colorBackgroundDisabled[] = {0.04, 0.22, 0.54, 0.4}; colorFocused[] = {1, 1, 1, 0.4}; colorShadow[] = {0, 1, 0, 0}; colorBorder[] = {0, 1, 0, 0}; font = FontM; soundEnter[] = {"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[] = {"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[] = {"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[] = {"\ca\ui\data\sound\mouse1", 0.15, 1}; sizeEx = 0.02; offsetX=0; offsetY=0; offsetPressedX = 0.002; offsetPressedY = 0.002; borderSize=0; default = false; }; class NORRNRscNavButton:NORRNRscButton { w=0.1;h=0.04; x=0.90; sizeEx = 0.022; colorText[] = { 0, 0, 0, 1 }; colorDisabled[] = { 0, 0, 1, 0.7 }; colorBackground[] = { 1, 1, 1, 0.5 }; colorBackgroundDisabled[] = { 1, 1, 1, 0.5 }; colorBackgroundActive[] = { 0.5, 0.5, 0.5, 0.5 }; colorFocused[] = { 0.31, 0.31, 0.31, 0.31 }; colorShadow[] = { 0, 0, 0, 0.5 }; colorBorder[] = { 0.5, 0.5, 0.5, 0.5 }; }; class NORRNRscActiveText { access = ReadAndWrite; type = 11; idc = -1; style = 2; x = 0; y = 0; h = 0; w = 0; font = "TahomaB"; sizeEx = 0.04; color[] = {1, 1, 1, 1}; colorActive[] = {1, 0.5, 0, 1}; soundEnter[] = {"", 0.1, 1}; soundPush[] = {"", 0.1, 1}; soundClick[] = {"", 0.1, 1}; soundEscape[] = {"", 0.1, 1}; text = ""; default = 0; }; class NORRNRscControlsGroup { type = 15; idc = -1; style = 0; x = 0; y = 0; w = 0; h = 0; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; class Controls {}; }; class NORRNRscCombo { idc = -1; type = CT_COMBO; style = ST_LEFT; colorSelect[] = {1, 1, 1, 1 }; colorSelectBackground[] = {0, 0, 0, 1}; colorText[] = {1, 1, 1, 1}; colorScrollbar[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 1}; colorBorder[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 1}; soundSelect[] = { "", 0, 1 }; soundExpand[] = { "", 0, 1 }; soundCollapse[] = { "", 0, 1 }; borderSize = 0; font = "TahomaB"; sizeEx = 0.02; rowHeight = 0.025; wholeHeight = 0.3; text = ""; maxHistoryDelay = 0; default = true; x = 0; y = 0; w = 0; h = 0; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = 0; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; }; class NORRNmouseHandler : NORRNRscControlsGroup { onMouseMoving = "[""MouseMoving"",_this] call MouseEvents"; onMouseButtonDown = "[""MouseButtonDown"",_this] call MouseEvents"; onMouseButtonUp = "[""MouseButtonUp"",_this] call MouseEvents"; onMouseZChanged = "[""MouseZChanged"",_this] call MouseEvents"; idc = 2501; type = 15; style = 0; x = 0.0; y = 0.0; w = 1.0; h = 1.0; colorBackground[] = {0.2, 0.0, 0.0, 0.0}; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; class Controls {}; }; class NORRNRscPicture { type = CT_STATIC; idc = -1; style = ST_PICTURE; x = 0.1; y = 0.1; w = 0.4; h = 0.2; sizeEx = Dlg_TEXTHGT; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1,1,1, 1}; font = FontM; text = ""; }; class NORRNRscMapControl { access = ReadAndWrite; type = 101; idc = -1; style = 48; colorBackground[] = {1, 1, 1, 1}; colorText[] = {0, 0, 0, 1}; font = "TahomaB"; sizeEx = 0.04; colorSea[] = {0.56, 0.8, 0.98, 0.5}; colorForest[] = {0.6, 0.8, 0.2, 0.5}; colorRocks[] = {0.5, 0.5, 0.5, 0.5}; colorCountlines[] = {0.65, 0.45, 0.27, 0.5}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1}; colorCountlinesWater[] = {0, 0.53, 1, 0.5}; colorMainCountlinesWater[] = {0, 0.53, 1, 1}; colorForestBorder[] = {0.4, 0.8, 0, 1}; colorRocksBorder[] = {0.5, 0.5, 0.5, 1}; colorPowerLines[] = {0, 0, 0, 1}; colorRailWay[] = {0.8, 0.2, 0.3, 1}; colorNames[] = {0, 0, 0, 1}; colorInactive[] = {1, 1, 1, 0.5}; colorLevels[] = {0, 0, 0, 1}; colorOutside[] = {0, 0, 0, 1}; fontLabel = "TahomaB"; sizeExLabel = 0.04; fontGrid = "TahomaB"; sizeExGrid = 0.04; fontUnits = "TahomaB"; sizeExUnits = 0.04; fontNames = "TahomaB"; sizeExNames = 0.04; fontInfo = "TahomaB"; sizeExInfo = 0.04; fontLevel = "TahomaB"; sizeExLevel = 0.04; text = "#(argb,8,8,3)color(1,1,1,1)"; stickX[] = {0.2, {"Gamma", 1, 1.5}}; stickY[] = {0.2, {"Gamma", 1, 1.5}}; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; showCountourInterval = "true"; maxSatelliteAlpha = 0; alphAFadeStartScale = 0; alphAFadeEndScale = 0; class Task { icon = "\ca\ui\data\map_waypoint_ca.paa"; iconCreated = "#(argb,8,8,3)color(1,1,1,1)"; iconCanceled = "#(argb,8,8,3)color(0,0,1,1)"; iconDone = "#(argb,8,8,3)color(0,0,0,1)"; iconFailed = "#(argb,8,8,3)color(1,0,0,1)"; colorCreated[] = {1,1,1,1}; colorCanceled[] = {1,1,1,1}; colorDone[] = {1,1,1,1}; colorFailed[] = {1,1,1,1}; size = 20; color[] = {0, 0.900000, 0, 1}; importance = "1.2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class CustomMark { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Legend { x = 0; y = 0; w = 0; h = 0; font = "Zeppelin32"; sizeEx = 0.0151; colorBackground[] = {1, 1, 1, 0.3}; color[] = {0, 0, 0, 1}; }; class ActiveMarker { color[] = {0.3, 0.1, 0.9, 1}; size = 50; }; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {1, 1, 1, 1}; size = 14; importance = 1.5 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0, 0.3, 0, 1}; size = 14; importance = 0.2 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {1, 1, 1, 1}; size = 10; importance = 1 * 10 * 0.05; coefMin = 0.25; coefMax = 4; }; class Command { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {1, 1, 1, 1}; size = 16; importance = 0.7 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.75; coefMax = 4; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0, 0, 0, 1}; size = 12; importance = 1 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 3 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 12; importance = 0.5 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1.2 * 16 * 0.05; coefMin = 1; coefMax = 4; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.6 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.9 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.7; coefMax = 4; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; }; /* CHOOSE MAP SPAWN DIALOG JULY 2008 - norrin ********************************************************************************************************************************** OK_map.hpp */ class OK_map { idd = 202024; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,r_CHOICE,SPWN_RespawnMap,Respawn_1, Respawn_2}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class r_CHOICE { idc = -1; type = CT_STATIC; style = ST_LEFT; x = 0.84; y = 0.52; w = 0.3; h = 0.2; font = FontM; sizeEx = 0.025; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,0}; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Choose this respawn point?"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = 202001; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = " OK "; action = "NORRN_r_OK = 2"; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = " GO BACK"; action = "NORRN_r_OK = 3; [] execVM ""revive_sqf\Go_back.sqf"""; }; };/* RESPAWN AT BASE DIALOG - Single button JULY 2009 - norrin ***************************************************************************************************************************** respawn_button_1.hpp */ class Respawn_button_1 { idd = 99124; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = 0.89; w = 4.0; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = 0.8; y = 0.92; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = 0.8; y = 0.9; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls: A/D - Previous/Next target W/S - Previous/Next camera N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = 0.09; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.02; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = 0.82; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.75; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = 0.02; y = 0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = 0.02; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = 0.02; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; x = 0.02; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = 0.56; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; x = 0.56; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = 0.56; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; x = 0.30; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = 0.30; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; x = 0.30; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = 0.30; y = 0.93; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { x = 0.85; y = 0.80; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; };/* RESPAWN AT BASE DIALOG - Single button JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_1.hpp */ class Respawn_button_1b { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.8; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1, player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG JULY 2007 - norrin ********************************************************************************************************************************** respawn_button_1c.hpp */ class Respawn_button_1c { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.8; w = 0.11; h = 0.04; text = "Wash Ashore"; action = "[player] execVM ""revive_sqf\respawn_at_base_water.sqf"""; }; };/* RESPAWN AT BASE DIALOG - Single button JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_1map.hpp */ class Respawn_button_1map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 2 Buttons JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_2.hpp */ class Respawn_button_2 { idd = 99125; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1,Respawn_2}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = 0.89; w = 4.0; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = 0.8; y = 0.92; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = 0.8; y = 0.9; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls: A/D - Previous/Next target W/S - Previous/Next camera N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = 0.09; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.02; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = 0.82; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.75; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = 0.02; y = 0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = 0.02; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = 0.02; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; x = 0.02; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = 0.56; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; x = 0.56; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = 0.56; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; x = 0.30; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = 0.30; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; x = 0.30; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = 0.30; y = 0.93; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { x = 0.85; y = 0.75; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_2 : NORRNRscNavButton { x = 0.85; y = 0.80; w = 0.11; h = 0.04; idc = 2; text = "RESPAWN 2"; action = "titletext ['','BLACK FADED', 1]; [2,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; }; /* RESPAWN AT BASE DIALOG - 2 Buttons JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_2.hpp */ class Respawn_button_2b { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b, Respawn_2b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.75; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_2b : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.8; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2, player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 2 Buttons This script adds a button when the follow_camera activates that allows the player to respawn at base JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_2map.hpp */ class Respawn_button_2map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1, Respawn_2}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 3 Buttons JULY 2009 - norrin ***************************************************************************************************************************** respawn_button_3.hpp */ class Respawn_button_3 { idd = 99126; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1,Respawn_2,Respawn_3}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = 0.89; w = 4.0; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = 0.8; y = 0.92; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = 0.8; y = 0.9; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls: A/D - Previous/Next target W/S - Previous/Next camera N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = 0.09; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.02; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = 0.82; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.75; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = 0.02; y = 0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = 0.02; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = 0.02; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; x = 0.02; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = 0.56; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; x = 0.56; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = 0.56; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; x = 0.30; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = 0.30; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; x = 0.30; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = 0.30; y = 0.93; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { x = 0.85; y = 0.7; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_2 : NORRNRscNavButton { x = 0.85; y = 0.75; w = 0.11; h = 0.04; idc = 2; text = "RESPAWN 2"; action = "titletext ['','BLACK FADED', 1]; [2,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_3 : NORRNRscNavButton { x = 0.85; y = 0.8; w = 0.11; h = 0.04; idc = 3; text = "RESPAWN 3"; action = "titletext ['','BLACK FADED', 1]; [3,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; }; /* RESPAWN AT BASE DIALOG - 3 buttons JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_3.hpp */ class Respawn_button_3b { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b, Respawn_2b, Respawn_3b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_2b : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.75; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_3b : NORRNRscNavButton { idc = 3; x = 0.85; y = 0.8; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_3map.hpp */ class Respawn_button_3map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1, Respawn_2, Respawn_3}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_3 : NORRNRscNavButton { idc = 3; x = 0.85; y = 0.75; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 4 buttons JULY 2009 - norrin ***************************************************************************************************************************** respawn_button_4.hpp */ class Respawn_button_4 { idd = 99127; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1,Respawn_2,Respawn_3,Respawn_4}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = 0.89; w = 4.0; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = 0.8; y = 0.92; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = 0.8; y = 0.9; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls: A/D - Previous/Next target W/S - Previous/Next camera N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = 0.09; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.02; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = 0.82; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.75; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = 0.02; y = 0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = 0.02; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = 0.02; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; x = 0.02; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = 0.56; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; x = 0.56; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = 0.56; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; x = 0.30; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = 0.30; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; x = 0.30; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = 0.30; y = 0.93; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { x = 0.85; y = 0.65; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_2 : NORRNRscNavButton { x = 0.85; y = 0.70; w = 0.11; h = 0.04; idc = 2; text = "RESPAWN 2"; action = "titletext ['','BLACK FADED', 1]; [2,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_3 : NORRNRscNavButton { x = 0.85; y = 0.75; w = 0.11; h = 0.04; idc = 3; text = "RESPAWN 3"; action = "titletext ['','BLACK FADED', 1]; [3,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_4 : NORRNRscNavButton { x = 0.85; y = 0.80; w = 0.11; h = 0.04; idc = 4; text = "RESPAWN 4"; action = "titletext ['','BLACK FADED', 1]; [4,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 4 Buttons JULY 2007 - norrin ********************************************************************************************************************************** respawn_button_4.hpp */ class Respawn_button_4b { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b, Respawn_2b, Respawn_3b, Respawn_4b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_2b : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_3b : NORRNRscNavButton { idc = 3; x = 0.85; y = 0.75; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_4b : NORRNRscNavButton { idc = 4; x = 0.85; y = 0.8; w = 0.11; h = 0.04; text = "RESPAWN 4"; action = "[4,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_4map.hpp */ class Respawn_button_4map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1, Respawn_2, Respawn_3, Respawn_4}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_3 : NORRNRscNavButton { idc = 3; x = 0.85; y = 0.75; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_4 : NORRNRscNavButton { idc = 4; x = 0.85; y = 0.8; w = 0.11; h = 0.04; text = "RESPAWN 4"; action = "[4,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* REVIVE CAMERA DIALOG JULY 2009 - norrin ********************************************************************************************************************************** rev_cam_dialog.hpp */ class rev_cam_dialog { idd = 99123; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = 0.89; w = 4.0; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = 0.8; y = 0.92; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = 0.8; y = 0.9; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls: A/D - Previous/Next target W/S - Previous/Next camera N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = 0.09; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.02; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = 0.82; y = 0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = 0.75; y = 0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = 0.02; y = 0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = 0.02; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = 0.02; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText { idc = 12; x = 0.02; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = 0.56; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText { idc = 14; x = 0.56; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = 0.56; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText { idc = 16; x = 0.30; y = 0.87; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = 0.30; y = 0.89; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText { idc = 18; x = 0.30; y = 0.91; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = 0.30; y = 0.93; w = 0.4; h = 0.1; }; }; /* DRAG BODY SCRIPT Allows players to drag unconscious bodies AUGUST 2009 - norrin ***************************************************************************************************************************** Start drag.sqf */ private ["_unit","_dragee","_pos","_dir"]; _dragee = _this select 3; _can_be_revived = NORRN_revive_array select 20; _can_be_revived_2 = NORRN_revive_array select 21; _unit = player; //hint format ["%1", _dragee]; if (isNull _dragee) exitWith {}; //player assumes dragging posture _dragee setVariable ["NORRN_unit_dragged", true, true]; _unit playMove "acinpknlmstpsraswrfldnon"; sleep 2; //unconscious unit assumes dragging posture _dragee setVehicleInit "this switchmove 'ainjppnemstpsnonwrfldb_still';"; processInitCommands; //attach unconscious unit _dragee attachto [_unit,[0.1, 1.01, 0]]; sleep 0.02; _dragee setVehicleInit "this setDir 180;"; processInitCommands; r_drag_sqf = true; //Uneccesary actions removed & drop body added player removeAction Norrn_dragAction; player removeAction Norrn_reviveAction; NORRN_dropAction = player addAction ["Drop body", "revive_sqf\drop_body.sqf",_dragee, 0, false, true]; sleep 1; while {r_drag_sqf} do { //_anim_name = animationstate _unit; //if (!alive _dragee || _anim_name != "acinpknlmstpsraswrfldnon" && _anim_name != "acinpknlmwlksraswrfldb" || !(_dragee getVariable "NORRN_unconscious")) exitWith if (!alive _dragee ||!(_dragee getVariable "NORRN_AIunconscious")) exitWith { player removeAction NORRN_dropAction; detach _dragee; _unit setVehicleInit "this switchMove ''"; processInitCommands; sleep 1; r_drag_sqf = false; }; //check that dragged unit still exists if (!alive _unit) exitWith { player removeAction NORRN_dropAction; detach _unit; _unit switchMove ""; sleep 1; r_drag_sqf = false; }; sleep 0.1; }; if (alive _dragee && (_dragee getVariable "NORRN_AIunconscious")) then {_dragee setVehicleinit "this switchMove 'ainjppnemstpsnonwrfldnon'"; processInitCommands;}; if (true) exitWith {}; //170809 /* DROP BODY SCRIPT Allows players to drop unconscious bodies JUNE 2009 - norrin ***************************************************************************************************************************** Start drop_body.sqf */ _dragee = _this select 3; player removeAction NORRN_dropAction; NORRN_remove_drag = true; r_drag_sqf = false; _unit = player; detach _unit; detach _dragee; _dragee setVehicleInit "this switchMove r_unc_animation"; _unit setVehicleInit "this switchMove ''"; processInitCommands; NORRN_Dragged_body = objNull; _dragee setVariable ["NORRN_unit_dragged", false, true]; sleep 8; if (true) exitWith {}; //210609// AI_throwSmoke.sqf private ["_unc_player","_reviver","_smoke_rounds","_round","_bloggs_pos","_bloggs_offset","_sav_pos","_sav_dir"]; _unc_player = player; _reviver = _this select 0; _smoke_rounds = _this select 1; while {count _smoke_rounds > 0 && alive _reviver && (_unc_player getVariable "NORRN_unconscious")} do { //reviver throws smoke if (_reviver distance _unc_player < 60 && _reviver distance _unc_player > 15) then { if !((_unc_player getVariable "NORRN_AISmoke") select 0) then { _round = _smoke_rounds select 0; _bloggs_pos = getPos _unc_player; _bloggs_offset = (_unc_player distance _bloggs_pos); _sav_pos = getPos _reviver; _set_dir = ((_bloggs_pos select 0) - (_sav_pos select 0))atan2((_bloggs_pos select 1) - (_sav_pos select 1)); _reviver setDir _set_dir; sleep 0.1; if(_reviver distance _unc_player > 20) then {_reviver playMove "AmovPercMrunSlowWrflDf_AmovPercMstpSrasWrflDnon_gthEnd"}; _reviver removeMagazine _round; _round createVehicle _bloggs_pos; _unc_player setVariable ["NORRN_AISmoke", [true, _round], true]; if(_reviver distance _unc_player <= 20) then {sleep 2}; }; }; sleep 2; }; if (true) exitWith {}; //Last modified - 230809// Norrn_AIBehaviour // AUGUST 2009 - norrin private ["_name","_can_revive","_can_revive_2","_can_be_revived","_can_be_revived_2","_enemy_side_1","_enemy_side_2","_goto_revive_distance", "_AI_smoke","_AI_aware","_AI_cover","_AI_dismount","_smoke_shell_types","_close_array","_unc_array","_revive_array","_goto_reviver","_goto_protect", "_revive_units","_protect_units","_mags","_smoke_rounds","_round","_bloggs_pos","_bloggs_offset","_sav_pos","_sav_dir","_known_enemy","_count_enemies"]; _name = _this select 0; _units = _this select 1; _can_revive = Norrn_revive_array select 18; _can_revive_2 = Norrn_revive_array select 19; _can_be_revived = Norrn_revive_array select 20; _can_be_revived_2 = Norrn_revive_array select 21; _medic_1 = Norrn_revive_array select 76; _medic_2 = Norrn_revive_array select 77; _enemy_side_1 = Norrn_revive_array select 23; _enemy_side_2 = Norrn_revive_array select 24; _goto_revive_distance = Norrn_revive_array select 33; _AI_smoke = Norrn_revive_array select 40; _AI_aware = Norrn_revive_array select 49; _AI_cover = Norrn_revive_array select 50; _AI_dismount = Norrn_revive_array select 58; _medpacks = Norrn_revive_array select 80; _smoke_shell_types = ["SmokeShell","SmokeShellRed","SmokeShellGreen"]; //all friendly units nearby _close_array = []; _unc_array = []; _revive_array = []; _goto_reviver = objNull; _goto_protect = objNull; _round = objNull; _close_array = nearestObjects [_name, [_can_be_revived, _can_be_revived_2], _goto_revive_distance]; _group = group _name; //create array of all friendly units nearby that are unconscious {if (_x getVariable "NORRN_AIunconscious") then {_unc_array = _unc_array + [_x]}}forEach _close_array; //define revive and protector arrays _revive_units = []; _protect_units = []; {call compile format ["if (%1 isKindOf _can_revive && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 0 || %1 isKindOf _can_revive_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 0 || %1 isKindOf _can_revive && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0 || %1 isKindOf _can_revive_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0 || %1 isKindOf _medic_1 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0 || %1 isKindOf _medic_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0) then {_revive_units = _revive_units + [%1]}", _x]} forEach _units; {call compile format ["if (%1 isKindOf _can_revive && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') || %1 isKindOf _can_revive_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') || %1 isKindOf _medic_1 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 || %1 isKindOf _medic_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1) then {_protect_units = _protect_units + [%1]}", _x]} forEach _units; //define the unconscious unit array {if !(_x in _protect_units) then {_revive_array = _revive_array + [_x]}}forEach _unc_array; if (count _revive_array > 0) then { _mags = []; if (_medpacks == 0) then { if(_name isKindOf _can_revive || _name isKindOf _can_revive_2) then {_goto_reviver = _name}; }; if (_medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 ) then { if(_name isKindOf _can_revive || _name isKindOf _can_revive_2 || _name isKindOf _medic_1 || _name isKindOf _medic_2) then {_goto_reviver = _name}; }; if (_AI_cover == 1) then {_goto_protect = _name}; _close_unc = objNull; _close_unc = _revive_array select 0; _revive_units = _revive_units - [_name]; sleep 1; if (count _revive_units > 0) then { {if ((_name distance _close_unc) > (_x distance _close_unc)) then {_goto_reviver = _x}}forEach _revive_units; _protect_units = _protect_units - [_goto_reviver]; if (_name == _goto_reviver) then {_goto_protect = objnull}; {if (_name != _goto_reviver && _AI_cover == 1 && (_name distance _close_unc) > (_x distance _close_unc)) then {_goto_protect = _x}}forEach _protect_units; }; //Overide settings if player calls for help if (_name == _goto_reviver && (_name getVariable "NORRN_AI_help")) then {_goto_reviver = objnull; _close_unc = objNull}; if (_name == _goto_protect && (_name getVariable "NORRN_AI_help")) then {_goto_protect = objnull; _close_unc = objNull}; if ((_name getVariable "NORRN_AI_help") && (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4])) > 1 && _name isKindOf _can_revive || (_name getVariable "NORRN_AI_help") && (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4])) > 1 && _name isKindOf _can_revive_2) then { if ((nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 3] select 1) getVariable "NORRN_unconscious") then { _name playMove "AinvPknlMstpSlayWrflDnon_medic"; _name setVariable ["NORRN_AI_help", false, true]; }; }; //if unit is closest to unconscious unit and is not player moveTo and heal unit if (!isNull _goto_reviver && !isNull _close_unc && _goto_reviver == _name && !isplayer _name && (count _revive_array > 0) || !isNull _goto_protect && !isNull _close_unc && _goto_protect == _name && !isplayer _name && (count _revive_array > 0)) then { if (_goto_reviver == _name && (_close_unc getVariable "NORRN_AIReviver") != _name) then { _close_unc setVariable ["NORRN_AIReviver", _goto_reviver, true]; }; //check to see if the healer has smoke _mags = magazines _name; _smoke_rounds = []; {if (_x in _smoke_shell_types) then {_smoke_rounds = _smoke_rounds + [_x]}} forEach _mags; //healer throws smoke if (count _smoke_rounds > 0 && _AI_smoke == 1 && _name distance _close_unc < 50 && _name distance _close_unc > 4 && _name == _goto_reviver) then { if !((_close_unc getVariable "NORRN_AISmoke") select 0)then { _round = _smoke_rounds select 0; _bloggs_pos = getPos _close_unc; _bloggs_offset = (_close_unc distance _bloggs_pos); _sav_pos = getPos _name; _set_dir = ((_bloggs_pos select 0) - (_sav_pos select 0))atan2((_bloggs_pos select 1) - (_sav_pos select 1)); _name setDir _set_dir; sleep 0.1; if(_name distance _close_unc > 15) then {_name playMove "AmovPercMrunSlowWrflDf_AmovPercMstpSrasWrflDnon_gthEnd"}; _name removeMagazine _round; _round createVehicle [(_bloggs_pos select 0) + 1,(_bloggs_pos select 1) + 1, 0]; _close_unc setVariable ["NORRN_AISmoke", [true, _round], true]; }; }; //set behaviour healer _name setBehaviour "AWARE"; //clears any known enemies if (_AI_aware == 1) then { _known_enemy = []; _count_enemies = 0; _known_enemy = nearestObjects [_name, [_enemy_units_1,_enemy_units_2], 50]; {if (_name knowsAbout _x > 0.105) then {_count_enemies = _count_enemies + 1}} forEach _known_enemy; while {_count_enemies > 0 && alive _name} do { _count_enemies = 0; _known_enemy = nearestObjects [_name, [_enemy_units_1,_enemy_units_2], 50]; {if (_name knowsAbout _x > 0.105) then {_count_enemies = _count_enemies + 1}} forEach _known_enemy; sleep 0.01; }; }; /////////////////////////////////////// if (_AI_dismount == 1) then { //Reviver and protector dismount vehicle if (vehicle _goto_reviver != _goto_reviver && _name == _goto_reviver || vehicle _goto_protect != _goto_protect && _name == _goto_protect) then { if ((vehicle _goto_reviver) isKindOf "Land" || (vehicle _goto_protect) isKindOf "Land") then { [_name] join grpNull; unAssignVehicle _name; doGetOut _name; }; }; }; //Instruct stopped unit to move if (currentCommand _goto_reviver == "stop" && _name == _goto_reviver || currentCommand _goto_protect == "stop" && _name == _goto_protect)then { _group = group _name; [_name] join grpNull; }; /////////////////////////////////////// //healer and protector move to unconscious unit if((_name distance _close_unc) > 10 && time > _doMove_time && (_close_unc getVariable "NORRN_AIunconscious") && _name == _goto_protect) then { if (_name == _goto_protect) then { _close_unc_pos = getPos _close_unc; _name doMove [(_close_unc_pos select 0) + 5, (_close_unc_pos select 1) + 5, (_close_unc_pos select 2)]; }; _doMove_time = time + 4; }; if((_name distance _close_unc) > 10 && time > _doMove_time && (_close_unc getVariable "NORRN_AIunconscious") && _name == _goto_reviver) then { if (_name == _goto_reviver) then { sleep 0.1; _name doMove (getPos _close_unc); }; _doMove_time = time + 4; }; //healer revives unconscious unit if ((_name distance _close_unc) <= 3 && (_close_unc getVariable "NORRN_AIunconscious") && _name == _goto_reviver) then { if (!(_name getVariable "NORRN_AIunconscious") && alive _name) then { _near_revivers = []; _dont_revive = false; _near_revivers = nearestObjects [_name,[_can_revive, _can_revive_2, _medic_1, _medic_2], 6]; {if (animationState _x == "AinvPknlMstpSlayWrflDnon_medic") then {_dont_revive = true}} forEach _near_revivers; if (!_dont_revive) then { _name playMove "AinvPknlMstpSlayWrflDnon_medic"; if (_medpacks == 1) then { _var = _name getVariable "Norrn_medpacks"; _name setVariable ["Norrn_medpacks", (_var - 1), true]; }; }; _name setVariable ["NORRN_AI_help", false, true]; _name doMove (getPos _name); sleep 0.5; sleep 10; _name doMove (getPos _name); }; }; }; }; if(true) exitWith {}; //file last modified 170809// Norrn_CallOut // JUNE 2009 - norrin private ["_unconscious_body"]; _unconscious_body = _this select 0; _ran = floor(random 11); _unconscious_body say (commentsBrian select _ran); r_say = [_unconscious_body, _ran]; publicVariable "r_say"; 20 + ceil(random 10); //file modified 120609// createBody.sqf // AUGUST 2009 - norrin _name = _this select 0; _pos = _name getVariable "NORRN_uncPos"; _unit_type = typeOf _name; call compile format ["_unit_type createUnit [[_pos select 0,_pos select 1, _pos select 2], group server, 'this setcaptive true; this switchMove ''DeadState''; this disableAI ''ANIM''; this setdamage 1.0; this setVehicleVarName ''norrn_dead_%1''; norrn_dead_%1 = this; this setDir ((%1 getVariable ''NORRN_unc_array'') select 0); this setPos %2; removeAllWeapons this; {this removeMagazine _x} forEach magazines this; removeAllItems this; {this addMagazine _x;} forEach ((%1 getVariable ''NORRN_unc_array'') select 2); {this addWeapon _x;} forEach ((%1 getVariable ''NORRN_unc_array'') select 3);']", _name, _pos]; // Norrn_DeleteUncBody // JUNE 2009 - norrin _unconscious_body = _this select 0; detach _unconscious_body; _unconscious_body removeAllEventHandlers "dammaged"; _unconscious_body removeAllEventHandlers "hit"; _unconscious_body setVariable ["NORRN_AIunconscious", false, true]; sleep 1.5; clearVehicleInit _unconscious_body; _unconscious_body setPos NORRN_respawn_mrkr; deleteVehicle _unconscious_body; _unconscious_body = objNull; call compile format ["norrn_dead_%1 = objNull", _name]; if (_name == player) then {unconscious_body = objNull}; //file modified 120609 /* Drop - drops ammo when a player respawns - AI_enabled gets called on _drop_weapons || _cadaver Check root revive_init.sqf for additional parameters written by alef modified by norrin ************************************************************************************** start drop.sqf */ private ["_drop_weapons","_cadaver","_bury_timeout","_body","_safec","_max_timeout","_wep","_mag","_timeout"]; _drop_weapons = NORRN_revive_array select 93; _cadaver = NORRN_revive_array select 94; _bury_timeout = NORRN_revive_array select 95; _body = _this select 0; _timeout = 0; _max_timeout = 1200; // maximum allowed _wep = weapons _body; _mag = magazines _body; // Get body's current position _pos = getPos _body; _offset = _name distance _pos; _upos = [_pos select 0, _pos select 1, _Offset]; if (_bury_timeout > 0 && _bury_timeout < _max_timeout) then { _timeout = time + _bury_timeout; }else{ _timeout = time + _max_timeout; }; if (_cadaver == 0) then { waitUntil{time > _timeout}; if (_drop_weapons == 1) then { _holder = "WeaponHolder" createVehicle _upos; _holder setPos _upos; sleep 1; {_body action ["DropMagazine",_holder, _x];sleep 0.6;} forEach _mag; {_body action ["DropWeapon",_holder, _x];sleep 0.7;} forEach _wep; }; clearVehicleInit _body; deleteVehicle _body; _body = objNull; }else{ if (_drop_weapons == 1) then { _holder = "WeaponHolder" createVehicle _upos; _holder setPos _upos; sleep 1; {_body action ["DropMagazine",_holder, _x];sleep 0.6;} forEach _mag; {_body action ["DropWeapon",_holder, _x];sleep 0.7;} forEach _wep; }; clearVehicleInit _body; sleep 2; }; if (true) exitWith {}; //Last modified 11/8/7 //Returns an average slope value of terrain within passed radius. Private["_centerHeight","_direction","_height","_position","_radius"]; _position = _this Select 0; _radius = _this Select 1; GetSlopeObject SetPos _position; _centerHeight = GetPosASL GetSlopeObject Select 2; _height = 0; _direction = 0; for [{_count = 0},{_count < 8},{_count = _count + 1}] do { GetSlopeObject SetPos [(_position Select 0)+((sin _direction)*_radius),(_position Select 1)+((cos _direction)*_radius),0]; _direction = _direction + 45; _height = _height + abs (_centerHeight - (GetPosASL GetSlopeObject Select 2)); }; _height / 8; //11/8/7 MM - Created file. //modified 24/08/09 by norrin for ArmA2 // I_need_help // AUGUST 2009 - norrin private ["_can_revive","_can_revive_2","_goto_revive_distance","_AI_smoke","_AI_cover","_call_for_AI_help","_smoke_shell_types","_helpComments","_revive_units","_potential_revivers","_possible_reviver","_reviver","_mags","_smoke_rounds"]; _unit = player; _can_revive = Norrn_revive_array select 18; _can_revive_2 = Norrn_revive_array select 19; _can_be_revived = Norrn_revive_array select 20; _can_be_revived_2 = Norrn_revive_array select 21; _medic_1 = Norrn_revive_array select 76; _medic_2 = Norrn_revive_array select 77; _goto_revive_distance = Norrn_revive_array select 33; _AI_smoke = Norrn_revive_array select 40; _AI_cover = Norrn_revive_array select 50; _call_for_AI_help = Norrn_revive_array select 59; _medic_1 = Norrn_revive_array select 76; _medic_2 = Norrn_revive_array select 77; _medpacks = Norrn_revive_array select 80; _smoke_shell_types = ["SmokeShell","SmokeShellRed","SmokeShellGreen"]; _reviver = objNull; if (_call_for_AI_help == 0) exitWith {titleText ["This option is not enabled in this mission","PLAIN",1]}; _helpComments = ["Brian_Need_help","Brian_A_little_help_here"]; _unit say (_helpComments select floor(random 2)); //create revivable unit array _revive_units = []; {call compile format ["if (!isNull %1) then {_revive_units = _revive_units + [%1]}", _x]} forEach NORRN_player_units; //Find and designate reviver if (count (nearestObjects [_unit, [_can_be_revived, _can_be_revived_2], _goto_revive_distance]) > 1) then { _potential_revivers = []; _potential_revivers = nearestObjects [_unit, [_can_revive, _can_revive_2, _medic_1,_medic_2], _goto_revive_distance]; _possible_reviver = []; _possible_protectors =[]; {if (_x in _revive_units) then {if (!(_x getVariable "NORRN_AI_help") && !(_x getVariable "NORRN_unconscious") && _medpacks == 0 || !(_x getVariable "NORRN_AI_help") && !(_x getVariable "NORRN_unconscious") && _medpacks == 1 && (_x getVariable "NORRN_medpacks") > 0) then {_possible_reviver = _possible_reviver + [_x]}}}forEach _potential_revivers; {if (_x in _revive_units) then {if (!(_x getVariable "NORRN_AI_help") && !(_x getVariable "NORRN_unconscious")) then {_possible_protectors = _possible_protectors + [_x]}}}forEach _potential_revivers; if ((count _possible_reviver) > 0) then { _reviver = _possible_reviver select 0; titleCut [format ["\n\nCalling %1 for help", name _reviver], "PLAIN", 0.5]; _reviver setVariable ["NORRN_AI_help", true, true]; Norrn_helper_list = Norrn_helper_list + [(_reviver)]; if (!isplayer _reviver) then { //Instruct stopped AI unit to move if (currentCommand _reviver == "stop")then { if (!local _reviver) then { _reviver setVehicleInit "[this] join grpNull"; processInitCommands; }else{ [_reviver] join grpNull; }; }; //move AI reviver to unconscious body (_unit) call compile format ["_reviver setVehicleInit 'this doMove (getPos %1)'", _unit]; processInitCommands; //Added helper throw smmoke if (_AI_smoke == 1) then { //check to see if the reviver has smoke _mags = magazines _reviver; _smoke_rounds = []; {if (_x in _smoke_shell_types) then {_smoke_rounds = _smoke_rounds + [_x]}} forEach _mags; //healer throws smoke if (count _smoke_rounds > 0) then {[_reviver, _smoke_rounds] spawn Norrn_AI_throwSmoke;}; }; }else { //call compile format ["_reviver setVehicleInit 'if (this == %1) then {titleText [''%2 has called for help'',''PLAIN'', 1]}'", _reviver, (name player)]; call compile format ["_reviver setVehicleInit 'hint ''%1 has called for help \nCheck map if markers are enabled for wounded players position'''", name player]; processInitCommands; hint ""; }; }; _possible_protectors = _possible_protectors - [_reviver ]; if ((count _possible_protectors) > 1 && _AI_cover == 1) then { _goto_protector = _possible_protectors select 0; if (!isplayer _goto_protector) then { //Instruct stopped AI unit to move if (currentCommand _goto_protector == "stop")then { if (!local _goto_protector) then { _goto_protector setVehicleInit "[this] join grpNull"; processInitCommands; }else{ [_goto_protector] join grpNull; }; }; //move AI cover unit to unconscious body call compile format ["_goto_protector setVehicleInit 'this doMove [((getPos %1) select 0) + 5, ((getPos %1) select 1) + 5, ((getPos %1) select 2)]'", _unit]; processInitCommands; }; }; }; [_reviver,_unit] execVM "revive_sqf\functions\wait_check.sqf"; if (true) exitWith {}; // file last edited 240609// Norrn_LeaderFix // AUGUST 2009 - norrin _group_leader = _this select 0; _my_group = _this select 1; call compile format ["_leader = %1", _group_leader]; _group = group _leader; {call compile format ["if (group %1 != _group && !(%1 getVariable 'Norrn_dead')) then {[%1] joinsilent _group; %1 doMove (getPos %1)}", _x]} forEach _my_group; sleep 2; {call compile format ["if (group %1 != _group && !(%1 getVariable 'Norrn_dead')) then {[%1] joinsilent _group; %1 doMove (getPos %1)}", _x]} forEach _my_group; if (_leader != formleader _name) then { {_x doFollow _leader} forEach units _group; {_x doMove getPos _x} forEach units _group; }; //file modified 170809 // Norrn_LivesRemain // JUNE 2009 - norrin private["_name","_max_respawns","_no_respawns","_respawns_left","_no_left"]; _name = _this select 0; _max_respawns = _this select 1; _no_respawns = (_name getVariable "NORRN_lives_used") + 1; _respawns_left = _max_respawns - _no_respawns; _no_left = format ["Lives remaining: %1", _respawns_left]; if (_name == player) then {hint _no_left}; _name setVariable ["NORRN_lives_used", _no_respawns, true]; //file modified 030609// respawn_chance.sqf // JUNE 2009 - norrin _body = _this select 0; _respawns = _this select 1; switch (_body getVariable "NORRN_body_part") do { case "": {_respawn_chance = 500}; case "hands": {_respawn_chance = 200}; case "legs": {_respawn_chance = 70}; case "body": {_respawn_chance = 50}; case "head_hit": {_respawn_chance = 20}; }; if (_respawns == 2) then {_respawn_chance = (_respawn_chance/2)}; if (_respawns == 3) then {_respawn_chance = (_respawn_chance/3)}; if (_respawns == 4) then {_respawn_chance = (_respawn_chance/4)}; if (_respawns == 5) then {_respawn_chance = (_respawn_chance/5)}; _respawn_chance// respawn_time.sqf // JUNE 2009 - norrin _body = _this select 0; _respawns = _this select 1; _revive_time_limit = Norrn_revive_array select 27; switch (_body getVariable "NORRN_body_part") do { case "": {_revive_time_limit = _revive_time_limit}; case "hands": {_revive_time_limit = _revive_time_limit}; case "legs": {_revive_time_limit = (_revive_time_limit * 4)/5}; case "body": {_revive_time_limit = (_revive_time_limit * 3)/5}; case "head_hit": {_revive_time_limit = (_revive_time_limit * 2)/5}; }; if (_respawns == 2) then {_revive_time_limit = (_revive_time_limit/2)}; if (_respawns == 3) then {_revive_time_limit = (_revive_time_limit/3)}; if (_respawns == 4) then {_revive_time_limit = (_revive_time_limit/4)}; if (_respawns == 5) then {_revive_time_limit = (_revive_time_limit/5)}; _revive_time_limit// Norrn_RespawnPos1 // JANUARY 2008 - norrin _name = _this select 0; _pos = _this select 1; _mobile_spawn = Norrn_revive_array select 51; _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _Base_4 = ""; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (local _name && isplayer _name) then {titleText ["Revive timer has been exceeded. Respawning at marker", "PLAIN", 0.3]}; sleep 2; _base_1_distance = _pos distance getMarkerPos _Base_1; _base_2_distance = _pos distance getMarkerPos _Base_2; _base_3_distance = _pos distance getMarkerPos _Base_3; _base_4_distance = _pos distance getMarkerPos _Base_4; _base_distance = _base_1_distance; _respawn_base = 1; if (_base_distance > _base_2_distance && !_no_base_2 && !_no_base_2b) then {_base_distance = _base_2_distance; _respawn_base = 2;}; if (_base_distance > _base_3_distance && !_no_base_3 && !_no_base_3b) then {_base_distance = _base_3_distance; _respawn_base = 3;}; if (_base_distance > _base_4_distance && !_no_base_4 && !_no_base_4b) then {_base_distance = _base_4_distance; _respawn_base = 4;}; sleep 0.01; [_respawn_base, _name] execVM "revive_sqf\respawn_at_base.sqf"; true; //file created 080109// Norrn_RespawnPos2Player // JULY 2009 - norrin _unconscious_body = _this select 0; _unconscious_markers = Norrn_revive_array select 4; NORRN_spawn_chosen = false; titleText ["\n\n\n\n\n\n\n\n\n\nRevive timer has been exceeded. Choose a marker for respawn", "PLAIN", 10]; NORRN_r_time_expire = true; if (!isNull _unconscious_body) then { _unconscious_body setVehicleInit "this switchMove 'Deadstate';"; processInitCommands; }; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", player]}; waitUntil {NORRN_spawn_chosen}; true; //file modified 230709// Norrn_RespawnPos2AI // JANUARY 2009 - norrin _name = _this select 0; _pos = _this select 1; _mobile_spawn = Norrn_revive_array select 51; call compile format ["if (%1_a) then {waitUntil {!%1_a}};", leader (group _name)]; _pos_leader = getPos (leader (group _name)); _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _Base_4 = ""; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (local _name && isplayer _name) then {titleText ["Revive timer has been exceeded. Respawning at marker", "PLAIN", 0.3]}; sleep 2; _base_1_distance = _pos_leader distance getMarkerPos _Base_1; _base_2_distance = _pos_leader distance getMarkerPos _Base_2; _base_3_distance = _pos_leader distance getMarkerPos _Base_3; _base_4_distance = _pos_leader distance getMarkerPos _Base_4; _base_distance = _base_1_distance; _respawn_base = 1; if (_base_distance > _base_2_distance && !_no_base_2 && !_no_base_2b) then {_base_distance = _base_2_distance; _respawn_base = 2;}; if (_base_distance > _base_3_distance && !_no_base_3 && !_no_base_3b) then {_base_distance = _base_3_distance; _respawn_base = 3;}; if (_base_distance > _base_4_distance && !_no_base_4 && !_no_base_4b) then {_base_distance = _base_4_distance; _respawn_base = 4;}; sleep 0.01; [_respawn_base, _name] execVM "revive_sqf\respawn_at_base.sqf"; true; //file created 080109 // Norrn_SlopeFix // AUGUST 2009 - norrin _pos = _this select 0; _slope = _this select 1; _name = _this select 2; _radius = 0; _found_it = false; while {_slope >= NORRN_max_slope && !_found_it} do { _center_x = _pos select 0; _center_y = _pos select 1; _radius = _radius + 10; _angle = 0; while {_angle < 350 && !_found_it} do { _x1 = _center_x - (_radius * sin _angle); _y1 = _center_y - (_radius * cos _angle); _slope = [[_x1, _y1, 0], 1] call GetTerrainSlope; if (_slope < NORRN_max_slope) then { _pos = [_x1, _y1, 0]; _found_it = true; }else{ _angle = _angle + 15; sleep 0.005; }; }; }; if (_found_it) then { _offset = _name distance _pos; _name setVariable ["NORRN_uncPos", [(_pos select 0),(_pos select 1), _offset], true]; }; //file modified 240809//toggle_dialog_fade if (Norrn_DialogBlink == 20) then { Norrn_DialogBlink = 0; }else{ Norrn_DialogBlink = 20; }; if (true) exitWith {}// Norrn_UncAnimFix // JANUARY 2009 - norrin private["_name","_pos","_center_x","_center_y","_radius","_angle","_found_it","_set_pos","_x1","_y1","_slope"]; _name = _this select 0; _pos = _this select 1; _name setCaptive true; _center_x = _pos select 0; _center_y = _pos select 1; _radius = 500; _angle = 0; _found_it = false; _set_pos = [(_pos select 0) - 500, _pos select 1]; while {_angle <= 350 && !_found_it} do { _x1 = _center_x - (_radius * sin _angle); _y1 = _center_y - (_radius * cos _angle); _slope = [[_x1, _y1, 0], 1] call GetTerrainSlope; if (!(surfaceiswater [_x1, _y1])&& _slope < 0.78) then { _set_pos = [_x1, _y1]; _found_it = true; }; _angle = _angle + 10; }; if (_angle == 360) then {_set_pos = NORRN_respawn_mrkr}; _name setPos [_set_pos select 0, _set_pos select 1, 0]; //file created 080109 // wait_check // MAY 2009 - norrin private ["_reviver","_d","_name"]; _reviver = _this select 0; _unit = _this select 1; _name = name _reviver; _d = 0; if (!isNull _reviver) then { waitUntil {!(_unit getVariable "NORRN_unconscious") || !alive _reviver || !(_reviver getVariable "NORRN_AI_help")}; _reviver setVehicleInit "this doMove (getPos this);"; processInitCommands; if (!alive _reviver && dialog) then { titleCut[format ["Oh no %1 is down, you will need to call for help again", _name], "PLAIN", 1]; Norrn_helper_list = Norrn_helper_list - [_reviver]; }; if (!isNull _unit && alive _reviver && dialog) then { if (!(_reviver getVariable "NORRN_AI_help") && (unconscious_body distance _reviver) > 4.5) then { titleCut [format ["%1 is helping another unit you will need to call for help again", (name _reviver)],"PLAIN", 1]; Norrn_helper_list = Norrn_helper_list - [_reviver]; }; }; _reviver setVariable ["NORRN_AI_help", false, true]; }else{titleCut ["No potential revivers are currently available", "PLAIN", 1]}; if (true) exitWith {}; //Last edited 06/05/09// Norrn_WaterFix - AI disabled // JUNE 2009 - norrin _body = _this select 0; _unit = _this select 1; _water_dialog = NORRN_revive_array select 45; if (surfaceIsWater getPos _body) then { waitUntil{alive call compile format["%1",_unit]}; _name = call compile format["%1",_unit]; {_name removeMagazine _x} forEach magazines _name; _name setPos _pos; deleteVehicle _body; _name setCaptive true; if (_water_dialog == 1 && _name == player) then { titleText ["Choose wash ashore or press escape to close dialog and start at current position","PLAIN", 0.4]; _dialog_1 = createDialog "respawn_button_1c"; }; if (_name == player) then {titlecut [" ","BLACK IN", 0.4]}; }; while {surfaceIsWater getPos _name} do { disableUserInput false; if(!alive player) then { _body = player; _pos = getPos _body; waitUntil{alive call compile format["%1",player]}; _name = call compile format["%1",player]; _name setPos _pos; deleteVehicle _body; _name setCaptive true; }; _name setdammage 0; if (vehicle _name != _name && _name == driver (vehicle _name)) then {_name action ["GETOUT", vehicle _name]}; if (vehicle _name != _name && _name == gunner vehicle _name) then {_name action ["GETOUT", vehicle _name]}; _water = true; sleep 1; }; sleep 0.1; if (!surfaceIsWater getPos _name && _water) then { if (vehicle _name != _name) then {_name action ["GETOUT", vehicle _name]}; _name setCaptive false; if (_name == player) then {titlecut [" ","BLACK OUT",10]}; _pos = getPos _name; _dir = getDir _name; _Offset = 0; _name switchMove r_unc_animation; sleep 1; //player setVariable ["NORRN_pos_x", _pos select 0, true]; //player setVariable ["NORRN_pos_y", _pos select 1, true]; player setVariable ["NORRN_uncPos", [(_pos select 0),(_pos select 1), 0], true]; _name setPos NORRN_respawn_mrkr; sleep 0.1; _water = false; if (_name == player) then {disableUserInput true}; }; _name; //file modified 230809/* Go BACK SCRIPT JULY 2008 - norrin (norrins_nook@iprimus.com.au) **************************************************************************** go_back.sqf */ disableserialization; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; closedialog 0; switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1map"}; case 2: {_dialog_1 = createDialog "respawn_button_2map"}; case 3: {_dialog_1 = createDialog "respawn_button_3map"}; case 4: {_dialog_1 = createDialog "respawn_button_4map"}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; if (true) exitWith {};/* HEAL_ACTION SCRIPT Causes the player to execute the medic animation when the revive action is chosen JULY 2009 - norrin *********************************************************************************************************************** begin heal.sqf */ _wounded = _this select 3; _name = player; _QG_animation = NORRN_revive_array select 54; _medpacks = NORRN_revive_array select 80; _reward_function = NORRN_revive_array select 96; _wounded setVariable ["NORRN_unit_dragged", true, true]; if (_QG_animation == 1) then {_wounded playMoveNow "ainjppnemstpsnonwrfldnon"}; sleep 1; if (_QG_animation == 0) then { player playMove "AinvPknlMstpSlayWrflDnon_medic"; } else { _wounded attachTo [player,[0,1.1,0]]; sleep 0.02; _wounded setVehicleInit "this setDir 170;"; processInitCommands; player playMoveNow "ainvpknlmstpsnonwnondr_medic3"; }; if (_medpacks == 1) then { _var = _name getVariable "Norrn_medpacks"; _name setVariable ["Norrn_medpacks", (_var - 1), true]; if (_name == player) then { _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", _name getVariable "Norrn_medpacks", _name getVariable "Norrn_bandages"]; hint _med_supplies; }; }; sleep 2; if (_reward_function == 1) then { _var = _name getVariable "NORRN_bonus_life"; _name setVariable ["NORRN_bonus_life", _var + 1, false]; }; if (_QG_animation == 1) then { sleep 9; player playMoveNow "ainvpknlmstpsnonwnondr_medic0"; sleep 9; player playMoveNow "ainvpknlmstpslaywrfldnon_1"; detach _wounded; }; if (true) exitWith {}; //020709/* HEAL_ACTION SCRIPT Causes the player to execute the medic animation when the heal action is chosen and resets dammage to 0. JANUARY 2009 - norrin *********************************************************************************************************************** begin heal.sqf */ player playMove "AinvPknlMstpSlayWrflDnon_medic"; player setdammage 0; NORRN_healed = true; sleep 8; if (true) exitWith {}; //file last edited 130109/* PLAYER HEAL SCRIPT - Doc SNKMAN's Amazing Snake Oil Elixir All playable units can heal themselves a x number of times JANUARY 2009 - norrin ******************************************************************************************************* Based on an idea by SNKMAN ******************************************************************************************************* Start player_heal.sqf */ if (!local player) exitWith {}; _unit = _this select 0; _no_of_heals = NORRN_revive_array select 29; _lower_bound_heal = NORRN_revive_array select 30; _upper_bound_heal = NORRN_revive_array select 31; _c = 0; _no_heals_remaining = _no_of_heals; _remove_heal = false; //Probably best not to play with the following code unless you know what you are doing sleep 0.5; //Prompt joining player the number of heals remaining _no_heals = format ["Heals remaining: %1", _no_of_heals]; // hint _no_heals; //Body of the script while {true} do { //While player alive if (alive player) then { //add heal action for players if(_c == 0 && getDammage player >= _lower_bound_heal && getDammage player <= _upper_bound_heal && _no_heals_remaining > 0) then { NORRN_HealAction = player addAction ["Heal", "revive_sqf\heal_sqf\heal.sqf","", 0, false, true]; _c = _c + 1; }; if (NORRN_healed) then {_remove_heal = true}; if(_remove_heal) then { _no_heals_remaining = _no_heals_remaining - 1; hint format ["Heals remaining: %1", _no_heals_remaining]; player removeAction NORRN_HealAction; _c = 0; NORRN_healed = false; _remove_heal = false; sleep 4; hint""; sleep 6; }; if (getDammage player > _upper_bound_heal) then { player removeAction NORRN_HealAction; _c = 0; sleep 1; }; sleep 2; }; //if player is dead if (!alive player) then { _no_heals_remaining = _no_of_heals; _no_left = format ["Heals remaining: %1", _no_heals_remaining]; //hint _no_left; NORRN_healed = false; _c = 0; sleep 2; }; }; //file last edited 130109// init_related_scripts.sqf ArmA2 revive // JULY 2009 - norrin _mission_end_function = NORRN_revive_array select 0; _max_respawns = NORRN_revive_array select 38; _mobile_spawn = NORRN_revive_array select 51; _no_enemy_sides = NORRN_revive_array select 22; _mobile_man = NORRN_revive_array select 53; _mobile_type = NORRN_revive_array select 60; if (isServer && _mobile_spawn == 1) then {NORRN_camo_net = false; publicVariable "NORRN_camo_net"}; if (_mobile_spawn == 1) then {r_ms_base_1 = _Base_1}; // Add Revive Functions Norrn_AIBehaviour = Compile PreprocessFile "revive_sqf\functions\AIBehaviour.sqf"; Norrn_WaterFix = Compile PreprocessFile "revive_sqf\functions\WaterFix.sqf"; GetTerrainSlope = Compile PreprocessFile "revive_sqf\functions\GetTerrainSlope.sqf"; //Add terrain slope function from Warfare thanks to BIS Norrn_SlopeFix = Compile PreprocessFile "revive_sqf\functions\SlopeFix.sqf"; Norrn_CallOut = Compile PreprocessFile "revive_sqf\functions\CallOut.sqf"; Norrn_UncAnimFix = Compile PreprocessFile "revive_sqf\functions\UncAnimFix.sqf"; Norrn_DeleteUncBody = Compile PreprocessFile "revive_sqf\functions\DeleteUncBody.sqf"; Norrn_LeaderFix = Compile PreprocessFile "revive_sqf\functions\LeaderFix.sqf"; Norrn_LivesRemain = Compile PreprocessFile "revive_sqf\functions\LivesRemain.sqf"; Norrn_RespawnPos1 = Compile PreprocessFile "revive_sqf\functions\RespawnPos1.sqf"; Norrn_RespawnPos2 = Compile PreprocessFile "revive_sqf\functions\RespawnPos2.sqf"; Norrn_RespawnPos2AI = Compile PreprocessFile "revive_sqf\functions\RespawnPos2AI.sqf"; Norrn_Call4Help = Compile PreprocessFile "revive_sqf\functions\I_need_help.sqf"; Norrn_AI_throwSmoke = Compile PreprocessFile "revive_sqf\functions\AI_throwSmoke.sqf"; NORRN_DropWeapons = Compile PreprocessFile "revive_sqf\functions\dropWeapons.sqf"; NORRN_load_wounded = Compile PreprocessFile "revive_sqf\load_wounded\load_wounded.sqf"; NORRN_respawn_chance = Compile PreprocessFile "revive_sqf\functions\respawn_chance.sqf"; NORRN_respawn_time = Compile PreprocessFile "revive_sqf\functions\respawn_time.sqf"; NORRN_createBody = Compile PreprocessFile "revive_sqf\functions\createBody.sqf"; NORRN_UNC_CAM = Compile preprocessfile "revive_sqf\cam_follow.sqf"; Norrn_DialogBlink = 0; //======================================================== // Initialise revive script [] execVM "revive_sqf\revive_init.sqf"; // Initialise isplayer script [NORRN_player_units] execVM "revive_sqf\isplayer.sqf"; if (isServer) then { mission_Over = false; publicVariable "mission_Over"; // Initialise mission end script if (_mission_end_function == 1) then {[NORRN_player_units] execVM "revive_sqf\mission_end.sqf"}; // Initialise marker color script if (_no_enemy_sides > 0) then {[] execVM "revive_sqf\marker_color.sqf"}; // Initialise mobile spawn function if (_mobile_spawn == 1) then { if (_mobile_type == 0) then { [r_mobile_spawn_vcl, 0] execVM "revive_sqf\mobile\move_spawn.sqf" } else { NORRN_mobile_man = ObjNull; [_mobile_man, 1] execVM "revive_sqf\mobile\move_spawn.sqf" }; }; }; //create mobile respawn marker if (_mobile_spawn == 1) then {[] execVM "revive_sqf\mobile\mobile_marker.sqf"}; //initialise mobile spawn script if player is mobile respawn unit if (player == _mobile_man) then { [_mobile_man, _mobile_man] execVM "revive_sqf\mobile\mobile_spawn.sqf"; NORRN_mobile_man = player; publicVariable "NORRN_mobile_man"; }; //Camera Options - hoz and mandoble's free cam settings, OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 OFPEC_MouseCoord = [0.5,0.5]; OFPEC_MouseScroll = 0; OFPEC_MouseButtons =[false,false]; OFPEC_camzoomspeed = 1.0; OFPEC_maxzoomout = 400; OFPEC_range_to_unit = 5; //starting dist from target if (_max_respawns == 2000) then {[]execVm "revive_sqf\respawn\init_respawn.sqf"}; if (true) exitWith {}; //Last edited 01/07/09 /* ISPLAYER SCRIPT Checks to determine whether the unit isplayer and resets unconcious variable and deletes marker if player no longer present JULY 2009 - norrin ************************************************************************************************************************************ isplayer.sqf */ if (!local player) exitWith {}; _names_units = _this select 0; _revive_array = NORRN_revive_array; _can_be_revived = _revive_array select 20; _can_be_revived_2 = _revive_array select 21; _units = []; sleep 5; {call compile format ["if(!isNull %1) then {_units = _units + [%1]}", _x]} forEach _names_units; while {true} do { //hint format ["%1", _units]; {call compile format ["if(!isNull %1 && %1 in _units) then {}else {_units = _units + [%1]}", _x]}forEach _names_units; {if (!alive _x) then { _mrkr = format ["%1 is down", _x]; _units = _units - [_x]; deleteMarker _mrkr; };}forEach _units; sleep 1; }; // Load_act.sqf // JULY 2009 - norrin private ["_args","_dragger","_vcl","_wounded"]; _args = _this select 3; _dragger = _args select 0; _vcl = _args select 1; _wounded = _args select 2; r_drag_sqf = false; _dragger removeAction NORRN_loadWoundedAction; if ((_vcl emptyPositions "cargo") > 0) then { detach _wounded; _dragger setVehicleInit "this switchMove ''"; _wounded setVariable ["NORRN_LoadVcl", _vcl, true]; processInitCommands; sleep 1; _wounded setVehicleInit "nul = [this] execVM 'revive_sqf\load_wounded\load_wounded.sqf'"; processInitCommands; player removeAction NORRN_dropAction; }else{ hint "No space left in vehicle"; }; NORRN_load_wounded_action = true; if (true) exitWith {};// Load_wounded.sqf // JULY 2009 - norrin private ["_wounded","_vcl","_group"]; _wounded = _this select 0; if (!local _wounded) exitWith {}; sleep 1; _vcl = _wounded getVariable "NORRN_loadVcl"; _wounded setVariable ["NORRN_unit_dragged", true, true]; _wounded assignAsCargo _vcl; _wounded moveInCargo _vcl; sleep 1; _wounded setVehicleInit "this switchMove 'kia_hmmwv_driver';"; processInitCommands; if (local _wounded) then { waitUntil {!(_wounded getVariable "NORRN_unconscious")|| !alive _wounded || vehicle _wounded == _wounded || driver _vcl == _wounded || gunner _vcl == _wounded}; if (driver _vcl == _wounded || gunner _vcl == _wounded) exitWith { _wounded action ["EJECT", _vcl]; }; if (vehicle _wounded != _wounded && alive _wounded) then { _wounded playMove "BasicDriver"; }; }; sleep 0.01; if (true) exitWith {}; // unLoad_act.sqf // JUNE 2009 - norrin private ["_args","_dragger","_vcl","_wounded"]; _args = _this select 3; _name = _args select 0; _vcl = _args select 1; _crewVcl = _args select 2; _name removeAction NORRN_pullOutAction; for [{ _loop = 0 },{ _loop < count _crewVcl },{ _loop = _loop + 1}] do { _unit = _crewVcl select _loop; if (_unit getVariable "NORRN_AIunconscious") then { unassignVehicle _unit; sleep 0.05; _unit action ["EJECT", _vcl]; sleep 1; _unit setVehicleInit "this switchMove r_unc_animation"; processInitCommands; _unit setVariable ["NORRN_unit_dragged", false, true]; }; sleep 0.1; }; if (true) exitWith {};/* MARKER COLOR SCRIPT This script automatically sets the respawn marker color based on enemy occupation of zone OCTOBER 2008 - norrin (norrins_nook@iprimus.com.au) ************************************************************************************************************************************* marker_color.sqf */ _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _no_enemy_sides = NORRN_revive_array select 22; while {true} do { if (_no_enemy_sides == 1 || _no_enemy_sides == 2) then { if (no_base_1) then {_Base_1 setMarkerColor "ColorRed"}; if (!no_base_1) then {_Base_1 setMarkerColor "ColorGreen"}; if (no_base_2) then {_Base_2 setMarkerColor "ColorRed"}; if (!no_base_2) then {_Base_2 setMarkerColor "ColorGreen"}; if (no_base_3) then {_Base_3 setMarkerColor "ColorRed"}; if (!no_base_3) then {_Base_3 setMarkerColor "ColorGreen"}; if (no_base_4) then {_Base_4 setMarkerColor "ColorRed"}; if (!no_base_4) then {_Base_4 setMarkerColor "ColorGreen"}; }; if (_no_enemy_sides == 2) then { if (no_base_1b) then {_Base_1 setMarkerColor "ColorRed"}; if (!no_base_1b) then {_Base_1 setMarkerColor "ColorGreen"}; if (no_base_2b) then {_Base_2 setMarkerColor "ColorRed"}; if (!no_base_2b) then {_Base_2 setMarkerColor "ColorGreen"}; if (no_base_3b) then {_Base_3 setMarkerColor "ColorRed"}; if (!no_base_3b) then {_Base_3 setMarkerColor "ColorGreen"}; if (no_base_4b) then {_Base_4 setMarkerColor "ColorRed"}; if (!no_base_4b) then {_Base_4 setMarkerColor "ColorGreen"}; }; sleep 3; }; if (true) exitWith {};/* BANDAGE WOUND SCRIPT Causes the unit to execute the medic animation when the revive action is chosen JUNE 2009 - norrin *********************************************************************************************************************** begin bandage.sqf */ _name = _this select 3; //Uneccesary actions removed & drop body added _name removeAction NORRN_bandageAction; _name playMove "AinvPknlMstpSlayWrflDnon_healed"; _var = _name getVariable "Norrn_bandages"; _name setVariable ["Norrn_bandages", (_var - 1), true]; _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", (_name getVariable "Norrn_medpacks"), (_name getVariable "Norrn_bandages")]; if (_name == player) then {hint _med_supplies}; // Set variables _name setVariable ["NORRN_bleedDamage", (getDammage _name), false]; _name setVariable ["NORRN_Bleed", false, true]; _name setVariable ["NORRN_stopBleed", true, true]; sleep 8; if (true) exitWith {};/* BANDAGE TEAMATE SCRIPT Causes the unit to execute the medic animation when the revive action is chosen JUNE 2009 - norrin *********************************************************************************************************************** begin bandage_teammate.sqf */ _array = _this select 3; _name = _array select 0; _wounded = _array select 1; //Uneccesary actions removed & drop body added _name removeAction NORRN_bandageBuddyAction; _wounded setVehicleInit "this playMove 'AmovPpneMstpSnonWnonDnon_healed'"; processInitCommands; _name playMove "AinvPknlMstpSlayWrflDnon_medic"; _var = _name getVariable "Norrn_bandages"; _name setVariable ["Norrn_bandages", (_var - 1), true]; _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", (_name getVariable "Norrn_medpacks"), (_name getVariable "Norrn_bandages")]; hint _med_supplies; // Set variables _wounded setVariable ["NORRN_bleedDamage", (getDammage _wounded), true]; _wounded setVariable ["NORRN_Bleed", false, true]; _wounded setVariable ["NORRN_stopBleed", true, true]; sleep 8; if (true) exitWith {};// JUNE 2009 - norrin _medic_medpacks = NORRN_revive_array select 83; _unit_medpacks = NORRN_revive_array select 84; _medic_bandages = NORRN_revive_array select 85; _unit_bandages = NORRN_revive_array select 86; _medic_1 = NORRN_revive_array select 76; _medic_2 = NORRN_revive_array select 77; NORRN_medic_sup = true; player removeAction NORRN_medSuppliesAction; //Define the number of medpacks player setVariable ["NORRN_medpacks", _unit_medpacks, true]; if (player isKindOf _medic_1 || player isKindOf _medic_2) then {player setVariable ["NORRN_medpacks", _medic_medpacks, true]}; player setVariable ["NORRN_bandages", _unit_bandages, true]; if (player isKindOf _medic_1 || player isKindOf _medic_2) then {player setVariable ["NORRN_bandages", _medic_bandages, true]}; //Prompt player the no medpack and bandages remaining _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", (player getVariable "NORRN_medpacks"), (player getVariable "Norrn_bandages")]; hint _med_supplies; if (true) exitWith {};/* MISSION END SCRIPT Ends mission when all units are unconscious JUNE 2009 - norrin ************************************************************************************************************************************ mission_end.sqf */ private ["_units", "_no_conscious"]; _names_units = _this select 0; _no_conscious = 0; sleep 20; while {true} do { _units = []; {call compile format ["_units = _units + [%1]", _x]}forEach _names_units; _no_conscious = 0; {if (isplayer _x && !(_x getVariable "NORRN_unconscious")) then {_no_conscious = 1}}forEach _units; //hint format ["%1", _no_conscious]; if (_no_conscious == 0) exitWith { mission_Over = true; publicVariable "mission_Over"; }; sleep 5; }; if (true) exitWith {}; /* DEPLOY CAMO SCRIPT norrin, April 2008 *********************************************************************************************************************************** deploy_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; switch (playerSide) do { case west: {"USBasicAmmunitionBox" createVehicle [_pos_vcl select 0, (_pos_vcl select 1) - 2, (_pos_vcl select 2) - 4];}; case east: {"RUBasicAmmunitionBox" createVehicle [_pos_vcl select 0, (_pos_vcl select 1) - 2, (_pos_vcl select 2) - 4];}; case resistance: {"GuerillaCacheBox" createVehicle [_pos_vcl select 0, (_pos_vcl select 1) - 2, (_pos_vcl select 2) - 4];}; }; _vcl setFuel 0; _camo = "Land_CamoNetB_NATO" createVehicle _pos_vcl; _camo setDir (_dir_vcl + 90); _camo setPos [(_pos_vcl select 0) + (sqrt (4) * cos (155 - _dir_vcl)), (_pos_vcl select 1) + (sqrt (4) * sin (155 - _dir_vcl)) , 0]; NORRN_camo_net = true; publicVariable "NORRN_camo_net"; _vcl removeAction NORRN_l_spawn_act; if (true) exitWith {}; /* DEPLOY CAMO MAN SCRIPT norrin, AUGUST 2009 *********************************************************************************************************************************** deploy_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; norrn_mob_mash = objNull; norrn_mob_mash = "MASH" createVehicle _pos_vcl; publicVariable "norrn_mob_mash"; norrn_mob_mash setDir (_dir_vcl + 90); norrn_mob_mash setPos [(_pos_vcl select 0) + (sqrt (4) * cos (155 - _dir_vcl)), (_pos_vcl select 1) + (sqrt (4) * sin (155 - _dir_vcl)) , 0]; NORRN_camo_net = true; publicVariable "NORRN_camo_net"; _vcl removeAction NORRN_l_spawn_act; sleep 2; norrn_mob_mash setVehicleInit "this setVehicleVarName 'norrn_mob_mash'"; processInitCommands; _pos_vcl = getPos player; _dir_vcl = getDir player; if (true) exitWith {}; // mobile_Marker.sqf // APRIL 2009 - norrin _Base_1 = NORRN_revive_array select 13; _mrker_pos = []; if (isServer) then { _mrker_pos = getMarkerPos "base"; sleep 1; _mrkr_ex = _Base_1; createMarker [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColor "ColorBlue"; _mrkr_ex setMarkerType "Empty"; _mrkr_ex setMarkerText ""; _mrkr_ex setMarkerSize [0.4, 0.4]; } else { if (!NORRN_camo_net) then { _mrker_pos = getMarkerPos "base"; sleep 1; _mrkr_ex = _Base_1; createMarker [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColor "ColorBlue"; _mrkr_ex setMarkerType "Empty"; _mrkr_ex setMarkerText ""; _mrkr_ex setMarkerSize [0.4, 0.4]; } else{ if (!isNull r_mobile_spawn_vcl) then { _mrker_pos = [(getPos r_mobile_spawn_vcl) select 0,(getPos r_mobile_spawn_vcl) select 1]; }; if (!isNull norrn_mob_mash) then { _mrker_pos = [(getPos norrn_mob_mash) select 0,(getPos norrn_mob_mash) select 1]; }; sleep 1; _mrkr_ex = _Base_1; createMarker [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColor "ColorBlue"; _mrkr_ex setMarkerType "Flag1"; _mrkr_ex setMarkerText "Mobile Respawn"; _mrkr_ex setMarkerSize [0.4, 0.4]; }; }; if (true) exitWith {}; //050409 /* LANDROVER REMOVE SPAWN ACTION SCRIPT Gives the driver the option to create a respawn base with ammo at position of vehicle norrin, March 2008 *********************************************************************************************************************************** landy_remove_spawn.sqf */ _unit = _this select 0; _unit removeAction NORRN_l_spawn_act; _unit removeAction NORRN_l_remove_spawn_act; if (true) exitWith {}; /* MOBILE SPAWN ACTION SCRIPT Gives the driver the option to create a respawn base with ammo at position of vehicle norrin, JUNE 2009 *********************************************************************************************************************************** mobile_spawn.sqf */ _vcl = _this select 0; _unit = _this select 1; NORRN_camo_reset = false; _c = 0; sleep 3; if (NORRN_camo_net) then {_c = 1}; if (player == _vcl) then { if (!local player) exitWith{}; while {true} do { if (!alive player) then { waitUntil {alive player}; }; _pos = getPos player; if (speed player == 0 && _c == 0 && !NORRN_camo_net && !(surfaceIsWater (getPos player))) then { NORRN_l_spawn_act = player addAction ["Deploy Mobile Respawn Point", "revive_sqf\mobile\deploy_camo_man.sqf", [_vcl], 10, false, true, ""]; _c = 1; }; if (speed player == 0 && _c == 1 && NORRN_camo_net && player distance norrn_mob_mash <= 7) then { NORRN_l_remove_spawn_act = player addAction ["Stow Mobile Respawn Point", "revive_sqf\mobile\stow_camo_man.sqf", [_vcl], 10, false, true, ""]; _c = 2; }; if (speed player != 0 && _c == 1 && !NORRN_camo_net || _c == 1 && surfaceIsWater (getPos player)) then { player removeAction NORRN_l_spawn_act; if (!NORRN_camo_net) then {_c = 0} else {_c = 1}; }; if (speed player != 0 && _c == 2 && NORRN_camo_net || _c == 2 && NORRN_camo_net && player distance norrn_mob_mash > 7) then { player removeAction NORRN_l_remove_spawn_act; _c = 1; }; if (NORRN_camo_reset) then { NORRN_camo_reset = false; publicVariable "NORRN_camo_reset"; _c = 0; }; sleep 1; }; }else{ while {alive _vcl} do { if (!local _vcl || _unit != driver _vcl|| !isplayer (driver _vcl)) exitWith {}; if (_unit != driver _vcl) exitWith { _vcl removeAction NORRN_l_spawn_act; _vcl removeAction NORRN_l_remove_spawn_act; }; _pos = getPos _vcl; if (speed _vcl == 0 && _c == 0 && !NORRN_camo_net && !isEngineOn _vcl) then { NORRN_l_spawn_act = _vcl addAction ["Deploy Mobile Respawn Point", "revive_sqf\mobile\deploy_camo.sqf", [_vcl], 10, true, true, ""]; _c = _c + 1; }; if (speed _vcl == 0 && _c == 1 && NORRN_camo_net) then { NORRN_l_remove_spawn_act = _vcl addAction ["Stow Mobile Respawn Point", "revive_sqf\mobile\stow_camo.sqf", [_vcl], 10, true, true, ""]; _c = 2; }; if (speed _vcl != 0 || isEngineOn _vcl) then { _vcl removeAction NORRN_l_spawn_act; _vcl removeAction NORRN_l_remove_spawn_act; _c = 0; }; if (NORRN_camo_reset) then { NORRN_camo_reset = false; publicVariable "NORRN_camo_reset"; _c = 0; }; sleep 1; }; }; if (true) exitWith {}; /* MOVE SPAWN POINT SCRIPT norrin, JULY 2009 *********************************************************************************************************************************** move_spawn.sqf */ if (!isServer) exitWith {}; ScopeName "r_move_spawn"; _vcl = _this select 0; _mobile_type = _this select 1; _c = 0; _Base_1 = NORRN_revive_array select 13; _Base_respawn = NORRN_revive_array select 36; _no_enemy_sides = NORRN_revive_array select 22; _enemy_side_1 = NORRN_revive_array select 23; _enemy_side_2 = NORRN_revive_array select 24; _mobile_base_start = NORRN_revive_array select 52; _Base_1_respawn = _Base_respawn select 0; no_base_1 = false; no_base_1b = false; _unit = ""; _unit = format ["%1",_vcl]; sleep 5; if (_mobile_type == 1) then { if (isnull NORRN_mobile_man) then { waitUntil {!isnull NORRN_mobile_man}; _unit = format ["%1",NORRN_mobile_man]; _vcl = call compile format ["%1", _unit]; }; }; while {true} do { if (_mobile_type == 0) then { if (alive _vcl && NORRN_camo_net && _c == 0) then { _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; //move mobile respawn marker _Base_1 setMarkerPos [(_pos_vcl select 0) + 4, (_pos_vcl select 1) + 4, (_pos_vcl select 2) + 4]; _Base_1 setMarkerText _Base_1; _Base_1 setMarkerColor "ColorBlue"; _Base_1 setMarkerType "Flag1"; _Base_1 setMarkerSize [0.4, 0.4]; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_1 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_1 setTriggerType "NONE"; r_ms_trig_1 setTriggerActivation [_enemy_side_1, "PRESENT", true]; r_ms_trig_1 setTriggerArea [50, 50, 0, false]; r_ms_trig_1 setTriggerStatements ["this && !no_base_1", "no_base_1 = true; publicVariable 'no_base_1'",""]; sleep 0.1; r_ms_trig_2 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_2 setTriggerType "NONE"; r_ms_trig_2 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; r_ms_trig_2 setTriggerArea [50, 50, 0, false]; r_ms_trig_2 setTriggerStatements ["this && no_base_1", "no_base_1 = false; publicVariable 'no_base_1'",""]; }; sleep 0.1; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_3 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_3 setTriggerType "NONE"; r_ms_trig_3 setTriggerActivation [_enemy_side_2, "PRESENT", true]; r_ms_trig_3 setTriggerArea [50, 50, 0, false]; r_ms_trig_3 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicVariable 'no_base_1b'", ""]; sleep 0.1; r_ms_trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_4 setTriggerType "NONE"; r_ms_trig_4 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; r_ms_trig_4 setTriggerArea [50, 50, 0, false]; r_ms_trig_4 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicVariable 'no_base_1b'", ""]; }; _c = 1; }; if (alive _vcl && !NORRN_camo_net && _c == 1 || !alive _vcl) then { _Base_1 setMarkerPos getMarkerPos _mobile_base_start; _Base_1 setMarkerText ""; _Base_1 setMarkerType "Empty"; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_1) then {deleteVehicle r_ms_trig_1}; sleep 0.2; if (!isnull r_ms_trig_2) then {deleteVehicle r_ms_trig_2}; sleep 0.2; }; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_3) then {deleteVehicle r_ms_trig_3}; sleep 0.2; if (!isnull r_ms_trig_4) then {deleteVehicle r_ms_trig_4}; sleep 0.2; }; //reset enemy spawn variables no_base_1 = false; no_base_1b = false; publicVariable "no_base_1"; publicVariable "no_base_1b"; sleep 1; _c = 0; if (!alive _vcl) then {breakout "r_move_spawn"}; }; sleep 2; }; if (_mobile_type == 1) then { //if (isnull NORRN_mobile_man) then {waitUntil {!isnull NORRN_mobile_man}; _vcl = NORRN_mobile_man}; if (NORRN_camo_net && _c == 0) then { _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; //move mobile respawn marker _Base_1 setMarkerPos [(_pos_vcl select 0) + 4, (_pos_vcl select 1) + 4, (_pos_vcl select 2) + 4]; _Base_1 setMarkerText _Base_1; _Base_1 setMarkerColor "ColorBlue"; _Base_1 setMarkerType "Flag1"; _Base_1 setMarkerSize [0.4, 0.4]; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_1 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_1 setTriggerType "NONE"; r_ms_trig_1 setTriggerActivation [_enemy_side_1, "PRESENT", true]; r_ms_trig_1 setTriggerArea [50, 50, 0, false]; r_ms_trig_1 setTriggerStatements ["this && !no_base_1", "no_base_1 = true; publicVariable 'no_base_1'",""]; sleep 0.1; r_ms_trig_2 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_2 setTriggerType "NONE"; r_ms_trig_2 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; r_ms_trig_2 setTriggerArea [50, 50, 0, false]; r_ms_trig_2 setTriggerStatements ["this && no_base_1", "no_base_1 = false; publicVariable 'no_base_1'",""]; }; sleep 0.1; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_3 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_3 setTriggerType "NONE"; r_ms_trig_3 setTriggerActivation [_enemy_side_2, "PRESENT", true]; r_ms_trig_3 setTriggerArea [50, 50, 0, false]; r_ms_trig_3 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicVariable 'no_base_1b'", ""]; sleep 0.1; r_ms_trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_4 setTriggerType "NONE"; r_ms_trig_4 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; r_ms_trig_4 setTriggerArea [50, 50, 0, false]; r_ms_trig_4 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicVariable 'no_base_1b'", ""]; }; _c = 1; }; if (!NORRN_camo_net && _c == 1) then { _Base_1 setMarkerPos getMarkerPos _mobile_base_start; _Base_1 setMarkerText ""; _Base_1 setMarkerType "Empty"; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_1) then {deleteVehicle r_ms_trig_1}; sleep 0.2; if (!isnull r_ms_trig_2) then {deleteVehicle r_ms_trig_2}; sleep 0.2; }; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_3) then {deleteVehicle r_ms_trig_3}; sleep 0.2; if (!isnull r_ms_trig_4) then {deleteVehicle r_ms_trig_4}; sleep 0.2; }; //reset enemy spawn variables no_base_1 = false; no_base_1b = false; publicVariable "no_base_1"; publicVariable "no_base_1b"; sleep 1; _c = 0; }; /* if (vehicle _vcl != _vcl) then { waitUntil {vehicle _vcl == _vcl}; }; */ if (!isplayer _vcl) then { waitUntil {!isnull NORRN_mobile_man}; _vcl = NORRN_mobile_man; }; if (!alive _vcl && isplayer _vcl)then { waitUntil{alive (call compile format ["%1", _unit])}; _vcl = call compile format ["%1", _unit]; }; sleep 2; }; }; //15/07/09 /* STOW CAMO SCRIPT norrin, April 2008 *********************************************************************************************************************************** stow_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; _ammo_crates = nearestObjects [_vcl, ["ReammoBox"], 10]; {deleteVehicle _x} forEach _ammo_crates; _shed = nearestObject [_vcl, "Land_CamoNetB_NATO"]; deleteVehicle _shed; //reset enemy spawn variables no_base_1 = false; no_base_1b = false; publicVariable "no_base_1"; publicVariable "no_base_1b"; _vcl setFuel 1; NORRN_camo_net = false; publicVariable "NORRN_camo_net"; NORRN_camo_reset = true; publicVariable "NORRN_camo_reset"; _vcl removeAction NORRN_l_remove_spawn_act; if (true) exitWith {}; /* STOW CAMO MAN SCRIPT norrin, AUGUST 2009 *********************************************************************************************************************************** stow_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; clearVehicleInit norrn_mob_mash; deleteVehicle norrn_mob_mash; NORRN_camo_net = false; publicVariable "NORRN_camo_net"; NORRN_camo_reset = true; publicVariable "NORRN_camo_reset"; _vcl removeAction NORRN_l_remove_spawn_act; if (true) exitWith {}; /* VECHICLE RESPAWN FOR MOBILE SPAWN ACTION SCRIPT Respawns Vehicle for mobile_spawn scripts norrin, July 2008 *********************************************************************************************************************************** Name the mobile respawn vehicle: r_mobile_spawn_vcl And put this in the init line: this addEventHandler ["GETIN",{if ((_this select 1) == "driver") then {NORRN_landy_script = [_this select 0, _this select 2] execVM "revive_sqf\mobile\mobile_spawn.sqf"}}]; this addEventHandler ["GETOUT",{[_this select 0] execVM "revive_sqf\mobile\mobile_remove_spawn.sqf"}]; call{[this, 10] execVM "revive_sqf\mobile\vcl_respawn.sqf"} Where 10 in the last line is the time before the mobile_respawn_vcl respawns after being destroyed *********************************************************************************************************************************** vcl_respawn.sqf */ if (!isServer) exitWith {}; _vcl = _this select 0; _respawn_delay = _this select 1; _vcl_dir = getDir _vcl; _vcl_pos = getPos _vcl; _type_vcl = typeOf _vcl; _Base_1 = NORRN_revive_array select 13; _mobile_base_start = NORRN_revive_array select 52; waitUntil {!alive _vcl}; NORRN_camo_net = false; publicVariable "NORRN_camo_net"; _wait = time + _respawn_delay; _vcl removeAction NORRN_l_spawn_act; _vcl removeAction NORRN_l_remove_spawn_act; _ammo_crates = nearestObjects [_vcl, ["ReammoBox"], 10]; {deleteVehicle _x} forEach _ammo_crates; _shed = nearestObject [_vcl, "shedBig"]; deleteVehicle _shed; waitUntil {time > _wait}; _vcl_new = _type_vcl createVehicle _vcl_pos; _vcl_new setDir _vcl_dir; _vcl_new setPos _vcl_pos; _init = "this setVehicleVarName 'r_mobile_spawn_vcl';this addEventHandler ['GETIN',{if ((_this select 1) == 'driver') then {NORRN_landy_script = [_this select 0, _this select 2] execVM 'revive_sqf\mobile\mobile_spawn.sqf'}}]; this addEventHandler ['GETOUT',{[_this select 0] execVM 'revive_sqf\mobile\mobile_remove_spawn.sqf'}];"; _vcl_new setVehicleInit _init; processInitCommands; [_vcl_new, _respawn_delay] execVM "revive_sqf\mobile\vcl_respawn.sqf"; [_vcl_new, 0]execVM "revive_sqf\mobile\move_spawn.sqf"; if (true) exitWith {}; /* ONCONNECT SCRIPT This script gets the current unit status when a player joins the mission JULY 2009 - norrin ************************************************************************************************************************************* onConnect.sqf */ _heal_yourself = NORRN_revive_array select 8; _AI_disabled = getNumber(missionConfigFile >> "AIdisabled"); //missionConfigFile instead of className if (!isNull player && !alive player) exitWith {titleText ["Unit selected is dead please press escape, return to the unit selection menu and choose the same or another playable unit", "BLACK FADED", 5]}; //Need to keep "respawn" and "Boot_hill" markers at least 100 metres appart if (!isNull player && player distance getMarkerPos "Boot_Hill" < 50) exitWith {titleText ["Unit selected is dead please press escape, return to the unit selection menu and choose the same or another playable unit", "BLACK FADED", 10]}; if (!isNull player && player distance getMarkerPos "respawn_west" < 50 || !isNull player && player distance getMarkerPos "respawn_east" < 50 || !isNull player && player distance getMarkerPos "respawn_guerrila" < 50 || !isNull player && player distance getMarkerPos "respawn_civilian" < 50) exitWith { titleText ["Unit selected is unconscious please press escape, return to the unit selection menu and choose another playable unit", "BLACK FADED", 10] }; //Start revive on server for each unit in NORRN_player_units if AI is enabled if (isServer && !local player) then { if (_AI_disabled == 0) then { {if (!isNull (call compile format ["%1", _x])) then {[_x, NORRN_player_units] execVM "revive_sqf\Revive_player.sqf"}}forEach NORRN_player_units; }; }; //Initialise revive script for all units in players group if AI is enabled {if (_AI_disabled == 0 && !isNull (call compile format ["%1", _x]) && (call compile format ["%1", _x]) in (units (group player))) then {[_x, NORRN_player_units] execVM "revive_sqf\Revive_player.sqf"}}forEach NORRN_player_units; //Initialise revive script for players only if AI is disabled if (_AI_disabled == 1) then {[player, NORRN_player_units] execVM "revive_sqf\Revive_player.sqf"}; //Initialise heal script for each player if (_heal_yourself == 1 && !isNull player) then {[player] execVM "revive_sqf\heal_sqf\player_heal.sqf"}; "r_say" addPublicVariableEventHandler { ((_this select 1) select 0) say (commentsBrian select ((_this select 1) select 1)); }; if (true) exitWith {}, /* PUT DOWN BODY SCRIPT Allows players to drop unconscious bodies JUNE 2009 - norrin ***************************************************************************************************************************** Start putDown_body.sqf */ _dragee = _this select 3; _unit = player; player removeAction NORRN_putDownAction; //NORRN_remove_drag = true; r_carry_sqf = false; detach _unit; detach _dragee; _dragee setVehicleInit "this switchMove r_unc_animation"; _unit setVehicleInit "this switchMove ''"; processInitCommands; //NORRN_Dragged_body = objNull; sleep 8; if (true) exitWith {}; //010509// init_respawn.sqf // JULY 2009 - norrin _heal_yourself = NORRN_revive_array select 8; //Initialise revive script {if (!isNull (call compile format ["%1", _x])) then {[_x, NORRN_player_units] execVM "revive_sqf\respawn\respawn.sqf"}}forEach NORRN_player_units; //Initialise heal script for each player if (_heal_yourself == 1 && !isNull player) then {[player] execVM "revive_sqf\heal_sqf\player_heal.sqf"}; if (true) exitWith {};// respawn.sqf // JULY 2009 - norrin _unit = _this select 0; _respawn_position = NORRN_revive_array select 28; _respawn_at_base_addWeapons = NORRN_revive_array select 11; _respawn_at_base_magazines = NORRN_revive_array select 34; _respawn_at_base_weapons = NORRN_revive_array select 35; _respawnAtBaseWait = NORRN_revive_array select 68; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; waitUntil{call compile format["!isNull %1",_unit]}; _name = call compile format["%1",_unit]; _unconscious_body = objNull; _pos = []; sleep 2; _base_weps = []; _base_mags = []; if (_respawn_at_base_addWeapons == 1 && count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { _base_weps = weapons _name; _base_mags = magazines _name; }; hint "No revive"; while {true} do { waitUntil {local (call compile format["%1",_unit])}; _name = call compile format["%1",_unit]; waitUntil {!alive _name || !local _name}; if (local _name) then { if (_name == player) then {titletext["","BLACK FADED", 5]}; _pos = getPos _name; _weps = weapons _name; _mags = magazines _name; waitUntil{alive call compile format["%1",_unit]}; _name = call compile format["%1",_unit]; // Give player weapon and mag loadout they had prior to dying removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _mags; {_name addWeapon _x} forEach _weps; _name selectWeapon (primaryWeapon _name); if (_respawn_position == 2 && isplayer _name || _respawn_position == 3 && isplayer _name) then { if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; closedialog 0; if (_no_respawn_points == 1) then {_dialog_5 = createDialog "respawn_button_1map"}; if (_no_respawn_points == 2) then {_dialog_5 = createDialog "respawn_button_2map"}; if (_no_respawn_points == 3) then {_dialog_5 = createDialog "respawn_button_3map"}; if (_no_respawn_points == 4) then {_dialog_5 = createDialog "respawn_button_4map"}; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; }; if (_respawn_position == 1) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos1}; // Unit respawns at chosen location if player if (_respawn_position == 2 && isplayer _name || _respawn_position == 3 && isplayer _name) then {_respawn_at_base = [_unconscious_body] call Norrn_RespawnPos2}; // Unit respawns closest to leader if not player if (_respawn_position == 2 && !isplayer _name || _respawn_position == 3 && !isplayer _name) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos2AI}; if ((_respawnAtBaseWait select 1) != 0) then { _timer = (_respawnAtBaseWait select 1); _name disableAI "anim"; _c = 1; _name setCaptive true; while {_timer >= 0} do { if (_c >= 1 ) then { if (_name == player) then { _timer_message = format ["You will respawn in %1 seconds", _timer]; titletext [_timer_message,"BLACK FADED", 0.3]; }; _timer = _timer - 1; _c = 0; }; sleep 0.05; _c = _c + 0.05; }; _name setCaptive false; _name enableAI "anim"; }; // Add respawn at base weapons if this option is being used if (_respawn_at_base_addWeapons == 1) then { // Added code for respawning at base with original mission load-out - 260409 if (count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _base_mags; {_name addWeapon _x} forEach _base_weps; _name selectweapon primaryweapon _name; } else { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _respawn_at_base_magazines; {_name addWeapon _x} forEach _respawn_at_base_weapons; _name selectweapon primaryweapon _name; }; }; }; sleep 1; }; /* RESPAWN AT BASE SCRIPT AUGUST 2009 - norrin **************************************************************************** respawn_at_base.sqf */ disableserialization; _spawn_pos = _this select 0; _name = _this select 1; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _max_respawns = NORRN_revive_array select 38; _mobile_spawn = NORRN_revive_array select 51; _mobile_base_start = NORRN_revive_array select 52; _respawnAtBaseWait = NORRN_revive_array select 68; _baseWait = false; _height = 0; _no_base_1 = no_base_1; _no_base_1b = no_base_1b; _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; _r_dialog_1 = ""; _r_dialog_2 = ""; _r_dialog_3 = ""; _r_dialog_4 = ""; _r_display = ""; detach _name; _pos = getPos _name; _offset = _name distance _pos; _name setVariable ["NORRN_uncPos", [(_pos select 0),(_pos select 1), _offset], true]; //Respawn point name for mobile spawn if (_mobile_spawn == 1) then { if (!NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _no_respawn_points = _no_respawn_points - 1; if (_spawn_pos == 2 and _Base_2 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 3 and _Base_3 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 4 and _Base_4 == "") then {_Base_2 = NORRN_revive_array select 14}; _no_base_1 = no_base_2; _no_base_1b = no_base_2b; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (_spawn_pos == 1 && _Base_1 != "" && !_no_base_1 && !_no_base_1b) then { _pos_spawn = getMarkerPos _Base_1; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_1]; if (_name == player) then {titletext [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 1 && _Base_1 != "" && _no_base_1 || _spawn_pos == 1 && _Base_1 != "" && _no_base_1b) then { if (NORRN_r_time_expire) then { switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1map";ctrlSetText [1, _Base_1];}; case 2: {_dialog_1 = createDialog "respawn_button_2map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.1; titletext ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ closedialog 0; //_r_display closedisplay 10004; //_r_display closedisplay 10005; waitUntil {!dialog}; switch (_no_respawn_points) do { case 1: {_r_dialog_1 = createDialog "respawn_button_1";_r_display = findDisplay 99124;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; sleep 0.2; titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; if (_spawn_pos == 2 && _Base_2 != "" && !_no_base_2 && !_no_base_2b) then { _pos_spawn = getMarkerPos _Base_2; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_2]; if (_name == player) then {titleText [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 2 && _Base_2 != "" && _no_base_2 || _spawn_pos == 2 && _Base_2 != "" && _no_base_2b) then { if (NORRN_r_time_expire) then { switch (_no_respawn_points) do { case 2: {_dialog_1 = createDialog "respawn_button_2map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.1; titletext ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ closedialog 0; //_r_display closedisplay 10004; //_r_display closedisplay 10005; waitUntil {!dialog}; switch (_no_respawn_points) do { case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; sleep 0.1; titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; if (_spawn_pos == 3 && _Base_3 != "" && !_no_base_3 && !_no_base_3b) then { _pos_spawn = getMarkerPos _Base_3; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_3]; if (_name == player) then {titleText [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 3 && _Base_3 != "" && _no_base_3 || _spawn_pos == 3 && _Base_3 != "" && _no_base_3b) then { if (NORRN_r_time_expire) then { closedialog 0; switch (_no_respawn_points) do { case 3: {_dialog_1 = createDialog "respawn_button_3map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.1; titleText ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; if (_spawn_pos == 4 && _Base_4 != "" && !_no_base_4 && !_no_base_4b) then { _pos_spawn = getMarkerPos _Base_4; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_4]; if (_name == player) then {titleText [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 4 && _Base_4 != "" && _no_base_4 || _spawn_pos == 4 && _Base_4 != "" && _no_base_4b) then { if (NORRN_r_time_expire) then { closedialog 0; if (_no_respawn_points == 4) then {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; sleep 0.1; titletext ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; sleep 2; if ((_respawnAtBaseWait select 0) == 1 && _baseWait && _max_respawns != 2000) then { _timer = (_respawnAtBaseWait select 1); _c = 1; _name setCaptive true; while {_timer >= 0} do { if (_c >= 1 ) then { _timer_message = format ["You will respawn in %1 seconds", _timer]; if (_name == player) then {titletext [_timer_message,"BLACK FADED", 0.3]}; _timer = _timer - 1; _c = 0; }; sleep 0.05; _c = _c + 0.05; }; }; _name setCaptive false; if(true) exitWith {};/* RESPAWN AT BASE SCRIPT (JIP) AUGUST 2009 - norrin **************************************************************************** respawn_at_base_jip.sqf */ _spawn_pos = _this select 0; _name = _this select 1; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; _height = 0; _no_base_1 = no_base_1; _no_base_1b = no_base_1b; _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; //Respawn point name for mobile spawn if (_mobile_spawn == 1) then { if (!NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _no_respawn_points = _no_respawn_points - 1; if (_spawn_pos == 2 and _Base_2 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 3 and _Base_3 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 4 and _Base_4 == "") then {_Base_2 = NORRN_revive_array select 14}; _no_base_1 = no_base_2; _no_base_1b = no_base_2b; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (_spawn_pos == 1 && _Base_1 != "" && !_no_base_1 && !_no_base_1b) then { _pos_spawn = getMarkerPos _Base_1; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 1", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 1 && _Base_1 != "" && _no_base_1 || _spawn_pos == 1 && _Base_1 != "" && _no_base_1b) then { switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1b";ctrlSetText [1, _Base_1];}; case 2: {_dialog_1 = createDialog "respawn_button_2b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.01; titletext ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (_spawn_pos == 2 && _Base_2 != "" && !_no_base_2 && !_no_base_2b) then { _pos_spawn = getMarkerPos _Base_2; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 2", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 2 && _Base_2 != "" && _no_base_2 || _spawn_pos == 2 && _Base_2 != "" && _no_base_2b) then { switch (_no_respawn_points) do { case 2: {_dialog_1 = createDialog "respawn_button_2b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.01; titletext ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (_spawn_pos == 3 && _Base_3 != "" && !_no_base_3 && !_no_base_3b) then { _pos_spawn = getMarkerPos _Base_3; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 3", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; closeDialog 0; }; if (_spawn_pos == 3 && _Base_3 != "" && _no_base_3 || _spawn_pos == 3 && _Base_3 != "" && _no_base_3b) then { titletext ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (_spawn_pos == 4 && _Base_4 != "" && !_no_base_4 && !_no_base_4b) then { _pos_spawn = getMarkerPos _Base_4; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 4", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; closeDialog 0; }; if (_spawn_pos == 4 && _Base_4 != "" && _no_base_4 || _spawn_pos == 4 && _Base_4 != "" && _no_base_4b) then { titleText ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if(true) exitWith {};/* RESPAWN AT BASE SCRIPT (WATER) DECEMBER 2007 norrin (norrins_nook@iprimus.com.au) **************************************************************************** respawn_at_base_water.sqf */ _name = _this select 0; titlecut ["","PLAIN",5]; _water = false; _zzzz = 0; sleep 3; while{surfaceIsWater (getPos player)} do { _downed_x = getPos _name select 0; _downed_y = getPos _name select 1; _center_x = getMarkerPos "center" select 0; _center_y = getMarkerPos "center" select 1; while {surfaceIsWater [_downed_x, _downed_y]} do { if (_zzzz == 0) then {titlecut ["Your body is washing ashore please wait","BLACK FADED",5]}; sleep 0.01; if (_downed_x > _center_x) then { _downed_x = _downed_x - 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; if (_downed_y > _center_y) then { _downed_y = _downed_y - 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; if (_downed_x < _center_x) then { _downed_x = _downed_x + 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; if (_downed_y < _center_y) then { _downed_y = _downed_y + 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; _zzzz = _zzzz + 1; sleep 0.1; }; }; _body = player; player setdamage 1; waitUntil {alive player}; deleteVehicle _body; if(true) exitWith {};/* RESPAWN COUNTER SCRIPT JANUARY 2008 - norrin (norrins_nook@iprimus.com.au) ***************************************************** respawn_counter.sqf */ if(!isServer) exitWith {}; //Initialise variables for respawn counter if (time < 2) then { {call compile format ["%1_revives = 0; publicvariable ""%1_revives""", _x]} forEach NORRN_player_units; {call compile format ["revive_%1 = 0; publicvariable 'revive_%1' ", _x]} forEach NORRN_player_units; {call compile format ["%1_killer = 0; publicVariable '%1_killer'", _x]} forEach NORRN_player_units; };/* REVIVE_INIT SCRIPT JULY 2009 - norrin ****************************************************************************************************************************** Start revive_init.sqf */ _JIP_spawn_dialog = NORRN_revive_array select 2; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _time_b4_JIP_spawn_dialog = NORRN_revive_array select 17; _max_respawns = NORRN_revive_array select 38; _mobile_spawn = NORRN_revive_array select 51; //run script that creates all triggers required for the revive script [] execVM "revive_sqf\trigger_mkr.sqf"; sleep 0.1; //Variables required for onConnect script and triggers no_base_1 = false; no_base_2 = false; no_base_3 = false; no_base_4 = false; no_base_1b = false; no_base_2b = false; no_base_3b = false; no_base_4b = false; if (_max_respawns == 2000) exitWith {}; onConnect = true; //PublicVariable "onConnect"; not needed, we are local here, trigger will fire anyway sleep 5; if (!isNull player && _JIP_spawn_dialog == 1 && time > _time_b4_JIP_spawn_dialog && animationState player != "AmovPpneMstpSnonWnonDnon_healed") then { // forceMap true; // if (local player) then {hint "Press escape to close respawn dialog"}; titleText ["Choose spawn point or press escape to close dialog and start at current position","PLAIN", 0.5]; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1b";ctrlSetText [1, _Base_1];}; case 2: {_dialog_1 = createDialog "respawn_button_2b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; }; if (true) exitWith {};/* AI ENABLED REVIVE SCRIPT Creates playable units that fall unconscious when killed which can then be revived AUGUST 2009 - norrin ******************************************************************************************************** Start Revive_player.sqf */ private ["_unit","_units","_name","_respawn","_conscious","_group","_leader","_c","_cc","_d","_doMove_time","_respawn_at_base","_dead", "_busy","_unc_unit","_revive_array","_unit_type","_r_marker_side","_revive_units","_marker_pos", "_mrkr_ex","_revives","_revives_remain","_max_respawns","_no_revives","_close_array","_unc_array","_mags","_goto_reviver","_close_unc", "_smoke_rounds","_busy","_round","_bloggs_pos","_bloggs_offset","_sav_pos","_sav_dir","_doMove_time","_water","_body","_pos","_dir", "_offset","_weapons","_magazines","_AI_dismount"]; //Define variables _unit = _this select 0; _units = _this select 1; waitUntil{call compile format["!isNull %1",_unit]}; _name = call compile format["%1",_unit]; // Booleans _respawn = false; _conscious = false; _respawn_at_base = false; _dead = false; NORRN_load_wounded_action = false; r_drag_sqf = false; r_carry_sqf = false; all_dead_check = false; // Arrays _revive_array = NORRN_revive_array; _my_group = []; _revive_units = []; _base_weps = []; _base_mags = []; _near_Objects = []; // Numbers _c = 0; _cc = 0; _ccc = 0; _cccc = 0; _ccccc = 0; _cccccc = 0; _ccccccc = 0; _d = 0; _dd = 0; _ddd = 0; _dddd = 0; _ddddd = 0; _doMove_time = 0; _NORRN_random = 0; _bleed_damage = 0; _total_medpacks = 0; _total_bandages = 0; _blackout = 0; _bonus = 0; _respawns = 0; _respawn_chance = 0; _var = 0; _reviveWait = 0; NORRN_max_slope = 0.78; // Objects if (_name == player) then {unconscious_body = objNull}; _unc_unit = objNull; _goto_reviver = objNull; _goto_protect = objNull; _near_dragUnit = objNull; _near_loadUnit = objNull; _reviver = objNull; GetSlopeObject = objNull; _group = group _name; _unit_type = typeOf _name; _unconscious_markers = _revive_array select 4; _call_out_function = _revive_array select 6; _revive_timer = _revive_array select 7; _goto_revive = _revive_array select 9; _respawn_at_base_addWeapons = _revive_array select 11; _no_respawn_points = _revive_array select 12; _Base_1 = _revive_array select 13; _Base_2 = _revive_array select 14; _Base_3 = _revive_array select 15; _Base_4 = _revive_array select 16; _can_revive = _revive_array select 18; _can_revive_2 = _revive_array select 19; _can_be_revived = _revive_array select 20; _can_be_revived_2 = _revive_array select 21; _medic_1 = _revive_array select 76; _medic_2 = _revive_array select 77; _enemy_side_1 = _revive_array select 23; _enemy_side_2 = _revive_array select 24; _revive_time_limit = _revive_array select 27; _respawn_position = _revive_array select 28; _goto_revive_distance = _revive_array select 33; _respawn_at_base_magazines = _revive_array select 34; _respawn_at_base_weapons = _revive_array select 35; _revive_damage = _revive_array select 37; _max_respawns = _revive_array select 38; _JIP_respawns = _revive_array select 63; _unc_drag = _revive_array select 39; _AI_smoke = _revive_array select 40; _visible_timer = _revive_array select 41; _water_dialog = _revive_array select 45; _enemy_units_1 = _revive_array select 47; _enemy_units_2 = _revive_array select 48; _mobile_spawn = _revive_array select 51; _QG_animation = _revive_array select 54; _load_wounded = _revive_array select 61; _caseVAC = _revive_array select 64; _chance_ofDeath = _revive_array select 66; _medpacks = _revive_array select 80; _bleeding = _revive_array select 82; _medic_medpacks = _revive_array select 83; _unit_medpacks = _revive_array select 84; _medic_bandages = _revive_array select 85; _unit_bandages = _revive_array select 86; _deadSpectator_cam = _revive_array select 92; _drop_weapons = _revive_array select 93; _cadaver = _revive_array select 94; _reward_function = _revive_array select 96; _revives_required = _revive_array select 97; _team_kill_function = _revive_array select 98; _no_team_kills = _revive_array select 99; _AI_disabled = getNumber(missionConfigFile >> "AIdisabled"); //missionConfigFile instead of className if (_QG_animation == 1) then { r_unc_animation = "ainjppnemstpsnonwrfldnon"; }else{ r_unc_animation = "AmovPpneMstpSnonWnonDnon_healed"; }; commentsBrian = ["Brian_Im_hit","Brian_Im_bleeding","Brian_Medic","Brian_Bastards","Brian_Shit_Man_down","Brian_Oh_no","Brian_Fuck","Brian_Fuck_it","Brian_Shit","Brian_Need_help","Brian_A_little_help_here"]; // Respawn marker name of unit _r_marker_side = switch (side _name) do { case west: {"respawn_west"}; case east: {"respawn_east"}; case resistance: {"respawn_guerrila"}; case civilian: {"respawn_civilian"}; }; NORRN_respawn_mrkr = markerPos _r_marker_side; // Create revivable unit array {call compile format ["if (!isNull %1) then {_revive_units = _revive_units + [%1]}", _x]} forEach _units; // Create group array - moved and changed 060509 {if (!isNull _x && _x in _revive_units) then {call compile format ["_my_group = _my_group + ['%1']", _x]}}forEach (units _group); _group_leader = call compile format ["'%1'", (leader _group)]; sleep 2; // Added to respawn at base with original mission load-out - 260409 if (_respawn_at_base_addWeapons == 1 && count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { _base_weps = weapons _name; _base_mags = magazines _name; }; // JIP respawns if (_max_respawns != 1000 && (_JIP_respawns select 0) != 0) then { if (time > (_JIP_respawns select 1)) then { _max_respawns = (_JIP_respawns select 0); }; }; // Set variables if unit local if (local _name) then { // Probably best not to play with the following code unless you know what you are doing // Define global variables for each unit if ( format ["%1", (_name getVariable "NORRN_lives_used")] == "") then {_name setVariable ["NORRN_lives_used", 0, true]}; if ( format ["%1", (_name getVariable "NORRN_unconscious")] == "") then {_name setVariable ["NORRN_unconscious", false, true]}; if ( format ["%1", (_name getVariable "NORRN_AIunconscious")] == "") then {_name setVariable ["NORRN_AIunconscious", false, true]}; if ( format ["%1", (_name getVariable "NORRN_bonus_life")] == "") then {_name setVariable ["NORRN_bonus_life", 0, false]}; if ( format ["%1", (_name getVariable "NORRN_teamkill_punish")] == "") then {_name setVariable ["NORRN_teamkill_punish", 0, true]}; if ( format ["%1", (_name getVariable "NORRN_stopBleed")] == "") then {_name setVariable ["NORRN_stopBleed", false, true]}; if ( format ["%1", (_name getVariable "NORRN_bleeding")] == "") then {_name setVariable ["NORRN_bleeding", false, true]}; if ( format ["%1", (_name getVariable "NORRN_bleedDamage")] == "") then {_name setVariable ["NORRN_bleedDamage", 0, true]}; if ( format ["%1", (_name getVariable "NORRN_dead")] == "") then {_name setVariable ["NORRN_dead", false, true]}; if ( format ["%1", (_name getVariable "NORRN_AI_help")] == "") then {_name setVariable ["NORRN_AI_help", false, true]}; if ( format ["%1", (_name getVariable "NORRN_AISmoke")] == "") then {_name setVariable ["NORRN_AISmoke", [false,""], true]}; if ( format ["%1", (_name getVariable "NORRN_uncPos")] == "") then {_name setVariable ["NORRN_uncPos", [], true]}; if ( format ["%1", (_name getVariable "NORRN_AIReviver")] == "") then {_name setVariable ["NORRN_AIReviver", objNull, true]}; //Define the number of medpacks if ( format ["%1", (_name getVariable "NORRN_medpacks")] == "") then {_name setVariable ["NORRN_medpacks", _unit_medpacks, true]}; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_medpacks", _medic_medpacks, true]}; _total_medpacks = _name getVariable "NORRN_medpacks"; if ( format ["%1", (_name getVariable "NORRN_bandages")] == "") then {_name setVariable ["NORRN_bandages", _unit_bandages, true]}; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_bandages", _medic_bandages, true]}; _total_bandages = _name getVariable "NORRN_bandages"; if (_name getVariable "NORRN_unconscious") then { _respawn = true; _conscious = false; if (_name == player) then {unconscious_body =_name}; _revived_position = true; _pos = getPos _name; _dir = getDir _name; _offset = _name distance _pos; _weapons = weapons _name; _magazines = magazines _name; }; // Get and set existing unconscious markers {if (!isNull _x && _unconscious_markers == 1 && isplayer _name) then { if (!isNull _x && (_x getVariable 'NORRN_unconscious')) then { _mrker_pos = getPos _x; _mrkr_ex = format ["%1 is down", _x]; createMarkerlocal [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColorlocal "ColorBlue"; _mrkr_ex setMarkerTypelocal "Flag1"; _mrkr_ex setMarkerTextlocal (format ["%1 is down", name _x]); _mrkr_ex setMarkerSizelocal [0.4, 0.4]; }; }}forEach _revive_units; // Prompt joining player the no revives remaining if (_max_respawns != 1000 && _name == player) then { _revives = _name getVariable "NORRN_lives_used"; _revives_remain = _max_respawns - _revives; _no_revives = format ["Lives remaining: %1 out of %2", _revives_remain, _max_respawns]; if (_name == player) then {hint _no_revives}; }; if (_max_respawns == 1000 && _name == player) then { hint "Unlimited lives"; }; // Initialise team kill function if (_team_kill_function == 1 && _max_respawns != 1000) then {_name addEventHandler ["killed", {_this execVM "revive_sqf\team_killer.sqf"}];}; // Chance of Death eventhandlers if ((_chance_ofDeath select 0) == 1 || (_chance_ofDeath select 1) == 1) then { _name addEventHandler ["hit", {(_this select 0) setVariable ["NORRN_killer", _this select 1, false]; (_this select 0) setVariable ["NORRN_K_damage",_this select 2, false]}]; //[unit, causedBy, damage] _name addEventHandler ["dammaged", {_this exec "revive_sqf\COD\body_damage.sqf"}]; //[unit, selectionName, damage] _name addeventhandler ["killed", {(_this select 0) setVariable ["NORRN_kh_killer", _this select 1, false]}]; }; if (_name == player) then { GetSlopeObject = "HeliHEmpty" CreateVehicleLocal [0,0,0]; }; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Revive Loop while {true} do { scopeName "Revive_01"; if(!alive _name) then {_respawn = true; _conscious = false;_busy = 0}; _name = call compile format ["%1", _name]; while{!isNull _name && !local _name || isNull _name} do { if (!alive _name) then {waitUntil{alive call compile format["%1",_unit]}}; _name = call compile format ["%1", _unit]; if (isnull _name) exitWith {breakOut "Revive_01"}; if (_name getVariable "NORRN_unconscious") then { _respawn = true; _conscious = false; if (!surfaceIsWater getPos _name) then { _revived_position = true; }else{ _revived_position = false; }; }else{ _respawn = false; _conscious = false; _c = 0; _d = 0; _respawn_at_base = false; _revived_position = false; }; sleep 1.5; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Unit alive while {alive _name && !_respawn && !_conscious} do { _name = call compile format ["%1", _name]; _group = group _name; if (!isnull _name && !local _name || isnull _name) exitWith {}; //add revive action for when player gets in range of unconcious unit if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) > 1 && _name == player) then { _nearest_unit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2] select 1); if (_c == 0 && !r_carry_sqf && (_nearest_unit getVariable "NORRN_AIunconscious")) then { if (_name isKindOf _can_revive && _medpacks == 0 || _name isKindOf _can_revive_2 && _medpacks == 0 || _name isKindOf _can_revive && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _can_revive_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_1 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0) then { Norrn_reviveAction = _name addAction ["Revive", "revive_sqf\heal.sqf",_nearest_unit, 0, false, true]; _c = 1; }; }; if (!(_nearest_unit getVariable "NORRN_AIunconscious") || r_drag_sqf || r_carry_sqf) then { _name removeAction Norrn_reviveAction; _c = 0; sleep 0.1; }; }; if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) == 1 && _c == 1) then { _name removeAction Norrn_reviveAction; _c = 0; }; // Add drag action for when player gets in range of unconcious unit if (_unc_drag == 1 && _name == player) then { if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 3]) > 1) then { _near_dragUnit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); if (_cc == 0) then { if(_near_dragUnit getVariable "NORRN_AIunconscious" && !r_carry_sqf) then { Norrn_dragAction = _name addAction ["Drag body", "revive_sqf\drag.sqf",_near_dragUnit, 0, false, true]; _cc = 1; }; }; if (_cc == 1 && !(_near_dragUnit getVariable "NORRN_AIunconscious") || r_drag_sqf) then { _name removeAction Norrn_dragAction; _cc = 0; sleep 0.5; }; }; if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 3]) == 1) then { _name removeAction Norrn_dragAction; _cc = 0; }; // Carry on shoulder if (r_drag_sqf && _ccc == 0) then { _near_carryUnit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); Norrn_carryAction = _name addAction ["Carry body", "revive_sqf\carry.sqf",_near_carryUnit, 0, false, true]; _ccc = 1; }; if (!r_drag_sqf && _ccc ==1) then { _name removeAction Norrn_carryAction; _ccc = 0; }; // Load unconscious unit onto vehicle if (_load_wounded == 1 && r_drag_sqf && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) > 0) then { _vcl = (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) select 0; _near_loadUnit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); if (_dd == 0 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) > 0 && alive _near_loadUnit) then { _action = format ["Load Wounded on %1", (typeOf _vcl)]; NORRN_loadWoundedAction = _name addAction [_action, "revive_sqf\load_wounded\Load_act.sqf",[_name, _vcl, _near_loadUnit], 0, true, true]; _dd = 1; }; }; if (_load_wounded == 1 && !r_drag_sqf || _load_wounded == 1 && _dd == 1 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) == 0 || _load_wounded == 1 && _dd == 1 && NORRN_load_wounded_action || _load_wounded == 1 && _dd == 1 && !alive _near_loadUnit) then { _name removeAction NORRN_loadWoundedAction; NORRN_load_wounded_action = false; _dd = 0; }; // Remove unconscious unit from vehicle if (_load_wounded == 1 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) > 0) then { _vcl = (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) select 0; _crewVcl = []; _crewVcl = crew _vcl; if (count _crewVcl > 0) then { _unconscious_crew = []; {if (_x getVariable "NORRN_AIunconscious") then {_unconscious_crew = _unconscious_crew + [_x]}} forEach _crewVcl; if (count _unconscious_crew > 0 && _ddd == 0) then { _action = format ["Unload Wounded from %1", (typeOf _vcl)]; NORRN_pullOutAction = _name addAction [_action, "revive_sqf\load_wounded\unLoad_act.sqf",[_name, _vcl, _crewVcl], 0, true, true]; _ddd = 1; }; if (count _unconscious_crew == 0 && _ddd == 1) then { _name removeAction NORRN_pullOutAction; _ddd = 0; }; }; }; if (_load_wounded == 1 && _ddd == 1 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) == 0) then { _name removeAction NORRN_pullOutAction; _ddd = 0; }; }; // Force AI to heal if they are with 4 metres of an unconscious unit if (_dddd == 1 && !(_name getVariable "NORRN_AI_help")) then {_dddd = 0}; if (_ddddd == 1 && _reviveWait < time) then {_ddddd = 0}; if (_goto_revive == 0 && !isplayer _name && (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4])) > 1 ) then { if (_name isKindOf _can_revive && _medpacks == 0 || _name isKindOf _can_revive_2 && _medpacks == 0 || _name isKindOf _can_revive && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _can_revive_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_1 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0) then { _unc_friend = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); if ((_unc_friend getVariable "NORRN_AIunconscious") && !(_name getVariable "NORRN_unconscious") && animationState _name != "AinvPknlMstpSlayWrflDnon_medic") then { _name playMove "AinvPknlMstpSlayWrflDnon_medic"; if (_medpacks == 1 && _dddd == 0 && (_name getVariable "NORRN_AI_help") || _medpacks == 1 && !(_name getVariable "NORRN_AI_help") && _ddddd == 0) then { _var = _name getVariable "Norrn_medpacks"; _name setVariable ["Norrn_medpacks", (_var - 1), true]; _dddd = 1; _ddddd = 1; if !(_name getVariable "NORRN_AI_help") then {_reviveWait = time + 10}; }; if (_reward_function == 1) then { _var = _name getVariable "NORRN_bonus_life"; _name setVariable ["NORRN_bonus_life", _var + 1, false]; }; }; }; }; // AI run AI behaviour function if (_goto_revive == 1 && !isplayer _name) then {[_name,_units] call Norrn_AIBehaviour}; //Medic resupply script if (_medpacks == 1) then { if (count (nearestObjects [_name, ["M113Ambul","BMP2Ambul","MASH"], 5]) > 0) then { if (_cccc == 0 && (_name getVariable "NORRN_medpacks") < _total_medpacks || _cccc == 0 && (_name getVariable "Norrn_bandages") < _total_bandages) then { if (_name == player) then { NORRN_medSuppliesAction = _name addAction ["Take medical supplies", "revive_sqf\medic\supplies.sqf","", 0, false, true]; _cccc = 1; } else { _name setVariable ["NORRN_medpacks", _unit_medpacks, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_medpacks", _medic_medpacks, true]}; _name setVariable ["NORRN_bandages", _unit_bandages, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_bandages", _medic_bandages, true]}; }; }; }; if (count (nearestObjects [_name, ["M113Ambul","BMP2Ambul","MASH"], 5]) == 0 && _name == player) then { _name removeAction NORRN_medSuppliesAction; _cccc = 0; NORRN_medic_sup = false; }; }; // Start bleeding if (_bleeding == 1) then { if ((getdammage _name) > 0.4 && !(_name getVariable "NORRN_stopBleed") && !(_name getVariable "NORRN_Bleed")) then {_name setVariable ["NORRN_Bleed", true, true]; _name setVariable ["NORRN_bleedDamage", (getDammage _name), true]; _ccccccc = 0;}; if ((getdammage _name) > ((_name getVariable "NORRN_bleedDamage") + 0.2) && (_name getVariable "NORRN_stopBleed")) then {_name setVariable ["NORRN_Bleed", true, true]; _name setVariable ["NORRN_bleedDamage", (getDammage _name), true]; _ccccccc = 0;}; if (getdammage _name <= 0.4) then {_name setVariable ["NORRN_Bleed", false, true]; _name setVariable ["NORRN_stopBleed", false, true]}; if (_name == player) then { // Add Bandage wound action if ((_name getVariable "NORRN_Bleed") && (_name getVariable "Norrn_bandages") > 0 && _ccccc == 0) then { NORRN_bandageAction = _name addAction ["Bandage wound", "revive_sqf\medic\bandage.sqf",_name, 0, false, true]; _ccccc = _ccccc + 1; }; if (!(_name getVariable "NORRN_Bleed") && _ccccc == 1 || (_name getVariable "Norrn_bandages") == 0 && _ccccc == 1) then { _name removeAction NORRN_bandageAction; _ccccc = 0; }; // Add Bandage teamate action if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) > 1 && (_name getVariable "Norrn_bandages") > 0) then { _bloggs = (nearestObjects [player, [_can_be_revived, _can_be_revived_2], 2] select 1); if (_cccccc == 0 && (_bloggs getVariable "NORRN_Bleed")) then { NORRN_bandageBuddyAction = _name addAction ["Bandage Teamate", "revive_sqf\medic\bandage_teammate.sqf",[_name, _bloggs], 0, false, true]; _cccccc = _cccccc + 1; }; if (!(_bloggs getVariable "NORRN_Bleed")) then { _name removeAction NORRN_bandageBuddyAction; _cccccc = 0; }; }; if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) == 1 || (_name getVariable "Norrn_bandages") == 0) then { _name removeAction NORRN_bandageBuddyAction; _cccccc = 0; }; }; // Bleeding and blackout if (_name getVariable "NORRN_Bleed") then { if (_ccccccc == 0 && _name == player) then { titleCut ["You are bleeding","PLAIN DOWN", 0.2] } else { if (_ccccccc in [10,30,50,70,90]) then { if ((getdammage _name) > 0.4 && (getdammage _name) <= 0.7) then {_blackout = random 0.2}; if ((getdammage _name) > 0.7) then {_blackout = random 0.4}; if (_name == player) then { titleText ["", "BLACK", 1]; sleep _blackout; titleText ["", "BLACK IN", 1]; }; } else { if (_ccccccc == 100) then { _damage_unit = getdammage _name; _damage_unit = _damage_unit + 0.05; _name setdammage _damage_unit; _ccccccc = -1; }; }; }; _ccccccc = _ccccccc + 1; }; }; // Teamkill function if ((_name getVariable "NORRN_teamkill_punish") == _no_team_kills && _team_kill_function == 1 && _max_respawns != 1000) then { if (NORRNCustomExec2 != "") then {call compile NORRNCustomExec2}; _no_respawns = (_name getVariable "NORRN_lives_used") + 1; _respawns_left = _max_respawns - _no_respawns; _no_left = "You have lost a life for excessive team killing."; if (local _name) then {hint _no_left}; _name setVariable ["NORRN_lives_used", _no_respawns, false]; _name setVariable ["NORRN_teamkill_punish", 0, true]; }; // Revive/reward function if ((_name getVariable "Norrn_bonus_life") >= _revives_required && _reward_function == 1 && _max_respawns != 1000) then { _no_respawns = (_name getVariable "Norrn_lives_used") - 1; _respawns_left = _max_respawns - _no_respawns; if (_name == player) then {hint "You have received a bonus life for teamplay."}; _name setVariable ["Norrn_lives_used", _no_respawns, true]; _name setVariable ["Norrn_bonus_life", 0, true]; _bonus = 0; }; // Prompt the number of revives required for next bonus if (_reward_function == 1 && _max_respawns != 1000 && _bonus != (_name getVariable "Norrn_life_bonus") && _name == player) then { _bonus = _name getVariable "Norrn_life_bonus"; _revives_till_bonus = _revives_required - _bonus; _hint = format ["Revives required for next bonus: %1", _revives_till_bonus]; hint _hint; }; sleep 0.5; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Unit falls unconscious if (_respawn && !_conscious && !_dead) then { scopeName "Revive_02"; _body = _name; _water = false; if (_body == player) then {titleText ["","BLACK FADED",10]}; _body setVariable ["NORRN_stopBleed", false, true]; _body setVariable ["NORRN_Bleed", false, true]; _ccccc = 0; //reset the bandage variable // Get body's current position and load-out _pos = getPos _body; _dir = (getDir _body) + 0.1; _offset = _body distance _pos; _weapons = weapons _body; _magazines = magazines _body; _body setVariable ["NORRN_unc_array", [_dir, _offset, _magazines, _weapons, _revive_damage], true]; _body setVariable ["NORRN_uncPos", [(_pos select 0),(_pos select 1), _offset], true]; _pos = _name getVariable "NORRN_uncPos"; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Chance of death if ((_chance_ofDeath select 0) == 1 || (_chance_ofDeath select 1) == 1) then { _respawns = _respawns + 1; if ((_body getVariable "NORRN_kh_killer") == _body) then { if ((_chance_ofDeath select 0) == 1) then { _respawn_chance = 500; }; }else{ //determine where player hit and chance of survival if ((_chance_ofDeath select 0) == 1) then {_respawn_chance = [_body, _respawns] call Norrn_respawn_Chance;}; if ((_chance_ofDeath select 1) == 1) then {_revive_time_limit = [_body, _respawns] call Norrn_respawn_Time;}; }; if (_respawns == 6) then {_dead = true}; _random_chance = ceil (random 100); if ((_chance_ofDeath select 0) == 1 && _random_chance > _respawn_chance) then {_dead = true}; }; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (!surfaceIsWater getPos _body) then {_body setVehicleInit "this switchMove 'AmovPpneMstpSnonWnonDnon_healed'"; processInitCommands}; // Code added to prevent group leader running code on player leaving server if AI disabled if (_AI_disabled == 0) then { if (format["%1", name _body] == "Error: No unit") exitWith { _respawn = false; _conscious = false; breakout "Revive_01"; }; }; //remove all actions - poosibly give unconscious units a different variable - will remove some checks if (_body == player) then { _body removeAction Norrn_reviveAction; _name removeAction Norrn_dragAction; _name removeAction NORRN_loadWoundedAction; }; // sickboy's code modified by _xeno if (!isNil "T_Server" && !isNil "T_Client") then { if (!T_Server && T_Client && _body == player) then {disableUserInput true;}; } else { if (_body == player) then {disableUserInput true;}; }; if (_revived_position) then { waitUntil{alive call compile format["%1",_unit]}; _body = call compile format["%1",_unit]; }; // added from ACE revive 290409 if (player == _name) then {NORRN_r_time_expire = false}; // If respawn limit has been reached, define unit as dead if (local _name) then {if (_max_respawns <= (_name getVariable "NORRN_lives_used")) then {_dead = true}}; // Vehicle eject fix if (vehicle _body != _body) then {_vcl_pos = getpos vehicle _body; _body setPos [((_vcl_pos select 0)- 5), (_vcl_pos select 1), 0]}; // Anti-water code if (surfaceIsWater getPos _body && !_dead && _offset < 10) then {_body = [_body, _unit] call Norrn_WaterFix}; _pos = (_body getVariable "NORRN_uncPos"); // Anti-slope code _slope = [_pos, 1] call GetTerrainSlope; if (_slope >= NORRN_max_slope) then {[_pos, _slope, _body] call Norrn_SlopeFix}; if (_body == player) then {enableRadio false}; _respawn = true; _water = false; waitUntil{alive call compile format["%1",_unit]}; _name = call compile format["%1",_unit]; _name setVehicleInit "this switchMove 'AmovPpneMstpSnonWnonDnon_healed'; this allowDamage false"; processInitCommands; _name setCaptive true; _name setdir ((_name getVariable "NORRN_unc_array") select 0); _name setPos _pos; // If player is down start camera - moved code 260409 if (_name == player) then {titlecut [" ","BLACK FADED",1]}; if (_name == player && !_dead) then { _bee = "butterfly" createVehicle [_pos select 0, _pos select 1, (_pos select 2) + 1]; [_bee, _pos] spawn NORRN_UNC_CAM; }; // Create marker at scene of unconscious player - moved 060509 as a fix for ArmA report - WARNING: Function 'name' - So-and-so is dead if (_unconscious_markers == 1 && !surfaceIsWater _pos && !_dead && local _name) then { _mrkr = format["%1 is down", _name]; createMarker [_mrkr, _pos]; _mrkr setMarkerColor "ColorBlue"; _mrkr setMarkerType "Flag1"; _mrkr setMarkerText format["%1 is down", name _name]; _mrkr setMarkerSize [0.4, 0.4]; }; // Give player weapon and mag loadout they had prior to dying removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _magazines; {_name addWeapon _x} forEach _weapons; _name selectWeapon (primaryWeapon _name); if (!alive _body) then {deleteVehicle _body}; if (local _name) then {disableUserInput false}; if (_name == player) then {unconscious_body = _name}; _name setVehicleInit "this switchMove 'ainjppnemstpsnonwrfldnon_rolltoback'"; processInitCommands; // Global variables set for the _name _name setVariable ["NORRN_unconscious", true, true]; _name setVariable ["NORRN_AIunconscious", true, true]; _name setVariable ["NORRN_AI_help", false, true]; _name setVariable ["NORRN_unit_dragged", false, true]; _name setVariable ["NORRN_AI_help", false, true]; // Disable AI _name stop true; if (_name == leader (group _name)) then { {if (currentCommand _x == "") then {_x doMove getPos _x;} }forEach (units group _name); }; _conscious = true; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // While unconscious if (alive _name && _respawn && _conscious && !_respawn_at_base && !_dead) then { _name = call compile format["%1",_unit]; _revive_time = time + _revive_time_limit; sleep 0.01; // Revive timer increment _timer = time + 1; _timer_count = _revive_time_limit; while {_revive_timer == 0 && alive _name && _respawn && _conscious && !_respawn_at_base && !_dead || _revive_timer == 1 && alive _name && _respawn && _conscious && !_respawn_at_base && !_dead && time < _revive_time} do { if(!local _name) exitWith {}; //270409 if (_name getVariable "Norrn_respawn_at_base") then {_respawn_at_base = true}; // Call-out while unconscious if (_call_out_function == 1 && _d == 0 && !all_dead_check) then {_NORRN_random = [_name] call Norrn_CallOut}; _d = _d + 1; if (_d == _NORRN_random) then {_d = 0}; // Loll about timer if (!(_name getVariable "NORRN_unit_dragged")) then { if (_d == 0) then {_name playMoveNow "ainjppnemstpsnonwrfldnon_rolltoback"}; if (_d == 22 && count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4.5]) == 1) then {_name playMoveNow "ainjppnemstpsnonwrfldnon_rolltofront"}; }; //AI smoke if (_AI_smoke == 1 && (_name getVariable "NORRN_AISmoke") select 0) then { ((_name getVariable "NORRN_AISmoke") select 1) createVehicle _pos; }; // Revive count-down if(_revive_timer == 1 && _visible_timer == 1 && _name == player) then { if (time > _timer) then { _timer = time + 1; _timer_count = _timer_count - 1; if (!mission_Over && !all_dead_check) then {call compile format ["titleText ['\n\n\n\n\n\n\n\n\n\nRevive Time Remaining: %1', 'PLAIN', 1]", _timer_count]}; }; }; sleep 0.3; // Reviver is within the revive radius and is reviving - unit revived or unconscious unit is taken to a CASEVAC facilty for treatement if (alive _name && _respawn && _conscious && !_respawn_at_base && count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4.5]) > 1 || count _caseVAC > 0) then { if (_name getVariable "Norrn_respawn_at_base") then {_respawn_at_base = true}; // Added for CASEvac - modified 090809 - body must be dragged to CASEVAC, if vehicle - vehicle must be stationary with engine off _caseVAC_check = false; {if (count (nearestObjects [_name, [_x], 5]) > 0 && (_caseVAC select 0) == 1 && (_name getVariable "NORRN_unit_dragged")) then { _MASHvcl = (nearestObjects [_name, [_x], 5]) select 0; if (_MASHvcl isKindOf "LandVehicle" || _MASHvcl isKindOf "Air") then { if (speed _MASHvcl == 0 && _name in (crew _MASHvcl)) then { _caseVAC_check = true; }; } else { _caseVAC_check = true }; };} forEach (_caseVAC select 1); _near_Objects = nearestObjects [_name, [_can_revive, _can_revive_2, _medic_1, _medic_2], 4.5]; _e = 0; {if(_QG_animation == 1 && isplayer _x && animationState _x == "ainvpknlmstpsnonwnondr_medic0" || _QG_animation == 1 && !isplayer _x && animationState _x == "AinvPknlMstpSlayWrflDnon_medic" || _QG_animation == 0 && animationState _x == "AinvPknlMstpSlayWrflDnon_medic")then {_e = _e + 1}}forEach _near_Objects; if (_e >= 1 || _caseVAC_check) then { _reviver = objNull; if (_e >= 1) then { _reviver = nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4.5] select 1; if(animationState _reviver != "ainvpknlmstpsnonwnondr_medic0" && animationState _reviver != "AinvPknlMstpSlayWrflDnon_medic") then {_reviver = nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4.5] select 2}; if(animationState _reviver != "ainvpknlmstpsnonwnondr_medic0" && animationState _reviver != "AinvPknlMstpSlayWrflDnon_medic") then {_reviver = nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4.5] select 3}; // Create var for reviver's name if (local _name) then { _revive_message = format ["%1 has been revived by %2", name _name, name _reviver]; call compile format ["reviver_%1 = '%2';publicVariable 'reviver_%1';", _name, _revive_message]; }; }; if (_caseVAC_check) then { if (vehicle _name != _name) then {_name action ["EJECT", (vehicle _name)]; sleep 1}; _name setVehicleInit "this switchMove r_unc_animation"; processInitCommands; }; // roll unit unconscious onto belly and start the heal animation - if altAnim unc enabled if (isplayer _reviver && _QG_animation == 1) then {sleep 8;}; _name playMoveNow "ainjppnemstpsnonwrfldnon_rolltofront"; sleep 2; _name playMoveNow "AmovPpneMstpSnonWnonDnon_healed"; // Return player to position where they were shot if (_name == player) then {titletext [" ","BLACK", 3]}; _name setdamage _revive_damage; _name setVehicleInit "this switchMove 'AmovPpneMstpSnonWnonDnon_healed'"; processInitCommands; _name setCaptive false; // User's code if (NORRNCustomExec1 != "") then {call compile NORRNCustomExec1}; // Reset unconscious variable _name setVariable ["NORRN_unconscious", false, true]; _name setVariable ["NORRN_AIunconscious", false, true]; // Re-enable AI and radio _name stop false; enableRadio true; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", _name]}; // Increment respawn counter if (local _name && _max_respawns != 1000) then {[_name, _max_respawns]call Norrn_LivesRemain}; // Prompt reviver's name if (local _name && !isNull _reviver) then { call compile format ["player setVehicleInit 'server globalChat reviver_%1'", _name]; processInitCommands; }; // BLACK IN and revive message if (_name == player) then { if (!isNull _reviver) then { _revived_by = format ["\nYou have been revived by %1", name _reviver]; titletext [_revived_by,"BLACK IN",2]; titleCut ["","PLAIN", 0.1]; } else { titletext ["\nYou have been revived by CASEVAC","BLACK IN",2]; titleCut ["","PLAIN", 0.1]; }; }; // Fix for leader [_group_leader, _my_group] call Norrn_LeaderFix; _name doMove getPos _name; // Reset variables _name setVehicleInit "this allowDamage true"; processInitCommands; _name setVariable ["NORRN_AIReviver", objNull, true]; _respawn = false; _conscious = false; if (_AI_smoke == 1) then {_name setVariable ["NORRN_AISmoke", [false,""], true]}; _c = 0; _d = 0; clearVehicleInit _name; sleep 0.1; }; }; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Respawn timer elapses if (_revive_timer == 1 && alive _name && _respawn && _conscious && !_respawn_at_base && time >= _revive_time && !_dead) then { // Unit respawns at mission start if (_respawn_position == 0) then { if (local _name && isplayer _name) then {titleText ["Revive timer has been exceeded. Respawning at base", "PLAIN", 0.3]}; sleep 2; [1, _name] execVM "revive_sqf\respawn_at_base.sqf"; _respawn_at_base = true }; // Unit respawns at closest enemy free base if (_respawn_position == 1) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos1}; // Unit respawns at chosen location if player if (_respawn_position == 2 && isplayer _name) then {_respawn_at_base = [_name] call Norrn_RespawnPos2}; // Unit respawns closest to leader if not player if (_respawn_position == 2 && !isplayer _name) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos2AI}; // Player is dead if timer elapses if (_respawn_position == 3) then {_dead = true}; }; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Respawn at base if (alive _name && _respawn && _conscious && _respawn_at_base && !_dead) then { titleCut["","plain down", 0.1]; if (count(_name getVariable "NORRN_unc_array") != 0) then {[_name] spawn Norrn_createBody}; _name enableAI "ANIM"; _name playMoveNow "AmovPpneMstpSnonWnonDnon_healed"; _name setVehicleInit "this switchMove 'AmovPpneMstpSnonWnonDnon_healed'"; processInitCommands; // Reset unconscious variable _name setVariable ["NORRN_unconscious", false, true]; _name setVariable ["NORRN_AIunconscious", false, true]; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", _name]}; enableRadio true; _name setCaptive false; _name selectweapon primaryweapon _name; // Add respawn at base weapons if this option is being used if (_respawn_at_base_addWeapons == 1) then { // Added code for respawning at base with original mission load-out - 260409 if (count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _base_mags; {_name addWeapon _x} forEach _base_weps; _name selectweapon primaryweapon _name; } else { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _respawn_at_base_magazines; {_name addWeapon _x} forEach _respawn_at_base_weapons; _name selectweapon primaryweapon _name; }; }; // Re-enable AI _name stop false; // Kill unconscious body if (!isNull _name) then { if (_drop_weapons == 1|| _cadaver == 0) then { sleep 2; call compile format ["_body = norrn_dead_%1", _name]; [_body] spawn NORRN_DropWeapons }; }; // Increment respawn counter if (local _name && _max_respawns != 1000) then {[_name, _max_respawns]call Norrn_LivesRemain}; // Fix for leader [_group_leader, _my_group] call Norrn_LeaderFix; _name doMove getPos _name; // Reset medical supplies if (_medpacks == 1) then { _name setVariable ["NORRN_medpacks", _unit_medpacks, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_medpacks", _medic_medpacks, true]}; }; if (_bleeding == 1) then { _name setVariable ["NORRN_bandages", _unit_bandages, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_bandages", _medic_bandages, true]}; }; // Reset variables _name setVehicleInit "this allowDamage true"; processInitCommands; if (_name == player) then { all_dead_check = false }; _name setVariable ["NORRN_AIReviver", objNull, true]; if (_AI_smoke == 1) then {_name setVariable ["NORRN_AISmoke", [false,""], true]}; _name setVariable ["NORRN_respawn_at_base", false, true]; _respawn_at_base = false; _respawn = false; _conscious = false; _c = 0; _d = 0; if (player == _name) then {NORRN_r_time_expire = false}; clearVehicleInit _name; sleep 2; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Dead - all lives expended if (_dead) exitWith { if (local _name) then { if (count(_name getVariable "NORRN_unc_array") != 0) then {[_name, _pos] call Norrn_createBody}; [_name] join grpNull; _name setVariable ["NORRN_unconscious", false, true]; _name setVariable ["NORRN_AIunconscious", false, true]; _name setVariable ["NORRN_life_bonus", 0, true]; _name setDammage 1; _name setVariable ["NORRN_dead", true, true]; if (_name == player && _dead) then { closedialog 0; titleText ["You are dead", "BLACK FADED", 3]; sleep 2; if(_deadSpectator_cam == 1) then { _bee = "butterfly" createVehicle [_pos select 0, _pos select 1, (_pos select 2) + 1]; [_bee, _pos] execVM "revive_sqf\cam_dead.sqf"; sleep 0.1; } else { titleText ["Player is dead. Please press escape, return to the unit selection menu and choose another playable unit", "BLACK FADED", 10]; }; }; _name setPos getMarkerPos "Boot_hill"; _name setCaptive true; }; sleep 5; _dead = false; _respawn = false; _conscious = false; }; sleep 0.1; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if (true) exitWith {}; //Last edited 240809 /* rPRN - Prevents players from standing once they have been revived revised AUGUST 2009 written by HulkingUnicorn modified by norrin and alef ************************************************************************************** start rPrn.sqf */ _name = _this select 0; HULK_UprightAnims = ["amovpercmstpsraswrfldnon","amovpercmstpsnonwnondnon","amovpercmstpsraswpstdnon","amovpknlmstpsraswrfldnon","amovpknlmstpsraswpstdnon", "AmovPknlMstpSrasWlnrDnon","amovpercmevaslowwrfldf","amovpercmevasnonwnondf","amovpercmevaslowwpstdf","amovpknlmstpsraswlnrdnon","amovpknlmstpsraswrfldnon_amovpercmstpsraswrfldnon", "aidlpknlmstpslowwrfldnon_idlesteady02","aidlpknlmstpslowwrfldnon_idlesteady03","aidlpknlmstpslowwrfldnon_idlesteady04","aidlpknlmstpsraswrfldnon_player_idlesteady01", "aidlpknlmstpsraswrfldnon_player_idlesteady02","aidlpknlmstpsraswrfldnon_player_idlesteady03","aidlpknlmstpsraswrfldnon_player_idlesteady04","aidlpknlmstpsraswlnrdnon_player_0s", "aidlpercmstpsraswrfldnon_idlesteady01","aidlpercmstpsraswrfldnon_idlesteady02","aidlpercmstpsraswrfldnon_idlesteady03","aidlpercmstpsraswrfldnon_idlesteady04", "aidlpercmstpsraswrfldnon_aiming01","aidlpercmstpsraswrfldnon_aiming02","aidlpercmstpsraswrfldnon_aiming03","aidlpercmstpsraswrfldnon_aiming04"]; HULK_TrbleAn =["amovpercmevaslowwrfldf","amovpercmevasnonwnondf","amovpercmevaslowwpstdf","amovpknlmstpsraswlnrdnon"]; //hint "hack running"; while {damage _name >= 0.7 && alive _name} do { _an = animationState _name; if (_an == "AmovPknlMstpSrasWlnrDnon" || _an == "aidlpknlmstpsraswlnrdnon_player_0s") then {_name selectWeapon (primaryWeapon _name)}; //hint format ["%1", _an]; if (_an in HULK_UprightAnims) then { if (_an in HULK_TrbleAn) then { disableUserInput true; waitUntil {speed player == 0}; _name playMove "amovppnemstpsraswrfldnon"; if (_name == player) then {titleText ["You are seriously wounded and can't stand!", "black out"]}; sleep 8; titleText ["Go see a medic!", "black in"]; disableUserInput false; } else { _name playMove "amovppnemstpsraswrfldnon"; if (_name == player) then {titleText ["You are seriously wounded and can't stand!", "black out"]}; sleep 5; if (_name == player) then {titleText ["Go see a medic!", "black in"]}; }; }; sleep 1; }; if (true) exitWith {}; //AmovPpneMstpSnonWnonDnon_AmovPknlMstpSrasWlnrDnon/* SHOW MAP LOCATION SCRIPT JUNE 2009 - norrin **************************************************************************** show_map_loc.sqf */ private ["_dialog","_display", "_ctrl"]; _base = _this select 0; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; _spawnPos = []; NORRN_OK_diag_off = false; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; disableserialization; closeDialog 0; waitUntil {!dialog}; _dialog_1 = createDialog "OK_map"; switch (_base) do { case 1: {_spawnPos = getMarkerPos _Base_1}; case 2: {_spawnPos = getMarkerPos _Base_2}; case 3: {_spawnPos = getMarkerPos _Base_3}; case 4: {_spawnPos = getMarkerPos _Base_4}; }; _display = findDisplay 202024; _ctrlmap = _display displayctrl 202001; ctrlMapAnimClear _ctrlmap; _start_pos = position unconscious_body; _ctrlmap ctrlmapanimadd [0.0, 1.00, _start_pos]; // show map location _ctrlmap ctrlmapanimadd [0.8, 0.90, _spawnPos]; // show map location _ctrlmap ctrlmapanimadd [0.1, 0.20, _spawnPos]; // zoom map location ctrlmapanimcommit _ctrlmap; NORRN_r_OK = 1; sleep 0.1; waitUntil {NORRN_r_OK == 2||NORRN_r_OK == 3||NORRN_OK_diag_off}; sleep 0.1; if (NORRN_r_OK == 2) exitWith {[_base,player] execVM "revive_sqf\respawn_at_base.sqf";_base = nil;}; if (NORRN_r_OK == 3 || NORRN_OK_diag_off) exitWith {_base = nil;}; frame = 0.040 0.000, 0 0.040, 2 0.080, 3 0.120, 1 0.240, 3 0.280, 7 0.320, 6 0.360, 5 0.400, 7 0.440, 5 0.480, 3 0.520, 2 0.560, 0 0.680, -1 OggSvorbis>OggSg- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS(eWmy{ƺjnejyv˯ywzrwf0} |W'[*ΟߜU.m/ClųY~깇7ט%B+ry%ԵE݈FrUG s'x0_\z(^dvvaǭζ m { pp+z4ihhˈ'>NZgRT9 tl{l$[y ڟoXGFs;$;f6=>zw orަJ763Ҏ/_Ibw0@=Ewn\?izAV{_CG͵0%Vu $dT8p6 p'Vs,ƞΆ ׆ wͦV9j;[}o}Fdw 漞iZTio9@S];w"$?GV =wxoO95!;`9٦iWmr߅]hS/:ixjʖ$]2uF^d2 %4*Юg|eR'fЍ>z5m;lک^im'Vkv:(<|, gYݖ}aˤogә~c3hW&Y?sɍl_ˢ+^5u`{]w-铆U fSmkr! ZBK:O>yka;M\=Ro~3V26iG$-6Op+ H!ީ)rj/ڷρb lB·4w^윾׳3~ګnLRM9}OK&~Aj%0?Ff?xeƝc nb&2p_ES̘!b'[U--i(ZP`>IpS"跟 >`E4꟝P:C .! 9W囄2Rw^_'nME\9ӿHgvMS\'!e5k ~.; _a\Kx@SAk eQa!b`HӶݠ/BEdP(Z,Nr={P1U4Eʎ|ˊs?ϙ%" R-FQqcn3a' >}h٬(A3"h ӯy7"Nyzy_Qi6<|MgܘیQUX\BJ4MnDN'qE缍YPs˲{byHbKv}yfa٭?yD4)2խYϸl{x[j:-٘WfσdW$( IpT~/OvN!mQ`1?k!h@i:b߽U`d/[q@ZP}oɺaOv,i pÇi%kJsⶊ 8>zrЮ [q>PFyՆD_-(Sb2tb7;2.[[+/Z,5{J$9&ۏ}}^`i3IȠ[A k{kA=-58Fs{=K">"I^jVw:(T;~l/ K:ןsq 1u|v)Cbb!J_o?Cy_Lntj4 o;=Y:hU?I x~ġ_یO~>?:Nzt{>La7YhLZu>{we_M^vVk}«|I5-jMeS}{s[m=@]>yyjmźՅ|be0d$,ZT˽g3<7 F[3gv+ r܌Ytn*9&V&:ה ,~*޷m?54e:CHC-z̫xycϯdzÙ 6)ޜz{^0NᬹH׶Yӕθ`s$eJC:ڧk76}T(>=y:3[FuSS]xu푣Գuk񕿯M1D󉋩۞knz|?jgվ--b}XҐgں_ljYw&_#I`Kz"rXqi}?tp WeOMyo\.Hzq{zq$RRשQk>&h3T1}3zOggS ^- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS. "^x|uW[l~uxldcss۽v [u_-[ wg3Pive=*&0p^urtսOժ$z̝^~ |׉ fo:5Q/m>#O4eYLߗszfI5l%G?mՍ=)?,ܣmnk|gpQuZY=t<5qW +xxgV(o}M-sh8}܌ =van{%[hvn~{}[ۚ?˕\Eq#m|}=s>N}Od3n 8OʵGJVO.̮;68ڗxԒ!g>;o>aMWJC/;PVcѣ߽ŀLH85B[6ּO)7 k0y&t\b 00/vPj20f$0󝌰0j&x$X ˹+)5'KU:Lb-Ɣ@c@9T>Qj=a kqq02&[9颫8 T+>sreƝ{tt~$PTUNb2߃~}ĭ?{oas(rPFgm{tɎ|૏ P!t;sW:(/jɽs?Iu7[Iݕ^SFTk&><4W> W7 ӱUv\zJoKJgpH@;Ol8A`Ckaެ@}pRa,<ԞKNN-SCx![ <9Lgck~VB܆}"S|Pv(ELeMxb?V7fPZ5 gfxroGnO{VBC\v !G}9SF%$nZٻoݽ[{ט|O򑵿<q>">\rY mt=ȸ"xV[Ona:K B=~WZIp=jgKu*sq ~ $ۼ'>=^sԦ[?tY u9'tV_d._=z_H[lvѯͼσi#5W0 _ٱ/|xaswr5 3pk>!`; NJ1bKTi+(C*X&0zQ2g%kllܓSk6n%ڌlv4ײ? i05w` B,Y['T$?>lgĄ6KdMN?ua_љu<듘ZY-sQqֵ7:cЇIӖWRooӄuoi+'^(4N5x:_'l Kx<w:S"?*@YECdZ'kj uց B.0VN?j7LY pZf(/𙧺ުMvoq=9+j[}mn>7A?f4]kƞ _-[3+Q'`L[iyNc נի2bQD(+{سR/K8aFp={3o8:Gmen?o#\(a$HOЅȇnQh>_>6b5KvB)ב@ SdY@D}2R|wa^rė=lH;X6Zsݞ:} D}i+kZ {ĺ=/6Y5`e [ _}2b{h!H 9mӝ}vr:q <*Tt޻}.N'UHu@3LS]=5l9\;ci7#[S0&Wӎ>:K( U-[' wgj:KDi)BTڗ=i2nMj3~JIg~):YmMowk)%f qCVJ61)1f*4eaķ02Fo >/'>o5jz >L> 6F&h No =:29'czw7E>iZM 1<2;D7)b9"ܮOPx NCD:O(Zy}d5*Jw\5菍}fB:W!,@PX@ nQqo(3ax*.?i=5u =Oܺ΢Z*1ARp,Γ߅>Lv)#Z8oۮ4&XA_#R4kSpeF;q"ԥBZmvoQLL >ړ7}@s00 s(FۃmwLxg~is/e%W-3(ZaClr@mpmn@N@¤B'CSyR}^RܿꜦJQ|}s+,W8_7xSt+>ӽ=-^\Y?a!1[Kh>w*r^ `JOc-ͻأ`9v.UhЙ=hY@6#)oɫ+#ESy1s ?@8v|=:$ bM{ž&uɅ,aR\W^V?i? Ȝhy$zZGnՖ[wKIΊsoڲlNP~+eN䶮{[MƤ `%g9WҜ#Iw~ *KgH~hà͓,ֶTcr픠M{eg%M+naTU+fda֡}Z/&?80ZE)]KHʐ{zl]Br 2~?*Έ!3*37')^ǶUQU!h4&z(@p/Ep\%O$1vLmYlZx$yAg7ߞf/]ګ[{nerLVmvt.-^D`75x{I!ܼn f"LݴrsS܍~_73XCdn!t3!֧*&=7ml'>R5 P3_OdkxW)ks43){|gʎrnVSݘgc6喨O4&Xm5{X#6;'5$kuQ%n M`t {X*lBjVb./$wBvn$Z}0Pvb,{h0K.0+E=r_o%x"w?kfY N nu$ m;míBvrftMF3?aM7^e f8k1pzcdʳݹECCΕ?OggS =h- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS- HYdi]vfkswU}qf{unN70ʟK<*x O,SuF?kW~Qށ)@,r)U%C{er8{DPW%MrdyZ@!{{RZrڲp=h^+#*RfVy la_P9_,@ȎU7\|^,׭FHѼޙ bjT&is *I<٩pef_0"(0 t³&H~"f̀ȧZ0 ~oX>8+5 PF/3]o3_D,e.D._|GTwl!UpbkyɮFo>G?E%^di+[?>/wXLm)D|+DK =?q@h8Or)zv[_i#٠HnDbXx2|-' `{'{V]YW#Q;hΐ(k!Z7H8#Ռfr\T25%7y潛ˬ)Q_hQ\ 6%+ܾOjE!6pWʾjNDX@q`_ۥu$c()TFSiW~ @?.,`|eٕ9IHJDD㝫nq~TVjsX%e} Yt>/:ȽS=`S7OWFH)OB*z0xpQ8 A.W w)NaL@ u vmQ-?d h1 n[DU(j|r% tb @gK.nu, yC-XGq# ( 0GavS^kk@{ 1v+J:@έ +1&C٩ɻ݄;q۲-mʕ܀?gE@ٵ÷u wNgo}FK~*0]'A!TK ) Olٹgcj_ *> s6[{WvF>\PuVW `dF6o P6i}e#)g㏎jy~JZ+;R[)%}>w1b&o6ꍰ T~ @[jNN|V&(ɒXdPҧl>nY5P銱6m_^"l 0 td)ȓbY}ۛ$vɴr@X9RP3S)yaj-hO"q?<iʬ?k3<+QJ) e:V#}kJ1ZhN@( zpzjq^?G'ρ|d =HP cebi/E7d^Gٞ1~*ش~)Hψ^K(ϑ/T]S.:$О(Po.!(ͧ@ٺ)Q\C$-oZ2T-2B%T>޲u=ڮjAy`R8h!Hv:;j,(&\aBiՌT2qӣs.@fNTqO.?kbrtlDHr]՛RMɏ؂tϴy6NͤDim|Fq}+foH HBAy( g"36kq叶XoɆ2HwD2U0u!I+.b;(u7GqM M5J rʕ A3zI$X"Q 5Kӝ >^:Zvѿ[X`iH$rZ{oVzqg]PHۛzۊ>#I nRe4v/0$bqiW#@IH8IQn8o 7clh\;*q]oגUW}wrrDI֭]uVѶVh6$99=}?j&-dw+=a)55̈́ww$ |k5ФJ7b . gDn(0J![}RZ!'̔?:1Uũ8Գ2ȜsJ@9Ydho~K uJysMs<6 ~T ]+ *&:`+&(;$KE+ҍ!^+t |]k!,L](% 0bO!GAiBu"@ՄX>Md|N YlF(zK=z6q0" źL଒[ < 6HfW y8-ج@(!• X*D$ZGMaNsz[)^&T 7C X)x@*&8Z7j`TqYU4~J\1gqZ[r@s:p {X×;cй<<As0kb;AT4@?~!t2X9[YO6EhMXIکK{AO ܽZ˝_7 \V sElT5h|X6{윘 Wa9f/lRᜭ'v%7fo|Y?8%]OgܬnyIR9ntkJ53(Oͮu]F<DOͮ<ӊЁ8i}sJjuށ@nt{Nlj2S;W_E{+,M1zLixuݰmnm3}v1,/:(ʤK475\e܇;y9Ɓb+q`ޤr*/UꝪU{ fSg;NXW|2#?ϻ泂4 玢K-ͲͿc20\gW鍇iC]=o?kibyf= 1 -W7 Ľ[dNJ8ht{ UR3|m,__z~\=t3g3}k4t{x9y@&{w߾qeąrtN,mZ8%&6"ˍv'xxI]s2eЧVòPs6틖I]T5t_?6Ʊ] KJɲ5OuODGLڳnS;"A=2E5^EƗvt0n*Yoj~o50yuunF`넴0(b6uS?$ZVeUn,-oOއL0춊]0δ< o[/~u";77yy8n9E zܤ4]7𗧇 6KgZo.?Tn٬uZ-1~F]jT^"Ͻ=ݤ])2}De4nUZZC,Loֺb,iR\/%F/,~hDF*9OM_yL5Ғl$p߱rJ^4ͭZZ"hN.NGR\PpAkԳ FE'[9B}Ls駟!rt $Q yZ|cԞ>\&Vframe = 0.040 0.000, 2 0.040, 5 0.080, 6 0.120, 7 0.160, 5 0.200, 1 0.240, 2 0.280, 0 0.320, 1 0.360, 3 0.400, 1 0.440, 0 0.680, -1 OggS{ ~vorbis>OggS{ 5[- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS){ lCF|wx|{ĪX{{u~zoƤqnqU$U2 咘[Oś;I~gK.^C>n񝓝|Ša~HJ~qm|2)uw/dJΏKbyTgQkhutĀ=b;t)NTW}^ouG7nH;$/TS_ ;PJf7FG]c:#=OVj?CņEƶ\ p"ťМ9~zCf֙Itu= &kI[}-htͫ:"2~'øJ1=^{l֠7e߂Wܫ;CjSX)S]ylU(mGbb8ٍvFVobw{B*ƞ"^sV2OR$l8$pjX4y5 [t)p>q::R31zU(QŰcZj(~n_HBi&MS=9-@|Op{H̓ZFܣ+پ NH'_z㉾վRD%Y_瑇R4a4h͵t#7ߛGwel{S3y jݮ8nF^[uu6EOkvn5OnYb8;h:?+MN he|"ygnM~మX=ML^]m‹5lݡw[ܬ=6әm]7KrUzƵ~ѬZ9_~_6GSzEjwNu|3}~vȯ%ǍoFb?3e6kxml{ڶS\i,BK 2zɸ[:fiof00<^ytY}6Ț_a%}Zb|0ev,!@?ʵhX.ru77ujZ\!F$+{^E=sz)%5쒆|{R^W>.(U1۱l6fƸL6E?VeznHV X.g]4]H]ٙ05߬}9R5mUnJ5(X14V8Xߤ?OڃeL'Ir&! ַLX\U_Di{gۚڝ<a^l9+5?[{÷>vUhQ_9%%uW΋ԿDs۸@bQ"۞MXr5 3"hO=EOJu6?90D'R:fY ]x0Y+OȝŸM/o]bSZ-1kd [xy'/wX3LVW}O٤d}g7>6r' 7 J^1;eP䓠>!QӚms<IĒގRbfƸ;r{ekz[ܾxL2x F55ӕK/ν?>>Y'h7Xv,mS3fl['UOs#1bpuO7 t+/Ӵăorڻ$ʤ۾iZյn.6qc˹~l orf2lydik8 PfNtx{yz!7* pmK6/_[2sIy]~;v^9sWg?qoupg`zoFN ڗ86|uwf k4DMD>^Gjz?5'K{=tN\STP¬flzںpp\5K.m_lLafTvm,- o%I%lJ"JT%NiI K AE‹=7*P?NR*T"}ut`Q{|s?% eε촮T1`*'@&/3u_DaMl9>bqh_lC=>[-KݟR?qF<>}v=d!Fo`7{՚ZX *.?aHׄ]NT˕'S ofPR^"H~7kQ?'ΐoEX 3~m22|=-qPmcPNkvD3-ꏏݳҧKOrh @Ijr^-jg8DEkw=a޵nL vgaܽgaɽ(47P-yr3t}?[o/@[|+\9ƧCg Q,EZ;6g6ծ L&W4_[8_;WޥҒeܥ~mi\8e$8&Ļf[ofJl<~f S j+3RKYٓA;=O\nc:<6G[|Wt1%]K?psѴU\g&GL/;Zt|kBt}w͇v~٫cd:l.*H3+{JՐS?|]j{'ycV1jYB!vkb.赥._ym;zEjU6/ʑS{e(4?wH K1MpD@ΖKj~nHemũ"4@Q{hx)P l7o!ceGOggS@{ @pR qm;[T\0U]f [@v?>"Z~eh%i޼ۿ{^4_s:K}p=OggSD  - vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS*D [3ejiw|[ynn`inq~'@+6`݃ ^A-f+k֛e5|fI>^^/~6 >G1ӷJ3ҌGs.ŷe4I/xEc!:\  svTɿdN6\H黋y/]DW&꽦/ǹLL/Fnm3ٿ {=HPUB&Fݼ_۹ɏqIZ[q)bLKk,_ھ՜<ܳIi;|㓳t1k;yTm"ߓJ-\t-ZuMF/.Y.mZ٣FYP9WaQ;-}X=9;wGӈȿp}'Dk4`Gzeٲ&C{zhu/#eYf3aynح Z?(6o-9)炽jK?{s1McÇ{a_ K1?hu4E݆7_ȹ;ݸd6Ѧ=<ccڒ!h3 T1LN` hU0oc*͚s32'Q'}tQԥRݮ=zᆅ3Ӣۺ#켮)İ! `ssՀ;bb&I,Ҙ~e6Z݉( S2*WWx#v[[Q .af>j|6S0|:i;K5ewq3u^09n]y{s+nFK⭥[;OY{·즶tAž5Lv3zžFeks 4Yr5F#{u*rf#x=8H{7Jx?9$zlg/whNk&7Y37S[T*WZ&!WGUmХ &G-:߲?kZC[qDOh9c;,]t v0٥#ǻqBbJcl &Qލf ~mfK"~O+(C? tǕH)ԙSVdQٙ&p޿-y[&icm컵bS,݅/mߺF;8;}5*5֥vlj5Pn{(׿?zc;cίz"ɐr_3dxa~q_S*O?C 0w!OW ߻6Ruڷf^xuh%豝>T9>Zӟ <v)D}m{s Ta0 7 W=%"ʏ[_$K–]h_}K1}IcD=ʫXk5ߔ#9o)#7"˺(o/cS/X>iIJl¯cUqҚ Pk/VX1 'iһ։t]}t^{bs"Ab{"i[zqq+˶y;.rgB+;~.e@XKJvFL'ɺA`q>w}hbyO"x4SMUr{އy_]Ujdc$03۝R|/}yxΏsN12IJg>iIqi ޟ{sx.Hxd.yToFhwMQfH É  YSy*dpXwkֱ6c70᎝ynow:  ܗz"*: aByjݫK!U>~\ucz9VIC>6O0b 8SEԖxtuE"tzW.H]/ω$Org|mFEZĠI&ҪBV"'a]\ú9Ƽڲmps=.1]J=3 +\Vp_kg~B,,$m4kJ=Z{"ռރϕf/{8:@ EUiFx°vZnemeu=`T f[x.ðe H=YO; t?-5 Zf?XAv{Ȝt2YRad#8a[n״'3g4C'͙ I 'Dّͣ :uU8Up}>)x{,(瞮ckRQ5npR1剹-$w֖\e {hn?~WvAW*$h5P 4S@Vopޅ1b>_̡Nxi'3 7R4ƦNmAxLFc{<n==Bw_eGٱ&SH_ dTBS\+>YQL=IZPJr+cBlw o[".l.- ɝ4gԛX{i Ace7}?3qT@Zkl.zyd×u(r* |uIs_^H'^_SZ } i+l,Fj.MUtQQRlnbx#XF{*Rpwš{zgӦfz8䠯7w|̸Ӵ_g lz3a?uA (1zG?ާs "ׇE ?_Ł8W =Gd|gԑAq sQ [jF-zo6rN5p7CkCMaBH }Θ?}#XycOi|;kFH$%0q"xdtU_%4iRGb*$5lAۇ39X#h#ju(g ,M=?p9M{Hlm%]4FvY %ZR~Q~qk %D?~v^Pˡ?օ^T6Swf`6: gEP,Pæ0* dy!a%N:pA~:RknZuQAVt s5`&K 0.OD5o]H2 A,AS-Ǿ6 dū@#3SvTU>5+xٯu pJ}Aiͮ1?i|93Pʅd13+__jb[)`Y{=T) ,@ ,TH/;쫺'-oPjg#J&`!ӟI`&A܈'YJ&+0>XEEyqQ(?k*j_.j EgkOgv\&9%%7b\C5%`~hr}^QK64d@HY%1rո(%@l|ߌL qͿH.wnL ;WC?Pa :¨:GKa6vzi5(Ez~蟏h[vwN Y=i_{_q`b̬4RiyiСQ#[P ܾƜP J5 ټL B=zϟ,v,D]&KJC}> [xUQЪFyۊUE^߇&:(bs^*[]AxYl}`] Q/A %9Ht+"[Ng7~Ɖa xw>пq2j_5z᫨0ǯks4-*3mS>A0jjk-\qk1Ǔ92n][Cc,0vNVX*@7@ޛGlZw@Lv<@<|,>ۉ0޶H\xTFϧe (VQJ"3wUu>X=:zc̼LcZ2)SY߅oܮdFW-q# ^xjOMm<=>_5$ ]8L۵޻71Diٟ| Ƃ{:,JY+1}&Jl&2?*4b)]v**>(~ /_-ms_D(. (諒4&`{Ο! 7{mϙ 8ﻓ=F!g{1ipþ 흠j&)9h/z|5%K>>AӼ:A{fK?YrtnI"wNDnث1EY㊲où&A ,2@*Ws{$J`$pַ?џ&̎-չfn$bќ2 ٚlɚ;NqDާ(X(̓_ Κ#kg}iVcr.@oO=,cݾ6T^&q}?7EUZg ]ІKMGwmR/,.+PEKh:-B8%Y?'M)w~ɕKzkWhE 7ac^N2j} Hkӱ?6/c\dIS oAuRxgڏJ$,#*<35SB̊z@)u:w 5y:&~ 8:3nDV';sW~{t}PG?-tٯ˂ GkxY=B89i5D do(~` "||> feme2KFwMUڋCtǣI( 13{rKn=(ınI{tjKg]$Z6g&UƑOSڈe x-ˉv'* Vը/-H);1mo+vm;qۢm oFjP~ǯ֮oW>yrfNl=E#`\> Ֆ|0?O񱿣|VwwOݳ:;D'j4iV cG3ͪYMframe = 0.040 0.000, 0 0.040, 2 0.120, 3 0.160, 6 0.200, 5 0.240, 2 0.280, 1 0.360, 2 0.400, 4 0.440, 5 0.480, 4 0.560, 7 0.600, 6 0.640, 4 0.720, 1 0.800, 0 0.920, -1 OggS V)vorbis>OggS U- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS. }Ctvtrdqhbupy\tZ69οg,iS]?MY~zPYp ]SJy{Vb"#V7Т}+ޭ睽x8o17b2>OSm_+g!,nF6wmq Erwql΁;0]| ^JLu/GP2˧rޠ1|E hޗ['{:*MT_>_)(tZEG4}i,QӅ US'OF*o\οL>@icwL @RnѧLʡ9#+49|+=br_P} I/)j5"n}'{>񛀌H$RLzLđt^bbHL7͓CVPe[|+;xGR7~Y}j ^-L8}ﵐR9|< UUݸW:j>D6&wt{g( 2iwRh`]%V 3v˼ ϷtxozOp;X\mjw/ :E?d oQ$ (P:H]>v]B"mohTU3@UkI`D^t*g?nLm2w5tWbª* y^-18X} ㊼1<7Aȷ[:XK\)ptoVuެ@},+gD߾\>Fa ~ڮ~ . *U`3iuH_y@]tg{M^_P;)[.*寛pL#gfZG6.9G=;' ڥNfX!Sꛨ~1G%p /JLx0~4X.@!EApzaȦ ̃@/G@'wR l> ˆ@5I V(ȝDrV(.mS ʛ17=q#U2UL 0`-'c76`@\,̯^09a~Χ7 @)[V: L\9cmcEk)*HAB nPII. FIpF8~M׉1Zp @1`ȓo%lRY2O ; ^yu7@"A.M,Ko Lz_ ҃FVً_p e,u(|V5gGd\qPCPH Llz(\\30^N`ٕ⌗ `Z/P@U. %Eʿ\dzon'J|y3W!rƚr44Q{s@ln7JvN )V8 N*Sd2B +J38Ul~{2J)R!ˎLqE@Gu)G:vtW%|BxBV $5F;kaPm.3tT^n M&s 65nAa[s[O&֢IUD_kA{ɸܿq2 S..a'] op%}~u7 :.D@r IQUnClA&{@/|}=)8U@cUXYKz..K[ےgS ^xԱR}] wpS k.c[I8G>[wԫx@ZBP5 s;Iz1z`0&:(j8't%Fow12;HXj-?Rο BI Sow)IK 1rݕ'O׿AgZ.~s9q='17cTtDĨjR ~;`K} vz_$a ƞ$N+oOFbny |9I>ahRlW1yuy~\)z |q^rPqEhM+`|1WHӛ 1ou,^n˲6 = `$5 `1J]U)z O'؛|o]d|+֞E@0nEC~<)@G{|۟8Nf*R[^ĘFu#rն/-5rUzv=ߦ%G;Uдqcր`DiuM2 #)&3;{`eON:$_}~p;+9KBۆ֪\G}88AVl;hIE㼖n1mJٍ¼)ߦ'V!Q:LK:V]GDad{UG:AR Nܔ p: .RWI@8tddQ<daf&ЄczjY^ۣKMyOuq7}0+si,uSK$D7KNGG'.P_̰o b9:wam2OΑSn7OorHS/rP7O%×w,J*DAET@]\Y471pYrė*UoMToeQU!l28<|>i_-x?FNh-mǓEחCKASۈD*3U?gwH/F,HRůHWb<>xEa4 \BԾ_vlO`ڮ9}uT&eOG\=mmH-TZӥ|7]1| mjZO~|I5z$ PZP? |؂t`IE _*UR `<~COOggS@  qUZ}?UyBqg˫c{4 Da3IIC9Gx}~"TS\6~$< -5y8~A M(6|Twbp,?:J)U(9PkOѵw,jZHe=ٿ#41s1!^7Z>olAV%<:/hI3iC #tWJoӈEC_RVre-M֝P(%t#ak"uz U{bQ^7z _mffgeml#y^qR~+ԇr9 b8$ Hv;TwBG}R&DiTᶳ?ѯ[y-(%œY=uWHb-Ikc3xOUBim +ҩvQޤL KO<wgU_^s`PY~q9Eks)LQ7;;ߛqC2Yn\: -cDK9 1FTK? ͺ)g屘!\VZ=e9 OggSo H-- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS o Txz{xkrwtYrjmvwuj$CGLty*sc?y =X.,=u||?S1?>{w}q>u.RL ujn\|S<D /ngwŦ.翟-b̫`NGQXƼeyԜ\=bF5?+덩~zzibn7}/enk~n.{k) ,O<'-zo0DI*Zģn$A'OwȚ"meɈ|}}0Z45x] эc:ʂDzjgIc` 0DŪ\/RO'ˏAwhs hvQB z1V_eO#q1~-7zdÓT] x9fjύ'&gx'E/RQfΔI@Fex$yޗ:~O\SP q9U+؛>O뺦:*[]rL{3n` IJ)!qZ'Rze߰2O%$=?&\\t9xRx]hGL~RO:(a͘PPD&*7T]r Bں5EX8n*Ll UuO~@`ӡŐ&&svUr1"ܾdr66+;O%'G f5#vMRc?~8gsXbέv#wQVs08Jl<o\p8W0S\ؘ@|K1{{nJ#|~" "J xF1 ,DlrY% 5R/E^kOng}m;w^ \7*.)_Mw@=.ZJlb{kmznw⽒ nmVn nmv#wmQb[WݐS#jmz fd6u>ɮ7A ',ïn>M?QՉ-HID;Ңn/$";m*|`x{(K?, =iy*_n]ktտ~eF; ܞ]" PНt=ȿOpgQLc6Ws&5 +"Q >{llZo/u6y=UmD8eS'BoUg$6voFOR+5:㓟'O4@b}Kj)ɧ46-y!Nb_8=}!8i4H׹j\{3bjg+AL+ҽaD 8JPLޟ|Lθ VM7t dX :[kwծoI•n|c]-\rݿ;dt WYCdS,M|CҺxv~wڗQ722f:yqu,jn>@º\ZH:ZӚ?IOm[Ct,F7GoŎ;N.1Xl ׏/^ȑUHhiFXj~R20fl̢Gw~)P3@rWܱͧsl1Xem y5!h~yM=e%f⺷T+YqEEU,;'ۙвZ~vXɚ1֖/M[;M72u*h5%*6hoCOF_Pa3dX5DI1RFspw8Y:\t|08sRڱsumIͦ\,nLms֗o'Βڙ)rl*&3̴?szt|{g<}`=<6; ,Hѹ:psNͭ[{z$Ϥ ΫKhN|}] D\@ frame = 0.040 0.000, 0 0.040, 4 0.080, 7 0.160, 0 0.240, 1 0.280, 2 0.320, 3 0.360, 7 0.400, 2 0.440, 1 0.480, -1 OggS$ tvorbis>OggS$ kч- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS $ p{{qiqstOnwuqxo{$2@ {_>ͧ&{t!4nH {> 1EV?5*&TKOl%̐&dI_.oOeCsҾ9r]1`&bX l bMXV[#!LgV}CK0W'B-i::ukby" @~}:[9ex${Q3'Q\F,4 ~^wLts)g8Q) Dgp|wFy}EUp<fE(<٘ojXק7t%F I>w6;}aw].WH?w\o|!: qv='>6`}cKdB6_~? 18? xj S4 (]􏴱0?OđT'WA t_6{AƓQkN:jv$P'"SKKקO=YXo[ y 1"5|6jN| ƿiY؀}&/{]|SVf'Y͏.3S]( &֝V]H<F¹Zk)A)ONb%铉vM;Իz2>\EOqC_ǤePyLP;e}Hc&q7|mIb.6*ـ "ڥBxx1!t^ULb &VZLi{k7$)@ɫ&krϭ 9iC@<> k1n5C DS{Puؐ_h ;:\[&#* K>uE8e48 ͙-v8)3|A~ʛ lu飀T,YϊwE#vzVZGw#e]$xm[KsەһSA|_Z.m;e>&9y~̙mpmVfvg Kjͷdqnwۨ+ .d^#sG0HS ;pFh6|ߛK 7Uʃ^oDScq "]V86wp>YY- "bD2kcZ<5z+eҥi(hoqY=jL-q~Iy/üQK؂xjQ?t +oS׾YB +5fDzHS@ƊJD ٠bX6olAL[>=̼8T8@"ȹϩUޗ"J|ak1R0y~7N냝b^d%%SH!w8 1FC*ckwr!s?hΜ~J*#B"K&LZs4ɦx:NwdOBgEu+j1\ |_3iO4BKoUv ^_vO|E ECإ[yXxG1Vʘ "xj⠓:QiT Aaj>quKA.{Zړ[k(v|q!/,TS]rPu&sa>m˜v-It7mg~}qS۽{jPܥӫ{ohJn*xŊ7Ȝl,{I ǫLJPkQu%B-ziv{7WH^DXf0\IfiB? e4н/ɾτؘ ӭS%3,v6gr\kge5K/f/zO~ίsl\_yK/_uO_5mӧO?>y.N'ObQiO9qZ1Fܯgׯ__I_OggS !80- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS@ 9r+smuʇ~ȫasrRuyxy{zvs4ZREQ;sl%rkm/kF zsi0|m䝻;]V(lƽ'&Ƀ?R G::Ӎm㽷2dHMծ- k0t>h5tmz;Kͨb9o%~h{*߱S`#:o>fћAYxփ+gv&}װk|R\ @Z\3BF&o_1}o}m>(Ny)(J]m> 7ZiG|r3^.,L,.|.ZfmmAUC*JIiHUFxhM0[8Gٜ4Bq|!}$28}(9;faSz Ï465Sr0gy5S85_߾0G(і>?3&nRhF/Q4*XSAۿ<̻oښiAڞy;pssEf'hu~ҳ˿c86juISRbᆟt|3m0}@ʤ^Ag#cwq\:6!N ;,Lr/m>hM59c𩆞f]Yޥ)E wNDix˹]5pT~UT>ط]^(|]7ab#{xeWTz }%Qv1wue?Ltǽ9ѿ,;Ͽɑ m 5j>][G\`C0T.%j$Hclzܐ궵o}u_̶K\suN@CD]?~Vs82݈S-*jcfn ą7uҟ< ࿷ "pvPV?W63PﯛѦ0KO [IM4 lFQb'Jam /ݚ5ijRf8JNzVX;F_Eèɽ;}$@Pڥ?h}3$-͍ۜE:j,.5K 1{p,$jMN<'𻿲?f~*܏NNH% b\n`y:aS;˾uW45IE؏Ok}mYwzjj`4hTL6ۼξm @6P@YǦD_om@>Z3ƎTR˾t6];IEO?ՈFB )66^ ^49Q5}B٬M3^?+Lř9=I L}uKǍl~96=[rGW8ma/$-y_.]4,C5㮯>=v׿ə-Ο.g~ghq#3͚C33;qbult%YGBYw  zh7Lbahŋ'3LkVJD? &v_mgmtoa܃Y4f|>z鳡kP;zԊj9iŏ$|1heof/>y_J)Zvz-}w"M{i™H i}*O޿6/Bw||>4crw;;V$nO@o'|yC?|65u&ra_Iw w8sS]އ/ڥ-zߕ ߩ^'OIsg?+A3,]/s ͍XBu; ̀i]]k8i5ﳯ Ʀf|_Ҥ\~۞"gxm7?g,ӢbvJƠ>V"08iI<ۺYtCWޘm[z}?ʜ2I>}j" unTNN=7WuZeS+{A?%K/t'6=Ojmώ^+ino\g^v;.N!ftۘ[Z )hf&0C[6£^F'?ZcOg;s.Fov'r8ufzʱzbffN0}FNLy\t&Ů/<XQL~2YZ\I֫"]l'CZ"MO.mc^YRO2;30zFܑv[VHjd ƍ[!)w#iR Bbrr1;upNѤI_b[\+1N˥pX'#s5M8YH[4{b.>v{g6hVf_tǷ=ܿy~|˷k)RBxr3 Q:O<5 Ard9I+Ď:N9e- frame = 0.040 0.000, 0 0.040, 1 0.080, 2 0.120, 1 0.160, 3 0.240, 2 0.280, 1 0.360, 2 0.400, 4 0.440, 3 0.480, 6 0.520, 5 0.560, 3 0.600, 4 0.640, 7 0.680, 4 0.720, 2 0.760, 0 0.920, -1 OggSd ̇9tvorbis>OggSd 7- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS.d L_F[azvrsu2=t0G` /Klm> vY9AtߴӽxUzfgԝ'k6͐35c_oLa{oŒnx&?ӊn\1I*c+vݨzX1$韩c-pHs'i_a6O=C>PFyנW7z|.#}ݘyՊs!eqٿ+2IkB{hn$?{6/;JcRb(pMHU`kFLhE* P7Xͳ}~utw,눨=e8JNͽ.ް6΢ϩK'ƹ"[z˱=3P~Q++<tr%ՋUjbkH[-}WSPJ홤)P@*2;?@荫>ݿ\H0 й{-{6[lC@K3uԜp)>%[M=oѦ~;qM?^%!q?.)8< VlMI"4Uw]w@B0Y0Fff0@:$ K,`\'Om Ȼ2yRU@6z/kWж R!jN\.31}ꧧ_yW Xz'vހ9&VzЋ5EZO3@>潤`w L{Xvz @?^nk* gz*UJη nDVbw8}z&:'^:ךen`yT LkP P1*Ӿ/b}NCUO8Y/w7"` 5\گ8WPYsD+Lkguo!7[wmD*'^u}`=2{%8lJgV^ u^Z;>l'@!HP=])ǒ@N=9%k!75KTq sE* Fj7DcϭDh\@ooPڿLyzKʝ\h76K œ >.2yW|{zO({Q|32j>3rPOIwb?-M Xip|䩞>ޞ7;kӊMg70]8-4y"Q gΥu?t"L46]d]{ac*;8e>]儾Ok}:`Բ%~yw>D${#f_h`(i~)1C¤Cb(I /W{)mQ1aH[񍻴O{DV o0rDBzLminҊnIsj/.c[2vM?wA. n<%Aؐͳ1Nv]FG`˅ٺAmzc@Ժ([`昱3iCFP t7Lc P.@ytW^>Qr֬9-W}$蝓V'oz(qAɓuH||wo140܆B<:Ej<uefe,'f}N*@9PAQW]^)q'2uخ(<˗͒,"Mc,T@=9qc4_G5vD6V/^| #7Bi70aYC a ݂^avK$+.{Z(.t=a?w j݃pon~/-B.du^[!E w\QG®U[:gE w^@Gb펶Px'"*XG|yhq~n+Bdϧ__m\fg^)N~` Bwt/ HDzؽ_>"r3$j)"dڛ~$>Q/5{X"a _- QF84S?_N0.2pa'axS(Cp .gWJBv\e 8fL&L@~ "?8 ~el#%_2EwTp~[ >I[^y \" .EFjKeV 5ѬXVp!5( <>)q98cP#qxU_/bdPEm4SWU,>4м$e:(l{^뻞oty/h 0 `GM=RSF J"e}9oA8ppX (9ժ&WڶTAja~KHG.2PA P@_ 7J&@{K~ʛyU-7~ co @ G~)E67*łz)esOL@d,Da$/+Sܲi#%yҗ!apZ-[F<*PX9*N UT( ^zGrٴ;ە0{v,*I j~V8j P$О)T@rY{_E`~W0q]];Q#.a;P:o|Yk*Ց8BoyV#Ƣ~ˤ8>[fDQǭOZ#mf[ꁝvR֞i53Vw̯3}XJӕGWvNѕ&ό6gZJfDZv-me`DWs,o`6 v, ^v, @# X9mټM@}Rl"C(׵ zuv^[dgNvgЭ-.!$XfdK6ZZR}V3=.'p),+M5s"}.ժXq= ^f駭ҭ[CbgsG˓ԣo/"F 6IYb Tbu7.-kH&V+wXx|թmk6wsk= 422⵫:QZkXH;׍~@')y+ܲ]#7)F8~)4]~nD~jA{%^cV>=x5 uux@B}NT7f ](MQ#Ԓm*[94hg)WFc*n7dc +&Sͺa 5; !km_qc|uor/(wbtxhc?)&C(l#G|5& ND=hoU=֝?]!["oݖ][6sg*Fh6ڶ{q[鴊LJzv#/ s䩾_P+a,_uΞ7M gW'WLM-c1n6O>ZEonLQߓ; v3{H[g$}l[fh ;+} )ڧAg ܯ6N-"4*4KHo-jl[j-+-J+{*|k?zU~Xҭ->R˧ĩZ_gs̯#RAυlԤ_.!F7Ho1<ÞPWBi6y55~!.O^yy >GqsCߡL/qr:?_ƉI\3i;&c(9.󯸯)ĈG,筸!5xv%hA'^z `H0z81*P|^y&>zIGb||nͻ"dž,!';Q=K/d bسD?βkKB.,S_gQ /`T5~mframe = 0.040 0.000, 0 0.040, 1 0.160, 3 0.240, 1 0.280, 3 0.320, 5 0.360, 3 0.440, 7 0.480, 4 0.560, 0 0.600, 1 0.640, 3 0.680, 1 0.720, 2 0.760, 1 0.800, 2 0.840, 3 0.880, 4 0.920, 5 0.960, 1 1.040, 0 1.120, -1 OggSIXc.!vorbis>OggSIn- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS+Ijwy_rv{xu\qqp;PBP!wc]KVlNHgnx/n#R2>¹F~i{5K܆\5%kefzyJw uuC? {պPPu:a5Z~2>7=\ޣ_c2ϗ]۽kν#G,oA|Տgv IzW^a` @jo}lV7Ųq#SAa)Cgw/Py t":ru1cl)Kx[U]^{~zPNCOaIСt8-ӻ+2M\cvvRN\5~>*|' R3)pBfvRJqZ 1EB':27╢=x(8~lM51d,*)"N(%^ ~lOO:\ h5'̀o~DB1)1 ?r{@X4ٶ<@|smm@zrG*D$n57-HQ.\ 1Ä`Qx1Ɔr94q ygw7?JxcDPn DZVMwI|V"i~$vSFN#!iU K.=Ҍm± h5V>uh{rXLZ4Xs9'cvqyfz2*!>uJ|-$1 q̯"%³wOANٱl=qEu!<=8XE|We[Tԡ8{ uJHrښf{t]Շ?܁a`@v@'ۮ3V6wQ*#TM?}a%P9T4E粊q( Ͽ @]~i߳Xrd-@{ο٪Hr%IM|;-5T*+h4s&~{u2 \ H)$$Տ 0R1O5 Sڊ, !&@scp'Q$8q~~dRڀIc{fPXVW4GC(wh2m_ѯC;J ے섮[]jÿ̺G rL '@~>W2N`/rۇx\w)@>HG_ȳgy!\6@Duc(*|OC{  K al8ts)_՟FѬvo IzS2umq0=}c ~>9.L.ӂ ƽ֓@sP fYTpt|#)p -n(2_)T8K0 ) $pF|1R:>-ᡵvz_`ފ[-?ɮ,8[dMT1n =w4dVJa"sz9ʭ $*:OSʞi[=[ vWj;5B{ޚ|דש5noJ#]Dշq{8|ҫ:q6 VT>o~L:s/'~=k|{5 M;?7׋<?{Qu.^~5׹yD@׶%TƱ %KTUmu$faGt4h9@wdN&F0\:҆o+Lۗ-f& TʕF*ë#Eʑ5nxEwzOd7Nt⦂4ۆw=qy#N/-wǦ9q+޳5z6Ȟ|靾]xu=tRsU<5,I{== ?>4"1,鼹oY8Pu"OܟվWBN%ˬɜ|r{.?J>{oIɹn=f6SIc".ԛ.\*f~% vƣ0ckTs/w٢^~6}(%L&~p 6!c B7vc{uIԒ;! '^5zoi QǺ ~_̒ ҧe$_PBՙ<+ +3 7c7m-I'G˗(O ^W 1w$&!lj=_j{fR.3eVOyUf :)ڙ"+ {]-N$ "[v^Hyг~M?zrp,5GC"H\۴0)ύce1nW/ n;BܝLaLghNdz۾yQ4ԡoWiPdU{JhS"iuWr>mcIm<9 ܱᛃ:>$Mm^މqʯ:fqVՄfzpD(:CYףjIB,{1wG]r/yciJ`@rS\yphd'PyYW|2ßh> n=D4fz$s4 ? Ё] o "ܓ7-RKv ٹ@Np3c ,fF?=_73Xsk)Lz#1 Zi[%elҷ~Q܌O_Kpt0;y%h|f8n=3پ TOD$B8ɸ$TkoC } Z>ZPJqLNT `^uƗCW`9\F{L׷:a%PyuVڽm)kqWdzo ^~[a]/\D'å".Bȩr؜Nq=.@usקTu$ @QA|p39lI❲Xm ;Ԣ|vSOggS`I^"ٛf%z΅ _:zd++۾ 9- \(@܄J b{ Fw_;-[?@.<-K^"ߒ/)"O%.y:6(*T@Ť8C\8;鶆h$3XQhe+ lt?9): cog@ dCJX.;@Eh_RR-)P_JnZ;k&`@@Ð*{YΞCx_+^e1n{cM"@\GO}[EV%g*2p9vOAz#^¢ gkW@g 05؅ x)kB t qWQ\p@r#cgfFi]~uT}8:%C|W- **> ϧl^a}}t?/n-#EhEޚӾ[|ˏH76V؃#z@8TOt @"W~ PhZ=DgR<sR`z | ԐEs $XpfR@tG}C 3I|m3}U$LߙopG&ʳP>W#e/O`OZ7h`BAENϴG`zwYwE["vfkX'epX ;3vY`-Dl漅,th۫7hP_oUc;g>'9^f>Z-Vk*ny^sx;:~}CC1Ilֱh*'܈Oҵ%M3ZPR(.F|vÉDʴh;̈闢^vc]8~B-D@V/侩zc$#b;c ֈub1jHٸp̕:s=/pu-kqM*pe N"Y \ uՎ Q ŪeYf׻~cǾ{H*˶L~p 腫NK61Ji=Eegݚ^JA>ϱJzLcZ.-ޠ1ɹcu4f~s8J *D?}zi(̓ځ($k35:dKV+֌9{'XJ^~\27]@gPoݖq>Kjۥ)'ӏ5u d-.]5j!NZQǽ"9~J[3pVDO.%~ڹ\،f]5#봿9}pN4Ɣ~Ҝ ^ Tվծn-XϯnѼq@n]_R|sPξ5S44(qI\*tDQЍNݜ`U潺+1M&@#J8v>KiC:5N?|ΤD*/އEiҮ-V͋mCoṡzms1Gډ^5vAдg`& # b^nEՓ_9xS{77OȚk051eYQq"R*>/E[s|噄,Fyk>Uoæ3xgcdGmi?'|xp{OɱcN-_ܨ_1"uBA%(b<Iuj J\ouF-<j= +@cᔉ'x>}$_n% EqYHX/* TEAM KILL PUNISHMENT SCRIPT This script automatically decreases the revive count of players that team kill JUNE 2009 - norrin ************************************************************************************************************************************* team_killer.sqf */ _killed = _this select 0; _killer = _this select 1; _ally_side_1 = NORRN_revive_array select 42; _ally_side_2 = NORRN_revive_array select 43; _ally_side_1 = call compile format ["%1", _ally_side_1]; _ally_side_2 = call compile format ["%1", _ally_side_2]; if (_killer != _killed && side _killer == _ally_side_1 || _killer != _killed && side _killer == _ally_side_2) then { _var = _killer getVariable "NORRN_teamkill_punish"; _killer setVariable ["NORRN_teamkill_punish", (_var + 1), true]; }; if (true) exitWith {};/* TRIGGER MAKING SCRIPT This script automatically creates the triggers required for the revive_player.sqf script OCTOBER 2008 - norrin ************************************************************************************************************************************* trigger_mkr.sqf */ _mission_end_function = NORRN_revive_array select 0; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _Base_free_respawn = NORRN_revive_array select 36; _no_enemy_sides = NORRN_revive_array select 22; _enemy_side_1 = NORRN_revive_array select 23; _enemy_side_2 = NORRN_revive_array select 24; _mobile_spawn = NORRN_revive_array select 51; _mobile_base_start = NORRN_revive_array select 52; _Base_1_respawn = _Base_free_respawn select 0; _Base_2_respawn = _Base_free_respawn select 1; _Base_3_respawn = _Base_free_respawn select 2; _Base_4_respawn = _Base_free_respawn select 3; if (_mission_end_function == 1) then { _trig_0 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_0 setTriggerType "END6"; _trig_0 setTriggerActivation ["LOGIC", "", false]; _trig_0 setTriggerArea [1, 1, 0, false]; _trig_0 setTriggerStatements ["mission_Over", "titleText [""Mission Failed - all players are unconscious"", ""Black Faded"", 1]", ""]; _trig_0 setTriggerTimeout [15, 15, 15, false]; }; _trig_1 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_1 setTriggerType "NONE"; _trig_1 setTriggerActivation ["LOGIC", "", true]; _trig_1 setTriggerArea [1, 1, 0, false]; _trig_1 setTriggerStatements ["onConnect", "call{[] execVM ""revive_sqf\onConnect.sqf""}",""]; _trig_2 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_2 setTriggerType "NONE"; _trig_2 setTriggerActivation ["LOGIC", "", true]; _trig_2 setTriggerArea [1, 1, 0, false]; _trig_2 setTriggerStatements ["connected", "call{[] execVM ""revive_sqf\connected.sqf""}", ""]; _trig_3 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_3 setTriggerType "NONE"; _trig_3 setTriggerActivation ["LOGIC", "", true]; _trig_3 setTriggerArea [1, 1, 0, false]; _trig_3 setTriggerStatements ["onConnect", "call{[] execVM ""revive_sqf\respawn_counter.sqf""}", ""]; if (_no_enemy_sides == 1 || _no_enemy_sides == 2) then { if (_Base_1_respawn == 0 && _mobile_spawn == 0) then { _trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_4 setTriggerType "NONE"; _trig_4 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_4 setTriggerArea [50, 50, 0, false]; _trig_4 setTriggerStatements ["this && !no_base_1", "no_base_1 = true;publicvariable ""no_base_1""",""]; _trig_5 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_5 setTriggerType "NONE"; _trig_5 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_5 setTriggerArea [50, 50, 0, false]; _trig_5 setTriggerStatements ["this && no_base_1", "no_base_1 = false;publicvariable ""no_base_1""",""]; }; if (_Base_2_respawn == 0) then { _trig_6 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_6 setTriggerType "NONE"; _trig_6 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_6 setTriggerArea [50, 50, 0, false]; _trig_6 setTriggerStatements ["this && !no_base_2", "no_base_2 = true; publicvariable ""no_base_2""", ""]; _trig_7 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_7 setTriggerType "NONE"; _trig_7 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_7 setTriggerArea [50, 50, 0, false]; _trig_7 setTriggerStatements ["this && no_base_2", "no_base_2 = false; publicvariable ""no_base_2""", ""]; }; if (_Base_3_respawn == 0) then { _trig_8 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_8 setTriggerType "NONE"; _trig_8 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_8 setTriggerArea [50, 50, 0, false]; _trig_8 setTriggerStatements ["this && !no_base_3", "no_base_3 = true; publicvariable ""no_base_3""", ""]; _trig_9 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_9 setTriggerType "NONE"; _trig_9 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_9 setTriggerArea [50, 50, 0, false]; _trig_9 setTriggerStatements ["this && no_base_3", "no_base_3 = false; publicvariable ""no_base_3""", ""]; }; if (_Base_4_respawn == 0) then { _trig_10 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_10 setTriggerType "NONE"; _trig_10 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_10 setTriggerArea [50, 50, 0, false]; _trig_10 setTriggerStatements ["this && !no_base_4", "no_base_4 = true; publicvariable ""no_base_4""", ""]; _trig_11 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_11 setTriggerType "NONE"; _trig_11 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_11 setTriggerArea [50, 50, 0, false]; _trig_11 setTriggerStatements ["this && no_base_4", "no_base_4 = false; publicvariable ""no_base_4""", ""]; }; }; If (_no_enemy_sides == 2) then { if (_Base_1_respawn == 0 && _mobile_spawn == 0) then { _trig_12 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_12 setTriggerType "NONE"; _trig_12 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_12 setTriggerArea [50, 50, 0, false]; _trig_12 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicvariable ""no_base_1b""", ""]; _trig_13 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_13 setTriggerType "NONE"; _trig_13 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_13 setTriggerArea [50, 50, 0, false]; _trig_13 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicvariable ""no_base_1b""", ""]; }; if (_Base_2_respawn == 0) then { _trig_14 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_14 setTriggerType "NONE"; _trig_14 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_14 setTriggerArea [50, 50, 0, false]; _trig_14 setTriggerStatements ["this && !no_base_2b", "no_base_2b = true; publicvariable ""no_base_2b""", ""]; _trig_15 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_15 setTriggerType "NONE"; _trig_15 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_15 setTriggerArea [50, 50, 0, false]; _trig_15 setTriggerStatements ["this && no_base_2b", "no_base_2b = false; publicvariable ""no_base_2b""", ""]; }; if (_Base_3_respawn == 0) then { _trig_16 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_16 setTriggerType "NONE"; _trig_16 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_16 setTriggerArea [50, 50, 0, false]; _trig_16 setTriggerStatements ["this && !no_base_3b", "no_base_3b = true; publicvariable ""no_base_3b""", ""]; _trig_17 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_17 setTriggerType "NONE"; _trig_17 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_17 setTriggerArea [50, 50, 0, false]; _trig_17 setTriggerStatements ["this && no_base_3b", "no_base_3b = false; publicvariable ""no_base_3b""", ""]; }; if (_Base_4_respawn == 0) then { _trig_18 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_18 setTriggerType "NONE"; _trig_18 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_18 setTriggerArea [50, 50, 0, false]; _trig_18 setTriggerStatements ["this && !no_base_4b", "no_base_4b = true; publicvariable ""no_base_4b""", ""]; _trig_19 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_19 setTriggerType "NONE"; _trig_19 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_19 setTriggerArea [50, 50, 0, false]; _trig_19 setTriggerStatements ["this && no_base_4b", "no_base_4b = false; publicvariable ""no_base_4b""", ""]; }; }; sleep 5; //create mobile spawn triggers if msp deployed if (_Base_1_respawn == 0 && _mobile_spawn == 1 && ((getMarkerPos _Base_1) distance (getMarkerPos _mobile_base_start) > 20)) then { if (_no_enemy_sides == 1 || _no_enemy_sides == 2) then { r_ms_trig_1 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_1 setTriggerType "NONE"; r_ms_trig_1 setTriggerActivation [_enemy_side_1, "PRESENT", true]; r_ms_trig_1 setTriggerArea [50, 50, 0, false]; r_ms_trig_1 setTriggerStatements ["this && !no_base_1", "no_base_1 = true; publicVariable 'no_base_1'",""]; r_ms_trig_2 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_2 setTriggerType "NONE"; r_ms_trig_2 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; r_ms_trig_2 setTriggerArea [50, 50, 0, false]; r_ms_trig_2 setTriggerStatements ["this && no_base_1", "no_base_1 = false; publicVariable 'no_base_1'",""]; }; if (_no_enemy_sides == 2) then { r_ms_trig_3 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_3 setTriggerType "NONE"; r_ms_trig_3 setTriggerActivation [_enemy_side_2, "PRESENT", true]; r_ms_trig_3 setTriggerArea [50, 50, 0, false]; r_ms_trig_3 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicVariable 'no_base_1b'", ""]; r_ms_trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_4 setTriggerType "NONE"; r_ms_trig_4 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; r_ms_trig_4 setTriggerArea [50, 50, 0, false]; r_ms_trig_4 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicVariable 'no_base_1b'", ""]; }; }; if (true) exitWith {}; // dialogCamera.sqs // adjusts camera parameters // 0 = left // 1 = right // 2 = up // 3 = down // 5 = destroy camera // 6 = zoom in // 7 = zoom out // _dir = direction of camera, no need to change! // _step = step size of west, north, a.s.o. bigger values make the camera move further distances // _commit = duration of camera transition, smaller values make the camera move faster // _maxzoom = highest possible zoom (smaller values = better zoom) // _minzoom = smallest possible zoom (bigger values = further away) _dir = [[-1,0],[1,0],[0,1],[0,-1]]; _step = SAT_STEP * (position SAT_CAM select 2); _commit = SAT_COMMIT; _minzoom = SAT_MINZOOM; _maxzoom = SAT_MAXZOOM; _option = _this select 0; if (_option<4) then { while {MoveCam} do {playsound "flick"; _pos = getpos SAT_Logic; _x = (_pos select 0); _y = _pos select 1; _z=position SAT_CAM select 2; if (_zSAT_MAXHEIGHT) then {_z=SAT_MAXHEIGHT}; _actdir = _dir select _option; _i = _step * SAT_CAMERA_FOV; SAT_Logic setpos [_x + _i * (_actdir select 0), _y + _i * (_actdir select 1),0]; SAT_CAM camprepareTarget [position SAT_Logic select 0,position SAT_Logic select 1,0]; SAT_CAM camprepareRelPos [0, (_z/ SAT_RATIO), _z]; SAT_Cam camCommitPrepared 0; SAT_Trigger setpos getpos SAT_Logic; [] call sat_update; sleep 0.5};} else { switch (_option) do { case 4 :{ _OffsetX=10*((CoordOrig select 0) - (CoordFinal select 0)); _OffsetY=-10*((CoordOrig select 1) - (CoordFinal select 1)); playsound "flick"; _pos = getpos SAT_Logic; _x = (_pos select 0); _y = _pos select 1; _z=position SAT_CAM select 2; if (_zSAT_MAXHEIGHT) then {_z=SAT_MAXHEIGHT}; _actdir = [_OffsetX,_OffsetY]; _i = _step * SAT_CAMERA_FOV; SAT_Logic setpos [_x + _i * (_actdir select 0), _y + _i * (_actdir select 1),0]; SAT_CAM camprepareTarget [position SAT_Logic select 0,position SAT_Logic select 1,0]; SAT_CAM camprepareRelPos [0, (_z/ SAT_RATIO), _z]; SAT_Cam camCommitPrepared 0; SAT_Trigger setpos getpos SAT_Logic; [] call sat_update;}; case 5:{ SAT_CAM camprepareTarget [position SAT_Logic select 0,position SAT_Logic select 1,0]; _z=(_this select 1); //SAT_CAMERA_FOV=SAT_CAMERA_FOV-(_this select 1)/25; //TitleText [format ["CAM: %1\nLogic:%2\nTrig:%3\nParam: %4\nz:%5",position SAT_CAM,position SAT_Logic,position SAT_trigger,_this,_z],"plain down"]; if (_zSAT_MAXHEIGHT) then {_z=SAT_MAXHEIGHT}; SAT_Cam camSetRelPos [0,(_z)/SAT_RATIO,_z]; SAT_Cam camCommit 0;_u=[(_this select 1),SAT_MINHEIGHT,SAT_MAXHEIGHT,_z] spawn sat_update; //if ((position SAT_Cam select 2)(count _arr)) then {_len=count _arr}; for "_i" from ((count _arr)-_len) to ((count _arr)-1) do {_out=_out + (_arr select _i)}; _out}; KRON_StrMid={private["_in","_pos","_len","_arr","_i","_out"]; _in=_this select 0; _pos=abs(_this select 1); _len=abs((_this select 2)-1); _arr=[_in] call KRON_StrToArray; _out=""; if ((_pos+_len)>=(count _arr)) then {_len=(count _arr)-_pos-1}; if (_len>0) then {for "_i" from _pos to (_pos+_len) do {_out=_out + (_arr select _i)}}; _out}; KRON_StrInStr={private["_in","_tst","_lenTst","_lenIn","_arr","_tmp","_i","_j","_out", "_continueTests"]; _in=_this select 0; _tst=_this select 1; _out=false; _continueTests=true; if (_in == _tst) then {_out=true; _continueTests=false;}; if (_continueTests) then {_lenIn=[_tst] call KRON_StrLen; _lenTst=[_tst] call KRON_StrLen; if (_lenIn < _lenTst) then {_continueTests=false;}; if (_continueTests) then {_arr=[_in] call KRON_StrToArray; for "_i" from (0) to ((count _arr)-_lenTst) do {_tmp=""; for "_j" from (_i) to (_i+_lenTst-1) do {_tmp=_tmp+ (_arr select _j)}; if (_tmp==_tst) then {_out=true; _i=count _arr}}}}; _out}; KRON_StrCase={private["_in","_mode","_c1","_c2","_c3","_arr","_tmp","_chr","_i","_f","_out"]; _in=_this select 0; _mode=_this select 1; _c1= ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]; _c2= ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]; if (_mode=="LC") then {_c3=_c1; _c1=_c2; _c2=_c3}; _arr=[_in] call KRON_StrToArray; _out=""; for "_i" from (0) to (count _arr)-1 do {_tmp=""; _chr=_arr select _i; _f=_c1 find _chr; if (_f>-1) then {_tmp=_c2 select _f} else {_tmp=_chr}; _out=_out+_tmp}; _out}; KRON_StrUpper={private["_in","_out"]; _in=_this select 0; _out=[_in,"UC"] call KRON_StrCase; _out}; KRON_StrLower={private["_in","_out"]; _in=_this select 0; _out=[_in,"LC"] call KRON_StrCase; _out}; disableSerialization; satmap=createDialog "RscSatMap"; _display = finddisplay 2; _control = _display displayctrl 001; ctrlShow [002,false]; SAT_Pos=_this select 0; "SAT_Marker" setMarkerpos (_this select 0); _str="Request Satellite here?"; _len=[_str] call KRON_StrLen; _i=0; while {_i<_len+1} do {_left=[_str,_i] call KRON_StrLeft;_control ctrlSetTextColor [1, 1, 1, 1];ctrlSetText [001,_left];playsound "flick";sleep random 0.1;_i=_i+1}; sleep 0.5; ctrlShow [002,true]; class RscSatellite { IDD = 6000; MovingEnable = 0; class Controls { class TVDay { x = -0.2; y = -0.12; w = 1.4; h = 1.2; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "\Campaigns\ca\Missions\x02BreakingNews.Sara\tv_screen_ca.paa"; }; //--- Grid class GV1: RscText { x = 0.1; y = 0.2; w = 0.001; h = 0.6; text = ""; colorBackground[] = {1,1,1,0.1}; }; class GV2: GV1 {x = 0.2;}; class GV3: GV1 {x = 0.3;}; class GV4: GV1 {x = 0.4;}; class GV5: GV1 {x = 0.5;}; class GV6: GV1 {x = 0.6;}; class GV7: GV1 {x = 0.7;}; class GV8: GV1 {x = 0.8;}; class GV9: GV1 {x = 0.9;}; class GH1: RscText { x = 0.1; y = 0.2; w = 0.8; h = 0.001; text = ""; colorBackground[] = {1,1,1,0.1}; }; class GH2: GH1 {y = 0.3;}; class GH3: GH1 {y = 0.4;}; class GH4: GH1 {y = 0.5;}; class GH5: GH1 {y = 0.6;}; class GH6: GH1 {y = 0.7;}; class GH7: GH1 {y = 0.8;}; //--- Cross class cross1: RscText { x = 0.475; y = 0.5; w = 0.05; h = 0.002; text = ""; colorBackground[] = {0.1,1,0.1,0.7}; }; class cross2: RscText { x = 0.5; y = 0.475; w = 0.002; h = 0.05; text = ""; colorBackground[] = {0.1,1,0.1,0.7}; }; //--- Top Left class LineTLH: RscText { x = 0.1; y = 0.2; w = 0.1; h = 0.005; text = ""; colorBackground[] = {1,1,1,1}; }; class LineTLV: RscText { x = 0.1; y = 0.2; w = 0.005; h = 0.1; text = ""; colorBackground[] = {1,1,1,1}; }; //--- Top Right class LineTRH: RscText { x = 0.8; y = 0.2; w = 0.1; h = 0.005; text = ""; colorBackground[] = {1,1,1,1}; }; class LineTRV: RscText { x = 0.9-0.005; y = 0.2; w = 0.005; h = 0.1; text = ""; colorBackground[] = {1,1,1,1}; }; //--- Bottom Left class LineBLH: RscText { x = 0.1; y = 0.8-0.005; w = 0.1; h = 0.005; text = ""; colorBackground[] = {1,1,1,1}; }; class LineBLV: RscText { x = 0.1; y = 0.7; w = 0.005; h = 0.1; text = ""; colorBackground[] = {1,1,1,1}; }; //--- Bottom Right class LineBRH: RscText { x = 0.8; y = 0.8-0.005; w = 0.1; h = 0.005; text = ""; colorBackground[] = {1,1,1,1}; }; class LineBRV: RscText { x = 0.9-0.005; y = 0.7; w = 0.005; h = 0.1; text = ""; colorBackground[] = {1,1,1,1}; }; /*class black1 { x = -1.5; y = -0.1; w = 1.5; h = 1.2; type = 0; idc = -1; style = 48; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = BitStream; sizeEx = 0; lineSpacing = 0; access = ReadAndWrite; text = "#(argb,8,8,3)color(0,0,0,1)"; }; class black2 { type = CT_STATIC; idc = -1; style = ST_LEFT; colorBackground[] = {0, 0, 1, 0.5}; colorText[] = {1, 0, 0, 0.75}; sizeEx = 0.04; x = 0.45; y = 0.7; w = 0.6; h = 0.05; text = ""; font = "Zeppelin32"; }; */ class ProcRequest { idc = 600; type=CT_STATIC; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = ""; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.012; x = 0.1; y = 0.05; w = 0.56; h = 0.61; }; class PositionSat { idc = 601; type=CT_STATIC; style = ST_LEFT; colorText[] = {0.9,0.9,0.9, 1}; text = ""; font = LucidaConsoleB; colorBackground[] = {0, 0, 0, 0}; sizeEx = 0.012; x = 0.1; y = 0.07; w = 0.56; h = 0.61; }; class mouseHandler: RscControls { onMouseMoving = "[""MouseMoving"",_this] spawn sat_events"; onMouseButtonDown = "[""MouseButtonDown"",_this] spawn sat_events"; onMouseButtonUp = "[""MouseButtonUp"",_this] spawn sat_events"; //onMouseZChanged = "[""MouseZChanged"",_this] spawn sat_events"; //onMouseZChanged = "SAT_Cam camSetRelPos [0,(position SAT_CAM select 2)/SAT_RATIO,(position SAT_CAM select 2)-10*(_this select 1)];SAT_Cam camCommit 0"; idc = 123; x = 0.0; y = 0.0; w = 1.0; h = 1.0; colorBackground[] = {0.2, 0.0, 0.0, 0.0}; }; class SatHeight : RscSlider { idc = 6004; style=ST_VPOS; x = 0.75; y = 0.35; w = 0.02; h = 0.3; sizeEx = 0.015; rowHeight = 0.015; color[] = {0.9,0.9,0.9, 0.75}; colorActive[] = {0.9,0.9,0.9, 1}; onSliderPosChanged= "[""MouseZChanged"",_this] spawn sat_events"; //[_this select 0,(sliderPosition 600 - sliderPosition 600 mod 1),0] spawn Refresh; SoundExpand[]={"\ca\ui\data\sound\new1", 0.15, 1}; SoundCollapse[]={"\ca\ui\data\sound\new1", 0.15, 1}; }; class ListOfObjects : RscListBox { idc = 800; x = 0.1; y = 0.4; w = 0.2; h = 0.06; font=Zeppelin32; soundselect[]={}; rowHeight = 0.012; onLBSelChanged="[""CursorChanged"",_this] spawn sat_events"; onLBDblClick=""; }; class NorthMove:RscActiveText { IDC = 2031; style = ST_LEFT; x = 0.478; y = 0.15; w = 0.2; h = 0.05; text = " "; action = "[""MovingNorth"",_this] spawn sat_events"; SizeEx = 0.030000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; onMouseEnter = "MoveCam=true;[""MovingNorth"",_this] spawn sat_events"; onMouseExit = "MoveCam=false"; font=Zeppelin32; }; class sOUthMove:RscActiveText { IDC = 2032; style = ST_LEFT; x = 0.478; y = 0.81; w = 0.2; h = 0.05; font=Zeppelin32; text = " "; action = "[""MovingSouth"",_this] spawn sat_events"; SizeEx = 0.030000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; onMouseEnter = "MoveCam=true;[""MovingSouth"",_this] spawn sat_events"; onMouseExit = "MoveCam=false"; }; class WestMove:RscActiveText { IDC = 2032; style = ST_LEFT; x = 0.06; y = 0.475; w = 0.2; h = 0.05; font=Zeppelin32; text = " "; action = "[""MovingWest"",_this] spawn sat_events"; SizeEx = 0.0450000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; onMouseEnter = "MoveCam=true;[""MovingWest"",_this] spawn sat_events"; onMouseExit = "MoveCam=false"; }; class EastMove:RscActiveText { IDC = 2032; style = ST_LEFT; x = 0.9; y = 0.475; w = 0.2; h = 0.05; font=Zeppelin32; text = " "; action = "[""MovingEast"",_this] spawn sat_events"; SizeEx = 0.045000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; onMouseEnter = "MoveCam=true;[""MovingEast"",_this] spawn sat_events"; onMouseExit = "MoveCam=false"; }; class NVGOn:RscActiveText { IDC = 700; style = ST_LEFT; x = 0.06; y = 0.82; w = 0.2; h = 0.05; text = "NVG"; font=Zeppelin32; action = "camUseNVG true;ctrlshow [700,false];ctrlshow [701,true];playsound ""flick"""; SizeEx = 0.03000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; }; class NVGOff:RscActiveText { IDC = 701; style = ST_LEFT; x = 0.06; y = 0.82; w = 0.2; h = 0.05; font=Zeppelin32; text = "NVG"; action = "camUseNVG false;ctrlshow [701,false];ctrlshow [700,true];playsound ""flick"""; SizeEx = 0.03000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; }; class CloseD:RscActiveText { IDC = 701; style = ST_LEFT; x = 0.84; y = 0.82; w = 0.2; h = 0.05; font=Zeppelin32; text = "Exit"; action = "CloseDialog 0"; SizeEx = 0.03000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; }; }; }; class RscSatMap { IDD = 7000; MovingEnable = 0; class Controls { class Request:RscActiveText { IDC = 001; style = ST_LEFT; x = 0.45; y = 0.5; w = 0.2; h = 0.013; text = ""; action = "satmove=[SAT_POS] execVM ""Satellite\sat_move.sqf"""; font=LucidaConsoleB; SizeEx = 0.012000; color[]= {.1,1,.1,.7}; colorActive[] = {.1,.1,1,.7}; }; class Cancel:RscActiveText { IDC = 002; style = ST_LEFT; x = 0.5; y = 0.55; w = 0.2; h = 0.013; text = "Cancel"; action = "onmapsingleclick """";CloseDialog 0"; font=LucidaConsoleB; SizeEx = 0.012000; color[]= {1,.1,.1,.7}; colorActive[] = {.1,.1,1,.7}; }; }; };if (player Hasweapon "LaserDesignator") then {hint "Click on the map where you want the satellite positioned."; onmapsingleclick "_sat=[_pos] execVM ""Satellite\requestsat.sqf"""; waitUntil {Dialog}; waitUntil {!Dialog}; sleep 1; onmapsingleclick "";} if (not SAT_Moving) then { SAT_Cam = "camera" camcreate [position SAT_Logic select 0,position SAT_Logic select 1,SAT_HEIGHT]; SAT_Trigger setpos getpos SAT_Logic; SAT_CAM campreparePos [0,0,0]; SAT_CAM camprepareTarget [position SAT_Logic select 0,position SAT_Logic select 1,0]; SAT_CAM camprepareRelPos [0, (SAT_HEIGHT / SAT_RATIO), SAT_HEIGHT]; SAT_CAM CameraEffect ["INTERNAL", "BACK"]; SAT_CAM camprepareFov SAT_CAMERA_FOV; SAT_CAM camCommitPrepared 0; waituntil {CamCommitted SAT_CAM}; SAT_CAM camprepareTarget [position SAT_Logic select 0,position SAT_Logic select 1,0]; SAT_CAM camprepareRelPos [0, (SAT_HEIGHT / SAT_RATIO), SAT_HEIGHT]; SAT_CAM camCommitPrepared 0; ok=createDialog "RscSatellite"; sliderSetRange [6004,SAT_MINHEIGHT,SAT_MAXHEIGHT]; sliderSetspeed [6004, 0.1, 0.2]; sliderSetPosition [6004,SAT_HEIGHT]; _u=[] spawn sat_update; ctrlshow [701,false];ctrlshow [700,true]; [] call sat_update; waituntil {!dialog}; SAT_Cam cameraeffect ["terminate","back"];} else {hint "A request is being processed, stand by."} disableSerialization; // Inspiration and structure of the code: Kegetys // Satellite idea and Cam coding: vektorboson (lots of small changes though by Igor) // Implementation: Igor Drukov _step = SAT_STEP * SAT_HEIGHT; _commit = SAT_COMMIT; _minzoom = SAT_MINZOOM; _maxzoom = SAT_MAXZOOM; _display = finddisplay 6000; _type = _this select 0; _param = _this select 1; switch (_type) do { comment "Mouse events"; case "CursorChanged": { _control = _display displayctrl 800; _obj=[format ["%1",_control lbData lbcursel 800]] call sat_obj; _sat=[_obj] execVM "Satellite\sat_track.sqf"; }; case "MouseZChanged": { _e=[5,sliderposition 6004] execVM "Satellite\AdjustCamera.sqf"; }; case "Update": { _u=[] spawn sat_update; }; } if (not SAT_Moving) then { SAT_Moving=true; _p0=getMarkerpos "SAT_Marker"; _p1=getPos SAT_Logic; _d=_p0 distance _p1; _t=_d/500; SAT_Logic setpos (_this select 0); onmapsingleclick ""; hint format ["Wait %1s. for the satellite to position itself.",floor _t]; _i=0; while {alive player and _iSAT_MAXHEIGHT) then {_z=SAT_MAXHEIGHT-100}; //TitleText [format ["CAM: %1\nLogic:%2\nTrig:%3\nParam: %4\nz/%5",position SAT_CAM,position SAT_Logic,position SAT_trigger,_this,_z],"plain down"]; SAT_CAM camprepareTarget [position SAT_Logic select 0,position SAT_Logic select 1,0]; SAT_CAM camprepareRelPos [0, (_z/ SAT_RATIO), _z]; SAT_Cam camCommitPrepared 0; private ["_i","_n","_o","_l","_d"]; _l=list SAT_trg; _n=count _l; _i=0; _d=200; while {_i<_n} do { if (format ["%1",typeof (_l select _i)]!="Logic" and _l select _i!=SAT_Cam and (_l select _i distance SAT_Logic)<_d) then {_o=_l select _i;_d=_o distance SAT_Logic};_i=_i+1}; _o ctrlSetText [601,format ["Pos: %1 ",position SAT_Cam]]; SAT_Trigger setTriggerArea [position SAT_CAM select 2,position SAT_CAM select 2,0,false]; SAT_Trigger setPos position SAT_Logic; "SAT_Marker" setMarkerPos position SAT_Logic; sliderSetPosition [6004, (position SAT_CAM select 2)]; lbClear 800; _i=0; _l=list SAT_Trigger; while {_i8ӜW% VӜϷQj2qt4Kxu趵Ӝ6-Ӝq8Ӝ!fƶ2:B>ֵӜMֵӜ5׶Q-=gӜ0ֵӜ{y0 ʺӳ:޲|qʒֵӜŲgƆW Ҷ_ӜɣK~&붵!"~~<Ӝ-Zֵ߲Ӝu"r8Ʋ}EtwӜ ܸ8bӜ޶Nq`4PPPP````~jֵӜ{ֵӜ3Ӝ8ӜhjSڸq~H:upu"׽)-ul hӜ~Ӝi궵Ӝ. ?b8ӜiQ‚q)j~ 59ֵӜ,oֵӜ.rqࢢӜяZVtӜ8I |y߶Ӝ7 Ӝ8q w|,8Ӝ?ն*6+/yΒ6ֵӜk68Ӝݹ7$*}8W=ƶ2+hC2ӜH.c54*cRֵӜo󜓱 Ӝޛ ueնӜ),ز(f׽LoӜ6.uM>(uq,s8Ӝ󜮶24PPPP````Ӝ66㶵H+2~ƶ;m>V9β?~u2\;uu/ɶ664uӜơk-lY;X[4dJTq̨zg2?{{A8:uq C󜱨q *"b_Ӝ4juqBŒ8Ӝ/8ӜhӜbӜ*ֵӜΜӜKsӜ`VӜ\Os8h󜳅6-i(춵󜞃jֵӜq_жkE׽4[eӜ ﶵ{{gOӜlKӜ<ghI2tz8Ӝ}u"ֵӜ߶fӜzK1gxpƮ4?|Ӝں{4ӜiuPPPP5%%%ӜLpz3Ʋ7ֵӜOῩo8ӜvӜC'Ʋc¦ܶӜ&zӜ#q{d}8Ӝ~Զ*@iۑӜa*hu0""!׽8QӜˎ_8Ӝy4sܶaJ8qNq_ֵӜaޯQ8ƲֵӜyӜrpG(:J8Ӝ}NӜ鲔8ƊӜk=öj,fӜhNӜ>.'OӜ綵3 hֵӜ\(qKq/o8ƲNn~kL=>8Ӝ_~ӜXquPPPPֵ````&ïu. ƲӜi:q*uqx*Ni;=kӜlӜhhu)"Ӝ-))ﶵ#Ӝے.ӜZb9 8-f˻u2"#u7-#r9׽Ӝ5{󜩣4^ӜVڮ0uRӜf:uq?pu2'8ӜQs#C8ӜſӜj*CkyβݽQӜJqҚӜc}f1ӜNw~Ӝta'.;4ֵӜku8`󜸨8U}68q⺶´O Ӝ;4<Ӝb󜕭Ӝ3 8Ӝ]'} h ¶Ӝ'(lBw4PPPP````y 8Ʋ4ߔ~uӜ4߶:v!0`88ӜsӜY9 `ӜLjӜᒀ49Ӝ7*q$Ӝ?o7>jӜӜwϏ4u6/?;+nֵӜP;ӜJu5;㶵A7϶D:+J0Ӝ_c/.vQʠ?-Ӝ:涵Ӝs&8qluq z0*]u3qjӜ镭x ӜʜӜᲔf`Q8ӜZp8urӶ󜰚544F)}ӜsQOֵQ6 .u‡Ķ*Ӝ&7q!2Ӝ<8_|K@,uH8ӜWӜ^fuPPPPU````Ӝ"ӜFdֵӜ3 ǶӜ(ֵӜQ"*Ӝoހqb"nnӜ) 68Ӝםq)Q  et*궵ӜWӜu4 3h*ߨӜPu µ4X֏8sJֵӜ\mӜPXyβ}m綵Ӝ0}󜡭ֵӜR["Kuh u.ds~u4{84{>u,붵q"'ֵӜ_aӜd{#ֵ+~47,eֵӜ&uɶq*q3:q`#*o|<ӜғƲNӜc!ӜY  (49Y*8ֵӜ׽0=ӜL ׽qc 8Ʋ[TPPPP55%5Ӝy{Ry48ӜcӜ0Qluns"ZRuUUejR u 8ƒO8Ӝ{8Ӝgfm㶵s_R"zUu(B %4+nڶ*춵Ӝe u㲺!y+?u8ֵӜi"w֯/Ӝ@SӜ@S;hӜ᝶uRI ?ӜNu 4ķnӜ}B u{407ʳQv4{40 u0'.|8Ʋyk=٪K{ ?Mv;j8Ʋ_bQ؟u ~us $𨶵qjjq: 0Vu{ }s**׶{ (:.z[/u @-ֵ+cyβ׽4W߶hs+~4PPPP````^6/Jy- 1^x׽1 UU!W]Z]_IJ! g1{IBAJ1Z9b Wƿ c UwsUU,c!UuMk>U]0?WUUUU4!UubUAuUUuU!Ue)UBUuZ{" Ӝ*ӜӶKk>ӜwLvӜF}5ǶֵӜp*~sVuZWiJ(_4ZU!q]Uu UUW50>U.Ƕ8qҸӜ o~8Ʋ:~Ӝ3fWֵӜ4ٿ4{~iG0@ns [RWRwuiJwղRU]mkRn4߮sjRWmkR9{lMkB|?Z1G+{1 ֵB*HB ~YZ8[uq+,q1o+utֵӜ}4PPPPu````%|8Ӝヲy\_yZֵZ|9 1U u 4E)UW4!UU{!UWRް1Aڳ1/9d1@bˆ1Y9\:1dd9~l9+?1_~1!$!AwV1!$1wU(e)!W0BA]IJA uVfZAWAUU UU]UW4UU!UUMkE))mkRV0mkR\ds9,cIJ󛲔78Z~RUUq9(-4{0ɩ:4 cj8Zw c* UUUZU]iJu,c)J22:ImkR삹{ZǩqIJgsjRaMkBj~U41 URW_mkIJ^ȼ{(B'sIJ?^mkIJ|J-k1o*,c9NIJ WWujRUuBӜ({oE{v8q+[4PPPP````ӜC4'Q.qQӜmkR[{IJ:{)J 0Z?.q c'.Mk?'7s`pZqsKY]0 c}0B׊4IJ}7QIJkÉmkRJ{R>,c9b( cIJO+YK cIJ"} cIJ=MkBWZ1+(RbXxrx4a-5lӜxuPPPPUUUEUUUUUUAUUUTUUUTUUUAUUUQRUUU$!UUUxAUUU)UUU%%bUUUAUUUZUUU+MkUUUMkUUU cUUUP׽````Ӝ(.#9dֵӜʥӜ 6qkȶ1Ki۶Qֵ4繶Ol)9zb cIJsIJ=oMkIJ>csIJzIޮs9-~IJ}ֵB_+"{}u c9uUUu!U,c R9" ,c9U cD!ޚ*U9U}"u9U_WMkf1 *W,cIJZ!Mk9~U cf1 c9}]MkU c! Zzߋmk!W c9 sIJ΍,c9ܸ*mkR*ӜR]0Z{9 ,c?=uRjqIJZ;]ղZ]qZXSmkBmkBɪmkB%sIJ;.{R;WWqf1mkBZB cIJVUUZ18?R9jyR!wRE)w_iJ%)UZb/A5 Ӝ|nLӜ1{TPPPPd(\ATAUY AQATj$&1"RUނUU5u ֵBqB ժXE)_XƂU {aUU\E)*MkAUUbU!qVUUӜ c)*ĵ&ӜRPPP````Ӝ}y˶193a׽+u<ӜFֵӜ/ֵK9Ӝ񹜫<Ӝꓳ'ֵQ $u$TIJ@mk1; cIJg%)sIJ׾mkRmsIJ=zuR5_4RU4R*UuZ {PiJuUUuR]uZU 4R]T)J-u"qKKVq1WتmkRM{\,mkIJӪ,cIJ7 mkB8mkRcF}sIJ}{BR]_ {IJ*( cUb,c%- cp\qR//WR{Z]{{jRkߎsRmkR{R5MkBʬsIJֺ0Z_[|MkBχ,c)J_\,c9eR1 "cR9"fR1ȳrRE)g(B! >(B!fBA B»mkw1UUu!/uMk x In׽04PPPP(!E]ו"" ןEwnE)B!UBE)Qx89]IJ_~IJ_?u c?-1ȪUIJ` (ަ1XKY΂4QU4{;K4{4{Ӝ{(4Q@ݽXPPP````u΂]UȚu=Ӝ" Ӝ6QֵӜt78Ӝ]lubE/qӜ6WӜrǮ'{BVTXMkAϽ,cIJmkR܍P,cIJȣmkjR6LsIJmkjR~mkIJ0qMk9ΌrR}wUZ*UUUiJ(BuZuuA0ZsRisRYsZ0Zվ{RmkIJ6Zk0IJ_uZ/U0Z\}0Z}mkRƾsBmkjRhrmkjR&mkB,c9 cIJ es)J=^_,cB+,c99UE)ZUZf1IJE)gIJ!*BE)(Bc9!ݭc c$!wUW/E)UUUE)U4U/9uUUUuq2ӜTQʪ "Q#쨊kPPPPAEUJ@}ed7u]99b)))+BE)XRE)IJ_ cAuZ}UWmk/U]P%)_={ UE) TMk4Q]4QwF{4{ 4Q4{ PPPP````Ӝy4`ӜfϷ;Ӝ7+u(Ȫ){ Ӝ(Ibֲ;(-8Ӝڶq **ӜHyTAP`Z1.,cB1#ΎsR'=MkB s)JJ>sIJsMkBp;mkRsRsIJtz{R~o璔RU^rs9Ȳ{(B.&(Z0Zܶ{Zj`qZܮsR~ӜIJwmkBmkRwy,cIJYsIJimkiJ릎2mkRpX,c9*.jmkRmkiJj2.,cIJ-mkRm,cB"Z! ZiJ!_R#~VR(B9bsE)}U]-!UUU*$!uUuE)U u$!U*B (ֵQ-/Ӝ4깶󜢮ֵӜq򓯶ӜX͇2ֵӜ:ǵֵܺӜHTPPPPE7vU+YR}|eE)/iJ!6*Rf1iJAX\BA߉Z-_z^U !UUU{A?_8 Wb/(=u{Huuw{϶0;o4Qkϒ(*4QlbPPPP׽````Ӝnt Ӝ84]vԶӜPEfq Z>|uMku4)J^UW UUuUqU!UU Q!UU9b 9掮9!WOiJ ]mkE)%_uZf1Mk1g,cAuMk1:s9?MkB,c9ps1'IJs,cBsIJ~s9u cU^bZ]PsRR5sIJmkRvB7{IJ cIJ*mkRgIsIJ*mkRЍ0Z^qZ]sIJ mkjR#t4RwߕU1zpiJ!~}Bo1rꎦ1(}1fՆ16v}f1Uե ׽Z Q붵Ӝ ѩ8Ӝ߶Ӝ780+ҺֵӜow0޺'.x4t붵O:궵F+6u((ֵӜ~4[󜹋uPPPPyQkšo\bUU 98ZE)..R`pBAW%{cX"9*s{WZ*+q_}_\PPq55-4Q uuk섶0;u}u|4Q #PPPP׽555%Ӝ x\XV=),BJw(q/LӜ7`Ӝ$4?/Zi*:wxvRx8jRU Y9Uue)wuIJUZUXuRU]U9UIJ]U*BUժ1U_89UU u9uU׽BU_9_UR%)vZ!,c9Mk1mkBwVmkIJ9|_VmkRSOUys)JێsB*,mkA- cIJݫ,cB _ cIJ:ͷMk1*jMk9]mk!]Mk!sE)?UMk!`99;={!uU 4!UUE)UիE)*4_wyӜ؞?j8ӜtֶӜO{Ӝ?׽qk78Ӝe}qB"¶8Ӝ45ou (+)PӜ({ֵӜζ󜨴䶵Ӝ\uPPPP9y}=UUU U4Qs4!\\R18BAP~,c5 }0 {7:\QBbyB|W4E)W+RZ^X! uIu2vqUӜU4ӜujKQoPPPP׽````XU}+y4|[u*D2 .+4* ;j4[d>~%s44ֵӜc]Xm46JùaӜ됐󜠐 <>Ӝr4o1\3ۇ4,LӜ;uR~u1U1UU4Q0(BUmk!⢫^u!-uIJUU4!_Y(BUu(BU!U !4Uq!%)U !U $!/U22+ֵӜupuahyӜN}Ӝ784Eqy{ӜƲےӜ*ӜArֵӜٳӜCֵ0 jӜ鱶ӜӜJ9K4yU, ?PPPP4 ֵӜ_?Ӝ&5mysBs!,U]Zx cYqUv(Bb 0E)+qjR\0E)UXƧ9Օ9r``4R ) b-.qfֵQӜ_ "?y8ӜZg4PPPP````Ʋ:j.\Ӝ"08k;_nʶlȳ=yx4ӗ4IyﶵJ :*q4h# Ӝb4h|Ӝ,4:4֓8Ӝ C!Ʋn 8/ӜXڒ  j:"/v8Ӝ< S41{4?驶ӜRYq׮*.u`L{&{8 јZ'ӜjB8Ӝ8ӜϽӜXzyβ8ӜO[H:4iVْӜ!*4:R4r;.\2ⶵӜ*+䶵q"8*4X8*uq+!yβxr*b>xJ8Ӝ:y|U+UPPPP4u24Ӝ*bӜm4f1@`@@IJ_5iJusE)Ws uzӜU_{!`-0A|e)}qyŽs>}0kkc}usu7pDH88Ӝ6k3,4PPPP````XUY8'4)@yUWxWӜA8ӜjoXUܜʑq&.:Ӝ/2)8޲ywny󜷿s@p4#{0uZFH4)8uyu ˻%#:J288Ӝ.XӜ=/8U4咶rx8uWeDz8Ӝ椶Ӝ ͹~ ݶӜH4c1|8474e48Ʋ#v+8ӜjyӜ˭44n41Ӝ(eO8Ʋxk#84??<#8ӜHU_68uZR4k 8u]Z"8Ӝ&-y44y38ܛtyu8Ʋj6yO88Ӝy߹uPPPPuIJ B4!׽1UUu(BpZ0!UW~IJ -wR1WW,c!_ZjjByf15U_}e)k}y1 Z0 5s 4.q** 4hύ4x(4684G?/8кuPPPPX````* z8U5{yUWwZ8ӜXӜ 4y44)JXU_XӜ/y4okpy4W|s8Us4 +4 4y8$84=4>/HyUu3yβg<8Ӝ꽎U-ioynX4\r 4& 84I8u]K`}Ʋ:4(ɺUU5%85&v4߁yU_G684{0}c8Uw9_8UMv`4lH(8UtXU_?44k44ﺭ7y^8Ӝ1u۟_8u9M}yβϬ4t8Ӝb8Ӝw84<\( x8Uu8Ӝ+ny4y4yh[yU٭M44 @""HDǛ4*46"`yZyupֵPPPPT p\Ws!]Mk09)׸qB|Mk!Wܲmkb+"09W 9U^cIJE)xwZP[[uE)saa YΪR5+1Ts#"yc#462 XUp8z+ywu PPPP8````8z8u{8uy4juy44ҳ&4/c8uz̤_4/K@ ঌ8ur"XӜ*xy4O8ux8u}4948U n 8Ʋj+Ʋ"!4r#N}8uY9-yky4oy4}8u>8ꊩ4:84ۨ3y֜XU=]44)"HJ8uʂHXU7^*8u<*XUf3XUVΖa]^8".8UԼ4:8uohb8u5?Ӝ( 8U6y44GH8U58j4ua8U9RcXo8۰8ƦFy4>w4f yζSU{y4yuM8uO΍4Z{4"m8uspPPPPZ)R/\p}{by{/ qIJ\zjHs1~XZӜE) /׽BD!^~"0E)U_[]R__ c'y4&*y4E8Ʋ.8uܠ 8Uv"P8uƨ!8uJ,84jl:?8Um8u284-/8uϻ4*4_ז8uq'8u)yx/8U(־8pyu[XUUyy4<:8uH4?E3y4?ix84Ը4ByŠ48Uze|8u8u>ܦ8u>vyζc8U(y8u!Ζ}5~8U!O8U7*PPPPIJ!IJ{ZƊR‹**IJ|{BeT$,cUX!\ֵE)X\sӜ9-׽Bͮ@9%7IJ_{*Z y΢r8B/׽WΖ+?ΖfWʆ8uD#Ζ%yuPPPPy````yU;%8xy4K*.8u>yζVF{Sy4~UZ_XUqˍ8uay4绻y4鮰y4<8u~?UHF/ y4+Ζq58uK>8Ӝ`p4~zXU98uhjYy_84 r8UnΖm`ն8ƂT4+8u xΖ?ƺ8u 8U 8Ur8uB8u u}?+yu*8u4|]8U XU.!yNXU-y4ӻ8uy4Ϸzy49Ζs|Ζ}ߌ8u84.u^' 8Us󆊙Uyy4~8Ӝ&-8XU>&8uֆ4`yUcbXU8un8ub8& (84AyΖvyu/yζ'5~:UguPPPPB q9+5Mk1~! D!jB,cE) 49SXB mk\9sE)`$! AujR*;B\Mk`A«iJ/^ c[_LcyΖdCֶ0ֶ2yU~rPPPP׽````X4[ u$yζi{]4yuyUnJ8uIyu2yuBqyζwa#XUoy&+ ֶ7}󜡪8U7<4(OҔΦ4j8UlyΖ\κuާ>y4;48u"8ur3#- y4:U.{K84u=uM8U$~yζAvZ󜪈k󜘳yUĶUe8U۹ 8暴8u8u0Ζ8u/4o8u3yζfÁΖ?}8*z.yΖuU׽u}WN}yuC~yζl޺Uk yu<ЙuyΖhokᶵ8Ƙ8uUW8uAΎΖjuO[vu|4+PPPP1 )IJ!ʿZf1>=iJE)EŪRE)璓B mk% *uE)jRUrZ!,*ӜR{{K1 mk9x]}u8B5_!!BUyIJ]VZו/'׽)&ޖ|;K_*:8PPPPy```!U!U!U!U8!UUU!UX!U!UU!U!U!U8!U!U8!U!U!U8!U!Uy!U!U!U!U!U!U!U8!U!U8!U!U!U!U8!U8!U!U8!U8!U!U!U8!U8!U8!U!U׽!U8!U8!U!UU!U!U!U!U!U!U!U!UUXUֵ!U8!U!UU8!U׽U!U!U!U!U!U!U!U8!UyPPPU,c=UiJUIJU9(UBUqUE)*;U/UuU{U UuUsU}U/UU_Uq"Uu UyUYUUUUyUUy qUUUUUU 4UUUUUUUUUUUUӜUUUuUUUUUU4UUUUUU4UUUTUUUUUUqUUUUUU0UUU0UUUUUU4UUU"UUUrUUU0UUUQUUUqUUUqUUUUUUUUUUUUuUUUUUUuUUU4UUUUUUUUUuUUUP}h UUAX`!A5'UE) $!A֪E)? 1A^1z!jUE)$!AW^1b$!A&zz|&!A--U$!AzU*V ATPUXU!AU/U!A^5Z/ cW__ cUuUqAUU0aUU_UUU4UUUuUUA8UU=AU}UתU<BUIJ Ҕ UUUuUUUuUuUuUUUUUUUuUUuUUUuUuU iJ^xAUW9 $!!^zAP@TT!A{㫭e)5''.E)AV\\^A(!AUU=E)UUWT4 #Q'Y0>Qkku*u,EqyqSuֵӜ}_u,׽0ޯ0zuU6u{4{^sT{gussツ׽U_s:(us 408s{{N 4{ +8q/|~q;u{ɨu(U0C4PPPXh~ *``b!AU551 1xW!)&!A -!1 (VE) jU1!1U1AzE)UzA@PPTAUU@A@UAP߿ E)AUU*0UUU+y΢UUe)U*}(BU+}MkUUU8ƭ((<_j40ϫ/8Qbuʩuq"bӜh8q{uQ80^ eyΎsk>&wqq+׽0:1yβ}u;yqx0}0XƲ懶0bk^4uq63ۊ)8Ʋ.yβkJk$U^v?02ﵢq/ XƲ5UuUXPPP@(uXV`E){!AU~Z* $!A/-E)ܾ1E)+1^!@E)ZE)zpz`~zbjA)*ޗIJA5UU U{#s..Z1>iJhr554Mkd{zL1Zؘ(B%)cIJາ! 4{+us+4{g۲s( *{& 4{/us뢲{!ڰӜ{h4{ߋ׽XZZZ(@_؂AUUUbAP@b*AU!A!A +!A(E)J 1+WE) 9!_9 zIJ!~--Y!U E)U9V֊RUUyΊRUUIJUU IJ u\XXXU-x}9_<UW{UU_x(!A$!A€1*յuf1 UUE)XUE) /+.ZzU<+}U&U}}ZZ(<ظ@}U}jZ`|0Mk-0Mk+ss{4/,cB7TR%)xb R 94Mk{5q!viJ!(BE)tq9 #4Mkoڻ4{SWqZ{(>vW{ {{su{._鲔{Y c {^PPXXhAPTT%Z`bb`!AWrrAh`( 7~}U xޜ!AXX!A/%9!#%\s----{_- \*qMkpqs3$qsMkcs4s=qss@qsqs'!ܐ,c9ۯZ!b1#)Z\\VsIJ1`s>-kܾsKqs#qsP-4Ӝmkk-{n-p)qs$} ({Ӝ{%Io{lsޚXXRPXmPZPPު }IJxqUWWx`WW`he)A}b!AU5A` !A-!A^W!A !Axz*E)b !A !A^V1bU5E)%55 oIJo)Jkq u{#+4{(uqu<'eq uq8,=0__W/UU0_>ZZZXG0Mku\0 c^{ c0Mk;K0MkV|=sU.4{+ ϲ$!{1uA*jU=U{u1ȹb"E)UU~*E)#4!y^\^1%)%%%׽5?u}V)*UyθxUyU _4 Uu4(^VU//- y *z}׽x\~ֶ y{`j!x^WWE)-E)zz$!A %^E)p{Y9+/1ַ/B/7.09WW-׽e)U1UqWW,ce),cBU*Mk$! c4Q+U]U_8q*8Ӝ~~_q yΒUUyβUUyβ ՙ /ޖ Օ4V~4}~u^4Q^8uu{yβqRx`ZWW^\!A555E)9(ZZZ9VTTT{{ c޾J0,c=0Mk[0 cMkq c)( {.:{&4RK iJ){:R4Zx9㪺IJKj"8,c:_U9[NJRbqW uf1]uݾ1% H׽0-ֵQ B uTW78qS[ֵQ_Ӝͭ|Ӝ|_ֵӜ{YqY *QusPPPP-k=)y0 yζWߺ< uxz<4_β^UUZzzziJb\^^WuU@ꀪe)!-/{!U5-9+޶`4}ﶵ]U4_yU_Wuߺ׽44%4%}ﲔ//}ﶵW%->IJ1\VBVVTTq4{:a4{:4{4{50Us.uV4{`+{#b {R[qAPx\^QE)]=նE)UW{Av~1AꢚR]-RA54$!WU?s!UU{7UWӜ  'Tju0ߵ98quj@u9X`B)40 ;qKTzns*Qs4PXXP0u}4{4{ /T0'/uQ5qxxx\!AUߋ^յ-!A (E)uzq%%%%uq`u4&uVujeӜ 4xuUZ4V ֵӜ`_(B^xQE)U1U9E) %1/U9!!1`jU1X?RU_Z%IJ _(BE)zׯuB5%--WWy48Ӝ\^y- U<Ӝ UU{__4QxqӜ4 u_/QU_uW_T{zu{z*Ӝ0]_V4{70U{{_\Mk40 x^޸s_qs൲{_/{czxqsr0Bz``bE)V\99TVVVqu~VNu{TMksdiqs9s*s 4{^u}Sw4{o}!PpMkA(BbtR3U}49 Uns$!swێs!c׽E)Ue)'/u0$!UU$!%4Z uQ#>Zu9@UMk({w׽QnXoͲ{ ⾶TQO]}PPPPq^WӜ0zU0%4Q&~{~{bZA\\\^AUTAU `hh!A^9A5E) /xӜ u^4(4jXX4j붵/ u Xu/"qUUⶵqWZzzzZ!WW\E)!XXBA-TUU 8E)U41+RzRA|e)b``z{Z!}{c鶵9--- <8U ޶_x4U\UU~o4{4Q 4Q 8qUUyQ///}ﶵbE)~!UUyZ   *ZZ  h!A E)A 9!~]UE)ꪪB9!679!`x IJ!BE)k BE) IJ1~_ IJ1勪Z%)+WZf1{_W,cE).U cE) c9U_sE)UU49 UU)JUBuU!U0!01UiJUӜR* UMkUqMkUqs>*qs_0Mk 0Mk qsqsZX{,cqs /{//XƲ{ 8qUzT_p*?Ӝ- 8u*~8^^8| umk^_{bc+0,c/VqsՎs0jZj0Mkxz0Mk{,c 0Mk%0MkzxZmk {,c0Mk㵷0 c׷ q cz(B_z``E)A^X$!WVTW%%%-k**s{4{Ӳ{زMk"0X uQ_Ub\VE)@!U% >_{s>{"J𲔎s"({֓qs{5({;Lw'4{ϿT{ i0TU4{o3v4{.+۲{*Иuno4mkڲs2&us]{uB c߆1T|xPSSSsZmkJ`s!^Mk!] c!UB_TT(&*(AUVjA /*BA+9/*9!._iJE)IJ1W5R9U@BE)BE)Be)ਪBE)Z^1*/zBb9!WE)9VX*!1 UE)9`B!u9!9!W 9!++(B!BE)/^BE)*BZ1*Zf1׾ cE)W{! {D!{BUIJ0UZ{B_0E)ZUIJU4ZUQRj^UqBU49UW9UYΎs 8y4\qUWzsW0Mk.60Mk0Mk{~^0Mk*qsU*qsU^X0,c~z0MkU{/0Z/~0 c.?{75*4 cz`@jBb^^~xATTTU%%u{}MkZBp{Ca{b#2sb1{ 4 c)1A/.qUݲMk㲔{s>*{ {arqmks{|4{4s4{sy{R'k/d{so {Ȅ4{n.4{s֮T{=TPc{ϧy{_/ cumkn{wZ~!ҔRXXX!IJTZIJ!XuE)%*E)몪r!Ap~Wz+$!!/5\^ _!A_ 9U19! _UBE)]59!z9!BE)?BkIJ!U1^9! U!1U 1__E)/95BE)/BE)k`1zze)5-E)b\19!U*9!1~1UBE)5-1zB B!IJ1}9!iJ! IJ1IJ1 pIJ!BE)%5iJf1'/R97IJE)jz(BE)--ŠRE)UiJE)IJ1iJ%)q1 UU9UUƆ1_Uֆ1UUIJUU4IJUӜRU{B *0Mk880Mkp~{ c {,c{ czW {Z%.0Mks0jZU0MkzpqZ`jR~~X^%%{Ws~s}qs ns.{aq$!`PXE)H{7-Mk=us74{f{{)TO/^{hT{KzMk* ڲMkpMk8qs w)4{mӜLcj{"%GMkH4{+4{k.4{^us:{*S{T,cؚxmkUᲔZWێsPPXPAUUAXJE)~_E)Uߨ1sr_!AATTTU5V A*(hX$!!\!Aׂ!XUh!`jVE). (B+z9!WU}9!W-}e)^xE) 9!m9!1 !1 11(B! }U9!zU{9b_U1˫+9W 9!x\B (B%)zz^!1 1zzr1r!1VhZ1*b\19!U9!>-?R9IJE)j^1Xת!1``UR9UiJ!zIJ1*yWIJ1WWBE)«E)9U*9!UjR 1B )9!/- *9IJj`1B iU1B&% BE)//IJ1Z9},c9 sZ--sZޠ {ZZ{R*U_R*U{Z.&{09(0 c}{ c`zZmkVAI!s VTTTMk c5uU c]uiJqsMktMkxwMQ$!V~qb'Mk+Ⲕ{C{}Ӝ{bW{z{4{r#\4{?^4{/}Mk⸟s 4{k˗Us{gO{K"4s).usݮ4{ޚs*y{ Ӝ,cUMk ^qZ}q c]Mk5W_uZ4PZZZ(VhU !Ar]9rs{W`&* !AUU !Aɋ !A_ !)!AUE)-E)z^'!A!AzU!A Օ5E)(1܆1 9! hZ1A1.1'/WE)6619!U_E)!APP1կ19!E) E) 1 9 9!._19!E)9XjBE)(BE)^W9!R1U-1BbYiJ! z~Zf1/-]9!4_(B!/(1BBe)(B%)W 9! 1B XBE)9!^pRE)rUBE)b{](BE)cIJE)_iJ1mMk1 sZܽsZsZmkR ZmkUR)Zmk& cIJUb`sIJ/sZ({ cbkmkf1^j@TTVWmk0Rzhu cuU׽Zmk,cvثq c(Mk/ c/js⹫csn{Fs: 5Mk(qs={{[(|Mk{nqs9>?{VqsFs qsţ1a1(BMk ^Mkʺ{ ci0Zj0ZKsZ)'{B-{RnsZԕsZY }} E)A/ 1E)Zx^$!!rrA`jATPP!Aɭ!A~ -!Az_^AUUTA@!A{_!A*E)/71>E)iUE) 9! ߆1xxE)!A*E)z!QE) /*9E)9TT 1``e)1ue)A 1+W1׆1.{!1Uh`E)!P!1ZIJ1}}IJE)+ _IJE)zU9!ި9!IJ! +R9iJf1^/Bxz15B 5/1B)(9!ž9!_u芆1 1 -(B!_BE)Zխ 1zp9!cbrIJ1-BE){~~iJ1is1mkR--sZ{Z umkRUZmk {Zյ]bmkRb*MkB/6qMk qR֨01zz$!WWVT{0 cӜLc/0Z#nqs'qsMk{s ~qs{84sʭ겔{6Zqs@ٲ{]qs. qsr-q cߺ Mk76Mk%; UsmHMkMk迲IJȺsZ`sZd PZ{ ckeo0ZrusIJ$**sR`qRlsiJsZ>{Z#ޗsZAq+sPRXP$!-UUUUUUAUUU%AAUUUAUUUAUUUAUUUAUUUZAUUUA@UUU/UUUUUUUUUi*UUUUUUUUUUUUUUUUUU!UUU$!UUUUUUUUUUUU UUUUUU`$!UUUUUUUUUUUUUUUUUUV UUUUUU$!*UUU!UUU$!UUUUUUUUUUUU$!UUUUUU$!UUU$!UUU UUUUUU!UUU!UUUUUUUUUUUUUUU1 UUU1 UUU9UUUE)UUUe)UUU1UUUIJUUUe)UUU1UUUBUUURUUURUUUTUUU0Mk ӠMkZt{ cA0MkJqbR"Mk&Mk;>qs9{YqMkL۲{ q{ -us~_wss WTnsbus߲Mk+Mk~UҔBsZRh{ c{ cc݅{ c { csZ̧j{Zl}sZu{Rs9sIJKmkRɐ{R~{RQZZRZ{8mk/UMku*TMkZ4ZoMk'ވqsgMk;s0 c*14{uS{zU{<9qsy){Q({0vqs>QRw{Z@sZ"0ZNJ~0IJ>mkRh{ ci0Zb{IJ %mkRNҨSsZjsZ;mkR48sZWsZݾ3mkRKsIJ{{ZX;ZPPRPqTMkMk۳mk>秼q c :MkʼMkbqs qsʢvqMk$*qsM$sbqs:R!si(qZ0`IJ0ZҗsZR}{RǮ0Z0RZWW{B+sjRmmkR&mkRlsBz""*mkR"RQ{ZKͺZU}]ZUUPmkR {ZgmkR0ZwnZZZX0Ӝ c*겔{ ,sƦ#?qsMk9Ӝ,c0Z *qMk/qMk"޲Mk*wqs kqs}0Z(\\{Z~sZͧ{BhP c7qMkUUsRmkjRp/{Z߾\sIJ1iJmkRƻnsB"mkIJn<1R܎sIJ+s)Jbת4ZaWWmkjRl;$*{B?J{,cZ[*XZ^Xq{IZMke{Ǜ]qs{<Z]Mk:qs {R[omkjRةmkR|,sIJ{PRPZ{0MkO{Je{,g{1Sk>Gqs-0Zb{Rk~0Zl0RϏj0RmkR#ĺmkRF_mkjR*~}x,c(B *vmkRmzmkIJ['mkRzmkR[sZvWemkIJ5N{Z]OeMkB@㎎siJ˨sIJ'{RɿmkRumkRrmkjR.:E{RmkR91R c mkRmkRZPPPP0%qsXdBqsCqs!qs ~v{f4qsh50IJz{RsIJ {Rn|wmkRP^ mkRmkIJ wMkBثmkReaҼ{R7{w0IJݎsIJ?5mkB{"{(B%mkR-7sZW,cIJ~+mkIJ'sjRmmkR[mkR"y{RPysIJƙmkjR;mkjRsRsIJO ciJ,cRZPX0qMk(qs˲{[4Mkqs;?qMk_qsjR{ZmkR/dmkR8sIJ-sIJsIJ\sIJ{(Bo)sIJ=FmkRw߮sIJߚ+mkB줪sRU cIJ d,c)J,mkB,c)J& ( cIJ_NmkRfmkIJ,c)JzêMkIJ mkjREmkIJg mkRomkIJmkR5ZPXPR0qs`7s9{U{_sqsUj6=ZmkH&mkRFz^,cB,cB¿Mk9"sRyZtMk9cmkRnsIJmkR'}mkRϚs9>zmkR\usRҜ,c)J64mk)J-MkZPRPsUUUsUUUsUUUsUUU{UUU{UUU{UUU,cUUUZUUU cUUURUUUZeIJUUUnsUUURUUUR UUURUUURUUUbUUUIJUUUZUUURUUURUUURUUUZUUURUUURUUUiJUUURUUUZ UUUZRUUUZ UUUZ*UUUIJUUURPUUU @4UUUUUTUUUUUUUUUUUUUuUU4UU4UU4UU4UU4UUTUU4UUuUUUUUUU4UUUUuUU4UUUUU4UU4UUUUU4UUUU4UUUUUUUU4UUUUUUUUUUUUUUU4UUVT u &knF4*CZuҔhuhQa4/wݷu|2붵4jۖ~ɮ*u?4sXu)Ps_=󜪟*u3*4Kyu⟻8}ב4]4<%u4tTٶ4k4j)4glݶ맖4tun.u󜎩huӜ襁nO4TTTT ~ uӜ",4uߛuӜ2.49Ou )f鶵4W u 2uM UҔ"4wsuzP,4_u-ݖ4}LuHu璖4;Qu2u󜎄HuӜ+uӜb2>u<Zu4̑ruӜ!ku󜊜jj)iuӜ/ֵ_=4nuӜx"9u-DuTTTT q׽4?UUU4$!U4(BUmkUuq u*u4Wh|u (U{~ӜMkWmk%ӜUUXq4GʪUBsuZ U4Z_UuZUUuiJUUUiJuL4TTTT 4$,C4 _W84\_]uZ~U1UUE)UU$!U4E)UUp cE)UUZE)UuU`{E)UUUIJ!UBUe)] 99W cU}! UUQ,cIJ(Z9|+ue) UӜ9W_Ӝ9UZWU4Z_UqRZ+"Z]mkBz ҔRumkIJ* cRrĶzZIJiJ UUU4',o,UTTTT AUUUbUUUyAUUU&AUUUjAFUUUAUUUAfAiJUUU IJUUU@ u ʢ[uUuӜx|u (ѵ4iJ@MkIJ?ݕ,cRR}T c%u{^+u9W4(BU4IJU(B^P,cB{Z1Z9 |9_*4(BUqRU݃,cUeU{ cUӜZuWqZ"Y]]0ZOw,cIJi,cB]s(B^wUZe)תRE)*ՊRE)WU1]U u$!-u~UTTTT be>9AUU 0AU?/49jRοRWp.rU$!@@@@ u{14Z[u󜰡)u/u#>󜣝uӜȃu44iJWVT\,cR+=,ciJ*. ,cR*d,cZtq c+UUUBqIJs c^{CsR|QZzxU0ZUU cUUUsZ WW cR( cR Z9 zZ1UZE)WR w{_+1UUU*Ue)UU4E)Ue)TUUUuzc;4TTTT b#.! ?R$!+(Bbܶ{!Um% c%׽9=ղ8 qo.0!@@@@ ׽4oɶLظӜuP]umkUuIJ_u(BUe)UWuE)UUu1Uꀲf14iJ_UU9UӜ(BUs9\Zf1iJwU,cIJªmkZEg cIJ,cB {R"UMk!f1}UiJE)|W0E)UUU U$!UU׽$!u󜯧̖.yӜ(u󜲊 u&u󜦪 ?~UTTTT bq`bUU-$!UYP`Rbb$! hiJ8Z ~պ$!Ԗ4cUZuW@@@@ Ubue44U~}׽4k4.׽u_G44Ǵﺭ4:8<Ӝ`4ڲmk~ u9U9uiJu_(B4XUUuIJ uIJZe)UUUU$!9uXUUUUU]W趵48Z484toζ6˶4J׽4wݙ~I44:+43TTTT 4su 4$!PXX,c~[/s%xf10U) (Qf1X={uE$ꊨ׽4ZYU@@@@ ׽u,׽uyDUu׽u4?UkoU{ļ4䨶u UUhU_YU׬4ut4u߭81uw?׽uNƨ4߫׽u4Uu궵Ua; UeU;>UuzudUy/B׽u9guuYܖ, U_US84TTTT U9B[1]U!\ c!6{1Uz,c?oE)P^>"-׽4zuyu:@@@@ Ӝu/"ƶF_uN((uAuUʩ u;nBkuYU+;&U;*8uw8ukX Uع"u|¢~u겤8Ɩou& rQuu2u uDYΖUu9U/8ƖoǵucFU*u͏8ƶ}ZUn(uű"TTTT (B!ci19~~iJ1VpK9ߊR}y-iJ&bHIJ  YΕ+8ƶ@@@@ 8uc*YΕYζvj=8uƶ,8ƠJb8uyuX8ƖI284J8Ɩ>uO" Yζ}wYζ]8ƶ3t?8ƶYζw}7zu`8ƶ3o8Uj 8Ɩv8Ɩܿu*8uϯ8u/8ƶeX\8ƖYζ}SW8Ɩwx*4ƶ欬8ƶ׼ƶeƕ⺢8ƶXƖj3YζTTTT s-=Q!>ҔAW55e)$7UIJ _XU]WހU (^} ﵀s`Ӝ__~\$!A71bzrb ?.!TVWV UߍuӜYʖwhhuӜW7Uq Uq"*~SѶ@׽Uٶ*-u7L"]|]׽Ӝ_ ׽oW3<jjj` %;߂ ! ?7e)ނE)^ #e) $!A|xx * /e)A5_׺֢-Uކ1-54|4EYβ54@@@@ `<,c 9Uy- }4]4 }]4uyӜU~XWӜQz+/Uq]U 0(4UV Wq_Uusז0}y}Ӝ{(w]um{Ap`(BՆ1VTVW qӜQDsӜ=JQ1``@@s{4E)Z$!^Wq!U/E)U Ӝ%) 5suuZ$0UQU]Ҕ@@@@ Q%%%%Ӝ0~iUQe c@iJbTVVW * !-z!% 0/Ֆp? W׽q_u[}q[Zyήsj UWyU4$!XppIJ5-Z <璔U0U{quU4{u{Zƒ--UQu{^wusXQsmkߩ{*sݲf c`p`XB!TTVV q {cⲔ{- Ӝ{`/QՕؒE)XVU$!UUUqE)}]?q1/ ujR*4p3u0Ҫ*u%'+#"j4{ h{oe)~q@@@B {%%%qmk]uQ c*}Qbz!z /iA59ÃR$!_umkE) }ղ9 UUӜ9UU9*UUu9U1U8Ɔ1 UBUu9ZQiJs{jWs]qsXV{_U580UU{{80U Yq}u{{rqsxrs`0sܺ0Mkן{ csxX{Mk0Mk~ V^^X q0GP/zf{ !@`XVq!U5 qZ {q{$Ӝ0ַuQ2U0<qVӜ014 4 cmkڻ6hnnl s %%U cZUU9Ap^W Ba/+*!A51A]ݯ1 .(BE) IJE) ^A9~9 = 9$!%9. ަ19$!#9!-W9!SkiJ%)U,cE)*__nse){E)01U4BUU1(U9UUU9 UB UE) cU{ c*,PMkLcvn{,c# qmk kXxxzAVVVV q{Rq{0!@Mk!Օ%q{+0r͚{~/0Β{N-^ٲڀ c*YӜZ{ͫ4/_Ӝ{ys@@@@ APP$!AUe)A1!__\~b-ck^AW%!A)!A"^9 }E) _~!A( + 1&f11!][9U11b9![ۦ1!noU=1!"1!b֥.9!+IJE)~B!*IJ$! BE)./91w)JE)/9E)BE)v9E)(>iJ9sIJ)s cH0R+R _IJ,c!`@ mk,c-50sH01pQe)F󒔎sq{2Ӝ{3^{0]_U{qmkuMk(YMkz0 cmQ c>}U@hjJ %UUE) 9UE) _U$!WUAhU +UUuU U #UU%)*UE) Ue)U!U!U1 U1UE)UE) }UE)U1"U9 UIJ!WU1"UIJU9U9*U9U1* U1UBU9 U9U cUMkUbU cU UQU {qmk{[0s){q{?Q{04q{"{]+qs".QmkZq,cvUMkPwW{,cg+{,cO]UmkZmkZgmkZ*N,c@@@@ 0{VQsq{]=q{ҺQ{|kq{rӖ+QZx,cXW_{Zs cӰpmkR sZsJ.jq c]Uu cUUUTsZw{mk`@@@ 0גuQ{=_ oQs>Qsk,0 c"^Zh{Z-{,c=ڮsZWWMkZ}MkZ]mkZ cUUU cUUWTsZ cUh`@C {q{+({c0mkc{Z﷮sR sZ"o_{RWMkR,cZ}Vi,ciJMkR:j,cR*MkRr{jR,cZH$9N,cZzW c@@@@ Q{ Qs ch`zPsZ?+zmkRh,cR?Z,cR,,ciJ"ʻ,cZUJi,cR2} ciJⰪ6 cR3c cR(sRן cR` cRZ@@@@ U0UU0U cUZUZUZUZU cUUZUZUZUZUZUZUZUZ@@jU @ qUUU qUUUUUUqUUUqUUUqUUUqUUUqUUUUUUQUUUqUUUUUUqUUUqUUUqUUUUUUqUUUqUUUUUU,cUUUT T u4j3u4j/u4jyuu4c듢u4P*-u4M'9u4[u4)pHu"u4Zu4u4u4aimu4(X4Ͽu4z)u-u4i{TTTT 4 u4vzu4#u4K҈u4)/49^uGu4!uY떵4}u󜚠{U 5u4:ĩu4eu4/u4E=u4#u3`uk軳{TTTT U YMkrT1WT%)U~4e) UU4%)UuE)UU4!UU4E)UU1RUU41uUZUUMk~U4,cU4ZUZ4UTRU1TUUUX{TTTT bUUUAUUU 1UUU 4 u4~U@ u4}TRXPp`ZMk@Z UUQIJW IJ}mkRUIJUZU#_U{IJ9UmkE)1U 41U49UT1 {TTTTa!M*(BAU-se) wQ%)J(?ӜmkjJ@@ u 4us^uZ_ue)U uBURuUUuRu_RUuZUUWUZUUuRUzu9_U*U$!U/u{)4u4u4j!4{TTTTbU-$!||U1 wRruu u{jh@@ u_(u~׽uUU]׽uz޳uUu׽T+ U8׽u ׽uuu׽Tꠠ_9׽u*uwuׯ0TTTT9Q9^.8qE)Z *uE)6**q*Qjh@@ ׽ UֵUֵUUUUUֵU׽UUUUUUUUU׽UUqTTTUbUs"UӜ U4UU *UYU U!U+/E)U**%)U" U\,cAUWU UU+U]U}UUU*<U]U}UU}UUmkAUWV\E)U41ZURU4iJU4IJU4IJUUiJUTZUYΊRU /?E)A-E)hsUUY΂UU^p֢%U<B yո׮YW꠾8Uyջ }u*9}{;w׽V\\\9 TTWWU{UWuӜU4Z@4(B/4RP c5)Ӝ*ޒnh`h i$!b E)վ1 Rz_WzUW1 z1 }Ҁ}].g<箨ھ<\ެ*}!\\\\!AWVVWmkӜ{ݒ{40%U1709XX\VMk0 uq,c@Bj TTTbUUWTAٕ3%)=^] %% 6~ຫz}@]U }<q<狚Y}־ޠU<z <^ye)`@R!W!WTTVZ !0s{?}WWmk jmk!(,~s$!{U 40U,cj@  %aXpTbUUWTA;? XU_Y( ]1z1WU8Ɔ17=U(BUUU]4"}yu)\` !UUU9*UUURUU{UU @ QVV1UUX ׽b UUU !U5UQU\P[// sc_hint_false.sqf sleep 6 ; obj_sc_hint = false ; publicvariable "obj_sc_hint" ; If (true) ExitWith {}if (blufor_vts) then { _joueur = _this select 0 ; _no_joueur = _this select 1 ; _choix_cam = 0 ; _corectif_house = 0 ; if ((daytime >= 19) or (daytime <= 5)) then { camUseNVG true; } else { camUseNVG false; }; if (local _joueur) then { if (respawn_carceral) then { _cinema = false ; [_joueur] join megagroup ; call compile format ["joueur_noresp_viv%1 = false ; publicvariable ""joueur_noresp_viv%1"";", _no_joueur]; titleText ["You are dead", "BLACK OUT",1]; sleep 4; titleText ["You are dead", "BLACK IN",1]; cutText [" ","PLAIN DOWN",1]; While {boucle_cinema} do { for [{_i=1},{_i<=25},{_i=_i+1}] do { call compile format ["if ((joueur_noresp_viv%1) and (alive joueur%1)) then { minim%1 = 1 ; if (vehicle joueur%1 != joueur%1) then {minim%1 = 2;}; target%1 = vehicle joueur%1 ; _choix_cam = (random 3); _cam_x = minim%1 + (random 30) ; _cam_y = minim%1 + (random 30) ; _cam_z = 0.5+((random 15)-(random 15)); if (_cam_z < 0.5) then {_cam_z = 0.5 ;}; if ((_cam_x < 5) and (_cam_y < 5) and (_cam_z > 6)) then { _random2 = (random 2) ; if (_random2<=1) then {_cam_y = cam_y+5 ; _cam_z = cam_z-6;}; if (_random2>1) then {_cam_x = cam_x+5 ; _cam_z = cam_z-6;}; }; _timing = (4+(random 3)); _nObject = position joueur%1 nearestObject ""house"" ; if ((_nObject distance joueur%1) < 30) then { _cam_x = minim%1+(random 2) ; _cam_y = minim%1+(random 2) ; _cam_z = 0.5+(random 30); }; cutText[name joueur%1,""PLAIN DOWN"", 1]; if (_choix_cam <= 1) then { _cam = ""camera"" camCreate [(position target%1 select 0)+minim%1,(position target%1 select 1)+minim%1,_cam_z]; _cam camSetTarget target%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 2) and (_choix_cam > 1)) then { _cam = ""camera"" camCreate [(position target%1 select 0)+_cam_x,(position target%1 select 1)+_cam_y,_cam_z]; _cam camSetTarget target%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 3) and (_choix_cam > 2)) then { _cam = ""camera"" camCreate [(position target%1 select 0)-_cam_x,(position target%1 select 1)-_cam_y,_cam_z]; _cam camSetTarget target%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; };", _i]; sleep 0.1; }; sleep 0.1; }; camdestroy _cam ; }; }; }; /////////////////////////////////////////////////////////////////////////////////////////////////// if (opfor_vts) then { showCinemaBorder true ; _joueur = _this select 0 ; _no_joueur = _this select 1 ; _choix_cam = 0 ; _corectif_house = 0 ; if ((daytime >= 19) or (daytime <= 5)) then { camUseNVG true; } else { camUseNVG false; }; if (local _joueur) then { if (respawn_carceral) then { _cinema = false ; [_joueur] join megagroupe ; call compile format ["joueure_noresp_viv%1 = false ; publicvariable ""joueure_noresp_viv%1"";", _no_joueur]; titleText ["You are dead", "BLACK OUT",1]; sleep 4; titleText ["You are dead", "BLACK IN",1]; cutText [" ","PLAIN DOWN",1]; While {boucle_cinema} do { for [{_i=1},{_i<=25},{_i=_i+1}] do { call compile format ["if ((joueure_noresp_viv%1) and (alive joueure%1)) then { minime%1 = 1 ; if (vehicle joueure%1 != joueure%1) then {minime%1 = 2;}; targete%1 = vehicle joueure%1 ; _choix_cam = (random 3); _cam_x = minime%1 + (random 30) ; _cam_y = minime%1 + (random 30) ; _cam_z = 0.5+((random 15)-(random 15)); if (_cam_z < 0.5) then {_cam_z = 0.5 ;}; _timing = (4+(random 3)); if ((_cam_x < 5) and (_cam_y < 5) and (_cam_z > 6)) then { _random2 = (random 2) ; if (_random2<=1) then {_cam_y = cam_y+5 ; _cam_z = cam_z-6;}; if (_random2>1) then {_cam_x = cam_x+5 ; _cam_z = cam_z-6;}; }; _nObject = position joueure%1 nearestObject ""house"" ; if ((_nObject distance joueure%1) < 30) then { _cam_x = minime%1+(random 2) ; _cam_y = minime%1+(random 2) ; _cam_z = 0.5+(random 30); }; cutText[name joueure%1,""PLAIN DOWN"", 1]; if (_choix_cam <= 1) then { _cam = ""camera"" camCreate [(position targete%1 select 0)+minime%1,(position targete%1 select 1)+minime%1,_cam_z]; _cam camSetTarget targete%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 2) and (_choix_cam > 1)) then { _cam = ""camera"" camCreate [(position targete%1 select 0)+_cam_x,(position targete%1 select 1)+_cam_y,_cam_z]; _cam camSetTarget targete%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 3) and (_choix_cam > 2)) then { _cam = ""camera"" camCreate [(position targete%1 select 0)-_cam_x,(position targete%1 select 1)-_cam_y,_cam_z]; _cam camSetTarget targete%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; };", _i]; sleep 0.1; }; sleep 0.1; }; showCinemaBorder false ; camdestroy _cam ; }; }; }; /////////////////////////////////////////////////////////////////////////////////////////////////// if (inde_vts) then { showCinemaBorder true ; _joueur = _this select 0 ; _no_joueur = _this select 1 ; _choix_cam = 0 ; _corectif_house = 0 ; if ((daytime >= 19) or (daytime <= 5)) then { camUseNVG true; } else { camUseNVG false; }; if (local _joueur) then { if (respawn_carceral) then { _cinema = false ; [_joueur] join megagroupi ; call compile format ["joueuri_noresp_viv%1 = false ; publicvariable ""joueuri_noresp_viv%1"";", _no_joueur]; titleText ["You are dead", "BLACK OUT",1]; sleep 4; titleText ["You are dead", "BLACK IN",1]; cutText [" ","PLAIN DOWN",1]; While {boucle_cinema} do { for [{_i=1},{_i<=25},{_i=_i+1}] do { call compile format ["if ((joueuri_noresp_viv%1) and (alive joueuri%1)) then { minimi%1 = 1 ; if (vehicle joueuri%1 != joueuri%1) then {minimi%1 = 2;}; targeti%1 = vehicle joueuri%1 ; _choix_cam = (random 3); _cam_x = minimi%1 + (random 30) ; _cam_y = minimi%1 + (random 30) ; _cam_z = 0.5+((random 15)-(random 15)); if (_cam_z < 0.5) then {_cam_z = 0.5 ;}; _timing = (4+(random 3)); if ((_cam_x < 5) and (_cam_y < 5) and (_cam_z > 6)) then { _random2 = (random 2) ; if (_random2<=1) then {_cam_y = cam_y+5 ; _cam_z = cam_z-6;}; if (_random2>1) then {_cam_x = cam_x+5 ; _cam_z = cam_z-6;}; }; _nObject = position joueuri%1 nearestObject ""house"" ; if ((_nObject distance joueuri%1) < 30) then { _cam_x = minimi%1+(random 2) ; _cam_y = minimi%1+(random 2) ; _cam_z = 0.5+(random 30); }; cutText[name joueuri%1,""PLAIN DOWN"", 1]; if (_choix_cam <= 1) then { _cam = ""camera"" camCreate [(position targeti%1 select 0)+minimi%1,(position targeti%1 select 1)+minimi%1,_cam_z]; _cam camSetTarget targeti%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 2) and (_choix_cam > 1)) then { _cam = ""camera"" camCreate [(position targeti%1 select 0)+_cam_x,(position targeti%1 select 1)+_cam_y,_cam_z]; _cam camSetTarget targeti%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 3) and (_choix_cam > 2)) then { _cam = ""camera"" camCreate [(position targeti%1 select 0)-_cam_x,(position targeti%1 select 1)-_cam_y,_cam_z]; _cam camSetTarget targeti%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; };", _i]; sleep 0.1; }; sleep 0.1; }; showCinemaBorder false ; camdestroy _cam ; }; }; }; If (true) ExitWith {}if (blufor_vts) then { _joueur = _this select 0 ; _no_joueur = _this select 1 ; _choix_cam = 0 ; _corectif_house = 0 ; if ((daytime >= 19) or (daytime <= 5)) then { camUseNVG true; } else { camUseNVG false; }; if (local _joueur) then { if (respawn_carceral) then { _cinema = false ; [_joueur] join megagroup ; call compile format ["joueur_noresp_viv%1 = false ; publicvariable ""joueur_noresp_viv%1"";", _no_joueur]; titleText ["Vous etes mort", "BLACK OUT",1]; sleep 4; titleText ["Vous etes mort", "BLACK IN",1]; cutText [" ","PLAIN DOWN",1]; While {boucle_cinema} do { for [{_i=1},{_i<=13},{_i=_i+1}] do { call compile format ["if ((joueur_noresp_viv%1) and (alive joueur%1)) then { _choix_cam = (random 3); _cam_x = 1 + (random 30) ; _cam_y = 1 + (random 30) ; _cam_z = 0.5+((random 15)-(random 15)); if (_cam_z < 0.5) then {_cam_z = 0.5 ;}; if ((_cam_x < 5) and (_cam_y < 5) and (_cam_z > 6)) then { _random2 = (random 2) ; if (_random2<=1) then {_cam_y = cam_y+5 ; _cam_z = cam_z-6;}; if (_random2>1) then {_cam_x = cam_x+5 ; _cam_z = cam_z-6;}; }; _timing = (4+(random 3)); _nObject = position joueur%1 nearestObject ""house"" ; if ((_nObject distance joueur%1) < 30) then { _cam_x = 1+(random 3) ; _cam_y = 1+(random 3) ; _cam_z = 0.5+(random 30); }; cutText[name joueur%1,""PLAIN DOWN"", 1]; if (_choix_cam <= 1) then { _cam = ""camera"" camCreate [(position joueur%1 select 0)+1,(position joueur%1 select 1)+1,_cam_z]; _cam camSetTarget joueur%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 2) and (_choix_cam > 1)) then { _cam = ""camera"" camCreate [(position joueur%1 select 0)+_cam_x,(position joueur%1 select 1)+_cam_y,_cam_z]; _cam camSetTarget joueur%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 3) and (_choix_cam > 2)) then { _cam = ""camera"" camCreate [(position joueur%1 select 0)-_cam_x,(position joueur%1 select 1)-_cam_y,_cam_z]; _cam camSetTarget joueur%1; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; };", _i]; sleep 0.1; }; sleep 0.1; }; camdestroy _cam ; }; }; }; /////////////////////////////////////////////////////////////////////////////////////////////////// if (opfor_vts) then { showCinemaBorder true ; _joueur = _this select 0 ; _no_joueur = _this select 1 ; _choix_cam = 0 ; _corectif_house = 0 ; if ((daytime >= 19) or (daytime <= 5)) then { camUseNVG true; } else { camUseNVG false; }; if (local _joueur) then { if (respawn_carceral) then { _cinema = false ; [_joueur] join megagroupe ; call compile format ["joueure_noresp_viv%1 = false ; publicvariable ""joueure_noresp_viv%1"";", _no_joueur]; titleText ["Vous etes mort", "BLACK OUT",1]; sleep 4; titleText ["Vous etes mort", "BLACK IN",1]; cutText [" ","PLAIN DOWN",1]; While {boucle_cinema} do { for [{_i=1},{_i<=13},{_i=_i+1}] do { call compile format ["if ((joueure_noresp_viv%1) and (alive joueure%1)) then { _minimum = 1; _target = joueure%1; _choix_cam = (random 3); _cam_x = _minimum + (random 30) ; _cam_y = _minimum + (random 30) ; _cam_z = 0.5+((random 15)-(random 15)); if (_cam_z < 0.5) then {_cam_z = 0.5 ;}; _timing = (4+(random 3)); if ((_cam_x < 5) and (_cam_y < 5) and (_cam_z > 6)) then { _random2 = (random 2) ; if (_random2<=1) then {_cam_y = cam_y+5 ; _cam_z = cam_z-6;}; if (_random2>1) then {_cam_x = cam_x+5 ; _cam_z = cam_z-6;}; }; _nObject = position joueure%1 nearestObject ""house"" ; if ((_nObject distance joueure%1) < 30) then { _cam_x = 1+(random 3) ; _cam_y = 1+(random 3) ; _cam_z = 0.5+(random 30); }; cutText[name joueure%1,""PLAIN DOWN"", 1]; if (_choix_cam <= 1) then { _cam = ""camera"" camCreate [(position joueure%1 select 0)+_minimum,(position joueure%1 select 1)+_minimum,_cam_z]; _cam camSetTarget _target; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 2) and (_choix_cam > 1)) then { _cam = ""camera"" camCreate [(position joueure%1 select 0)+_cam_x,(position joueure%1 select 1)+_cam_y,_cam_z]; _cam camSetTarget _target; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; if ((_choix_cam <= 3) and (_choix_cam > 2)) then { _cam = ""camera"" camCreate [(position joueure%1 select 0)-_cam_x,(position joueure%1 select 1)-_cam_y,_cam_z]; _cam camSetTarget _target; _cam cameraEffect [""internal"", ""BACK""]; _cam camCommit _timing; sleep _timing ; }; };", _i]; sleep 0.1; }; sleep 0.1; }; showCinemaBorder false ; camdestroy _cam ; }; }; }; If (true) ExitWith {}OggSb&BvorbisDOggSb&Ӥ0vorbis Xiphophorus libVorbis I 20010225vorbisBCV+k-:2b RL!$ZkB I ( Fh! D(ie,\)f9x: f[YhjW |BރA!|>s>k9{B\s5s B蜃A!ރA!B]{=>|A!t>!>!B!|> 9 |B!t=!Bs9ރ=k͵йXk t֜{=c{BZc5߃b9!5Z{=s5ךBk!|B]{B!BkAsϹ!לsA!ι֚sB!t5֚s>[-{[1b )kAakK)X{BZ[֜Bc9еXk= t5B{9ϵ>!|5|Bk5s>c91Z |LbAaS)%Zs XJI-{:RR5!-b9slk>c{\kι߃AksA|k眃1k1 tLZ5K)b B)V1BI1מsLPZ[ !kJ)ŜsйƔZs5c9kXst9נs= |Zc1R*Z :RJ)%Ԃ-tB%k sAi1BZ˹1 Xs1AI1tmZ5akK)k[k-5c9{9ךsA{1{BZ5Z1Zk-c !JI)BcR)j%TJ1(\k+bJ9SbιTB()Xs5Rjlmc:`cm֜{֜kBXk9l-k1JI[ 6JIrm%tB`SbJj1T:b칥1 X{mAI1֜klRR[J)Vk>Zk1|5[͹ tε֚k>!l5k[{1b5`c+Z1VBZ19{K%tAH1\[ sPRR!k͹TJ)ZR1smj9\c1sAc9֞s5 |\s9[k-XsTRJXlRJI-[ !PR5ǔJ!k5RBs-JjklZ[JXkιZ|9c5{5k=k9܃s5c5clZ5R*)sͱRJ))Řkl-JcKZ[*kƖJJ)Z{RkkbA\kls=cl9s9 t5\s 6k5XkεZkŚsR`cKZ5S)b=RIZ1Jj-֠kl-Z5XcKs=[k-ރ5c9k5X{߃܃\{9Xc5acb̹cK)k 6ƖRJXRj1֞cl)ZcK)j9ZJZ5RsZs9sm܃йZsAރ>{>!t֚s>k5{[k-tR5\k-ZZcJ)b RJ)ZTRj-`c-Z=\[kZck֚kAkA2TvBCVc1#1c1c1c1B`1c1c1s1c1c5cb1c1Bs-\1c1bZl0c1!Sbb1sL)RK-1cm)JIs,c5kK)RRc>b5JJ1b1{-TBI)1`t-TJR,#TJ cJkc.TB)cJ1()^1R)c Ԃ1[J1dbJEZj)TB29(kkZJ%tJ)%`1RJ:ԋ0RJ1RsPZ06\S()clBs+R sA=]cKJ=`|c5kF"Ec1c1ccD~9A{Y`@(bh8i~iWhjW9q'RcJ)RJ)#QJ)RJRJ)22RJ)E)RJ)aQJ)RJ)c2F)RsPJ)2眓RJ)eRJ{I)2ܓR(cR!QJ)0RJ)'RJ)(RJ)#OJ)RJ#QF)eQJ)ߓRJ)s5פRJ {5)R>\kOJ)c6^Fc9{\s/J)(RJ)#J Q{F(RJ E)RFaQJ)e>!RJ a|BRJ{9)R^sMJ)5ךRJ s椔J\k{/Ɯ{AsQJ RF)RF_(#tPJ)eRJ)2Fs>)c>|OJ)-\RJ)c椔RBXc=)֘{/F1 tBkA(XsOJ)s0J)eJܓRJ !9e>#|B)JދOJ)|еRk礔1Bb(-cNkk^^cl9aj0!|RF!mR(%6:|c|sPF#=!2J({ABZk9)e1ZkM_[JX2:VJj-REხփ1s-c̽'!t>XsQc2Bs=_kEZ|se:{:{ιZsM_kזJ1 NRkR rPJ$|֘Rj'{ιrJsεsQkAsƚs\k{FXk59[{9Zj5Xk+RZT:| tL%T RA\kL%V{cK-|5[9){ιV{1F)栌Pa|9RZcbεbkZk-R R*s52%kLCF9AS Qj:VB|5Bk-cXc19c%RJc0褔F|5)#Z[Ls-V9RJsRJEcKr2ƖB`1P)&'#tmt R^kKsѹZck-bt5kE)k-{QJ)R(NJ(E\2Fs5d1Zk(c1s]kkŢƖJi5(!t-Z][*sT2>RĠtVJI1)sZ.J{5k͹QJ)eRJ eRJ E)1:ct2J)ͽ瞔Q_k͹'e>s(s)R[ !֠92G1({I,sT9kLtA\cI)%֜RJ)R(RJ)RJ)RJ)%RJ)RJ`RJ)1`RJc|9Q[(5Rb.s%T2]c !ՠBi5)݃jO!^2^s=(RJ)RJ)RJRJ)1JeRJ)2F)RJ)I(RރRJ)9QJsQRA(eb/`|αؓ9(!|0J{(eϹaRr@<ӵ})4d%@8J79Bqf A2$ V2АOggSb&?](D bQL0BJ Ri*sHYL%ta 4dE@b2J!Ƙs9s9s:J)JT9B)%A p Y @J1sN1sNJ眔1s2 J !1s9B)!R:J !RRj-ZB)!RJ*Z˜9sB!BIs:tI(JIsB眄9(TJ )R TJI)bJ)JIJ))TZJ)9sBB)!: tI蜃JIRRA(sB)R*%TJI)RJŔR!J()RJ)ŖRi-R)BJ%SJR VJI)cJ)JJB))bL)Rj1cJ)b1ZSJTZKb-c!BJJJZ %TJI)RJ)R!J))RJZ1Zj)ƔRŚ[k-ZKRjXkL(RcR14)ŘsJiR) R)ŘsJi)R1 RŘsJi-Ɗ1 ZsJi)Z; ZRj-Zs!Z\Rj-\{Z{6pR4XhJ 4R1ƜsB PJ)JJ)RJZlc5Zk9s!FXJ1Ƙs9BRJ)RJ)Zjb1kZs9sAK)s9眃BRJ)RJ*)RkZl1Xc5Zk͹{=1sA!J)RJJ)RJZk-c1Zk͵ss4Ɯs9!B)RJI%RJ)Zk[1Xk֚sι{ދsBRJ)RJ)ZjZ-bZk͵sν{= |sBRJ)RJ)RKZkcZk͵s{!OsB(RJI)RJ)ZkZ-cZk5ZsϹ{A|sBRJI)RJ)ZKZc5֚k\s=|b|PBJ)RJ)RkZkb1cZk5^{ι|{0BB)RRJ)RKZkZ1c5֚k9s={ 1eB(RJ)ZkZkc1kZs5܃s/B LRJ)ZkZ[1c֚ksνs{1> !|Rj)Zk[l1c1ZkZsεs{A({QB!RJ)ZkZ1c1Xc5Zk9{{P>Bc0RjZlc1c1k5Zs͹瞃ދ%/ʔRJZkc1c1Zk5Zkι{AbP> eQ¨Rjcc1Xc1Zk\s{AJdP(eF)RjZk1c1cZkk9tރ!!JRjc1c1ZkZkZs͵瞋$OF cRF 2JTJZ1cXc5Zk֚sιt|R'_c0Fekc1XcXk5Zks{A !P(1J%rc1kZcZs͵k9tA{FP%Rc5XcZkε֜s֜sמ{=1FQF(2ʵc1XkZk5ךsεs=sA'tB(a0JeRJbZkZs͹֜s9st = %PF F(cJ)Z1XkZk5Zs9ךs{{'!B#2FRF)%cZk֚kεsι{9ރރ> ##QRF%d1Xkk9\k9{Ϲ{!A(c0JPJRJ(Zk͹\kZs9s9{>!0BPJ)RJe1Zk9s5Z{9s9{݃!QcQJRJ)2Zk9sνs=s9ރ=^t$QB RFcRXc5Zk9t9sϽ{1QJ#J(2Jks9s9܃݃'/#FRF(eRJ)R(YkZk9{s t|_RJ(cQeRekלss9|E{>#1J #(Q(%RJ)2J)lZ{9{{|(2(2J)%Q(eRJ){νssν{B"|P>(_1"0J)cPF)e2J)\s9\st{sF(J(P(QJ)R֜sι{9^t`0>0B %PJ)eRJ)R(R֜{9s9|||_|cPJ)2J)R(RJZs=s |{/>0J 1B PQJ)RJ)1J)]k9{.:|= ||(_|Ac1(eRJRJ)eRJ)es=s!/B !RJ)RJcRJ)RJ)t9s"E^/{1F(aRJ)c1J)RF)2J)ι{{#>d|0(RJ)RJ)RJ)9{{|a|B(Q(RF)R(RJRB{ н!|0FQJ)cQ(%RFQJ)RJ)R{{#|c0PB)e1F)2F)QJ)RJ)RJsE O!|21Fe0F)RF)2F)RJ)RJ)sA/߃F`AJ eRJ#RJ)R(RJ)|ރA߃Pa1B#0BeRF(%QJ)eRJ)RJ)RJ)|9{/>OF`P>(a2J(c2QJ)RJ(RJ)RJ)9^|E Bed1BePF(QJ)RJ)RJ)={PB|e'Qc2F(R(RJ)RJ)RBPF!%FaQB#QJQF)RF)eRJ)RJ)R{E/Bb1c1F)2BRFJ)RJ)RJRJ){(a1B#J(cRF)eQF)RF)RJ)RJ)RJ)RF)!|F c!0J)#R>Bc0(RJRJ(RJ)RJ)%|B(#1e2Fe0QJ)!RJ)RJR(eRJ)RJ)!(%PJF cPF)2(R(RJ)RJ)eRJ)>)a2BQJRJ RJ)RJ)RFQJ)RJ)2Bc0RJ !1J)2J)QJ)RJ)RJ)RJ)R(RF|QJcQJ)1JRJ)eRJ)RB)eRJ)RJ)RߋJ!|QB(cR(Q(2J)RJ)2J)RF)RJ)QJ_J#2J)eF)eRR(QJ)eQJ)eRF)RJ)RJ)#P(_RBR(RF)RJ)RJ)RJ)RJ)RJ)RJ)%0a2JPJ(a2J)1J)RJeRJ)RJ)RJ)RJ)aJRJ)QJRJ)RJ)2J)RJ)RJ)RJ)QF !2J(RJ)R(RJ)RJ)eRF)RJ)RJ)RJ)R>)%PB)RJ QJ)2J)2J)RJ)RJ)RJ)RJ)R(eQB 22J)RF)eRJ)RJ)RJ)RJ)RJ)RJ2B RJ)#QJ(R(RJ)OggSb&<+RJ)RJ)RJ)RJ)RJ)cQFcRJ2J)RJ)eQJ)aRJ)RJ)RJ)RJ)RJ)aQJ)eQJ)2(RF)%RJ)e2J)RJ)RJ)RJ)RJ)PF)2J)#1J)RJ)RJ)eRJ)RJ)RJ)RJ)RJ)RB2(RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)2B)Q(QJ2J)2J)RJ)RJ)RF)RJ)RJ)RB(2J)RJ2J)R(RJ)RJ)RJ)RJ)RJ)RRJ)eRJ)RJ)2J)RJ)RJ)RJ)RJ)RJ)RJ)eR(Q(c2J)RJ)R(RJ)RJ)RJ)RJ)RJ`uJT5j\ydilwYt7I|:!(*#yH%9h '*4dbA!RJ)c1sA B!RJ)ZJ)blb-;$B %B)JJJK-Rk-ZRkSVcl1V[5Xclc1Z[kckZk5cXc5XkZk5ZkkZc5ZkZk5ZkZcZkZkXkZkZkZkZkZkkZkZkZ |p0X2cʊ-#lX3a΂=W4_zMEmW5]r]ÅV6[jmmV7Yb}U8WZcEnU9URCT:SJ#nT;QBSK*oR?I"Q@G dDpQAEDPBC -$pPCA=OD?LCqOE=\ăNF;lqNG9|MH7"یdCrMI5&ӜDLJ3*ˬ$rLK1.üKL/2BsKM-6ĂJN+:sJO)>IP'B eBtIQ%FEHR#J,%tHS!N<GTR{LAuGUVs\ŁFVZkluFW^c|EXb[eAvEYfSEDZjK%vD[nCC\r;@wC] v3ŀB^ z+wB_ ~#A` f@xAaF@b ,&x@c<YhȊ N09Ę1)B)EIɜ9GcI)ƈ1)s2(b,)JicI)c1֜C)b,)k9ƘsĘ BJtJJ1b Ji-ZjZB)RZK՚ZcjZkbL՚Zs51)s2)b,)ŘAH)Z(ZZ3)RZ Z5VkI)ZZkZs/)ŘZ5VkXkϡKJ5jk͹TcjZkjL՚Z{Xcαc{н!k9s{ D)1b-)k9ƚsI)ZZkZs/)ŘZ5VkXkƜkZ{ϽsB֚sXk |0`B(4d%Rb9R9b9R9!c9T9B)A (pASbqBCV1 1sJI)"b9Z16)ŘsJIcb9Z\)ŘsBIk9c9Z9{ƘsJIsι9Z5|sJIk͹ <Z5{BxJIk9!Zރ#JIkͽ QƤZcIs`0(Z9ރRZs=!QT5eRNs!1Js܃eRJ)j͹ 0R#*-N3<G2L@r(b1 PJJ)UJ)cAZR1ƜB))V)c9RjRJ1ƜsB))Zc9!RRj1sBZkc9!RRj3ƜsBZk1v9!RRJcsBRk1BRRJc5B)Rk1Xk(RRjc5PJ)Rk1XkΥRjc֜K))Zk1Xk9Zk-k5לsO)Zl1Zk9Zk-k5{オZ1Zk9{@FTZf\y(d Y D0)Řs9!J RJI)RjH)Ɯs9!RJ)RJ)Zk1)Řs9!RJ)RRJ)Zk+ƜsB!RJ))RJb1XkƘsA!RJ)%RJZ1k͜sB!RJ))Rkc1ZksA!RJ)%Rjb1ZksB!RJ*)Zkc1Zk9wA!RJI)Zkb1Zk5B!RJ*)Zkc5Zk9A!RJ))ZkbZk9C!RJJ)ZkcZk9s!RJI)ZkbZk5s!RJJ)Zkc1Zk9{!RJI)ZkcZk5s=RJJ)Zkc5Zk9{gRJI)Zkc1Zk5{RJJ)ZkcZk9s^JI)Zkc1Zk9{ LJ)ZkcZk9{I)ZkcZk9s{0Rkc5Zk9{RjbZk9{ ¤RkcZk9s˜RjcZk9{BRkcZk9{!cRjcZk9{ BcTkcZk9{ BcjcZk9{ B#Qc֚s9{Fc1cZs9{ Ba1Fc֚k9{Ac1ƨbZk9{c1JcZk9{!Bc1FbZsι{!1(\֚s9{= 0Bc1JcZs9{!Fc1er1֚s9{!0c1J)2.Zs9{=B#2FQFZsι{A!cQ(RNZk9{!#1JRF)PS%YaOhpKxɇGhHC) BCV BJ1Ƙs9!BRJ)RJRJI%RJ)Zkc1kb1眃BRJ)RJ)RkRJZkc1XkZkV1sB!RJ)RJ)RjRJZkc1kZk51 B)RJI)RJZkZk[1cZkk91會B(RJI)RJZkZkZ1cZk֜s5; B)RJ)RkZkckc1XkZk5s9sB(RRJ)RjZk-cl-c1kZk5s9s PJ)RJ)Zk[1c1c5Zk֚s9s={J)RJ)ZkZk-c1cZkZs9sι{=PJ)RJ)Zk[1ccZks9s{gJ)RJ)Zkb1cc1Zk\s9{{B)RJ)Zkc1ckZk5s9{{BB(RJ)Zkb1cZcZk5לs9{9ރ>C)RJ)Zkc1XcZkZk9s9{{`(RJ)Zkc1cZkZk9s9{{=/RJZkc1XkZkZk9s9{AaRJ)Zk-c1kZkZksι{ރ!”RJZkc1ZkZk9ךk9s{߃BOggSb&P,!FRRJ)Zk-c1kZk5Zk9s{|BRJZk1c1XkZs9s9sν{!|c1F aRJZk-c1ZkZs9k5s{B #LJ)Zk1cZk֜s9s9s{0B!J#I)Zk-c1Zk֚s9s9sν{{/BaaQ)Zk1c1Zk֜s9s9{{A߃Fac1*Zk-cZk\s9s={={0 (#1FZk1cZk5ךs9sνs={F!c1ƨZk-cZks9{s{A!0a0#Zk1cZks9ss{Bc12FZkcZk֜s9{{{>!0e1cTkcZk5s9{ރ >!Bc1(rFej-cZk5ךs9{{{= #Bc(cQcZk͹s={{!cc2F)RcZk͵\s9{Ͻރރ0Bc1#2cRƵcZks9s={{=!Ba1F1(RJbZk֜s9{{=A!!1c1F1c5Zk9s9{={A!|B0c1(2HQJ9b1Zk5sι{{ |B Fc#QJ)2F\5Zk5sν{|A!A!c(QRFe1Zk5sν{A!= c%2R)r1Zk9sιs AaB!c1(c1N)#rJ)R2Zk5s={ރB B Ba1(c1FRrNcZk9s9{=B a1QNQ(ʨbZs9s9{{B #1c1Fc1)eRN)Z1Zk5s{A#Be0HcR1J)cTF)ZZk5sν{>!0cFcp1J)R(\1Zk9s=s=|F!Fc1F(g1(rJ)esJ)k1Zk5sι{ރ!B!QePFRR9RR9t1Xk9sν{F!Qeq(R9J).Zks9{=AaFc0#2F)2J*RR9唓Xk9s{aBacQJeQ(R9rN9RNk5{ιރ= |B!0Fc0(Q(RN)%qJ)R9k5s|!|Bc1FPJ)e28eR(e2R9rIb5לs{0B#eQ(2J)#4F)SJ)s9d{ν{B!Ba1c1F QJ9RJ)TJIrJ)锬֜sν|>!0B#0c2F)R(2)SR9sRJsνB#cQFcRJ)R8rNR)TN:'Zs{a0e1c1JRJiRJ:grR*sR))R֚sރF!F1eRJ3F#RN)R:唔JJrZsν{> 1#1FcQiQR)3J9RN:RRIr9kιF#B(c1cQ9SN)r9R9)S9)k͹{Ba0c1)c1J)e4J)I%TN*s9tI%mι|!01RJ)R9rR)%sN9TIR:%9{>#0FcQ(RJ)rJ)eSJ9R9)r9%SRI餳9|A!QQ(c3R)Q)sI'S9)I'sRI)r6{Ba12J)RF)R9%r)4N9R*RN:){aaQ(QN)唔9tR99'SF*'sN:餒ٜ{E!1c2R)eSN)RN:R9sR9)9)t9{A!1e1(RJ)tJ9甒NISI'NJ餔NJ礔N:{aQ1()rJsR)9'I礒JI)tRJtAa1cRJRJ9唔J9%TN))sR:sRJtI%RJ=!1#R2HrJ)tJ9tN*'9)tN:N:=#12(TJ9sN9TNJ'tR:)R:%RJ餔RJta1RJ)r)RI%rI礔9)r)'RJ)tR*霔R 1(Q(SJ9JIsR)'N)sRJ)RJ)RJ)J 182('TR9锓JI'tR:R9'T))RJ餔I)RJ|1(2(RIRJ9tR*霔JJ)R:t9)I)RJ1sJ)Q)'rN*)N*'rNI)9'ItI)RJ)}0J)erJIrR9)JI)R:%t))NJ)RJ礔RJ)N:)TJ))SJ:霔9)TJ9餔NJ)RJ'RI)NI)tRJ)QJ)'RJ'RJ霓RJ)sNJ)sI霔NJ餔RJ)RJ)e2)%sR*rN:)N:SR)'RJ餔N:tRJ餔RJ)3Sʤ*HQK @O#8MMc0K΢(IO G!l EQaLCҠ,, AS <P!"cB!RJ)b1c1Ɯs9s9 B!BRJ)RJ)RJ)RJ*)RJ)RJ)RJZkZkZk-b1c1c1cXkZkZkk5s5s9s9{ι{{{{={B߃A!P> !0Fa00Fe2(Rg3gqR*sN)4(rJ:锑RIIS9RItI锓R:)NJ礔I)tRJ)RJ)RJ)RJ)RJ)NJ)N:)RJ)RJ)RJ)RJ)RJ)RJ餔RJ)RJ)sD8X)@"飒<28Bi4R)0b颖,r(i$) 顚i)頞 򩠟j*"꟢1AjQ*aꞦqj*Ꝫܱj*Ꜯ񪜯k+!뛲1AkQ+a뚶qk+뙺k+똾񫘿l,!|1xAltQ,palqhld,`\XlT,PLHmD-@!<18Am4Q-0a,q(m$- m- n.!0@nP.`pn.ܰn.o/ 0@oP/`po/o/p0 }0y@puP0q`mpipe0 a ] Yp U0 QMIqE1A =09@q5P11`-p)q%OggSb&01!q1  r 2! X b`,C` x( "" >  OggS@"b&l[,4 0(gJ;-a ʙF2ePC&iA4g[=-<-Q'w=n`_Jsto͇xƮnx>nn[qf4:nn %m$SC-l,`CX]c~%b⹙ [z{*i^y;['/b.w%b(N*TݬAkp4^cxeTOj[N&c-45d53JP{P֕x K]NJEJ!.t3^2{f@lb)}ܵνb_[=_[ٰ8,^iUO/ 7XKOlJ`R8ySgƍ`k& 2`oAk|_/V6ī>ﭒ0J̊:didC#cp}AM&,`2FQ-~Ä/ٓeUfdV [W-IU|x)ݦ 1iiNV=쫾!mmǝy$yp^s97re?dpU/G~%ҍ4iSAl G/}P^`PuMM7=ldCt{Og&Sf<򿤦k=nr9:lU)'Phi*'X%kjX5D.0DDGd ;5IG3]Z5|-&{u&AD] >R:7p%[]ggMVs^2`=v&q*UCos}zϒ/qvM~FqÛKsi(H?nT9k$.]J["o|YUs]C\lfS=<"q_Y ,?Ν'v"]#8 ͂(>4a.(.}V{Itݽ~ڧq-]Kz n,'8=8ҼYbB[ zRXHySz'Cgͺ;_X3<k]e.$b[*Y]ՂTN !Zt'6ΞЍlpOi+"uj-qqin!V\J`~JYf~[ /<W0~ ކ|#%kܞ2{uoRB'Nΰ۝JSl֛DVe]߅;ӈ4 }Ύ}@Sp+u79:t~^io,/\ yh9D`%p\n`\b?9}5@6b͆ ڟܱ`đTR7ap6[н6{X;iVq-z!i(WR[Ε9}Ϭnrj)Z鯤j9&Q$n+e\YF w'ŔTmC\IΦxq α\QH@cqJMe{,Q. Ldmw1دsKʖ_()jUTL邍#GoJ%3vȋSy*e2V&ba}(KI>uD Q>v=dSy/g}.mm-7"i)[\ ]]3`o^>w䪒jCJheB^8ߗTg*yCw-3= 2y */Îj02)wuE.;ny/`ktٌNl?%\h/;jCD"N;+űpYyT>8$զZn KLTs7}u& vшr+JG鑔s;eVeӫaA)9W&ln~&:cޏ}kne6+juGf!V OOwin(Z4mVHa=&Q@NA 4'Owr~͗y-O**awr荸S92x?K6v{S9u]yy)[0fpkb'MT}]ߢ ſlY7Z-sWn~ݭ@g9cZd@>MoX(:#ydZϽbWƜٍg5D=1BpWgWIf([GHc"J}k H[dc g~X)-5 U ßSk)c-q-Dw}rFC56Q7e˙f\[nc1qC@_VYu WQۻ_X]S:3+Jnj]2eh}XȨeD dGDqIcP:e)7e\d"N/G+ٱ` NOS!_ίti\WͬImp4DLO@[Kn[1W(Ŕoq^Dt*VyKˤu_%q?WlGJ>fE;­>F=8n?vO,[ zFPe#h'k`PVW6{.}+a\45MrjAmEԸIl"3~Aѳ NE0*OӌvT_;ư*'CGvlgižf*BY͟Vhk=˖cﳇNw/8d%I搗hh߯5Fvd\"q!@lFvjxp,[Xc Y[B$~QU ;{͜([4W5sCvIv4sHOV^wx磻(xS$$Zt#..KOSm6.F]g eg:d4AKF1{YI!ʥpV_Ŧx(,6|l[V\x(ׁ#.\|yCHw/+gՅlK}eu{Fr^lWM1lmċeeMxtƭ*E.͒Rܴ ˘:r4%A&OggS@Fb&gnS HupXri{G|t sė+Wݾm;quQJz_>dY[WvԾAJ6]e]$5O霧-=/3&?߿){XCRZݱ+¶c2'z[ؘ^Ë헝Ayǖ>WaXnfWIyzZݗP(eaQ+%zmCM0 䄫@Z(mKV=00}r}3uΣ[Ҙˋ_bsiorOiuKOM'DqI5f-W0Լ!xzWk2iH9;Z |ͦ]RK{qvU;o9ias΂XhS Jbd 6v,4=Zx%8lǯv#ܶV1qPmc_J5NJj۰-J5tU~}5Ik,vORw'7ra\G7H߀1bV/UvMZ_I{x_>?ۦkW>>EAtMc;$_-BDt LEw:dߖkB <];Dzuߞ5|_EvWs]jk; {eQ¯6uM/jњ~'nBi|*#tg(˜F;{y4 -{3ZfVX"рi^zK?+y7V+LJSjKAS]CaE=tZo÷ox=TW7>~W~yr؄U5-x `"ڴқ(;vk6ʑ|9#rݓ|{]yb*Y5ƈfqa|e?9k^Wbx5' 13&kNGFT\0]voxtS^p{R)%@"H$^[, ^_k&vW[9+>rܑpX[?;\fj }?QsawǼzgKbCsB˾:jޕu.MxaZ7$tes:.iql$UAc&yG%]>m("x"юa]T Z8\qf!N! zSxvkt^w^Ig $X6$TzAeV+Ř%bE{X͞w7֋9U+ݿ/{8E?zIUi=H(5v]hYW=`$J<4-ON.;T''CIs6R~'l* ܄i4JYb$ilJ1+qnn1݅mk.?-so 8}!ΎWYF:(.A/Ǖs_- :~l[,\ApΞz|7LG=YZM=}z sכ[:N}$)XJ1R97~H*7|߬=Eo@q,Ix2~S$f _'FTwa2l}2Q%Ԙjҿ̹~=9VjEHWmL<:y//P|h*|xS#?ѱƾ"*W(Sv1|I!F6lKӉɹ̋='$]Rlj@?edOMJAnL87Mg+&P喓ѥsNh:$VbsJxJ5R4c9Sa}U_yy >pʩ:!"%I[RSwц_;*&, 1C]H->|o|K0 4ooVɳs2|p#Khwfe¯|a:2;=ųx ~7m\y~;sͷc/O3G=z^6~`zjnfE"lT R_31tsʀ f,WJm@AXZ8 D)[ÎsQ|\'ΝR]ys0W:\}y^ 639yce^ғBMi%PF݇B FN|He-VZ)Yuv]\@c1U%>hRz^rsq+h_[zBi %Ϳִ>/`U\/s>s" lJs7^'H֌;r9aN]8-i0{'WBS[]eG)a ^jPv+Jߖwم 6Gnc+߉烊,$7kc΢>vßu-drW͟\OX@!ZvIڤWA-^E~~藦ah0pqIV-w!TS/qzF}(?(U\`mC}}k:eGqb٬-zXE.ʦ?o]^RXe4n- C}x%o4jY@ƐF1j 5fjQ~np֥.Mgxאi.)Udut>m>r-5 hh]'w唊nkK54:Bz*(`4ukߧ[y4*sfO?n}%t4Ӥ]%ֿ}f犡h2Y}OOURoHhTw)\Jg½HʜgPC'\hn#0B:۵)5}>\s PP3ޗL۟F{\{~5&]ZGrV}{ueŨgsQZi:,ҩ0խ,1?[#EawA˳,-mͤSEcDv/w_w5~w[Wkv"x-sJNe_A[s?r2Lursd!9YJE>sw~Nsz4nYEke* ;ե|oIAK MN>ͱhz|DN9?ˣoiTߕ-7Vu"8wX&:k8iQ?"oF7q= 9D\ͼT;Ϗ5͒ dJ7%nIb%N x.N7V4||һR$RMR*)OggS@jb&]0cu)1 rk&_4,w3Ol'1rܝS7mG![M.q^(n?rX{nE7wrV֯s=*^MĨ|3~_A/O9>޺gmỲh~jK󵲜X_zwcE|_+@1]] "%(s4e,6X9fDhr~Y$B*&՗clD;![{~LM&V֤QEJM)Q6NךL(^Gl_0MBO+ɣ^n>m^׏[h\d|aȏ (r-935\|`7Dj,,D.lڽ;UK?Eyl +:@vO1|)zqhbJh\ff"pa5a-e23,._H)џ-j45D/hKJzN-43~G]yz՟cAvK2͡_t i O3{DfyVA+/Cr"ﻅ@{ UK5eXwjy[nx:.=(^._hE%."޺{dC+L=fۡBbDݍt cqȜMOΟ ^cmTF >u:YV8d*r wNv53tOmȮ$TɌ/'GM9U&tfSIʂδ=I¯~}V&+8<_hDyޓz}LLPR!جFsV@Co/sRhj )a!6m;ܥ{bު'U&O\ѓ-4ƚ7L\+v]G[J>3]SC~\6r=kg}sGV6ݹoܚSWYsGzhְY&CqS:jr޴կH4XWdB S1CR57ǃ~F1 j7'< H=Mzjly<8ώݬw{g"p:)nޥ᪘{uHq`=uW-B9ŗ7 8^{TS6Aiq(u"N<gUkM_̈́ (27VZћE;L|"NA=" ]O*'iֽr?^mMxugnai8]'j,RUp]ơIw"3qe>Rlҧvj}MĂsUN^%M [Xhۧ.O\ p]j׺-AK￐Dӿ(H(4~1X7sm@lܧ}Y¹1p5?&@aO{0K}2Uǹڷ:3es27o=—T.c; _M*<¿Nlw>M3*$6]0ƉƣժhSԓ˷g{jkȭ=Uoenna/ z0q@vy23L }Un,ʳ~hsae1kGf#K$" c~#Nr^u$3VG-ș0?Kl,׶Ȥ/P,,pT $ _EhzoUy+ϊJq&:#oo"qdrϏ~G?&4g_5a[sia–IKi d{v5+~ic\|mEkx/4@HޞA/32:$UMλ;;hM};KA :UTLW[y5ڨk~=0wrS߶rK_HqipBlѱ,Sӗ{~`jyIr<:VONsa2.IZېn`0dDžJ\V#wXV*zfiH5dV0̒q{CdfLx.cw$E[ᐤSi\V3%S:;s5Qc fEoW+~MXbXոn7tXTT\|YAw_8yyyś޾\tv?5EA'5ݒI3 T3r:;GB!U;%xoB3ȝs0w6OSOtΜѓ&@#%&Zn:s469V}p0FRfj5\o1 Wխy;գPߜO:7͢ҫXi4z{M+-&ZDރ@+#4'm#g`8F~٪Yn9I0ᴧOMjt񗳯ڗ9eO[m;YlKR5ᢅݹٛ U ukzTh n^ W9==`oŋj>>(wYCG},i]t>Z8 H/ yhh\sZMo-rXX0g1/hx=vP3kY r"v7 w۟ E9TQIʋ7]UNpyV% ):؃i)Wx37Ը<&'۹% qǕG[>iql`ʗAb% T)S)*]ˏ42M6XѤ`Q5c'kk,>ru4ӗ8-h+q5S|CI[{)xQñg:ԭ : &Z]{zI#B7b`Ą]DIt :gBQDiCͺBgozW.^0|HM_PABk_eDfP2~=hw%=op` sXc:|:cm( ;cZnkhyT[@c.{̧<rksUwQGyFPztRTj9H& .dh(jF 9fG!zxP%Ǿ!k#I '䃽bsYٰ%C~7KgY =ho#f=ܝh;aOggS@b& }a>[@u\+O ]$:pɸt (tı;M_֚݃gzXֈrhh5/ [qSITVDʇduKflJ?oMrD$dU#06>x04%I͙÷i%H!/ulԂjc܂@_ Wlw|[K|\$[d4;Ʀ_N0qupoK)ǴnNp8{9הgDwx /ên}>T6 ^J7kۼѨ"q` ?onk&{}7$ K'j+hѪה+Y|>O'RozҸY1Rj*cb?mu3.mq<2]9c{DQc)1zdxzpOތ$Ɋ v8yo +[V-|W'Hux|Lj'ִk ;)r)q\UH2˞w7?K g|shK0Cs= G2 QYr:ƹҝ%+cBe 9 %Pe^*[Eg$7<&&[7HBiQ^^eX!G^*D%rT3=Wa-xDM)K=íw 6z3Mڢ;^@:vtI)5lY}C[9Q""iأ-āVNȥоXaL 'u@seIE_2.W:$K+MH^YݐɪS5{ͯFj ;0SAM`d4 2k;eM ڢ0uue6'7يoȗ ᆰEg?}y=7>V?=߇% .5R kf8OXjW꺕mOyyGRbZga17%ɪn}bmˠQ翥5P:g##Eo+%"X˷)<(9`QBQ+/l|s69 ݣV-;>m㽿$E$! aL?1nHxTDMlkTƼ/bIÔcXPNyjyPL[#W 2 Gc$`wL.63}=rw%X\|>x45ď=U^ "5B *uyHQ `&5dKkvujʹY6gax3ҝ;*W[&}lˏQ/^n'ɳ@΅s\\8p soK~o\;%yqNJN1%bOwt8i-ݦ=v9&)/Hi DZy_P O&vn?KR-Irн`[ST..ㇿhǮy \A肎͹dO+V;:x/u 5ua󘛽Çfs:}u6qbkVor4RxeVuD8'Rt\sZA:ې跟?iuUind{)W4[ nJ|(WXf 5`mT@eF=Г ex ,N:xGOҎF %46Q9%>{QUk~Iq98-s: )my.'xB?Sbv.mMG-iE_Oxf=&:"dSw=gTYuOKmѺp!,cnbn3'00j:0}-Big{=IwO7!Vikrn?m( {ˡW%VvG< fj_ڬaKw.7{X5(iܮTΩNMwvuVG*' __񒟉29"R#-nو'j 퉙G+Jڤ{FvR2 J\B6y8[vTHI'ܱj}wԊow١\} p\/~Ϳs_]B5CrWtө 'ۛmL>|==II0699[~Ȉ9 f6uR9Ӧ$#lu0pQh2l {ZuT2ljUO%yܺzk1J}icۏV+!ʫoz# ټT99jG.BvṊaֆfX3xprV(UTw![>+bu)1.NjrHrbŒ qld؄1\1FhIc4ᩩqjNZTfE8 Z>W cƱ&Dp>tFMgmiGpusL} g?uW,pby_Ā}A'a6F|'_Ofx={gʴv8 JS^% %pF2g8Rg\sxtqQJ]LL,K.ʹQN VbCBh1`'sPPc)y^Էg{]lޘ@<"O^nenj''z'8نj=w'>ݣ`#tvQ5|T8,-6JǓzEk^v4ULGC@ 8589kx%sR= 19p4@{厔DXOXS [%%^4Z"}0>[䢩=2a nfhwmk[ .̙&pƹB2Y:n=Ұ6EbDG?!/?QLYMn*.Ohv }?T8e_;#k{1~ў|r_mtKu ,nUFUWo=7ve%-]t`8P^)FhGZq= ZkfRHSaW_G[U,_ten{]6S8£:f.ntˁO# ԹZKEX5h v 2ќ-'!% ؋7;Ԇj.&4i۩lZP#b z'"sV>FLA&FAĪ:0j1{]Z_n&2c@iCO?<kEdʬw{A)>T daZ\Nvj1tF.֙ll"Ei=\=X.yA;>57%[dn.Gvÿ8\mHht#.ɟXy['I;O0/u-鹕A$yVp4#DSDᲁlQK]ɱ"Wg<~ HtY'ɫGƘ VCQbCk$VP{ ?v=աyFhKw%9Xr]KaIIPlY~e6%8iv#J[M%Ptkr,ů^m:.CaRVFMfeձneєCm{ ;Vi=\94nn' (5bK{Ԟ˓d:[yԼfƌV[֞\rl_oo}d]WRzc5a{+LeD8R9ќr0 O+Ukm|{Θr*aTC2T%s \oC{HrqRJbd'=:cE=;lݵ??=#lbަXey^lJ.w/?ݿMN%wA?ސsm\{wb`:]^imLAqcW_jջ89h%/HnwGCAUp:`L/?RbZv'Z1ӯf駎-ِ6^ͬ4DPH_{f!:f/MXSjQa;8vOiV#žq&t0-\3-jRՄ{ )+$|kY8Eý!;4Se7 /VkO4'>`U4b7RFefMnxO+XuF4 IEkǑ)ֺ[q[p@|F[J&N8t5nbJ 䨀#%-k9K^aOAVwP, ?be 36 0CNgpţµ\ܝ 7u;l7y<՞'qZ3N9z|G.<l{Z() M?/i^ݚ_Z{HCt.{˴pri#gv`2ZE3e\&NM1C!!STkբV U^$BAIr^P#ڝ#&؎*Qe|}YʳKL9CQ sAnsi_wff ʟ'zINf.`br2oe2$f*ڢ4%_l>Oæ\N,ʇs]͚`;(T-&zRO.YLJA|tu9ynij#!r;M-}Vzþުlp!CqS1SA}RV^hQMȰztƠ2ܝ6u) IG;v*y xKԻ W#4zs"9*x|J_a=ǪQ5h}3s5F=xBǕ-{gwXRɷSb5%wߖo9†ɽʖ촐")D3<ѕ_.Yʧ PΕRQE$P t|'M.ǜ},ENip,OɎ;vmW;Y0 vNDM'fvּ7[Ӭ]d뢐stJ}G\g6|]/FYQ}kuݢiuŜ]/Qw 3Ӟ>sp"+zrOPp.j)EKn6 oYSq 2w yplkczR'ѯSX y!=#68/ױ -%gۼ:cq0'_H[K'o@UK#lX\!(2,ԽPI{~_T4YU4*'Bk$Nr\%1s[.i׹ԉݟPkFqJY<{\Cs7(s=u9Nav=[yT,8\GVfLŭޟsQ4 '5wWUqͶ߃PnZ򈘌JUĩtH/OKM/_ʞ[ٮRZ]NT%=JخDJ_Uϕf!c{Чv٪DmPk][ĸ̗<Qyҥ1 %.SAr asNe5`fnװ1TCԥxm*)cm֡'f5M̑XjqEzyLj~‘Ejym7AfuU e:)V/@^op$\˶omsn4kZ x,ji&GsUT;Ol7#w⋼o!R|_?*K$;ϽG4`2Eu_9< 21XC[nCqŵԩtN?JH=cOC$6!)'> Be~ḪSlZ]&xAgS\G>A8[ d'zݛn8넟 [؋9 _Nqéێ#Ž>y6*f]F|'I){rd#Hdȹf;K/d"j,7t%#;Řgo+<:I{΍OJYX[KE) % "7SvOh|#.naHB\WNιS|M.d'vDoOuy{MJwzkkܢ+ywC/ǝ7 }Tm«9\ +3nGnB}9O]lȚw6ae/g ~(: oT6׸)l rɪEo=xXiٍH%GCatgQT6VŪM_}究ڈzL*.ú9OpGΨH+>~Լ *M+Rzs43r5g,!)ۙ[RdyOun8-f坫Gw\xэ [%s3;TqͬY:s>q&pyưӰG9PcaJx1W>eɞigwMRk亞kL1~y0'Rf[璪(~uO):#=VEAפ_lZujƋ|t{D/xsx*ֿ%7g zU11e3:^5j-}iZeZRcW*ȶ !?3Mǃmow fGa(+ĔT?ɼs0'- ?OnWx]{,XC7QT-VɄ&=hjVjԭS|xqlWtڗ^?&9= v!L0kݐOnYA_i'/҅;O%9kK_f3InVE2;h2 /vXl%ȦEgVqp`V%3FкC&;_SFdHҵȬw؄};[M"T~])ETfHxM AwTZv˿.Qvo4";}?SL:YA`NH8߬CåRhQ?ZRn?_(OK#uԮWhy)^ϥ]c_ }!:,]e!cC' IrٳJݻ,[.ΎX'[dr"B՗R4Fvp=2w__~pS.W-l;ŃBmz[gkJ#r[{G2sx\7ubȏiX7!4=9#ؒc * QbrB:%YHp݀aKݥ[]= 9r)$fԽ_7T}O΄gE|X'mΉۙGq=!]WB%M6ij6j''yeo"U\#[; :`m׿m{ݵ)Ažz`E a } qKG,~Rmu}YsW{EVЍA+agǍMkka>#?JNE% Dgzmb`ͅ">!c|A b 4ɥy_3CHGz]5ƒH|Z5xSd":>tF7;5xѷ}ԑ *\TH3N|8)5o4UuU]c;a-sRiT{ǽm]v3u8m\~~tOi7ّ,ҹe4ݳ*ggǃ1C N A^?rrjb]S /* ]ޘŗM&JRS̘܄Zݖ7FD#0O1&0iCy7n44h ^mq܎xX١ߺ%f9c=0YV ZVށ޷^[f[hR9&sis&=}i?] iS[yo9ozUܩ]@I_7;mDFQW'O=ǂJ+bJ(/7YxfXOu,Y=zECujx~޳=k˨tG x9`}Ӽu?o}P63ʴs]o_с]yfs=?NnG&8h^U2z+^z.{p'.Tp'ңz]JZ7.udcrg-7.K7­u_Ƨo($x&%HFI$&Q rՃ˻9/^z;M]p/+J,@qƎH8`-J TNI=K' &߯՞0:V¶ݐ%e8d$AaYtO<Ɔ07iU켃-N;לzg8O G:ٟVv ;v䇡X39=Mhb͎5-hrXPAa`~?~䟳 Pt=78Ƹ`NEIAHx3-;U|ʷJm?{g)ZpΌϿD`m͔6{|y%$evToM=ÆL?ww#gF:V.cŔv)2zT<}*Қ!󪾡B뾟fganFx@ 8WEu:<P*nUWܞoY?S=缗;S/hCNY fdد$_0ܑ|o+/$9,z zBwMon#x)QLoUНnh߼5vBff HrTC/<8x !҂Ua'6 ٻ! ]%ǂOT/`X]^tf}p?xѷ-|P k_4޿pji~)!a?Mw>nm-UHIZQ(㝝Yȣ.RMծwk=*|ݽ!OggS@b& h8nEhʭwWnn$B,U;ګ~5 P-m(;%BIvwj`G_V:G9xLp/ ;;=wMlArLc'l`2qԑ{!ғ.xۢNIi,WnWurUX3wԬxN;(I#ӎEX>ʜnLI'f =\,7I 0P& {~o;)!epG^L{[Zʀ6ݨ e<"c.#Ҫc;X]G[9shwzghhlpPCXk/ 8Z;۷X{rS._qY)嘦ѓ7VpqU1%Ǹx7M9)}Dyύu*T{ X˖1]08n^d.R̀btD|S > &$ 8ͧsȟfvCi|W׿ r]9yҨf+Uک;YHQ~L^x^rt~W"y_&^*_YGV:̆Rܨӏ@c)&Qct^dr7 xj?1ۛxb7Y9r\PiJeBpKG7~*hgM(s6^Z(y)̽j?k'{ĵJW$%b^]CA4ywsj#ԙ{kCBK5%Xb9'=J0Z[9jܱ˺4z(fb]i2&ҔV2УWZgb?/?P?Ͼ=nR3N7=P3&.//x+TõmiC͜"v'1v|E964"\kQF=VI.~P7h{oOwX߻D޹vxqwy9ufዣ >9o܌=>LiTE)[Qɹ`+ۥeM!X mhD/Rdܡzl1♔<9UrK 0)y•OGz(,ӃKI+֭4˟% O4})Sco4Vṽ\\}84SLvo41 аS?A1+ڃeJh\Jhב=J߾`]Tb)sV{3o5JYs@ӄ/mK1C>sezEhT\w3PHT 1bM };L-5[VI59xKЎ=+/%1dvbQЂU>5`s}^ݐ)mDOKb)ٯ_v.Xz{~zN!OhOv_Mŝ5ƴ s=՜ٕ:iUХ=q'(Np[N;]L5G}Ӗ]Z/u&Eof[uD(E|Ow.{Igmyҽ+'']3PO(|,bNC0 iSmёՋ~R83eUY~=f}K엀KM溋>=W)]ܠzi$QdW#pyÐJi!!_77$290 s[&ֱ-9X/<7uݿ=J䱢8]bErX@;X.4IolgԤZdIbdf<|^z}72E|}` `8ZC΂e,o~H+e9ra/lr7&59v^ވ/E.A1_?WG?$KL+S$1tԄm?^{):NErZ:jj-@:k^i֓IFT|>b崢v*TGbJab=C.aU}Y泛WNڧ_VS%jל]^}j`Y_Vx Y)m[KԩFzrJ o[q҂?#OZ]+ƃ /%9PX $8!VD}+^.qcS;JOL4i qKf;|kv':D1q(qʆAFL{?!FK;" Ei4&Y5-zd}KԟN!GLF^KW3̑׵ 7)l85/_)[h_nTo^2ISJZra~ȨD&ݕ̤G1$'~sS2jW D벦+цvg™7)¬H>5KݐJkj+ڈ‹ .i:3K>=y5;r̛zVg3rkPGu#Թx}}ga,GUϔ{?O廬:Mί?z真Ur>ӎJ9ۻjm?ooK7(F$b҉lulLnԜ[KX$76005 ēG S]T]ӽ&8o^l;0/3Ӱwc٢]~ATJ9O^QS:uf\uvdTAbl<H:q(osOY8Xw=r`YzM "^VwW'RfGfZKړх)͐i@HD8ٿq1h.*;t@JvU!.Ƣ_;|#û'WMeY?3In$^_,L r_7y&ڒ]-4L)2cͫ玺~uNgRJY 8џoj_ۣ>Jq (̏y~>}Cn@=Vb'EuΎαa.y{X~#)zzCt'T ߪhzʧ;]n2oK^^w}"Nϯ흫C=\k=>{kzJҔ|Y&R[jfP"7JW?I*]&N}kZyr"BYvM[I!اmrH~YfxSgm~t֗)lRw߲9侦dmҚƥ+L2fg,i\71o5/̀۴ȶ.!MQ;dK?BlRb&~8Rږ1[Ӗi{wT8p)׻ۓ5]6v&"%'>b1@ml{DŽ|Tvi2k0mBy~шV/W=liF8k)˛7QJrћTtʭM ơ5U@Z8m&dfZDRmN~ǚf)GH[ zU[uh+V//@7dNN|BU<2 ,5n.w܋crBU È9vn,c]86[4ALĸF9pap~ӃK4d4l~E 0*OrQ=V 9\[k'`U.:UE`>/嗇XU4{.n׃!C:-pbN3^!d/r?7$U^[{}Ⱦa|K[55콿? c nvg^{BۿΡum3.^ArGyyv~o+8vϿݓ}z[7ᬰ{s:).XG_ڧDgĄeW[m+u)K@XNY'4:TUOli66i#w_c^`. -;}@|0n./'}˅-9ƈcC=+:;<~j)k϶W5&9R;-ADӠftu~d!y R][ .N;p:h7Szќ,M@ԓU퀧ڊ6|)8ӓKKrulhycCCہ7 TgC `#!à͑ )hdg+JPRNcm+^Xjv~ ED׽ϳiSߧ^{,ykVkb;ӕQ5jpDi/V]vovoۂos!٫ҡe{ɪۥ&e:>s(uk8{JQեH9ػLiH:p^b)~Z7W[)ץ>WnB8os[| .exei፣W)p{mhC{WwouwUpp S&Шٴ@72Z*EY>|:]FTSFŏGLWiᝳvfӾm;c[V7C)Bw={c$[Ojdt_?ܯA%LM6,g>LN=KǧPRg 4!`D9N}Jv|F%.EKlgG\y=e?,%xׄO}[hXYgoSEQBNJ+ydϲau+bG7ۿgu)ऑ%uƿȕw}%^3;־:>J4/S8O4śbڕϤig'ٷ6Q n3l aix) G}f]&YCToRA=2~aPdn&B(#RHg~~x㤏rx?m/q"Pb{KUS(FfAՊ͝FP7ˣ@kE$iQda"iTSrL~CY-(P+ԯoG4Bqf7ƪEcڃ)Sס:5W恷һTzQTa^e1HfgI6jW:$V>m6S.9V[&X)Ϭꏉm+J\+}|-Wo:|(>D3|6^uIp3Aewwݲ?Y?%QwxԨ?ݽ% >cAJ͹[|3v>՜ ulp_{4LF9;8\Oh]N?fZ!)iGfrNk~ٚL*  "uQh`鰾u^`OggS@Fb&)n-0h yZ͂tfիUq֋ujbT:wj c[;yI͟_ZlWUgUMފgODEEVܾd~:{rqp>Flnpuq(tg8^V/BWI1.lIϞ\Wg;n!dN/7h RJi~iȈ&!xiQOŕcHl|%&8ޑ vWܺ5Xq=*USu9Ux{+psU{=F>gs*Ama~=z8{~7އ@ysdITOub{㦁\ޣZ#xlEM TNz6t}xO؆WrzA?^wo v$h-"ɡYa3ru? !Ga,0~<}Cᆾ_ 7A0{9j[YGeuNsӾ{j.4ѮdZvIn B&BjvMk]sFyԣYvo0+w `ҍ폢Qo׭֫3fƔ(zMy Gt?N]U@ۤ0:HJR#x)rQ׫Mh˯` ~AM_./VX-ʉ:2]xRcnI{{yގYW~oc8l>F-fCN l,LݞG-{ai dqMopݷN͊tXkRwi3˚ɖ"6*d%^FS 5QXmvpu=z)3cͧC^}m v| 3@S~z秪ZL}΅cCWBEE^7,wٹM}(_˿pxnhG$c]XUȍmZ.T`t4ۻARot^1Or4/U;0N7]::uu90Ȣ)]:vtxoUFYN^Nx]^ lgY+NEUlK[!ɲr[ Ur+f,I|UCQYlk?jW ]w_U>W{Kަຟ+?=̿{v-i7k;k]=ﺦxw2-˲f6G7)]c[s,ao㊓w6+%c]6kk|3ZzkXX``Aݥ|J 9{WRdʼn ( _[$D)yҍk[vY+EAA\$ۿ)eOχbiTCG[rnʩ0k2N̶apiե &k55A\܀#}xV)}Υ2i};C?4'; wyz7NzNǮjD/-˪}*nruk"2#!OMUbQ_m ޷yNLNC =(;ݹ#ł s|a}KUVPĽewxHn:_R5Kv8d>9;PnG&>Nq%sbPg+!e(NZWgTw#aƈOG.I> B55w+09f F1;Rl7\Ζ9o4>>*!:>]aOS},G+I񱌵i$xAgSMK߂Re~2 }#0 T%IQPXzKeKze/ Z|`bgϒwDTK_$zPrEBfp%)ɛ"Kd'!6uJL^pؘzn$blKV_rG8\9҉o<O{zljBTD, ](dfo]D'B>4[-G8oT_[y$dh_gm1i|tq垶0Ovtߣ g}^I$]p 9j%?(3Q83̯ksvO:}6G/jOĠ7\P rmr{c+rm?fUxs&$L&nx6 ;u^[I%۴!'& [ѤFM^be/sYe;:_-U֝OqeJ~;Ff?Y~r&Mnhy<[kmqO爖wc̓^KZ #W]'|h7 @X@H oNbG`*5“vA;QF,X &H M*ud_y؅fÚ7S\~xiFт&ݼz~2F~#mNk98kj˘+ȁѻiGj%dT/坾i$8yl4 sB &⤬G[Xls$əGbt's8M',]0kV:JNòm͌u#]bGG3\·/x_ vE֫ft.qR*go84UX[8!qM<9eؾEGq 9Ӣ7ٺvޅ UU݆Zz-';s +霧Ni9]FmV<4.׹K@ڞBVvEH0${8b!'fpW^Г6~LޛD))̙$2"}PL+o$ťVW gpkfIgޤmMQ]v7;ZіkW=RMj=9⮚؝elʑ#zh$JkU0Bj S-³m.H]/xĪjM{T_ mJwNגKH z5OF;֛^)LBA(Ԏ'#L0+ s~n OggS@fb&Nż!n)u' zGuNWvL í`l*׻z=w˿V6˜'sEkTRRaUGnݧO7ͧ.~T#f-?pop排fWr˦7]U1ns+1-CYyZŶtRh<~B=. ;_[h_D~W=sL޴ t\=c9y^Lj u~RF凧z>BDb!&j^7[l6/Ǧ$M9hRV(jF 0ԉu9Q׵cdio̯m~!'n̆օbMo7ᡓGCJ9xZ6.hO$$y8\]B8 w:ӋUe9H *}GS}ѳF~`|WQksɽ i~fA ߛ&>IYb/ܜZ'(8붚~C"ZI؋t4׸~fqU1,W #8Rӧ9&e o[UZ8sK OZMVVʠ(mÎb{q _ܛ]Me>B~<>mYvGL*@E5'tI YkLG%\a.dEUPD\G#:;];anc9siqh^qMHz9e g->鍳izzHr#-#r^Ur\[2D]Hqht|/bj>k)曐>egM,)+7PN˪и`G'.j/׏01_Si`rE8 QtV eAP B*EUe\*S7#Q 3ũsި_nO*YZ]pnt;Aru^Ð68v_5Tn2r]7[5b,Lc*IUX*ۂ؏xֽ˺}ogݕD70h^bn˱SIzK3#4{y 'S%RaI/n_i_Қ83e FN&M-K}>V {^xsNqLUN\fxnP oNR:%_o>b4=E+ha)L1ƲWC$AѤ-.q[Rȣq/%^%iI` |(Lmq߼\Ńuo͡ݚ"bԖK#Lh$@QH8mZlgKvJ'jPCB{{^&ü漅^wԃ/ &Qn'1ql 8!vc58l /;_LY{ETP8ҙCL/:D a* _R9~Wcۦag-;:w軖)UuXNӖS4eWG2ROôtt2Ğԕ9 79iPkWXQ3Shfr.gJllL1gL="c\f&u܎7?ڮ7xy;myO0?MlעU7_i7!mT;_\p-^Dįo!VZaClZr;ggVÍMk9( Bޒ%lf} 0.k:Ou gY-H6Zt|qz婔yyVjSد00y:OR⫶&0V!naƒ|5#B\??9rtţO5=rx E^ZL#8l6R2*Z3C-!cdHR]ZH+&q6i]N4yc(O{ʫ>scOWCo,ugνںHe!£^rzj?!’j3S {(׭nH|Ȩ@Iz3}Ic3&k÷z|scWV=]'jX^ٓ4_e|j3 n&+jmD[-~nv#lD}?7gJIZKoRnk8S.%1q<=nAz}hƟƃK%QAJֱD4ܥ!l[Q/M1I -C*S/mC5\ڄ{ *Dq \ݭ זfkUQ|3O3" jU`|w֝ܿ*jTեơy{*l[s߰[^]XK߃_k11Y3([ /H)Yd,ō;l%čLV"$ (yaLP;&Nk>GuC@ $n7͸ F&5 Q};G̫ 礭o?+%xN7̔;)3mC e,LԙmJ-no,Sjٱ>q\jF<.gKgTZj4g&jJԚiLe~$ _NgSs:GE\`/Ȇ_ F/臌~+ vky}jy~@^YƄ4ZL#v(zν{P$ۙ~vTҷ#Z6]q?Otj) -\w!\.IZS"8P](m4ѹO4o(W:sKB|ԬBV'ݳ7'q[?yK~T}+쑡8I}S6g&'׎;:gkJ..o5_rbiۓyOyNhfc}#okJ7QOW3,܏%1O?ܽ(qs_EgK4w<#ħ|wBԬi Nr &g$s߮![q›zSf)3DOggSzb&" 9;9=;7rJ IͳVB~Cxz&k> ^S\:̓ߦYM3GV̓GxsguKhtvC%!ǐ$wKQ6rOkLX^ lIogKaU]]89c_ *B7M˺?WPLr%6ٟVdDFaV8>+IadYIAJ: Ec7s P=kA1jԉiT5gM,jy7 r]k^X]_C>W6d7$ΕRTaMܶUfӵJ!]5)fP3\ã_=+?w7z&EM 9BRh5SA+6U턛7_38,Y:w|ʗFg,X6՜GͱpQU_C'fzlf\\6NCNʡddo{ٷE?uTr} 2\9h"]]24iwvZ92.b+mcyY6GWj%>^7rݚm8R-~zKjIաd&yO" (E0ՓT9ě˷c8iX[/X ;< ( bQp`ɦ,a9&{}7ɢXGlމ)K@@5od/+iPIP-6DmBަ{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggSjv*i<0sa:8L4[:ʁ๋mPy9-aQ֡VtJh}P4.S+]g^s4b?<aRdq6-r;P|،ڙ03g S^.? }I8[hgU;ڶ|JKx!s2.9 <bmb ir$g:`z= 7+Ct8&͑߮ +4Qhi\UU5:ޙ͑3|1Kx[[^ufIM7F̧8>x~Jc6VeھVr^F]zLn9#kͰ蜋,Q/ChjX مhw>J\ j'<[o4!>RZLB{yu<쎺$ nnK?T9etf3Gq8&6sdNUKޜ7J.QSqz ӫٹ:wC{ :u(lk,uͲ;?`qpZ.ucWvt&7)Lq<7ԋjYFKtWs_ueO]pwi`H ⪄þ* <\D/$L͠ke tMzu Dz͍sI#U^<)hEVL8Rn"tKdS).{BsFh7 jXl1xBh07S}1 \n,Y;>=l`mΓ)#@Moms v|aҽ"֧:(7]Rvl|g|Pg{_hdILQ'ש]=JV]>V}O۬ǎN h* t ͱe ?`&r[KV$Q`qC~źo7Zq  e~d922V ljsi-=^s2i+'c ҄r!  Bϣֺ[7eA} B<_AyoC%w gSQo_#"iRD̵P1LׂJĔofrxK[jތjS ,ӑyۨ5T?(GIYǃ,sO7 7g[^gQ 4sbi'y;M2ޠ814,(!A1b/Q$sZA\'`Փ3cv<OVB|i(! ,۾{80N8G/̉,?|Kh^u?$XgB.4-w_GgҎ,|q0$Q,sS cA+.Zrf|| D#}6_#GQF< d%i홍ҫ[ɰ}dcG'#.[Va_gw ~Wfp3ny;19Q Wת;sU&Tp?Fdt417:VV@Oв> 6y~vV<:$q6+",PW۞yO.Qԇ3h>gm8@k.vFغu:]^ׁ  z^;Dj{3˩&qU e^[LVA |@$N edS0&I9adk5ŎtSYJjWVO?5M:I8 {7tn0\/ݤ)|]LJ37q6 k@h,dʮ\ mr,+ ueaϳ:`O,A2vanet"9^Ч7HOc6d1ɋ9 # н.oa[p@<+ߟ+颕Zo4dʼnR䳝ۼȒJ˜V`$*9+B2>"Gx^@$kx>y-$~cocпId]GJO"xyP+uݣ10d%Xh L*|8\ף5^Z2 L<&embpePp\w5TɋlԦu;RjJL,ךЦU{ʺG'y:uTOfD]_Pd]z)6>)x#DW9]EZ%@oVds0&Zރk ưcGvVuvgn'<_0`}ܴzǿ^\\v%{wJTIC Z cWfD]_TXXy>STK jTԇ]^ݛU5|[U_Nj0`34/r4bgf iy<]_.U屚 zII*?CTт5kt==[Udh%bD+@ITM?b¶YTE ӻ|GlLߢbY%N-=%jmBL_݅댡kEߗE++s&GS~T4Y{KKHFA)ke&oX%hE$ya;bB+,ⓐ)ʕ]>)çpV#cS'M;bM]J3˵gNGiǕPq,vb?+ 1 K<ș6 [α햚RX$B ',U` w~ͱ):P'5,%vyHeU=7H+gArfpu9q/XML~AhsB4{b|k8~c|[Ӎu*RPSsA;Xƨ ovK~ V J|7 ¤px"S-M CG3(d5/g;j䩴tsMOVf}5ޓE]L՜.6_Zz;ȟca JsMlHw2<`E Ɦv=nlvcf2륹SMg#zlYBS`~K?C|CU ꈿ΂_c?BOvŕ2ߍKᔗ)Q ο&I6&䲻0hM^ΰnkjenBRa  5IFvj/ r}?)[֌(d4β<u2ڽ<;Oa1PN7A mJN} :ѦYԄʵdY(٘You[u7~hH6fd%IXwYY}d@*#'8+i[t&MvV5K1[$]Ͱ\S^ Z[)vҭ9,!li;@%C&>fիG*?7?\̙ò^TU&/oEJ=t%ݪ8Uљ[%?iU]4y]DkFmR[b5۩ϓԈ{WqN`}}8{Gʮd%VSz{Tה[CIYٚ0BLt@:܅,RPzOggS@v+ 5 ! ! #4TzWN`ZC0$L2+{8Z<^lӤ<i6i7sҕj'+TWw L,قO& FI|Ձ'$ߠ_!_vRUj.dMrdWۗMfI:u]P@ln:REO-go:K:.s.d*߻wKiɜqsS/}ۭJC<{%ЮCWF!HƝ-hoݥFB롔M:u$Y 5 rJ3]bױ˫EKk|ӣ7$%k9_A>TxUTMXJ&edFh%zl[9$Q%uofv)-&/*nF]qlK/˭#rz 9d,FP ;& 9kAp2ȧPw>G~`}7~ P+*V$^z`kgRB+k}? Վ1yQF3Ca[YjEH40չ TzXw2hiVU1<4`/A`pf%:[ X M32V'@+5QAmgM[Az0=ey3\2 5@WvUNHȭϕĝM[EQ&ҌC2})TЫ ;6$2`v+F&GmG(+>kẫzKR) (yMZޏj Eu&-* M .}.\b 9sϛی-櫽˚ݎNGk9vWzq]T$}OI /4.jJ's&^{~VKΰ󔕄 PNmA Xj^,{2Mm\٧XYg.歉%/ǔ\øU6jZ{72G#3], mp5:'WO [ )*q?R kVժ*,bx!i\$JD] uR|J3aD,щ ~Fo3F 4$5>qf&yf;fb#䩟HYwo|3qSΓVm Ƽo>u=1L{ *)f}Qd~ L/og`']zn+p2ਪ&0c1/} 1\ p<6ٖԭ1{DPM5OQA3#Lim8&VzS: f"I=@%sx4p 3ژ.GE㹱ӲxO/ exzwwfɻ/F뵆RvUuFNzꮃk[(/tm<"NW΋|fXC?lx,8Y#;um0o %VOyZmv'9ƖI.Y +Tq2{QWۍK(9@{j6dLK+ܳ嵎8YkJ-=Btӛ"T;=;Q7=y9qsp­ͳqW'C{޳p ۆ@^gUS%7u@^y .IdF8Y"oEmuZL5( |nR)ZziŅ\Q7y}"AOMc*,W_ӻiv7PVVtd<__ӹ/`RMU5-]훌eJR 2+O;oަkm"]0VeC1߲mОiQctb eJ9/S|i, l#~2eN8L?#abg!E~cO: Y&KΦ3K|herpP^;ܲ&dbAG[X#ej-~;kKۼ۩Luق!U(MNLS]ڟJT6 &,f%kN9^ٷB tj5n1h i4r'*&~AKH(Kd][ĸ6_LjR&Ne%ݞIL\] % V KRS!&k{ "ٛɀ4MJT< +BwɥJOggSDv 3 # t ~y75I/xM $Mju|KBŪOzZ)3;"vU EvQJ.lwuj[j~qFѓ'\ ޯԺ#W>Fj> ڄeV@3~\ӽs-1Fzb~5 Nނ5 $IҐulF-yZeRzocx  63a|͕x ;*L, `:[-w\˸dk9iG땬(? M1O~t3"#`\}J%A 4d%I{x=[L;݊G~ACWaccЕD抜\8˴ƵV*̌l|:g\̼mMGvZ{*bFvL ȚpI٦}wg<0ql Ǹ 8M۩#a-KBӘ:t÷$c݊~GႄyXsŞvgOJgzLZLDdh^__Ǵ^VUt;f;pIW\9E\׵EG!; pG)7(1:W@?} kI-o4!yIu:DQRp^w]+svzaV5I4u|L@N+HpuzޯӂDæ?P0jG۹sΑL;ILKv(/T JkPa=]U&Wg̡{jU(/9Y.˞2Q~-"?sV+ҝߵ늩2ie<t2QUqrXJڎ /B!3r;l;2|NUm P`rCY*m|'43I-r=& )yaYxRn'֥N Vh1)yPm(~m;Y5dxk KnEpz*YtdzR, zN`xQp^D"ɻr 4G4QVw?l4xS,ZLHW>8UNe oYJ m7,ZUKT#æ^Y9 j4e2Z&+}bb>ϑSK$6q~k,hxK|~{+o ?^oS5'^WpDu!CfPxcܠIM; 8,4‰ `JL aFM4I7|sA{\R c]-|khh9a2c"H Z1.nbM*:{V^! |/:*{sρ7`YIF-9_p!־B7/+'R} R]3=P::u=u%C{'__m wyqXw2 z\^/:XǜO.SO $>;ބ_!^-c{Xv|om~E1O4FW/G N^80x]I+ż.vƚB@u<_f{ھC&bYZ@,6'u.J- &M'D^;hL\@I¬ɶcԌ5k̀۹ 7,q-PeP)Mm(hJw8ޞHTƵ%l2}Z7U~SK9&NA|VC?B^f`$ ,*EǀRFUqKRVa*kZ=<CVpfng5k΂UJ>QOm4 k(m.dā^DD[mł/46G+I,ƕ2o*Acg 3Q'̃. ,@f#IْjLn/ld@^')qgu2;~&W.Ѭ Ƅ>c2[-!Ve=k'b'O&&|) NR Siw4č%ߊgMߊNBrNоH8T?\:kp쒲LƠ:s|cP䨔RHp[ i%ሗy:Γl W54}9xyk;'L"7 mzg_f0OkJDtoBLeWQZFq7V DմQ{q# O˙Q}sCYS:D=&ߎ &bJzC7]h<Ղoj 92noci;5°A7-Bu,U_{u֋s.Kd]DOoݩU7p&LTߢ翏#8kifydU_y[L+x> }xsjc⾨YՋ?DL]_ۏ$Tc9y *|3&&7Ɠu!8ݓE/ -RaU\+g݉yT5=Ӓ5F ܐta\]l/mSO#Mg)A.OC-#Le\Up;m\73afg-k2^Y1 []@es]0=zq-l+-.vbT%L2.LI, M؅I>*^dXߧK1 Dj2p(0+K/*FWiq>&%? 0/>n0V=b`De5uOV QO>y8'O~}J㡷 {uȾ@NOٯw~tH66 onwYcᲘsZRX%-^SVׯ5G }!8Lߴ*} {g ) OV\ ݾ@LNeo/ iT#mSCs{eB't=wYo>8pŎ ӺKA+m4LմI ַ-mRgYOmV3xL](^u rj(m.}2a[}ˮ':VNL/|`9~~ 5 ,Vc*}F./ӢY1" ;^`v9vx0n*̹F5ʾ !_|8L7s~  E05^F>|z$@ Gu-bhg !O E(My Q~Ehq5e!apƏ"G;ͶM 5c[#oZ$XSIzr j3 F{*>uKG&zYRx*^G,U^I9&;=:oܮCgoJ \T.Gw$_!F8);yp7;<Ս0P 7F0E3 J n6{dA#KT?4fx?@V}};|ҚyTJ螔˷-km#r ˦l::|+UnH.S#%zz5{Iu>4[=is.&ޟƢ6uO5nڥ% akͶň3-dr/ce'Oŝ}osőJ1N(U>k{ۭ fm_ҩNŲBwiuzzX|ҏ0,e.g4ߒ1uF'i6FĶa&a%IvxIgG UMi]4@_ı0,YS#M<'0.&R|.*asG3VM^ۮm!h~Ezw2vL=c -λ[P>0E[Դ[@,ED:fB:9:4>&#.J^@6@~ATf-d民z`CQ޻pxFՕLQ. Z;u%l͎+KpuÊ.CmfQ(vI 48Aw*kxQ [}{~[d~zeFӖx1ƞ# u ^+U}Kj#Z3WhS7ݻ'<ݯ6_t`6*s.GvzyC+(>%EYL; r!'kıQ!uBRwX;D: ( ־}o/O(q|{X,h>6'u7MvyC 7Y=5QRuuHЃ8/z]pI=vռ9' @4X UI4٢9 ڴU%B1mn|(v?;4Z\,gH2 ֜udgrF7X,ZuOmGIĽ5Mߖ %!RmZmNjo~tRK`YhŒO*N c ON hQz^{$ A`HMddZIA gqtQ>Jj܉^0*奤ay풜|u/\ ? <7B&f{Fa9d޳UT7XI:aU߻q=V&dno]A3dGmF!"Y;` 4nfQ.Ds\;՚/36V9h  3eP5vQEsO(Gi B&'J?WI)u#r}PB$M悙庄Y{+&7HʠP>/ڀ ^d(ds# >TZJT@I73mJ_Ֆt']uIn A;RѲ 9S%,aoԮ*^eQCꈀ.FKEfPJ*Ux<썺#Q E W1L`n3 ٕab{wHLQڻ,}F$|>VyZ= (  f46& /0}r!RIiV^0UuSabq_w8;K1VdQpuAG;ov 0C=Vl?>{SWuG`YI8,zw)WRzt5 Lv= _QaH-SaׂzUV7/2 2jOSs_najlt{psrA/CtvLBfY%T9;+1Xs^XPS(B_bF.ٯDڛhH|gf .{CmvDYLG߅^w%dJ!ݑ̺+9#%d}>g2f5_hc͎N V͙$ w4wK--@%,❗O,:lpJ]6"ʩH 3ȬYU8&ԗs(ZQlKS/D"I)k?M)CB;TYW PY9vkVv ҋKFx(Qs(1ϊ1x;*H`tkV^J ?ĔEŷIt:y7\$5U\7ZDZȬFf .UGZȃQ<zk29fK:IbTQ+b%tӨ.IVlRA%|ɱxqv- !wU-e!9{4_FCEahO3TU6=Ĺqy#[UPЀNkɣzЭ ʦe"AJzSr%Ppw䂃Fx# 6_k^[ʎezjt=&|0Icw{.R\f4@k'-w>=޷񗍬'tF-042Xj&I:q9c!ïiv"?4@])e9,<"yTJk5h K.ե530K'e)ǞqyMyeK|8!gHm(J:zQ]FiAtu5lIH4r.S5=NNDWuIVR.ΛG9:Gp&<0͟svJb dÙ,tǧi&-/,WL6Cֿ?[=wv+<ӴIwֻ-v[)R^MտEh:|^Luq_;:'OMľԄͿywy7 n@j\V![u)P#w/ѺBN«77"g$ CxQOQטK9?0qBR+f^߶|(wNs }2,iֈx#"3y7ǯk[ ԴI %'Pt=/ɫsw7uo*luhS[#>t0ީ2/RωѮH02N2uPVtU{Tk/d *$ͪ>k/t&­/w#SIbDk',::L/^\7: 3-!ӌL>ŵ WeNfki̮9XT3F[UCA k#4) [dLuW=~vP]wU݌XY1y03<3'qgE+DVoIag4!C:k;+Ƥt(puk@3; .zW;!Vb%IFwpE -v><| LzJBOX3lm v3Q 5=qrcՌ&JSZjkW%@I,tw2#F)KBK6k.1ҎWl<_kPDܘ-uO%b^ϥQ1Ca[?9V\+q :p"8)=Wǹ G2Tv[Yr{4+;ԢdrdҹlDț2,0Š[o:p<"u bJϽی]H`D߷O }^IiA@_fg0 3(Kn#flʉponT OggS'v 2  !kfk]o8MͰ,@kW \3t^1$'wG=l3&?nn\d4"!|R^&_ӟ.|F9#vxMKьH`=CXs AI>k6cGh`t63B5-smtG]֢tpi΅B 0\Wk h9u\gn\\d;w*gk`k+:MPx cttDfoԨ7 ;uQ) {6sKy0hho1>% V_}^R8[6ɯ6EHܞ$]5v~ gnQ?(ߕ*I1D㯚g$(D1I[NٶW& HdHI- P8Î?fžzcGCE3񹓃Nb\]<9q9`.(r]thˠ ) pJ]z\ZJj&.W_ x9d!4C=ל~*^D(rᅄp]87LƙRbMڴ32:ei8 &3}#m 4LMʜՓdh@ͱh<ЀIa|f%mۯI h`^fr5'e z7馲BIoxm9ipoɩO9:my᳨>  8B3Vq`Tk@yg2dkKbaK=dX"ɓ0V eD}Q&KFm\&*$J/ TJe^5w{3Jt%l|2]7'HUJ}@q;re )Ge N5]5@&*_u$|T f$6 u` H5\ܬ >;Lkн&F-PŠIDg9w]MGh7p2`{zN4`aKLVnF6T2ܡWS1Y >>|'>F}XcC3*0=1/cZS؋ VIP)ьddCE7o{_; J#>-7H1ȇ޻9E\qW(]:n' >ػ!ͪ 'wHDHBM4CHT`Y4]P04"ak\lTi>{L:$Tۂi pkJ*eȚ>DbtiUS}hTL='*ԊCiOz׹#ӕDY*&?՚,AN{boUPr%?gDYG~^o%$ˣ;MڳtzR6^h[@<}z\?Q8Q$<,1|sֆ76sYj>N k?P ㊅& &Bהc7Z񜋲ȳSNWCp}WΗ]4%ibԻ<8L >_ QSvvf!@` Ű3\QSGY ;S=7Nh*d1cE*9t?t "v& pץf8ZFdw:^7ݴJy <#i{ 6:{@+l)nψ^h%mz+z%>im1aEw@Gq.(z! &z 7FBA^J'ZBJVp\b$/|)Cig@D(ow3w6[1t3 ~wQz gNÑ=̷H]X1EdևdYxم5j š>o Q'8`M,F11| Ew5B0@I ,KR䵾T[KzBJ #u.q+5 j}'&0ĕ .v6dmihQ tBqht8'S&>;F쬹8 FFu*:cG88dTĞM^Skjc1^1I^L3kѫ] X3'tN71, ; ڣ kJ' *bYvQ}cCgȅ`%AQuWDX}r8lqUJ<6ZOj8EՓ^ w/ɭ8dSSnXp&j49#}^Kv7}MqCj}74_JQg:߶ck?wWٽ6t!KyaZΕL`q"UnatnE,9*湠!| UhO/z, ɻH:0(4kPl`DU{ R 0pjQ@s2qeu&j8A Huq$n!)=rwB\.>j}dUs& LLfm XS&̜ct7Q82Th_]Wו갎>[4ćDf>0 hhd ,`4>n/^CtrYn$qXi:zD=fhRn˷r5vԞ]'PK5cp=5>w ,1G*MNʑ).)O'DlK14zyPNUeߚ*J=Ʒ4ytt=-e˪M(ĕ׷tGM;&cڟ IGlϚwI]rj8b7L+t!1+2ưP'ui6[nm51iI(?cȓrJߤ|2LHIcc٭;Mi=Djc3.P gAvI)hsڭzSLwҙ|&5{)F0}Džu,ق/N Mb!>j0L &DT9 RTש8Avݙ.'+ΰ& XNH@mJ|{`zѥ%^㻥[W pA4FTJleRb&N^èKUm078Qw龜Qk|;&\kȨg3*Noӈo4y6"uV, a59Hs̗$Qw)_:1eփ 25.8Wd[?b!fl ۚ72Ŧ"G>NͫQC$ZpԺJZ3qgnq9:D|tM!W_S܊OOB^'Ǝf˹W3@Q{*$lh׹wC4SUzرֈr5ALծzfu*J\@b?wZܓt]H.slv [_}̰W%ު'$5)i\Gƽv1Bf|`YVҪ V&o5v˭܈~75>C$_wuergNTkKѕӱP52Nb)Q}I&Ҝ-f(ckA~[FO/; 7"6 Mzٯ֏{P3nkJкB9tmM@yDĥ VVk`WsNo9\[xP"q#{].:7emM#ՋH9)K溧Wk !`y: ~_uUkp͕+JYwSs=+KfPg;\Skդ :ؒrdGmL" We*a*HR׮x1hgH2_ dI \Yn;Ɗۮ:V/ -DT|ֳq=Ec$RIulG{gj_cJ;Au48;I! ɼkB Hƛ\`)% ;&8ɟ {h _^e%t  >_y.=M/@!k0UGőB:+fHVwe6AAkB\Z(bbxTs3Zo$׬N~1@to[J,%i0#U}Kކ+nky#V#FؤL% H%Y 7TQfHV Ss8pݤ-d[o2&8cE~{V~J/ !xӀ겒D HECOq~mCcoR-'Jv$"M۲=^!`MwG6gK: P_aRh]dDNJ 60D5􃋴PX# {K΁.Z1>m2tiOYɒu]v >*~\y%EhcFNWtV>kĥoh=0`E թTmtu=N O|AH$.4شɵ}|Ev,/ *q2U9EL:G j3ETgLHK4VfnL1 σf*S ~V֤=KX>)A $z'5~X ,r?]:=pق!1IsQߥ-Vw0EZ j2aW2 j=cJFqA0"vi J9JW2N._+iJ;YGiMcC=HzZ1Gh@cgr~^!"-Fe*>L 6bS's0vٗXf:9?= iD YܫE'ǔ>KV]Bv7{|GP{ Mʡd-ĥE=,*HI*@kжp|E,g,ɓF8JCa&}bNc:^sNQ*;Q3Q׷\q;_L4[6_.*I+YQ|rPͧ_q֙{>[zd^^[ YnvW. +x/zҎp^J-f6]p)+|ZOC!hV!~ye^ ok6Z.`0[..QѵhG#7|szԣdKMaԌGNlBv҇`#^٧_(: kMGtJPxB ^VeY!">&l@$QKFjC!yRΕ4g7KWN4'Sa4f+IB3;'CS6DjBljN d e' 漂'K6&7hRiCL?E;MV99ڏʁr g$Ꜵn7cq~{| #]^\.jwEoy+~Z>*m\r֒b۴9ut6xea:h#S$Lu%@dKEY{pm 4DٔWT&Ț0HOLT{gkն^x!,T*r(Gz5q!S$v׿1>Əj~4WQ}̝>G7xkO2w4a_qO]ik3 sr-2 e>h`1ydl H뿥!= 4λ2;7ckegg:|weS?bFք 3G]Qp!M|{ Ã}9*Eh^ӣ2e39üe0(wm"hYleѧKzG l7pW?;OggS@v=)!!uevj&eI~")I$:5)u׃٧&|5=8{rMRj-7XLQ=RX!doUd̑c&#}Q RGQq^qN8:b^ mS+Jz~UQwsHO Wa6}6ٖIDл vU:VSeUs,,?2QsuW}N(^;Zx^eQL@ClT0i0slzc1#!f[zLLո٫c,V+b$S+_P]f߄Ř@<=&w\.ӳ@~,]GUgU{Ne7O-xѵ} L՝IՏ9;wT^x;/,%2ؚ-[jM@Je ӒI$Yx`{.{R N͐gi:[&f;^/&qΉ"1HKV%oz͐ڵwzDakϩ] o&֖:'sv!osͮ䠓'D$ʡ1wif/[A%>2 E&6Mj@84};V!6Wl}faJ$Y̌7m/ R$H?u y)K)[^L6gPg(:SWK%jKZ \[;]4ջo~4Zx.Z|KJ:M,a >[\K&. C /9w,$adť_`Vܒ6OLd_7㪝qհRjvkIYSd$)0,Iک6V-0#xkPz 8>ku Aex)i40jMXMygffE mIDߩ^-+4=E.\uھ;7гm;;b=Lkqet1i|WW*{^"p6`b^V2Lo!(葀c`0߅d&a(@N]S*;,;O{!KjTS#hp4Ľ*]Qݽ~0ͨXZƯ#FQ8U,rr /V>/A-$@QNջQM^K-XX>pO%\]B/{5&_6!}Ѽϑ0zqBڻ a#wmR(FO6[wv΢pm[_K4yg@ŗ~jqێ>‡@ `GX`aQ]uvoIL¢sDa)^TP4i;U\`CO'B%x8 6%0TvQH8׽U$|p9Chpry>{m%?"C#t <H8ޟN÷@m~gX*xo#r(,_*; %z(~xŹBו7ϰwR2 "eSRmҙ G>YbA#|K G_m7Qd@:0 Kl#^zQlC]3D _+0Vw/zYԗ5[{%Źy>'|^lE ;U\9a`: ^jA+5{Mk$KRYUfR>ļ? ]n"[8^QB7ZTUEģJR8d{<֙ؼt T!aJj&W.^Asupe,aiOOBlZ--;m9qQiky,M5)>I6ͣL0du?ك~oum֮ L"Y}^{F_h &k=F;'l(haqهemG0}G[ɺ;V\XKM_ +4L1[uA5!t+ x~HvtpFKDNjѕӽ}ot"R=W[R!q J6>1c2mS'wDY*˄6 7>vchm\ *]Zm2$6k{\z yCL*(I]!#P]f9'I |ki930V}x4x $ w#ݟ7<'X~[3U1I6ǖSRmogA36> uYv5+~]ۖ2]u &,`& `P&6Θ3WpC_;QkQbZ3xͪ 9$~Ī-/4Ղ/ON`]f˟ǯ'5>D7@הٸiT+%9g2[iS&z t@[?=^!$ BCʛ{ޱBaweGx=OYVӧw縤 I "$J"٩ҺGW n1!S[!Rx=rxbn3oPp4C ith fI-SfLȥ3tY!O߿rзt$ &9oM_lW_Uσt6bc?Us*˝&va3pIԴx21'PQְ4Fq}d ]UJt?f%:kzӱ.IϿ\5ik {CcWcY}`#-LeC\lUG2bU1ØBF/2$bN)]7y! JC˹Ne` 3|#sƳM)R2X!̺uysL8쉊Ev>;en#DsY9i`7JqF!@:S$n}Xj > He١&1$W`BS:|?QΑ_.w[k_m#7Qȅ]\t$XVIr֨%U5Oxm=mGԄ0_w]bM(Pn!o#Qtm Uh}ey ?GO9ΐ&(XIi-5:mcjj X;guT'RuIy}&°ў8-P`/F1Ɲ <($n⠀]; OggSv Fţvdۅ0Mf!l$QܖkԘuxVPo%MڪfO_nURD#8޽p-LAb,VT+bLJ\zp7ȟu)$yw.**;m˟S4ٷtl& 0*Ts5,W·{2g/<ׇG^O4%( 'OggS_kwaAdIvorbisDOggS_kwu]-2vorbisXiph.Org libVorbis I 20050304vorbisBCVcT)FRJs1FbJBHsS9לk SP)RRic)RKI%t:'c[I֘kA RL)ĔRBS)ŔRJB%t:SJ(AsctJ$dLBH)JSNBH5R)sRRjA B АU@ P2((#9cI pIɱ$K,KDQU}6UUu]u]u 4d@H d Y F(BCVb(9&|sf9h*tp"In*s9's8srf1h&sf)h&sAks9qFsAj6s9j.s"Im.s9s9sspN8sZnBs>{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggS@r_kw!ҷ, rְL4x~Jc6VeھVr^F]zLn9#kͰ蜋,Q/ChjX مhw>J\ j'<[o4!>RZLB{yu<쎺$ nnK?T9etf3Gq8&6sdNUKޜ7J.QSqz ӫٹ:wC{ :u(lk,uͲ;?`qpZ.ucWvt&7)Lq<7ԋjYFKtWs_ueO]pwi`H ⪄þ* <\D/$L͠ke tMzu Dz͍sI#U^<)hEVL8Rn"tKdS).{BsFh7 jXl1xBh07S}1 \n,Y;>=l`mΓ)#@Moms v|aҽ"֧:(7]Rvl|g|Pg{_hdILQ'ש]=JV]>V}O۬ǎN h* t ͱe ?`&r[KV$Q`qC~źo7Zq  e~d922V ljsi-=^s2i+'c ҄r!  Bϣֺ[7eA} B<_AyoC%w gSQo_#"iRD̵P1LׂJĔofrxK[jތjS ,ӑmLVCs'eʵmHwWJO/.~9q TfT9ݿپYXFދMψ?EţrΉm6˘@{<|T ~jufd0'SMT;B͢4XgA$^11@Ykϳ͚79lKzdNs+??W۟^R5Uh郹ͺ^1O}\ BӛRe\;8r4 ʯl'2_V\&'GXWʵedA%@eZK&b^$ֵj?ۓ|Fa5PT@?ŌYv w7z zMU?<简[iH(pHlpo'Oǁ47]&*9LܿB̊JT@7?y6 JǞ! xk__XK#߯|+B[khrIBg4vHLY{H# ̼.H ?1dKĐ>8AI*}M4{ei} d>ǝ_zТ',YzSWț >S ط'zy sF-.U5$hfgwNz>v2im wt5>vnfP[ax#UQpC5B*9vJ[up 0+i$Q/gOhrP;~_aΊ#]V=c>ի ˅'{ B%> nafj'yǷa TQĴd'])Z%o!:$F`߳f^* 5I²wL-۔˽PVݹ\ZI;K.;wuL|Sp5niPw-w[ &1{S3'+1KgTpqWBf۟ٵF> S&%jΡeU~d/i[ FZyF*"$9M2wk]ĮCuSzaɟ9n_Ȇ%T 3Nvm{QvIB# BKpKW jj9(֫A?vbC?8ԗ>{ΰ}K^dPa& {75G:}bK 0.Оy&0C]L˲FߙUb>ђVw_kѭ>A8<6am"*{#!mW"gL̀ȶDx>{|B`߰kP2`э,+fjxm6EkMojuc>n¦IFlUl _1jr&!l^3$Cq9ĸq55P6k~¥a9~/N:@Y"2c% MCA:,nG%y%d%4s=_ʶQQ\^zL/%ɚחwp`V¡D^ u]׵N1*l5-kVr%E:Bfk:{f ߸ 3j*I+klc;a(= YRaei\E;stu׊47Gp0y*4@ܭA.xkvw$BqfL24pe{*ݒ!D@?Vj$$A ] m7PXxnL+UXHZYs'C(5[vbKNNvHlh l;卫 +(OggS_kw/#7~ !!!!Zusw PBܗgo 6jex "uQeUaT ˵fh`|}6=1>ZEH: QZ5w\MX؃' :}L"M2NZ 1j$y;R:M#&\%vV~ }}yݲu'NJ6|&1sbZb"ͶQ5浓PcTX;VĹO<$t a ̠F%A+H06&+@)$J7}~c~9h~ 'a\BWFGS,lVyiVeyUF_ege0F2RgcfЇ'rmStPSád>[D,IjG (@qcF2rԚPUol<`,*rڧy9]<}/M>WۍIQXi Z|c(վus*R704GX[ ד&6>[VcRh6>ջ9}㡒-b;H'Q)EUsql@+%_' [( [5vE`tM bwҿL~(?3o!i{ P;aɤ}Ow&^p;=yj`4Sp0Mb{Ã`aPgUK\M1\Ȍ{("ߍ^6! LmCT y\7o&I(aDA4մAI kar˗3'\/ 4Ӧ{wyYKSc^\ \פ}ł)~TV|WT"䀨TveDT=P.v#kɥLגYazҌ C<K] ,՚Sc_w lE~Rhn"Lٚ"A?CtzL?OYU5[V!q@glwH H['`/X0'Eʊu:;UVyIdKP(B[joZX&wnS%%Kp$8U*Ua1Tte{XnhkIBK{nn A9#ݐG0ۦd.)s"cy#-5FvXۍ[%]l֞8㭽6HCJRpTz ՞XHDu} CXNN2Lt]eθ02cO<1\I$$ 2JOLp:ALق-@ް+%<·^?IU"_B@R4[peZ3Gc;e1z4L {ڻb/Ngl}uZtJΈa=IIUFA}cswS 떷xχ1d{ᄠ'8<ƉN}W {V765N]`/FK6}&Za*nB?-^^bL\t<΃F|jǚ6 {\ĭ]m^!iW dpT7`~k 4kxR YຒE]E1C'?"؆5GQf0`ig/F"'ol_EDsáSwNEOi+I\X 3ci_홞-nE Rb?L"y4I>Ҭf)V1Czö,eLfՙj?"ܩr@%fv5AW`o@8jWСZиM:T T'߄: E0:ϛV?ZFRP_֌7#IטӨN_5OZtQt mv瓽a4\]ϘJ9muכq5u0  et5VUy9O[?,=EF7$ؒ$,{6п1#sFab}WͻmM]8ec,>f ^_[缭FZͫf}#ۮ`kRlpy$ѝ>5&'Xn-:,ۢ1l7ȭÅ bUO j4ݚTt_TdOY?}(n2ia-4W_SX.24|y]+ҏ L ޝ8 岩nFs@)9j4Y=i`w&jsDboݿN J{I\~|tL]elJe$^*\ٴy7,wj0뻙g}kL݂/OX^W]8lyyeǛ T^=]m-jՔk!G%rLTقkb'}?^]oz+cb!R jc,uOVQ{2 [hz-I(Nod7h2@%._:e1DDK}6 ;I /Ig5C>Pn8 k<+k&׶KF~M@" sW¸ڎg=j{%"k ZfVeq73ޥj q$)mR2L}{.q47\,!V\H~ʐ,W (bLmZ%L570Z* 'Z,R_WQn@\7T#T26\{f Ҏ\s8)1FRA\KRË~H=eI1=MToVmKnxeZ9>$V4)'ڲgt k4$h( Ǒ.'2?82D#^s+g>n]:VWkDfo&R3f'pKyN|?Sy WT$=gj㽎Qci j ^UJ7#1Uӵ弁S,+0ms2d#2o_(;Ih -bXE `oL fIǧk@}*v0kjfE#M8A0pki (UΒ m F Γi3L|`r^Ws-p;Zjl/Zd`9c #m;Ŧt2O k9HpEa 4j0jNj彍W J -'yH+{ԦJDSoJ³T*~v}of6lr EM^3|zFW,e8[v}CH4lI:G?kһ,+NWF0ЖA_(Є 3|Ͼo+)Ҍ2 Œ01kȾ6tɷ$I*ol@֡U 9`]WYeQj%_l2:39-]rl5ŦΘW2S@pN[},(~X~VQ[G*Q拹DNH`XFD-P6z;nFX,ԝDo] n rR MaȆnDnO:V%pOEv Ō19ou s{d7ӕM /IQګ.$2=h8t q.jWFw}[VS5Y8ȥ !`ZIґJ|vY;c*L<1pϵ^Qs"XWZf>ۊjzw<$"o:#6/{p8S$_f?ո>gmS8 e _a#c90 g#;RJ pP u4rW-8S& zI<ЛZx'R<_ުw Õ^ L]"tФh34 .J z\0}\(bjcez%>VLk3žXbYTft;e@>6`0Au߇gQHWTDܣu^KxŚ 8( 2JΨ ԟ2I@M(25DžRi֡{(y]1vJl[ۿ&NJ}PQ$X=&^w^nCIWb;vT5/bG k)աɂj1L˻{r+1b[=_sƱQ2/& *p>щ;UiTfk cւO, ُHc_uևTגCW%Hg\a^[| Wv+(DY_T߾= |I\}WU[t \ߔ ZfN4RkFH|0LzDOr޿;P^3D[_S\$4 #+jՋk.gKn{㉨`$5y{9Enh\}܍^78*ytX,Qo\TAH)LQFͤƸ:BN%KdrSž+2>)fw]*V^*L(| P$aT۟Үfek5k{U;Zɩ^sfiە7N]h1"fH k6csiIrA3G껔eqP7}M:FޢGMІhŹptky EIx=ؐ+bX3Z IYiy$ye\{M4?hЂ(Ѭ&ܰP)uVNN[ݼEz"C0_.nv D]GK̛4P?Z~ri.$_+_Kc::)rIB?H[Z ;'C@^-M->ҀƲ'cmhwiu]]إkO5xp{OBV8^FwJ;E~Vk"Z3@%d5X&u=T~hxshĤLIX(R{PK0#Sļ1I($)Bg[*CMQ҆2qNkmp}Bj˦]@\",IF+DgP޵;F(\T匸Ĕ)!k\6I*˰3]JUݗg48S3MV٬I>0^~hFeq06]K'?LQsY&4][3=̅}+E?`qV 2Jڼ%QMj;V|wjĤ5k/5}x>K1TFcc‰W 4/laR>g2*Lbﻯa[4,ղ^Q gt&HnTRYE'*'9/6ywO8ѯod%D[7ov9bR盂6z ㌛\L§E#G; 0JR#|=9{T${g*[۔$Grd/yt_#3z_=3 Igf՞y>Ma:f7Mz)G;y8|Y ZťξDvH& mc^+QxsD(.Q,9Fk[XqEbo&VMٶfj6_7[kLM=莊uϹ]I)wr` ߎF9'9y<~tt=Yvrn%0ʐbOggS_kw +&[Q54 Aߌ=Gt Vb9qb?:^FyMB+~(:p$gzIJH9Pjk8:߱89'ꋸҼjֶ:ЅA#hb/Kv*ae~.V+?xA5$̲faǬ\_ ר[-9}ě%v3!пnG>0Hqg|XTFBأ2;3r-lH읢DHqBzanł<_x&?}+g.no~Z _I,_nSQWܵa_ӤŠ$W2W Ҵ0Q /5ZALYW}nћ8_gLdҊPJfGm9}j<]_T~.5`.V،>:T/u )IOyѻnZ{W/ udPFMGKL+^an*c>J{Ho6723g0OL:A4MiNq-?|ޛcfqb1jhQ$\g_bkΈV*/4> $ޝEh_-N*@euVq5?J G[مnYҖxሣג PEg4RNjbp$ =Fhr@]ͼb+; Ω4~oG&톲MJ 57oxEj v>`_ji @}OT4*%s[lMuf7bL ~2uib>»lYÖcЃNNlbGn^F">{8Xʠ傦!TxKwKΧJyAMWȘj+=o5.@ 7+(>,KEJ]JqS/; kȪ _%unNa- c[F>yTw(YumE<`)~3[9]o h*Ma`y&]fmէoo|6 q>A9Ss^z墣}4NX񧬉4Ԍ[bk%,qi#M :@,4xZ(b'KI%Wzꏴ\!h׺\FbX%OnW[~[cWR>eB̊R ':3=9V,Dd鄞M[|2u(O >{kU\A/ЙMR,!AhKNU&.ç @K$m`^JPӧ]Sl@=uYJkwt;eTLyjn z61r/66H$.߬_g8v1㨴%XI,iM{ x{Q&rg*F(G;j'1xȕ6V\{ +new\TĘ6.;Wjr&,Gcm3:AQq{hzf5^\oci Yڟ ^O!AXqR~!~4n9fwdۑqF0V[GsZ\%9Έ F^t;;{6?%+$AЧ:Ml_I]*LٷvݰXj',]N>W '{U]ԛ}>٘r}"Up>3tFgwThwufV75B tCsHhNا7W奿hDddϯ< ʻ{'ZH]q՝6'W ˤnP9{ &tE-5ÔjY05'L"Xȡz*A 5jfӣ_6~[4$KH3(R{{>VI(sN#'\g8D .}( 9U'8Bv+p)#fKlLZD4Y!ՆdevAw)!gfltqד"9uH{(ͦ%m!j%Hauk{؛IDP+Do؋ C|:f+|~wg R<ˣ ׅ縪rg"nzeImPÕęTO=DGY7j[)z*C+9P&gk_}Z1uW`.N6ْ2:p#UFgUsɧ ۙMwA&B5\Hݏ4bd$ W>=if;P,jjN.(Z xҜEbu0Gmxt$ F`DMn%oOߞV̄"/z $ :i Uܧ9)B5xmR O#L< J0r-jqʣSDJٜhp)Yh 'Qkǯ&"Rs v[s:0278.G(O{0~3S,`Rb FkDZoJ(c9<}*fӽ_l6 ^KPK0z%]0{ H19 9#vCr $nӿw:˲6pD ye^ Zs~H7L;4 \pv9^S$&j P2Ҙvq`Ij8rYm`3bMI^XБat銫˿$wTY@l!2 Q׽ۙ@4豌zԟ}wL3hb$SF#{Ym8B<3LG&_uP7낊JTݙO_`dUykQ'Lٔ7 KoD R?7\o"0/GGe<ͩMOggS@)_kwYA!! DYS L)f͊fTݴ[zoԡ\嵺<_0{ J:yŹgwO\TbO &,+2wuDY_P{ s ggFfY:\ۂٹ=WJ?ND@./k:[ wO`}ι:1DEԄYsV:5>G7nJxg$ތIrikb1/GCT04p(_Xa+D?CA}F=pR!`{fVLPD|e\Iry6fy KβV@p[* x "Iw\S##s^#ӵͿHi!uIT$bύmd^^Q89eoܲ';g'ied M8V4hL_ * OUxI f%aefOuWϸIYsF30|#1oܽ*.0nCe,n҃IIfRF1fџ(>i%~ps6)Hf:RuJ:qϢy|B;ɳ^lC? 0/DyojG(\mvtNEVO6RBV_i8CsB߅.]u}ɖJl}K)M Ư+TZZR;ySsMᨐMVBNϷlQ= XLgd,'{@B/ §3K"DսE]rlZ[4}o<}o'NN\<قSZhmN(JJ1w4ٚ|j ^b>Gڻ_E<םܔz:@QzkvR֋$g4ٚTv`u#mOcUq]=1zBTs#F?V/b9*qDQIL]؞%o^TQr5xE T/CQ1|`<%ozL__T7 1D_]EӸ^UQRRO'$`=kjh}}Ǖ:|lJOz%:/SWUs2Jzڣd7#7!̪P+LhA!;'_"aKʂ1yr4PkJZ<"|/2DR_&v+X49yLRFuHG7$Lۚ\K&SeNvjzTioOGiPf~a}kLٴ'=PiTovwޠ'Lק.DCo|7d6;?Dq`i^]ݵ ,]NJ \ [,<3?C4/JE\:NMIJ$״tI \ uT"LtzP&j?uS0LD^}M6uPqik&<ۉ}{NƉ7D*DWꫳ챹H\߼:mSQzDYX]#.[yF3 SMۛJ3'\%IlOqcq^}>NӤjŻY K=)*S;.V2[M->?U9y'lxs'7MvJB~ͭۻ~ b*sVVm6˴z{IvE"l)*5͞eLZ3֨z:wBƜff1)Z#;ULpipŋeR_64z!|ZsyyEM6{rZ`ey5Q~SeJ^<n_6sW.%)Rnn>_Qgh LCyt#7'賹Ȩ$-uۑ"xju)`_3!ŭyµVr3AČ0nm;]p(^[G~~kz2 HAȺ~oCJTsxa,@ǖ?Bؤ^S̳m'[dZߙ,ݝ {1߇!Y FJɩ#9!B9±[>kw Hv"a(/IJh[h`x+:{9,_l0Jw\+I WhB?ltg>qYVv"ĎmGLP85i7iBtcb~V6^1OAyv$ZCz`NS?]1&L's5֚LmE<6^+ߚ˶e.*Ae^pWy]`l}¡j snG$zx\3^|@0²S%=RìS;&Q T@9FG$qI0[!=q6p 7PmbQ/0S\d D1"mfN०aK!K<-!e$) WMc|7%q.ЯibüGX:Kjj ;2%3WXUwQD ;IMԴze@?D9ۧ\szof~/W>keB~B7@( IHIdı:+;#ضih<kzOUkh$"EP>r=GY{P.񪣝!n!VX G ք0\19I%8N 2P@x'U580a<ׇV1g.4Nג2!>{ΊuWgC#^@'0k9<ڊŻ{-+J$G3:)ʝcmŠXS`ɏUO?m+6SeK3 fwPeH +f L%(<k硶FO'[rU6֒@? ILtW9*b5U"#ގȴ@9*PTeLiֹ+H"8MgjnBmj)hmXk-TDׂo8 ֶǫ.+5]lDa~pk ROϒob ><Tb^ i _=m\9@Lap4i] TR( ` Ɵi0,ZlpEپJ\ w2WED[v%w˼D`,]$Tc2܁ 6Ho >/VOY~-DԉK# BjòVx$vw 7OeyjW愶7-dKaE5O 쏕^L-g-Tiz"AeEWj L<_ؗvgו0?uk+LyH` Y˿&}?6n Tݴ׿,n-^[ׇVP4U ;{oױDUKuC/ݙ3Jo4ךPz 7ݶby##+r֬F vr" [3#~d(^]>{JŚE$hR7 `+IX-笰ìغ µSf /p{*{ȝXa8qprjA]:VL{FJk# HWBQzHN\4qPh[^K9 羰`K0$+IXKR+Q/ ױ;];3µ rnCw \<;\~VJ<<ڱ();7h>ѭːM%'_dqM2fɺs'f0zPY;V^4!淰g$QƩW@vVz[<J0{0SM4 ej/v.~$Ǽs8~翇<4;v8X~;sTxWG5nT^ú)`4kv/@-CR<$ 3*W}{ iGaE ɝԄG6`Stq _}hFeydBxv8se^}i/Kal%4[2Z|^ϑFCSYaD>F6D?ख़XIZR##黴ڳ}.0KY5k1w”iDz5O=ČZfSu3B5fj`a. XkbY+m~2Nu3. +|k`O&"]CtݿT07sοJ8b> NM#kMg yfxa(1UD9fvyVLZ3I7-I@}Vb+G+| / /I|%(UތcxdnKgy {BOdR5ϼZRD?"O}h$U?jw&?D;Dyw1,V D1AYkvpwKVIa EP'@ZMzҚS PBl"R еT1!0"_jj^9IU8 vG?~A]nw4N sjڔzlD=[VF -l6xu[VxlB?:2&-;WĞ[ #y_6IwΑ<9Pn(IoM|G ' r1屃&еxf֍U41WO\\ךJ}x(3&k$>E.eƻus,W(Zή9m-_ӭV^czt&&IL jT'Z#*k''LĜKK(V:΃R^)%o^.a2yn{Uk\7Ӌiݺt>"aZ<ح.xp])vV(%_^~g6*f1p9lWGJ}L״tSD)ޏ_Ca?]FL, 1B>Z_vxn'DC,U+"FUhTtłȹA=NxZ,Kdג{z`;3Tv&Lٴ\v4/׺R QMVP Tق9vaXEYCSa.Lۂoݗ?+Ez)0wP:k"Ԅb~kO3xJ4+E8,R'DO>J֪ PZ'0|n(qǵ6-_CY}%M4%~6q:el2O>̔XXBKzj$` 0@MelhFkYs%uw &+?&axw'|)sT\Ĭ:縷  9cmI4o{W aQ19}B8n6TJX^qqbw$ hZih !gKm\U7-ʆ@P㱖)=ٖ'k]@I{/E`Mgp(ȵԂ^L. 2B\A5'.*B&Kjy(t/T۴;XʪѲy^p8sB3PL)G`zeTgt V%,&NkĔs]bJ L? ܃K$$Oe%aV&Fw#Y+ֈG+j06| 9$R2a3>0ɻu5&S*w^A#LP5[ "Nefֲh=>z0YU9KI֟p4Ik}6&;VcɋMJEPdj.OQ¾+7(D|:f*Z}u[t:>Wy/4!`#5dJE޼})#ZBǤ 3V6EzIBcq=i X!"4&x[ QZ8ba~+]҇kPFe3q %5(WynC,!(kuf\mkRՌ:wT0_%] hw%ɑv۫/hs5ܡoZҍ +c Iͮ^kJ̦*$i5nJfWՒ-]h&;G7'SDmyue [W)ħ#4m[+[ dvȏ_yIV+f2ZGtIn248 j0CҰ!d+r]~phzjC lj=b]2B,6،E/zo٣i9,fx<coaNro;g\PSQ'~spR7|緬K9ⴌKF!z/lp{y$^vS NªVTeV n6CSiEu^>U4 d ŧh* 6+0S}Z1xκH;uϮvL{|j֯d`gYpe$+j*_ W\C %d7$!cbua(SR峭3hYx1R"!S4Nlǵ%mGVd'[e_ ]ԙc߰'y'*5-5@z {cm/WL+t%Jd!h$ypq3";|i2ڈsT."j`F =cH0Wk%ɧ{*s)Ol.GVѓR9g&]*_2Mup?NKaMōefDyFwoOv&&:^?eht1@NE6Zk;:^@W!H #?I4vȍ՝8Ĝ8! .-.&X`Z*;:V7ZGu@DdٵFI<,Sky[yw Z@t:CmK0er QiNW96u#hd(&{Ubn̢[kS4F'uueYf-((T&Z@'Ѻw븽ZؠXkmXodkJ& N eVY{~Z6r|R i94e )lo26~dkF+եc #cE ?9vfrA}FojTTmny`%9QN(V4~И | H0*BB[э ߚ5zNT]o 4* \`WGI&w][M|6)dһ}t9_3>0['#qMc.3V}\5r |8m'g s0Z;4^Ak,\JP^)afbl)12NQ*UEݺ*;31_T t<6Sxg+Yg ,KaPg .<ϙH1@:).%u28Pex#ٔh:c([V<jQEsj7{A7rMpS[]oϱX-&0WJOcQ+WɓBX)1qEa@K%Ԕ:VTbV@HnZ!lזT?UjM;8DmO(`Rw76B!4~@[uzݣJ]su&Yz_G}S}-q'WK1-8̟kfWhfF+R=5Sy做N6Vw~B8g4[ĶQܯO0Y G/.jz^izlX7Xr(a [`Q%Ȍhx3u,6 I\ԻblaZ:o!j CEjUs }v?'Y5__4 NAt=lrsI^o4@`>Ex[ŲWTѾ:՛EjTdc!!A)@bFv 6B:mlM{Sh)`8R_RɺMMP`j*?` ȠMprУM9;Q&[H61Q]=iٞ#w!d6S ݯ~5޾K~ -3oOmu9Ҙ<}U׌ KfS#GpF'ޏCuZ}OggS@_kw "Y^&!l5>Έ;MMCoĆĊ|;. #^k[gbӃL:wj2vm^չ{lWf:ȵC( s<ĺUd{KᲨ{j6yjZЊWΐW@w$>&[jq @@RĚ6nOcw>&ԍMN6fvan-ͪJk/ _wflcs.Ppvϭ'Pf0nV\|F34+$ |֟=w/QÍl"l[>&}UF5TKe]Zݞ|h.)%dgdHrvYR|sEϐ:!DwŁ8vM†MdVW͗aϰUA L J+GV" q!@"R댑N j]>?VmrMц[`Yx‰i:p)fߕI ֔I[zN{H嘆pgw b|v()L~8=x1btp0jCpJ[-ibTWHHPeqѭz)i Rnrc#̹N43\Ua@ztȳS_a2fHΑy]QKd-꓃]:kl"A .cI+MU 8ÁKPda{9XN_#;?SɊgɥeNgC3b X˄O @ŏT_FhC FB5n?ħy춸c3y%S0$N&:aq]c|t> ^bsN+ èPn À ~WFew@[O)h,q1AԋƲL0lvأ&Ģ Lk5h| )%A>Nu]<@C/x ?jbLը7$&V4D\liy-q BjuQD5q>EI|:gfp "7lӴi8a@IJ 7!6{.sE}Cw1_?7f<+L>[~v}#cI2Vl,*WD'yw2};}n.m|u1W9F=T.&zPV6!L{'l2gݾs6Ek%Jh4\cZh ,۩Y )Yk$bTc<ّrOXuGBBrp4R_H%^{CNՃF\{N$> :k8L%V^5v' $oqzOߨ!8.>5o?WY ST7@>S lxj9sMG8p}H<>ѓY^d VtP?#xΦʔj`tr#Pz>[6M4T_B*lDg^]P*:̙)Ҳf *BO?D[n:M8=3GPkfS6e.2yd$02"#zۺ"\`D.G:6Ƭbp]g]r]Z.w[ E!9߽Y.; ;f.T,%lHYibP !mYUwCP7 {ǠnE]+)zB2(cZGfxlfP:>uLk2솞%tYȺ|ICJ * "4xe}:\NquqV5찉ip@zqۇ9 l'L)@-Bf]]EY>TW!pNY#3&b",gH&tYy/")md1o3 UOv#FNĉaߵﰤDS0T3uz*[B:67UG@ %ΩixX`8ͪ&|]T$ @f|ͼ8(Ѻ_sOW=1}8iu١K^%bsTV~o4?ᄻCnbenf]JRCffuEkr>v}]Dkgmܣ@2OPukݜpETԥ2B@X ndIXZ6xٽ.8)W>I aj߳D&mx4sEA@c z{a]w?nIGחuCU]6#t;)kKY{R,`A L@ zN@ ,_6zŭc~٧JfWOlAR0h drc@Gs^%;Rp`7C'k D E\ pݛ8VB1*zG|{w8{,W_Oц(D'M.Ztcڙə%}1?GuTu#ܙR`]`IkOO쳉_v\<^xL^4nm:Ό4q&0@?Vn"UH _{T1#3`ED#˘|!΢wk@ iJ3y3di1-ꎱ"%B񇽙?r\)/OYDinYZ9s.iR3EF.t,F1Np]ۼv&Xh IWᜉЭzڴq8 37UJ0~_tfD(6Z4Bhzlx9N9)NߩكҷvPs7ԁ OrROu2~JiEQ[qndrJjmtz{gʴ( 6>r@c]GxcvӚ0Es3(\v)lնjD C`NoB l }6oۣjG9f[m%u"y'; #B 02sSe(޹͂tg{cr~X$aj76=A :kqЭćHWMV7Vdl,d%ITIO =3 [@>kKqwڻN^sBD=3(GW$mpqMFi XN \!Gt< RJSطu/Dٛ*EưQڙ{%y<0Ķ?[eH-Ǝt`<_Ux Gɯdrh$vD)O&P׺sC++/S$+,{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggSg^>.A     0sa:qx~Jc6VeھVr^F]zLn9#kͰ蜋,Q/ChjX مhw>J\ j'<[o4!>RZLB{yu<쎺$ nnK?T9etf3Gq8&6sdNUKޜ7J.QSqz ӫٹ:wC{ :u(lk,uͲ;?`qpZ.ucWvt&7)Lq<7ԋjYFKtWs_ueO]pwi`H ⪄þ* <\D/$L͠ke tMzu Dz͍sI#U^<)hEVL8Rn"tKdS).{BsFh7 jXl1xBh07S}1 \n,Y;>=l`mΓ)#@Moms v|aҽ"֧:(7]Rvl|g|Pg{_hdILQ'ש]=JV]>V}O۬ǎN h* t ͱe ?`&r[KV$Q`qC~źo7Zq  e~d922V ljsi-=^s2i+'c ҄r!  Bϣֺ[7eA} B<_AyoC%w gSQo_#"iRD̵P1LׂJĔofrxK[jތjS ,&ovG׭&oV#],ʵfٶ{[JO=sE$dA|JTɷSJT=G圣Eh5ƸYY[No"[{~^>p|*j3L7$W'MB,EQ"|4/n?Do$='ҝE\7bi&I²fҎ7[F*PaF~N2'jfxTkjmJbnVR0d+zrk>#13{8}T'٩80Ր >v7:ƎPI6 zbCCgۓUܬVJV_zkC<$Ɛ-G[Ϙ#ԣ蚚#gRl9 u V7Ys4v F>$cVƚ9Ō9[;r!viO<7o4Z]fm! ބz (dn62隕;;"/+tX, ~׷o^QAF]E2 n˯cŘ^ʕq rVF vmD,%1553]93Eڀ+c a~}T:'˳U0S[ BӲ&4Au-2Y['ZoG䨣zYx ^*Z ^AH8^LqF!9$zd-ΖQnC 9qK͸kodt"˦TI@)/ B-;PƳv*@|h_~ބĔQ9_̣_6N/ 9ֺnGevq Rc2y{E5bԍ#ja[+.q2wW1e'80[e:Xo, ׳Q`o!\BHuM,?QQUq:G; }A/5qoBAXq=I.7E: ߸';YV7[*Im cR:dO_l #,Iŵ]+߳wvȳS\AZtBt$&rBDiXӻ,dM X>F!{jjč0&vL:AF2&L|T y-ծ'@c*im[Ή^"E3^\LW@lV2[gw[IÔBnjpݏ_,Ie\FNn~l?X@:7);Hҹyj3zpu\O%7@[αc3PMD `/Jz"Ι66)^AjJ7/7U߮Bڭi@{S_Vy]e`x)  %3fV/ޏ9&W"8h _t.)A՚o g&hV"АP^>:IJ .Gr h.(f7[5OggS@^ᗜL#~ >Kb/5nv@9I+M}r5eI.J״}_dh펵:Abu 7NҚlp톪p;i-hkRh+F* *R%kLU*v3aeEj.EQN9l]i{AYW`tϼNˈ^\QĹ$jx_ y~xfIX['}Q",5hw/yy\ Gg?9T]qΌ;z:YN# 6DQ.IZY*= 1&LW\I⪩آF3έMi`xM6TaB jUѐQ9 el)T{kfG\Ԉռ}&1AZ:^Kr;yHˌxam&(x.z!^1~΃LAjTotȏ"s\-,9 m)Y.(t)lb d_׶qC.N 650hwK8ǺX0BCH bYXdCa\ZI3, ؞WbKXh;9]ݥ^)_NW ?)yyGDB(NhpJ}gh'aOL`-izN_g* Lpki[R/Bs 5 WVV=2Zd{{0ҫ'hh%ǍV)5Fx$fU4SԜW X&qs۝1& î(0gN6-Y (^+e_F 6:K*U97Qoߟ6+[-ǵqfXSr|E@9J7(lwc{ӏ{F%.*vCo"+Lf򗐘‘pnB_OD+z(5ЉWzc$w>!@{Aq!/֣?m[ʼڵJRӼ|m fӈvSmvw\87VŕD!=;Ev=IspPY\3 m+g=fbY*&ynqoVQSl=ŎvbYU,zo4uw+{m.-]p7q5#nܲAMè\9TLb8U._^yh}@3#NLuy‹Nv6]1VיXN d(^*5Fuh) $cvf;-*yfoqVlлɉT0#&Siug0Jivzߖo2v홟fIh^ް0ph `ފRI3eL:jʸhAF?jF⺏@tg$"1Ų.!t}4y߈RJ_(bMS?3npǷ;=&T{t)DM[ᬋ?N7ֶw:J) F! P0S2G֞ }F{o7І7hdu/vLA\cx6?:X]Tr`Mݼ źG3w9""6Ga"]RE<wL~[}|c(;oXx|&E>=:&72whtexdY0h$21yC\1<L2 >\p5ANM4ut6vN߿ yL 7lwCTbi:o:O,>TZVr& %w>XR]rͯk`e@؎XsIҭKD2 *,2MU5La?JŅt[:Bl ڎT69~!oHxY57:JL]_ȍ $YIQk5ΰ?{ Pe@H[w 1'K]uKEհk(SK Iۈ9) 盌jaB,O{HCۭU hffѲ(m>wNq, &ǕJBmczMPbJltjr# )*zS %*h*)HŶQi$G,Ghapt&6~v2#2` z˅'@ȳK+EœF(С\~ ^(xUk6f4@X¬wKnmx(P_E y?Y3f5nCf_\Q#߼g!@FzNb4aRHGS7gl9h70ɭe%uZIܛZ:Z4EHߺ_|y9/z" Wd]stظ_^jZ w/sf+,DvLNZg1[Rlٰ$Ny7'^xkdι Pk6_n 4ٛYlAp`DL[E]jOЃɩ d{hDbI0=s+Yx) Ia4Օ}Eji qP75MkuDjU=V/Fy%T5kcSb?Ou8D]9 {l~TļʽG jo#WHehl I__[_!ow+QvC:w~ wo{&+L@\]䔷r\zjḱӳF 4 /hY(O)f'X!Z΢呮FzAwȶd0 E5տ5) ]X_)ZMZ{ ֒T;3 `GB3fdz|AS^AL- .jlMa6ŷv\.(bzJlNȪ.LŕRx2&.aFB-bx&k;M lܩk'OE4s В}/!%}-ÑZ.&Z'~5Ez- B6'hp/I^bxz\]Mm lRXB:4n>4_«Ĭ3@FL#>5.hŰMaYfbqq6{F+\ қ m& i4[mUG710ಧ^ٮ9V(0ÌrGWkr% ,\'DԻe{#MzQK4Mv}L"5e}9{fLGqRy<)ABu=eQ<.#gn8.?3RŁR|l E[rwam,{B?sr(MCߏl6kΣsiSS.x/L#QB9_sSlDP8J <1s_5P)`mxo%uJ1HQ93O$wB iѤ(})}vl3Bh!@t/W=: 5^wuWOggSQ^K" {~>Kعn p'$%$Q]X%_%{97cI6~F 0_ ZY{36.h֛)JSJIƍ5"k2EA[J R3QE V ZΙ9Dmt4Ѐeo۷ӟ $Hf^<[UBF Wiy_oUc]7~7IQNY#XP'mEߵ_`٘Ϭ@#' }RNɖMyԛ _O1b΁ ">[~fEh$aU_޷Ѡ‡;cܬw.5_>?kI7\f^H 6ه$0 ڷ PZiYCѺ)Y3&u}.|:FɑcZʂJ|H4p_B-"@R {[[CtFPLN]zy}UkE}cA0EMsQҤCi6h0=Kh&S"fc`՟;.,ɥ_ˉ<kVK6/lfH5. ア c`}i~NWײR!N._OP|tr95 #~>h9 j1`J tr=l.EMD깏ȇ \مzɂ)D&fv+zJ֌KnB'KF"iήM0|yF W1]GڎT$b[1K[91kV~I/Rax!hb$oܓ.twv{0f;QpFy#s/RGpo>&ƀZ]$=沖G LsCQE[B'{*F ZVv\A Ӟ. HI+<ˏ.= 249[aLϹ p.эܱa st{/@#^zsz!؏7V0^ :A1fX[*C_lr76@?ބg 4sE efc8.UЊ`ΔԹ%aff%|BCmH7YҳHǕR?K,aCųt:bW': ~a^ |XNOn=²,4ITX%v颭  oa #L֡Xv]~E x7Vx}̝2 e1 >[ضPVീ0-9E$Z!v0s\, 6ֳ|R!8 | |'. 3+zYlͻӄ 8mB箊,:=l^bX>}O-]qYD˻Q:%J^1T }Dc`<V,=.;RSS5S@顒UVVJs׷9~ n3Ieby>g*򹽤:vƢc [Jײ"n>[~Z%. ;`d 7C}zN M#jΩCc3G7qT`}\ƫ+m&q ԌZ,] r(]\fNЕ,mE"_p YcBy05&<g" !RTᤗM^57mVc8gG&m>أb.l 5Iº.OW$Ni h|R2/eRxTQktHW/mzJ7JG'ոρZ;~嘝RmL kz=ˤSU29iOcQE>;Vgbq $O$ITuz,=N`v\51X!i6˼ Dm7̚YgICxjS2c(taVn T,iݨM:D yA[ &.ljh}"q&{eeqI+_${,0cWN@zp.0 8d{lK&B ҅(L~ 5ۊɧ]B봒&Lt/-1<3ZL 8V3xa  iU]ꮮ62`ЉS |XO0-~ªH@Qђ5,޹(\ c|EJD0=UMϒ۵Ĥ:βu9`IeV &ڗ[ Wjcn|"S+(0V`}.;OJNdg L}m[]T1j?OggS@^ V+ VͦhlK#[u##cKNFAझ}CiqH>y lLx>͙qR\p%ʕȲ\l}5| 9~ '98ܖ/~mІ;-!x!wV$>{qnzۏw@H`tkJא3גaӓ)rxN&ElPpVm҄h-W"MHɃeFTSc7NN=G{{6WyƄ#>{6qng`p ddd]h^!@r|v\0'fVkM,ϴ L倔\}}l M򀘈J $3WC9Wr03r.:3a.,Wzf_kîd0U. 9<\ruk~'n ,J"C)!Kth>B"qɟ95_;?=ܢ6b~(fܬ:uE.L{nm>@Y %ЅU`#kE(/R%n5cS'A˅T/SRrk~v:?]r۵⌔UFT?+qdI98崐43iP'ѿ:7 *:R+^.{:!tI"upϪ]jtQ1O4i:<겅tTrvDwfI?ng]JJϖJ.wH"X%_Ȅ A-+!|&͆oRhbJfQ+ K 6CpTzI^E(thr']"LTqXGj3n\^EAqE(c=?[6>NN>,-{Rr#nke1DJx+oE+w(Ա:;غ5% gL;MjoH,v뗜 ϔ+B5.TVXV!i ĩpu6L`FgRkM%nt-L #-&g*5&&Xߌ >{6qMo#!,IP}{A EIFX#9awMLlΕL20NCΑ),HN7K{ag1/^;r'-!3j{.PDhKnjeDDR^`غEF".{".'@T7U47!q@]eVO$&etP|Ts1#φJ"]l6V4 R?OhXsvǒS͆EN2; bg{C%rջjt [\a̝MM[&(D$@bWNUOZeNi#[zv?mE9)ژ6=3&"vҶ Dƅ#0ӑ߹f=ej{󜓷2?EȻH!f*C`t3Hާȫ"(z kJ8$^+\s+)5='(YEҊr6dEsо6h컔=݅=4D9B>UrŋRh[m[Kg;ܴ0G 52wo` 5`}4F^Vq,ᷡ M^ԴTUttK^V{7P.gd6Eޛ/ pV+=?T3%υ`5qtTB>K}kyD2-稏>kɼ(40|4`YU,axjjO&<lߔ]y=c$VIQq!cK@s\y,6:CqK3b|*2 OFh7Dp`A> b2Ak&~vET]_HjvoTWz ̈W$E?q8rYb#mrPC J}: =:8A%ݹtU ÕզΡuKEnQ 9z9B:Ӓ8r~Ƴqگ.YK&aڋ/q ,o; #{$ހВ`i*^yfʔX]+Z٩wvsJKuefC*\GM+"%FT8 Fr|t*-W8{>K&+UJИԲ\rmOump}fwo)>ۜ+'\Ԓ7P- Uha5qxDp h$&(3/K3}'7*}9_ZV^b4нҪEw7t +Ebt_>R(HULՙLbon zJ(7R]فj5ߦMxyCHR&rF)?cx*\4c2d:`#? Ý;p>[&.=XZI0llE :Uwƞ }1d1 gW.Ir#4_8Ue8I8-e@XlyobX7&]kn1JΣϚ0jɪaOt؉L^n-:ᥞjV6R جYn=!Mqj7qI5I,vH 'e?C*jNq+9Nnj5B6neu~qsE,K^|KE@˩KPuW•뚓"1T<6iVkZ caڌ I2:Nۘ|BC:YK4OF|^)hDJvE_}l  b܄k'YER 㑩\]-^Qiz)/ byn=޹<)].G;5wFz劗WUgp,lגDL䐚g8| e>J<ߔД NMݛ,c1((Rk#B7JaDcؖ4flf:-f'E)}uSRAK9_Lԉ [5`5-DJ Qi(!5;rlv d[Hˆ +lE̪$W~jxcEݢPv :ء:&gݾ\x/Fq h:qME`GGm@vYy{"E30SHZ;uyS0 ^4m7$󄘈,ӆpM:58WQf6SQ$ns0UP[RԜ_f2ؒ)xR2l]++!H'-F\Tcq3Q`_(c61 &ʭnLh~X1bXHlo6_ :^0HI9:ŽPLcV$bN-"KyqWgFǓ~),m#d 敒 .8[離ϒRoW7tUZf񻵵2H==ɹk+Y)eQ9= gwN'$19UF>w116bA±9>@@4n;vh_fHl lrMK'sRM5΍=T4]t_6!ESR\OZNDّS= cd_>Hq_Ѹg+z4]0N׾A\B^zq *Vy0:'ݤEK9.E*'z!}{mdϩBaL@s[t!ksz26[,9ݟ1cGgW7YD ;pC\=_ɦ40, g.k08J Z~[Vr^D[Ԣ[P ރOYYzmJo SvOϑOlQݮKh_1鹑cq\Sw.":[\}/$z#\94'k}d{ 3%ID+V?E5oKiA4r"˓X-fc !Z=Ѭ {1];\eƙ/FL]ΡFi"zv`zpgX#@v &^{Ί>BȚLp'@º$* BqK`)lԮV]u#=2%̬yZ |ywׂM؞UXdwO8t[iqO*!xj7w(ڍ҇{Ke :P m eafvWİYV{U98uӍ{ƍb\^UNN$dM?Ͳ<#( ejX;ԟt c>,>Qn"$/+X,vJ{UyZbHv`TffC7peE$_+?J şls  }hp3eM OE`VgӈKp C'ݍ% ( y.p]ދRTit;4T+u ГW4[ߪ{ }6.u1w2WL]$K`A,yC4ݻ#^Tٴwyڂ{zPw&ӆ\1pF߆ŵHl H΋Tcﭸb6{z}!hh{XD wţ@Mv(^oL׬P/tܬY}4Y骀`k(~}MnS`m}}XD5Hʵ|ƟjbJklLQث,qÝk[o[&,ٱݧD7j$Db]Б '=D? @x#1*ߓq Dt]5 l/obھZ14±YAWo _4٢۩H9{Z=rUqg4[G~8[~rq_Q)0 MLG*n{=}C j"JTՖ=ߛ.i-wƑBQ.GO2)еP8O=Ϝ8 ]+B=f_2 ǜ@4[V,ϋN+S r(@ڬ8 JE^_ze瀧+beg>J-D"7omi/嶕c4eI`sFn6ӗ6~@fh=`[^/.L 4SvgZsV{/u>c@S*&ssk5൉F^ CENwSwQZy P^,rX>iQjK[3!kPֲ%q ('[Qύs$w@ Rˁu{cb7Kv&;'RFWXQj:\+^JFo>8 +RˈY8 se;_(ܸc%5͆vn;s]cH3 d~~u.~r)ɵq)ΜJg()}C-vY Դ8:K׾7Z>.D@^Hit%aE9no^\5B4: oel2<we{i_Y\ -9qF_(Tܴ~]m(s^B ($AϨm]}v- SVzNFH;W,0o !"dv|ES$Ds5&P.u˃Fqu9-~iVTB(:sR#vB:BHOggSb^k],47ӌ J%zbP5} ǐ A(iU> &Wdhja8>b-:US7FY K؏b6=rz^W&[9t%\ݘJ6#t*=q[a6BQXށu`;@Re~n\qunF AJ(뚒Q\x ]K X%x)^KX_W׷$uֵMXmgưyMڠzf~8{!,_6@XU/#mF=Tp (Q,I P \W>Szサff A4b'`bt[89w3x:.-$P z%'Z[zꍫҎJ9s;as.%=1wH3EM=ިd0&Lr8u"(_Ro"@br=Afϊ:;͓ `؛5ݯl%Y! n^i8qX=u<'Hڷzə~׮)߬Q?`vEꍝ $l&#vbu2i2ԃG *<ӵ?KVLtԲ>&FhzmO,:^cX~g5J9pI$URp{nA!U> YZ ?l[waWhʊòv{ #kQ8-1|<"]ܚ\A4xkg; in lwK+W5:|246H@=-Ӕ,O~ L[#- wI@"MxgKͳqs*>*vd pEb ߟ4#3kz*;,!Vŧ ao m~N?IALǧ-R-Mv{~ @XxלFXу RVfk <ݞy6"A+B8' L Kxq{ez6fv43Hd*GOJ63p7#3P.Q:gs9֙͋0Me GQz"":R7}s6 _ytX*}cf ֥GQ7Nvd {sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggS@jUܜ8!!## 0sa:q<יNiH`uʁ๋mPy9-aQ֡VtJh}P4.S+]g^s4b?<aRdq6-r;P|،ڙ03g S^.? }I8[hgU;ڶ|JKx!s2.9 <bmb ir$g:`z= 7+Ct8&͑߮ +4Qhi\UU5:ޙ͑3|1Kx[[^ufIM7F̧8>x~Jc6VeھVr^F]zLn9#kͰ蜋,Q/ChjX مhw>J\ j'<[o4!>RZLB{yu<쎺$ nnK?T9etf3Gq8&6sdNUKޜ7J.QSqz ӫٹ:wC{ :u(lk,uͲ;?`qpZ.ucWvt&7)Lq<7ԋjYFKtWs_ueO]pwi`H ⪄þ* <\D/$L͠ke tMzu Dz͍sI#U^<)hEVL8Rn"tKdS).{BsFh7 jXl1xBh07S}1 \n,Y;>=l`mΓ)#@Moms v|aҽ"֧:(7]Rvl|g|Pg{_hdILQ'ש]=JV]>V}O۬ǎN h* t ͱe ?`&r[KV$Q`qC~źo7Zq  e~d922V ljsi-=^s2i+'c ҄r!  Bϣֺ[7eA} B<_AyoC%w gSQo_#"iRD̵P1LׂJĔofrxK[jތjS ,ӑyۨ_5T?(GIYǃʵmJ%|N+?Ud*g_l,wx$bS3T<*5nsc X=J1D`_%i Ufٷ{kL[%{u=ّ&0?e ѫuJ=\!gcRש餘X]9Dv"da MOLQyedvBBTu.0Zg(@6oNR/ຣ %,ϒlHHzɄɔ3_,ҏyi,dyP9RSbt,- U D[F4 W\=g& =D9i4F=ˁ쭞LR\[ ,י/^>S+֖x7-$Ϲwe`pBdScFD2U^Qˊwb쳫w>W|:<ݝGq(ɸd{>qU]op$}s Q$6bY^:Yw!Cz ZzNx~C3ٕ*JpH&90+ڜ?/7]H$ٕ!hs n'csN˸'D>f#{5H߉?0yQ#̳([Mm4)ϭCb7ޔ!ę)aˆ7ܳH5Cu7DN@eҤc(1%Y_Vۆ:]KSo̾@TzWw!~?R'DCl LӼb,,Y{ד>w%klC"M<Չ4Vٻ-EEz֬جAL[_P/Jrc݂ۤ뺺x/kLŤ+&t\h~tĹy D״A :)E+Ro|L__PD,Xgﳺ_]}L[_zW`w]ʱ2S ?cwtDߚv9sKB*MZĘy6*Da-8TaHۈwUS'H +]s4[&"mԝzvkz:_E95bஓ~}dwwEv!^=uV0ѱ",1 RNBϑC(K#*aڲ: Q׷&b$f=N4l~[fђ-vo]ܦ8bOqAWʸ?ʓM1cklD훠D+ڐ5c|aAUVc0ݎͦk>% onJ-D,lF:TMR/b{3bz>_zMom 8&l ju)?ٶLWeNN?ZTbƗD}TrJΓH_tjpf7s.27Vqtu dnEn|?ZO7tØ\C겡1wEvRaHs⢜2"*pW6fӅXѮ[)LTgF:s;!H)$o_Y*z жk E?gJ\w]j}r(!6j[b#Rgxv'XȜnQL硚̄M܏FQN`Zfeq]NR9lZ >[2O 7IQ$a[7ei5a>Bu`LFWŝ&>Ĥ^, mjƸHOEMfS7ԂH{bjO[4o$'vy<խ)*7:sƆpn ;dYfunzsf'l.H?2U>Zg7#> Ut*ϩ?PF/q|%!u⪻`c-6 rN YSvQ5UՖYNLV[FcO3q5yeff-h4\xDo vf͢[WrVrmtxMznhÁnǪzT6A_C1M@vKIGrorwR]O~y9*E5Kdo<2땺(ͩg>#>b1kōk3W3)y\׾_޲|ߎB{np72_07C"ol7PmdO)xutWOggSU=6,w "7VRD׌r&$%@$N;>p6,=r!zQpZ&g&`ze #]7^ ["pu+1ʼu&xtC.Zi5zĹ_& `$KQȭnᾠܩO~'_GRiGx8*6JV%Ӱ_~+W] J$Աs9\*wE=V~hBD$Qs'm0*n *Q[ngГnJMªj,*>U.LSl:#Q16K^QgBgȇ(7&Āy( uZ~^{<]`Z~?c # vy(ewB ` ջ WꜮ! Ts\K'o+Z[sk۪#t>*e!yuf &8ܵvS+i_rS,#E0{4]X*FWQ.צ̤-[z]!^3՘ޞp.^+Zy'MT1SO*|'h"z5.&g?|#S^kQNv9#|*Z_B` z<~[f2^N6mH@6Gf'Q~lvQ~(}^d!+D-4lm +F-/"rU9b{:GzlW_N,v57خDEd(SaN}>KX{p7q'W.b%I]zAGS$:S* V&nZ=M?q>i?b:qpx:>Nz4HevOYMWfqCײ_8~C;4YpHpHL~+F_ 0tC d%zsc#isx&f2A[ (:u? 6:5JO¨:ˑMbN' ZZ yˆ`Wkvp"]ђ'R=Qf) :~%7p_iǐѓ@]LJLfdQ zA)|)27+"2MБUz{,;Oa\rNB"Q8]?9ٻS?-yR0a[10>+e 4 K3U Eh?wW7YyYkt=/:Ron;~OG8Va9ޫ9³˛NtGIO_7q2moxyJጱhLmO {&u5 "B1Z2kWGأYa(iz=TM'rawDժCչZW^}`DyX t'g͉HX+gP FD{z6+(rA iO&WSV`j:!yhJe{%*FJH/1ɝz"zΑ=UԽwF7foUF> 6ي~f'kO+DumDRƵ[$VTIܥ{&T5UV̉6V 3J϶AXLo#9)NDCA+4`L5{N{MiLnO3Li>kf MHDhikOg% 뺚rx]K7l>:J/NV_::D rhW:z,6)T{;}^6 <X Lh5 yМ| / osl ɂOkf9ڋ%N%5Z7I[WiqoJ}*oU1I62bf$pݞ|qBoB tD l=ٟ%r;FP+g!!9u׎oqEǂF: k6v\ p &$AV׏ݚR륿FQB?饌J a3`کо}ʶ:I bmnwf` !bQuqq=Y.׍MbELkGo H|EP,Yz7nC[G=].+s.o 8NˋC<<n /!L+RNCEvD#/zfL0ٮ(ALM/G6D\oHƏb>f[a k16͕6جs%/@"aQ})pexT7RZ:"ěWVKD"P5(Lw5<שzV52 ^ R;őv:,Bm4Zxz I+<)5:f$/6hv ,W7ORU+L: DҵW3%ajeu&;[p+ufO1LaѾ툐f5$T{<(gy` x-`)߲ 40kV\ۜj9ϛ:>E1?:9t$,aHTgAs tqFW09u2~*pDWڅh``eY#t@٧4bW,=>h㌲NشR^2=yᬌz&'l@k+i'.~Tlbզzlk [{# t^Z&@bc?=l[3F |d'o50hBYvg/h*O@Hi~(6֊ 21ˆQ!9ݕ%nj$lwrS-Ⱥ_N{|J/J6.$wZZ֘NE;ƭɼŨ` Gs:X.٦ct*!>&bVg|NNpNl0%s*rM.T09nQӄ^{V$> 悱dÕ0wخM r_īollY-;H1uO\l+`m^7nqM ^{~)UbmQB &DfypjE%,0Q}mo˅$V/ X<#8;/BqsapJJdv潘7Abz$ tŖf%[֔{3h r (nk:IAhB$HLR$P㵽TySe[(y(f~XR.sޞkʎmjYBʘ-W5;gOs풤G.,{4˓e06b jt>ţ8X tv /@%LXiXu5qY #jvJZ$1eIev>{ƀq/WuXöN%Md[f:.h0yMX~WE+&MjΊM(657c$֭^.[4\@!(Þ#$K^銚niG||O&ǤfXmaS78M8qؐրiROT ojSKбA/3x% 4K¬c})ڃˀUnfG;KSs ܌$nxRZ089i?ο^E![b>\BmMҙJ&%1g7&:e#,O>8DS 7[βc _DIk1L9)ZRw`'c'Gvk4|qg1v9;?X5WUdm;S`5^ټ@q޳cN_ۢq:JVeuBPxF'HUeݾg|wh.L6:ϚƏAX|z29@L;mʛi أܵ0B䟸ѥUvTqSLs¢7U^SлVjpw ,K0r5}{uXElsn1R&R/_ l߄]+K~ȑ B'NNm'm]W(,сd~{5>h4T J1ud4av)VD˴Fke $_x:`_>0^Փ&|W_9bڛ D]DHA0tikyT98^Q9 <7ݒWs$p, S C\p{{X{)-\9*Q<\׷Jze\ڌH]|,f@@ٴרu`>kٺ]1d]`޴͖zCkmSzFw/UB!tL:qñI޽BDY.7I57yz<}-1ѕ5,zlCTix^Q. ^aDR/;Xm@MMŻSVHn [̿뱄ĵ-٤ VZ p An^E_**QFZc +^KmoZԱWwcBz"}["T_pvuTc9ju9[7R:Li ؜9BԹ1}ƚ @UlQ$ s* LbrR ߣVb<ʼmB?pr!4܉LBY:]- ,*vۓIXv 2M7F#zn*(< xQO\R?SӅ&%&6;e++_}/RLADaBiLM59dt;w]=Sߍ%bV[)e:)9{VY!N4<$̺~A{[(B|yF3-e+&*G/ʡ{PxåF#&֧]B [f΀pK=/ڥ2&HD1QI/ eIZ;GT-^ -;&dLO Tp:[ J1ܙُZՏaFrhԘ}K1;QqVKQz|J&_ jQ`N$}>_\A (_f}\~bngj+z3&KLFmM{xBi[gXvb51y@H@#) \!od&lq{퐆m?0TdD=cHjm 5D{]1B/Lg>wDQ.QI[[ XPQ:Lg{c:ȇm/zdL::T_ f9몛z+a+L[_ ؖ9 RrK~HOggS@U e7  L /e4T/(?ϛ;}!L],ܾu@ 5Jjw?gw<ݚS>k`Iv0z7?6*/Wm|TC&XRy{K~_L[_']d }"7s<ەy9փxPO@ L [VVH3M2ëN26ED{3nlRUoRXpTv47XuN9 7!HRЌUVR+ H*u,*o'Bn3iȆ@˴BĔjP&f.?!lv&auaV(ZA!ޤ&xXI+-9A`RDT/W '^Ő9)d1S^m׬ÉVd2:ɣL`ij`{KvXm҇VTe^Mx KjQn,}ٙTW&1!'=dP F9w{UۧV|NftCY0nSo:n|3xZtQy4MSs٩!)y8^H]}-uR^=7hB]öp%ϊcу:2fz6zY.y/9ڵ%Ʊ y&bנbIhPz4!&L *(;Hb[~AVRY,En8BQB#\Olis{e󠓐VG7֣8Zh{&Jz򤚗BH ض@1@y%#o_yn[?S_TM'sr1r ?MP[l) K#s#m݄]qr2pBK1@P\wt0a)PszcZR/3oְy6QM1r ZعFRQPSWS5+`}hBcf(R:j\q2SFZ9b|(\Usos):V'U \AT~FJcpXrtRםN>S58)= mbaƀ.)ma tLXP<1u7ԓM;iχAV<4O@d+0uaE<7} Jx!=|eN!<u; }˴+zu6 $ׂ܃!F EdBs& 4B>`5*]Uʫ <__fS@{z͊74cߘRpu:i:]ZN 8X_mWޗA?\`le7z b)B+3G_ ($ yWBzeW9_/j"m؋l墌 x8W,[رS"tF 0]E׺|k-, }3͵+i*?zpKLBL|$ĽS;Ε[j<6ZO9uG4XImhﶢLyP[">i>kynIA^j$ޱJ`I8̬QϛlՂC΀P,$݃_f&!gj7I=3晩/zĖ錋gz`4cf"{RiaH|3(Ԡ2hV&~K΂sᶗDt}%:a@²R0b,XZ=*X#tǍL03ڕ^]uLͲ0F* x }b6q9TirV0f7>Upb%z`hL$@6G9(J:c*5Q>[q(\*AtM:YFDu_ I'@ FZn^ADNX %I0˜}v?:m0u ӗApՅ#Ëĝm|4t /0mUv_9g.ukM(:me};n߄G;]Xv+ȃۙj:4ۑ*u??v{ ƚD{Dq.gMvg+ʲ#Dr7e )F <|D~7]U+[*Lْ7`qrZ:-:2 4􊋢J{|P ZLFLF{Vť^eh =x ,$ %n[?-6y2Ӯ^  ccI.m "]z@a $iѐ0݅శw+Fom8iG#uҩ `]H i*^5B5>; & IIp)@ Le`S ݔ8k5./E6em<,P@ fVD K1C$p-]kЙGa Rn;bU]ޖ(:eɡ6 j^')6OsfaIҬݜQL=֢hr{g cT!%.[3l4K`yFɑ#RCu@\5[.$\~Z\1u)4SƦdOggS(UcE8 !   <ע{~X|,1T/q sUH,Y!jsI[tP;Ժ2/hFfM$XI4*>c~oi4V] *% 􀝂*PwEe\jܝ8eQvB6_ _sIy?.cb,Qlod|=0˅qHYJZ\iW1 VuR'T$IWWV]GD Vh5ZT#ߺ9ks&nsEWz#1=ز׽}g`c1Lz@DL4簔.Àf1l9 ~Ym3z"@$[O{w3ʌM9vT5=NbI}d6aOvI,kUնWlxG$ HPсɵI͵0EzGJJ0hT 4&0'*(#TUjs]^L(7#,*@Mcu(`ZJsn7G~1WzDlt zdu~3u8mcBΑ5:l $')_ΑFã5P^QIw0 6.z&+ )TL>+'}N YH캋/&\+y/nWlľ6f=*}?S48中mh$Vo˸9cF (jwGl,B@ :Zf_̲W&wFف~ uaQl~*ZH ^:qxbrqsɋOWEqJi׺F1M^t"sdWϱ_^Nn15UNx~8:zGl$Q]D/=ku{n gBkHœb{vn9_Smҏ{hM'V'k6!L~iR3*N1UjOkC"C˫rJA\@hoϵBS1i_vlٝEҒg-ظ.DE;]ŷ:t Td ᨘ(_']ѷ;t ?#um3TN,D(B42e'Dg*JJs3=![qSy"NLYgssOP_@* &̟xSN>kH h:H`Je|[#l}AUMZLx85ky됱Ѯʑ5j%vi a-p&:a̹TF zŖmsHܣ)mhy ˝mKĺo A:m\#IujCFq#Ѩ4&ϷC9nےC-F|s-l񅂥;u֡B7 dZG434 L،׾ xtv3BV{" wp_뼳f 4uaJI�<nԦEu@D_ߢMy.\\ԮODZԅaDZ(1 G0]ʤ*_+5oL[ӏЊ2IOun8<]ߪzƕ?ܫElaTޣ.u~4<ڒ @ʜV64]֤vD[}'_TQ٬o}+L23NDaNs&pvb{lLoGUǩ] [u]ë'X@u`+QDM:f{x:qS",m'Uϊ"po;(cLUi. ʥ5~ZkѽЬX߹AY˃HfYRmf?N?3 *cPp9Yit9sw''Ef8#˯4RM^-^Yrg-Y˺k5b, +;{董k`7bJ8|4[@+0wÖxmЖ C͖#!~"g(3$+.%5<}z"%2 ^ݵ0fQ6eiҦpX,,pS5[]h219MvM;fu] ^ZvW`Jqki|M:}kmrx_}I*f[RWö-6)CL1AyFεl$]r8{W߂ H5cr׉i&>iFMR#KIX-iB28r5(nB|w'Imu.l\ ˦:w7D<5su_ϝHmVV,:uo.c+{#ԀFBfU :MDbC{g#J FYǬg}݄Iy:'= U9y񞪺ׯMs4M$~i 3s3`WXI!\Jr{ۙ<O? Y)k0c嚿Lh<V="!ͷe¤L X<ոV_ 戮}p¨ <1'#zB}S4X)>ɛZضVyk3 &Z"a 3\F~: >(PT]=reUy3 O6Ri8ϢI6Q!';Í{Kj/H%9qfE3R4ה(\ĝj9хrnrUOggSU) ! >kنD:a}"$vЄX|ſ׾?h糧o1 Ȋk٘깟IƗS)$DubeÒTwȼa;FH~nE}#d\S[1j@%\ >[2JpF<N@+E7Y frf^+ &( 607Y^p.š[ oV\,@s kcOV{hWpǚ<)<~@i~\:!~,NHY)H[#W,b.H".77 mNc б{ݪ./<<)5,+G>?O|bPM!u"n[-]$U H*Q ._\s[9Mٯu$& q{߰c $߹番?Ȕ,`%]awQ.^ɹ4W8,i]ݚ"0vWA;YX[5yh[敱\.VM" Kctga(K7><|DٙeΔ.ƮwHniYwjJ<a$]J`7qzomijH8[ν(\[ò;prƼhPz!ɈV?y<[TGMDiݓ. t2{l#4zDTUk3Og?8-<D=wO)޷m$DS1r DT{t? 0f^QA O j1Dّ߷]. =[U~3Kd@<ϯI`WU)NvYR&13Dݲ$WT Eξs| _c^ c^s̃g`)$^=ϻSi{?"0FQ?ͷx͟ SU4iI^["Z\Mvv3 / B:¤O 0- F؉Y`@4*ǴA^KF/4BA8s2ZO$E(yٶ?X.JUmth_ZJzGOV$pv2\"MC4?04M198 ѬPq}>}Pkk4ov>+ mN1C6iKa8N|}OC7[۶(j^P|åLop/Vďt5%\2B0@6ЗnAV zt&9Am$|ǬҺQ]ߋhMKf{L(^{j*@A= |˜E+S%Ͳh^EN],y{q;S\h&9z.vhL?xY<)n4s1 CU; 0oϛsf,ܦDR^{Z1>[~bh`5I8}yjHH_J{Tܜ< fQ;{P Ѯ`4|й^[t#U*j0|9rtl%8tu0{TItRf`\~V"/!^>!` JUAcqC@-@ ?;Z o;Ff(Zaa\^\ 81@+dI ՔClUZ?TCSr6Oz΢e3n+(~%pU1٫>{*}‘G`D`5o7fۮ?,YUleO :VDɾM0rMZ_&Q>BV&z.XK~ff/\@ KBYwevR~SN$Xmh QiBN/ƹ~Ѱ01k;h{v$ xԌ$jN)IxKϐr&+3"+ ߨqNdh7c'55c,3F e8*Hf4yqap4l7?M6K01Den$6T2iil@pL0);c p2(. GՂsU1k)q_l?Pjї]֘hr~n27LaһFؔH/mԺʬ۰ޔ0N9zo}JqපW\/1uB_M9Z8+Taflbk,#C[u^+8`~Z$.=<$^IX@ RQ>FD?)ف|7#pH{+Xikꤤ?s+a[ Wc?9䜴EAҟ0s6I[_:&+R@\.õB̘*:3qk\:d AJ"DHV;Mg*ל8OWūrsުΫ?nUY,-w7eC޳n"VN5k- E]L;!~՛fMb,C7LY{X4tO)ju 4m Rt@% +eW\UÓK֞v,ߑt)n(jzKJ*h\0K6˚5ѢoN,0&vUBhr) $"Ml='v>&`[remQ%Dut$lܟkO lQFǎ1\oI0_/P(Tc߬hU r2CDLkRvSX;kنHd`TPvX$z:9DoeŵKLGLk1餑L,Z- T<:nMD׉㻷F\ 2>)]2l<='_X8E]+PYwo\Wc4ִUx]Y>1vq ,yλ&V-3k|H0r|l=1t4wll| ?N'yb4JtT{" Ew{(*K$_ qUgwi+d}~[GE-v`/VaE=iR;k?BN6PAkX=wZ?謌%%fUܘ]P36Ʃ(.ȄE3gt?Y]YF 5C!v<;=K\ѴEo]b/VCEG5L (ʡ,oٍOn&A#Vع5a.M ֌._X؜V)IXxW2NxeYޥօ7.TlY, %= p5;2OʧXZ旖#+Kª^qX{\2Z"0yzTwwYi)(<ҊE ZMOU v=_6&7xfKm魆o!g#+7#cKE.Ёj ܘZw:-L 2 xٚls4d$U`R!@]pQ\;{AkۤAƷH {H𮇺IVg06E"!CńۇtR{q⮰B_[WNN~ztQPUy6>kq BcmU: UYʲpP_h A42`f1w9 SQJ3d&\,$Nx^nϹ{ff"zM'jNo1Mj 8g#N.zG b@y (;(k(\_<VV: :>۩8ëUWATXn:0@d>O t[yڿ*1Z&ϟDHlP7!G,0e+8b-1*)ڠgjukRZB /H69p,$a$$M*4xbgqs¸%cqeo1 ;WO4^qcin/{V13PsVcOL`j6Pk#k)[N`-ƍΙ7"gykcQc,`>PݙiH(:򨑽9lA sҦ^6Xpő#^Fm ;گ͉$/ o "Eq5W[.dUR:lZt+J2aVM?B׳p;Ak"Sv1rĵAƼg&}ٟ-rIc[_͖Π ^A̓$a.SRf $V-ddȔ={1W U : |REsQp)clj7tF5N!\.؉)[Rw &V33:^+4w{(Ȓ$afa겺/&](e~>*>00zѫL;\O_m޺ιG%1fNf9@ug~߉ˋ-; Z' B~\8IIbz +?ɂZ0hЁ\yVuzGށH⊀8c_+&T?]C*4U{5hmQG: ɨF ۜ#,[Mdֻ4=KS(h({s]UIFh+pWYaY">uXuC *8uL6sV~#Վ#h`6A0Ru̧ٙvі\wiTMOC(\N[5{:.Fe=;2@b%wȳt~79Dkwzh~::DNH :ѮA| W& IR? Ԝ67A y3j _]:@NP1ǧ׊k3(Mhn44u;.hhZ<=٨&@- ;i(UMq Y^vW"[VOR!L.-j+d"YmQݾ<"H(`:JB@I"Ǵ8s$fҞuڒ^*Jz H} PZ$T\OMZ.D:l~K\`ajڠꄨ+At?F+}dFqL*iB(;1Ρj\)iM*fo!xbζ , '̏qݚ{^!V$r7ʒ+ch5&3%pƄ;Ӵv[$Qo5TK,KBn0 D]>SMݗQ( (1xXr_ AEOgd#@k_ ϑk(}HjZDe>gD,[~=G Dá- FAۘf}l8c'9t..9Q e[o,F OggS8U CvCA~ '<򇀆ru*:BFYԊld\rO8e+\A&4BǶV;MՉ9̩g dkCJ!!T֪M ]q{޺oX4vH0;hN ,R^x.P v57 R9ڙ ;v`ߎ*b|N;ED1^[9qjJ7wğenG9mH֮nJ05 B|*ee}bKnӓ RH5:DGswD7, Ek8Yͣ ^1FE8B蟸{^Ǐ)s+7،pS<i mXfP?ϟY˅lŴ @}*!DG la;~+|k܂h}eL,nMveG: )2#G++\;mCzxSvj}G{Sv xcOdZA B kv]HϾ\ R;1q. ٻ Sq@IdNڡl {3]g`Q3JBe; s '=0p/>#Nw٤JM\>ԗ>*̅e$i+D6/Cw >'$79O(!C,윆R! ͠`O]2l`5/v! c0o(Z|9D7q=O:w㈘ynN#N"1}ꚰjjD( ׬l;1/僽 Bha\Zn< Amڏ=cy!4 @3&sh) 4j7輏^ ɑsv D8Ɯ.[ R6rٸO\,ZWzS{j)zB~);`m5k16ʭXd(~5cъa#?Ha gո1\Xat"g2k)tM/l'$yF6gvG[N$8l֧*s$`$6HEW/i«FǢOggS]vorbisDOggS]7k-2vorbisXiph.Org libVorbis I 20050304vorbisBCVcT)FRJs1FbJBHsS9לk SP)RRic)RKI%t:'c[I֘kA RL)ĔRBS)ŔRJB%t:SJ(AsctJ$dLBH)JSNBH5R)sRRjA B АU@ P2((#9cI pIɱ$K,KDQU}6UUu]u]u 4d@H d Y F(BCVb(9&|sf9h*tp"In*s9's8srf1h&sf)h&sAks9qFsAj6s9j.s"Im.s9s9sspN8sZnBs>{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggSq]G-ְL4|:iICʁ๋mPy9-aQ֡VtJh}P4.S+]g^s4b?<aRdq6-r;P|،ڙ03g S^.? }I8[hgU;ڶ|JKx!s2.9 <bmb ir$g:`z= 7+Ct8&͑߮ +4Qhi\UU5:ޙ͑3|1Kx[[^ufIM7F̧8>x~Jc6VeھVr^F]zLn9#kͰ蜋,Q/ChjX مhw>J\ j'<[o4!>RZLB{yu<쎺$ nnK?T9etf3Gq8&6sdNUKޜ7J.QSqz ӫٹ:wC{ :u(lk,uͲ;?`qpZ.ucWvt&7)Lq<7ԋjYFKtWs_ueO]pwi`H ⪄þ* <\D/$L͠ke tMzu Dz͍sI#U^<)hEVL8Rn"tKdS).{BsFh7 jXl1xBh07S}1 \n,Y;>=l`mΓ)#@Moms v|aҽ"֧:(7]Rvl|g|Pg{_hdILQ'ש]=JV]>V}O۬ǎN h* t ͱe ?`&r[KV$Q`qC~źo7Zq  e~d922V ljsi-=^s2i+'c ҄r!  Bϣֺ[7eA} B<_AyoC%w gSQo_#"iRD̵P1LׂJw1%|ټ\3i閚7c}ZT,Ցyۨ15T?(GIYǃ:s.iN0WJO/.~9q +Ig_*۞#{"gN߻i6ki~$U߿=8g*G'WO,q;s@¢Wsmr/|pJгfq2 ߁{n`%IY#_ wSZM:t~_]>r"ufm- so~JU!lA$zVCBt7eHP6 wG+UBI]tfM0 f# -f zF0+"Qa2P3W =EѮhJҔyhK*hB0f!:O0Dk畨bŨdR:52N7 >=_i<‚[/v+nW,FcqYQ՗rY^7"*]Y<&^j"< w,lEDm&-O/}nShSnT\޵g~l53)RwS~9M]HGcoRpIΥrL(HcNe("ZAWLZoV6{]h@j W$Azoj1?@ϡmޓ{.ME* Y9Q_yrd=+<l:xCs^ń SFJW#.} q!tTz֤2s& @H ~\-5& K!oME϶^2Z9?zE f11.d;8BDsS.p;^7]ߗZ#rK9P}،+`RϊzMy_k+xLW̊.[QS9TڏL<.8d~g"G:kO#n_MPfβ%FҚGנ̋|LNVo(P.>kΉ%_x/-$fnx7l2UJ{5n_󮦣fķr'N,Na9ͱUȣhplQ IW#@'IOؐB%(1^-^ksh|Ԣ w#+]D'u7*<ށ\ȭdƲ4_fϩ ²m7_m@.,q sV`bzn[M<>d\- whCrm (5 V x5nCX#ÌSX+M]JRxRU*,\coo8=f:SEX;+yt+O 7rE  0͛^$y% 36c`7R=Vj.: {%ED ,q32mꘪ d뙹Vkpr^8? ~;4yw".:Ĥ$xeGё k\t;Ŝbmug,NhmjDՑYyLI6jg~ ֮L{bx RS%)xy LձQ :+=\͉0DՔa X۶R.4[ 'B)$ӂoYz@YTET3E^ȩ;Laރïo"KIwd< ާEͿZM _3L+s4q׿'W)q&L۔:OggS@]47 !   <ݕ9q8ôH2Swrl"dk~p0Z̡z=c1:g*0+Xha+Aeܾ"iYR54Mtv9 C 98g()rf'E0cԄENnz~&u]#A0DG24`$"򸗴sD.UC))֑JFIc0ܩxeru$00j.KNxpf>B~`C\-#8_R_LHs ~;&v>0hd6,_UX=75] ZOyי3rtPɴEèٸ=SnzH/ߠgu(![ #;Tm=ww:V_3!j;aL:^Q} _M=k-ՠR!躈{Q ARGi~F۷~(np(WQܕv{/ҕƖ}{&{3tQwl&i/Ak[JFt5d"%Jdq^Z7k#{ )[͜!9?٫\eN$FuI*>JY;6Β͑eUcwT,'fn{NŃ` ɖb:&uD@"`C,}PesxCc*/y zuBF 숭!¤ш{;+!Z+<$lw;3l@+5O2۲:xL\~uf$?cuJNSj@SZ[XǤP٠8ѝXngdKar2{SYTh&p0phs%K29ZBLX{f|(^Lhڥu7 @X_lY/hVBUD}_#Nb3SdR'ؔcJ3n}L}~֛=Mjfm5k>p2dod &(>SrMȨ^|Zw4K {kǢQ4Ȍrm5lʈbctȭLvz8Dƌ%ɾFs Sׂ1Mi,]mMx#^r!F}%A"[ F|S,>Eiul\] {qzh4GeP6zD7PjsYeHPE_,$ȬU*fǻ텉k/ъu?_fFBJ frCߚ$UC'q]7lCWa'E ?1~,\4&cc/ԃ>JL̓ȕ8q<]_uE`:UZXlp8ebmDۚЦ^` uѨ5埿̚ U 4[:0UHWEav+3~Dep~o4O*@3Yjb. x/y.Y+oR^q%b(i#F νq@{I:{2ɕdⷁ~,Rs<ލw/\6]?Wn{45W^hM=nfAo%V8v~Ḵ<@7$A̵ 7{p$֫e`A8 IkS~ű{>F" 0>q돳fxH ɧ×Jxfii(#V}6:VgA@헧1qO0 X"I8B_o3A%! u+Z~](~LIu{9bu x.y]#kh;)Buќ@ʢ)K5qx-n#q73`y,ձ o0mR xfBO 4т7uSR Z9$,D%՞H4B2^]ߒrV\wi3W$[+EДu49^T<=SAdXQm !1\NV,_>ROي>d3u+&RtPz[{߫\я瘬S R=u)66sl TW\oΔkm NZZ9/5lܬKfË()1m(f-qj"$ڂe #C9f5ƩgBtw]>\*6$o" q0M~++4!atmX۬C70,vͲ _NH+r"!n(0$0")ȍjz'X(25]4 5f+I#y9C;Qg+R .,>l(BI cqW]!)2e+wBa418ֳ̅1N->FB32bp\jE64^{6C%еL/-1GHpT/V,tO0<;c,4/`満-~5Nmg_/gayx~ߨe{~bY aAлQ uN>|~θ9!r % f$j6F=OܫɍRKwcL_&3יn77=bR&u&;':s&W sQ[9rth`H{2A퐮N:Ϗe#Dt̯+y!x@+I{DSA,\V0y|"vb#EAa{YFſ4U%si[G}cR$oj68Vi!>{&f Ap]@PjXנ6} ݠ(^~У^)^Ck&gm6xT!VcE Tduvah}(812qU Y=ʧYdUhp{V&N#/1_Y >OLX߹)߂դ&8D$yZg2J>EyttՌ.#n"MSqJхUi6{ZLѥQD)X!|S?Tдv.54V]:E"@G2I0w $ Eɒ?TI!5{ՏR_!w[c+jOM!L|~P 6sc@WnuF& ^{)[>4R ^ R%^YIY^glw4"X֘Dcvjl: %cTvo|<%Pԯ#M1/[Q}Ui'89~Z8bbhxM1& fI[3hZN kҍs(Q:UY| Dg8)ZݻB,TxG,"5'яT1/2m$45dR\D lCų:ie,~Vٺ皴_k*xfd$}@\z*(HUk2LØ'o,O̩kT/267a)1@VWW!&Mh F:[~H'`@'%ԕ$z57x"JE^2$ogzNa9Ee [ "F <`XM`:'7Q8%'`k t"1ۂ,!S+\_CQ>@ekjduZ0379u<} lril;?[~~ǂ,TEZ)ܶZX0L%0 v` h.x/yui9QӸ;_&'tMK$$6Dl>dz p^kٱZx)-[{ `ZJ٥%CO+at국N ye'kln+ĈwN[kCp݊tpK! ~po 8?(C6;J27Yy^4GӊL0aΕnꏛ/*לn"47h*$y!s!.M^KaO `m H]ٯ $/(;޸h vŽkQ$LBDZzA@ԧb [ѥ:SF1|7LI5{~`Z7Jg+HOx47oQe-"sއJF,DvwD6g=kOAD7M,|zb׎I“Qj =_%iY3<]_}h L/zı-O( <ٚ)+eSϳ¬3:fU4L]_P>Xq&zvo+ŷLY޾,ѪcVj+\P+L[_T yX{o777Ƿ Tۑ׺f>DZ=W7QUZww?D[`]7=}_fhjLW/O M\oI?2O5+WZD[}1|zgq/evFC54ך](Xe.D4ouL[_T&.ꀨ!.< %5"kUD[:$D*J%%'5)<ۚS~tk1y^6Io>*˟-Txa?)v]8I$t"$OO糄}R. WL deT۱gLjY+bOEf|~WLݚ*G$` 6HJqe<*5;KDۚ޾^xV[gz nӬLY_V|%ɃYݖLɱgs՗j\c^&5LٚdQMPٜݮ_&T6GihTٔE$8l[%_Gem* ۚD˰D7H\۱ȀXUz̾sGz9^Q%D[U~?]k~pu>v+6L9W8LM5׿u֬wD[_Sܢ4D5-xhjLXLH_˦D՚SCt xt8HdW6'6.L߫PVl5KGKiM $Y_܃X@N\HJor7b=k^T[_؟EߨwkϘu(Ob<[+J%K=瑱dW\;ww$D[x_'"8ҳcQ.pTݫ| .=Z"CD],u@woSpJf8L[_PdVAճ5]rlln6tL[L&"tE?#b#ެԱ:Fe$]0Bq%IoٖzU_xԇre(|cj}1 gF3J͞&5a8s`?h4b`v!vd+p0[W %NAj-ިdKh^=Qt׸|SC_&=-*Y\igM;(>\նK+oaB#ľee \@dhgٚLDG.0qIڑWu`l*պ.5 庡Qivx^Vm~qAP0}LI@ UosG%x۽uBRf؝L+=_F3"`eIjM0 [b;4 &O Q)*pQ'O{DB> 4-&>{8H /Aufiᠬݽ0WE{<*ا'̕?2b:\љǩƟA(pK*#ŭBě 9M jۯЄcDw&Mm>kC"0Iwr($auyJi@j 9wSƄ eN8K2ƽu$"oLO#@sJa^Bz aW8$%)e`ҢU+ի4o%AaTKY kg9yBӴuj) fHY j&^X Rӕ,0] $ m*6CK8ojcy~wlba $8 1]H.K]B{YD;܈ss7 R|珖Qn*C-]DԨtJ7Fꦨ<3aX8rJ;L/mP'.54QgMn<7@mʿ\*}!ܦ(V-u<<zQBoN% wb{[me g,%}l]ڇ)5%y {5cgK ^Ke˫@x4> ̸"I޳ܷkHh|5M eRxN'y\v˄ofFe}]k]Lt{z%ęw8̤E0gT**1Ν.= ݝ֛׹z~K Q B0L`0FmY{}nu&`:gMv|Bq iqpBsX#"|r<7zh/FT>4 bHfwצ>!Am!PVO lI(GŴ+5WSqguC#EdqWoU%62KK5:SXSQiYq|_-gܚ4;M"yo[d8y{}qIjK7u7rE $u-y}}lo B+sX[v=60 <#uymfo# Yܤӗ\驕'* I=5elU@S[mYi<0(1kmY_{0Vc&ЬDm(\L6!kVҡqz7ƆhcS`7:]$c38J ?]+[" "Wڸ.'1p3^a+v}ϰBfrYnz9RyLWrMS,^QQ xx ~E6R=L-9]U>L,{_8U[8g/$?p_@ <ߏN~@3|rխZy$׋OIc@Ĩ9f/'~q"XLôe9sa=GnpeX֊8MMupv,"F<mG`B.&o<juMc+NR\ {ɟz=/<؛QSy:< 22_o{ee}fV~&?v5ۥ|= ^1F'N*Ls(7}h`sc(JȂt4 s3ش^ogeDHcF񷾮=o fh@*@kctB6ʍeK֬o۹o f¸6)N]$^t'[-X^(8W}AUJ/znq&ʍΝ&P9q$gΝF>)3fpi7𺕐2}fsHHPq Mv{s͎Ž9ö`^C#K q}Ul  1JnxN{?`oGIJ0S3Cd7z5h]ζ0vv g8QE)2Dg4VٞLE 3R| c uHx9uPU.J{͢t(?`Wc9VA-,_?jCpK㟀@ fbJ6v'87hO#bIE^SMY=զ3WNJRy&ktWCLmi™~c~ޤWw$3 ?^Nu퉲5b4#( ,f.f2klHC$Y {SMYBd,$ՐHs ƣ#BQ|@&=?*>9L`wۜ'SȲ؃ GitO泭k7g43̿9'pIȑi=Z&C;)_=ÅX5HPS;if`ql'[ǎZ tR!eVtvdm~+6'IVP"рގb\k_ף|E-tjbҧ]X 5,1lj?2WpqKH[zfS֦];`9j;X1Â[~@LF#ve>$wNne;jGנ&4ٯkʾOr¼7vS0=_$wyo1@wV4a9г8D+ @tk{u?z{;ڇJԛ'2F& K&3.~ OggS?vorbisDOggSq-2vorbisXiph.Org libVorbis I 20050304vorbisBCVcT)FRJs1FbJBHsS9לk SP)RRic)RKI%t:'c[I֘kA RL)ĔRBS)ŔRJB%t:SJ(AsctJ$dLBH)JSNBH5R)sRRjA B АU@ P2((#9cI pIɱ$K,KDQU}6UUu]u]u 4d@H d Y F(BCVb(9&|sf9h*tp"In*s9's8srf1h&sf)h&sAks9qFsAj6s9j.s"Im.s9s9sspN8sZnBs>{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggS@eDW<$#"#r!!#|# %##%# !%$$#%y~zL[](|xtAhEf]8v?BL[˃?g!;hc330-KֶکČ GPDprq&ȶR, nk'3`S>~9ͭI5,VHW|%d;\,8ӿj67>O.'7sϮWL;+.xp\JyT"ՊyL $p2Xk;:3"`Y)2CFƼ50nV쥶wdzS? kÌH=^rt^Z&yK?ԐMoŗlN?t"lFr}wդ`/ pCh^"/uP %:1 F`0 2Mu[FF6jW[_Xm/Ucm]yB zrr~cc/u3S.Em/vw)TLᄚ >NǞ#$+9XP>&mJzstϏF&J C)uٯ3/%1u5F>}x2];#?&nʀ*k_?tHMAn#mEGLIiu޻k&6>j6@ {hpgv34ٜ]W&?HZk ix1r;kRt(c'yyb>?G?ݳaoaUfs7 ̧l߁{Ui*+ujt ˹(UehQk X.:uyď{Ⱨ!]ڟI޺ 0^8gYdgh5Y-YTF5zMtsWTwP}^.׊A:drv'^vM!KS5OTpɵ?ۤ4j |ȣ|,;GdgIFc]s\|~^jRbc1LmdMVz7[u~Pv2 ־%f/g{Jv?;:NَG"(lV˺6ۣC{>zUޕuyy"d)Þܛ[6鸬L.h~zmd劮Ժŗ;"A!O1{\3^B!2Hshq TyPŇa L<{2-/vQm6z,e6Lw*Y W}4QJ%Iw?sX܎ Sk,o0:a 4TL!M _G}HH4K'om3 O #+ΎZs {rbO&k@(;3u, [903mG" 16k)T[ Bl\*fOmZW& p!\]O{b 'MbT_E+h?!g-GaD_ʹ:(۽<C<@s0D[7g#doMw< 'k5dM{%d;]7눬㬭ۤҵ,:4L`o<>:ԁV@F){mKUl3M͟3+׷nbUrTa24#oUs7pP't NLlg YdK?1#PfFȅ}5K< lz@^".:VZ4b7LbktPe,Ú4طe |iFZYDz'oߧ{6_m&te[tn)5QJzvS2k Խ8,(m`yI@֯m]|h*(4X<;f?*_f[hC 0qž^PyU9bDUgsu4ZGLX@ - u1(_|}܌;~7Hݿ7~i,6laha4"РCIN)ָͭ>}yBJ6ٱ*"8'IatL]x7386BB aoV+é<7<뭉z~_'`- `/p|3&;VU;\h]<`Vi ʱbV*~!W*[&C#q.8apIM{UyL.UxՆ}ލl4D}-ӛ@{ImB=k,HfTۖ{ϩDz'.AjЭ};'lS-Ko)fo\(f Rto `> F6H?P>t^41/ tʬSe熩2:}TMK'"ݰϡ3Ž'vMj*@oUqΫm2\yw~OJw`R?\pl`nuS~,_1I>?$-L7m(?WݤqӲn'Q4rsݔ=^^_jnptO*r< H}Vݴ02:``@t@2>>H.LP)Z(vQk+o>"*O!cICTt`0)5ړᧅPjvqnF0ot@!{s$оf ^^"܌u%iti<>ac7. 6T wBm8ύYeCwCN([¼2B(9 `£AXY GOggS@A)~wsvqtxw{z "!lrhL/hŭ\6JDP67]KiĘ^?-oۺ>*WJ)ț38Be?pםv~1Se n $deQ d/{q$ |3\YeWP{2Ŭv)*m!\oP]$,5 )?UΫ6S*u Ǜux.s @!Y@1' 0|?r Ld2~ D 2xF }&mG&.dqtEKL-p3݋N5 ѐi6 Pf U0j){ilJHZ-^LQ|G -ZҚ'n˪vWlUL'ݨ+'dR3VC0`f0 =B$y5C˷Ȅ ķ*eOꪫo]¶L|"\?% LY|0\?ޯPYE[;c^[e>NtT 8ZjL43L+<[NB/28@{zQܸd5=\X`Ӡ J?k9;s^mQSO^ ɹf3ؚ"d OCPQ0[HoPp45 ?p+D' U^$G?ZGu55|)&PgہhX<?h$~J}ӛWѝ|gl#=i, څ*"II4aDaL0=i^,3r*wh &+^@YasIχ 6 b8J>_o#B{#/gCܦJ Us+*&9'",(r/ s]w숡=XM_GJUu@(i^ |?}zD!*:k:ILuIݿ\pl! ru!LEH0~L_c S,{KSLt#5<U~ >a?D) #7v"l`ܴ8*9PauF`  ϊN@.(ӊY*^uнAVR4FEw p lP \ V r{Btn,zsmwB>霸sm&ӬȡքPkx,p yjLߕcr@=B'!(~mۓ0( 웈aG=07ud5C [ȫLe$RzbbdTAq+'ʈ~hbU $6 _kv |Œ@|6> k/n\ޫK~C2MLn1kۓ/j57嬺n$ˆiOJu&tEy`0?|n~XuřcT\bhU- ya5Z}IMgjk]8typYh߇yXn.UHIo" 2棧<״B{ P"{0cY+,j->G 6:4K1˭A֐dִ鳯"5gdV Í~'tv-G@Հ*P}3H <'Tz%acFR 6jdn aUփ8Xr2@bc?^'9L?>IG: Ϥ(@`sMup򆣹N춆/]I^L|mc$CF8x곞O+ iDn}Lr3YTx$I!~Х ӑ$5psA?1fH4/,Z ^ WVQ/:t|,ѶCH*M4iDhZۿ%+RB %$gk1g_}(QS㤦MnTrv+˓H41V(3vϠ&  ^ntsR֭6U~ gw~ӋeIu\I!,a7kMrF @, c\v3b2N*%n]7@X֡&SU:Me<L=;AmQ30 !+'Ә\p ~5a֛ 5R$m,=-tidj[jcShFw^lr5eimf n=>%Cwg'֎wIZLq`&m:nbG`ͶR%~_#T-\IcW@ef^^RwݗuO G]+u@c[ * ѭkÑ']I$ 5:q}~Nrf HRF[!!S[yx~q=ZTZM,ka[M.2RTw|W󟑗O̢NApJW'p|gu!MK ,t1b+W $(R^XYs@5Mth3Nі,ٖv4 W<k2cjoh d̆Cx !І߳@p 0.uc~#6 :>\|&jo##ӝGrC5THM:zJ-OggS@T\ ;~ #wz !#"&$&"#$$$%$~|# %#wl݂Ӷ v,(L$=ݣᄂ[hzI늆wQ c9"[m\?zvbCMqW2V*h|YPe$"gtoOpicS1oUM6VYNi̊ ?%9oO5@tkJPt$yew36}  :L$>[ZjgZ ) b)ցkكWEϒTĦԪwM{jܧOn*T{@ 0@cߛ9t>ܖҜZ&}{ ߰A 17 xg ~7UImȗ{\tw)/fEpb\IZIqRm=fF^s֮s`>OK_ zL='ȭ%R$̒Hl房VQy2b4ѵ:m|]ZN|9 TW Gx ^v+igKm=5le,eu8`f;zM%#,Pﵺ/?`5dc|P),@TaO&7^D)ȅ԰l^9JE rKhYZ3{EP.HT}myljy2_^[#Q8:,t,[r. `쾓ܧ=}^Ӂ @ [ ,|Y~\_h~"M·%t>Ӓ᛾Vԥ],fe 0sȳׅRoϭn|9gm#hO=+;0C{'gM Ci <,o^=4DN--|Y*JZw^lǝgbqàL GN8 4^\oJ)<֭wQSW.#˃70 g:3( ,O$QJ#~,נLy߀`c[/J6\mvK Y⡶fEkԦΜM(vFXUJo&g0v'p `pϫ\<߫#%u˹߀oaH]^Ž 罧4MNYQ:p>6a(3Un%LQlr@d==d9qs\9G4pESvݸ0? PE0q2^ >,'RMgse/ #zM~ߔ'a ]!l>oo:AX|:#H:ް- 6dg6h # 8+48YX=\/+|aUWGB.ݞY^ہ*a6s'AF|Li&TtB]28MRav3{@a.cy[I {cynN8g!r;K?,T+_y퓺6eb`sc/5pt,J`QգW cgy@e8eGʽ1 }?2g yiԘS\y=&sgo_W \9hĹ"8E}em$Ș~x;/⛙gwܯ|H@+ oZJ7g]Z h! WiVihV")>ʌ`s I| <AR9ڞ an+%6_gK?;vP/}LVӄzDPddNZf{qj}O|4$j\ m\X.3 yS# $XԆ;^,_"R-oΝ'u/{>ɶ۽ 6*nz wŪ9kVW"+f&nPKϸn=" U&M5'9($ܺ XhYTM3tս/rGt7"nȒM'.(h6+6+iN+ i*0bOƦQ0&?&v|q c=@&1^uچ ӎ\){W >< /_#AXVBg喴x5&c{ )J6tg7657rS'{]>?hZDBHHIΈziHGPxO U~t=_x1]|R)%@㛄ZHfƶJ\_{=xoyp.: ax Coz1ܸ|T*)5Ie XM|OVy+@0o(c$Hni~,3P3՛G$̠7I.Hlj7q5oEN񢨊%DAS1>152Y]ɩJc5q=@H^=4aդIu.(8 O wp >?,YVXB>pu@hr۽Ѭ]n-)݌(O~ztK_S*@!p͠?T4o|1ND}81p@9ZyI & KF7$n %U6̶S͞fw-#o*ƍ/xU2"YkB8vȵ2bo9ʏWf{Vq#jlF93^ )';oΖa:Pdgg*DڛOק { u4Q~Y~~CxR1Z/ F^r f.8=OLe*#Le>}h%.SwB4@ _Ѳ]l򞖑>?Hk!3_)ޮIwmyu' ״ É I,B 5_CCLC>2{c 4v'#}L'.#lT&np88]Я`ָ%{6 0 S3DC<ߒӲ L|&Ȓ5p i˟|J͟FDf㳢sXJ.?=#Wص׳ƩRU?9y-Iݧe̮@Vw.ɥ ,_}I; c |&VdT2JB}}P^]Q_j;R 3x"{XVe8^(@S΅Du `^υH* & >L_3)AbTjIk@lUIsWlc`=}BOsMVIBSy^__L~)[7r=ukXHnIP<Y:;ml)o`12}[~U.s2_+| ߴmbtϕSѐY&U}q^'p ,'Ѳt5sœ<4,ڎ^9y_5Z»o`x}~Z/b a$,٠ nj?rm=h^p#y*GLU:yrEfl|_PgbP+k:1u'!,,L@x{/2͹r,>L_5)*>`\Qgf~@h9xssnbWPiW]vG숚H Vr^qKTC$bVp)(ѤRKoz:^Ϋ+@7<~:qMBs_`l9y >\ĥǭ{VV I(d^~i\OTq^I#(4(bRMs8^>"cz"yW9§-,̖KA30 >,=4&PM/v (ip[­E.s3Ы&>}8 \:9}'TnrW휰uí`r:C,W(_fL_& J`?ɢ $K ĔגsW< ,hC@H |ejo }Y +z+yu:\)vA$(1#; 3֫\4*@xI3khW $UM_'C@Q+B]f"Hio۵֒Jǎ; 敘 l?ܘ f$k%@5@L\i>,_=COlƦOhab%0sTRح30T}ssLۙTFdyFCEΖ-6N'QiAT3;`5 @iv>ʣ^8u` ?u 6z_`IQ%.dXMxy,4;>\#b9ҁXȶ 7e^O1Ö ⨑tp$θ7߽b,U+OH3GtKѬ,!29;ISP#f~,mGu̶6@2"46j Jn m>WvPy0O^ {XR/'TwoЛM4,g@`gc>lov'N#ILV4MHT؂ 0nl`nfM*A]8hf[JHOoz&L12',8@pJ>J\$\ ,?%swl >Z$P0lot{YMgnS*v'aĄ%U}iWoԏyNSs4t0=TbHu8ay\=7Eqn[ (Tvxnlapf Bt"=ZǶuvOD'tؗ5.w?T,= l-ueO/D7!{~쫷a'i9'0V7 s B19|ay5%]M~BJD!iA7U;! [U]r-TN|gƤpU"fAsYbD6OiRLgм{:k@O4<( Y6?No]1pw7OZ1'v`{l14{}kQ5y3QGI{z)gF"AЮP9s>Y#>K kHU,K.㵥dZXH17>ieQ qϹj|e]Q% {=GI߹ùYӾU:|g"vdѾ"/EoлOisn G@|n"Qy#?t@asW?j=wpydc$I5x5{#c"i?ut|e6j3KϞ*G/ kL"k7c- |8X)ͤ)vllϞyZ;Ï:؉wL3Xg\]Bb2.N Y|puEI<~PUp΀vA XcŤZ=Qcx1s&4<4DFO.tc~ m{6p @%?u2\;6$,?-QkEaw=ӧ{Ҹ-Ml@fDCj)@;:8v^ L_jCgV RUL #Rޣh׵SN'OBQ4/j$hpztb9ҕ݇wIvwl x[`O2"~L/Hw72aJӲp p'b KiB T^rKt^\#{z)L@=~i3:&< uWJm>}OyYn<Q$4 0k:c/I]^,;}OB PV8A]y96+]v9ʿHڵ [.3Ƨ+"KI=n~=QCM}+vI"]L c4LMzZ *@@&"@nIiS[#V ^ 7D[Ua9R&e' \NHZkzaߞ[ǁDY-7Y.'%,#vfW'[ڊ樐}EZnw`n$#E9 vAYlR2 >iV\)⢑Tb9zH$5u#h?L]L:b=k/MhN <)d ]JCYtZGP^ G# PNfۣ~#tO^Q 6/K,tquc碏R5B[R1F_GZ,I缛0ȈO1Wӻf^nS#/؊0O]+'#>.0x$2q4^Lٺ{f'G1m uIt5z9f[UcI!FH jRPMV}Q7ax>ϼ.$rk|b2/||;$`ʻpe1q-l@ޫҜπ?Uu2uXUvu 7$e2d+& 4}'̐T1fۦ`r\x7ȹm~+f-!51RݾN!t>L|*?-%-EA{&|shֻk;VXTjXm.~P86u.; Cw~lܔP~].v\6`9o@LF >lJ`Ϥ\E'U@JQɦͫMFL8z\ΘB[*P눩WoΧ 6GA]WIVŻp!qkP2H`,9B~vU{K]Sg-@%pݤ%!6z`aQ67]:USgjC}O1k}$4J:f(4T+Z0lU2LO{XOFBD@ v7i!̥1>ί{dXMM bb7~O]U/gS DbҌ.Os=?  XL|W &p>ܞ=ڕg(M<*bP F(iR*P,w]rJ_j &bR郣nλň~Ȕ<:LuH!4M[l G؛ݳ+__$#ό~i">6sG`Z]=wB C'J0T lѱĝC[:t*aȂ,D{!>rq͛k<Nyeڕ=ۑCr1ir ŨX3x>,(P| R<~<_k(jo)n@Z ݗjd(f]dͫEөgkwc{u=/kGUtH:`G^l_s3')`z?/Vٳ`WlP V@7S_bh3M<ܞh8U P$O{~eO7tw>] z=_/fiR^Ze~wxT윱VlPp(Jq j\^o)7arfxOԱ+2bActpN,l;%^^#HM\b%:`[d T29+g37_TԙhZ&%oV]ݝ/Wѫ2 \1Ř~pbfߟd@'yHN*pZ*>|TCTMDALg jN{gZ+&8k'v] (6ףғ]2wدp%?,]j DkLx#r)O^ _s2[[R)F~A:_9dtv1Eѷ;^( bÎt=.B`0lʻ]`̍߭)Qu̼[@o^5t~D$^gt'w@yUHdwO5T! .`x0MBt,5FT> 0B8_C2O@ 0.0!ʯ>L1t 3L51 O@]+UdBM'*zOjڟۢocroYOnYaVR45f_nG(,h0Jٔ@&@>l;TKW@M_>"Ho3+Owl*zv*'s@H-.CSLϜؽ#ңMLCN28;@^Lw`zrfwU 4Pvps᫺K~6!ELN^-($<}cv3Dd7(R~ Aw;fկ{Y UDhP@l_%Cuu]jfmXVl,ekwXV}z Vc%5(gBa]Hsߟ LddK_ |@r)@Agw|+pUu;!iy Ph=B88(:![ipQ ~fLevgnI}ooA*e. 08oCj[8eV`po:2>Ħx:g%RKXB tSi.4:!8(7$h+._&=g4@MYXz c:kڣt8>.:3-!~l.H4.2Ѷu ݌i~P!?Ʀ`a A 5}jlyuE$X9Gz}“avo2&C"PRvdʈ1z3T8b[贋.oY{ӓ  ?WY  'm3qx|ܮ01; j[y"z aUK#RY57 %x ,~&p?Yu7 @:L@а>W׿.9V$t]؟ȽYmf@aM9xhaTSG|IDRme-:^}J9W)wwXeAngMnJFoK٢~$|z< VtIwݺF4a*"o"u]유Q`.Q-XyYEUA^%k <8KrH",F[_ֿ5S;o>-؎]EN~+Pkv3zzWOܞE~-tPZueGx5$=mWu -&8)|sJʸC Tl֥ch6h˫adh HЏ]EmBѾ vZ`Ry q >/z A >/f6tdâ +O ҏG~|0m6~s@e?'^\߹eS-_J$M?M-ɼclۓR6(3 Fr8ymğٹu-5N[OVL yp 9" b᪫Pst=e]M>X:8?V0jԦ? ũISD"ߛ #)"|q$~)x^ʘ~L_HP-ѯXpHY`( џ?VN<G9; =D29n:o}r֧ `@HLY=`/򒙀B޶ ,!&g_b.&7bue Z*N>7pxq:)9k!.g /]NxԑHM sXϒ[jn; `p0K]hb.|u><K62 *I T7TCz|o&JӀey2w>az h]8-.x.ǡ$zuɒ'X@g\jU̗DO[pu% d-9RQكKmdhe;l^NkW "a9ՑmagPb(ƬrfZ=@h,@en7Si܏zW~UG8gY <y߶ e}s)psM 7cxz\ЗL[d"ra7rNS pj>ڊ D L(;ۺe[\:= ߿7ϥ {-b4$L_kn$,3@}>F.m xl)2 g]Aԍ  `*r(2cSne>R? '_'yp,4` J޸8Eon2$۷Gt˲-~#F5uؤ12Z45hnܨU^L=xa2ԃitwaKᵧ,>ڜ5Qx[_yݱ4:N1ٛ1T\%C?ֺ;!,yttgg&aw.DZ[ mT:|+W8/K/+Ð2U7e 1ZQcM47CcdIl3cSފ|ݠܢ=]'pR}흪TܫGVi:+z-!$IEmO+".*gJEإm)\σuf-} '0=«MP&>:8Ld±>{pϑU)nuUey+DYI,zhQ!ƀe?ڏՍ&'+_p ij$L-]既Ir8KHͣZX1ן؋KHFPAMhbq;.B{dwVCShIʞ)0~j4eI6ƶ y Ѱ]b,2)C\-֞,/ثx!\\R )ML;O|;r;|{bHp)iao]h mʅ45ݦm9 $]/$hmwٿ I-<ݱX"ZޢN2ywOggSV M#k|D]+-$,-"Ξ!nT]R: Ct^Wfwmv\_3qEs/ۢ0<_K/ }C聻]!p=3m_<,,C @wXV9OJ![ykyS3KN/C{B_Y&aR)Fg=!2.@aq P͊ʽeWߎ? pN6d9'H*X&->yz]!jlϮse߽6J*/_Ex~WCml7kO &̓Wo}OggS9DGVFvorbisDOggS9DLT7`-2vorbisXiph.Org libVorbis I 20050304vorbisBCVcT)FRJs1FbJBHsS9לk SP)RRic)RKI%t:'c[I֘kA RL)ĔRBS)ŔRJB%t:SJ(AsctJ$dLBH)JSNBH5R)sRRjA B АU@ P2((#9cI pIɱ$K,KDQU}6UUu]u]u 4d@H d Y F(BCVb(9&|sf9h*tp"In*s9's8srf1h&sf)h&sAks9qFsAj6s9j.s"Im.s9s9sspN8sZnBs>{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggS@_9DZ{L  iq!!! !! L[)OWu]t5gƚ)U4Yu?h|gOKbB_*x@X|z)\Wq I0>YBq7Gծӄ;>sQՓ`'ᬁPoN,1V|mԇWrB P?.Rt響O ﹄`JuO45״v7LIJ~oU΋o{gc[ 5uIl]oޛ޿Sluid63C?G׀%{{Pkdm1#Uf քŪ޲rdJbT$;2^F*ME#v{B_c{OmI[e) &?PW$_ypf{tEg7kTFvLU94F{nЊג3n/Dr?( qkj *vϤ ,vy Z|u?h`Y$myp 5%xH/9WY 뉭U;i&+k=.WՊ5m;e푓څWx-g';uQdyZiˉln:S5VǃS+VR%kߚ NN?snS yB0GGb B=ydr`2L!}:uaP2# E voDһh|z~˜h 0/x&ߏjݞ^'~!$JۚʦS}_@eEm?ճi>l!%X@>&LwJ|37l_V=hc).oR#\r ,hLB[ O242%tҮ Z]TTd[d;U*ȅ|ijC7/\eƌl_ :Yz+Y\y;]JbnZ񩛹'~7|qXע[Dk[+:>tI@ oH Z!|~ ty2-;d̙}L8mxlߘJ j );I0گ^+Lv=l1*&ʪ TAqqy tQ]|^K/xaܑ/ta~N4=L|o(jf"lc S/`USGO4g!#l)!d OE/i?&ظ"ʼnt-삠Oc {ډ.NFlc O(@TU+NQ^ͷ5LZ(˖-hZwM..L~st"ʦd~f{%Q<]7>G9jӐ'hyF3*.#5dȩ{*8Nj&a\o%qNσJQ7&I\"bp ],W 6{+6[&'WXnJžݧ?l9"Iyo퐔_ْ c%[f}ܢzO!ӟ pʥS 9r6vi!%?)Мg $\ޣĉ=Zq@>k k@]rj:nLW|ޥJKC۔i) I^!Ol7QH#| rF|c@۲:Fq¬mu&.|/Wclcőׂ9B$._yEq3|u]y]yͯ3bb.ʸZt[ C^;*AЧY ;T¿{t5*5x4 &Gxd[O+~ ʛ7>Y 3twU.A;\t~|.+`JǮmD2׺^ݼ?>*ދoq ɤֻtCڧz?|Z9|xRʲ&kT[>hz\!8KݩRb1i hzA:Ε7N~3@ӎ,JdzCN$-瑓/vZԠN7)iYRyX+ժ&l_m_O]7~2KtㇹO X*]+OC~޺v~{vj$l^`nVwQ"|y>рMn.[4((/bg.kijf?I?/ | xW^t޳ѴڸTbILQTt{)AuӰuid|B76>Q957ҧ@}%^*%Q{ ٞ&yʩdzkDJQVL&{ALɉ:w#g'} fs22,Fا7DO&+=ipYk w`ܽ)7Bp.aQkɧ1*A]c׮̃K0c&1}y(ܴ"QĆA$~?ݲ[ygLKn(uMG*nETsX sͼ5 @Ml<%\e4C0d28tÞ#Q {N wi҇Y|&9L 2vz3ObAϋ}w{w+ʹ@i*E0P4u)QOaHSGܥZfoTP0G0' +To71J[|[4v\B+e:PVp`ϻ{Y)Rây ?9=V_La`=^iel,7̞lb^sp\.LÛJ:)$kN2x6˳ߖg*N24Y@ @sPl@ڝW<'Ϻêc. tחE&Q=H]M? 5}^uɐt͟#uw/C1@ή=狏ۻ<4TnBH8da_H* ܤ^ke' b>X>Z C+C(V~[ߎ|1 m-Kםʈɸ|Tѩ6ѤjHsW#c+=T5a`]NXҳ'y>?3s,̲·QK㎳|OWo뻚9u3V0n`/QB`ΠڎEЯ 3ט<7!L&60J;$NXE .JvްcM\{<]s~OݡWFAQv!$ͣS :cH!'z(ixnKeRMRqy/oVb1N+ɋSB3h@Tjw\R |iW'xS3ٚWP sae/Zj]t{Gct_Sw$$Iim |=4jodDZ!)t=4}dm.ϟ~;U%Ead%^7ctq8ZQ9գ,Z*HPOQۯ)^5y;z&[9 I6`Q(o,z޼e]ϛ̓ 7z-וp <; p@ |_J0>zy8q^|录 bxFeğ=&oOAg ,9^1 zuk}|qyNcMbR?vcpr8> l+?e두;bt[0ڎI b8dp:*D~Xs/XjoνV/h&ҕ:Y|Խ8x+^k'g~Rqe_@WNX(&^W~i$\ k!<#pvNS~vfYRK)yժv뽛pv3OŌqUqtWH5T6E5?.A٣bnsRO*^/$<1K3nT'1%ΥOviN`F&^,&.h=QݷH0k8޾Y+U]>='@Me(vƭ0+հpRjkgRx[sq26bJ$C'pyaUV?kOrJ^Ǚ3B@0cy hrF55W0N*Ѿv[L qer0~[,#o~A:on[7ϜqOukHЧ>;?jS'욉$7øB}N zB$]^z>,g<$ TБZWR$c+$?Lqx*Fns>nk*fy'D蔉N#MudžV}3 sONC8I}";dfMJs$ˇ p]jv\9)\~S6nZ 8 1~|PFx` %K 0F7`} UhDqs)TU$1wFwLa?W6ZZ";>==zڹÖ, kmKFraw9;QHIAb;D()$.f\*.=>̖d婔'e[m& זylW(^ZtAtn6äVsi|T)7fSQ\o{(jU?Lϼ%)|aN-^>6B1ǵkOggS@?9DkBmgbicg`bhdcl ! >/ܽ jkZ&-kKdY$­zb~ʳ_\#lI;&W4> ^Fs݊W_.9E(bR(7PXhKʕzK=sC"`e3}HY n%.@@ç~!=^_yy`3 g6#3Ly[@xj5#,oϲe1]lDo}Z`r^'}:+ pth^%ǽ K:`r2犊o<1Irߤ{ug~gpq,Of*VSM5s:[`U#Xע"n1:ZN6ҳމSMu ͛aa㖀5&.BywS#e27P (Pb>X],ߔ-7FlAXSF'?ZdwvuSB`A-aֶI ^<"nҶ^V}%E2e{Bt5->ޥ۳e7A$a nwb w;Ib$"r9d: ѻ.Fd !Cr? lP 6/k+/QuaC`N;H:חts:73;ػ,3J;W`^,ʹY>e|LZ@=To7얼$[_nkV-J%#-!M3GɭK'do}gtߧ'~$'N+ #hY"LJ>S=y|>L .MgZoD?Gߙna'e5mlq#}$fK tCJOs!ŭe$ & zM#?U|[gcA,$n/$qUZǣGf6\7zcH|.iU>h7vQ^,AgP_ ,"ees mjz]WBRc匘`ܘ1D}uИ\8TPB ; 9Z.8îr;mZ,i1v ^},RVeG{~,d; l "Mr1x "o{c16zt΅ڵ.zA/1̌}w&N1EfvZ=ڒ@y?Qdǘw'3X؉yKDUH\u <0҇yEzuhBQW^gǹŘrc.gI.J} 6zdOlϗ)T)"NحBaJ{Jފ6+G/s6<4ZM`$wpxfè=-YNmV,56?/UKjZ^GNTuid`sT׵\a9T4S-3ԭh+J!;bZ|QYy[;)0MY; K# )kNL;sP'w{[q,j"<KOFYBy&8R/czXeb+LtŸ7Yp{5$lt~.#U)¸v>;6 ;|$;'v OĤ|wA:~;ANiߗ^-q'ۛtg٨ Xy˦Z -YNԭ w J:tcK*ol֜Bc ocKlڻh|"WxS_ZD#EBaj3؟PD;\WpDں#^gC4L m!\;]F\XR?H P"v&p=,J{8mT#/yqZP!{y>4LJ,hܢvP25bժm>_xy6֋'כG{{yc(Ę*h_9ji1}䄬.I=hgIƉf2[(pȶn6?kBZ7vYy^7\nܝz{n[U0/0r؝\|ۉ 7>;u3yNzRڛ3j+nH=ĮA$=]R뭂YKeER!+&$ŅlVF =Nd_val8>OBw:]WC<\ ""UǘGh8珣XR-JgUĩ}%*2QlWhz%A.$vn{0Lр,ha3ceq y85nsIHU ʼ&^7\͆m nuH "/=B1èo+ bft&^ף\_3QF6E;ԷѶsP~Q012ĩb e.c#FiEσTR~(3d4X<@~Ns_n[ Vүl xco{!^!Iءs já)Pfxx=ynxޝ?*[SZM~6t91wq{z,szLWiڒu_6m=TjuzQZaZ2fjnKY>zi/ ?wҙUa[֦ABswkfV +1 /PmcL=?% J/ OggS9DOh rBbi p  >z \{ݥ̭xz)&+|c@DuW9M19.mW:bʽ'aZ/ ]9wu^Mf3mx¦7;h-^d|Ϧ¤6$׏5\Y‰.<>h`>,ȍf:s6a29ިu}_HڄZpiejjvRN>;dUXI-'Ȫ`*w{d 'g[>3#tcn̵R%ŮeЯ1H Y6%Mp^Lkkel>ۉdה"ad`G8~nK;i|DG{|dk7?0m:ߎ+%xc6]]n:' } _[>,/ݍg5oncWR(PNo*G+Jsީ2_DCPO9jHh+c@26Upn휺q~jhV0Hh7] .?\t 'r77.~X.:Y3JX 1qzLm뙚2Z!J|֫Xs3'z|xZخc'/ @~Hv t֩'P{!1כ2^c%bsι1?gmkE+R]T3$gߤhiBK`; 4o?j2XΫtЅĻkjRe|{71>i(?UY\;w۫ûP#!PlR$i̯c҃)c̑6NFy@}b%!h=> /^uq!ҨiwH,8B]^ɱ&JuR$%uuz?7D!ZM^IP\=4GZ܈B.½5bkKx9I R kLqfMr0iԤ# M&A}{dʼn۷Z0\N7t>gd[L:!{5:O9VL=я46w*/&*mDV7تAژwKcM߁mK̥׳-hKGnT{7u Է'^HS<>z[Ԕ= \^,7dYR]{@UrRiX}w78e9Z^;eUGjd ya\𝏻XzBlxf83snR@n?qVcLkP@[bdޢ>z/?>xJ53,+B1 y{{CrmZʺ*Gz,=[! q)yb n"8|u8Vq;}rPW"Ή_Mj;jE'M; b4Ln \)*T^^<7g}XAvs 8)~?wBۯ΍zvR?Qu0&eا\_6\]N^e)~!kIrZu!~HЀy p f#CͼfGnSV#VJWxWN1KY+vgǣ.g ˏrj[V蛏7-W]uEV#ݢ:J4`;SoyAbΛFcМ L8Ё |Ksw$Xؑ+eJ\#(뻖'`n:eo>'YF 04OPN'z'EQMh9|K&tgK#RW-e.>z^gw) e)pvtBn]y)'?,w5i1^~g"8j]+RU(|@_OHbhXR9T|嘵 ':#Soϒ=dQή7Qaejf6eL\t _{| خV^M]{y[F{|0/2/tuom |I1O3!ɏfTC{=|?82--t~/n,}=<:#A?[˕ϪJ|u:ʷ "k5sgaI7tli4>4UA%6{&=jtHyKU[0;W'H7e=dnަJetc=D1~=û& |a%`'(gQ O>#Jգ=t_Y{(I,*P&GDlcz5`OedCj:dadu(j7 j3; )߄Z g~!{2VQ{hSIG9 MD {;d,No5 Dn Pwî*6gBQ"- їC}JъF{d|rh?| oϖ21gmUgvc,ĸO!F#<$A5&(3Ǻnv ܽKm\l$f^X b8!mZ嬑89{#^@nãKrBIϗ0`uT^+l >vp_K=q;[g6f L "FxV~}ʼٽqQ$Nk8ZӊgZ y}ǚ}\wmzzkkJz<mb/($Z{Q gkkř!kŠ%V<-퀷^nƳbzӔ(!Z38lܹgSӔ;~<_ͩt-8_$95pO~BvNEtȰsq+i6n;l t@l+5,:uSSK車/ aOU_ |- Y_:_}D){w%t޺|(|k/ڽ>.LJxrdx?`{7D sn,V&rvyEveu}ޭkPHq$|omY-u k :zgTϽcg?OeѰ45{'c8ln›sT񔙉OggS9D\SQ   ijhaj_Za[_da t1_`+o=kw(hQ[/E|Q]^ I\{issXD+vuCj[!+|)i{?[U]BS=ۧ\̷<< 'f SHpM6pBB=3٬ؐaE3w?Ԁmm\ g3`ҠhCEdW@&8UӕVu5S0|ꞷP(g&GzN•``ﵒttV9Ǭ)ha[;ӳZM) `N|^ɫiޡ#)ؾ n7d{;{;Wom3Ǟ?Yp}3_|/ X8*$/iߪHDʓ||+ɿ !x{ۜjո*wkziHrg$f↮*.f)k4-?&1I*|.0Eb[NU]]3_p嵼X>tzN5Pl93iˮxbN8 (7KպFU=gED0s:UgO+jq=wv?+(*+}J:u k61Xu%F0I|1Q{&5.zJՒ7z"_#6t=^P,|3T\@vҵ;2Q|GSC@0w7q7Qf]#tU[yO< Qx '_G4]bzLtY2W(ڊ״ƿ|h8 P{̅WfK`|w9?uu/UWAyWLO'`|ԤZܗ'דٺ pۭu3(}a_g`^HK=QuӜ&m5Ym8]=/+O.MHv|Դng;z#9Pೝh?Y펟]~leo,lF:6D쾺ۚd7d u#i~:U6k[W 7x"W`7^WH NfǚpJ/f@˩Qo?S{^N!m.\C_2/PL#z~ٛQP޶ Wݬ\sfI qQc1jC3''߾7 V<'J:;WY  Bx.X8wgg+f^iŠnsw"=5&k0L5/H|9kapUֶNt;J\s͉0Ա͋Oxslߑy*MQ-_uU[Ȋoߌ^ګh@8q5 ,(v~n~0-Y`਩ҙ<P(O:$zK6$:6 rp[PP&9._+ю$l0[bgL{ 29u>9*fсs ^ 2w09l["o蒖0__1\6bKKnX=Fz$/`uVA4ݸ#% gj*?va .YR0Fm폑SZZTbI5)RM&iCf'gU!,k.@v;q3# S͵,^A5d+ݭ cHQ\;ϋ8SLL;-V,x%B}꾾mw6 d FVݲξfWS[mjL).߹ hk@"jneX7bIE՚\^HwIP0tLCYV|Sa ^dt$אKNןZCgkVrk|DwzĻHd1.(d"c.N]ϮE +k KW?ۿ%:s|5n|*x9B噟!:A楽ͽ){w|Tl5QGQk󽹺j$Y|_++;/5&1^ |_+ ޒUua_=}|"۫3fal)sNIF twT5:o%z.6( h%ى,|uշI!U$lբW~б )D{f lBkL|>XU"'6AE!6_?iU¬qkAlXFL}RѪ`"ЉO90: SSF[YKt_7? `-ӎ+eϲ+p-_}(iZFM=+l߸_EQ85|a;iCam{Mo[:|a=_ %F,wu具޼U`:W}"^N<*_%e߃?Hb4vV}.+kYjF&܆~Ŷ (;- @~'+ǩ1vYj b,"p`Wek:!a紝<NMX<:OggS}9D[!  !! ޻ܵjLmTfn^% *c05:i.[pםq_pj ZbjUs0Jl$Gv"tȴ9 tQ`tkY &W[u?tPz4ۏd~,w諗ÉT5 N *fq153qkgX'l*4#d.-]zyʔ02&ņ2PH)`xlJWOgr, f6gFf@pߗ߯'|YJ"ct;9F.<9^ೌA0Bm֛s_6`h?.`r&takvi=cمĨ~aUVHPDB+m~-RpȀ| 3H݌ڦIdG{9ЋgTp9}0ڭ|v#*Z[lIԹOX1ozۄߜPlx6LLՏܗhیϫo-B-;DeOk!4 kzl)<-L p؝p蕤 Wu'cKww'2a;Z50("DU>9q'{ aByuT}ӷXdɡ[r?:b6LMS . Cout~<77fq jjME5|9s+Szpq2Ag,Z~3z #L3%OR7u {Zret6^M{ÊIV߰d5POHAoނXq`SfwsNq*MYa\fsa>Ra ]7RT\QЋ".Âr$bm5nYRFWPMb׏7,y)/^X iаUNGp]5iu-ւQ+v0:|ǝ]E!ˮHa:|KhY$ȕ1f |V c_)FhG+t&3296"e . ^=!=crmVuoǿ~3.f -/tTĪİ=B3q_7Y^v-;; >7w Gs?L:۰7.e2;l7YUVFrlܿy)޵z+)t^o ZLRm>s!zdq$0 Wt@1vk@1U, Ml39660!׃h pu#zbgmDR a\|K(d㖄vnbFjpnvL%PZf g&,><7Wp01ro1/WwK8(58w=T SnĆmi1s*NNFz8RD1$܈ao?}o Z1L޼<.j/0$H,=sjoFGBů0~ @6 Bqgl?z`c$ :|չ 'Jޜ/|pRp]7\+bE㖿SeQ>o=Դr=ߋPn6J5Hl%VjSLn=|c}zzFNmǩ]4@ܣj|&q9? |@VYT&tՏb]#.?. ?Uʁf,7Hg'ޕǬc*V0<>kN|e)NBs-m=wEKN=2laKd(fѵLI;^-aw |>=AVΞ ׮ֺf0|lgB'peec _||=Gia.2y:O{Q4eofNk.n+ɓBѐ\鴑i1M1ECdKghsM= K۾Jo$D\આPԗf|`HԸxI)&~?-`1K-,mUV*0Ӯ|KYB_gj7`X`Dhpjg:)觴y/i)oYŖ/lnd.f0 3KX__+r0b׭G+gy>a/`}}Ks>|&4r[MhG'w%E|tCaʧ|@0o DZX"'/ , twŸ5s'o :^y^ '<ص{8;$a g鯸S@ǐ3\3TWX{~2/r,ϯ /  +fQzdpD{#OH>gZ͆)%zwӽW%]m|dV}VB$o Ƒ5ekR^Y[~dM tn߄zsv͖UE$,vۓ?m0v^*{tc綅[cl2r_ 4c0xь.V.鯜qu喋FB{뇃DD~e )5ζLZ@p |O$Oǵxr9i`^^.t=!2=v&BRNlJT|7E5t$ dK/ vڧ.%97BF8{ҹ; nE+vXO75P] wg eh/kɌ {WcwqE raޥiYwx!0s_L갡3O3ũ{ABz Ƿ0͊cϐKKuM ~@'**\Rvz|>@ 0=`8\iYqh|]>M`{cg.^3z|z<)zrl?:Ñ<]Z_ &/XdmwHtߘ~4 `^Y#5A>;_%J lp~Qw'':y+ u7>㕘V7YnMSx =E>{lT~ΘT_0.勋ԓ/^KG޶%h{tf$gAL|UMao ݌'lhβ@aܹH;V^0"Lz^4Hlm#.kj27ΓYk c.>,fJoYubB>}饜(P<7b\+oޮor;qқLnbh[ b63mZLԇ \ t>/QjLjz3r v}7'^C\ u}$}\{ ]}Mav8bڸ)򜳆2!^LG=]B=)'5@*Kx/r] QUcP=Fݩc>dw+ȨgOy^2n1яMUPkt*~\ץ!~R9d5q:+R HddK# Է2ʄ& oRg}Bvmv%5w5gYN`,@Lܦ4fׅ{e@[HbCcx'Zy/G5ͦUr3gVro8ue-]8.i.u(>L{Veo \դ:BP=Rs[]x1(C3jV&k4}>fg[ kx'ח]Vێğx$3-[ηOSݒ,PDayoz0jmkzrL a2B8dߌ;]8崖?VUExF'udW'o'ᵩ\)d t۩~O`he", x?ozq璞sV+J ߟLO'VCq+o,#h):BD~p=0h ͛BO.F2ԹMc1)^\UJx`!VHTfd$UUg!vSQqlziK|ѭk"%{y|rk׹'%uy07خ`/ҧ L7nw&r*2t)&ʽmFmrI{'Ps:WX:>\ Cjf>NHdd+5ifz>wM|eHkKj6[ZS,.3~y}E*K ;?E2׻$}Reys{T"odՍ^pҰJH7y9xd^\oo5CV_[oGYFZy%IT {_׳8s҄Q\S+%/kOO|ac0f2E/{8nConVϲek>4a(.ek{>,b}.*H!7ӧO}[!22ls\NxbP< sg"߿}SsRK]yesO%`4ȭNtp~ց`r{_7dEgcDûJDRZ8Ǭ\cH_/n~G 3gRt4>N^P{[KoГz|u 0_ ? e#Q J`yZUnϸ,"+$k"Ī> tsȝ쏥-~ V'8pGj:|`/HLv&JmY(ABkLj%:&?3ita:HUgG'l6ށع`za\%'0"DR;~ꁄYեqi] D`V5jR.<bξ;Zd^6:(ӕEq:.tʿ_yFXV(Q?vX|:!o XPڪh}JeEDG}7Ԟ;!Қz@Zꌽ])WFtɲO+tQw/}/+6;eݣF\("zfW#&teOEm"1;T\Ur5 e1 VoG$SK@|Q1Wo?~1F&zVF׉)tc ;pϼ鿙.J8^+]X|6q} [M\S,;cגԝGq<]|:mm=iT}=guTa^vwSHL0!:DQ^V4l_x?^n ?k+Ѵ{Iw\O) L揔ꘚic;' Dd4Qo=N|cOe,M|9wؒVd8Zd9=U:Mb޽üg<͌z7BݥFX&70b):tv;\ QFY[>xfY!Kk;ٳh>6tq6Ct>lƢaJ(g6h 0I|>Qz,g/ <-'z XBXH66oWY t9kUMvPϙZvZ4|)韊SуΡp"+c/e{|}~`R1Gd\J†R&oJnѪ tqE|Y˿? 25y|y/~5Ub3wI/VN:.]iZyY'Xc]D Oip_6@:2߿-|t I>@cCtfQc~Wu|t޹B%vJӒc+){jf֫$n_TIɛHʷ޲dJLIDʎl5"򤎦clו)U^ `ߋmᤣ őzt >؝%po3{%ʟ98[y3tqY:DY뤋m')gֹ@nG1~|BSO)Db}u^gs. f?7s|̜:3y[]|y m%P~̴gViMWOF71[iL1X[HM޴ 2$|irGgU~2kQQt  bCY=V^9ƪWӌ~SOLy=&rD0\ugnc޺QFa$ص퇹 )W*iw׻Z=k[I1dq۹ ]vθц9a[dG C,C,-~=/bv1F;V腮j5}w[s\glmW&`ߔt>YƢrKYNu1#蓏x=ݖ';_+,gnMj:d|C-bl;3hלgF^L|%O&$6V*EARt0#aX]\t>{n:<-N!=O}V('+.v{Sr t=9uV\v9).j HUU'FhGbמ%0r#CtL3~-oɿ['[\pM'ydB@Dm[u );Lkc+Ft}oN\_Tg"5z?c)aϙ *HiIb4!46|]مUQG>0Ig0z, P +4 `Mwޔ1i[ qbq,#"6&IfF=nbl6QQ?k_uy0 0JS0>)JkE`IW:-~VqOggSqa9D 6q#  >LĵA)F|}L6F Xu^$ls}ؠFSK(،e/!.c]7P :S(O}Ia:zHQ*B#)^Lʭ&z^YN.сCN_/>~׊K]5r;+,e1fϪζ/ 7޴ԋ@=ӇmԻ^^}A!9,YrZtƱr<L\@ZWֵe^um]ek uYmZ`VL[bedwokV+(X4_vIvX"ozqo|ny1g4nӍA4<+ P7%&XkN+W@,A 9qӵ,?=a\w]q8r>MRrQ+Un6; Stlkt,Sv >Tsnm1v-Z: "wyݻ}K'u`FJN¶-^z}mg4F" Sjw4HYO%0E5}Br. Rlnx8! g>/sAaz i6b7#F  \Z)ҹ1Ss/xY oQ;u>6zv$aNx`_)OX5ج빟wV#a'\Zx(Z ަY93E>LȽ/trM-H8,Kasԙ0N vfHB0 T4 1$JU:`?B :ݺcڽ$U`Lv>w⼼6{7d;U9^zQwb텞^:n/x ,alFOٯ!xio.7$<8ãPDx'Ǔ%)#!E=W_=_5 g/_}*P;T K 筋6u.6kn뜷7ו:be]{sB8s9s9sАUA6q HEiȤݣ$h r GR TI) 4d!RH!RH!R!b) *2,2,2밳:0C KMXckZiJ)RJ) YdAF!R!r)BCVU}SvteׅYn]8u}amXeY9~Xet]_XmVY_}xu]n̺ mc}Yf_w:㩪+ , Ƴ, *±,j°ڶ1ܾn,pk1Qu|_x tu]yf]utG8~@!+8$dY(Y(躢hiiiZgi),iiZfhk)˦jʲi캲mlۢiʲil,ۮ꺤Yyijgjʲiyjzh(j,[g試'j*˦ڲilmmim-jۮ,ۺ/iijg癦il+[(扦j,ʖ癪'ꉞk*˦jڪil-*ˮmʲnljjʲl˾ʪ)˦ڲi-۲˲iʲim.˲mlhm-*۲-,ۺʮo-p0l+ۺo2}DӔeS5mTUYvee}4m[UU[6MնeY}Yma4M6UUMմmYmaeveٷe[uוu_}e溲˲p p0 a1R9Q9 dA!9!92 RZ !Rk8ؠ)8@!+TX癢jڲcI'H牢im['牢ih뺺.뺲+릪ʮ,ª+˲m°ʲl۶oܺ‘.1 G @6pR4XhJ 0!B!RJ!0`B(4dE'C)RJ)RJ)RJ)RJ)RJ)RH)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)R pz0 HQJ)Ɯ1cI()b9RRi-9!RmsRZ13礤[9RRkVk5ZZ5לs͹k9לs1לs9s9s48ذ:IX`!+Ts9R9"s9!T9tBs9!9B!s: BBA!J(!B!:!B!B!RJ!B P`@ #R΄AA AQ3 BL9љbNj3S9tjA^2  (B1A U DDH.\]BBX@ 88'ST ""8>*,.02468:<@OggS^bՂ3ܻST!   u "!L])Ou]t5gƚi54Yu?h|gOKbB_*x.Tp]=1'$R$`d ߎgyߠBoVNK̍FUO>H:B; ԗ nsWxz>߶qJ}z%o,ě\Lnu r(e8KG)@KTwkj=inFBIJ~oU΋o{gc[ 5uIl]oޛ޿Sluid63C?G׀%{{Pkdm1#Uf քŪ޲rdJbT$;2^F*ME#v{B_c{OmI[e) &?PW$_ypf{tEg7kTFvLU94F{nЊג3n/Dr?( qkj *vϤ ,4S?A]O۫ieI}1̜컽A-+ִX/ k*U 6\OLNj"u٥*;)vkv#'W8oٮ|ZEz*vXN䐧6ڗ}R`ԊՃ5l̹osOs2 O|\@A Dly} >|G|}|džto hA.cP\ LX'P Y w@ds $މiBn{dw_^ þzu0:dFTu [?U,t꟮x+fV@K~M \Q}t\xxL  ,Hur~lߗW@}ސvyO,YtVdޞ. }|@KQ4QlL`Y<W|[)\{|+ʌ(G?*|m\Q֊ضdʳ10(toyv g5eo|ւ\.V tǷZ)l23eU64f>tqϸ@dXT~N+] T[ԳV?$ ^MtƝ_}K"7^,ҝ64-tߑqOX˘x朦WPl_pgd?#xLxLt1KlHHCo?-ӗ3˾tar{䂨7':!"-ĝVfd O^yY 3Pmslӌ+(Qt=(?#vCd;4oVz-\%H xo\aO'Fgz.HI|u|Q~KPxz)I|bT+|Q;L[Nq챩ٞIx&\YKO_[ܫt<_sz03kVtaYQx .[ۦhE#`2Oţ{kJ!HDtϘۡw;;?d66 v+&fL-jPЧRD'nrC![yx}'oY;A˺77N7VfxY2Mot;<<ѣ&v(pݺ=V+eISPN{Q>ˤ$+gsF`DCB $::@ D[& !^oV#b |w}+ _OTo/ Zη{ћ h[Ksdu`%jԉCXWdw?Wy|닿߮Ie?:jlw? Y ު}:\yzA.̛wb>Coy-U;){Bla ßK$ٳFlyiVj\,~=|+9ހqLI9eo)htaYjIis>^Ahe$%PR^: ;U"t {&c"}O?$" R0'{w|kSb#hGiE{&v:nAJ؄B\분Q5۷͏Ѡf) RsU7E]Hq KܯX;x|pz1n\jHd >Ơ-U| ឵\j,K^G6}S9,QeC\j--M{9qy<*Aբ 4Id̠ }L^ڔ&ENyì/͹ۆ`;G۝XWf55m dGK>,[c=WB.B?-}=<ԋ)ϳy.n1zmܾV ,\lcZx)'+%<x<ڳ 9FH;5x_eB>[pq98|:=t1]\>}wI qtݘY%Mif #{y/ ]d`sR |%ߍ vlw8}tㄴVEcC/OnnP)a$Qݧ ,Kuҵ?!7+WN2 lc/˟fA61i*+2KlaO w׭F2xWoDZ͎dDY^ݑO׮d%4Y}O3_~82>?[Yp՟G kIRMB}fpb7iZ`35ٍ~~S|tUrBqSBnrh[ܻ._ujh5,VM̖r2514ztk kx斖q8cusCˌ͡Jo)0s@,l|dsܤlO(УZ\`&"4Y[dESF'};&A=w/qB\ ;fK/NSӏi KA jINI$igyEL7='zv ɴss$YXq}VB"2Ǫ, \ۋI>`.خylW%j3*xdX%ATNAe ]}*A gCBk+ڑ^SHd+3D2ņSݒ6ȿZnae{爺+F\&U 8,\M5R@'' ȵVW#Aa0agV%Ud ?0La>r{.]Je oRk-,k]7Vqfsԛ_:)gɲ )˺]>M2 p ŔӭpUc% ;s-͘)G|닦~ApjG}볆a5\[tOggS@bՂj#NE!! !!p_"sӛ}5|sl}z K֍s9V3K@0ꙩ@O_ O~47kvt+D5yfa6_"!Xri:ưFz59د,={&{_,;E| ΢2_*aT߬TùhhL^!v| 3N ~8&:Dc*HE%-sNJ~Zbs'N*&1?l>^DpB~fk KVqP5n=ۅ{*TG0 a-?ݤFK"vk9o{)7]*)X%ut9a?‹h:)κ,0f#[ě |vbV 8 %w'뼘j3]eDϳB05~|S/:٧& E\vcgt rY_7T̴8b ,_SVe̖tSɥYKKU7O4aE|craY.{t=ƅYLlcUꪗf`dhݥ ~pRtcϟ|lThl.-ўh|㟄~kwBdgؖ}sL  ܷrݯwe%0q߾t4kN? %rK=Tme:bJzqL,L,u5O['8J\q*ZgR@ .Ɲl9JKwk ĺs!d: kֆ[1&l1O yt/Lgls{WS:bՃRT㱧B{ -;t&C)Wa4\b|b"p=`?TEzL۱U X2*/ [^dlɪMvjZTG٬dVƮIJ 9Ej ,ItVUpΏD tark$Js*ݎޣl7mt㝔~OVz[\j;չJ1O ݓ~t}Jhpƌ^1ۺmk=- teˣV=:6}[?I|I]T+"IO9aаY O5~Xb6j4c d| ,-$GGެCYd>ewVOt,ZB &r͚:ְq#En;[Ȳvn覿o=qnK(deWvאR+|uZw0h|oİ,:d;dxXUF(W\TFj( ƞc\4 Z?w^ʰ~`Y5Kn[h#j9 #cxK1~LQߙ\ު&GaR^z;4|cȿJjaR\d4ӊeL"N^r/,_05{}<7ʶNY84;&lؿ͆vk=^!ouF|Sɋ5Jo4"1_n;7ZzydKJB7`ye]A%bx"]@UGLUk4^L7ܦn{'pKG`*2 Zq풳zi'QX}9rikg4?^nxIqbί<{.;t)sv1&s|>?@0?퓋E&Uߦ/(_e'᷋8a3#(~n|闒+`~=B7LͮQﻥ[>W {Eݍx|sV{˧ruXlgn}K9{?vy*INm]!KG| .W @26z|] xŨl3d DLp՜(xD%-rrfh9}6'0[KY{|^ϮN ~u_8l_>Lh͌==KvANzK+!c~͓ÿ''DFeiƜ}}-0|EBtזK+w K Ȯa8+l#YM:> 'F?3Vs{_trſ? >1BvIʥe;okz,7}js Bz:Eу{ mUzu4:hDمiS;nfԥjgfm4S !;r4O>N5"y`46x* h!!Ԣ+D4}$(H~L7vj;]v [-Ij$2oV !N5no:~W7g{\,RR4_CN) g98Bv+D B3dgl)  }pk)HO,h^\ev)T m*$-koSTZ}K>p:Ƽ]Y'o3)2pu쿳o[E_?s9mpY (ۺg: ZLw!p% %IYc=sM}\v,اsHLI#M爡R< h,zUo`c'Sq?-j n?ڦ[nC)$vN);ԀTqRqs1߂ md/e4SA2nֽxX4a|>=P99׉4}s,@~/sNӏE)VhR|F]pqVZvƛrȚU#51CșQ9C )qSL15T dh&)%IcnF5UwL|F x@9QYtӯ<+zEʔmr#>5LHVLACsʰ֞sbjDw>Lg`ixn{e$~^%,;Q[{qӹlmU} W**$Ji}۵^F֒EIXOok;輿 uhm]zʇ6^6?y աl+V7/u#3H_q,sZ6ؒ=M=8cIO=^\~j2yj9'N- B лld_z.NKfVBIk\"OBݝs""r:ݸkB9^^E:@OggS@5bՂz̤G!} babn! !" "t/~ե0k='Y+emԋ] #1K=D sfK|ZN"' ]>J@XtN &|^76΋oWl^y 3 l&8/Y|ߘ8*~]HY:dەK!{+;* tA'pDN?'xW!Xpڑo`SqՑcTA;N|vE 1XnRڹ0K2oVLg/.@v7~s3T&152秈[O^ wwk>b1f6YG*g{PL&"t*<|5@ל:sFN bt Z^bN] C(J|a Cc(*Yӵ9ỶS('j+uk`Sү.| @p=.(Լ,o<{۳N|n~=Pn7K|d(Yz˒x6*IśһWeNzEȄ}o\N~Skbꖳݓt}͏LCF2^/k%MNR1Zt(틮*ǂه '`^,Lԛaxs;Wq@?5Gn Z}|20'PfUճ@Mt]Nx5 M߾v~1riV<'Uk/dE{.FG yM ˔co'>o >ql֏ d-~pkR)*\w쉓 e Z#3Kvu<17aMr^Ξ)x鸿ӳ d=&yhYl4*|_2P*b:l]BҞm}{CʁzS|0VK] ?<}[t彃>ӟI!*+A^F|qyw 1PgӔRR +|ͳW;d}kɦ{/ ùTYn|ɪwVk D;|S!isdw4_ye)}WUrD)\|q@7R yd !+VUOt5]@\11)AWkr GZ<x:HZxy"k{q`)"z{Z}>{nm”\Miʳ D٤` |w;izDIL+> ׊[5՛⧮w䃙5\ȤuAhDrwu>htT|b EOH.bSr& _ѮY|o$n-Aq1>F[C'\N $?=۾DƶWy_?wEžs׷I%.yۢUt61Fx^g\ǩX\ZM+\Vny!j+h$QLg,d_꤇|3X &q_H9tPwтeH,@{:')u%ƙGծ-T>:S|_ŵ "&\o@ii)Hbxx.9lwg(PVi^,dߕD7αfRy*eWLbms9UNCρ"}'Fzg7x3kwtaͲ+XΟw?=0r}4Ѻp{BB!~!YG fQ6G*$Fv>ZҺ_1xr<>GN,<}mK54lt(B+n-@Uؙ#J*Dae/^ KV4kAe,|̨HYIX \aY¨'-宊c 8nzʨRe|B=2@ԑŠc|Q:9 |@{!֛!7֧ۛw ;ȋC Tu-n2weEmgEPP5 gO~L&^iޭ}W#32Zs0'J>.dp= y#43a~]o 7c<aIQ.m0x1u݈׳B QMl)v7}~*n]pk#"Tjw+^L}T+#QlqX[˒]5mdkWgXCn  ^LO GYc{6yhg˝9E( 9oKT=!8˱8&=ɐ{7`sigOggS@bՂPcdj   >L䱵@ Q$M݊/v(<ՓcM8e9j[Ywx1<{u~ U~bB/u~-uM? LUQ76T6vNĵl@,)>Lқ5C⢃`Cp?3eic>SǨT]PxN5%1 7ӂ8DPjR' vLAa3DQK櫤" K-_{l *Շ'ACk z+^LS:Aӫoeh2E$QjEM =',[L/ =S<+π1iԔbZ-5N,Kr8^WpHטY b~#s֚ v<+ w8`RY١Zw9ݷmuΐ^*l=kO-M[[ o컼rޙdY{t DopnJbLY@(_.Kԯ 0<؅>b{YWm\H +|`٭M0az$Q~"y[=}\y'a@X'WJ̬鼬?ԟV{,WzV~UyTFs7jef$ 1AKeLl |HyNf'7{*ٖ>|"FDnbjB|~_q! *5Ksmɭ 0wDhlО< TkכjsInM*^N*eLK=w'LUTD !'=3F?. +~lx'ߕ˔4 MAi o= +y3Hp^ fdo 칭1+ody LrRýq*Ǧ^1U|HtÎM%޵}I\Ug]iiΐNDLt);ϥ;szfvdm {36)_>lW{sr~K``:"7 te; v? JWYdکe[w`*GuU54O]G*碮kvuوhp-+=E17+a7 2֒AAVoKHɳ upTdWh3 ^HZW1{|H ;>L㰥m't1_?R( ܝ`T{ȃ FjXGU'`(^W1u/\ɻO7܏M&ՑHjvn }.p.|cmtq{K ȼ*iN {sYe9?V[z;O+m$-̯`ͭub=t?J VKؿYU6QM"|5@`Djtt~_L gvL/+{G :"> LJQ4J1|!/ 6#A\%W}s]vrDž{} #{GoUIX,_Mq4S7sZvS.Lj2E/Qgzd#;"ƥkD_65t$ 9u.f>9d$lPpns>e{ v%ܒb%FۛM==1.+B^V4 dy3>D_jM)q U ={V>٭q RqgI x-ғM^,|ԊPEnU,aisi0C}l~w 8i*v."cu;Our4@X\_+.r!X܎Ε;.g${Ɋi&!z vv3hp+PD4B&@p#X8*:nUu!:;.SG:7{lZ\1f æܗJӒm {tY=jU~v 5Q])MkMԱsi5 oR .<wD:z6\aB+>Q#r9!dD"6b~K0ؚ6<۞bGDWvoGu! ɼ@yo(뾆lj̫߃PsN<#c.3mE8mv>!?v|ܺ!l wlu4aĖvyi6ufq x[4ص7:? YC!{V$:6z}EpWb23p9bT6тL)nj,Cc 3g&N٬2+f{~7NWuV6gUy=S=Dp=nJCo0<ډQ)EZ@FX⻝[ ]UHO9źx}]ԫ>=r)5K>~фIDžڕτM6ӓ;o-nc~}v`Fgֵ8ԡ\fA3%eJn:T\1)䏃@Jcl -^B!mYZS,ucj-m;˃81W ߏ*>Q%GKV94:k0LeT !NvHs, ~K.Ox^s1"Jh4#SI='µ~,fvyGw[HjS҄f?YhkӝF-W9¼1Ba*Ʊ3s$tzvvN4/ϬMf%&E*BĂ Tnk%4Žmp̘$i,'o;>\kL^\=.s~^GI+O kb=@~(Cx+^Gx{y2Y*L~]$B伂K,n_Zg>L䳓cӄ+f~~fEUqAt#:_QA>;\^Iɸ kYCkJ pO}{BVjmߏ>$x]zu!s4DgZ3K^L{;Q<œ(ֱtIQkIEfUQ}j߶5v$Y~@qj`mkP7d[W=# ǻpb[QW٭Y\ȴSg\z";; ^W/ܰ(BKhֺDsJbէ}v{:H~^;*-=K[䭸am;}"^Ѧۖo,Og2캦5f 2(6Hl8ls?N"nɼ"W)Yq'nU]k Iui#JP}ܞf9e.YI̋@ O~j_uTFlUӀh|}`V1c+Jf\O.';`=s=0}y+E^%:ѯkk&ٹG(\̐*Nf۪b(Ǽ94&P(KiM국HĶK5B{SWh횰x:W=:rlSrH!ls{} tH,x?=a]~6W~2OTqɩj?V! m mbwc,|o]y%6AS-"'iK wټoOUys<}4jS=S vx_^zDәƔkྋ~55UcHOb[*D uqń=BF!įˉZ`>..'mY '5M\ЊV-̥rZՔ}|Y83qZGFE#V*Rp9iFv_H%X6[mLpofw (k_ Ϲ9;i|xݪd>lLa{uJR{|3Nx?k/1vǢ|]?gMT%w\L%a|gO15I -jNOWԹ#K9 .9n0y7МXm'@.-{ܴX =ign931#n3GM5&rLոߌȻGB(;Z-5q^WsذdwjAV&Z"`~f>ڨrM*!FP]n YNrf@d9)[5eP(|sN'_Kj, ,l뇴U@Zljh:Dtzi#R~b0T|㧔艟߿USmo$1/7om=|8Epm*9M2lBj1ɖnsեOZbDB@7V\({ Jv_^ʛTIo_T|Qq{+j+` E{cƢPϹ>j 2rI&K\4#Vii%B4y*G2B,݃T}Y ~7ܬiw"@sNL4K .ɒiZ{q*="excFziTLdю\]I(n51Xb:۱aAPjfu} ݤ}]W+?.}Q)No>y'kݟzVBj4:=Ff]6yhb8),U  (6,w1]'Rd'vO]ϓAxb~=%m:WOƬ`UdnS*u+Ndrf/~._FS f?2{jY.RJLhʂ;~LVS#ki{Љw癀>p|m(|j&|*?dN\l-J Hߛfo? @0Mb*K|U'T k/tS>*Dpkg3d. d|>'z7k)sgl߮FUiTnՀiȦ?2yFޏo-u&9_Y3R+MG".*Un8qR:frk>lru<3r}ldL2[PGeǰJqR$FW@9M<B&ml0!6 R*<۷/ f*Z{WoJ>Nw{ =W{/Sj fDulNwܢ,UuՔD;Jxs@FkDe_ZJ "GH:X~m?n?ѼpOO:]o'|gf?S(Sq^cVxb0g ^a"7hz2!W)tn{BtM3_Ea9!zaLuIb zJYeeUYLo˼m@X﹆=5dub0bkvFk IUGp(س"*`j&ֲMg}0Ihٵ,Wp#Fbjj_]w$8vH%Cp4b$u,UnUp{i@mךIZPI4 Ucb}]Mg.xBWX!(,UgNl UYUb{MS2 QYBdqO`\ zҋʥ8~ޮBi ^c q{_JpR汾Nk+~M^Skom1:7~2` 2PhȊ NA9J1!:)UAȜR1%Z%1c2礄Z Bh)Z(Z)XCRZ Z1c9)sRB)RZ˜9(R))RRsR2tJ*TR-Z)ŒR-Ŗ[RZ VR1T[1cR2礄RZ V9&J栤R3tJꠣRRS(%R[[ VR[SnB)RZk՚Z1Z))ƒRl-ƚ[RZ VJjŖkZ)X[V[Z5cX[;RZ ZXk(Rl[kXRjccZ[j[=sR5dm0`B(4d%@cdrLBcbAr9)b9(%s :))e9(%PB))B)% (pASbqBCVDZ,MSeǒQjEic(۳A29)sIq!xmX#AHU"3}a2ǹ^|O?2MQQUYa{VoHٲ.ug% ]0|֠z+A]Mnޅ左_}:yA@EhX]\\*=c"F -V$Z>41`gG~6.*<[f ݰ) 1s-)kkˑ$[驝c0$ոDGm<+ӪaGs ^^ai&ZA#ŧ6pEs.Y.f]r0<%^/MJ_L4+F$jBIӌ_<-rџ sMGj핟FB6(+0݊jf!bmgj0(u`( 2KݤX@#NKkh́hE,wF|RS{=+MZ %<-l< K,8|ɒIwx|5L差Rg(vb33UrgiW)]IyR:S:-0NzLiLc+\7ߐ} xHMcXT? 8k5&4:`<@iǙri+@@Fdp~*00d@_vߚ-$`^G}{61c8̜%QFXRgo~Os4w~뺈,^#۞-dj5NlѯV׷@ķǽ会SE0J_WWצ0J9_(;vE$ pITxcPη7m7ob.frame = 0.040 0.000, 1 0.040, 3 0.080, 6 0.160, 3 0.200, 2 0.240, 3 0.320, 2 0.360, 7 0.400, 3 0.480, 1 0.680, -1 OggSaJvorbisDOggSaJqvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS:aJŶ <:=_nLlUsC4Ok'mgӦgu >XYA>5 4)|/\C[Р1<48__Gck8DEGGʆgȴ-)nSI3攫K 2,`JLf< ]??i]㭪YM^ C++4U':[_siM`Z|Ӿ,6wTH#RCe-QeL>>5QDɵ»]afyHjS<1 C7%URdr l_:#S &z$nk :Cˎ  b/zM7q>V~I2f4 '5xo9o3y$A*WՎǃb-ԯc3 ²4ij#)moNIs, D4W%I,}sF Ivkލ&7! p?֏|)4G.gBАD57AͺKIWb18qZ)<.ApG5rDC@xʑjE"{e4p'j/頁OTСp{gJa<` ~V+v64UP*1(mc(!['WΦǥ#s?!3I%kJfͿvN[2)*ǵg%G hs/~ w K ">ng*#.]wUdzc/ŦE _@H>@Fw3ןĚ](8ưi5%n<Sh'8f?@ɩC]|NY16Goښwa*wdNmY*[J. -?m4m߈~u`$Wb&֙X}+"<"{N|0 {A}+b3bkr&|E(ί JR CGB) O%@'` @( l0dZ'Sy}ȚȊ R'9 Ҵtye!>Roq^u~@3E/eDvRĚp)ͺ@D' '+%;X'!e(488Y!?Z( _7wgi/No|(Ȗ k4zЏd<9]5ۑ$T8`(СH M !!f;c5bJ̀+9`i˓ȔI0(?ѝO8 *L_ w@ٽ)h2/"k\ #Z@N% 6 ,VZ@@7@!X[mӡLU7,jAԃdAY}g`:F) 䗫e78__@ò6=з./ o+iAg?\T-%a߈8gߛVbdw5]3·T]O6]=a[@]FhI|  *It`xdCMP@/% }5UD`Y Г1z::(lJP>]W!0nw[Ddy4+yuPQh_BI#?a4p:VKȷ\-|d2Ng%= +_>5"R]vʙNlP Ώ3M~g;kҸ7S'c79_8 P}3Nh$H zOgPdcKko,c(;AZ4ͽM #'pm4Q'(D܁6S>(sCNCN=+-n< Ƚ!Fod'RX쐌!8fMK<,x+~4*O )'a޼ qzʓ Yc!ש?Ї= UT($oIndPQ'̜f)ʈ avk@wJ(:',(H6 bߺf4v@[xXN[IL^w I9hPkg $iX_mVh/? ?gRhumps>u 8B@y,%g瀸3 T د(0 r Wh*Eq` O iaKG4!6` 3~uYAS`ijkPr>#fJ砠T*`xH7|$Am1$? Jy"؀iay#ܔ#; -GΝ6xQ е2ȵY6.oWDzПnʰy1#v3 طs@޽@WE:p8 hjkx((g:x7qS`ǟ!"o9'ة sQǤamkKX=0":+jO-eq&z37#2?j:&}ɎNDRX->/W_=]5L q3 6~ h;h)ː|2C{ +'3+uXf x8E }̡ @{Z^#!d#4QL&Rۗ-;h v-ɴh) Z-tQͩ4p=cu +zSX; <=-\:5֌6~wVy4\+zo>#?,Bp;0l$SC/"!m0}]7 &?yT(x2l⹄w?Q$Bͽ@꿵)B>c/㄀]l6@wa~p:K$Z,!=x9tb7nGcQ6Hrp ¢3 ;9ǀo<_uPɽ݂Afoډg.ĹN߆astFس{AT Q 8RDXqu}[x-ﶿ;WxYh5ci_?<`i21 3^%Eb-A橺*>  g;)G9 l댈(_ zy ^1A<}dM&8}M鮼r,|LJ"&p^9y)TaԾoM9^{H_q  zc#@ {]7x#@Ӕ{m?['PbܽxoM/ua2L,^VpxZZQ+'9K h?} N_dԩxڈCi4r̓XO9Vga@uHq:Z"W1:Ъt6.:z4M3i%4!{tKXL6k Z5Q@:4|UT]m (,7_4L/OggSuwaJ(  ../.+99<;0/1.lۗí w[em/ܘ~5_qG<mc }Mh[?v"uXc=QQRjg[9gAFW=E^2& .s_!vΨzR C65Cyϱ:nT_bYZ^f|gzy*q$#ޠ6sKDnPJJ 0 u-AA/W3̌ʹ'+bw{E9Pyg ͧǕ_,JrC*c˱ 8W{Zi%3OvizYyMkRfQi/<1t%&EQx;0$<-ZNքn@L \&ĸy > jzszV]<{,:Ryj XOeZ6.i?[ff0ޜa2 Y"8|ˏwIDlݬӲ! es,|hրNdei5j \8@XqJmou+<@%w~)= k*J^Fpv||{]:.vN 0#P ropݙ{>U=Ó޵AhH*ƽaUpǩ'E@ǂ}CvVL*pt,cHلeL6o ˇ]/6/q -ܓ ĝ_jc2n\}X=/&&ER:N!aYIRoeUlX[OVqX6Gt0qݳ:v\Cic9bM3sF@|>%jg<.g|Jw BwW6|<]pAdפL%Z܉02 r|yvkJltSe4G[ *d[GIXXQ_rڏxs>X,j]('" 9zYʽ$8ZPߒ&JF|Y`/fCtRXTo* =?M#nMxրV0l HL.a{մ7A{[dtp"K4<WE~( 󩼃 /k%[$^o׀~'aj|YT'ZL2ES_c au wuZ,^|V4*>̚~pF(ұD\,}귺h^"_1 T-޺ŚEQ ڦ? {#H{ɺ W7ɽ/-v]lOk먣)ڥ#vZ%]_Za<80 `$yaz@Xi}=̿R1? rx6M*\.8b92R/f"kގK7mӼmmxQZlO=J WcJ/NKkum \ i7n(A;a?2ubMg䁣!l}Qɚf ̒NIu yr̛TҎoa=MY,h@^3 }n]_::u$I] Ͽ(I.>Â07m=IUz+%?r[+9taH@Iym %X#uS)sOx,LIl:'Dٽޢݸk} I^ア8n+V̢Z˅jz"2^4v>ݑc"hvOP*=?F=^y߰u>:>%+`*j\d,P DC)ȡ^=W;.FUQSDƺwg1Q@΃$D(n랂l(e܅or'=)V]ic|c+Đ@ VgBJ9J02{r(j,ucU+b@?p#FAv"Qd|Ѹrn#5nUWlA>r, 쬁\OFbנK^Nѱ z"p:HEkݎ[l[ͼA(^^2L[YѭW u$~uψD %󋬵^8^v#>嘖*}*Q%F ժ EKwA43`8I@ӝ ?Ԭﮨx'Hg{Jٌ4oervW.ƇwKf0vM"ysSL7Nqc94_3ⵅ3 q%if=Ϛ Z\`za9' J%+^<#!ȫP䧁% y-(.M5$Hj_یtD@v%ǦoM_>8o\RDR#XJRtb˅0wjxݒ?}YHeDN0rY[,3r+(Ʊ]=ȕP%χ⛤){ ,m(Z'wJT$l"0$6 ji|Jk؟5)ua7k#yABLlk92]"-єgޣs_+=Cv>l? (u N%S H,:(]I@wfTCǸ['($)o1ѕ,mٞ"r=9>^P.ϾyA[jAO5׉Lj><J Z`|9\zC w{ HY.l:yowmUd@aߪ5cϓ_.?9:3{VؘfUR?wframe = 0.040 0.000, 0 0.040, 2 0.080, 3 0.120, 5 0.160, 1 0.240, 6 0.280, 4 0.320, 0 0.440, 3 0.480, 7 0.520, 3 0.560, 5 0.600, 3 0.640, 1 0.720, 2 0.760, 4 0.800, 1 0.840, 0 0.920, -1 OggS\PHvorbisDOggS\Pay1qvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS@5\Pa9#9;,-,;:,0-/,:<6  cPqE8[to7ы;7c>ۧ^^ECH$P]Vnrs_,_dnwG$%\E-70ևT*-3~>2/+<[F5 OMJ;Sr:~=sW'ѽ3]4!#ԚZ˹SF ~.yMh4 "o:݁b_%>]'}O׉au ~y [|U7Os Lzp^ $>](Vc`xB{9';+o}=w{tFHC.fAփ0~b]C@YN pW[34 ]v9MakV{s}3)HhS+ nDr_ +k )jch]Sr$@dLi;?%$իXQ;gTZ\|`>)l/&̂ 6/Eu&6t_\чˁ>Y1b,$rsX}m(ɎU.i~b .&OPq_()OCÁ~ ?pezn9TJ>Ǫ /VMO*0!75 EdBJ]#i$[~"ZT{ r~̝<5 ZcB،ۉݝ1^.WKDs0:P!;uCD6A9vؿ#|*'W=I v7Cա p%`r8<@%!Lffsw1&: bRR)YQQ)p&#`JO0|E36|S;}0bܔCtF`<K@x?s_pLNqhЭմc|#3ɓk3`ZiR+ϦU}3h5 >U*OUE|5 D_#1@Q(M끀C Q Z kWӵ}IAs]YZ[cxOV!@RON&N@,v=&qC%#[^{ ʺYq‡)LHOA'a : 쐃'/u$x> !O` 6  ^LݖCXEC5S u7>>',Jk{} F`,~>6Uv&ՏSvfxL.4=P11>QUa|UVU-bqL _IKZgB+U1Qq,*",;TXXhZ^t(9ru62v,gIz'pp`ZIG{$PR~]&WHФ;|I(rn:BIj(:*aeCc\VdVe<1O0̰?2eRޮ9c\ye!ˑ[%R.jeSd^ު@Ifk*b>)Y`[ƚR8[3\+䞶XIXnaDfuwsՓ;FgVfȚMc<"Rz 6yC'JSU#:`T<=7xOEc PG.ġ3 %`1?=˺:x}; )G114Z/gt'(I*WItm㥱)W5\M8l!,> XeO84 WSM)6yh "+M '*$^$).ќd}J: ]u26<?GΚ4iE}y`Ӿâ;Z5$;mނeT 4?j7'`7d>,nlcYpK6"ˋRvA<7{[t)^ekl xU'>##)g-^ M7 3Nϒgi2PQv;$أB@&Nw`0KֺʷtOnaiia}/w=}ZH1:}?r"fOB%՜kug"d Cow 'NR \ɏo$X|Wٯaw0M̑}?sH)k<%%WG-W(^~2\%Lk5:n{ysx)}9|b vXh,ؗn6hTN^7@Mv5>b[ >lN4dhՠ.-4Mr(&{ 'wFň7"Ѐc%D_Sjе5 _yi3.k~k\KVZ)5a?Ǒy0 .75FHNh>aݹeu0X2\~^~ .#P#ۅxB:K1LeH@%ǩOsmy;Zrҕq&26͵{i޾Z;@&v{~MS|?&$Y`.^"k~vx]uc!*B#Cw+ʕ&Mh'-r킉󐢃Su"c}6a&5~=<^O. "[G #kktby75gθJ,SJ]uAZߏty_Ҟ \  ]T# ~(j-wt0dǙE C\'@t'[v>!^WH՞ͥtA9[>OggSy\P% ;<430:;9;&L- M[>^p>H*d[IBHIVMg7=./wGƩ.smMD 6~cůZ-.'QtK[0TREl^%%SJ?YUmRDpP) \: :'}9Ii|t$gdf=MRk.G۪lۧ~ k01-Cyvj UYT̟$cṅ%iz2ѭKSgH= B$y3C%Njj6# BQOi墢$dd̜E΢̜ n8yE=I1 23yrx3$v&bf/m o]qD9&5I\Usy\oҴ2Y <ە%-Oi3w}AS $xXC!tl= )02[L!12dI2(;EQr$2# B2Of![o9SO~K_+;. d!}S۴ww8E4vܺ3D> zv\{X+>|oQoqPPuuU\owqP/cHPł\B6b;@to U@p ?xuUnK% c_vv<:$-@y'37eGh:whLtKw V;YW3tY}U+gZQj")e6,#UXC76πR-1#yAK8KH|:FLݪ!%ɜ%Q}%xIGTNrsdqJ/[fƺ51(沖0жr}r!j$qF~|m']*:}.;F*<p",Bj,J`)fϪAv=T<$ 23+=0k!0u%,H'i!r)C^~ڊX_q!@xǑgxlrTAդd%gt#l0~]n:42t,9[lz@n^6 4!Oj(Mۺ>N tv(;m]qr|ۖK6tߟ(h}\ϑ-!)vPݰKt5ZL2Z8@A]rF_nOU*ڻb*RsS/wH*~R&EH7pUhSqx[C)|*br\ N߃;f+g"7} ~̐k~$F1?$^*8o&6G t>&T& FZL?8*{uBχF˹qI4W63u~ @Qco(hVk/^`AH݂ AdM %H\#|p& sd+^\IW0fs\$VV3c"m~?Nen$}ABӜDEJE{fsٙ|_gIHt;~fyz @_eKuu@>5lZ &kAjH]o:r@ N*)̓x'N̬Ǿ; HUvs^_^>]yT‚K޽޻~.8rdL](ͦV//^L/E\ qχʇ:e_3 Fv`,ln E x6ptm+b-|?e@/n/T }L.)XJr{ tn`WbB2T'zj}#6:KeZ!`JԔ_syZm 6/k 8MU" Ԟ`lN{ "^SxmvH Ӏ_]` 5[P  `p>2m CRa`1N> կ3!=oPU L"y[ler +l W>E(V%yc+S2~.¡(H¤ѲVjT]Tkυ|J43-`WO)Id^~J-Ԑ;e׋_M1 dG#5P42 Pq0n&vP?Szq1_\J@;(5@yM-1G+``1/G?ngL92;G27oe9m"ʿs.S`x>e+em9绺6 ?x\@,cP$Ej'}}q{MaM9F|-Ռ͉5j~x=G:'LQ̀?&ƚ5a#.!Hkn? Tp+c~ҮG -q?p1_I~u[`IɃ-ȟ9ΞPcb u2m?䄟~LOa}.EW]Whim cm4yˤ+`) 't紑ZHÇi<yv'9C.cm_g*Rob'ræ-ԁ2 =>GӖ9P (5sOc<"\ ȃt̘I)U~u,ҘhvI`ID:fݓm|^?D|m˙A͞GޡNB~L牍> h_9 / 0w1o]=>pS_ǖCԋ 8zechFyd+zB{ѵ>7}q\@B#%+-L o!U"-}PӸ5Rto"^Q?l* r`ffҔSL ؙ0jޝ8!-vMOg盧?ϖΝ.=LՉi_\=o|ħݻmxb-ūlir秧8۸ւ Oi4*'nޮ#=E %jZwDrD-]>e<[NP#m5g@%JeShbAAZLJ_P@펅= #XRzR7OggS\P^ ]|Iv@b}L2d8H @iz?qBcǟeAv6!jτ}it~]d](u6(=Wfel3ap,qqv4=|j )\},ˉZ{駢9?.Eآ{–)|\﯌wo@+G"0pW"3suFJoA+)Z$wN}rS!أCU i$%OMtu]ޟ|HȅJA3۾JUk gӈ'S{`fh`sMX)j?&k.Tsn؜П%[ɵL]2m ?t^eol=O,?Q7BQf3΂E!*ǯ1;Y{FvCӜ{OmcBYr֩K&qK0,||dؾu}rG7 }P)7qJews*`ݢMBsKKNW.Zks:t 􀗾=4hs (XDwK @()?˫ {j3h!#=Y>.oU"f MB汔{wYLvNūu@Qn4vFt_UM*ܸ=zHcI/ҍMOT/]HA=`]62r:\J-lךdg>CYGM!s٨%"r{`|ule術ԉfdT<=éw@fo{9M)=arć"\y{0˝}ßUW{ZZbǔAYkJ|W<wT l#-P*|lj}@&]Is_"#U*]~a/+6{B> g-k207jS%xU%^=%E|/% _pyG+r='cߴ*|HkQDڛO}_a% {n># 3KeVi%@Nj+#+Os1= ȩ+d2 @^{lwҒ y5.S8j;PۿOǔǔ  v_7śيb$2\ɳVw@;*MEQߖ=4Ʋ >;_vv]GEP|cA}&-I_WO>ޞo/Lai@oKnfF$imU2HUvHȯUiΑ\<{l Cpˊ5rmT0e~{\$^fOĴ/ׇ\U]3wI=~Z6R6sNXѼ0;S^]fxQTp'$~5|sCn^[NġAvϣV M{{@<7}r7?qH筛Kƌr`QF]uframe = 0.040 0.000, 1 0.080, 0 0.120, 2 0.160, 7 0.200, 5 0.240, 4 0.280, 6 0.320, 0 0.400, 1 0.440, 5 0.560, 1 0.600, 0 0.680, 2 0.720, 3 0.760, 0 0.800, 1 0.840, 3 0.880, 1 1.040, 5 1.080, 2 1.160, 0 1.200, -1 OggSW/MvorbisDOggSWqvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS=WS;1X;:,9::=85/,-,::;nHl?Gig@N LȍJ-NFrG7YzYbEnkٜ~:<)<Ϯ3.l |J%L9>TQpoB$vIHٽpe L3ap>]^{=ϔeձwߜ"VjHۗUSdlB{ D2wif5hV#mz/fDTȑ@ tE?';i+rJk}n':{=Z u_[{o+/:qo_ln/t:|r >(6KЭC^xKmO?1ӶyW1 1P{X ZD()}OwxR>KMxݻߊqǹ#{>^Fߢf19zICɗKwcI33׏m%4gA/Y@ ɱIA̺گmr )m_q5BۋOC7tמV⬆E|.BhmnӴcI@:ۦ^+ҫq~~%,5q*xcs>vB5P#fͤJI@>h}Ყ*u7.JӴ lSY0e5)SuL3M}'k,/7 Z&e9Wp@Y}yćzͼ?h< U{Wα#͊У Vle|aE?ѽ!wdut3AuA@0V"| gޖ kvcJ1xv /yV}\h'8U-ssy{ƔuEʯ^YЋ_G|N98CMחf-4@ 3ZݿoŬ@`:c4veFfbC'8S5 \.G\KHVQsHg8oE{Szt) KC]BSn|v5=ݏ'i# Fx`$ 44ֵ EhJ2 ٲ" #z1#%`b(n11XN7O{Վ˽?ym:!.#$X +}noar*.^t OMv@L {N7@ 0 =D7 fGRGJajaM1QDK1N;T:Ne7C0+ vbIX<_P[⳻Bt\@ĉ9^/980d&-&1%N !6X6_mͨj)*oƚ *zۼlbIhg8i |S03mī{Ptxj4clP^\5[!Yjhx92*[dx.oN0զn㙤TҔ~, p9d:c|ފڧN}mZGAG3ǷgKtHv &WФRSU^O'wg#er@]1}ƌz@ .U[f%SfEX{uUfEsҔ=ud]puG\.O*m}D@iR:K?ԯv>`HHA. ۳`olZe="jB{$vy<#x[M|=dCB'7m[rw& =IA:o C=)|!LWLzJl-#Τ)'#ݡ+XS6;z+;ѢS5V֔ϗ~Flf07T~" Soyއeb2wGZ*fT2 ;i-xSM9s(֍wƾNҼd"i)Uqk8a_ƈ*1~%~[ |S hfjDj!A@ۈqGo: 7uS{m8&o%uޮܙB\YppQdKfWIEkj v/G@T{G{~|~Is3isBwzC> RHYG'Ws;LȲ׵r= öD7[@t^r>FP~%ϱpe (d&cbZRp^}Xy7wgtvX PjqT[&,7CPjl.Wd00Vq$#xnjp>_ g(eYjk&ƮC샑,( t{B(ܬQw>䯄"Uy֪zmkۙ}C ".Мqp> |\nImfB,l: I|"IY]OEj/~E%KFzAd\ {1l&(R6{S=7͗2ՀCZBri佤j䨘 ~͆%-E7Sdb[jƵ+),-,)+,<9<;,;<<;,*+9<9<5+,+9:9vķ/iF<O$NVIPP+|_]2ح(L[@k7fG:q(#-\2G<}ݴ |Up[lsB'jصil8 j]nJEGM"ÇVƳ>­,6w!mhj3pV2ȃlѩ>&Wp=Ǎ|(Abf6- )A oިKorM+Po˶dZQj=͢ BX_k9*t+n_ȩ)b?gD'(ސ;_¼IʵB)}.w,9FPV9)k"s_? J`^gʓwd?rӘ e]=/1a:J`mR)x @ɳ>VڵZHEM2'a=Gn}'W]FkC<gnPiu|{-y}̽fԋE+vx,1^3bY±!n姩Th zODz]GJ ~*YS_GEzƕ&`(^pgK~wcor[w,ׄ6g,ݷ6>6R$}u=+S!/.KG||"{PT^[2_P%hu&w`MSJx`#Z FPy,>d 'ƿC Ny;;h֩YiܑEʝV:]-I\/V<~W'CTfq71{[ np>ĄOBdęqo}!v+{0{Wn 8N*\#h*j?f `܅oyqnVDf/`<{Ol>kow{q$;#z99A"8f<`dH38A8d9]$nnzEf\ uY2̥O vcku>~܁5F 9kζ[3[W*RCel$`hc:J:Né >rSlyNhFz2sMh(Cr?e zqxr5GwwMh :lݗ<O[_cPx䱒˱"GtKuG*[A8pY5ëE@UEHɯj\TRB>,IA%0-~ʩY}ק6sOӔ@~,;f K9ހ(x{D ,/8V_oLu+j', W. +|:-] v;v ׈(>s`LIhդIIZӢyϺWi&?j)尸㰻:\oB10d:_&Μ=d7ϧð+ /T΃-a)mJ3_[4(s(垠ѱ:&Q u"sIɚ0]]ICO?Is!ͼU#>No{F. =9[FߧMS ':d  we^~9x̻sݢ|Y 廵np fמAziu2{< ^z4 nYy0 t$l@-*ymxo7 _M vS\Mx&>m6ʴ2)0ޟ $*W|P >t6@ÙzOkgY/Sd^/j:j{>\KM 0Ws0`C6p#f{J?_U$9b㡷 9ЀGQ ))ҧ/O /Fre}x`|܃722^%_c/M>IKgJT]'-WNW#WINk92T=gDkJlst .wD#hZ=#!ĸ+ 4 @lvuwy? >@*˿OlT{w46։&ꐄv4d+n-oܠ.M?S-YtW2=d92ź[feD"I6>쮺ITO$唍{c%'s6 lк:7( ysuU`ʇ9e;z"qZ%u6Adʓz?'͋(ÅֆcL~>vn}eZ/ow)鄉\nm8}Lt䖺Kz mkv:*nLV)j3 o{s&tfR|si2G4WHs:ropβMMZe^f0쵲,=@QhX  >Q phEGi k) tly1qzz)4E@$#{䂬a!%St&\ǂkvZ,CcTV}:TE14~kn ib2|F^WVD.LT%~(Nl(H1c"k١Kz0q{o [EdYYIWix;a--흇Rb ^z/=OVH築PMÑPK$րCqFD;8SaՏS(0$PJR:~wjx6Q8OÈRaXʅxJ9r=E7/&A)^uh+Xc5LY*Hgzn>lky[X7Jk(,LH8*p#X閹PSsX|я᳗{|R_su}s~\gO亗 CƐ_Sfι:&9!&ξKFҪm iqB^xq V58Nٿhf;Y#4D冬/:Lϡ4z9N=vkVFc=ͺi?Ey2^|%ەRx<^$U9CIX-7&?AgQG_7zK;σ-mw#ߜmRD.,|sXzÖq."W'Lnv%~쎹Je"8{f,`*A,֯o񴵾թozM;Z:\13ȉݜԽRÎ:NX5A>ɊW#{m H]I yz0T>g*xY8 9j$@4{j)i %~s18_+: ɲ4V1%# \91o四ϙsUXA%NeL?)Ɓ~5쾡JL yui:1I {א"yxo^﷎ײ5ӿ0]BĻmh %"A l Tke]LΚu/뿟̐ޣ%L áafDG?c݈ފo7x 5R? d_.Œ/:\b%Ts"ȅYp'gh1.4!q*/ʋ} ~GKšݴ =Jl y"YJ3Q1UCoèэJC&yv822CiX}>Ƴ.寋)[W!6)7qCߎy|dƲI!WkY$_SK_x?4Qq1bNaԠ1bC66%c8lV¤3c).[f1 >7^.Id~NKPzA# p?A )lУB~{dV;O*2G%rrGr tG~u}qs ޥ.K+Fw\#L&啉P#~ҙtBh7a{0^Q'A hD o?v@d(8w,d%[@.DRl^mB` -)INfoU~vL=AhM:>7^-y%BW1N]5τv2( gmd8XߵnN/6e;3Eǿ;55Eupwެ SeBoGZ5cG+?\(x0JxRsڌŸ\egI;7I~y+.E%B=jȲsk{()j 0kQۃP>88IǓ//;ց@&;OggSWMW.&Ic$_wj z8,hmy;H-&y j ^O'oN ;c!y1⊸!xZ^xtq 񠿵<ϓ  0QdE`Mtj"E;8g6,)T}M5e^h*g-h+/94c@Вft$1B~|{TCb_;r;`@uJ-< _$VJ5R}sD5[ ;V4^׽ۆ0 >%.[ UxxKe>~a } `³gQd ;޵슶D69iUvH{र,.RݶcM 7mXu{BU  s߉.Q o`h-n֍&Zl}Bfpuug¿ &hv;AfՆϛ6=ߠy`}N唭a>%|+#Kwi)ξ/ow0-|iYTJFn>F}F[he}6One>Y5Ãze{q0{(cEl /=Dr%T> T'*궾L Nu\Q(~J "#βu܌uK} f 'r8@]lYO;~/WΩ^@^%0@zY%_n;doRbxxpNbA#i( P]׷D̙ޑ k[.Zuu"Ń#'SJF X_=\ՎC 2''kɫhO=6_Ű=/;*ۘ8$.&!؟?d}V͊ Ø&Tw/bkJq}gȆ>_(m= I OJT:?ɑ]@0.# NJ<&Cz\$l)Gc.`^&|/]`wBә. y݈Xlw%l5@GKvwI-tM2_Pœ`pM҇s,oԖ$ ҏڃhhYn{p}3>SP ~5|Z `TNjG9{$oS凸_I$O7-^Iղ=n(_frame = 0.040 0.000, 0 0.040, 1 0.120, 0 0.200, 4 0.280, 7 0.320, 1 0.360, 0 0.440, 2 0.480, 4 0.520, 3 0.560, 0 0.680, 3 0.720, 1 0.760, 3 0.880, 1 0.960, 2 1.080, 1 1.120, 0 1.200, -1 OggS^p>]vorbisDOggS^6qvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS@<^&b"9799;+),,=<./==;;:<=<_`DN |8v͇.~;P[hj)jZbf6\/[e{6ys+5b}XRl4"Nb2(E_ /|߭8)N3L9aS/);=H˓ـYYoxvüKZ zq\s\3OO@No^ɢ'?\glhXg.LnW^ڞs Uy~b"%7+^9&H/˴Oy^D~:x{A)x|9ȃ;2o#:.BfH>z#EAS;/o5,RP} c߁1>2 ¯x+Kw5 u} =xorfTbC5`!Llne;]/7B P;;˲yi{2F˙9&>>hqfv߆sӫ/̞q{+mη#aZ7~ 'XߒGOꇈXؿ%Bt }!bƧ ~,!]b.M&nܿtggu~ xQPуX_1/T-o%{]s'ChTϳr6$72H/ݧQO/VcsdAoSιgÿ~Omov+O3ari5yJ`eؚ< ^>ud0:-X&`Gx$("R.:>3u5ፔE>+0ߧ4bKC+ ].@z7)oTW,&%'֗GתY?L,nrBmoEp~WMxGQsj6_'54]F C2`{6'"&9B͝S;MͿ>ߒJ`_^! ~|moGF̔ux,{f?Ș?Αw ڣ[99p5ݪ^AhryGx dTա 5wF#РyZ)8y$^0*kӟy9bB԰/3~"X{meoR8z%6sxKq+y&=ѡj$j8L/|ѱwRޓ" C8@8+(Z!nj|WuKhq[hz^iƂ/pw.;}^ VW\eôN._ݣHx# SmLX-lNza58ӭĸU|>rٔ]5>%/`sY9U :*Hɲ$ЪoQE{¾gy薡v{ӃqJI{hX^8ςi=Cr:To!/{Cy;A~l~LڏC2 NaUWpRd mG,5d{J]JӘGCQB-֗܊D,LX̚WV%$gPQV?1)1-'zU?V~>R߶E{$SnϞX3Yovq;K_w祍縣v$e;Pj L"R P\-Jn3_GgZ_{EQӃ#<_W|Bo_:;Ͽsᅧ->h r- $Xk'1 ֱ^D'%P 7n~~6% ksM\Yr 5=tWqJGUƉ.lڤv%ܰ,1hL{jDW5܎ڿ` ~tF~]! @+@ԐaەQ͹߉\k3w_'CH*}$?.}M?cOaOB^\Pit嶮h>yw1ESѩln&)%mGq+Z.vG/xM]4VOzyE k3NyHLm?H,: j^)ҚJӝs_B5B_6 $6=fJ6 .^HB{u |&P'<{b0M ZmUz! mZQ1=d0vJH!v `Oh.= 1ȪB6a>Uy̍b%FIŽiaǝi,F5=ȦuI+B]`|zAUL/\W7w.>v<jHx}/X~.Ԅ-V c[$jH >& I7լz|BEkA) @]<"0T0;!= Sp ,/K;v@vΆvҡ|2b@d7#˖d_u3U|M.nzvZ\9( _HU9iˤa[6k?|Im_&]7ox \d /'>̀_@hOE0x`v, p?owO77u0TXTZkvfZOqRTtsʼnu45-X5u,r'e04籉gMSK)>%j(Do0C[ z8M7LRQ_4ӧgQR) ^KKO^:y_$I!Kb>puXv[zH5byVJd tfz0d^_)>%;h޾F?ͪõ?Gq.&Kj'JW] ?@tCD Z~7.vlKn=36Ӹ߸W3Ib NWmݮ[6/|E󻺻Ⱦde$KJ<'hr|U`]WNR{m[r߼65a[.im=OggS@{^&.,,-++;9999*+-,9;9<+:9~FH'jUKaX/F`P}M3)EJܕV~=@K|utTY۰ajHMXhrSZGIs8{ai=s]c+)l+H饪IFIc%-\[[CR[%R4lq9sd]F"HFƚWQ-!uftX|&闗\ې= N#dhiURS[>%#,dð$=@ZFswdr0Nmݟŝ،ʨ]UKˢh6S/ G(7偆"S!l8F{t9ePԝOhڵ@~Zuپ.soy~tCN~w)b3WJyt OyP('"Ԑ5T-#,c~t]8o9V(ZcI> */ Rf=V%?gs|X 'H&<DIV7 O[bS C\N+BiqGƑ^6ۙ(ӤցA`V//][4ĭ6#WUl9=&܀(`r,cܓ!hMC.|r7&8@JdXp-T1DC kvaq9B?e~'so="+ߪ. Wf*p2ٛ1 (tw).u': (~OEx]b(u@J$QOA[k1ċ'kBt_4½#_&C>z]( `+(p4tLq7*}rh9NL_UDTQOCx;ϔ k Gy`h l^D&{cΈYJj"\n^.0uڵa lC3d~TG#)oTB9utǖ)<e?q;|ެEK= {]Xgfک3~jHdTϙZu?SzD94eBRRJY'm{ڶ?E2Qgax ԁo`Ǒ9c}~-SSηCv౒d-J}^OgAL@g_i}>,^gIΧe]?gOG#&eˀta-<;VaJa@ à[@p9PA9L@ iSD"wIxPpn.磏Z랟LdB sN +/j,ci /6^x+c_:FPt@2HpqCoP7 J7v'E ӧUnzʐeRnPyɴNEVP!Px؁ ns#VGabz OO uןwbN<1~'mh@%'-֋N@ @v 6kK aV!VM86rBu@J]/,Z^u$@s? Jj๭by@D@<*Rz_18-BM?8_r婛0I/ʼT2880K_A|,i>³:9|ʏ +Y>VHs7?KlpIp6p xq; HKxc|:9խ/**]ڂx9s^lQ,̖/zIyAIe6a64cfb}mG'qpN}n<3W[͸9Gw7I/#S =ʞ J\tgrErlzdQ]y͕idBLļmNڽ5ʯ~}J +zr]ݹ'3ek/Bt_l|nL8n46iħ=˨=ab6>%,/_XT]f݃OPpI@hIIS@{s: J x@\wINY$7uմXƧat 0y,:s`ۄ1~W<ꦭ7}g:h6MJI8$e7tnK6ǿ=O] ,&²9!;"("a[ xmMդH!`e+뀊Q =}8#@ _/aD*ynj\c&`+*LZp;%  Qy󋛹3ߔ^._bЊ?^K7%;4T ǝ$]qXx|̸Λ/kk~wsN58RX!HhIɋ;H0 tN <'R$Iuj[v)mV1n~˒$krjѾK27H./]9S-:"L@Mmͥ~#%͕ry˃BeWܮ[z٩q<>w$Q8 8_ZVtV{p'N~n[o{hW5&uz_͝>P.u7iX<(`MJ%W~V'[J?(n79׽1ͦAV+N #D,ӃET1/e:yzA~؟=HcT2U8Tܶ$.ɓyoe{\.kWԢ 2ccD׹؏r+ k~ {mN\\>2n\/vXrpR:7s G.|˪2{%lI=eQT G%1I5N'ܬ/ dBڗ; 1:+׏B`"{q{+˓_`?'Sf =VL9&=V:lUg 0iBq1[(PhlfL6I{&KMK! k.*C!4y?~um{hRD,l3S^zv}!R_1Hvt:|Ȃm#5 /WaY@`[7 A$|7sw 2nJk$-O"e/;#G-ҐC'gޭn4*}ɲۓaK\wlP;lKU>xA3>^Zfswϙd@,uCW!?#|lrur~|X˝"urAeYxͣڡ ׵ UYC1xȓnU 6'[U^MFse5yzuM)uKw{OggS^ /8;z%a>x7. @ 5l@XRΔlL-,w[SHp4Q26|}/@_9R)( (%6 yLalo!=SalØ!]-Pl*VsYC>=`9=:e@|6,V_FdMO&_qQDUv,NUi së`B)a^yi-v޹9uZ8tR x`D)Ɨ<_ >InIՓO=bc7 ;Oy@ dOuF ">?NVGh,y, *H4x kݨà־Olյq9쳏'Bn.P+l*HL,/lypD#vs(bhVν= 1,A("jp@jw(8SmqF%`J?,fXr wrńhFd5'WIFa<䅄po ¤j$T:n3Af?>@p,Ǐዣfa}/=:Y\UcӇRϞyrہ _3rzvm8E}Bܲ6z 25:5iM'.=~l$"(Z۪]C/Ot|Bope)W-ދ:iry7&a6RN-#[pVLCrm=7b Œ&i⒣WO9>Bh |-b \Z)Pִ6:Rp7A1oX5 ΕN2ΊOL߯Am6;EF<1 %?dz6~x}{ҠǶGЛ塚kK'`DYU),ǔJc2C6U(w j wf4ت raP-l«HE^4H"zQSz l/o2q#cX{u  A^zV_s%LB%IGge, ]u|$5=¶_Z`fjdw |f:{tϡl^P<(7 N3d;Wll>L*˓)̅/!8$0vVKeXh"+fDg({2"_aR~W=QS{20P֝h8S|GXثz5!=]X9A5w%4#4HW|JjA.xأ|=xOoC7%q۲+I€iN .M2\}WW\kڱk<:vtwM}[2XTĶt[>e\Dޚ.5iA= KƖgm^vXyz*R.,|zi(׽e0"{ ]( Lǭ lt*)|m =(x.`ZݙSl%:"K ;m͒YbOggS^ $v"ms]ZAO-XS"R@LN=$<[I6c̀\u@a˳ *N@:Iǵ>uK|$_g*pd"U&À{Q733=rS~b=pthRIKͯ:Ҽ+朗珛\h]a ڢ+}0(I>,>W/틖yܣz"m@D8We$2 Uw|~ D%IgGY Nm8v0h ><ϣ2!|]5#{F&ʯI?Lk? $+ *;k,q"Dz Yl{|k޿_EJh̦|^bWzZ ͳMmN;,P>g`ۋ8N;=6gC3\@4N*e{\d"Sd`Sa@kMUet,ptFQl BkL!T%CO4ՆL ;搥HS01uVfgo3; ښNCs1R"zl }@W741HmAZxZƋ_^]M-rHdE^%x 7xp7=GFU&I N?V׻j1M ގTHH˸Wn@?XL\iaQZ9L^!dz<>Q5AI+Gr!ak<=T!r1b y`T8e% ?)Gڙ σiOdg.9-5%?˻~%,"Ͼ}RA;`jiIB"5IBG|hs/ tۭAo?2 ?U j|L@k5UaH8d,X܇Yl'9 %l@sEsDPbfi<S\Ƚj +Rlo̖ Q393)RC`LJ/QvAբa 8frame = 0.040 0.000, 0 0.040, 1 0.080, 3 0.120, 7 0.160, 1 0.200, 0 0.240, 1 0.280, 4 0.320, 3 0.360, 0 0.440, 1 0.480, 0 0.520, 1 0.560, 4 0.600, 1 0.720, 0 0.760, 1 0.800, 2 0.840, 3 0.880, 1 0.960, 2 1.040, 0 1.080, 3 1.120, 5 1.160, 3 1.240, 4 1.280, 0 1.440, -1 OggS~fvorbisDOggS~fƈDKqvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS;~f#'+978:=;;;:;9*:89:8:}r BX}SM֯F@oc5;GYVj5TRi8(d_P=Ù}j C / k?B~Ya"0UP\~8 s*nn\{ФU;Ǯ/U[vtl+:Yxo^,%y@wPY- T*{*"tI+c8tQWn7GwT MiMz1N{v OYym!7;{;3nJ?$ u_]өk r~Q+*F~soOLnp_]a >-dA/l%o}qYy=XbQv97;n-I~ȪML0yqxѴVe>t4Z;'>jҷV&8=\EXkߧuHWɫ|7+䧮ι2暀Eïu~2\S)ntm*r]]'ݜwӴ$~e|)zDuU#y;tQC"V67h^ ~XW ~Z͎zR4IΎgdX5EN9K: "eI$ 2wo"McF1>@x{~@i{5}tPg+() Z&@LV]OW.Mٍ6"d6mD?zlƍ,܎b>Z( ѷ6"gHV~?z\6l]PmOJÉv)b:&b\lLYV<@BEfTƖki~3M}Kׂ+9 \߾;9`@d<ыl9T'7@(We9W7 6\jK' H7gK,ǒ>d 6@P}HF< '踉a1 Ҳi3f'ʹ/5\J.Ǐ:YrǑ"E8tEI|*#@ԕ1hȫaJӞg>E@`>T>}: % < >T/ BF,0 ?NۏBJ)G~jP5`z#~ uO*=Or q{eN7ΫE>-IpsLQ}x ͆:ư׀D5WLʼnygϧhyMUX҈k$__)|%yk3 -堫P=[DҲ9OxE n9h4t+cGo&7`krP2uѸ²k@Q޵W TUoՇ pѦ$y G5 ,;[.QnyF|0>'g`o/:i dMVH(zCPz\i m>1wk۔G)z٬9^v S xm UD]Z]&2 ?rM8[-4<,ЌA~PC Ԛ>@F޻Q-؋蘔Mܟs> ~;XǦx|;^}H~M\/欁(TѨ$IHzJmh;vL OepA)4~|M/+nCh"N-Ӣ~0b@je=^dhՅN+R{iB۪o|Ln36IfI &_ i>IZ?an>`1#{m/"tfpa%~M)8oG4Y{qwh/U42J9uMM V {:%=@NVHЈL@B*jGvҾg҉ԐpdG^euvڴF=6xT4%'c=4j m<;h6Yf^=ܸ(Sl9"O|pH&MNJ78]# nHﲙWS"N4_}38-j`UrF4#^%V]%<=+ߏqؐ$I,y) Rp~ 8oٴ{edĽqy8Q톱~z>sD9rm!,jU;qFb~dVsһ}UhoXZ\Oc*=?$_#6`WS[ypd*~mQ4]:PUotb{ж[A,-^{'Wy{}Wϵ*}dTA1m"VHO5#B}? ݂ 3#m .GS&nmCh \*c xeaϯ.ٓE}ꗎ ڵL$;t-lRpݩQM{O0z:BU-[f7"5_6HrKviڑtdO-n/xv:낉qMDs 1H:|]&?.q'gl'ӑH6x&oK()B .i etݛ9`XDS (Raz"<%'7xm]}L]' H)Z(GmSWP)2lrwx+:QS-> XF-tQL*ghN u>?'DC#.-xo'<0= h$v$$VAT @~uʱ1v l<=ۅl?( &ݸ'W{Y-.*tgn\rcP֚r}F3t< sp aгS/`g 3xLrj$upn:E)hy[I5 P'S"T/jFfu\(Ari8OggS|~f~a,Y L96U1?j8jjmXd-pGl&8㟙. =N`qKT%qzBL-gk6̫ q1\7Z }n}c~ b:O`1EL2l-3\O;$əp k莿?c`N{VWmHf.έLcGH]C.f00lw ]k> e{dA (^MrJב gksB<&n}׷MJIVe%6Ӑ3cv Es+Rhz.쥼06} M`톳>l1ozͿ1sNx8b%~m;Ƨ1n]~U>]aiQ k}޷`r dk|>2; +&2Vnswk)Ѐ [\xGd~+p<{k5v Ԇzctu}J{VZD%B&Eo,gWeODLJ|v :pCBc7|;#W6tKA?ks$푫D'@C=svJ,|Q}WvoBF"79f9xUbskpXQ?|L9L]Hпs>铭3m#1{ ?~+X~yCGQ?qMUvK#Qm[lt~M=?9]?S:F 0('+'}`U$Zғ- {da?sR}?oy5֓)y\=w!e?~~\Y@hXr-z4I}WJ4ƳCNAu Ue?Nrџu8zuy)6y:@A :>{ui?f]? x>޳0w^r)p# [eyoM//4Cs|T[[] |M?DbMaS]껙"KJ]N57ڪ&>'u4I8Ǜ)Zk$5iҒiT=n{s@ok\TִV,ZogQrg ݝښ=֖5Y{l}WPPR˥{Y\%/y!PMv^e lIx uv)u=$"3dJD΢$gޭ.h^_Nw(V>&+:@*<+a[sEp;H賜h0w >%쎔d~~qHo`!X@2#-(,PPOlߴjvvu&'( ȳ%ൊ_l 4Ro?0bem piaHDO[ a0uhP`Yx&ҎvuOkP%37WBKޣKHs=;ZJ,8 &-?m^QZD;X;D0g \cxDK*RԸ(Y!ilRqS"7,֙Yi^9X猃jϳ8amwoorcP FGw:,;Mc/]3LZO8uGә܌_gh/u!;I}xYPiu:}ԎB~k|22EHttY{6u= =caG箓 ]= CӸU:s-[|!h[Xh 8 r%9f;a[6zdOTQI @!)n7mn~̎B>J K&_uh7s뎕BFk`*1$'vyǂ=FNTm:,u6M!;i B)YOƦUFkQ\jv2$v6س,v7ChYi$MsӪKG|>x%Q5=6 PC$Wpk@$iҙx6:b0hȯuMDϪuNgߵʓ-[1tZd4/+~EAvɬ:o@Uz{*uC3g IJ]2[1wiѿp*p]!&(2}z)5%.-_>MIn/;3\j)f'mEbc&]&[d:WN }%]mY=%z'|pV`O;@0pDΠaOGHUnDBĄ|ʼC"c:gWs)d;#Z[ZxY&Iqw2m1A"*oIjwۭѓfmTa:n#`k9/ټhI:#iu[}#s+Ԓ(K7)H\[4wat-]H E`I`h=vlcN_C r%%2c/lHf3JRL)jfr'֏:cօ#+M2v_ӖDYNyjbbw&TA,6v3arZh*@7Bv]7$CHrc7paבQ-h}d=<GCHZ eg!dzQ0R{&~U mnde[Y7 . >$r^Q~ ۳.zf&iΕaEl\:e4zqTNp=fZIdɤʱThI 6@Gz8k}C5 8S]Ccl@qV PWwtѣToE7adf+o$Co&~R"O<*t{Gj)#ZS|8–%퀤wq*`,G1\ `qV8}d s ,HMrv]} : =;_4q] 6Oɚ G[@Ƀ8%n>gI0k9m Țg$ńô>x_9}jw *NZBVHL25Wn!4BMdCg3=my,BFbG,x7/}frϫ+Z %Si:ETƪ~wFʠXh'C/}F1_1 v 1tjxP,))5`@=;d4KxזRCd(OggS~f/m"/0..-..:9; //099<v%Vb~>pwVs&$j^@"ˁ]Eŧ?Ÿ4 /=n={+9Qn0YNB+tYN( *bL]кvº>B3k9kK?9P̃`1һ[EAP>׾Ǎl88VhX^d>3QdwQm]/lg'["6 CO3ֿ4PAe@- * 2Acα^IrЭT2/uljŝ CI)V(Xs]>1PF G :K񝟎oP|p8Ɉ@p-:M(J{@Q>&x$վ9>jsW[+)aZ HϷ#Jƿ O8Zd΃JV> ^.2`6x@@ܿ:K,ԭbWS( ?*cf@Hda{_pk5\b M/I\TQYqE->톿It\CL=Ol@xr-&6kd{\(fVjQrP5GuӁo*A px7dG`V>3"j- vU"L7`&,8z#,ɋ%e(ˈPZ)D/Hߌ :u~qݞW] |2n Ff*hViT'uZwIHK4\2O'xvaDkDsj+o&_,lMo@пl` _uX4cP LR )Յ8}A(`ʅ}Gl\ě3%# 6f M?˜z?\.rU|bU0)O]g@ܽv/ioy8.vip4֯$+92]u8nv_TusXmowzUf`ucCX,AL8~v5?+ι]?^N^[i]9%-'yTqp9G;&_MrTڇIϮIC#aDn>e:4Q03c>UUE*AƚLtCk-%T)fĊBS(jLR46ODן,|t1&ޮ躭umLOݾkDY48Igvc6畽qf]:FRHکJN*N `!5@W $휽?rx{| l5\p\&Ej6,L03 @W WbTkM"mGȊaH[n9c1]B?d²!@mڮKظZZ.]b`jiAEPXEx;bՀ!| PxfpNg*#6 gx\Z-ppruE>v K)9cYR2vu%J|`l ;O>Gcc8XQIGjhk"0y'' Q@ȭV$ FPlQTkcD{atC ub`Ԑtf+D3 s |si GChZ;4Z} 䌖>=Z1u %7wTǔo'}.oj t ~bYEsږW?^נ6: onX %28 a kg,HSw`r{V 0$Љ -,/J{h僁<'ll:^VcC&. 'C_$T_r5k}3FU4e䁮i aQ7m PaYm &TQ,~Th y%{;Sw$a]%:dFbm:N^\gKQ.Yh8ذ*:]"[U!YD]) <}0kг)e @@ jH:Nū88{=#iz{ƌT)L0cq;8)1R7`\(:&Yۭr_ ݸ!mmaQ@'gz! ,I;]ڎȌP5ڍ/GbHZv`|y[choxu {k2;b"JRkx^wHͫ5QWgZicVH~vOggS~f@+,,,9?;-.,---- ׏M!od $:8/gnCa_8o,g}b2Zy0vg'2qq5¦i[6vyİ5K AB| trDrd>Oz(U>.oۂ4]w %DL+kF,|',IW˧:Ǿ~3٣p7ewlޝPM:))vFF"&`4qE1}2OEѣ+ r~m> > #:3A4oƉ<"i)[yn33-͆w:d& (`k}ͭ4Ô?>[ ţf#S=|3$mR,>rExN>.~=þz` 4Hl$3O+d.ʩl1]o@eek}JF{rW*E=;zNߝM섌UYzl[(_F/e|hmcá?49ҒklRev*(=oNg[fL;\{I 8䒳܎SoXݐvj3##< Ef{E*ʮB+-ic{~P6C{Ch7R4u1 TY`=ș{O2R0L5wqEK膙3J˺l=Ef,w-A>2<.׆l)Y/IaqךV}ny]z8Ч1 yOw?lrN";&hܳD" avr-":|ЗVrEYwEYe k~n/MH`Lt|O_O4D`N|;֎ #SW5@MKcK"@Rޖg+=v/l9s۩!D,^Gtjh-7>L}x,ZYNOOx?:/vE&iJEnC&#KncnG`E\e 0.tBcř1yNJ{:t,OX h.hqU5[Zfag!k2uP p7=&^/Q=: C= rƄpRy["?Q;gyN޻D9h|*^^vOC< #Ǘnߓ`HҒ- )Zw[:yz`z5ܜ˾5kQO+6[Ypϕ.L;QuA%uC/L]r^nʑvSstQGF훆-U,fԶ0OaRպN?B;֤T/#K͉Z3EM_(t^?E6}(kR֋6 >% )} >lp/>$@Lh4 f%?~YB|wuXXPcxdP#K/k_-+2ک>rq\7Wiz_WeYhmh<i/\+͝oPo 7gj\;Aq| VaH Sj6-e-,dRD56?XE$%> ?z3 MBp zgngc*ں`7ޠ>^bC?GԂBڶW<b Ja)N+r>G}RB.@7-"T[;ȭ荗 AkM[fmEa%Q҄N66'g/z8 vgqڛ/"kM} [ "(Fp dZIUdu(-2i쥄ղG&gas4FN\gd{a`b-z[OYV ܖ2%G,A7*$ħ]ILn$~pN"3E܍[*\.p3A^%j43ㆾQ GOLR\)I sWV}mB ;[]zŌ<_<Ȅkt9xl>O Im⓷wp4KVwD %m:X3E@ Ռ5H/ϓcgMPIdkAQIjo ~,zOʒC Ih,&m珊os;dޮݸA3gEK-6Zys.xͿx _rM1>8~'$읹dYyQl-dٟBթe!.#ok˪#fwb6m.h)x==.nTL KQb@,J(s{yws+k,V%+w؏v3jp ,)Z\-@Tet xTzҴ`Ii=繵q_63nhlZʼ7ۮyy겻VLKٴT-r|DW*/y-C@hAh=9'oQ8b \usSղa? 3-Wa{brkzKdB2 J $JUJ];LuL~C'R}ˠ^>7OF[~_и-(ϭUptt )gܶ|~'}F Clt|ܔawa?x6]D>c, ֩w#1_q~La`;<$|\1zytҗ4wQd!神%%+D@$Ц^')]eҜ|\HzǦ-u.`/•3.87'cs2ېmMS*?ʳį =1`Z\]@QךYaG+xu,P+=[_:DuUA]/;}*ӛC J4so |T%kMm Qz{/-?D3sAqXs&V1~]؟%4lNQ(Q]y- @OggS~f';8)>*_׳cySXMaQzR/sy{~]q4@OMǮV? 袑Q\U{ᱎa&x{]0_~(X]G:dHM_frame = 0.040 0.000, 0 0.080, 1 0.120, 2 0.160, 3 0.240, 1 0.280, 0 0.360, 2 0.400, 3 0.480, 0 0.560, 1 0.600, 0 0.640, 1 0.680, 2 0.760, 1 0.840, 2 0.880, 0 0.920, 1 1.160, 2 1.200, 3 1.240, 7 1.280, 5 1.320, 3 1.360, 1 1.400, 0 1.560, -1 OggS oV_vorbisDOggS ol*qvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS; ov)&()*+*+*>;..1-/,8= ,,*+,- )}-]ް+߈Έ<_Vևo|#.Bk]X.iPNtj^3¾6?u'J]3:h4=!xĂE1Hv~;ۛG86@yXOcHM Yybw8꥚w#+. 2DQ,:xx"#y(d"k#< N_~ vfv>5n.0IIۡ(GKRSϚ+ ?T[7} n4րIA1ΟUFkP:q tκE0m=Ff\ܘW^o {kEt8t~ibޞ S:?ѸR||ζt5M-3A-Rq',{y]GS@1d ͤ!|OM2_w6_Is? k j\,jFi%but~uYāSXkPtEܟP "6 <{7;H0ZE`=$ijv#T9T3Ec}ݨUg4>:-ʃ㭣Җ 0ݠ]o7śg₳ ;DC~o'^=v@޵OˆɰNu㍩h("I3>T 26`T=۫+ڠoSu=$||6wE>lg&{YЪҷpmEl J(y_>l?h˕ Un9Y2__`kic> c~jp@0+Ɓ@GY:=3/MD6>+0s $B5 } ~ 5y1(N~ʈu N eSݼϻ}|iywq?9> >+OMth1ALcLrW";(:%~9H.xҤ0@-9&YInh~ޞίEV/r}c_he[S/ǟi )¤rΜMT>u|mYkڅuW %=C9MW,imA9H7;iYRu鲖T])ѫ^ q罳rޤ>O_U/wU0s<=;ujkgJm҂[fIZƱ<u$[wxҦR5Py&ȚI *`!+wdT$GT^}0{{2EPXdfV*ƸVEPO-#fkukk̀E䤲&B#;|3Z3Z,ʄQuch$<5I4qoگ&uȩɘffݿNoVJ5GMm//7=0c |ܤ)%- m%TGZ:wlL j_5ûUa?Q5s5#  ZncI^_,'MI ͏23z,z8&`IKR )Pa~PBNRē"Ɔ|pfڻ@m`? ɾ1]'G a M7( 0PO) h;]n Ior!`n{;ucGIˎ_hGX(9!Ȳ%{Պ3 >-s_ uP*^d]#`'X7T;(*X#,@f*` 0?ThU} 2~Ac))JyA84%.BZHld ,|O9RByM)̯=1T/  (mnRt]sPY?81_W7mfe߂괸Q%4cU6 )dBXyA`sVg~CڻCc~nGOuf;J"QS`;@3$HՌ LD @'{@ iMR\G~AXt&),l5iyYKCãiyM`zX(Dחn5`ף+O o=Cv|w׾kYęAH*m;/%_M9D{=ic=|5#0YWI-wz^ Kgj?usĴ@3p8M}3)v64=@Fh`J#Ja'_62)ݻ(6 =- / ߋN'7{˂Sf1)G`eUzć66ysZy  d dXP8BEFB1ٓC!I)C"2u;!V8eǚY͑N!6H16(^f$o;<&;  VҫL\;0_uI{mte WL (ZyS"lw@L}g,msqA7D:=6<6f{YTB7g\miF~YimLC<2V%n΃{>^H@,t (t~eW~oXqӤ3R&G?7qloZܔ1#cQ{ZNaui܈LqqmٺN4qd2ֿiNCb @sD'k\Np2ǽRu e8.cH:3j7v]Mrڡke;e$ 633ul+ޠK%t:c{P4( q8^^]%| U {?f8ږ;q!͖,n{1{Y 2+W$vte+n><T@<;a΢qBgօ$.zWU"zn{:;t3c +{g<;]%rx/_3Bt/_/;⽿-J>"{ߔ+gJ^.{nJjWNkfR^99*^ >L +ڸIד~뽻y{5lf>jܟwmC5@O~W[B4z}?Gl&)\Q8l; To/,ޤ4buѪjKYkA IgfKqN?OSXl6P`Jx"nI,Zw^f{H>~d G rf@ay#- '9 Cr,WP`f"j87WHµ?"\jolcv>.n™8.8|٥Dg#LZ1eav=ps߇H|m7P=d*IJÉ~4+q)1CM#-j} .;.ōc5QԱX 512FRZtxOj~+^m>Qdl#G͢H4.>{ psmNkaUUt*=!B̉-("IF4 W Zc2O7 K M1A1R񛊧V.]F"ѢźAwl|c^o|~C\zz5֐]6XI \}K I?2rM,ƩZڙ"+a^v%'_sB |?̻9S`% BM"-+;%)Au[bOP!̒>S=QIٶ#(,vĉݯj'0&:ޝc:x[b/iҠ: H4E:owGCA @Mg(>Bkib1U^@$;ڞOs?J@&z7ϽzBtS8SXQaPS#qcltмޛaf~[HX`{HMTS7ֶ(i9@J^}>0)ޝv\?C&8 &6Vn髺/|;_G}-[e|xM| F=vO`FN$ǟpNJ+;JiMcN,#w: 亇L.!LLj:?J,e1u NXgdi?Em4dD6[&{ uU(C (r9aO5hs_+?U1-u4,,9_:un3Ixr67q{/'flhM$uX:_/':MU׏d.]z_}[G~6jU/e{0tqRG§LZVGN6ۢ%5"Ԏn !DuvM+|"8 ;mP^ʕ(!;Xpgjdg16b_rz>5:ۦ, ~y!It%f?9y_!l4S+dQR JD³kU1w}jXk?M˘FpBu!K]I< o $ÃJqpj wp&GrAOuiM$hWh&8[76/vKqˆWM0s'ka Ćݹ"!*^#.+mIRvJɷؽ| z)>8Jĥ+pZ=:05$t =rf봽hpvq8;ʔ#&@>?IJNW@Ey$[8)ӹm]g)tP:5lqUȝVeJ?RxqX>|3l ސllXݕT ,Ե OJX{Cʟ0|pe%\ځgA;8kV^kԠSTkb&DK7ܞvkwv_(Ye@%|BЌ!P*vtɔOTF1zh_"3 FWfmwe드 1.OڒIewa$U ]}BWskC0c,/A5_"KVӔs¥M9(++:"[,ti^eʿ|& ^=KszvO ,0)t>o2dZUk\vH L:& ˍg?3Q547h aGX~oȀ~D1M˦Á ^=ѭ(|Y kOggS@ o>o/97:98>g)06wU`Ru 8?SIN05 #feMjgE +'.Vڗ?gp8<+"9&cB"ިF(=ݑ2̏?}OȱAצRDTd8?Xy)qnp^8n![sEYM&_.Gi]K28M)|Kd-ׁ_`бZԨNW$5% }"l{TMӔ Tֳ`?YJv&s4Q+ b6h-ql`*S#pef֔'ԧY6pb V;>-fŗndgrS[ejd%&,::`]%]Z"_:/; 1~ybډEj,7oR;Dx95IX'@ڤ5 3N >E7=ʴ;= ˉ;Z0q69E∉`DџbH`?1gLb`X-R/Q]}gTv ܒ@|g -d)lV..8"+\|Ү+SL{_i*xe#}$M}num֩Ċ+ |M;<'b^)@KF¨06L"$ݥ'o^NcL,LAB{WcҴ+fOՏP{'MOTv ljR)G SB$(*Y}M`m.T]xMJ) P|11v i %J_Kg]J~XO|@s1SHҞLz:RB5MZQPJc0?T@]1d`a@}(Ȉϼt;͹ Wݻ]H c-ީd#@Au6WJWdV_<ˇ#Y^@! 3+3ExU<VhnX)+i{ ޔEq*t1?=} ;gf%9Ga[} l`0LMM҄b g*) M+"wCH'z:$bssE4'56-qfz0Rb}_vD`k.e#hÀvlUgIe׃w! T{viHr"_1D@`iB}#;NkMV BYAb%n0pzB"n`AN͝bRm4V0axV,FgPEEɱ6$0/8?u>j31o@}*Sݸjlʏ'ֆ,85L}Z&:kG 2e a7z/NͯwP7$a{VfIȽt/yɮº[|GT%:ɔYӖ,6|sdOyNJ sКP\tSLjk4;U׍ꇪ=0Û}:\Iv&VV4"}h#lE02_zCkRTt\f8Db&^qtmԚ+OEf\l]XZm]R鈚b袬y eu0|Aަ G.iNYL4:[Q Z |FJΛ7ƠaБL>lu,Y9I{X쬈j8}c},󅴹߅TD!?`Z oLP@4Vñ\c~ӺU俑!`;7-JȭQkL?d>~b<I;n} UާG]ܖtQʝAiZ%|#HgAXUԦ@}A:Uec<]d%p2 w{8OK ΐAblpt>c| c6 "@4Ƚq"n9b_E4ZdI Iټ솹IkW)~*ݯeL{11^nT$c c5K`(*I f8$.AL-SXV@;e f Xy* X CZߴZ QJLL4A/,3`Įq9)8BR8ƚQeptu]j? .3|G%|(c[Mn:SEi'rNyQvV}~Ź_q(%8T`̱JC<5d8-(L4qdLS:U ?H`BQoWa2#k;JMEzoJO\F 8Z9c.8/lQ[w¾~T>Io{NY=x,ԎD9 C^|ud Uo\|чv# k-ingp=,_n<ò'gFHzVU %}8 P 7Wd 샚I&NVtM_xsFQڿ)U&!"J;31֟HZ[Z޻~ޑUIuؤPc&.{BrѭlU[] 534n ɭ@Dx2*cTRo_JWiKS2@P< 'y8@#'qa׷LsIף_gͫ2ܵ0]$Orb^Iǐ5ctaMkhk=1Qg,2XW8~Rab˃( "j9icڧj *(ן)xb2P?D BA.}dlu,PO@A?7olثq6OC\)"'v&n l̷R +arIVzGmh.yhwpU%;@\eյj Ou&^fI[ F $<,jR (u=]cPJpw pv+ asZT^ !!Գ~<\٠!$&zAGP]k-}V7MNVOfp1i"]y.z,4'Yk x&9ۢ-HD\i0϶D*Wq>_S_-nwɳeW&Ku`1A Cr5V8f!I IH_ 01P> P91kL(RpOb >Y5j-Td稗;qKо*aC"sDvitz/FLIN,+@ƴ$~y5TPÔn!ng8吿62 $3 ڮ/xf |(\~J90w| I'g~^c( &S$9X(X]4\cH!w[>iROEHۨ9S Q|^;yS:= &l֬jYbE`:*^pD窧wA%za@9=<9^/0Lp^V  צTU6;ݵ7m8=~Т49"{k-:CNÉ0\Nkjָ1 .f[rTp@Ur p`bDL0HRHIpNDZV y#vQ&v* Է1]*BJwfTdysnL */)@rUB튗yr=HL'#rJ @Hm-K=EW!;0 W h_6/ 8B]va6-hL3Fj-q2.•rJЅ>/O'%|Ϡ9Pذ'OR xJN! ;;e 'Үo`v夣62fg}-09}eF0_Vl5B_|jOѐlp |40M<%u ZC:vuڍb&xHXWn`uW]mxB^&fہ+W D-A ;fOh1,q'RX޴R#>;|(102ӡ>ܻ#L܎\ XWY~Hn<Ҧ{7iw).Ǚ#|ly@0S) ^`CS:c@DL~E[U{ǒWVˈkr$Ж;V璝#+(;^˲G!b~r#Ř`MxvakQha3Љʠ|ݥ6!n XM*ؾbpӧ^#}ͱkG&^e}Vڙu{祬)&gPdv:9yPg"p)0o0l:W><ٷ,]toö+j,R$fv'[MOӼܸN%2kn)|qs/籨a'k(2, bQ>7^.yt}}hVsl@( *l^d3ݐǽ}Th$7~>1;뢧+{!|aҊ\dc1k vsđ3LuZˬX]/*9,-{c$l"d@6LuF}>1D/S1$ݾc\;kF>v R1*HbxP|E;Uj@n$R^|c)mLxitTlbS( T+4RStge{߳Ng9I7G9eScvxpsh2r22Rg8<-.|wr2[f=}4F$~=Շrݒ' v~|t>u{)6_aoRPPB‰`ݞn_7R}7\9{7N̪3N8-@iz c[-jaa,zzDb=zb(kV&xB(+jޛ-!D2R Mķi?BUuGeO>O9Js7.PO3XA;=X,m-)bB>Ns_yǣ<ېۼw`$IWƿ-=Gߝy:<25q4+Ҽ? %=϶z eVlFb:c1+!HSilG{R㿳b8;)p 1? a4dlߞ\څF>޶ƚFgv|<%܈}rgJb>fP"iGjA'q~Yv>{t̲@am2r8N^-lp2OˢA䩠^H>I_ʙ[Nfj使5$U^uh#⫒V# je^r賴BbNn ?X-@$f` hWtŪ+};ĵM(%ÇcGLWhU5=#^8w,rҤ۞NiZX6ۑmճtZVJ Gk tՂ(Ob0)]R} i6xCόbt3S9~ wͪvM*M$WWrnu!Z辒OggSt o~.^%|ҽ0 v6:K0ScLjEg^ߛ-^^1pTE>62wq;W%&oZ1{X,PGZρSO]B}S,ʵYȶ4VsT\%sWzs}J 0 `*E%)mV4/?-dH# (5H*jC4{=ʸ@R-B"mVmvoQiL rqY]zـ\n,h/Au֛ NjΪ= 3x+C {ά=CqIN@> #WSLB_8YB4^% yLzS}ɻ20D@HG~_W]{xtԩ=gt+z|Z!-C_2,NlAc_8ϿZa )w"鍶S!r1KM+?AK{)#hW4h^$3/Ü˻L1UΰV074|ѻqqߧ[imb(F&;ŕ#G~5Ϸ5{l#jm$c iۙ^ʵ^NXcPc[^=2I([_]";9 tD{lK׶\+RujX#rŮ΃X~k[@Qframe = 0.040 0.000, 1 0.040, 3 0.120, 2 0.160, 1 0.240, 2 0.280, 4 0.320, 1 0.360, 3 0.400, 7 0.440, 2 0.480, 0 0.680, 1 0.720, 2 0.760, 4 0.800, 5 0.840, 3 0.880, 1 0.920, 0 1.000, -1 OggSv;vorbisDOggSvn>FqvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS=vI,;?=;=;< Bu@ew(M5?2}mO5n O%k酓}jΛ=tl"+^=Çml+㤺0u$!?ry?OBV>'2=}~]+p GgLڎ_ޚir1+NL998ك8<>ڭ~ozA]ͿbgοT=μ?FWN]Z+ A9L!]{1O/Ȳ5wXۮ[B ,_"f )4]TY`.kHjiQn 5VypJ=?S`\ AqYL$&ᅷetJuDb,:.ب̟5:~:~$ ?J/}׿ߝ(`7WvvCH /fd'Wqa:;W+VFE 762lu)L*TKwҔҊ+tn~[93[82Ίz(-pVeY6ZM vV=X;-t$7Vد).. "d?C!or胺 cLY@Sc>b T֞N#p.);O(jK{ Y]N1JQp$ұ*`+ٳ-Н%G3VUXSMl|P LSr3)Pu+JV"kX hhU";`'N0ܫ Uwa@ȟ 3;MUhwY2R+BvC^ؗ).kFjhƑSN^Y o.`dBV dh3^L:IP‹6E^M!pk> x Ў}ӕyG 0k!:)_#}<뼾~vH"+qΙ =#N)Uo6>t?Qw'kȢ֮)J>8jv YG/V8;&;!Wgz6}d̯[#ߩD|~v=..*NS`DI}> %*ނO 4'K'ǹ)@3fe|.F @fxJΓǣJ4$,qzlH r yk5wyI|VK:l@ G(' ɓ^@A\$8zoUED!̶ |}_Np6Lpcw_^q9)Zxh=>AOQW<?xzؿ.B0eՏ$ˣYWKMMS'z`9kWj%N랭{,h_8䰕6@cGhg5CflOJFHˀ=_C!AY[eq1 EŦ<@~GVIc燓y0$vg096$=\Hf%s}qb]:]қGL7 /E0IclpҋPq.%zsw+^*""ۉ Ldːǯ28 uzkD1k]y[xq'pti^Պj+*9if<[ٕ4@K@D?(!EuBiX\ ^'-4ӱMwK ק?qV u;@ P(XHMwT .psul{GlfR%i.-ƻ쨬&-d1IP.~(tpS`.@$x'$ P $if P+LjC7J,xdjtjD "F3QjAbqldJDs@f@CHa@fpsEQty B-,ec#x< ,5IGzϬ9qڦWzDGI :3NE- EbG䝭G[ > Cr:YTgp1K:`_&cP@~:|@quևª@Ёui(܂̻7Z(fH )eP;9|y 7 U_KGR@ poz ELeo_V VYb|X Y uO`5bRh~> $:3V7;(l;>B"j̳Ya1?jn]I/t@c?o Z㇧X]ڔi]Wマ 1~4z4>4A\=['bsc+yEHuB?W'0ȇr5}0%  o`JFӎ^1pX`!>' :):w8@uV)ㅯH(g0~Bi' 5/%DK+kq B QEFɔX!Vx{1EMqc7p>EYŧ2{pn2$dQ@҈a4Z [ |'n v߫fAt=V"Ts-]m%;mDWSOggS}vIl śy'1JLE&0!lЋ\C& ܧs&2@;@؛P/&<"\MK a_#\3@}1(M^J;P%sHقu%(eu;>yM0HtFE:߆<ǀ @7|%GG{?Z-׏~?ZƏ vt#BV`'x t 6L <ɦ QʠUGy Mo%R ?*@j""^<@4ipziEON]BKow}D֘ E=-#^Ęz:܂nrhMaO Gׇ33桑K=edn>"h-~% y؁<6!1~Џ4w,Aʿ$qSoW?U?İ8{tu{jUJ IrGL%m ufӖĩuHauea8WT[3Dh_tx>͹o6!#|,,Vm8Xwh€ZP}4ǗşNo v kzu)B]G=ɡW `㝳8[G V EOGt}^+˥}w%ĿƟkpcL_ceC I Յ2HG'}ݘnq tEa}}븻wԈId8"11M_Ϩ۬V+[Ke4bcF"BՂ"g@_nlܒ )&ʉ,8BKDrYn[ޫA(a_Q, k݇?<ᲂt %6=u-*F4=85&:J)pwv'/beVQͽ]Ӵ>K޿Xxp"Q]/Yٷ{/5F{>;[[F6"bEMw8uVu`|sCy{z#i3a泏S7_pyՍpkT%%K Hgr=OE^.ݿ ,nŒ.Sk^%0JȜde*F cLPg|FdQRZЃt2V8M"ξJ as|"RҚpG%H1^%eM{2 @ӌ%'Ir)Hx͂97۪tEbsGBd5>I]\K`z[hrR , 1ń_iߛ'm#1\Xv+|Zj͵BY QdG眻zqhOOG'~ Qajd3kykH_fX݃t)l+<ϚЛ${,WU(zF~%5Xi,S `Z)b-%J~x`ea:j5|F[=^&Q şxGL{)^r!F;ڞVtQq~$۵q@GLoܶBNv>ѵ:Z2(DxFΒ/#5/?/Kʥx/Etm0!Zvq<3\y< T]6->_78Nv~%y(N99`*Q#J8 "[_\ڧ~>-gx0@>9IvmH}J~=A ɔ ˾\}bi<9KZW;%Zݯ)] m8^Z>ŕf jF&Fq6:أJ>bun%J3#DXYs`f" X @4ǟN=?c;ٺ [칼S^@uĖ\OexCŧVg]G<8i;{-v/ڎ'ٙ!qV "Y]nNAb{E1W. Ϻτ}8H=<ۏ^.Y،1,5To&uN#w& dj͵ǜ*2RV`Sl(E ]Pg ^%NJ6<ҍy$w$ U5V˽=ny|^%>$]$!p76iD=4_&J"mh!pC3ur?">{#^$ -qxẅٯqL+oPvTH- sesVBGjԮ'WEh tlL[fVJpk2ta6cWWoڞ\N0,_4>]C8R^/}-;Nr1'Nh&P/>%~lqA-f)jFTh!$ǎuՅH%)j>^iDįWXsR8k|=}/gb8yM"(c v$""^ DlЪpț/_:NKZא8?9Q?WN*4E;r>ܣjsJ湞h ;T!ďʀūlܑGnrZ'gIwk޼s8O]/< 2l0 &I2/&2u)\\V8@Sb]4W"q, !j?@!@h'.O| Jn\ RèWDb`KV!@A`L&M$\=DY<50Rq>_KS(;]Axi1c7Ew-6'Ip1Npn%@`8 dsL>/"gAunuO [Z-lg@xp;E*ӮD)e [;c!)TqW)@\= mnF :G Ʀ\ M9 $ n;CU\@5T>c3!}xspsux(-؆[pŸ۰0-7yShߦ ^zH ?wB;@lDŽp`D#M 9D=+P3_4F݄x%3TRa{J!EJڪ m 2(/{){uU rLD-o\YK }y[кϺW.3<8M?=4^톿Jk|\ p%~U`_&`< !tU=~@A1JRHvNk _K^oZHQӗo.HR=ד;$I³o:n; YZZO UsK:ut|4N@FW"Nbj~TRD\p90F=4YZmM;kæ ^lxRlBaY{5ޗ9|K7F<3:i#G-LIK2p |KNFp8wٺs^3ꛁ}P\ϏLl+ly>ϭ]s]@U``wX=#I)fبq+8.0melNҤqso ڹ}ozVe6pg}K Wby KdwNg'K-)|۔d϶&:xL&MgqF׏z!<f=!O [NV^o)<6CYS )Cur:b~D'zn[f,#>.TP~tP!Z̥~.!]5ސ leQfhe:ҏ`Y/D=r [O)͎K >%>J2Xv~d*r.2`+;~esW|rcKm_uu9x_ Uu}h_^+}5F^z'tvlM5t4;a&ˏ3咱?^WC; N̄0k]5GL\HC@(۷c2PJA9:u#W}3nW9atSC s6 uv{UyN>cb(9m [ɗg,k7}Ik.Vd? qS[z2+>vdA>q>#U]/Jhb{Wo][;Y&OX}35Rݮ pWQπC|O 4 L>G"&w#(3[Xhl:|.SM4gf&j$`&V=?t)x{(1TwAsuTDP1wáRI<KݜiG g%|ɑmUo;~3 ؐoPoa%x>(2./hiJ7LY}xi&>̌̚4A$a^݂BMA,. YcX98pn/J3v $~/z4VCQO\]F*oHPGㅍb>ՠN,WoK>VSL*֬3C猫4D:\5';A.n'n&_; &o n1: }\7lJAƼO} "ݶSormB~m j}xɑ:ܯq^|_J} frame = 0.040 0.000, 1 0.040, 5 0.080, 1 0.200, 2 0.240, 1 0.320, 3 0.360, 7 0.400, 3 0.440, 1 0.480, 0 0.560, 1 0.600, 3 0.640, 4 0.680, 3 0.760, 1 0.840, 0 1.000, -1 OggS|pNvorbisDOggS|m&CGqvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS8|609=-<<;s b9XN_RN_NNz&3&O_szu~ j<1?P/-{&SE޿Jo}E]]RNX܏qyzGٯ!ݜ Yi7eHSDa765~MvLhoW2 Uw,{y+t0Dj3_фdg[?};rߠK* (087I}2U̹PӸ[քhY+o oĠmAbL׭#i<_T#iɍ]nb$'YۅYwnQfra:އvq~f,T>?IK O5Xn 0ȄtQ`ytB\ߟ4[ԔXtg_֍P$PMzMdq&HN -#[  j$8 y`7.e>  Bv 9^:L`1! ύo6{eyvG9?d9_e vLeI!xS*$Gh|uQICS^[UE[|Pp8@9)Y!/,eu Bވ2!B #'23b%rE -<|sWvVm 01#suqc`&1ފٜf'uZ =7i*76T'뛾[[ّzblek3N^r,sŒABmP3ś'^GfFNz*}сEjpA!C;Ԍ))q6w[A>S}5KSc?bXݘ p{jYSʶ`Bwss%mUy+6slS?74_01UZVRxEVV}J Ԉ DY@#4[l z8 fGS ruijC x)@ϳ\VffHfayV1 $D@wh/NYMf;D0 8GaiS?31?'sew -vak*dq; !?1)a@3dBƛ H5 _XTOom(;uZԀ' )i*Iu6l(༜\w'+xWBjȝ&y}[ 3ɹ<"kyH\c)?܉ B0Ikk0.6&o<ѥ;;Um@M?ƽfg"$~FѪ _d4*ƼSkǼ=Ռw\Mv ?{^DJ>6}LC~ &"1?zl_+ ;K?'x$ͯϮ!(`7lr4n cc|`qIdO6O2u&T٘r[]n(UYd>2Q`,XkQJZk;2mSR) Ws'+ ɒrr,qNr Kko5-[7AytA9Y%nR4pvkmVNct\ߊD'PoȖkIPK>$YZ=tEP-z @:Z+>J\'nT}UTyiC_ǍMN4A ,[G35@z-7 {3:7tBXfOWx 6JGQO.@h@IJ,ء {Zehmӭσ)fο?a'h\Lru*UU5Z~Q15łlM X҄(dݪ| Rù^'ZVT-W d ːP'{nj6.)`kVx&3[_%8=tz^?Kx^Hvz9u5lŃw(I O ;4"z` @UZ>u`qhKx?rҚ~ 8EBO\jNo5J&(oY#ʯ'9ߟoC+br9Nڵҝu,k[ b3s RfUS3oL`<'trXtCѥxGŴK>vZlN}ZQ'A2c ,iPX`@Osbb]%fjÊ|8FcVPPCB5P;Lk|~:,k=-4}h‰$~dtBzk `LEiWD^o {8`wQw:\ӮC~W? 2iP$LڅM|-EO1;^@VUR^LԄg6%qJ~ߴ\{ 0OHx,:%aU E" 1 $I:_0qU6:V|HN?omD3 <=7 m8`rRJQL7ۡ{)Z-~T(dg@'^A#9gdrN@)Q~X o?}a/ HG}^˚H8q\cMBs8[<?a1,P6% w u`80nb%r,#f~꿪A|<._[u&܌Y. Z_)$4f!>-ʫxϧWb`v+=Ncl$utÀ[!IR(%5 [J9q@ݭвg"`Rsˀ<$) ~Rmv. 2oOnf!R5\9`Cr݁lcAX_jW l xpiR˖>- A3ü*"gQ.T׻TZ&z v=+6ipqMP/[ƟikX$5OggS|| +.++*9:< ^e6D*Uڪ)%oA}`7~{HP <7yK WF侒8ι)pV*xne+Z @Yr 0j@C,`_. sye)P+VK@!H Z:&"Pc~R"O6LjoI9 b~/#B;;V\9VIvhtж͛j-{ʉ<Ya1G?pbc3s>풎=?K~Z9K4:QtpHҡ)@ioҏZi'ܫ=U!cSI J\LT&Å=^X,jғ߮Ukw~õiI0QX1dvX( d?'2yQrskV+ :ZS|"E9\lKψ]مh=^p?qS0Qml*In"<>Gt3n APGj*k p,?8% P [Gtxy,iA]ձG7ߵE\jqPvOa'ߨ_x}=-G'uؽ>jk5-{Sk&t?W;m`HHEȂ ?O-F*,Uk*b|ZvCEgKwSƑ95tt -jg ˱WEg!φ h.V}?Bm<)h>0cv+^^i> [tڀsԛuФ6tU y$J4~?CwC;Dh__LBek Z7!?>]DnXML[nkE{l61L}x\*/>  M-0}eGR,nv Fsw 3Zk-F[y^3w?rVV5G9 OOknZur㧡FK !:J)&xoDLtCšzdK4n}WGFQX_\qzLޢpLXQ/:aOCC>RZ \1paDD()(|Uݬ9z?z\y{w9'wuAAq~|gر&ݛb;%NK8J\9; $ @3 JGm wz0RdV1NYTf&mrV})sפmbBZU/hw ^SQ/~ky~IMfL]lިS^6MC]c)mA+.0C zfS+<ӵYBac?M|hlLƻzed(urN `rQnxFƄ ~,BM`>H;QJ=ڭΪ<ξPmJ1rXgKgwUh  S|)%w'U7s0O4@[,eM"eyA{:U._Z ІĐӚbvSـ: i2Nܩ"$!OI|W:T)]pxA+4j'i pzV$թi3Nkiw)W#`,I_$*"8_$W p)z$&k^28{Ɇ7cU[f0He<<<5DJꛯ3qq`Kh&Yϳ*pK`<-_lX Еnn)(OY{HCrgD?q!eE͢O{)8f!]2Mi Ek8yp]YKxա@E~ h!I=fJ= <0#KZJXc~*0Xگ"'۠1T s6;G $9%)W#ZpUQ .{a)pTȕV0wx_ z_ܼk19wFjM)`ٞT^/ 6>j9![9Nq68<^F!<aEJyGƜTT+YiÁz2پV Mi.f"Yv YN5!-wiYJ5{)487'DLdPNQ@'mt?Q)#)_¬3(P䉂Lgڵj&sS}_W-`"b^Jd6< S74u%R'.Ko.-ISz!Ku uH; 7xTC%ߔEX+?:U&x~ZSh]OJS 7& J=7w!Ftviŕ,0*r%i~9KyW%O'^nbXnā* 1 Y/|oQi+oZ)OʂI&L]Oߊ̖Go_oIz*wUlSyH"K] v>{M)EY[AZK3a@e!s@ᬆau]-CJrPn=bl镡\DGDرK\m/r1k"I] FӇIEC!هe kie#~W%yOs;SgxdXh[sUPxSNQ6:52Q) .IvBibRx;Ͽ-R{MZ '|OeoKz?HdO^`@ӏSmޛ}4;`&15@/BIH4ŇT4QAalx6=wa3'PҎҗK&z{b/mCGL7SVY~_9N,>^%y:yK%^5? Tm>@헀PSi#)@ʏ#܃hiGdLGxyyc~.φ;:~ X`n&%SPe RD09u=i])K}>V7"3^=yL&܄̗&Q5yMmښ)`ƴkUsߟS "|ַMZL&r9}-"|T" [YzPRq`&v/7gq8J7sJx4bש|9Z ܟrr"c1t j[J,|C.ճ$AyR8 Z2TpF M<лZy{ZjXH'3=Yz_*L7ijvWE{ݓ\fOt"F@/Ycls\ϰaDQ(?lg%ttҿYb\TpYU.}Ld|c\Ijӈ*C(ɨ3sPz2N$.(ב }C.陮E.dmr@KH@ !X) _|sihiߋS[iډVԨMtqj09ue[(bAX60Ox[w"Xv˕{TaqKg*zǔ|z:ñz@G irXَrETjFӒOgyi:GQ [T;#ZTdZ<,r*tA78g );>y4KϠ>s9Pm74&$Q Snp4R}^eitKTh8u둪ٜ $=!dg"K^/ì[ӿڣd < _VUdaU0M1s4Y#tLZ+5-CvPj;[Rlݳ^*bGqy5mNQQ/ ac1 ^%~9?pÒmd b ㅷ$5ϗr 'Vu/XƻJ<4Ԩ"4<|Ĝ̬ Ԧ={t13 LWw&klu3Nj,h9.i|Ot7)Qi~/: <}pq. 3RI|qk'?9P&\;ߝKi[ :6%f9N<eӌy=dHby*mmO>p7Zi^  ݳ7wj킜6J+c`{kA#q,|gxNj}u:k;Э#$M- Z @C8opZ&kѨLN钳+W%-'“ j~y] na~>U1nARD_S(CxiN7nBL|@Tn$hM< 7l-lsn=W>pRYd6 >a \tsyW~Rv\Ϋ6mXn I/o7]iA36~fӥyfob[3Vw+Lk}#!|_e 6SZ(~|MJ}YTt9r<:|eS8~ iwзo{X$ ` lU^7i圖^O97Xwgι@SQg2η}P ~4q#XStkq{KJ4^}|NSS" qlq^լɽZcw4J4R>q`0,ԅ>|U0?t#2q' !:!a" y r9:s>|s' ~isZt`%`!IP YW. ևOo=ݼ8l=H8鐲rY ڛo.ڂc!iVz-.1vbsl裛Mg\m C _qx6 . oc0=eM E<8r[,faF&%ӓGiհ(Ȑ1,wA\VB^U |tۛrK{ @),DFU&j_Rpa'@ 7j+: =b>B#@A@+b[:"~Q(цB,7XHq.>=$p4 -@s9&w=g '1]DRrX;Ha"?dzݭh|rF y)f}p:Jٟ:~%޴iY-"{Z#ӁKdeIV1mq7ɜ52u y4@W"RM okY^fkX$ehNI\j|^r%y\Ƕ\2~ D@CskP'ڮᎀMgĉ(l`rr2hЯHt e3Ke:> j|tos~"r|=$~_xNzmevQ(~% +;pcŁN`4R%)%Oxvi_zx A]F X8:Nl+{L`\ {u\{+հW\si> 豿|$&oi;<@g=at5yB @fʜb(z:LMT5 @gb~LWVj&&WP'Aڱcp۔\=~%/mdY]Z#TUb|Qehn:M@.>pF9b4gCkq Q0wG= z~ {Rga`:!3iZLr4MO'۹O@ffe!xq?=qv΂~K) mJ3 +¸\L=3 y~;frame = 0.040 0.000, 0 0.080, 1 0.120, 2 0.160, 3 0.200, 4 0.240, 2 0.280, 1 0.360, 2 0.400, 7 0.440, 6 0.520, 3 0.560, 2 0.600, 0 0.720, -1 OggSdvorbisDOggSdɫqvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS=d\Y++-;8 +:;8:8{x-/'^ B w7u y W^HC.Z,>\ݞ(.zWz}8lty,ϐZbh6YڼJ%.8;̓Vz`̾Ӊ-n}O IRplH݃~#)]^Pt,Z@K/#odz/Sy 2~RD25t WȐ^UKoh!7 j%!1&m__ L\˨n^%sϟ[: 0DJ&jL`Bz]zv{q^cF?eml)1~ے:35Grn&{1}.x._7ϳ6uH) .w3dAѱP`]AqY 4`rT"{V#Cw/X~ QRv1E4vR1Ҋ!>D96QV7@3y|e`tGNpzzHxƲۄGYv C ƚmھN㲍 B;6<d ?{Qz`F5Y{hɔ1 t'gsgY05Q!5^)9bTP4;y'K#M>'׀棻P~꧋QA]2E+|1Xlݻ\jA'_>>xs)9W$57ҳңwUd?qXgۑV]Ϧ"=DŲf &+wjWTÃeEil>c"RYwh] Z7oMϭj`2pU X/VW'@)E,)^HClpߺ^tmhE{LEkY٨ݧ$yt{ٖ_>@@jk_*lzbwL;6s:=.M\|PjBz?1FQoo!3:QNoDzP V@L#S/L4.j`G6U ]0>Eqxޘ .@\ cO`+ >tE54 60 $UZcy"н q' 5@rry@B_,~x^NdA pz(0Sp,CzoJ`@Risk)&^(co3~*j?/:yкV-tQ򴬁=cO^%"0}䱿uYIGvx*<..:\(Ѹ"UEJ %!lZOg,5CT8()',pDԖQjvd`˿]j$(LD@$4^0[Yn93Q]ΧҐ֩9rːQƈx- "0!H^ yyl#ԼQcqj\+^D ;O D瓯(p#X$ `ybӹ@!FcH )^{e%I#og&0M@:ϯZ'P'p%W?&S` ~B:33Sb laݻj R F*?\Xt5 Iq'o~tEh30+&j`Ӥ h}ux @ס/EW6@~*jÈ}N `*8MnZpM2\ƚJk%y+U.0YGV:#T| >= lf~ĖLP5+,@1|ZqeTWܴۆ.($@ 1|LpEE D`mF C^`ϷzBKҹc H)?C;HG-ir h.6\*IPwt8ۉkpb+Kx=>6 OgʑPNId O p h=" ` Ed@{1Zص6(v^ HɾQ) dvD "mV6Pҿq7wRT'! o 07o:^@~(]]~ ' bCkyKд32e MrFs8:\Is7 6Is+JJT,ph TWu`01!@Qt~0&bDǃ0?#W.O;"@9l.~\@)+"*]_l86ۼ@?d֠Af(皏MyiS{ƭ-vΒϝ'ۗ3Wsf` X-d<[+];aY:+n7VΥa *$n&rɔ]jZJ~H~^Jn뜱5vڲq,OZuKUQؓ2rS}M&42gptSA}ڧl_e,-o,^{M\ LI5iFeIt^ܘ@\(,ԧzCqzQ$&$>4K`M"+Kch.6ե`W24nnoe/yxgot< V֭;BHL>v6W T?q$]5朿2pMo&</ ߷>hRZ\M$黤aG@Q %o2c|ާ> ܸzl6 o.5l傼ڥyIoұ{ n%R?NthG[iXL ~?Imt_h,h_ao>nx¾ʀpUQZIoujMd w)oW-]`>$ld_ ,b-  P 0)-2LО9vAHZz0]ݸڋF" =i˭( VBXk1|Y}@q ;j(gmN楲eIhZsb2liМ 2YfX' ?[&YHSgq*ki?*ҁm~yvs.YiUrYg 2 +|8@p|݃b갩z~ 'mre˦THǤL,.l"4'+OT=^9@O)pj}Ac naz@@ä ;%@YOL猌W7[AVR|t0| |W+,D` QqS΄*t&D\H,7'CC<_,E"cγ}лI1hwwaN:e߸~K˲QDJVMT4Vc}-w O?ß+{]758ʛ_p51`As&Pv Ѥc-z]·*WUy9c^M()g]0B/ͮ*^N$mV/yJls{cZRPG+L̴wy#һ)&m[ H"^ Dh!@,ZιAa>2p!S "e˄hv*yq羫\Dpǫ~g{vߕUjY ~7 خpG蔣vo>+JH. e/p @^{ξA 2@@ϱbR@M|Vxh M}?_K>}\W2-j̷ S+Xw=FyL.|;;W+rv-c+Mw9\kfc^p2>%IwOBlm4 M95zS)meZ_Œ9 3[t cpxcR%IR 7r5g GW<{({>oL$ۯvѲt.eFf7z-eǛ;KxBR,9aamHM>0ͳI~նlo  S-CyJ:HBà, ɔ""!1JE6wuGEDžwM!cN 1똺V v8&L:9nT\'[D[CzCĮ􁗪6d}zQrac 8ng|]h]kr;5\ך^j?xi'vFfa8z%j>&"S|?|Pv͘]R#J "?RXwhr\]ҡ訐z8~mc WD_iBN>.-OOC{K)V>\ؙ[Xj%kDȍ4$@otaOfzeg!%}oq˹*2q7Esfh7G+YLSYkCFzjhӄg Y[OfS >%vNyk'_,!>3u5I@1|8_?!n޼p뢟usrȪZ?>#ƾdl]U@!k+KoN6{uϊn}5I<i|z󖡒H_?|pA c)%o/5s mOϏk,uu7cЬa?١ ]o)3dRw!~% k{J3]̜ D` w`&N&6IqkoU!Yk]W E<a}B2~$ H0)d- a!U2>&lLSk/GJ{m >Z)[YO̬Ps,든1:$A`9;U -NHmd<2k'@|L-6%N7}5>/k{x9$8InקJwo6q䞬2!eiթER}t 6yed r뎎 K1DŰp3-x<̡15;F1o36-p%Eq/1,%5ZP]LTA? hc@&Y> @pKFuER2`zܺwMsKI|ouH:Mk?.k^ѶP7]h̄ھn{&D3I1'B]:|v0\ _-h@fv}k3LdUvâc0u=ErMh/NV%Lmm]TL,ڠn~1fS;%<^@h{{Ǎ[j;S~i];/HGj:Q4IU 8ꁧ(>peJ4'{jY~X$O˕]MnDvl4}v#N_uyDZ>s>)5%atp'}HX_нzmă!XK :Nʷ^[ aUzn s MLJ"\# vK|U/ _a92bSʂ) }f"hRM sC/v 1;T~,~ 5'c@M&kZtiGM G7e]"M $YYȏ5̄'0o>!)=L#j&簊}MI35̖}tEA1\,`@ |L+oCMve0BZ<#Z?nVEΡؾR8(3w-43Ղ]=.,:~5|OЙހ"M `r.gbbd,z?)V4M4frame = 0.040 0.000, 1 0.040, 2 0.080, 0 0.160, 1 0.200, 3 0.240, 4 0.280, 5 0.360, 7 0.400, 5 0.440, 2 0.520, 1 0.600, 0 0.680, -1 OggSŁvorbisDOggSx|qvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS@8^ 978:7+++)789; oe]_]A@Ŕ_i{zsTik.ZON'N'EV߭9B$l#_ȬvD*_SEMǛ^xw/\Z%ȳwYG$8N(sS>= &6GfQ}U xezDfqtn}}-zY!߉/#1]%j3sD\=F@NiH [:VeȟE'7 4a' z6=Ёx,N 7/ T[l!SBҦ(D @9,Z,/(BQ98 =Uk%U$p[$oGoE @ob6E晕9TN&9W}kjEu okɡ,ƝɄ,0 P0s!E(tuc*ABSa9{E??vIw>{H_fE.W5K}]!jmMy~q7S2 nk?'qJ۰)lo\dEg}CʹTFm]w]' nUV:З LA49M a l"Deĕ> ě|J}֨i =@m<ܕ"T|a)~Zjq7Ĕ#Ό=ݺm۵rx.yQ+խ@*ZހLeĝwRXDT{HXwNf#@WSVwciV\H4ok쓘g}fzxJK?}!7 3Oi7;^rH'5fEp1W|hì ~%OoY|s(MmrO6JsUh.Oeu*n4}?V9ua A]i 0&p6~'7Ýh}Fʍg0oьb)KS-[%@IXD#W:m Κ>MMfd:ĥ'ʐiiY 1Ltu Ԕ9i^~RUe$"{ iⓛd.MFsv%,&,\eIcuzT<\Ywz 5  ;.8u[Ţ1%gk|_jӂgv>z|4^Dސf7ix[swaC!VuG;Bwm}fm]6d^!Pҁg^[~]anox"Tڭ*Nޝŷp@6%=~/ (çKX W`TG$ _١Ʊ#^R7Ȕ醊]^0<xd/8  4#UWz95gZ}hhMou~t:M]MʺhW Pg@ ueղH0Y9d)Bhn) gg|vFdt40|ʩ" /v%+L_g<Z̬&d̻o>5=d"k19ӊV%98dz]S{pu-Nh{uyMˊn^͇#C (R^^^GvK>6 ',FpA)Yu )Aޚ5RbNfqJdu{W {ǎZQ7# 4 2 ^ ({眑 z [dwo?RAhptI4{\ڠ0{*C ^KVQ6-5Pt)vi::O4@/̫G? ; ftRa?j㬪3 0@JY=1vW7;ڂD6HK:u8hguÖsjlz/~*, ݯN4\~ZϰLH<RiI 9z͈q§kM(p5N (t5‡@68ѫ/6=;"hԇ/{)UG k| )J6g$~PMLP@t3cr+ҝ9̰߉C:ɧn"ϦL,䵤c~ Ty >,0GvnEw޾$p@BX'24唢@n4bvq f.ȿVcKFCqIfDJqǿF3zjR}Tj?6p|<>!fIX_nlc7yE)k<[=u~ڞ֞WvJdT՜i2M'|1 !Y+ yz:(QArU$?ו`[bNP56ۏ9/ z崴RKpuZ X `ا@S~|eYt6bݠZ3(we~m ]Usf@K_Sȝf>RiQ` WU|+lL݄c^uO %oY!E}7_R[Ȟ| szy-$%I"&2$ǕdR%%3$L$y&TIrm "0-,l$+8@_C pt~Ҁ(HA!}.J$a~ sV 곿+;K@̤5KEq+""f M}2_ !Z' +. IV+Ic zS͓ dw\_4dEfικqNx#N ]C E~LK > tZT ;` @}) u94o*b*k"7}תY{#/$vW4WtɓGZDӞ3m"CMQ8c@kj[A /2g-U`:~eZ( ^{|X] 8꤭@a@pR k7(r\@/ j@,?\o["vK?aV^@<<_HvH]ȩV,[|\Hc$&1-/Z2 MET=T|nI Gtd9GQS l8d_|,a0tOI! 'nuݯ|~^rw8;in%yLt6wg ^Kgl}*$=T6PN #V16v-MtIKH@v]3,}JfB$r9ʧnE7 ~IX{;%`$f=ՊEv}[3M@+F ?[]Y&VbԋօԳ:RZr[>zJ&0C< ꣙[BI4u4@ReT]0Sēd]-WyQL̰gW@N.GrˑO7%`z5ރz / /hAhzTd]8/ mz|:L69'k٦5_!)۔Zs7i~}ۏՙ?{jIN2ұNK(}2&-Wm&zt\=Hq0'"pAØ27n=UϰPtvZR(4V&nLz0O 1=0@N D1;mLt7^'KOǟON%zt]4JR$ȯČ=Yەm[w1K#YhW:V$E8y!3t j-`\fV'Í,??}*=)B0ypEc;'{Tq$u>pnMHs\(Xz.]\_qI(0~,_L>`[$X/V=&ͭg6-׭;u. 6p\ID %CJ zvg'~zj_sN J`~{52WR뱢WfJu_UK71Agk.?h|1bOS.G[0쬪=^/Ʊۯ<^FB1xJAvs/gtb{uuGX0%K|CGH,>](#y MoB)Paac*i_=ןvχUXuG˖ l]챊WV ?A'7gxCpuRww>.U,`vOv{ԶC-qs/w4jR=׬V&jvGA&/S7V̢%[1V!LdPB-7t͸׭a:<v|CH\giec|*fJ Lb0dk9'߱着_s0%!\{ٯ-$cĪrw U瓸 \r;@[3[3 +@R?Lය2Q<c1{>ӫ6wCHC>^VSPşqFs_mBY|%ˌo9Y>~.0,ƥiiP̮Gΰ0dL: X>8=+|_dS.!_GP!(Vb Ji|y$DDc @Rol|'7ݝr]-cG<)4 ;F;O̯άݍQ:=ć\x;wgGUaY&KT|#N GsJs皅a#Bv >%%zҎ}z}ЙXtДM@cJ f%)?*_x+Vu~ogz~߶v-lW#/z, _"ߛi;RDnpA0bIq3؉8h;|`WZ&*Sd@SӼNz%'5uyql=ݡnfZVfox>%j떭Jް̱\;-@ӑ@8Td'h08K_<7%rLFjEI+%)c8`_ iSa ϖ_OEYS]pz/$48UbvpU ʺ[ZsrL$=Z/2P,f2'k-L&Y.ǐ6Vkqe \V5X2k3O:~ ~R$qu<pMSgI .=rIK$p(>2h{#q|}4(uu-kPN"9t?+D1ԁ6?ӗ2Mo-`o̾UMhQcup'4]NGP^zEX el,[e0dYP@pӋ~Zk50mR) gک53B^t;X?!mh]Y $8p?2Wi1]cږ1Υ>!v;f_N3̦eLYTh}4wf5E'4ģY{ DM؅'qAӁ55q\Ƕ EBgqы5t:Ws){}mĦeframe = 0.040 0.000, 0 0.040, 1 0.080, 3 0.120, 5 0.160, 4 0.200, 3 0.240, 2 0.280, 4 0.320, 3 0.360, 7 0.400, 4 0.480, 3 0.520, 5 0.560, 1 0.600, 0 0.720, -1 OggS OvorbisDOggS qvorbisXiph.Org libVorbis I 20020717Sony Ogg Vorbis 1.0 FinalDATE=2006-09-25ENGINEER=BIG xcvvorbis)BCV1L(ĀАU 6kZkvZkZk&ZkZkZkZc 4d@(JdRLJ)e Gr9H'(G b9=dkM[MJ)% Y@!RH!RH!b!b)r) 2 L2餣:ꬳ: -B Sm5s(RJ)RJ)1BCV BdA!R)r 2АU ǐIO$-Q=3E4M5mUwuUWuVuVe5mVeUuWuWu]u]u]u]u]uݶm 4d #9)b:d !*&jiyyyyiiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h*@@q$GR$ER$r, Y@R,R4sdhl]\@.!!A,pox N)*ulqtx||$)@DD4s !"#$%&'(@@@ @@OggS= Pk )(,,/;95 Jm<,f}gl~pC 2r)Oh[V ږS҅6[!&2baNOg/cb(.&]l <T./{f`1m7Υ3#lR%׾-IFKnۚP =NIhai[u 5a6.dž*GҚ >4~Ԃ}J`4Ow7`U5_%h&WRj>sIsXPxrR"m;q#[Ͽ?a|]= CˋhYyEToO]UڒQ@"ĵf'!|e>AQW^UyIʄO&7ZYCW J2Ijg%ֱofگS#X卯Җ].5NHibr̐|!+)י|}6ZڈOUhmVfr&z%`p yX",NA|p.]'vf֥k!^EP(oHh{AG)GY bHFH洖$ 4%B0XW<8/tyE4ۖKHs*`x7n+Ǫ !zbv]Z=.)ǫt 4Q22z7d{zp7SfZw8 6va|Q4]#6K>'wG4 RKL9G>IelUWy|7sB"79R3BTXJF·^Grd> qpmL};oVt^ETE[ b>]ٳ&PMVB{R.qZn ƳmDG}}=Yo$|m(#=F=*EX&`u0~Mh$X\ Su6Ec|g$ߝ> 0p,6s G]C|,JQw?>a8Z&&C-dv[`30LLO}cۇJJڐn IR] Q"Da yŚU ZL+[b|즩fƱPڐuvJڊ0emZrjߙ# z Qi/SRWwι29 8^UE`xv nQ(>[l@3#@P t` ,%h3 &@@i>z10_ 2n @MOV>Mgp=<1!}#i]Ȋp.H~[(yg FC. .)"0we(;p#XvY]u Mq,#]i @HtѝCC *a ڒEw)(Ձ4@Ϊא!c)8ȿ{H%C _$^ rr W<;O(:B@DPWF65R؅ $g`+Wր& )M f pÀU䏊&V;9Ol6"”!.&@ y AX/}lSXYIHH0~`[%H @vX|~]*4*qjbB`k2Iǹ*~G aRBì_Zmo EoȦ{ ^(~ARI o7U ؉` ` #'(20^i$С)E2@15TCxP2 /R P֜3*76,/> (Ĥ5'VqX&/NC5  `=(?D4zxXR `h@Ô FNfJ1 %DΡH#P2*(tl8+@_`giXdl^6u}ϱ5|5*U 8waBx4a[py3{(ӵx|rp*hz]|NѥA6Mfkv%(Jh +D.>{P/>`3ppD)6+#p2R XH y6H= Ԗ QgWtXq@` ;1&)?y1OAA@0F>Jtv/ 3>dG ĂPkȻ+}TBt)"Pc#u*1S]x>f&D W9%Qrk}gXW%P 5`oJO'(0UL'0LL 9Ze}=%FV ߨiefv_Scdt6D@bNdr,ǪH,L拙E9t @{0+(wۙ[[-[1 zPl#< F IduXv^>R5 KErX2S: >Uo1v۞KYg8ql`@`† 9 tf@A ogmBJqh:p ) _(kC@lWhrr0dh mVr B\qia1r8"Zîe7;@ ̖d)Q a CZg֣6oO&0s^粔g0jaO k2^EqƐ,* )dփL|d!! ש'ƠcM5Gt#E^ I`x}_P$u]? hG\) Myʠ<:g$h$oYb@XNiW]-@SCJ":o@l\0tu:CM{@j&& SJS/Zha- [xv-;Gl\I`0^XV,Rp3U=M3ao#S3:%gdF`ϐcy|JgHsƴ9yq)):Q>Y>uqWvR5尢"NS/&XTO-okb|<vϊ4ɛT많ȗl^ 8[n^ ϧ& JnuJX8 (I 6]n=ثNMbӭ&p  'DP_$|c E(wȇ^ȼ{tbG+BQDZ ~>ɂUN9P!?{* @k2`y=9E_姧Un}sDlcؙ{n;|zUr|vמ]Vrҝ4ˬpLJԂS= qjT@:=J7W!n1b\cY;~5(kPyz$kI5YMT^^.B-s3Jһ5 !g~4+׾42Nv)yQ2́q-5G4DX 6o%xဋ/>3wzhiPӳsQ9ܻQy$(Hտ>>l lӚ\+t^izMu^|}$G 񏽔=@Kv( rkk^/ڎϏJ8115@ fڦ5\tU)(mAG" \{hFdN[XE̮It>>uoc]O(z<%8#]A'}6acf&>N%iG|#p 3B/Ż5(6}-/ ^_ys=|ACJ}@:Lg%PK,3)ku^j]K`2iŷZXޯ}]4TndD$ZP 8 E=.{^!&fZݰĿ}Oo%tCwjф&yLޡx=p1J6u?o p& ìL=Oe?eixb ^TOy]J*|B5h))(, g4LT: Z3wUf\撚r2X"$ NABܫ]Xp~옾gO֫dv=u1h:ԔL z5a49W*Is{ɺɹ>!ú'̂O)$kkAƃ%d&D?Z/H @W&55ZATj't u{M:# ܆a?}gϨgޱ2kO[Izveg%xn S6Qj>6'c@-{|e:;30)'loUU]ߋ=h6ɕll%$䮫 =v6w-ט/mR?_.Md@Ӌ`2#3(FNSCv uZr1oq JDZۊr΢xSTP = p~< IE@g<.g- guf>jo~OUeVI!zY H@2â ]p㽧O?zTV1sW Iݍ `>_A޷-I/#Q6{ۣNk\h{)c*P5XZ'n=˭gj' Uwb,-nA0Tɹּwdvmgx#y`#XƼ)SFCt G^.|sw܋%&,"L,(MtlƋC9ޱ~tXqʢozWwG OgkzȶAAڲ1yZ|L{ \CͲP N7}J42槴ɠgiKch=qL%%!k#̩PPkY'4e.ַhp:9zr 8OggSā vH7~5O\?G R 1feIL Mw=Sframe = 0.040 0.000, 0 0.040, 2 0.080, 3 0.120, 1 0.240, 3 0.280, 7 0.320, 6 0.360, 5 0.400, 7 0.440, 5 0.480, 3 0.520, 2 0.560, 0 0.680, -1 OggSvorbis>OggSg- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS(eWmy{ƺjnejyv˯ywzrwf0} |W'[*ΟߜU.m/ClųY~깇7ט%B+ry%ԵE݈FrUG s'x0_\z(^dvvaǭζ m { pp+z4ihhˈ'>NZgRT9 tl{l$[y ڟoXGFs;$;f6=>zw orަJ763Ҏ/_Ibw0@=Ewn\?izAV{_CG͵0%Vu $dT8p6 p'Vs,ƞΆ ׆ wͦV9j;[}o}Fdw 漞iZTio9@S];w"$?GV =wxoO95!;`9٦iWmr߅]hS/:ixjʖ$]2uF^d2 %4*Юg|eR'fЍ>z5m;lک^im'Vkv:(<|, gYݖ}aˤogә~c3hW&Y?sɍl_ˢ+^5u`{]w-铆U fSmkr! ZBK:O>yka;M\=Ro~3V26iG$-6Op+ H!ީ)rj/ڷρb lB·4w^윾׳3~ګnLRM9}OK&~Aj%0?Ff?xeƝc nb&2p_ES̘!b'[U--i(ZP`>IpS"跟 >`E4꟝P:C .! 9W囄2Rw^_'nME\9ӿHgvMS\'!e5k ~.; _a\Kx@SAk eQa!b`HӶݠ/BEdP(Z,Nr={P1U4Eʎ|ˊs?ϙ%" R-FQqcn3a' >}h٬(A3"h ӯy7"Nyzy_Qi6<|MgܘیQUX\BJ4MnDN'qE缍YPs˲{byHbKv}yfa٭?yD4)2խYϸl{x[j:-٘WfσdW$( IpT~/OvN!mQ`1?k!h@i:b߽U`d/[q@ZP}oɺaOv,i pÇi%kJsⶊ 8>zrЮ [q>PFyՆD_-(Sb2tb7;2.[[+/Z,5{J$9&ۏ}}^`i3IȠ[A k{kA=-58Fs{=K">"I^jVw:(T;~l/ K:ןsq 1u|v)Cbb!J_o?Cy_Lntj4 o;=Y:hU?I x~ġ_یO~>?:Nzt{>La7YhLZu>{we_M^vVk}«|I5-jMeS}{s[m=@]>yyjmźՅ|be0d$,ZT˽g3<7 F[3gv+ r܌Ytn*9&V&:ה ,~*޷m?54e:CHC-z̫xycϯdzÙ 6)ޜz{^0NᬹH׶Yӕθ`s$eJC:ڧk76}T(>=y:3[FuSS]xu푣Գuk񕿯M1D󉋩۞knz|?jgվ--b}XҐgں_ljYw&_#I`Kz"rXqi}?tp WeOMyo\.Hzq{zq$RRשQk>&h3T1}3zOggS ^- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS. "^x|uW[l~uxldcss۽v [u_-[ wg3Pive=*&0p^urtսOժ$z̝^~ |׉ fo:5Q/m>#O4eYLߗszfI5l%G?mՍ=)?,ܣmnk|gpQuZY=t<5qW +xxgV(o}M-sh8}܌ =van{%[hvn~{}[ۚ?˕\Eq#m|}=s>N}Od3n 8OʵGJVO.̮;68ڗxԒ!g>;o>aMWJC/;PVcѣ߽ŀLH85B[6ּO)7 k0y&t\b 00/vPj20f$0󝌰0j&x$X ˹+)5'KU:Lb-Ɣ@c@9T>Qj=a kqq02&[9颫8 T+>sreƝ{tt~$PTUNb2߃~}ĭ?{oas(rPFgm{tɎ|૏ P!t;sW:(/jɽs?Iu7[Iݕ^SFTk&><4W> W7 ӱUv\zJoKJgpH@;Ol8A`Ckaެ@}pRa,<ԞKNN-SCx![ <9Lgck~VB܆}"S|Pv(ELeMxb?V7fPZ5 gfxroGnO{VBC\v !G}9SF%$nZٻoݽ[{ט|O򑵿<q>">\rY mt=ȸ"xV[Ona:K B=~WZIp=jgKu*sq ~ $ۼ'>=^sԦ[?tY u9'tV_d._=z_H[lvѯͼσi#5W0 _ٱ/|xaswr5 3pk>!`; NJ1bKTi+(C*X&0zQ2g%kllܓSk6n%ڌlv4ײ? i05w` B,Y['T$?>lgĄ6KdMN?ua_љu<듘ZY-sQqֵ7:cЇIӖWRooӄuoi+'^(4N5x:_'l Kx<w:S"?*@YECdZ'kj uց B.0VN?j7LY pZf(/𙧺ުMvoq=9+j[}mn>7A?f4]kƞ _-[3+Q'`L[iyNc נի2bQD(+{سR/K8aFp={3o8:Gmen?o#\(a$HOЅȇnQh>_>6b5KvB)ב@ SdY@D}2R|wa^rė=lH;X6Zsݞ:} D}i+kZ {ĺ=/6Y5`e [ _}2b{h!H 9mӝ}vr:q <*Tt޻}.N'UHu@3LS]=5l9\;ci7#[S0&Wӎ>:K( U-[' wgj:KDi)BTڗ=i2nMj3~JIg~):YmMowk)%f qCVJ61)1f*4eaķ02Fo >/'>o5jz >L> 6F&h No =:29'czw7E>iZM 1<2;D7)b9"ܮOPx NCD:O(Zy}d5*Jw\5菍}fB:W!,@PX@ nQqo(3ax*.?i=5u =Oܺ΢Z*1ARp,Γ߅>Lv)#Z8oۮ4&XA_#R4kSpeF;q"ԥBZmvoQLL >ړ7}@s00 s(FۃmwLxg~is/e%W-3(ZaClr@mpmn@N@¤B'CSyR}^RܿꜦJQ|}s+,W8_7xSt+>ӽ=-^\Y?a!1[Kh>w*r^ `JOc-ͻأ`9v.UhЙ=hY@6#)oɫ+#ESy1s ?@8v|=:$ bM{ž&uɅ,aR\W^V?i? Ȝhy$zZGnՖ[wKIΊsoڲlNP~+eN䶮{[MƤ `%g9WҜ#Iw~ *KgH~hà͓,ֶTcr픠M{eg%M+naTU+fda֡}Z/&?80ZE)]KHʐ{zl]Br 2~?*Έ!3*37')^ǶUQU!h4&z(@p/Ep\%O$1vLmYlZx$yAg7ߞf/]ګ[{nerLVmvt.-^D`75x{I!ܼn f"LݴrsS܍~_73XCdn!t3!֧*&=7ml'>R5 P3_OdkxW)ks43){|gʎrnVSݘgc6喨O4&Xm5{X#6;'5$kuQ%n M`t {X*lBjVb./$wBvn$Z}0Pvb,{h0K.0+E=r_o%x"w?kfY N nu$ m;míBvrftMF3?aM7^e f8k1pzcdʳݹECCΕ?OggS =h- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS- HYdi]vfkswU}qf{unN70ʟK<*x O,SuF?kW~Qށ)@,r)U%C{er8{DPW%MrdyZ@!{{RZrڲp=h^+#*RfVy la_P9_,@ȎU7\|^,׭FHѼޙ bjT&is *I<٩pef_0"(0 t³&H~"f̀ȧZ0 ~oX>8+5 PF/3]o3_D,e.D._|GTwl!UpbkyɮFo>G?E%^di+[?>/wXLm)D|+DK =?q@h8Or)zv[_i#٠HnDbXx2|-' `{'{V]YW#Q;hΐ(k!Z7H8#Ռfr\T25%7y潛ˬ)Q_hQ\ 6%+ܾOjE!6pWʾjNDX@q`_ۥu$c()TFSiW~ @?.,`|eٕ9IHJDD㝫nq~TVjsX%e} Yt>/:ȽS=`S7OWFH)OB*z0xpQ8 A.W w)NaL@ u vmQ-?d h1 n[DU(j|r% tb @gK.nu, yC-XGq# ( 0GavS^kk@{ 1v+J:@έ +1&C٩ɻ݄;q۲-mʕ܀?gE@ٵ÷u wNgo}FK~*0]'A!TK ) Olٹgcj_ *> s6[{WvF>\PuVW `dF6o P6i}e#)g㏎jy~JZ+;R[)%}>w1b&o6ꍰ T~ @[jNN|V&(ɒXdPҧl>nY5P銱6m_^"l 0 td)ȓbY}ۛ$vɴr@X9RP3S)yaj-hO"q?<iʬ?k3<+QJ) e:V#}kJ1ZhN@( zpzjq^?G'ρ|d =HP cebi/E7d^Gٞ1~*ش~)Hψ^K(ϑ/T]S.:$О(Po.!(ͧ@ٺ)Q\C$-oZ2T-2B%T>޲u=ڮjAy`R8h!Hv:;j,(&\aBiՌT2qӣs.@fNTqO.?kbrtlDHr]՛RMɏ؂tϴy6NͤDim|Fq}+foH HBAy( g"36kq叶XoɆ2HwD2U0u!I+.b;(u7GqM M5J rʕ A3zI$X"Q 5Kӝ >^:Zvѿ[X`iH$rZ{oVzqg]PHۛzۊ>#I nRe4v/0$bqiW#@IH8IQn8o 7clh\;*q]oגUW}wrrDI֭]uVѶVh6$99=}?j&-dw+=a)55̈́ww$ |k5ФJ7b . gDn(0J![}RZ!'̔?:1Uũ8Գ2ȜsJ@9Ydho~K uJysMs<6 ~T ]+ *&:`+&(;$KE+ҍ!^+t |]k!,L](% 0bO!GAiBu"@ՄX>Md|N YlF(zK=z6q0" źL଒[ < 6HfW y8-ج@(!• X*D$ZGMaNsz[)^&T 7C X)x@*&8Z7j`TqYU4~J\1gqZ[r@s:p {X×;cй<<As0kb;AT4@?~!t2X9[YO6EhMXIکK{AO ܽZ˝_7 \V sElT5h|X6{윘 Wa9f/lRᜭ'v%7fo|Y?8%]OgܬnyIR9ntkJ53(Oͮu]F<DOͮ<ӊЁ8i}sJjuށ@nt{Nlj2S;W_E{+,M1zLixuݰmnm3}v1,/:(ʤK475\e܇;y9Ɓb+q`ޤr*/UꝪU{ fSg;NXW|2#?ϻ泂4 玢K-ͲͿc20\gW鍇iC]=o?kibyf= 1 -W7 Ľ[dNJ8ht{ UR3|m,__z~\=t3g3}k4t{x9y@&{w߾qeąrtN,mZ8%&6"ˍv'xxI]s2eЧVòPs6틖I]T5t_?6Ʊ] KJɲ5OuODGLڳnS;"A=2E5^EƗvt0n*Yoj~o50yuunF`넴0(b6uS?$ZVeUn,-oOއL0춊]0δ< o[/~u";77yy8n9E zܤ4]7𗧇 6KgZo.?Tn٬uZ-1~F]jT^"Ͻ=ݤ])2}De4nUZZC,Loֺb,iR\/%F/,~hDF*9OM_yL5Ғl$p߱rJ^4ͭZZ"hN.NGR\PpAkԳ FE'[9B}Ls駟!rt $Q yZ|cԞ>\&Vframe = 0.040 0.000, 2 0.040, 5 0.080, 6 0.120, 7 0.160, 5 0.200, 1 0.240, 2 0.280, 0 0.320, 1 0.360, 3 0.400, 1 0.440, 0 0.680, -1 OggS{ ~vorbis>OggS{ 5[- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS){ lCF|wx|{ĪX{{u~zoƤqnqU$U2 咘[Oś;I~gK.^C>n񝓝|Ša~HJ~qm|2)uw/dJΏKbyTgQkhutĀ=b;t)NTW}^ouG7nH;$/TS_ ;PJf7FG]c:#=OVj?CņEƶ\ p"ťМ9~zCf֙Itu= &kI[}-htͫ:"2~'øJ1=^{l֠7e߂Wܫ;CjSX)S]ylU(mGbb8ٍvFVobw{B*ƞ"^sV2OR$l8$pjX4y5 [t)p>q::R31zU(QŰcZj(~n_HBi&MS=9-@|Op{H̓ZFܣ+پ NH'_z㉾վRD%Y_瑇R4a4h͵t#7ߛGwel{S3y jݮ8nF^[uu6EOkvn5OnYb8;h:?+MN he|"ygnM~మX=ML^]m‹5lݡw[ܬ=6әm]7KrUzƵ~ѬZ9_~_6GSzEjwNu|3}~vȯ%ǍoFb?3e6kxml{ڶS\i,BK 2zɸ[:fiof00<^ytY}6Ț_a%}Zb|0ev,!@?ʵhX.ru77ujZ\!F$+{^E=sz)%5쒆|{R^W>.(U1۱l6fƸL6E?VeznHV X.g]4]H]ٙ05߬}9R5mUnJ5(X14V8Xߤ?OڃeL'Ir&! ַLX\U_Di{gۚڝ<a^l9+5?[{÷>vUhQ_9%%uW΋ԿDs۸@bQ"۞MXr5 3"hO=EOJu6?90D'R:fY ]x0Y+OȝŸM/o]bSZ-1kd [xy'/wX3LVW}O٤d}g7>6r' 7 J^1;eP䓠>!QӚms<IĒގRbfƸ;r{ekz[ܾxL2x F55ӕK/ν?>>Y'h7Xv,mS3fl['UOs#1bpuO7 t+/Ӵăorڻ$ʤ۾iZյn.6qc˹~l orf2lydik8 PfNtx{yz!7* pmK6/_[2sIy]~;v^9sWg?qoupg`zoFN ڗ86|uwf k4DMD>^Gjz?5'K{=tN\STP¬flzںpp\5K.m_lLafTvm,- o%I%lJ"JT%NiI K AE‹=7*P?NR*T"}ut`Q{|s?% eε촮T1`*'@&/3u_DaMl9>bqh_lC=>[-KݟR?qF<>}v=d!Fo`7{՚ZX *.?aHׄ]NT˕'S ofPR^"H~7kQ?'ΐoEX 3~m22|=-qPmcPNkvD3-ꏏݳҧKOrh @Ijr^-jg8DEkw=a޵nL vgaܽgaɽ(47P-yr3t}?[o/@[|+\9ƧCg Q,EZ;6g6ծ L&W4_[8_;WޥҒeܥ~mi\8e$8&Ļf[ofJl<~f S j+3RKYٓA;=O\nc:<6G[|Wt1%]K?psѴU\g&GL/;Zt|kBt}w͇v~٫cd:l.*H3+{JՐS?|]j{'ycV1jYB!vkb.赥._ym;zEjU6/ʑS{e(4?wH K1MpD@ΖKj~nHemũ"4@Q{hx)P l7o!ceGOggS@{ @pR qm;[T\0U]f [@v?>"Z~eh%i޼ۿ{^4_s:K}p=OggSD  - vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS*D [3ejiw|[ynn`inq~'@+6`݃ ^A-f+k֛e5|fI>^^/~6 >G1ӷJ3ҌGs.ŷe4I/xEc!:\  svTɿdN6\H黋y/]DW&꽦/ǹLL/Fnm3ٿ {=HPUB&Fݼ_۹ɏqIZ[q)bLKk,_ھ՜<ܳIi;|㓳t1k;yTm"ߓJ-\t-ZuMF/.Y.mZ٣FYP9WaQ;-}X=9;wGӈȿp}'Dk4`Gzeٲ&C{zhu/#eYf3aynح Z?(6o-9)炽jK?{s1McÇ{a_ K1?hu4E݆7_ȹ;ݸd6Ѧ=<ccڒ!h3 T1LN` hU0oc*͚s32'Q'}tQԥRݮ=zᆅ3Ӣۺ#켮)İ! `ssՀ;bb&I,Ҙ~e6Z݉( S2*WWx#v[[Q .af>j|6S0|:i;K5ewq3u^09n]y{s+nFK⭥[;OY{·즶tAž5Lv3zžFeks 4Yr5F#{u*rf#x=8H{7Jx?9$zlg/whNk&7Y37S[T*WZ&!WGUmХ &G-:߲?kZC[qDOh9c;,]t v0٥#ǻqBbJcl &Qލf ~mfK"~O+(C? tǕH)ԙSVdQٙ&p޿-y[&icm컵bS,݅/mߺF;8;}5*5֥vlj5Pn{(׿?zc;cίz"ɐr_3dxa~q_S*O?C 0w!OW ߻6Ruڷf^xuh%豝>T9>Zӟ <v)D}m{s Ta0 7 W=%"ʏ[_$K–]h_}K1}IcD=ʫXk5ߔ#9o)#7"˺(o/cS/X>iIJl¯cUqҚ Pk/VX1 'iһ։t]}t^{bs"Ab{"i[zqq+˶y;.rgB+;~.e@XKJvFL'ɺA`q>w}hbyO"x4SMUr{އy_]Ujdc$03۝R|/}yxΏsN12IJg>iIqi ޟ{sx.Hxd.yToFhwMQfH É  YSy*dpXwkֱ6c70᎝ynow:  ܗz"*: aByjݫK!U>~\ucz9VIC>6O0b 8SEԖxtuE"tzW.H]/ω$Org|mFEZĠI&ҪBV"'a]\ú9Ƽڲmps=.1]J=3 +\Vp_kg~B,,$m4kJ=Z{"ռރϕf/{8:@ EUiFx°vZnemeu=`T f[x.ðe H=YO; t?-5 Zf?XAv{Ȝt2YRad#8a[n״'3g4C'͙ I 'Dّͣ :uU8Up}>)x{,(瞮ckRQ5npR1剹-$w֖\e {hn?~WvAW*$h5P 4S@Vopޅ1b>_̡Nxi'3 7R4ƦNmAxLFc{<n==Bw_eGٱ&SH_ dTBS\+>YQL=IZPJr+cBlw o[".l.- ɝ4gԛX{i Ace7}?3qT@Zkl.zyd×u(r* |uIs_^H'^_SZ } i+l,Fj.MUtQQRlnbx#XF{*Rpwš{zgӦfz8䠯7w|̸Ӵ_g lz3a?uA (1zG?ާs "ׇE ?_Ł8W =Gd|gԑAq sQ [jF-zo6rN5p7CkCMaBH }Θ?}#XycOi|;kFH$%0q"xdtU_%4iRGb*$5lAۇ39X#h#ju(g ,M=?p9M{Hlm%]4FvY %ZR~Q~qk %D?~v^Pˡ?օ^T6Swf`6: gEP,Pæ0* dy!a%N:pA~:RknZuQAVt s5`&K 0.OD5o]H2 A,AS-Ǿ6 dū@#3SvTU>5+xٯu pJ}Aiͮ1?i|93Pʅd13+__jb[)`Y{=T) ,@ ,TH/;쫺'-oPjg#J&`!ӟI`&A܈'YJ&+0>XEEyqQ(?k*j_.j EgkOgv\&9%%7b\C5%`~hr}^QK64d@HY%1rո(%@l|ߌL qͿH.wnL ;WC?Pa :¨:GKa6vzi5(Ez~蟏h[vwN Y=i_{_q`b̬4RiyiСQ#[P ܾƜP J5 ټL B=zϟ,v,D]&KJC}> [xUQЪFyۊUE^߇&:(bs^*[]AxYl}`] Q/A %9Ht+"[Ng7~Ɖa xw>пq2j_5z᫨0ǯks4-*3mS>A0jjk-\qk1Ǔ92n][Cc,0vNVX*@7@ޛGlZw@Lv<@<|,>ۉ0޶H\xTFϧe (VQJ"3wUu>X=:zc̼LcZ2)SY߅oܮdFW-q# ^xjOMm<=>_5$ ]8L۵޻71Diٟ| Ƃ{:,JY+1}&Jl&2?*4b)]v**>(~ /_-ms_D(. (諒4&`{Ο! 7{mϙ 8ﻓ=F!g{1ipþ 흠j&)9h/z|5%K>>AӼ:A{fK?YrtnI"wNDnث1EY㊲où&A ,2@*Ws{$J`$pַ?џ&̎-չfn$bќ2 ٚlɚ;NqDާ(X(̓_ Κ#kg}iVcr.@oO=,cݾ6T^&q}?7EUZg ]ІKMGwmR/,.+PEKh:-B8%Y?'M)w~ɕKzkWhE 7ac^N2j} Hkӱ?6/c\dIS oAuRxgڏJ$,#*<35SB̊z@)u:w 5y:&~ 8:3nDV';sW~{t}PG?-tٯ˂ GkxY=B89i5D do(~` "||> feme2KFwMUڋCtǣI( 13{rKn=(ınI{tjKg]$Z6g&UƑOSڈe x-ˉv'* Vը/-H);1mo+vm;qۢm oFjP~ǯ֮oW>yrfNl=E#`\> Ֆ|0?O񱿣|VwwOݳ:;D'j4iV cG3ͪYMframe = 0.040 0.000, 0 0.040, 2 0.120, 3 0.160, 6 0.200, 5 0.240, 2 0.280, 1 0.360, 2 0.400, 4 0.440, 5 0.480, 4 0.560, 7 0.600, 6 0.640, 4 0.720, 1 0.800, 0 0.920, -1 OggS V)vorbis>OggS U- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS. }Ctvtrdqhbupy\tZ69οg,iS]?MY~zPYp ]SJy{Vb"#V7Т}+ޭ睽x8o17b2>OSm_+g!,nF6wmq Erwql΁;0]| ^JLu/GP2˧rޠ1|E hޗ['{:*MT_>_)(tZEG4}i,QӅ US'OF*o\οL>@icwL @RnѧLʡ9#+49|+=br_P} I/)j5"n}'{>񛀌H$RLzLđt^bbHL7͓CVPe[|+;xGR7~Y}j ^-L8}ﵐR9|< UUݸW:j>D6&wt{g( 2iwRh`]%V 3v˼ ϷtxozOp;X\mjw/ :E?d oQ$ (P:H]>v]B"mohTU3@UkI`D^t*g?nLm2w5tWbª* y^-18X} ㊼1<7Aȷ[:XK\)ptoVuެ@},+gD߾\>Fa ~ڮ~ . *U`3iuH_y@]tg{M^_P;)[.*寛pL#gfZG6.9G=;' ڥNfX!Sꛨ~1G%p /JLx0~4X.@!EApzaȦ ̃@/G@'wR l> ˆ@5I V(ȝDrV(.mS ʛ17=q#U2UL 0`-'c76`@\,̯^09a~Χ7 @)[V: L\9cmcEk)*HAB nPII. FIpF8~M׉1Zp @1`ȓo%lRY2O ; ^yu7@"A.M,Ko Lz_ ҃FVً_p e,u(|V5gGd\qPCPH Llz(\\30^N`ٕ⌗ `Z/P@U. %Eʿ\dzon'J|y3W!rƚr44Q{s@ln7JvN )V8 N*Sd2B +J38Ul~{2J)R!ˎLqE@Gu)G:vtW%|BxBV $5F;kaPm.3tT^n M&s 65nAa[s[O&֢IUD_kA{ɸܿq2 S..a'] op%}~u7 :.D@r IQUnClA&{@/|}=)8U@cUXYKz..K[ےgS ^xԱR}] wpS k.c[I8G>[wԫx@ZBP5 s;Iz1z`0&:(j8't%Fow12;HXj-?Rο BI Sow)IK 1rݕ'O׿AgZ.~s9q='17cTtDĨjR ~;`K} vz_$a ƞ$N+oOFbny |9I>ahRlW1yuy~\)z |q^rPqEhM+`|1WHӛ 1ou,^n˲6 = `$5 `1J]U)z O'؛|o]d|+֞E@0nEC~<)@G{|۟8Nf*R[^ĘFu#rն/-5rUzv=ߦ%G;Uдqcր`DiuM2 #)&3;{`eON:$_}~p;+9KBۆ֪\G}88AVl;hIE㼖n1mJٍ¼)ߦ'V!Q:LK:V]GDad{UG:AR Nܔ p: .RWI@8tddQ<daf&ЄczjY^ۣKMyOuq7}0+si,uSK$D7KNGG'.P_̰o b9:wam2OΑSn7OorHS/rP7O%×w,J*DAET@]\Y471pYrė*UoMToeQU!l28<|>i_-x?FNh-mǓEחCKASۈD*3U?gwH/F,HRůHWb<>xEa4 \BԾ_vlO`ڮ9}uT&eOG\=mmH-TZӥ|7]1| mjZO~|I5z$ PZP? |؂t`IE _*UR `<~COOggS@  qUZ}?UyBqg˫c{4 Da3IIC9Gx}~"TS\6~$< -5y8~A M(6|Twbp,?:J)U(9PkOѵw,jZHe=ٿ#41s1!^7Z>olAV%<:/hI3iC #tWJoӈEC_RVre-M֝P(%t#ak"uz U{bQ^7z _mffgeml#y^qR~+ԇr9 b8$ Hv;TwBG}R&DiTᶳ?ѯ[y-(%œY=uWHb-Ikc3xOUBim +ҩvQޤL KO<wgU_^s`PY~q9Eks)LQ7;;ߛqC2Yn\: -cDK9 1FTK? ͺ)g屘!\VZ=e9 OggSo H-- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS o Txz{xkrwtYrjmvwuj$CGLty*sc?y =X.,=u||?S1?>{w}q>u.RL ujn\|S<D /ngwŦ.翟-b̫`NGQXƼeyԜ\=bF5?+덩~zzibn7}/enk~n.{k) ,O<'-zo0DI*Zģn$A'OwȚ"meɈ|}}0Z45x] эc:ʂDzjgIc` 0DŪ\/RO'ˏAwhs hvQB z1V_eO#q1~-7zdÓT] x9fjύ'&gx'E/RQfΔI@Fex$yޗ:~O\SP q9U+؛>O뺦:*[]rL{3n` IJ)!qZ'Rze߰2O%$=?&\\t9xRx]hGL~RO:(a͘PPD&*7T]r Bں5EX8n*Ll UuO~@`ӡŐ&&svUr1"ܾdr66+;O%'G f5#vMRc?~8gsXbέv#wQVs08Jl<o\p8W0S\ؘ@|K1{{nJ#|~" "J xF1 ,DlrY% 5R/E^kOng}m;w^ \7*.)_Mw@=.ZJlb{kmznw⽒ nmVn nmv#wmQb[WݐS#jmz fd6u>ɮ7A ',ïn>M?QՉ-HID;Ңn/$";m*|`x{(K?, =iy*_n]ktտ~eF; ܞ]" PНt=ȿOpgQLc6Ws&5 +"Q >{llZo/u6y=UmD8eS'BoUg$6voFOR+5:㓟'O4@b}Kj)ɧ46-y!Nb_8=}!8i4H׹j\{3bjg+AL+ҽaD 8JPLޟ|Lθ VM7t dX :[kwծoI•n|c]-\rݿ;dt WYCdS,M|CҺxv~wڗQ722f:yqu,jn>@º\ZH:ZӚ?IOm[Ct,F7GoŎ;N.1Xl ׏/^ȑUHhiFXj~R20fl̢Gw~)P3@rWܱͧsl1Xem y5!h~yM=e%f⺷T+YqEEU,;'ۙвZ~vXɚ1֖/M[;M72u*h5%*6hoCOF_Pa3dX5DI1RFspw8Y:\t|08sRڱsumIͦ\,nLms֗o'Βڙ)rl*&3̴?szt|{g<}`=<6; ,Hѹ:psNͭ[{z$Ϥ ΫKhN|}] D\@ frame = 0.040 0.000, 0 0.040, 4 0.080, 7 0.160, 0 0.240, 1 0.280, 2 0.320, 3 0.360, 7 0.400, 2 0.440, 1 0.480, -1 OggS$ tvorbis>OggS$ kч- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS $ p{{qiqstOnwuqxo{$2@ {_>ͧ&{t!4nH {> 1EV?5*&TKOl%̐&dI_.oOeCsҾ9r]1`&bX l bMXV[#!LgV}CK0W'B-i::ukby" @~}:[9ex${Q3'Q\F,4 ~^wLts)g8Q) Dgp|wFy}EUp<fE(<٘ojXק7t%F I>w6;}aw].WH?w\o|!: qv='>6`}cKdB6_~? 18? xj S4 (]􏴱0?OđT'WA t_6{AƓQkN:jv$P'"SKKקO=YXo[ y 1"5|6jN| ƿiY؀}&/{]|SVf'Y͏.3S]( &֝V]H<F¹Zk)A)ONb%铉vM;Իz2>\EOqC_ǤePyLP;e}Hc&q7|mIb.6*ـ "ڥBxx1!t^ULb &VZLi{k7$)@ɫ&krϭ 9iC@<> k1n5C DS{Puؐ_h ;:\[&#* K>uE8e48 ͙-v8)3|A~ʛ lu飀T,YϊwE#vzVZGw#e]$xm[KsەһSA|_Z.m;e>&9y~̙mpmVfvg Kjͷdqnwۨ+ .d^#sG0HS ;pFh6|ߛK 7Uʃ^oDScq "]V86wp>YY- "bD2kcZ<5z+eҥi(hoqY=jL-q~Iy/üQK؂xjQ?t +oS׾YB +5fDzHS@ƊJD ٠bX6olAL[>=̼8T8@"ȹϩUޗ"J|ak1R0y~7N냝b^d%%SH!w8 1FC*ckwr!s?hΜ~J*#B"K&LZs4ɦx:NwdOBgEu+j1\ |_3iO4BKoUv ^_vO|E ECإ[yXxG1Vʘ "xj⠓:QiT Aaj>quKA.{Zړ[k(v|q!/,TS]rPu&sa>m˜v-It7mg~}qS۽{jPܥӫ{ohJn*xŊ7Ȝl,{I ǫLJPkQu%B-ziv{7WH^DXf0\IfiB? e4н/ɾτؘ ӭS%3,v6gr\kge5K/f/zO~ίsl\_yK/_uO_5mӧO?>y.N'ObQiO9qZ1Fܯgׯ__I_OggS !80- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS@ 9r+smuʇ~ȫasrRuyxy{zvs4ZREQ;sl%rkm/kF zsi0|m䝻;]V(lƽ'&Ƀ?R G::Ӎm㽷2dHMծ- k0t>h5tmz;Kͨb9o%~h{*߱S`#:o>fћAYxփ+gv&}װk|R\ @Z\3BF&o_1}o}m>(Ny)(J]m> 7ZiG|r3^.,L,.|.ZfmmAUC*JIiHUFxhM0[8Gٜ4Bq|!}$28}(9;faSz Ï465Sr0gy5S85_߾0G(і>?3&nRhF/Q4*XSAۿ<̻oښiAڞy;pssEf'hu~ҳ˿c86juISRbᆟt|3m0}@ʤ^Ag#cwq\:6!N ;,Lr/m>hM59c𩆞f]Yޥ)E wNDix˹]5pT~UT>ط]^(|]7ab#{xeWTz }%Qv1wue?Ltǽ9ѿ,;Ͽɑ m 5j>][G\`C0T.%j$Hclzܐ궵o}u_̶K\suN@CD]?~Vs82݈S-*jcfn ą7uҟ< ࿷ "pvPV?W63PﯛѦ0KO [IM4 lFQb'Jam /ݚ5ijRf8JNzVX;F_Eèɽ;}$@Pڥ?h}3$-͍ۜE:j,.5K 1{p,$jMN<'𻿲?f~*܏NNH% b\n`y:aS;˾uW45IE؏Ok}mYwzjj`4hTL6ۼξm @6P@YǦD_om@>Z3ƎTR˾t6];IEO?ՈFB )66^ ^49Q5}B٬M3^?+Lř9=I L}uKǍl~96=[rGW8ma/$-y_.]4,C5㮯>=v׿ə-Ο.g~ghq#3͚C33;qbult%YGBYw  zh7Lbahŋ'3LkVJD? &v_mgmtoa܃Y4f|>z鳡kP;zԊj9iŏ$|1heof/>y_J)Zvz-}w"M{i™H i}*O޿6/Bw||>4crw;;V$nO@o'|yC?|65u&ra_Iw w8sS]އ/ڥ-zߕ ߩ^'OIsg?+A3,]/s ͍XBu; ̀i]]k8i5ﳯ Ʀf|_Ҥ\~۞"gxm7?g,ӢbvJƠ>V"08iI<ۺYtCWޘm[z}?ʜ2I>}j" unTNN=7WuZeS+{A?%K/t'6=Ojmώ^+ino\g^v;.N!ftۘ[Z )hf&0C[6£^F'?ZcOg;s.Fov'r8ufzʱzbffN0}FNLy\t&Ů/<XQL~2YZ\I֫"]l'CZ"MO.mc^YRO2;30zFܑv[VHjd ƍ[!)w#iR Bbrr1;upNѤI_b[\+1N˥pX'#s5M8YH[4{b.>v{g6hVf_tǷ=ܿy~|˷k)RBxr3 Q:O<5 Ard9I+Ď:N9e- frame = 0.040 0.000, 0 0.040, 1 0.080, 2 0.120, 1 0.160, 3 0.240, 2 0.280, 1 0.360, 2 0.400, 4 0.440, 3 0.480, 6 0.520, 5 0.560, 3 0.600, 4 0.640, 7 0.680, 4 0.720, 2 0.760, 0 0.920, -1 OggSd ̇9tvorbis>OggSd 7- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS.d L_F[azvrsu2=t0G` /Klm> vY9AtߴӽxUzfgԝ'k6͐35c_oLa{oŒnx&?ӊn\1I*c+vݨzX1$韩c-pHs'i_a6O=C>PFyנW7z|.#}ݘyՊs!eqٿ+2IkB{hn$?{6/;JcRb(pMHU`kFLhE* P7Xͳ}~utw,눨=e8JNͽ.ް6΢ϩK'ƹ"[z˱=3P~Q++<tr%ՋUjbkH[-}WSPJ홤)P@*2;?@荫>ݿ\H0 й{-{6[lC@K3uԜp)>%[M=oѦ~;qM?^%!q?.)8< VlMI"4Uw]w@B0Y0Fff0@:$ K,`\'Om Ȼ2yRU@6z/kWж R!jN\.31}ꧧ_yW Xz'vހ9&VzЋ5EZO3@>潤`w L{Xvz @?^nk* gz*UJη nDVbw8}z&:'^:ךen`yT LkP P1*Ӿ/b}NCUO8Y/w7"` 5\گ8WPYsD+Lkguo!7[wmD*'^u}`=2{%8lJgV^ u^Z;>l'@!HP=])ǒ@N=9%k!75KTq sE* Fj7DcϭDh\@ooPڿLyzKʝ\h76K œ >.2yW|{zO({Q|32j>3rPOIwb?-M Xip|䩞>ޞ7;kӊMg70]8-4y"Q gΥu?t"L46]d]{ac*;8e>]儾Ok}:`Բ%~yw>D${#f_h`(i~)1C¤Cb(I /W{)mQ1aH[񍻴O{DV o0rDBzLminҊnIsj/.c[2vM?wA. n<%Aؐͳ1Nv]FG`˅ٺAmzc@Ժ([`昱3iCFP t7Lc P.@ytW^>Qr֬9-W}$蝓V'oz(qAɓuH||wo140܆B<:Ej<uefe,'f}N*@9PAQW]^)q'2uخ(<˗͒,"Mc,T@=9qc4_G5vD6V/^| #7Bi70aYC a ݂^avK$+.{Z(.t=a?w j݃pon~/-B.du^[!E w\QG®U[:gE w^@Gb펶Px'"*XG|yhq~n+Bdϧ__m\fg^)N~` Bwt/ HDzؽ_>"r3$j)"dڛ~$>Q/5{X"a _- QF84S?_N0.2pa'axS(Cp .gWJBv\e 8fL&L@~ "?8 ~el#%_2EwTp~[ >I[^y \" .EFjKeV 5ѬXVp!5( <>)q98cP#qxU_/bdPEm4SWU,>4м$e:(l{^뻞oty/h 0 `GM=RSF J"e}9oA8ppX (9ժ&WڶTAja~KHG.2PA P@_ 7J&@{K~ʛyU-7~ co @ G~)E67*łz)esOL@d,Da$/+Sܲi#%yҗ!apZ-[F<*PX9*N UT( ^zGrٴ;ە0{v,*I j~V8j P$О)T@rY{_E`~W0q]];Q#.a;P:o|Yk*Ց8BoyV#Ƣ~ˤ8>[fDQǭOZ#mf[ꁝvR֞i53Vw̯3}XJӕGWvNѕ&ό6gZJfDZv-me`DWs,o`6 v, ^v, @# X9mټM@}Rl"C(׵ zuv^[dgNvgЭ-.!$XfdK6ZZR}V3=.'p),+M5s"}.ժXq= ^f駭ҭ[CbgsG˓ԣo/"F 6IYb Tbu7.-kH&V+wXx|թmk6wsk= 422⵫:QZkXH;׍~@')y+ܲ]#7)F8~)4]~nD~jA{%^cV>=x5 uux@B}NT7f ](MQ#Ԓm*[94hg)WFc*n7dc +&Sͺa 5; !km_qc|uor/(wbtxhc?)&C(l#G|5& ND=hoU=֝?]!["oݖ][6sg*Fh6ڶ{q[鴊LJzv#/ s䩾_P+a,_uΞ7M gW'WLM-c1n6O>ZEonLQߓ; v3{H[g$}l[fh ;+} )ڧAg ܯ6N-"4*4KHo-jl[j-+-J+{*|k?zU~Xҭ->R˧ĩZ_gs̯#RAυlԤ_.!F7Ho1<ÞPWBi6y55~!.O^yy >GqsCߡL/qr:?_ƉI\3i;&c(9.󯸯)ĈG,筸!5xv%hA'^z `H0z81*P|^y&>zIGb||nͻ"dž,!';Q=K/d bسD?βkKB.,S_gQ /`T5~mframe = 0.040 0.000, 0 0.040, 1 0.160, 3 0.240, 1 0.280, 3 0.320, 5 0.360, 3 0.440, 7 0.480, 4 0.560, 0 0.600, 1 0.640, 3 0.680, 1 0.720, 2 0.760, 1 0.800, 2 0.840, 3 0.880, 4 0.920, 5 0.960, 1 1.040, 0 1.120, -1 OggSIXc.!vorbis>OggSIn- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS+Ijwy_rv{xu\qqp;PBP!wc]KVlNHgnx/n#R2>¹F~i{5K܆\5%kefzyJw uuC? {պPPu:a5Z~2>7=\ޣ_c2ϗ]۽kν#G,oA|Տgv IzW^a` @jo}lV7Ųq#SAa)Cgw/Py t":ru1cl)Kx[U]^{~zPNCOaIСt8-ӻ+2M\cvvRN\5~>*|' R3)pBfvRJqZ 1EB':27╢=x(8~lM51d,*)"N(%^ ~lOO:\ h5'̀o~DB1)1 ?r{@X4ٶ<@|smm@zrG*D$n57-HQ.\ 1Ä`Qx1Ɔr94q ygw7?JxcDPn DZVMwI|V"i~$vSFN#!iU K.=Ҍm± h5V>uh{rXLZ4Xs9'cvqyfz2*!>uJ|-$1 q̯"%³wOANٱl=qEu!<=8XE|We[Tԡ8{ uJHrښf{t]Շ?܁a`@v@'ۮ3V6wQ*#TM?}a%P9T4E粊q( Ͽ @]~i߳Xrd-@{ο٪Hr%IM|;-5T*+h4s&~{u2 \ H)$$Տ 0R1O5 Sڊ, !&@scp'Q$8q~~dRڀIc{fPXVW4GC(wh2m_ѯC;J ے섮[]jÿ̺G rL '@~>W2N`/rۇx\w)@>HG_ȳgy!\6@Duc(*|OC{  K al8ts)_՟FѬvo IzS2umq0=}c ~>9.L.ӂ ƽ֓@sP fYTpt|#)p -n(2_)T8K0 ) $pF|1R:>-ᡵvz_`ފ[-?ɮ,8[dMT1n =w4dVJa"sz9ʭ $*:OSʞi[=[ vWj;5B{ޚ|דש5noJ#]Dշq{8|ҫ:q6 VT>o~L:s/'~=k|{5 M;?7׋<?{Qu.^~5׹yD@׶%TƱ %KTUmu$faGt4h9@wdN&F0\:҆o+Lۗ-f& TʕF*ë#Eʑ5nxEwzOd7Nt⦂4ۆw=qy#N/-wǦ9q+޳5z6Ȟ|靾]xu=tRsU<5,I{== ?>4"1,鼹oY8Pu"OܟվWBN%ˬɜ|r{.?J>{oIɹn=f6SIc".ԛ.\*f~% vƣ0ckTs/w٢^~6}(%L&~p 6!c B7vc{uIԒ;! '^5zoi QǺ ~_̒ ҧe$_PBՙ<+ +3 7c7m-I'G˗(O ^W 1w$&!lj=_j{fR.3eVOyUf :)ڙ"+ {]-N$ "[v^Hyг~M?zrp,5GC"H\۴0)ύce1nW/ n;BܝLaLghNdz۾yQ4ԡoWiPdU{JhS"iuWr>mcIm<9 ܱᛃ:>$Mm^މqʯ:fqVՄfzpD(:CYףjIB,{1wG]r/yciJ`@rS\yphd'PyYW|2ßh> n=D4fz$s4 ? Ё] o "ܓ7-RKv ٹ@Np3c ,fF?=_73Xsk)Lz#1 Zi[%elҷ~Q܌O_Kpt0;y%h|f8n=3پ TOD$B8ɸ$TkoC } Z>ZPJqLNT `^uƗCW`9\F{L׷:a%PyuVڽm)kqWdzo ^~[a]/\D'å".Bȩr؜Nq=.@usקTu$ @QA|p39lI❲Xm ;Ԣ|vSOggS`I^"ٛf%z΅ _:zd++۾ 9- \(@܄J b{ Fw_;-[?@.<-K^"ߒ/)"O%.y:6(*T@Ť8C\8;鶆h$3XQhe+ lt?9): cog@ dCJX.;@Eh_RR-)P_JnZ;k&`@@Ð*{YΞCx_+^e1n{cM"@\GO}[EV%g*2p9vOAz#^¢ gkW@g 05؅ x)kB t qWQ\p@r#cgfFi]~uT}8:%C|W- **> ϧl^a}}t?/n-#EhEޚӾ[|ˏH76V؃#z@8TOt @"W~ PhZ=DgR<sR`z | ԐEs $XpfR@tG}C 3I|m3}U$LߙopG&ʳP>W#e/O`OZ7h`BAENϴG`zwYwE["vfkX'epX ;3vY`-Dl漅,th۫7hP_oUc;g>'9^f>Z-Vk*ny^sx;:~}CC1Ilֱh*'܈Oҵ%M3ZPR(.F|vÉDʴh;̈闢^vc]8~B-D@V/侩zc$#b;c ֈub1jHٸp̕:s=/pu-kqM*pe N"Y \ uՎ Q ŪeYf׻~cǾ{H*˶L~p 腫NK61Ji=Eegݚ^JA>ϱJzLcZ.-ޠ1ɹcu4f~s8J *D?}zi(̓ځ($k35:dKV+֌9{'XJ^~\27]@gPoݖq>Kjۥ)'ӏ5u d-.]5j!NZQǽ"9~J[3pVDO.%~ڹ\،f]5#봿9}pN4Ɣ~Ҝ ^ Tվծn-XϯnѼq@n]_R|sPξ5S44(qI\*tDQЍNݜ`U潺+1M&@#J8v>KiC:5N?|ΤD*/އEiҮ-V͋mCoṡzms1Gډ^5vAдg`& # b^nEՓ_9xS{77OȚk051eYQq"R*>/E[s|噄,Fyk>Uoæ3xgcdGmi?'|xp{OɱcN-_ܨ_1"uBA%(b<Iuj J\ouF-<j= +@cᔉ'x>}$_n% EqYHX#define ReadAndWrite 0 #define ReadAndCreate 1 #define ReadOnly 2 #define ReadOnlyVerified 3 #define true 1 #define false 0 class KEGsRscText { access = ReadAndWrite; type = 0; idc = -1; style = 0; w = 0.1; h = 0.05; font = "TahomaB"; sizeEx = 0.04; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; text = ""; }; class KEGsRscListBox { access = ReadAndWrite; type = 5; style = 0; w = 0.4; h = 0.4; font = "TahomaB"; sizeEx = 0.04; rowHeight = 0; colorText[] = {1, 1, 1, 1}; colorScrollbar[] = {1, 1, 1, 1}; colorSelect[] = {0, 0, 0, 1}; colorSelect2[] = {1, 0.5, 0, 1}; colorSelectBackground[] = {0.6, 0.6, 0.6, 1}; colorSelectBackground2[] = {0.2, 0.2, 0.2, 1}; colorBackground[] = {0, 0, 0, 1}; soundSelect[] = {"", 0.1, 1}; period = 1; }; class KEGsRscActiveText { access = ReadAndWrite; type = 11; style = 2; h = 0.05; w = 0.15; font = "TahomaB"; sizeEx = 0.04; color[] = {1, 1, 1, 1}; colorActive[] = {1, 0.5, 0, 1}; soundEnter[] = {"", 0.1, 1}; soundPush[] = {"", 0.1, 1}; soundClick[] = {"", 0.1, 1}; soundEscape[] = {"", 0.1, 1}; text = ""; default = 0; }; class KEGsRscMapControl { access = ReadAndWrite; type = 101; idc = -1; style = 48; colorBackground[] = {1, 1, 1, 1}; colorText[] = {0, 0, 0, 1}; font = "TahomaB"; sizeEx = 0.04; colorSea[] = {0.56, 0.8, 0.98, 0.5}; colorForest[] = {0.6, 0.8, 0.2, 0.5}; colorRocks[] = {0.5, 0.5, 0.5, 0.5}; colorCountlines[] = {0.65, 0.45, 0.27, 0.5}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1}; colorCountlinesWater[] = {0, 0.53, 1, 0.5}; colorMainCountlinesWater[] = {0, 0.53, 1, 1}; colorForestBorder[] = {0.4, 0.8, 0, 1}; colorRocksBorder[] = {0.5, 0.5, 0.5, 1}; colorPowerLines[] = {0, 0, 0, 1}; colorRailWay[] = {0.8, 0.2, 0.3, 1}; colorNames[] = {0, 0, 0, 1}; colorInactive[] = {1, 1, 1, 0.5}; colorLevels[] = {0, 0, 0, 1}; colorOutside[] = {0, 0, 0, 1}; fontLabel = "TahomaB"; sizeExLabel = 0.04; fontGrid = "TahomaB"; sizeExGrid = 0.04; fontUnits = "TahomaB"; sizeExUnits = 0.04; fontNames = "TahomaB"; sizeExNames = 0.04; fontInfo = "TahomaB"; sizeExInfo = 0.04; fontLevel = "TahomaB"; sizeExLevel = 0.04; text = "#(argb,8,8,3)color(1,1,1,1)"; stickX[] = {0.2, {"Gamma", 1, 1.5}}; stickY[] = {0.2, {"Gamma", 1, 1.5}}; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; showCountourInterval = "true"; maxSatelliteAlpha = 0; alphAFadeStartScale = 0; alphAFadeEndScale = 0; class Task { icon = "\ca\ui\data\map_waypoint_ca.paa"; iconCreated = "#(argb,8,8,3)color(1,1,1,1)"; iconCanceled = "#(argb,8,8,3)color(0,0,1,1)"; iconDone = "#(argb,8,8,3)color(0,0,0,1)"; iconFailed = "#(argb,8,8,3)color(1,0,0,1)"; colorCreated[] = {1,1,1,1}; colorCanceled[] = {1,1,1,1}; colorDone[] = {1,1,1,1}; colorFailed[] = {1,1,1,1}; size = 20; color[] = {0, 0.900000, 0, 1}; importance = "1.2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class CustomMark { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Legend { x = 0; y = 0; w = 0; h = 0; font = "Zeppelin32"; sizeEx = 0.0151; colorBackground[] = {1, 1, 1, 0.3}; color[] = {0, 0, 0, 1}; }; class ActiveMarker { color[] = {0.3, 0.1, 0.9, 1}; size = 50; }; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {1, 1, 1, 1}; size = 14; importance = 1.5 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0, 0.3, 0, 1}; size = 14; importance = 0.2 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {1, 1, 1, 1}; size = 10; importance = 1 * 10 * 0.05; coefMin = 0.25; coefMax = 4; }; class Command { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {1, 1, 1, 1}; size = 16; importance = 0.7 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.75; coefMax = 4; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0, 0, 0, 1}; size = 12; importance = 1 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 3 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 12; importance = 0.5 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1.2 * 16 * 0.05; coefMin = 1; coefMax = 4; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.6 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.9 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.7; coefMax = 4; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; }; class KEGsRscControlsGroup { type = 15; idc = -1; style = 0; x = 0; y = 0; w = 1; h = 1; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; class Controls {}; };// // Spectating Script for Armed Assault // by Kegetys // _player = _this select 0; _killer = _this select 1; _seagull = _this select 2; // If seagull is valid we came from the respawn scene if(typeName _seagull != "string") then { _seagull setpos[-1000, -1000, 1000]; sleep 1.5; titleCut["","BLACK OUT", 1.5]; }; // Globals etc. spectate_events = compile loadfile "spect\specta_events.sqf"; KEGsMouseButtons = [false, false]; KEGsMouseScroll = 0; KEGsMouseCoord = [0.5, 0.5]; KEGsUseNVG = false; KEGsMissileCamActive = false; KEGsUseMissileCam = true; KEGsMarkerNames = false; // True = display marker names and arrows KEGsMarkerType = 1; // 0 = disabled, 1 = names, 2 = types KEGsTags = false; // Particlesource tags KEGsAIfilter = false; // Filter AI units (only players displayed) KEGsClientAddonPresent = false; // Is client-side addon present? KEGsMarkerSize = 1.0; // Full map marker size KEGsMinimapZoom = 0.5; // Minimap zoom KEGsSelect = 0; // Used to change selected target KEGs1stGunner = false; // Gunner view on 1st person camera? KEGsDroppedCamera = false; // Free camera dropped (non-targeted with free motion)? KEGsCamForward = false; KEGsCamBack = false; KEGsCamLeft = false; KEGsCamRight = false; KEGsNeedUpdateLB = false; _mouseDeltaX = 0; _mouseDeltaY = 0; _sdistance = 1; // camera distance _fangle = 0; // Free camera angle _fangleY = 15; _flybydst = 35; // Distance of flyby camera (adjusted based on target speed) _szoom = 0.976; _markers = []; // Map markers showing positions of all units KEGsTagSources = []; // Particle sources for tags _lastTgt = 0; _nameCache = []; // Used to store valid names since name command cannot be trusted _maxDistance = 50; // Maximum distance for camera _maxZoom = 0.05; // Maximum zoom level _minZoom = 2; // Unit sides shown - Show all if sides not set if(format["%1", KEGsShownSides] == "scalar bool array string 0xe0ffffef") then { KEGsShownSides = [west, east, resistance, civilian]; }; deathCam = []; _ehVehicles = []; // Used to keep track of added eventhandlers KEGsAllUnits = []; // Create trigger for retrieving all vehicles _t = createTrigger["EmptyDetector", getpos player]; _t setTriggerType "NONE"; _t setTriggerStatements ["this", "KEGsAllUnits = thislist", ""]; _t setTriggerArea[50000, 50000, 0, false]; _t setTriggerActivation["ANY", "PRESENT", false]; // Wait until trigger assigns the array waitUntil{count KEGsAllUnits > 0}; if(typeName _seagull != "string") then { sleep 1; titleCut ["","BLACK IN", 8]; } else { titleText["","BLACK IN", 0]; }; // Create dialog & assign keyboard handler createDialog "rscSpectate"; _disp = (findDisplay 55001); _disp displaySetEventHandler["KeyDown", "[""KeyDown"",_this] call spectate_events"]; _disp displaySetEventHandler["KeyUp", "[""KeyUp"",_this] call spectate_events"]; // Hide menus by default ["ToggleCameraMenu",0] call spectate_events; ["ToggleTargetMenu",0] call spectate_events; ["ToggleHelp",0] call spectate_events; ["ToggleMap",1] call spectate_events; // IDC's from rsc _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cMap = 55013; _cMapFull = 55014; _cDebug = 55100; _nearest = objNull; // Create cameras _pos = [(getpos player select 0)-1+random 2, (getpos player select 1)-1+random 2, 2]; KEGscam_static = "camera" camCreate _pos; KEGscam_target = "camera" camCreate _pos; // "Dummy" target camera for smooth transitions KEGscam_free = "camera" camCreate _pos; KEGscam_flyby = "camera" camCreate _pos; KEGscam_topdown = "camera" camCreate _pos; KEGscam_1stperson = "camera" camCreate _pos; // Dummy camera KEGscam_missile = "camera" camCreate _pos; // Missile camera KEGscam_fullmap = "camera" camCreate _pos; // Full map view camera _cameras = [KEGscam_free, KEGscam_static, KEGscam_flyby, KEGscam_topdown, KEGscam_1stperson]; _cameraNames = ["Free", "Chase", "Flyby", "Top-down", "1st person"]; _dummy = "helihempty" createVehicleLocal [0,0,0]; // Dummy object for distance command KEGscameras = _cameras; // Hack to allow access from events.sqf // Add cameras to listbox lbClear _cLBCameras; {lbAdd[_cLBCameras, _x]} foreach _cameraNames; // Add separator & toggles _cLbSeparator = lbAdd[_cLBCameras, "---"]; lbSetColor[_cLBCameras, _cLbSeparator, [0.5, 0.5, 0.5, 0.5]]; _cLbMissileCam = lbAdd[_cLBCameras, "Missile camera"]; _cLbToggleNVG = lbAdd[_cLBCameras, "Night vision"]; _cLbToggleTags = lbAdd[_cLBCameras, "Unit tags"]; _cLbToggleAiFilter = lbAdd[_cLBCameras, "Filter AI"]; KEGs_tgtIdx = 0; KEGs_cameraIdx = 0; showcinemaborder false; lbClear _cLBTargets; onMapSingleClick "[""MapClick"",_pos] call spectate_events"; ["EventLogAdd",["Initialize",[1,1,1,1]]] call spectate_events; // Check for client side addon _foo = "KEGsAddon10" createVehicleLocal[-1000,-1000,0]; //_foo = "KEGspect_bar_yellow" createVehicleLocal[-1000,-1000,0]; if(!isNull _foo) then { deletevehicle _foo; KEGsClientAddonPresent = true; }; // Spawn thread to display help reminder after a few seconds [] spawn {sleep(3);if(dialog) then {cutText["\n\n\n\n\nPress F1 for help","PLAIN DOWN", 0.75]}}; _camSelLast = 0; _tgtSelLast = 0; _mouseLastX = 0.5; _mouseLastY = 0.5; _nNoDialog = 0; _lastCheckNewUnits = -100; _lastUpdateMarkers = -100; _lastUpdateMarkerTypes = -100; _lastUpdateTags = -100; _lastAutoUpdateLB = time; KEGsCamPos = [0,0,0]; _cxpos = 0; _cypos = 0; _czpos = 0; _cspeedx = 0; _cspeedy = 0; _tbase = 0.1; _h = 2; // Main loop - Ugly double loop to avoid exit after 10000 iterations while{dialog} do { while{dialog} do { call { // Check for listbox selections if(_camSelLast != lbCurSel _cLBCameras) then { _cs = lbCurSel _cLBCameras; if(_cs == _cLbSeparator) then {_cs = _camSelLast}; // Special for toggling missile camera if(_cs == _cLbMissileCam) then { KEGsUseMissileCam = !KEGsUseMissileCam; _cs = _camSelLast; }; // Special for toggling NVG if(_cs == _cLbToggleNVG) then { KEGsUseNVG = !KEGsUseNVG; _cs = _camSelLast; }; // Special for toggling tags if(_cs == _cLbToggleTags) then { KEGsTags = !KEGsTags; ["ToggleTags", [KEGsTags, (_cameras select KEGs_cameraIdx)]] call spectate_events; _cs = _camSelLast; }; // Special for toggling AI filter if(_cs == _cLbToggleAiFilter) then { KEGsAIfilter = !KEGsAIfilter; _cs = _camSelLast; KEGsNeedUpdateLB = true; // Request listbox update }; if(_cs != _camSelLast) then { // Selected another camera - disable dropped cam KEGsDroppedCamera = false; }; KEGs_cameraIdx = _cs; }; if(lbCurSel _cLBTargets > lbSize _cLBTargets) then { lbSetCurSel[_cLBTargets, lbSize _cLBTargets]; // Selection outside listbox size }; // Update selected target from listbox if(KEGsSelect != 0) then { lbSetCurSel[_cLBTargets, ((lbCurSel _cLBTargets)+KEGsSelect)]; KEGsSelect = 0; }; if(_tgtSelLast != lbCurSel _cLBTargets) then { KEGsDroppedCamera = false; KEGs_tgtIdx = lbValue[_cLBTargets, (lbCurSel _cLBTargets)]; }; // Process mouse movement _mouseDeltaX = _mouseLastX - (KEGsMouseCoord select 0); _mouseDeltaY = _mouseLastY - (KEGsMouseCoord select 1); if(!(KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Right mouse button - Adjust position _fangle = _fangle - (_mouseDeltaX*360); _fangleY=_fangleY + (_mouseDeltaY*180); if(_fangleY > 89) then {_fangleY = 89}; if(_fangleY < -89) then {_fangleY = -89}; }; if((KEGsMouseButtons select 0) and !(KEGsMouseButtons select 1)) then { // Left mouse button - Adjust distance _sdistance = _sdistance - (_mouseDeltaY*10); if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if(KEGsMouseScroll != 0) then { // Mouse scroll wheel - Adjust distance _sdistance = _sdistance - (KEGsMouseScroll*0.11); KEGsMouseScroll = KEGsMouseScroll * 0.75; if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if((KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Both mousebuttons - Adjust zoom _szoom = _szoom - (_mouseDeltaY*3); if(_szoom > _minZoom) then {_szoom = _minZoom}; if(_szoom < _maxZoom) then {_szoom = _maxZoom}; }; // Check for new units every 2 seconds if(time - _lastCheckNewUnits > 2) then { _lastCheckNewUnits = time; _allUnits = []; _allVehicles = []; // Avoid game logics _foo = []; //Next line of code adapted by norrin for revive script {if(side _x != sideLogic && (_x distance getMarkerPos "Boot_Hill") > 700) then {_foo = _foo + [_x]}} foreach KEGsAllUnits; {_allUnits = _allUnits + (crew _x);_allVehicles = _allVehicles + [_x]} foreach _foo; _newUnits = _allUnits - deathCam; _newVehicles = _allVehicles - _ehVehicles; if(count _newVehicles > 0) then { // Add event handlers to new vehicles _ehVehicles = _ehVehicles + _newVehicles; { // Add fired eventhandler for map indication _fh = _x addeventhandler["fired", {["UnitFired",_this] call spectate_events}]; //_kh = _x addeventhandler["killed", {["UnitKilled",_this] call spectate_events}]; _x setVariable["KEGsEHfired", _fh]; //_x setVariable["KEGsEHkilled", _kh]; } foreach _newVehicles; }; if(count _newUnits > 0) then { // Add new units to end of list deathCam = deathCam + _newUnits; // Request listbox update KEGsNeedUpdateLB = true; // Create markers { // Crete marker _m = createMarkerLocal[format["KEGsMarker%1", count _markers], getpos player]; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.4, 0.4]; _markers = _markers + [_m]; // Set marker color if(side _x == west) then {_m setMarkerColorLocal "ColorBlue";}; if(side _x == east) then {_m setMarkerColorLocal "ColorRed";}; if(side _x == resistance) then {_m setMarkerColorLocal "ColorGreen";}; if(side _x == civilian) then {_m setMarkerColorLocal "ColorWhite";}; // Create particle source _s = "#particlesource" createvehiclelocal (getpos _x); KEGsTagSources = KEGsTagSources + [[_x, _s]]; // If tags are on, turn them off and back again to include new units if(KEGsTags) then { ["ToggleTags",[false, (_cameras select KEGs_cameraIdx)]] call spectate_events; ["ToggleTags",[true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; } foreach _newUnits; }; }; // Request listbox update every 4 seconds to update dead units or jip player names if(time - _lastAutoUpdateLB > 4) then { _lastAutoUpdateLB = time; KEGsNeedUpdateLB = true; }; if(KEGsNeedUpdateLB) then { // Clear and re-fill targets listbox lbClear _cLBTargets; for "_idx" from 0 to ((count deathCam)-1) do { _x = deathCam select _idx; _name = ""; if(alive _x) then { // Unit is alive, use name command _name = name _x; _nameCache set[_idx, _name]; } else { // Dead unit, use cached name _name = _nameCache select _idx; }; if((!KEGsAIfilter or isPlayer _x) and ((side _x) in KEGsShownSides)) then { _i = lbAdd[_cLBTargets, _name]; lbSetValue[_cLBTargets, _i, _idx]; // Value used to id unit if(side _x == west) then {lbSetColor[_cLBTargets, _i, [0.8,0.8,1,1]]}; if(side _x == east) then {lbSetColor[_cLBTargets, _i, [1,0.8,0.8,1]]}; if(side _x == resistance) then {lbSetColor[_cLBTargets, _i, [0.8,1,0.8,1]]}; if(side _x == civilian) then {lbSetColor[_cLBTargets, _i, [1,1,1,1]]}; if(not alive _x) then { // Whoops, unit is dead, change color lbSetColor[_cLBTargets, _i, [0.5,0.5,0.5,1]]; }; //if(_x == KEGs_target) then { // Select target // Not a good idea //lbSetCurSel[_cLBTargets, _i]; //}; }; }; KEGsNeedUpdateLB = false; }; // Check limits if(KEGs_tgtIdx >= count deathCam) then {KEGs_tgtIdx = (count deathCam)-1;}; if(KEGs_tgtIdx < 0) then {KEGs_tgtIdx = 0}; if(KEGs_cameraIdx < 0) then {KEGs_cameraIdx = 0}; if(KEGs_cameraIdx >= count _cameras) then {KEGs_cameraIdx = (count _cameras)-1;}; // Select camera, get target if(!KEGsMissileCamActive) then { (_cameras select KEGs_cameraIdx) cameraEffect["internal", "BACK"]; KEGs_target = deathCam select KEGs_tgtIdx; }; lbSetCurSel[_cLBCameras, KEGs_cameraIdx]; if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] != KEGs_tgtIdx) then { // Find listbox element with matching value for "_idx" from 0 to (lbSize _cLBTargets) do { if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] == KEGs_tgtIdx) then { lbSetCurSel[_cLBTargets, _idx]; _found = true; }; }; }; //if(lbCurSel _cLBTargets != KEGs_tgtIdx) then { // lbSetCurSel[_cLBTargets, KEGs_tgtIdx]; // }; camUseNVG KEGsUseNVG; if(ctrlVisible _cMapFull) then { KEGscam_fullmap cameraEffect["internal", "BACK"]; }; //ctrlSetText[_cDebug, format["%1", count _markers]]; // Update tag particlesources if(time - _lastUpdateTags > (1/5)) then { _lastUpdateTags = time; if(KEGsTags) then { ["ToggleTags", [true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; }; // Update markers 10fps _rate = 15; if(count _markers > 100) then {_rate = 7.5}; // Update large number of markers less often if(time - _lastUpdateMarkers > (1/_rate)) then { _lastUpdateMarkers = time; // setMarkerTypeLocal is very slow, call it only once per second _doMarkerTypes = false; if(time - _lastUpdateMarkerTypes > 1) then { _lastUpdateMarkerTypes = time; _doMarkerTypes = true; // Allow update marker types }; if(ctrlVisible _cMapFull) then { // Position camera in the middle of full map, for sound and // smoother marker motion (distant objects appear less smooth) _mapFull = _disp displayctrl _cMapFull; _mappos = _mapFull posScreenToWorld[0.5, 0.5]; KEGscam_fullmap camsettarget _mappos; KEGscam_fullmap camsetrelpos [0, -1, 150]; KEGscam_fullmap camcommit 0; }; _markedVehicles = []; // Keep track of vehicles with markers to avoid multiple markers for one vehicle for "_i" from 0 to ((count _markers)-1) do { _m = _markers select _i; _u = (deathCam select _i); _m setMarkerPosLocal (getpos vehicle _u); if(!((side _u) in KEGsShownSides)) then { // We arent' supposed to show this side unit - hide marker if(_doMarkerTypes) then {_m setMarkerTypeLocal "empty"}; } else { if(KEGsMarkerNames or KEGsMinimapZoom < 0.15) then { // Set full screen map marker types - Also zoomed minimap if(ctrlVisible _cMapFull) then { switch(KEGsMarkerType) do { case 0: { // No text _m setMarkerTextLocal ""; }; case 1: { // Names if(alive (vehicle _u)) then { if(name (vehicle _u) != "Error: no unit") then {_m setMarkerTextLocal name ( _u)}; }; }; case 2: { // Types _m setMarkerTextLocal getText (configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "DisplayName"); }; }; } else { // Minimap with detailed icons but no text _m setMarkerTextLocal ""; }; if(KEGsClientAddonPresent) then { // With client side addon use better icons _type = getText(configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "simulation"); _icon = "Arrow"; switch(_type) do { case "tank": {_icon = "KEGsTank"}; case "car": {_icon = "KEGsCar"}; case "soldier": {_icon = "KEGsMan"}; case "ship": {_icon = "KEGsShip"}; case "airplane": {_icon = "KEGsPlane"}; case "helicopter": {_icon = "KEGsHelicopter"}; case "motorcycle": {_icon = "KEGsMotorcycle"}; case "parachute": {_icon = "KEGsParachute"}; }; if(_doMarkerTypes) then {_m setMarkerTypeLocal _icon}; _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; } else { // No client side addon - basic markers if(_doMarkerTypes) then {_m setMarkerTypeLocal "Arrow"}; if(_u == vehicle _u) then { _m setMarkerSizeLocal[0.33*KEGsMarkerSize, 0.27*KEGsMarkerSize]; } else { _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; }; }; _m setMarkerDirLocal (getdir (vehicle _u)); } else { _m setMarkerTextLocal ""; if(_doMarkerTypes) then {_m setMarkerTypeLocal "Dot"}; _m setMarkerSizeLocal[0.4,0.4]; }; }; if(not alive _u) then { if(KEGsClientAddonPresent) then { // Switch to darker color, cant use side since the unit is already dead if(getMarkerColor _m == "ColorBlue") then {_m setMarkerColorLocal "KEGsDarkBlue"}; if(getMarkerColor _m == "ColorRed") then {_m setMarkerColorLocal "KEGsDarkRed"}; if(getMarkerColor _m == "ColorGreen") then {_m setMarkerColorLocal "KEGsDarkGreen"}; if(getMarkerColor _m == "ColorWhite") then {_m setMarkerColorLocal "KEGsGrey"}; } else { _m setMarkerColorLocal "ColorBlack" }; }; if(vehicle _u in _markedVehicles) then { // This vehicle was already marked, hide marker _m setMarkerTypeLocal "Empty"; } else { _markedVehicles = _markedVehicles + [vehicle _u]; }; }; // Follow target with small map _map = _disp displayctrl _cMap; ctrlMapAnimClear _map; if(KEGsDroppedCamera) then { // Center on dropped camera position _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, [_cxpos, _cypos,0]]; } else { // Center on target _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, getpos KEGs_target]; }; ctrlMapAnimCommit _map; }; // Check if target changed and center main map if(KEGs_tgtIdx != _lastTgt) then { _map = _disp displayctrl _cMapFull; ctrlMapAnimClear _map; _map ctrlMapAnimAdd [0.2, 1.0, getpos (deathcam select KEGs_tgtIdx)]; ctrlMapAnimCommit _map; }; if((_cameras select KEGs_cameraIdx) == KEGscam_1stperson) then { // 1st person view if(KEGs1stGunner) then { (vehicle KEGs_target) switchCamera "GUNNER"; } else { (vehicle KEGs_target) switchCamera "INTERNAL"; }; (vehicle KEGs_target) cameraEffect ["terminate","FRONT"]; }; // Get target properties _dir = getdir vehicle KEGs_target; _bb = boundingBox vehicle KEGs_target; //_h = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _foo = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _l = ((_bb select 1) select 1) - ((_bb select 0) select 1); // Length _w = ((_bb select 1) select 0) - ((_bb select 0) select 0); // Width _hstr = 0.15; _h = (_foo*_hstr)+(_h*(1-_hstr)); // Set UI texts _role = ""; if(vehicle KEGs_target != KEGs_target) then { if(KEGs_target == driver vehicle KEGs_target) then {_role = "(Driver)"}; if(KEGs_target == gunner vehicle KEGs_target) then {_role = "(Gunner)"}; if(KEGs_target == commander vehicle KEGs_target) then {_role = "(Commander)"}; }; _name = "Unknown"; if(alive KEGs_target) then { _name = name KEGs_target; if(_name == "Error: no unit") then {_name = "Unknown"}; }; if(KEGsDroppedCamera and isNull _nearest) then { // Dropped camera mode - no target _name = ""; _role = ""; }; ctrlSetText[_cName, format["%1 %2", _name, _role]]; ctrlSetText[_cCamera, format["Camera: %1", _cameraNames select KEGs_cameraIdx]]; // Set name color to gray if dropped cam _ccName = _disp displayctrl _cName; if(KEGsDroppedCamera) then { _ccName ctrlSetTextColor[0.6, 0.6, 0.6, 1]; } else { _ccName ctrlSetTextColor[1, 1, 1, 1]; }; // Set toggle text color for camera menu if(KEGsUseMissileCam) then {lbSetColor[_cLBCameras, _cLbMissileCam, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbMissileCam, [1,1,1,0.33]]}; if(KEGsUseNVG) then {lbSetColor[_cLBCameras, _cLbToggleNVG, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleNVG, [1,1,1,0.33]]}; if(KEGsTags) then {lbSetColor[_cLBCameras, _cLbToggleTags, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleTags, [1,1,1,0.33]]}; if(KEGsAIfilter) then {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1,1,1,0.33]]}; if(KEGsDroppedCamera) then { // Dropped free camera, moved with WSAD keys if(KEGs_cameraIdx != 0) then { // User changed camera KEGsDroppedCamera = false; }; // Adjust speed from buttons held down _spd = (_sdistance max 1)*20; if(KEGsCamForward) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((_spd*_tbase)*cos _fangle); }; if(KEGsCamBack) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos _fangle); }; if(KEGsCamLeft) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((_spd*_tbase)*cos (_fangle-90)); }; if(KEGsCamRight) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos (_fangle-90)); }; // Move camera _cxpos = _cxpos + (_cspeedx*_tbase); _cypos = _cypos + (_cspeedy*_tbase); _czpos = 0; _h = 2; // Static camera height _l = 2.2; // Slow down _bstr = 5; _cspeedx = _cspeedx * ((1.0-(_tbase*_bstr)) max 0); _cspeedy = _cspeedy * ((1.0-(_tbase*_bstr)) max 0); // Check for nearby targets _dummy setpos[_cxpos, _cypos, 1.5]; _objs = [_cxpos, _cypos, 1.5] nearObjects 5; _nearest = objNull; _dist = 10; { { _d = _dummy distance _x; if(_d < _dist and _x in deathCam and alive _x) then {_nearest = _x;_dist = _d;}; } foreach crew _x; } foreach _objs; if(!isNull _nearest) then {KEGs_tgtIdx = deathCam find _nearest}; } else { // Set targets for all cameras _cxpos = getpos vehicle KEGs_target select 0; _cypos = getpos vehicle KEGs_target select 1; _czpos = getpos vehicle KEGs_target select 2; }; KEGscam_target camSetPos[_cxpos, _cypos, _czpos+(_h*0.7)]; KEGscam_static camSetTarget KEGscam_target; KEGscam_free camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; KEGscam_flyby camSetTarget KEGscam_target; KEGscam_topdown camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; {_x camSetFov _szoom} foreach _cameras; // Static camera, follows unit from behind KEGscam_static camSetRelPos[sin(_dir)*(-(_l*_sdistance)), cos(_dir)*(-(_l*_sdistance)), 0.6*abs _sdistance]; // Free camera, user rotates camera around target _d = (-(_l*(0.3 max _sdistance))); _z = sin(_fangleY)*(_l*(0.3 max _sdistance)); KEGscam_free camSetRelPos[(sin(_fangle)*_d)*cos(_fangleY), (cos(_fangle)*_d)*cos(_fangleY), _z]; KEGscam_free camCommit 0; // Flyby camera, no user control except zoom if(KEGs_target distance KEGscam_flyby > (_flybydst*1.1)) then { _flybydst = 20+(speed vehicle KEGs_target); KEGscam_flyby camSetRelPos[sin(_dir)*_flybydst, cos(_dir)*_flybydst, 1+((random _h)*1.5)]; KEGscam_flyby camCommit 0; KEGscam_target camCommit 0; }; // Top-down camera KEGscam_topdown camSetRelPos[0.0, -0.01, 2+((0 max _sdistance)*15)]; KEGscam_topdown camCommit 0; // Commit static and flyby cameras _comSpeed = 1.0 - ((speed vehicle KEGs_target)/70); if(_comSpeed < 0.0) then {_comSpeed = 0.0;}; if((vehicle KEGs_target) distance KEGscam_static > 650) then {_comSpeed = 0}; // Jump immediately to distant target KEGscam_static camCommit _comSpeed/2; KEGscam_target camCommit _comSpeed/3; KEGscam_flyby camCommit _comSpeed; _mouseLastX = KEGsMouseCoord select 0; _mouseLastY = KEGsMouseCoord select 1; _camSelLast = lbCurSel _cLBCameras; _tgtSelLast = lbCurSel _cLBTargets; _lastTgt = KEGs_tgtIdx; }; // Wait a moment. 150fps ought to be enough for everyone :-) _tt = time; sleep(1/150); _tbase = time-_tt; }}; // Dialog closed with esc key titleText["","BLACK IN", 0.5]; // Destroy cameras, markers, particlesources, etc. {camDestroy _x} foreach _cameras; deletevehicle KEGscam_target; deletevehicle KEGscam_missile; deletevehicle KEGscam_fullmap; {deletemarkerlocal _x} foreach _markers; deletevehicle _t; camUseNVG false; KEGsTags = false; onMapSingleClick ""; {deletevehicle (_x select 1)} foreach KEGsTagSources; KEGsTagSources = []; // Remove eventhandlers TODO: does this work properly? { _fh = _x getVariable "KEGsEHfired"; //_kh = _x getVariable "KEGsEHkilled"; if(typeName _fh == "SCALAR") then {_x removeEventHandler["fired", _fh]}; //if(typeName _kh == "SCALAR") then {_x removeEventHandler["killed", _kh]}; } foreach _ehVehicles; // Create a butterfly for player to fly with _bpos = [(getpos (vehicle KEGs_target) select 0)-5+random 10, (getpos (vehicle KEGs_target) select 1)-5+random 10, 1]; _bird = "ButterFly" createVehicle _bpos; _bird setvelocity[0,0,5]; _bird setpos _bpos; _bird switchCamera "INTERNAL"; _bird cameraEffect["terminate","FRONT"]; _bird camCommand "manual on"; KEGsBird = _bird; onMapSingleClick "KEGsBird setpos [_pos select 0, _pos select 1, 2];KEGsBird setvelocity[0,0,5];"; cutText["\n\n\n\n\nLand on ground to return to spectating\nClick at map to jump to location","PLAIN DOWN", 0.75]; // Wait until landed, delete bird & restart script waitUntil{getpos _bird select 2 < 0.05 and speed _bird < 1}; onMapSingleClick ""; sleep(0.5); titleText["","BLACK OUT", 0.5]; sleep(1); _player switchCamera "INTERNAL"; _player cameraEffect["terminate","FRONT"]; deletevehicle _bird; [_player, _killer, "noWait"] execVM "spect\specta.sqf";comment "for Spectating Script"; comment "Handles events such as keyboard keypresses"; comment "by Kegetys "; _type = _this select 0; _param = _this select 1; _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cBG1 = 55009; _cBG2 = 55010; _cTitle = 55011; _cHelp = 55012; _cMap = 55013; _cMapFull = 55014; _cMapFullBG = 55015; _cEventLog = 50016; _cDebug = 55100; _UI = [_cCamera, _cTarget, _cName, _cLBCameras, _cLBTargets, _cCamerasBG, _cTargetsBG, _cBG1, _cBG2, _cTitle, _cHelp]; switch (_type) do { comment "User clicked map, find nearest unit"; case "MapClick": { _dummy = "helihempty" createVehicleLocal _param; _closest = 250; _id = -1; for "_i" from 0 to ((count deathCam)-1) do { if((side (deathCam select _i)) in KEGsShownSides) then { _d = _dummy distance (deathCam select _i); if(_d < _closest) then {_id = _i;_closest = _d}; }; }; if(_id != -1) then { KEGs_tgtIdx = _id; KEGsDroppedCamera = false; if(ctrlVisible _cMapFull) then { comment "Full map -> Small map"; [] spawn {sleep(0.25);["ToggleMap",0] call spectate_events;["ToggleMap",0] call spectate_events;}; } }; deletevehicle _dummy; }; case "KeyDown": { _key = _param select 1; comment "WSAD keys: camera movement in dropped mode"; switch(_key) do { case 32: { KEGsCamRight = true; }; case 30: { KEGsCamLeft = true; }; case 17: { KEGsCamForward = true; }; case 31: { KEGsCamBack = true; }; }; }; comment "Key up - process keypress"; case "KeyUp": { _key = _param select 1; switch(_key) do { case 32: { comment "D = Next target"; if(!KEGsDroppedCamera) then {KEGsSelect = 1}; KEGsCamRight = false; }; case 30: { comment "A = Previous target"; if(!KEGsDroppedCamera) then {KEGsSelect = -1}; KEGsCamLeft = false; }; case 17: { comment "W = Previous camera"; if(!KEGsDroppedCamera) then {KEGs_cameraIdx = KEGs_cameraIdx - 1}; KEGsCamForward = false; }; case 31: { comment "S = Next camera"; if(!KEGsDroppedCamera) then {KEGs_cameraIdx = KEGs_cameraIdx + 1}; KEGsCamBack = false; }; case 20: { comment "T = Toggle tags"; KEGsTags = !KEGsTags; if(!KEGsTags) then { ["ToggleTags", [false, objNull]] call spectate_events; }; }; case 33: { comment "F = Toggle filter"; KEGsAIfilter = !KEGsAIfilter; KEGsNeedUpdateLB = true; }; case 57: { comment "Space - drop camera or toggle 1stperson/gunner"; if(KEGscameras select KEGs_cameraIdx == KEGscam_1stperson) then { KEGs1stGunner = !KEGs1stGunner; } else { KEGsDroppedCamera = !KEGsDroppedCamera; if(KEGsDroppedCamera) then { KEGs_cameraIdx = 0; }; }; }; comment "Direct camera change with number keys"; case 2: {KEGs_cameraIdx = 0}; case 3: {KEGs_cameraIdx = 1}; case 4: {KEGs_cameraIdx = 2}; case 5: {KEGs_cameraIdx = 3}; case 6: {KEGs_cameraIdx = 4}; comment "Toggle NVG or map text type"; case 49: { if(ctrlVisible _cMapFull) then { KEGsMarkerType = KEGsMarkerType + 1; if(KEGsMarkerType > 2) then {KEGsMarkerType=0;}; } else { KEGsUseNVG = !KEGsUseNVG; }; }; case 50: {["ToggleMap",0] call spectate_events;}; case 15: {["ToggleUI",0] call spectate_events;}; case 59: {["ToggleHelp",0] call spectate_events;}; comment "Numpad + / -"; case 78: {if(KEGsMarkerSize < 1.7) then {KEGsMarkerSize = KEGsMarkerSize * 1.15}}; case 74: {if(KEGsMarkerSize > 0.7) then {KEGsMarkerSize = KEGsMarkerSize * (1/1.15)}}; } }; comment "Mouse events"; case "MouseMoving": { _x = _param select 1; _y = _param select 2; KEGsMouseCoord = [_x, _y]; }; case "MouseButtonDown": { _x = _param select 2; _y = _param select 3; _button = _param select 1; KEGsMouseButtons set[_button, true]; }; case "MouseButtonUp": { _x = _param select 2; _y = _param select 3; _button = _param select 1; KEGsMouseButtons set[_button, false]; }; case "MouseZChanged": { KEGsMouseScroll = KEGsMouseScroll + (_param select 1); }; case "MouseZChangedminimap": { KEGsMinimapZoom = KEGsMinimapZoom + ((_param select 1)*0.066); if(KEGsMinimapZoom > 0.5) then {KEGsMinimapZoom=0.5}; if(KEGsMinimapZoom < 0.05) then {KEGsMinimapZoom=0.05}; }; case "ToggleCameraMenu": { comment "Hide/unhide camera menu"; if(ctrlVisible _cLBCameras) then { ctrlShow[_cLBCameras, false]; ctrlShow[_cCamerasBG, false]; } else { ctrlShow[_cLBCameras, true]; ctrlShow[_cCamerasBG, true]; }; }; case "ToggleTargetMenu": { comment "Hide/unhide targets menu"; if(ctrlVisible _cLBTargets) then { ctrlShow[_cLBTargets, false]; ctrlShow[_cTargetsBG, false]; } else { ctrlShow[_cLBTargets, true]; ctrlShow[_cTargetsBG, true]; }; }; case "ToggleUI": { comment "Hide/unhide UI"; if(ctrlVisible _cName) then { {ctrlShow[_x, false]} foreach _UI; } else { {ctrlShow[_x, true]} foreach _UI; ctrlShow[_cHelp, false]; ctrlShow[_cLBTargets, false]; ctrlShow[_cTargetsBG, false]; ctrlShow[_cLBCameras, false]; ctrlShow[_cCamerasBG, false]; }; }; case "ToggleHelp": { comment "Hide/unhide Help text"; if(ctrlVisible _cHelp) then { ctrlShow[_cHelp, false]; } else { ctrlShow[_cHelp, true]; }; }; case "ToggleMap": { comment "Hide/unhide Map"; if(ctrlVisible _cMap and ctrlVisible _cMapFull) then { comment "Beginning, hide both"; ctrlShow[_cMap, false]; ctrlShow[_cMapFull, false]; ctrlShow[_cMapFullBG, false]; }; if(ctrlVisible _cMap) then { ctrlShow[_cMap, false]; ctrlShow[_cMapFull, true]; ctrlShow[_cMapFullBG, true]; KEGsMarkerNames = true; KEGsSoundVolume = soundVolume; 0.5 fadeSound 0.2; } else { KEGsMarkerNames = false; if(ctrlVisible _cMapFull) then { ctrlShow[_cMapFull, false]; ctrlShow[_cMapFullBG, false]; 0.5 fadeSound KEGsSoundVolume; } else { ctrlShow[_cMap, true]; }; }; }; comment "Toggle particlesource tags"; case "ToggleTags": { if(_param select 0) then { comment "turn on"; _lifeTime = 0.5; _dropPeriod = 0.05; _size = 0.5; _cam = _param select 1; _part = "\ca\data\cl_water.p3d"; if(KEGsClientAddonPresent) then {_part = "\KEGspect\tag.p3d"}; { _u = _x select 0; _s = _x select 1; _size = 1.33 min (((vehicle _u) distance _cam)/100); _color = [1,1,1,1]; if(side _u == east) then {_color = [1,0,0,1]}; if(side _u == west) then {_color = [0,0,1,1]}; if(side _u == resistance) then {_color = [0,1,0,1]}; if(alive _u) then { _colorB = [_color select 0, _color select 1, _color select 2, 0]; _s setParticleParams[_part, "", "billboard", 1, _lifeTime, [0, 0, 2], [0,0,0], 1, 1, 0.784, 0.1, [_size, _size*0.66], [_color, _color, _color, _color, _colorB], [1], 10.0, 0.0, "", "", vehicle _u]; _s setDropInterval _dropPeriod; } else { _s setDropInterval 0; }; } foreach KEGsTagSources; } else { comment "turn off"; { _s = _x select 1; _s setDropInterval 0; } foreach KEGsTagSources; }; }; comment "Add string to event log"; case "EventLogAdd": { _txt = _param select 0; _color = _param select 1; _i = lbAdd[_cEventLog, _txt]; lbSetColor[_cEventLog, _i, _color]; lbSetCurSel[_cEventLog, _i]; }; comment "Killed eventhandler, add to log"; case "UnitKilled": { _killed = _param select 0; _killer = _param select 1; _txt = format["%1 (%2) was killed by %3 (%4) (%5m)", _killed, side _killed, _killer, side _killer, _killed distance _killer]; ["EventLogAdd",[_txt,[1,1,1,1]]] call spectate_events; }; comment "Fired eventhandler, display as marker in map"; comment "Also missile camera is handled here"; case "UnitFired": { if(KEGsTags and KEGsClientAddonPresent) then { comment "Bullet path bar"; _u = _param select 0; _w = _param select 1; _a = _param select 4; _o = (getpos _u) nearestObject _a; _type = getText(configFile >> "CfgAmmo" >> format["%1", typeOf _o] >> "simulation"); if(_type == "shotBullet") then { _bar = "KEGspect_bar_yellow"; if(side _u == west) then {_bar = "KEGspect_bar_red"}; if(side _u == east) then {_bar = "KEGspect_bar_green"}; _bars = []; for "_i" from 0 to 300 step 5 do { _pos = _o modelToWorld[0,_i+2.5,0]; _b = _bar createVehicleLocal _pos; _b setVectorDir(vectorDir _o); _b setVectorUp(vectorUp _o); _bars = _bars + [_b]; }; _bars spawn {sleep 1.5;{deletevehicle _x} foreach _this}; }; }; if(ctrlVisible _cMapFull) then { _u = _param select 0; _w = _param select 1; _a = _param select 4; _o = (getpos _u) nearestObject _a; _len = (speed _o)/15; _dir = getdir _o; comment "Marker for shot effect (stationary circle)"; _m2 = createMarkerLocal[format["KEGsMarkerFired%1", random 10000], getpos _o]; _m2 setMarkerColorLocal "ColorYellow"; _m2 setMarkerSizeLocal[0.45, 0.45]; _m2 setMarkerTypeLocal "Select"; _type = getText(configFile >> "CfgAmmo" >> format["%1", typeOf _o] >> "simulation"); _name = getText(configFile >> "CfgWeapons" >> format["%1", _w] >> "displayName"); comment "Marker for round itself, for bullet display line, everything else a named marker"; if(_type == "shotMissile" OR _type == "shotRocket" OR _type == "shotShell" OR _type == "shotTimeBomb" OR _type == "shotPipeBomb" OR _type == "shotMine" OR _type == "shotSmoke") then { _m = createMarkerLocal[format["KEGsMarkerFired%1", random 10000], [(getpos _o select 0)+(sin _dir)*_len, (getpos _o select 1)+(cos _dir)*_len, 0]]; _m setMarkerTypeLocal "Dot"; _m setMarkerColorLocal "ColorWhite"; _m setMarkerSizeLocal[0.25,0.5]; _m setMarkerTextLocal _name; _m2 spawn {sleep(2);deleteMarkerLocal _this}; [_m, _o] spawn { _m = _this select 0; _o = _this select 1; while{!isNull _o} do { _m setMarkerPosLocal getpos _o; _m setMarkerDirLocal getdir _o; sleep(1/50); }; _m setMarkerColorLocal "ColorBlack"; sleep(3); deleteMarkerLocal _m; }; } else { _m = createMarkerLocal[format["KEGsMarkerFired%1", random 10000], [(getpos _o select 0)+(sin _dir)*_len, (getpos _o select 1)+(cos _dir)*_len, 0]]; _m setMarkerShapeLocal "RECTANGLE"; _m setMarkerSizeLocal[0.25,_len]; _m setMarkerDirLocal (getdir _o); if(KEGsClientAddonPresent) then { _m setMarkerColorLocal "KEGsDarkYellow"; [_m2, _m] spawn {sleep(1.0);(_this select 1) setMarkerColorLocal "KEGsYellowAlpha";sleep(1);deletemarkerLocal (_this select 1);deletemarkerLocal (_this select 0);}; } else { _m setMarkerColorLocal "ColorYellow"; [_m2, _m] spawn {sleep(1.0);(_this select 1) setmarkerbrushLocal "grid";sleep(1);deletemarkerLocal (_this select 1);deletemarkerLocal (_this select 0);}; }; } }; comment "Missile camera"; if(KEGsUseMissileCam and !KEGsDroppedCamera) then { _u = _param select 0; _w = _param select 1; _a = _param select 4; _o = (getpos _u) nearestObject _a; _type = getText(configFile >> "CfgAmmo" >> format["%1", typeOf _o] >> "simulation"); _name = getText(configFile >> "CfgWeapons" >> format["%1", _w] >> "displayName"); if(_u == vehicle KEGs_target and (_type == "shotMissile" or _type == "shotRocket") and !KEGsMissileCamActive) then { KEGsMissileCamActive = true; cutText[_name,"PLAIN DOWN", 0.10]; KEGscam_missile switchCamera "INTERNAL"; KEGscam_missile cameraEffect["internal", "BACK"]; KEGscam_missile camsettarget _o; KEGscam_missile camsetrelpos[0,0,0]; KEGscam_missile camSetFov 0.5; KEGscam_missile camCommit 0; KEGscam_missile camSetFov 1.25; KEGscam_missile camCommit 2; _o spawn { while{!isNull _this and speed _this > 1} do { KEGscam_missile camsettarget _this; KEGscam_missile camsetrelpos[0,-0.1,0.20]; KEGscam_missile camCommit 0; sleep(0.01); }; sleep(3); KEGsMissileCamActive = false; }; } }; }; default { hint "Unknown event"; }; } // // Spectating Script for Armed Assault // by Kegetys // #include "common.hpp" #define BORDERSIZE 0.06 #define BORDERXSIZE 0.015 #define CMENUWIDTH 0.1575 // Camera menu width #define TMENUWIDTH 0.200 // Target menu width #define MENUHEIGHT 0.25 #define MAPWIDTH 0.3 #define MAPHEIGHT 0.28 #define MAPTXTSIZE 0.02 #define ELOGWIDTH 0.900 //#define ELOGHEIGHT 0.1525 #define ELOGHEIGHT 0.0 #define IDC_MAIN 55001 #define IDC_CAMERA 55002 #define IDC_TARGET 55003 #define IDC_NAME 55004 #define IDC_MENUCAM 55005 #define IDC_MENUTGT 55006 #define IDC_MENUCAMB 55007 #define IDC_MENUTGTB 55008 #define IDC_BG1 55009 #define IDC_BG2 55010 #define IDC_TITLE 55011 #define IDC_HELP 55012 #define IDC_MAP 55013 #define IDC_MAPFULL 55014 #define IDC_MAPFULLBG 55015 #define IDC_EVENTLOG 50016 #define IDC_DEBUG 55100 #define COL_ORANGE {1, 0.5, 0, 1} #define COL_GRAY {0.2, 0.2, 0.2, 1} class rscSpectate { idd = IDC_MAIN; movingEnable = false; class controls { // Dummy element for retrieving mouse events class mouseHandler: KEGsRscControlsGroup { onMouseMoving = "[""MouseMoving"",_this] call spectate_events"; onMouseButtonDown = "[""MouseButtonDown"",_this] call spectate_events"; onMouseButtonUp = "[""MouseButtonUp"",_this] call spectate_events"; onMouseZChanged = "[""MouseZChanged"",_this] call spectate_events"; idc = 123; x = 0.0; y = 0.0; w = 1.0; h = 1.0; colorBackground[] = {0.2, 0.0, 0.0, 0.0}; }; // Borders and title text class BackgroundTop: KEGsRscText { idc = IDC_BG1; x = -3.0; y = -1.0; w = 7.0; h = BORDERSIZE+1; colorBackground[] = {0.0, 0.0, 0.0, 1.0}; }; class BackgroundBottom: BackgroundTop { idc = IDC_BG2; y = 1.0-BORDERSIZE; }; class title : BackgroundTop { idc = IDC_TITLE; colorBackground[] = {0.0, 0.0, 0.0, 0.0}; text = "SPECTATING"; style = 2; sizeEx = 0.035; colorText[] = {1.0, 0.0, 0.0, 1.0}; shadow = true; y = 0.0; h = BORDERSIZE; font = "Zeppelin32"; } // Camera menu class menuCameras : KEGsRscText { idc = IDC_MENUCAMB; style = ST_HUD_BACKGROUND; x = BORDERXSIZE; y = BORDERSIZE; w = CMENUWIDTH; h = MENUHEIGHT; text = ; colorBackground[] = {0, 0, 0, 0.7}; }; class menuCamerasLB : KEGsRscListBox { idc = IDC_MENUCAM; x = BORDERXSIZE; y = BORDERSIZE; w = CMENUWIDTH; h = MENUHEIGHT; colorSelect[] = COL_ORANGE; colorSelect2[] = COL_ORANGE; colorSelectBackground[] = COL_GRAY; colorSelectBackground2[] = COL_GRAY; sizeEx = 0.025; } // Targets menu class menuTargets : KEGsRscText { idc = IDC_MENUTGTB; style = ST_HUD_BACKGROUND; x = 1.0-BORDERXSIZE-TMENUWIDTH; y = BORDERSIZE; w = TMENUWIDTH; h = MENUHEIGHT; text = ; colorBackground[] = {0, 0, 0, 0.7}; }; class menuTargetsLB : KEGsRscListBox { idc = IDC_MENUTGT; x = 1.0-BORDERXSIZE-TMENUWIDTH; y = BORDERSIZE; w = TMENUWIDTH; h = MENUHEIGHT; colorSelect[] = COL_ORANGE; colorSelect2[] = COL_ORANGE; colorSelectBackground[] = COL_GRAY; colorSelectBackground2[] = COL_GRAY; colorScrollbar[] = COL_ORANGE; colorText[] = {1, 1, 1, 1}; sizeEx = 0.025; period = 0; } // Top texts class tCamera : KEGsRscActiveText { idc = IDC_CAMERA; x = BORDERXSIZE; y = 0.0; w = 1.0-(2*BORDERXSIZE); h = BORDERSIZE; text = "Camera"; style = 0; sizeEx = 0.025; color[] = {1.0, 1.0, 1.0, 0.9}; shadow = true; font = "Zeppelin32"; onMouseButtonUp = "[""ToggleCameraMenu"",0] call spectate_events"; } class tTarget : tCamera { idc = IDC_TARGET; text = "Target"; style = 1; onMouseButtonUp = "[""ToggleTargetMenu"",0] call spectate_events"; } // Bottom texts class tName : KEGsRscText { idc = IDC_NAME; x = BORDERXSIZE;y= 1.0-BORDERSIZE; w = 1.0-(2*BORDERXSIZE); h = BORDERSIZE; text = "Unknown"; style = 0; sizeEx = 0.030; colorText[] = {1.0, 1.0, 1.0, 0.9}; font = "Zeppelin32"; } // Help text class tHelp : KEGsRscText { type = 13; idc = IDC_HELP; x = BORDERXSIZE*3;y=BORDERSIZE*3; w = 1-(2*BORDERXSIZE*3); h = 1.0-(2*BORDERSIZE*2); text = "Spectating Script v1.01 by Kegetys

Click at the camera/target text at the top to open camera/target menus.
Units on the map can be clicked to target them

Keyboard controls:
A/D - Previous/Next target
W/S - Previous/Next camera
1-5 - Direct camera change
N - 3D view: Toggle night vision on/off
N - Full map: Toggle marker text off/names/types
T - Toggle unit tags on/off
F - Toggle AI filter on/off
Tab - Toggle UI on/off
M - Toggle map on/full/off
Numpad plus/minus - Increase/decrease full map marker size
Space - Drop camera (W,S,A,D keys = movement)
Space - Toggle gunsight (1st person view)
Esc - Butterfly mode

Mouse controls:
Right button - Rotate camera (free camera mode only)
Left button - Move camera
Left and right button - Zoom

Download the client-side addon from
http://www.kegetys.net for enhanced functionality
"; style = 2; sizeEx = 0.025; size = 0.025; colorText[] = {1.0, 1.0, 1.0, 1.0}; color[] = {0.0, 0.0, 0.0, 1.0}; font = "LucidaConsoleB"; class Attributes{ font = "Bitstream"; color = "#ffffff"; align = "left"; shadow = true; }; } // Debug text class tDebug : tCamera { idc = IDC_DEBUG; text = ""; style = 2; x = 0; y = 0; w = 1; h = 1; action =""; } // Map class map : KEGsRscMapControl { idc = IDC_MAP; x = 1.0-MAPWIDTH;y=1.0-MAPHEIGHT; w = MAPWIDTH; h = MAPHEIGHT; colorBackground[] = {0.7, 0.7, 0.7, 0.75}; //sizeEx = 0.02; sizeExLabel = MAPTXTSIZE; sizeExGrid = MAPTXTSIZE; sizeExUnits = MAPTXTSIZE; sizeExNames = MAPTXTSIZE; sizeExInfo = MAPTXTSIZE; sizeExLevel = MAPTXTSIZE; showCountourInterval = "false"; onMouseZChanged = "[""MouseZChangedminimap"",_this] call spectate_events"; class Command { icon = "#(argb,8,8,3)color(1,1,1,1)"; color[] = {0, 0, 0, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class ActiveMarker { color[] = {0.3, 0.1, 0.9, 1}; size = 50; }; } // Fullscreen map class mapFullBG : BackgroundTop { idc = IDC_MAPFULLBG; x = -3;y=-3; w = 9;h=9; colorBackground[] = {0.0, 0.0, 0.0, 1.0}; } class mapFull : map { showCountourInterval = "true"; idc = IDC_MAPFULL; x = 0;y=BORDERSIZE; w = 1;h=1.0-(BORDERSIZE*2); colorBackground[] = {0.85, 0.85, 0.85, 1.0}; } // Fullscreen event log class mapFullEventLog : KEGsRscListBox { idc = IDC_EVENTLOG; x = 0; y = 1-ELOGHEIGHT; w = ELOGWIDTH; h = ELOGHEIGHT; colorText[] = {1, 1, 1, 0}; colorSelect[] = {1, 1, 1, 0}; colorSelect2[] = {1, 1, 1, 0}; colorSelectBackground[] = {1, 1, 1, 0}; colorSelectBackground2[] = {1, 1, 1, 0}; colorBackground[] = {0, 0, 0, 0.5}; colorScrollbar[] = {1, 1, 1, 0}; sizeEx = 0.021; } } }disableSerialization; // // Spectating Script for Armed Assault // by Kegetys // if not(spectat_on) then { spectat_on = true; _player = _this select 0; //_killer = _this select 1; //_seagull = _this select 2; // If seagull is valid we came from the respawn scene // if(typeName _seagull != "string") then { // _seagull setpos[-1000, -1000, 1000]; // sleep 1.5; // titleCut["","BLACK OUT", 1.5]; // }; // Globals etc. spectate_events = compile loadfile "spect\specta_events.sqf"; KEGsMouseButtons = [false, false]; KEGsMouseScroll = 0; KEGsMouseCoord = [0.5, 0.5]; KEGsUseNVG = false; KEGsMissileCamActive = false; KEGsUseMissileCam = true; KEGsMarkerNames = false; // True = display marker names and arrows KEGsMarkerType = 1; // 0 = disabled, 1 = names, 2 = types KEGsTags = false; // Particlesource tags KEGsAIfilter = false; // Filter AI units (only players displayed) KEGsClientAddonPresent = false; // Is client-side addon present? KEGsMarkerSize = 1.0; // Full map marker size KEGsMinimapZoom = 0.5; // Minimap zoom KEGsSelect = 0; // Used to change selected target KEGs1stGunner = false; // Gunner view on 1st person camera? KEGsDroppedCamera = true; // Free camera dropped (non-targeted with free motion)? KEGsCamForward = false; KEGsCamBack = false; KEGsCamLeft = false; KEGsCamRight = false; KEGsNeedUpdateLB = false; _mouseDeltaX = 0; _mouseDeltaY = 0; _sdistance = 1; // camera distance _fangle = 0; // Free camera angle _fangleY = 15; _flybydst = 35; // Distance of flyby camera (adjusted based on target speed) _szoom = 0.976; _markers = []; // Map markers showing positions of all units KEGsTagSources = []; // Particle sources for tags _lastTgt = 0; _nameCache = []; // Used to store valid names since name command cannot be trusted _maxDistance = 50; // Maximum distance for camera _maxZoom = 0.05; // Maximum zoom level _minZoom = 2; // Unit sides shown - Show all if sides not set if(format["%1", KEGsShownSides] == "scalar bool array string 0xe0ffffef") then { KEGsShownSides = [west, east, resistance, civilian]; }; deathCam = []; _ehVehicles = []; // Used to keep track of added eventhandlers KEGsAllUnits = []; // Create trigger for retrieving all vehicles _t = createTrigger["EmptyDetector", getpos player]; _t setTriggerType "NONE"; _t setTriggerStatements ["this", "KEGsAllUnits = thislist", ""]; _t setTriggerArea[50000, 50000, 0, false]; _t setTriggerActivation["ANY", "PRESENT", false]; // Wait until trigger assigns the array waitUntil{count KEGsAllUnits > 0}; if(typeName _seagull != "string") then { sleep 1; titleCut ["","BLACK IN", 8]; } else { titleText["","BLACK IN", 0]; }; // Create dialog & assign keyboard handler createDialog "rscSpectate"; _disp = (findDisplay 55001); _disp displaySetEventHandler["KeyDown", "[""KeyDown"",_this] call spectate_events"]; _disp displaySetEventHandler["KeyUp", "[""KeyUp"",_this] call spectate_events"]; // Hide menus by default ["ToggleCameraMenu",0] call spectate_events; ["ToggleTargetMenu",0] call spectate_events; ["ToggleHelp",0] call spectate_events; ["ToggleMap",1] call spectate_events; // IDC's from rsc _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cMap = 55013; _cMapFull = 55014; _cDebug = 55100; _nearest = objNull; // Create cameras _pos = [(getpos player select 0)-1+random 2, (getpos player select 1)-1+random 2, 2]; KEGscam_static = "camera" camCreate _pos; KEGscam_target = "camera" camCreate _pos; // "Dummy" target camera for smooth transitions KEGscam_free = "camera" camCreate _pos; KEGscam_flyby = "camera" camCreate _pos; KEGscam_topdown = "camera" camCreate _pos; KEGscam_1stperson = "camera" camCreate _pos; // Dummy camera KEGscam_missile = "camera" camCreate _pos; // Missile camera KEGscam_fullmap = "camera" camCreate _pos; // Full map view camera _cameras = [KEGscam_free, KEGscam_static, KEGscam_flyby, KEGscam_topdown, KEGscam_1stperson]; _cameraNames = ["Free", "Chase", "Flyby", "Top-down", "1st person"]; _dummy = "helihempty" createVehicleLocal [0,0,0]; // Dummy object for distance command KEGscameras = _cameras; // Hack to allow access from events.sqf // Add cameras to listbox lbClear _cLBCameras; {lbAdd[_cLBCameras, _x]} foreach _cameraNames; // Add separator & toggles _cLbSeparator = lbAdd[_cLBCameras, "---"]; lbSetColor[_cLBCameras, _cLbSeparator, [0.5, 0.5, 0.5, 0.5]]; _cLbMissileCam = lbAdd[_cLBCameras, "Missile camera"]; _cLbToggleNVG = lbAdd[_cLBCameras, "Night vision"]; _cLbToggleTags = lbAdd[_cLBCameras, "Unit tags"]; _cLbToggleAiFilter = lbAdd[_cLBCameras, "Filter AI"]; KEGs_tgtIdx = 0; KEGs_cameraIdx = 0; showcinemaborder false; lbClear _cLBTargets; onMapSingleClick "[""MapClick"",_pos] call spectate_events"; ["EventLogAdd",["Initialize",[1,1,1,1]]] call spectate_events; // Check for client side addon _foo = "KEGsAddon10" createVehicleLocal[-1000,-1000,0]; //_foo = "KEGspect_bar_yellow" createVehicleLocal[-1000,-1000,0]; if(!isNull _foo) then { deletevehicle _foo; KEGsClientAddonPresent = true; }; // Spawn thread to display help reminder after a few seconds [] spawn {sleep(3);if(dialog) then {cutText["\n\n\n\n\nPress F1 for help","PLAIN DOWN", 0.75]}}; _camSelLast = 0; _tgtSelLast = 0; _mouseLastX = 0.5; _mouseLastY = 0.5; _nNoDialog = 0; _lastCheckNewUnits = -100; _lastUpdateMarkers = -100; _lastUpdateMarkerTypes = -100; _lastUpdateTags = -100; _lastAutoUpdateLB = time; KEGsCamPos = [0,0,0]; _cxpos = 0; _cypos = 0; _czpos = 0; _cspeedx = 0; _cspeedy = 0; _tbase = 0.1; _h = 2; // Main loop - Ugly double loop to avoid exit after 10000 iterations while{dialog} do { while{dialog} do { call { // Check for listbox selections if(_camSelLast != lbCurSel _cLBCameras) then { _cs = lbCurSel _cLBCameras; if(_cs == _cLbSeparator) then {_cs = _camSelLast}; // Special for toggling missile camera if(_cs == _cLbMissileCam) then { KEGsUseMissileCam = !KEGsUseMissileCam; _cs = _camSelLast; }; // Special for toggling NVG if(_cs == _cLbToggleNVG) then { KEGsUseNVG = !KEGsUseNVG; _cs = _camSelLast; }; // Special for toggling tags if(_cs == _cLbToggleTags) then { KEGsTags = !KEGsTags; ["ToggleTags", [KEGsTags, (_cameras select KEGs_cameraIdx)]] call spectate_events; _cs = _camSelLast; }; // Special for toggling AI filter if(_cs == _cLbToggleAiFilter) then { KEGsAIfilter = !KEGsAIfilter; _cs = _camSelLast; KEGsNeedUpdateLB = true; // Request listbox update }; if(_cs != _camSelLast) then { // Selected another camera - disable dropped cam KEGsDroppedCamera = false; }; KEGs_cameraIdx = _cs; }; if(lbCurSel _cLBTargets > lbSize _cLBTargets) then { lbSetCurSel[_cLBTargets, lbSize _cLBTargets]; // Selection outside listbox size }; // Update selected target from listbox if(KEGsSelect != 0) then { lbSetCurSel[_cLBTargets, ((lbCurSel _cLBTargets)+KEGsSelect)]; KEGsSelect = 0; }; if(_tgtSelLast != lbCurSel _cLBTargets) then { KEGsDroppedCamera = false; KEGs_tgtIdx = lbValue[_cLBTargets, (lbCurSel _cLBTargets)]; }; // Process mouse movement _mouseDeltaX = _mouseLastX - (KEGsMouseCoord select 0); _mouseDeltaY = _mouseLastY - (KEGsMouseCoord select 1); if(!(KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Right mouse button - Adjust position _fangle = _fangle - (_mouseDeltaX*360); _fangleY=_fangleY + (_mouseDeltaY*180); if(_fangleY > 89) then {_fangleY = 89}; if(_fangleY < -89) then {_fangleY = -89}; }; if((KEGsMouseButtons select 0) and !(KEGsMouseButtons select 1)) then { // Left mouse button - Adjust distance _sdistance = _sdistance - (_mouseDeltaY*10); if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if(KEGsMouseScroll != 0) then { // Mouse scroll wheel - Adjust distance _sdistance = _sdistance - (KEGsMouseScroll*0.11); KEGsMouseScroll = KEGsMouseScroll * 0.75; if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if((KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Both mousebuttons - Adjust zoom _szoom = _szoom - (_mouseDeltaY*3); if(_szoom > _minZoom) then {_szoom = _minZoom}; if(_szoom < _maxZoom) then {_szoom = _maxZoom}; }; // Check for new units every 2 seconds if(time - _lastCheckNewUnits > 2) then { _lastCheckNewUnits = time; _allUnits = []; _allVehicles = []; // Avoid game logics _foo = []; //Next line of code adapted by norrin for revive script {if(side _x != sideLogic && (_x distance getMarkerPos "Boot_Hill") > 700) then {_foo = _foo + [_x]}} foreach KEGsAllUnits; {_allUnits = _allUnits + (crew _x);_allVehicles = _allVehicles + [_x]} foreach _foo; _newUnits = _allUnits - deathCam; _newVehicles = _allVehicles - _ehVehicles; if(count _newVehicles > 0) then { // Add event handlers to new vehicles _ehVehicles = _ehVehicles + _newVehicles; { // Add fired eventhandler for map indication _fh = _x addeventhandler["fired", {["UnitFired",_this] call spectate_events}]; //_kh = _x addeventhandler["killed", {["UnitKilled",_this] call spectate_events}]; _x setVariable["KEGsEHfired", _fh]; //_x setVariable["KEGsEHkilled", _kh]; } foreach _newVehicles; }; if(count _newUnits > 0) then { // Add new units to end of list deathCam = deathCam + _newUnits; // Request listbox update KEGsNeedUpdateLB = true; // Create markers { // Crete marker _m = createMarkerLocal[format["KEGsMarker%1", count _markers], getpos player]; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.4, 0.4]; _markers = _markers + [_m]; // Set marker color if(side _x == west) then {_m setMarkerColorLocal "ColorBlue";}; if(side _x == east) then {_m setMarkerColorLocal "ColorRed";}; if(side _x == resistance) then {_m setMarkerColorLocal "ColorGreen";}; if(side _x == civilian) then {_m setMarkerColorLocal "ColorWhite";}; // Create particle source _s = "#particlesource" createvehiclelocal (getpos _x); KEGsTagSources = KEGsTagSources + [[_x, _s]]; // If tags are on, turn them off and back again to include new units if(KEGsTags) then { ["ToggleTags",[false, (_cameras select KEGs_cameraIdx)]] call spectate_events; ["ToggleTags",[true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; } foreach _newUnits; }; }; // Request listbox update every 4 seconds to update dead units or jip player names if(time - _lastAutoUpdateLB > 4) then { _lastAutoUpdateLB = time; KEGsNeedUpdateLB = true; }; if(KEGsNeedUpdateLB) then { // Clear and re-fill targets listbox lbClear _cLBTargets; for "_idx" from 0 to ((count deathCam)-1) do { _x = deathCam select _idx; _name = ""; if(alive _x) then { // Unit is alive, use name command _name = name _x; _nameCache set[_idx, _name]; } else { // Dead unit, use cached name _name = _nameCache select _idx; }; if((!KEGsAIfilter or isPlayer _x) and ((side _x) in KEGsShownSides)) then { _i = lbAdd[_cLBTargets, _name]; lbSetValue[_cLBTargets, _i, _idx]; // Value used to id unit if(side _x == west) then {lbSetColor[_cLBTargets, _i, [0.8,0.8,1,1]]}; if(side _x == east) then {lbSetColor[_cLBTargets, _i, [1,0.8,0.8,1]]}; if(side _x == resistance) then {lbSetColor[_cLBTargets, _i, [0.8,1,0.8,1]]}; if(side _x == civilian) then {lbSetColor[_cLBTargets, _i, [1,1,1,1]]}; if(not alive _x) then { // Whoops, unit is dead, change color lbSetColor[_cLBTargets, _i, [0.5,0.5,0.5,1]]; }; //if(_x == KEGs_target) then { // Select target // Not a good idea //lbSetCurSel[_cLBTargets, _i]; //}; }; }; KEGsNeedUpdateLB = false; }; // Check limits if(KEGs_tgtIdx >= count deathCam) then {KEGs_tgtIdx = (count deathCam)-1;}; if(KEGs_tgtIdx < 0) then {KEGs_tgtIdx = 0}; if(KEGs_cameraIdx < 0) then {KEGs_cameraIdx = 0}; if(KEGs_cameraIdx >= count _cameras) then {KEGs_cameraIdx = (count _cameras)-1;}; // Select camera, get target if(!KEGsMissileCamActive) then { (_cameras select KEGs_cameraIdx) cameraEffect["internal", "BACK"]; KEGs_target = deathCam select KEGs_tgtIdx; }; lbSetCurSel[_cLBCameras, KEGs_cameraIdx]; if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] != KEGs_tgtIdx) then { // Find listbox element with matching value for "_idx" from 0 to (lbSize _cLBTargets) do { if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] == KEGs_tgtIdx) then { lbSetCurSel[_cLBTargets, _idx]; _found = true; }; }; }; //if(lbCurSel _cLBTargets != KEGs_tgtIdx) then { // lbSetCurSel[_cLBTargets, KEGs_tgtIdx]; // }; camUseNVG KEGsUseNVG; if(ctrlVisible _cMapFull) then { KEGscam_fullmap cameraEffect["internal", "BACK"]; }; //ctrlSetText[_cDebug, format["%1", count _markers]]; // Update tag particlesources if(time - _lastUpdateTags > (1/5)) then { _lastUpdateTags = time; if(KEGsTags) then { ["ToggleTags", [true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; }; // Update markers 10fps _rate = 15; if(count _markers > 100) then {_rate = 7.5}; // Update large number of markers less often if(time - _lastUpdateMarkers > (1/_rate)) then { _lastUpdateMarkers = time; // setMarkerTypeLocal is very slow, call it only once per second _doMarkerTypes = false; if(time - _lastUpdateMarkerTypes > 1) then { _lastUpdateMarkerTypes = time; _doMarkerTypes = true; // Allow update marker types }; if(ctrlVisible _cMapFull) then { // Position camera in the middle of full map, for sound and // smoother marker motion (distant objects appear less smooth) _mapFull = _disp displayctrl _cMapFull; _mappos = _mapFull posScreenToWorld[0.5, 0.5]; KEGscam_fullmap camsettarget _mappos; KEGscam_fullmap camsetrelpos [0, -1, 150]; KEGscam_fullmap camcommit 0; }; _markedVehicles = []; // Keep track of vehicles with markers to avoid multiple markers for one vehicle for "_i" from 0 to ((count _markers)-1) do { _m = _markers select _i; _u = (deathCam select _i); _m setMarkerPosLocal (getpos vehicle _u); if(!((side _u) in KEGsShownSides)) then { // We arent' supposed to show this side unit - hide marker if(_doMarkerTypes) then {_m setMarkerTypeLocal "empty"}; } else { if(KEGsMarkerNames or KEGsMinimapZoom < 0.15) then { // Set full screen map marker types - Also zoomed minimap if(ctrlVisible _cMapFull) then { switch(KEGsMarkerType) do { case 0: { // No text _m setMarkerTextLocal ""; }; case 1: { // Names if(alive (vehicle _u)) then { if(name (vehicle _u) != "Error: no unit") then {_m setMarkerTextLocal name ( _u)}; }; }; case 2: { // Types _m setMarkerTextLocal getText (configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "DisplayName"); }; }; } else { // Minimap with detailed icons but no text _m setMarkerTextLocal ""; }; if(KEGsClientAddonPresent) then { // With client side addon use better icons _type = getText(configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "simulation"); _icon = "Arrow"; switch(_type) do { case "tank": {_icon = "KEGsTank"}; case "car": {_icon = "KEGsCar"}; case "soldier": {_icon = "KEGsMan"}; case "ship": {_icon = "KEGsShip"}; case "airplane": {_icon = "KEGsPlane"}; case "helicopter": {_icon = "KEGsHelicopter"}; case "motorcycle": {_icon = "KEGsMotorcycle"}; case "parachute": {_icon = "KEGsParachute"}; }; if(_doMarkerTypes) then {_m setMarkerTypeLocal _icon}; _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; } else { // No client side addon - basic markers if(_doMarkerTypes) then {_m setMarkerTypeLocal "Arrow"}; if(_u == vehicle _u) then { _m setMarkerSizeLocal[0.33*KEGsMarkerSize, 0.27*KEGsMarkerSize]; } else { _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; }; }; _m setMarkerDirLocal (getdir (vehicle _u)); } else { _m setMarkerTextLocal ""; if(_doMarkerTypes) then {_m setMarkerTypeLocal "Dot"}; _m setMarkerSizeLocal[0.4,0.4]; }; }; if(not alive _u) then { if(KEGsClientAddonPresent) then { // Switch to darker color, cant use side since the unit is already dead if(getMarkerColor _m == "ColorBlue") then {_m setMarkerColorLocal "KEGsDarkBlue"}; if(getMarkerColor _m == "ColorRed") then {_m setMarkerColorLocal "KEGsDarkRed"}; if(getMarkerColor _m == "ColorGreen") then {_m setMarkerColorLocal "KEGsDarkGreen"}; if(getMarkerColor _m == "ColorWhite") then {_m setMarkerColorLocal "KEGsGrey"}; } else { _m setMarkerColorLocal "ColorBlack" }; }; if(vehicle _u in _markedVehicles) then { // This vehicle was already marked, hide marker _m setMarkerTypeLocal "Empty"; } else { _markedVehicles = _markedVehicles + [vehicle _u]; }; }; // Follow target with small map _map = _disp displayctrl _cMap; ctrlMapAnimClear _map; if(KEGsDroppedCamera) then { // Center on dropped camera position _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, [_cxpos, _cypos,0]]; } else { // Center on target _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, getpos KEGs_target]; }; ctrlMapAnimCommit _map; }; // Check if target changed and center main map if(KEGs_tgtIdx != _lastTgt) then { _map = _disp displayctrl _cMapFull; ctrlMapAnimClear _map; _map ctrlMapAnimAdd [0.2, 1.0, getpos (deathcam select KEGs_tgtIdx)]; ctrlMapAnimCommit _map; }; if((_cameras select KEGs_cameraIdx) == KEGscam_1stperson) then { // 1st person view if(KEGs1stGunner) then { (vehicle KEGs_target) switchCamera "GUNNER"; } else { (vehicle KEGs_target) switchCamera "INTERNAL"; }; (vehicle KEGs_target) cameraEffect ["terminate","FRONT"]; }; // Get target properties _dir = getdir vehicle KEGs_target; _bb = boundingBox vehicle KEGs_target; //_h = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _foo = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _l = ((_bb select 1) select 1) - ((_bb select 0) select 1); // Length _w = ((_bb select 1) select 0) - ((_bb select 0) select 0); // Width _hstr = 0.15; _h = (_foo*_hstr)+(_h*(1-_hstr)); // Set UI texts _role = ""; if(vehicle KEGs_target != KEGs_target) then { if(KEGs_target == driver vehicle KEGs_target) then {_role = "(Driver)"}; if(KEGs_target == gunner vehicle KEGs_target) then {_role = "(Gunner)"}; if(KEGs_target == commander vehicle KEGs_target) then {_role = "(Commander)"}; }; _name = "Unknown"; if(alive KEGs_target) then { _name = name KEGs_target; if(_name == "Error: no unit") then {_name = "Unknown"}; }; if(KEGsDroppedCamera and isNull _nearest) then { // Dropped camera mode - no target _name = ""; _role = ""; }; ctrlSetText[_cName, format["%1 %2", _name, _role]]; ctrlSetText[_cCamera, format["Camera: %1", _cameraNames select KEGs_cameraIdx]]; // Set name color to gray if dropped cam _ccName = _disp displayctrl _cName; if(KEGsDroppedCamera) then { _ccName ctrlSetTextColor[0.6, 0.6, 0.6, 1]; } else { _ccName ctrlSetTextColor[1, 1, 1, 1]; }; // Set toggle text color for camera menu if(KEGsUseMissileCam) then {lbSetColor[_cLBCameras, _cLbMissileCam, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbMissileCam, [1,1,1,0.33]]}; if(KEGsUseNVG) then {lbSetColor[_cLBCameras, _cLbToggleNVG, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleNVG, [1,1,1,0.33]]}; if(KEGsTags) then {lbSetColor[_cLBCameras, _cLbToggleTags, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleTags, [1,1,1,0.33]]}; if(KEGsAIfilter) then {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1,1,1,0.33]]}; if(KEGsDroppedCamera) then { // Dropped free camera, moved with WSAD keys if(KEGs_cameraIdx != 0) then { // User changed camera KEGsDroppedCamera = false; }; // Adjust speed from buttons held down _spd = (_sdistance max 1)*20; if(KEGsCamForward) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((_spd*_tbase)*cos _fangle); }; if(KEGsCamBack) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos _fangle); }; if(KEGsCamLeft) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((_spd*_tbase)*cos (_fangle-90)); }; if(KEGsCamRight) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos (_fangle-90)); }; // Move camera _cxpos = _cxpos + (_cspeedx*_tbase); _cypos = _cypos + (_cspeedy*_tbase); _czpos = 0; _h = 2; // Static camera height _l = 2.2; // Slow down _bstr = 5; _cspeedx = _cspeedx * ((1.0-(_tbase*_bstr)) max 0); _cspeedy = _cspeedy * ((1.0-(_tbase*_bstr)) max 0); // Check for nearby targets _dummy setpos[_cxpos, _cypos, 1.5]; _objs = [_cxpos, _cypos, 1.5] nearObjects 5; _nearest = objNull; _dist = 10; { { _d = _dummy distance _x; if(_d < _dist and _x in deathCam and alive _x) then {_nearest = _x;_dist = _d;}; } foreach crew _x; } foreach _objs; if(!isNull _nearest) then {KEGs_tgtIdx = deathCam find _nearest}; } else { // Set targets for all cameras _cxpos = getpos vehicle KEGs_target select 0; _cypos = getpos vehicle KEGs_target select 1; _czpos = getpos vehicle KEGs_target select 2; }; KEGscam_target camSetPos[_cxpos, _cypos, _czpos+(_h*0.7)]; KEGscam_static camSetTarget KEGscam_target; KEGscam_free camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; KEGscam_flyby camSetTarget KEGscam_target; KEGscam_topdown camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; {_x camSetFov _szoom} foreach _cameras; // Static camera, follows unit from behind KEGscam_static camSetRelPos[sin(_dir)*(-(_l*_sdistance)), cos(_dir)*(-(_l*_sdistance)), 0.6*abs _sdistance]; // Free camera, user rotates camera around target _d = (-(_l*(0.3 max _sdistance))); _z = sin(_fangleY)*(_l*(0.3 max _sdistance)); KEGscam_free camSetRelPos[(sin(_fangle)*_d)*cos(_fangleY), (cos(_fangle)*_d)*cos(_fangleY), _z]; KEGscam_free camCommit 0; // Flyby camera, no user control except zoom if(KEGs_target distance KEGscam_flyby > (_flybydst*1.1)) then { _flybydst = 20+(speed vehicle KEGs_target); KEGscam_flyby camSetRelPos[sin(_dir)*_flybydst, cos(_dir)*_flybydst, 1+((random _h)*1.5)]; KEGscam_flyby camCommit 0; KEGscam_target camCommit 0; }; // Top-down camera KEGscam_topdown camSetRelPos[0.0, -0.01, 2+((0 max _sdistance)*15)]; KEGscam_topdown camCommit 0; // Commit static and flyby cameras _comSpeed = 1.0 - ((speed vehicle KEGs_target)/70); if(_comSpeed < 0.0) then {_comSpeed = 0.0;}; if((vehicle KEGs_target) distance KEGscam_static > 650) then {_comSpeed = 0}; // Jump immediately to distant target KEGscam_static camCommit _comSpeed/2; KEGscam_target camCommit _comSpeed/3; KEGscam_flyby camCommit _comSpeed; _mouseLastX = KEGsMouseCoord select 0; _mouseLastY = KEGsMouseCoord select 1; _camSelLast = lbCurSel _cLBCameras; _tgtSelLast = lbCurSel _cLBTargets; _lastTgt = KEGs_tgtIdx; }; // Wait a moment. 150fps ought to be enough for everyone :-) _tt = time; sleep(1/150); _tbase = time-_tt; }}; // Dialog closed with esc key titleText["","BLACK IN", 0.5]; // Destroy cameras, markers, particlesources, etc. {camDestroy _x} foreach _cameras; deletevehicle KEGscam_target; deletevehicle KEGscam_missile; deletevehicle KEGscam_fullmap; {deletemarkerlocal _x} foreach _markers; deletevehicle _t; camUseNVG false; KEGsTags = false; onMapSingleClick ""; {deletevehicle (_x select 1)} foreach KEGsTagSources; KEGsTagSources = []; // Remove eventhandlers TODO: does this work properly? { _fh = _x getVariable "KEGsEHfired"; //_kh = _x getVariable "KEGsEHkilled"; if(typeName _fh == "SCALAR") then {_x removeEventHandler["fired", _fh]}; //if(typeName _kh == "SCALAR") then {_x removeEventHandler["killed", _kh]}; } foreach _ehVehicles; // Create a butterfly for player to fly with //gonza _bpos = [(getpos (vehicle KEGs_target) select 0)-5+random 10, (getpos (vehicle KEGs_target) select 1)-5+random 10, 1]; //gonza _bird = "ButterFly" createVehicle _bpos; //gonza _bird setvelocity[0,0,5]; //gonza _bird setpos _bpos; //gonza _bird switchCamera "INTERNAL"; //gonza _bird cameraEffect["terminate","FRONT"]; //gonza _bird camCommand "manual on"; //gonza KEGsBird = _bird; //gonza onMapSingleClick "KEGsBird setpos [_pos select 0, _pos select 1, 2];KEGsBird setvelocity[0,0,5];"; //gonza cutText["\n\n\n\n\nLand on ground to return to spectating\nClick at map to jump to location","PLAIN DOWN", 0.75]; // Wait until landed, delete bird & restart script //gonza waitUntil{getpos _bird select 2 < 0.05 and speed _bird < 1}; //gonza onMapSingleClick ""; // sleep(0.5); // titleText["","BLACK OUT", 0.5]; // sleep(1); joueur1 switchCamera "INTERNAL"; joueur1 cameraEffect["terminate","FRONT"]; spectat_on = false; [] execVM "Computer\cpu_dialog.sqf" //_player switchCamera "INTERNAL"; //_player cameraEffect["terminate","FRONT"]; //deletevehicle _bird; //[_player, _killer, "noWait"] execVM "spect\spectavts.sqf"; };// // Spectating Script for Armed Assault // by Kegetys // if not(spectat_on) then { spectat_on = true; _player = _this select 0; _killer = _this select 1; _seagull = _this select 2; // If seagull is valid we came from the respawn scene // if(typeName _seagull != "string") then { // _seagull setpos[-1000, -1000, 1000]; // sleep 1.5; // titleCut["","BLACK OUT", 1.5]; // }; // Globals etc. spectate_events = compile loadfile "spect\specta_events.sqf"; KEGsMouseButtons = [false, false]; KEGsMouseScroll = 0; KEGsMouseCoord = [0.5, 0.5]; KEGsUseNVG = false; KEGsMissileCamActive = false; KEGsUseMissileCam = false; KEGsMarkerNames = false; // True = display marker names and arrows KEGsMarkerType = 1; // 0 = disabled, 1 = names, 2 = types KEGsTags = true; // Particlesource tags KEGsAIfilter = false; // Filter AI units (only players displayed) KEGsClientAddonPresent = false; // Is client-side addon present? KEGsMarkerSize = 1.0; // Full map marker size KEGsMinimapZoom = 0.5; // Minimap zoom KEGsSelect = 0; // Used to change selected target KEGs1stGunner = false; // Gunner view on 1st person camera? KEGsDroppedCamera = true; // Free camera dropped (non-targeted with free motion)? KEGsCamForward = false; KEGsCamBack = false; KEGsCamLeft = false; KEGsCamRight = false; KEGsNeedUpdateLB = false; _mouseDeltaX = 0; _mouseDeltaY = 0; _sdistance = 1; // camera distance _fangle = 0; // Free camera angle _fangleY = 15; _flybydst = 35; // Distance of flyby camera (adjusted based on target speed) _szoom = 0.976; _markers = []; // Map markers showing positions of all units KEGsTagSources = []; // Particle sources for tags _lastTgt = 0; _nameCache = []; // Used to store valid names since name command cannot be trusted _maxDistance = 50; // Maximum distance for camera _maxZoom = 0.05; // Maximum zoom level _minZoom = 2; // Unit sides shown - Show all if sides not set if(format["%1", KEGsShownSides] == "scalar bool array string 0xe0ffffef") then { KEGsShownSides = [west, east, resistance, civilian]; }; deathCam = []; _ehVehicles = []; // Used to keep track of added eventhandlers KEGsAllUnits = []; // Create trigger for retrieving all vehicles _t = createTrigger["EmptyDetector", getpos player]; _t setTriggerType "NONE"; _t setTriggerStatements ["this", "KEGsAllUnits = thislist", ""]; _t setTriggerArea[50000, 50000, 0, false]; _t setTriggerActivation["ANY", "PRESENT", false]; // Wait until trigger assigns the array waitUntil{count KEGsAllUnits > 0}; if(typeName _seagull != "string") then { sleep 1; titleCut ["","BLACK IN", 8]; } else { titleText["","BLACK IN", 0]; }; // Create dialog & assign keyboard handler createDialog "rscSpectate"; _disp = (findDisplay 55001); _disp displaySetEventHandler["KeyDown", "[""KeyDown"",_this] call spectate_events"]; _disp displaySetEventHandler["KeyUp", "[""KeyUp"",_this] call spectate_events"]; // Hide menus by default ["ToggleCameraMenu",0] call spectate_events; ["ToggleTargetMenu",0] call spectate_events; ["ToggleHelp",0] call spectate_events; ["ToggleMap",1] call spectate_events; // IDC's from rsc _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cMap = 55013; _cMapFull = 55014; _cDebug = 55100; _nearest = objNull; // Create cameras _pos = [(getpos player select 0)-1+random 2, (getpos player select 1)-1+random 2, 2]; KEGscam_static = "camera" camCreate _pos; KEGscam_target = "camera" camCreate _pos; // "Dummy" target camera for smooth transitions KEGscam_free = "camera" camCreate _pos; KEGscam_flyby = "camera" camCreate _pos; KEGscam_topdown = "camera" camCreate _pos; KEGscam_1stperson = "camera" camCreate _pos; // Dummy camera KEGscam_missile = "camera" camCreate _pos; // Missile camera KEGscam_fullmap = "camera" camCreate _pos; // Full map view camera _cameras = [KEGscam_free, KEGscam_static, KEGscam_flyby, KEGscam_topdown, KEGscam_1stperson]; _cameraNames = ["Free", "Chase", "Flyby", "Top-down", "1st person"]; _dummy = "helihempty" createVehicleLocal [0,0,0]; // Dummy object for distance command KEGscameras = _cameras; // Hack to allow access from events.sqf // Add cameras to listbox lbClear _cLBCameras; {lbAdd[_cLBCameras, _x]} foreach _cameraNames; // Add separator & toggles _cLbSeparator = lbAdd[_cLBCameras, "---"]; lbSetColor[_cLBCameras, _cLbSeparator, [0.5, 0.5, 0.5, 0.5]]; _cLbMissileCam = lbAdd[_cLBCameras, "Missile camera"]; _cLbToggleNVG = lbAdd[_cLBCameras, "Night vision"]; _cLbToggleTags = lbAdd[_cLBCameras, "Unit tags"]; _cLbToggleAiFilter = lbAdd[_cLBCameras, "Filter AI"]; KEGs_tgtIdx = 0; KEGs_cameraIdx = 0; showcinemaborder false; lbClear _cLBTargets; onMapSingleClick "[""MapClick"",_pos] call spectate_events"; ["EventLogAdd",["Initialize",[1,1,1,1]]] call spectate_events; // Check for client side addon _foo = "KEGsAddon10" createVehicleLocal[-1000,-1000,0]; //_foo = "KEGspect_bar_yellow" createVehicleLocal[-1000,-1000,0]; if(!isNull _foo) then { deletevehicle _foo; KEGsClientAddonPresent = true; }; // Spawn thread to display help reminder after a few seconds [] spawn {sleep(3);if(dialog) then {cutText["\n\n\n\n\nPress F1 for help","PLAIN DOWN", 0.75]}}; _camSelLast = 0; _tgtSelLast = 0; _mouseLastX = 0.5; _mouseLastY = 0.5; _nNoDialog = 0; _lastCheckNewUnits = -100; _lastUpdateMarkers = -100; _lastUpdateMarkerTypes = -100; _lastUpdateTags = -100; _lastAutoUpdateLB = time; KEGsCamPos = [0,0,0]; _cxpos = 0; _cypos = 0; _czpos = 0; _cspeedx = 0; _cspeedy = 0; _tbase = 0.1; _h = 2; // Main loop - Ugly double loop to avoid exit after 10000 iterations while{dialog} do { while{dialog} do { call { // Check for listbox selections if(_camSelLast != lbCurSel _cLBCameras) then { _cs = lbCurSel _cLBCameras; if(_cs == _cLbSeparator) then {_cs = _camSelLast}; // Special for toggling missile camera if(_cs == _cLbMissileCam) then { KEGsUseMissileCam = !KEGsUseMissileCam; _cs = _camSelLast; }; // Special for toggling NVG if(_cs == _cLbToggleNVG) then { KEGsUseNVG = !KEGsUseNVG; _cs = _camSelLast; }; // Special for toggling tags if(_cs == _cLbToggleTags) then { KEGsTags = !KEGsTags; ["ToggleTags", [KEGsTags, (_cameras select KEGs_cameraIdx)]] call spectate_events; _cs = _camSelLast; }; // Special for toggling AI filter if(_cs == _cLbToggleAiFilter) then { KEGsAIfilter = !KEGsAIfilter; _cs = _camSelLast; KEGsNeedUpdateLB = true; // Request listbox update }; if(_cs != _camSelLast) then { // Selected another camera - disable dropped cam KEGsDroppedCamera = false; }; KEGs_cameraIdx = _cs; }; if(lbCurSel _cLBTargets > lbSize _cLBTargets) then { lbSetCurSel[_cLBTargets, lbSize _cLBTargets]; // Selection outside listbox size }; // Update selected target from listbox if(KEGsSelect != 0) then { lbSetCurSel[_cLBTargets, ((lbCurSel _cLBTargets)+KEGsSelect)]; KEGsSelect = 0; }; if(_tgtSelLast != lbCurSel _cLBTargets) then { KEGsDroppedCamera = false; KEGs_tgtIdx = lbValue[_cLBTargets, (lbCurSel _cLBTargets)]; }; // Process mouse movement _mouseDeltaX = _mouseLastX - (KEGsMouseCoord select 0); _mouseDeltaY = _mouseLastY - (KEGsMouseCoord select 1); if(!(KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Right mouse button - Adjust position _fangle = _fangle - (_mouseDeltaX*360); _fangleY=_fangleY + (_mouseDeltaY*180); if(_fangleY > 89) then {_fangleY = 89}; if(_fangleY < -89) then {_fangleY = -89}; }; if((KEGsMouseButtons select 0) and !(KEGsMouseButtons select 1)) then { // Left mouse button - Adjust distance _sdistance = _sdistance - (_mouseDeltaY*10); if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if(KEGsMouseScroll != 0) then { // Mouse scroll wheel - Adjust distance _sdistance = _sdistance - (KEGsMouseScroll*0.11); KEGsMouseScroll = KEGsMouseScroll * 0.75; if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if((KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Both mousebuttons - Adjust zoom _szoom = _szoom - (_mouseDeltaY*3); if(_szoom > _minZoom) then {_szoom = _minZoom}; if(_szoom < _maxZoom) then {_szoom = _maxZoom}; }; // Check for new units every 2 seconds if(time - _lastCheckNewUnits > 2) then { _lastCheckNewUnits = time; _allUnits = []; _allVehicles = []; // Avoid game logics _foo = []; //Next line of code adapted by norrin for revive script {if(side _x != sideLogic && (_x distance getMarkerPos "Boot_Hill") > 700) then {_foo = _foo + [_x]}} foreach KEGsAllUnits; {_allUnits = _allUnits + (crew _x);_allVehicles = _allVehicles + [_x]} foreach _foo; _newUnits = _allUnits - deathCam; _newVehicles = _allVehicles - _ehVehicles; if(count _newVehicles > 0) then { // Add event handlers to new vehicles _ehVehicles = _ehVehicles + _newVehicles; { // Add fired eventhandler for map indication _fh = _x addeventhandler["fired", {["UnitFired",_this] call spectate_events}]; //_kh = _x addeventhandler["killed", {["UnitKilled",_this] call spectate_events}]; _x setVariable["KEGsEHfired", _fh]; //_x setVariable["KEGsEHkilled", _kh]; } foreach _newVehicles; }; if(count _newUnits > 0) then { // Add new units to end of list deathCam = deathCam + _newUnits; // Request listbox update KEGsNeedUpdateLB = true; // Create markers { // Crete marker _m = createMarkerLocal[format["KEGsMarker%1", count _markers], getpos player]; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.4, 0.4]; _markers = _markers + [_m]; // Set marker color if(side _x == west) then {_m setMarkerColorLocal "ColorBlue";}; if(side _x == east) then {_m setMarkerColorLocal "ColorRed";}; if(side _x == resistance) then {_m setMarkerColorLocal "ColorGreen";}; if(side _x == civilian) then {_m setMarkerColorLocal "ColorWhite";}; // Create particle source _s = "#particlesource" createvehiclelocal (getpos _x); KEGsTagSources = KEGsTagSources + [[_x, _s]]; // If tags are on, turn them off and back again to include new units if(KEGsTags) then { ["ToggleTags",[false, (_cameras select KEGs_cameraIdx)]] call spectate_events; ["ToggleTags",[true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; } foreach _newUnits; }; }; // Request listbox update every 4 seconds to update dead units or jip player names if(time - _lastAutoUpdateLB > 4) then { _lastAutoUpdateLB = time; KEGsNeedUpdateLB = true; }; if(KEGsNeedUpdateLB) then { // Clear and re-fill targets listbox lbClear _cLBTargets; for "_idx" from 0 to ((count deathCam)-1) do { _x = deathCam select _idx; _name = ""; if(alive _x) then { // Unit is alive, use name command _name = name _x; _nameCache set[_idx, _name]; } else { // Dead unit, use cached name _name = _nameCache select _idx; }; if((!KEGsAIfilter or isPlayer _x) and ((side _x) in KEGsShownSides)) then { _i = lbAdd[_cLBTargets, _name]; lbSetValue[_cLBTargets, _i, _idx]; // Value used to id unit if(side _x == west) then {lbSetColor[_cLBTargets, _i, [0.8,0.8,1,1]]}; if(side _x == east) then {lbSetColor[_cLBTargets, _i, [1,0.8,0.8,1]]}; if(side _x == resistance) then {lbSetColor[_cLBTargets, _i, [0.8,1,0.8,1]]}; if(side _x == civilian) then {lbSetColor[_cLBTargets, _i, [1,1,1,1]]}; if(not alive _x) then { // Whoops, unit is dead, change color lbSetColor[_cLBTargets, _i, [0.5,0.5,0.5,1]]; }; //if(_x == KEGs_target) then { // Select target // Not a good idea //lbSetCurSel[_cLBTargets, _i]; //}; }; }; KEGsNeedUpdateLB = false; }; // Check limits if(KEGs_tgtIdx >= count deathCam) then {KEGs_tgtIdx = (count deathCam)-1;}; if(KEGs_tgtIdx < 0) then {KEGs_tgtIdx = 0}; if(KEGs_cameraIdx < 0) then {KEGs_cameraIdx = 0}; if(KEGs_cameraIdx >= count _cameras) then {KEGs_cameraIdx = (count _cameras)-1;}; // Select camera, get target if(!KEGsMissileCamActive) then { (_cameras select KEGs_cameraIdx) cameraEffect["internal", "BACK"]; KEGs_target = deathCam select KEGs_tgtIdx; }; lbSetCurSel[_cLBCameras, KEGs_cameraIdx]; if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] != KEGs_tgtIdx) then { // Find listbox element with matching value for "_idx" from 0 to (lbSize _cLBTargets) do { if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] == KEGs_tgtIdx) then { lbSetCurSel[_cLBTargets, _idx]; _found = true; }; }; }; //if(lbCurSel _cLBTargets != KEGs_tgtIdx) then { // lbSetCurSel[_cLBTargets, KEGs_tgtIdx]; // }; camUseNVG KEGsUseNVG; if(ctrlVisible _cMapFull) then { KEGscam_fullmap cameraEffect["internal", "BACK"]; }; //ctrlSetText[_cDebug, format["%1", count _markers]]; // Update tag particlesources if(time - _lastUpdateTags > (1/5)) then { _lastUpdateTags = time; if(KEGsTags) then { ["ToggleTags", [true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; }; // Update markers 10fps _rate = 15; if(count _markers > 100) then {_rate = 7.5}; // Update large number of markers less often if(time - _lastUpdateMarkers > (1/_rate)) then { _lastUpdateMarkers = time; // setMarkerTypeLocal is very slow, call it only once per second _doMarkerTypes = false; if(time - _lastUpdateMarkerTypes > 1) then { _lastUpdateMarkerTypes = time; _doMarkerTypes = true; // Allow update marker types }; if(ctrlVisible _cMapFull) then { // Position camera in the middle of full map, for sound and // smoother marker motion (distant objects appear less smooth) _mapFull = _disp displayctrl _cMapFull; _mappos = _mapFull posScreenToWorld[0.5, 0.5]; KEGscam_fullmap camsettarget _mappos; KEGscam_fullmap camsetrelpos [0, -1, 150]; KEGscam_fullmap camcommit 0; }; _markedVehicles = []; // Keep track of vehicles with markers to avoid multiple markers for one vehicle for "_i" from 0 to ((count _markers)-1) do { _m = _markers select _i; _u = (deathCam select _i); _m setMarkerPosLocal (getpos vehicle _u); if(!((side _u) in KEGsShownSides)) then { // We arent' supposed to show this side unit - hide marker if(_doMarkerTypes) then {_m setMarkerTypeLocal "empty"}; } else { if(KEGsMarkerNames or KEGsMinimapZoom < 0.15) then { // Set full screen map marker types - Also zoomed minimap if(ctrlVisible _cMapFull) then { switch(KEGsMarkerType) do { case 0: { // No text _m setMarkerTextLocal ""; }; case 1: { // Names if(alive (vehicle _u)) then { if(name (vehicle _u) != "Error: no unit") then {_m setMarkerTextLocal name ( _u)}; }; }; case 2: { // Types _m setMarkerTextLocal getText (configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "DisplayName"); }; }; } else { // Minimap with detailed icons but no text _m setMarkerTextLocal ""; }; if(KEGsClientAddonPresent) then { // With client side addon use better icons _type = getText(configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "simulation"); _icon = "Arrow"; switch(_type) do { case "tank": {_icon = "KEGsTank"}; case "car": {_icon = "KEGsCar"}; case "soldier": {_icon = "KEGsMan"}; case "ship": {_icon = "KEGsShip"}; case "airplane": {_icon = "KEGsPlane"}; case "helicopter": {_icon = "KEGsHelicopter"}; case "motorcycle": {_icon = "KEGsMotorcycle"}; case "parachute": {_icon = "KEGsParachute"}; }; if(_doMarkerTypes) then {_m setMarkerTypeLocal _icon}; _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; } else { // No client side addon - basic markers if(_doMarkerTypes) then {_m setMarkerTypeLocal "Arrow"}; if(_u == vehicle _u) then { _m setMarkerSizeLocal[0.33*KEGsMarkerSize, 0.27*KEGsMarkerSize]; } else { _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; }; }; _m setMarkerDirLocal (getdir (vehicle _u)); } else { _m setMarkerTextLocal ""; if(_doMarkerTypes) then {_m setMarkerTypeLocal "Dot"}; _m setMarkerSizeLocal[0.4,0.4]; }; }; if(not alive _u) then { if(KEGsClientAddonPresent) then { // Switch to darker color, cant use side since the unit is already dead if(getMarkerColor _m == "ColorBlue") then {_m setMarkerColorLocal "KEGsDarkBlue"}; if(getMarkerColor _m == "ColorRed") then {_m setMarkerColorLocal "KEGsDarkRed"}; if(getMarkerColor _m == "ColorGreen") then {_m setMarkerColorLocal "KEGsDarkGreen"}; if(getMarkerColor _m == "ColorWhite") then {_m setMarkerColorLocal "KEGsGrey"}; } else { _m setMarkerColorLocal "ColorBlack" }; }; if(vehicle _u in _markedVehicles) then { // This vehicle was already marked, hide marker _m setMarkerTypeLocal "Empty"; } else { _markedVehicles = _markedVehicles + [vehicle _u]; }; }; // Follow target with small map _map = _disp displayctrl _cMap; ctrlMapAnimClear _map; if(KEGsDroppedCamera) then { // Center on dropped camera position _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, [_cxpos, _cypos,0]]; } else { // Center on target _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, getpos KEGs_target]; }; ctrlMapAnimCommit _map; }; // Check if target changed and center main map if(KEGs_tgtIdx != _lastTgt) then { _map = _disp displayctrl _cMapFull; ctrlMapAnimClear _map; _map ctrlMapAnimAdd [0.2, 1.0, getpos (deathcam select KEGs_tgtIdx)]; ctrlMapAnimCommit _map; }; if((_cameras select KEGs_cameraIdx) == KEGscam_1stperson) then { // 1st person view if(KEGs1stGunner) then { (vehicle KEGs_target) switchCamera "GUNNER"; } else { (vehicle KEGs_target) switchCamera "INTERNAL"; }; (vehicle KEGs_target) cameraEffect ["terminate","FRONT"]; }; // Get target properties _dir = getdir vehicle KEGs_target; _bb = boundingBox vehicle KEGs_target; //_h = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _foo = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _l = ((_bb select 1) select 1) - ((_bb select 0) select 1); // Length _w = ((_bb select 1) select 0) - ((_bb select 0) select 0); // Width _hstr = 0.15; _h = (_foo*_hstr)+(_h*(1-_hstr)); // Set UI texts _role = ""; if(vehicle KEGs_target != KEGs_target) then { if(KEGs_target == driver vehicle KEGs_target) then {_role = "(Driver)"}; if(KEGs_target == gunner vehicle KEGs_target) then {_role = "(Gunner)"}; if(KEGs_target == commander vehicle KEGs_target) then {_role = "(Commander)"}; }; _name = "Unknown"; if(alive KEGs_target) then { _name = name KEGs_target; if(_name == "Error: no unit") then {_name = "Unknown"}; }; if(KEGsDroppedCamera and isNull _nearest) then { // Dropped camera mode - no target _name = ""; _role = ""; }; ctrlSetText[_cName, format["%1 %2", _name, _role]]; ctrlSetText[_cCamera, format["Camera: %1", _cameraNames select KEGs_cameraIdx]]; // Set name color to gray if dropped cam _ccName = _disp displayctrl _cName; if(KEGsDroppedCamera) then { _ccName ctrlSetTextColor[0.6, 0.6, 0.6, 1]; } else { _ccName ctrlSetTextColor[1, 1, 1, 1]; }; // Set toggle text color for camera menu if(KEGsUseMissileCam) then {lbSetColor[_cLBCameras, _cLbMissileCam, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbMissileCam, [1,1,1,0.33]]}; if(KEGsUseNVG) then {lbSetColor[_cLBCameras, _cLbToggleNVG, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleNVG, [1,1,1,0.33]]}; if(KEGsTags) then {lbSetColor[_cLBCameras, _cLbToggleTags, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleTags, [1,1,1,0.33]]}; if(KEGsAIfilter) then {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1,1,1,0.33]]}; if(KEGsDroppedCamera) then { // Dropped free camera, moved with WSAD keys if(KEGs_cameraIdx != 0) then { // User changed camera KEGsDroppedCamera = false; }; // Adjust speed from buttons held down _spd = (_sdistance max 1)*20; if(KEGsCamForward) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((_spd*_tbase)*cos _fangle); }; if(KEGsCamBack) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos _fangle); }; if(KEGsCamLeft) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((_spd*_tbase)*cos (_fangle-90)); }; if(KEGsCamRight) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos (_fangle-90)); }; // Move camera _cxpos = _cxpos + (_cspeedx*_tbase); _cypos = _cypos + (_cspeedy*_tbase); _czpos = 0; _h = 2; // Static camera height _l = 2.2; // Slow down _bstr = 5; _cspeedx = _cspeedx * ((1.0-(_tbase*_bstr)) max 0); _cspeedy = _cspeedy * ((1.0-(_tbase*_bstr)) max 0); // Check for nearby targets _dummy setpos[_cxpos, _cypos, 1.5]; _objs = [_cxpos, _cypos, 1.5] nearObjects 5; _nearest = objNull; _dist = 10; { { _d = _dummy distance _x; if(_d < _dist and _x in deathCam and alive _x) then {_nearest = _x;_dist = _d;}; } foreach crew _x; } foreach _objs; if(!isNull _nearest) then {KEGs_tgtIdx = deathCam find _nearest}; } else { // Set targets for all cameras _cxpos = getpos vehicle KEGs_target select 0; _cypos = getpos vehicle KEGs_target select 1; _czpos = getpos vehicle KEGs_target select 2; }; KEGscam_target camSetPos[_cxpos, _cypos, _czpos+(_h*0.7)]; KEGscam_static camSetTarget KEGscam_target; KEGscam_free camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; KEGscam_flyby camSetTarget KEGscam_target; KEGscam_topdown camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; {_x camSetFov _szoom} foreach _cameras; // Static camera, follows unit from behind KEGscam_static camSetRelPos[sin(_dir)*(-(_l*_sdistance)), cos(_dir)*(-(_l*_sdistance)), 0.6*abs _sdistance]; // Free camera, user rotates camera around target _d = (-(_l*(0.3 max _sdistance))); _z = sin(_fangleY)*(_l*(0.3 max _sdistance)); KEGscam_free camSetRelPos[(sin(_fangle)*_d)*cos(_fangleY), (cos(_fangle)*_d)*cos(_fangleY), _z]; KEGscam_free camCommit 0; // Flyby camera, no user control except zoom if(KEGs_target distance KEGscam_flyby > (_flybydst*1.1)) then { _flybydst = 20+(speed vehicle KEGs_target); KEGscam_flyby camSetRelPos[sin(_dir)*_flybydst, cos(_dir)*_flybydst, 1+((random _h)*1.5)]; KEGscam_flyby camCommit 0; KEGscam_target camCommit 0; }; // Top-down camera KEGscam_topdown camSetRelPos[0.0, -0.01, 2+((0 max _sdistance)*15)]; KEGscam_topdown camCommit 0; // Commit static and flyby cameras _comSpeed = 1.0 - ((speed vehicle KEGs_target)/70); if(_comSpeed < 0.0) then {_comSpeed = 0.0;}; if((vehicle KEGs_target) distance KEGscam_static > 650) then {_comSpeed = 0}; // Jump immediately to distant target KEGscam_static camCommit _comSpeed/2; KEGscam_target camCommit _comSpeed/3; KEGscam_flyby camCommit _comSpeed; _mouseLastX = KEGsMouseCoord select 0; _mouseLastY = KEGsMouseCoord select 1; _camSelLast = lbCurSel _cLBCameras; _tgtSelLast = lbCurSel _cLBTargets; _lastTgt = KEGs_tgtIdx; }; // Wait a moment. 150fps ought to be enough for everyone :-) _tt = time; sleep(1/150); _tbase = time-_tt; }}; // Dialog closed with esc key titleText["","BLACK IN", 0.5]; // Destroy cameras, markers, particlesources, etc. {camDestroy _x} foreach _cameras; deletevehicle KEGscam_target; deletevehicle KEGscam_missile; deletevehicle KEGscam_fullmap; {deletemarkerlocal _x} foreach _markers; deletevehicle _t; camUseNVG false; KEGsTags = false; onMapSingleClick ""; {deletevehicle (_x select 1)} foreach KEGsTagSources; KEGsTagSources = []; // Remove eventhandlers TODO: does this work properly? { _fh = _x getVariable "KEGsEHfired"; //_kh = _x getVariable "KEGsEHkilled"; if(typeName _fh == "SCALAR") then {_x removeEventHandler["fired", _fh]}; //if(typeName _kh == "SCALAR") then {_x removeEventHandler["killed", _kh]}; } foreach _ehVehicles; // Create a butterfly for player to fly with //gonza _bpos = [(getpos (vehicle KEGs_target) select 0)-5+random 10, (getpos (vehicle KEGs_target) select 1)-5+random 10, 1]; //gonza _bird = "ButterFly" createVehicle _bpos; //gonza _bird setvelocity[0,0,5]; //gonza _bird setpos _bpos; //gonza _bird switchCamera "INTERNAL"; //gonza _bird cameraEffect["terminate","FRONT"]; //gonza _bird camCommand "manual on"; //gonza KEGsBird = _bird; //gonza onMapSingleClick "KEGsBird setpos [_pos select 0, _pos select 1, 2];KEGsBird setvelocity[0,0,5];"; //gonza cutText["\n\n\n\n\nLand on ground to return to spectating\nClick at map to jump to location","PLAIN DOWN", 0.75]; // Wait until landed, delete bird & restart script //gonza waitUntil{getpos _bird select 2 < 0.05 and speed _bird < 1}; //gonza onMapSingleClick ""; // sleep(0.5); // titleText["","BLACK OUT", 0.5]; // sleep(1); joueur1 switchCamera "INTERNAL"; joueur1 cameraEffect["terminate","FRONT"]; spectat_on = false; //_player switchCamera "INTERNAL"; //_player cameraEffect["terminate","FRONT"]; //deletevehicle _bird; //[_player, _killer, "noWait"] execVM "spect\spectavts.sqf"; };// // Spectating Script for Armed Assault // by Kegetys // if not(spectat_on) then { spectat_on = true; _player = _this select 0; _killer = _this select 1; _seagull = _this select 2; // If seagull is valid we came from the respawn scene // if(typeName _seagull != "string") then { // _seagull setpos[-1000, -1000, 1000]; // sleep 1.5; // titleCut["","BLACK OUT", 1.5]; // }; // Globals etc. spectate_events = compile loadfile "spect\specta_events.sqf"; KEGsMouseButtons = [false, false]; KEGsMouseScroll = 0; KEGsMouseCoord = [0.5, 0.5]; KEGsUseNVG = false; KEGsMissileCamActive = false; KEGsUseMissileCam = true; KEGsMarkerNames = false; // True = display marker names and arrows KEGsMarkerType = 1; // 0 = disabled, 1 = names, 2 = types KEGsTags = false; // Particlesource tags KEGsAIfilter = false; // Filter AI units (only players displayed) KEGsClientAddonPresent = false; // Is client-side addon present? KEGsMarkerSize = 1.0; // Full map marker size KEGsMinimapZoom = 0.5; // Minimap zoom KEGsSelect = 0; // Used to change selected target KEGs1stGunner = false; // Gunner view on 1st person camera? KEGsDroppedCamera = true; // Free camera dropped (non-targeted with free motion)? KEGsCamForward = false; KEGsCamBack = false; KEGsCamLeft = false; KEGsCamRight = false; KEGsNeedUpdateLB = false; _mouseDeltaX = 0; _mouseDeltaY = 0; _sdistance = 1; // camera distance _fangle = 0; // Free camera angle _fangleY = 15; _flybydst = 35; // Distance of flyby camera (adjusted based on target speed) _szoom = 0.976; _markers = []; // Map markers showing positions of all units KEGsTagSources = []; // Particle sources for tags _lastTgt = 0; _nameCache = []; // Used to store valid names since name command cannot be trusted _maxDistance = 50; // Maximum distance for camera _maxZoom = 0.05; // Maximum zoom level _minZoom = 2; // Unit sides shown - Show all if sides not set if(format["%1", KEGsShownSides] == "scalar bool array string 0xe0ffffef") then { KEGsShownSides = [west, east, resistance, civilian]; }; deathCam = []; _ehVehicles = []; // Used to keep track of added eventhandlers KEGsAllUnits = []; // Create trigger for retrieving all vehicles _t = createTrigger["EmptyDetector", getpos player]; _t setTriggerType "NONE"; _t setTriggerStatements ["this", "KEGsAllUnits = thislist", ""]; _t setTriggerArea[50000, 50000, 0, false]; _t setTriggerActivation["ANY", "PRESENT", false]; // Wait until trigger assigns the array waitUntil{count KEGsAllUnits > 0}; if(typeName _seagull != "string") then { sleep 1; titleCut ["","BLACK IN", 8]; } else { titleText["","BLACK IN", 0]; }; // Create dialog & assign keyboard handler createDialog "rscSpectate"; _disp = (findDisplay 55001); _disp displaySetEventHandler["KeyDown", "[""KeyDown"",_this] call spectate_events"]; _disp displaySetEventHandler["KeyUp", "[""KeyUp"",_this] call spectate_events"]; // Hide menus by default ["ToggleCameraMenu",0] call spectate_events; ["ToggleTargetMenu",0] call spectate_events; ["ToggleHelp",0] call spectate_events; ["ToggleMap",1] call spectate_events; // IDC's from rsc _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cMap = 55013; _cMapFull = 55014; _cDebug = 55100; _nearest = objNull; // Create cameras _pos = [(getpos player select 0)-1+random 2, (getpos player select 1)-1+random 2, 2]; KEGscam_static = "camera" camCreate _pos; KEGscam_target = "camera" camCreate _pos; // "Dummy" target camera for smooth transitions KEGscam_free = "camera" camCreate _pos; KEGscam_flyby = "camera" camCreate _pos; KEGscam_topdown = "camera" camCreate _pos; KEGscam_1stperson = "camera" camCreate _pos; // Dummy camera KEGscam_missile = "camera" camCreate _pos; // Missile camera KEGscam_fullmap = "camera" camCreate _pos; // Full map view camera _cameras = [KEGscam_free, KEGscam_static, KEGscam_flyby, KEGscam_topdown, KEGscam_1stperson]; _cameraNames = ["Free", "Chase", "Flyby", "Top-down", "1st person"]; _dummy = "helihempty" createVehicleLocal [0,0,0]; // Dummy object for distance command KEGscameras = _cameras; // Hack to allow access from events.sqf // Add cameras to listbox lbClear _cLBCameras; {lbAdd[_cLBCameras, _x]} foreach _cameraNames; // Add separator & toggles _cLbSeparator = lbAdd[_cLBCameras, "---"]; lbSetColor[_cLBCameras, _cLbSeparator, [0.5, 0.5, 0.5, 0.5]]; _cLbMissileCam = lbAdd[_cLBCameras, "Missile camera"]; _cLbToggleNVG = lbAdd[_cLBCameras, "Night vision"]; _cLbToggleTags = lbAdd[_cLBCameras, "Unit tags"]; _cLbToggleAiFilter = lbAdd[_cLBCameras, "Filter AI"]; KEGs_tgtIdx = 0; KEGs_cameraIdx = 0; showcinemaborder false; lbClear _cLBTargets; onMapSingleClick "[""MapClick"",_pos] call spectate_events"; ["EventLogAdd",["Initialize",[1,1,1,1]]] call spectate_events; // Check for client side addon _foo = "KEGsAddon10" createVehicleLocal[-1000,-1000,0]; //_foo = "KEGspect_bar_yellow" createVehicleLocal[-1000,-1000,0]; if(!isNull _foo) then { deletevehicle _foo; KEGsClientAddonPresent = true; }; // Spawn thread to display help reminder after a few seconds [] spawn {sleep(3);if(dialog) then {cutText["\n\n\n\n\nPress F1 for help","PLAIN DOWN", 0.75]}}; _camSelLast = 0; _tgtSelLast = 0; _mouseLastX = 0.5; _mouseLastY = 0.5; _nNoDialog = 0; _lastCheckNewUnits = -100; _lastUpdateMarkers = -100; _lastUpdateMarkerTypes = -100; _lastUpdateTags = -100; _lastAutoUpdateLB = time; KEGsCamPos = [0,0,0]; _cxpos = 0; _cypos = 0; _czpos = 0; _cspeedx = 0; _cspeedy = 0; _tbase = 0.1; _h = 2; // Main loop - Ugly double loop to avoid exit after 10000 iterations while{dialog} do { while{dialog} do { call { // Check for listbox selections if(_camSelLast != lbCurSel _cLBCameras) then { _cs = lbCurSel _cLBCameras; if(_cs == _cLbSeparator) then {_cs = _camSelLast}; // Special for toggling missile camera if(_cs == _cLbMissileCam) then { KEGsUseMissileCam = !KEGsUseMissileCam; _cs = _camSelLast; }; // Special for toggling NVG if(_cs == _cLbToggleNVG) then { KEGsUseNVG = !KEGsUseNVG; _cs = _camSelLast; }; // Special for toggling tags if(_cs == _cLbToggleTags) then { KEGsTags = !KEGsTags; ["ToggleTags", [KEGsTags, (_cameras select KEGs_cameraIdx)]] call spectate_events; _cs = _camSelLast; }; // Special for toggling AI filter if(_cs == _cLbToggleAiFilter) then { KEGsAIfilter = !KEGsAIfilter; _cs = _camSelLast; KEGsNeedUpdateLB = true; // Request listbox update }; if(_cs != _camSelLast) then { // Selected another camera - disable dropped cam KEGsDroppedCamera = false; }; KEGs_cameraIdx = _cs; }; if(lbCurSel _cLBTargets > lbSize _cLBTargets) then { lbSetCurSel[_cLBTargets, lbSize _cLBTargets]; // Selection outside listbox size }; // Update selected target from listbox if(KEGsSelect != 0) then { lbSetCurSel[_cLBTargets, ((lbCurSel _cLBTargets)+KEGsSelect)]; KEGsSelect = 0; }; if(_tgtSelLast != lbCurSel _cLBTargets) then { KEGsDroppedCamera = false; KEGs_tgtIdx = lbValue[_cLBTargets, (lbCurSel _cLBTargets)]; }; // Process mouse movement _mouseDeltaX = _mouseLastX - (KEGsMouseCoord select 0); _mouseDeltaY = _mouseLastY - (KEGsMouseCoord select 1); if(!(KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Right mouse button - Adjust position _fangle = _fangle - (_mouseDeltaX*360); _fangleY=_fangleY + (_mouseDeltaY*180); if(_fangleY > 89) then {_fangleY = 89}; if(_fangleY < -89) then {_fangleY = -89}; }; if((KEGsMouseButtons select 0) and !(KEGsMouseButtons select 1)) then { // Left mouse button - Adjust distance _sdistance = _sdistance - (_mouseDeltaY*10); if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if(KEGsMouseScroll != 0) then { // Mouse scroll wheel - Adjust distance _sdistance = _sdistance - (KEGsMouseScroll*0.11); KEGsMouseScroll = KEGsMouseScroll * 0.75; if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if((KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Both mousebuttons - Adjust zoom _szoom = _szoom - (_mouseDeltaY*3); if(_szoom > _minZoom) then {_szoom = _minZoom}; if(_szoom < _maxZoom) then {_szoom = _maxZoom}; }; // Check for new units every 2 seconds if(time - _lastCheckNewUnits > 2) then { _lastCheckNewUnits = time; _allUnits = []; _allVehicles = []; // Avoid game logics _foo = []; //Next line of code adapted by norrin for revive script {if(side _x != sideLogic && (_x distance getMarkerPos "Boot_Hill") > 700) then {_foo = _foo + [_x]}} foreach KEGsAllUnits; {_allUnits = _allUnits + (crew _x);_allVehicles = _allVehicles + [_x]} foreach _foo; _newUnits = _allUnits - deathCam; _newVehicles = _allVehicles - _ehVehicles; if(count _newVehicles > 0) then { // Add event handlers to new vehicles _ehVehicles = _ehVehicles + _newVehicles; { // Add fired eventhandler for map indication _fh = _x addeventhandler["fired", {["UnitFired",_this] call spectate_events}]; //_kh = _x addeventhandler["killed", {["UnitKilled",_this] call spectate_events}]; _x setVariable["KEGsEHfired", _fh]; //_x setVariable["KEGsEHkilled", _kh]; } foreach _newVehicles; }; if(count _newUnits > 0) then { // Add new units to end of list deathCam = deathCam + _newUnits; // Request listbox update KEGsNeedUpdateLB = true; // Create markers { // Crete marker _m = createMarkerLocal[format["KEGsMarker%1", count _markers], getpos player]; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.4, 0.4]; _markers = _markers + [_m]; // Set marker color if(side _x == west) then {_m setMarkerColorLocal "ColorBlue";}; if(side _x == east) then {_m setMarkerColorLocal "ColorRed";}; if(side _x == resistance) then {_m setMarkerColorLocal "ColorGreen";}; if(side _x == civilian) then {_m setMarkerColorLocal "ColorWhite";}; // Create particle source _s = "#particlesource" createvehiclelocal (getpos _x); KEGsTagSources = KEGsTagSources + [[_x, _s]]; // If tags are on, turn them off and back again to include new units if(KEGsTags) then { ["ToggleTags",[false, (_cameras select KEGs_cameraIdx)]] call spectate_events; ["ToggleTags",[true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; } foreach _newUnits; }; }; // Request listbox update every 4 seconds to update dead units or jip player names if(time - _lastAutoUpdateLB > 4) then { _lastAutoUpdateLB = time; KEGsNeedUpdateLB = true; }; if(KEGsNeedUpdateLB) then { // Clear and re-fill targets listbox lbClear _cLBTargets; for "_idx" from 0 to ((count deathCam)-1) do { _x = deathCam select _idx; _name = ""; if(alive _x) then { // Unit is alive, use name command _name = name _x; _nameCache set[_idx, _name]; } else { // Dead unit, use cached name _name = _nameCache select _idx; }; if((!KEGsAIfilter or isPlayer _x) and ((side _x) in KEGsShownSides)) then { _i = lbAdd[_cLBTargets, _name]; lbSetValue[_cLBTargets, _i, _idx]; // Value used to id unit if(side _x == west) then {lbSetColor[_cLBTargets, _i, [0.8,0.8,1,1]]}; if(side _x == east) then {lbSetColor[_cLBTargets, _i, [1,0.8,0.8,1]]}; if(side _x == resistance) then {lbSetColor[_cLBTargets, _i, [0.8,1,0.8,1]]}; if(side _x == civilian) then {lbSetColor[_cLBTargets, _i, [1,1,1,1]]}; if(not alive _x) then { // Whoops, unit is dead, change color lbSetColor[_cLBTargets, _i, [0.5,0.5,0.5,1]]; }; //if(_x == KEGs_target) then { // Select target // Not a good idea //lbSetCurSel[_cLBTargets, _i]; //}; }; }; KEGsNeedUpdateLB = false; }; // Check limits if(KEGs_tgtIdx >= count deathCam) then {KEGs_tgtIdx = (count deathCam)-1;}; if(KEGs_tgtIdx < 0) then {KEGs_tgtIdx = 0}; if(KEGs_cameraIdx < 0) then {KEGs_cameraIdx = 0}; if(KEGs_cameraIdx >= count _cameras) then {KEGs_cameraIdx = (count _cameras)-1;}; // Select camera, get target if(!KEGsMissileCamActive) then { (_cameras select KEGs_cameraIdx) cameraEffect["internal", "BACK"]; KEGs_target = deathCam select KEGs_tgtIdx; }; lbSetCurSel[_cLBCameras, KEGs_cameraIdx]; if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] != KEGs_tgtIdx) then { // Find listbox element with matching value for "_idx" from 0 to (lbSize _cLBTargets) do { if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] == KEGs_tgtIdx) then { lbSetCurSel[_cLBTargets, _idx]; _found = true; }; }; }; //if(lbCurSel _cLBTargets != KEGs_tgtIdx) then { // lbSetCurSel[_cLBTargets, KEGs_tgtIdx]; // }; camUseNVG KEGsUseNVG; if(ctrlVisible _cMapFull) then { KEGscam_fullmap cameraEffect["internal", "BACK"]; }; //ctrlSetText[_cDebug, format["%1", count _markers]]; // Update tag particlesources if(time - _lastUpdateTags > (1/5)) then { _lastUpdateTags = time; if(KEGsTags) then { ["ToggleTags", [true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; }; // Update markers 10fps _rate = 15; if(count _markers > 100) then {_rate = 7.5}; // Update large number of markers less often if(time - _lastUpdateMarkers > (1/_rate)) then { _lastUpdateMarkers = time; // setMarkerTypeLocal is very slow, call it only once per second _doMarkerTypes = false; if(time - _lastUpdateMarkerTypes > 1) then { _lastUpdateMarkerTypes = time; _doMarkerTypes = true; // Allow update marker types }; if(ctrlVisible _cMapFull) then { // Position camera in the middle of full map, for sound and // smoother marker motion (distant objects appear less smooth) _mapFull = _disp displayctrl _cMapFull; _mappos = _mapFull posScreenToWorld[0.5, 0.5]; KEGscam_fullmap camsettarget _mappos; KEGscam_fullmap camsetrelpos [0, -1, 150]; KEGscam_fullmap camcommit 0; }; _markedVehicles = []; // Keep track of vehicles with markers to avoid multiple markers for one vehicle for "_i" from 0 to ((count _markers)-1) do { _m = _markers select _i; _u = (deathCam select _i); _m setMarkerPosLocal (getpos vehicle _u); if(!((side _u) in KEGsShownSides)) then { // We arent' supposed to show this side unit - hide marker if(_doMarkerTypes) then {_m setMarkerTypeLocal "empty"}; } else { if(KEGsMarkerNames or KEGsMinimapZoom < 0.15) then { // Set full screen map marker types - Also zoomed minimap if(ctrlVisible _cMapFull) then { switch(KEGsMarkerType) do { case 0: { // No text _m setMarkerTextLocal ""; }; case 1: { // Names if(alive (vehicle _u)) then { if(name (vehicle _u) != "Error: no unit") then {_m setMarkerTextLocal name ( _u)}; }; }; case 2: { // Types _m setMarkerTextLocal getText (configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "DisplayName"); }; }; } else { // Minimap with detailed icons but no text _m setMarkerTextLocal ""; }; if(KEGsClientAddonPresent) then { // With client side addon use better icons _type = getText(configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "simulation"); _icon = "Arrow"; switch(_type) do { case "tank": {_icon = "KEGsTank"}; case "car": {_icon = "KEGsCar"}; case "soldier": {_icon = "KEGsMan"}; case "ship": {_icon = "KEGsShip"}; case "airplane": {_icon = "KEGsPlane"}; case "helicopter": {_icon = "KEGsHelicopter"}; case "motorcycle": {_icon = "KEGsMotorcycle"}; case "parachute": {_icon = "KEGsParachute"}; }; if(_doMarkerTypes) then {_m setMarkerTypeLocal _icon}; _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; } else { // No client side addon - basic markers if(_doMarkerTypes) then {_m setMarkerTypeLocal "Arrow"}; if(_u == vehicle _u) then { _m setMarkerSizeLocal[0.33*KEGsMarkerSize, 0.27*KEGsMarkerSize]; } else { _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; }; }; _m setMarkerDirLocal (getdir (vehicle _u)); } else { _m setMarkerTextLocal ""; if(_doMarkerTypes) then {_m setMarkerTypeLocal "Dot"}; _m setMarkerSizeLocal[0.4,0.4]; }; }; if(not alive _u) then { if(KEGsClientAddonPresent) then { // Switch to darker color, cant use side since the unit is already dead if(getMarkerColor _m == "ColorBlue") then {_m setMarkerColorLocal "KEGsDarkBlue"}; if(getMarkerColor _m == "ColorRed") then {_m setMarkerColorLocal "KEGsDarkRed"}; if(getMarkerColor _m == "ColorGreen") then {_m setMarkerColorLocal "KEGsDarkGreen"}; if(getMarkerColor _m == "ColorWhite") then {_m setMarkerColorLocal "KEGsGrey"}; } else { _m setMarkerColorLocal "ColorBlack" }; }; if(vehicle _u in _markedVehicles) then { // This vehicle was already marked, hide marker _m setMarkerTypeLocal "Empty"; } else { _markedVehicles = _markedVehicles + [vehicle _u]; }; }; // Follow target with small map _map = _disp displayctrl _cMap; ctrlMapAnimClear _map; if(KEGsDroppedCamera) then { // Center on dropped camera position _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, [_cxpos, _cypos,0]]; } else { // Center on target _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, getpos KEGs_target]; }; ctrlMapAnimCommit _map; }; // Check if target changed and center main map if(KEGs_tgtIdx != _lastTgt) then { _map = _disp displayctrl _cMapFull; ctrlMapAnimClear _map; _map ctrlMapAnimAdd [0.2, 1.0, getpos (deathcam select KEGs_tgtIdx)]; ctrlMapAnimCommit _map; }; if((_cameras select KEGs_cameraIdx) == KEGscam_1stperson) then { // 1st person view if(KEGs1stGunner) then { (vehicle KEGs_target) switchCamera "GUNNER"; } else { (vehicle KEGs_target) switchCamera "INTERNAL"; }; (vehicle KEGs_target) cameraEffect ["terminate","FRONT"]; }; // Get target properties _dir = getdir vehicle KEGs_target; _bb = boundingBox vehicle KEGs_target; //_h = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _foo = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _l = ((_bb select 1) select 1) - ((_bb select 0) select 1); // Length _w = ((_bb select 1) select 0) - ((_bb select 0) select 0); // Width _hstr = 0.15; _h = (_foo*_hstr)+(_h*(1-_hstr)); // Set UI texts _role = ""; if(vehicle KEGs_target != KEGs_target) then { if(KEGs_target == driver vehicle KEGs_target) then {_role = "(Driver)"}; if(KEGs_target == gunner vehicle KEGs_target) then {_role = "(Gunner)"}; if(KEGs_target == commander vehicle KEGs_target) then {_role = "(Commander)"}; }; _name = "Unknown"; if(alive KEGs_target) then { _name = name KEGs_target; if(_name == "Error: no unit") then {_name = "Unknown"}; }; if(KEGsDroppedCamera and isNull _nearest) then { // Dropped camera mode - no target _name = ""; _role = ""; }; ctrlSetText[_cName, format["%1 %2", _name, _role]]; ctrlSetText[_cCamera, format["Camera: %1", _cameraNames select KEGs_cameraIdx]]; // Set name color to gray if dropped cam _ccName = _disp displayctrl _cName; if(KEGsDroppedCamera) then { _ccName ctrlSetTextColor[0.6, 0.6, 0.6, 1]; } else { _ccName ctrlSetTextColor[1, 1, 1, 1]; }; // Set toggle text color for camera menu if(KEGsUseMissileCam) then {lbSetColor[_cLBCameras, _cLbMissileCam, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbMissileCam, [1,1,1,0.33]]}; if(KEGsUseNVG) then {lbSetColor[_cLBCameras, _cLbToggleNVG, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleNVG, [1,1,1,0.33]]}; if(KEGsTags) then {lbSetColor[_cLBCameras, _cLbToggleTags, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleTags, [1,1,1,0.33]]}; if(KEGsAIfilter) then {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1,1,1,0.33]]}; if(KEGsDroppedCamera) then { // Dropped free camera, moved with WSAD keys if(KEGs_cameraIdx != 0) then { // User changed camera KEGsDroppedCamera = false; }; // Adjust speed from buttons held down _spd = (_sdistance max 1)*20; if(KEGsCamForward) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((_spd*_tbase)*cos _fangle); }; if(KEGsCamBack) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos _fangle); }; if(KEGsCamLeft) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((_spd*_tbase)*cos (_fangle-90)); }; if(KEGsCamRight) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos (_fangle-90)); }; // Move camera _cxpos = _cxpos + (_cspeedx*_tbase); _cypos = _cypos + (_cspeedy*_tbase); _czpos = 0; _h = 2; // Static camera height _l = 2.2; // Slow down _bstr = 5; _cspeedx = _cspeedx * ((1.0-(_tbase*_bstr)) max 0); _cspeedy = _cspeedy * ((1.0-(_tbase*_bstr)) max 0); // Check for nearby targets _dummy setpos[_cxpos, _cypos, 1.5]; _objs = [_cxpos, _cypos, 1.5] nearObjects 5; _nearest = objNull; _dist = 10; { { _d = _dummy distance _x; if(_d < _dist and _x in deathCam and alive _x) then {_nearest = _x;_dist = _d;}; } foreach crew _x; } foreach _objs; if(!isNull _nearest) then {KEGs_tgtIdx = deathCam find _nearest}; } else { // Set targets for all cameras _cxpos = getpos vehicle KEGs_target select 0; _cypos = getpos vehicle KEGs_target select 1; _czpos = getpos vehicle KEGs_target select 2; }; KEGscam_target camSetPos[_cxpos, _cypos, _czpos+(_h*0.7)]; KEGscam_static camSetTarget KEGscam_target; KEGscam_free camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; KEGscam_flyby camSetTarget KEGscam_target; KEGscam_topdown camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; {_x camSetFov _szoom} foreach _cameras; // Static camera, follows unit from behind KEGscam_static camSetRelPos[sin(_dir)*(-(_l*_sdistance)), cos(_dir)*(-(_l*_sdistance)), 0.6*abs _sdistance]; // Free camera, user rotates camera around target _d = (-(_l*(0.3 max _sdistance))); _z = sin(_fangleY)*(_l*(0.3 max _sdistance)); KEGscam_free camSetRelPos[(sin(_fangle)*_d)*cos(_fangleY), (cos(_fangle)*_d)*cos(_fangleY), _z]; KEGscam_free camCommit 0; // Flyby camera, no user control except zoom if(KEGs_target distance KEGscam_flyby > (_flybydst*1.1)) then { _flybydst = 20+(speed vehicle KEGs_target); KEGscam_flyby camSetRelPos[sin(_dir)*_flybydst, cos(_dir)*_flybydst, 1+((random _h)*1.5)]; KEGscam_flyby camCommit 0; KEGscam_target camCommit 0; }; // Top-down camera KEGscam_topdown camSetRelPos[0.0, -0.01, 2+((0 max _sdistance)*15)]; KEGscam_topdown camCommit 0; // Commit static and flyby cameras _comSpeed = 1.0 - ((speed vehicle KEGs_target)/70); if(_comSpeed < 0.0) then {_comSpeed = 0.0;}; if((vehicle KEGs_target) distance KEGscam_static > 650) then {_comSpeed = 0}; // Jump immediately to distant target KEGscam_static camCommit _comSpeed/2; KEGscam_target camCommit _comSpeed/3; KEGscam_flyby camCommit _comSpeed; _mouseLastX = KEGsMouseCoord select 0; _mouseLastY = KEGsMouseCoord select 1; _camSelLast = lbCurSel _cLBCameras; _tgtSelLast = lbCurSel _cLBTargets; _lastTgt = KEGs_tgtIdx; }; // Wait a moment. 150fps ought to be enough for everyone :-) _tt = time; sleep(1/150); _tbase = time-_tt; }}; // Dialog closed with esc key titleText["","BLACK IN", 0.5]; // Destroy cameras, markers, particlesources, etc. {camDestroy _x} foreach _cameras; deletevehicle KEGscam_target; deletevehicle KEGscam_missile; deletevehicle KEGscam_fullmap; {deletemarkerlocal _x} foreach _markers; deletevehicle _t; camUseNVG false; KEGsTags = false; onMapSingleClick ""; {deletevehicle (_x select 1)} foreach KEGsTagSources; KEGsTagSources = []; // Remove eventhandlers TODO: does this work properly? { _fh = _x getVariable "KEGsEHfired"; //_kh = _x getVariable "KEGsEHkilled"; if(typeName _fh == "SCALAR") then {_x removeEventHandler["fired", _fh]}; //if(typeName _kh == "SCALAR") then {_x removeEventHandler["killed", _kh]}; } foreach _ehVehicles; // Create a butterfly for player to fly with //gonza _bpos = [(getpos (vehicle KEGs_target) select 0)-5+random 10, (getpos (vehicle KEGs_target) select 1)-5+random 10, 1]; //gonza _bird = "ButterFly" createVehicle _bpos; //gonza _bird setvelocity[0,0,5]; //gonza _bird setpos _bpos; //gonza _bird switchCamera "INTERNAL"; //gonza _bird cameraEffect["terminate","FRONT"]; //gonza _bird camCommand "manual on"; //gonza KEGsBird = _bird; //gonza onMapSingleClick "KEGsBird setpos [_pos select 0, _pos select 1, 2];KEGsBird setvelocity[0,0,5];"; //gonza cutText["\n\n\n\n\nLand on ground to return to spectating\nClick at map to jump to location","PLAIN DOWN", 0.75]; // Wait until landed, delete bird & restart script //gonza waitUntil{getpos _bird select 2 < 0.05 and speed _bird < 1}; //gonza onMapSingleClick ""; // sleep(0.5); // titleText["","BLACK OUT", 0.5]; // sleep(1); joueur1 switchCamera "INTERNAL"; joueur1 cameraEffect["terminate","FRONT"]; spectat_on = false; //_player switchCamera "INTERNAL"; //_player cameraEffect["terminate","FRONT"]; //deletevehicle _bird; //[_player, _killer, "noWait"] execVM "spect\spectavts.sqf"; };statique = true ; publicvariable "statique" ; If (true) ExitWith {}JFIFHHC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?O Lk D $ϩ5Q?>z>Z{wO$rD,X>r@$pb'SPOk?s5֞J˦E,a#2z09Is2࿂|JVڝGYO,6ȚW/!P}㟂M* XR`ؤq}K\p~7Rqxf7p[*rFxUAGZ_+pVĺszy9O`ER>ѾJ,_ ;[!:Ns *D[rJ+H~(Q6 |Y3YfY4!22wM<瞘o{9ӾBGN.d{gDҺѼpvߴg(|l4{۝rK9%Q!Xڑ21ؑB˨4 kŞ*Cе+lD-r#! 2ۈ 9T%m U݈6:ށf~oJg?hW k~!]C}pZ OQ3nkhZ^KHb1 }H109!d 4qxT'5m:G} eOPppJeI^f:(ՙUXd5\SbaU`=8'ܜוR勺-"!x^K{-J Eb^i\6NӁH]mB~<`|.߃ޭxQSuA 7Ir"g(!$|[WoMc>"ou[n@)ͼk%ҳ6\)ШwlhoXѵ+V4]Z6BbA%CѣmRT`TRE 0}17uO^e]N:CR9edSHp3EW`$OzMRcN0 t{dJ$:9ubXcQ9bDA^ OʑYAQzGO皚9e+|)?}U݄;3n9%b/;~!?ZZF/P1S?}UYbkOkmGu>< 4߁>(dx4b e3:l_^tҠ)N$3tgЮbtIՌǦ}+ΩkZkoI^h2ycC Ko%@cWA`sko^{# k}JGI!"@OOA9=\lN6@^kKe#1Ұ 8RIJʋAZMa)uI =VN:+ u;Cwo$88 *?^\$9W>+W[̈Q7_ߓ_.Kuז|M>*{Zh֍M5cnS‘ʹḇ9gh/ 2~aj B\NE<csl!Ҹ  o;l溭[\(TI( CgW2˷Rz]Z4Gp9i̯!g|.G ,EfM܍w;[jGw?mڢaF<ŌOۚ$F|eu)$Ƨc r ۃKo2$O06'5|AM})Mj'ͳܨqE\j}ƴ^2NE,70r0L,1ЏUj2]|A]pc\ Sy-bu \eڒay8<ZTK݋vA"VyGu⸿?h/xZ['HZAgIڀC1 z|W<cN&h0O=K K6 o0%K37|`-ѭ;A|9/Q䐬Sp%K&8.~^_eB,4?xrtuT,Vx$ۜ ً 仗᷈[P(ճD ls#+ Ώ  |,~"h:4L@+{wu\ :d;g%Fߒ~5Bˎ+?m?ڝ1x{4:hpM42@T`P[O 2&›I湪V\RhH񍗉ƍ<ڲF&e-No!+\{mT?`u^}%Il.Mݹ,Q2V)!+]ɾ%5g[b8Z4BOe9!G#~+l)5/.P$?&0e3ҊXxҗ4X9\(e|@wZ%o]¡Zcn+Mlpq_4K6ߗLo7K=kS)ilO4h|(c(OG6#.G.:t *ʾ՟2cR>˼<(aG'ڙ6pf~~|S6e@1Z/4䪂W98*qy"~4W1|61:\;k2U3 p'n~6cotˊkHׅ~Bi dk˟!X(8+-:KTUDR@ 1 5bGFZesmn\,߮0sW<=vv}q T,d,pyki=j2M[q˱PAֺH|G, rX89r#b}'{$>Z$-7cW2g< C&$iuv(mu?X9S2%uv]Ҵ6:}i!wW灞[7I7!ŦW&9$cǩɮ ~)-~$xgh?rcڧ)*=)ri?7;y 3J8皙tnf{xbקA_Wx_ /_h ZJ`y;l:ڴ?lcp|k{=⹞? $R]tI?̞֞>c=Bs}es S>Tmuryd+qXuC Vy W'8u#>}:1 os 7;Tf'GV9Wо8]%j%lu`BrY I"upϷӌ1|:~n@Sm=ֿ\nkQr|$gJ|Vһ.1=@ W_No{[AӮ 1[㵲Jm8qk{T_zW1썸cVρcZE^\,pWl ';IZ>lCxvi1~7zݺJZí>a0#%Y1V_;ܹxڟ }?{Fsp"䬳h ;9} =JC mzLI>W>+xg׈h:U]5ӥnHYIP"u؀qt5 _<9o^EXJҡHC0_`I'ϙ_俯Snk#s?ڌ/[ũcxOj/Aio# B]߸Tg,r=OWŒ[Cou47S\m`lb}>czHSq8#ڽeVlIk+&w³5N![;xYcvx7%v4#SwvL )\ʹ|$$$ږw6p^3v5?|1%^- k|Q7{..po2[3Tǟ^/6w^)8)9?*dԹ5`s?HO9uu ӽy_?l2AvJi(ب]%vf}ğǭ0ezfQ/ZYM;ɶO;>75:_m#,{3O"y!n3O$c5=?o=GKŗzoc]Q͸dGj ܑK3_^CAPso$RXcagqo$*`ڃpQ<*ηxgmkФy'& >漜0 E5w4{_?Lߪs^ <%RFU$Ix'<}c{2Y[}:yz煦׊]CGp7X0`ݴ"OƅXj^-O1ۮD%8k:V> Z,v{jyy kԴWƞ6Ϭ[GcpXybYzd'ڼ7y5w54fmt;hmb h xNHkoH=o6"̍F|0I\ Jz&v4ѥ[ئ<cȸg˵cmBuVp1AZEk,7 w%XO8Ui hlC .>>TP9;U=]ujwn\dd=~'/otQ]]{dk O{lyF +*@?5ZR$cpsFW=JPcGz6 ƽsꚍ.HO1 At|ө⧊~[xn=/XkzjXtB' ˹_1JXu6Ugok9X3;1 %ca“wN4ιuyo |(bQ.>m=㞸+ajTNRzZ 42ʼuAWQ0 !sG$׹xW|" o'"szҼiѝ?_GxV=]{(%mRCf":-#WYHROVMn C{퇤 lӮm'r `| {y=F(wFUS;;g#X' C@9oh|iw,}հxG-˲$S ydF8MrzcO5zU )ej >*e.NӅG>{)%vᝇ U/n;'yhn[oX 5x4RCt_F۰;7~u?lrwh [@"_Gw۩]}Zƥi&vH_[j7t#=A~|7RSHLrrIR35yWh5]\,u<aKvSx<}|=N-Dc6!"2?9#ƽAc('ԏmgmχ>ζg ,n ?WܲGRN1䟥u ώ>.^$Wچ 7(̋#@zt_]е X6iבft|kl5'F\81;F߀[~Wk\.Oui պ\R I?66-~0mX&^ڢp$UvokʼXj:yuio,0%W#qH_O~޷:ϊPf$䃎:y5)Frd^+_$- FVO|mG_t-:Z\j*"GE 9\v}?YDRR!{ k-K[D4+ihn\V=s-q# xna 0~y)_#-n] FgW536ƴe]$z:\Hd]Y䞿.F9S.ۈcg09|?oe]q\HQ-d=;5αeZ$Xe@G7A%kϷ<7^0_EoNu׃ws ct\[{ wD!2)r@>ҡX-I`sct7YPNwsmQF9j 4jުNj_ΉYj:"/Q{rr~^:KtyfCGu;lĨ#-c^eƗZdRGF ۞~޷> Ӵ8IY$\' 6n c[E]=|Ҷɮy5h o/ ?=IbWMgƗpT͵5 .ط>f$:sQMFzlwyI%0Ke/] 2λfGh$pfwP8͏\{׬_mv6eTu,e'lc,Wx'kcOwc ,)dɷpGT;VqS_:dׄTq7.0NԞ+<d2* = xMk(-$7q"s`cW>:^ށz}jx$0n?)s?^ gYWY"G?+uc⺰^I寎~#_6A}O8Vv8\zxLgr7  > b˸ {t/u=Kx3pT{G^֞ Yqi|֎(f`BV8|Sվ"'y"#i5=pL+\C^3s|AZ ē\@,g`\8r3Q|3di77% ,L 䜞2ʸ'J3kVRbk~ '__B8+myY J 1GZ1!YX^DȆ3d㑒s녮׷^9{XS5(NO8ֺ[O5I΂Ŕ1E`L`ut5ʐd_v_ x|u}͸`>'@ Udc ? I5[KMFF@2BH䜚 xWĞ-VX"iQ^>' MN4/'{hdbڅ2?"/FT-C0 #7=[AyLVwj7%pbǸc4WS5PduʺZS3d֞N⽏>9|"O x>*5k lL)ZmU![T? |e VHvY yg#OATx=ΓrmZ%>fJrvp3\D{-7ghtL?\(fq%R{2=R6m]cUCm_,y"qMyk F;iِý$;@xNq7졬6vk;:;Y ]G36z=X-_:܃Y>1tgĺ4{{-oD}TOM_j&ԬmQu_ Imo6g$|?sv>U޼M>|7/{/H5+.y+̊elpJ Hs Xu5SPN[Ĩv[Sv֬t"3BgK'ƗRܙ''܎8DjҦ9kmvoS Ki&֚Q3n)f,@Uh tJDv#&U0Gf8Nu;{[gY[/+le)? ?x'Y?ŧ|iBc^Dk:N{T_M~"_ E ;Xqf!FOROVm uBGm<=E`"8ӥtO5?U}> x$wˏ-\\īz힁-Z؅Wm?¯3 d0)'*M]^}h@٨6h vgxZa[.[gۆU 2OJ5/2i6Nhךяʷh@MTa7 xFO[/F@a<f;zkCmGs 귲ݬr琑w+uO^NAں?햟~.g6Li6 ?>4E{iO;;vfŚId\eً҅~w mX;,z+>XtI,6:5Y&7HJŒ@ۯ&KTԴ&HF!m8-̬IAmŝֻ~&yWe Eiϔ*c:3md҈6N R0a$O[\BGmcl" l㓓qYۚr]H^K| JSFāJ4>"6V+mosycʕ;$l;GW{Av΢X 3ۙHLpFIqdtc@;*r G@~Na$d}V 5I;gҠ$څs+ʻ3v5_ Zx]6\* rOoj?|Ux{KxSҟEr `ރ};7Yn+բ+m8?Ǹ biVo_"[4ujOﮑ->Utٕ6d#;FMeh 囵Aem~c^n pRqqޓdEe B?t+ZRbm=_ҾkAi Ih4NPylCA*th߰5['a,ABAQߑ9 zW]$KknQu8=kC yٞIwI1yzcuᦜD5(𥏍E&ޝ:cin=.v^.[<~1h% laaW|8Y&qݙg*msk%}6Ğׯ43JT9b$VdFJln2Ez՜j>?qv8%Z1&wz 85_hƑ[EL6\`sNgkqK#4 U1"^v1C!8I7BF2Mt ~ MƢ#.%JO~X<zw{c uM{Oe&Y9hI;maAZ{$gcyWKlE=*A/o좋19 jzzʰ!ÚDK+ؤ¤dI/eTdQ9г@oX:GE܄˭](MJ K# 8Nol<wx>*!HO#폄cu[{h)$q ,1XOap8#???/Ӽ#mtsM-m '\>OF_׫== 15i.Z ^[,m=svZyXF:q5!I%udIdaiXٓF4!Kub;pr1u_0A Z@]r1XbJI')5(_*t>l5&H@+d$DN=w眃:qYWv2 )A}y듃#+>H#zE:x[meFT}5<7,&@eC?ZO"Ś{ۢQFڀBU-n=_\1ې[ 'q#}}&Jq1X3l TdiX\Kkʫ&ՙ`q9aGZ{HqW n_R-;.eSϩ SKiKܫGg1@=noC7XMT-u*}=:ִw%Uh צ=96 Zmjzf|mI4XzsHiI{_&tcE0a͹rq3]'ß^,[]j$ҮjrXn'׭{m'oAwwṀh<:opxbݑ:W-IԌ sMFY/noJ߻%'#߽\jv?lf ɂf3Y?|KP񏅾(jVKb Z afI=$'ŕk hmZet(Dvvpʼnccc[{wǙoLBmZ}T͟Oīpe#j>Gkvi+,K\m+u9YLd$g5 ^@ַpÆ3О@nqTӋnw|Udrse[ OFŸAy/"-20?|~gCxohQ<mn|gh O_L'H]m2r󓴾sWm(ʕH+?7UW2wk<𒴒xe/X5yMQ ͍4WS֍y)w1' M{o>=M}/~\e-<3$)Ϝ@Ԁ{}%w+Z*(9[|ـѲr0?ȯhѼgj,")Lj)ascQLӴ-/O3 u2O9?d&+SQ~bǶQOr}yq޳f>60"a.rNM{;iKI-ǙvcEssRp=*/5=FRRpql|݉CzS]δZ}e)1;(?4k&FO܆ŤxOIx+XSLl>rJbdwcBXWgP.;:[MW >b9\dMxj3tѼ5bX!~7%hImg:oi$""d܁cP1֥Er_WnCMy7#K: ޷kKGex-bqFawr18d>k0*#p0qc+?g3 W:mvm%e F 5ܣ*ҕ (@ qbʭ][d^gQ\0 aIRwJo3G=ƀwwwXK0f=;W_wš6šEԈڛ [l