#2751 23-11-2010 14:22

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

3Doomer wrote:

нельзя, переменная сама по себе не поменяется

А ты попробуй.

А можно заставить актёра упасть? Не просто анимация падения, а чтоб реально упал?

Offline

#2752 23-11-2010 14:35

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Один вопрос

d88 wrote:
3Doomer wrote:

нельзя, переменная сама по себе не поменяется

А ты попробуй.

А можно заставить актёра упасть? Не просто анимация падения, а чтоб реально упал?

возможно,эту переменную обновляет один из потоков мейна. Я бы не стал на это надеяться, а то, мало ли, в чьи руки попадёт скрипт...будут вопли "а пачиму не работает" итд

"Лучше переесть, чем недоспать."


GIMS developer

Offline

#2753 23-11-2010 22:29

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Как правильно пользоваться sa limit adjuster? Как там правильно выставить пункт vehicles чтобы у меня были новые id для машин? Или хотябы какую нить ссылочку на tutorial дайте. За ранее спасибо!!!

Для этого не нужен SALA. Просто установи More Vehicles с сайта alexander.sannybuilder.com

возможно,эту переменную обновляет один из потоков мейна. Я бы не стал на это надеяться, а то, мало ли, в чьи руки попадёт скрипт...будут вопли "а пачиму не работает" итд

Тоже думаю, что переменную обновляет мэйн. Сами по себе обновляются только переменные-таймеры. В этом случае, при использовании очищенного мэйна например, скрипт работать не будет.

Last edited by Den_spb (23-11-2010 22:34)

Offline

#2754 26-11-2010 06:02

Hardcore7
From: ЕКБ
Registered: 22-11-2010
Posts: 10

Re: Один вопрос

Для этого не нужен SALA. Просто установи More Vehicles с сайта alexander.sannybuilder.com

Я скачал, спасибо!!!, но как ей пользоваться? Там есть какой то текстовый файл, в котором написаны разные id. Это чё там свободные id написаны? Т.е. если я установлю новую машину с каким нибудь из этих id, то она пойдёт?

Offline

#2755 26-11-2010 06:08

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Там есть какой то текстовый файл, в котором написаны разные id. Это чё там свободные id написаны?

Да.

Offline

#2756 26-11-2010 11:44

Hardcore7
From: ЕКБ
Registered: 22-11-2010
Posts: 10

Re: Один вопрос

Спасибо!!!!

Offline

#2757 01-12-2010 12:48

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

