#4301 18-08-2013 12:33

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

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

{$CLEO}
0A95: enable_thread_saving
#MINIGUN.Load()
038B: load_requested_models
032B: 0@ = create_weapon_pickup #MINIGUN type 15 ammo 9999 at -2014.4376 155.6977 27.6875
#MINIGUN.Destroy()
0A93: end_custom_thread

1) 038B принудительно загружает обьявленные модели. После его применения, проверять модели на загруженность не нужно.
2) В CLEO-скриптах нужно использовать 0A93: вместо end_thread.
3) Именовать скрипт не обязательно. CLEO именует скрипт названием cs-файла.
4) В CLEO-скриптах не желательно использовать свои глобальные переменные.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#4302 18-08-2013 13:05

ThePRO
From: Chisinau
Registered: 17-08-2013
Posts: 7

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

DK22Pac,
спасибо, все работает прекрасно smile и спасибо за полезные советы.


24691.png

Offline

#4303 18-08-2013 20:23

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

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

ThePRO wrote:

DK22Pac,
спасибо, все работает прекрасно smile и спасибо за полезные советы.

Ещё много полезных советов можно найти изучая справку (F12).


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

Offline

#4304 21-08-2013 16:41

MrGROX
From: Perspektiva St.
Registered: 21-08-2013
Posts: 2

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

Народ, не подскажете, как реализовать кое-что?
Нужно подсчитать количество зон, подконтрольных определённой банде, и записать в переменную. Каким образом это сделать? И ещё, если можно, как узнать, кому принадлежит определённая зона?

Offline

#4305 22-08-2013 18:46

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

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

@MrGROX - в памяти игры, начиная с 00BA1DF0 идет массив структур, 17 байтов каждая, в которых хранится информация о каждой зоне. Структура примерно следующая:

.data:00BA1DF0     ZoneExtraInfo       db ?                                    ; DATA XREF: sub_443B00+5Fr
.data:00BA1DF0                                                                 ; sub_443B00+13Br ...
.data:00BA1DF0                                                                 ; Size(17) * Count (380) = 6460
.data:00BA1DF0                                                                 ; +00  gang density[10]
.data:00BA1DF0                                                                 ; +10  wealth?
.data:00BA1DF0                                                                 ; +11  RGBA
.data:00BA1DF0                                                                 ; +15  pedgroup
.data:00BA1DF0                                                                 ; +16  unknown

Нужный(?) параметр это первое поле структуры +00  gang density[10]. Это десятибайтовый массив, в котором прописываются значения density для каждой банды в данной зоне. Эти значения устанавливаются опкодом

076C: set_zone 'ELCO1' gang 2 density_to 40

Подсчет примерно следующий. Начальный адрес для чтения равен 00BA1DF0 + ID нужной банды (есть в справке F12). Читаем 1 байт, сверяем с нужным значением (100(?)), если равно, то текущая зона принадлежит этой банде. Прибавляем к адресу 17 и повторяем все заново.

Offline

#4306 25-08-2013 22:26

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

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

Так, а у меня почти нубский вопрос...
Как организована загрузка игры с точки зрения текстур и использования памяти?
Вот текстуры (интересуют прежде всего текстуры карты) в игре бывают в .txd контейнерах и .img архивах... Про загрузку .img писали в теме по mpack'ам, если не ошибаюсь, что они сами не грузятся, а только их заголовки (содержание)... А как с .txd дела обстоят? Они динамически подгружаются в зависимости от того, где игрок? Или они (ссылки на них) постоянно где-то в памяти висят?

Я это к чему, собственно... Я вот тут вычитал неведомый мне до того способ... И возник у меня вопрос, а нельзя ли всю карту по наследству generic сделать (то есть сделать-то можно, но что с игрой и fps будет мне не понятно)...
И, встати, вообще, что дает этот самый generic?

upd. Надеюсь использование латиницы сделает вопрос понятнее... И ссылку позаметнее сделал...

Last edited by Yoda (26-08-2013 20:40)


Try not. Do or do not, there is no try.

Offline

#4307 26-08-2013 20:26

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

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

@Yoda, что за "дженерик", я что-то не понял?


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

Offline

#4308 28-08-2013 16:41

SHooZ
From: Львів
Registered: 05-06-2013
Posts: 51
Website

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

Voron295 wrote:

@Yoda, что за "дженерик", я что-то не понял?

GENERIC текстуры путь к которым прописан в default.dat

#TEXDICTION MODELS\GENERIC.TXD

.
Используются только в мапинге

Offline

#4309 29-08-2013 11:23

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

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

Ну, загрузка текстур происходит один раз в память. Интенсивное использование текстур не означает их постоянную загрузку. Они уже есть в памяти и к ним игра обращается в нужное время.


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

