Перейти к содержанию
Друзья, важная новость! ×

Вопрос - ответ


Рекомендуемые сообщения

  • Ответов 4,2 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Добрый день, у меня вопрос: в МЕ возможно задать конкретную высоту обьекта(например 10 метров над или под землёй) чтобы он там был в любом случае, я смотрел на главную базу СМаринов в кампании ДК, там интересно всё сделано и я так тоже хочу сделать но зданий не хватает.

И ещё такой вопрос:

Главная база тау меняет модель после постройки определённого здания, а гл. база сестёр бытвы меняет свой внешний вид только после аддона. можно ли както сделать смену вида базы сестёр после постройки определённого здания?

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

Изменено пользователем saska
Ссылка на комментарий
Поделиться на другие сайты

Добрый день, у меня вопрос: в МЕ возможно задать конкретную высоту обьекта(например 10 метров над или под землёй) чтобы он там был в любом случае, я смотрел на главную базу СМаринов в кампании ДК, там интересно всё сделано и я так тоже хочу сделать но зданий не хватает.

Я понял надо зажать правую кнопку мыши и Shift. короче Shift + ПКМ(без плюса)

Ссылка на комментарий
Поделиться на другие сайты

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

Можно, нужно переделать OE-код модели здания. Описать новый хардпойнт, который будет отвечать за "обновленный внешний вид". Затем в АЕ-коде (т.е. в корсиксе), машинный цех должен менять этот хардпойнт для базы сестёр.

Ссылка на комментарий
Поделиться на другие сайты

подскажите пожалуйста как вытащить из мода схемы покраски,которые я редактировал?это для того,чтобы засунуть их в новую версию мода(в данном случае Revised 1.56),а не менять цвета вручную

Изменено пользователем ben
Ссылка на комментарий
Поделиться на другие сайты

подскажите пожалуйста как вытащить из мода схемы покраски,которые я редактировал?это для того,чтобы засунуть их в новую версию мода(в данном случае Revised 1.56),а не менять цвета вручную

Они сохраняются в папке профиля игрока Profile, в подпапке с названием мода, в подпапке scheme или как-то так

Ссылка на комментарий
Поделиться на другие сайты

В сем привет!!!

1) Столкнулся я вот с такими багами мода своего когда играешь Хаосом против ИГ,то ИГ когда захватывает точку использует флаг Хаоса.

2) А у Сестер и ТЭ флаг не отображается просто белый флаг!!

Как можно это исправить?

Ссылка на комментарий
Поделиться на другие сайты

Добрый день, у меня 2 вопроса которые не дают мне продолжить работу с моделями:

1)С какой версии 3д макса надо использовать Santos tool 2 и какие плагины для этого нужны?

2)При Model Exporte у меня вылазит такая ошибка:

MAXScript Rollout Handler Exception

-- Type error^ Call needs function or class, got: undefined

В комплекте с ошибкой
--

-- Utility for exporting Models from MAX (and gMAX)

-- ©2000-2003 Relic Entertainment Inc.

--

include "Startup/RelicFileDateCompare.ms"

-- compensate for MaxScript shortcoming (straight from the MaxScript docs on strings)

fn uppercase instring =

(

local upper, lower, outstring

upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

lower = "abcdefghijklmnopqrstuvwxyz"

outstring = copy instring

for i=1 to outstring.count do

(

j = findString lower outstring[ i ]

if( j != undefined ) do outstring[ i ] = upper[ j ]

)

outstring

)

-- does a file exist? Compensates for Gmax

fn myDoesFileExist filename =

(

if doesFileExist filename then

(

try

(

-- this will except if the file isn't there

getFileAttribute filename #readOnly

-- file is truely there

return true

)

catch

(

-- file is not there, and gmax lied

return false

)

)

-- file is not there

return false

)

-- recursively create a directory

fn makeDirRecursive dirname =

(

if (dirname.count == 0) then

(

return false

)

-- check if it exists already

if( ( getDirectories dirname ).count != 0 ) then

(

return true

)

-- strip trailing slash

if( dirname[ dirname.count ] == "\\" ) then

(

dirname = substring dirname 1 (dirname.count - 1)

)

-- extract parent directory and strip trailing slash

parentdir = getFilenamePath dirname

if (parentdir[ parentdir.count ] == "\\" ) then

(

parentdir = substring parentdir 1 ( parentdir.count - 1 )

)

-- check if we were able to create the parents

if (makeDirRecursive parentdir == false) then

(

return false

)

if (myDoesFileExist dirname) then

(

return true

)

return makeDir dirname

)

