Author Topic: Problèmes avec script  (Read 804 times)

Jed

  • Tailleur de maps (expérimenté)
  • Posts: 727
    • http://www.hudescharfe.com
Problèmes avec script
« on: June 15, 2010, 09:10:10 PM »
Salut tout le monde, est ce que quelqu'un, je pense en particulier à snaky, pourrait m'aider sur ce problème: je veux remplacer le k98 par un g43, mais j'ai du mal à remplacer les animations liées au joueur. Pas de problèmes pour l'arme, mais le joueur fait un peu n'importe quoi. J'y étais parvenu il y a bien longtemps mais je ne me souviens plus comment j'ai pu faire. J'ai dû oublier de modifier un script.

Voici une petite vidéo: http://www.youtube.com/watch?v=AkuzDxVr4GU

Tiki modifié du k98:

Code: [Select]
TIKI

setup
{
scale 0.52   // Set default scale to 16/30.5 since world is in 16 units per foot and model is in cm's
path models/weapons/g43
skelmodel g43.skd
surface all shader gewehr43
}
$define sounddir sound/weapons

init
{
server
{
//========================================//
//  WEAPON NAME    //
//========================================//
  classname  Weapon
  weapontype  rifle
  name   "Mauser KAR 98K"
  rank   230 230

//========================================//
//  WEAPON ACCURACY    //
//========================================//
  //Gewehr 43 Semi-automatic Sniping Rifle (7.92x57mm Mauser)

  sp bulletrange   4000    //the range at which bulletspread is applied
  sp bulletspread   59 59 140 140   //minpitch minyaw maxpitch maxyaw
  sp zoomspreadmult  0.055   //bulletspread accuracy boost multiplier when zoomed

  dm bulletrange   4000
  dm bulletspread   59 59 300 300  //further increased to encourage standing still while firing
         //and to counteract the fact that you move slower with the weapon
  dm zoomspreadmult  0.055

  realism bulletrange  4000
  realism bulletspread  35 35 100 100

  realism zoomspreadmult  0.055

//========================================//
//  DAMAGE / RATE OF FIRE   //
//========================================//
  sp bulletdamage   100
  dm bulletdamage   100
  sprealism bulletdamage  100
  dmrealism bulletdamage  100

  sp firedelay   1.45
  dm firedelay   1.45
  realism firedelay  1.45

  realism throughwood  24
  realism throughmetal  8

//========================================//
//  PLAYER MOVEMENT    //
//========================================//
  sp movementspeed  0.91
  sp zoommovement   0.5

  dm movementspeed  0.825
  dm zoommovement   0.5

  realism movementspeed  0.825
  realism zoommovement  0.5

//========================================//
// RIFLE BUTT / SECONDARY FIRE   //
//========================================//

//========================================//
//  AMMO     //
//========================================//
  firetype   bullet
  ammotype   "rifle"
  meansofdeath   bullet
  semiauto
  clipsize   10
  ammorequired   1
  bulletlarge   1

  sp startammo   10
  dm startammo   50
  sprealism startammo  10
  dmrealism startammo  50

  // Additional DM Loadout
  dm additionalstartammo "grenade" 1
//  dm additionalstartammo "smokegrenade" 1

  // Additional DM Loadout
  dmrealism additionalstartammo "grenade" 1
//  dmrealism additionalstartammo "smokegrenade" 1

//========================================//
//  TRACERS, CROSSHAIR, ZOOM  //
//========================================//
  crosshair   1
  //zoom    30

//========================================//
//  SOUND, AI, OTHER   //
//========================================//
  // AI animation group info
  weapongroup   rifle
  airange    sniper

  pickupsound   springfield_snd_pickup
  ammopickupsound   springfield_snd_pickup_ammo
  noammosound   springfield_snd_noammo
}
client
{
  // this is attached to the player during reload
  cache models/ammo/springfield_clip_reload.tik

  cache muzsprite.spr
  cache vsssource.spr
  cache models/fx/muzflash.tik
  cache model models/fx/snipesmoke.tik
  cache vsssource.spr
}
}

