#1876 14-02-2010 18:38

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

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

Специальных опкодов наверно нет. Но существуют опкоды вычисления синуса, косинуса и определения  Z_angle актеров, так что решение задачи сложностей представлять не должно.

Last edited by Den_spb (14-02-2010 18:47)

Offline

#1877 14-02-2010 23:08

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

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

Подскажите пожалуйста, почему при создании короны опкодом 024F она исчезает во время движения автомобиля, а после остановки появляется снова?

Offline

#1878 14-02-2010 23:20

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

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

видимо, во время движения цикл, рисующий корону, перестаёт работать...


GIMS developer

Offline

#1879 15-02-2010 09:47

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

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

CraZZZy-GameRRR wrote:

Подскажите пожалуйста, почему при создании короны опкодом 024F она исчезает во время движения автомобиля, а после остановки появляется снова?

Корона существует короткое время, поэтому она будет видна, если только создать её в одних и тех же координатах несколько раз.

Offline

#1880 21-02-2010 21:27

DUB
Registered: 15-07-2008
Posts: 13

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

ребят, пожскажите, можно ли заставить СА работать на нескольких ядрах процессора?
пасибо заранее)

Offline

#1881 22-02-2010 01:01

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

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

Мои вопросы:
1.Как узнать номер экстры (variation) у машины 0@ ?
2.Можно ли в IDA посмотреть, из каких функций вызывается определённая функция?

Offline

#1882 22-02-2010 05:48

GTASA
Registered: 13-09-2008
Posts: 476

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

Эй, ребята! Какими адресами памяти можно менять анимацию? Например, мне нужно прыжок игрока заменить на другую анимацию, бег на пешеходный и т.д. То есть вместо одной анимации игрока ставить какую-то другую.

Offline

#1883 22-02-2010 11:52

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

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

Могу просто ткнуть пальцем в небо:

#  CPed +0x47C = Указатель на структуру анимации
# CPed +0x4DF = Статус проигрывания текущей анимации:

    * 0 = ничего
    * 61 = начало/остановка
    * 62 = идёт цикл 
CPed +0x15C = Некторые статусы анимации:

    * 0 = прыгает от земли
    * 61 = ударяет
    * 102 = остановился
    * 154 = спринт (бежит с ускорением)
    * 205 = бежит

Offline

#1884 23-02-2010 04:44

GTASA
Registered: 13-09-2008
Posts: 476

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

Нет, я это видел на гтамоддинг и это не то.

/////////

Можно с помощью клео удалять или хотя бы перемещать статические объекты на карте? При этом не обязательно изменять Data/Maps. Главное чтобы если был скрипт, то и карта другая.

Offline

#1885 23-02-2010 15:11

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

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

GTASA wrote:

Главное чтобы если был скрипт, то и карта другая.

О_о?
Типа подзагрузка карты из-под скрипта? Если да - такое тебе не позволит движок;
Если простая смена местоположения уже созданных объектов - то не знаю.

Last edited by Sw[ee]t (23-02-2010 15:13)

Offline

#1886 23-02-2010 16:06

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

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

Такая вот проблема. Если игрок во время клео миссии взорвётся в машине, игра вылетает. Что с этим делать?

Offline

#1887 23-02-2010 16:48

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

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

Вопрос некорректен. Не хватает входных данных.

Offline

#1888 23-02-2010 18:14

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

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

Ну какие тут данные? Проверка на смерть игрока. Если он погиб, переходет прыжок на завершение миссии. Всё работает, если актёр не в машине. Но если он взорвался в машине (причём в любой, хоть созданной скриптом, хоть взятой из игры) - моментально вылетает.

Offline

#1889 23-02-2010 19:35

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

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

Сначала проверь - существует ли игрок, а потом - погиб или нет. Объединять эти проверки не следует.

Offline

#1890 23-02-2010 20:02

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Если речь идет о миссии то проверка на смерть там только одна
0112:   wasted_or_busted // mission only
Она ставится вначале скрипта
Прерывание после смерти игрока получает первая gosub, после нее ставится эта проверка и если да то следует миссия провалена.


I know everything and nothing...

Offline

#1891 23-02-2010 22:16

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

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

Задача такая - создать и подключить к игре ASI плагин.

Вообщем, делаю так:
1) Создал функцию.
2) Запихнул её в DLL-файл.
3) Сохранил в папке с GTA SA с расширением ASI.

Как теперь подключить функцию к моему скрипту. Я так понимаю опкодом 0AA7? Если да, то как вычислиь адрес функции?

Пожалуйста, помогите!

Offline

#1892 24-02-2010 02:06

Seemann
Registered: 07-08-2006
Posts: 2,155

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

