Последние сообщения

Страницы: 1 [2] 3 4 ... 10
11
Моды / Re: Прочие моды
« Последний ответ от aleks926820 Декабря 15, 2025, 10:48:57 am »
Архив со старыми (и очень старыми) модами для трехи и вайса.
Что-то может из архива реально найти на просторах интернета, но некоторые моды уже не найти (например с почившего в прошлом году гтамапс - щас жалею о том, что в далеком 2011 году не выкачал весь гтамапс).
https://disk.yandex.ru/d/N1NFQhgRG01gIQ
Почти 15 лет назад скачивал это всё добро, в архив постарался упаковать то, что посчитал уже действительно редким.
12
Моды / Прочие моды
« Последний ответ от Shagg_E Декабря 13, 2025, 01:48:00 pm »
Аналог темы со скриптами https://forum.gtabuilder.ru/index.php?topic=465.0
Но для прочих мелких модов, которые вы можете посчитать полезными для постинга сюда.

Просьба не захламлять сервер сайта мусором, пожалуйста. Постите только годноту
13
Моды / Прочие моды
« Последний ответ от GHOST Декабря 06, 2025, 07:06:39 pm »
14
Справочная информация / Re: Различные скрипты, программы и т.д
« Последний ответ от aleks926820 Ноября 20, 2025, 09:39:37 pm »
Open Formats I/O с возможностью массового импорта OFT ODR OBN OBD ONV.
Переделанная версия от 4 марта 2021 года. Дописывал кнопки под свои нужды.
В соответствующих разделах меню OFIO добавляются кнопки массового импорта OFT ODR OBN OBD ONV (Batch Import).
Также небольшое изменение в ofio.ext.tools.ms
- функция OF IV Drawable Mat to Standard Mat заменена на функцию OF IV Drawable Mat to GTA_MTL (см. посты выше).
Оригинальный скриптпак OFIO - (C) Alexander Blade, MIXAZZZ
15
Справочная информация / Re: Различные скрипты, программы и т.д
« Последний ответ от aleks926820 Ноября 20, 2025, 07:59:31 pm »
Небольшое исправление в скриптах Кама, с помощью которого можно импортировать "неправильные" DFF, сделанные в ZModeler2, а также заблокированные .dff файлы.
Напоминаю: ТОЛЬКО ДЛЯ СТАНДАРТНЫХ СКРИПТОВ КАМА.
В папке /scripts/GTA_TOOLS открываем GTA_DFF_IO.MS блокнотом.
Находим строки:
if DFFinInfo == undefined then fileIn (scriptspath+"\\GTA_Tools\\CharDFFimp.mse") quiet:true
else if DFFinInfo() != 051215 then fileIn (scriptspath+"\\GTA_Tools\\CharDFFimp.mse") quiet:true
Заменяем на:
if DFFinInfo == undefined then fileIn (scriptspath+"\\GTA_Tools\\CharDFFimp.ms") quiet:true
else if DFFinInfo() != 051215 then fileIn (scriptspath+"\\GTA_Tools\\CharDFFimp.ms") quiet:true
Сохраняем файл.
Далее скачиваем приложенный CharDFFimp.ms и кладем в папку с GTA_DFF_IO.MS.
16
Справочная информация / Re: Различные скрипты, программы и т.д
« Последний ответ от Shagg_E Ноября 18, 2025, 07:55:19 am »
Вау, крутяк!
Надо будет затестить, как будет время.
Спасибо
17
Справочная информация / Re: Различные скрипты, программы и т.д
« Последний ответ от aleks926820 Ноября 17, 2025, 04:42:44 pm »
Код для массового импорта .dff моделей из папки.
Код для СТАНДАРТНЫХ скриптов Кама!
В папке /scripts/GTA_TOOLS открываем GTA_DFF_IO.MS блокнотом.
Находим стандартную функцию импорта:
on imp pressed do (
fname = getopenfilename caption:"Read DFF File" types:"dff File (*.dff)|*.dff|"
if fname != undefined then (
f = fopen fname "rb"
if f == undefined then ( Messagebox "Can't open the file!" title:"I/O Error" )
else (
no_clump = checkClump f
if no_clump == undefined then
messagebox "This DFF is locked !\nThe author of this model do not allow you to modify it.\n\nPlease contact the author for the permission." title:"Import Failed"
else if no_clump.count == 0 then messagebox "Not a Void DFF file!" title:"File Format Error"
else (
if no_clump.count == 1 then (
texEx = case textype.state of (
1: ".tga"
2: ".bmp"
3: ".png"
)--end case
DFFin f ISc.value texEx dummysize autoskin.checked aboutRoll.sdtl.checked (getFilenameFile fname)
useclump.enabled = false
whichone.enabled = false
) else (
fclose f
whichone.range = [1,no_clump.count,1]
whichone.enabled = true
useclump.enabled = true
txt = "This DFF has " + no_clump.count as string + " Clumps.\nPlease choose one to Import!"
Messagebox  txt title: ""
)
)--end if/else no_clump
)--end if/else f
)
fclose f
gc()
)--end on imp
ЗАМЕНЯЕМ функцию на эту:
on imp pressed do (
main_prog.value=0
if massimp.checked == false then (
global showdetail = true
fname = getopenfilename caption:"Read DFF File" types:"dff File (*.dff)|*.dff|"
if fname != undefined then (
f = fopen fname "rb"
if f == undefined then ( Messagebox "Can't open the file!" title:"I/O Error" )
else (
no_clump = checkClump f
if no_clump == undefined then (
-- messagebox "This DFF is locked !\nThe author of this model do not allow you to modify it.\n\nPlease contact the author for the permission." title:"Import Failed"
-- else if no_clump.count == 0 then messagebox "Not a Void DFF file!" title:"File Format Error"
)
else (
if no_clump.count == 1 then (
texEx = case textype.state of (
1: ".dds"
2: ".bmp"
3: ".png"
)--end case
DFFin f ISc.value texEx dummysize autoskin.checked aboutRoll.sdtl.checked (getFilenameFile fname)
useclump.enabled = false
whichone.enabled = false
) else (
fclose f
whichone.range = [1,no_clump.count,1]
whichone.enabled = true
useclump.enabled = true
txt = "This DFF has " + no_clump.count as string + " Clumps.\nPlease choose one to Import!"
Messagebox  txt title: ""
)
)--end if/else no_clump
)--end if/else f
)
fclose f
gc()
) --massimp checked
else (
impdir = getSavePath caption:"select import path"
if impdir !=undefined then (
impdir = impdir+"/*.dff"
dfffiles = getFiles impdir
for fname in dfffiles do (
main_prog.value = 100.0*(finditem dfffiles fname)/dfffiles.count
gc()
f = fopen fname "rb"
                                                        format "<<Import DFF % ... !>>\n" fname
no_clump = checkClump f
if no_clump == undefined then (
-- messagebox "This DFF is locked !\nThe author of this model do not allow you to modify it.\n\nPlease contact the author for the permission." title:"Import Failed"
-- else if no_clump.count == 0 then messagebox "Not a Void DFF file!" title:"File Format Error"
)
else (
if no_clump.count == 1 then (
texEx = case textype.state of (
1: ".dds"
2: ".bmp"
3: ".png"
)--end case
DFFin f ISc.value texEx dummysize autoskin.checked aboutRoll.sdtl.checked (getFilenameFile fname)
                                                useclump.enabled = false
whichone.enabled = false
) else (
fclose f
whichone.range = [1,no_clump.count,1]
whichone.enabled = true
useclump.enabled = true
txt = "This DFF has " + no_clump.count as string + " Clumps.\nPlease choose one to Import!"
Messagebox  txt title: ""
)
)--end if/else no_clump
)
)
else (Messagebox "Can't open the file!" title:"I/O Error")
)
main_prog.value=0
)--end on imp
Находим строку:
button imp "Import DFF" width:120 height:30 align:#leftПосле нее вставляем строки:
checkbox massimp "Mass Import via Folder" align:#left
progressbar main_prog color: orange