--

fn isFileReadonly filename =

(

if( myDoesFileExist filename ) then

(

if( getFileAttribute filename #readOnly ) then

(

return true

)

)

return false

)

--------------------------------------------

-- progress bar

global g_WarhammerModelExportProgress

global g_WarhammerModelStopExport

-- Extensions

c_ExportExtension = ".SGM"

c_ExporterFilename = "W40KExporter6.dle"

-- Folder constants

c_RefFile = "REF"

c_RefFolder = "REFERENCE\\"

c_AnimFolder = "ANIMATIONS\\"

c_TexturesFolder = "TEXTURES\\"

--

g_FileExtension = ""

-- Time comparisons

g_NewestDate

g_OldestDate

g_ExporterDate

-- Current export file list

g_ExportList = ""

-- model name and folder mappings

g_ModelName = ""

g_DataSrcPath = ""

g_IntDataSrcPath = ""

g_GenDataSrcPath = ""

g_DataPath = ""

--------------------------------------------

fn SetExtension =

(

-- detect GMAX

g_FileExtension = ".max"

try

(

-- copyFile is not allowed under gmax

copyFile "" ""

)

catch

(

g_FileExtension = ".gmax"

)

)

fn SetDataSrcPath filename =

(

bFound = false

g_DataSrcPath = filename

foundIndex = findString filename c_RefFolder

if( not foundIndex == undefined ) then

(

-- in the reference folder

g_DataSrcPath = subString filename 1 ( foundIndex - 1 )

bFound = true

)

else

(

foundIndex = findString filename c_AnimFolder

if( not foundIndex == undefined ) then

(

-- in the animation folder

g_DataSrcPath = subString filename 1 ( foundIndex - 1 )

bFound = true

)

)

return bFound

)

fn SetModelName =

(

g_ModelName = g_DataSrcPath

g_ModelName = substring g_ModelName 1 ( g_ModelName.count - 1 )

g_ModelName = getFilenameFile( g_ModelName )

)

fn SetExportList =

(

g_ExportList = #()

-- Model REF file

for item in getfiles( g_DataSrcPath + c_RefFolder + c_RefFile + g_FileExtension ) do

(

append g_ExportList (uppercase ( c_RefFolder + ( getFilenameFile item ) + g_FileExtension ) )

)

-- Animations

-- Get the list of directories with animations

dirArray = GetDirectories( g_DataSrcPath + c_AnimFolder + "*" )

for d in dirArray do

(

join dirArray( GetDirectories( d + "*" ) )

)

-- Get the list of animations in the found directories

foundFiles = #()

join foundFiles( getFiles( g_DataSrcPath + c_AnimFolder + "*" + g_FileExtension ) )

for d in dirArray do

(

join foundFiles( getFiles( d + "*" + g_FileExtension ) )

)

-- Append the relative name of animations to export

for f in foundFiles do

(

animDirIndex = findString f c_AnimFolder

if( not animDirIndex == undefined ) then

(

append g_ExportList (uppercase ( substring f animDirIndex -1 ) )

)

)

)

fn SetupScript filename =

(

bStatus = true

g_FileExtension = ""

g_NewestDate = 0

g_OldestDate = 0

g_ExporterDate = 0

g_ExportList = ""

g_ModelName = ""

g_DataSrcPath = ""

g_IntDataSrcPath = ""

g_GenDataSrcPath = ""

g_DataPath = ""

if( SetDataSrcPath( filename ) == false ) then

(

bStatus = false

)

SetExtension()

SetModelName()

SetExportList()

return bStatus

)

fn GetMergeRefFile =

(

refFile = undefined

-- Get REF file from Reference directory

for item in getfiles( g_IntDataSrcPath + c_RefFolder + "*" + c_ExportExtension ) do

(

if( ( uppercase( getFilenameFile item ) ) == c_RefFile ) then

(

refFile = item

)

)

return refFile

)

fn GetMergeAnimationList =

(

mergeAnimlist = #()

-- Get Animation files from Animation directory

for item in getfiles( g_IntDataSrcPath + c_AnimFolder + "*" + c_ExportExtension ) do

(

append mergeAnimlist item

)

return mergeAnimlist

)

fn ConvertRelativeSrcNameToFullIntName item =

(

animFolderIndex = findString item c_AnimFolder

if( not animFolderIndex == undefined ) then

(

-- Anim file

filename = subString item ( animFolderIndex + c_AnimFolder.count ) -1

-- Sub-folder

path = GetFilenamePath( filename )

if( path.count > 0 ) then

(

path = substring path 1 ( path.count - 1 )

path = path + "_"

)

item = g_IntDataSrcPath + c_AnimFolder + path + GetFilenameFile( filename ) + c_ExportExtension

)

else

(

-- Ref file

item = g_IntDataSrcPath + c_RefFolder + GetFilenameFile( item ) + c_ExportExtension

)

return item

)

fn CheckForOrphanedFile item =

(

found = false

for temp in g_ExportList do

(

temp = ConvertRelativeSrcNameToFullIntName( temp )

if( item == temp ) then

(

found = true

exit

)

)

if( not found ) then

(

print( g_ModelName + ": Removing " + filenameFromPath( item ) + " - matching MAX file not found" )

deleteFile( item )

)

else

(

local fileDate = getSortableDate( item )

if( fileDate > g_NewestDate ) then

(

g_NewestDate = fileDate

)

if( fileDate < g_OldestDate ) then

(

g_OldestDate = fileDate

)

)

)

rollout g_WarhammerModelExportProgress "Progress"

(

progressbar exportprogress "Progress"

button cancelexp "Cancel" width:100 align:#center

on cancelexp pressed do

(

g_WarhammerModelStopExport = true

)

)

function ExportModelInternal bForceExport bUpdateUI bSkipReadOnly bExportModel bExportTextures =

(

-- Verify that we have a ref.max file

if( myDoesFileExist( g_DataSrcPath + c_RefFile + g_FileExtension ) == false ) and

( myDoesFileExist( g_DataSrcPath + c_RefFolder ) == true ) and

( myDoesFileExist( g_DataSrcPath + c_RefFolder + c_RefFile + g_FileExtension ) == false ) then

(

titleText = "Warhammer Exporter: " + g_ModelName

messageBox( "Unable to find '" + c_RefFile + g_FileExtension + "' file!" ) title:titleText

print( titleText + "- Unable to find '" + c_RefFile + g_FileExtension + "' file!" )

return false

)

-- Extract the intermediate and final directories from the 'pipeline.ini'

g_IntDataSrcPath = w40k_pipeline_sourcetointermediate g_DataSrcPath

g_GenDataSrcPath = w40k_pipeline_sourcetogeneric g_DataSrcPath

g_DataPath = w40k_pipeline_sourcetofinal g_DataSrcPath

if( ( g_IntDataSrcPath == undefined ) or ( g_GenDataSrcPath == undefined ) or ( g_DataPath == undefined ) ) then

(

titleText = "Warhammer Exporter: " + g_ModelName

messageBox( "Not under a project mapping (pipeline.ini)!\nPlease make sure you have the file in the proper data source!" ) title:titleText

print( titleText + "- Not under a project mapping (pipeline.ini)!\nPlease make sure you have the file in the proper data source!" )

return false

)

-- strip off the last directory from g_DataPath, because this is the filename now

if( g_DataPath[ g_DataPath.count ] == "\\" ) then

(

g_DataPath = substring g_DataPath 1 ( g_DataPath.count - 1 )

)

g_DataPath = getFilenamePath g_DataPath

-- strip off the last directory from g_GenDataSrcPath, because this is the filename now

if( g_GenDataSrcPath[ g_GenDataSrcPath.count ] == "\\" ) then

(

g_GenDataSrcPath = substring g_GenDataSrcPath 1 ( g_GenDataSrcPath.count - 1 )

)

g_GenDataSrcPath = getFilenamePath g_GenDataSrcPath

-- Check if we can write to the exportfile

if (isFileReadonly(g_GenDataSrcPath + g_ModelName + c_ExportExtension)) then

(

titleText = "Warhammer Exporter: " + g_ModelName

if( bSkipReadOnly == true ) then

(

-- ignore this type of error and skip the export

print( titleText + "- Read only, skipping file..." )

return true

)

else

(

fileToOpen = g_GenDataSrcPath + g_ModelName + c_ExportExtension

perforceResult = w40k_p4_openoradd fileToOpen

if (perforceResult == false) then

(

w40k_p4_reset

messageBox( "Cannot export to file '" + g_GenDataSrcPath + g_ModelName + c_ExportExtension + "'! It was unable to be opened or added in Perforce." ) title:titleText

print( titleText + "- Cannot export to file '" + g_GenDataSrcPath + g_ModelName + c_ExportExtension + "'! It was unable to be opened or added in Perforce." )

return false

)

)

)

-- (Re)set dates

g_NewestDate = "00000101000000"

g_OldestDate = "99991231235959"

-- Get the date of the exporter DLE

g_ExporterDate = g_OldestDate

local tmpVal = findString scriptsPath "Scripts"

if( tmpVal != undefined ) then

(

local plugDir = replace scriptsPath tmpVal 7 "plugins"

g_ExporterDate = getSortableDate( plugDir + "\\" + c_ExporterFilename )

)

-- check dates on intermediate files

-- Incremental check, verify export plugin is older than SGMs and delete orphaned ones

-- Reference folder

for item in getfiles( g_IntDataSrcPath + c_RefFolder + "*" + c_ExportExtension ) do

(

CheckForOrphanedFile( item )

)

-- Anim folder

for item in getfiles( g_IntDataSrcPath + c_AnimFolder + "*" + c_ExportExtension ) do

(

CheckForOrphanedFile( item )

)

-- If we have a new exporter or we're asked to force a rebuild then delete all of the files

if( bForceExport == true or g_ExporterDate > g_OldestDate ) then

(

-- Delete all of the files in the Intermediate_DataSrc directory

if( g_ExporterDate > g_OldestDate ) then

(

print( g_ModelName + ": New exporter, exporting all files..." )

)

else

(

print( g_ModelName + ": Forcing full export..." )

)

files = getFiles ( g_IntDataSrcPath + c_RefFolder + "\\*" + c_ExportExtension )

for f in files do

(

deleteFile f

)

files = getFiles ( g_IntDataSrcPath + c_AnimFolder + "\\*" + c_ExportExtension )

for f in files do

(

deleteFile f

)

)

else

(

print( g_ModelName + ": Performing incremental export..." )

)

-- strip out unmodified .max files

local i = 1

while( i <= g_ExportList.count ) do

(

local currentFile = g_DataSrcPath + g_ExportList[ i ]

local saveTo = ConvertRelativeSrcNameToFullIntName g_ExportList[ i ]

bSkip = false

-- Reference folder

if( myDoesFileExist saveTo ) and ( fileDateCompare currentFile saveTo < 0 ) then

(

bSkip = true

)

-- Animation folder

if( myDoesFileExist saveTo ) and ( fileDateCompare currentFile saveTo < 0 ) then

(

bSkip = true

)

if( bSkip == true ) then

(

print( g_ModelName + ": Skipping '" + g_ExportList[ i ] + "'" )

deleteItem g_ExportList i

)

else

(

i = i + 1

)

)

numFiles = g_ExportList.count

if( numFiles > 0 ) then

(

-- start exporting

-- add DataSrc to texture map path

mapPaths.add( g_DataSrcPath + c_TexturesFolder )

-- progress bar

if( bUpdateUI == true ) then

(

g_WarhammerModelStopExport = false

addRollout g_WarhammerModelExportProgress

g_WarhammerModelExportProgress.exportprogress.value = 0

)

for i=1 to numFiles do

(

if( bUpdateUI == true ) then

(

-- Export cancelled?

if( g_WarhammerModelStopExport ) then

(

removeRollout g_WarhammerModelExportProgress

print( g_ModelName + ": User cancelled model export" )

return true

)

)

local currentFile = g_DataSrcPath + g_ExportList[ i ]

local saveTo = ConvertRelativeSrcNameToFullIntName g_ExportList[ i ]

print( g_ModelName + ": Loading file '" + g_ExportList[ i ] + "'..." )

loadmaxfile currentFile quiet:true

gw.updateScreen()

-- DO EXPORT

exportOK = true

try

(

print( g_ModelName + ": Exporting file '" + g_ExportList[ i ] + "'..." )

exportOK = exportfile( saveTo ) #noPrompt

if( exportOK == true ) then

(

-- No error reported, do we have an exported file?

if( not myDoesFileExist( saveTo ) ) then

(

exportOK = false

)

)

)

catch

(

-- Serious error occured

exportOK = false

)

-- check if we encountered an error?

if( exportOK == false ) then

(

titleText = "Warhammer Exporter: " + g_ModelName

messageBox( "Unable to export: " + currentFile + "!" ) title:titleText

print( titleText + "- Unable to export: " + currentFile + "!" )

if( bUpdateUI == true ) then

(

removeRollout g_WarhammerModelExportProgress

)

return false

)

if( bUpdateUI == true ) then

(

g_WarhammerModelExportProgress.exportprogress.value = 100.0 * ( i * 2 + 0 ) / ( g_ExportList.count * 2 )

)

)

if( bUpdateUI == true ) then

(

removeRollout g_WarhammerModelExportProgress

)

-- remove textures folder from texture map path

index = mapPaths.count()

mapPaths.delete( index )

)

else

(

g_WarhammerModelExportProgress.exportprogress.value = 100.0

gw.updateScreen()

)

-- MERGE Files

print( g_ModelName + ": Merging..." )

-- Get model file

mergeRefFile = GetMergeRefFile()

if( mergeRefFile == undefined ) then

(

titleText = "Warhammer Exporter: " + g_ModelName

messageBox( "Unable to find reference file for merging!" ) title:titleText

print( titleText + "- Unable to find reference file for merging!" )

return false

)

mergeOK = true

mergeToFile = g_GenDataSrcPath + g_ModelName + c_ExportExtension

-- Get anim list

mergeAnimList = GetMergeAnimationList()

-- Merge animations

try

( -- temporary external flag setting for animerge

w40k_animergeFlags bExportModel bExportTextures

mergeOK = w40k_animerge mergeToFile mergeRefFile mergeAnimList

)

catch

(

-- Serious error occured

mergeOK = false

)

if( mergeOK == false ) then

(

titleText = "Warhammer Exporter: " + g_ModelName

messageBox( "Unable to export/merge: " + mergeToFile ) title:titleText

print( titleText + "- Unable to export/merge model!" )

return false

)

-- Burn the model

burnOK = true

try

(

burnOK = w40k_burner mergeToFile

)

catch

(

-- A boo boo happened

w40k_burner_reset

burnOK = false

)

if (burnOK == false) then

(

titleText = "Warhammer Exporter: " + g_ModelName

messageBox("Unable to burn: " + mergeToFile) title:titleText

print(titleText + "- Unable to burn model!")

return false

)

print( g_ModelName + ": Exported successfully." )

return true

)

function ExportModel filepath bForceExport bSkipReadOnly bExportModel bExportTextures =

(

if( SetupScript( filepath ) == false ) then

(

return false

)

ExportModelInternal bForceExport false bSkipReadOnly bExportModel bExportTextures

)

--------------------------------------------

utility exporter "Warhammer Model Export"

(

-- Dialog buttons

edittext exportname "Exporting" enabled:false

dropdownlist fileList "Files" items:#() height:20

checkbox forcerebuild "Force Full Export" checked:false

checkbox exportmodel "Export Model" checked:true

checkbox exporttextures "Export Textures" checked:true

button refresh "Refresh" align:#center width:100

button export "Export" align:#center width:100

fn UpdateUI =

(

-- Set the model name

exportname.text = g_ModelName

-- strip off paths

tempfiles =#()

for item in g_ExportList do

(

temp = item

animFolderIndex = findString item c_AnimFolder

if( not animFolderIndex == undefined ) then

(

animFolder = subString temp c_AnimFolder.count -1

animFolder = getFilenamePath animFolder

animFolder = subString animFolder 2 -1

temp = animFolder + getFilenameFile( temp )

)

else

(

temp = getFilenameFile( temp )

)

append tempfiles temp

)

fileList.items = tempfiles

)

on exporter open do

(

if( SetupScript( maxFilePath ) == true ) then

(

UpdateUI()

)

)

on refresh pressed do

(

if( SetupScript( maxFilePath ) == true ) then

(

UpdateUI()

)

)

on export pressed do

(

if( SetupScript( maxFilePath ) == false ) then

(

messageBox( "Unable to determine source path!\nMake sure you have followed the standard directory layout." ) title:"Warhammer Exporter"

return false

)

UpdateUI()

if( not checkForSave() ) then

(

return false

)

if( objects.count == 0 ) then

(

messageBox( "No files present for export!" ) title:"Warhammer Exporter"

return false

)

ExportModelInternal forcerebuild.checked true false exportmodel.checked exporttextures.checked

)

)

Что мне делать?
Ссылка на комментарий
Поделиться на другие сайты

1) Столкнулся я вот с такими багами мода своего когда играешь Хаосом против ИГ,то ИГ когда захватывает точку использует флаг Хаоса.

