[Script] Switch des armes

Parler de tout ce qui concerne le jeu en ligne ainsi que de l'eSport et des teams

Moderator: French Moderator

Sweeny972
Posts: 55
Joined: 24 Jun 2013, 16:42

[Script] Switch des armes

Post by Sweeny972 »

Bonjour/soir à vous :o

Aujourd'hui j'ai tenté de bidouiller un peu le script du mode InstaDM afin d'introduire dans celui-ci la possibilité de switch les armes (1. Lasert - 2. Rocket... ect) à la molette de la souris ainsi qu'aux touches
.
J'ai donc fouiller un peu dans le script de Combo.Script.txt , cepandant je ne trouve pas ce que je cherche..

Quelqu'un pourrait-il m'éclairer sur ce qu'il faut écrire comme code s'il vous plaît :?:

Merci d'avance :P
User avatar
Eole
Nadeo
Nadeo
Posts: 1265
Joined: 26 Apr 2011, 21:08

Re: [Script] Switch des armes

Post by Eole »

Salut,

Voilà le code qui devrait t'intéresser dans Combo (j'ai retiré le superflu). La partie qui vérifie quand on appuie sur 1, 2, 3 ou 4:

Code: Select all

// ---------------------------------- //
// Check Action events
foreach (Event in PendingEvents) {
  // ---------------------------------- //
  // On action event
  if (Event.Type == CSmModeEvent::EType::OnActionEvent) {
    if (Event.Player == Null) {
      Discard(Event);
    } else {
      SwitchWeapon(Event.Player, Event.ActionSlot);
      PassOn(Event);
    }   
  }
}
Le fonction qui change l'arme du joueur:

Code: Select all

// ---------------------------------- //
/** Switch the weapon of a player
 *
 *  @param  _Player   The player who will switch weapon
 *  @param  _Weapon   The number of the new weapon
 */
Void SwitchWeapon(CSmPlayer _Player, CSmModeEvent::EActionSlots _Weapon) {
  switch (_Weapon) {
    // Rocket
    case CSmModeEvent::EActionSlots::Activable4: {
      SetPlayerWeapon(_Player, CSmMode::EWeapon::Rocket, False);
      _Player.AmmoGain = C_AmmoGain["Rocket"];
    }
    // Laser
    case CSmModeEvent::EActionSlots::Activable1: {
      SetPlayerWeapon(_Player, CSmMode::EWeapon::Laser, False);
      _Player.AmmoGain = C_AmmoGain["Laser"];
    }
    // Nucleus
    case CSmModeEvent::EActionSlots::Activable2: {
      SetPlayerWeapon(_Player, CSmMode::EWeapon::Nucleus, False);
      _Player.AmmoGain = C_AmmoGain["Nucleus"];
    }
    // Arrow
    case CSmModeEvent::EActionSlots::Activable3: {
      SetPlayerWeapon(_Player, CSmMode::EWeapon::Arrow, False);
      _Player.AmmoGain = C_AmmoGain["Arrow"];
    }
  }
}
Contribute to the ManiaPlanet documentation on GitHub
A question about ManiaScript? Ask it here!
Sweeny972
Posts: 55
Joined: 24 Jun 2013, 16:42

Re: [Script] Switch des armes

Post by Sweeny972 »

Salut Eole et merci de ta réponse :thumbsup:

Alors j'ai implanter les bouts de code que tu m'as fourni mais cependant, j'ai quand même eu un petit message d'erreur : http://www.noelshack.com/2014-10-139386 ... tmania.png peut etre parce que cette variable n'existe pas ou quelque chose du genre..
Ce problème vient du .Script, c'est à dire un oublie de ma part ?ai-je mal placé le code ?
Sweeny972
Posts: 55
Joined: 24 Jun 2013, 16:42

Re: [Script] Switch des armes

Post by Sweeny972 »

Pour info, Voici le code source dont je me suis inspiré : http://www.team-devota.com/steeffeen/sc ... Script.txt
Sweeny972
Posts: 55
Joined: 24 Jun 2013, 16:42

Re: [Script] Switch des armes

Post by Sweeny972 »

En regardant divers topic, j'ai cru comprendre qu'il fallais peut être créer un new title pack afin de permettre ce fameux switch d'arme. D'ailleurs c'est dans une de tes réponses que j'ai vu : http://forum.maniaplanet.com/viewtopic. ... tch+weapon

J'ai ainsi crée un Title Pack afin de vérifier, et maintenant plus problème ! enfin le problème n'est plus le même :lol:
Maintenant, j'ai droit à çà: http://www.noelshack.com/2014-10-139389 ... tmania.png
" The proceduce SetPlayerWeapon failed to complete : Cannot change the default weapon of a spawned player in Vanilla modes "
Je comprend pas vraiment ce que ça veut dire, j'ai pas autorisé quelque chose ou un truc du genre c'est ça ? :oops:

