Смена погоды по комманде

MayHem

Junior Developer
Скриптер
JavaScript:
mp.events.addCommand('sw', (player, _, sw) => {
    if(sw == null) return player.notify('/sw [ID]')
    switch (sw) {
        case '0':
        mp.world.weather = 'EXTRASUNNY';
        break;
        case '1':
        mp.world.weather = 'CLEAR';
        break;
        case '2':
        mp.world.weather = 'CLOUDS';
        break;
        case '3':
        mp.world.weather = 'SMOG';
        break;
        case '4':
        mp.world.weather = 'FOGGY';
        break;
        case '5':
        mp.world.weather = 'OVERCAST';
        break;
        case '6':
        mp.world.weather = 'RAIN';
        break;
        case '7':
        mp.world.weather = 'THUNDER';
        break;
        case '8':
        mp.world.weather = 'CLEARING';
        break;
        case '9':
        mp.world.weather = 'NEUTRAL';
        break;
        case '10':
        mp.world.weather = 'SNOW';
        break;
        case '11':
        mp.world.weather = 'BLIZZARD';
        break;
        case '12':
        mp.world.weather = 'SNOWLIGHT';
        break;
        case '13':
        mp.world.weather = 'XMAS';
        break;
        case '14':
        mp.world.weather = 'HALLOWEEN';
        break;     
      }
});
 

shevdev

Trainee
Скриптер
Очень массивный код получился. На сугубо мой личный взгляд, глазам не приятно такое воспринимать. Есть предложения засунуть эти значения в JSON и импортировать их, когда вызываем команду. Для того чтобы перебирать и проверять на наличие значения, можно использовать цикл for.


JSON:
//Вот грубо говоря значения хранятся эти в формате JSON.

"weathers": [
    "weather1",
    "weather2"
]

JSON:
//Импортируем его
const config = require('path to config')

const idk = args[0]

//Перебираем циклом

for (const weather in config.weathers) {
    if(idk === weather) return console.log('Меняем погоду')
}


Я думаю что вариант с перебором не идеален, можно придумать и лучше. Просто как вариант)
 

MayHem

Junior Developer
Скриптер
Очень массивный код получился. На сугубо мой личный взгляд, глазам не приятно такое воспринимать. Есть предложения засунуть эти значения в JSON и импортировать их, когда вызываем команду. Для того чтобы перебирать и проверять на наличие значения, можно использовать цикл for.


JSON:
//Вот грубо говоря значения хранятся эти в формате JSON.

"weathers": [
    "weather1",
    "weather2"
]

JSON:
//Импортируем его
const config = require('path to config')

const idk = args[0]

//Перебираем циклом

for (const weather in config.weathers) {
    if(idk === weather) return console.log('Меняем погоду')
}


Я думаю что вариант с перебором не идеален, можно придумать и лучше. Просто как вариант)
Согласен
 

Lev Angel

Developer
Команда форума
Скриптер
Привет @MayHem , спасибо что поделился кодом ;) Команда полезная.

Добавлю свои рекомендации, как можно сделать еще круче.
Поскольку ИД погоды у нас идут от 0 до 14, то весь список можно поместить в массив. И потом получать название погоды не через switch, а просто обращаться к индексу массива.

JavaScript:
mp.events.addCommand('sw', (player, _, weatherId) => {
    
    const weatherTypes = ['EXTRASUNNY', 'CLEAR', 'CLOUDS', 'SMOG', 'FOGGY', 'OVERCAST', 'RAIN', 'THUNDER', 'CLEARING', 'NEUTRAL', 'SNOW', 'BLIZZARD', 'SNOWLIGHT', 'XMAS', 'HALLOWEEN'];
    
    const id = parseInt(weatherId);
    
    if(!id || !weatherTypes[id]) return player.notify('/sw [ID]');
    
    mp.world.weather = weatherTypes[id];
});

PS: Код не тестил, но идея думаю понятна:unsure:
 

Voldemor

Senior Developer
Скриптер
Парни а как можно ночь сменить на день?
JavaScript:
mp.events.addCommand('settime', (player, _,hour, minute, second) => {
    if (hour == undefined || minute == undefined || second == undefined) return player.outputChatBox('/settime [hour] [minutes] [second]');
    mp.world.time.set(parseInt(hour), parseInt(minute), parseInt(second));
});
Пользуйся на здоровье.
Пример: /settime 21 00 00.
Важно указывать все аргументы!
 

maxnevidimka

New member
JavaScript:
mp.events.addCommand('settime', (player, _,hour, minute, second) => {
    if (hour == undefined || minute == undefined || second == undefined) return player.outputChatBox('/settime [hour] [minutes] [second]');
    mp.world.time.set(parseInt(hour), parseInt(minute), parseInt(second));
});
Пользуйся на здоровье.
Пример: /settime 21 00 00.
Важно указывать все аргументы!
ООО! Спасибо! Век живи,век учись)
 

Edwards

Trainee
Скриптер
JavaScript:
mp.events.addCommand('sw', (player, _, sw) => {
    if(sw == null) return player.notify('/sw [ID]')
    switch (sw) {
        case '0':
        mp.world.weather = 'EXTRASUNNY';
        break;
        case '1':
        mp.world.weather = 'CLEAR';
        break;
        case '2':
        mp.world.weather = 'CLOUDS';
        break;
        case '3':
        mp.world.weather = 'SMOG';
        break;
        case '4':
        mp.world.weather = 'FOGGY';
        break;
        case '5':
        mp.world.weather = 'OVERCAST';
        break;
        case '6':
        mp.world.weather = 'RAIN';
        break;
        case '7':
        mp.world.weather = 'THUNDER';
        break;
        case '8':
        mp.world.weather = 'CLEARING';
        break;
        case '9':
        mp.world.weather = 'NEUTRAL';
        break;
        case '10':
        mp.world.weather = 'SNOW';
        break;
        case '11':
        mp.world.weather = 'BLIZZARD';
        break;
        case '12':
        mp.world.weather = 'SNOWLIGHT';
        break;
        case '13':
        mp.world.weather = 'XMAS';
        break;
        case '14':
        mp.world.weather = 'HALLOWEEN';
        break;    
      }
});
mp.game.gameplay.setWeatherTypeNow лучше все же её юзать
 

Lev Angel

Developer
Команда форума
Скриптер
Если не путаю, то mp.world.weather это сервер, а мой метод это клиент.
Что бы установить погоду для конкретного игрока, следует использовать мой вариант
Так тут уже смотря что нужно))) На клиенте то, погода поменяется только для этого игрока. Имхо это будет довольно странно что у одного игрока солнце, а у другого дождь.
И еще один момент.
1623176225464.png
 
Яндекс.Метрика
Верх