CapitaoSagres Posted October 14, 2024 Posted October 14, 2024 Ive never made a mod or coded in Lua before, but Ive been learning and searching a lot about it in the last month just so I can make a mod for PZ Im trying to make a new barricade. Warning: Im very very lost on what Im doing. I dont have any personal reference if Im going the wrong way or the right way. My biggest challenge has been knowing what Im suppose to look for and what I doing in general. Its like I have a chicken in my hands, but I dont know how to prepare it or ow the majority of the tools needed to prepare it ARE and are used for. Initially I tried to use the "Sheet" lua and txt files to make it, since this barricade has no health and is more just to cover the window, but either I didnt do it right (very likely) or its harder than what I am currently capable of doing. My new approach was to use the "Metal Sheet" lua and txt files, since it seemed easier and more in accordance to what my item is meant to work. However, Im having difficulty understanding what Im meant to change in the ClientCommands.lua file. I know the obvious, which is replacing Base.ShetMetal with my new item's name, but the rest is a bit hard for me to understand, and god have I been trying. Probably doesnt help that Im trying to do this at the end of the day when Im already quite exhausted. Also, thanks to https://pzwiki.net/wiki/Barricade I realized that I might need to get my hands on the java files as well, but because, once again, I dont really know what Im doing, Im not sure if I actually need those java files or not. Ive downloaded some curtains/barricade related mods to see what those creators use and did, but they work differently than what Im trying to make or they use 99% vanilla items/files. Ive e-mailed info@theindiestone.com 6 days ago to see if they could give me any guidance, but no response so far. Ive been googling for PZ modding tutors or lua modding tutors, but with no luck. I refuse to give up. I want to give my contribution to the community. The following code is off of ClientCommands and only contains the lines related to the metal sheet barricade. Can someone explain to me like I was a small child what I need to do to this? if isClient() then return end local ClientCommands = {} local Commands = {} Commands.object = {} ClientCommands.wantNoise = getDebug() local noise = function(msg) if (ClientCommands.wantNoise) then print('ClientCommand: '..msg) end end Commands.object.barricade = function(player, args) local object = _getBarricadeAble(args.x, args.y, args.z, args.index) if object then local barricade = IsoBarricade.AddBarricadeToObject(object, player) if barricade then if args.isMetal then local metal = InventoryItemFactory.CreateItem('Base.SheetMetal') metal:setCondition(args.condition) barricade:addMetal(player, metal) barricade:transmitCompleteItemToClients() player:sendObjectChange('removeItemID', { id = args.itemID, type = "Base.SheetMetal" }) end end else noise('expected BarricadeAble') end end Commands.object.unbarricade = function(player, args) local object = _getBarricadeAble(args.x, args.y, args.z, args.index) if object and object:isBarricaded() then local barricade = object:getBarricadeForCharacter(player) if barricade then if barricade:isMetal() then local metal = barricade:removeMetal(nil) if metal then player:sendObjectChange('addItem', { item = metal }) end end end end end ClientCommands.OnClientCommand = function(module, command, player, args) if Commands[module] and Commands[module][command] then local argStr = '' for k,v in pairs(args) do argStr = argStr..' '..k..'='..tostring(v) end noise('received '..module..' '..command..' '..tostring(player)..argStr) Commands[module][command](player, args) end end Events.OnClientCommand.Add(ClientCommands.OnClientCommand)
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