Сохраняем файл.
При импортировании ставим галочку "Mass Import via Folder" и выбираем папку с .dff файлами.
Примечание: мультикламп модели не смогут импортироваться.
18
Справочная информация / Re: Различные скрипты, программы и т.д
« Последний ответ от aleks926820 Ноября 17, 2025, 04:21:51 pm »
Код для массового экспорта DFF файлов из сцены. Примечание: следующий код экспортирует ВСЕ модели из сцены без исключения. Код для экспорта может применяться как для одиночных мешей (например модели карты), так и для составных (например модели авто).
Код для СТАНДАРТНЫХ скриптов Кама!
В папке /scripts/GTA_TOOLS открываем GTA_DFF_IO.MS блокнотом.
В самом начале файла вставляем вот эту функцию:
    function selectHierarchy =
    (for p in selection do
    (if p.children != undefined do (selectmore p.children)))
Далее находим строку:
button exp "Export DFF" width:120 height:30 tooltip:"Only selected objects will export" align:#centerПосле нее вставляем следующую строку:
button exp2 "Export ALL" width:120 height:30 tooltip:"ALL the objects of the scene will be exported" align:#centerДалее находим строку:
on exp pressed do (Выше строки вставляем следующий код:
on exp2 pressed do (
colcase = 0
if noCOL.checked == true then colcase = 1
if Vparts.checked == true then colcase = 2
dir = getSavePath caption:"Select Export Path"
if dir!=undefined do (
RootArray = #()
for i in objects do (if i.parent==undefined then append RootArray i)
for i in RootArray do (
gc()
select i
root_name = i.name+".dff"
selectHierarchy()
RootObj = checkRoot $selection
if eVC.checked == true then        ver = 0x0C02FFFF            --VC Version
                                if eGTA3.checked == true then    ver = 0x0800FFFF            --Standard GTA3 Version
                                if eSA.checked == true then        ver = 0x1803FFFF            --SA Version
bkupRootTran = RootObj.transform
expscale = RootObj.scale * ExSc.value
RootObj.transform = matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0]
fname = dir + "\\" + root_name
f = fopen fname "wb"
DFFout f $selection MMC.checked TUV.checked CPV.checked NOR.checked expscale ver SAColBase colcase lockdff.checked
fclose f
                                format "<<FILE % Exported>>\n" root_name
)
)
)
Сохраняем файл.
При экспорте указать папку, куда будут сохраняться .dff файлы.
Для быстрого экспорта моделей рекомендуется использовать 3ds max 2024.
P.S. Код использовал для экспорта моделей карты Liberty City из GTA IV.
19
Справочная информация / Re: Различные скрипты, программы и т.д
« Последний ответ от aleks926820 Ноября 17, 2025, 04:02:08 pm »
Хочу поделиться некоторыми полезными функциями и скриптами для 3dsmax.
Заранее скажу: использовать АККУРАТНО НА СВОЙ СТРАХ И РИСК. Я не несу ответственности за испорченные модели, текстуры, папки и файлы на ваших компьютерах.
Код преобразования материалов коллизии GTA IV в формат Vice City (может использоваться и для GTA 3).
Примечание: код работоспособен только для мешей, которые были импортированы пакетом скриптов OFIO! В GIMS используется другой материал коллизии.
ofio_col_id= #(
#(0),
#(1, 2, 121),
#(3, 4, 5, 6, 7, 8, 30, 33),
#(9, 10, 11, 12),
#(13, 14),
#(15),
#(16),
#(17, 18, 134, 144),
#(19, 20, 21, 22, 23, 24, 25, 26, 122, 133, 143, 155),
#(27, 28),
#(29, 31),
#(32),
#(34),
#(35, 39),
#(36),
#(37, 38, 152, 153),
#(40),
#(41),
#(42, 43),
#(44),
#(45),
#(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 139, 140, 141, 142, 145, 146, 147, 148),
#(73, 74, 75, 76, 77, 78, 149, 151),
#(79),
#(80),
#(81, 126, 127, 128, 129, 135, 136, 137, 138),
#(82, 83, 84, 85, 123, 125, 150),
#(86),
#(87, 88, 89, 90, 132, 154),
#(91),
#(92),
#(93, 124),
#(94),
#(95),
#(96, 97, 98),
#(99, 100, 107, 108, 109, 110, 113, 117),
#(101, 102, 104, 105, 114, 115, 116, 118, 119, 120),
#(103, 106),
#(111, 112),
#(130),
#(131)
)
for i in geometry do (
local surfaceID = 0
local objmat = undefined
if classof i.material == multimaterial then objmat = i.material
if classof i.material == OF_IV_Collision then objmat = #(i.material)
tempmat = copy objmat
for j=1 to objmat.count do (
tempmat[j] = GTA_COLSurface()
for k=1 to ofio_col_id.count do (
mtlgroup = finditem ofio_col_id[k] objmat[j].mtlID
if mtlgroup>0 then
surfaceID = case k of (
1: 0
2: 0
3: 5
4: 26
5: 5
6: 5
7: 1
8: 5
9: 22
10: 10
11: 3
12: 18
13: 4
14: 25
15: 4
16: 2
17: 25
18: 25
19: 22
20: 22
21: 22
22: 11
23: 7
24: 6
25: 21
26: 7
27: 21
28: 10
29: 10
30: 0
31: 0
32: 0
33: 0
34: 0
35: 19
36: 0
37: 0
38: 0
39: 0
40: 7
41: 7
)
)
tempmat[j].surface = surfaceID
)
i.material = tempmat
update i
 )