@CraZZZy-GameRRR - глянь эту тему
http://sannybuilder.com/forums/viewtopic.php?id=140
там есть примеры использования функций длл в скриптах

Offline

#1893 24-02-2010 12:56

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

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

Спасибо.

Offline

#1894 27-02-2010 21:47

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

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

Как вычисляется адрес строки в скрипте?

Offline

#1895 01-03-2010 21:27

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

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

Никто случайно не знает смещение в структуре машины, по которому записан Z-угол поворота экстра-части автомобиля (например, лестница у firela) ?

Last edited by Den_spb (01-03-2010 21:31)

Offline

#1896 03-03-2010 12:13

GTASA
Registered: 13-09-2008
Posts: 476

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

Скажите пожалуйста, как создать таймер? Только визуальный на экране, как в миссиях(30-29-28-27...4-3-2-1 и т.д.). А то что-то не нашел нигде.

Offline

#1897 03-03-2010 15:09

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

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

В main, насколько знаю, используются опкоды set_status_text и set_timer. В cleo нужно использовать альтернативные функции: http://sannybuilder.com/forums/viewtopic.php?id=255

Offline

#1898 04-03-2010 20:10

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

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

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

Offline

#1899 07-03-2010 13:52

GTASA
Registered: 13-09-2008
Posts: 476

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

Простой скрипт. Менты на радаре. Но вылетает! И нигде не могу найти ошибку.

{$CLEO}
wait 0

:START
wait 0
if
0256:   player $PLAYER_CHAR defined
jf @START
if
0ADC: test_cheat "COPS"
jf @START
00BC: show_text_highpriority GXT 'CHEAT1' time 3000 flag 0  // œ¦-koš ak¦œ¢œpo¢a®
wait 2000

:COPS
wait 0

if
0ADC: test_cheat "COPSOFF"
then
wait 1000
jump @START
end 
 
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
3@ = 900.0
gosub @AIC_GETACTOR2
if
056D:   actor 9@ defined
then  
0187: 11@ = create_marker_above_actor 9@ 
018B: set_marker 11@ radar_mode 2
0165: set_marker 11@ color_to 1 
end

00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
3@ = 900.0
gosub @AIC_GETVEHICLE1
if
056E:   car 9@ defined
then  
0186: 10@ = create_marker_above_car 9@ 
018B: set_marker 10@ radar_mode 2 
0165: set_marker 10@ color_to 2 
end

jump @COPS




////////////////////////////////////////////////////////////
 



:AIC_GETVEHICLE 
0006: 16@ = 305869
0006: 5@ = @AIC_TESTVEHICLEHANDLE
0006: 6@ = 2584
0006: 8@ = -1
0256:   player $PLAYER_CHAR defined
004D: jump_if_false @AIC_STARTSEARCH 
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @AIC_STARTSEARCH
03C0: 8@ = actor $PLAYER_ACTOR car
0002: jump @AIC_STARTSEARCH

:AIC_STARTSEARCH
008B: 16@ = &0(16@,1i) // CPool*
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 8 )^ = 7@  // CPool.Size
0A8D: 11@ = read_memory 16@ size 4 virtual_protect 0        // CPool.pUnits
0006: 9@ = -1 
0006: 10@ = 0

:AIC_SEARCHLOOPMAIN
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 11@ + 20 )^ = 4@  // xyz*
8039:   not  4@ == 0 
004D: jump_if_false @AIC_SEARCHLOOPNEXT 
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 48 )^ = 12@  // x
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 52 )^ = 13@  // y
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 56 )^ = 14@  // z
050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 
0025:   3@ > 15@ // (float) 
004D: jump_if_false @AIC_SEARCHLOOPNEXT 
0085: 9@ = 10@ // (int) // counter
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 4 )^ = 4@ // CPool.flags
005A: 4@ += 9@ // (int) 
0A8D: 4@ = read_memory 4@ size 1 virtual_protect 0 
0012: 9@ *= 256 
005A: 9@ += 4@ // (int)
0002: jump 5@

:AIC_TESTVEHICLEHANDLE
056E:   is 9@ valid_vehicle_handle
004D: jump_if_false @AIC_NOHANDLE
00D6: if
003B:   8@ == 9@ // (int) 
004D: jump_if_false @AIC_NEWSEARCHRADIUS
0002: jump @AIC_NOHANDLE

:AIC_NOHANDLE
0006: 9@ = -1 
0002: jump @AIC_SEARCHLOOPNEXT 

