MX_Master

Общий мини "HELP ME" топик по скриптингу

Recommended Posts

for _, v in pairs( Table ) do 
 for _, v2 in pairs( v ) do 
    source:setData( v2[ 1 ], v2[ 2 ] ); 
 end 
end 
  

Спасибо!

Share this post


Link to post

Здравствуйте, уважаемые форумчане :D Прошу помощи т.к. чую я, что что-то не догоняю, ибо скриптинг только осваиваю.

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

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

т.е.

  
          local x, y, z = getElementPosition(vehicle) 
          spawnPlayer(player, x, y, z) 
           

Проблема в том, что при вызове

getElementPosition(vehicle) 

x, y, z присваиваются начальные координаты транспорта(координаты по которым он спавнился), а не те, которые в данный момент времени. А следовательно персонажа спавнит в точке спавна транспорта и почему-то транспорт так же спавнится в нач точке или рядом... визуально ощущение будто его отбрасывает назад. А если проделать все тоже самое еще раз то персонажа спавнит в след точку, в которую он должен был, по моему представлению, заспавнится в предыдущий раз.

P.S. Спавн персонажа реализован функцией spawn. Вызывается она по таймеру

setTimer(spawn, 20000, 1) 

И делаю это все на стороне сервера.

Share this post


Link to post

Получай координаты тачки на стороне клиента, после этого делай тригер на сервер и спавни.

Share this post


Link to post

Всем привет, и всех не атеистов с рождеством :) У меня вопрос, можно ли со стороны сервера изменить клиенту масштаб чата и его фон?

Share this post


Link to post
Всем привет, и всех не атеистов с рождеством :) У меня вопрос, можно ли со стороны сервера изменить клиенту масштаб чата и его фон?

Нет. Для этого придётся сделать свой чат.

Share this post


Link to post
Получай координаты тачки на стороне клиента, после этого делай тригер на сервер и спавни.

Спасибо! :D Реализовал. Но вот теперь вопросики возникли... а будут ли теперь проблемы с синхронизацией между игроками? Т.е. может ли оказаться у одного игрока транспорт в одном месте а у другого в другом в один и тот же момент времени? И если может, то тогда получится, что игроки буду спавнится по немного различным координатам? Или например один заспавнится через пару секунд после другого, при условии что спавн должен быть только тогда, когда транспорт окажется в определенной координате ? И если будет, то как этого избежать?

И еще вопрос. Возможно ли сделать так, чтоб бы транспорт было видно на большом расстоянии? Хотя бы в 1км, а лучше в пару.

Пробовал делать так:

engineSetModelLODDistance (476, 300) 

476 - это ID самолета Rustler. Так же пробовал вместо ID использовать элемент. Но изменений не заметил. Самолет пролетает и исчезает всегда на одном и том же месте. Возможно я в функции передаю не тот аргумент, но на вики вроде как написано что надо ID. Но я хз будет ли ID модели самолета - 476. Возможно моя ошибка в том что эти ID не одно и тоже... Так же как я понял из вики, то есть ограничения на дальность прорисовки. Но возможно я не так понял...

Юзаю это все вместе с

setElementStreamable 

что бы клиент просчитывал транспорт на любом расстоянии от игрока.

Share this post


Link to post
for _, v in pairs( Table ) do 
 for _, v2 in pairs( v ) do 
    source:setData( v2[ 1 ], v2[ 2 ] ); 
 end 
end 
  

Еще один вопрос а если я буду использовать JSON?

  
local needs = fromJSON(data[1]['needs']) 
local status = fromJSON(data[1]['status']) 
local items = fromJSON(data[1]['items']) 
for i, data in ipairs(Table.need) do 
    player:setData(data[1], needs[i]) 
end 
for i, data in ipairs(Table.stat) do 
    player:setData(data[1], status[i]) 
end 
for i, data in ipairs(Table.item) do 
    player:setData(data[1], items[i]) 
end 
  

Share this post


Link to post

Ребята, подскажите, как отключить стандартные ХП и никнеймы у персонажа?

Share this post


Link to post

Как можно ограничить дистанцию бега? Тобишь, чтобы персонаж уставал. На вики найти не могу, поиск тоже результатов не дал

Share this post


Link to post
Как можно ограничить дистанцию бега? Тобишь, чтобы персонаж уставал. На вики найти не могу, поиск тоже результатов не дал

https://wiki.multitheftauto.com/wiki/SetPedStat

Да это то я нашел, но ни один параметр не повлиял на продолжительность бега

Share this post


Link to post
Как можно ограничить дистанцию бега? Тобишь, чтобы персонаж уставал. На вики найти не могу, поиск тоже результатов не дал

https://wiki.multitheftauto.com/wiki/SetPedStat

Да это то я нашел, но ни один параметр не повлиял на продолжительность бега

https://wiki.multitheftauto.com/wiki/SetPedWalkingStyle

Share this post


Link to post

Да это то я нашел, но ни один параметр не повлиял на продолжительность бега

https://wiki.multitheftauto.com/wiki/SetPedWalkingStyle

Это стиль бега. А мне нужно сделать так, чтобы персонаж уставал, можно конечно скриптово его тормозить,тобишь через Velocity, но неужели в МТА нет готового решения? В сингле было что то типа прокачки этого умения, чем больше ты бегаешь, тем больше выносливость, чем больше выносливость, тем дальше ты сможешь пробежать.