Следующий код объединяет в иерархии все меши в один, а также удаляет лишние даммисы. Примечание: данный код использовался мной при конвертации моделей из GTA IV в Vice City.
    function selectHierarchy = -- эта рекурсивная функция была позаимствована на просторах интернета.
    (for p in selection do
    (if p.children != undefined do (selectmore p.children)))

RootArray = #()
for i in objects do (if i.parent==undefined then append RootArray i)
for i in RootArray do (
print i.name
select i
selectHierarchy()
deselect i
--$.parent = i
selobjs = $
dummys = #()
Sgeometry = #()
for j in selobjs do (
if superclassof j == helper then (append dummys j)
if superclassof j == geometryclass then (append Sgeometry j)
)
deselect $
select dummys
if $!=undefined then delete $
if Sgeometry.count<2 then continue
select Sgeometry
$.pivot = i.pivot
objs= $
macros.run "Modifier Stack" "Convert_to_Poly"
for j=1 to objs.count do (if objs[2]!=undefined then polyop.attach objs[2] objs[1])
)

Эта функция "обрезает" имена текстур на диске до 30 символов (ограничение в GTA3\Vice City, если в имени текстуры 31 символ и более, то в игре текстура отображаться не будет - будет просто белая текстура), находящихся в папках. Это использовалось мной при конвертации текстур из GTA IV в Vice City (при последующей сборке с помощью MagicTXD).

