Идеи для материалов / туториалов / скриптов

  • Автор темы Автор темы Lev Angel
  • Дата начала Дата начала
Есть у кого-нибудь идеи для новогоднего скрипта? Думаю записать что-то, но пока не придумал. Какую-то мини игру или гирлянды... Помню в сампе делали елку с игрушками. Может быть что-то такое.
Можно сделать ёлку и санту(если он есть в игре) или простой ПНС поставить подойти к нему и взять квест, предположим на поиск разбросанных подарков санты и так как уже 21-й год можна по всей карте собрать 21-координату и уже там расположить checkpoint на который подходит игрок нажимает забиндженую клавишу. Там его может приветствовать 2D TEXT С поздравлениям, а уже когда подарки собраны игрок должен направится к НПС у которого брал задание, и как то его отблагодарить, допустим 10.000$ виртуальной валюты.
P.S: Прошу прощения что так безграмотно написал =)
Я думаю наш Лев профелиОнал и для его такой скрипт не будет проблемой по сравнению со скриптом работы Дальнобойщика.
Спасибо за внимание!
 
Привет, сделай систему аренды скутеров на спавне в аэропорту и по команде в чате чтобы она заканчивалась
 
Привет, может сделаем систему спидометра для машин?) Или функционал для автомобилей, вроде хорошая идея :)
 
Привет, может сделаем систему спидометра для машин?) Или функционал для автомобилей, вроде хорошая идея :)
Получаем скорость автомобиля.
Client-side:
Делаем константу и называем её например useSpeedo делаем её True
JavaScript:
const useSpeedo = true;
Далее создаём ивент render для отрисовки каждого кадра.

JavaScript:
mp.events.add("render", () => {
    let vehicle = mp.players.local.vehicle;
    if (useSpeedo && vehicle) drawText(`${(vehicle.getSpeed() * (isMetric ? 3.6 : 2.236936)).toFixed(0)} ${(isMetric) ? "KM/H" : "MPH"}`,       [minimap.rightX - 0.003, minimap.bottomY - 0.0485], 4, [255, 255, 255, 255], 0.45, true);
});
В этот ивенте создаём переменную, ну например, vehicle которая берёт локацию игрока в автомобиле.
Далее создаём условие для уточнение игрок ли в транспорте, и отрисовываем текст на экране, с математическими исчислениями
Скорость должна изобразится на мини-карте.
 
Получаем скорость автомобиля.
Client-side:
Делаем константу и называем её например useSpeedo делаем её True
JavaScript:
const useSpeedo = true;
Далее создаём ивент render для отрисовки каждого кадра.

JavaScript:
mp.events.add("render", () => {
    let vehicle = mp.players.local.vehicle;
    if (useSpeedo && vehicle) drawText(`${(vehicle.getSpeed() * (isMetric ? 3.6 : 2.236936)).toFixed(0)} ${(isMetric) ? "KM/H" : "MPH"}`,       [minimap.rightX - 0.003, minimap.bottomY - 0.0485], 4, [255, 255, 255, 255], 0.45, true);
});
В этот ивенте создаём переменную, ну например, vehicle которая берёт локацию игрока в автомобиле.
Далее создаём условие для уточнение игрок ли в транспорте, и отрисовываем текст на экране, с математическими исчислениями
Скорость должна изобразится на мини-карте.
Спасибо большое!)
 
Спасибо большое!)
Забыл совсем, нужно ещё создать функцию для текста.
JavaScript:
function drawText(text, drawXY, font, color, scale, alignRight = false) {
    mp.game.ui.setTextEntry("STRING");
    mp.game.ui.addTextComponentSubstringPlayerName(text);
    mp.game.ui.setTextFont(font);
    mp.game.ui.setTextScale(scale, scale);
    mp.game.ui.setTextColour(color[0], color[1], color[2], color[3]);
    mp.game.invoke(Natives.SET_TEXT_OUTLINE);


    if (alignRight) {
        mp.game.ui.setTextRightJustify(true);
        mp.game.ui.setTextWrap(0, drawXY[0]);
    }


    mp.game.ui.drawText(drawXY[0], drawXY[1]);
}
 
