#1 26-06-2008 11:58

VcSaJen
Registered: 25-08-2006
Posts: 217

INCLUDE - файлы в Sanny Builder 3

Долго думал, куда - бы эту темку, решил в форум Sanny Builder.
Всем известно, что в Sanny Builder 3 есть директива $INCLUDE ($I) (подробности в справке SB3). Для чего она может применяться? Вот пример: для стандартных констант и для сборников scm функций. Это очень удобно: например, INTERCEPTOR можно сохранить как инклуд в папке SB и пользоваться им, всего-лишь набрав строчку {$I Interceptor.txt}. Я за сегодня сделал пример инклуд-файла в SB. Он добавляет стандартные константы кодов клавиш управления игры и клавиш virtual key codes (имена взяты из стд. констант Borland, так что тем, кто работал в Delphi или Borland C++ Builder будет привычно), а также несколько scm-функций для считывания из памяти некоторые данные об актёре. Пример вызова:

0AB1: call_scm_func @GetActorRunningstate 1 $Player_Actor 0@

.
Архив с инклудами прикреплён к сообщению.
Их надо скопировать в корневую папку Sanny Builder 3 или в папку SB3\data\sa. Для использования в начале скрипта нужно набрать {$I stdconsts.txt}, {$I ActorUtils.txt}, {$I CarUtils.txt}, {$I Math.txt}.

Last edited by VcSaJen (22-09-2008 08:15)


[small][/small]

Offline

#2 26-06-2008 13:14

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

Re: INCLUDE - файлы в Sanny Builder 3

Отлично!

Есть правда несколько замечаний.

1. Список констант и функции нужно выделить в отдельные файлы. Если я захочу использовать имена кнопок, то это приведет к тому что в скрипт добавятся и функции, которые, возможно мне не понадобятся. Если мне понадобятся функции, я просто подключу еще один файл.

2. В функциях остро необходима проверка после 0A96 на то, что 0@ > 0. Если я передам в функцию указатель на "левого" актера, эта проверка спасет от вылета. Мы же делаем универсальные функции, не так ли?

3. Сами функции я бы именовал со словом Get (GetActorState), а весь файл, например, PedUtils.txt. Но это имхо.

Сразу вспомнилось, что я хотел сделать, чтобы по нажатию Ctrl+Space в списке выводились константы или метки не только из текущего файла, но и из инклудов, но руки не дошли. Обещаю в ближайшем релизе исправить эту оплошность, тогда и функциями и константами будет проще пользоваться.

Да, и я предложил бы прикрепить файлы в архиве прямо здесь в первом сообщении, и по мере необходимости обновлять их (удалять старые, крепить новые).

Offline

#3 27-06-2008 04:55

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: INCLUDE - файлы в Sanny Builder 3

@Seemann - спасибо smile . Поправил в соответствии с замечаниями (файлы stdconsts.txt и ActorUtils.txt). Ещё я вчера забыл кнопку "0", это поправил. Добавил константы номеров оружия. Метку функции actor_Weapon_you_killed переименовал в GetActorLastDamageWeapon.

И кто-нибудь знает полный список номеров оружия? Ведь если например ездить на мотоцикле по встречной полосе и при столкновении CJ упал, то номер оружия, которым актёр повредился, будет 54 (нет в списке, там только оружие и ракеты). И ещё как можно по Pointer'у получить хэндл актёра, например по этому:

www.gtamodding.com wrote:

CPed +0x764 = [dword] Pointer to the ped that killed you

.


[small][/small]

Offline

#4 27-06-2008 05:36

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

Re: INCLUDE - файлы в Sanny Builder 3

Посмотри этот мод
http://sannybuilder.com/forums/viewtopi … 3712#p3712

Там есть комментарии к номерам оружия и то, как из указателя актера получить его хендл.

Offline

#5 27-06-2008 06:33

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: INCLUDE - файлы в Sanny Builder 3

Потестил, придумывая самые изощрённые способы погибнуть. Вот список

дополнительных номеров (остальные - номера оружия), который возвращает функция

@GetActorLastDamageWeapon

31 - Прострелен автоматом Seasparrow'а (не только M4)
37 - горит (не только при поджигании огнемётом)
38 - прострелен пулями Апача (Hunter) (не только minigun)
47 - ?
48 - ?
49 - сбила машина
50 - зарублен лопастями вертолёта
51 - взрыв
52 - пули полицейского вертолёта
53 - тонет
54 - упал

[---]
Добавление:
Посмотрю, спасибо.

Last edited by VcSaJen (27-06-2008 06:47)


[small][/small]

Offline

#6 27-06-2008 08:24

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

Re: INCLUDE - файлы в Sanny Builder 3

Я бы переименовал функцию в GetActorLastDamageID, ибо это не только weapon

В список констант можно вынести и всякие части тела, погоду и т.п. из хелпа.

Offline

