- Librairie de scripts © Pumpkin ( A2 OA )

   Téléchargement de la librairie de scripts ©Pumpkin

Contenu :
  • Clean_bodies.sqf: (v1.0) effacement des ennemis morts pour mission très chargée en IA
  • Charge_obj.sqf:(v1.4) chargement d'élément (caisses de munition, armes statiques,...) dans un camion
  • Client_detection.sqf :(v1.0) test de détection machine-client
  • Server_detection.sqf :(v1.0) test de détection serveur
  • GetGPSCoords.sqf :(v2.0) transforme les coordonnées cartésiennes d'ArmA2 (cf. commande "getpos..") en coordonnées GPS
  • Reammo_auto.sqf :(v1.0) réapprovisionnement automatique de véhicule
  • Reammo_veh.sqf :(v1.0) réapprovisionnement de véhicule
  • Extract_Cargo.sqf :(v1.0) transforme le tableau issu des commandes "getMagazineCargo" et "getWeaponCargo" en tableau similaire à celui des commandes "Magazines" et "Weapons"
  • Rearm_Cargo.sqf :(v2.1) remplissage universel de caisse d'armes/munitions
  • INIT_SPEACH_BROADCAST.SQF :(v1.0) initialisation des fonctions ci-dessus
  • Fonctions_Speach.sqf :(v1.0) fonctions de messages multimédias en Multi-joueur (chats, titletext, sons,...)
  • Objects_generation.sqf :(v1.0) génération d'objet alèatoire et sur périmètre (+ répertoire WPNS_ARRAYS\)
  • Teleport_group.sqf :(v1.0) téléportation de groupe, dans et hors véhicule
  • Fonctions_Math.sqf :(v1.0) fonction(s) mathématique(s)
  • Getbuildingpos.sqf :(v1.0) retourne un tableau des positions d'un batiment passé en paramètre
  • Getrndtrgpos.sqf(v1.0) Renvoi une coordonnée aléatoire à l'intérieur d'un déclencheur (rectangle ou ellipse)
  • Repair_veh.sqf :(v1.3) Systeme de réparation de véhicule "simpliste")

N'hésitez pas à parcourir son site qui est plein de ressources pour Arma.

- Scripts OFP (écrit en 2006-2007 par JackFrench) ou Arma: Cold War Assault depuis 9 aout 2011
Script caméra autour d'une cible --> Cam_rotation.sq
;ATTENTION écrit pour OFP ;========================================================================== ; Fais tourner la camera autour de la position de "cible" version 1.0 ; ; [getmarkerpos "cible",getpos soldat1, 0, 50, 10, 50, 0.1] exec "Cam_rotation.sqs" ; [getpos patrouille,getpos espionintro,-30,0,10,5,0.1] exec "Cam_rotation.sqs" ; paramètre 1: origine ; paramètre 2: point concerné ; paramètre 3: angle de départ ; paramètre 4: angle d'arrivée (la caméra parcourt les angles entre celui de depart et d'arrivée) ; paramètre 5: placement par rapport au point (devant derriere) ; paramètre 6: placement par rapport au point (hauteur) ; paramètre 7: frequence ; _coordOrigine = _this select 0 _coordPoint = _this select 1 _Theta1 = _this select 2 _Theta2 = _this select 3 _recul = _this select 4 _hauteur = _this select 5 _freq = _this select 6 _inc = 1 ? _theta1 > _theta2 : _inc = -1 _coordx = _coordOrigine select 0 _coordy = _coordOrigine select 1 _coordz = _coordOrigine select 2 ;On calcule les distances algébriques pour chaque coordonnées. _PosX = ((_coordPoint select 0) - (_coordOrigine select 0)) _PosY = ((_coordPoint select 1) - (_coordOrigine select 1)) _PosZ = ((_coordPoint select 2) - (_coordOrigine select 2)) ;On détermine la distance entre les deux points _distance = sqrt ((_PosX * _PosX) + (_PosY * _PosY) + (_PosZ * _PosZ)) _sin = _PosY / _distance _cos = _PosX / _distance ;On regarde sur quelle partie du cercle trigo on est pour déterminer l'angle. ? _sin >= 0 and _cos >= 0: _angle = acos _cos ? _sin >= 0 and _cos < 0: _angle = acos _cos ? _sin < 0 and _cos >= 0: _angle = - acos _cos ? _sin < 0 and _cos < 0: _angle = - acos _cos ;TitleText [format["dist: %1 ; cos: %2 ; sin: %3 ; angle: %4",_distance,_cos,_sin,_angle],"PLAIN DOWN",1] _distance= _distance + _recul _rot = _angle + _theta1 ;_rot = _angle _camera = "CAMERA" camCreate [_coordx + (_distance * (cos _rot)),_coordy + (_distance * (sin _rot)),_hauteur] _camera cameraEffect ["internal","front"] _camera camCommand "inertia off" _camera camsetTarget _coordOrigine _camera camCommit 0 @camCommitted _camera #boucleprincipale _camera camSetPos [_coordx + (_distance * (cos _rot)),_coordy + (_distance * (sin _rot)),_hauteur] _camera camCommit _freq @camcommitted _camera _rot = _rot + _inc ;?_rot < 360 : goto "boucleprincipale" ?_inc == 1 and _rot < _angle + _theta2 : goto "boucleprincipale" ?_inc == -1 and _rot >= _angle + _theta2 : goto "boucleprincipale" camdestroy _camera