imgsrc = getdirectories "C:/RAGE_RESOURCE/*" --это путь к папке, где лежат распакованные .wtd файлы
for j in imgsrc do (
j=j+"/*"
 files=getfiles j
for k in files do (
ext=""
ext = getFilenameType k
fname = getFilenameFile k
if fname.count>30 then (fname = substring fname 1 30; format "% %\n" (getfilenamefile k) fname; renamefile k ((getFilenamePath k)+fname+ext))
-- например текстура C:/RAGE_RESOURCE/my_txd/city_winterrroom_decals_snow_normal.png переименовывается в C:/RAGE_RESOURCE/my_txd/city_winterrroom_decals_snow_.png. В корневой директории папки RAGE_RESOURCE должны лежать папки с текстурами в любом формате .png .dds и тд.
)
)   

Следующий код исправляет и обрезает имена корневых дамми (ВНИМАНИЕ: для моделей, ИМПОРТИРОВАННЫХ пакетом скриптов OFIO!). Это использовалось мной при конвертации моделей из GTA IV в Vice City.
--эта строка удаляет первые 4 символа, идентифицирующие тип модели (odr_; oft_) из имени файла.
for i in helpers do (if i.parent==undefined then (s=i.name; s = substring s 4 s.count; i.name=s) )
--эта строка сокращает имя объекта до 19 символов. Как правило имена объектов в GTA IV не превышают 20 символов. Можно конечно переписать строку иначе.
for i in helpers do (if i.parent==undefined and i.name.count > 19 then (i.name = replace i.name 19 1 ""; print i.name) )

