Documentation
Toutes les pages
Maps SP  -  par FSMOD
LES MAPS SP


AVERTISSEMENT

Le but de cet article n'est pas d'expliciter dans le détail les procédures de codage des maps SP mais plutôt de fournir un éclaircissement sur leur existence cachée cool.

DEFINITION

A ses débuts, SOF en version V1 disposait de l'option Single Player (SP). Des maps spécifiques à cette version ont été prévues dans le fichier maps.pk3 que tout joueur possède.
Toutefois avec l'avènement de la version V1.03 gold, ces maps sont devenues obsolètes car non reconnues par l'exécutable sof2mp.exe relatif à cette nouvelle version gold.
Pourquoi se priver d'une belle brochette de maps qui ont fait les beaux jours de SOF à ses débuts, alors qu'au prix d'une modification, certes fastidieuse, il est tout a fait possible de les récupérer.
L'avantage est indéniable car la modification n'intervient que du côté serveur et tout joueur pourra se connecter car il possède d'office tout le pack de maps SP depuis le jour où il a installé SOF sur son PC.


PRINCIPE

Si vous lancez une map SP sur votre serveur LAN ou WAN, vous obtiendrez soit un plantage du serveur soit dans le meilleur des cas, une arrivée sur la map mais une impossibilité de vous déplacer.
Ceci pour deux raisons principales.

  • Les points de respawn ne sont pas prévus
  • De nombreuses fonctions ne sont pas reconnues

Exemple:
Voici un extrait du log serveur après une tentative de lancement d'une map SP:

------------------------------------------------------------
Gametype changed, clearing session data.
Warmup:
target_deactivate doesn't have a spawn function
traitor_handler doesn't have a spawn function
target_deactivate doesn't have a spawn function
target_level_change doesn't have a spawn function
target_activate doesn't have a spawn function
trigger_toolbox doesn't have a spawn function
trigger_toolbox doesn't have a spawn function
trigger_toolbox doesn't have a spawn function
trigger_objective doesn't have a spawn function
trigger_objective doesn't have a spawn function
trigger_objective doesn't have a spawn function
pickup_weapon doesn't have a spawn function
pickup_weapon doesn't have a spawn function
trigger_toolbox doesn't have a spawn function
trigger_toolbox doesn't have a spawn function
ref_tag doesn't have a spawn function
ref_tag doesn't have a spawn function
target_activate doesn't have a spawn function
trigger_toolbox doesn't have a spawn function
security_searchlight doesn't have a spawn function
security_searchlight doesn't have a spawn function
trigger_objective doesn't have a spawn function

-----------------------------------

----- Server Shutdown -----


On constate que de nombreuses fonctions n'ont pas été reconnues ce qui a généré dans ce cas, un plantage serveur.

REMEDE

Il y a deux possibilités:

  1. Recoder les sources de manière à ce que toutes les fonctions soient opérationnelles.
  2. Recoder les maps elles-mêmes et modifier les fonctions non reconnues.
L'avantage de la première solution est un codage unique des sources qui autorise la reconnaissance de toutes les maps par le biais de fichiers additionnels de type ent. Cette procédure engendre la création d'un mode spécifique et tout manager de serveur devra posséder ce mode pour exploiter les maps SP. Or, la plus grosse des difficultés pour un futur manager est de récupérer ce mode serveur ainsi que les fichiers associés car il est bien connu, que certains développeurs se montreront réticents à distribuer le produit de leur oeuvre, sauf exceptionnellement, pour les plus vénaux d'entre eux, contre versement d'une certaine somme. J'en connais au moins un, ex-leader d'un clan défunt ! wink.

Quant à la deuxième solution, pour laquelle j'ai opté, elle nécessite bien entendu un travail assez fourni, puisque chaque map doit être décortiquée et recodée en conséquence. Mais l'immense avantage se reconnait dans la portabilité du système car toutes ces maps modifiées pourront être empaquetées dans un seul fichier PK3 et pourra tourner sous n'importe quel mode, ROCMOD, GOLDRUSH, XSMOD,etc.....

 

Voici quelques maps SP que j'ai modifiées. (cliquez pour agrandir)

air1.jpg air2.jpg air3.jpg air4.jpg arm1.jpg arm2.jpg
col3.jpg col7.jpg col8.jpg col10.jpg finca1.jpg finca3.jpg
finca4.jpg hk1.jpg hk3.jpg hk4.jpg hk5.jpg hk6.jpg
hk7.jpg hos1.jpg hos3.jpg hos4.jpg kam4.jpg kam5.jpg
kam6.jpg kam7.jpg kam10.jpg kam11.jpg kam12.jpg pra1.jpg
pra6.jpg shop1.jpg shop4.jpg shop5.jpg shop7.jpg shop8.jpg
kam1.jpg kam2.jpg finca2.jpg pra2.jpg pra3.jpg liner1.jpg
liner2.jpg liner3.jpg col2.jpg      
 
 
-=smile=-

Publié le 05/02/2019 17:48  Prévisualiser...   Imprimer...   Haut
Commandes Admin  -  par FSMOD
Les commandes Admin


Avant de décrire les différentes commandes dont dispose un Admin, il est utile de rappeler sa position hiérarchique parmi les entités qui animent SOF.
Sans vouloir entrer dans les arcanes des sources ROCMOD, on constate que la gradation des intervenants du plus fort au plus faible s'établit comme suit:

 

Intervenants Indice
  Sysop 3
  Admin 2
  Referee (arbitre) 1
  Player 0

 
 
Un Sysop a donc tous les pouvoirs. En particulier, c'est lui qui possède le mot de passe du serveur (rcon) et peut, à ce titre, désigner n'importe quel joueur comme Arbitre ou Admin. On passera sous silence la fonction d'arbitre dont les pouvoirs sont limités et qui à mon sens, n'a aucune utilité dans SOF2, même dans le déroulement d'un match. Seuls l'Admin et à fortiori le Sysop ont un rang suffisant pour agir raisonnablement. 

Dans un clan normalement constitué, c'est donc le Sysop et lui seul qui choisit ses Admins parmi les membres. Il est généralement le propriétaire du serveur et peut, dans le cas d'une cofondation nommer un ou plusieurs autres Sysop. Il faut toujours garder à l'esprit qu'un Sysop a tous les droits sur les autres joueurs mais aussi, possède le pouvoir suprême de modifier tous les CVARS du server, car il détient le rcon.

Il est évident qu'en cas d'abus ou de malversation d'un Sysop, votre qualité de manager vous autorise la gestion de votre serveur par le biais d'une liaison FTP. Vous pouvez ainsi changer le rcon et licencier le Sysop déviant.

Il faut aussi remarquer que même dans le cas d'une modification d'un CVAR serveur en cours de jeu, rien n'est dramatique. Il suffit de relancer le serveur pour qu'il se réinitialise avec les paramètres de son fichier de configuration.
Mais dans tous les cas évitez de partager les identifiants d'accès FTP à votre serveur à moins de placer une confiance absolue dans la personne à qui vous les confierez.

Un dernier détail qu'il est bon de connaître, le Sysop est immunisé contre les pénalités de l'anticamp, alors qu'un Admin reste sensible à leur effet, comme n'importe quel autre joueur.smile


Les commandes Admin