Script vue caméra d'un véhicule en déplacement --> cam_suiveuse.sqs
;Écrit pour OFP Fonctionne avec Arma ;========================================================================== ;Ce script réalise la vue caméra d'un véhicule en déplacement ; ; Paramètre ; 1: Le véhicule suivi ; 2: distance de la caméra au véhicule en mètres ; 3: hauteur de la caméra par rapport au véhicule ; 4: cible de la caméra ; 5: tableau contenant la condition d'arrêt ; ; Exemple pour que la camera pointe droit devant: ; [helico,10,5,objNull,[false]] exec "cam_suiveuse.sqs" ; ; Exemple pour que la camera pointe vers une cible: ; [helico,10,5,tank,[false]] exec "cam_suiveuse.sqs" _vehicule = _this select 0 _distance = _this select 1 _hauteur = _this select 2 _cible = _this select 3 _fini = _this select 4 ;Crée une caméra et la positionne sur _vehicule _camx = getpos _vehicule select 0 _camy = getpos _vehicule select 1 _camz = getpos _vehicule select 2 _dir = getdir _vehicule _cam = "camera" CamCreate [_camx + _distance * sin _dir,_camy + _distance * cos _dir,_camz + _hauteur] _cam CameraEffect ["Internal","Front"] _cam camCommand "inertia on" ? not (isNull _cible) : _cam camsettarget _cible ? isNull _cible : _cam camsettarget [_camx + 1000 * sin _dir,_camy + 1000 * cos _dir,2];goto "camLoop" _cam CamCommit 0 ;La caméra suit le véhicule #camloopCible _camx = getpos _vehicule select 0 _camy = getpos _vehicule select 1 _camz = getpos _vehicule select 2 _dir = getdir _vehicule _cam camsetpos [_camx + _distance * sin _dir,_camy + _distance * cos _dir,_camz + _hauteur] _cam camcommit 0 ~0.01 ?not (_fini select 0) : goto "camloopCible" goto "Fin" ;La caméra pointe droit devant #camloop _camx = getpos _vehicule select 0 _camy = getpos _vehicule select 1 _camz = getpos _vehicule select 2 _dir = getdir _vehicule _cam camsetpos [_camx + _distance * sin _dir,_camy + _distance * cos _dir,_camz + _hauteur] _cam camsettarget [_camx + 1000 * sin _dir,_camy + 1000 * cos _dir,2] _cam camcommit 0 ~0.01 ?not (_fini select 0) : goto "camloop" ;Termine la séquence vidéo #Fin _cam CameraEffect ["Terminate","Back"] CamDestroy _cam ;cuttext [format["%1",_fini],"PLAIN"] exit


