TropicalMasterpiece
TropicalMasterpiece
  • 16
  • 3 387
Roblox Studio - Hide & Seek Game | Map Voting I
In this video, I will be beginning to make a map voting system for our Hide & Seek game.
0:00 Intro
0:32 Setup
3:56 voteHandler Local Script
7:11 voteSender Local Script
8:39 voteHandler Script
15:21 Main Script
18:41 Testing
21:22 Outro
มุมมอง: 39

วีดีโอ

Roblox Studio - Hide & Seek Game | Random Map Selector & Frozen Seekers
มุมมอง 18714 วันที่ผ่านมา
In this video, I will be making a random map selector so that I can use multiple maps in my Hide & Seek game. I will also be making chambers for our seekers to stay in while the hiders run and hide. 0:00 Intro 0:44 Random Map Selector 5:44 Frozen Seekers 8:28 Testing 10:57 Outro
Roblox Studio - Hide & Seek Game | Caverns Trailer
มุมมอง 9214 วันที่ผ่านมา
In this video, I will be showcasing the new Caverns map for my Hide and Seek game. This is mainly used to experiment so I can create better game trailers in the future.
Roblox Studio | How to make a NPC Pathfinding System
มุมมอง 38021 วันที่ผ่านมา
In this video, I will be making a NPC movement system using PathfindingService. R15 Idle Animation: "rbxassetid://507766388" R15 Walk Animation: "rbxassetid://507767714" PathfindingService Documentation create.roblox.com/docs/characters/pathfinding 0:00 Intro 1:08 NPCMover Script 2:10 Enabling NPCMover Script 3:40 Scripting the NPCMover 14:09 Testing 15:25 Outro
Roblox Studio | How to make a Player Friend NPC Spawner
มุมมอง 22921 วันที่ผ่านมา
In this video, I will be making a player friend NPC spawner. GetFriendsAsync Documentation create.roblox.com/docs/reference/engine/classes/Players#GetFriendsAsync 0:00 Intro 0:21 Setup 1:47 FriendsHandler Script 5:47 NPCHandler ModuleScript 10:43 Testing 10:59 CallScript 12:12 Final Testing 12:38 Outro
Roblox Studio | How to make a Tagging System
มุมมอง 31121 วันที่ผ่านมา
In this video, I will be making a tagging system suitable for games such as Hide & Seek. 0:00 Intro 0:25 Setup 1:19 TagModule 6:04 TagHandler Script 9:10 CallScript 10:35 Testing 11:10 Final Changes 11:52 Outro
Roblox Studio | How to make a Team-Based Round System
มุมมอง 20028 วันที่ผ่านมา
In this video, I will be improving the round system and adding support for teams.
Roblox Studio | How to make a Moving Kill Brick
มุมมอง 98หลายเดือนก่อน
In this video, I will be making a moving kill brick / laser system.
Roblox Studio | How to make a Round System
มุมมอง 258หลายเดือนก่อน
In this video, I will be making a basic round system.
Roblox Studio - Hide & Seek Game | House Map
มุมมอง 174หลายเดือนก่อน
In this video, I will be making a house map to serve as a basis for the Hide & Seek game.
Roblox Studio | How to make a Secret Door
มุมมอง 127หลายเดือนก่อน
In this video, I will be making a secret door to use in my Hide & Seek Roblox game.
Roblox Studio - Hide & Seek Game | Status GUI
มุมมอง 112หลายเดือนก่อน
In this video, I create the Status UI that will tell players what is currently occurring in the game, informing them of the time remaining and seeker / hider counts. To fix script formatting: Ctrl A (Select All) Ctrl X (Cut selected text) Ctrl V (Paste selected text) This series is not intended to be used as a tutorial. My goal is to document my progress and improve my development abilities, wh...
Roblox Studio - Hide & Seek Game | Round System III
มุมมอง 85หลายเดือนก่อน
In this video, I will be improving the round system, fixing various errors, and adding a few visual details. To fix script formatting: Ctrl A (Select All) Ctrl X (Cut selected text) Ctrl V (Paste selected text) This series is not intended to be used as a tutorial. My goal is to document my progress and improve my development abilities, while also potentially helping viewers learn new things.
Roblox Studio - Hide & Seek Game | Round System II
มุมมอง 181หลายเดือนก่อน
In this video, I will be improving the round system, allowing for the game to endlessly loop & repeat. To fix script formatting: Ctrl A (Select All) Ctrl X (Cut selected text) Ctrl V (Paste selected text) This series is not intended to be used as a tutorial. My goal is to document my progress and improve my development abilities, while also potentially helping viewers learn new things.
Roblox Studio - Hide & Seek Game | Round System I
มุมมอง 184หลายเดือนก่อน
In this video, I will be making a round system and improving the tagging system in my Roblox Hide & Seek game. This series is not intended to be used as a tutorial. My goal is to document my progress and improve my development abilities, while also potentially helping viewers learn new things.
Roblox Studio - Hide & Seek Game | Basics
มุมมอง 775หลายเดือนก่อน
Roblox Studio - Hide & Seek Game | Basics

