Development of Arksie has caused me way too much mental pain. Share this with your friends! Let’s get the word out. Also make sure to join the group here. And now finally, with the devlog.
I finally (probably, hopefully) got the user id system. Thanks, @7z99.
I haven’t worked much on Arksie Studio. I wanna save that for last. Also, my datastore script is wayyy too long. 104 lines. I also have to add a search user feature, but I’ll work on that tomorrow.
I added a label that displays your amount of bits.
Want to help test Arksie and give feedback? Well, I’m looking for testers! Message me and join the group. Let me know what time works for you, and I’ll tell everyone to join the testing game.
Sure, I can also help you get the ui even nicer looking (If you want) I also had an idea for arksie studio, Rather than have full fledged scripting to start with I would do “Node Paths” or in simpler terms premade modules and functions that players can connect together to do complex stuff without complex code behind it. Anyway Id be glad to help if i can
Tbh, I kinda like the UI the way it is. Plus, it’s early in development, so it can change whenever, and for node paths, I’m not THAT advanced in scripting, but I see what you mean. Let me know what time works for you.
I would be glad to help you with scripting this game! I have an intermediate experience in doing scripting! Also, I love the idea of your experience and you are progressing REALLY well!
Here is a simple script that gets your friends and clones them to workspace!
local Players = game.Players
local dummy = game.ServerStorage.Dummy
local function iterPageItems(pages)
return coroutine.wrap(function()
local pagenum = 1
while true do
for _, item in ipairs(pages:GetCurrentPage()) do
coroutine.yield(item, pagenum)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
pagenum = pagenum + 1
end
end)
end
game.Players.PlayerAdded:Connect(function(player)
wait(5)
local friends = Players:GetFriendsAsync(player.UserId)
local usernames = {}
for i, v in iterPageItems(friends) do
table.insert(usernames, i.Username)
print(i.Username)
wait(0.01)
local dummyClone = dummy:Clone()
dummyClone.Parent = workspace
dummyClone.HumanoidRootPart.Position = Vector3.new(0, 10, 0)
local HumanoidDesc = Players:GetHumanoidDescriptionFromUserId(i.Id)
dummyClone.Humanoid:ApplyDescription(HumanoidDesc)
dummyClone.Name = i.Username
end
end)
Here is a snippet of a script that loops through a player’s inventory and displays it onto UI:
for i = 1, numOfKnives, 1 do
if i == 1 then
box = knifeItem
else
box = knifeItem:Clone()
box.Name = "Item" .. i
box.Parent = knifeItemFrame
if (i - 1) / (numOfItemsInRow * numOfRows) == 1 then
-- Add a new row
numOfRows += 1
box.Position = UDim2.new(Padding_X, 0, box.Position.Y.Scale, 0) + UDim2.new(0, 0, Dropdown_Y * (numOfRows - 1))
else
-- Move in the X axis
box.Position = knifeItemFrame["Item" .. (i - 1)].Position + UDim2.new(Dropdown_X, 0, 0, 0)
end
end
box.MouseButton1Click:Connect(function()
for _, v in pairs(itemViewport:GetChildren()) do
--[[if not v:IsA("UICorner") then
v:Destroy()
end
if not v:IsA("Frame") then
v:Destroy()
end]]--
end
local itemViewCam = Instance.new("Camera")
itemViewCam.Parent = itemViewport
local handle = game.ReplicatedStorage.WeaponModels:WaitForChild("KnifeModels"):FindFirstChild(availableKnives[i][1] .. "Handle"):Clone()
handle.Parent = itemViewport
itemViewport.CurrentCamera = itemViewCam
itemViewCam.CFrame = CFrame.new(handle.Position + Vector3.new(0, 0, 3), handle.Position)
local owned = game.ReplicatedStorage.Functions.KnifeCheck:InvokeServer(availableKnives[i][1])
local result = game.ReplicatedStorage.Functions.CheckEquipKnife:InvokeServer(availableKnives[i][1])
if result == "Unequipped" then
equippedItem.Value = ""
else
equippedItem.Value = availableKnives[i][1]
end
if equippedItem.Value == availableKnives[i][1] then
informationFrame.Cost.Text = "Owned" -- Placeholder. Change to desc if possible
informationFrame.Equip.Text = "Unequip"
elseif owned == true then
informationFrame.Cost.Text = "Owned" -- Placeholder. Change to desc if possible
informationFrame.Equip.Text = "Equip"
end
informationFrame.ItemName.Text = availableKnives[i][2]
selectedItem.Value = availableKnives[i][1]
end)
local fakeCamera = Instance.new("Camera")
fakeCamera.Parent = box.VPF
local handle = game.ReplicatedStorage.WeaponModels:WaitForChild("KnifeModels"):FindFirstChild(availableKnives[i][1] .. "Handle"):Clone()
handle.Parent = box.VPF
box.VPF.CurrentCamera = fakeCamera
fakeCamera.CFrame = CFrame.new(handle.Position + Vector3.new(0, 0, 3), handle.Position)
knifeItemFrame["Item" .. i].ItemName.Text = availableKnives[i][2]
tbh most games that have scripting on roblox use visual scripting which is fine but I think text based is a lot better lol just for authenticity and most developers are just more comfortable with it