What do you want to achieve? Keep it simple and clear! So basically i’m making a tycoon. Button while activated should get owner name by self.Tycoon.Owner. I set self.Owner in Tycoon Module to player and for some reason i couldn’t activate this button
What is the issue? Include screenshots / videos if possible! Described in 1st
What solutions have you tried so far? Did you look for solutions on the Developer Hub? I was making it by youtube video and it should work
Setting Tycoon Owner Code:
Players.PlayerAdded:Connect(function(player)
local tycoon = Tycoon.new(player)
Tycoon:Init()
end)
Setting Tycoon Owner in Tycoon.Owner code:
function Tycoon.new(player)
local self = setmetatable({}, Tycoon)
self.Owner = player
Tycoon._topicEvent = Instance.new("BindableEvent")
return self
end
Getting Tycoon.Owner code:
function Button:Press(player)
local id = self.Instance:GetAttribute("Id")
local cost = self.Instance:GetAttribute("Cost")
local cash = PlayerManager.GetMoney(player)
if player == self.Tycoon.Owner and cash >= cost then -- here i getting it and it no work
print("Player is owner and have enough money")
PlayerManager.SetMoney(player, cash - cost)
self.Tycoon:PublishTopic("Button", id)
self.Instance:Destroy()
end
end
local CollectionService = game:GetService("CollectionService")
local template = game:GetService("ServerStorage").Template
local componentFolder = script.Parent.Components
local tycoonStorage = game:GetService("ServerStorage").TycoonStorage
local function NewModel(model, cframe)
local newModel = model:Clone()
newModel:PivotTo(cframe)
newModel.Parent = workspace
return newModel
end
local Tycoon = {}
Tycoon.__Index = Tycoon
function Tycoon.new(player)
local self = setmetatable({}, Tycoon)
self.Owner = player -- here is setting player
Tycoon._topicEvent = Instance.new("BindableEvent")
return self
end
function Tycoon:Init()
self.Model = NewModel(template, CFrame.new(-238, 36.25, -165))
self:LockAll()
end
function Tycoon:LockAll()
for _, instance in ipairs(self.Model:GetDescendants()) do -- Here is error
if CollectionService:HasTag(instance, "Unlockable") then
self:Lock(instance)
else
self:AddComponents(instance)
end
end
end
function Tycoon:Lock(instance)
instance.Parent = tycoonStorage
self:CreateComponent(instance, componentFolder.Unlockable)
end
function Tycoon:Unlock(instance, id)
CollectionService:RemoveTag(instance, "Unlockable")
self:AddComponents(instance)
instance.Parent = self.Model
end
function Tycoon:AddComponents(instance)
for _, tag in ipairs(CollectionService:GetTags(instance)) do
local component = componentFolder:FindFirstChild(tag)
if component then
self:CreateComponent(instance, component)
end
end
end
function Tycoon:CreateComponent(instance, componentScript)
local compModule =require(componentScript)
local newComp = compModule.new(self, instance)
newComp:Init()
end
function Tycoon:PublishTopic(topicName, ...)
self._topicEvent:Fire(topicName, ...)
end
function Tycoon:SubscribeTopic(topicName, callback)
local connection = self._topicEvent.Event:Connect(function(name, ...)
if name == topicName then
callback(...)
end
end)
return connection
end
function Tycoon:Destroy()
self.Model:Destroy()
self._topicEvent:Destroy()
end
return Tycoon