Les commandes doivent être saisies dans la fenêtre console et précédées du mot adm
A noter que la plupart de ces commandes peuvent être directement activées par le biais de l'interface SYSOP propre à ma version.

 
Commande Action Exemple Signification
talk Envoie un message à tous les joueurs. Le terme admin  précède le message. adm talk Hello
chat Envoie un message à tous les Admins. le vocable Admins only précède le message. adm chat Hello
kick Ejecte le joueur désigné par son ID pour une durée choisie en min (15 par défaut). Un texte optionnel peut être saisi à l'attention du joueur. adm kick 8 10 Tricheur Le joueur N°8 est éjecté pour une durée de 10 min. le terme Tricheur apparaît dans l'interface d'annonce
ban Bannit le joueur désigné par son ID pour une durée choisie en min (15 par défaut). Un texte optionnel peut être saisi à l'attention du joueur. adm ban 7 60 Wallhack Le joueur N°7 est banni pour une durée d'une heure. le terme Wallhack apparaît dans l'interface d'annonce
cancelvote Annule un vote en cours. adm cancelvote
passvote passe le vote en cours. adm passvote
gametype Sélectionne un gametype. adm gametype dm Lance une map en gametype DM
restart Relance la map. adm restart
mapcycle Lance la map suivante inscrite dans le fichier *.mapcycle du serveur. adm mapcycle
map Lance la map spécifiée. adm map mp_hk2 Lance la map mp_hk2
warmup Valide ou annule le warmup. Pour mémoire la période de warmup entre 2 maps permet aux joueurs de "s'échauffer" sans que les scores soient comptabilisés. La durée du warmup est fixée par le serveur (CVAR g_warmup). adm warmup on

adm warmup off
Valide le warmup

Annule le warmup
friendlyfire Valide ou annule le mode friendlyfire. Sur ON vous pouvez tuer vos équipiers (pénalité). Sur OFF ils sont protégés de vos tirs. adm friendlyfire on

adm friendlyfire off
Equipiers vulnérables

Equipiers protégés
extendtime Prolonge la partie d'une valeur fixée en min, 15 par défaut si aucune valeur n'est précisée. adm extendtime 20 Prolonge la partie de 20 min
timelimit Fixe la durée de la partie en min. adm timelimit 10 La partie durera 10 min
scorelimit Fixe le score à atteindre pour clore la partie. adm scorelimit 100 Le score est fixé à 100 kills
endmap Termine la map en cours et envoie les scores. adm endmap
pause Fige la partie en cours. adm pause
unpause Rétablit la partie en cours. adm unpause
freezemap Fixe ou annule l'exclusivité d'une map dans le mapcycle.  adm freezemap 1ère action: la map tourne en boucle.
2ème action: le cycle des maps reprend normalement
startmatch Démarre  un match avec des réglages particuliers. Pour info le fichier startmatch.cfg est placé dans le répertoire cfgs du serveur. adm startmatch
endmatch Met fin à un match en reprenant les réglages normaux. Pour info le fichier endmatch.cfg est placé dans le répertoire cfgs du serveur.  adm endmatch
forcematch Force le démarrage d'un match même si tous les joueurs ne sont pas prêts. adm forcematch
cfg Lance un fichier contenant des réglages particuliers.
Pour info le fichier concerné est placé dans le répertoire cfgs du serveur.
adm cfg bot Lance le fichier bot.cfg qui contient des réglages particuliers pour les bots.
password Change le mot de passe du serveur. Attention ce n'est pas le rcon mais le mot de passe pour les clients privés (g_password). adm password toto Les clients privés devront entrer le password toto pour accéder au serveur.
eventeams Egalise le nombre de joueurs dans chaque équipe. adm eventeams
swapteams Permute les équipes. adm swapteams
shuffleteams Permute aléatoirement les joueurs dans les équipes. adm shuffleteams
forceteam Force un joueur à joindre une équipe particulière. adm forceteam 5 red Force le joueur N°5 à rejoindre l'équipe rouge
switch Déplace un joueur vers l'équipe adverse. adm switch 3 Déplace le joueur N°3 vers l'équipe adverse.
swap Permute 2 joueurs d'une équipe à l'autre. adm swap 3 5  Les joueurs 3 et 5 passent d'une équipe à l'autre
lock Bloque ou débloque une équipe. adm lock red Bloque le nombre actuel de l'équipe rouge.
invite Invite un joueur à joindre une équipe bloquée. adm invite 6 blue Invite le joueur N°6 à joindre l'équipe bleue.
clanvsall Réorganise les équipes pour placer tous les membres d'un clan dans une même équipe. adm clanvsall red Tous les membres du même clan vont rejoindre l'équipe rouge
tag Marque un joueur par un repère (non visible) adm tag 7 Le joueur N°7 est étiqueté
swaptags Tous les joueurs sont marqués d'un repère adm swaptags Tous les joueurs sont étiquetés
cleartags Efface tous les repères des joueurs marqués adm cleartags Tous les marqueurs sont annulés
tagvsall Réorganise les équipes de manière à grouper tous les joueurs étiquetés du même côté adm tagvsall red Tous les joueurs marqués vont rejoindre l'équipe rouge
mute Rend muet ou redonne la parole à un joueur. adm mute 5 Fait taire le bavard N°5
penalty Envoie le joueur dans une case de penalty. En option une durée peut être précisée ainsi qu'un motif. adm penalty 5 10 camping Un penalty de 10 sec est décerné au joueur N°5 pour camping
unpenalty Libère un joueur de sa case de penalty. adm unpenalty 5 Libère le joueur N°5
strike Tue un joueur. adm strike 5 Tue le joueur N°5
slap Administre une gifle avec divers objets (1 à 5). adm slap 6 1 Gifle au joueur N°6 avec l'objet 1 
strip Dépouille un joeur de ses armes sauf du couteau. adm strip 3 Prive le joueur N°3 de ses armes
fry Embrase un joueur. adm fry 5 Le joueur N°5 prend feu
launch Propulse un joueur à la verticale. adm launch 5 Le joueur N°5 décolle
explode Explose un joueur. adm explode 4 Le joueur N°4 explose
plant Immobilise un joueur. adm plant 4 Le joueur N°4 est figé sur place
surrender Désarme un joueur et lui fait lever les bras. adm surrender 3 Le joueur N°3 est désarmé et lève les bras.
respawn Envoie le joueur à un point de réapparition (respawn). adm respawn 5 Le joueur N°5 retourne à la case départ.
bait Envoie un joueur à un point de respawn et le fige sur place sans défense. adm bait 5 Le joueur N°5 est renvoyé sans armes et immobilisé à un point de respawn.
forcesay Oblige un joueur à dire quelque chose. adm forcesay 5 Je suis un noob Le joueur N°5 émettra la phrase "je suis un noob"
dummy Applique ou supprime un marqueur au dessus de la tête d'un joueur. Ce marqueur est visible à travers les obstacles. adm dummy 3 Le joueur N°3 est pointé par le marqueur
novote Empêche un joueur de voter pendant un certain temps (en min). adm novote 5 10 Le joueur N°5 est privé du droit de vote pendant 10 min.
rename Attribue un nouveau pseudo à un joueur. adm rename 5 Biloute Le joueur N°5 à été renommé  Biloute.
backfire Retourne les projectiles vers leur propre tireur. adm backfire 5 Le joueur N°5 s'autodétruit par ses propres balles.
cvarcheck Retourne la valeur du CVAR. Si le CVAR n'a pas été paramétré par le client un "unset" est renvoyé. adm cvarcheck 5 cl_guid Retourne le GUID du joueur N°5