animations
{

idle g43.skc

reload g43_reload.skc
{
  server
  {
   16 surface g43_Clip +nodraw
   50 surface g43_Clip -nodraw
   last idle
  }
  client
  {
   entry sound gewehr43_snd_reload
  }
}
fire g43_fire.skc
{
  server
  {
   entry shoot
  }
  client
  {
   entry stopaliaschannel gewehr43_snd_fire
   entry sound gewehr43_snd_fire

   // By now, the server has already fired the weapon, so it's
   // ok to apply the view kick apon entry to avoid problems
   // with multiple application on single frame animations.

   ////////////////////////////////////////////////////////////////////////////////////////
   // View Kicking
   //
   // View Kicking works based on the assumptions that every weapon has its own tendencies to kick in
   // a paticular fashion. In MOH we call then scatter patterns. Currently we have 2 scatter patterns which
   // will be explained.
   // Scatter Patterns:
   // "V" - the cone. The longer you shoot the more random your shots will be in the horizontal axis.
   // "T" - the T shape. The gun has a tendancy to push in a paticular direction.
   //
   //
   //               +-------------------------------------------- Scatter Pitch Min
   //               |    +--------------------------------------- Scatter Pitch Max
   //               |    |       +------------------------------- Scatter Yaw Min
   //               |    |       |   +--------------------------- Scatter Yaw Max
   //               |    |       |   |     +--------------------- The Recentering speed in degrees per second
   //               |    |       |   |     |    +---------------- The Scatter Pattern
   //               |    |       |   |     |    |     +---------- The absolute pitch min/max
   //               |    |       |   |     |    |     |  +------- The absolute yaw min/max
   //               |    |       |   |     |    |     |  | +----- This is the pitch at which you loose all
   //               |    |       |   |     |    |     |  | |      control of the weapon and its behavior is
   //                |    |       |   |     |    |     |  | |      purely random.
   //   V    V       V   V     V    V     V  V V
   entry viewkick       -24.0 -18.0   -16.0 16.0 3.0 "T"    8 8 8

   // muzzle flash
   entry tagdlight tag_barrel 0.3 0.20 0.175 300 0.25 -1.0 -0.75 -0.2

   entry tagspawnlinked tag_barrel
   (
    count 1
    model models/fx/muzflash.tik
    color 0.00 0.00 1.00
    scale 0.07
    life 0.01
    velocity 300.00
    offsetalongaxis 3 0 0
    alignstretch 0.08
    randomroll
   )

   entry tagspawnlinked tag_barrel
   (
    count 1
    model muzsprite.spr
    color 1.00 1.00 1.00
    scale 0.09
    life 0.04
    offsetalongaxis 4 0 0
   )

   entry commanddelay 0.020 tagspawn tag_barrel
   (
    spawnrate 1.00
    model vsssource.spr
    count 1
    alpha 0.10
    color 1.00 1.00 1.00
    spritegridlighting
    scale 0.09
    life .9
    scalerate 23.00
    velocity 429.00
    accel 0.00 20.00 30.00
    friction 2.00
    fade
    offsetalongaxis random 4 0 0
   )

   entry tagspawn tag_barrel
   (
    count 1
    scale .7
    model models/fx/snipesmoke.tik
   )

   entry tagspawn tag_eject 1024
   (
    spawnrange 2048
    count 1
    model models/ammo/rifleshell.tik
    scale 1.0
    velocity 70
    randvel crandom 10 crandom 10 random 20
    emitterangles 0 0 0
    avelocity crandom 90 crandom 90 0
    accel 0 0 -800
    physicsrate 20
    life 2.0
    fadedelay 1.7
    collision
    bouncefactor 0.2
    bouncesoundonce snd_rifle_shell
   )
  }
}
}

/*QUAKED addon_playerweapon_german_g43 (0.0 0.0 1.0) (-8 -8 -8) (8 8 8)
German sniper rifle - G43.
*/

