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