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

  • Автор темы Автор темы MayHem
  • Дата начала Дата начала

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;     
      }
});
 
Очень массивный код получился. На сугубо мой личный взгляд, глазам не приятно такое воспринимать. Есть предложения засунуть эти значения в 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('Меняем погоду')
}


Я думаю что вариант с перебором не идеален, можно придумать и лучше. Просто как вариант)
 
Очень массивный код получился. На сугубо мой личный взгляд, глазам не приятно такое воспринимать. Есть предложения засунуть эти значения в 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 , спасибо что поделился кодом ;) Команда полезная.

Добавлю свои рекомендации, как можно сделать еще круче.
Поскольку ИД погоды у нас идут от 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:
 
Парни а как можно ночь сменить на день?
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.
Важно указывать все аргументы!
 
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.
Важно указывать все аргументы!
ООО! Спасибо! Век живи,век учись)
 
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 лучше все же её юзать
 
Если не путаю, то mp.world.weather это сервер, а мой метод это клиент.
Что бы установить погоду для конкретного игрока, следует использовать мой вариант
Так тут уже смотря что нужно))) На клиенте то, погода поменяется только для этого игрока. Имхо это будет довольно странно что у одного игрока солнце, а у другого дождь.
И еще один момент.
1623176225464.png
 
По-моему, лучше сделать так, а название погоды не так уж и тяжело запомнить = )
JavaScript:
mp.events.addCommand('setw', (player, _, weather) => {
    if (weather == undefined) return player.outputChatBox('/setw [weather]');
    mp.world.weather = weather;
})
 
По-моему, лучше сделать так, а название погоды не так уж и тяжело запомнить = )
JavaScript:
mp.events.addCommand('setw', (player, _, weather) => {
    if (weather == undefined) return player.outputChatBox('/setw [weather]');
    mp.world.weather = weather;
})
Быстрее и удобнее просто прописать цифру.
 
Быстрее и удобнее просто прописать цифру.
Ага, очень частая же команда, которую нужно срочно и быстро использовать) Создавать для нее массивы или отдельные конфиги - лишняя морока и код. А по поводу удобности - вспоминать какая цифра за какую погоду отвечает. Ну тут кому как, конечно. Просто считаю лишними эти сложности для такой простой команды
 
Тогда уже надо делать список в интерфейсе админки. Чтобы ничего не запоминать :)
 
Назад
Верх