del.gifCommande cvarset

Il existe dans le code source de ROCMOD, une commande particulière, cvarset, que le programmeur à volontairement inhibée, la jugeant dangereuse dans les mains d'un Admin trop zélé ou totalement irresponsable (Si, si il en existe).
Les codes relatifs à cette commande sont toujours présents dans les sources mais ont été désactivés.

 
cvarsetcode.jpg




J'ai constaté que cvarset est en effet, un outil très subtil à ne pas mettre entre toutes les mains.

cvarset permet à un Admin de modifier à distance la valeur d'un CVAR choisi chez un client.



suivant.gif Exemple:

  adm cvarset 5 com_maxfps100   Fixe le valeur du cvar com_maxfps à 100 chez le client N° 5

Tous les CVARS sont accessibles et il est aisé d'imaginer la pagaille qui pourrait résulter chez le client, suite à l'envoi de valeurs fantaisistes. Certaines d'entre elles pourraient même être déclarées hors normes si d'aventure le serveur concerné était protégé par punkbuster, entrainant ipso facto l'éradication du joueur.

Dans certains modes customisés la fonction cvarset a toutefois été réactivée par des programmeurs avertis.


biggrin.gifComment reconnaître un serveur équipé de cvarset

Mais c'est très simple. Il suffit de taper en mode console : adm cvarset

et voici les 2 réponses possibles du serveur:

 
Le serveur est équipé de cvarset Le serveur n'est pas équipé de cvarset
cvarseton.jpg cvarsetoff.jpg


Bien entendu il faut envisager le cas particulier d'un programmeur encore plus averti qui aura changé le nom du CVAR (J'en connais un !) et par conséquent deviendra indétectable par le joueur lambda.

-=smile=-
Publié le 05/02/2019 17:48  Prévisualiser...   Imprimer...   Haut
Extra commandes  -  par FSMOD
LES EXTRA COMMANDES


Les extra commandes permettent d'attribuer aux Admins des privilèges qui sont normalement réservés au Sysop.
En d'autres termes un Admin accédera à des CVARS propres au serveur, normalement introduits par le rcon, sans pour autant connaître ce dernier.


calendard.gif EXEMPLE:

Supposons qu'un Admin désire éliminer tous les bots lors d'une partie. les commandes concernées sont:

 Commandes  Effet
  kick allbots  Elimine tous les bots
  bot_minplayers 0  Evite le retour des bots en fixant leur nombre à 0


Puis à l'issue de la partie, aux fins de restituer les réglages d'origine du serveur, il voudra le relancer.
La commande concernée est:

 Commande  Effet
 exec server.cfg  Relance le serveur avec ses paramètres d'origine

     


Or ces commandes, modifiant les réglages serveur ne sont accessibles qu'au Sysop.

Grâce à la commande admrcon on va pouvoir remédier à ce problème.

Mais avant tout il sera nécessaire de créer les fichiers suivants et de les placer dans le répertoire du mode sur le serveur.

Fichiers  Contenu  Action
 bot.cfg  bot_minplayers 0
 kick allbots
 Vire les bots et déclare leur nombre à zéro.
 svr.cfg  exec server.cfg  Relance le serveur.
 extracmds.cfg  exec bot.cfg
 exec svr.cfg
 Déclare les fichiers nécessaires aux actions.


calendard.gif IMPORTANT

Le fichier extracmds.cfg devra être déclaré dans le fichier de configuration du serveur sous cette forme :

seta sv_extracmdsfile "extracmds.cfg"

Tous les outils sont maintenant en place. Le tableau suivant montre les actions que devra accomplir l'Admin pour concrétiser ce qui précède:

 A saisir en mode console  Effet
 admrcon exec bot.cfg  Vire les bots et initialise leur nombre à zéro
 admrcon exec svr.cfg  Relance le serveur


Pour simplifier la saisie, l'Admin pourra créer des binds dans son fichier de configuration personnel comme dans l'exemple suivant:


       bind b "admrcon exec bot.cfg"
       bind s "admrcon exec svr.cfg"

 

 

Fort des principes ci-dessus énoncés, vous pouvez imaginer d'autres CVARS dont vous déléguerez l'usage à vos Admins.

 

-=smile=-
Publié le 05/02/2019 17:47  Prévisualiser...   Imprimer...   Haut
Nom d'appel des maps  -  par FSMOD
Le nom d'appel des maps


J'ai expérimenté de nombreuses maps sur mon serveur et je me suis parfois heurté à des difficultés lorsque j'ai voulu lancer certaines d'entre elles, heureusement peu nombreuses.
Le problème est survenu lorsque j'ai intégré le nom de ces maps dans un cycle (mapcycle) et que le serveur a refusé de les lancer. Même une action directe dans la console par la commande adm map s'est également soldée par un échec. Ces maps n'étant pas corrompues, j'ai découvert la tracasserie en ouvrant le fichier pk3.

Pour ceux que ça intéresse je vous livre la solution.

Je prends pour exemple la map ctvm.pk3. Le fichier est disponible sur le net, sous cette appellation.
Il est logique de lancer cette map en mode console par adm map ctvm et pourtant le serveur refusera de l'admettre.

Ouvrons le fichier ctvm.pk3

1.jpg


C'est le répertoire scripts qui nous intéresse.
Ouvrons le, il contient un fichier du type arena. La racine de ce type de fichier nous éclaire déjà sur le nom réel de la map.

2.jpg


Mais poursuivons en ouvrant le fichier ctvmcastle.arena

3.jpg

La ligne N°2 nous fixe définitivement sur le nom exact de la map, soit mp_ctvmcastle, dont l'extension bsp est encapsulé dans le répertoire maps du fichier cvtm.pk3.
C'est donc le nom mp_ctvmcastle (sans extension) qui devra être saisi en mode console ou inscrit dans une ligne command "map mpcvtmcastle" du fichier mapcycle considéré.

Chaque fois qu'une map connue refusera de se lancer, il faudra toujours pratiquer cette méthode.

Une autre astuce pour pouvoir s'y retrouver plus tard est de renommer le fichier pk3 du même nom que la map. Ainsi, pour reprendre le cas de la map mp_ctvmcastle il suffira de renommer cvtm.pk3 en mp_ctvmcastle.pk3. La portabilité n'en sera que meilleure.


On se demande d'ailleurs pourquoi les concepteurs de maps s'amusent à perpétrer cette incohérence de baptême.


-=biggrin=-
Publié le 05/02/2019 17:47  Prévisualiser...   Imprimer...   Haut
Mode GHOST  -  par FSMOD
Le mode GHOST
 


Ce mode est l'outil idéal pour un Admin désireux de suivre un joueur à son insu.
Sa mise en oeuvre est très simple. Une condition seulement est nécessaire pour accéder à cette fonction, il suffit d'être mort.
Rien de plus facile, d'autant plus que si vous suspectez un joueur d'utiliser un aimbot, vous ne tarderez pas à l'être.

Dès que vous êtes mort, pressez la touche Maj

Vous obtenez cet écran 

shot0139.jpg

A ce stade vous pouvez voler dans la map.

Pour suivre un joueur particulier, la procédure est identique au mode SPECTATEUR, il suffit de cliquer sur ENTREE puis cliquer sur la touche GAUCHE de la souris plusieurs fois jusqu'au joueur choisi.

shot0134.jpg


Pour un même joueur suivi, des pressions successives sur la touche ENTREE commutent le mode GHOST à la 1ère ou 3ème personne.

Si l'on presse à nouveau sur la touche
Maj on passe automatiquement en mode SPECTATEUR, ce qui oblige à cliquer sur l'onglet PLAYER puis  Auto join  pour rejoindre la partie.

Pour plus de discrétion il suffit au préalable de presser la barre ESPACE pour retourner sur l'écran initial. Une pression sur la touche 
Maj  vous réintègre directement dans le jeu sans passer par la case SPECTATEUR.
Pendant toute la période durant laquelle vous aurez le statut de GHOST, votre pseudo sera toujours présent dans le panel des scores faisant croire à votre présence dans le jeu.

look.gif NOTA: J'ai évoqué la touche Maj (SHIFT) car celle-ci est codée par défaut dans les sources pour être associée à la commande WALK/RUN qui permet de passer du statut de marcheur à celui de coureur et inversement.
Toutefois si vous avez bindé cette touche pour une autre action, il est évident que le mode GHOST ne pourra plus être activé par la touche Maj mais plutôt par la touche que vous aurez dédiée au statut WALK/RUN.
Exemple: Vous avez affecté la touche ALT au bind WALK/RUN. Cette touche aura désormais 2 fonctions, la commutation WALK/RUN ou l'activation du mode GHOST.
A remarquer que le bind sera de la forme: bind ALT "+speed" dans votre fichier de configuration sof2mp.cfg.


 



biggrincoolbiggrin

Publié le 05/02/2019 17:46  Prévisualiser...   Imprimer...   Haut
Map mp_barn  -  par FSMOD
la map mp_barn
 

Pour ceux qui ont voulu installer un serveur personnel, vous avez certainement constaté que toutes les maps multijoueurs qui ont été ajoutées dans la version GOLD (1.03) permettaient le "dm", entre autres gametype, excepté mp_barn qui se limitait exclusivement au type "elim".
Pour les curieux ces maps sont encapsulées dans les fichiers système update101, update102 et update103.pk3.

J'ai toutefois constaté que certains gameservers possédaient des fichiers modifiés autorisant la map mp_barn à tourner en dm.
N'ayant pas eu l'opportunité de récupérer ces fichiers, je me suis penché sur le problème pour trouver une solution à cette limitation. La map mp_barn, n'est certes pas la plus intéressante mais les restrictions de gametype qui lui ont été infligés, méritaient une action réparatrice.
biggrin

RESULTAT:

Les 2 fichiers modifiés, à savoir mp_barn.bsp et mp_barn.arena ont été encapsulés dans un fichier que j'ai nommé update104.pk3.
Ce fichier devra être placé dans le répertoire BASE de votre serveur. Il est téléchargeable ICI.

Il n'est pas nécessaire de l'installer côté client dans la mesure où les fichiers d'origine restent compatibles avec mes fichiers modifiés.

barn.jpg




-=smile=-
Publié le 05/02/2019 17:45  Prévisualiser...   Imprimer...   Haut
PACK SONS  -  par FSMOD

ELABORATION D'UN PACK SONS

La conception d'un pack sons n'est guère ardue mais peut toutefois se montrer fastidieuse proportionnellement au nombre de sons qui le composeront.

La principale difficulté consistera à réunir tous les sons qui vous aurez choisis en fouinant sur le net ou en puisant dans d'autres PACKS. Pour les plus avertis ou les plus patients vous pouvez également extraire des fragments vocaux dans des clips vidéo ou des films. A noter qu'il existe de nombreux sites qui proposent des extraits "clefs en main".

 

Pour le découpage des fichiers MP3 j'ai utilisé personnellement un petit logiciel simple et gratuit, Mp3DirectCut

mp3directcut.jpg

suivant.gif Formats des sons

Il existe une foultitude de formats mais SOF2 n'accepte que les suivants:

  • Wav  22 Khz 16 bits mono
  • MP3   44,1 Khz 192 kbps mono

Il est recommandé d'utiliser plutôt le format MP3 qui offre des fichiers moins volumineux que le WAV et dont la qualité est largement suffisante.

suivant.gif Création du pack

Créer un répertoire sound. Copier tous vos fichiers sons dans ce répertoire. A noter que vous pouvez créer dans ce répertoire, des sous-répertoires que vous nommerez à votre convenance et dans lesquels vous pourrez déposer vos fichiers sons par ordre d'affinité. Par exemple un répertoire KillYou qui regroupera tous les sons relatifs à l'élimination de l'ennemi ou un répertoire KillMe renfermant tous les sons relatifs à votre propre élimination. Il conviendra bien entendu de respecter l'arborescence des liens dans le fichier voicecmds.cfg, que nous verrons ci-après, afin que le pointeur de recherche des sons, s'y retrouve. Ce classement permettra surtout une gestion plus aisée de votre pack et notamment dans son débuguage qui fera l'objet d'un développement in fine.

Pour terminer compressez le répertoire sound en ZIP, renommez l'extension en PK3 et renommez sound.pk3 à votre convenance, par exemple MyPack.pk3.

Voici un aperçu avec le logiciel PakScape, du contenu du fichier MyPack.pk3.

pack.jpg

suivant.gif Création du fichier voicecmds.cfg

Ce fichier propre au serveur permet de regrouper tous les sons du pack en les associant à un numéro d'appel et à un texte qui n'est pas obligatoire. Les textes peuvent être agrémentés de couleurs. A noter que le fichier voicecmds.cfg ne nécessite pas d'installation chez le client, sa seule vocation est de le renseigner sur le menu des sons qu'il pourra lister ou imprimer. Certains clans proposent d'ailleurs sur leur site ou leur forum la liste complète des sons inclus dans leur pack.

Je précise que le fichier voicecmds.cfg est lancé sur le serveur par le fichier server.cfg à la ligne seta sv_voicecmdsfile "voicecmds.cfg"

Vous trouverez ICI mon fichier voicecmds.cfg dont vous pourrez vous inspirer pour créer le votre. Quelques précisions, les sons de a à s sont générés automatiquement par le serveur durant le jeu en fonction des événements. Ils devront bien entendu être inclus dans le répertoire sons de votre pack.

Les sons 1 à 83 devront IMPERATIVEMENT être conservés. Il n'est pas nécessaire de les inclure dans votre répertoire sound de votre pack attendu qu'ils sont déjà présents dans le répertoire système musicandsound.pk3 que tous les joueurs possèdent ainsi que le serveur. C'est d'ailleurs un point essentiel qui permet à tout joueur ne possédant pas votre pack de pouvoir émettre des sons de base. Les textes pourront bien entendu, être modifiés et particulièrement au niveau des couleurs.

Les sons à partir du numéro 84 jusqu'à la fin sont à votre discrétion.

Un soin attentif sera apporté dans la rédaction des textes, les principales erreurs sont l'oubli des guillemets, une mauvaise chronologie dans les numéros d'appel ou bien encore un lien incorrect vers le mp3.

