Page 2 of 2
Re: [Script] Switch des armes
Posted: 05 Mar 2014, 14:43
by Eole
De ce que je vois dans le screenshot tu as deux boucles sur les PendingEvents. Ce serait plus simple de n'en avoir qu'une seule. Par exemple en déplaçant la première dans la seconde:
Code: Select all
foreach (Event in PendingEvents) {
switch (Event.Type) {
case CSmModeEvent::EType::OnActionEvent: {
if (Event.Player == Null) {
Discard(Event);
} else {
SwitchWeapon(Event.Player, Event.ActionSlot);
PassOn(Event);
}
}
case ... : {
}
case ... : {
}
}
}
Le changement de vitesse de reload se fait dans la fonction de changement d'arme. Elle utilise les valeurs qui sont dans la constante que tu as ajouté au début de ton code.
Ce qui ce passe à mon avis, c'est que par défaut la vitesse de reload est initialisé à 1.0 et tu ne la change pas quand la partie démarre. Par contre dès que tu changes d'arme il va récupérer une des valeurs de ta constante qui correspond à l'arme sélectionnée. Hors tu n'as que des valeurs inférieures à 1.0. Donc tu vas recharger tes munitions plus lentement. Si par exemple tu mettais 2.5 dans C_AmmoGain, alors tu rechargerais beaucoup plus vite.
Re: [Script] Switch des armes
Posted: 05 Mar 2014, 16:23
by Sweeny972
ça fonctionne merci beaucoup Eole !!
Maintenant pour finir, j'aurais quelques questions pour mes futures scripts:
1) Existe-til un code pour switcher les armes via la molettes de la souris ?
2) Est-il possible de déclarer une variable à la place de la constante #Const C_AmmoGain afin de modifier le temps de recharge ?
3) Est-il possible d'implanter des bots dans le script du mode combo ?
Voila ce sera tout après ^^
ps: Tu peux simplement répondre par oui ou par non si tu n'a pas le temps de répondre

Re: [Script] Switch des armes
Posted: 06 Mar 2014, 14:23
by Eole
1) Oui, toujours dans Combo on peut trouver un exemple:
Code: Select all
// ---------------------------------- //
// On player request action change
case CSmModeEvent::EType::OnPlayerRequestActionChange: {
if (Event.Player == Null) {
Discard(Event);
} else {
CycleWeapon(Event.Player, Event.ActionChange);
PassOn(Event);
}
}
Code: Select all
// ---------------------------------- //
/** Cycle through the available weapons
*
* @param _Player The player who will cycle through his weapons
* @param _Step The number of step to go forward or backward in the weapons list
*/
Void CycleWeapon(CSmPlayer _Player, Integer _Step) {
declare Weapons for _Player = C_Default_Weapons;
if (Weapons.count <= 1) return;
declare Step = 0;
if (_Step < 0) Step = -1;
else if (_Step > 0) Step = 1;
declare CurrentWeapon for _Player = C_Default_Weapon;
if (!Weapons.exists(CurrentWeapon)) return;
declare Key = Weapons.keyof(CurrentWeapon) + Step;
while (!Weapons.existskey(Key)) {
Key += Step;
if (Key > 4) Key = 1;
else if (Key < 1) Key = 4;
}
CurrentWeapon = Weapons[Key];
switch (CurrentWeapon) {
case CSmMode::EWeapon::Laser : SwitchWeapon(_Player, CSmModeEvent::EActionSlots::Activable1);
case CSmMode::EWeapon::Nucleus : SwitchWeapon(_Player, CSmModeEvent::EActionSlots::Activable2);
case CSmMode::EWeapon::Arrow : SwitchWeapon(_Player, CSmModeEvent::EActionSlots::Activable3);
case CSmMode::EWeapon::Rocket : SwitchWeapon(_Player, CSmModeEvent::EActionSlots::Activable4);
}
}
Il faudra probablement adapter le code pour ton mode, mais l'idée est là .
2) Oui, tu peux utiliser une autre variable pour changer la vitesse de recharge d'une arme.
3) Oui c'est possible. N'importe quel mode peut implémenter des bots.
Re: [Script] Switch des armes
Posted: 06 Mar 2014, 16:02
by Sweeny972
Super merci pour les infos
Peux-tu seulement m'indiquer ce que signifie cette erreur
http://www.noelshack.com/2014-10-139411 ... tmania.png s'il te plaît (une histoire de tableau qui n'a pas assez de place c'est ça ?)
Re: [Script] Switch des armes
Posted: 06 Mar 2014, 17:55
by Eole
La variable Weapons me sert dans Combo à stocker les armes que possède le joueur. Elle doit donc contenir un tableau, pareil pour C_Default_Weapons, qui contient les armes par défaut du joueur.
Là apparemment ce n'est pas le cas, donc quand il essaye de compter le nombre d'entrées dans la variable Weapons, il renvoie une erreur en disant qu'il ne peut pas compter le nombre d'entrée de quelque chose qui n'est pas un tableau.