#376 16-05-2008 10:00

Yarik
Registered: 22-02-2008
Posts: 173
Website

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

Вопроса три
1) Как сделать нормальный обзорный drive-by для CJ'я? ну типа как бандиты и другие стреляют? Знаю есть какой-то чит для такого, можно ли каким-то опкодом?

0501: set_player $PLAYER_CHAR driveby_mode 0
0563: set_player $PLAYER_CHAR driveby_ammo_to 78
Этих два для обычного drive-by...
2) Для вывода своего текста обязательно иметь установлено ShowTextBox.s и где его взять?
3) Использую 05E2: AS_actor 11@ kill_actor $PLAYER_ACTOR но иногда если СиДжей ударяет этого самого 11@ он (11@) садиться на землю, руки за голову, словно боится, потом вста1т и продолжает дерется. Как этого избежать?

Спасибо кто ответит smile

Last edited by Yarik (16-05-2008 10:02)

Offline

#377 20-05-2008 15:08

Yarik
Registered: 22-02-2008
Posts: 173
Website

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

) Как сделать нормальный обзорный drive-by для CJ'я? ну типа как бандиты и другие стреляют? Знаю есть какой-то чит для такого, можно ли каким-то опкодом?

0501: set_player $PLAYER_CHAR driveby_mode 0
0563: set_player $PLAYER_CHAR driveby_ammo_to 78
Этих два для обычного drive-by...
2) Для вывода своего текста обязательно иметь установлено ShowTextBox.s и где его взять?
3) Использую 05E2: AS_actor 11@ kill_actor $PLAYER_ACTOR но иногда если СиДжей ударяет этого самого 11@ он (11@) садиться на землю, руки за голову, словно боится, потом вста1т и продолжает дерется. Как этого избежать?

Ктото поможет? smile

Offline

#378 20-05-2008 15:23

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

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

Yarik wrote:

2) Для вывода своего текста обязательно иметь установлено ShowTextBox.s и где его взять?

Посмотри в базовом комплекте CLEO3. Там есть и этот скрипт, и пример его использования.
Использовать именно его необязательно, все зависит от стоящих перед тобой задач.

Offline

#379 20-05-2008 16:15

Yarik
Registered: 22-02-2008
Posts: 173
Website

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

Нашел, мне надо просто вывести свой текст в своём КЛЕО скрипте, в итоге должен получиться только один файл
Пробовал слепить код типа

// 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---------------
0A95: enable_thread_saving
0A9F: 0@ = current_thread_pointer
0@ += 16
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0@ -= -66
0@ += 4
wait 0
0AA9:   is_game_version_original
else_jump @NONAME_127
0AA5: call 5802976 4 pop 4 0 0 0 0@
0900: unknown_set_object "IF YOU SEE THIS MESSAGE, CLEO 3 WORKS NORMALLY!"
0A93: end_custom_thread

:NONAME_127
0AA5: call 5804976 4 pop 4 0 0 0 0@
0900: unknown_set_object "IF YOU SEE THIS MESSAGE, CLEO 3 WORKS NORMALLY!"
0A93: end_custom_thread
0000: NOP

не получилось blushкак бы его влепить?

Offline

#380 21-05-2008 02:25

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

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

Вместо -66 должна стоять метка, указывающая на текст (число динамическое и меняется в зависимости от того где находится опкод 0900 в скрипте).

// 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---------------
0A95: enable_thread_saving 
0A9F: 0@ = current_thread_pointer 
0@ += 16 
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 
0@ -= @text
0@ += 4 
wait 0 
0AA9:   is_game_version_original 
else_jump @NONAME_127 
0AA5: call 5802976 4 pop 4 0 0 0 0@
0A93: end_custom_thread 

:NONAME_127
0AA5: call 5804976 4 pop 4 0 0 0 0@ 
0A93: end_custom_thread

:text
0900: unknown_set_object "IF YOU SEE THIS MESSAGE, CLEO 3 WORKS NORMALLY!" 
0000:

Offline

#381 22-05-2008 09:36

Yarik
Registered: 22-02-2008
Posts: 173
Website

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

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---------------
0A95: enable_thread_saving 
0A9F: 0@ = current_thread_pointer 
0@ += 16 
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 
0@ -= -102 
0@ += 4 
wait 0 
0AA9:   is_game_version_original 
else_jump @NONAME_79 
0AA5: call 5802976 4 pop 4 0 0 0 0@ 
0A93: end_custom_thread 

:NONAME_79
0AA5: call 5804976 4 pop 4 0 0 0 0@ 
0A93: end_custom_thread 
0900: unknown_set_object "IF YOU SEE THIS MESSAGE, CLEO 3 WORKS NORMALLY!" 
0000: NOP

2) Как зделать чтоб впервые скомпилированый код занимал минимальное место , тоесть 1-2 Кб вместо 18. Такое ведь возможно?

Offline

#382 22-05-2008 09:54

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

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

При компиляции - декомпиляции код поменялся, и не выводяться первых три буквы. От чего так?

отними от 0@ 3, проблем то... (0@ содержит указатель на первый символ теста).

