Un peu plus compliqué... le mod récemment ajouté à la fameuse StG 44
Explications (je mettrai plus de détails plus tard, mon lit m'appelle !) :
Le script est exécuté à chaque fois qu'un joueur tire ou fait un clic droit avec une MG (BAR ou StG 44)
- Code:
main local.fire:
if (self.useheld == 1)
end
self weaponcommand dual targetname getme
local.weapon = $getme
local.weapon.targetname = ""
if (local.weapon.model=="models/weapons/mp44.tik")
{
if (local.fire)
{
self thread fire local.weapon
end
}
if (local.weapon.semiauto != NIL)
{
local.weapon.semiauto--
if (local.weapon.semiauto == -1)
{
local.weapon.semiauto = 1
self iprint "StG 44 : semi-auto"
self weaponcommand dual dmfiredelay 0.2
}
if (local.weapon.semiauto == 0)
{
self iprint "StG 44 : automatic"
self weaponcommand dual dmfiredelay 0.086
}
}
if (local.weapon.semiauto == NIL)
{
local.weapon.semiauto = 1
self iprint "StG 44 : semi-auto"
}
local.weapon playsound mp44_snd_noammo
}
end
fire local.weapon:
if (local.weapon.semiauto == 1)
{
self stufftext("-attackprimary")
}
end
Explications (je mettrai plus de détails plus tard, mon lit m'appelle !) :
Le script est exécuté à chaque fois qu'un joueur tire ou fait un clic droit avec une MG (BAR ou StG 44)
- Code:
main local.fire: // la variable local.fire est définie seulement si c'est un clic gauche (quand le joueur tire quoi...)
if (self.useheld == 1) // self représente le joueur qui porte l'arme. Si il est en train d'appuyer sur UTILISER, on met directement fin au script (j'ai mis ça pour pouvoir balancer des voix allemandes (utiliser + clic) sans que ça change le mode de tir de la StG 44)
end
self weaponcommand dual targetname getme
local.weapon = $getme
local.weapon.targetname = "" // Bon là en gros on a récupéré l'arme du joueur dans la variable local.weapon
if (local.weapon.model=="models/weapons/mp44.tik") // Si c'est la StG 44 (aussi appellée MP44...)
{
if (local.fire) // si la variable local.fire contient une valeur (si le joueur a tiré)
{
self thread fire local.weapon // on passe au thread "fire" et on termine le script
end
}
if (local.weapon.semiauto != NIL) // si la varibale local.weapon.semiauto a une valeur (différente de nulle)
{
local.weapon.semiauto-- // on diminue de 1 sa valeur (revient à faire local.weapon.semiauto = local.weapon.semiauto - 1)
if (local.weapon.semiauto == -1)
{
local.weapon.semiauto = 1
self iprint "StG 44 : semi-auto" // ici on affiche en jaune sur l'écran du joueur qu'il est en semi-auto
self weaponcommand dual dmfiredelay 0.2 // on règle l'arme du joueur a une cadence de tir de 0.2 seconde entre chaque balle (pour qu'on ne puisse pas tirer aussi rapidement qu'en automatique en cliquant vite sur la souris...)
}
if (local.weapon.semiauto == 0)
{
self iprint "StG 44 : automatic"
self weaponcommand dual dmfiredelay 0.086 // retour à la cadence par défaut de l'arme
}
}
if (local.weapon.semiauto == NIL) // si la StG n'a pas encore de valeur à sa variable "semiauto"
{
local.weapon.semiauto = 1 // on lui attribue la valeur 1
self iprint "StG 44 : semi-auto"
}
local.weapon playsound mp44_snd_noammo // le son joué lors du changement de mode de tir
}
end
fire local.weapon: // un nouveau thread appellé "fire" et qui reçoit la variable local.weapon en entrée (sinon on ne pourrait pas utiliser cette variable à l'intérieur du thread)
if (local.weapon.semiauto == 1)
{
self stufftext("-attackprimary") // la commande stufftext appliquée au joueur permet de lancer des commandes dans sa console. Ici "-attackprimary" stoppe le tir du joueur (en gros dès qu'il clique pour tirer, la commande d'arrêt de tir se lance juste après, ce qui ne fait sortir qu'une balle (ou 2-3 suivant le ping du joueur...)
}
end