2) А у Сестер и ТЭ флаг не отображается просто белый флаг!!

C первым пунктом не очень понятно, но вот по второму видно, что у тебя модель стратегической точки для Дарк Крусайда, причем модифицированная.

Модели точек лежат в папке \Data\Art\EBPs\Environment\Gameplay\ в твоём моде, или в какой то из папок модов, на которые твой мод "ссылается". Если ты играешь в SS и твой мод не добавляет новых рас - просто удали те файлы (или убери ссылку на Objective_Points мод, если вдруг она есть).

Изменено пользователем jONES
Ссылка на комментарий
Поделиться на другие сайты

Спасибо,за ответ 2 пункт исправил.

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

Ссылка на комментарий
Поделиться на другие сайты

Спасибо,за ответ 2 пункт исправил.

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

Это называется "color leak". Рискну предположить, что в твоём моде у ИГ есть юниты Хаоса. Или можеть быть наоборот.

Если точно "нет", то я не знаю что делать.

Если да - то единственный известный мне путь - конвертировать эти юниты в 3Д Макс и менять пути к текстурам, чтобы у всех моделей в расе путь к текстурам совпадал. Т.е. если раса ИГ - у всех моделей ссылки на текстуры идут в \Data\Art\EBPs\Races\imperial_guard\texture_share\, если модель для расы Хаос, то - Data\Art\EBPs\Races\chaos\texture_share\