ความคิดเห็น

  • @DrakenTheOg
    @DrakenTheOg 22 ชั่วโมงที่ผ่านมา

    W video fam

  • @tropicalmasterpiece
    @tropicalmasterpiece วันที่ผ่านมา

    Sorry for the wait! Anyways, here are the scripts added in this video:

    • @tropicalmasterpiece
      @tropicalmasterpiece วันที่ผ่านมา

      voteHandler LocalScript - local repStorage = game:GetService("ReplicatedStorage") local events = repStorage:FindFirstChild("Events") local voteFolder = repStorage:FindFirstChild("Votes") local display = script.Parent local voteSender = script.voteSender events.sendVote.OnClientEvent:Connect(function() display.Visible = true -- Clone the votesender into all 3 displays for a = 1,3 do local clonedVS = voteSender:Clone() clonedVS.Parent = display:FindFirstChild("Display"..a) clonedVS.Enabled = true end end) events.endVoting.OnClientEvent:Connect(function() display.Visible = false end)

    • @tropicalmasterpiece
      @tropicalmasterpiece วันที่ผ่านมา

      voteSender LocalScript - local repStorage = game:GetService("ReplicatedStorage") local events = repStorage:FindFirstChild("Events") local sendVote = events:FindFirstChild("sendVote") local display = script.Parent local voteButton = display:FindFirstChild("VoteButton") local voteNumber = display:FindFirstChild("voteNumber").Value local mapName = display:FindFirstChild("mapName") mapName.Text = repStorage:FindFirstChild("MapVotes"):FindFirstChild(voteNumber).Value voteButton.MouseButton1Click:Connect(function() sendVote:FireServer(voteNumber) end) -- Self destruct events.endVoting.OnClientEvent:Connect(function() script:Destroy() end)

    • @tropicalmasterpiece
      @tropicalmasterpiece วันที่ผ่านมา

      voteHandler Script - local repStorage = game:GetService("ReplicatedStorage") local events = repStorage:FindFirstChild("Events") local sendVote = events:FindFirstChild("sendVote") local mapVotes = repStorage:FindFirstChild("MapVotes") local Votes = repStorage:FindFirstChild("Votes") local function finish() if #Votes:GetChildren() == repStorage.VotingPlayers.Value then -- Count the votes local votes = {} for playerVote, vote in pairs(Votes:GetChildren()) do local voteIndex = vote.Value if votes[voteIndex] == nil then votes[voteIndex] = 1 else votes[voteIndex] += 1 end end -- Determine a winner local highestNum = -1 local winnerMap = nil for mapIndex, voteNum in pairs(votes) do if voteNum > highestNum then highestNum = voteNum winnerMap = mapIndex end end -- Convert mapIndex to the chosen map local chosenMap = mapVotes:FindFirstChild(winnerMap).Value print("Voting over!","Winning map: "..chosenMap) -- Send info to the server repStorage.VotingFinished.Value = true repStorage.WinningMap.Value = chosenMap end end sendVote.OnServerEvent:Connect(function(plr,vote) local matchVote = Votes:FindFirstChild(plr.Name) if matchVote then matchVote:Destroy() end local plrVote = Instance.new("IntValue",Votes) plrVote.Name = plr.Name plrVote.Value = vote finish() end)

    • @tropicalmasterpiece
      @tropicalmasterpiece วันที่ผ่านมา

      Main Script - local tweenService = game:GetService("TweenService") local players = game:GetService("Players") local serverStorage = game:GetService("ServerStorage") local serverScriptService = game:GetService("ServerScriptService") local repStorage = game:GetService("ReplicatedStorage") local pSpawn = repStorage:FindFirstChild("playSpawn") local module = require(serverScriptService:FindFirstChild("ExtraCommands")) local roundTime = 3 * 60 local playerFolder = serverStorage:FindFirstChild("Hiders") local chosenFolder = serverStorage:FindFirstChild("Seekers") local hidercount = repStorage:FindFirstChild("hiderCount") local seekercount = repStorage:FindFirstChild("seekerCount") local status = repStorage:FindFirstChild("Status") local maps = serverStorage:FindFirstChild("Maps") while task.wait(5) do status.Value = "Waiting for players." -- Wait until two players have joined the game repeat task.wait() until #players:GetChildren() > 1 local plrCount = #players:GetChildren() -- Begin map voting status.Value = "Vote for a map!" -- Randomize map selections local mapVotes = repStorage:FindFirstChild("MapVotes") for a=1,3 do mapVotes:FindFirstChild(a).Value = maps:GetChildren()[math.random(1,#maps:GetChildren())].Name end -- Give our players the voting GUI repStorage.Events.sendVote:FireAllClients() repStorage.VotingPlayers.Value = plrCount -- Countdown local cdNum = 0 while task.wait(1) do cdNum += 1 if cdNum == 30 or repStorage.VotingFinished.Value == true then break else status.Value = "Vote for a map! "..30-cdNum end end local winningMap = repStorage:FindFirstChild("WinningMap").Value local wMap = maps:FindFirstChild(winningMap) or maps:GetChildren()[math.random(1,#maps:GetChildren())] local cMap = wMap:Clone() cMap.Parent = workspace -- Reset values repStorage.VotingFinished.Value = false winningMap = "" -- Finish map voting status.Value = cMap.Name.." has been chosen" repStorage.Events.endVoting:FireAllClients() task.wait(2) local playSpawn = cMap:FindFirstChild("playSpawn") pSpawn.Value = playSpawn.Position -- Starting the game local random = Random.new() local chosen = players:GetChildren()[random.NextInteger(random,1,#game.Players:GetChildren())] -- Picks random player print(chosen.Name.." has been chosen as the seeker.") for a,b in pairs(players:GetChildren()) do if b.Name ~= chosen.Name then -- if player is NOT it local playerName = Instance.new("StringValue",playerFolder) playerName.Name = b.Name local pChar = b.Character or b.CharacterAdded:Wait() pChar:PivotTo(playSpawn.CFrame) end end -- Send chosen player into battle local seekerTeleport = cMap:FindFirstChild("SeekerTeleport") local cChar = chosen.Character or chosen.CharacterAdded:Wait() cChar:PivotTo(seekerTeleport.CFrame) task.wait(.1) cChar.HumanoidRootPart.Anchored = true for i = 30,0,-1 do task.wait(1) status.Value = "Hide: "..i end cChar.HumanoidRootPart.Anchored = false module:setSeeker(chosen) -- Restart the game once hiders are no longer playing local number = roundTime while task.wait(1) do number -= 1 status.Value = number hidercount.Value = #playerFolder:GetChildren() seekercount.Value = #chosenFolder:GetChildren() local over = false local Winners = {} local winner for a,b in pairs(playerFolder:GetChildren()) do if players:FindFirstChild(b.Name) == nil then b:Destroy() end end for a,b in pairs(chosenFolder:GetChildren()) do if players:FindFirstChild(b.Name) == nil then b:Destroy() end end if #playerFolder:GetChildren() == 0 then over = true winner = "Seekers" end if #chosenFolder:GetChildren() == 0 then over = true winner = "Hiders" end if number <= 0 then over = true winner = "Hiders" end if over == true then local function removePlayer(b) task.wait() local playerCounter = game.Players:FindFirstChild(b.Name) print(b.Name) local cChar = playerCounter.Character or playerCounter.CharacterAdded:Wait() if cChar:FindFirstChild("tagRadius") ~= nil then cChar:FindFirstChild("tagRadius"):Destroy() end if cChar:FindFirstChild("Highlight") ~= nil then cChar:FindFirstChild("Highlight"):Destroy() end -- Delete all welds that may prevent teleportation for _,d in pairs(cChar.HumanoidRootPart:GetChildren()) do if d:IsA("WeldConstraint") then d:Destroy() end end -- Remove map cMap:Destroy() -- Bring players back to spawn task.wait() cChar:SetPrimaryPartCFrame(workspace.SpawnLocation.CFrame + Vector3.new(0,3,0)) b:Destroy() end status.Value = "The "..winner.." have won the game." task.wait() for a,b in pairs(playerFolder:GetChildren()) do removePlayer(b) end for a,b in pairs(chosenFolder:GetChildren()) do removePlayer(b) end break end end task.wait(5) status.Value = "Intermission" end

    • @xuongphimtranminhuc9900
      @xuongphimtranminhuc9900 วันที่ผ่านมา

      thanks that would be much simple for me to do that thanks

  • @BZP228
    @BZP228 3 วันที่ผ่านมา

    very good tutorial, but can you please make tutorial on IT skins?

  • @tadeonovato
    @tadeonovato 6 วันที่ผ่านมา

    veryt cool i use for rooms fangame

    • @tadeonovato
      @tadeonovato 5 วันที่ผ่านมา

      i cant use for rooms fangame anyrmore i alredy made entity real!11!!

  • @cyrusEdits864
    @cyrusEdits864 6 วันที่ผ่านมา

    what if i want the code to select random players as the seeker

  • @Ac3Fr
    @Ac3Fr 10 วันที่ผ่านมา

    can you send this one to please

  • @koainanis5840
    @koainanis5840 12 วันที่ผ่านมา

    hahaha so funny and i have some crazy ideas =)

  • @Ac3Fr
    @Ac3Fr 12 วันที่ผ่านมา

    this was my script local tweenService = game.GetService("TweenService") local charTagged = game.charTagged:WaitForChild("TropicalMasterpiece") local character = charTagged.Character or charTagged.CharcterAdded:Wait() local root = character.HmanoidRooPart local ball = Instance.new("Part",character) ball.CFrame = root.cFrame ball.CanCollide = false ball.Shape = Enum.PartType.Ball local weld = Instance.new("Weld",ball) weld.Name = "Tagwled" weld.Part0 = root weld.Part1 = ball ball.Size = Vector3.new(9,9,9) ball.Transparency = 0 ball.Touched:Connect(function(part) local charTagged = part.Parent local d = false if part.Parent:FindFirstChild("Humanoid")and charTagged:FindFirstChild("freeze") and d == false then d = true print("testing") -- freezing the player local rootTagged = charTagged.HumanoidRootPart rootTagged.Anchored = true local freeze = Instance.new("Part",charTagged) freeze.CFrame = rootTagged.cFrame freeze.Name = "freeze" local weld = Instance.new("WeldConstraint",rootTagged) weld.Name = "freezeweld" weld.Part0 = rootTagged weld.Part1 = freeze freeze.Transparency = 0 freeze.BrickColor =BrickColor.Blue() freeze.Size = Vector3.new(1,1,1) local tweeninfo = TweenInfo.new(0.5,Enum.EasingStyle.Sine) local goal = {} goal.size = Vector3.new(1.88, 5.854, 4.594) goal.cFrame = rootTagged.cFrame local tween = tweenService:Create(freeze,tweeninfo,goal) tween:Play() tween.Completed:Wait() d = false end end)

    • @tropicalmasterpiece
      @tropicalmasterpiece 12 วันที่ผ่านมา

      I posted the up-to-date scripts in my newest video. But I've noticed that you get "TropicalMasterpiece" instead of your roblox character, make sure you change this to your username.

    • @Ac3Fr
      @Ac3Fr 12 วันที่ผ่านมา

      @@tropicalmasterpiece thanks

    • @Ac3Fr
      @Ac3Fr 12 วันที่ผ่านมา

      @@tropicalmasterpiece can you send me the script?

    • @Ac3Fr
      @Ac3Fr 11 วันที่ผ่านมา

      ?

    • @tropicalmasterpiece
      @tropicalmasterpiece 11 วันที่ผ่านมา

      I tried to fix the script up a little, this worked for me. I would recommend that you update to the newer script though local tweenService = game:GetService("TweenService") repeat task.wait() until #game.Players:GetChildren() > 0 local tagPlayer = game.Players:GetChildren()[1] local character = tagPlayer.Character or tagPlayer.CharacterAdded:Wait() local root = character.HumanoidRootPart local ball = Instance.new("Part",character) ball.CFrame = root.cFrame ball.CanCollide = false ball.Shape = Enum.PartType.Ball local weld = Instance.new("Weld",ball) weld.Name = "tagWeld" weld.Part0 = root weld.Part1 = ball ball.Size = Vector3.new(9,9,9) ball.Transparency = 0.7 ball.Touched:Connect(function(part) local charTagged = part.Parent local d = false if part.Parent:FindFirstChild("Humanoid") and not charTagged:FindFirstChild("Freeze") and d == false then d = true print("Testing") -- Freezing the player local rootTagged = charTagged.HumanoidRootPart rootTagged.Anchored = true local freeze = Instance.new("Part",charTagged) freeze.CFrame = rootTagged.CFrame freeze.Name = "Freeze" local weld = Instance.new("WeldConstraint",rootTagged) weld.Name = "freezeWeld" weld.Part0 = rootTagged weld.Part1 = freeze freeze.Transparency = 0.7 freeze.BrickColor = BrickColor.Blue() freeze.Size = Vector3.new(1,1,1) local tweeninfo = TweenInfo.new(0.5,Enum.EasingStyle.Sine) local goal = {} goal.Size = Vector3.new(4,6,2) goal.CFrame = rootTagged.CFrame local tween = tweenService:Create(freeze,tweeninfo,goal) tween:Play() tween.Completed:Wait() d = false end end)

  • @Ac3Fr
    @Ac3Fr 12 วันที่ผ่านมา

    can you send the script because it dont work

  • @koainanis5840
    @koainanis5840 13 วันที่ผ่านมา

    this is one of the best tutorial series i found 👍 for me sometimes i struggle with you ;) but over all the game runs fine and i fixed or add some stuff i like. so thank you for the time and work ;) keep it up it would be nice if you can add: - afk system - so player can go afk and dont jump into the game. - winner (seeker or hider) get some coins - coins shop for some seeker and hider extras like speed or jump boost etc ;) - level system... only winners get some exp - based on the level system: give players an aura/title if they reached a specific level like 5, 10, 25, 50, 75, 100....

  • @DrakenTheOg
    @DrakenTheOg 13 วันที่ผ่านมา

    Yo sorry for being late but great video mate!

  • @koainanis5840
    @koainanis5840 13 วันที่ผ่านมา

    oh wait....where can i get the module script 'basic commands' for the time display ?

    • @tropicalmasterpiece
      @tropicalmasterpiece 13 วันที่ผ่านมา

      The format is: ("%02i:%02i"):format(s/60%60, s%60) Just make sure your seconds variable is called "s"

  • @RaphIsTooGood
    @RaphIsTooGood 13 วันที่ผ่านมา

    I really like this tutorial! I recommend adding more customisability options (e.g seeker skins, auras etc.) and a level system!

  • @tropicalmasterpiece
    @tropicalmasterpiece 13 วันที่ผ่านมา

    TagModule Script - local module = {} local taghandler = script.tagHandler -- Get team folders local repStorage = game:GetService("ReplicatedStorage") local chasers = repStorage:FindFirstChild("Chasers") local runners = repStorage:FindFirstChild("Runners") -- Set players to a team function module:AddTeam(player,team) local stringvalue = Instance.new('StringValue',team) stringvalue.Name = player.Name end -- Tagging the player function module:Tag(player) -- Getting the character of the player local char = player.Character or player.CharacterAdded:Wait() local hrp = char:FindFirstChild("HumanoidRootPart") -- Check if the player is not already tagged if not char:FindFirstChild("TagCircle") then -- Tagging player module:AddTeam(player,chasers) -- Create tag circle local circle = Instance.new("Part",char) circle.Name = "TagCircle" circle.CFrame = hrp.CFrame - Vector3.new(0,.5,0) circle.Shape = Enum.PartType.Ball circle.Size = Vector3.new(7,7,7) circle.Transparency = 1 circle.CanCollide = false -- Connect the tag circle local weld = Instance.new('WeldConstraint',hrp) weld.Part0 = hrp weld.Part1 = circle -- Enable the tagging system local ts = taghandler:Clone() ts.Parent = circle ts.Disabled = false end end return module

    • @tropicalmasterpiece
      @tropicalmasterpiece 13 วันที่ผ่านมา

      TagHandler Script - local players = game:GetService("Players") -- Get team folder local repStorage = game:GetService("ReplicatedStorage") local chasers = repStorage:FindFirstChild("Chasers") local runners = repStorage:FindFirstChild("Runners") -- Getting module script local tagModule = require(repStorage.tagmodule) -- Getting chaser info local circle = script.Parent local char = circle.Parent local tagplayer = players:GetPlayerFromCharacter(char) -- Tag player circle.Touched:Connect(function(hit) local tagchar = hit.Parent local humanoid = tagchar:FindFirstChild("Humanoid") if humanoid and not tagchar:FindFirstChild("TagCircle") then -- Get tagged player local tagged = players:GetPlayerFromCharacter(tagchar) local taggedvalue = runners:FindFirstChild(tagged.Name) -- Tag the player tagModule:Tag(tagged) taggedvalue:Destroy() end end)

  • @tropicalmasterpiece
    @tropicalmasterpiece 13 วันที่ผ่านมา

    NPCMover Script - local pathService = game:GetService("PathfindingService") local NPC = script.NPC.Value local humanoid = NPC.Humanoid local npcPaths = workspace:FindFirstChild("NPCPaths") local npcPoints = npcPaths:FindFirstChild("NPCPoints") local spawnpoint, endpoint -- Generate random spawn and end point repeat spawnpoint = npcPoints:GetChildren()[math.random(1,#npcPoints:GetChildren())] endpoint = npcPoints:GetChildren()[math.random(1,#npcPoints:GetChildren())] task.wait() until spawnpoint ~= endpoint -- Move NPC to spawn NPC:PivotTo(spawnpoint.CFrame) -- Animations local idleAnim = Instance.new("Animation",humanoid) idleAnim.AnimationId = "rbxassetid://507766388" idleAnim = humanoid.Animator:LoadAnimation(idleAnim) local walkAnim = Instance.new("Animation",humanoid) walkAnim.AnimationId = "rbxassetid://507767714" walkAnim = humanoid.Animator:LoadAnimation(walkAnim) -- Roblox Documentation - PathfindingService local Waypoints, NextWaypoint, Reached, Blocked -- Determine what the NPC will and wont walk on local mCosts = { -- Prioritize Smaller Numbers Concrete = 1, Plastic = 1000, Grass = 1000, SmoothPlastic = 1000 } -- Create path local path = pathService:CreatePath({ AgentRadius = 3, AgentHeight = 5, AgentCanJump = false, Costs = mCosts }) local function moveNPC(endPoint) local success, errorMessage = pcall(function() path:ComputeAsync(NPC.HumanoidRootPart.Position, endPoint.Position) end) -- If the path succeeds if success and path.Status == Enum.PathStatus.Success then Waypoints = path:GetWaypoints() Blocked = path.Blocked:Connect(function(blockedWaypointIndex) if blockedWaypointIndex >= NextWaypoint then Blocked:Disconnect() moveNPC(endPoint) end end) if not Reached then -- If the NPC still needs to move Reached = humanoid.MoveToFinished:Connect(function(reached) if reached and NextWaypoint < #Waypoints then NextWaypoint += 1 humanoid:MoveTo(Waypoints[NextWaypoint].Position) if walkAnim.IsPlaying ~= true then idleAnim:Stop() walkAnim:Play() end else walkAnim:Stop() idleAnim:Play() Reached:Disconnect() Blocked:Disconnect() task.wait(1) NPC:Destroy() script:Destroy() end end) end NextWaypoint = 2 humanoid:MoveTo(Waypoints[NextWaypoint].Position) else warn(errorMessage) NPC:Destroy() script:Destroy() end end moveNPC(endpoint)

  • @tropicalmasterpiece
    @tropicalmasterpiece 13 วันที่ผ่านมา

    FriendsHandler Script - local repStorage = game:GetService("ReplicatedStorage") local friends = repStorage:FindFirstChild("Friends") -- Roblox Documentation GetFriendsAsync local function getPages(pages) return coroutine.wrap(function() local page = 1 while true do for number, info in ipairs(pages:GetCurrentPage()) do coroutine.yield(info,page) end if pages.IsFinished then break end pages:AdvanceToNextPageAsync() page += 1 end end) end -- Recieve player joined message game.Players.PlayerAdded:Connect(function(player) -- Get the userID of the player local userId = player.UserId -- Create the folder local folder = Instance.new("Folder",friends) folder.Name = userId -- Get friends list from the server local pages = game.Players:GetFriendsAsync(userId) -- Search the pages for info,page in getPages(pages) do -- Insert the found user into friends list local idValue = Instance.new("IntValue",folder) idValue.Name = "Friend" idValue.Value = info.Id end end) -- Recieve player leaving message game.Players.PlayerRemoving:Connect(function(player) -- Remove the friends list from the server local userId = player.UserId local findFolder = friends:FindFirstChild(userId) if findFolder then findFolder:Destroy() end end)

    • @tropicalmasterpiece
      @tropicalmasterpiece 13 วันที่ผ่านมา

      NPCHandler Module - local module = {} local repStorage = game:GetService("ReplicatedStorage") local friends = repStorage:FindFirstChild("Friends") -- Create our NPC function module:CreateClient(player,userId) -- Locate our friend list local friendfolder = friends:FindFirstChild(player.UserId) -- Grab random friend if not userId then if not friendfolder or #friendfolder:GetChildren() < 2 then -- Grab default friend list friendfolder = friends:FindFirstChild("Default") end -- Find a random friend userId = friendfolder:GetChildren()[math.random(1,#friendfolder:GetChildren())].Value end -- Clone our rig local rig = repStorage:FindFirstChild("Rig"):Clone() -- Overload protection local reset = 0 -- Attempt to generate the NPC repeat reset += 1 local success, error = pcall(function() rig.Parent = game.Workspace local description = game.Players:GetHumanoidDescriptionFromUserId(userId) rig.Humanoid:ApplyDescription(description) end) task.wait() -- If this takes more than 10 attempts if reset == 10 then rig:Destroy() break end until success if rig then return rig end end return module

  • @tropicalmasterpiece
    @tropicalmasterpiece 13 วันที่ผ่านมา

    Scripts Checkpoint: Main Script- local tweenService = game:GetService("TweenService") local players = game:GetService("Players") local serverStorage = game:GetService("ServerStorage") local serverScriptService = game:GetService("ServerScriptService") local repStorage = game:GetService("ReplicatedStorage") local pSpawn = repStorage:FindFirstChild("playSpawn") local module = require(serverScriptService:FindFirstChild("ExtraCommands")) local roundTime = 3 * 60 local playerFolder = serverStorage:FindFirstChild("Hiders") local chosenFolder = serverStorage:FindFirstChild("Seekers") local hidercount = repStorage:FindFirstChild("hiderCount") local seekercount = repStorage:FindFirstChild("seekerCount") local status = repStorage:FindFirstChild("Status") local maps = serverStorage:FindFirstChild("Maps") while task.wait(5) do status.Value = "Waiting for players." -- Wait until two players have joined the game repeat task.wait() until #players:GetChildren() > 1 status.Value = "Game Starting" -- Get our map local map = maps:GetChildren()[math.random(1,#maps:GetChildren())] local cMap = map:Clone() cMap.Parent = workspace task.wait(2) local playSpawn = cMap:FindFirstChild("playSpawn") pSpawn.Value = playSpawn.Position -- Starting the game local random = Random.new() local chosen = players:GetChildren()[random.NextInteger(random,1,#game.Players:GetChildren())] -- Picks random player print(chosen.Name.." has been chosen as the seeker.") for a,b in pairs(players:GetChildren()) do if b.Name ~= chosen.Name then -- if player is NOT it local playerName = Instance.new("StringValue",playerFolder) playerName.Name = b.Name local pChar = b.Character or b.CharacterAdded:Wait() pChar:PivotTo(playSpawn.CFrame) end end -- Send chosen player into battle local seekerTeleport = cMap:FindFirstChild("SeekerTeleport") local cChar = chosen.Character or chosen.CharacterAdded:Wait() cChar:PivotTo(seekerTeleport.CFrame) task.wait(.1) cChar.HumanoidRootPart.Anchored = true for i = 30,0,-1 do task.wait(1) status.Value = "Hide: "..i end cChar.HumanoidRootPart.Anchored = false module:setSeeker(chosen) -- Restart the game once hiders are no longer playing local number = roundTime while task.wait(1) do number -= 1 status.Value = number hidercount.Value = #playerFolder:GetChildren() seekercount.Value = #chosenFolder:GetChildren() local over = false local Winners = {} local winner for a,b in pairs(playerFolder:GetChildren()) do if players:FindFirstChild(b.Name) == nil then b:Destroy() end end for a,b in pairs(chosenFolder:GetChildren()) do if players:FindFirstChild(b.Name) == nil then b:Destroy() end end if #playerFolder:GetChildren() == 0 then over = true winner = "Seekers" end if #chosenFolder:GetChildren() == 0 then over = true winner = "Hiders" end if number <= 0 then over = true winner = "Hiders" end if over == true then local function removePlayer(b) task.wait() local playerCounter = game.Players:FindFirstChild(b.Name) print(b.Name) local cChar = playerCounter.Character or playerCounter.CharacterAdded:Wait() if cChar:FindFirstChild("tagRadius") ~= nil then cChar:FindFirstChild("tagRadius"):Destroy() end if cChar:FindFirstChild("Highlight") ~= nil then cChar:FindFirstChild("Highlight"):Destroy() end -- Delete all welds that may prevent teleportation for _,d in pairs(cChar.HumanoidRootPart:GetChildren()) do if d:IsA("WeldConstraint") then d:Destroy() end end -- Remove map cMap:Destroy() -- Bring players back to spawn task.wait() cChar:SetPrimaryPartCFrame(workspace.SpawnLocation.CFrame + Vector3.new(0,3,0)) b:Destroy() end status.Value = "The "..winner.." have won the game." task.wait() for a,b in pairs(playerFolder:GetChildren()) do removePlayer(b) end for a,b in pairs(chosenFolder:GetChildren()) do removePlayer(b) end break end end task.wait(5) status.Value = "Intermission" end

    • @tropicalmasterpiece
      @tropicalmasterpiece 13 วันที่ผ่านมา

      ExtraCommands Module - local tweenService = game:GetService("TweenService") local players = game:GetService("Players") local serverStorage = game:GetService("ServerStorage") local serverScriptService = game:GetService("ServerScriptService") local repStorage = game:GetService("ReplicatedStorage") local module = {} local tagHandler = script:FindFirstChild("tagHandler") local playSpawn = repStorage:FindFirstChild("playSpawn") local hiders = serverStorage:FindFirstChild("Hiders") local seekers = serverStorage:FindFirstChild("Seekers") function module:weldPart(p0,p1) local weld = Instance.new("WeldConstraint",p0) weld.Part0 = p0 weld.Part1 = p1 end function module:freezePlayer(char) local rootTagged = char.HumanoidRootPart local freeze = Instance.new("Part",char) freeze.CFrame = rootTagged.CFrame freeze.Name = "Freeze" freeze.Transparency = 0.6 freeze.BrickColor = BrickColor.Blue() freeze.Size = Vector3.new(1,1,1) freeze.Anchored = true module:weldPart(rootTagged,freeze) -- Make the freeze part expand local tweenInfo = TweenInfo.new(0.5,Enum.EasingStyle.Sine) local goal = {} goal.Size = Vector3.new(4.5, 6.5, 2.5) game.Debris:AddItem(freeze,5) local tween = tweenService:Create(freeze,tweenInfo,goal) tween:Play() tween.Completed:Wait() repeat wait() until char:FindFirstChild("Freeze") == nil local explosion = Instance.new("Explosion",char) explosion.Position = char.HumanoidRootPart.Position explosion.BlastPressure = 0 local frozen = game.Players:GetPlayerFromCharacter(char) local counter = hiders:FindFirstChild(frozen.Name) if counter then counter:Destroy() end module:setSeeker(frozen) end function module:tagRadius(player) local char = player.Character or player.CharacterAdded:Wait() local root = char.HumanoidRootPart local ball = Instance.new("Part",char) ball.Name = "tagRadius" ball.CFrame = root.CFrame ball.CanCollide = false ball.Shape = Enum.PartType.Ball ball.Size = Vector3.new(9,9,9) ball.Transparency = 1 local tagHandle = tagHandler:Clone() tagHandle.Parent = ball tagHandle.Enabled = true module:weldPart(root,ball) return ball end function module:setSeeker(seeker) local seekerValue = Instance.new("StringValue",seekers) seekerValue.Name = seeker.Name local spawnLocation = playSpawn.Value local cChar = seeker.Character or seeker.CharacterAdded:Wait() local highlight = Instance.new("Highlight",cChar) highlight.FillTransparency = 0.85 highlight.OutlineTransparency = 0.4 highlight.OutlineColor = Color3.fromRGB(255,0,0) cChar:MoveTo(spawnLocation) module:tagRadius(seeker) end return module

    • @tropicalmasterpiece
      @tropicalmasterpiece 13 วันที่ผ่านมา

      Tag Handler Script- local tweenService = game:GetService("TweenService") local players = game:GetService("Players") local serverStorage = game:GetService("ServerStorage") local serverScriptService = game:GetService("ServerScriptService") local repStorage = game:GetService("ReplicatedStorage") local module = require(serverScriptService:FindFirstChild("ExtraCommands")) local ball = script.Parent local charSeeker = ball.Parent local hiderFolder = serverStorage:FindFirstChild("Hiders") local seekerFolder = serverStorage:FindFirstChild("Seekers") local d = false ball.Touched:Connect(function(hitPart) local char = hitPart.Parent if d == false and char and char:FindFirstChild("Humanoid") and char:FindFirstChild("Freeze") == nil and hiderFolder:FindFirstChild(char.Name) ~= nil then d = true -- Freezing the player module:freezePlayer(char) -- Tagging the player print(char.Name.." has been tagged by "..charSeeker.Name..".") -- Remove the player from hiders for a,b in pairs(hiderFolder:GetChildren()) do if b.Name == char.Name then b:Destroy() end end d = false end end)

  • @FloofyJade
    @FloofyJade 14 วันที่ผ่านมา

    I'm getting the error ServerScriptService.FriendsHandler:27: ServerScriptService.FriendsHandler:11: attempt to index number with 'IsFinished' and ReplicatedStorage.NpcHandler:7: attempt to index nil with 'userId'. how can i fix those?

    • @tropicalmasterpiece
      @tropicalmasterpiece 13 วันที่ผ่านมา

      I would assume your "pages" variable somehow became a number. I will put the scripts in the pinned comment

    • @FloofyJade
      @FloofyJade 13 วันที่ผ่านมา

      @@tropicalmasterpiece thanks! much appreciated

  • @niju8075
    @niju8075 15 วันที่ผ่านมา

    Can you send me all scrips from past videos pls

    • @tropicalmasterpiece
      @tropicalmasterpiece 13 วันที่ผ่านมา

      I will pin a comment with all the scripts so far

    • @koainanis5840
      @koainanis5840 13 วันที่ผ่านมา

      @@tropicalmasterpiece thank you this helps some ppl i think. i dont need it cause i have my code that works fine ;)

  • @xuongphimtranminhuc9900
    @xuongphimtranminhuc9900 15 วันที่ผ่านมา

    good game i love it. keep up!!

  • @niju8075
    @niju8075 16 วันที่ผ่านมา

    cant you just write the script in the comment at the end

    • @tropicalmasterpiece
      @tropicalmasterpiece 15 วันที่ผ่านมา

      I'll begin doing that in my tutorial videos. Thanks for the suggestion!

  • @sirFIGO-234
    @sirFIGO-234 17 วันที่ผ่านมา

    9:14 the script doesnt work see my script local tweenService = game:GetService("TweenService") local player = game.Players:WaitForChild("TropicalMasterpiece") local character = player.character or player.characterAdedd:Wait() local root = character.HumanoidRootPart local ball = Instance.new("Part",character) ball.CFrame = root.CFrame ball.CanCollide = false ball.Shape = Enum.PartType.Ball local weld = Instance.new("WeldConstraint",root) weld.Name = "TagWeld" weld.Part0 = root weld.Part1 = ball ball.Size = Vector3.new(9,9,9) ball.Transparency = 0.8 ball.Touched:Connect(function(part) local player = part.Parent if part.Parent:FindFirstChild("Humanoid") then --Freazing the player local rootTagged = player.HumanoidRootPart rootTagged.Anchorad = true local freeze = Instance.new("Part") freeze.CFrame = rootTagged.CFrame local weld = Instance.new("WeldConstraint",rootTagged) weld.Name = "FreezeWeld" weld.Part0 = root weld.Part1 = freeze freeze.Transparency = 0.6 freeze.BrickColor = BrickColor.Blue() freeze.Size = Vector3.new(1,1,1) local tweenInfo = TweenInfo.new(0.5,Enum.EasingStyle.Sine) local goal = {} goal.Size = Vector3.new(4,5,2) goal.CFrame = rootTagged.CFrame local tween = tweenService:Create(freeze,tweenInfo,goal) tween:Play() end end)

    • @tropicalmasterpiece
      @tropicalmasterpiece 17 วันที่ผ่านมา

      Your script looks fine, other than a few typos. When you check for your local player, make sure you change "TropicalMasterpiece" to your roblox username. When you check for your local character, change CharacterAdedd:Wait() to CharacterAdded:Wait() In your touched function, once you freeze the player, change "rootTagged.Anchorad = true" to "rootTagged.Anchored = true" Hope this helps!

  • @sirFIGO-234
    @sirFIGO-234 17 วันที่ผ่านมา

    ok,give me the script to copy it and make round system +maps+spectate for die people

  • @iogamer5335
    @iogamer5335 17 วันที่ผ่านมา

    ngl it would be cool to show some of the mechanics :>, map looks nice btw :D

  • @Ready13
    @Ready13 17 วันที่ผ่านมา

    Bro thanks so much

  • @TrentsNation5
    @TrentsNation5 18 วันที่ผ่านมา

    yo can you help me with one of my games I need a perm dev not just a commison please respond back for more

    • @tropicalmasterpiece
      @tropicalmasterpiece 17 วันที่ผ่านมา

      Hello! For now, I would like to remain solo as I don't currently have a lot of time for actual game development. However, if you have any issues or ideas I will gladly assist with those

  • @TrentsNation5
    @TrentsNation5 18 วันที่ผ่านมา

    yo

  • @sirFIGO-234
    @sirFIGO-234 18 วันที่ผ่านมา

    pls give me the script becuse it doesnt work

    • @tropicalmasterpiece
      @tropicalmasterpiece 18 วันที่ผ่านมา

      What doesn't work in the script, could you provide me with yours? Anyways, I plan on making a dedicated tutorial series for this in the future, and I plan on making the game uncopylocked once I publish it.

  • @LoseIsMine勝つ
    @LoseIsMine勝つ 18 วันที่ผ่านมา

    Amazingg

  • @LoseIsMine勝つ
    @LoseIsMine勝つ 18 วันที่ผ่านมา

    so i cant test the game with 2 people

  • @LoseIsMine勝つ
    @LoseIsMine勝つ 18 วันที่ผ่านมา

    for some reason whenever i test game with the 2 players thing no one is chosen as it but if i play the game normally it works

    • @tropicalmasterpiece
      @tropicalmasterpiece 18 วันที่ผ่านมา

      Can you provide the part of your script that would choose a player? Is it trying to find your username instead of a random one?

  • @sirFIGO-234
    @sirFIGO-234 18 วันที่ผ่านมา

    can you make uncopylocked pls

  • @DrakenTheOg
    @DrakenTheOg 19 วันที่ผ่านมา

    A great map but you could try duplicating those crystal and resize the second copy to be bigger than the original glowing one try setting transparent to 0.5 or 0.6 it will give you a glowing crystal effects nice video btw!

  • @LoseIsMine勝つ
    @LoseIsMine勝つ 19 วันที่ผ่านมา

    I’m using this as a tutorial 😅

    • @LoseIsMine勝つ
      @LoseIsMine勝つ 19 วันที่ผ่านมา

      And keep doing things wrong and I broke everything

  • @thatqne
    @thatqne 20 วันที่ผ่านมา

    is there a way to pathfind on certain parts with names instead of materials?

    • @tropicalmasterpiece
      @tropicalmasterpiece 20 วันที่ผ่านมา

      I'm not sure, probably not But you can also use invisible parts with a concrete material if you want the NPC to follow specific paths.

    • @thatqne
      @thatqne 20 วันที่ผ่านมา

      @@tropicalmasterpiece OHH I FOUND THE ISSUE. the parts were invisible, but need cancollide to properly work as a pathfinding material/part

  • @thatqne
    @thatqne 20 วันที่ผ่านมา

    ServerScriptService.NPC Handler:139: attempt to compare nil <= number if blockedWaypointIndex >= nextwaypoint then blocked:Disconnect() moveNPC(endpoint) end I also get a warn error message of nil

    • @tropicalmasterpiece
      @tropicalmasterpiece 20 วันที่ผ่านมา

      Could you provide me with your entire moveNPC local function?

    • @thatqne
      @thatqne 20 วันที่ผ่านมา

      @@tropicalmasterpiece it was because the nextwaypoint variable was nil when trying to compare it

  • @DrakenTheOg
    @DrakenTheOg 22 วันที่ผ่านมา

    great video man! keep going :D

  • @DrakenTheOg
    @DrakenTheOg 25 วันที่ผ่านมา

    great video underrated!

  • @mikuhatsume1405
    @mikuhatsume1405 29 วันที่ผ่านมา

    Tysm! This helped me! This is probs the easiest tutorial Ive seen! Keep the good work up!

  • @frzmelzzz
    @frzmelzzz หลายเดือนก่อน

    ONLY 10 SUBS? underrated af

  • @baconroblox91
    @baconroblox91 หลายเดือนก่อน

    Thanks for tutorial underated as uhh hmmm like uhm eggs

  • @syIvorn
    @syIvorn หลายเดือนก่อน

    hey whats your roblox username, great video btw!

  • @CasualCodeBusiness
    @CasualCodeBusiness หลายเดือนก่อน

    Very good video 🔥

  • @obvnotbjlol
    @obvnotbjlol หลายเดือนก่อน

    this is sick, I've never learned how to script other than AI. If you want I'd gladly test the scripts/game for you

  • @Absena_
    @Absena_ หลายเดือนก่อน

    keep up the good work it looks fun and better then the original one id love to try it

  • @SchonsttatArvizu
    @SchonsttatArvizu หลายเดือนก่อน

    Great video and very informative❕❗️❕🤍❤🤍