Un dernier point: de nombreux concepteurs de packs sons incluent dans le pk3 final, le fichier voicecmds.cfg. Ce n'est pas judicieux surtout en phase de débuguage. Il est préférable de le placer seul dans le répertoire du mode car il est plus facile de modifier un fichier cfg en mode texte qu'un pk3 en mode zip, même avec l'excellent logiciel PakScape.

Enfin  sous ROCMOD d'origine il est préférable de ne pas dépasser 800 sons.

suivant.gif Messages d'erreur

Nous y voilà. Votre fichier MyPack.pk3 tout neuf est fin prêt pour les essais. Ces derniers sont très simples mais ô combien fastidieux. Il suffit, soit sur votre propre serveur distant soit sur session LAN, de lancer successivement les sons du numéro 1 jusqu'au dernier et de voir le résultat à l'écran et dans les hauts-parleurs. Je ne vous ferai pas l'affront de vous rappeler que le fichier MyPack.pk3 devra être installé préalablement sur votre PC dans le répertoire du mode considéré !

Si les formats utilisés sont corrompus ou inadaptés vous obtiendrez des messages en console qui vous aideront à débuguer votre pack.

nosound.jpg

sound.jpg

Pour la conversion des sons vers le bon format j'utilise un logiciel simple et gratuit, FreeMp3WmaConverter

converter.jpg

Bon courage

-=frown=-

Publié le 05/02/2019 17:45  Prévisualiser...   Imprimer...   Haut
Liste  -  par FSMOD
IDENTITES



Voici toutes les identités disponibles dans le jeu.
La colonne de gauche précise l'instruction "prête à l'emploi" qu'il convient d'entrer dans le fichier de configuration pour revêtir l'identité associée, illustrée dans la colonne de droite.

Je précise que ce sont les identités natives de la version standard de SOF2

Vous verrez peut être apparaître d'autres identités dans le bandeau des icônes dans la mesure où certaines maps, autres que les maps standards, contiennent parfois leurs propres identités.


Instruction de configuration
 
Icône
seta identity "marinesoldier1"  NPC_Marine_Soldier ( marine_washington ).jpg
seta identity "marinesoldier2"  NPC_Marine_Soldier ( marine_cam2 ).jpg
seta identity "marinesoldier3"  NPC_Marine_Soldier ( marine_camo3 ).jpg
seta identity "NPC_Prometheus_Soldier/prometheus_soldier"  NPC_Prometheus_Demolitionist ( prometheus_soldier ).jpg
seta identity "snowindoor"  NPC_Pro_In_Snow_Soldier ( pro_snow_indoor_soldier ).jpg
seta identity "snowsoldier1"  NPC_Prometheus_Snow_Soldier ( prometheus_snow1 ).jpg
seta identity "snowsoldier2"  NPC_Prometheus_Snow_Soldier ( prometheus_snow2 ).jpg
seta identity "snowsoldier3"  NPC_Prometheus_Snow_Soldier ( prometheus_snow3 ).jpg
seta identity "colrebel1"  NPC_Colombian_Soldier ( col_rebel_h1 ).jpg
seta identity "colrebel2"  NPC_Colombian_Soldier ( col_rebel_h2 ).jpg
seta identity "colrebel3"  NPC_Colombian_Soldier ( col_rebel_h3 ).jpg
seta identity "colrebel4"  NPC_Colombian_Soldier ( col_rebel_h4 ).jpg
seta identity "colrebel5"  NPC_Colombian_Soldier ( col_rebel_h5 ).jpg
seta identity "civilianmale1"  NPC_Civilian ( civilian_male ).jpg
seta identity "civilianmale2"  NPC_Civilian ( civilian_male_h1 ).jpg
seta identity "civilianmale3"  NPC_Civilian ( civilian_male_b1 ).jpg
seta identity "civilianmale4"  NPC_Civilian ( civilian_male_w2 ).jpg
seta identity "thug1"  NPC_HongKong_Street_Thug ( hk_thug_a1 ).jpg
seta identity "thug2"  NPC_HongKong_Street_Thug ( hk_thug_a2 ).jpg
seta identity "thug3"  NPC_HongKong_Street_Thug ( hk_thug_a3 ).jpg
seta identity "NPC_Prometheus_Sailor/prometheus_sailor"  NPC_Prometheus_Sailor ( prometheus_sailor ).jpg
seta identity "NPC_Prometheus_Sailor/prometheus_sailor_w2"  NPC_Prometheus_Sailor ( prometheus_sailor_w2 ).jpg
seta identity "NPC_Prometheus_Sailor/prometheus_sailor_w3"  NPC_Prometheus_Sailor ( prometheus_sailor_w3 ).jpg
seta identity "NPC_Czech_Soldier/czech_soldier_w1"  NPC_Czech_Soldier ( czech_soldier_w1 ).jpg
seta identity "NPC_Czech_Soldier/czech_soldier_w2"  NPC_Czech_Soldier ( czech_soldier_w2 ).jpg
seta identity "fincaguard1"  NPC_Finca_Guard ( finca_guard_h1 ).jpg
seta identity "fincaguard2"  NPC_Finca_Guard ( finca_guard_h2 ).jpg
seta identity "fincaguard3"  NPC_Finca_Guard ( finca_guard_h3 ).jpg
seta identity "NPC_Virus_Male/virus_male"  NPC_Virus_Male ( virus_male ).jpg
seta identity "NPC_HongKong_Civilian/hk_ped_a1"  NPC_HongKong_Civilian ( hk_ped_a1 ).jpg
seta identity "NPC_HongKong_Civilian/hk_ped_a2"  NPC_HongKong_Civilian ( hk_ped_a2 ).jpg
seta identity "NPC_HongKong_Civilian/hk_ped_a3"  NPC_HongKong_Civilian ( hk_ped_a3 ).jpg
seta identity "NPC_HongKong_Civilian/hk_ped_a4"  NPC_HongKong_Civilian ( hk_ped_a4 ).jpg
seta identity "patient"  NPC_Patient ( patient_w1 ).jpg
seta identity "NPC_Paramedic/paramedic_w1"  NPC_Paramedic ( paramedic_w1 ).jpg
seta identity "NPC_Doctor/doctor_b1"  NPC_Doctor ( doctor_b1 ).jpg
seta identity "doctor1"  NPC_Doctor2 ( doctor_h1 ).jpg
seta identity "scientist1"  NPC_Scientist ( scientist_w1 ).jpg
seta identity "NPC_Train_Worker/conductor"  NPC_Train_Worker ( conductor ).jpg
seta identity "NPC_Deviant1/deviant1"  NPC_Deviant1 ( deviant1 ).jpg
seta identity "NPC_Finca_Maid/finca_maid"  NPC_Finca_Maid ( finca_maid ).jpg
seta identity "NPC_Nurse/nurse_w1"  NPC_Nurse ( nurse_w1 ).jpg
seta identity "NPC_Female_Civilian/female_civilian"  NPC_Female_Civilian ( female_civilian ).jpg
seta identity "NPC_Female_Civilian/female_civilian_h1"  NPC_Female_Civilian ( female_civilian_h1 ).jpg
seta identity "NPC_Female_Civilian/female_civilian_h2"  NPC_Female_Civilian ( female_civilian_h2 ).jpg
seta identity "NPC_Female_Civilian_Pants/female_civilian_w3"  NPC_Female_Civilian_Pants ( female_civilian_w3 ).jpg
seta identity "NPC_Female_Civilian_Pants/female_civilian_w4"  NPC_Female_Civilian_Pants ( female_civilian_w4 ).jpg
seta identity "NPC_HongKong_Female_Civilian/hk_female_civilian"  NPC_HongKong_Female_Civilian ( hk_female_civilian ).jpg
seta identity "NPC_HongKong_Thug_Female/hk_female_thug_a1"  NPC_HongKong_Thug_Female ( hk_female_thug_a1 ).jpg
seta identity "NPC_Virus_Villager_Female/virus_female"  NPC_Virus_Villager_Female ( virus_female ).jpg
seta identity "NPC_Prometheus_Soldier_Female/female_prometheus_armor"  NPC_Prometheus_Soldier_Female ( female_prometheus_armor ).jpg
seta identity "NPC_Prometheus_Soldier_Female2/female_prometheus_soldier"  NPC_Prometheus_Soldier_Female2 ( female_prometheus_soldier ).jpg
seta identity "thugleader"  NPC_HongKong_Thug_Leader ( hk_gang_leader_a1 ).jpg
seta identity "marinescout"  NPC_Marine_Scout ( marine_camo1 ).jpg
seta identity "NPC_Marine_Pilot/skip"  NPC_Marine_Pilot ( skip ).jpg
seta identity "marinesergeant"  NPC_Marine_Sergeant ( marine_sarge ).jpg
seta identity "shopguard1"  NPC_Shop_Guards ( shop_guard_w1 ).jpg
seta identity "NPC_Fireman/firefighter"  NPC_Fireman ( firefighter ).jpg
seta identity "meninblack1"  NPC_Men_in_Black1 ( men_in_black1 ).jpg
seta identity "meninblack2"  NPC_Men_in_Black2 ( men_in_black2 ).jpg
seta identity "NPC_Swiss_Police/swiss_police"  NPC_Swiss_Police ( swiss_police ).jpg
seta identity "NPC_Swiss_Police/swiss_police_b1"  NPC_Swiss_Police ( swiss_police_b1 ).jpg
seta identity "NPC_Honor_Guard/honor_guard_w1"  NPC_Honor_Guard ( honor_guard_w1 ).jpg
seta identity "NPC_Priest/priest"  NPC_Priest ( priest ).jpg
seta identity "mullinssnow"  NPC_Mullins_Snow ( mullins_snow ).jpg
seta identity "mullinsjungle"  NPC_Mullins_Jungle ( mullins_jungle ).jpg
seta identity "NPC_Mullins_Non_Combat/mullins_non_combat"  NPC_Mullins_Non_Combat ( mullins_non_combat ).jpg
seta identity "mullinssuit"  NPC_Mullins_Suit ( mullins_suit ).jpg
seta identity "mullinsurban"  NPC_Mullins_Urban ( mullins_urban ).jpg
seta identity "NPC_Mullins_Young/mullins_young"  NPC_Mullins_Young ( mullins_young ).jpg
seta identity "NPC_Czech_Sergeant/czech_sergeant_w1"  NPC_Czech_Sergeant ( czech_sergeant_w1 ).jpg
seta identity "prometheus1"  NPC_Prometheus_Thug ( prometheus_guard ).jpg
seta identity "prometheus2"  NPC_Prometheus_Thug ( prometheus_guard_w2 ).jpg
seta identity "prometheus3"  NPC_Prometheus_Thug ( prometheus_guard_w3 ).jpg
seta identity "prometheusguard"  NPC_Prometheus_Thug ( prometheus_guard_b2 ).jpg
seta identity "prometheusheavy1"  NPC_Prometheus_Heavy_Weapons ( prometheus_heavy ).jpg
seta identity "prometheusheavy2"  NPC_Prometheus_Heavy_Weapons ( prometheus_heavy2 ).jpg
 seta identity "prometheustech"  NPC_Prometheus_Tech ( prometheus_tech ).jpg