Offline

#4310 02-09-2013 13:17

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

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

Voron295 wrote:

Ну, загрузка текстур происходит один раз в память. Интенсивное использование текстур не означает их постоянную загрузку. Они уже есть в памяти и к ним игра обращается в нужное время.

Хм... Есть у меня сомнения по этому поводу... зачем тогда игре стрим функции карты, если всё уже в памяти? Ну да ладно...

У меня очередной нубский вопрос... Просто интересно стало, без каких-либо претензий или что-то такое... Вопрос к Seemann'у...
Я старый уже и других языков программирования, кроме бейзика, в школе не изучал... В советской школе в 80-х учили именно бейзик. Да и управляющие файлы ОС того времени - мс-дос писались на нём... Вот я на gtamodding.com вычитал, что прародителем SCM языка был бейзик. Так вот, в нём были командные слова и конструкции, которые сплошь и рядом встречаются в скриптинге для ГТА с использованием Санни... Но слова в нём изменены... Ну, например вместо GoTo используется Jump, или вместо On... используется If... Собственно вопрос: что это за язык лёг в основу Санни Билдера или почему слова изменены? Еще раз - нубский вопрос (гуманитарий я) из простого любопытства...


Try not. Do or do not, there is no try.

Offline

#4311 02-09-2013 14:08

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

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

@Yoda - Первоначально Sanny Builder был калькой с Mission Builder. Весь язык был заимствован оттуда без каких-либо изменений (для совместимости со старыми скриптами).

Язык Mission Builder - это один из вариаций бейсика. На это указывает много признаков. Почему был взят именно такой вариант, я не знаю, собственно я пришел в скриптинг в 2003 году, когда уже был VCMB. Видимо, бейсик показался наиболее подходящим по духу "опкодным" скриптам игры. Оригинальные скрипты авторства R*, кстати, не сильно отличаются от бейсика.

Отдельные различия в наименовании команд вряд ли существенны. Вообще в чистом "опкодном" варианте, скрипты скорее ближе к ассемблеру, где также есть jmp, jf.

Между прочим, Mission Builder использовал не собственную IDE, а модифицированную IDE Powerbasic.

В Sanny Builder v2 язык скриптов изменялся в направлении Pascal (Delphi). Сейчас это смешение Basic+Pascal.

Offline

#4312 02-09-2013 16:20

XEPOMAHT007
Registered: 05-06-2013
Posts: 21

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

Yoda wrote:

Я это к чему, собственно... Я вот тут вычитал неведомый мне до того способ... И возник у меня вопрос, а нельзя ли всю карту по наследству generic сделать (то есть сделать-то можно, но что с игрой и fps будет мне не понятно)...
И, встати, вообще, что дает этот самый generic?

Всю карту - можно. Можешь создать сотню TXD и прописать их как генерик. Все текстуры всё равно загрузятся единым массивом в память. Главное, чтобы на это памяти хватило. Это единственный минус. На стриминг особо не влияет (поиск текстуры в памяти компенсируется поиском TXD в IMG архиве, может быть поиск в оперативе будет происходить чуточку быстрее, х.з.).

Польза:

1. Не нужно лезть в IMG, его ребилдить при редактировании текстур.
2. Если карта содержит много повторяющихся текстур, то не нужно их дублировать в TXD.
3. Выигрыш в рендере всей карты целиком (при дальности свыше 800 у.е.)
4. Можно пихать всё что угодно - текстуры каров, педов, оружия и т.д. У меня карпак ЛСС на двиге ГТА3 полностью сидит на генерике (заняты все 70 слотов), никаких проблем с рендерингом не выявлено.

Offline

#4313 02-09-2013 20:22

Sergey81
Registered: 19-12-2008
Posts: 654

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

Не вопрос, но так, для справки: похоже что с драйверами 326.80(nvidia, beta) GTA SA не запускается совсем.

Offline

#4314 03-09-2013 09:19

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

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

@Sergey81 - это последняя версия?

Offline

#4315 03-09-2013 10:16

Sergey81
Registered: 19-12-2008
Posts: 654

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

@Seemann - Пока что да, в статусе beta, я для SC Blacklist ставил. Хотя с 326.41 тоже не могу запустить.

UPD. Ан нет, был не прав, чистая SA запустилась. А с модами не хочет. Надо разбираться в чем причина.

UPD2. Помогло удаление set файла. Видимо что-то поломалось.

Last edited by Sergey81 (03-09-2013 12:15)

Offline

#4316 04-09-2013 14:10

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

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

XEPOMAHT007 wrote:

На стриминг особо не влияет (поиск текстуры в памяти компенсируется поиском TXD в IMG архиве, может быть поиск в оперативе будет происходить чуточку быстрее, х.з.).