Fichiers modifiés côté player:

* models\player\base\anims_rifle.txt

Code: [Select]
//========================
// Reload KAR98
//========================
kar98_reload  viewmodel/g43/g43_reload.skc  crossblend 0.05
{
  server
  {
   first reloadweapon
   1 weaponcommand mainhand attachtohand mainhand    // attach the weapon to the left hand
   15 attachmodel models/ammo/g43_clip.tik tag_weapon_left   // tell the weapon that we're reloading
   49 removeattachedmodel tag_weapon_left 0 models/ammo/g43_clip.tik  // remove the clip model from the right hand
   51 weaponcommand mainhand clip_fill     // put the clip ammo into the gun
   last weaponcommand mainhand attachtohand mainhand    // reattach the weapon to the right hand
  }
}

(...)

//========================
// KAR98 Rechambering
//========================
kar98_stand_rechamber  viewmodel/g43/g43_idle.skc crossblend 0.1
{
}
kar98_crouch_rechamber  viewmodel/g43/g43_idle.skc crossblend 0.1
{
}

* models\player\base\fps_anims_rifle.txt

Code: [Select]
//========================
// KAR98 Anims
//========================
kar98_idle1    viewmodel/g43/g43_idle.skc    crossblend 0.2
//kar98_idle2  viewmodel/idle_rifle2.skc    crossblend 0.2  weight 0.5 dontrepeate
//kar98_idle3  viewmodel/idle_rifle3.skc    crossblend 0.2  weight 0.1 dontrepeate
kar98_fire   viewmodel/g43/g43_fire.skc    crossblend 0.05
kar98_rechamber  viewmodel/g43/g43_idle.skc    crossblend 0.2
kar98_reload  viewmodel/g43/g43_reload.skc    crossblend 0.05
kar98_pullout  viewmodel/g43/g43_pullout.skc    crossblend 0.1
{
  client
  {
   enter sound snd_rifle_pullout
  }
}
kar98_putaway  viewmodel/rifle/lower_rifle_stand.skc
{
  client
  {
   enter sound snd_rifle_putaway
  }
}

Bien sûr tous les fichiers skc mentionnés sont bien présents et exploitables. Je me demande si ça viendrait pas du fait que j'ai laissé vide les fonctions "kar98_stand_rechamber" et "kar98_crouch_rechamber" dans anims_rifles.txt?
Ce qui est curieux c'est qu'on dirait que le jeu ne veut pas exécuter l'animation "g43_idle.skc", pourtant au même format que les autres.
Quant à savoir pourquoi le nombre de munitions est à 0...

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Problèmes avec script
« Reply #1 on: June 15, 2010, 09:30:02 PM »
Pour être franc, j'ai un peu de mal à voir les soucis sur la video... Si tu peux prendre une suite de screens de chaque soucis, ca m'aiderai pas mal.

J'ai quand même relevé deux anomalies:
- Le décalage de la main lors de l'action de dégainer (pullout surement)
- La disparition brutale de l'arme et des bras quand on rengaine (putaway, non?)

Une bonne chose à faire en premier, c'est de vérifier que le soucis est bien au niveau de la partie FPS et non de la partie animation/alignement d'objets.
Essaie de faire apparaitre un model 3D de bras seuls (de classe script_model), quitte à créer un tiki temporaire. Fais-lui faire les actions voulues (en gros, anime-le), et regarde si tout colle. Il se peut que les décalages viennent tout simplement de l'animation et non de l'encodage.

Après, il faut faire un parallèle avec les fichiers d'état du joueur (global/mike_*.st).
Dedans, on y trouvera les informations sur les animations enclenchées lors des dégaine/rengaine d'armes. Il se peut qu'une partie des enchainement soit codée dans ces fichiers (plutôt "mike_torso.st" que "...legs.st").