seta identity "NPC_Prometheus_Shielded/prometheus_shielded"  NPC_Prometheus_Shielded ( prometheus_shielded ).jpg
seta identity "NPC_Order_Soldier/order_soldier"  NPC_Order_Soldier ( order_soldier ).jpg
seta identity "snowsergeant"  NPC_Prometheus_Snow_Sergeant ( prometheus_snow3 ).jpg
seta identity "NPC_Taylor_Urban/taylor_armor"  NPC_Taylor_Urban ( taylor_armor ).jpg
seta identity "NPC_Taylor_Lab/taylor_lab"  NPC_Taylor_Lab ( taylor_lab ).jpg
seta identity "NPC_Shop_Contact/shop_contact"  NPC_Shop_Contact ( shop_contact ).jpg
seta identity "NPC_Domovni_Nemec/domovni_nemec"  NPC_Domovni_Nemec ( domovni_nemec ).jpg
seta identity "NPC_Taxi_Driver/cab_driver"  NPC_Taxi_Driver ( cab_driver ).jpg
seta identity "fakeivanovich"  NPC_Fake_Ivanovich ( fake_ivanovich ).jpg
seta identity "ivanovich"  NPC_Piotr_Ivanovich ( ivanovich ).jpg
seta identity "directormichaels"  NPC_Director_Michaels ( director_michaels ).jpg
seta identity "NPC_Aaron_Wilson/aaron_wilson"  NPC_Aaron_Wilson ( aaron_wilson ).jpg
seta identity "NPC_Jack_Anderson/marine_jack"  NPC_Jack_Anderson ( marine_jack ).jpg
seta identity "NPC_Butch/marine_butch"  NPC_Butch ( marine_butch ).jpg
seta identity "NPC_PFC_David_Williams/pcf_williams"  NPC_PFC_David_Williams ( pcf_williams ).jpg
seta identity "NPC_POW1/pow_w1"  NPC_POW1 ( pow_w1 ).jpg
seta identity "manuelvergara"  NPC_Manuel_Vergara ( manuel_vergara ).jpg
seta identity "domingosanchez"  NPC_Domingo_Sanchez ( domingo_sanchez ).jpg
seta identity "alexei"  NPC_Alexi_Nachrade ( alexei_nachrade ).jpg
seta identity "NPC_Sam/sam_gladstone"  ORIG_NPC_Sam ( sam_gladstone ).jpg
seta identity "NPC_Junk_Captain/junk_captain"  NPC_Junk_Captain ( junk_captain ).jpg
seta identity "NPC_Huang_Zhenmeng/huang_zhenmeng"  NPC_Huang_Zhenmeng ( huang_zhenmeng ).jpg
seta identity "NPC_Interrogator/interrogator"  NPC_Interrogator ( interrogator ).jpg
seta identity "dmitri"  NPC_Dmitri_Sestrogor ( dr_stestrogor ).jpg
seta identity "NPC_Sebastian_Jenzer/sebastian_jenzer"  NPC_Sebastian_Jenzer ( sebastian_jenzer ).jpg
seta identity "NPC_Stefan_Fritsch/stefan_fritsch"  NPC_Stefan_Fritsch ( stefan_fritsch ).jpg
seta identity "NPC_DeadMeat/deadmeat2"  NPC_DeadMeat ( deadmeat2 ).jpg

-=rolleyes=-

