Documentation
Toutes les pages
DMFLAGS  -  par FSMOD

DMFLAGS

J'ai constaté que le CVAR dmflags qui fixe le caractère de certains événements, est souvent mal interprété par les managers de serveurs et les valeurs qu'on lui affecte sont souvent très fantaisistes, voire totalement erronées.

Le meilleur moyen de comprendre la fonction de dmflags est encore de recourir à un examen des sources. Dont acte.

Ainsi la biblothèque bg_public.h fixe les valeurs de dmflags comme suit:

code_flags.jpg

puce2.gifInterprétation:

  • dmflags 8   : Le joueur ne subira aucun dommage physique en touchant le sol après avoir sauté depuis un point élevé.
  • dmflags 16 : La valeur de FOV sera fixée à 90 et imposée aux joueurs sans qu'ils puissent en changer.
  • dmflags 32 : Les joueurs se déplaceront sans aucun bruit de pas. A noter que les sauts resteront toutefois audibles.

NOTA :Par défaut, dmflags est fixé à 0 ce qui implique que le capital santé d'un joueur qui se reçoit au sol après avoir sauté d'un point haut sera minoré d'une valeur proportionnelle à la hauteur du saut et à la gravité réglée sur le serveur (g_gravity).

IMPORTANT: Les entiers 8, 16 et 32 peuvent être combinés afin de panacher les différents effets.

Voici un tableau récapitulatif qui reprend toutes les valeurs et rien que les valeurs admises pour dmflags.

DMFLAGS BRUITS DE PAS DOMMAGES SAUT FOV FIXE A 90
0 OUI OUI NON
8 OUI NON NON
16 OUI OUI OUI
24 OUI NON OUI
32 NON OUI NON
40 NON NON NON
48 NON OUI OUI
56 NON NON OUI

Les CVAR dmflags seront de préférence fixés pour chaque map du fichier mapcycle.

puce2.gifPoint particulier

Le CVAR dmflags 16 qui impose un FOV fixe de 90 peut gêner certains joueurs qui trouvent dans d'autres valeurs, un meilleur confort de tir. Je rappelle que les valeurs autorisées sont comprises entre 80 et 100.

Je vous livre un petit truc qui pourra vous affranchir de cette restriction managériale, à condition que vous maitrisiez un peu le langage c.

Cela se passe côté client bien évidement.

   Fichier cg_view.c   

