Jump to content

Вопрос по функционалу МТА


Recommended Posts

Здраствуйте пользователи. Я вот решил перейти с Pawn на Lua, говорят луа проще, и всё такое. Сегодня читал несколько статей на вики и других форумах, да, убедился - достаточно просто, но.

У меня возникли некоторые вопросы. Поиграв на нескольких серверах (в основном это были DD сервера), я заметил, что у некоторых не меняется время и погода на карте. И первый вопрос заключается именно в этом.

- Какие функции могут замораживать время и погоду? Я видел функцию "setTime", и она как раз таки изменяла время, но время продолжало идти.

Порывшись в галерее скриншотов с МТА, я увидел, что можно как-то изменять яркость игры, делать её темней, например чтобы любой источник света был ярким в этой области (помните ночи из игр, серии Slender, и флешлайт был единственным источником света, и достаточно ярким для темной области).

- Как можно изменить яркость внешнего мира для фонарика? Насколько я знаю, в SA-MP почти чёрный мир делался с помощью установки полночи во времени, и изменении погоды на "черно-белый, интерьер", ибо ночью белый свет менялся.

Покреативив, я написал команду, но мне хотелось бы увидеть, чтобы она исполнялась с помощью какой-либо клавиши (например RMB(рус ПКМ)), или исполнялась при вызове другой функции (function). Как так можно сделать?

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

- Как загрузить модель и текстуру, для того чтобы создать объект в игре? Куда нужно пихать данные ресурсы? И другое.

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

Заранее благодарю за ваши ответы.

:D

Link to comment
  • Replies 96
  • Created
  • Last Reply

Top Posters In This Topic

Почти по каждой функции в мта есть пример использования.

Яркость, эффекты - шейдеры.

Как пихать объекты есть в уроках.

для ускорения персов можно менять режим ходьбы или ускорять время, можно менять параметры авто... Бинд тоже расписан( по-моему 'mouse_1' )

Link to comment

Единственный вариант, который я видел с замораживанием времени - это setMinuteDuration(тут-огромное-число).

viewforum.php?f=141 - скриптинговый подфорум, в нем есть еще один подфорум - уроки.

https://wiki.multitheftauto.com/wiki/BindKey - вроде это и есть ф-я привязки клавиши (бинд)

Link to comment
  • Other Languages Moderators

Я вот решил перейти с Pawn на Lua, говорят луа проще, и всё такое.

Lua проще, но архитектура MTA сложнее, чем архитектура SAMP.

"- Как загрузить модель и текстуру, для того чтобы создать объект в игре? Куда нужно пихать данные ресурсы? И другое."

Нельзя создавать, можно только заменять.

Link to comment

https://wiki.multitheftauto.com/index.php?title=RU/Main_Page

Тут самое важное есть на русском.

В фрироме как раз так и делается setMinuteDuration(9001). Где-то в примерах было по событию onClientRender, но этот вариант мне не нравится.

По поводу создания: на багтрекере можно этот вопрос продонатить.

Link to comment

Спасибо.

Такой вопрос теперь. Как сказано в данном туторе, всё должно работать. У меня после того, что я сделал не определяет ресурс.

Загружаю всё с клиента, в мод загружаю как отдельный ресурс.

local id = 1509 
function resourceroot() 
    local txd = engineLoadTXD("files/grass.txd") 
    local dff = engineLoadDFF("files/grass.dff") 
    engineImportTXD(txd, id) 
    engineReplaceModel(dff, id) 
end 
addEventHandler("onClientResourceStart", resourceroot) 

Единственное, что я сделал по своему - название функции, ибо MTA SE ругался на то, что строка function не имеет названия, а добавление эвента не может найти resourceroot

Коллизия не заменится, ибо она тут особой роли для моего объекта не играет

Я загружаю данный скрипт из ZIP архива как ресурс. Вот мета данного ресурса

<meta> 
        <info author="TraniLurese" type="script" /> 
    <script src="objects.lua" type="client" /> 
    <file src="files/grass.dff" type="client" /> 
    <file src="files/grass.txd" type="client" /> 
</meta> 

Вот так я загружаю данный ресурс в ресурс мода

<include resource="loadmodels" type="client" /> 

loadmodels - архив с ресурсом

При загрузке вылазиет ошибка

(Failed to link to load models) 
ERROR: mapmanager\mapmanager_main.lua:376 mapmanager: gamemode resource could not be started. 

Без данного ресурса с моделями всё работает нормально. Стоит его подключить, терминал пошёл в полёт.

Тупанул немножечко - ща исправлю и проверю

Link to comment
local id = 1509 
function replace() 
    local txd = engineLoadTXD("files/grass.txd") 
    local dff = engineLoadDFF("files/grass.dff") 
    engineImportTXD(txd, id) 
    engineReplaceModel(dff, id) 