Можешь пожалуйста объяснит как работать с игроком (как объектом наверное), добавить для него доп. поля, по типу количество денег и т.п?
 
Можешь пожалуйста объяснит как работать с игроком (как объектом наверное), добавить для него доп. поля, по типу количество денег и т.п?
Все просто, так же как и с обычным объектом js. У объекта игрока есть ряд встроенных методов и свойств. Но ты можешь добавить и новые.
Код:
player.bankMoney = 1000;

Вот тут еще можешь посмотреть пример в реальной системе. Для игрока добавляются новые поля loginAttemp, logged и метод isPlayerLogged().
 
Все просто, так же как и с обычным объектом js. У объекта игрока есть ряд встроенных методов и свойств. Но ты можешь добавить и новые.
Код:
player.bankMoney = 1000;

Вот тут еще можешь посмотреть пример в реальной системе. Для игрока добавляются новые поля loginAttemp, logged и метод isPlayerLogged().
Благодарю!
 
Предлагаю сделать что-то типа планшета. Этот в частности для дальнобоя.
1O15Frnm4EA.jpg
 
Привет!
Предлагаю сделать некое подобие простой системы посадки - выращивания-сбора урожая. Используя различные условия. Вот мой набросок.

JavaScript:
Серверная часть.
// -40.46434020996094, 32.48344039916992, 72.18191528320312

let farmPositions = [
    {
        pos: new mp.Vector3(-40.46434020996094, 32.48344039916992, 0),
        width:100,
        height: 100,

    }
];

exports.colShapes = plantAreas = [];

function initPlantArea(farmSpots){
    let Colshape = mp.colshapes.newRectangle(farmSpots.pos.x, farmSpots.pos.y, farmSpots.width.x, farmSpots.height.y);
    let marker = mp.markers.new(43, new mp.Vector3(-40.46434020996094, 32.48344039916992, 71.18191528320312),50)
    plantAreas.push(Colshape);
}

function onPlayerPlant(player){
    player.playAnimation('anim@mp_snowball','pickup_snowball', 4,1);
    player.setVariable("playAnim", "anim@mp_snowball%pickup_snowball%5000");
    setTimeout(() => {
        player.stopAnimation();
        player.setVariable("playAnim", null);
    },5000);
}

exports.OnEnterWeedArea = (player,shape) => {
    plantAreas.forEach(item => {
        if (shape == item){
            player.setVariable("isAllowedToPlantWeed", true);
            player.outputChatBox(player.setVariable("isAllowedToPlantWeed").toString());
        }
    });
}

farmPositions.forEach(initPlantArea);

mp.events.add("keypress:plantWeed", onPlayerPlant);


//const weedModule = require("./Drags/index.js");

//console.log('\x1b[32m', 'DRAGSYSTEM');

mp.events.add("playerEnterColshapes", function(player,shapes){
    weedModule.OnEnterWeedArea(player,shapes);
});

mp.events.add("playerExitColshapes", (player, shapes) => {
    weedModule.colShapes.forEach((item) => {
        if(item == shapes){
            player.outputChatBox("игрок вышел за пределы шейпа!");
            if(!player.getVariable("isAllowedToPlantWeed"))
            return;

            player.setVariable("isAllowedToPlantWeed", false);
        }
    });
});

Клиентская часть.


mp.keys.bind(0x45, true, function(){
    if(pressed == false){
        player.notify ('~r~planted');
        mp.events.callRemote('keypress:plantWeed');
        pressed = true;
        setTimeout(() => {
                weedPropt = mp.objects.new(mp.game.joaat("prop_weed_01"), new mp.Vector3(localPlayer.pos.x, localPlayer.pos.y, localPlayer.pos.z), {
                        rotation: new mp.Vector3(0,0,0),
                        alpha: 255,
                        dimension: 0
                });
                pressed = false;
                growWeed();
        }, 5000);
    }
});