А вот это ты зря. Если сравнивать скорости жёсткого диска и оперативной памяти, то разница выйдет примерно в 30 раз. Пропускная способность SATA 2.0 - 300 МБайт/сек. Пропускная способность DDR3 - около 10 ГБайт/сек. Всё завязывается на количестве оперативной памяти и файле подкачки - абсолютно всё в оперативной памяти не хранится - то, что не используется, сливается в файл подкачки на жёстком диске. Когда слитое снова необходимо - оно подгружается обратно в оперативную память. Поэтому, чем меньше объём оперативной памяти, тем чаще компьютеру приходится обращаться к жёсткому диску, что существенно снижает скорость работы приложения - возникают зависания в "тяжёлых" играх и т.п.
Википедия о файле подкачки


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

Offline

#4317 04-09-2013 15:19

XEPOMAHT007
Registered: 05-06-2013
Posts: 21

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

Voron295 wrote:

Если сравнивать скорости жёсткого диска и оперативной памяти, то разница выйдет примерно в 30 раз.

Ты не оцениваешь всю систему в целом. Во первых есть ещё видеокарта и ЦП, ОС с дровами и прочей всячиной. Во вторых указанные тобой теоретические значения скоростей интерфейсов на всю катушку используются крайне редко по понятным причинам. В третьих стриминг закорочен в экзэшнике под минимальную конфигурацию ПК, на топовом ПК и середнячке GTA3 будет работать одинаково (например известны случаи, когда GTA3 устанавливалась на крутой игровой комп и безбожно на нём тормозила).

Last edited by XEPOMAHT007 (04-09-2013 15:19)

Offline

#4318 04-09-2013 17:14

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

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

XEPOMAHT007 wrote:

Во вторых указанные тобой теоретические значения скоростей интерфейсов на всю катушку используются крайне редко по понятным причинам.

Даже несмотря на это, скорость работы оперативной памяти значительно превышает скорость работы жёсткого диска. При чём, практические скорости жёсткого диска уменьшаются сильнее, нежели практические скорости оперативной памяти. Кстати, часть из замедления работы с файловой системой составляет её фрагментация.

XEPOMAHT007 wrote:

Во первых есть ещё видеокарта и ЦП, ОС с дровами и прочей всячиной.

Скорости, на которых способны работать ЦП и видеокарта, значительно превышают скорость работы того же жёсткого диска.

XEPOMAHT007 wrote:

В третьих стриминг закорочен в экзэшнике под минимальную конфигурацию ПК, на топовом ПК и середнячке GTA3 будет работать одинаково (например известны случаи, когда GTA3 устанавливалась на крутой игровой комп и безбожно на нём тормозила).

Я тебе указал на твою неправоту относительно скорости поиска в оперативной памяти и скорости поиска в файловой системе, а не на то, что игра оптимизирована как-то не так.


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

Offline

#4319 05-09-2013 02:38

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

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

@Seemann Спасибо.

@Voron295, @XEPOMAHT007
"Вы ещё подеритесь, горячие финские парни..."

Короче, если я правильно понимаю, лично на моём компе (P4, 2GHz, 1,25Gb Ram, NVidia 6200 512 Mb, WinXp SP3) всё это не имеет смысла... Даже перенос всех повторяющихся текстур карты San Andreas'а (а речь шла именно о нём) в один общий txd'шник прироста особого не даст... Скорее наоборот, ибо стриму в .exe'шнике быстрее подгружать картинки из разных txd'шников в img архиве, чем загружать оперативу одним generic... Единственное преимущество, которое я вижу, - экономия нескольких мегобайт места на жёстком диске, но с парой терабайтных винтов - это не имеет смысла...
Вопрос был вызван моим желанием сделать чистую и вычещенную от мусора установку SA. С удалением всех ненужных файлов, контейнеров, архивов и прочей лабуды от консольной версии, а также оптимизацией остающихся и нужных для игры файлов... Теперь этот вопрос закрыт. Спасибо.

Last edited by Yoda (05-09-2013 02:51)


Try not. Do or do not, there is no try.

Offline

#4320 05-09-2013 09:27

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

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

Подброшу немного дров...  wink

А зачем нужна вобще установка, если не учитывает конфигурацию компа (т.е. оптимизирует для него) для данной игры (компиляция промежду прочим позволяет учитывать только особенности данного проца (и то, я не уверен, что конкретного, а только данной серии/поколения)) ?

_А так-то все игры гта портативны...

Last edited by reute70 (05-09-2013 09:28)

Offline

#4321 13-09-2013 09:54

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

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

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

