Jump to content

Вопросы и ответы по MTA.


Recommended Posts

Как изменить звуки выстрелов, если можно, то уроком или примером, просто я нубец... только позавчера с pawn'a сюда перешел...

Заранее спасибо

Link to comment
да, это элемент, поэтому используй attachElements.

то есть если к месту скрипт выглядит так:

addEventHandler( 'onClientResourceStart', resourceRoot,

function( )

local uSound = playSound3D("music.mp3", -1921.7745361328, 1088.1264648438, 798.26977539063, true)

setSoundMaxDistance( uSound, 100 )

end

)

а к машине , к примеру Sabre Id - 475, как долнжо выглядеть? я просто в скриптах вообще новичок, поэтому без понятия что о чем)

Link to comment

Не проверял, скорее всего должно работать =)

  
function cMusic (source, commandName) 
    myCar = getPedOccupiedVehicle ( source ) 
    if myCar then 
        local x,y,z = getElementPosition ( myCar ) 
        local sound = playSound3D ("music.mp3", x, y, z, true) 
        attachElements ( sound, myCar, 0, 0, 0 ) 
--      return true 
    end 
--  return false 
end 
addCommandHandler ( "music", cMusic ) 
  

Link to comment

Всем привет!

У меня возникла такая вот проблема как можно изменить названия машин в этом коде?

guiSetVisible (carshopWindow, false) 
guiSetAlpha(carshopWindow,1) 
guiWindowSetSizable(carshopWindow,false) 
selectLabel = guiCreateLabel(0.0423,0.1009,0.8889,0.078,"Выбери свой автомобиль",true,carshopWindow) 
guiSetAlpha(selectLabel,1) 
guiLabelSetColor(selectLabel,255,255,255) 
guiLabelSetVerticalAlign(selectLabel,"top") 
guiLabelSetHorizontalAlign(selectLabel,"left",false) 
guiSetFont(selectLabel,"default-bold-small") 
carGridList = guiCreateGridList(0.0476,0.1789,0.9048,0.6789,true,carshopWindow) 
guiGridListSetSelectionMode(carGridList,0) 
carColumn = guiGridListAddColumn(carGridList,"Авто",0.5) 
costColumn = guiGridListAddColumn(carGridList,"Цена",0.3) 
local cars = {{579,60000},{400,60000},{404,28000},{489,65000},{505,65000},{479,45000},{442,45000},{458,45000},{602,50000},{496,42500},{401,41000},{518,60000},{527,75000},{589,75000},{419,45000},{533,75000},{526,50000},{474,55000},{545,50000},{517,45000},{410,41000},{600,50000},{436,41000},{580,50000},{439,75000},{549,75000},{491,45000},{445,45000},{507,45000},{585,45000},{587,75000},{466,55000},{492,50000},{546,45000},{551,45000},{516,45000},{467,45000},{426,47500},{547,45000},{405,55000},{409,75000},{550,45000},{566,45000},{540,45000},{421,50000},{529,45000},{402,120000},{542,65000},{603,120000},{475,75000},{562,120000},{565,95000},{559,120000},{561,50000},{560,120000},{558,100000},{429,120000},{541,120000},{415,120000},{480,95000},{434,100000},{494,120000},{502,120000},{503,120000},{411,120000},{506,120000},{451,120000},{555,95000},{477,95000},{499,25000},{498,25000},{578,50000},{486,70000},{455,75000},{588,50000},{403,75000},{414,50000},{443,75000},{515,75000},{514,75000},{531,12000},{456,45000},{422,45000},{482,95000},{530,12000},{418,45000},{572,12000},{582,50000},{413,50000},{440,50000},{543,65000},{583,12000},{478,35000},{554,50000},{536,75000},{575,75000},{534,75000},{567,75000},{535,75000},{576,75000},{412,75000},{568,75000},{457,12000},{483,45000},{508,40000},{571,10000},{500,55000},{444,120000},{556,120000},{557,120000},{471,20000},{495,100000},{539,75000},{481,2500},{509,2500},{581,45000},{462,12000},{521,60000},{463,50000},{522,75000},{448,12000},{468,45000},{586,45000},{485,12000},{431,60000},{438,45000},{437,60000},{574,12000},{420,45000},{525,75000},{408,50000},{428,65000}} 
for i,v in ipairs (cars) do 
    local carName = getVehicleNameFromModel (v[1]) 
    local row = guiGridListAddRow (carGridList) 
    guiGridListSetItemText (carGridList, row, 1, carName, false, true) 
    guiGridListSetItemText (carGridList, row, 2, tostring(v[2]), false, true) 