Ссылка на комментарий
Поделиться на другие сайты

Еще один вопрос немного не по теме, меня интересовало всегда как делать АI ?если тебе что известно,или сам умеешь что то делать,то очень большая просьба подсказать,или указать сылочки куда нужно обратить внимание.

Ссылка на комментарий
Поделиться на другие сайты

Еще один вопрос немного не по теме, меня интересовало всегда как делать АI ?если тебе что известно,или сам умеешь что то делать,то очень большая просьба подсказать,или указать сылочки куда нужно обратить внимание.

В моде Адвансед ИИ есть инструкция (на английском) \Dowai_mod\Data\ai\doc\AdvanceAIGuide_for_v2.3.txt

Изменено пользователем jONES
Ссылка на комментарий
Поделиться на другие сайты

Please help!

Как создать rtx-файл и покрасить его? Я так понимаю надо сначала распаковать "WTP" файл, и распакованные TGA перекодировать в DDS. Потом переименовать. Но у меня в DDS перекодируется только лицевой первый файл, при перекодировании остальных вылетает ошибка. Прилагаю скрин. P/S Путь правильный, на скрине стандартный WTP, взятый из директории, Direct X самый последний, переустанавливал 3 раза.

post-30658-1317459995_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Как создать rtx-файл и покрасить его? Я так понимаю надо сначала распаковать "WTP" файл, и распакованные TGA перекодировать в DDS. Потом переименовать. Но у меня в DDS перекодируется только лицевой первый файл, при перекодировании остальных вылетает ошибка.