Script déplacement aléatoire sur une position --> deplacementAleatoire.sqs
;ATTENTION écrit pour OFP ;========================================================================== ;deplacementAleatoire.sqs: Version 1.00 ;Ce script réalise le déplacement d'un groupe ou d'une unité dans une zone ;prédéterminée. ; ; ; Paramètres: ; ; Paramètre 1: le(s) unité(s) à déplacer - peut être un groupe ou une unité ; Paramètre 2: la position à partir de laquelle on définit la zone de déplacement ; Paramètre 3: le rayon de la zone de déplacement. ; Paramètre 4: le(s) unité(s) se déplacent indéfiniment ou non (booléen). ; ; ; Attention, ce script est utilisé par le script "pourchasse.sqs" ; ;Exemple: ; ;[player,getpos player,100,true] exec "deplacementAleatoire.sqs" _groupe = group (leader (_this select 0)); _pos_origine = _this select 1; _rayon_action = _this select 2; _continue = _this select 3; #actualisation _alpha = random 360; _rayon = random _rayon_action; _posx = (_pos_origine select 0) + (_rayon * (cos _alpha)); _posy = (_pos_origine select 1) + (_rayon * (sin _alpha)); _position = [_posx,_posy]; _groupe move _position; ?not _continue : goto "fin" @unitready leader _groupe goto "actualisation" #fin exit


Script poursuite --> pourchasse.sqs
;ATTENTION écrit pour OFP ;========================================================================== ;pourchasse.sqs: Version 1.00 ;Ce script réalise la poursuite d'une unité ou d'un groupe par un autre. ; ; ; Paramètres: ; ; Paramètre 1: le(s) poursuivant(s) - peut être un groupe ou une unité ; Paramètre 2: le(s) poursuivi(s) - peut être un groupe ou une unité ; ; ; Attention, ce script utilise le script "deplacementAleatoire.sqs" ; ;Exemple: ; ;[group mechants,player] exec "pourchasse.sqs" _groupe_chasseur = group (leader (_this select 0)); _proie = leader (_this select 1); _lasttime = time; _rayon = 0.5 * ((leader _groupe_chasseur) distance _proie) _pos_origine = getpos (leader _groupe_chasseur); #determine_position _connaissance = _groupe_chasseur knowsabout _proie; _distance = (leader _groupe_chasseur) distance _proie; ~1 ;Ligne de debug... ;hint format["KnowsAbout: %1 rayon: %2",_connaissance,_rayon]; ; Si le groupe se trouve à la dernière position connue de la cible, il passe ; en mode "recherche et destruction". ? (time - _lasttime) > 5 and unitReady (leader _groupe_chasseur) : [_groupe_chasseur,getpos leader _groupe_chasseur,_rayon,false] exec "deplacementAleatoire.sqs"; ; Si cela fait plus de 5 minutes que la position de la proie n'a pas ; été réactualisée, on abandonne la recherche. ? time - _lasttime > 300 : goto "fin"; ; Si les chasseurs n'en savent pas suffisamment, on ne réactualise pas ; la position de la proie. ; Info: la fonction knowsAbout renvoit la valeur 1.5 si la cible est repérée... ? _connaissance < 1.49 : goto "determine_position" _lasttime = time; ?not alive _proie : goto "fin" ?count units _groupe_chasseur == 0 : goto "fin"; #actualisation _position = getpos _proie; _coeff_localisation = (5 - sqrt _connaissance) * _distance / 20; _alpha = random 360; _rayon = (random (3 * _coeff_localisation / 4)) + (_coeff_localisation / 4); _posx = (_position select 0) + (_rayon * (cos _alpha)); _posy = (_position select 1) + (_rayon * (sin _alpha)); _pos_estimee = [_posx,_posy]; _groupe_chasseur move _pos_estimee; ~4 goto "determine_position" #fin _groupe_chasseur move _pos_origine; exit