--следующий блок кода заменяет частицу _l0 _l1 и тд на _k0 _k1 и тд, поскольку использование частиц _l0 _l1 в имени объектов вызывает вылет при приближении к объекту. Немного индусский код, но тем не менее.
for i in objects do (
 if findstring i.name "_l0"!=undefined then  s1=replace i.name (findstring i.name "_l0") 3 "_k0"
 if findstring i.name "_l1"!=undefined then  s1=replace i.name (findstring i.name "_l1") 3 "_k1"
 if findstring i.name "_l2"!=undefined then  s1=replace i.name (findstring i.name "_l2") 3 "_k2"
 if findstring i.name "_l3"!=undefined then  s1=replace i.name (findstring i.name "_l3") 3 "_k3"
 if findstring i.name "_l4"!=undefined then  s1=replace i.name (findstring i.name "_l4") 3 "_k4"
 if findstring i.name "_l5"!=undefined then  s1=replace i.name (findstring i.name "_l5") 3 "_k5"
 if findstring i.name "_l6"!=undefined then  s1=replace i.name (findstring i.name "_l6") 3 "_k6"
 if findstring i.name "_l7"!=undefined then  s1=replace i.name (findstring i.name "_l7") 3 "_k7"
 if findstring i.name "_l8"!=undefined then  s1=replace i.name (findstring i.name "_l8") 3 "_k8"
 if findstring i.name "_l9"!=undefined then  s1=replace i.name (findstring i.name "_l9") 3 "_k9"
 if s1!=undefined then i.name=s1
)
Следующий код удаляет меши коллизии (которые есть внутри .oft файлов, то бишь являются частью .oft (.wft) моделей).
arr=#()
for i in geometry do (
 mtl = i.material
 if classof mtl == iv_col_material then append arr i
  if classof mtl == Multimaterial then (if classof mtl[1] == iv_col_material then append arr i)
 
)
select arr
delete $

Функция конвертации OFIO материала мешей в GTA_MTL ("Камовский" GTA материал). Конвертирует материалы и обрезает имена текстур до 30 символов.
Примечание: функция использовалась совместно с пакетом OFIO от 04/03/2021 года. С другими версиями OFIO функция может не заработать.
fn ConvertMTL_Drawable_to_GTAMTL obj = (
local mtl = obj.material
if mtl != undefined then (
if classof mtl == Multimaterial then (
mtl.name = obj.name
for i = 1 to mtl.count do (
g_mtl = mtl[i].getInfo();
g_texnam = getfilenamefile g_mtl[2];
s_mtl = GTA_Mtl();
s_mtl.color = mtl[i].delegate.diffusecolor --если цвета материалов в конечном итоге некорректны, то эту строку стоит закомментировать!
s_mtl.colormap = bitmapTexture();
g_texnam = substring g_texnam 1 30;
s_mtl.colormap.filename = g_texnam + ".dds";
s_mtl.name = g_texnam;
mtl[i] = s_mtl;
)-- for
-- if multi
) else if classof mtl == iv_drawable_material then (
g_mtl = mtl.getInfo();
g_texnam = getfilenamefile g_mtl[2];
s_mtl = GTA_Mtl();
s_mtl.color = mtl.delegate.diffusecolor --если цвета материалов в конечном итоге некорректны, то эту строку стоит закомментировать!
s_mtl.colormap = bitmapTexture();
g_texnam = substring g_texnam 1 30;
s_mtl.colormap.filename = g_texnam + ".dds";
s_mtl.name = g_texnam;
obj.material = s_mtl;
) --if mtl multimaterial
) -- if mtl undefined
update obj;
)-- func

--функцию можно вызвать следующим образом:
for i in geometry do ConvertMTL_Drawable_to_GTAMTL  i
20
GTA San Andreas Mod - Rya's Fixes 1.0


В аттаче. За ссылку спасибо pylasen
Страницы: 1 [2] 3 4 ... 10