Вот подробная инструкция от Мегазогга: http://forums.warforge.ru/index.php?showto...t&p=1834223

Ссылка на комментарий
Поделиться на другие сайты

Скажу сразу - это не вопрос, а идея. Создавать под неё отдельную тему было бы бессмысленно. Чтобы соблюсти формальность, а помещу в конце вопросительное предложение.

Свою мысль адресую людям, занимающимся модификациями в духе "Closer to codex". Я думаю, ни для кого не секрет, что даже самое дотошное копирование параметров из кодекса вовсе не означает, что на смену дисбаланса DoW придёт баланс настолки (к слову, тоже далеко не идеальный). Увы, в силу различий в механике чуда не происходит. Возможно, стоит несколько больше сгладить существующие различия между tabletop game и RTS.

Предложение:

1. Убрать из игры пехотный и технический лимиты.

2. Сделать единый лимит, варирьирующийся в зависимости от настроек матча.

2а. Сделать фиксированный лимит, скажем, 2000.

3. Там, где в сетевой игре раскрывающиеся меню "Скорость игры", "Начальные ресурсы" и прочие добавить аналогичное - "Лимит". С произвольным количеством позиций.

3а. Или заменить никому не нужно меню "Разрешить использование читов"

3в. Или, в случае принятия пункта 2а, не делать ничего.

