Jump to content

Error mod "mapspawnselect.lua" for all mods


Dididice

Recommended Posts

Good day, I apologize in advance for all the stylistic mistakes in the text. This text was translated with the help of a translator.

Build version 41.50. Found an issue in any mod adding new cities and maps, unable to select map data in the start menu for selecting spawn points. In the game itself, these cities appear and work stably. Everything works fine on the stable version of the game. Tried reinstalling mods. Deleted a folder along the way "\\Users\username\zomboid". Completely reinstalled the game, however nothing helped. Can anyone tell me what to do in this case. The check was carried out on mods "mod template" and "raven creek" (https://steamcommunity.com/sharedfiles/filedetails/?id=2196102849&searchtext=raven+)

 

client\OptionScreens\MapSpawnSelect.lua

--***********************************************************
--**                    THE INDIE STONE                    **
--***********************************************************

require "ISUI/ISScrollingListBox"

MapSpawnSelect = ISPanelJoypad:derive("MapSpawnSelect")

local FONT_HGT_SMALL = getTextManager():getFontHeight(UIFont.Small)
local FONT_HGT_MEDIUM = getTextManager():getFontHeight(UIFont.Medium)

function MapSpawnSelect:initialise()
	ISPanelJoypad.initialise(self)
end

function MapSpawnSelect:getFixedSpawnRegion()
	if not isClient() then return nil end
	local spawnPoint = getServerOptions():getOption("SpawnPoint")
	if not spawnPoint or #spawnPoint:split(",") ~= 3 then
		return nil
    end
	local xyz = spawnPoint:split(",")
	local x = tonumber(xyz[1])
	local y = tonumber(xyz[2])
	local z = tonumber(xyz[3])
	if x and y and z and (x ~= 0 or y ~= 0) then
		local worldX = math.floor(x / 300)
		local worldY = math.floor(y / 300)
		local posX = x - worldX * 300
		local posY = y - worldY * 300
		return { {
			name = getText("UI_mapspawn_ServerSpawnPoint"), points = {
				unemployed = {
					{ worldX = worldX, worldY = worldY, posX = posX, posY = posY, posZ = z },
				},
			}
		} }
	end
	return nil
end

function MapSpawnSelect:getSafehouseSpawnRegion()
	if not isClient() then return nil end
	if not getServerOptions():getBoolean("SafehouseAllowRespawn") then return nil end
	local username = getClientUsername()
	if MainScreen.instance.inGame then
		if CoopCharacterCreation.instance.playerIndex > 0 then
			username = CoopUserName.instance:getUserName()
		end
	end
	for i=0,SafeHouse.getSafehouseList():size()-1 do
		local safe = SafeHouse.getSafehouseList():get(i);
		if safe:getPlayers():contains(username) or safe:getOwner() == username then
			x = safe:getX() + (safe:getH() / 2);
			y = safe:getY() + (safe:getW() / 2);
			z = 0;
			local worldX = math.floor(x / 300)
			local worldY = math.floor(y / 300)
			local posX = x - worldX * 300
			local posY = y - worldY * 300
			return { {
				name = getText("UI_mapspawn_Safehouse"), points = {
					unemployed = {
						{ worldX = worldX, worldY = worldY, posX = posX, posY = posY, posZ = z },
					},
				}
			} }
		end
	end
	return nil
end

function MapSpawnSelect:getChallengeSpawnRegion()
	if not getCore():isChallenge() then return nil end
	return LastStandData.getSpawnRegion()
end

function MapSpawnSelect:getSpawnRegions()
	return self:getSafehouseSpawnRegion() or self:getFixedSpawnRegion() or self:getChallengeSpawnRegion() or SpawnRegionMgr.getSpawnRegions()
end

function MapSpawnSelect:hasChoices()
	local regions = self:getSpawnRegions()
	return regions and #regions > 1
end

function MapSpawnSelect:useDefaultSpawnRegion()
	self.selectedRegion = nil
	local regions = self:getSpawnRegions()
	if not regions or #regions == 0 then return end
	self.selectedRegion = regions[1]
	return self.selectedRegion
end

function MapSpawnSelect:fillList()
	self.listbox:clear()
	local regions = self:getSpawnRegions()
	if not regions then return end
	for _,v in ipairs(regions) do
		local info = getMapInfo(v.name)
		if info then
			local item = {};
			item.name = info.title or "NO TITLE";
			item.region = v;
			item.dir = v.name;
			item.desc = info.description or "NO DESCRIPTION";
			item.worldimage = info.thumb;
			self.listbox:addItem(item.name, item);
		else
			local item = {}
			item.name = v.name;
			item.region = v;
			item.dir = "";
			item.desc = "";
			item.worldimage = nil;
			self.listbox:addItem(item.name, item);
		end
	end
	self.listbox:sort()

	self:hideOrShowSaveName()
end

function MapSpawnSelect:hideOrShowSaveName()
	-- There is no "Save Name" field when creating a co-op player
	if MainScreen.instance.inGame then return end

	-- When loading an existing save, don't display "Save Name" field
	if MainScreen.instance.createWorld and not getCore():isChallenge() then
		self.startY = 110
		self.textEntryLabel:setVisible(true)
		self.textEntry:setVisible(true)
	else
		self.startY = 80
		self.textEntryLabel:setVisible(false)
		self.textEntry:setVisible(false)
	end

	self.listbox:setY(self.startY)
	self.listbox:setHeight(self.height-30-30-self.startY)
end

function MapSpawnSelect:onOptionMouseDown(button, x, y)
	self:setVisible(false)
	if button.internal == "BACK" then
		self:clickBack()
	elseif button.internal == "NEXT" then
		self:clickNext()
	end
end

function MapSpawnSelect:onDblClick()
	self.nextButton:forceClick()
end

function MapSpawnSelect:clickBack()
	if getWorld():getGameMode() == "Multiplayer" then
		backToSinglePlayer()
		getCore():ResetLua("default", "exitJoinServer")
	elseif self.previousScreen == "LastStandPlayerSelect" then
		self.previousScreen = nil
		LastStandPlayerSelect.instance:setVisible(true, self.joyfocus)
	elseif self.previousScreen == "LoadGameScreen" then
		MainScreen.resetLuaIfNeeded()
		self.previousScreen = nil
		LoadGameScreen.instance:setSaveGamesList()
		MainScreen.instance.loadScreen:setVisible(true, self.joyfocus)
	elseif self.previousScreen == "NewGameScreen" then
		self.previousScreen = nil
		MainScreen.instance.soloScreen:setVisible(true, self.joyfocus)
	elseif self.previousScreen == "WorldSelect" then
		self.previousScreen = nil
		MainScreen.instance.worldSelect:setVisible(true, self.joyfocus)
	end
end

function MapSpawnSelect:clickNext()
	self.selectedRegion = self.listbox.items[self.listbox.selected].item.region
	self:setVisible(false)
	if MainScreen.instance.createWorld then
		getWorld():setWorld(sanitizeWorldName(self.textEntry:getText()));
	end
	if getWorld():getGameMode() == "Sandbox" and not checkSaveFileExists("map_sand.bin") then
		MainScreen.instance.sandOptions.previousScreen = "MapSpawnSelect";
		MainScreen.instance.sandOptions:setVisible(true, self.joyfocus)
	else
		MainScreen.instance.charCreationProfession.previousScreen = "MapSpawnSelect";
		MainScreen.instance.charCreationProfession:setVisible(true, self.joyfocus)
	end
end

function MapSpawnSelect:prerender()
	ISPanelJoypad.prerender(self)
	local enable = true
	if self.textEntry and self.textEntry:isVisible() then
		local rawText = self.textEntry:getText()
		local worldName = sanitizeWorldName(rawText)
		if worldName == "" or worldName ~= rawText or luautils.stringStarts(worldName, ".") or luautils.stringEnds(worldName, ".") then
			enable = false
		else
			local checkExistName = getWorld():getGameMode() .. getFileSeparator() .. worldName
			if checkExistName ~= self.checkExistsName then
				self.checkExistsName = checkExistName
				self.checkExist = checkSaveFolderExists(checkExistName)
			end
			if self.checkExist then
				enable = false
			end
		end
	end
	if self.textEntry then
		self.textEntry:setValid(enable)
	end
	self.nextButton:setEnable(enable)
end

function MapSpawnSelect:render()
	ISPanelJoypad.render(self)
	self:drawTextCentre(getText("UI_mapspawn_title"), self.width / 2, 10, 1, 1, 1, 1, UIFont.Title)
	self:drawRectBorder(self.listbox:getX(), self.listbox:getY(), self.listbox:getWidth(), self.listbox:getHeight(), 0.9, 0.4, 0.4, 0.4)
	
	local selectedItem = self.listbox.items[self.listbox.selected].item;
	
	local thumbHeight = 0;
	local thumbPadY = 0;
	if selectedItem.worldimage ~= nil then
		thumbHeight = selectedItem.worldimage:getHeight();
		thumbPadY = 10;
		local BreakPoint = ((self.width/4)*3) - selectedItem.worldimage:getHeight()/2;
		self:drawTexture(selectedItem.worldimage, BreakPoint, self.startY, 1, 1, 1, 1);
		self:drawRectBorder( BreakPoint, self.startY, selectedItem.worldimage:getWidth(), selectedItem.worldimage:getHeight(), 0.3, 1, 1, 1);
		--        self:drawTexture(item.worldimage, MapSelecter.padXY, y+MapSelecter.padXY, 1, 1, 1, 1);
	end
	local descRectWidth = self.width - 37 - (self.width/2 + 30)
	local descRectHeight = self.height - 60 - (self.startY + thumbHeight + thumbPadY)
	self.richText:setX(self.width/2 + 30)
	self.richText:setY(self.startY + thumbHeight + thumbPadY)
	self.richText:setWidth(descRectWidth)
	self.richText:setHeight(descRectHeight)
	self.richText:setVisible(true);
	self.richText.text = selectedItem.desc or "";
	self.richText:paginate();
	self:drawRectBorder( self.richText.x, self.richText.y, self.richText:getWidth(), self.richText:getHeight(), 0.3, 1, 1, 1);
end

function MapSpawnSelect:doDrawItem(y, item, alt)
	local isMouseOver = self.mouseoverselected == item.index and not self:isMouseOverScrollBar()
	if self.selected == item.index then
		self:drawRect(0, (y), self:getWidth(), item.height-1, 0.3, 0.7, 0.35, 0.15)
	elseif isMouseOver then
		self:drawRect(1, y + 1, self:getWidth() - 2, item.height - 2, 0.95, 0.05, 0.05, 0.05);
	end
	self:drawRectBorder(0, (y), self:getWidth(), item.height, 0.5, self.borderColor.r, self.borderColor.g, self.borderColor.b)
	local fontHgt = getTextManager():getFontFromEnum(UIFont.Large):getLineHeight()
	local textY = y + (item.height - fontHgt) / 2
	self:drawText(item.text, 15, textY, 0.9, 0.9, 0.9, 0.9, UIFont.Large)
	y = y + item.height
	return y
end

function MapSpawnSelect:onGainJoypadFocus(joypadData)
    ISPanelJoypad.onGainJoypadFocus(self, joypadData)
    joypadData.focus = self.listbox
    updateJoypadFocus(joypadData)
    self.listbox:setISButtonForA(self.nextButton)
    self.listbox:setISButtonForB(self.backButton)
end

function MapSpawnSelect:create()
	local padX = 16
	local btnWid = 100
	local btnHgt = math.max(25, FONT_HGT_SMALL + 3 * 2)
	local btnPadY = 5
	local titleHgt = 80

	if not MainScreen.instance.inGame then -- don't show savefile entry in splitscreen
	
	self.textEntryLabel = ISLabel:new(20, 48, 50, getText("UI_mapselecter_savename"), 1, 1, 1, 1, UIFont.Medium, true);
	self.textEntryLabel:initialise();
	self.textEntryLabel:instantiate();
	self.textEntryLabel:setAnchorLeft(true);
	self.textEntryLabel:setAnchorRight(true);
	self.textEntryLabel:setAnchorTop(false);
	self.textEntryLabel:setAnchorBottom(false);
	self:addChild(self.textEntryLabel);
	
	local inset = 2
	self.textEntry = ISTextEntryBox:new("", self.textEntryLabel:getRight() + 17, self.textEntryLabel.y + (self.textEntryLabel.height - (FONT_HGT_MEDIUM + inset * 2)) / 2, self.width-(self.textEntryLabel:getRight() + 17) - 16, 18);
	self.textEntry.font = UIFont.Medium
	self.textEntry:initialise();
	self.textEntry:instantiate();
	self.textEntry:setAnchorLeft(true);
	self.textEntry:setAnchorRight(true);
	self.textEntry:setAnchorTop(true);
	self.textEntry:setAnchorBottom(false);
	self:addChild(self.textEntry);
	local sdf = SimpleDateFormat.new("dd-MM-yyyy_hh-mm-ss");
	self.textEntry:setText(sdf:format(Calendar.getInstance():getTime()));

	end -- not MainScreen.instance.inGame
	
--	self.listbox = ISScrollingListBox:new(padX, titleHgt, self.width-padX*2, self.height-btnPadY-btnHgt-24-titleHgt)
--	self.listbox:initialise()
--	self.listbox:setAnchorRight(true)
--	self.listbox:setAnchorBottom(true)
--	self.listbox.doDrawItem = MapSpawnSelect.doDrawItem
--	self.listbox:setOnMouseDoubleClick(self, MapSpawnSelect.onDblClick)
--	self:addChild(self.listbox)
	
	self.listbox = ISScrollingListBox:new(16, self.startY, self.width/2, self.height-30-30-self.startY);
	self.listbox:initialise();
	self.listbox:instantiate();
	self.listbox:setAnchorLeft(true);
	self.listbox:setAnchorTop(true);
	self.listbox:setAnchorBottom(true);
	self:addChild(self.listbox);
	self.listbox.itemheight = 50;
	self.listbox.doDrawItem = MapSpawnSelect.doDrawItem
	self.listbox:setOnMouseDoubleClick(self, MapSpawnSelect.onDblClick)
	self.listbox.backgroundColor  = {r=0, g=0, b=0, a=0.5};
	
	self.richText = ISRichTextPanel:new(16, 10, 500,200);
	self.richText.marginRight = 20
	self.richText.autosetheight = false;
	self.richText.clip = true
	self.richText:initialise();
	self.richText.background = true;
	self.richText:setAnchorBottom(true);
	self.richText:setAnchorRight(true);
	self.richText:setVisible(false);
	self.richText.backgroundColor  = {r=0, g=0, b=0, a=0.5};
	self:addChild(self.richText);
	self.richText:addScrollBars()

	self.backButton = ISButton:new(padX, self.height - btnPadY - btnHgt, 100, btnHgt, getText("UI_btn_back"), self, MapSpawnSelect.onOptionMouseDown)
	self.backButton.internal = "BACK"
	self.backButton:initialise()
	self.backButton:instantiate()
	self.backButton:setAnchorLeft(true)
	self.backButton:setAnchorTop(false)
	self.backButton:setAnchorBottom(true)
	self.backButton.borderColor = {r=1, g=1, b=1, a=0.1}
	self:addChild(self.backButton)

	self.nextButton = ISButton:new(self.width - 116, self.height - btnPadY - btnHgt, 100, btnHgt, getText("UI_btn_next"), self, MapSpawnSelect.onOptionMouseDown)
	self.nextButton.internal = "NEXT"
	self.nextButton:initialise()
	self.nextButton:instantiate()
	self.nextButton:setAnchorLeft(false)
	self.nextButton:setAnchorRight(true)
	self.nextButton:setAnchorTop(false)
	self.nextButton:setAnchorBottom(true)
	self.nextButton:setEnable(true) -- sets the hard-coded border color
	self:addChild(self.nextButton)
end

function MapSpawnSelect:new(x, y, width, height)
	local o = ISPanelJoypad.new(self, x, y, width, height)
	o.selectedRegion = nil
	o.previousScreen = 'NewGameScreen'
	o.addY = 0;
	o.startY = MainScreen.instance.inGame and 80 or 110;
	MapSpawnSelect.instance = o
	return o
end

 

console.txt 22-02-21_14-59-42_DebugLog.txt

Link to comment
Share on other sites

My collection mods https://steamcommunity.com/workshop/filedetails/?id=2404603789

While checking, I turned off all mods except raven creek and template. The rest of the mods from the list remained only in subscriptions and were not activated.

Even after unsubscribing from all modifications and leaving only template, a similar error continues.

54 minutes ago, EnigmaGrey said:

What all mods are you using? I see several additional texture packs such as NZTilePack, RussianRetecture .etc, but not the names of the mods themselves.

 

I'd assume a mod is interfering in some way with the drawing of the ListBox, so breaks spawn selection. 

22-02-21_20-16-06_DebugLog.txt

Edited by Dididice
Link to comment
Share on other sites

20 minutes ago, Dididice said:

My collection mods https://steamcommunity.com/workshop/filedetails/?id=2404603789

While checking, I turned off all mods except raven creek and template. The rest of the mods from the list remained only in subscriptions and were not activated.

Even after unsubscribing from all modifications and leaving only template, a similar error continues.

22-02-21_20-16-06_DebugLog.txt 264.21 kB · 0 downloads

 Seems to be a bunch of stuff missing from these, such as resolution and version of the game you're trying to play. 

 

But to double check: does this happen only when mod template is used? has the template been modified at all? Did this happen after switching from Build 41 to Build 40 or vice-versa?

Link to comment
Share on other sites

1 hour ago, EnigmaGrey said:

 Кажется, в них не хватает множества вещей, таких как разрешение и версия игры, в которую вы пытаетесь играть. 

 

Но дважды проверьте: происходит ли это только при использовании шаблона мода? был ли вообще изменен шаблон? Произошло ли это после перехода со сборки 41 на сборку 40 или наоборот?

I will repeat myself. I tested initially two mods on version 41.50, even when I used only 1 mod. On version 39 to 40.30, the template mod, as well as other modifications related to the addition of a spawn point (a random spawn location, another city, etc.), everything works. At 41.50 it no longer works. If required, I can run on versions 40.30, 39 and throw off the logs, if it can help with my problem.

Link to comment
Share on other sites

1 hour ago, Dididice said:

I will repeat myself. I tested initially two mods on version 41.50, even when I used only 1 mod. On version 39 to 40.30, the template mod, as well as other modifications related to the addition of a spawn point (a random spawn location, another city, etc.), everything works. At 41.50 it no longer works. If required, I can run on versions 40.30, 39 and throw off the logs, if it can help with my problem.

Since I can’t reproduce it, I can only assume the problem is Steam is failing to update the files correctly.

 

Make sure build 41 is selected in the a Betas tab.

 

Do not use the reinstall feature.

 

Go to %ProgramFiles(x86)%\Steam\steamapps\common and delete the ProjectZomboid folder.

 

Verify the game in Properties -> Local Files.

 

If it still doesn’t work, rename the %username%\zomboid folder to zomboid_old and try starting fresh.

Link to comment
Share on other sites

8 hours ago, EnigmaGrey said:

Since I can’t reproduce it, I can only assume the problem is Steam is failing to update the files correctly.

 

Make sure build 41 is selected in the a Betas tab.

 

Do not use the reinstall feature.

 

Go to %ProgramFiles(x86)%\Steam\steamapps\common and delete the ProjectZomboid folder.

 

Verify the game in Properties -> Local Files.

 

If it still doesn’t work, rename the %username%\zomboid folder to zomboid_old and try starting fresh.

It turned out to be fixed. I have done several experiments. Version 41.5 remained on Steam, even after reinstallations. I decided to go the other way and run the .exe file of the game from the folder itself. The most amazing thing is that everything started and the spawn points began to be displayed, while there were no errors. After that I tried to run the start button in steam and again - the error of the spawn points.
Output. I do not know what exactly, but when launched with a button in Steam, it creates this error. By the way, I have not installed any additional launch functions (-debug, etc.)

And thank you very much for your responsiveness!

Link to comment
Share on other sites

15 hours ago, Dididice said:

It turned out to be fixed. I have done several experiments. Version 41.5 remained on Steam, even after reinstallations. I decided to go the other way and run the .exe file of the game from the folder itself. The most amazing thing is that everything started and the spawn points began to be displayed, while there were no errors. After that I tried to run the start button in steam and again - the error of the spawn points.
Output. I do not know what exactly, but when launched with a button in Steam, it creates this error. By the way, I have not installed any additional launch functions (-debug, etc.)

And thank you very much for your responsiveness!


Try restarting Steam itself. There might be a pending update breaking integration with the game?

 

 Hopefully it’s something that simple, as others have inexplicably had issues the past two weeks, despite us not releasing an update since early Jan. Rather confusing, overall.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...