You are not logged in.
Pages: 1
Всем привет.) Опять пишу с довольно простым кодом, но и тут проблемы есть. Короче, суть такая: стоит актер, проигрывается анимка типа он куда-то смотрит, когда он будет куда-то идти (он должен стоять как грувовец), у него должна быть походка пьянчуги. Вроде все написал так, но игра вылетает при появлении актера. Думаю, там дофига ошибок. Помогите найти.)
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
{$VERSION 3.1.0027}
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
3@ = 0
:acttest
wait 1000
if and
00FE: actor $PLAYER_ACTOR sphere 0 in_sphere 2430.6116 -1228.952 25.116 radius 100.0 100.0 100.0
3@ == 0
jf @actcheck2
023c: request_special_actor 'ppop' as 2
038B: load_requested_models
Actor.Create(2@, Mission1, #SPECIAL02, 2430.6116, -1228.952, 25.1162)
Actor.Angle(2@) = 180
Actor.SetImmunities(2@, 1, 1, 1, 1, 1)
0605: actor 2@ perform_animation_sequence "IDLE_STANCE" IFP_file "PED" 4.0 loop 1 0 0 0 time -1 // versionA
0245: set_actor 2@ walk_style_to "DRUNKMAN"
3@ = 1
0296: unload_special_actor 2
:actcheck2
if and
80FE: not actor $PLAYER_ACTOR sphere 0 in_sphere 2430.6116 -1228.952 25.1162 radius 100.0 100.0 100.0
3@ == 1
Actor.RemoveReferences(2@)
jf @return
:return
jump @acttest
Offline
1. 0296: unload_special_actor 2 надо применять после уничтожения спец. актёра.
2. Actor.RemoveReferences - не проверка, а команда. Поэтому между if..jf этот опкод вставлять нельзя.
3. jf @return - бессмысленная команда, выполнение кода в любом случае перейдёт на :return
4. Проверки переменной 3@ надо заменить на проверку существования актёра 2@.
В общем, код лучше переделать заново.
А определить опкод, при выполнении которого произошёл вылет, можно с помощью плагина Scmlog.
Last edited by Den_spb (01-04-2012 00:31)
Offline
Понятно, спасибо. Код переписал, а вылеты оказывается вообще из-за другого были (вот что значит не проверять все возможные варианты вылетов).
Offline
Pages: 1