4. Сделать так, чтобы лимит расходовали не только отряды и даже не единичные бойцы (как у орков), а даже улучшения бойцов и техники. Параметры - из кодексов.

"+"
Для тех, кто не догадался - это моя интерпретация ростера (расписки армии), используемой в настольной игре.

Да, всех проблем такое предложение не решит. Может быть, и вообще ничего не решит. Но это, как мне кажется, может повысить обратную совместимость настольки и DoW, а также эффективность внедряемых по кодексам изменений. Сразу назову недостаток своей теории - в неё не вписываются глобальные улучшения (боевые показатели растут, но на лимите это не скажется).

А теперь, как и было обещано - вопрос, раз уж тема называется "Вопрос-ответ":

Насколько реально воплотить эту идею в любой из предложенных (или иных) вариаций и представляет ли это практическую ценность?

Изменено пользователем EyePatch
Ссылка на комментарий
Поделиться на другие сайты

Подскажите как сделать для мода свой загрузочный экран при старте игры с кем-то?

Изменено пользователем RuWlRamRoud
Ссылка на комментарий
Поделиться на другие сайты

Насколько реально воплотить эту идею в любой из предложенных (или иных) вариаций и представляет ли это практическую ценность?

Сделать такое моддингом в DoW легко. Но игровой ценности эти идеи не представляют. В частности, в реальной игре при реализации этих идей начнется огульный танк-раш на средних и поздних этапах игры. Игроки будут делать мало пехоты и много техники. Если начать с этим бороться в рамках этого концепта, то опять во многом придется вернуться к старому концепту. Ну и зачем оно кому-то нужно, раз не приносит ничего интересного и только огрубляет игру.

