Jump to content

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


Recommended Posts

Posted

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

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

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

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

addEventHandler( 'onClientResourceStart', resourceRoot,

function( )

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

setSoundMaxDistance( uSound, 100 )

end

)

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

Posted

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

  
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 ) 
  

Posted

Всем привет!

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

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)

Posted

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

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

Posted
Наверное, можно создать таблицу, в которой будут прописаны название машин по порядку. Чтобы найти в ней имя авто по ид, нужно получит ид ( тут он 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] тэги

Posted

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

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

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

Posted

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

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

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

Posted

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

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

setElementData 
getElementData 
isElement 
destroyElement 

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

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

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

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

Posted (edited)

Помогите. Когда покупаешь машину, в элемент "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
Posted

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

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

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

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

Ну вариант 1:

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

Вариант 2:

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

Posted

У меня не покупаються ато после того, как поменял название автомобилей в этом Моде: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 пишет что у вас нет машины.

Posted
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) 

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

Posted

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

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

local otkr1 = on 

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

addCommandHandler("/o",gate) 

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

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

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