Как зделать чтоб впервые скомпилированый код занимал минимальное место , тоесть 1-2 Кб вместо 18. Такое ведь возможно?

Сними галочку с опции "Добавлять дополнительную информацию в SCM".

Offline

#383 22-05-2008 10:03

Yarik
Registered: 22-02-2008
Posts: 173
Website

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

отними от 0@ 3, проблем то... (0@ содержит указатель на первый символ теста).

Я так и делал, но при самой первой компиляции всё нормально
А при декомпиляции 0@ -= @text превращается в 0@ -= -102
Просто я это не понимаю, не вызовет ли это какнибудь проблем blush

Сними галочку с опции "Добавлять дополнительную информацию в SCM".

спс

Offline

#384 24-05-2008 14:43

svetka
Registered: 29-12-2006
Posts: 222

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

Скрипт на основе Interceptor.

Не пойму, почему я в этом варианте могу нанять сколько угодно людей, но согласно коду не могу распустить:

{$E}
0000:

wait 0 
Model.Load(#MICRO_UZI)
038B: load_requested_models 

:NONAME_13
wait 0 
  $ONMISSION == 0 
else_jump @NONAME_13 
if and
   Model.Available(#MICRO_UZI)
   Player.Defined($PLAYER_CHAR)
else_jump @NONAME_13  

:NONAME_62
wait 0 
00E1: key_Pressed 0 10 
else_jump @NONAME_62 
jump @NONAME_94 

:NONAME_94
wait 0  
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
3@ = 0.8 
gosub @AIC_GETACTOR 
   not 9@ == -1 
else_jump @NONAME_94 
0631: put_actor 9@ in_group $PLAYER_GROUP 
07FE: set_actor 9@ fighting_style_to 7 6 
01B2: give_actor 9@ weapon 28 ammo 6000 // Load the weapon model before using this 
Actor.WeaponAccuracy(9@) = 100
Actor.Health(9@) = 500
Actor.Armour(9@) = 200
Model.Destroy(#MICRO_UZI)
jump @NONAME_13

А в этом варианте могу нанять не более одного человека, хотя отпустить его и нанять нового могу:

{$E}
0000:

wait 0 
Model.Load(#MICRO_UZI)
038B: load_requested_models 

:NONAME_13
wait 0 
  $ONMISSION == 0 
else_jump @NONAME_13 
if and
   Model.Available(#MICRO_UZI)
   Player.Defined($PLAYER_CHAR)
else_jump @NONAME_13  

:NONAME_62
wait 0 
00E1: key_Pressed 0 10 
else_jump @NONAME_62 
jump @NONAME_94  

:NONAME_94
wait 0 
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
3@ = 0.8 
gosub @AIC_GETACTOR 
   not 9@ == -1 
else_jump @NONAME_94 
0631: put_actor 9@ in_group $PLAYER_GROUP 
07FE: set_actor 9@ fighting_style_to 7 6 
01B2: give_actor 9@ weapon 28 ammo 6000 // Load the weapon model before using this 
Actor.WeaponAccuracy(9@) = 100
Actor.Health(9@) = 500
Actor.Armour(9@) = 200
Model.Destroy(#MICRO_UZI)   
Actor.RemoveReferences(9@)

:NONAME_100
wait 0
00E1: key_Pressed 0 4
else_jump @NONAME_100
06C9: remove_actor 9@ from_group
jump @NONAME_13

Offline

#385 24-05-2008 23:58

Yarik
Registered: 22-02-2008
Posts: 173
Website

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

А если чтото типа этого?

{$E}
0000:

wait 0 
Model.Load(#MICRO_UZI)
038B: load_requested_models 

:NONAME_13
wait 0 
  $ONMISSION == 0 
else_jump @NONAME_13 
if and
   Model.Available(#MICRO_UZI)
   Player.Defined($PLAYER_CHAR)
else_jump @NONAME_13  

:NONAME_62
wait 0 
00E1: key_Pressed 0 10 
else_jump @NONAME_100
jump @NONAME_94  

:NONAME_94
wait 0 
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
3@ = 0.8 
gosub @AIC_GETACTOR 
   not 9@ == -1 
else_jump @NONAME_94 
0631: put_actor 9@ in_group $PLAYER_GROUP 
07FE: set_actor 9@ fighting_style_to 7 6 
01B2: give_actor 9@ weapon 28 ammo 6000 // Load the weapon model before using this 
Actor.WeaponAccuracy(9@) = 100
Actor.Health(9@) = 500
Actor.Armour(9@) = 200
Model.Destroy(#MICRO_UZI)   
Actor.RemoveReferences(9@)

:NONAME_100
wait 0
00E1: key_Pressed 0 4
else_jump @NONAME_62
06C9: remove_actor 9@ from_group
jump @NONAME_13

Offline

#386 25-05-2008 06:06

svetka
Registered: 29-12-2006
Posts: 222

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

Спасибо, Yarik smile Да, теперь можно набирать в группу большее число педов, но вот отпускается только один hmm smile

Offline

#387 25-05-2008 10:29

Yarik
Registered: 22-02-2008
Posts: 173
Website

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

А если последнюю строчку
jump @NONAME_13
заменить на
jump @NONAME_62

Offline

#388 25-05-2008 11:53

svetka
Registered: 29-12-2006
Posts: 222

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

Спасибо, Yarik ) Я его добила smile
Заменить надо на jump @NONAME_94

Offline

#389 26-05-2008 23:32

system
Registered: 13-05-2008
Posts: 39

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

А мне с автопилотом помогут?

Offline

#390 28-05-2008 10:38

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

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

Вот адреса с GTAGARAGE.COM

Cars
0xB6F980 is the direct pointer to the pool start.
0xB74494 contains a pointer.
This pointer:

+0 contains a pointer to the first element in the pool.
+4 contains a pointer to a byte map indicating which elements are in use.
+8 [DWord] is the maximum number of elements in the pool.
+12 [DWord] is the current number of elements in the pool.
Each vehicle object is 2584 (0xA18) bytes.

+140 [Float] Mass (kg) from handling.cfg


Мне надо записать в переменную вес машины опкодом
0A8D: 1@= read_memory <ADRESS> size <SIZE> virtual_protect 0
Что вводить вместо <ADRESS> и <SIZE>???
Как рассчитать нужный адрес, имея только начальный адрес(0xB6F980) и какие-то долбаные +140 и т.д.???
Буду очень признателен за помощь!


GIMS developer

Offline

#391 28-05-2008 11:05

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

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

0A97: 0@ = car 1@ struct // ищем начальный адрес машины 1@

0@ += 140 // прибавляем нужный оффсет (mass)

0A8C: write_memory 0@ size 4 value 2000.0 virtual_protect 0 // записываем новую массу 2000.0

Параметр Size в 0A8C зависит от размера поля в памяти игры, в которое мы пишем значение. В данном случае это Float, он имеет размер 4 байта. Если был бы Byte, значение size было бы 1, для Word - 2, для Dword - 4.

Offline

#392 28-05-2008 12:40

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

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

Seemann wrote:
0A97: 0@ = car 1@ struct // ищем начальный адрес машины 1@

0@ += 140 // прибавляем нужный оффсет (mass)

0A8C: write_memory 0@ size 4 value 2000.0 virtual_protect 0 // записываем новую массу 2000.0

Параметр Size в 0A8C зависит от размера поля в памяти игры, в которое мы пишем значение. В данном случае это Float, он имеет размер 4 байта. Если был бы Byte, значение size было бы 1, для Word - 2, для Dword - 4.

СПАСИБО СПАСИБО СПАСИБО!!!
Я хочу найти через адреса в памяти координаты фар машины, чтобы написать скрипт для моргания)))))


GIMS developer

Offline

#393 28-05-2008 12:59

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

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

Я хочу найти через адреса в памяти координаты фар машины, чтобы написать скрипт для моргания)))))