Script ejection hélico en feu --> Ejection_Helico.sqs
;ATTENTION écrit pour OFP
;==========================================================================
; Ejection_Helico.sqs: Version 1.10
;
; PARAMETRES:
;
; Paramètre 1: L'hélico concerné
; Paramètre 2: L'intervalle entre chaque saut en parachute
;
;
; Exemple d'appel de la fonction:
; [helico,0.5] exec "Ejection_Helico.sqs"
;
_Helico = _this select 0
_freq = _this select 1
; ici, on prend tout l'équipage de l'appareil, meme le pilote!
_equipage = crew _Helico
_nb = count _equipage
? _nb == 0 : goto "fin"
#Boucle
(_equipage select (_nb - 1)) action["EJECT",_helico];
unassignVehicle (_equipage select (_nb - 1));
~_freq
_nb = _nb - 1
? _nb > 0 : goto "Boucle"
#fin
exit
;"_x action[""EJECT"",_helico];unassignVehicle _x;~0.01" foreach crew _Helico


Script bombardement --> Bombardement.sqs
;ATTENTION écrit pour OFP ;========================================================================== ; Bombardement.sqs: Version 1.00 ; Ce script réalise le bombardement d'une cible jusqu'à elimination. ; ; PARAMETRES: ; ; Paramètre 1: Rayon de la zone bombardée. ; Paramètre 2: cible à bombarder. ; ; ; Exemple d'appel de la fonction: ; [75,player] exec "Bombardement.sqs" ; _zone = _this select 0 _cible = _this select 2 #loop _where = getpos _cible _position =[(_where select 0) - random _zone + random _zone, (_where select 1) - random _zone + random _zone] _bombe = "AAA807" createVehicle _position _bombe setDammage 1 ~random 2.5 ;you can change the condition below the end ? alive _cible : goto "loop" exit


Script Créer un groupe dynamique en cours de partie -->AjouteGroupe.sqs
		