end 
addEventHandler("onClientResourceStart", resourceRoot, replace) 

Link to comment

Подкорректировал до такого состояния:

local id = 1509 
addEventHandler("onClientResourceStart", resourceroot, 
    function() 
        local txd = engineLoadTXD("models/files/grass.txd") 
        local dff = engineLoadDFF("models/files/grass.dff") 
        engineImportTXD(txd, id) 
        engineReplaceModel(dff, id) 
    end 
) 

MTA ME не сообщал про ошибки. Но даже не загрузив мод (видимо там сразу проверка ресурсов), мне предложили сразу выключить сервер.

А причиной послужило:

ERROR: Could not find file files/grass.dff for resource loadmodels  
ERROR: Problem with resource: MyGM; Failed to link to loadmodels  
bind (...) failed: Error code - 10048 

Я в скрипте даже точно указал, что файл находится в Models, даже проверил сам, находится ли он там. На TXD видимо не стал ругаться - видимо с ним всё нормально.

Link to comment
local id = 1509 
function replace() 
    local txd = engineLoadTXD("files/grass.txd") 
    local dff = engineLoadDFF("files/grass.dff") 
    engineImportTXD(txd, id) 
    engineReplaceModel(dff, id) 
end 
addEventHandler("onClientResourceStart", resourceRoot, replace) 

Ресурс загрузился, но есть ошибка, написана выше - связана с DFF. Сервер не видит DFF модель. В версии выше (в моей версии) сервер не может загрузиться, а в вашей ошибки есть, но всё загружается кроме DFF.

Link to comment
  • Other Languages Moderators

"я написал команду, но мне хотелось бы увидеть, чтобы она исполнялась с помощью какой-либо клавиши"

bindKey или onClientKey

Link to comment

Мб, мое предположение - идиотское, но у вас расширение (dff) - маленькими буквами?

И еще: в мете, где include... не совсем понятно, зачем дописано client.

Тут - https://wiki.multitheftauto.com/index.php?title=Meta.xml вроде об этом ни слова, да и сам не помню такого.

Link to comment
  • Other Languages Moderators
Мб, мое предположение - идиотское, но у вас расширение (dff) - маленькими буквами?

И еще: в мете, где include... не совсем понятно, зачем дописано client.

Тут - https://wiki.multitheftauto.com/index.php?title=Meta.xml вроде об этом ни слова, да и сам не помню такого.

Еще в мете у стоит type="client"

Link to comment

Еще в мете у стоит type="client"

Я, например, всегда даже на файлах ставлю type="client", это не должно влиять.

Зачем? type только для скриптов, все остальные файлы и без этого клиентские.

Link to comment
Мб, мое предположение - идиотское, но у вас расширение (dff) - маленькими буквами?

А надо большими? Я всегда мелкими пишу расширение, тем более ZModeler и так в мелкое сохраняет

Link to comment
Мб, мое предположение - идиотское, но у вас расширение (dff) - маленькими буквами?

А надо большими? Я всегда мелкими пишу расширение, тем более ZModeler и так в мелкое сохраняет

Нет, никаких рекомендаций к этому не видел.

Так как язык я почти не знаю, могу строить по сути лишь догадки.

Суть догадки была в том, что вдруг оно регистрозависимое. Укажешь расширение не так - и усе :)

Повторяю, это была лишь догадка.

Link to comment

Нуок, но всёрно как бы сделать всё так, чтобы работало, я то всего в Луа 2 дня, и только разобрался с некоторыми функциями, практикуясь на своём сервере.

Link to comment
DFF используется только для автомобилей, для объектов - TXD и COL

С чего бы это? На сколько мне известно, DFF используется для всех объектов ГТА (особенно с учётом что мы всегда делаем объект в 3Ds Max а потом уже его COL). + В игре много объектов которые не имеют коллизии.

P.S. Совсем недавно делал полицейскую мигалку в ZModeler 2, без всяких COL, ибо он там не нужен.

Link to comment
А все же... откуда id 1509?

ID 1509 это бутылка вина (подыскал в редакторе карт). Если посмотреть тот тутор, который указан в 7м сообщении, то можно увидеть, что там используется произвольный ID.

Link to comment

Ещё возник вопрос. Вот допустим GUI - клиентская сторона, как можно сделать так, чтобы Gui ProgressBar показывал именно здоровье, я накалякал функцию, но она показывает ХП только при старте.

function GuiEdit() 
    gui1 = guiCreateProgressBar(1033, 8, 241, 20, false) 
    guiProgressBarSetProgress(gui1, getElementHealth(getLocalPlayer()))     
end 
addEventHandler("onClientResourceStart", getRootElement(getThisResource()), GuiEdit) 

Есть ли такая функция, типа OnPlayerUpdate (Pawn)?

Link to comment

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...