You are not logged in.
Понятно! Вопрос, а вот так персонажа можно вычислить?
:Noname
wait 0
if and
06FF: any_ped_near_actor $PLAYER_ACTOR in_range 20.0 // радиус
Player.Defined($PLAYER_CHAR)
else_jump @Noname
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to -1 closest_ped_to 1@
if
not 1@ == -1
else_jump @Noname
Offline
Я сделал скрипт, тестирую.При нажатии на Y, должен появиться BMYST с оружием в руках.Он
идет как пешеход, я поставил опкод.Если его атаковал любой прохожий, то он должен его убить.
Так и происходит, но если он убивает, то стоит и больше не идёт.Так-же не реагирует на повреждения
повторно.Что неправильно?
//-------------MAIN---------------
0000: NOP
thread 'TEST'
wait 0
Model.Load(#BMYST)
038B: load_requested_models
:TEST_23
wait 0
if
Model.Available(#BMYST)
else_jump @TEST_23
if
00E1: player 0 pressed_key 11
else_jump @TEST_23
wait 5000
04C4: store_coords_to $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR with_offset 1.0 3.0 1.0
2@ = Actor.Create(CivMale, #BMYST, $X1, $Y1, $Z1)
01B2: give_actor 2@ weapon 22 ammo 744 // Load the weapon model before using this
Actor.WeaponAccuracy(2@) = 88
05DE: AS_actor 2@ walk_around_ped_path
jump @TEST_140
:TEST_140
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @TEST_140
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if
not 1@ == -1
else_jump @TEST_140
jump @TEST_196
:TEST_196
wait 0
if
051A: actor 2@ damaged_by_actor 1@
else_jump @TEST_196
05E2: AS_actor 2@ kill_actor 1@
jump @TEST_23
:TEST_234
wait 0
if
Actor.Dead(2@)
else_jump @TEST_234
Model.Destroy(#BMYST)
Actor.RemoveReferences(2@)
jump @TEST_23
Offline
Нет.Оружие появляется! Не знаю, но вот так.
Offline
Загрузил, но глюк не исправился! Он убивает, атаковавшего, но повторно не реагирует и перестаёт идти.
Помогите!
//-------------MAIN---------------
0000: NOP
thread 'TEST'
wait 0
Model.Load(#BMYST)
Model.Load(#COLT45)
038B: load_requested_models
:TEST_28
wait 0
if
Model.Available(#BMYST)
Model.Available(#COLT45)
else_jump @TEST_28
if
00E1: player 0 pressed_key 11
else_jump @TEST_28
wait 5000
04C4: store_coords_to $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR with_offset 1.0 3.0 1.0
2@ = Actor.Create(CivMale, #BMYST, $X1, $Y1, $Z1)
01B2: give_actor 2@ weapon 22 ammo 744 // Load the weapon model before using this
Actor.WeaponAccuracy(2@) = 88
05DE: AS_actor 2@ walk_around_ped_path
jump @TEST_150
:TEST_150
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @TEST_150
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if
not 1@ == -1
else_jump @TEST_150
jump @TEST_206
:TEST_206
wait 0
if
051A: actor 2@ damaged_by_actor 1@
else_jump @TEST_206
05E2: AS_actor 2@ kill_actor 1@
jump @TEST_28
:TEST_254
wait 0
if
Actor.Dead(2@)
else_jump @TEST_254
Model.Destroy(#BMYST)
Model.Destroy(#COLT45)
Actor.RemoveReferences(2@)
jump @TEST_28
Last edited by DEN58 (11-01-2011 15:53)
Offline
jump @TEST_196 :TEST_196
Пипец...
Блин, ну команды выполняются последовательно. Представь, что чел идёт по улице прямо. Ему даются команды: свернуть, развернуться, перелететь на джет-паке. Скажи, НАХРЕНА ПЕРЕЛЕТАТЬ НА ДЖЕТ-ПАКЕ ПОЛМЕТРА!!!!!??? Не знаю, как ещё объяснять, что не считая jump'а код выполняется последовательно, и до метки которая рядом интерпретатор дойдёт сам.
Удалять модель нужно сразу после создания актёра.
Offline
Загрузил, но глюк не исправился! Он убивает, атаковавшего, но повторно не реагирует и перестаёт идти.
Помогите!....
if
Actor.Dead(2@)
else_jump @TEST_254
....
Возможно, имелось в виду @TEST_150 ? Или хочется дождаться нового нажатия 'Y' ?
Кроме того, оно все ужасно (начиная с проверки на ближайшего педа и заканчивая упомянутыми джампами на следующую команду).
Offline
Я по разному пробывал, и у меня не вышло! Я ОБУЧАЮСЬ! Можете весь скрипт написать? Я так
не понимаю! Если весь с исправленными ошибками, то я найду и пойму! Пожалуйста!
Offline
а не проще этому педу поставить тип, который сам будет защищаться? бандюга какойнить, или ещё что...
хочешь разбираться в коде?) ну на) не проверял, но должно работать
thread 'TEST' while true wait 100 while player.Defined($PLAYER_CHAR) wait 100 if or 00E1: player 0 pressed_key 11 Actor.Dead(3@) then Model.Load(#BMYST) Model.Load(#COLT45) while true wait 100 if and Model.Available(#BMYST) Model.Available(#COLT45) then Break end end wait 5000 04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 1.0 3.0 0.0 if 3@ <> -1 then Actor.DestroyWithFade(3@) end 3@ = Actor.Create(CivMale, #BMYST, 0@, 1@, 2@) 01B2: give_actor 3@ weapon 22 ammo 744 Actor.WeaponAccuracy(3@) = 88 05DE: AS_actor 3@ walk_around_ped_path Model.Destroy(#BMYST) Model.Destroy(#COLT45) end 0AB5: store_actor 3@ closest_vehicle_to 0@ closest_ped_to 1@ if 1@ <> -1 then if 051A: actor 3@ damaged_by_actor 1@ then 05E2: AS_actor 3@ kill_actor 1@ end end end if 3@ <> -1 then Actor.RemoveReferences(3@) end end
GIMS developer
Offline
У меня вопрос: Я привык к меткам, а вы пишите в виде кода.А как научиться коды делать?
Что это за команды break, until false?
Last edited by DEN58 (13-01-2011 13:37)
Offline
break прерывает цикл, в котором находится, и программа идёт дальше
until и while организуют цикл...а true/false в проверках часто используется(да/нет)
всё это и многое другое есть в гугле, не стесняйтесь пользоваться
метки и опкоды - низкоуровневое программирование, как basic или скорее даже ассемблер, а мой код использует интуитивно понятные высокоуровневые конструкции...как си, паскаль, си++, дельфи и т д
Last edited by 3Doomer (13-01-2011 13:58)
GIMS developer
Offline
У меня вопрос: Я привык к меткам, а вы пишите в виде кода.А как научиться коды делать?
Что это за команды break, until false?
В справке всё это расписано (раздел Кодинг). Команда break - выход из цикла, внутри которого написана эта команда. Команда continue - прыжок на начало цикла, внутри которого написана эта команда.
Last edited by Den_spb (13-01-2011 23:07)
Offline
"низкоуровневое программирование, как basic или скорее даже ассемблер"
- бедный бейсик, даже если кто и использовал в нём goto, это не значит, что он низкоуровневый, уж не хужее паскаля!
Offline
В справке всё это расписано (раздел Кодинг). Команда break - выход из цикла, внутри которого написана эта команда. Команда continue - прыжок на начало цикла, внутри которого написана эта команда.
Если придираться к словам:
break - переход на оператор, следующий за конструкцией (в C это не обязательно цикл, это может быть и switch)
continue - переход на закрывающую скобку цикла (т.е. до перехода к первому оператору, еще будут выполнены все проверки и прочие вещи, прописанные в условии цикла)
reute70
Эх, молодежь... Бэйсика не знают.
В классическом бэйсике, все строки нумеруются и никаких операторных скобок нет - все управляющие конструкции используют номер строки.
Если углубляться в историю, такой подход был взят из фортрана, где было не обязательно нумеровать все строки, но любая строка, участвовавшая в управляющих конструкциях, должна была иметь метку.
Offline
break - переход на оператор, следующий за конструкцией (в C это не обязательно цикл, это может быть и switch)
continue - переход на закрывающую скобку цикла (т.е. до перехода к первому оператору, еще будут выполнены все проверки и прочие вещи, прописанные в условии цикла)
По-моему где-то на этом форуме я это уже видел.
Offline
Ещё чуток пооффтоплю
Для меня теперь бЕйсик - VBA, пусть как хотят думают, а по мне нормальная штука, только компилятора нет (т.е. как в дельфи - рраз и приложение! - всё собираюсь этот вопрос в инете провентилировать
Offline
Как вычислить через память гангстеров? Я хочу 88% точность стрельбы сделать.
Offline
@DEN58 - используй опкод
02DD: 1@ = get_random_ped_in_zone 'SAN_AND' with_pedtype_civilian 0 gang 1 criminal/prostitute 0 1@ - переменная (хендл) актера 0,1,0 - флаги, указывающие, кого искать (гражданский, гангстер, криминал)
Потом проверяешь, найден ли актер (056D: actor 1@ defined), проверяешь его тип (089F: get_actor 1@ pedtype_to 2@) и далее делаешь с ним все, что захочешь.
П.С. Если тебе нужно, чтобы действия выполнялись только для определенной банды, то тип проверять надо. И еще. Если актер не найден или не соответствует условиям, убери о нем сведения и снова возвращайся к поиску.
Last edited by Vital (23-01-2011 18:32)
Offline
А как в файле pedstats.dat указать точность стрельбы? Какой параметр нужен, чтобы гангстеры нормально
стреляли не промахиваясь?
Last edited by DEN58 (23-01-2011 20:28)
Offline
Какой адрес памяти проверяет стреляет ли чел или нет? Не смог найти!
Offline
Какой адрес памяти проверяет стреляет ли чел или нет? Не смог найти!
Проверь текущую аниму чела.
Offline
Подробнее, пожалуйста!
Offline