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.