function growWeed(){
    let count = 0;
    let i = setInterval(()=> {
        if  (count >= 0.172)
        {
            clearInterval(i);
            return
         
        }
        count += parseFloat(0.001);
        weedProp.position = new mp.Vector3(weedProp.position.x, weedProp.position.y, weedProp.position.z);
        mp.gui.chat.push(count.toString());
    },250);
}

З.Ы.
Сильно ногами не бить)))
Вообще в планах заняться инвентарем по типу драг-энд-дропс.
 
Последнее редактирование:
@MayHem у тебя уже даже наброски есть. Добавить комменты и это уже почти туториал :) Сможешь доделать и выложить?
Если нужна помощь - напиши. Будет круто!
 
@MayHem у тебя уже даже наброски есть. Добавить комменты и это уже почти туториал :) Сможешь доделать и выложить?
Если нужна помощь - напиши. Будет круто!
Спасибо. Да тут и особо коментить нечего. В планах было привязать к инвентарю (как писал выше драг-энд-дропс типа). Создать своего рода сырье (семена), удобрения и возможность поливать для быстрого роста. Потом простая система переработки с конечным продуктом.
 
Вот например набросал на скорую руку простую переработку. Можно подвязать...
JavaScript:
// спавн шейпа лабы, без указания на карте

koks1 = mp.colshapes.newSphere(-9.954635620117188, 24.175811767578125, 71.41783142089844, 1.2);
mp.markers.new(1, new mp.Vector3(-9.954635620117188, 24.175811767578125, 71.41783142089844), 1,{
    visible: true,
    scale: 1,
    color: [255,255,255,255],
    
});

// комманда и процесс переработки

var x = 0;
mp.events.addCommand("setx", (player, arg)=> {
x = parseInt(arg);
player.outputChatBox("X " + x)
});

mp.events.add("playerEnterColshape", (player, shape) => {
if(shape == koks1){
    if(x < 1){
        player.outputChatBox("У вас нет необходимого, купите на черном рынке...")
        return;
    }
player.outputChatBox("Вы сделали это");
    }   

});

JavaScript:
mp.events.add("playerEnterColshape", (player, shape) => {
    if(shape == trashColshape) {
        player.outputChatBox("Черный рынок!");
            }
});



// -9.474032402038574, 1.9377700090408325, 71.34461212158203
// маркер для входа в лабу
function loadWeedInt() {
    WeedVariabelColshape = mp.colshapes.newCircle(-9.474032402038574, 1.9377700090408325, 1);
    mp.markers.new(29, new mp.Vector3(-9.474032402038574, 1.9377700090408325, 71.34461212158203), 1, {
        visible: true,
        color: [0,255,0,255]
    });
    // выход из лабы
    WeedVariabelColshapeExit = mp.colshapes.newCircle(1087.3438720703125, -3099.415771484375, 1);
    mp.markers.new(29, new mp.Vector3(1087.3438720703125, -3099.415771484375, -38.99995422363281), 1, {
        visible: true,
        color: [0,255,0,255]
    });
}
loadWeedInt();

mp.events.add("playerEnterColshape", (player, shape) => {
    if(shape == WeedVariabelColshape) {
        player.outputChatBox("Вход в лабу");
        player.position = new mp.Vector3(1094.988, -3101.776, -39.00363);
    } else if (shape == WeedVariabelColshapeExit) {
        player.outputChatBox("Выход из лабы");
        //player.position = new mp.Vector3(-13.813557624816895, 4.10052752494812, 70.4583511352539)}
        player.position = new mp.Vector3(-8.303763389587402, 5.9120330810546875, 71.15681457519531)}
});
 
Предлагаю сделать инвентарь. Там затронется много тем сразу - CEF, БД, JS и т.д.
 
Назад
Верх