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@
endadd:
И вообще имена глобальных переменных я выбрал так, чтобы не перекликались с майном.
Компилятору без разницы какие имена у переменных (кроме тех что в 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
end0605: 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) необязательно.