Когда в DoW моддеры делают "кодексные" параметры, это еще не означает, что они в рамках DoW хотят реализовать настолку. Те, кто реально хочет реализовать именно W40k настолку будут делать это в рамках какого-нибудь TBS-движка, а не RTS. А в DoW "кодексный" мод лишь означает некоторое приближение к балансу настолки, духу кодексов и духу вселенной W40k в целом. Так, например, поступаю я у себя в Titanium Wars. Я не делаю W40k комповую настолку, я делаю W40k RTS-игру. Но делаю я ее так, чтобы каждый ее элемент в чем-то базировался на идеях реального W40k. Если в настолке одно оружие стреляет дальше другого, то у меня они также будут соотноситься. Если в настолке один юнит более меткий (сильный, толстый, более бронированный и т. п.) чем другой, то и у меня они будут относительно такими же. Если в настолке есть какие-то обвесы у юнитов, то и у меня они будут все присутствовать как варианты. Если в настолке у юнитов есть какие-нибудь особенности или спец-способности, то и у меня они будут каким-то образом реализованы. И т. д. и т. п. Вот это и значит делать мод в духе кодексов W40k -- соблюдать общие правила, особенности, добиваться атмосферности W40k (и не пороть отсебятину в рамках мира, который придумал не ты). Настолка как таковая на компе никому особо и не нужна -- для этого есть GW с ее миньками и твои друзья, которые эти миньки купили и раскрасили и готовы сдвигать с тобой фигурки на столе. Настолка это отдельная песня. Целый свой мир со своим фаном в покрасках, конверсиях минек и тактиках игры. На компе она особо и не нужна. Ее на компе в виде нормального TBS не делают (были и есть такие игры по W40k, но настолку целиком они не реализовали) еще и потому, что GW будет явно против нее. Если была бы хорошая полноразмерная виртуальная настолка, то это сильно бы снизило продажи минек.