:AIC_NEWSEARCHRADIUS
046C: 30@ = car 9@ driver
if
056D:   actor 30@ defined 
jf @AIC_NOHANDLE1
089F: get_actor 30@ pedtype_to 21@
if
21@ == 6 
jf @AIC_NOHANDLE1
if or
02F2:   actor 30@ model == #LAPD1 
02F2:   actor 30@ model == #SFPD1
02F2:   actor 30@ model == #LVPD1 
02F2:   actor 30@ model == #CSHER
02F2:   actor 30@ model == #LAPDM1
02F2:   actor 30@ model == #SWAT
02F2:   actor 30@ model == #FBI
02F2:   actor 30@ model == #ARMY
02F2:   actor 30@ model == #DSHER
jf @AIC_NOHANDLE1
if
056C:   actor 30@ driving_police_car 
jf @AIC_NOHANDLE1
0051: return    
0085: 3@ = 15@ 

:AIC_SEARCHLOOPNEXT 
005A: 11@ += 6@ // (int) 
000A: 10@ += 1 
002D:   10@ >= 7@ // (int)
004D: jump_if_false @AIC_SEARCHLOOPMAIN
0051: return 

:AIC_READMEMOFFSET
0A8E: 0@ = 0@ + 1@ // int
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0AB2: ret 1 0@






:AIC_GETVEHICLE1 
0006: 16@ = 305869
0006: 5@ = @AIC_TESTVEHICLEHANDLE1
0006: 6@ = 2584
0006: 8@ = -1
0256:   player $PLAYER_CHAR defined
004D: jump_if_false @AIC_STARTSEARCH1 
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @AIC_STARTSEARCH1
03C0: 8@ = actor $PLAYER_ACTOR car
0002: jump @AIC_STARTSEARCH1

:AIC_STARTSEARCH1
008B: 16@ = &0(16@,1i) // CPool*
0AB1: call_scm_func @AIC_READMEMOFFSET1 2 ( 16@ + 8 )^ = 7@  // CPool.Size
0A8D: 11@ = read_memory 16@ size 4 virtual_protect 0        // CPool.pUnits
0006: 9@ = -1 
0006: 10@ = 0

:AIC_SEARCHLOOPMAIN1
0AB1: call_scm_func @AIC_READMEMOFFSET1 2 ( 11@ + 20 )^ = 4@  // xyz*
8039:   not  4@ == 0 
004D: jump_if_false @AIC_SEARCHLOOPNEXT1 
0AB1: call_scm_func @AIC_READMEMOFFSET1 2 ( 4@ + 48 )^ = 12@  // x
0AB1: call_scm_func @AIC_READMEMOFFSET1 2 ( 4@ + 52 )^ = 13@  // y
0AB1: call_scm_func @AIC_READMEMOFFSET1 2 ( 4@ + 56 )^ = 14@  // z
050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 
0025:   3@ > 15@ // (float) 
004D: jump_if_false @AIC_SEARCHLOOPNEXT1 
0085: 9@ = 10@ // (int) // counter
0AB1: call_scm_func @AIC_READMEMOFFSET1 2 ( 16@ + 4 )^ = 4@ // CPool.flags
005A: 4@ += 9@ // (int) 
0A8D: 4@ = read_memory 4@ size 1 virtual_protect 0 
0012: 9@ *= 256 
005A: 9@ += 4@ // (int)
0002: jump 5@

:AIC_TESTVEHICLEHANDLE1
056E:   is 9@ valid_vehicle_handle
004D: jump_if_false @AIC_NOHANDLE1
00D6: if
003B:   8@ == 9@ // (int) 
004D: jump_if_false @AIC_NEWSEARCHRADIUS1
0002: jump @AIC_NOHANDLE1

:AIC_NOHANDLE1
0006: 9@ = -1 
0002: jump @AIC_SEARCHLOOPNEXT1 

:AIC_NEWSEARCHRADIUS1
046C: 30@ = car 9@ driver
if
056D:   actor 30@ defined 
jf @AIC_NOHANDLE1
089F: get_actor 30@ pedtype_to 21@
if
21@ == 6 
jf @AIC_NOHANDLE1
if or
02F2:   actor 30@ model == #LAPD1 
02F2:   actor 30@ model == #SFPD1
02F2:   actor 30@ model == #LVPD1 
02F2:   actor 30@ model == #CSHER
02F2:   actor 30@ model == #LAPDM1
02F2:   actor 30@ model == #SWAT
02F2:   actor 30@ model == #FBI
02F2:   actor 30@ model == #ARMY
02F2:   actor 30@ model == #DSHER
jf @AIC_NOHANDLE1
if
056C:   actor 30@ driving_police_car 
jf @AIC_NOHANDLE1
0051: return    
0085: 3@ = 15@ 

