Offer of new script for "Random Map" mode

Everything about our W:ET servers. New ideas, wishes are welcome.
N!tmod, Trickjump, Jaymod, Sniper N!tmod, Headshot ETPro.
Post Reply
nick
Posts: 7
Joined: 01 Jan 2018, 19:59
discord:

Offer of new script for "Random Map" mode

Post by nick »

Hello. I've found file of my old server with modified script files of "Random Map" mode. I detected that when somebody sets next map via !setnext command (for example !setnext eagles_2ways_b3) there are still old message in g_msg1 area. So, if you add this code

Code: Select all

**********

name = setnextmap
exec = set nextmap "map [1]"; set g_msg1 "^9Next map is ^7[1]"; set nextmapinfo "echo Next map is [1]"; vstr nextmapinfo
desc = Sets the next map
levels = 1 2
into "commands.db" file and add this code

Code: Select all

function et_InitGame(levelTime, randomSeed, restart)
	et.RegisterModname("(Map Vote Cycle & Random Map Mode & N!tmod) v1.0")
	local maps = {"railgun"}
	local maps_excluded = {"mp_bin", "pak0", "pak1", "pak2", "goldendunk_a2", "baserace", "baserace_b3c", "baserace_desert", "ctf-face-fp1_fixed", "purefrag"}
	local map_last = et.trap_Cvar_Get("nextmapinfo")
	if (map_last ~= "") then
		map_last = string.sub(map_last, 18)
	end
	local map_current = et.trap_Cvar_Get("mapname")
	local map_next = ""
	if (et.trap_Cvar_Get("warmup") == "1" and (map_last == map_current or map_last == "")) then
		et.trap_Cvar_Set("warmup", "0")
		local a = io.popen('dir "C:/Users/Admin/Desktop/ALL-OLD/Wolfenstein ET Servers/new/etmain/" /b')
		for b in a:lines() do
			local c = string.sub(b, 1, string.len(b) - 4)
			if (string.sub(b, string.len(b) - 2) == "pk3") then
				for d, e in ipairs(maps_excluded) do
					if (c == e) then
						c = nil
						break
					end
				end
				if (c ~= nil) then
					table.insert(maps, c)
				end
			end
		end
		a:close()
		local c = "chat List of maps:\n"
		for d, e in ipairs(maps) do
			c = c.." chat "..e.."\n"
		end
		et.trap_Cvar_Set("maplist", c.."chat\n")
		while (true) do
			map_next = maps[math.random(table.getn(maps))]
			if (map_next ~= map_current and map_next ~= map_last) then
				break
			end
		end
		et.trap_Cvar_Set("nextmap", "map "..map_next)
		et.trap_Cvar_Set("g_msg1", "^9Next map is ^7"..map_next)
		et.trap_Cvar_Set("nextmapinfo", "echo Next map is "..map_next)
		if (et.trap_Cvar_Get("g_weaponScriptsDir") == "") then
			et.trap_Cvar_Set("g_weaponScriptsDir", "g_weaponScriptsDir/default")
		end
	else
		et.trap_Cvar_Set("warmup", "1")
	end
end
into your "randommap.lua" file (or some file, which included into server as Lua Module) you will see, that messages are not obsolete. So, I offer you to make full modify of this file, I see something here is not really need.

It should be very great because when you joining the game and seeing message "The next map is ctf-face-fp1_fixed" you are happy, but when next map is loading you are seeing for example "gold rush".. (i mean server loads some map which you don't like) :shock: :? ...

I have script of PPSH for nitmod. But i can't load it here. If you want this I can send it to you to set it up on server.
User avatar
ETc|Exagone
ETc| Member
Posts: 45
Joined: 23 Oct 2009, 11:52
discord:
Location: France
Contact:

Re: Offer of new script for "Random Map" mode

Post by ETc|Exagone »

The updated version of the random next map Lua script is here. It was completely rewritten compared to the older version written by Nitrox and I.
As far as I understand it, when it does not load the next map that was set, it is caused by a nitmod bug. But since nitmod is not open source I can't debug and make sure this is the case.
When you have access to server logs, you see that it loads the Lua script as usual, but instead of entering in warmup, it skips the map and loads the new next one, and it does that like 4 times before going back to a normal state. The only idea I have would be to set the current map as next map until we are sure to be in warmup, but it's not very clean behavior (haven't tested, I don't know how nitmod would react). I think this is close to what I see here in your script with the custom "warmup" cvar, but instead it does not set a nextmap for the first InitGame hook call.
ETc|Exagone aka Exagone313
Post Reply