фары можно включать\выключать и опкодом.

2Seemann, скажи, пожалуйсто, какая версия IDA нужна, чтоб открыть файл(gta_sa_idb_20080407) отсюда _public.sannybuilder.com/gtasa_exe_idb/ ? скачал две разные версии IDA, а она файл не открывает, пишет что-то типа более новая версия нужна.

[large]Добавленно.[/large]
Спасибо, Seemann smile

Last edited by flashTrash (28-05-2008 14:22)

Offline

#394 28-05-2008 13:15

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

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

Версия 5.2.0.908 подойдет

Offline

#395 28-05-2008 15:04

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

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

flashTrash wrote:

Я хочу найти через адреса в памяти координаты фар машины, чтобы написать скрипт для моргания)))))

фары можно включать\выключать и опкодом.

Я имею ввиду поворотники))))

А не поможет ли великий Симан или Алекс найти коорды думисов фар?

Last edited by 3Doomer (28-05-2008 15:05)


GIMS developer

Offline

#396 29-05-2008 07:53

Centrino Duo
Registered: 08-05-2008
Posts: 99

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

оо да они великие.. почти живая легенда smile.. если найдут то йа оочень буду рад т.к довно искал способ сделать поворотник..

Offline

#397 29-05-2008 14:13

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

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

Centrino Duo wrote:

оо да они великие.. почти живая легенда smile.. если найдут то йа оочень буду рад т.к довно искал способ сделать поворотник..

Помоему уже весь гтамапс желает получить заветные цыфирки))))


GIMS developer

Offline

#398 30-05-2008 10:41

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

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

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

Offline

#399 31-05-2008 13:22

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

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

flashTrash wrote:

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

Или не тот адрес, или игра постоянно обновляет его...


GIMS developer

Offline

#400 31-05-2008 17:52

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

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

2Seemann. если я сделаю так:

3@ = 1
0A92: create_custom_thread "trash.cs" 3@

то в вышеозначеном потоке локальная переменная 3@ будет равна 1? И можно ли вообще так делать?
---------

Или не тот адрес

врятли...

или игра постоянно обновляет его...

наверное, ток зачем?
Ждём Seemann'а.

[large]Добавленно.[/large]
Seemann, спасибо!

Last edited by flashTrash (02-06-2008 13:38)

Offline

Board footer

Powered by FluxBB