Dans la fonction CG_CalcFov identifiez ce groupe:

  else
    {
        // user selectable
        if ( cgs.dmflags & DF_FIXED_FOV )

        {
            // dmflag to prevent wide fov for all clients
            fov_x = 90;
        }
        else
        {
            fov_x = cg_fov.value;
            if ( fov_x < 1 )
            {
                fov_x = 1;
            }
            else if ( fov_x > 160 )
            {
                fov_x = 160;
            }
        }

Remplacez la valeur 90 par celle de votre choix entre 80 et 100.

Ou bien alors, si vous désirez pouvoir choisir votre FOV en cours de jeu, remplacez tout le texte précédent par celui-ci:

 else
    {

            fov_x = cg_fov.value;
            if ( fov_x < 1 )
            {
                fov_x = 1;
            }
            else if ( fov_x > 160 )
            {
                fov_x = 160;
            }

puce2.gif ATTENTION: Cette modification pourrait être interprétée comme un artifice de triche de la part du manager, car votre action ne s'inscrit pas vraiment dans l'optique de gestion de son serveur. frown

Do as you like !

DRAKKAR n'est pas aussi restrictif, quoique....... cool

-=eek=-

Publié le 17/06/2019 20:04  Prévisualiser...   Imprimer...   Haut
Alerte munitions  -  par FSMOD

Alerte munitions

Lorsque le chargeur de votre arme présente une certaine quantité de munitions restantes, le compteur de la barre inférieure s'affiche en rouge. Il n'est pas toujours très aisé de le voir dans un combat acharné. 

Cette petite modification permettra d'afficher à gauche de l'écran une alerte beaucoup plus visible .rolleyes

lowammo.jpg

Modification du code sources

Tout se passe côté client

Fichier cg_newDraw.c

Dans la fonction CG_DrawPlayerWeaponClip remplacez la ligne

 if ( value <= (weaponData[cg.weaponSelect].attack[ATTACK_NORMAL].clipSize / 6) )

Par la suivante

 if ( value <= (weaponData[cg.weaponSelect].attack[ATTACK_NORMAL].clipSize * 20/100) ) *FSMOD* calcul restant

Remplacez le groupe

 if ( weaponToDraw == cg.weaponSelect && value <= (weaponData[weaponToDraw].attack[ATTACK_NORMAL].clipSize / 6) )
                {
                    VectorSet ( ammocolor, 1.0f, 0.2f, 0.2f );
                }
                else if ( weaponToDraw != cg.weaponSelect && value == 0 )
                {
                    ammocolor[3] = 0.5f;
                }

Par le suivant

  // *FSMOD* Low ammo

    // si capacité clip inférieur a 1 pas d'affichage Low Ammo (cas des grenades ou du couteau)
        if ( weaponToDraw == cg.weaponSelect
              && value <= (weaponData[weaponToDraw].attack[ATTACK_NORMAL].clipSize * 20/100)
              &&  (weaponData[weaponToDraw].attack[ATTACK_NORMAL].clipSize >1 ))

                {
                    VectorSet ( ammocolor, 1.0f, 0.2f, 0.2f );

                    CG_DrawText (20,240, cgs.media.hudFont, 0.55f , colorRed, va("^7! ^$Low Ammo ^7!"), 0, DT_OUTLINE );

                }

 // *FSMOD*

-=cry=-

Publié le 21/03/2019 17:15  Prévisualiser...   Imprimer...   Haut
Crosshair Sniper  -  par FSMOD

Crosshair Sniper

Force est de constater que le réticule de visée (crosshair) est disponible pour toutes les armes sauf pour le fusil sniper MSG90A1.

C'est normal, pourrait-on répondre dans un esprit purement cartésien, attendu que ce genre d'arme est prévue pour le tir lointain. Toutefois j'ai préféré le doter d'un crosshair même pour le combat rapproché. Cette aide de visée n'en est pas vraiment une, vu le manque de précision et le recul de l'arme en tir instinctif, mais elle permet toutefois de "dégrossir" l'angle de tir.

J'ai prévu néanmoins un CVAR qui permet au tireur puriste d'annuler cette aide étant donné qu'elle est disponible par défaut.

Modification du code sources

Tout se passe côté client

Fichier cg_local.h

Après

 extern    vmCvar_t        cg_shellEjection;

Insérez la ligne suivante

 extern    vmCvar_t        cg_CrosshairSnip;   // *FSMOD* Crosshair hors zoom

Fichier cg_main.c

Après

 vmCvar_t     cg_stats;

Insérez la ligne suivante

 vmCvar_t    cg_CrosshairSnip;  // *FSMOD* Crosshair hors zoom

Après

 { &cg_footsteps, "cg_footsteps", "1", CVAR_CHEAT },

Insérez la ligne suivante

 { &cg_CrosshairSnip, "cg_CrosshairSnip", "1", CVAR_ARCHIVE },  // *FSMOD* Crosshair hors zoom

Fichier cg_draw.c

Dans la fonction CG_DrawCrosshair, remplacez le groupe

 // If zoomed or unzoomed with the sniper rifle dont draw the standard crosshair
    zoomed = (cg.predictedPlayerState.pm_flags&PMF_ZOOMED);
    if ( zoomed || (cg.predictedPlayerState.weapon==WP_MSG90A1 && !zoomed) )
    {
        return;
    }

Par le groupe suivant

 // *FSMOD* Conserve le réticule de visée hors zoom
        zoomed = (cg.predictedPlayerState.pm_flags&PMF_ZOOMED);
    if ( zoomed ||(!cg_CrosshairSnip.integer && cg.predictedPlayerState.weapon==WP_MSG90A1) )
    {
        return;
    }
 // *FSMOD*

Le CVAR cg_CrosshairSnip pourra être associè à un bind. Il prendra les valeurs suivantes:

cg_CrosshairSnip 0 : Le crosshair n'est visible qu'en mode ZOOM.
cg_CrosshairSnip 1 : Le crosshair est toujours visible.

-=frown=-

Publié le 21/03/2019 16:32  Prévisualiser...   Imprimer...   Haut
Variation sur les BOTS  -  par FSMOD

Variation sur les BOTS

En complément des informations produites dans la rubrique SERVEUR / Variation sur les BOTS, voici les codes qui permettront leur réalisation.

Modification du code sources

Fichier g_local.h

Après la ligne

 extern    vmCvar_t    g_adminVote;

Insérez la ligne suivante

 extern    vmCvar_t    g_mapKickBots; // *FSMOD* kick bots rotation map

Fichier g_main.c

Après la ligne

 vmCvar_t    g_adminVote;

Insérez la ligne suivante

 vmCvar_t    g_mapKickBots; // *FSMOD* kick bots rotation map

Après la ligne

 { &g_adminVote, "g_adminVote", "1", CVAR_ARCHIVE, 0.0f, 0.0f, 0, qfalse },

Insérez la ligne suivante

 { &g_mapKickBots, "g_mapKickBots", "1", CVAR_ARCHIVE, 0.0f, 0.0f, 0, qfalse }, // *FSMOD* kick bots rotation map

Fichier g_bot.c

Remplacez  la fonction G_LoadBots par la suivante

 

/*
===============
G_LoadBots
===============
*/
static void G_LoadBots( void )
{
    vmCvar_t    botsMultiFile;
    int         numdirs;
    char        filename[128];
    char        dirlist[1024];
    char*       dirptr;
    int         i;
    int         dirlen;

    if ( !trap_Cvar_VariableIntegerValue( "bot_enable" ) )
    {
        return;
    }

    g_numBots = 0;
    trap_Cvar_Register( &botsMultiFile, "g_botsMultiFile", "", CVAR_INIT|CVAR_ROM, 0.0, 0.0 );

    if( *botsMultiFile.string )
    {
        G_LoadBotsFromFile(botsMultiFile.string);
    }
    else

    {
        G_LoadBotsFromFile("botfiles/bots.txt");
    }


    trap_Printf( va( "%i bots parsedn", g_numBots ) );
}

Remplacez la fonction G_InitBots par la suivante

 

/*
===============
G_InitBots
===============
*/
void G_InitBots( qboolean restart )
{
    int         botplayers;
    int         minplayers;
    int         i;
    gclient_t   *cl;

    trap_Cvar_Register( &bot_minplayers, "bot_minplayers", "0", CVAR_SERVERINFO, 0.0, 0.0 );

    minplayers = bot_minplayers.integer;
    if ( minplayers > 0 && g_mapKickBots.integer )
    {
        trap_SendConsoleCommand( EXEC_INSERT, va("kick allbots") );
    }

    G_LoadBots();

    LoadPath_ThisLevel();
}

new.gif Note sur les CVARS utilisés

g_botsMultiFile : Voir la rubrique SERVEUR / Variation sur les BOTS

g_mapKickBots : Par défaut à 1. Il permet de kicker les bots à chaque nouvelle map, de manière à charger le fichier bots suivant.

-=eek=-

Publié le 19/03/2019 16:56  Prévisualiser...   Imprimer...   Haut
Variation sur les BOTS  -  par FSMOD

Variations sur les BOTS

Par défaut, SOF reconnait les bots inscrits dans le fichier bots.txt, lui même inclus dans le répertoire botfiles. Ce fichier est limité en taille (8192 octets) et ne peut abriter qu'une cinquantaine de bots. Même si vous ne prévoyez qu'une dizaine de bots dans une map par le biais du CVAR bot_minplayers, leur panachage ne sera pas optimum et d'une map à l'autre on pourra rencontrer les mêmes pseudos avec les mêmes paramètres associés.

A dessein de bénéficier d' une plus grande diversité il y a deux solutions pour offrir au pointeur de chargement des bots, un choix plus large.

1ère solution

Augmentation de la taille du fichier bots.txt.

Pour ce faire il convient de recoder la bibliothèque bg_public.h comme suit:

 #define MAX_BOTS_TEXT   16384 // AV 8192   *FSMOD* augmentation taille fichier bots.txt

Avec cette nouvelle taille, le fichier bots.txt pourra accueillir une bonne centaine de bots.

2ème solution

La plus longue en matière de rédaction. Il suffit d'utiliser le CVAR g_botsMultiFile que j'ai codé à cet effet (cf la rubrique CODAGE). Ce CVAR permet de charger des fichiers bots qui pourront être personnalisés pour chaque map. Ces fichiers sont de la même conception que le fichier bots.txt mais peuvent être réduits en taille de manière à contenir moins de bots.

Une méthode simple

Sur le serveur, créer un répertoire dans la racine du mode que l'on nommera par exemple, multibot

Ecrire dans ce répertoire plusieurs fichiers qui seront nommés a.txt, b.txt, c.txt, etc... . L'idéal est de créer autant de fichiers que de maps inscrites dans le mapcycle. Chacun de ses fichiers accueillera une trentaine de bots avec leur nom unique.

Dans le fichier mapcycle entrer pour la map une ligne sur le modèle suivant:

g_botsMultiFile "multibot/a.txt"

La map suivante recevra cette ligne:

g_botsMultiFile "multibot/b.txt"

et ainsi de suite. Chaque map aura donc son propre fichier associé. D'une map à l'autre, la totalité des pseudos des bots sera ainsi renouvelé.

Il faut toutefois remarquer que les bots devront entrer rapidement dans la map à chaque nouvelle rotation, aussi est-il recommandé de recoder les sources comme je l'ai indiqué dans l'onglet CODAGE / CHARGEMENT DES BOTS.

-=smile=-

Publié le 19/03/2019 16:55  Prévisualiser...   Imprimer...   Haut
READY  -  par FSMOD

READY

A l'intermission chaque joueur doit annoncer qu'il est prêt pour la map suivante, en actionnant la touche ENTREE. Le voyant READY s'affiche alors en face de son pseudo, dans le panneau des scores. Certains joueurs ne connaissent pas cette procédure et bloquent momentanément la rotation du cycle de maps pendant 10 secondes, pendant que d'autres s'impatientent en faisant clignoter leur annonce READY.

Afin d'annuler cette annonce et limiter le temps d'attente, j'ai codé ce qui suit.

Modification du code sources

Fichier g_main.c

Dans la fonction CheckIntermissionExit rechercher le groupe suivant:

 if ( Q_stricmp ( exitReady.string, readylist ) != 0 )
    {
        trap_Cvar_Set( "exitReady", readylist );

    }

Le remplacer par:

 // *FSMOD*  Annule l'affichage READY à l'intermission
 /*
    if ( Q_stricmp ( exitReady.string, readylist ) != 0 )
    {
        trap_Cvar_Set( "exitReady", readylist );
    }
 */
 // *FSMOD
*

Recherchez le groupe suivant

 // if we have waited ten seconds since at least one player
    // wanted to exit, go ahead
    if ( level.time < level.exitTime + (g_intermissionDelay.integer * 1000) ) {
        return;
    }

Le remplacer par

 // if we have waited 5 seconds since at least one player
    // wanted to exit, go ahead
    if ( level.time < level.exitTime + (g_intermissionDelay.integer * 500) )  //*FSMOD* Limite Intermission 5 sec.
    {
        return;
    }

-=biggrin=-

Publié le 16/03/2019 12:26  Prévisualiser...   Imprimer...   Haut
Santé et Goggles  -  par FSMOD

SANTE et GOGGLES

L'usage des jumelles infra-rouges et de vision nocturne (Thermal et NV goggles) affectent le joueur qui les utilise, d'une perte totale de protection par l'armure. Il ne lui reste que la santé. Cette pénalité est justifiée dans la mesure où il perçoit très nettement et à distance, la silhouette écarlate de la cible qui lui offre ainsi, un avantage certain. D'autant plus que des cloisons minces laissent même apparaitre la cible si elle se trouve collée contre la paroi. Le WH n'est pas loin.

Personnellement j'ai jugé insuffisante cette pénalité aussi ai-je codé un CVAR g_healthGoggle, dont la valeur sur une plage de 5 à 100, sera choisie par le Sysop. Elle impactera le capital santé de départ du joueur concerné. La valeur g_healthGoggle est fixée à 50 par défaut.

Pour résumer:

  • 5 = Taux d'anémie très élevé
  • 100 = C'est la pleine forme

Modification du code sources

Fichier g_local.h

Après

 extern vmCvar_t g_realisticAmmo;

Ajouter

 extern vmCvar_t g_healthGoggle; // *FSMOD* Santé goggles

Fichier g_main.c

Après

 vmCvar_t  g_realisticAmmo;

Ajouter

 vmCvar_t  g_healthGoggle;  //*FSMOD* Santé goggles

Après

 { &g_realisticAmmo, "g_realisticAmmo", "0", CVAR_SYSTEMINFO, 0.0f, 0.0f, 0, qfalse },

Ajouter

 { &g_healthGoggle, "g_healthGoggle", "50", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_LOCK_RANGE, 05.0, 100.0 },// *FSMOD* Santé goggles

Fichier g_client.c

Dans la fonction ClientSpawn, remplacez le groupe

  

// Everyone gets full armor in deathmatch
        client->ps.stats[STAT_ARMOR] = MAX_HEALTH;
    }

    client->ps.stats[STAT_HEALTH] = ent->health = MAX_HEALTH;

Par le groupe suivant

    // Everyone gets full armor in deathmatch
        client->ps.stats[STAT_ARMOR] = MAX_HEALTH;
    }

