Jump to content

[Урок] Замена транспортного средства


Recommended Posts

Введение

Наверняка все хотели бы заменить транспортное средство на своём сервере, но подробного урока вы не нашли, то тогда этот урок будет для вас. Я решил расписать его очень подробно, чтобы любой смог понять его.

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

Создание ресурса

Для начала вам нужно перейти к папке с сервером МТА и перейти по следующему пути

/server/mods/deathmatch/resources/

Тут находятся все ресурсы MTA.

Примечание:

В новых версиях МТА можно создавать папки для ресурсов. Папка должна иметь вначале [ и в конце ].

Пример: [gamemodes], [maps] и т.д

Сам ресурс - это папка или zip архив, который содержит в себе meta.xml файл, этот файл указывает серверу как и что нужно загружать, также там могут быть различные настройки для ресурса. Подробнее вы можете почитать вот тут: https://wiki.multitheftauto.com/index.ph ... U/Meta.xml

Примечание:

В названии ресурса могут быть только латинские символы ( латиница ) и некоторые другие символы ( ! - _ ^ ; $ % @ - = + - [ { ' ~ ` ] } ( ) Это все допустимые. Нельзя использовать пробел в названии ресурса, иначе он не будет загружен. Чтобы не ломать себе мозг, то просто пишите все названия ресурсов латиницей и когда нужен пробел, то просто используйте нижний знак подчёркивания. Это уже дело вкуса. Примеры: abc, test, second_res и т.д )

Создадим ресурс и назовём его replace_vehicle.

Путь будет таким

/server/mods/deathmatch/resources/replace_vehicle

В нём мы создадим meta.xml

И напишем..

  
<meta> 
    <!-- Скрипт, который будет заменять машину, его мы напишем чуть позже --> 
    <script src='replace.lua' type='client' /> 
     
    <!-- Файлы для замены машины --> 
    <file src='models/euros.txd' type='client' /> 
    <file src='models/euros.dff' type='client' /> 
</meta> 
  

Примечание: - это комментарии.

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

Сам путь будет таким

/server/mods/deathmatch/resources/replace_vehicle/models

Теперь мы должны скачать модель транспортного средства если у вас её нет. Транспортное средство состоит из 2х файлов с расширением .txd и .dff

Найти модели транспортных средств вы можете в интернете, есть полно сайтов, где вы можете скачать это, лично я использую http://gtainside.com т.к там есть очень удобный поиск по категориям.

После того как вы скачали их, то помещаем по этому пути

/server/mods/deathmatch/resources/replace_vehicle/models/

В нашем случае для примера у нас будет модель, которая будет заменять euros.

В конечном итоге путь для этих файлов будет вот таким:

/server/mods/deathmatch/resources/replace_vehicle/models/euros.txd

/server/mods/deathmatch/resources/replace_vehicle/models/euros.dff

Создание Lua скрипта

После этого нам нужно написать скрипт, который будет заменять стандартную модель транспортного средства на новую. Скрипт будет иметь название replace.lua т.к мы указали такое название в meta.xml и путь до него будет вот таким: /server/mods/deathmatch/resources/replace_vehicle/replace.lua

Теперь нам нужно найти идентификатор машины для замены.

Примечание:

Все идентификаторы ( иды ) машин можно найти тут: https://wiki.multitheftauto.com/index.ph ... ehicle_IDs

В нашем случае это 587.

Открываем текстовый редактор.

Желательно иметь знания Lua. Если же вы впервые, то вы можете почитать различные доки, мануалы тут: https://forum.multitheftauto.com/viewto ... 6ca4c84e1c

Пишем..

  
addEventHandler( 'onClientResourceStart', resourceRoot, -- При запуске ресурса подгружаем и заменяем модель 
    function() 
        local iModelID = 587; -- Идентификатор модели, который мы нашли на wiki 
         
        local pTxd = engineLoadTXD ( 'models/euros.txd' ); -- Подгружаем TXD файл 
        engineImportTXD ( pTxd, iModelID ); -- Импортируем TXD 
         
        local pDff = engineLoadDFF ( 'models/euros.dff', iModelID ); -- Подгружаем DFF файл 
        engineReplaceModel ( pDff, iModelID ); -- Заменяем модель 
    end 
); 
  

Примечание: -- - это комментарии.

Я уверен, что скрипт будет понятен всем.

Заключение

Я надеюсь вы поняли как заменять транспортное средство.

Теперь вам остётся лишь запустить этот ресурс.

Если у вас есть вопросы, то пишите.

Link to comment
  • 3 weeks later...
  • 1 year later...

а если у меня бурито и там 4 файла с разными надписями ,так делать ?

outputChatBox ( ">burrito loads" ) 
  
txd = engineLoadTXD ( "burrito.txd" ) 
txd = engineLoadTXD ( "burrito1.txd" ) 
txd = engineLoadTXD ( "burrito2.txd" ) 
txd = engineLoadTXD ( "burrito3.txd" ) 
txd = engineLoadTXD ( "burrito4.txd" ) 
engineImportTXD ( txd, 482 ) 
dff = engineLoadDFF ( "burrito.dff", 0 ) 
engineReplaceModel ( dff, 482 ) 

Link to comment

Ув. smile68, Вы на верном пути, но к сожалению недостаток знания Lua сказывается на вашем коде. Вы присваиваете значение переменной txd 5 раз. В конечном итоге переменная txd будет равна .txd файлу с названием "burrito4.txd", если такой имеется и указан в meta.xml.

Удачи! Не благодарите.

Link to comment

N1kS написсал:

Удачи! Не благодарите.

)))

