Dididice Posted February 22, 2021 Share Posted February 22, 2021 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 More sharing options...
EnigmaGrey Posted February 22, 2021 Share Posted February 22, 2021 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. Dididice 1 Link to comment Share on other sites More sharing options...
Dididice Posted February 22, 2021 Author Share Posted February 22, 2021 (edited) 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 February 22, 2021 by Dididice Link to comment Share on other sites More sharing options...
EnigmaGrey Posted February 22, 2021 Share Posted February 22, 2021 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 More sharing options...
Dididice Posted February 22, 2021 Author Share Posted February 22, 2021 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 More sharing options...
EnigmaGrey Posted February 22, 2021 Share Posted February 22, 2021 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. Dididice 1 Link to comment Share on other sites More sharing options...
Dididice Posted February 23, 2021 Author Share Posted February 23, 2021 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 More sharing options...
EnigmaGrey Posted February 23, 2021 Share Posted February 23, 2021 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now