Jump to content

Recommended Posts

Posted

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)

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...