Тобишь вместо стандартных названий Huntley было мое (пример: Ваз2105)

Link to comment

Наверное, можно создать таблицу, в которой будут прописаны название машин по порядку. Чтобы найти в ней имя авто по ид, нужно получит ид ( тут он v[1] ) и отнять от него 399 ( в моем случае нужно и работает ))

  
myCarName = { "Ваз", "Уазик", "Ведро с гайками" } -- Список авто по порядку ид 400, 401, 402 
... 
local carName = myCarName[ v[1] - 399 ] -- вот этим заменить 17 строку  
  

Link to comment
Наверное, можно создать таблицу, в которой будут прописаны название машин по порядку. Чтобы найти в ней имя авто по ид, нужно получит ид ( тут он v[1] ) и отнять от него 399 ( в моем случае нужно и работает ))
  
myCarName = { "Ваз", "Уазик", "Ведро с гайками" } -- Список авто по порядку ид 400, 401, 402 
... 
local carName = myCarName[ v[1] - 399 ] -- вот этим заменить 17 строку  
  

Хмм... Спорно...

Вобщем то, наиболее правильный вариант, имхо, такой:

В таблицу с моделью и ценой машины добавить еще и название:

{579,60000, "Название"} 

И строку

local carName = getVehicleNameFromModel (v[1]) 

заменить на

local carName = v[3] 

P.S. Stemka, код загоняй в [lua] тэги

Link to comment

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

Link to comment
После переноса сервера на хостинг не работает реуср админки, сначало выдавало какие то ошибки, после второй перезагрузки уже нету ошибок но она все же не работает

В файле admin/conf/settings.xml есть строка "true", или что-то в таком духе, её надо удалить. (Вроде можно и весь файл удалить, но точно не помню)

Link to comment

Как сделать, чтобы при создании нового транспорта, старый исчезал.

Я пока смог придумать только это:

function vehspawn(player)

local playeraccount = getPlayerAccount ( player )

if ( playeraccount ) then

local playerveh = getAccountData ( playeraccount, "veh" )

if ( playerveh ) then

if (vehicle) then

setElementHealth ( vehicle, 0)

else

local x,y,z = getElementPosition (player)

local vehicle = createVehicle (playerveh, x+5, y, z,)

end

end

end

end

Link to comment

Хрони свой автомобиль в элемент дате игрока и проверяй если он есть, то удаляй.

Функции для работы:

setElementData 
getElementData 
isElement 
destroyElement 

Link to comment
  • Scripting Moderators
Как сделать в Freeroam так, чтобы игрок мог спавнить только 1 авто?

В meta.xml есть строка:

<setting name="*vehicles/maxperplayer" value="[2]" /> 

Цифра 2 - кол-во авто которое может иметь игрок.

Link to comment

Помогите. Когда покупаешь машину, в элемент "vehspawn" записывается ид машины и он означает то, что машина куплена и заспавнилась. Но почему-то скрипт не работает. Скрипт не видит элемент "vehspawn". Вот код:

function spawncar() 
local x,y,z = getElementPosition(source) 
    if isElement( "vehspawn" ) then 
        local vehicle = getElementData (source, "vehspawn") 
        local createv = createVehicle(vehicle, x+5, y, z) 
        outputChatBox("Vehicle has been successfully created",source) 
    else     
        local playeraccount = getPlayerAccount ( source ) 
        if ( playeraccount ) then -- if the player is logged in 
            local vehicle = getAccountData ( playeraccount, "veh") 
            local createv = createVehicle(vehicle, x+5, y, z) 
            outputChatBox("Vehicle has been successfully created",source) 
        end 
    end 