Voici quelques observations suite au bug:
- après cette erreur, quand je fais echap pour jouer, les bot avec lesquels je jouent ainsi que moi-même somme invincible, c'est à dire qu'il n'y a plus de dommage, plus rien.
- le partie ne s'arrête pas, après le temps imparti, les bots se figent et c'est le silence total... je peux juste utiliser ma stamina, mes armes ainsi que leur rechargement sont bloquées.

Voila en espérant pouvoir régler ce problème ^^

ps: en fait pour le premier problème, c'était pas trop une question de Title pack, j'ai juste rajouter une constante #Const C_AmmoGain [
"Rocket" => 0.5,
"Laser" => 0.6,
"Nucleus" => 0.5,
"Arrow" => 0.3
]
User avatar
Eole
Nadeo
Nadeo
Posts: 1265
Joined: 26 Apr 2011, 21:08

Re: [Script] Switch des armes

Post by Eole »

The proceduce SetPlayerWeapon failed to complete : Cannot change the default weapon of a spawned player in Vanilla modes
Cette erreur s'affiche quand on essaye de changer l'arme d'un joueur spawné si le script n'est pas exécuté dans un title pack. Comme tu l'as noté juste au dessus c'est nécessaire pour pouvoir accéder à cette fonctionnalité.
Ce que tu peux faire pour tester ton mode c'est créer un title pack vide, ensuite le charger et lancer un serveur à l'intérieur avec ton script. Ça devrait régler le problème.
Contribute to the ManiaPlanet documentation on GitHub
A question about ManiaScript? Ask it here!
Sweeny972
Posts: 55
Joined: 24 Jun 2013, 16:42

Re: [Script] Switch des armes

Post by Sweeny972 »

J'ai bien suivi tes conseils, et maintenant voila : http://www.noelshack.com/2014-10-139394 ... tmania.png
on avance bien !

Observations:
- cette erreur survient lorsque je tente de switcher d'armes, c'est à dire quand j'appuie sur 1,2,3 ou 4
- Malgré l'erreur, l'arme sélectionner est bel et bien switcher ( ex: en appuyant sur 2, mon perso prend le nucleus)
User avatar
Eole
Nadeo
Nadeo
Posts: 1265
Joined: 26 Apr 2011, 21:08

Re: [Script] Switch des armes

Post by Eole »

Vu l'erreur je suppose que la fonction PassOn(Event) ou Discard(Event) est appelée deux fois sur le même Event.

Par exemple quelque chose dans ce style (on passe dans les deux "if", donc on PassOn() deux fois le même event):

Code: Select all

foreach (Event in PendingEvents) {
  // ---------------------------------- //
  // On action event
  if (Event.Type == CSmModeEvent::EType::OnActionEvent) {
    // Du code ici
    // ...
    PassOn(Event); 
  }
  // ---------------------------------- //
  // On action event
  if (Event.Type == CSmModeEvent::EType::OnActionEvent) {
    // Un code différent par là ...
    // ...
    PassOn(Event);
  }
}
Contribute to the ManiaPlanet documentation on GitHub
A question about ManiaScript? Ask it here!
Sweeny972
Posts: 55
Joined: 24 Jun 2013, 16:42

Re: [Script] Switch des armes

Post by Sweeny972 »

Effectivement le problème devait provennir du PassOn() comme tu l'as dit, en le retirant: http://www.noelshack.com/2014-10-139396 ... tmania.png
je parvient à switcher mes armes librement avec les touches 1,2,3 et 4. HOURRA !! :3
Peut-être qu'il y avait déjà un passOn() globale qui englobait l'event ou quelque chose du genre

Seulement, subsiste quelques petits soucis :( :
- Après avoir switch 1 arme n'importe laquelle , le temps de recharge des munitions (ammunition gain factor je crois) deviens extrêmement lent pour chaque arme.. Même si au préalable dans les paramètre j'ai fais en sorte qu'il soit très rapide voir instantanée.
-Il semble que le problème n'affecte que moi, les bot eux ont les bon réglages.

Le problème viendrait-il de la constante que j'ai rajouter auparavant
#Const C_AmmoGain [
"Rocket" => 0.5,
"Laser" => 0.6,
"Nucleus" => 0.5,
"Arrow" => 0.3
]
Sweeny972
Posts: 55
Joined: 24 Jun 2013, 16:42

Re: [Script] Switch des armes

Post by Sweeny972 »

Désolé si je te fais perdre ton temps avec mes problèmes ennuyeux :? et merci pour tes réponses. :roll:
Post Reply

Return to “Multijoueur”

Who is online

Users browsing this forum: No registered users and 2 guests