• Просьба не публиковать сообщения с предложениями продажи модов или сборок!

    Мы против использования и перепродажи слитых модов и переделок на их основе. Остальное также сложно верифицировать, поэтому в целом пока что запрещаем эту тему на сайте.

script Простенький спавн ТС

Brian_Galaxy

Trainee
Сообщения
13
Много где искал, изучил этот ваш Freemode, но нигде нет конкретной информации по созданию команды спавна машины.
Вот до чего в процессе изучения офф. ресурсов дошел я. Простенькая команда, которая спавнит ТС на персонаже.
Команда: /v [Модель]
JavaScript:
mp.events.addCommand("v",(player,model)=>{
    mp.vehicles.new(model, player.position,
        {
            heading: player.heading,
            numberPlate: "TEST",
            alpha: 0,
            color: "Black",
            locked: false,
            engine: true,
            dimension: 0
        });
});
 
А не будет машина спавнится в игроке? Можно еще добавить ей смещение по x или y координате на 1 единицу.
 
Лучше так сделать
JavaScript:
mp.events.addCommand('veh', (player, _, id, veh, color1, color2) => {
    if(player.admin < 1) return player.outputChatBox("<SERVER> У вас нет доступа к этой команде!");
    if (id == undefined || veh == undefined) return player.outputChatBox('/veh [id] [model] [color1] [color2]');
    let target = mp.players.at(id);
    if (target == null) return player.notify('~r~ID игрока не найден!');
    let pos;
    pos = target.position;
    var adminVeh = mp.vehicles.new(mp.joaat(veh), new mp.Vector3(pos.x + 2, pos.y, pos.z));
    adminVeh.setColor(parseInt(color1), parseInt(color2));
    adminVeh.numberPlate = "SWG RP";  //Номер машины
    player.dim = player.id;
    setTimeout(() => {
        target.putIntoVehicle(adminVeh, 0) // Спавн за водительское место
    }, 150)
    player.notify('~g~ Заспавенно!');
})
 
Лучше так сделать
JavaScript:
mp.events.addCommand('veh', (player, _, id, veh, color1, color2) => {
    if(player.admin < 1) return player.outputChatBox("<SERVER> У вас нет доступа к этой команде!");
    if (id == undefined || veh == undefined) return player.outputChatBox('/veh [id] [model] [color1] [color2]');
    let target = mp.players.at(id);
    if (target == null) return player.notify('~r~ID игрока не найден!');
    let pos;
    pos = target.position;
    var adminVeh = mp.vehicles.new(mp.joaat(veh), new mp.Vector3(pos.x + 2, pos.y, pos.z));
    adminVeh.setColor(parseInt(color1), parseInt(color2));
    adminVeh.numberPlate = "SWG RP";  //Номер машины
    player.dim = player.id;
    setTimeout(() => {
        target.putIntoVehicle(adminVeh, 0) // Спавн за водительское место
    }, 150)
    player.notify('~g~ Заспавенно!');
})
А еще лучше так:
JavaScript:
mp.events.addCommand('veh', (player, _, id, veh, color1, color2) => {
    if(player.admin < 1)
        return player.outputChatBox("<SERVER> У вас нет доступа к этой команде!");
    
    if (!id || !veh)
        return player.outputChatBox('/veh [id] [model] [color1] [color2]');
    
    const target = mp.players.at(id);
    if (!target)
        return player.notify('~r~ID игрока не найден!');
    
    const pos = target.position;
    const adminVeh = mp.vehicles.new(mp.joaat(veh), new mp.Vector3(pos.x + 2, pos.y, pos.z));
    adminVeh.setColor(parseInt(color1), parseInt(color2));
    adminVeh.numberPlate = "SWG RP";  //Номер машины
    
    player.dim = player.id;
    setTimeout(() => target.putIntoVehicle(adminVeh, 0) , 150)
    player.notify('~g~ Заспавенно!');
})
 
Рас уж мы не проверяем color1 и color2, то стоит задать им значения по-умолчанию. Тогда их не обязательно будет указывать в команде и не будет ошибок если их все же нет.
JavaScript:
mp.events.addCommand('veh', (player, _, id, veh, color1 = 0, color2 = 0) => {
 
Рас уж мы не проверяем color1 и color2, то стоит задать им значения по-умолчанию. Тогда их не обязательно будет указывать в команде и не будет ошибок если их все же нет.
JavaScript:
mp.events.addCommand('veh', (player, _, id, veh, color1 = 0, color2 = 0) => {
так это... цвет по стоку можно и не указывать, будет черное авто =/
у нас же проверка идет то ко на ид игрока и на название авто
 
так это... цвет по стоку можно и не указывать, будет черное авто =/
у нас же проверка идет то ко на ид игрока и на название авто
А в консоли не ругается setColor, что вместо числа там прилетает NaN? Если нет, то ок :) Мне кажется должно ругаться
 
Код:
mp.events.addCommand('veh', (player, veh) => {
        if(veh === undefined) return player.outputChatBox('/veh id_car');
        let pos;
        pos = player.position;
        let adminVeh = mp.vehicles.new(mp.joaat(veh), new mp.Vector3(pos.x + 2, pos.y, pos.z));
})



А вот мой если кому интересно
 
Лучше так сделать
JavaScript:
mp.events.addCommand('veh', (player, _, id, veh, color1, color2) => {
    if(player.admin < 1) return player.outputChatBox("<SERVER> У вас нет доступа к этой команде!");
    if (id == undefined || veh == undefined) return player.outputChatBox('/veh [id] [model] [color1] [color2]');
    let target = mp.players.at(id);
    if (target == null) return player.notify('~r~ID игрока не найден!');
    let pos;
    pos = target.position;
    var adminVeh = mp.vehicles.new(mp.joaat(veh), new mp.Vector3(pos.x + 2, pos.y, pos.z));
    adminVeh.setColor(parseInt(color1), parseInt(color2));
    adminVeh.numberPlate = "SWG RP";  //Номер машины
    player.dim = player.id;
    setTimeout(() => {
        target.putIntoVehicle(adminVeh, 0) // Спавн за водительское место
    }, 150)
    player.notify('~g~ Заспавенно!');
})
У тебя упоминается проверка на админа, а как ее лучше сделать?
 
У тебя упоминается проверка на админа, а как ее лучше сделать?

Лучше конечно этот параметр же хранить где-то в базе данных, например в таблице с аккаунтами и при успешной авторизации делать SELECT запрос в БД, например: SELECT admin FROM accounts WHERE user_id = ? LIMIT 1, где user_id - номер твоего аккаунта или по любому другому параметры, но правильнее всего будет сделать реализацию отдельной таблицей администрации, например таблица - admins и в ней уже указываешь номер аккаунта и уровень администратора (и улучшаешь) и тогда будет SELECT admin_level FROM admins WHERE user_id = ? LIMIT 1;

Когда данные получил (самый простой способ), то присваиваешь player.admin, можешь для теста просто сделать присвоение при входе и т.п, но лучше отдельный массив.
 
Назад
Верх