#1176 11-08-2009 18:06

PIT
Registered: 08-09-2008
Posts: 224

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

CraZZZy-GameRRR:
Раскопай скрипт Yelmi: Фары и другое..

А теперь мой вопрос:
SAMoreVehicles- сия замечательная вещь увеличивает лимит машин, ну это вы наверно знаете, а как эти машины собственно добавлять, т.е. в какие файлы, что вообще добавлять, ведь я немного маппер и скриптер, а с машинами не работал(пока что) в ридми ничего не написано.


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

Offline

#1177 11-08-2009 18:43

Alien
Registered: 12-10-2008
Posts: 564

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

Проверка фар на включенность:

:IsCarLightsOn
0A97: 0@ = car 0@ struct
0@ += 0x4A8
0A8D: 0@ = read_memory 0@ size 1 virtual_protect 0
if or
    08B7:   test 0@ bit 3 
    08B7:   test 0@ bit 4 
then
    0485: return_true
else
    059A: return_false
end
0AB2: ret 0

Использование:

03C0: 0@ = actor $PLAYER_ACTOR car 
if
    0AB1: call_scm_func @IsCarLightsOn 1 car 0@
then
    //do something
end

*_____________________________________________*
Кто-нибудь знает статические адреса полицейских вертолетов? найти не могу.

Offline

#1178 12-08-2009 16:44

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

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

Спасибо, ALIEN!

Сначала скрипт всегда выдавал FALSE, но я нашёл список всех адресов памяти, прочитал статью про биты переменных. Вообщем, вместо

0@ += 0x4A8

написал

0@ += 1412

и

if or
    08B7:   test 0@ bit 3 
    08B7:   test 0@ bit 4 
...

заменил на

if
    08B7:   test 0@ bit 0 
...

Заработало!

И ещё один вопрос - можно-ли узнать обороты двигателя авто?

Offline

#1179 12-08-2009 16:49

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

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

вопрос не новый, да и ответ не изменился: НЕЛЬЗЯ

но можно рассчитать, исходя из:
+скорости
+передачи
+максимальной скорости
+общего количества передач

Last edited by 3Doomer (12-08-2009 16:50)


GIMS developer

Offline

#1180 12-08-2009 17:02

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

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

А теперь мой вопрос:
SAMoreVehicles- сия замечательная вещь увеличивает лимит машин, ну это вы наверно знаете, а как эти машины собственно добавлять, т.е. в какие файлы, что вообще добавлять, ведь я немного маппер и скриптер, а с машинами не работал(пока что) в ридми ничего не написано.

Попробую ответить...
Значит так. Добавление новых машин дело не особо хлопотное, но главное ничего не забыть и не перепутать. Для начала скажу что так же лучше установить себе плагин от Alexander'a San Andreas Vehicle Audio Editor Ultimate 1.3

Хочу добавить. Все текстовые файлы из папки дата удобней всего редактировать не в чем нибудь а в Sanny Builder'e. Попробуйте открыть какой либо файл в блокноте и в билдере, и тогда вы увидите разницу.