Publié le 05/02/2019 17:43  Prévisualiser...   Imprimer...   Haut
Choix des armes  -  par FSMOD
Le choix des armes
 
En préambule il convient de ne pas confondre les réglages serveur des réglages client.
 
 
  Du côté serveur  


D'une manière générale le choix d'une arme par le client est subordonné à son autorisation délivrée par le serveur.

Voici une liste de CVAR inscrits dans la configuration de mon serveur fixant la condition d'accès aux armes pour les clients :

 
      seta g_pickupsdisabled  "1"
      disable_weapon_knife  "0"
      disable_pickup_weapon_US_SOCOM  "0"
      disable_pickup_weapon_M19  "0"
      disable_pickup_weapon_silvertalon  "0"
      disable_pickup_weapon_microuzi  "0"
      disable_pickup_weapon_M3A1  "0"
      disable_pickup_weapon_MP5  "0"
      disable_pickup_weapon_USAS_12  "1"
      disable_pickup_weapon_M590  "0"
      disable_pickup_weapon_MSG90A1  "0"
      disable_pickup_weapon_M4  "0"
      disable_pickup_weapon_AK_74  "0"
      disable_pickup_weapon_SIG551  "0"
      disable_pickup_weapon_M60  "1"
      disable_pickup_weapon_RPG_7  "1"
      disable_pickup_weapon_MM_1  "1"
      disable_pickup_weapon_M84  "0"
      disable_pickup_weapon_SMOHG92  "0"
      disable_pickup_weapon_AN_M14  "0"
      disable_pickup_weapon_M15  "0
"

 


Dans cet exemple, toutes les armes sont autorisées sauf le USAS12, le M60, le RPG7 et le MM1.  Par ailleurs le ramassage des armes abandonnées est interdit (g_pickupsdisabled  "1")

Je rappelle pour ceux qui possèdent quelques rudiments de programmation, que la valeur 1 représente une condition vraie (true) et la valeur 0 une condition fausse (false).

Ainsi dans la ligne suivante prise dans le tableau ci-dessus :

 
 disable_pickup_weapon_MP5  "0" 

soit en équivalent  français
 
 Désactivation_sélection_arme MP5 = 0 


se traduit par :

si la désactivation est fausse (0), l'activation est vraie, donc on autorise l'arme.
C'est de la logique pure qui se vérifie tout au long des différentes configurations que vous rencontrerez dans SOF.

A noter que le programmeur aurait pu coder de cette manière:

 
 enable_pickup_weapon_MP5  "1"

Ce qui revient au même et participe à une plus grande lisibilité mais qui nous fait sortir du cadre de ce topic.

Les accessoires peuvent également faire l'objet  d'une autorisation d'accès au client sous la forme suivante:


 
 
 disable_thermal  "1"
 disable_NightVision  "1"
 disable_armor  "0"

 


Dans cet exemple les clients pourront bénéficier uniquement de l'armure.


 
  Du côté client  

Les armes sont sélectionnées à partir de l'onglet PLAYER puis OUTFITTING
 
1.jpg

Comme évoqué plus haut les armes visibles sont celles que le serveur a fixé.
Dans l'exemple suivant, voilà comment apparaîtrait l'interface OUTFITTING chez le client connecté à mon serveur, lequel n'autoriserait que la grenade à fragmentation. Il ne pourrait en aucun cas en choisir d'autres.

 
2.jpg


Lorsque vous sélectionnez vos armes et vos accessoires une ligne s'inscrit dans votre fichier sof2mp.cfg afin de mémoriser votre choix. A la prochaine connexion vous retrouvez ainsi vos armes et accessoires préférés.

Cette ligne se présente sous la forme:


 
 seta outfitting "GACDA"

Chaque lettre majuscule correspond aux 5 cases de l'interface OUTFITTING

Voici résumé dans le tableau suivant leur signification
.

 
LETTRE 1.PRIMARY 2.SECONDARY 3.PISTOL 4.GRENADE 5.ACCESSORY
 A  AK47  M590  M1911A1  SMOHG 92  ARMOR
 B  M4  UZI  US SOCOM  M84  NIGHT VISION
 C  SIG551  M3A1  TALON  M15  THERMAL
 D  USAS12  ANM14
 E  MSG9041
 F  M60
 G  MP5
 H  RPG7
 I  MM1

Ainsi dans la suite GACDA précitée, les armes et accessoires sélectionnés sont respectivement :
MP5, M590, TALON, ANM14 et ARMURE. Cela correspond d'ailleurs à la première image de l'interface OUTFITTING ci-dessus illustrée.

Vous pouvez également écrire cette ligne dans votre fichier personnel de configuration de la forme .txt et qui sera lancé par un autoexec.cfg au démarrage du jeu. Rien ne vous empêchera alors de changer vos armes en cours de jeu mais votre dernière configuration inscrite dans sof2mp.cfg sera écrasée lors du lancement ultérieur. Le choix de la méthode vous appartient.

Un dernier point qui ne vous aura pas échappé, une arme sélectionnée au cours du jeu ne sera active qu'après votre respawn (réapparition sur la map après une défaite).
fin_n.gif Particularité de ma version ROCMOD
Sur le panel SELECT OUTFITTING le bouton CUSTOM permet de valider le choix de vos armes.
Quant au bouton DEFAULT il permet grâce à un fichier associé, de sélectionner immédiatement votre configuration préférée.
Cela est très utile quand le choix des armes a été limité par le manager et qu'à la map suivante qui fixe toutes les armes, votre panel SELECT OUTFITTING proposera par défaut les armes AK47 et Shotgun entre autres.
Pour bénéficier de ce petit artifice il vous suffit de créer un fichier outfit.cfg et d'y inscrire une ligne du genre: seta outfitting "GACDC"
La suite de lettres sera à définir selon votre préférence en vous inspirant du tableau ci-dessus.
Le fichier outfit.cfg, dont il ne faudra pas modifier le nom, sera placé dans votre répertoire MP



 
  Les classes d'armes  

Les armes sont réparties suivant 8 classes comme suit:

 
Numéro  A R M E S 
1  Couteau
2  Toutes les armes de poing
3  USAS12  -  M590A
4  UZI   -  MP5  -  M3A1
5  AK47  -  M4  -  SIG551
6  MSG90A1
7  RPG7  -  M60 (M249)  -  MM1
8  Tous les types de grenades


Si vous désirez avoir un accès rapide vers une arme particulière, sous réserve bien entendu, qu'elle ait été préalablement sélectionnée dans OUTFITTING, sauf pour le couteau qui est unique, vous pouvez créer un bind spécifique dans votre fichier de configuration.


Exemple :
 

 // sélection couteau
 bind k "weapon 1"

 // sélection arme de poing
 bind u "weapon 2"

 


Un appui sur la touche k vous donnera immédiatement le couteau et sur la touche u, l'arme de poing.

 
-=frown=-
Publié le 05/02/2019 17:42  Prévisualiser...   Imprimer...   Haut
Seta ou Set  -  par FSMOD
SETA OU SET

Les instructions set et seta introduisent les BINDS et les CVARS ainsi que leurs valeurs associées.
Elles se résument comme suit:

  • set   : définit des variables temporaires qui ne seront pas enregistrées.
  • seta : définit des variables fixes qui seront enregistrées.


