Custom weather array

This commit is contained in:
Vortrex
2022-10-29 10:06:57 -05:00
parent 455e87bd87
commit a817db618b
4 changed files with 118 additions and 79 deletions

View File

@@ -387,7 +387,7 @@ function applyConfigToServer(tempServerConfig) {
if (isWeatherSupported()) {
logToConsole(LOG_DEBUG, `[AGRP.Config]: Setting weather to ${tempServerConfig.weather}`);
game.forceWeather(tempServerConfig.weather);
game.forceWeather(getWeatherData(tempServerConfig.weather).weatherId);
}
updateServerRules();
@@ -583,19 +583,19 @@ function setWeatherCommand(command, params, client) {
return false;
}
let weatherId = getWeatherFromParams(getParam(params, " ", 1));
let weatherIndex = getWeatherFromParams(getParam(params, " ", 1));
if (!weatherId) {
if (!getWeatherData(weatherIndex)) {
messagePlayerError(client, `That weather ID or name is invalid!`);
return false;
}
game.forceWeather(toInteger(weatherId));
getServerConfig().weather = weatherId;
game.forceWeather(getWeatherData(weatherIndex).weatherId);
getServerConfig().weather = weatherIndex;
getServerConfig().needsSaved = true;
announceAdminAction("ServerWeatherSet", getPlayerName(client), getGameConfig().weatherNames[getGame()][toInteger(weatherId)]);
announceAdminAction("ServerWeatherSet", getPlayerName(client), getWeatherData(weatherIndex).name);
updateServerRules();
return true;
}

View File

@@ -134,11 +134,18 @@ function thirtyMinuteTimerFunction() {
checkPayDays();
}
checkInactiveVehicleRespawns();
if (isGameFeatureSupported("snow")) {
checkSnowChance();
setSnowWithChance();
}
checkInactiveVehicleRespawns();
if (isGameFeatureSupported("weather")) {
setRandomWeather();
}
updateServerRules();
saveServerDataToDatabase();
}
@@ -330,7 +337,7 @@ function checkInactiveVehicleRespawns() {
if (getVehicleData(vehicles[i]).lastActiveTime != false) {
if (getCurrentUnixTimestamp() - getVehicleData(vehicles[i]).lastActiveTime >= getGlobalConfig().vehicleInactiveRespawnDelay) {
respawnVehicle(vehicles[i]);
getVehicleData(vehicles[i]).lastActiveTime = false;
//getVehicleData(vehicles[i]).lastActiveTime = false;
}
}
} else {
@@ -342,13 +349,31 @@ function checkInactiveVehicleRespawns() {
// ===========================================================================
function checkSnowChance() {
function setSnowWithChance() {
let date = new Date();
let shouldBeSnowing = getRandomBoolWithProbability(getGlobalConfig().monthlyChanceOfSnow[date.getMonths()]);
let shouldBeSnowing = getRandomBoolWithProbability(getGlobalConfig().monthlyChanceOfSnow[date.getMonth()]);
getServerConfig().groundSnow = shouldBeSnowing;
getServerConfig().fallingSnow = shouldBeSnowing;
updatePlayerSnowState(null);
}
// ===========================================================================
function setRandomWeather() {
let randomWeatherIndex = getRandom(0, getGameConfig().weather[getGame()].length - 1);
if (getServerConfig().fallingSnow == true) {
while (getWeatherData(randomWeatherIndex).allowWithSnow == false) {
randomWeatherIndex = getRandom(0, getGameConfig().weather[getGame()].length - 1);
}
}
game.forceWeather(getWeatherData(weatherIndex).weatherId);
getServerConfig().weather = weatherIndex;
getServerConfig().needsSaved = true;
}
// ===========================================================================

View File

@@ -101,8 +101,8 @@ function updateServerRules() {
if (isWeatherSupported()) {
if (getServerConfig() != false) {
if (typeof getGameConfig().weatherNames[getGame()] != "undefined") {
let tempText = getGameConfig().weatherNames[getGame()][getServerConfig().weather];
if (getWeatherData(getServerConfig().weather) != false) {
let tempText = getWeatherData(getServerConfig().weather).name;
timeWeatherRule.push(tempText);
}
}
@@ -124,14 +124,16 @@ function updateServerRules() {
function getWeatherFromParams(params) {
if (isNaN(params)) {
for (let i in getGameConfig().weatherNames[getGame()]) {
if (toLowerCase(getGameConfig().weatherNames[getGame()][i]).indexOf(toLowerCase(params)) != -1) {
for (let i in getGameConfig().weather[getGame()]) {
if (toLowerCase(getGameConfig().weather[getGame()][i].name).indexOf(toLowerCase(params)) != -1) {
return i;
}
}
} else {
if (typeof getGameConfig().weatherNames[getGame()][params] != "undefined") {
return toInteger(params);
for (let i in getGameConfig().weather[getGame()]) {
if (typeof getGameConfig().weather[getGame()][i].weatherId != "undefined") {
return toInteger(i);
}
}
}

View File

@@ -29,6 +29,16 @@ class AnimationData {
// ===========================================================================
class WeatherData {
constructor(weatherId, name, allowWithSnow) {
this.weatherId = weatherId;
this.name = name;
this.allowWithSnow = allowWithSnow;
}
}
// ===========================================================================
let supportedFeatures = {
// Invalid, GTAIII, GTAVC, GTASA, Invalid, GTAIV, Invalid, Invalid, Invalid, M1, M2, M3, M1DE
time: {
@@ -563,77 +573,79 @@ let gameData = {
}
},
weatherNames: {
weather: {
[AGRP_GAME_GTA_III]: [ // GTA III
"Clear",
"Overcast",
"Thunderstorm",
"Fog",
"Clear",
"Rainy",
"Dark/Cloudy",
"Light/Cloudy",
"Overcast/Cloudy",
"Grey/Cloudy"
new WeatherData(0, "Clear", true),
new WeatherData(1, "Overcast", false),
new WeatherData(2, "Thunderstorm", false),
new WeatherData(3, "Fog", true),
new WeatherData(4, "Clear", false),
new WeatherData(5, "Rainy", false),
new WeatherData(6, "Dark/Cloudy", false),
new WeatherData(7, "Light/Cloudy", false),
new WeatherData(8, "Overcast/Cloudy", true),
new WeatherData(9, "Grey/Cloudy", false),
],
[AGRP_GAME_GTA_VC]: [ // GTA Vice City
"Partly Cloudy",
"Overcast",
"Thunderstorm",
"Fog",
"Sunny",
"Hurricane",
"Dark/Cloudy",
"Light/Cloudy",
"Overcast/Cloudy",
"Grey/Cloudy"
new WeatherData(0, "Clear", true),
new WeatherData(1, "Overcast", false),
new WeatherData(2, "Thunderstorm", false),
new WeatherData(3, "Fog", true),
new WeatherData(4, "Sunny", false),
new WeatherData(5, "Hurricane", false),
new WeatherData(6, "Dark/Cloudy", false),
new WeatherData(7, "Light/Cloudy", false),
new WeatherData(8, "Overcast/Cloudy", true),
new WeatherData(9, "Grey/Cloudy", false),
],
[AGRP_GAME_GTA_SA]: [ // GTA San Andreas
"Blue Skies",
"Blue Skies",
"Blue Skies",
"Blue Skies",
"Blue Skies",
"Blue Skies",
"Blue Skies",
"Blue Skies",
"Thunderstorm",
"Cloudy/Foggy",
"Clear Blue Skies",
"Heatwave",
"Dull/Colorless",
"Dull/Colorless",
"Dull/Colorless",
"Dull/Colorless",
"Dull/Rainy",
"Heatwave",
"Heatwave",
"Sandstorm",
"Greenish/Foggy"
new WeatherData(0, "Blue Skies", false),
new WeatherData(1, "Blue Skies", false),
new WeatherData(2, "Blue Skies", false),
new WeatherData(3, "Blue Skies", false),
new WeatherData(4, "Blue Skies", false),
new WeatherData(5, "Blue Skies", false),
new WeatherData(6, "Blue Skies", false),
new WeatherData(7, "Blue Skies", false),
new WeatherData(8, "Thunderstorm", false),
new WeatherData(9, "Cloudy/Foggy", false),
new WeatherData(10, "Clear Blue Skies", false),
new WeatherData(11, "Heatwave", false),
new WeatherData(12, "Dull/Colorless", false),
new WeatherData(13, "Dull/Colorless", false),
new WeatherData(14, "Dull/Colorless", false),
new WeatherData(15, "Dull/Colorless", false),
new WeatherData(16, "Dull/Rainy", false),
new WeatherData(17, "Heatwave", false),
new WeatherData(18, "Heatwave", false),
new WeatherData(19, "Sandstorm", false),
new WeatherData(20, "Greenish/Foggy", false),
],
[AGRP_GAME_GTA_IV]: [ // GTA IV
"Extra Sunny",
"Sunny",
"Sunny/Windy",
"Cloudy",
"Rain",
"Light Rain",
"Foggy",
"Thunderstorm",
"Extra Sunny",
"Sunny/Windy",
new WeatherData(1, "Blue Skies", false),
new WeatherData(2, "Extra Sunny", false),
new WeatherData(3, "Sunny", false),
new WeatherData(4, "Sunny/Windy", false),
new WeatherData(5, "Cloudy", false),
new WeatherData(6, "Rain", false),
new WeatherData(7, "Light Rain", false),
new WeatherData(8, "Foggy", false),
new WeatherData(9, "Thunderstorm", false),
new WeatherData(10, "Extra Sunny", false),
new WeatherData(11, "Sunny/Windy", false),
],
[AGRP_GAME_GTA_IV_EFLC]: [ // GTA IV EFLC
"Extra Sunny",
"Sunny",
"Sunny/Windy",
"Cloudy",
"Rain",
"Light Rain",
"Foggy",
"Thunderstorm",
"Extra Sunny",
"Sunny/Windy",
new WeatherData(1, "Blue Skies", false),
new WeatherData(2, "Extra Sunny", false),
new WeatherData(3, "Sunny", false),
new WeatherData(4, "Sunny/Windy", false),
new WeatherData(5, "Cloudy", false),
new WeatherData(6, "Rain", false),
new WeatherData(7, "Light Rain", false),
new WeatherData(8, "Foggy", false),
new WeatherData(9, "Thunderstorm", false),
new WeatherData(10, "Extra Sunny", false),
new WeatherData(11, "Sunny/Windy", false),
],
[AGRP_GAME_GTA_V]: [