Jump to content

[ПОМОЩЬ] /setvehicle появляемся внутри автомобиля


Recommended Posts

Привет всем. Помогите, пожалуйста со следующим плагином. Идея в том что когда ты прописуешь /setvehicle [название авто] или /sv [название авто] то появляешься сразу в нем. Такой плагин стоял на нескольких серверах, щас есть на [DKR] Freeroam. Работает как и фрироамская команда /cv [car], только ты появляешься внутри авто.

Как такое сделать?

Link to comment

Ну а как их скомбинировать? Я пытался для основы взять функцию с фрироама, но ничего не получается:

Функция с фрироама на создание транспорта (client side):

function createVehicleCommand(cmd, ...) 
    local vehID 
    local vehiclesToCreate = {} 
    local args = { ... } 
    for i,v in ipairs(args) do 
        vehID = tonumber(v) 
        if not vehID then 
            vehID = getVehicleModelFromName(v) 
        end 
        if vehID then 
            table.insert(vehiclesToCreate, math.floor(vehID)) 
        end 
    end 
    server.giveMeVehicles(vehiclesToCreate) 
end 
addCommandHandler('createvehicle', createVehicleCommand) 
addCommandHandler('cv', createVehicleCommand) 

--

используй ВВ код [cоde=luа][/cоde] для вставки LUA кода

Link to comment

Простейший пример:

addCommandHandler ( "cv", 
function ( player, command, model ) 
 model = tonumber ( model ) 
 if model then 
  local x, y, z = getElementPosition ( player ) 
  local vehicle = createVehicle ( model, x + 2, y, z ) 
  if vehicle then 
   warpPedIntoVehicle ( player, vehicle ) 
  else 
   outputChatBox ( "Вы не можете использовать такой ID для транспортного средства", player ) 
  end 
 else 
  outputChatBox ( "Синтаксис: /cv [model]", player ) 
 end 
end ) 

Link to comment
addCommandHandler ( "cv", 
function ( player, command, name ) 
 if name then 
  local model = getVehicleModelFromName ( name ) 
  if model then 
   local x, y, z = getElementPosition ( player ) 
   warpPedIntoVehicle ( player, createVehicle ( model, x + 2, y, z ) ) 
  else 
   outputChatBox ( "Транспортного средства с таким именем не существует", player ) 
  end 
 else 
  outputChatBox ( "Синтаксис: /cv [name]", player ) 
 end 
end ) 

Link to comment

Важны не важны но при развитии игрового мода тебе придется переписывать скрипт заново (в случае добавления новых измерений). Если же это одноразовый скрипт то все норм.

Link to comment

Тут такая проблема возникла... Вот скрипт то работает отлично но есть одно но: если я прописую команду /sv [авто], я появляюсь в автомобиле, если я пропишу эту команду еще раз, появиться еще один автомобиль. Получается можно наспавнить целую кучу транспорта. Что нужно добавить в скрипт что бы предыдущий автомобиль удалялся? То есть если я пропишу /sv rhino я сяду в танк, потом я пропишу /sv dumper и появлюсь в самосвале, но при этом танк пропадет. Как такое сделать? :shock:

Link to comment

Можно например так:

local vehicles = { } 
  
addCommandHandler ( "cv", 
function ( player, command, name ) 
 if name then 
  local model = getVehicleModelFromName ( name ) 
  if model then 
   local x, y, z = getElementPosition ( player ) 
   if isElement ( vehicles [ player ] ) then destroyElement ( vehicles [ player ] ) end 
   vehicles [ player ] = createVehicle ( model, x + 2, y, z ) 
   warpPedIntoVehicle ( player, vehicles [ player ] ) 
  else 
   outputChatBox ( "Транспортного средства с таким именем не существует", player ) 
  end 
 else 
  outputChatBox ( "Синтаксис: /cv [name]", player ) 
 end 
end ) 

Скрипт сырой, можно значительно его улучшить. Например, добавить удаление транспорта после выхода игрока из игры. Однако, еще проще изменить оригинальный freeroam. Скажем, заменить блок кода в fr_server.lua(327-334 строки):

... 
            if vehID == 464 then 
                warpPedIntoVehicle(source, vehicle) 
            elseif not g_Trailers[vehID] then 
                if getOption('vehicles.idleexplode') then 
                    g_VehicleData[vehicle].timers.fire = setTimer(commitArsonOnVehicle, getOption('vehicles.maxidletime'), 1, vehicle) 
                end 
                g_VehicleData[vehicle].timers.destroy = setTimer(unloadVehicle, getOption('vehicles.maxidletime') + (getOption('vehicles.idleexplode') and 10000 or 0), 1, vehicle) 
            end 
... 

на

... 
               warpPedIntoVehicle(source, vehicle) 
            if not g_Trailers[vehID] and vehID ~= 464 then 
                if getOption('vehicles.idleexplode') then 
                    g_VehicleData[vehicle].timers.fire = setTimer(commitArsonOnVehicle, getOption('vehicles.maxidletime'), 1, vehicle) 
                end 
                g_VehicleData[vehicle].timers.destroy = setTimer(unloadVehicle, getOption('vehicles.maxidletime') + (getOption('vehicles.idleexplode') and 10000 or 0), 1, vehicle) 
            end 
... 

Link to comment

Вот с такой проблемой столкнулся: танк заблокировал для общего доступа в ресурсе фрироам а через этот ресурс его вызвать можно. Как это исправить дайте наводку пожалуста...

Link to comment
Вот с такой проблемой столкнулся: танк заблокировал для общего доступа в ресурсе фрироам а через этот ресурс его вызвать можно. Как это исправить дайте наводку пожалуста...

проверку на ID танка перед созданием...

addCommandHandler ( "cv", 
    function ( player, command, name ) 
        if name then 
            local model = getVehicleModelFromName ( name ) 
  
            if model == 432 then 
                outputChatBox ( "Танки запрещены", player ) 
                return 
            end 
             
            if model then 
                local x, y, z = getElementPosition ( player ) 
                warpPedIntoVehicle ( player, createVehicle ( model, x + 2, y, z ) ) 
            else 
                outputChatBox ( "Транспортного средства с таким именем не существует", player ) 
            end 
        else 
            outputChatBox ( "Синтаксис: /cv [name]", player ) 
        end 
    end  
) 

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