#1 07-06-2010 06:04

legenda79
Registered: 26-03-2010
Posts: 42

Подствольный гранатомёт

По названию темы уже всё понятно. Что это за приспособление объяснять врядле нужно. Я эту идею попытался осуществить в гта. Но ничего не работало, начало я вроде написал правильно:

//-------------MAIN---------------
0000: NOP
name_thread "grenade"
wait 10

:intro
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 31  // у актёра в руках м4
00E1: key_pressed 0 6  // и нажат прицел
jf @intro
jump @load

:load
wait 10
model.Load(1582)
038B: load_requested_models

:load_2
wait 10
if
model.Available(1582)
jf @load_2
jump @main_1

:main_1
wait 0
if
00E1: key_pressed 0 14  //если нажата клавиша shift
jf @intro // если нет, то прыгаем в самое начало...
//но если да
object.Create(1@,1582,0.0,0.0,0.0)
069B: attach_object 1@ to_actor $PLAYER_ACTOR at_offset 0.0 1.3 0.3 rotation 0.0 0.0 0.0

А что писать дальше? Я пробывал заносить координаты в переменные и бросать этот объект, всё равно ничего не получалось. Есть такой скрипт "submarine" там както сделали стрельбу с палубного оружия, я попытался от туда выдрать часть скрипта, но вышло одно. Ошибка((( Я уверен, что тут мне помогут, народ как сделать подствольный гранатомёт, если что, можете попытаться порыться в скрипте субмарина. Заранее спасибо.

Offline

#2 07-06-2010 12:13

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Подствольный гранатомёт

Если объект прикреплён к актёру, то само по себе бросить его не получится. Попробуй просто изменять его координаты в цикле.

Offline

#3 07-06-2010 13:14

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Подствольный гранатомёт

При выстреле граната отцепляется и отправляется в свободный полёт кодом:

0682: detach_object 38@(119@,4i) 0.0 0.0 0.0 collision_detection 0

Здесь 0.0 0.0 0.0 - проекции вектора скорости отцепляемого объекта.
Только прицеплять гранату сначала лучше не к игроку, а к его оружию.

Offline

#4 07-06-2010 13:15

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Подствольный гранатомёт

nop & wait 10 в начале можно спокойно убрать

Offline

#5 07-06-2010 16:35

legenda79
Registered: 26-03-2010
Posts: 42

Re: Подствольный гранатомёт

Den_spb wrote:

Только прицеплять гранату сначала лучше не к игроку, а к его оружию.

А как, использовать оружее как объект? Или есть специальный опкод?

Offline

#6 07-01-2011 17:32

Vital
From: Москва
Registered: 07-11-2010
Posts: 64
Website

Re: Подствольный гранатомёт

Прикрепи объект с руке с оружием, тогда все будет двигаться вместе. Насчет выстрела: сначала отцепляй объект (0682 с последним параметром =1) и швыряй его командой object.throw. Потом проверь, есть ли столкновение объекта с чем-либо и делай взрыв.

Offline

#7 09-01-2011 04:41

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Подствольный гранатомёт

Вот мой вариант этого скрипта:

thread 'grenade'

{$CLEO}
{$I stdconsts.txt}

const
  GrenadeObjs=16@
  GSpeed=10@
  GType=11@
  GModel=12@
  TempActor=13@
  TrashVar=14@
  CleoGlobalOffset=300
  TempIndex=15@
  {CamPosX=4@
  CamPosY=5@
  CamPosZ=6@
  CamPointX=7@
  CamPointY=8@
  CamPointZ=9@}  
end
var
  $Player_Actor: Actor
  $Player_Char: Player
  0@: Integer
  1@: Float
  2@: Float
  3@: Float
  4@: Float
  5@: Float
  6@: Float
  7@: Float
  8@: Float
  9@: Float
  GSpeed: Float
  GType: Integer
  GModel: Integer
  TempActor: Actor
  TempIndex: Integer
  TrashVar: Integer
  GrenadeObjs: Array 15 of Object
  33@: Integer
end
//$Player_Actor.SetImmunities(0,0,0,1,1)
//$Player_Actor.PutAt(1531.1718, -1357.6180, 329.4535)
//0555: remove_weapon 46 from_actor $Player_Actor
$Player_Actor.StorePos(1@,2@,3@)
032B: TrashVar = create_weapon_pickup #TEARGAS type 15 ammo 9999 at 1@ 2@ 3@

while true
  if 32@>=200
  then
    if 0AB0: key_pressed VK_0
    then
      GSpeed=0.0
      for 0@ = 0 to 14
        if 03CA: object GrenadeObjs[0@] exists
        then
          Object.StorePos(GrenadeObjs[0@],1@,2@,3@)
          0984: GModel = object GrenadeObjs[0@] model
          0871: init_jump_table GModel total_jumps 4 default_jump 0 @endD jumps #GRENADE @grenadeD #TEARGAS @tearD #MOLOTOV @molotovD #SATCHEL @satchelD -1 @endD -1 @endD -1 @endD
          :grenadeD
          020C: create_explosion_with_type 0 at 1@ 2@ 3@
          Object.Destroy(GrenadeObjs[0@])
          jump @endD
          :tearD
          Object.Destroy(GrenadeObjs[0@])
          jump @endD
          :molotovD
          020C: create_explosion_with_type 1 at 1@ 2@ 3@
          Object.Destroy(GrenadeObjs[0@])
          jump @endD
          :satchelD
          020C: create_explosion_with_type 6 at 1@ 2@ 3@
          Object.Destroy(GrenadeObjs[0@])
          :endD
        end 
      end
    end
    if 0AB0: key_pressed VK_1
    then
      GSpeed=25.0
    end  
    if 0AB0: key_pressed VK_2
    then
      GSpeed=50.0
    end  
    if 0AB0: key_pressed VK_3
    then
      GSpeed=75.0
    end
    if 0AB0: key_pressed VK_4
    then
      GSpeed=100.0
    end    
    if or
      0AB0: key_pressed VK_0
      0AB0: key_pressed VK_1
      0AB0: key_pressed VK_2
      0AB0: key_pressed VK_3
      0AB0: key_pressed VK_4
    then
      32@=0
    end
  end
  
  gosub @GetG

  if and 
    0AB0: key_pressed VK_E
    00E1: pressed_on_pad 0 key 6
    GSpeed>0.0
    32@>=200
    09E7: player $PLAYER_CHAR not_frozen
    not $Player_Actor.Driving 
  then
    if or
      02D8: actor $PLAYER_ACTOR current_weapon == 30
      02D8: actor $PLAYER_ACTOR current_weapon == 31
    then
      018C: play_sound 1135 at 0.0 0.0 0.0       
      $Player_Actor.StorePos(1@,2@,3@)
      3@+=0.0
      for 0@ = 0 to 14
        if 03CA:object GrenadeObjs[0@] exists
        jf @0
      end
      0@=-1
      :0
      if 0@<>-1
      jf @end
      068D: get_camera_position_to 4@ 5@ 6@
      068E: get_camera_target_point_to 7@ 8@ 9@  
      7@ -= 4@
      8@ -= 5@
      9@ -= 6@    
      7@*=4.0
      8@*=4.0
      9@*=4.0
      4@+=7@
      5@+=8@
      6@+=9@
       
      GrenadeObjs[0@]=Object.Create(GModel,4@,5@,6@)
      Marker.CreateAboveObject(TrashVar,GrenadeObjs[0@])
      0168: set_marker TrashVar size 1 
      
      
      //070A: AS_actor $Player_Actor attach_to_object GrenadeObjs[0@] offset 0.0 0.0 0.0 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time 1
      //070B: set_actor $Player_Actor onbone_attached_object_operation 0
      
      
      
      04D9: object GrenadeObjs[0@] set_scripted_collision_check 1
      //Object.Angle(GrenadeObjs[0@])=-90.0
      068D: get_camera_position_to 4@ 5@ 6@
      068E: get_camera_target_point_to 7@ 8@ 9@  
      7@ -= 4@
      8@ -= 5@
      9@ -= 6@    
      7@*=GSpeed
      8@*=GSpeed
      9@*=GSpeed
      083D: get_actor $Player_Actor velocity_in_direction_XYZ 4@ 5@ 6@
      7@ += 4@
      8@ += 5@
      9@ += 6@       
      
       
      Object.ToggleInMovingList(GrenadeObjs[0@],True)
      Object.Throw(GrenadeObjs[0@],7@, 8@, 9@)
      Object.CollisionDetection(GrenadeObjs[0@], true)
      //05A7: set_object GrenadeObjs[0@] velocity_in_direction_XYZ 7@ 8@ 9@
      32@=0
    end
  end  
  :end
  //03f0: enable_text_draw 1
  //0AB1: @DrawFloat 3 pars fnumber 7@ coords 10.0 10.0
  //0AB1: @DrawFloat 3 pars fnumber 8@ coords 10.0 20.0
  //0AB1: @DrawFloat 3 pars fnumber 9@ coords 10.0 30.0
  for 0@ = 0 to 14
    TempIndex=CleoGlobalOffset
    TempIndex+=0@
    
    if 03CA: object GrenadeObjs[0@] exists
    then  
      Object.StorePos(GrenadeObjs[0@],1@,2@,3@)
      if or 
        04DA: has_object GrenadeObjs[0@] collided
        04E7: object GrenadeObjs[0@] in_water
        3@<=-100.0
        05A3: object GrenadeObjs[0@] stopped 
      then      
        0AB4: TrashVar = var TempIndex
        TrashVar+=33@
        
        if 04DA: has_object GrenadeObjs[0@] collided
        then
          0AB3: var TempIndex = TrashVar
        else
          0AB3: var TempIndex = 0
        end
        0984: GModel = object GrenadeObjs[0@] model
        if and
          04E7: object GrenadeObjs[0@] in_water
          GModel<>#TEARGAS
        then
          020C: create_explosion_with_type 12 at 1@ 2@ 3@
          Object.Destroy(GrenadeObjs[0@])    
          jump @endif
        end
        0871: init_jump_table GModel total_jumps 4 default_jump 0 @endif jumps #GRENADE @grenade #TEARGAS @tear #MOLOTOV @molotov #SATCHEL @satchel -1 @endif -1 @endif -1 @endif
        
        :grenade
        020C: create_explosion_with_type 0 at 1@ 2@ 3@
        Object.Destroy(GrenadeObjs[0@])
        jump @endif
        
        :tear
        if or 
          TrashVar>=60000
          3@<=-100.0
        then
          Object.Destroy(GrenadeObjs[0@])
        end
        0209: TrashVar = random_int_in_ranges 0 6
        if TrashVar==1
        then
          095C: create_smoke_at 1@ 2@ 3@ velocity 0.0 0.0 -0.01 RGBA 0.0 1.0 0.0 1.0 size 6.5 last_factor 1.0
        end
        08E5: get_actor_in_sphere 1@ 2@ 3@ radius 5.0 handle_as TempActor
        if TempActor>0
        then
          //0762: AS_actor TempActor dies 
          //05BE: AS_kill_actor TempActor
          if Actor.Driving(TempActor) 
          then
            03C0: TrashVar = actor TempActor car
            02D4: car TrashVar turn_off_engine
            Car.RemoveReferences(TrashVar) 
          end
          0321: kill_actor TempActor
          Actor.RemoveReferences(TempActor)
        {
        else
          if 00FE: actor $Player_Actor sphere 0 in_sphere 1@ 2@ 3@ radius 5.0 5.0 5.0
          then
            0851: set_actor $Player_Actor decrease_health_by 1 flag 1
            0947: unknown_actor $Player_Actor play_audio_event 344 store_to TrashVar
          end
        }
        end
        jump @endif        
        
        :molotov
        //if TrashVar>=2000
        //then
        //  020C: create_explosion_with_type 12 at 1@ 2@ 3@
        //  Object.Destroy(GrenadeObjs[0@])
        //end
        020C: create_explosion_with_type 1 at 1@ 2@ 3@
        Object.Destroy(GrenadeObjs[0@])
        jump @endif        
        
        :satchel
        0AB4: TrashVar = var TempIndex
        {if and
          TrashVar>=4000
          TrashVar<=4040
        then
          020C: create_explosion_with_type 12 at 1@ 2@ 3@
        end
        if and
          TrashVar>=4400
          TrashVar<=4440
        then
          020C: create_explosion_with_type 0 at 1@ 2@ 3@
        end}        
        if and
          TrashVar>=4000
          TrashVar<=4040
        then        
          020C: create_explosion_with_type 10 at 1@ 2@ 3@
        end
        
        if or 
          TrashVar>=6000
          3@<-100.0
        then
          020C: create_explosion_with_type 6 at 1@ 2@ 3@
          {4@=1@
          5@=2@
          6@=3@
          4@+=5.0
          5@+=5.0
          6@+=7.5
          020C: create_explosion_with_type 6 at 4@ 5@ 6@
          4@=1@
          5@=2@
          6@=3@
          4@+=5.0
          5@+=5.0
          6@-=0.0
          020C: create_explosion_with_type 6 at 4@ 5@ 6@
          4@=1@
          5@=2@
          6@=3@
          4@+=5.0
          5@-=5.0
          6@+=7.5
          020C: create_explosion_with_type 6 at 4@ 5@ 6@
          4@=1@
          5@=2@
          6@=3@
          4@+=5.0
          5@-=5.0
          6@-=0.0
          020C: create_explosion_with_type 6 at 4@ 5@ 6@
          4@=1@
          5@=2@
          6@=3@
          4@-=5.0
          5@+=5.0
          6@+=7.5
          020C: create_explosion_with_type 6 at 4@ 5@ 6@
          4@=1@
          5@=2@
          6@=3@
          4@-=5.0
          5@+=5.0
          6@-=0.0
          020C: create_explosion_with_type 6 at 4@ 5@ 6@
          4@=1@
          5@=2@
          6@=3@
          4@-=5.0
          5@-=5.0
          6@+=7.5
          020C: create_explosion_with_type 6 at 4@ 5@ 6@
          4@=1@
          5@=2@
          6@=3@
          4@-=5.0
          5@-=5.0
          6@-=0.0
          020C: create_explosion_with_type 6 at 4@ 5@ 6@}        
        
          

          Object.Destroy(GrenadeObjs[0@])
        end
        :endif       
      end
    else
      0AB3: var TempIndex = 0
    end 
  end
  33@=0
  wait 0
end

:GetG
04B8: get_weapon_data_from_actor $Player_Actor weapon_group 9 weapon GType ammo TrashVar model GModel 
if //or 
  //GModel==#satchel
  GModel<=0
then
  GModel=#GRENADE
end
if GType<=0
then
  GType=16
end 
return

:TextDrawTextSettings
0348: set_text_draw_proportional 1 
033F: set_text_draw_letter_width_to 0.3 height_to 1.0 
0349: set_text_draw_style_to 1 
081C: draw_text_outline 1 0 0 0 255
0340: set_text_draw_color_RGB_mask_to 0x12 0xFF 0 200
0343: set_text_draw_linewidth 640.0
return

:TextDrawText2Settings
0348: set_text_draw_proportional 1 
033F: set_text_draw_letter_width_to 0.3 height_to 1.0 
0349: set_text_draw_style_to 1 
081C: draw_text_outline 1 0 0 0 255
0340: set_text_draw_color_RGB_mask_to 0xFC 0xFF 0 200
0343: set_text_draw_linewidth 640.0 
return

:DrawFloat
008C: 4@ = float_to_integer 0@
008C: 5@ = float_to_integer 0@
5@ *= 1000
0@ *= 1000.0
008C: 0@ = float_to_integer 0@      
0062: 0@ -= 5@
if or
  8029: 0@ < 0
  8029: 4@ < 0
then
  0095: abs( 0@ )
  0095: abs( 4@ )
  gosub @TextDrawText2Settings   
  045B: text_draw_2numbers 1@ 2@ '_NUM_-F' 4@ 0@
else
  0095: abs( 0@ )
  0095: abs( 4@ )
  gosub @TextDrawText2Settings   
  045B: text_draw_2numbers 1@ 2@ '_NUM_F' 4@ 0@
end
0AB2: ret 0

Но только нужен ещё файл stdconsts.txt в папке с сохранённым скриптом или в папке SB:

// INCLUDE FILE
// Скопируйте этот файл
// в папку "Sanny Builder 3\data\sa" 
// или в корневую папку SB3
// а в своём скрипте в начале 
// напишите директиву {$I stdconsts.txt} или {$INCLUDE stdconsts.txt}
const
// game control keys codes
  KEY_FOOT_LEFT_RIGHT = 0
  KEY_FOOT_FORWARD_BACKWARD = 1
  KEY_FOOT_SPECIAL_CTRL_LEFT_RIGHT = 2
  KEY_FOOT_SPECIAL_CTRL_UP_DOWN = 3
  KEY_FOOT_ACTION = 4
  KEY_FOOT_SECONDARY_FIRE = 4
  KEY_FOOT_PREVIOUS_WEAPON = 5
  KEY_FOOT_ZOOM_IN = 5
  KEY_FOOT_AIM = 6
  KEY_FOOT_NEXT_WEAPON = 7
  KEY_FOOT_ZOOM_OUT = 7
  KEY_FOOT_GROUP_FORWARD = 8
  KEY_FOOT_GROUP_BACK = 9
  KEY_NO = 10
  KEY_YES = 11
  KEY_FOOT_NO = 10
  KEY_FOOT_YES = 11
  KEY_FOOT_CHANGE_CAMERA = 13
  KEY_FOOT_JUMP = 14
  KEY_FOOT_ENTER_VEHICLE = 15
  KEY_FOOT_SPRINT = 16
  KEY_FOOT_FIRE = 17
  KEY_FOOT_CROUCH = 18
  KEY_FOOT_LOOK_BEHIND = 19
  KEY_VEHICLE_LEFT_RIGHT = 0
  KEY_VEHICLE_STEER_BACK_UP = 1
  KEY_VEHICLE_BACK_UP = 1
  KEY_VEHICLE_SPECIAL_CTRL_LEFT_RIGHT = 2
  KEY_VEHICLE_SPECIAL_CTRL_UP_DOWN = 3
  KEY_VEHICLE_SECONDARY_FIRE = 4
  KEY_VEHICLE_LOOK_LEFT = 5
  KEY_VEHICLE_HAND_BRAKE = 6
  KEY_VEHICLE_LOOK_RIGHT = 7
  KEY_VEHICLE_NEXT_RADIO_STATION = 8
  KEY_VEHICLE_PREVIOUS_RADIO_STATION = 9
  KEY_VEHICLE_NO = 10
  KEY_VEHICLE_YES = 11
  KEY_VEHICLE_TRIP_SKIP = 11
  KEY_VEHICLE_CAMERA = 13
  KEY_VEHICLE_BRAKE_RESERVE = 14
  KEY_VEHICLE_ENTER_EXIT = 15
  KEY_VEHICLE_ENTER = 15
  KEY_VEHICLE_EXIT = 15
  KEY_VEHICLE_ACCELERATE = 16
  KEY_VEHICLE_FIRE = 17
  KEY_VEHICLE_HORN = 18
  KEY_VEHICLE_SUBMISSION = 19

//virtual key codes
{}
  VK_LBUTTON = 0x1 // Left mouse button
  VK_RBUTTON = 0x2 // Right mouse button 
  VK_CANCEL = 0x3  //Control-break processing 
  VK_MBUTTON = 0x4 { NOT contiguous with L & RBUTTON } //Middle mouse button (three-button mouse)
  VK_BACK = 0x8    //BACKSPACE key
  VK_TAB = 0x9     //TAB key
  VK_CLEAR = 0xC   //CLEAR key
  VK_RETURN = 0xD  //ENTER key 
  VK_SHIFT = 0x10  //SHIFT key (Both)
  VK_CONTROL = 0x11//CTRL key (Both)
  VK_MENU = 0x12   //ALT key (Both)
  VK_PAUSE = 0x13  //PAUSE key 
  VK_CAPITAL = 0x14//CAPS LOCK key
  VK_ESCAPE = 0x1B //ESC key 
  VK_SPACE = 0x20  //SPACEBAR 
  VK_PRIOR = 0x21  //PAGE UP key 
  VK_NEXT = 0x22   //PAGE DOWN key 
  VK_END = 0x23    //END key 
  VK_HOME = 0x24   //HOME key 
  VK_LEFT = 0x25   //LEFT ARROW key 
  VK_UP = 0x26     //UP ARROW key 
  VK_RIGHT = 0x27  //RIGHT ARROW key 
  VK_DOWN = 0x28   //DOWN ARROW key 
  VK_SELECT = 0x29 //SELECT key 
  VK_PRINT = 0x2A  //Original equipment manufacturer (OEM) specific 
  VK_EXECUTE = 0x2B//EXECUTE key 
  VK_SNAPSHOT = 0x2C//PRINT SCREEN key for Windows 3.0 and later 
  VK_INSERT = 0x2D //INS key 
  VK_DELETE = 0x2E //DEL key 
  VK_HELP = 0x2F   //HELP key 
{ VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) }
  VK_0 = 0x30 //0 key 
  VK_1 = 0x31 //1 key 
  VK_2 = 0x32 //2 key 
  VK_3 = 0x33 //3 key
  VK_4 = 0x34 //4 key
  VK_5 = 0x35 //5 key
  VK_6 = 0x36 //6 key
  VK_7 = 0x37 //7 key
  VK_8 = 0x38 //8 key
  VK_9 = 0x39 //9 key
{ VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) }
  VK_A = 0x41 //A key 
  VK_B = 0x42 //B key 
  VK_C = 0x43 //C key 
  VK_D = 0x44 //D key 
  VK_E = 0x45 //E key 
  VK_F = 0x46 //F key 
  VK_G = 0x47 //G key 
  VK_H = 0x48 //H key 
  VK_I = 0x49 //I key 
  VK_J = 0x4A //J key 
  VK_K = 0x4B //K key 
  VK_L = 0x4C //L key 
  VK_M = 0x4D //M key 
  VK_N = 0x4E //N key 
  VK_O = 0x4F //O key 
  VK_P = 0x50 //P key 
  VK_Q = 0x51 //Q key 
  VK_R = 0x52 //R key 
  VK_S = 0x53 //S key 
  VK_T = 0x54 //T key 
  VK_U = 0x55 //U key 
  VK_V = 0x56 //V key 
  VK_W = 0x57 //W key 
  VK_X = 0x58 //X key 
  VK_Y = 0x59 //Y key 
  VK_Z = 0x5A //Z key   
  VK_LWIN = 0x5B //Left Windows key (Microsoft Natural Keyboard) 
  VK_RWIN = 0x5C //Right Windows key (Microsoft Natural Keyboard) 
  VK_APPS = 0x5D //Applications key (Microsoft Natural Keyboard)
  VK_SLEEP = 0x5F//Computer Sleep key 

  VK_NUMPAD0 = 0x60 //Numeric keypad 0 key 
  VK_NUMPAD1 = 0x61 //Numeric keypad 1 key 
  VK_NUMPAD2 = 0x62 //Numeric keypad 2 key
  VK_NUMPAD3 = 0x63 //Numeric keypad 3 key
  VK_NUMPAD4 = 0x64 //Numeric keypad 4 key
  VK_NUMPAD5 = 0x65 //Numeric keypad 5 key
  VK_NUMPAD6 = 0x66 //Numeric keypad 6 key
  VK_NUMPAD7 = 0x67 //Numeric keypad 7 key
  VK_NUMPAD8 = 0x68 //Numeric keypad 8 key
  VK_NUMPAD9 = 0x69 //Numeric keypad 9 key
  VK_MULTIPLY = 0x6A//Multiply key 
  VK_ADD = 0x6B     //Add key 
  VK_SEPARATOR = 0x6C//Separator key
  VK_SUBTRACT = 0x6D//Subtract key 
  VK_DECIMAL = 0x6E //Decimal key 
  VK_DIVIDE = 0x6F  //Divide key 
  VK_F1 = 0x70      //F1 key
  VK_F2 = 0x71      //F2 key
  VK_F3 = 0x72      //F3 key
  VK_F4 = 0x73      //F4 key
  VK_F5 = 0x74      //F5 key
  VK_F6 = 0x75      //F6 key
  VK_F7 = 0x76      //F7 key
  VK_F8 = 0x77      //F8 key
  VK_F9 = 0x78      //F9 key
  VK_F10 = 0x79     //F10 key
  VK_F11 = 0x7A     //F11 key
  VK_F12 = 0x7B     //F12 key
  VK_F13 = 0x7C     //F13 key
  VK_F14 = 0x7D     //F14 key
  VK_F15 = 0x7E     //F15 key
  VK_F16 = 0x7F     //F16 key
  VK_F17 = 0x80     //F17 key
  VK_F18 = 0x81     //F18 key
  VK_F19 = 0x82     //F19 key
  VK_F20 = 0x83     //F20 key
  VK_F21 = 0x84     //F21 key
  VK_F22 = 0x85     //F22 key
  VK_F23 = 0x86     //F23 key
  VK_F24 = 0x87     //F24 key
  VK_NUMLOCK = 0x90 //NUM LOCK key 
  VK_SCROLL = 0x91  //SCROLL LOCK key
{ VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys.
  Used only as parameters to GetAsyncKeyState() and GetKeyState().
  No other API or message will distinguish left and right keys in this way. }
  VK_LSHIFT = 0xA0
  VK_RSHIFT = 0xA1
  VK_LCONTROL = 0xA2
  VK_RCONTROL = 0xA3
  VK_LMENU = 0xA4
  VK_RMENU = 0xA5
  VK_BROWSER_BACK = 0xA6      //Windows 2000/XP: Browser Back key
  VK_BROWSER_FORWARD = 0xA7   //Windows 2000/XP: Browser Forward key
  VK_BROWSER_REFRESH = 0xA8   //Windows 2000/XP: Browser Refresh key
  VK_BROWSER_STOP = 0xA9      //Windows 2000/XP: Browser Stop key
  VK_BROWSER_SEARCH = 0xAA    //Windows 2000/XP: Browser Search key 
  VK_BROWSER_FAVORITES = 0xAB //Windows 2000/XP: Browser Favorites key
  VK_BROWSER_HOME = 0xAC      //Windows 2000/XP: Browser Start and Home key
  VK_VOLUME_MUTE = 0xAD       //Windows 2000/XP: Volume Mute key
  VK_VOLUME_DOWN = 0xAE       //Windows 2000/XP: Volume Down key
  VK_VOLUME_UP = 0xAF         //Windows 2000/XP: Volume Up key
  VK_MEDIA_NEXT_TRACK = 0xB0  //Windows 2000/XP: Next Track key
  VK_MEDIA_PREV_TRACK = 0xB1  //Windows 2000/XP: Previous Track key
  VK_MEDIA_STOP = 0xB2        //Windows 2000/XP: Stop Media key
  VK_MEDIA_PLAY_PAUSE = 0xB3  //Windows 2000/XP: Play/Pause Media key
  VK_LAUNCH_MAIL = 0xB4       //Windows 2000/XP: Start Mail key
  VK_LAUNCH_MEDIA_SELECT = 0xB5//Windows 2000/XP: Select Media key
  VK_LAUNCH_APP1 = 0xB6       //Windows 2000/XP: Start Application 1 key
  VK_LAUNCH_APP2 = 0xB7       //Windows 2000/XP: Start Application 2 key
  // - (B8-B9)
  // Reserved
  VK_OEM_1 = 0xBA      //Used for miscellaneous characters; it can vary by keyboard.
                       //Windows 2000/XP: For the US standard keyboard, the ';:' key 
  VK_OEM_PLUS = 0xBB   //Windows 2000/XP: For any country/region, the '+' key
  VK_OEM_COMMA = 0xBC  //Windows 2000/XP: For any country/region, the ',' key
  VK_OEM_MINUS = 0xBD  //Windows 2000/XP: For any country/region, the '-' key
  VK_OEM_PERIOD = 0xBE //Windows 2000/XP: For any country/region, the '.' key
  VK_OEM_2 = 0xBF      //Used for miscellaneous characters; it can vary by keyboard.
                       //Windows 2000/XP: For the US standard keyboard, the '/?' key 
  VK_OEM_3 = 0xC0      //Used for miscellaneous characters; it can vary by keyboard.
                       //Windows 2000/XP: For the US standard keyboard, the '`~' key 
  // - (C1-D7)
  // Reserved
  // - (D8-DA)
  // Unassigned
  VK_OEM_4 = 0xDB //Used for miscellaneous characters; it can vary by keyboard. 
                  //Windows 2000/XP: For the US standard keyboard, the '[{' key
  VK_OEM_5 = 0xDC //Used for miscellaneous characters; it can vary by keyboard. 
                  //Windows 2000/XP: For the US standard keyboard, the '\|' key
  VK_OEM_6 = 0xDD //Used for miscellaneous characters; it can vary by keyboard. 
                  //Windows 2000/XP: For the US standard keyboard, the ']}' key
  VK_OEM_7 = 0xDE //Used for miscellaneous characters; it can vary by keyboard. 
                  //Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key
  VK_OEM_8 = 0xDF //Used for miscellaneous characters; it can vary by keyboard.
  //- (E0)
  //Reserved
  // (E1)
  // OEM specific
  VK_OEM_102 = 0xE2 //Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
  // (E3-E4)
  // OEM specific
  VK_PROCESSKEY = 0xE5 //Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
  // (E6)
  // OEM specific
  VK_PACKET = 0xE7 //Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
  // - (E8)
  // Unassigned
  // (E9-F5)
  // OEM specific
  VK_ATTN = 0xF6   //Attn key
  VK_CRSEL = 0xF7  //CrSel key
  VK_EXSEL = 0xF8  //ExSel key
  VK_EREOF = 0xF9  //Erase EOF key
  VK_PLAY = 0xFA   //Play key
  VK_ZOOM = 0xFB   //Zoom key
  VK_NONAME = 0xFC //Reserved 
  VK_PA1 = 0xFD    //PA1 key
  VK_OEM_CLEAR = 0xFE //Clear key

  //weapon numbers
  //melee (холодное оружие)
  WEAPON_UNARMED = 0            //Кулак
  WEAPON_BrassKnuckles = 1      //Кастет
  WEAPON_GOLFCLUB = 2           //Клюшка от гольфа
  WEAPON_NightStick = 3         //Полицейская дубинка
  WEAPON_KNIFE = 4              //Нож
  WEAPON_BaseballBat = 5        //Бейзбольная бита
  WEAPON_Shovel = 6             //Лопата
  WEAPON_PoolCue = 7            //Кий (от бильярда)
  WEAPON_Katana = 8             //Катана (самурайский клинок)
  WEAPON_Chainsaw = 9           //Бензопила
  //Gift (подарки)
  WEAPON_PurpleDildo = 10       //Розовый дилдо
  WEAPON_WhiteDildo = 11        //Белый дилдо
  WEAPON_LongVibe = 12          //Длинный вибратор
  WEAPON_Vibe = 13              //Вибратор
  WEAPON_Flowers = 14           //Цветы
  WEAPON_Cane = 15              //Трость (или клюка?)
  //projectiles (снаряды (Гранаты и тд))
  WEAPON_Grenades = 16          // Гранаты
  WEAPON_TearGas = 17           // Слезоточивые гранаты
  WEAPON_Molotovs = 18          // Коктейль Молотова
  //handguns (пислолеты)
  WEAPON_Pistol = 22            // Пистолет
  WEAPON_SilencedPistol = 23    // Пистолет с глушителем
  WEAPON_DesertEagle = 24       // "Пустынный орёл"
  //shotguns (дробовики)
  WEAPON_Shotgun = 25           // Охотничье ружьё
  WEAPON_SawnOffShotgun = 26    // Обрез
  WEAPON_CombatShotgun = 27     // Боевой дробовик
  //sub-machineguns (пистолеты-пулемёты)
  WEAPON_MicroUzi = 28          // Микро-узи
  WEAPON_MP5 = 29               // МП5
  WEAPON_Tec9 = 32              // Тек9
  //machineguns (автоматы)
  WEAPON_AK47 = 30              // Автомат Калашникова
  WEAPON_M4 = 31                // М4
  //rifles (винтовки)
  WEAPON_Rifle = 33             // Винтовка
  WEAPON_SniperRifle = 34       // Снайперская винтовка
  //specials (другие)
  WEAPON_RPG = 35               // Ракетница
  WEAPON_HeatSeekMissileLauncher = 36//RPG с тепловым самонаведением
  WEAPON_FlameThrower = 37      // Огнемёт
  WEAPON_Minigun = 38           // Миниган (шестистволка)
  WEAPON_SachetCharges = 39     // Радиоуправляемая взрывчатка
  WEAPON_Detonator = 40         // Пульт детонатора
  WEAPON_SprayPaint = 41        // Баллончик с зелёной краской
  WEAPON_FireExtinguisher = 42  // Огнетушитель
  WEAPON_Camera = 43            // Фотокамера (фотоаппарат)
  WEAPON_NightvisionGoggles = 44// Очки ночного видения
  WEAPON_ThermalGoggles = 45    // Очки теплового видения
  WEAPON_Parachute = 46         // Парашют

  // PedTypes                  // Комментарии из справки
  PEDTYPE_PLAYER1         = 0  // Игрок 1
  PEDTYPE_PLAYER2         = 1  // Игрок 2 
  PEDTYPE_PLAYER3         = 2  // Игрок 3 
  PEDTYPE_PLAYER_NETWORK  = 2
  PEDTYPE_PLAYER_UNUSED   = 3
  PEDTYPE_CIVMALE         = 4  // Мужчина - гражданин
  PEDTYPE_CIVMALE         = 5  // Женщина - гражданин
  PEDTYPE_COP             = 6  // Полицейский
  PEDTYPE_GANG1           = 7  // Ballas
  PEDTYPE_GANG_Ballas     = 7 
  PEDTYPE_GANG2           = 8  // Grove Street Families
  PEDTYPE_GANG_GROVE_STR_FAMILIES = 8
  PEDTYPE_GANG3           = 9  // Los Santos Vagos
  PEDTYPE_GANG_VAGOS      = 9
  PEDTYPE_GANG4           = 10 // San Fierro Rifa
  PEDTYPE_GANG_SFRIFA     = 10
  PEDTYPE_GANG5           = 11 // Da Nang Boys
  PEDTYPE_GANG_DANANGBOYS = 11
  PEDTYPE_GANG6           = 12 // Mafia
  PEDTYPE_GANG_MAFIA      = 12
  PEDTYPE_GANG7           = 13 // Mountain Cloud Triad
  PEDTYPE_GANG_Triad      = 13
  PEDTYPE_GANG8           = 14 // Varrio Los Aztecas
  PEDTYPE_GANG_LosAztecas = 14
  PEDTYPE_GANG9           = 15 //
  PEDTYPE_GANG10          = 16 //
  PEDTYPE_DEALER          = 17 // чувак, который продаёт наркоту 
  PEDTYPE_MEDIC           = 18 // врач 
  PEDTYPE_FIREMAN         = 19 // пожарник 
  PEDTYPE_CRIMINAL        = 20 // криминал 
  PEDTYPE_BUM             = 21 // бродяга
  PEDTYPE_PROSTITUTE      = 22 // проститутка 
  PEDTYPE_SPECIAL         = 23 // специальный, как Смоук, Свит, Райдер и другие, которые используются в миссиях. 
  PEDTYPE_MISSION1        = 24 // миссия 1
  PEDTYPE_MISSION2        = 25 // миссия 2
  PEDTYPE_MISSION3        = 26 // миссия 3
  PEDTYPE_MISSION4        = 27 // миссия 4
  PEDTYPE_MISSION5        = 28 // миссия 5
  PEDTYPE_MISSION6        = 29 // миссия 6
  PEDTYPE_MISSION7        = 30 // миссия 7
  PEDTYPE_MISSION8        = 31 // миссия 8
  
  //Погоды. Дополнительных погод (те, которые есть в игре и нет в файле) нет.
  WEATHER_LA_ExtraSunny      = 0   // Очень соднечно       (Лос Сантос)
  WEATHER_LA_SUNNY           = 1   // Солнечно             (Лос Сантос)
  WEATHER_LA_ExtraSunny_SMOG = 2   // Очень солнечно, смог (Лос Сантос)
  WEATHER_LA_SUNNY_SMOG      = 3   // Солнечно, смог       (Лос Сантос)
  WEATHER_LA_CLOUDY          = 4   // Неясная погода       (Лос Сантос)
  WEATHER_SF_SUNNY           = 5   // Солнечно             (Сан-Фиерро)
  WEATHER_SF_EXTRASUNNY      = 6   // Очень солнечно       (Сан-Фиерро)
  WEATHER_SF_CLOUDY          = 7   // Неясная погода       (Сан-Фиерро)
  WEATHER_SF_RAINY           = 8   // Дождливо             (Сан-Фиерро)
  WEATHER_SF_FOGGY           = 9   // Туманно              (Сан-Фиерро)
  WEATHER_LV_SUNNY           = 10  // Солнечно             (Лас Вентурас)
  WEATHER_LV_EXTRASUNNY      = 11  // Очень солнечно       (Лас Вентурас)
  WEATHER_LV_CLOUDY          = 12  // Неясная погода       (Лас Вентурас)
  WEATHER_COUNTRY_EXTRASUNNY = 13  // Очень солнечно       (Сельская местность)
  WEATHER_COUNTRY_SUNNY      = 14  // Солнечно             (Сельская местность)
  WEATHER_COUNTRY_CLOUDY     = 15  // Неясная погода       (Сельская местность)
  WEATHER_COUNTRY_RAINY      = 16  // Дождливо             (Сельская местность)
  WEATHER_DESERT_EXTRASUNNY  = 17  // Очень солнечно       (Пустыня)
  WEATHER_DESERT_SUNNY       = 18  // Солнечно             (Пустыня)
  WEATHER_DESERT_SANDSTORM   = 19  // Песчаная буря        (Пустыня)
  WEATHER_UNDERWATER         = 20  //                      (Под водой)
  WEATHER_INTERIOR_EXTRACOLOURS1=21// Контрастные цвета    (В интерьере)
  WEATHER_INTERIOR_EXTRACOLOURS2=22// Контрастные цвета    (В интерьере)
  
  BODYPART_Torso = 0 // торс 
  BODYPART_Head= 1 // голова 
  BODYPART_Legs = 2 // ноги 
  BODYPART_Shoes = 3 // ступня (обувь) 
  BODYPART_LowerLeftArm = 4 // верхняя часть левой руки 
  BODYPART_UpperLeftArm = 5 // нижняя часть левой руки 
  BODYPART_UpperRightArm = 6 // верхняя часть правой руки 
  BODYPART_LowerRightArm = 7 // нижняя часть правой руки 
  BODYPART_BackTop = 8 // спина 
  BODYPART_LeftChest = 9 // левая часть груди 
  BODYPART_RightChest = 10 // правая часть груди 
  BODYPART_Stomach = 11 // живот 
  BODYPART_LowerBack = 12 // поясница(низ спины) 
  BODYPART_Necklace = 13 // ожерелье 
  BODYPART_Bracelet = 14 // часы или браслет 
  BODYPART_Glasses = 15 // очки 
  BODYPART_Hats = 16 // головной убор      
  BODYPART_Special = 17 // специальная одежда (крупье...)
  
  // ped events
  // Часть событий взята из файла \data\Decision\PedEvent.txt,
  // Часть - от listener'а (названия оригинальные, от R*), 
  // часть найдены мной или Capushon'ом и Seemann'ом
  // ВНИМАНИЕ!!! Часть событий не проверены, и они могут быть нерабочими
  // ВНИМАНИЕ!!! Комментарии взяты из справки SB. Там есть неточности.
  // Если вы найдёте неточности, сообщите в форум SannyBuilder.
  // Часть событий срабатывает исключительно у игрока($PLAYER_ACTOR),
  // часть - исключительно у актёров.
  EVENT_VEHICLE_COLLISION = 1
  EVENT_PED_COLLISION_WITH_PED = 2
  EVENT_PED_COLLISION_WITH_PLAYER = 3
  EVENT_PLAYER_COLLISION_WITH_PED = 4 //Игрока касается другой актер (либо смотрит на него). Срабатывает, когда ОН касается игрока, а не игрок на него налетает.
// 5  
  EVENT_BUILDING_COLLISION = 6
  EVENT_DRAGGED_OUT_CAR = 7           //Выходит из машины или тяниться из неё
  EVENT_KNOCK_OFF_BIKE = 8            //Удар от велосипеда или от падения 
  EVENT_DAMAGE = 9                    //Повреждение актёра 
  EVENT_DEAD = 10                     //актер умер
  EVENT_DEAD_PED = 11                 //Актёр убил кого-либо
  EVENT_POTENTIAL_GET_RUN_OVER = 12   //Наступить не туда
  EVENT_POTENTIAL_WALK_INTO_PED = 13  //Есть вероятность наткнуться на прохожего
  
  EVENT_SHOT_FIRED = 15               //Актёр фотографирует
  EVENT_COP_CAR_BEING_STOLEN = 16 
  EVENT_PED_ENTERED_MY_VEHICLE = 17   //Актёр залез в трансп. средст. игрока
  EVENT_REVIVED = 18
  
  EVENT_SEXY_PED = 20                 //Видит сексуального прохожего
  
  
  
  
  EVENT_PED_TO_CHASE = 25 
  EVENT_PED_TO_FLEE = 26
  EVENT_ATTRACTOR = 27
  EVENT_VEHICLE_TO_STEAL = 28
  
  EVENT_VEHICLE_THREAT = 30           //Угроза столкновения с транспортным средством 
  EVENT_GUN_AIMED_AT = 31
  //EVENT_DRESS_JETPACK = 32          //Игрок одел реактивный ранец
  EVENT_SCRIPT_COMMAND = 32           //создается при назначении любого действия из скрипта
  EVENT_ACTOR_JUMPING = 33            //Актёр подпрыгивает
  
   
  EVENT_ACQUAINTANCE_PED_HATE = 36    //Актёр ненавидит кого-либо
  EVENT_ACQUAINTANCE_PED_DISLIKE = 37 //Актёр недолюбливает кого-либо
  EVENT_ACQUAINTANCE_PED_LIKE = 38    //Актеру нравится кого-либо
  EVENT_ACQUAINTANCE_PED_RESPECT = 39 //Актёр уважает кого-либо
  
  EVENT_VEHICLE_DAMAGE_WEAPON = 41    //Машина актёра повреждена оружием 
  EVENT_SPECIAL = 42                  //Специальный случай 
  EVENT_GOT_KNOCKED_OVER_BY_CAR = 43  //Актёра сбил автомобиль 
  EVENT_POTENTIAL_WALK_INTO_OBJECT = 44//Опасность наступить на объект
  EVENT_CAR_UNDRIVEABLE = 45
  EVENT_POTENTIAL_WALK_INTO_FIRE = 46 //Опасность войти в огонь
  
  EVENT_SCRIPTED_ATTRACTOR = 48
  EVENT_SHOT_FIRED_WHIZZED_BY = 49    //Мимо просвистела пуля
  EVENT_LOW_ANGER_AT_PLAYER = 50      //Неизвестно (низко) 
  EVENT_HIGH_ANGER_AT_PLAYER = 51     //Неизвестно (высоко)
  EVENT_HEALTH_REALLY_LOW = 52        //Здоровье актёра очень мало
  EVENT_HEALTH_LOW = 53               //Здоровье актёра мало
  EVENT_LEADER_ENTERED_CAR_AS_DRIVER = 54//Актёр сел в автомобиль,как водитель 
  EVENT_LEADER_EXITED_CAR_AS_DRIVER = 55//Актёр вылез из автомобиля с места водителя  
  EVENT_POTENTIAL_WALK_INTO_VEHICLE = 56//Актёр пот. идёт к авто
  
  EVENT_BURNING = 58                  //Актёр горит
  EVENT_FIRE_NEARBY = 59              //Актёр вблизи огня
   
  EVENT_SOUND_LOUD = 61               //Актёр слышит громкий звук 
  EVENT_SOUND_QUIET = 62              //Актёр слышит тихий звук 
  EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT = 63//Актёр в ярости от кого-то
  EVENT_COLLISION_WITH_WATER_SPURT = 64//Сбила струя воды от пожарной машины (название неоригинальное)
  EVENT_SEEN_PANICKED_PED = 65        //Актёр увидел паникующего прохожего
  EVENT_DIVING = 66                   //Актёр нырнул, или вынырнул
  
  
  
  
  EVENT_PLAYER_COMMAND_TO_GROUP = 71  //Актёр - лидер группы
  EVENT_SEEN_COP = 72                 //Актёр замечен полицейским 
  EVENT_VEHICLE_DAMAGE_COLLISION = 73 //Машина актёра столкнулась с другой машиной
  
  EVENT_DANGER = 75                   //Актёру что-то угрожает 
  EVENT_PLAYER_COMMAND_TO_GROUP_GATHER = 76//Актёру дана команда присоединиться у группе
  
  EVENT_PLAYER_LOCK_ON_TARGET = 78  
  EVENT_VEHICLE_ON_FIRE = 79          //Актёр убегает из транспортного средства, когда то загорается
  
  
   
  EVENT_PED_ON_CAR_ROOF = 83
  
  
  
  
  
  
  
  
  
  EVENT_STUCK_IN_AIR = 93             //Актёр заходит в кабину самолёта

end

Чтобы метать гранату, выберите AK-47 или M4, прицельтесь и нажмите E, чтобы менять силу выстрела, нажимать 0-4.
Если у вас гранаты, то стреляет гранатами
Если у вас коктейль Молотова, стреляет коктейлями молотова,
Если у вас бомбы, то стреляет бомбами (огромный взрыв)
Если у вас слезоточивые гранаты, то стреляет ядовитыми гранатами (от яда взрывается голова).
P.S. В связи со странным игровым багом, следует сначала метнуть гранату один раз самому, иначе граната будет проваливаться под землю


[small][/small]

Offline

Board footer

Powered by FluxBB