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

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

Полезные функции, фрагменты кода / Snippets

Lev Angel

Developer
Команда форума
Скриптер
Сообщения
924
Функция возвращает название слота оружия (например, shotguns и т. п.). Если передан неправильный хэш, то вернется false.

JavaScript:
function getWeaponSlot(weaponHash) {
    const weapons = {
        "100416529": "sniper_rifles",
        "101631238": "misc",
        "125959754": "heavy_weapons",
        "126349499": "throwables",
        "137902532": "handguns",
        "171789620": "smg",
        "177293209": "sniper_rifles",
        "205991906": "sniper_rifles",
        "317205821": "shotguns",
        "324215364": "smg",
        "419712736": "melee",
        "453432689": "handguns",
        "487013001": "shotguns",
        "584646201": "handguns",
        "600439132": "throwables",
        "615608432": "throwables",
        "727643628": "handguns",
        "736523883": "smg",
        "741814745": "throwables",
        "883325847": "misc",
        "911657153": "handguns",
        "940833800": "melee",
        "961495388": "assault_rifles",
        "984333226": "shotguns",
        "1119849093": "heavy_weapons",
        "1141786504": "melee",
        "1198256469": "smg",
        "1198879012": "handguns",
        "1233104067": "throwables",
        "1305664598": "heavy_weapons",
        "1317494643": "melee",
        "1432025498": "shotguns",
        "1593441988": "handguns",
        "1627465347": "machine_guns",
        "1649403952": "assault_rifles",
        "1672152130": "heavy_weapons",
        "1737195953": "melee",
        "1785463520": "sniper_rifles",
        "1834241177": "heavy_weapons",
        "2017895192": "shotguns",
        "2024373456": "smg",
        "2132975508": "assault_rifles",
        "2138347493": "heavy_weapons",
        "2144741730": "machine_guns",
        "2210333304": "assault_rifles",
        "2227010557": "melee",
        "2228681469": "assault_rifles",
        "2285322324": "handguns",
        "2343591895": "melee",
        "2441047180": "handguns",
        "2460120199": "melee",
        "2481070269": "throwables",
        "2484171525": "melee",
        "2508868239": "melee",
        "2526821735": "assault_rifles",
        "2548703416": "handguns",
        "2578377531": "handguns",
        "2578778090": "melee",
        "2634544996": "machine_guns",
        "2640438543": "shotguns",
        "2694266206": "throwables",
        "2725352035": "melee",
        "2726580491": "heavy_weapons",
        "2828843422": "shotguns",
        "2874559379": "throwables",
        "2937143193": "assault_rifles",
        "2939590305": "handguns",
        "2982836145": "heavy_weapons",
        "3056410471": "heavy_weapons",
        "3125143736": "throwables",
        "3126027122": "misc",
        "3173288789": "smg",
        "3218215474": "handguns",
        "3219281620": "handguns",
        "3220176749": "assault_rifles",
        "3231910285": "assault_rifles",
        "3249783761": "handguns",
        "3342088282": "sniper_rifles",
        "3415619887": "handguns",
        "3441901897": "melee",
        "3523564046": "handguns",
        "3638508604": "melee",
        "3675956304": "smg",
        "3686625920": "machine_guns",
        "3696079510": "handguns",
        "3713923289": "melee",
        "3756226112": "melee",
        "3800352039": "shotguns",
        "4019527611": "shotguns",
        "4024951519": "smg",
        "4191993645": "melee",
        "4192643659": "melee",
        "4208062921": "assault_rifles",
        "4222310262": "misc",
        "4256991824": "throwables"
    };

    return weapons[weaponHash] ? weapons[weaponHash] : false;
}
 
Отрисовка примитивного неймтега
JavaScript:
let localPlayer = mp.players.local

mp.nametags.enabled = true

mp.events.add('render', () => {
    if(mp.players.local == localPlayer) return
    mp.players.forEachInStreamRange(player => {
        const position = localPlayer.position
        mp.game.graphics.drawText(`${localPlayer.name} [${localPlayer.remoteId}]`, [localPlayer.x, localPlayer.y, localPlayer.z + 1.10], { font: 4, color: [255, 255, 255, 255], scale: [0.4, 0.4], outline: true })
    })
})
 
Взято с немецкого ресурса, может кому понадобится. FPS
JavaScript:
let frames = {
  lastReset: Date.now(),
  countedFrames: 0,
  fps: 0
}

mp.events.add('render', () => {
  frames.countedFrames++;
  if(frames.lastReset + 1000 <= Date.now()) {
    frames.fps = frames.countedFrames;
    frames.countedFrames = 0;
    frames.lastReset = Date.now();
    //mp.gui.chat.push("FPS: " +frames.fps);
   }
})

Так же взято с немецкого ресурса (Кому будет в кайф, закрыть игрока в машине)
JavaScript:
let localPlayer = mp.players.local;

mp.events.add('render', () => {
    if(localPlayer.vehicle == undefined) {
        return;
    }

    let vehicle = localPlayer.vehicle;
    let locked = vehicle.getDoorLockStatus() == 1;

    let isVehicleBike = vehicle.getClass() == (8 || 13)
        || vehicle.model == mp.game.joaat('policeb');

    if(isVehicleBike || !locked) {
        return;
    }

    mp.game.controls.disableControlAction(0, 75, true); // disable exit vehicle
    mp.game.controls.disableControlAction(25, 75, true); // disable exit vehicle
});
 
Можно использовать, чтобы определить позицию перед игроком или машиной..
JavaScript:
// Позволяет получить новую позицию от начальной на необходимую дистанцию, с учетом rotation.Z или heading
function (position, heading, distance) {
    const x = Number(distance * Math.sin(-(heading * 3.14 / 180)));
    const y = Number(distance * Math.cos(-(heading * 3.14 / 180)));
    return [position.x + x, position.y + y, position.z];
}
 
Назад
Верх