#476 01-07-2008 06:28

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

Покажи, как ты пытаешься складывать. Учти, что строки занимают не одну, а две или больше переменных в зависимости от их длины.

Offline

#477 01-07-2008 06:54

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

@Seemann -

Покажи, как ты пытаешься складывать

например, так -

3@s = 'NUM_9' // 9
4@s = 'hexpref' // 0x
098c: 5@s = 4@s + 3@s
0384: {show_text_1string GXT} 'STRTEXT' {string} 5@s {time} 2000 1

Учти, что строки занимают не одну, а две или больше переменных в зависимости от их длины.

Тогда о функциях IntToStr и IntToHex можно забыть (или как нибудь можно?).


[small][/small]

Offline

#478 01-07-2008 08:55

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

Ну вот, я так и думал. Строки-то не могут вмещаться в одну 4-байтовую переменную. Короткие строки ('...', 8 байтов) занимают в памяти 2 переменные (3@s = 3@+4@). Поэтому твоя вторая переменная 4@s затирает кусок строки из 3@s. Тебе вторую строку нужно сохранять минимум в 5@s. А результат, соответственно, в 7@s.

Длинные строки ("...", 16 байтов) "кушают" сразу 4 переменные (0@v = 0@+1@+2@+3@)


С глобальными такое проходит, т.к. компилятор автоматически выделяет нужное кол-во памяти для новых строковых переменных (s$, v$).

Offline

#479 02-07-2008 05:54

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

Есть ли какой-нибудь способ вывести строку (опкод или функция) на экран? Опкод

0384: show_text_1string GXT 98@s string 100@s time 15000 1

выводит не саму строку, а ключ GXT. sad


[small][/small]

Offline

#480 03-07-2008 04:15

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

Из темы "Процедуры и функции gta_sa.exe 1.0" sa10funcs.txt нашёл функции:

DrawText                                 .text    0071A700 00000111 R . . . . T . 
ShowTextA                                .text    0069F0B0 00000130 R . . . . T .
ShowTextOneOutOf                         .text    00447B80 00000005 R . . . . T .  
_draw_text                               .text    0059ACD0 00000016 R . . . . . . 
j__draw_text                             .text    0054E8E0 00000005 R . . . . . . 
j__draw_text_0                           .text    0071A8C0 00000005 R . . . . . .

1. Какая-то из них пригодна для прямого вывода строки на экран?
2. Неизвестно кол-во и тип параметров этих функций


[small][/small]

Offline

#481 03-07-2008 22:45

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Один вопрос

Какой командой сделать что бы при удерживании на опр.клаву машина стояла на месте но развивала скорость? что то типа сцепления

Last edited by Centrino Duo (04-07-2008 13:43)

Offline

#482 04-07-2008 16:26

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

VcSaJen wrote:

1. Какая-то из них пригодна для прямого вывода строки на экран?
2. Неизвестно кол-во и тип параметров этих функций

Можно использовать эту:

.text:0071A700 ; int __cdecl DrawText(int XPos,int YPos,int* pText)

Offline

#483 04-07-2008 16:42

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Один вопрос

А мне не поможещ?

Offline

#484 05-07-2008 19:21

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: Один вопрос

так. новый вопрос. точнее два.
1. машина на большой скорости врезается "носом" во что-нибудь - как узнать:
а) что столкновение было именно носом... тобишь лбом?
б) что скорость была высокой за секунду ДО этого

2. водитель вылетает "из седла" - как заставить сиджея вылететь из машины через лобовое стекло?

Offline

#485 05-07-2008 19:43

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Один вопрос

http://missions.gtamaps.net/readarticle … cle_id=164 вылетает чувак к которому ВРЕЗАЛСЯ в лоб

http://gtamaps.net/forum/index.php?act= … &id=311003 вылетает СИЖИ

Offline

#486 07-07-2008 14:23

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Один вопрос

АЛО,НАРОД!!

Offline

#487 07-07-2008 18:35