После прохождения n-ного количества миссий, в какой-то момент может вывалиться ошибка(адреса не помню), лимит аджастер пишет примерно следущее:
Object limit breached.
Recommendation: Increase object value in salimits.ini
object у меня равен 3500, увеличение естественно не помогает. Впрочем суть в том, что ошибку эту я знаю, и все скрипты, которые могут её вызвать убраны уже давно(например гоночный скрипт от zaz'a). Просмотрел все cleo, думаю что из за переписанного спидометра.(больше кандидатов не нашёл, так что пока вернул старый код, буду тестить)

{$CLEO .cs}
0000: NOP 
0A95: enable_thread_saving
while true
wait 0
0AAA: 25@ = thread 'DSKOOL' pointer
if and  //textures
  30@ == 0
  25@ == 0
  Actor.Driving($PLAYER_ACTOR)
  $Active_Interior == 0 
84C8:   not actor $PLAYER_ACTOR driving_flying_vehicle 
84A7:   not actor $PLAYER_ACTOR driving_boat 
  80DD: not actor $PLAYER_ACTOR driving_car_with_model #TAXI
  80DD: not actor $PLAYER_ACTOR driving_car_with_model #CABBIE
then 
03C0: 1@ = actor $PLAYER_ACTOR car 
0390: load_txd_dictionary "SPEED" 
038F: load_texture "STRELK" as 15 // Load dictionary with 0390 first 
038F: load_texture "CIF" as 16 // Load dictionary with 0390 first 
038F: load_texture "CIFN" as 17 // Load dictionary with 0390 first 
038F: load_texture "STRELKN" as 18 // Load dictionary with 0390 first
30@ = 1
{else
03F0: enable_text_draw 0 
0391: release_txd_dictionary
30@ = 0  }
end //textures


while 30@ == 1
wait 0 
    gosub @CutsceneCheck
        gosub @WideScreenCheck
00BF: 12@ = current_time_hours, 13@ = current_time_minutes 
if and
056E:   car 1@ defined 
  29@ == FALSE
  28@ == FALSE
  12@ >= 6 
  12@ <= 20 
then 
02E3: 2@ = car 1@ speed 
2@ *= 4.0 
03F0: enable_text_draw 0 
03E3: set_texture_to_be_drawn_antialiased 1 
038D: draw_texture 16 position 550.0 360.0 size 191.25 170.0 RGBA 255 255 255 255 
03E3: set_texture_to_be_drawn_antialiased 1 
074B: draw_texture 15 position 550.0 360.0 scale 191.25 170.0 angle 2@ color_RGBA 255 255 255 255
end 

if and
056E:   car 1@ defined
  29@ == FALSE
  28@ == FALSE
  12@ >= 20
then 
02E3: 2@ = car 1@ speed 
2@ *= 4.0 
03F0: enable_text_draw 1 
03E3: set_texture_to_be_drawn_antialiased 1 
038D: draw_texture 17 position 550.0 360.0 size 191.25 170.0 RGBA 255 255 255 255 
03E3: set_texture_to_be_drawn_antialiased 1 
074B: draw_texture 18 position 550.0 360.0 scale 191.25 170.0 angle 2@ color_RGBA 255 255 255 255 
end   

if// or
//30@ == 2
80DF:   not actor $PLAYER_ACTOR driving 
then
03F0: enable_text_draw 0
wait 1 
0391: release_txd_dictionary
30@ = 0
end

if or
0ab0: 117
  00DD: actor $PLAYER_ACTOR driving_car_with_model #TAXI
  00DD: actor $PLAYER_ACTOR driving_car_with_model #CABBIE 
then
03F0: enable_text_draw 0
wait 1 
0391: release_txd_dictionary
30@ = 0
end

end//30@ == 1

end



:CutsceneCheck
if 
    06B9:   cutscene_data_loaded 
then
    if 
        82E9:   not cutscene_reached_end
    then
        29@ = TRUE 
    end
else
    29@ = FALSE 
end
return 

:WideScreenCheck
0A8D: 27@ = read_memory 0xB6F065 size 4 virtual_protect 0 
if 
    27@ == 1 
then
    28@ = TRUE 
else
    28@ = FALSE 
end
return

Так вот, действительно ли в коде что-то не так, или стоит искать причину ошибки в другом направлении?
ЗЫ. Ошибка проявляется и с 0A95, и без него.
ЗЫЫ.Или мб ошибка здесь?

{$cleo}
wait 0
    Model.Load(#NVGOGGLES)
    20@ = 17
    20@ *= 2
    20@ += 0xB73458 
while true
    wait 0                       
    if and
  //  Player.Defined($PLAYER_CHAR)
        80DF:   not actor $PLAYER_ACTOR driving 
        8818:   not actor $PLAYER_ACTOR in_air 
        0AB0:  key_pressed 50      
    then
0470: 0@ = actor $PLAYER_ACTOR current_weapon 
wait 10
if
8611:   not actor $PLAYER_ACTOR performing_animation "WEAPON_crouch" 
then
01B2: give_actor $PLAYER_ACTOR weapon 44 ammo 1    
wait 20    
0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0    
wait 1100
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0@  
end

if
0611:   actor $PLAYER_ACTOR performing_animation "WEAPON_crouch"
then
01B2: give_actor $PLAYER_ACTOR weapon 44 ammo 1    
wait 20    
0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0    
wait 1100
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0@
0A8C: write_memory 0xB7347C size 2 value 0xFF virtual_protect 0
end
end
//
    if and
//Player.Defined($PLAYER_CHAR)
00DF:   actor $PLAYER_ACTOR driving 
0AB0:  key_pressed 50      
    then
    wait 100
0A8D: 1@ = read_memory 0xC402B8 size 4 virtual_protect 0
if
1@ == 0
then
25@ = 5
08B1: enable_night_vision 1
else
25@ = 0
08B1: enable_night_vision 0
end
    end
    
if and
25@ == 5
00DF:   actor $PLAYER_ACTOR driving 
00E1:   player 0 pressed_key 15 
then
08B1: enable_night_vision 0
25@ = 0
end    


    end

Модель загружается каждый раз, но не удаляется, тем самым сохраняясь и в какой то момент лимит будет превышен?

Last edited by Sergey81 (01-12-2010 12:50)

Offline

#2758 01-12-2010 12:54

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

Ну по-идее, игра сама очищает неиспользуемые объекты (стример, называется). Ищи ошибку в другом.

Offline

#2759 01-12-2010 14:13

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Один вопрос

не думаю, что стример трогает загруженные скриптом модели...скриптер не выгрузил - значит, нужна

Last edited by 3Doomer (01-12-2010 15:44)


GIMS developer

Offline

#2760 01-12-2010 15:24

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

Я не замечал, чтоб стример объекты сохранял в памяти. Хотя может быть и из-за этого, что модель не выгрузил.

Offline

#2761 01-12-2010 15:43

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

Второй скрипт переписал, теперь модель выгружается. Посмотрю что будет.
мп3 кстати тоже обязательно выгружать во избежание? А то есть скрипт, начинается с
{$CLEO .cs}
0000: NOP
0AAC: 10@ = load_mp3 "CLEO\playlist\01.mp3"
и впоследствии 10@ только проигрывается, не выгружаясь.(А не выгружаю, потому что загрузка фризит игру)

Offline

#2762 05-12-2010 22:07

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

Похоже, что ошибка из за скрипта missile.cs, по крайней мере потестил значительную часть игры без него - вылетов "SCM Object limit breached" не было. Скрипт полезный, так что просто его выкидывать не хочется, написал для него отдельный загрузчик, чтоб активировался только когда игрок в гидре или хантере. Однако теперь, если загрузить скрипт(сесть в гидру например), потом загрузить какой-нибудь другой сейв, там скрипт запущен не будет - итого, вылет при выстреле из базуки. Тоже самое если опкодом 0ABA его завершать. Есть какой-нибудь способ выгружать его полностью?(подозреваю что ассемблерные вставки пишутся в память и остаются там до завершения игры)

Last edited by Sergey81 (05-12-2010 22:10)

Offline

#2763 05-12-2010 23:10

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Один вопрос

правильно подозреваешь...они изменяют структуру ехе в памяти, и он, ясен пень, до выхода из игры висит в памяти (:(:

попробуй найти решение проблемы, исходя из смысла этой ошибки...


GIMS developer

Offline

#2764 06-12-2010 00:05

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

Limit Adjuster пишет Exception At Address: 0x10F2CC3C
Но по этому адресу нули что со скриптом, что без него, так что незнаю что ещё можно сделать.
UPD.
Так, посмотрел таки исходник повнимательней, вылет можно вылечить к примеру так:

{$CLEO}
0000: NOP 
wait 0       
0A8C: write_memory 0x741A50 size 4 value 0xE8565308 virtual_protect 1           
0A8C: write_memory 0x741A54 size 4 value 0xFFFF6228 virtual_protect 1      
0A8C: write_memory 0x741A58 size 4 value 0x3320C483 virtual_protect 1           
0A8C: write_memory 0x59FE44 size 4 value 0x8B18244C virtual_protect 1      
0A8C: write_memory 0x59FE48 size 4 value 0x5F8D0478 virtual_protect 1           
0A8C: write_memory 0x59FE4C size 4 value 0x8B1A7410 virtual_protect 1    
0a93:

Останутся ли другие баги/глюки - незнаю )
UPD2. C адресами непонятки - некоторые меняются, некоторые дают вылет при изменении. Забил на это, пришлось сделать схему, если missile.s не загружен, а память была изменена, запускаем скрипт повторно, вне зависимости от нахождения в гидре/хантере.

{$CLEO .cs}
0000:
while true
wait 0
0AAA: 1@ = thread 'MISSILE' pointer

if //and
1@ == 0
then
0A8D: 0@ = read_memory 0x00741A54 size 4 virtual_protect 1
if
not 0@ == 0xFFFF6228
then 
0A92: create_custom_thread "missile.s"
{0A8C: write_memory 0x00429760 size 4 value 0xE8084289 virtual_protect 1
0A8C: write_memory 0x00429764 size 4 value 0x0030E518 virtual_protect 1
0A8C: write_memory 0x00429768 size 4 value 0x5F20C483 virtual_protect 1   }

{0A8C: write_memory 0x0042B458 size 4 value 0xE8085189 virtual_protect 1
0A8C: write_memory 0x0042B45C size 4 value 0x0030C820 virtual_protect 1
0A8C: write_memory 0x0042B460 size 4 value 0x5F20C483 virtual_protect 1 }     

{0A8C: write_memory 0x5A0B38 size 4 value 0xE8084289 virtual_protect 1
0A8C: write_memory 0x5A0B3C size 4 value 0x00197140 virtual_protect 1
0A8C: write_memory 0x5A0B40 size 4 value 0x5F20C483 virtual_protect 1}      

{0A8C: write_memory 0x00741A50 size 4 value 0xE8565308 virtual_protect 1           
0A8C: write_memory 0x00741A54 size 4 value 0xFFFF6228 virtual_protect 1      
0A8C: write_memory 0x00741A58 size 4 value 0x3320C483 virtual_protect 1   } 
end
if or
   Actor.DrivingVehicleType($PLAYER_ACTOR, #HUNTER)
   Actor.DrivingVehicleType($PLAYER_ACTOR, #HYDRA)
then
0A92: create_custom_thread "missile.s"
end

end


{if and
not 1@ == 0
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #HYDRA
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #HUNTER
then
0ABA: end_custom_thread_named 'MISSILE'
end             }


end

Last edited by Sergey81 (06-12-2010 06:48)

Offline

#2765 06-12-2010 15:15

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

В клео 3 есть нормальные опкоды для захвата актёров? Пробовал эти

073F: get_actor_in_sphere 0@ 1@ 2@ radius 20.0 with_pedtype_civilian 1 gang 1 criminal/prostitute 1 handle_as 9@
089E: get_actor_in_sphere 0@ 1@ 2@ radius 1.0 handle_as 9@ // versionB
08E5: get_actor_in_sphere 0@ 1@ 2@ radius 1.0 handle_as 9@
0A3E: unknown_get_actor_in_sphere 0@ 1@ 2@ radius 1.0 1.0 1.0 handle_as 9@
091C: get_actor_in_sphere 0@ 1@ 2@ radius 1.5 model -1 external_script_named "null" handle_as 9@

но некоторые не все типы захватывают, некоторые вообще не действуют.
Самый лучший это 08E5:, но его недостаток в том, что он не действует на актёров созданных скриптом.

Offline

#2766 06-12-2010 16:47

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

И кому понадобилось взламывать мой майл....пришлось и тут делать новый акк, мой старый ник BoPoH
У меня несколько опросов накопилось, связанных с анимациями в основном...
во всех опкодах, вопроизводяших анимации (0605, 0812, 088A, 0A1A) есть 2 параметра названных LockX и LockY, я предполагал, что если выставить их по 1, то центр тяжести игрока (актёра) будет двигаться вместе с анимацией, но заметил, что второй параметр (LockY) на это никак не влияет, а влияет на это только первый. Вопрос: что делает LockY???)))
Кстати, насчёт параметра типа float в этих опкодах (чаще всего равен 4.0), я заметил что если поставить слишком мало (например 1.0), то вырезается середина анимации, чем меньше этот параметр, тем больше вырезается...для чего это можно использовать? использовалось ли оно в игре как-то?)
И самый значимый, самый главный вопрос:

088A: actor $PLAYER_ACTOR perform_animation "ROLL" IFP_file "FREERUNNING" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 limT -1 unknown 0 unknown 1

в этом опкоде последний параметр отвечает за перемещение игрока в точку, где заканчивается анимация, т.е. если запустить анимацию (параметр LockX равен 0), камера остаётся на месте, но по окончании анимации игрока перемещает туда где закончилась анимация. Весьма похоже на анимацию перелазивания через забор, однако есть и отличия: если править анимацию перелазивания через забор, то можно заметить, что игрока в любом случае помещает в одно и то же место... и ещё, камера во время анимации двигается вместе с актёром, но судя по всему перемещается она искусственно...Вопрос: как сделать тоже самое? как перемещать камеру, так чтобы можно было вертеть мышкой?) если ответите хотя бы на последний вопрос, вы меня очень выручите! заранее спс