// *FSMOD* La santé est fixée en cas d'usage des goggles
    if ( pm->ps->stats[STAT_GOGGLES] == GOGGLES_INFRARED  || pm->ps->stats[STAT_GOGGLES] == GOGGLES_NIGHTVISION   )


    {
        client->ps.stats[STAT_HEALTH] = ent->health =  g_healthGoggle.integer;
        if (g_healthGoggle.integer != 100 && disable_thermal.integer == 0)

        {

        trap_SendServerCommand(ent-g_entities, "chat -1\ ".:: Your health is reduced by using thermals  ::.\n " );

        }

    }

   else
    {
        client->ps.stats[STAT_HEALTH] = ent->health = MAX_HEALTH;
    }

// *FSMOD*

Nota: Bien entendu il est impératif que les CVAR disable_thermal et/ou disable_NightVision soient à 0 afin de rendre les jumelles disponibles pour les joueurs. Par ailleurs, ceux qui choisiront l'armure ne seront pas affectés par le handicap santé.

-=mad=-

Publié le 13/03/2019 18:38  Prévisualiser...   Imprimer...   Haut
Third Person  -  par FSMOD

Third Person

La fonction third Person codée initialement dans les sources Rocmod a été par la suite invalidée par ses programmeurs, au motif vraisemblable qu'elle a été considérée comme une forme de triche.

Personnellement je ne considère pas que le tir en third Person offre un quelconque avantage à celui qui en use, d'autant plus que le réticule de visée n'est plus affiché, ce qui rend le tir très instinctif, à défaut d'être précis. Toutefois il appert que certains joueurs l'affectionnent particulièrement. Je l'ai donc recodée dans ma version 2.2 et  une commande directe est disponible dans l'onglet Misc. Setup.

Modification du code sources

Cela se passe uniquement côté client

Fichier cg_main.c

Recherchez le groupe suivant

    { &cg_thirdPerson, "cg_thirdPerson", "0", CVAR_CHEAT },
    { &cg_thirdPersonRange, "cg_thirdPersonRange", "80", CVAR_CHEAT },
    { &cg_thirdPersonYaw, "cg_thirdPersonYaw", "0", CVAR_CHEAT },
    { &cg_thirdPersonPitch, "cg_thirdPersonPitch", "15", CVAR_CHEAT },
    { &cg_thirdPersonHorzOffset, "cg_thirdPersonHorzOffset", "0", CVAR_CHEAT },

Le remplacez par celui-ci

 // *FSMOD* Annulation cheat protected

    { &cg_thirdPerson, "cg_thirdPerson", "0", CVAR_ARCHIVE | CVAR_USERINFO },  
    { &cg_thirdPersonRange, "cg_thirdPersonRange", "80", CVAR_ARCHIVE | CVAR_USERINFO },
    { &cg_thirdPersonYaw, "cg_thirdPersonYaw", "0", CVAR_ARCHIVE | CVAR_USERINFO },
    { &cg_thirdPersonPitch, "cg_thirdPersonPitch", "15", CVAR_ARCHIVE | CVAR_USERINFO },
    { &cg_thirdPersonHorzOffset, "cg_thirdPersonHorzOffset", "0", CVAR_ARCHIVE | CVAR_USERINFO },

 // *FSMOD*

 -=eek=-

Publié le 12/03/2019 18:57  Prévisualiser...   Imprimer...   Haut
Caractères interdits  -  par FSMOD

Caractères interdits

Il est fréquent de voir sur les serveurs qui tournent sous la version v 1.00, une foultitude de pseudos ou de binds ponctués par des caractères spéciaux. Même les hostnames de ces serveurs sont affublés de ces artifices scripturaux particulièrement agressifs et colorés.

Ces caractères spéciaux sont les suivants:

symb.jpg

Ils sont générés selon la forme suivante:

liste.jpg

Sous Rocmod et à partir de WIndows 7 ils ne s'affichent que sous la forme d'un simple point, toutefois ils conservent leur apparence dans le fichier log du serveur.

Les considérant ridicules, inutiles et envahissants, j'ai codé ce petit filtre.

Modification du code sources

Fichier g_client.c

Dans la fonction G_ClientCleanName, après les lignes suivantes

 while( 1 )
    {
        ch = *in++;
        if( !ch )
        {
            break;
        }

Insérez le groupe suivant

// *FSMOD*  Caractères refusés

  if (    ch == ''    // doigt d'honneur
     ||   ch == ''    // F1dans une ellipse
     ||   ch == ''    // F2 dans une ellipse
     ||   ch == ''    // F3 dans une ellipse
     ||   ch == ''    // F4 dans une ellipse
     ||   ch == ''    // 1 dans un carré
     ||   ch == ''    // 2 dans un carré
     ||   ch == ''    // 3 dans un carré
     ||   ch == ''    // 4 dans un carré
     ||   ch == ''    // 5 dans un carré
     ||   ch == ''    // 6 dans un carré
     ||   ch == ''    // 7 dans un carré
     ||   ch == ''    // 8 dans un carré
     ||   ch == ''    // 9 dans un carré
     ||   ch == ''    // 0 dans un carré
     ||   ch == ''    // point dans un carré
     ||   ch == ''    // ESC
     ||   ch == ''    // ||
     ||   ch == ''    // flèche horizontale
     ||   ch == ''    // num lock
     ||   ch == ''    // Alt
     ||   ch == ''    // Barre de bateau
     ||   ch == ''    // scroll lock
     ||   ch == ''    // flèche verticale
     ||   ch == ''    // imprimante
     ||   ch == ''    // cadenas
     ||   ch == ' '    // + dans un carré
     ||   ch == ' ' )  // - dans un carré

       {
         break;
       }


// * FSMOD*

NOTA: Les caractères spéciaux ne sont pas affichés entre les croches du code mais sont présents. Toute action de copier/coller sera effective.

Table de vérité

Pseudos connectés Pseudos affichés
1car.jpg  Delco
2car.jpg  Democok
3car.jpg  UnnamedPlayer
4car.jpg  UnnamedPlayer
5car.jpg  Bel]

-=tongue=-

Publié le 11/03/2019 17:37  Prévisualiser...   Imprimer...   Haut
Saut à l'impact  -  par FSMOD

Saut à l'impact

J'ai codé ce petit effet juste pour le fun. Il consiste à projeter en l'air une cible à une hauteur variable dès qu'elle est touchée par un projectile.
Si elle n'est pas tuée sur le coup elle peut  très bien riposter en l'air.

Le paramètre associé au CVAR g_funKillJump est codé à 300 par défaut mais il peut être redéfini à tout moment durant le jeu ou au préalable, dans le fichier server.cfg .

Modification du code sources

Fichier g_local.h

Après

 extern    vmCvar_t    g_punishRecon;

Ajouter

 extern vmCvar_t g_funKillJump; // *FSMOD* saut de la cible à l'impact

Fichier g_main.c

Après

 vmCvar_t    g_punishRecon;

Ajouter

 vmCvar_t g_funKillJump; // *FSMOD* saut de la cible à l'impact

Après

 { &g_punishRecon, "g_punishRecon", "1", CVAR_ARCHIVE, 0.0f, 0.0f, 0, qfalse },

Ajouter

 { &g_funKillJump,  "g_funKillJump", "300", CVAR_SERVERINFO | CVAR_ARCHIVE,   0.0f,   0.0f,   0,  qfalse  }, // *FSMOD* saut de la cible à l'impact

Fichier g_combat.c

Dans la fonction T_Damage recherchez les lignes suivantes

    // do the damage
    if (take)
    {
        targ->health = targ->health - take;

        if ( targ->client )
        {
            targ->client->ps.stats[STAT_HEALTH] = targ->health;

Insérez juste après, le groupe suivant

 

 // *FSMOD* saut de la cible à l'impact
            switch ( mod & 0xff )
                {

                        case MOD_TRIGGER_HURT_NOSUICIDE:
                        case WP_MM1_GRENADE_LAUNCHER:
                        case WP_RPG7_LAUNCHER:
                        case WP_SMOHG92_GRENADE:
                        case MOD_TARGET_LASER:
                        case WP_M4_ASSAULT_RIFLE:
                        case WP_MP5:
                        case WP_MICRO_UZI_SUBMACHINEGUN:
                        case WP_AK74_ASSAULT_RIFLE:
                        case WP_USAS_12_SHOTGUN:
                        case WP_M590_SHOTGUN:
                        case WP_MSG90A1:
                        case WP_SIG551:
                        case WP_M60_MACHINEGUN:
                        case WP_M1911A1_PISTOL:
                        case WP_USSOCOM_PISTOL:

                    if ( targ->health <= 0 )
                    {
                        targ->client->ps.velocity[2] = 3.2f * sqrt(g_funKillJump.value * (take > 100 ? 100 : take) * 0.75 * DEFAULT_GRAVITY / g_gravity.value);
                            }
                    else
                    {
                        targ->client->ps.velocity[2] = 3.2f * sqrt(g_funKillJump.value * (take > 100 ? 100 : take));
                           }
                    break;
                }
 // *FSMOD*

-=cool=-

Publié le 10/03/2019 18:11  Prévisualiser...   Imprimer...   Haut
Rubriques

Vous êtes ici :   Accueil » Documentation