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

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:
 

seaniwe

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

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;    
      }
});
mp.game.gameplay.setWeatherTypeNow лучше все же её юзать
 

Lev Angel

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

Verdiji

Trainee
По-моему, лучше сделать так, а название погоды не так уж и тяжело запомнить = )
JavaScript:
mp.events.addCommand('setw', (player, _, weather) => {
    if (weather == undefined) return player.outputChatBox('/setw [weather]');
    mp.world.weather = weather;
})
 

seaniwe

Senior Developer
Скриптер
По-моему, лучше сделать так, а название погоды не так уж и тяжело запомнить = )
JavaScript:
mp.events.addCommand('setw', (player, _, weather) => {
    if (weather == undefined) return player.outputChatBox('/setw [weather]');
    mp.world.weather = weather;
})
Быстрее и удобнее просто прописать цифру.
 

Verdiji

Trainee
Быстрее и удобнее просто прописать цифру.
Ага, очень частая же команда, которую нужно срочно и быстро использовать) Создавать для нее массивы или отдельные конфиги - лишняя морока и код. А по поводу удобности - вспоминать какая цифра за какую погоду отвечает. Ну тут кому как, конечно. Просто считаю лишними эти сложности для такой простой команды
 

Lev Angel

Developer
Команда форума
Скриптер
Тогда уже надо делать список в интерфейсе админки. Чтобы ничего не запоминать :)
 
Яндекс.Метрика
Верх