1. Можно ли отключить звуки, хранящиеся в определённом архиве? Хочу отключить выкрики CJ-я, которые звучат, когда он дерётся, выкидывает человека из машины и т.п. Все эти звуки находятся в audio\SFX\ SPC_PA. Внутри архива есть ещё несколько архивов - Bank_001, Bank_002 и т.д. до Bank_020. В них и находятся звуковые файлы с голосом CJ-я. Так вот, есть ли способ заглушить весь SPC_PA либо только некоторые Bank?

2. Можно ли убрать тень у определённого актёра и у игрока?

3. Можно ли у созданного актёра заменить модель на другую?

Заранее спасибо.

Offline

#4322 13-09-2013 17:10

Portal25
From: Tambov
Registered: 25-06-2011
Posts: 52
Website

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

Каким опкодом или что изменить в main.scm Вайс Сити. Чтобы, убрать барьеры и возобновить траффик ? До первой миссии у Диаза на острофе Старфиш.


OgYkX.png

Offline

#4323 13-09-2013 17:47

Sergey81
Registered: 19-12-2008
Posts: 654

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

За правильность не ручаюсь, но так я делал в моде бензина под iOS:

:open_mainland
057C: (unknown) 0 
016C: restart_if_wasted at -822.7 1157.9 10.1 4.0 
016D: restart_if_busted at -659.5 760.4 10.5 133.0 
016C: restart_if_wasted at -885.2 -470.4 12.1 276.0 
016D: restart_if_busted at -871.9 -682.3 10.2 328.1 
022A: remove_forbidden_for_peds_cube 189.8 230.3 0.0 248.0 258.5 30.0 
022A: remove_forbidden_for_peds_cube -38.0 84.3 0.0 -102.3 95.1 30.0 
01E7: remove_forbidden_for_cars_cube 189.8 230.3 0.0 248.0 258.5 30.0 
01E7: remove_forbidden_for_cars_cube -38.0 84.3 0.0 -102.3 95.1 30.0 
01E7: remove_forbidden_for_cars_cube 175.0 236.1 0.0 161.0 242.4 30.0 
01E7: remove_forbidden_for_cars_cube 149.8 231.4 0.0 136.0 235.3 30.0 
01E7: remove_forbidden_for_cars_cube 63.4 188.6 0.0 49.4 189.7 30.0 
Object.Destroy($2183)
022A: remove_forbidden_for_peds_cube -214.6 -948.8 0.0 -258.7 -920.6 30.0 
01E7: remove_forbidden_for_cars_cube -214.6 -948.8 0.0 -258.7 -920.6 30.0 
Object.Destroy($2184)
022A: remove_forbidden_for_peds_cube -787.8 -519.4 10.0 -657.5 -475.2 20.0 
01E7: remove_forbidden_for_cars_cube -787.8 -519.4 10.0 -657.5 -475.2 20.0 
Object.Destroy($2180)
$2180 = Object.Init(2444, -712.524, -489.428, 12.549)
Object.RemoveFromMissionCleanupList($2180)
Object.Destroy($2185)
022A: remove_forbidden_for_peds_cube -99.8 1041.9 0.0 -129.0 1097.4 30.0 
01E7: remove_forbidden_for_cars_cube -99.8 1041.9 0.0 -129.0 1097.4 30.0 
Object.Destroy($2182)
057D: play_bridge_status_mp3 1 
014C: set_parked_car_generator $2245 cars_to_generate_to 101 
014C: set_parked_car_generator $2268 cars_to_generate_to 101 
014C: set_parked_car_generator $2243 cars_to_generate_to 101 
014C: set_parked_car_generator $2244 cars_to_generate_to 101
022A: remove_forbidden_for_peds_cube -230.0 -464.5 10.0 56.85 -459.8 20.0 
01E7: remove_forbidden_for_cars_cube -230.0 -464.5 10.0 165.85 -459.8 20.0 
Object.Destroy($2181)
return

Offline

#4324 14-09-2013 09:34

arrd_0x
Registered: 14-09-2013
Posts: 2

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

@d88
по поводу первого пункта:
поищи опкод mute_actor и в качестве аргумента укажи игрока
помню, что такой есть, в SB среди наименованных должен быть

Last edited by arrd_0x (14-09-2013 09:34)

Offline

#4325 14-09-2013 10:35

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

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

arrd_0x wrote:

@d88
по поводу первого пункта:
поищи опкод mute_actor и в качестве аргумента укажи игрока
помню, что такой есть, в SB среди наименованных должен быть

Спасибо, мне это тоже пригодится, но в данном случае я хотел отключить только звуки из файла SPC_PA. Крики боли хранятся в другом файле, и мне надо, чтоб они остались, а этот код их тоже заглушает.

Offline

Board footer

Powered by FluxBB