Типа квест?Есть у кого-нибудь идеи для новогоднего скрипта? Думаю записать что-то, но пока не придумал. Какую-то мини игру или гирлянды... Помню в сампе делали елку с игрушками. Может быть что-то такое.
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Типа квест?Есть у кого-нибудь идеи для новогоднего скрипта? Думаю записать что-то, но пока не придумал. Какую-то мини игру или гирлянды... Помню в сампе делали елку с игрушками. Может быть что-то такое.
Можно сделать ёлку и санту(если он есть в игре) или простой ПНС поставить подойти к нему и взять квест, предположим на поиск разбросанных подарков санты и так как уже 21-й год можна по всей карте собрать 21-координату и уже там расположить checkpoint на который подходит игрок нажимает забиндженую клавишу. Там его может приветствовать 2D TEXT С поздравлениям, а уже когда подарки собраны игрок должен направится к НПС у которого брал задание, и как то его отблагодарить, допустим 10.000$ виртуальной валюты.Есть у кого-нибудь идеи для новогоднего скрипта? Думаю записать что-то, но пока не придумал. Какую-то мини игру или гирлянды... Помню в сампе делали елку с игрушками. Может быть что-то такое.
Добавил в список, сделаемПривет, сделай систему аренды скутеров на спавне в аэропорту и по команде в чате чтобы она заканчивалась
Получаем скорость автомобиля.Привет, может сделаем систему спидометра для машин?) Или функционал для автомобилей, вроде хорошая идея
const useSpeedo = true;
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);
});
Спасибо большое!)Получаем скорость автомобиля.
Client-side:
Делаем константу и называем её например useSpeedo делаем её True
Далее создаём ивент render для отрисовки каждого кадра.JavaScript:const useSpeedo = true;
В этот ивенте создаём переменную, ну например, vehicle которая берёт локацию игрока в автомобиле.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); });
Далее создаём условие для уточнение игрок ли в транспорте, и отрисовываем текст на экране, с математическими исчислениями
Скорость должна изобразится на мини-карте.
Он конечно же визуально не так красив но хоть что то уже да будет)Спасибо большое!)
Забыл совсем, нужно ещё создать функцию для текста.Спасибо большое!)
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;
Благодарю!Все просто, так же как и с обычным объектом js. У объекта игрока есть ряд встроенных методов и свойств. Но ты можешь добавить и новые.
Код:player.bankMoney = 1000;
Вот тут еще можешь посмотреть пример в реальной системе. Для игрока добавляются новые поля loginAttemp, logged и метод isPlayerLogged().
Серверная часть.
// -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 у тебя уже даже наброски есть. Добавить комменты и это уже почти туториал Сможешь доделать и выложить?
Если нужна помощь - напиши. Будет круто!
// спавн шейпа лабы, без указания на карте
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("Вы сделали это");
}
});
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)}
});