Ребята, вы чего? ))
dimanche13 и
Райтер говорят об одном и том же. Только dimanche13 не решился реализовать идею, а Райтеровская реализация в коде, откровенно говоря, косовата.
Исправляем на чуть более симпатичную:
...
;массивы для параметров и моделей оружия игрока
Const WeaponClasses=5
Dim WeaponPlayerModel(WeaponClasses)
Dim WeaponDamage(WeaponClasses)
Dim WeaponReloadTime(WeaponClasses)
Dim WeaponAmmo(WeaponClass)
Dim WeaponMaxAmmo(WeaponClass)
Global CurrentPlayerWeapon=0
...
;где-нибудь здесь заполняем массивы моделями и параметрами
...
...
;в цикле определяем клавишу, принадлежащую к диапазону клавиш для смены оружия (1-9)
Key=GetKey()
Key=Key-48
If Key>=1 And Key<=WeaponClasses And Key<>CurrentPlayerWeapon Then
;прячем старое оружие
HideEntity WeaponModel(CurrentPlayerWeapon)
;показываем новое оружие
CurrentPlayerWeapon=Key
ShowEntity WeaponModel(CurrentPlayerWeapon)
End If
Приведенный выше код получше Райтеровского, но он жестко фиксирует клавиши смены оружия за кодами цифр 1-9.
Исправляем это упущение, позволяя произвольно менять коды клавиш смены оружия. Например, в рамках смены раскладки игровой клавиатуры конечным пользователем: не думаете же вы, что все люди играют на WSAD+Мышь+(1-9)?
;массив, хранящий значения клавиш для каждого оружия
Dim KeyPlayerSetWeapon(WeaponClasses)
...
;в цикле: проверяем, не нажата ли занесенная в массив клавиша
NewWeapon=0
For KeyChecker=1 To WeaponClasses
If KeyHit(KeyPlayerSetWeapon(KeyChecker))=1 Then
NewWeapon=KeyChecker
Exit
End If
Next
;И если нажата- ставим новое оружие так, как в первом примере:
If NewWeapon>0 And NewWeapon<>CurrentPlayerWeapon Then
;прячем старое оружие
...
P.S. Писал в браузере. Возможны опечатки.