Показать сообщение отдельно
Старый 21.09.2007, 04:10   #6
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Re: Создаём свой FPS (first person shooter)

Долго разбирался что к чему, но всеже разобрался, бывает изза 1 ошибочки непримечательной пробуеш и так и сяк а нечё невыходит, ладно короче, я добавил задержку между выстрелами, теперь к
shot_S(0)\sprite=LoadSprite("sprite0.bmp")
HideEntity shot_S(0)\sprite
shot_S(0)\damage=45
shot_S(0)\max_dist=100
shot_S(0)\v=0.3
shot_S(0)\reload_time=2000
shot_S(0)\InCartridge=6
shot_S(0)\max=30
добавляем
shot_S(0)\shoot_delay=750
а к
shot_S(1)\sprite=LoadSprite("sprite1.bmp")
HideEntity shot_S(1)\sprite
shot_S(1)\damage=10
shot_S(1)\max_dist=1000
shot_S(1)\v=0.5
shot_S(1)\reload_time=1000
shot_S(1)\InCartridge=15
shot_S(1)\max=240
добавляем
shot_S(1)\shoot_delay=250
ну и если у кого есть
shot_S(2)\sprite=LoadSprite("sprite1.bmp")
HideEntity shot_S(2)\sprite
shot_S(2)\damage=100
shot_S(2)\max_dist=100
shot_S(2)\v=0.08
shot_S(2)\reload_time=4000
shot_S(2)\InCartridge=2
shot_S(2)\max=20
добавляем
shot_S(2)\shoot_delay=1000
Такс, далее в "Type SHOT_TYPE" добавляем еще 1 тип
Field shoot_delay
в "Type inventar" добавим 2 строчки(тоже типы походу):
 Field shoot_delay_flag
Field last_shoot
далее, далее, далее добавим в функции "Function update_user()" в строку:
If MouseHit(1) And user_inv\InC[user_inv\current]<>0 And user_inv\reload_flag=False
еще одно условие: And user_inv\shoot_delay_flag=False
вытоге оно станет смотрется примерно так(я у себя условия местами перекрутил ):
If MouseHit(1) And user_inv\InC[user_inv\current]<>0 And user_inv\shoot_delay_flag=False And user_inv\reload_flag=False
такс, далее добавим сразу 2 строки действий
user_inv\shoot_delay_flag=True
user_inv\last_shoot=MilliSecs()
вытоге эта If-ка станет сморется так:
 If MouseHit(1) And user_inv\InC[user_inv\current]<>0 And user_inv\shoot_delay_flag=False And user_inv\reload_flag=False
    user_inv\shoot_delay_flag=True
    user_inv\last_shoot=MilliSecs()
  user_gun=FindChild(GUN,"END")
  create_shot(EntityX(user_gun,1),EntityY(user_gun,1),EntityZ(user_gun,1),EntityPitch(camera),EntityYaw(user),0,user_inv\current)
  user_inv\s[user_inv\current]=user_inv\s[user_inv\current]-1
  Change_H(user_b_xline,user_inv\s[user_inv\current])
  user_inv\InC[user_inv\current]=user_inv\InC[user_inv\current]-1
  Change_H(user_reload_xline,user_inv\InC[user_inv\current])
  ;
  If user_inv\current=0
   MoveEntity user,0,0,-1
  EndIf
 EndIf
сразу же после этого добавляем:
If MilliSecs()-user_inv\last_shoot>shot_S(user_inv\current)\shoot_delay And user_inv\shoot_delay_flag=True
user_inv\shoot_delay_flag=False
EndIf
вроде нечё незабыл, но на всяк пожарный выложу все свои переделки, мало ли что я там напутал.
Ща попробую бонусы прикрутить, мож что сам намучу
(Offline)
 
Ответить с цитированием