#7 27-06-2008 11:02

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: INCLUDE - файлы в Sanny Builder 3

@Seemann -

В список констант можно вынести и всякие части тела, погоду и т.п. из хелпа.

Не очень часто используемые вынести в stdconsts.txt или в отдельный extconsts.txt?

Обновил инклуды, добавил функции Seemann (из той темы), и в stdconsts.txt добавил педтипы.
[---]
Float это 4, 8 или 10 байтов?

Last edited by VcSaJen (27-06-2008 12:15)


[small][/small]

Offline

#8 27-06-2008 13:36

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

Re: INCLUDE - файлы в Sanny Builder 3

Float - это 4 байта.

И я не вижу обновления в первом посте. Скачивается старая версия.

Offline

#9 28-06-2008 05:08

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: INCLUDE - файлы в Sanny Builder 3

Действительно...
Обновил. (+погода и части тела)


[small][/small]

Offline

#10 03-07-2008 07:17

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: INCLUDE - файлы в Sanny Builder 3

Обновил. (В CarUtils.txt добавил set массу и get иммунитеты, в stdconsts.txt добавил PED_EVENTS, добавил math.txt).


[small][/small]

Offline

#11 03-07-2008 09:32

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

Re: INCLUDE - файлы в Sanny Builder 3

Отмечу, что в Math.txt особой нужды в блоке @BuildStrStep нет. Цифру преобразовать в символ очень просто (любой символ ведь может быть представлен как число):

if 1@ > 9
then
  0A8E: 6@ = 1@ + 0x37
else
  0A8E: 6@ = 1@ + 0x30
end

так мы получим, например, из 1@ = 0, 6@=0x30 ('0'); из 1@=11, 6@=0x42 ('B').

Поэтому константы, BuildStrStep и некоторые переменные можно убрать.

после этого можно изменить выходную строку:

098b: 10@v = 10@v + 6@v

Кстати, сейчас, просматривая твой код, я понял, как можно передавать строки в функции и новые потоки - передавать ее как числа по частям (для коротких строк через 2 переменные, для длинных - через четыре):

1@s = 'BJ_0'
0AB1: call_scm_func @Pass 2 1@ 2@

...
:Pass
03E5: text_box 0@s // 0@s = 'BJ_0'
0AB2: ret 0

Offline

#12 03-07-2008 10:33

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: INCLUDE - файлы в Sanny Builder 3

Эвенты не все. У меня есть еще немножко выдранного из кода (пока не проверялось), названия оригинальные, от R*

// CEventVehicleDamage => 0
// CEventVehicleCollision => 1
// CEventPedCollisionWithPed => 2
// CEventPedCollisionWithPlayer => 3
// CEventPlayerCollisionWithPed => 4
// CEventBuildingCollision => 6
// CEventCopCarBeingStolen => 16
// CEventRevived => 18
// CEventPedToChase => 25
// CEventPedToFlee => 26
// CEventAttractor => 27
// CEventVehicleToSteal => 28
EVENT_GUN_AIMED_AT = 31             //Направленность ?прожектора? на игрока  -- направленность ЧЕГО?
// CEventScriptCommand => 32  // создается при назначении любго действия из скрипта
// CEventCarUndriveable => 45
EVENT_SHOT_FIRED_WHIZZED_BY = 49    //Актёра фотографируют -- вообще-то, это если мимо пролетела пуля
// CEventPlayerLockOnTarget => 78
// CEventPedOnCarRoof => 83
// CEventStuckInAir => 93

POTENTIAL_WALK - есть опасность наступить куда-то не туда (наткнуться на объект, войти в огонь и т.д.)

Со ScriptedAttractor (и вообще с механизмом аттракторов) я еще не разобрался, но описание точно неверно.

Last edited by listener (03-07-2008 10:50)

Offline

#13 04-07-2008 05:38

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: INCLUDE - файлы в Sanny Builder 3

@Seemann - О, спасибо!
@listener - Добавлю. Комментарии не мои, они из справки SB. Я уже заметил, что они мягко говоря, некорректны. (например, EVENT_ACQUAINTANCE_PED_DISLIKE был подписан как "Актёр в ярости и уже нападает"!)
[---]
Добавление:
Не согласен с EVENT #0: это EVENT_NONE.
Начинаю тестировать. Нашёл какой-то #64: случается, когда актёр падает от струи воды пожарной машины.

Last edited by VcSaJen (04-07-2008 07:23)


[small][/small]

Offline

#14 22-09-2008 08:15

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: INCLUDE - файлы в Sanny Builder 3

Вышло долгожданное обновление Include-скриптов. Нововведений немного: добавил дополнительные Virtual Key Codes, выкопанные в новой MSDN (кнопки препинания и "медиа" кнопки); ped events обновил; math.txt убрал из архива. Скачать можно из прикреплённого файла в первом посте.


[small][/small]

Offline

Board footer

Powered by FluxBB