Показать сообщение отдельно
Старый 01.08.2007, 21:51   #9
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Как реализовать смену оружия ??

Ребята, вы чего? ))
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. Писал в браузере. Возможны опечатки.
(Offline)
 
Ответить с цитированием