Capushon
Registered: 13-08-2006
Posts: 352
Website

Re: Один вопрос

@Centrino Duo -

АЛО,НАРОД!!

Что это?


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#488 07-07-2008 20:00

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Один вопрос

Мне нужна помощь smile Вопрос наверху

Offline

#489 07-07-2008 20:19

Capushon
Registered: 13-08-2006
Posts: 352
Website

Re: Один вопрос

@Centrino Duo -

Мне нужна помощь  Вопрос наверху

Какой командой сделать что бы при удерживании на опр.клаву машина стояла на месте но развивала скорость? что то типа сцепления

Команды такой нет.


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#490 07-07-2008 20:43

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Один вопрос

Хмм.. а тада что есть?

Offline

#491 08-07-2008 16:26

Vitaliy_TopSide
From: Anapa!
Registered: 27-05-2008
Posts: 62
Website

Re: Один вопрос

Люди!!! Можно ли в main.scm вписать уникальный хендл для определенной машины (из handling.cfg!!!)??

Offline

#492 08-07-2008 17:42

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Один вопрос

Нет,незя

Offline

#493 09-07-2008 08:16

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

Вот сделал начало небольшой миссии (с идеями у меня традиционно дефицит, так что типичная м).
Проблема:
Есть два иногда возникающих зависания: когда камера показывает сидящего копа в участке и когда на крыше полицейского участка есть вертолёт (стоянка, созданная мейном в 27235 строчке) и создаётся на его месте вертолёт (хотя я очищаю куб в котором стоянка вертолёта). Из-за чего эти зависания?
Стартер миссии:

{$CLEO}
0A95: enable_thread_saving
Pickup.Destroy(1@)
Marker.Disable(0@)
0@ = Marker.CreateIconWithoutSphere(23, 1552.8, -1651.86, 13.5729)
Model.Load(1254)

while not Model.Available(1254)
 wait 0
end
1@ = Pickup.Create(1254, 3, 1552.8, -1651.86, 13.5729)
Model.Destroy(1254)
wait 1000

while true
  wait $DEFLAUT_WAIT_TIME
  if Player.Defined($Player_char)
  then
    if $OnMission == 0
    then
      if Pickup.Picked_up(1@)
      then
        Pickup.Destroy(1@)
        Marker.Disable(0@)
        $ONMISSION = 1
        00BA: show_text_styled GXT 'RSTART' time 1000 style 2  // Anti-police rampage
        0A94: start_custom_mission "rMain"
  //      0A92: create_custom_thread "rStart.cs"
        0A93: end_custom_thread 
      end
    end
  end
end

Сама миссия:

{$CLEO .cm}

:AntiCopMission 
thread "AntiCop" 
gosub @MissionStart 
if 
  wasted_or_busted 
 then 
  gosub @MissionFailed 
end 
gosub @MissionCleanup 
end_thread 

:MissionStart
wait 0
fade 0 1000
while fading
  wait 0
end
#BARRACKS.Load
#RHINO.Load
#ENFORCER.Load
#HUNTER.Load
#HYDRA.Load
#SWATVAN.Load
#COPCARRU.Load
#COPCARLA.Load
#FBIRANCH.Load
#FBITRUCK.Load
#COPBIKE.Load
#PATRIOT.Load
#ARMY.Load
#FBI.Load
#CHROMEGUN.Load
#AK47.Load
#CELLPHONE.Load
#POLMAV.Load
#SWAT.Load
#TEC9.Load
03CF: load_wav 23000 as 1 
038B: load_requested_models
while true
  if and
    #BARRACKS.Available
    #RHINO.Available
    #ENFORCER.Available
    #HUNTER.Available
    #HYDRA.Available
    #SWATVAN.Available
  then
    if and  
      #COPCARRU.Available
      #COPCARLA.Available
      #FBIRANCH.Available
      #FBITRUCK.Available
      #COPBIKE.Available
      #PATRIOT.Available
      #tec9.Available 
    then
      if and  
        #ARMY.Available
        #FBI.Available
        #SWAT.Available
        #CHROMEGUN.Available
        #CELLPHONE.Available
        #POLMAV.Available
        03D0:   wav 1 loaded
      then
        Break
      end  
    end
  end
  wait 0