Share this post


Link to post
Это стиль бега. А мне нужно сделать так, чтобы персонаж уставал, можно конечно скриптово его тормозить,тобишь через Velocity, но неужели в МТА нет готового решения? В сингле было что то типа прокачки этого умения, чем больше ты бегаешь, тем больше выносливость, чем больше выносливость, тем дальше ты сможешь пробежать.

Вроде как нет, нужно писать всю систему самому.

Share this post


Link to post

Всем привет, хочу сделать панель где будет показано изображение скина игрока, можно ли сделать это не через вывод сохраненных изображений на клиенте?

1. Создаем педа на экране

2. Вращаем педа

3. Пишем шейдер, который уменьшает размер элемента

https://wiki.multitheftauto.com/wiki/Sh ... #Ped_morph (посмотреть и сделать на основе его, там используется уменьшение/увеличение частей всего тела, думаю можно поэкспериментировать)

4. Применяем шейдер к этому педу

createPed 
setElementPosition 
setElementRotation 
getWorldFromScreenPosition 
dxCreateShader 
engineApplyShaderToWorldTexture 

С этого поста не совсем понял как засунуть пед в GuiCreateStaticImage/DxDrawImage, или как его по другому вывести? Заранее спасибо.

Share this post


Link to post

Подтяните в коде...

Какой метод лучше использовать?

Логическое

  
function isLogged(element) 
    if (not element) or (element:getType() ~= 'player') then return end 
    local elementData = element:getData('logged') 
    return elementData and true or false 
end 
  

IF ELSE

  
function isLogged(element) 
    if (not element) or (element:getType() ~= 'player') then return end 
    if (element:getData('logged') == true) 
        return true 
    else 
        return false 
    end 
end 
  

Share this post


Link to post
Подтяните в коде...

Какой метод лучше использовать?

Логическое

  
function isLogged(element) 
    if (not element) or (element:getType() ~= 'player') then return end 
    local elementData = element:getData('logged') 
    return elementData and true or false 
end 
  

IF ELSE

  
function isLogged(element) 
    if (not element) or (element:getType() ~= 'player') then return end 
    if (element:getData('logged') == true) 
        return true 
    else 
        return false 
    end 
end 
  

function isLogged( element ) 
    return element and element:getType() == 'player' and element:getData( 'logged ') == true; 
end 

Share this post


Link to post
Это стиль бега. А мне нужно сделать так, чтобы персонаж уставал, можно конечно скриптово его тормозить,тобишь через Velocity, но неужели в МТА нет готового решения? В сингле было что то типа прокачки этого умения, чем больше ты бегаешь, тем больше выносливость, чем больше выносливость, тем дальше ты сможешь пробежать.

Вроде как нет, нужно писать всю систему самому.

Алгоритм: Ставишь таймер, который обновляет раз в 30 секунд состояние бега (присваиваешь к переменной или элемент дате значение) если число == 100, то применяешь toggleControl и проигрываешь анимацию "уставания" - можешь найти в ресурсе freeroam, после истечения времени снова применяй toggleControl чтобы игрок смог снова бегать.

toggleControl 
setPedAnimation 
setTimer 
  

Share this post


Link to post

Пытаюсь запретить пассажирам машины создавать другие машины, но в итоге даже водитель не может. В чем ошибка?

function createSelectedVehicle(leaf, seat) 
   local vmashine = getPedOccupiedVehicle(getLocalPlayer()) 
   if vmashine then 
    if (seat == 0) then 
                if not leaf then 
                leaf = getSelectedGridListLeaf(wndCreateVehicle, 'vehicles') 
                if not leaf then 
                return 
                end 
                end 
                server.giveMeVehicles(leaf.id) 
      else return end 
   else 
                if not leaf then 
                leaf = getSelectedGridListLeaf(wndCreateVehicle, 'vehicles') 
                if not leaf then 
                return 
                end 
                end 
                server.giveMeVehicles(leaf.id) 
   end 
end 

upd: сам сделал, надо было редактировать функцию на стороне сервера.

Share this post


Link to post

Ребят, нужна ваша помощь!

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

Вопрос:

Как сохранять и хранить эти данные?

Share this post


Link to post
Ребят, нужна ваша помощь!

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

Вопрос:

Как сохранять и хранить эти данные?

https://wiki.multitheftauto.com/wiki/Server_Scripting_Functions#Account_functions

https://wiki.multitheftauto.com/wiki/Server_Scripting_Functions#SQL_functions

Share this post


Link to post

Снова вас беспокою ребят! На этот раз проблема с триггерами! Я со своим светлым умом, никак не могу понять как они работают =\

Для начала мне нужно просто брать у клиента, координаты персонажа и отправлять их на сервер! Как такое сделать? И обьясните пожалуйста как работает, на википедии уж слишком заумно!

Share this post


Link to post

Я просто скину пример твоего случая, а ты задашь вопросы если они будут:

function someFunc() 
local x,y,z = getElementPosition(myElement) 
triggerServerEvent("myServerEvent",localPlayer,x,y,z) 
end 
  

function someServerFunc(x,y,z) 
outputChatBox("X: "..tostring(x)..", Y: "..tostring(y)..", Z: "..tostring(z)) 
end 
addEvent("myServerEvent",true) 
addEventHandler("myServerEvent",root,someServerFunc) 
  

Share this post


Link to post

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.