Leur enregistrement s'inscrit dans le fichier sof2mp.cfg du mode considéré.
Ce sont les définitions annoncées par les concepteurs du moteur quake 3 qui anime SOF2, ainsi que de nombreux autres jeux. Toutefois dans SOF2 les instructions
set et seta ne répondent pas vraiment à ces définitions de base.

Pour comprendre il est nécessaire de commencer par le début, c'est à dire le moment où vous avez installé votre jeu et que vous vous apprêtez à le lancer pour la première fois en mode ROCMOD par exemple. A ce stade le fichier sof2mp.cfg n'existe pas encore dans le dossier ROCMOD.
SOF est maintenant lancé et sof2mp.cfg vient de se créer. Il renferme déjà de nombreux CVARS, bien avant que vous ayez paramétré vos touches, caractères graphiques, volume son, etc....
Même votre pseudo est définit par l'appellation UnnamedPlayer, appellation que l'on voit trop souvent sur les serveurs, indiquant ipso facto que des débutants sont pressés de jouer sans s'attarder sur des configurations dont l'élémentaire compréhension ne s'inscrit pas vraiment dans leur processus intellectuel.

Si vous quittez SOF maintenant et que vous ouvrez le fichier sof2mp.cfg fraîchement créé dans le répertoire ROCMOD, vous vous apercevrez qu'un nombre impressionnant de paramètres ont été sauvegardés, tous précédés de l'instruction seta. C'est bien la preuve que le programme a lui-même sauvegardé dans le fichier sof2mp.cfg, tous les paramètres qui lui seront nécessaires pour les lancements ultérieurs.
Vous noterez au passage la ligne suivante:


seta name "UnnamedPlayer"

qui indique bien qu'en l'absence de la définition d'un pseudo précis, le programme vous a affublé par défaut d'un pseudo anonyme.

Premier test

Si l'on relance SOF2 et que l'on tape en mode console l'une de ces 3 instructions

  • name TOTO
  • seta name TOTO
  • set name TOTO

Le fichier sof2mp.cfg présentera dans ces 3 cas la ligne suivante:seta name "TOTO"

Ce qui démontre d'une part, que la redéfinition du pseudo en mode console (et des autres CVARS en général) ne nécessite pas l'usage des instructions set ou seta. Et surtout d'autre part, que l'instruction set s'est transformée en seta d'office.
Ce qui tendrait à infirmer la définition initiale du terme set énoncée par le mode d'emploi de SOF et citée en préambule :


  SET: définit des variables temporaires qui ne seront pas enregistrées 

En fait l'utilisation de l'instruction set sera plus probante dans le cas où les paramètres et les binds seront inscrits dans un fichier de configuration autre que sof2mp.cfg. J'ai déjà évoqué dans ma doc la quasi nécessité de créer un fichier de configuration afin que les paramètres que vous avez soigneusement fixés soient protégés. Je rappelle en effet que l'on ne devrait jamais écrire dans sof2mp.cfg attendu que ce fichier est renseigné et modifié automatiquement par SOF2. D'ailleurs un avertissement figure en en-tête sous la forme :

   // generated by soldier of fortune 2, do not modify     

soit en bon français

 
   // généré par soldier of fortune 2, ne pas modifier    
Bien entendu sof2mp.cfg sera toujours en mesure de sauvegarder les informations issues de votre propre fichier de configuration qui sera lui-même lancé automatiquement par un autoexec.cfg au démarrage du jeu. 


On considère donc que vous avez opté pour la création d'un fichier de configuration (cfg.txt pour l'exemple). Grâce à lui il sera plus aisé de saisir le distinguo entre set et seta, aussi ténu soit-il.

Ouvrons cfg.txt et considérons le bind lié à la modification de la profondeur de champ (Field of View ou FOV) ainsi que sa boucle vstr associée qui renferme des instructions set.

 
  bind b "vstr fov"
  set fov "cg_fov 80;bind b vstr fov1"
  set fov1 "cg_fov 90;bind b vstr fov2"
  set fov2 "cg_fov 100;bind b vstr fov"

 


Le tableau suivant résume les incidences de modifications dans la boucle vstr sur le fichier sof2mp.cfg.

Rédaction dans cfg.txt Résultats dans sof2mp.cfg Interprétation
 
  bind b "vstr fov"
  set fov "cg_fov 80;bind b vstr fov1"
  set fov1 "cg_fov 90;bind b vstr fov2"
  set fov2 "cg_fov 100;bind b vstr fov"

 
 bind b "vstr fov1"
 seta cg_fov "80"
 
 Le bind a été activé durant le jeu et le joueur a sélectionné
 la valeur 80. C'est donc la première ligne de la boucle qui
 sera mémorisée (80 = palier fov1).
 La ligne seta cg_fov "80" mémorise donc l'état de FOV qui
 sera lancé au prochain démarrage de SOF


 
 
 bind b "vstr fov"
 seta fov "cg_fov 80;bind b vstr fov1"
 seta fov1 "cg_fov 90;bind b vstr   fov2"
 seta fov2 "cg_fov 100;bind b vstr fov"


 
 bind b "vstr fov"
 seta cg_fov "80"
 seta fov2 "cg_fov 100;bind b vstr fov"
 seta fov1 "cg_fov 90;bind b vstr fov2"
 seta fov "cg_fov 80;bind b vstr fov1"

 
 Les instructions set ont été remplacées par seta.
 Le bind n'a pas été activé et SOF a été lancé avec la valeur
 précédente soit un FOV=80. Toutefois on constate que
 toutes les phases de la boucle ont été mémorisées dans
 sof2mp.cfg, alourdissant ce fichier.



On conclusion, on s'aperçoit qu'il est possible de remplacer toutes les instructions set par seta au sein d'un fichier de configuration. Toutefois, le deuxième exemple du tableau montre qu'il convient de ne pas en abuser sous peine de générer un fichier sof2mp.cfg d'une taille prohibitive pour SOF2.
Remplacer tous les set par des seta est de toute façon, systématiquement déconseillé dans un fichier liè aux binds sons.
En effet si votre fichier renferme 40 sons dans une boucle de cette forme :

bind KP_LEFTARROW "vstr E00"


set E00 "say @820; bind KP_LEFTARROW vstr E01" 
set E01 "say @821; bind KP_LEFTARROW vstr E02"
set E02 "say @826; bind KP_LEFTARROW vstr E03"
set E03 "say @827; bind KP_LEFTARROW vstr E04"
...............................................................................
set E41 "say @954; bind KP_LEFTARROW vstr E40"
set E42 "say @958; bind KP_LEFTARROW vstr E00
"


la seule ligne mémorisée dans sof2mp.cfg correspondra au dernier son que vous avez envoyé (le numéro 3 pour l'exemple). Elle apparaîtra comme suit:

bind KP_LEFTARROW "vstr E03"

Alors que si aviez remplacé tous les set par des seta, il y aurait 40 lignes inscrites dans sof2mp.cfg, augmentant dangereusement son poids au risque de planter SOF2.

Ce qu'il faut donc retenir:

  • On utilise set uniquement dans les boucles vstr
  • on utilise seta pour tout le reste

-=rolleyes=-
 

Publié le 05/02/2019 17:41  Prévisualiser...   Imprimer...   Haut
Rubriques

Vous êtes ici :   Accueil » Documentation