За такой элегантный уход от ответа реально не стоит благодарить. А как же всё-таки? Есть несколько покрасочных работ burrito1.txd ... burrito4.txd. Хочется, чтобы при старте гонок участники получали разные тачки, пусть со случайным выбором из этого набора. И чтобы мой выбор был наблюдаем другими гонщиками.

Link to comment
N1kS написсал:

Удачи! Не благодарите.

)))

За такой элегантный уход от ответа реально не стоит благодарить. А как же всё-таки? Есть несколько покрасочных работ burrito1.txd ... burrito4.txd. Хочется, чтобы при старте гонок участники получали разные тачки, пусть со случайным выбором из этого набора. И чтобы мой выбор был наблюдаем другими гонщиками.

Понимаете, ув. KatastrofaS, нужно корректно указывать, что Вы хотите сделать. Если же Вам нужно просто заменить .dff и .txd транспортного средства, то перечитайте данный урок и у Вас отпадут вопросы. Для Вашей же цели Вам необходим шейдер для замены текстуры по элементу.

Делается это очень просто:

dxCreateShader 

И первый пример из ссылки (нажмите по слову "шейдер").

Удачи! Не благодарите.

Link to comment

Нет, я всё-таки поблагодарю N1kS!

Отличное занятие на воскресенье )

Теперь буду прикидывать, что проще... Может разбежаться и выдать игрокам разные модели с разными покрасочными работами? Хотя по объёму загружаемых на клиенты данных вроде так на так выходит...

Link to comment
Нет, я всё-таки поблагодарю N1kS!

Отличное занятие на воскресенье )

Теперь буду прикидывать, что проще... Может разбежаться и выдать игрокам разные модели с разными покрасочными работами? Хотя по объёму загружаемых на клиенты данных вроде так на так выходит...

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

Link to comment
  • 1 year later...

Ребята привет, меня интересует кое-что по теме!

Я заменил практически все доступные автомобили на свои.

У меня есть на сервере места, где выставлено много транспорта, и в этих местах у всех игроков, даже с мощными ПК начинаются проседания ФПС, как это лечится?

Link to comment
4 minutes ago, PrototypeX said:

Ребята привет, меня интересует кое-что по теме!

Я заменил практически все доступные автомобили на свои.

У меня есть на сервере места, где выставлено много транспорта, и в этих местах у всех игроков, даже с мощными ПК начинаются проседания ФПС, как это лечится?

Вроде никак. Либо ТС меньше, либо моделек меньше.

Link to comment
55 minutes ago, PrototypeX said:

Может ли быть дело в весе и/или оптимизации модели(ей)?

Ну это само собой. Но само уже наличие замененных текстур нагружает клиент. А если их еще и много в стриме, то это совсем плохо...

Link to comment
  • 2 years later...
  • 4 weeks later...
On 19/04/2019 at 20:51, Nicholas Manchini said:

Можно ли добавить новую машину на сервер не трогая старую?

На комьюнити MTA появился скрипт с добавлением машин на новых ID

Link to comment
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...