You are not logged in.
@GTASA -
16778, des_ufosign
@PoM14 - Нет. Опкод выглядит так:
05D3: AS_actor $PLAYER_ACTOR goto_point 681.8004 -474.1063 15.5363 mode 4 3000 ms // version
Только не думай что вставкой одного опкода все получиться.
Ну, собственно, это и не массив...
В качестве индекса массива можно использовать переменную:
var 0@: Array 10 of Actor end 0@ = Actor.Create(Mission1, #ARMY, 0,0,0) 1@ = Actor.Create(Mission1, #ARMY, 0,0,0) // 9@ = Actor.Create(Mission1, #ARMY, 0,0,0) for 10@ = 0 to 9 01B2: give_actor 0@[10@] weapon 28 ammo 60 // Load the weapon model before using this end
@PoM14 - используй опкод 05D3
@flashTrash - цитата из хелпа:
Обратите внимание, что расширение указывать не надо.
@Alien - я бы сделал так:
{$CLEO} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then if $ONMISSION == 0 then if 0154: actor $PLAYER_ACTOR in_zone 'REST' then 0A94: start_custom_mission "area69" end end end end
То есть если я буду использовать переменную с идентификатором, скажем, $1000000, то она при компиляции запишется как есть? А раз других таких переменных нет, то конфликтов быть не должно?
Максимальная переменная $16383.
кстати когда я сохраняю скрипт в формате .cm он вообще перестает работать
Миссию нужно запустить командой
0A94: start_custom_mission "missions\CustomMission1"
...в потоке нельзя использовать в качестве имени переменную 33@, если размер массива больше 1, так как в потоках максимально допустимая локальная переменная это 33@, а элемент массива 33@ с индексом больше 0 будет за этими границами." 47, очевидно, больше 34...
Это для обычного потока в миссии кол-во локалных переменных равно 1024.
@GTASA - Проверь папку CLEO на наличие дублирующих скриптов. Незабывай загружать/выгружать нужные/ненужные модели.
{$CLEO} //0A24: enable_military_zones_wanted_level 1 //Actor.PutAt($PLAYER_ACTOR, 148.9585, 1913.5857, 18.861) 0@ = 0 while true wait 0 if Player.Defined($PLAYER_CHAR) then if and 0154: actor $PLAYER_ACTOR in_zone 'REST' 0@ == 0 then Model.Load(#ARMY) Model.Load(#M4) Model.Load(#HEATSEEK) while true wait 0 if and Model.Available(#ARMY) Model.Available(#M4) Model.Available(#HEATSEEK) then Break end end 1@ = Actor.Create(Cop, #ARMY, 124.897, 1935.64, 19.269) 0648: unknown_actor 1@ task_set 200.0 // float 0754: define_new_animation_path 0755: add_animation_path_3D_coord 124.897 1935.64 19.269 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 159.0 1887.9 19.5 animation "ROADCROSS" IFP_file "PED" 0817: assign_actor 1@ to_animation_path_with_walk_mode 4 route_mode 3 074E: unknown_actor 1@ unknown_set 20.0 unknown_flag 1 2@ = Actor.Create(Cop, #ARMY, 144.2994, 1895.1399, 20.4459) 0648: unknown_actor 2@ task_set 200.0 // float 0754: define_new_animation_path 0755: add_animation_path_3D_coord 144.2994 1895.1399 18.4459 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 143.9082 1888.4668 18.2511 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 117.9811 1894.7831 18.4319 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 101.0116 1898.0337 20.3672 animation "NONE" IFP_file "NONE" 0755: add_animation_path_3D_coord 100.8231 1904.0637 22.9922 animation "NONE" IFP_file "NONE" 0755: add_animation_path_3D_coord 106.8529 1904.1407 25.5 animation "NONE" IFP_file "NONE" 0755: add_animation_path_3D_coord 106.787 1901.0818 25.4985 animation "NONE" IFP_file "NONE" 0755: add_animation_path_3D_coord 103.0787 1901.1964 25.4985 animation "NONE" IFP_file "NONE" 0817: assign_actor 2@ to_animation_path_with_walk_mode 4 route_mode 3 074E: unknown_actor 2@ unknown_set 20.0 unknown_flag 1 3@ = Actor.Create(Cop, #ARMY, 22.2487, 1714.717, 22.64) 0648: unknown_actor 3@ task_set 200.0 // float 0754: define_new_animation_path 0755: add_animation_path_3D_coord 22.2487 1714.717 22.64 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 19.0789 1728.839 22.6453 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 14.2273 1722.347 22.633 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 5.0802 1725.461 22.6013 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord 5.7044 1711.155 22.5932 animation "ROADCROSS" IFP_file "PED" 0817: assign_actor 3@ to_animation_path_with_walk_mode 4 route_mode 3 074E: unknown_actor 3@ unknown_set 20.0 unknown_flag 1 01B2: give_actor 1@ weapon 31 ammo 6000 // Load the weapon model before using this 01B2: give_actor 2@ weapon 31 ammo 6000 // Load the weapon model before using this 01B2: give_actor 3@ weapon 36 ammo 6000 // Load the weapon model before using this Model.Destroy(#ARMY) Model.Destroy(#M4) Model.Destroy(#HEATSEEK) 0@ = 1 end if and 8154: not actor $PLAYER_ACTOR in_zone 'REST' 0@ == 1 then Actor.RemoveReferences(1@) Actor.RemoveReferences(2@) Actor.RemoveReferences(3@) 0@ = 0 end end end
А разве могут локальные переменные быть типа Array, я пытался объявить их - но компилятор пишет ошибку...
Могут, объявляешь:
var 0@: Array 10 of Actor end
И используешь 0@..9@ как обычно.
Что, если сохранить в .cm-формате можно будет?
Просто увеличится число локальных переменных (0@..1023@).
А насчет переменных 32@, 33@ - это не таймеры никакие. В них лежит информация о том, что какая-либо мина вокруг базы уже взорвалась - они же не многократные...
Это внутриигровые таймеры. Каждую миллисекунду их значение увеличивается на один. Проверь:
{$CLEO} 32@ = 100 33@ = 1000 while true wait 0 03F0: enable_text_draw 1 045A: draw_text_1number 5.0 5.0 GXT 'NUMBER' number 32@ 045A: draw_text_1number 5.0 20.0 GXT 'NUMBER' number 33@ end
add:
И вообще имена глобальных переменных я выбрал так, чтобы не перекликались с майном.
Компилятору без разницы какие имена у переменных (кроме тех что в CustomVariables.ini и числовых) для них выбирается первая свободная числовая переменная. Почитай: http://sannybuilder.com/forums/viewtopi … 3747#p3747
Помогите пожалуста, почему я вот создал педов, один появляется у входа на военке, второй - там за углом, а третий должен у ракетниц ходить. Так вот первый появляется там, где надо, второго нету вообще, а третий у забора. Че за фигня?
Используй этот скрипт как базовый (маркеры можешь убрать):
{$CLEO} 0@ = 0 while true wait 0 if Player.Defined($PLAYER_CHAR) then if and 0154: actor $PLAYER_ACTOR in_zone 'REST' 0@ == 0 then #ARMY.Load while not #ARMY.Available wait 0 end 1@ = Actor.Create(Mission1, #ARMY, 124.897, 1935.64, 19.269) 2@ = Actor.Create(Mission1, #ARMY, 144.2994, 1895.1399, 20.4459) 3@ = Actor.Create(Mission1, #ARMY, 22.2487, 1714.717, 22.64) #ARMY.Destroy 11@ = Marker.CreateAboveActor(1@) 12@ = Marker.CreateAboveActor(2@) 13@ = Marker.CreateAboveActor(3@) 0@ = 1 end if and 8154: not actor $PLAYER_ACTOR in_zone 'REST' 0@ == 1 then Actor.RemoveReferences(1@) Actor.RemoveReferences(2@) Actor.RemoveReferences(3@) Marker.Disable(11@) Marker.Disable(12@) Marker.Disable(13@) 0@ = 0 end end end
Ну какие будут пожелания, предложения, угрозы?
Как обычно, избавиться от глобальных переменных. Как вариант использовать скрипт как миссию.
p.s. 32@ и 33@ это таймеры, т.е. нет смысла хранить в них какие либо данные.
@Alien - ставь опкод в цикл все будет работать:
{$CLEO} 0A24: enable_military_zones_wanted_level 1 0@ = Object.Create(3095, 268.664, 1884.06, 15.925) 034D: rotate_object 0@ from_angle 90.0 to_angle 90.0 flag 0 Actor.PutAt($PLAYER_ACTOR, 271.2008, 1884.6787, 19.029) while true wait 0 034E: move_object 0@ to 276.14 1884.06 15.924 speed 0.05 0.0 0.0 flag 0 end
@GTASA -
{$CLEO} 0@ = 0 32@ = 0 while true wait 0 if Player.Defined($PLAYER_CHAR) then if Actor.Driving($PLAYER_ACTOR) then 03C0: 1@ = actor $PLAYER_ACTOR car if and 0@ == 0 32@ >= 150 0AB0: key_pressed 0x33 then Model.Load(1301) while not Model.Available(1301) wait 0 end 2@ = Object.Create(1301, 0, 0, 0) Model.Destroy(1301) 08D2: object 2@ scale_model 0.4 0441: 3@ = car 1@ model 07E4: get_model 3@ dimensions_cornerA_to 5@ 5@ 5@ dimensions_cornerB_to 5@ 4@ 5@ 0681: attach_object 2@ to_car 1@ with_offset 0 4@ 0 rotation 90.0 0 0 0@ = 1 32@ = 0 end if and 0@ == 1 32@ >= 150 0AB0: key_pressed 0x33 then Object.Destroy(2@) Object.RemoveReferences(2@) 0@ = 0 32@ = 0 end else if 03CA: object 2@ exists then Object.Destroy(2@) Object.RemoveReferences(2@) 0@ = 0 end end end end
@GTASA -
{$CLEO} 0@ = 0 32@ = 0 while true wait 0 if Player.Defined($PLAYER_CHAR) then if and 0@ == 0 32@ >= 150 0AB0: key_pressed 0x21 then 0@ = 1 32@ = 0 015D: set_gamespeed 0.1 end if and 0@ == 1 32@ >= 150 0AB0: key_pressed 0x21 then 0@ = 0 32@ = 0 015D: set_gamespeed 1.0 end end end
Попробуй так:
{$CLEO} 32@ = 0 while true wait 0 if Player.Defined($PLAYER_CHAR) then if and 32@ >= 250 0AB0: key_pressed 0x73 then 32@ = 0 04ED: load_animation "colt45" while 84EE: not animation "colt45" loaded wait 0 end 0615: define_AS_pack_begin 1@ 0605: actor -1 perform_animation_sequence "colt45_crouchreload" IFP_file "colt45" 4.0 loop 0 0 0 1 time -1 // versionA 04EB: AS_actor -1 crouch 1 0616: define_AS_pack_end 1@ 0618: assign_actor $PLAYER_ACTOR to_AS_pack 1@ 061B: remove_references_to_AS_pack 1@ 04EF: release_animation "colt45" end end end
после выполнения этих анимаций сиджей все равно встает
{$CLEO} 32@ = 0 while true wait 0 if Player.Defined($PLAYER_CHAR) then if and 32@ >= 250 0AB0: key_pressed 0x73 then 32@ = 0 04ED: load_animation "colt45" while 84EE: not animation "colt45" loaded wait 0 end 0605: actor $PLAYER_ACTOR perform_animation_sequence "colt45_crouchreload" IFP_file "colt45" 4.0 loop 0 0 0 1 time -1 // versionA 04EF: release_animation "colt45" end end end
0605: actor $PLAYER_ACTOR perform_animation_sequence "colt45_crouchreload" IFP_file "colt45" 4.0 loop 0 0 0 1 time -1 // versionA
Смотри предпоследний параметр.
@Alien -
1) используй сидячии анимации (colt45_crouchreload, UZI_crouchreload и т.д.)
2)
0652: $STAT_UNLOCKED_CITIES_NUMBER = integer_stat 181 0653: $STAT_FAT = float_stat 21
3)
04EF: release_animation "LOWRIDER"
@GTASA - 1. Убери отсюда запятые:
0755: add_animation_path_3D_coord -1653.7424, -2241.114, 31.3772 animation "ROADCROSS" IFP_file "PED" 0755: add_animation_path_3D_coord -1658.8065, -2248.6306, 33.3801 animation "ROADCROSS" IFP_file "PED"
2. В CLEO скриптах нужно использовать id модели (FAQ по CLEO 3):
{$CLEO} Model.Load(3092) while not Model.Available(3092) wait 0 end 1@ = Object.Create(3092, -1653.7424, -2241.114, 31.3772) Object.Angle(1@) = 270.0 2@ = Object.Create(3092, 2499.9551, -1675.63, 12.0) Object.Angle(2@) = 270.0 Model.Destroy(3092) 0A93: end_custom_thread
Такс, как мне заставить этого чела нападать на меня, или на кого-либо другого(например из моей банды и на простых), когда он меня (или кого-либо) заметит или услышит выстрел?
1@ = Actor.Create(Mission1, #WMOTR1, -1658.8065, -2248.6306, 33.3801) 077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0 // see ped.dat
Не про исправление, но про Microsoft:
http://www.microsoft.com/about/diversit … gleam.mspx
create_thread @MAN не нужен и end_thread замени на 0A93: end_custom_thread:
{$CLEO} #FAM1.Load while not #FAM1.Available wait 0 end 0@ = Actor.Create(CivMale, #FAM1, 2494.4622, -1680.92, 13.3385) #FAM1.Destroy 0A93: end_custom_thread
[large]Sanny Builder[/large]
http://sannybuilder.com/?lang=ru
@GTASA - _http://pastebin.com/mf7cdd41
Nowhere = 0 FollowRoad = 1 KillThePlayer = 2 DriveToPlayer = 4 IgnoreRoadPaths = 8
В SA 0446 не работает. По крайней мере я не нашел, где используется тот флаг, который он устанавливает.
Все отлично работает.
@PoMu4 -
{$CLEO} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@ if 1@ <> -1 then 0446: set_actor 1@ immune_to_headshots 0 end end end
library lib; function Test(N: Integer): Integer; stdcall; begin Result := N; end; exports Test; begin end.
0AA7: call_function 3@ num_params 1 pop 0 0@ 1@
stdcall функции сами очищают стек.
@grand - загружать модель для парковки (014B) необязательно.