end
var
  0@: Integer
  1@: Array 10 of Car
  11@: Array 10 of Actor
  23@: Array 10 of Actor
  34@: Array 10 of Actor
  45@: Array 10 of Actor
  60@: Integer
  69@: Integer
end
const
  I = 0@
  CopCars = 1@
  CopDrivers = 11@
  CopPassengers1 = 23@
  CopPassengers2 = 34@
  CopPassengers3 = 45@
  N = 60@
  TempActor = 61@
  CopHeli = 63@
  CopPilot = 64@
  SWAT1 = 65@
  SWAT2 = 66@
  SWAT3 = 67@
  SWAT4 = 68@
  CopCarModel = 69@
end
02A3: enable_widescreen 1
//Player.MakeSafe($PLAYER_CHAR)
Player.CanMove($PLAYER_CHAR) = false
00C0: set_current_time_hours_to 0 minutes_to 38 
fade 1 500

wait 600
0729: AS_actor $Player_actor hold_cellphone 1

wait 2100
fade 0 500
while fading
  wait 0
end
0729: AS_actor $Player_actor hold_cellphone 0
//wait 1000
Camera.SetAtPos(230.1451, 71.5056, 1004.0391)
select_interior 6
04E4: unknown_refresh_game_renderer_at 232.3102 73.2346
Actor.PutAt($Player_actor, 225.5276, 69.574, 1004.0391)
0860: link_actor $Player_actor to_interior 6
61@ = Actor.Create(Cop, #NULL, 230.1451, 71.5056, 1004.0391)
0860: link_actor 61@ to_interior 6
Camera.SetPosition(232.3102, 73.2346, 1006.42, 0.0, 0.0, 0.0)
Camera.OnPed(61@, 15, 2)
0615: define_action_sequences 62@
  0605: actor -1 perform_animation_sequence "SEAT_IDLE" from_file "PED" 4.0 loop 0 0 0 1 3000 ms
  0605: actor -1 perform_animation_sequence "SEAT_UP" from_file "PED" 4.0 loop 0 0 0 1 -1 ms
  0729: AS_actor -1 hold_cellphone 1 
0616: define_action_sequences_end 62@

wait 1000
0618: assign_actor 61@ to_action_sequences 62@
wait 700
fade 1 500
{if 84EE: not   animation "PED" loaded
then
  04ED: load_animation "Ped"
  while 84EE: not   animation "PED" loaded
    wait 0
  end
end}

  
//wait 15000

wait 1000
03D1: play_wav 1
03D1: play_wav 1
wait 7000
fade 0 500
while fading
  wait 0
end
  Player.WantedLevel($PLAYER_CHAR) = 1
  Player.SetMinWantedLevel($PLAYER_CHAR, 1)
  01F0: set_max_wanted_level_to 1 
  select_interior 0
  Actor.PutAt($Player_actor, 1549.2495, -1652.6812, -100.0)
  0860: link_actor $PLAYER_ACTOR to_interior 0
  Actor.Angle($Player_actor) = 90.0
 
  
  Camera.SetAtPos(1548.4893, -1712.1265, 36.5366)
  
  03BA: clear_cars_from_cube_cornerA 1565.62 -1695.65 27.3474 cornerB 1559.12 -1706.4 32.9474
  CopHeli = Car.Create(#POLMAV, 1561.865, -1701.953, 27.948)  
  Camera.SetPosition(1548.4893, -1712.1265, 36.5366, 0.0, 0.0, 0.0)
  Camera.OnVehicle(CopHeli, 15, 2)
  SWAT1 = Actor.Create(Cop, #SWAT, 1573.224, -1678.4272, 28.3956)
  SWAT2 = Actor.Create(Cop, #SWAT, 1575.0664, -1676.5687, 28.3955)
  SWAT3 = Actor.Create(Cop, #SWAT, 1574.4729, -1674.5979, 28.3955)
  SWAT4 = Actor.Create(Cop, #SWAT, 1576.5366, -1673.0009, 28.3955)
  CopPilot = Actor.Create(Cop, #SWAT, 1572.4978, -1681.9807, 28.3956)
  05D3: AS_actor SWAT1 goto_point 1561.865 -1701.953 27.948 mode 6 -1 ms
  05D3: AS_actor SWAT2 goto_point 1561.865 -1701.953 27.948 mode 6 -1 ms
  05D3: AS_actor SWAT3 goto_point 1561.865 -1701.953 27.948 mode 6 -1 ms
  05D3: AS_actor SWAT4 goto_point 1561.865 -1701.953 27.948 mode 6 -1 ms
  05CB: AS_actor CopPilot enter_car CopHeli as_driver 8000 ms
  
  //06C1: create_searchlight 58@ on_car 40@ with_offset 0.0 1.0 -0.5 radius 0.4 target 2228.36 -1171.48 25.82 radius 5.0 
  
fade 1 500
  repeat
    wait 0
  until Actor.Driving(CopPilot)
Player.CanMove($PLAYER_CHAR) = true  
wait 2000
fade 0 500
wait 600
    // Следующие 12 строк выдраны из оригинального Main.scm 
  0464: put_actor SWAT1 into_turret_on_car CopHeli at_car_offset 1.4 1.3 -0.1 position 3 shooting_angle_limit 190.0 with_weapon 32 
  Actor.Health(SWAT1) = 150
  07DD: set_actor SWAT1 temper_to 70
  05E2: AS_actor SWAT1 kill_actor $Player_actor
  
  0464: put_actor SWAT2 into_turret_on_car CopHeli at_car_offset 1.4 -0.8 -0.1 position 3 shooting_angle_limit 190.0 with_weapon 32 
  Actor.Health(SWAT2) = 150
  07DD: set_actor SWAT2 temper_to 70
  05E2: AS_actor SWAT2 kill_actor $Player_actor  
  
  0464: put_actor SWAT3 into_turret_on_car CopHeli at_car_offset -1.4 1.3 -0.1 position 1 shooting_angle_limit 190.0 with_weapon 32 
  Actor.Health(SWAT3) = 150
  07DD: set_actor SWAT3 temper_to 70
  05E2: AS_actor SWAT3 kill_actor $Player_actor
  
  0464: put_actor SWAT4 into_turret_on_car CopHeli at_car_offset -1.4 -0.8 -0.1 position 1 shooting_angle_limit 190.0 with_weapon 32
  Actor.Health(SWAT4) = 150
  07DD: set_actor SWAT4 temper_to 70
  05E2: AS_actor SWAT4 kill_actor $Player_actor  
  
  0727: set_heli CopHeli behavior_to_police_heli_and_follow_actor $Player_actor follow_car -1 radius 10.0 
//  072F: enable_car CopHeli stuck_check_distance 1.0 time 2000 and_restore_if stuck 1 flipped 1 unknown 1 to_path -1 // extended 03CC

  Camera.Restore_WithJumpCut
  02A3: enable_widescreen 0

fade 1 500 
wait 2000
// 
// Interoir 6


//while true
//I = 0
:Spawn
//while true
for I = 0 to 9
//  wait 0
//  if not 1@[i] > 0
//  then
//  if not Car.Wrecked(CopCars[i])
//  then
    03BA: clear_cars_from_cube_cornerA 1535.88 -1682.11 5.27 cornerB 1541.88 -1676.11 10.27
    N = Random(1, 3)
    if N = 2
    then
      CopCarModel = #COPCARLA      
    else
      CopCarModel = #PATRIOT
    end
    
    while true
      wait 0
      if 80A4: not actor $PLAYER_ACTOR sphere 0 in_cube_cornerA 1579.04 -1721.85 5.17837 cornerB 1524.631 -1633.711 11.8784
      then
        if 8339: not anything_in_cube_cornerA 1535.88 -1682.11 5.27 cornerB 1541.88 -1676.11 10.27 solid 0 car 1 actor 0 object 0 particle 0   
        then
          CopCars[i] = Car.Create(COPCARmodel, 1538.88, -1679.11, 6.27);
          Break
        end
      else
        if 8339: not anything_in_cube_cornerA 1555.51 -1630.87 12.8784 cornerB 1561.51 -1624.87 14.8784 solid 0 car 1 actor 0 object 0 particle 0   
        then      
          CopCars[i] = Car.Create(COPCARmodel, 1558.51, -1627.87, 13.8784);
          Break
        end      
      end
    end
    Car.Angle(CopCars[i]) = 180.0
    0129: CopDrivers[i] = create_actor_pedtype 6 model #NULL in_car CopCars[i] driverseat
    039E: set_actor CopDrivers[i] locked 1 while_in_car

    01C8: CopPassengers1[i] = create_actor_pedtype 6 model #NULL in_car CopCars[i] passenger_seat 0
    Actor.Armour(CopPassengers1[i]) = 100
    01B2: give_actor CopPassengers1[i] weapon 25 ammo 999999    
    0713: actor CopPassengers1[i] driveby_actor $Player_actor car -1 point 0.0 0.0 0.0 radius 100.0 4 1 firing_rate 99999 
    039E: set_actor CopPassengers1[i] locked 1 while_in_car

    01C8: CopPassengers2[i] = create_actor_pedtype 6 model #NULL in_car CopCars[i] passenger_seat 1
    Actor.Armour(CopPassengers2[i]) = 100
    01B2: give_actor CopPassengers2[i] weapon 25 ammo 999999    
    0713: actor CopPassengers2[i] driveby_actor $Player_actor car -1 point 0.0 0.0 0.0 radius 100.0 4 1 firing_rate 99999 
    039E: set_actor CopPassengers2[i] locked 1 while_in_car

    01C8: CopPassengers3[i] = create_actor_pedtype 6 model #NULL in_car CopCars[i] passenger_seat 2
    Actor.Armour(CopPassengers3[i]) = 100
    01B2: give_actor CopPassengers3[i] weapon 25 ammo 999999     
    0713: actor CopPassengers3[i] driveby_actor $Player_actor car -1 point 0.0 0.0 0.0 radius 100.0 4 1 firing_rate 99999
    039E: set_actor CopPassengers3[i] locked 1 while_in_car
    
    Car.SetDriverBehaviour(CopCars[i], 2)
    Car.SetMaxSpeed(CopCars[i], 38.5)
    00AE: unknown_set_car CopCars[i] to_ignore_traffic_lights 2 
    072F: enable_car CopCars[i] stuck_check_distance 1.0 time 2000 and_restore_if stuck 1 flipped 1 unknown 1 to_path -1 // extended 03CC 
    020A: set_car CopCars[i] door_status_to 4
    Car.SetImmunities(CopCars[i], 0, 0, 0, 1, 0)
    Car.ImmuneToNonPlayer(CopCars[i]) = true
//  else



//else
//  if Car.Wrecked(CopCars[i])
//  then
//    Car.RemoveReferences(CopCars[i])
//    Actor.RemoveReferences(CopDrivers[i])
//    Actor.RemoveReferences(CopPassengers1[i])
//    Actor.RemoveReferences(CopPassengers2[i])
//    Actor.RemoveReferences(CopPassengers3[i])
//  end
//end//if
end//for
//end//while
{05D6: clear_scmpath
05D7: add_point_to_scmpath 1542.83 -1699.74 7.27
05D7: add_point_to_scmpath 1592.67 -1703.72 7.27
05D7: add_point_to_scmpath 1596.45 -1661.46 7.27
05D7: add_point_to_scmpath 1588.35 -1638.34 12.97
05D7: add_point_to_scmpath 1585.49 -1627.12 12.97
05D7: add_point_to_scmpath 1544.88 -1620.65 12.97
05D7: add_point_to_scmpath 1534.26 -1630.19 12.97
05D7: add_point_to_scmpath 1535.21 -1654.29 12.97


06BB: set_actor 2@ drive_car 1@ speed 17.0 along_SCM_path}
fade 1 500
//0555: remove_weapon 38 from_actor $Player_actor 
//wait 20000


wait 120000


 
gosub @MissionPassed 
return 

:MissionPassed 
01E3: text_1number_styled 'M_PASSD' 0 5000 ms 1 // MISSION PASSED! 
//$MyMission_Passed = 1
076C: set_zone 'PER1' gang 1 density_to 40
09B7: set_zone 'PER1' disable_footcops 1 
076A: set_zone 'per1' dealer_density_to 0 
return 

:MissionFailed 
00BA: text_styled 'M_FAIL' 5000 ms 1 // ~r~MISSION FAILED! 
return 

:MissionCleanup 
$ONMISSION = 0 // integer values
0A92: create_custom_thread "rStart.cs"
mission_cleanup
#BARRACKS.Destroy
#RHINO.Destroy
#ENFORCER.Destroy
#HUNTER.Destroy
#HYDRA.Destroy
#SWATVAN.Destroy
#COPCARRU.Destroy
#COPCARLA.Destroy
#FBIRANCH.Destroy
#FBITRUCK.Destroy
#COPBIKE.Destroy
#PATRIOT.Destroy
#ARMY.Destroy
#FBI.Destroy
#CHROMEGUN.Destroy
#AK47.Destroy
#CELLPHONE.Destroy
#POLMAV.Destroy
#SWAT.Destroy
#TEC9.Destroy
040D: unload_wav 1
return

P.S. Не обращайте внимание на мусор внутри комметариев.


[small][/small]

Offline

#494 09-07-2008 09:07

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: Один вопрос

создаётся на его месте вертолёт (хотя я очищаю куб в котором стоянка вертолёта)

Тут надо пойти путём R* и отключить генерацию вертолёта.

Offline

#495 09-07-2008 09:46

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

@flashTrash - Если отключить вообще, то нехорошо, а если за секунду до этого, то он всё равно не пропадёт. 03BA: clear_cars_from_cube_cornerA 1565.62 -1695.65 27.3474 cornerB 1559.12 -1706.4 32.9474 не очищает припаркованные автомобили?


[small][/small]

Offline

#496 09-07-2008 10:46

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: Один вопрос

VcSaJen

не очищает припаркованные автомобили?

Очищать то может и очищает, да вертолёт опять сгенерируется smile . Отключи генерацию, потом очисть територию, а перед завершением скрипта опять включи генерацию.

Offline

#497 09-07-2008 14:16

Vitaliy_TopSide
From: Anapa!
Registered: 27-05-2008
Posts: 62
Website

Re: Один вопрос

Люди!!! Кто знает как повесить копов на актера (не игрока)???

Offline

#498 09-07-2008 16:53

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: Один вопрос

@Vitaliy_TopSide - Никак. У актера нет CWanted. (И, если для каждого актера будет обработка wanted - никакого процессора на AI не хватит).

Offline

#499 09-07-2008 17:37

Yarik
Registered: 22-02-2008
Posts: 173
Website

Re: Один вопрос

0467: clear_actor $PLAYER_ACTOR last_weapon_damage сбрасивает только сведения о повреждении, или еще и востанавливает хелса?

Offline

#500 10-07-2008 05:05

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

@flashTrash - на всякий случай так и сделал. Зависаний больше я не добился, частично они были кажется из-за dbmu_cleo.


[small][/small]

Offline

Board footer

Powered by FluxBB