Jump to content

Tchernobill

Member
  • Posts

    128
  • Joined

  • Last visited

1 Follower

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Tchernobill's Achievements

  1. • 41.78.7 • SinglePlayer (solo). • No mod. • Still occurs on new save • Reproduction steps: 1. Start game in debug mode. 2. Add weapons and weapon parts from debug Item list. 3. right click on weapons and weapons part => there is no upgrade option There is no button to upgrade a M9 Pistol with Iron sight. See attached pictures. It occures with all range weapons and all weapon parts. Did I miss an update on this topic ?
  2. Using Tiled from Project Zomboid Modding Tool, I am not able to create a pack from pictures (not tiles) I choose a directory with my png's and untick as those are not tiles but it creates no pack. Using, Project Zomboid Pack Manager, I do not know how to edit the pictures in a pack (I only changed the picture names with an hexa editor, but I want to change sizes and picture numbers) using Soulficher Farming Time pack as an exemple. So how should I edit the meta data ? Regards,
  3. It works better with isoToScreenX and y functions function MyLuaUIElementClass:renderIsoCircle(playerNum, posX, posY, posZ, ray, r, g, b, a) local angularStep = 0.3490658503988659D; for var11 = 0, 6.283185307179586D, angularStep do--from 0 to 2 PI local xStart = posX + ray * Math.cos(var11); local yStart = posY + ray * Math.sin(var11); local xEnd = posX + ray * Math.cos(var11 + angularStep); local yEnd = posY + ray * Math.sin(var11 + angularStep); local xScreen1 = isoToScreenX(playerNum, xStart, yStart, posZ); local yScreen1 = isoToScreenY(playerNum, xStart, yStart, posZ); local xScreen2 = isoToScreenX(playerNum, xEnd , yEnd , posZ); local yScreen2 = isoToScreenY(playerNum, xEnd , yEnd , posZ); --LineDrawer.drawLine(xScreen1, yScreen1, xScreen2, yScreen2, r, g, b, a, var8); self:drawLine2( xScreen1, yScreen1, xScreen2, yScreen2, a, r, g, b) end end
  4. use renderIsoCircle. (constant parameters) change zoom level. Current the circle changes its position relative to the terrain database. the circle changes its position relative to the screen. Expected the circle does not change its position relative to the terrain database.
  5. Multiplayer dedicated server. A mod writes a new table and inner values to the moddata of the BaseVehicle (client side). Then it calls transmitModData() on that same BaseVehicle. The ModData values set remain on the client side. The client disconnect then join again. Current: The ModData values set previously are not available on the client side of the BaseVehicle. Expected: The ModData values set previously remain available on the client side of the BaseVehicle. Notes: The equivalent code is working as expected for the furniture objets. (*) I expect transmitModData() to send a non-destructive update of the vehicle moddata tables.
  6. There is no problem without mod as all vanilla moodles descriptions have one line of title and one of description. (yet, as far as I know). The problem occures with the Clear description for Moodles mod. The fact the shape always takes only one line of title and one line of description is done by vanilla MoodlesUI.java in render() method if (this.MouseOver && var2 == this.MouseOverSlot) { String var15 = this.UseCharacter.getMoodles().getMoodleDisplayString(var3); String var16 = this.UseCharacter.getMoodles().getMoodleDescriptionString(var3); var9 = TextManager.instance.font.getWidth(var15); var10 = TextManager.instance.font.getWidth(var16); int var11 = Math.max(var9, var10); int var12 = TextManager.instance.font.getLineHeight(); int var13 = (int)this.MoodleSlotsPos[var3] + 1; int var14 = (2 + var12) * 2; this.DrawTextureScaledColor((Texture)null, -10.0D - (double)var11 - 6.0D, (double)var13 - 2.0D, (double)var11 + 12.0D, (double)var14, 0.0D, 0.0D, 0.0D, 0.6D); this.DrawTextRight(var15, -10.0D, (double)var13, 1.0D, 1.0D, 1.0D, 1.0D); this.DrawTextRight(var16, -10.0D, (double)(var13 + var12), 0.800000011920929D, 0.800000011920929D, 0.800000011920929D, 1.0D); } Modders could compensate by adding the missing part from lua code but I prefer to ask TIS to make it more generic. instead of int var12 = TextManager.instance.font.getLineHeight(); it could use something like int var12 = TextManager.instance.font.getHeight(var15); instead of int var14 = (2 + var12) * 2; it could use something like int var14 = var12+TextManager.instance.font.getHeight(var16)+4;
  7. You probably already can do that: hook ISReadABook:perform() use self.character:getAlreadyReadBook() array and self.item:getFullType() At worse, make a static table of all Maps item to link maps items and the fact a zone is known. But we can probably identify them from category / display category or some Java types or whatever.
  8. --xpUpdate.everyTenMinutes = function() extract from XpUpdate.lua B41.73 modData.strengthUpTimer = modData.strengthUpTimer + 10; -- if we've been lazy for too long, we start losing xp, every 1200 tick we lose 1 xp if modData.strengthUpTimer > 20000 and modData.strengthMod ~= math.floor(modData.strengthUpTimer / 1200) then --[..] decrease strength xp end if modData.strengthUpTimer > 31000 then -- it's caped to a 30000 timer, so if you've been lazy for a lot of days, it's not so long to get in shape again modData.strengthUpTimer = 0; end The comment does not match the code. Current: xp decays after ~14 days without xp earned until ~22 days then it will not decrease for ~14 days. I guess the code is incorrect and it should be a timer saturation instead of a timer reset. Proposed modification: --xpUpdate.everyTenMinutes = function() proposed modification in XpUpdate.lua modData.strengthUpTimer = modData.strengthUpTimer + 10; -- if we've been lazy for too long, we start losing xp, every 1200 tick we lose 1 xp if modData.strengthUpTimer > 20000 and modData.strengthMod ~= math.floor(modData.strengthUpTimer / 1200) then --[..] decrease strength xp end if modData.strengthUpTimer > 31000 then -- it's caped to a 31000 timer, so if you've been lazy for a lot of days, it's not so long to get in shape again modData.strengthUpTimer = 31000; end Proposition: xp decays after ~14 days without xp earned. Notes: I set aside the fact that with every xp earned the timer increases by 2 days as it seems not relevant to the reset / saturation choice. I set aside the strengthMod escape every 20 hours as it seems not relevant to the reset / saturation choice.
  9. The hit body part could be related to the attack animation and the target sprite. If so, the relative positions and orientations of the attacker and the target should be taken into account in the experiment. But this would require a LOT of time and precision to be tested.
  10. On Dr Client side: (lua/client) sendClientCommand("DrHide", "vaccinePlayer", _data); -- _data should include the onlineID of the target player. This allows you to identify him on server side On Server side: (lua/server) DrHideServer = {} DrHideServer.OnClientCommand = function(_module, _command, _player, _packet)--not that _player is the source player. i.e. the Dr. if _module ~= "DrHide" then return; end;--the message is not for you. it's ok if (_command ~= "vaccinePlayer") or (not _packet) then return end; --bug maybe log this too --TODO interpret _packet -- it should include the onlineID of the target player. This allows you to identify him on server side --in your case there are two possibilities: -- 1/ modify the target player mod data (getModData().DrHideMD) and update them (with ModData.transmit("DrHideMD")) -- 2/ sendServerCommand to the target player end Events.OnClientCommand.Add(DrHideServer.OnClientCommand); On Vaccine target Client side: (lua/client) --if you used moddata update from server: local function OnReceiveGlobalModData(_module, _packet) if _module ~= "DrHideMD" then return; end; ModData.add(_module, _packet); --now you can use the updated moddata end; end Events.OnReceiveGlobalModData.Add(OnReceiveGlobalModData) This is how Donkaike made it in Prisonner mod. I guess you could use OnServerCommand in case 2 (using sendServerCommand on server side).
  11. this mod modifies the item definition that is used at item spawn time. It will never modify an already spawned item. You need something else to modify the item already spawned.
  12. I see how the java code is computing the player CombatSpeed variable. I see that this variable is an input of animations as described in some xml files (e.g. 1HDefault.xml) Can someone (TIS?) explain me how to predict the resulting time between the start of the animation and the next moment the player can attack again (supposedly the time of the animation) ? Can I use blindly the hit animation time as displayed in the ingame debug / dev / animation viewer ? Should I use those times and add some transition delays ? Please, help.
  13. I wish I knew ! IbrRus did it for their dance animation mods. Authentic Peach has some knowledge and is sometimes streaming it on twitch. Maybe sometime TIS or one of those geniuses will guide us to the light .
×
×
  • Create New...