I've made the script below to change the tycoon ownership system. Instead of touching a button, you should to talk with an NPC to check if there is a space on the factory. If yes, you can choose if you want to enter or not.
It works fine on studio but when i open a server with two players it get bugged:
1. The first time any player asks for a place, the NPC does not answer, but it give the choices. 2. When i click yes, and i deliver the other player to the NPC, it says yes but does not give the choices. It will just give the right answer when i do it again 3. Then i deliver the owner to NPC and it says "Someone has the factory" instead of "You are the owner of it". It will only give the right answer at the second time.
And it loops infinitely... :(
script.Parent.Head.Dialog.DialogChoiceSelected:connect(function(player,choice) if choice.Name == "OS" then if script.Parent.Parent.OwnerShipSystem.Owner.Value ~= "" then if script.Parent.Parent.OwnerShipSystem.Owner.Value == tostring(player) then choice.ResponseDialog = "What the hell, you already are the owner of the factory! ._." else choice.ResponseDialog = "Sorry, someone has taken that place" end local t = choice:GetChildren() for i, v in pairs(t) do choice[v.Name]:Destroy() end else choice.ResponseDialog = "Yes, you can! There is a free space in the factory! Do you want to take it?" end elseif choice.Name == "Y" then script.Parent.Parent.OwnerShipSystem.Owner.Value = tostring(player) end player = nil choice = nil end)
EDIT: I took LordDragonZord to stypi and changed the script. After some changing, I solved the problem and it works fine. Thanks to Goulstem too for testing the system in-game. Here goes the script for who wants to learn something:
wait(.2) script.Parent.Parent.OwnerShipSystem.Owner.Value = "" local Chat = game:GetService("Chat") script.Parent.Head.Dialog.DialogChoiceSelected:connect(function(player, choice) if choice.Name == "OS" then print(player.Name.." wants ownership") if script.Parent.Parent.OwnerShipSystem.Owner.Value == "" then print(player.Name.." can claim ownership") wait(.5) Chat:Chat(script.Parent.Head,"Man, you're lucky! We have an empty factory which needs to be filled. Are you sure you want to take it?", "Green") elseif script.Parent.Parent.OwnerShipSystem.Owner.Value == player.Name then choice:ClearAllChildren() local c = Instance.new("DialogChoice", choice) c.Name = "CRA" c.UserDialog = "Because I'm crazy, man" c.ResponseDialog = "Oh my god, help me..." print(player.Name.." is claiming his own ownership") wait(.5) Chat:Chat(script.Parent.Head,"Are you "..player.Name..", right? So, why are you claiming your own ownership?","Green") else print(player.Name.." is unlucky") choice:ClearAllChildren() local c = Instance.new("DialogChoice", choice) c.Name = "CRb" c.UserDialog = "Who has taken my place?" c.ResponseDialog = "Don't get mad, guy! The current owner of the factory is "..script.Parent.Parent.OwnerShipSystem.Owner.Value.."... do you have any problem with that?" wait(.5) Chat:Chat(script.Parent.Head,"Sorry, but we do not need owners for now. Come back later, please.", "Green") end elseif choice.Name == "Y" then script.Parent.Parent.OwnerShipSystem.Owner.Value = player.Name end end)