Первое что нужно сделать, так это закинуть файлы новой тачки в gta3.img
Потом открыть файл vehicles.ide который лежит в папке data.
Выберите среди всех строк нужную вам по типу машину(например если добавляете спорткар, то берите за основу строку Инфернуса, Туризмо, Супер Джи Ти или другоу спортивной машины. Аналогично и с другими классами автомобилей. Давайте добавим тачку, которая по характеристикам походит на Лэндсталкер.
Открываем файл vehicles.ide в блокноте и видим следующее:

#
# see default.ide for id ranges
#
# flags:
# 0x01 gets streamed out after 1 car is generated (for dumpsters, MrWoopy etc)
# 0x02 Don't use. Used by code internally.

cars
# Id,	Model name, 	Txd name,	Type 		HandlingId	Game name, 	Anims	Class		Frq	flags   Comprules
#															
# cars have two extra fields wheelmodelId and wheel scale
# planes have one extra field model id of low level of detail
[u][i][b]400,	landstal, 	landstal, 	car, 		LANDSTAL, 	LANDSTK, 	null,	normal, 	10,	0,	0,		-1, 0.768, 0.768,	0[/b][/i][/u]
401, 	bravura, 	bravura, 	car, 		BRAVURA, 	BRAVURA, 	null,	poorfamily,	10, 	0,	0,		-1, 0.74, 0.74,		0
402, 	buffalo, 	buffalo, 	car, 		BUFFALO, 	BUFFALO, 	null,	executive, 	5, 	0,	0,		-1, 0.7, 0.7,		0
403, 	linerun, 	linerun, 	car, 		LINERUN, 	LINERUN, 	truck,	worker,	 	6,	0,	0,		-1, 1.1, 1.1,		-1

Выделяем первую строку которая содержит в себе характеристики Лэндсталкера(она выделена)
и копируем её через Ctrl+C.
Далее прокручиваем файл вниз и видим следующее:

600,	picador,	picador,	car, 		PICADOR, 	PICADOR, 	null,	normal, 	10, 	0,	0,		-1, 0.7, 0.7,		0
601, 	swatvan, 	swatvan, 	car, 		SWATVAN, 	SWATVAN, 	van,	big,	 	4, 	0,	0,		-1, 1.366, 1.366,	-1
602,	alpha,		alpha,		car, 		ALPHA,		ALPHA, 		null,	executive, 	10, 	0,	0,		-1, 0.7, 0.7,		0
603, 	phoenix, 	phoenix, 	car, 		PHOENIX, 	PHOENIX, 	null,	normal,		7, 	0,	0,		-1, 0.7, 0.7,		0
604, 	glenshit, 	glenshit, 	car, 		GLENDALE, 	GLENSHI, 	null,	normal,		5, 	0,	0,		-1, 0.7, 0.7,		-1
605,	sadlshit,	sadlshit,	car, 		SADLER,	 	SADLSHI, 	null,	normal, 	10, 	0,	0,		-1, 0.7, 0.7,		-1
606, 	bagboxa, 	bagboxa, 	trailer,	BAGBOXA, 	BAGBOXA, 	null,	ignore,	 	4,	0,	0,		-1, 0.6, 0.6,		-1
607, 	bagboxb, 	bagboxb, 	trailer,	BAGBOXB, 	BAGBOXB, 	null,	ignore,	 	4,	0,	0,		-1, 0.6, 0.6,		-1
608, 	tugstair, 	tugstair, 	trailer,	STAIRS, 	TUGSTAI, 	null,	ignore,	 	4,	0,	0,		-1, 0.6, 0.6,		-1
609, 	boxburg, 	boxburg, 	car, 		BOXBURG,	BOXBURG, 	van,	worker, 	10, 	0,	0,		-1, 0.76, 0.76,		-1
610, 	farmtr1, 	farmtr1, 	trailer,	FARM_TR1, 	FARMTR1, 	null,	ignore,	 	4,	0,	0,		-1, 0.32, 0.32,		-1
611, 	utiltr1, 	utiltr1, 	trailer,	UTIL_TR1, 	UTILTR1, 	null,	ignore,	 	4,	0,	0,		-1, 0.68, 0.68,		-1

end

Между строкой начинающейся на '611,     utiltr1,     utiltr1,' и end вставляем скопированную ранее строку(Ctrl + V).
Первый шаг сделан. Теперь рассмотрим строку которую мы вставили.
Самое первое число этой строки - это id автомобиля. Изменим его на 612.
Второе и третье слова обозначают имя модели и текстуры машины соответственно. Эти имена НЕ ДОЛЖНЫ совпадать с именами заменяемой машины.
Четвертое слово обозначает тип машины. В нашем случае это CAR. Так его и оставим.
Пятое слово обозначает имя машины, которое будет использоваться в файле HANDLING.CFG. Поменяем его на NEWCAR.
Шестое слово обозначает имя машины в игре, то есть ключ с таким именем будет содержать в себе название машины. Этот ключ надо так же добавить в american.gxt. Или можно сделать хитрее, добавив нужный ключ с помощь GXT Hook и FXT Editor'a.
Остальные значения рассматривать не будем. Изменение оных может привести к нестабильности игры. Да и к тому же я и сам не зная что они меняют.
Теперь пришла пора редактировать файл HANDLING.CFG Тут можно пойти двумя путями. Редактировать сам файл через блокнот или попробовать использовать плагин Alexander'a  San Andreas Vehicle Handling Adder.
Но я представлю туториал основываясь на первом пути.
Открываем файл HANDLING.CFG и так же как в случае с файлом vehicles.ide находим и копируем строку, которая относится к нашему Лэндсталкеру. Потом можно прямо над этой строкойвставить скопированную. Например так:

; > THE DATA <
; ----- cars ---------------------------------
;
; name       mass     turnmass  drag   centreofmass  boy traction           transmission            brakes       steer  suspension       suslines        antidive   seat col  cost      mflags      hflags      lights
; A          B         C   	    D      F   G    H    I   J    K    L    	M N     O    P Q  R      S     T U    V    	a    b     c     d    e     f    g   		aa   ab   ac		af 			ag 			ah ai aj
LANDSTAL     1700.0    5008.3   2.5	   0.0 0.0 -0.3  85  0.75 0.85 0.5  	5 160.0 25.0 20.0 4 D 	6.2   0.60 0 35.0  	2.4  0.08  0.0   0.28 -0.14 0.5  0.25		0.27 0.23 25000 	20			500002		0  1	0
LANDSTAL     1700.0    5008.3   2.5	   0.0 0.0 -0.3  85  0.75 0.85 0.5  	5 160.0 25.0 20.0 4 D 	6.2   0.60 0 35.0  	2.4  0.08  0.0   0.28 -0.14 0.5  0.25		0.27 0.23 25000 	20			500002		0  1	0
BRAVURA      1300.0    2200.0   1.7    0.0 0.3  0.0  70  0.65 0.80 0.52  	5 160.0 15.0 10.0 F P 	08.0  0.80 0 30.0  	1.3  0.08  0.0   0.31 -0.15 0.57 0.0		0.26 0.50 9000  	1			1			0  0	0
BUFFALO      1500.0    4000.0   2.0    0.0 0.0 -0.1  85  0.7  0.9  0.5  	5 200.0 28.0 5.0  R P 	11.0  0.45 0 30.0  	1.2  0.12  0.0   0.28 -0.24 0.5  0.4		0.25 0.50 35000 	2800		10200000	1  1	0
LINERUN      38

Во вставленной строке заменяем слово LANDSTAL на то которое мы написали пятым по счету в файле vehicles.ide. В данном случае это NEWCAR.
Сохраняем изменения.
Теперь осталось только добавить новой машине озвучку через плагин Alexander'a и ключ с названием машины в american.gxt
Да, и я думаю не надо повторять что нужно перед редактированием любых файлов делать их резервные копии.
Удачи!


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#1181 12-08-2009 17:28

Alien
Registered: 12-10-2008
Posts: 564

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

CraZZZy-GameRRR wrote:

Сначала скрипт всегда выдавал FALSE

ага, 3 и 4 биты включаются скриптовым опкодом 067F. На него функция реагирует прекрасно, но вот игровой движок видимо включает фары через dword по смещению 0x584. Тогда функция должна быть переписана примерно так:

:IsCarLightsOn
0A97: 0@ = car 0@ struct
0@ += 0x4A8
0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
0@ += 0xDC
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
if or
    08B7:   test 1@ bit 3 
    08B7:   test 1@ bit 4 
    0@ <> 0
then
    0485: return_true
else
    059A: return_false
end
0AB2: ret 0

Offline

#1182 12-08-2009 19:12

PIT
Registered: 08-09-2008
Posts: 224

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

Gyr:
Это целая статья получилась, осталось только например вот тут выложить и всё wink
Статья теперь есть Создание машины
у меня тача не появляется, а если с клео в тачу посадить то вот: [img align=С]http://files.mail.ru/HCZSG4[/img]
это я раньше делал, [img align=С]http://files.mail.ru/GAMK1E[/img] это сейчас, почему так происходит?

Last edited by PIT (12-08-2009 19:29)


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

Offline

#1183 12-08-2009 20:58

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

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

Alien wrote:

ага, 3 и 4 биты включаются скриптовым опкодом 067F. На него функция реагирует прекрасно, но вот игровой движок видимо включает фары через dword по смещению 0x584. Тогда функция должна быть переписана примерно так:

Я что заметил, в предыдущей версии кода (с моими поправками) скрипт выдаёт TRUE, если горит правая фара (не обращая внимания на левую). Здесь же скрипт выдаёт TRUE когда фары должны гореть (даже если они разбиты). Мне как раз именно это и нужно.

И ещё. У тебя скрипт выдаёт TRUE, когда я торможу и у тачки загораются тормозные огни. Исправь пожалуйста.

-----------

3Doomer wrote:

вопрос не новый, да и ответ не изменился: НЕЛЬЗЯ

но можно рассчитать, исходя из:
+скорости
+передачи
+максимальной скорости
+общего количества передач

Ну я в принципе так и сделал, но результатом не очень доволен - уж много всяких нюансов учитывать надо. Например, жму на ручник и на газ - обороты должны быть большие, а они оказываются немногим выше нуля или при переключении передач стрелка тахометра должна более-менее плавно опускалась или поднималась и т.д. А ты, 3Doomer, случайно не знаешь, может где-нибудь есть скрипт нормального тахометра, а то я кроме Camera-Hack`а, в котором он есть, больше ничего не нашёл.

Last edited by CraZZZy-GameRRR (12-08-2009 21:52)

Offline

#1184 13-08-2009 04:55

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

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

не знаю(


GIMS developer

Offline

#1185 13-08-2009 07:22

Alien
Registered: 12-10-2008
Posts: 564

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

Короче, по фарам. Получается вот что:
dword по смещению 0x584 содержит массив битов, определяющих рендеринг огней на машинах:
бит 0 - правая фара,
бит 1 - левая фара,
биты 2 и 3 - стоп-сигналы. Они всегда вместе горят.
Может что-то еще определяет свечение огней такси на крыше.
Скриптовые биты совсем не нужны оказались. Чтобы проверить только состояние фар:

:IsCarLightsOn
0A97: 0@ = car 0@ struct
0@ += 0x584
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0                
if or
    08B7:   test 0@ bit 0 
    08B7:   test 0@ bit 1 
then
    0485: return_true
else
    059A: return_false
end
0AB2: ret 0

Есть еще темка, где чинились и разбивались эти фары.

Offline

#1186 13-08-2009 08:39

Daeman
From: }{абаровск
Registered: 08-05-2009
Posts: 70

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

Как узнать максимальное кол-во пассажирских мест машины? Можно и всех мест (вместе с водителем). Или здесь нужно узнавать тип машины? Если тип, то какие они бывают. Да и вообще, ответьте на последний вопрос тоже, пожалуйста smile

Offline

#1187 13-08-2009 09:34

PIT
Registered: 08-09-2008
Posts: 224

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

01EA: 60@ = car 59@ max_passengers
если с водителем то добавить
60@ += 1
всего свободных мест:
046D: 55@ = actor 36@ car_free_seats

Last edited by PIT (13-08-2009 09:36)


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

Offline

#1188 13-08-2009 16:17

Daeman
From: }{абаровск
Registered: 08-05-2009
Posts: 70

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

Ой, сорри, уже сам нашёл smile
Это я, что называется, "протупил": набрал в OST сначала passenger_seat, нужного не нашёл и тогда ввёл более широкое понятие - seat, но опять же, ничего подходящего не увидел. А вот про вариант passenger что-то не подумал smile Сейчас только на форуме нажал вместо какой-либо страницы "all" и стал читать весь топик сначала и нечаянно наткнулся на то, что нужно.
joy.gif
В любом случае, за внимание спасибо за внимание! handshake.gif

[---]
[large]Новый пост[/large]

[---]
А что насчёт типов машин (опкод 08EC)? Какими они бывают?
Возможно ответ, как всегда кроется прямо перед носом (в мониторе smile), например в файле cargrp или другом о тачах  smile

Offline

#1189 13-08-2009 16:30

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

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

Alien wrote:

Короче, по фарам. Получается вот что:
dword по смещению 0x584 содержит массив битов, определяющих рендеринг огней на машинах:
бит 0 - правая фара,
бит 1 - левая фара,
биты 2 и 3 - стоп-сигналы. Они всегда вместе горят.
Может что-то еще определяет свечение огней такси на крыше.
Скриптовые биты совсем не нужны оказались. Чтобы проверить только состояние фар:

:IsCarLightsOn
0A97: 0@ = car 0@ struct
0@ += 0x584
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0                
if or
    08B7:   test 0@ bit 0 
    08B7:   test 0@ bit 1 
then
    0485: return_true
else
    059A: return_false
end
0AB2: ret 0

Есть еще темка, где чинились и разбивались эти фары.

Спасибо, ALIEN, хотя всё вышеизложенное я уже на своём личном опыте понял.

Offline

#1190 13-08-2009 16:58

PIT
Registered: 08-09-2008
Posts: 224

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

А что насчёт типов машин (опкод 08EC)? Какими они бывают?
Возможно ответ, как всегда кроется прямо перед носом (в мониторе smile), например в файле cargrp или другом о тачах

я думаю, это типы машин из vehicles.ide
т.е. Car, Peren, trash, pony, mule(такое ощущение, что R делали домашних животных, а не машин smile ), heli ,moonbeam, taxi, hunter, boat ,bus,rhino и другие..
а возможно я ошибась blush


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

Offline

#1191 13-08-2009 18:01

Daeman
From: }{абаровск
Registered: 08-05-2009
Posts: 70

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

Покопавшись в мэйне игры, увидел, что задействованы в мэйне только 7 типов (0-6), но скорее всего, их больше. scratch_head.gif
Да, PIT, возможно ты ошибаешься. bs.gif Скорее всего mda1.gif mad.gif
А может и нет. pardon.gif Во всяком случае, надо бы ещё покопаться в такого рода файлах и посмотреть.

Offline

#1192 13-08-2009 18:08

PIT
Registered: 08-09-2008
Posts: 224

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

Над создать клео скрипт, щас создам и посмотрю, ведь у мня ещё CARspawner!


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

Offline

#1193 13-08-2009 18:11

PIT
Registered: 08-09-2008
Posts: 224

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

Вот про это придумал:
Да будет так сказал господень, и дал нам клео скрипты в раз smile
Все мотоциклы или многие с типом 8
не, сделаю по другому, с ини файлом.:crazy:

Last edited by PIT (13-08-2009 18:27)


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

Offline

#1194 13-08-2009 18:51

PIT
Registered: 08-09-2008
Posts: 224

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

Не, неполучится, quick opcode не устанавливается. mad


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

Offline

#1195 13-08-2009 21:12

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

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

Daeman wrote:

Покопавшись в мэйне игры, увидел, что задействованы в мэйне только 7 типов (0-6), но скорее всего, их больше. scratch_head.gif
Да, PIT, возможно ты ошибаешься. bs.gif Скорее всего mda1.gif mad.gif
А может и нет. pardon.gif Во всяком случае, надо бы ещё покопаться в такого рода файлах и посмотреть.

Как многэ эмоций...

например в файле cargrp

А что ты собственно хочешь найти в файле где совершенно другое.

Вот отрывок из файла vehicles.ide (просто случайная машина)

422, 	bobcat, 	bobcat, 	car, 		BOBCAT, 	BOBCAT, 	null,	worker, 	10, 	0,	0,		-1, 0.7, 0.7,		0

worker - тот самый "тип". Только вот не понятно что он меняет...

Offline

#1196 14-08-2009 06:25

PIT
Registered: 08-09-2008
Posts: 224

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

worker - тот самый "тип". Только вот не понятно что он меняет...

если ты прав и это действительно тот тип, то возможно он меняет, педов, которые на машине ездят.


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

Offline

#1197 14-08-2009 09:59

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

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

PIT wrote:

worker - тот самый "тип". Только вот не понятно что он меняет...

если ты прав и это действительно тот тип, то возможно он меняет, педов, которые на машине ездят.

А вот ещё, это определяет с какой скоростью будет ехать водитель (он ведь управляется в зависимости от типа поведения его транспорта), и как будет себя вести если врежется/упадёт/слетит с дороги.

Offline

#1198 14-08-2009 10:10

PIT
Registered: 08-09-2008
Posts: 224

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

Sw[ee]t wrote:
PIT wrote:

worker - тот самый "тип". Только вот не понятно что он меняет...

если ты прав и это действительно тот тип, то возможно он меняет, педов, которые на машине ездят.

А вот ещё, это определяет с какой скоростью будет ехать водитель (он ведь управляется в зависимости от типа поведения его транспорта), и как будет себя вести если врежется/упадёт/слетит с дороги.

это объясняет, почему у вертолетов -1, но почему у моцыков?


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

Offline

#1199 14-08-2009 11:59

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

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

Группа наверное одна и та же...

Offline

#1200 14-08-2009 12:35

PIT
Registered: 08-09-2008
Posts: 224

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

это могло бы пригодится, если бы мы точно знали
Sweet а у тебя есть Quick opcode?


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

Offline

Board footer

Powered by FluxBB