Last edited by Voron295 (06-12-2010 16:55)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#2767 06-12-2010 21:50

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

В клео 3 есть нормальные опкоды для захвата актёров? Пробовал эти

Лучший вариант для захвата актёров/транспорта/объектов - Interceptor, т.к. он не имеет ограничений по использованию (педтип, наличие флага уникальности и т.п.). На клео3 Interceptor реализуется с помощью отдельного куска кода (http://sannybuilder.com/forums/viewtopic.php?id=75), на клео4 - с помощью специальных опкодов (0AE1, 0AE2 или 0AE3).

он не действует на актёров созданных скриптом

Точнее сказать - не действует на актёров, имеющих флаг уникальности, т.к. можно снять флаг уникальности у актёра, созданного скриптом - и тогда он ничем не будет отличаться от рандомного педа, или наоборот, включить флаг уникальности у рандомного педа - тогда игра не удалит его ни при каких условиях.

Offline

#2768 06-12-2010 22:50

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Один вопрос

Флаг уникальности и References  - одно и то же?

Offline

#2769 06-12-2010 23:02

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Флаг уникальности и References  - одно и то же?

Да.

Offline

#2770 07-12-2010 00:54

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

Блин, оказалось что лимитную ошибку вызывает совсем не missile.cs. Что хреново, потому что я так и не могу понять откуда она появляется. Единственное, в этот раз она вылезла во время использования airsupport.cs от того же Ryosuke, так что попробую убрать его.

Offline

#2771 07-12-2010 08:09

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Den_spb wrote:

В клео 3 есть нормальные опкоды для захвата актёров? Пробовал эти

Лучший вариант для захвата актёров/транспорта/объектов - Interceptor, т.к. он не имеет ограничений по использованию (педтип, наличие флага уникальности и т.п.). На клео3 Interceptor реализуется с помощью отдельного куска кода (http://sannybuilder.com/forums/viewtopic.php?id=75), на клео4 - с помощью специальных опкодов (0AE1, 0AE2 или 0AE3).

он не действует на актёров созданных скриптом

Точнее сказать - не действует на актёров, имеющих флаг уникальности, т.к. можно снять флаг уникальности у актёра, созданного скриптом - и тогда он ничем не будет отличаться от рандомного педа, или наоборот, включить флаг уникальности у рандомного педа - тогда игра не удалит его ни при каких условиях.

К сожалению я не могу здесь использовать  Interceptor, он плоховлияет на цикл.
А снять флаг уникальности - как это сделать если код его записывает? Тем более в миссии, тогда вообще может вылететь.

А коды клео4 можно использовать в мэйне?

Offline

#2772 07-12-2010 12:23

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Один вопрос

конечно, можно...ну и вопросы задаёшь))


GIMS developer

Offline

#2773 07-12-2010 15:38

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

3Doomer wrote:

конечно, можно...ну и вопросы задаёшь))

Ну тогда получается что хотя делаешь мод только в мэйне, клео тоже придётся установить.

Offline

#2774 07-12-2010 18:34

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

конечно придётся, если коды от клео4 используешь.

Offline

#2775 07-12-2010 21:44

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

К сожалению я не могу здесь использовать  Interceptor, он плоховлияет на цикл.

Чем он влияет?

А снять флаг уникальности - как это сделать если код его записывает?

Не понял вопрос.

Offline

Board footer

Powered by FluxBB