Add a wall sign and disable "monster" - Printable Version +- Cuberite Forum (https://forum.cuberite.org) +-- Forum: Plugins (https://forum.cuberite.org/forum-1.html) +--- Forum: Plugin Discussion (https://forum.cuberite.org/forum-8.html) +--- Thread: Add a wall sign and disable "monster" (/thread-2476.html) |
Add a wall sign and disable "monster" - LeSanglier - 07-08-2016 Hi, I would to know how to add a wallsign ? The following code doesn't work in my lua script: Code: setBlock(UpdateQueue, Player:GetPosX() + 3, Player:GetPosY() + 2, Player:GetPosZ() + 2, E_BLOCK_WALLSIGN, E_META_CHEST_FACING_ZM) And my other question is how to disable the spawning monster? Thanks in advance !! ::D RE: Add a wall sign and disable "monster" - PureTryOut - 07-08-2016 (07-08-2016, 07:29 AM)LeSanglier Wrote: And my other question is how to disable the spawning monster? HOOK_SPAWNING_MONSTER and cMonster, docs are handy First add the hook for HOOK_SPAWNING_MONSTER, and in there check what type the mob is (I'm assuming you want to disable hostile mobs) using cMonster:GetMobFamily(). Then if you want to disable the mob from spawning, return true. Otherwise, return false and the mob will spawn. You can find an example here. RE: Add a wall sign and disable "monster" - LeSanglier - 07-08-2016 Thank you PureTryOut !! Code: Then if you want to disable the mob from spawning, return true. Otherwise, return false and the mob will spawn. It is exactly the good tips ! RE: Add a wall sign and disable "monster" - xoft - 07-08-2016 As for your wallsign, we need a bit more details. What is the UpdateQueue that you're sending as the first parameter? Are you calling SetBlock in the global namespace, without any object? Normally you need to specify the world on which the function should operate: -- world is a variable holding a cWorld object that we got elsewhere - in a hook, or in cRoot:Get():GetWorld("worldname"), or player:GetWorld() etc. world:SetBlock(x, y, z, E_BLOCK_WALLSIGN, E_META_CHEST_FACING_ZM) That code only works if you're sure that the chunk where you're setting the block is loaded. It's a bit more difficult if you don't have that guarantee - you need to instruct the cWorld to load the chunk, and then set the block: -- world is a cWorld object -- blockX, blockY, blockZ are the coords of the block -- chunkX, chunkZ are the coords of the chunk which has the block world:ChunkStay({{chunkX, chunkZ}}, nil, -- Note the double {'s, ChunkStay expects a table of tables function () -- this function gets called when the chunk is loaded world:SetBlock(blockX, blockY, blockZ, E_BLOCK_WALLSIGN, E_META_CHEST_FACING_ZM) end ) RE: Add a wall sign and disable "monster" - LeSanglier - 07-11-2016 Hi ! This piece of code comes from the DockerCraft project: https://github.com/docker/dockercraft/blob/master/world/Plugins/Docker/container.lua#L144 With your information, I am trying to debug my code. Thank you xoft for your explanation ! RE: Add a wall sign and disable "monster" - xoft - 07-11-2016 The DockerCraft has their own library that implements the setBlock() function (notice the lowercase s), they have some special processing for that. The code that I've given to you should work out of the box. ref.: https://github.com/docker/dockercraft/blob/master/world/Plugins/Docker/update.lua#L106 RE: Add a wall sign and disable "monster" - LeSanglier - 07-19-2016 Hi xoft !! (Sorry for the delay) (07-11-2016, 04:44 AM)xoft Wrote: The DockerCraft has their own library that implements the setBlock() function (notice the lowercase s), they have some special processing for that. The code that I've given to you should work out of the box. It works !! Thank you for your analyse ! RE: Add a wall sign and disable "monster" - LeSanglier - 07-21-2016 Hi, I have a very strange error with lua code: Code: function addSign(Player) I have a sign with but no lines. I must deconnect/connect to the server to have all displayed lines. Do you have a tip to display correctly the lines? Thank you. |