Так что DoW -- это DoW, а настолка -- это настолка (искренне ваш -- КО). Но зато в модах для DoW мы можем наваять такого, что атмосферность W40k будет на высоте и игра в этом смысле будет ничем не хуже настолки. Поэтому люди и занимаются моддингом DoW. Хочется увидеть через призму DoW много такого, что реально есть в нашей любимой вселенной W40k.

Изменено пользователем GrOrc
Ссылка на комментарий
Поделиться на другие сайты

В моде Адвансед ИИ есть инструкция (на английском) \Dowai_mod\Data\ai\doc\AdvanceAIGuide_for_v2.3.txt

Будь добр кинь ссылочку,найти не могу.

Ссылка на комментарий
Поделиться на другие сайты

Доброго времени суток,Комрады!

Вопросы следующие:

1.Как сделать так,чтобы в начале игры получить на карте не только HQ,а например 3-4 определенных здания (как я понял,все это дело делается через SCAR скриптование и,даже сильно постаравшись,можно научить этому игру через режим игры,а не через скрипты в карте)?

2.Все помнят абилку "Грозовой фронт" у Некров умеющую пополняться от нанесенного урона Лорду.Возможно ли организовать так,чтобы артефакты покупались не за ресурсы,а представляли собой аналог данной абилки: Лорд наносит (!) урон,за счет которого пополняется "полоска" в каждом артефакте и при заполнении ее до max становится возможным взять артефакт.

P.S. Я так понимаю "полоска" имеет численное значение,присвоив артефакту Н-ое значение,мы получаем его стоимость,т.о. когда "полоска" стоимости одного артефакта уже заполнилась,то другого будет заполнена,скажем,наполовину.Ну вот как-то вот так. :)

3. Следствие из предыдущего вопроса. Как такую "полоску" повесить не только на покупку артефактов,но и на все абилки Лорда? Получается,перед игроком стоит выбор,или покупка артефакта или использование абилки.

Спасибо за внимание.Буду рад любой помощи.

Ссылка на комментарий
Поделиться на другие сайты

1.Как сделать так,чтобы в начале игры получить на карте не только HQ,а например 3-4 определенных здания (как я понял,все это дело делается через SCAR скриптование и,даже сильно постаравшись,можно научить этому игру через режим игры,а не через скрипты в карте)?

2.Все помнят абилку "Грозовой фронт" у Некров умеющую пополняться от нанесенного урона Лорду.Возможно ли организовать так,чтобы артефакты покупались не за ресурсы,а представляли собой аналог данной абилки: Лорд наносит (!) урон,за счет которого пополняется "полоска" в каждом артефакте и при заполнении ее до max становится возможным взять артефакт.

P.S. Я так понимаю "полоска" имеет численное значение,присвоив артефакту Н-ое значение,мы получаем его стоимость,т.о. когда "полоска" стоимости одного артефакта уже заполнилась,то другого будет заполнена,скажем,наполовину.Ну вот как-то вот так. :)

3. Следствие из предыдущего вопроса. Как такую "полоску" повесить не только на покупку артефактов,но и на все абилки Лорда? Получается,перед игроком стоит выбор,или покупка артефакта или использование абилки.

1. Через SCAR скриптование, т.е. написать так называемое "условие победы" (правило), которое разместит здания вокруг HQ к примеру. Как сделать? Скачать DoW Mod Tools, там есть ScarDoc - описание всех SCAR функций, поизучать уже существующие скрипты к картам и правила. В итоге разобраться и написать ;)

2. 3. Невозможно.

"Следствие" из предыдущего ответа. Твое представление о механике игры основано на домыслах. Начни с простого, скачай Корсикс Мод Студио, прочти руководство Кабануса из соседней темы, поразбирайся как что работает. Чем "исследования" отличаются от "абилок". "Абилки" от "оружия". Тогда не будет никаких эфемерных "полосок" и "артефактов"

Изменено пользователем jONES
Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти

×
×
  • Создать...