Enfin, après ces vérifications, s'il y a encore des écarts, il serait bon de voir les options d'exportation de LR3D (c'est celui-ci que tu utilises surement, non?). En effet, le logiciel propose d'exporter les anims au format .skc, mais avec des options type "FPS anim". Or, il n'est pas impossible que ces options plantent... Auquel cas, il peut être utile d'essayer avec puis sans cocher la case.

Pour le nombre de munitions: le tiki employé pour l'arme est un tiki de spearhead. Si c'est pour du MOH:AA pur, c'est rapé, il faudra adapter les clefs définissant l'arme (ainsi, il n'existe pas de "realism ", "sp ", ou "dm " comme pré-option dans le volet original de cette série). Sinon, une autre tite capture d'écran m'aiderait à savoir s'il quel compteur est à zéro et à quel moment.

Ces anims fps... Toujours aussi chi**tes dans ce jeu !! ^^

Jed

  • Tailleur de maps (expérimenté)
  • Posts: 727
    • http://www.hudescharfe.com
Problèmes avec script
« Reply #2 on: June 15, 2010, 10:31:55 PM »
En effet j'ai repris un tiki de SH mais je pensais que les variables étaient du même type, et que celles apparues sous SH seraient simplement ignorées par AA.

Le problème en gros: l'animation g43_idle ne se joue pas, c'est ce que tu peux apercevoir au tout début de la vidéo. Le putaway se fait bien (animation commune à la même classe d'arme "rifles"), mais après l'arme disparait. Elle ne réapparait que lors du tir (animation g43_fire). De plus, le compte de munition est à 0 en permanence et donc le rechargement se fait à chaque coup. Et enfin, comme tu as vu, le décalage de la main lors du putaway. Je pense que c'est dû à l'utilisation d'une animation générique (rilfe_putaway je crois). Ce dernier point me semble curieux, car j'ai repris les animations du g43 de SH, et c'est fait comme ça dans ce dernier. L'animation rifle_putaway aurait été refaite dans SH? Faut que je vérifie ça.

Pour la vidéo désolé si je fait de meilleure qualité ou plus longtemps elle est trop lourde.

Jed

  • Tailleur de maps (expérimenté)
  • Posts: 727
    • http://www.hudescharfe.com
Problèmes avec script
« Reply #3 on: June 15, 2010, 10:36:04 PM »
Attend en fait j'ai dit une connerie: le décalage de la main est fait pendant le pullout, et ça par contre c'est une animation spécifique au g43. A la limite je devrais essayer de n'utiliser que des animations communes aux rifles comme pour le kar98, à l'exception du rechargement. Mais si je fait comme ça on verra toujours un décalage entre l'idle et le rechargement, les mains n'étant pas situées aux même coordonnées à la fin de l'idle et au début du reload :wacko:  

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Problèmes avec script
« Reply #4 on: June 15, 2010, 10:36:51 PM »
"kar98_idle1    viewmodel/g43/g43_idle.skc    crossblend 0.2"

Je dirai que le "1" sous-entend qu'il existe plusieurs labels d'animation, donc le jeu aura tendance à aller chercher une anim au hasard. Or, s'il n'y en a qu'une, il se pourrait bien qu'il ne trouve pas d'anim à jouer (il s'attend en fait ou à un "_idle" tout seul, ou à du "_idle1" SSI il existe un "_idle2"...)

Essaie sans le 1.

Pour ce qui est du rechargement à chaque tir, c'est intrinsèque, il me semble, au Mauser KAR98.
Peut-être pourras-tu trouver des solutions dans le global/mike_torso.st, car je crois que c'est là-dedans que le jeu pioche l'animation intermédiaire de tir.


Parenthèse: c'est moi, ou tous les FPS se généralisent? Crysis, COD, Médal, CS, ils ont maintenant tous la même gueule! J'en regrette presque les Quake III, Unreal 2004, & autres Halo...
« Last Edit: June 15, 2010, 10:38:08 PM by snaky »

Jed

  • Tailleur de maps (expérimenté)
  • Posts: 727
    • http://www.hudescharfe.com
Problèmes avec script
« Reply #5 on: June 15, 2010, 10:45:16 PM »
Faudrait que je vérifie dans les *.st en effet, j'avais rien trouvé concernant le g43 dans ceux de SH, j'ai pas pensé à regarder ce qui était raconté pour le kar98 dans ceux de AA.
Pour le "idle1", c'était fait comme ça dans AA pour le kar98, je n'y ai pas touché. Je me suis contenté de modifier les noms des valeurs.
Il y a bien "idle2" et "idle3" au dessous, mais ils étaient déjà mis en commentaires... Donc pareil, je n'y ai pas touché. En revanche la réponse se trouve peut être dans le torso de ce cher mike hihi
Mais je suis certain que c'est modifiable, j'avais déjà fait les manips il y a quelques années et j'étais arrivé à un truc parfait. Pas moyen de remettre la main dessus ou de me souvenir exactement ce que j'avais modifié... J'avais aussi réussi la manoeuvre inverse, modifier un semi auto en fusil à répétition. Le seul truc qui est impossible à faire (j'étais à deux doigts d'y arriver mais un truc bloque et rien à faire), c'est d'ajouter des armes.

Merci pour ton aide snaky ;)
« Last Edit: June 15, 2010, 10:47:54 PM by Jed »

Jed

  • Tailleur de maps (expérimenté)
  • Posts: 727
    • http://www.hudescharfe.com
Problèmes avec script
« Reply #6 on: June 16, 2010, 09:58:05 AM »
J'ai modifié le tiki pour qu'il soit quasiment identique à celui du kar98 et ça fonctionne! J'ai viré dans le fps_anims_rifle les animations propres au g43 (sauf le reload) et j'y ai mis les animations du kar98. J'ai aussi retiré le "1" de "idle1" comme tu l'avais suggéré et ça marche! Je comprends pas car ça marchait comme ça avec le kar?
Maintenant c'est presque parfait. On voit encore un minuscule décalage entre le reload et l'idle (faut le savoir pour le voir) sinon tout est ok.
Il me reste qu'à changer l'affichage du nom de l'arme. Je posterai une petite video quand elle sera en ligne.
Merci Snaky!

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Problèmes avec script
« Reply #7 on: June 16, 2010, 01:24:23 PM »
De rien, si t'as encore un soucis, n'hésite pas.
Néanmoins, si tu as une piste pour mon soucis des 2500 entités, je suis preneur ^^

Jed

  • Tailleur de maps (expérimenté)
  • Posts: 727
    • http://www.hudescharfe.com
Problèmes avec script
« Reply #8 on: June 16, 2010, 05:27:01 PM »
Désolé Snaky, j'ai vu ton problème mais je n'ai aucune idée... :(

Petite vidéo du résultat: http://www.youtube.com/watch?v=Vspj7jyhnf8

PS: je crois avoir trouvé une bonne piste pour injecter du code au jeu, mais j'en dis pas plus avant d'avoir essayé ;)  
« Last Edit: June 16, 2010, 05:36:17 PM by Jed »

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Problèmes avec script
« Reply #9 on: June 16, 2010, 05:59:46 PM »
Essaie de changer le menu pour qu'on voit clairement défiler les cartouches une à une (et pas demi-cartouche par demi-cartouche ^^)

Et pour ton code à injecter, bien que je n'ai pas saisis exactement de quoi il s'agit, en cas d'échec, partage quand même: ou l'idée pourra resservir, ou il existe d'autres pistes d'étude ;)

Jed

  • Tailleur de maps (expérimenté)
  • Posts: 727
    • http://www.hudescharfe.com
Problèmes avec script
« Reply #10 on: June 16, 2010, 06:03:45 PM »
Pour les cartouches je n'ai pas encore eu le temps d'y jeter un oeil mais je pense que ça va pas être trop dur. Pour mon idée je parlais de rajouter des fonctions au jeu en modifiant une dll chargée par le jeu.