;ATTENTION écrit pour OFP ;========================================================================== ;AjouteGroupe.sqs: Version 1.00 ;Ce script Crée un groupe d'unités dynamiquement en cours de partie. Le ;leader du groupe crée s'appelle Groupe. ; ; ; Paramètres: ; ; Paramètre 1: camp du groupe à créer ("WEST","EAST","RESISTANCE","CIVILIAN") ; Paramètre 2: type d'unités à créer ("BLINDE","BLINDELEGER","INFANTERIE","INFANTERIEMECA", ; "SABOTEUR","COMMANDO","COMMANDONUIT") ; Paramètre 3: Nombre d'unités à créer (max:12 pour fantassins, max:4 pour blindés) ; Paramètre 4: Position du groupe à créer. ; Paramètre 5: Qualité des membres du groupe (min:0, max:1) ; ; ;Exemple: ; ;["WEST","BLINDELEGER",3,getmarkerpos "barracks",1] exec "AjouteGroupe.sqs" _camp = _this select 0 _type = _this select 1 _nb = _this select 2 _position = _this select 3 _qualite = _this select 4 ?_camp != "WEST" and _camp != "EAST" and _camp != "RESISTANCE" and _camp != "CIVILIAN" : goto "Fin" ?_nb < 1 : goto "Fin" ? _camp == "WEST" : _groupe = group beckett ? _camp == "EAST" : _groupe = group sentinelle1 ?_type == "BLINDE" : goto "Blindé" ?_type == "BLINDELEGER" : goto "BlindéLeger" ?_type == "INFANTERIE" : goto "Infanterie" ?_type == "INFANTERIEMECA" : goto "InfanterieMeca" ?_type == "SABOTEUR" : goto "Saboteur" ?_type == "COMMANDO" : goto "Commando" ?_type == "COMMANDONUIT" : goto "CommandoNuit" goto "Fin" #Blindé ? _camp == "WEST" : _chaine = "M1Abrams";_equip = "SoldierWCrew" ? _camp == "EAST" : _chaine = "T80";_equip = "SoldierECrew" goto "BoucleTank" #BlindéLeger ? _camp == "WEST" : _chaine = "M60";_equip = "SoldierWCrew" ? _camp == "EAST" : _chaine = "T72";_equip = "SoldierECrew" goto "BoucleTank" #InfanterieMeca ? _camp == "WEST" : _vehicule = "M113" ? _camp == "EAST" : _vehicule = "BMP" #Infanterie ? _camp == "WEST" : _chaine = "OfficerW";_chaine2 = "SoldierWB";_chaine3 = "SoldierWMG";_chaine4 = "SoldierWG";_chaine5 = "SoldierWLAW" ? _camp == "EAST" : _chaine = "OfficerE";_chaine2 = "SoldierEB";_chaine3 = "SoldierEMG";_chaine4 = "SoldierEG";_chaine5 = "SoldierELAW" goto "Infant" #Saboteur ? _camp == "WEST" : _chaine = "SoldierWSaboteurXMS" ? _camp == "EAST" : _chaine = "SoldierESaboteurPipe" goto "FormeGroupe" #Commando ? _camp == "WEST" : _chaine = "SoldierWSaboteurDay" ? _camp == "EAST" : _chaine = "SoldierESaboteurBizon" goto "FormeGroupe" #CommandoNuit ? _camp == "WEST" : _chaine = "SoldierWSaboteurPipe" ? _camp == "EAST" : _chaine = "SoldierESaboteurBizon" goto "FormeGroupe" ;----------------------------------------- ;--------- Création des tanks ------------ ;----------------------------------------- #BoucleTank _tab = [] _tab resize _nb #BoucleBld ?_nb > 4 : _nb = 4 _tank = _chaine CreateVehicle _position _tank lock false ;----------------------------------------- ;----------- Création équipage ----------- ;----------------------------------------- _equip CreateUnit [_position,_groupe,"Groupe = this",_qualite,"Corporal"] [Groupe] join objNull _tab set [(_nb-1),Groupe] Groupe moveinCommander _tank #BoucleBld _equip CreateUnit [_position,group Groupe,"Tempo1 = this",_qualite,"Private"] _equip CreateUnit [_position,group Groupe,"Tempo2 = this",_qualite,"Private"] [Tempo1,Tempo2] join Groupe Tempo1 moveindriver _tank Tempo2 moveingunner _tank _nb =_nb - 1 ?_nb>0 : goto "BoucleBld" "units group _x join group Groupe" foreach _tab ;cuttext[format["%1",count units group Groupe],"PLAIN"] goto "Fin" ;----------------------------------------- ;--- Création de l'infanterie mécanisée -- ;----------------------------------------- #Infant ?_type == "INFANTERIEMECA" : _transport = _vehicule createVehicle _position ?_nb <= 1 : _nb = 2 ;----------------------------------------- ;------- Création de l'infanterie -------- ;----------------------------------------- ;#Infant ?_nb > 12 : _nb = 12 _chaine CreateUnit [_position,_groupe,"Groupe = this",_qualite,"Sergeant"] [Groupe] join objNull ?_nb>1:_chaine2 CreateUnit [_position,group Groupe,"Tempodrv = this",_qualite,"Private"] ?_nb>2:_chaine3 CreateUnit [_position,group Groupe,"",_qualite,"Private"] ?_nb>3:_chaine4 CreateUnit [_position,group Groupe,"",_qualite,"Corporal"] ?_nb>4:_chaine2 CreateUnit [_position,group Groupe,"",_qualite,"Private"] ?_nb>5:_chaine5 CreateUnit [_position,group Groupe,"",_qualite,"Corporal"] ?_nb>6:_chaine3 CreateUnit [_position,group Groupe,"",_qualite,"Corporal"] ?_nb>7:_chaine4 CreateUnit [_position,group Groupe,"",_qualite,"Corporal"] ?_nb>8:_chaine2 CreateUnit [_position,group Groupe,"",_qualite,"Private"] ?_nb>9:_chaine3 CreateUnit [_position,group Groupe,"",_qualite,"Private"] ?_nb>10:_chaine2 CreateUnit [_position,group Groupe,"",_qualite,"Private"] ?_nb>11:_chaine5 CreateUnit [_position,group Groupe,"",_qualite,"Corporal"] ?_type != "INFANTERIEMECA" : goto "Fin" Tempodrv moveindriver _transport goto "Fin"