end 

addEvent ("Comprar carro", true) 
addEventHandler ("Comprar carro", getRootElement(),  
function(id2, cost2, name2,x, y, z, sRz) 
  if (getPlayerMoney (source) >= tonumber(cost2)) then 
    outputChatBox ("You bought " .. name2, source, 255, 0, 0, false) 
    outputChatBox ("ID: " .. id2, source, 255, 0, 0, false) 
    outputChatBox ("Price: " .. cost2, source, 255, 0, 0, false) 
    takePlayerMoney (source, tonumber (cost2)) 
    local playeraccount = getPlayerAccount ( source ) 
    if ( playeraccount ) then -- if the player is logged in 
        setAccountData ( playeraccount, "veh", id2 ) -- Сохраняем тачку в акк 
    end 
    local x,y,z = getElementPosition (source) 
    local vehicle = createVehicle (id2, x+5, y, z, 0, 0, sRz ) 
    setElementData (source, "vehspawn", id2) 
  else 
    outputChatBox ("Error", source, 255, 0, 0, false) 
  end 
end) 
  

Edited by Guest
Link to comment

Почему setElementHealth не устанавливает педам значение выше 100? Как установить педу 999 жизней?

local ped= createPed( 100, x, y, z ) 
setElementHealth ( zomb, 999 ) 
outputChatBox ( "Ped hp: "..getElementHealth ( zomb ).."." ) 

при спавне все-равно пишет что у него 100 хп. Дамаг все равно идет на сотню.

Link to comment
Почему setElementHealth не устанавливает педам значение выше 100? Как установить педу 999 жизней?

Ну вариант 1:

Если у педа будет 999 жизней, то путем несложных высичлений мы узнаем, что получать урона он должен в 9.9 раз меньше... Следовательно, при попадании по педу делим полученный урон на 9.9

Вариант 2:

Присвоить отдельную дату с жизнями и по при попадании по педу ее уменьшать на определенное значение, которое прямо пропорционлально нанесенному урону... Обычный урон при этом убрать...

Link to comment

У меня не покупаються ато после того, как поменял название автомобилей в этом Моде:https://community.multitheftauto.com/index.php?p=resources&s=details&id=2604

По этой инструкцие:

.

Вобщем то, наиболее правильный вариант, имхо, такой:

В таблицу с моделью и ценой машины добавить еще и название:

{579,60000, "Название"} 

И строку

local carName = getVehicleNameFromModel (v[1]) 

заменить на

local carName = v[3] 

P.S. Stemka, код загоняй в [lua] тэги

При нажатии на кнопку купить вылетает сообщение о покупке в чат, открываю панель авто ф3 пишет что у вас нет машины.

Link to comment
local object1 = createObject(10841,1067.0999755859,1361.0999755859,15.300000190735,0,0,0)  
local otkr1 = on 
  
function gate ( player ) 
    if otkr1 == "on" then  
        moveObject(object1, 1000,1067.0999755859,1361.0999755859,7.3000001907349,0,0,0) 
        otkr1 = "off" 
        outputChatBox ( "откр" ) 
    else 
        moveObject(object1, 1000,1067.0999755859,1361.0999755859,15.300000190735,0,0,0) 
        otkr1 = "on" 
        outputChatBox ( "закр" ) 
    end 
end 
  
addCommandHandler("/o",gate) 

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

Link to comment

Если вы хотите делать это для "всех", то вам нужно делать это на стороне сервера.

И ещё кое-что, например:

local otkr1 = on 

Вы похоже не знаете Lua и получаете значение переменной on и она у вас не определена, но вы хотите использовать её как "строку".

addCommandHandler("/o",gate) 

"/o" - это неверно, просто "o" без всяких слэшов. Смотрите примеры на вики чтоли.

И вообще этот код можно сократить до нескольких строк.

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