:AIC_SEARCHLOOPNEXT1 
005A: 11@ += 6@ // (int) 
000A: 10@ += 1 
002D:   10@ >= 7@ // (int)
004D: jump_if_false @AIC_SEARCHLOOPMAIN1
0051: return 

:AIC_READMEMOFFSET1
0A8E: 0@ = 0@ + 1@ // int
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0AB2: ret 1 0@

///////////////////////////////////////
:AIC_GETACTOR2
0006: 16@ = 305868
0006: 5@ = @AIC_TESTACTORHANDLE2
0006: 6@ = 1988
0002: jump @AIC_STARTSEARCH2 

:AIC_STARTSEARCH2
008B: 16@ = &0(16@,1i) // CPool*
0AB1: call_scm_func @AIC_READMEMOFFSET2 2 ( 16@ + 8 )^ = 7@  // CPool.Size
0A8D: 11@ = read_memory 16@ size 4 virtual_protect 0        // CPool.pUnits
0006: 9@ = -1 
0006: 10@ = 0

:AIC_SEARCHLOOPMAIN2
0AB1: call_scm_func @AIC_READMEMOFFSET2 2 ( 11@ + 20 )^ = 4@  // xyz*
8039:   not  4@ == 0 
004D: jump_if_false @AIC_SEARCHLOOPNEXT2 
0AB1: call_scm_func @AIC_READMEMOFFSET2 2 ( 4@ + 48 )^ = 12@  // x
0AB1: call_scm_func @AIC_READMEMOFFSET2 2 ( 4@ + 52 )^ = 13@  // y
0AB1: call_scm_func @AIC_READMEMOFFSET2 2 ( 4@ + 56 )^ = 14@  // z
050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 
0025:   3@ > 15@ // (float) 
004D: jump_if_false @AIC_SEARCHLOOPNEXT2 
0085: 9@ = 10@ // (int) // counter
0AB1: call_scm_func @AIC_READMEMOFFSET2 2 ( 16@ + 4 )^ = 4@ // CPool.flags
005A: 4@ += 9@ // (int) 
0A8D: 4@ = read_memory 4@ size 1 virtual_protect 0 
0012: 9@ *= 256 
005A: 9@ += 4@ // (int)
0002: jump 5@

:AIC_TESTACTORHANDLE2
056D:   is 9@ valid_actor_handle
004D: jump_if_false @AIC_NOHANDLE2 
00D6: if or
003C:   $PLAYER_ACTOR == 9@ // (int) 
0118:   actor 9@ dead 
004D: jump_if_false @AIC_NEWSEARCHRADIUS2
0002: jump @AIC_NOHANDLE2

:AIC_NOHANDLE2
0006: 9@ = -1 
0002: jump @AIC_SEARCHLOOPNEXT2 

:AIC_NEWSEARCHRADIUS2
089F: get_actor 9@ pedtype_to 22@
if
22@ == 6 
jf @AIC_NOHANDLE2
if or
02F2:   actor 9@ model == #LAPD1 
02F2:   actor 9@ model == #SFPD1
02F2:   actor 9@ model == #LVPD1 
02F2:   actor 9@ model == #CSHER
02F2:   actor 9@ model == #LAPDM1
02F2:   actor 9@ model == #SWAT
02F2:   actor 9@ model == #FBI
02F2:   actor 9@ model == #ARMY
02F2:   actor 9@ model == #DSHER
jf @AIC_NOHANDLE2
0051: return 
0085: 3@ = 15@ 

:AIC_SEARCHLOOPNEXT2 
005A: 11@ += 6@ // (int) 
000A: 10@ += 1 
002D:   10@ >= 7@ // (int)
004D: jump_if_false @AIC_SEARCHLOOPMAIN2
0051: return 

:AIC_READMEMOFFSET2
0A8E: 0@ = 0@ + 1@ // int
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0AB2: ret 1 0@

Offline

#1900 09-03-2010 15:55

PIT
Registered: 08-09-2008
Posts: 224

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

Не могу понять, почему не работает sad

:Spc_Flow
thread 'Spc_Flow'
wait 0
if
player.Defined($PLAYER_CHAR)
jf @Spc_Flow
if
0AB0:  key_pressed 90
jf @Spc_Flow_1
if
$SPEC_PERC > 1.0
jf @Spc_Flow
015D: set_gamespeed 0.5 
$SPEC_PERC -= 1.0
wait 100
:Spc_flow_1
wait 0
if
8AB0: not key_pressed 90
jf @Spc_Flow
015D: set_gamespeed 1.0
jump @Spc_Flow

100 постов - 27 августа;

Offline

Board footer

Powered by FluxBB