Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- // functions to translate string array into hashes array (not default)
- // функция для преобразования массива строк в массив хешей игры. Она не является стандартной для RAGE Multiplayer, но она весьма полезна
- mp.hashify = hashes =>
- {
- var dst = [];
- hashes.forEach(hash => { dst.push(mp.joaat(hash)); });
- return dst;
- };
- var game =
- {
- spawns: [new mp.Vector3(2140.15454, 4783.173, 40.4812241), new mp.Vector3(2133.27148, 4777.55, 40.4814262),
- new mp.Vector3(2019.19739, 4763.39746, 40.62057), new mp.Vector3(2027.80859, 4749.584, 40.7290535)],
- models: mp.hashify(["mp_m_weed_01", "mp_m_forgery_01", "mp_f_weed_01", "mp_f_chbar_01", "ig_johnnyklebitz",
- "player_two", "ig_nervousron", "ig_wade", "ig_floyd", "ig_chef"]),
- weapons: mp.hashify(["WEAPON_PISTOL", "WEAPON_ASSAULTRIFLE","WEAPON_SAWNOFFSHOTGUN","WEAPON_COMPACTRIFLE"])
- };
- mp.environment.weather = 'HALLOWEEN';
- mp.environment.time.hour = 23;
- // добавим словарь причин смертей, чтобы преобразовывать хеши в строки
- var g_reasons = {};
- function InitReasons(arr)
- {
- arr.forEach(reason => { g_reasons[mp.joaat(reason)] = reason.substr(7); });
- }
- InitReasons(["WEAPON_PISTOL", "WEAPON_ASSAULTRIFLE","WEAPON_SAWNOFFSHOTGUN","WEAPON_COMPACTRIFLE"]);
- // Добавим события
- mp.events.add(
- {
- "playerJoin" : player =>
- {
- // присвоим игроку случайную модель
- player.model = game.models[Math.floor(Math.random() * game.models.length)]
- // выдадим все оружие, которое указано в массиве game.weapons
- game.weapons.forEach(weapon => { player.giveWeapon(weapon, 10000); });
- // заспавним в одной из точек, указанных в game.spawns
- player.spawn(game.spawns[Math.floor(Math.random() * game.spawns.length)]);
- player.kills = 0;
- },
- "playerDeath" : (player, reason, killer) =>
- {
- if(killer != null)
- {
- killer.kills++;
- // узнаем причину, так как reason - хеш причины
- var str = g_reasons[reason];
- if(str != undefined)
- {
- str = player.name + "(" + player.kills + ")" + " [" + str + "] " + killer.name + "(" + killer.kills + ")";
- mp.players.forEach(_player => { _player.outputChatBox(str); });
- }
- }
- player.spawn(game.spawns[Math.floor(Math.random() * game.spawns.length)]);
- },
- "playerQuit" : (player, reason, kickReason) =>
- {
- const str = player.name + " quit";
- mp.players.forEach(_player => { _player.outputChatBox(str); });
- },
- "playerChat": (player, text) =>
- {
- // мы можем использовать html-теги в чате, так как он сделан на HTML (cef),
- // используем тег выделения для выделения количества убийств у каждого
- const str = player.name + "<b>(" + player.kills + ")</b>: " + text;
- // отправим сообщение всем игрокам
- mp.players.forEach(_player => { _player.outputChatBox(str); });
- },
- "playerCommand": (player, cmd) =>
- {
- if(cmd == "pos")
- {
- var pos = player.position;
- player.outputChatBox("X: <b>" + pos.x + "</b>, Y: <b>" + pos.y + "</b>, Z: <b>" + pos.z + "</b>");
- }
- else if(cmd.search("veh") != -1)
- {
- var pos = player.position;
- pos.x += 2.0;
- // добавим созданную машину в массив createdVehs, чтобы контролировать в дальнейшем количество
- // созданных игроками машин
- createdVehs.push(new mp.Vehicle(mp.joaat(cmd.substr(4)), pos));
- }
- else if(cmd.search("setweather") != -1)
- {
- mp.environment.weather = cmd.substr(11);
- }
- else if(cmd.search("settime") != -1)
- {
- mp.environment.time.hour = parseInt(cmd.substr(8));
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement