[로블록스 스튜디오] 리더보드 데이터 저장해주는 스크립트(영상설명 참고)

Поділитися
Вставка
  • Опубліковано 10 лис 2024

КОМЕНТАРІ • 87

  • @nofair
    @nofair  Рік тому

    최신 버전
    ua-cam.com/video/547H3OaSCIA/v-deo.html

  • @ansisumbuzza
    @ansisumbuzza 2 роки тому +1

    질문이 있는데요.
    파트를 밟으면 10초 기달리고 리더보드 포인트를 늘리는 스크립트는 어떻게 적나요?
    스크립트 또는 영상 해 주실 수 있나요?

    • @nofair
      @nofair  2 роки тому +1

      그러네요. 영상 준비하겠습니다

    • @ansisumbuzza
      @ansisumbuzza 2 роки тому +1

      @@nofair 감사합니다 🙏

  • @양지중독
    @양지중독 3 роки тому

    제가 알고있는건 Script: local datastore = game:GetService("DataStoreService")
    local teamsave = datastore:GetDataStore("team")
    game.Players.PlayerAdded:Connect(function(plr)
    local t
    local success, e = pcall(function()
    t = teamsave:GetAsync(plr.UserId)
    end)
    if not success then
    print("wow save not success!!!")
    else
    if t ~= nil then
    plr.TeamColor = BrickColor.new(t)
    plr:LoadCharacter()
    end
    end
    end)
    function save(plr)
    pcall(function()
    teamsave:SetAsync(plr.UserId, plr.TeamColor.Name)
    end)
    end
    game.Players.PlayerRemoving:Connect(function(plr)
    save(plr)
    end)
    while wait(300) do
    for i,v in pairs(game.Players:GetPlayers())do
    save(v)
    end
    end

  • @super_nggan
    @super_nggan Рік тому

    진짜되네요!!! 감사합니다!!!

    • @nofair
      @nofair  Рік тому

      아 잠만 이거 옛날 거예요
      ua-cam.com/video/547H3OaSCIA/v-deo.html
      이게 최신꺼

  • @Wind_mill
    @Wind_mill 2 роки тому

    위의 스크립트를 통해서 별도 월드의 로비에 데이터를 저장하고 다른 월드에서 로비에 저장한 데이터를 가져올수 있을까요?

    • @Wind_mill
      @Wind_mill 2 роки тому

      해결 : 모듈을 사용하면 됨.

  • @imfonk
    @imfonk 2 роки тому

    다른 스크립트에 적용시키기 위해 리더보드의 띄어쓰기를 지우게 되었습니다, 그렇게 되니 리더보드에 데이터가 연동이 안되는데 전에 있던 데이터를 다른 리더보드로 옮길 수는 없을까요?
    제 게임에서 십만초, 몇만초를 잠수탄 사람들이 가득한데 zz

  • @treegiant3499
    @treegiant3499 2 роки тому

    안녕하세요 페어님
    저는 로비와 스테이지 두 가지의 플레이스로 구성되어있는 게임을 만들고 있습니다.
    게임을 시작하면 로비로 진입하고 로비에서 스테이지로 이동하면 게임을 진행하는 거죠.
    그리고 스테이지에서 게임을 클리어하면 leaderstats에 stage.value를 +1 해주려고 합니다.
    지금 페어님이 올려주신 LeaderstatSave 스크립트를 로비와 스테이지 두 플레이스의 ServerScriptService에 모두 넣어두고,
    leaderstat을 생성하는 스크립트는 로비 플레이스의 ServerScriptService 에 넣어두었습니다.
    인게임에서 로비로 진입했을 때는 leaderstat이 정상적으로 나타나는데 스테이지로 진입하면 leaderstat이 사라집니다.
    스테이지 플레이스에 진입했을 때에도 LeaderstatSave 스크립트를 실행하게 되는데 왜 leaderstat이 사라질까요?
    스테이지 플레이스에도 leaderstat 생성하는 스크립트를 넣어줘야 나타날까요?
    답변 주시면 정말 감사하겠습니다.

  • @christianextractreformed3818
    @christianextractreformed3818 3 роки тому +1

    게임 테스트 끝내고 데이터를 다 지워서 초기화하려면 그냥 이 스크립트를 주석으로 바꿔서 업로드 했다가 다시 정상화 시키면 될까요?

  • @Wind_mill
    @Wind_mill 2 роки тому

    스튜디오에서 작동 확인이 안되나요? 최신업데이트로 랭킹을 스튜디오로 확인이 가능한것으로 아는데요. 안될까요?
    발판을 밝거나, 다른 월드에서 정보를 받았을때 적용할려고 테스트를 하는데. 오류로 확인되서 2022.06.23기준으로 문의드립니다.
    용도: 저장된 데이터를 게시판형(블록) 리더보드에 적용
    오류메세지.
    Workspace.Ranking.Leaderboard.Script:20: attempt to call a boolean value - 서버 - Script:20
    Humnoid is not a valid member of Player "Players.캐릭터명" - 서버 - Script:7

    • @Wind_mill
      @Wind_mill 2 роки тому

      해결 : 모듈을 사용하면 됨.

  • @Liam_0109
    @Liam_0109 2 роки тому +1

    리더보드 저장이 안돼요
    local data = game:GetService("DataStoreService")
    local leader = data:GetDataStore("leaderboardsave")
    local dontsave = {}
    function checkname(coin)
    for i, v in pairs(dontsave)do
    if v == coin then return false end
    end
    return true
    end
    function savedata(plr)
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end
    if not plr:FindFirstChild("loaded") or plr.loaded.Value == false then return end
    plr:WaitForChild("leaderstats")
    for i, v in pairs(plr.leaderstats:GetChildren())do
    if string.find(v.ClassName, "Value")
    and checkname(v.coin) then
    repeat
    local success = pcall(function()
    leader:SetAsync(plr.UserId..v.coin, v.Value)
    end)
    wait(0.5)
    until success
    end
    end
    end
    function loaddata(plr)
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end
    plr:WaitForChild("leaderstats")
    wait(1)
    for i, v in pairs(plr.leaderstats:GetChildren())do
    if string.find(v.ClassName, "Value")
    and checkname(v.coin) then
    local success = pcall(function()
    local data = leader:GetAsync(plr.UserId..v.coin)
    if data ~= nil then
    v.Value = data
    end
    end)
    if not success then
    wait(3)
    local success = pcall(function()
    local data = leader:GetAsync(plr.UserId..v.coin)
    if data ~= nil then
    v.Value = data
    end
    end)
    if not success then
    wait(3)
    local success = pcall(function()
    local data = leader:GetAsync(plr.UserId..v.coin)
    if data ~= nil then
    v.Value = data
    end
    end)
    if not success then
    wait(3)
    local success = pcall(function()
    local data = leader:GetAsync(plr.UserId..v.coin)
    if data ~= nil then
    v.Value = data
    end
    end)
    if not success then
    plr:Kick("리더보드 데이터 불러오기 실패, 재접하세요.")
    return
    end
    end
    end
    end
    end
    end
    local isloaded = Instance.new("BoolValue", plr)
    isloaded.Name= "loaded"
    isloaded.Value = true
    end
    game.Players.PlayerAdded:Connect(function(plr)
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end
    loaddata(plr)
    while wait(300) do
    savedata(plr)
    end
    end)
    game.Players.PlayerRemoving:Connect(function(plr)
    savedata(plr)
    end)
    game:BindToClose(function()
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end
    for i, v in pairs(game.Players:GetPlayers())do
    savedata(v)
    end
    wait(30)
    end)
    여기서 뭐가 문제인지 모르겠어요

  • @김다연-i2m
    @김다연-i2m 2 роки тому

    페어님 두 게임이 같은 리더보드, 같은 데이터를 공유하게 하려면 어떻게 해야 하나요 제발 알려주세요 ㅠㅠ

    • @투코이
      @투코이 3 місяці тому

      리더보드 똑같이 만들고 데이터 스토어도 통일시키면 안될까요

  • @Avocado_KR0
    @Avocado_KR0 4 роки тому

    local data = game:GetService("DataStoreService")
    local leader = data:GetDataStore("leaderboardsave")
    local dontsave = {"Time Played", }
    function checkname(name) --
    for i, v in pairs(dontsave)do
    if v == name then return false end
    end
    return true -- 4줄에 이름 없을 때 참으로 내보냄
    end
    function savedata(plr) -- 저장
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end

    if not plr:FindFirstChild("loaded") or plr.loaded.Value == false then return end
    plr:WaitForChild("leaderstats")
    for i, v in pairs(plr.leaderstats:GetChildren())do
    if string.find(v.ClassName, "Value")
    and checkname(v.Name) then

    repeat
    local success = pcall(function(
    leader:SetAsync(plr.UserId..v.Name, v.Value)
    end)
    wait(0.5)
    until success

    end
    end
    end
    function loaddata(plr)
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end

    plr:WaitForChild("leaderstats")
    wait()
    for i, v in pairs(plr.leaderstats:GetChildren())do
    if string.find(v.ClassName, "Value")
    and checkname(v.Name) then
    local success = pcall(function()
    local data = leader:GetAsync(plr.UserId..v.Name)
    if data ~= nil then
    v.Value = data
    end
    end)
    if not success then
    plr:Kick("Data loading failed sorry. Please try again.")
    return
    end

    end
    end
    local isloaded = Instance.new("BoolValue", plr)
    isloaded.Name = "loaded"
    isloaded.Value = true
    end
    game.Players.PlayerAdded:Connect(function(plr)
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end

    loaddata(plr)
    while wait(300) do
    savedata(plr)
    end
    end)

    game.Players.PlayerRemoving:Connect(function(plr)
    savedata(plr)
    end)
    game:BindToClose(function()
    local runservice = game:GetService("RunService")
    if runservice:IsStudio() then return end

    for i, v in pairs(game.Players:GetPlayers())do
    savedata(v)
    end
    wait(30)
    end)

  • @정효찬-j2q
    @정효찬-j2q 4 роки тому

    일단 스크립트 복사해서 leaderstats라는걸 다 skinlock이라 바꿨는데(Ctrl+Shift+F로 검색해서) 그 안에 변수가 다 bool값이여도 작동이 되나요?
    안된다면 왜 안되는지 알려주실수 있나요?

  • @상-k5l
    @상-k5l 4 роки тому

    노페어님 plr 리더보드 Value 를 Gui 식으로 이제 plr 이름 치고 보낼금액 쳐서 보낼수 있게끔 좀.. 스크좀 짜서 영상 올려주시면 좋겠습니다.

    • @응기잇-f9h
      @응기잇-f9h 4 роки тому

      F9 누르시고 서버로그 들어가서 game.Players.(닉네임).leaderstats.(돈 이름).Value=(보낼 양) 이렇게 치시면 그냥 되요

  • @user-wm1rj4cg1u
    @user-wm1rj4cg1u 4 роки тому

    페어님 이거 리더보드 스크립트 잘쓰다가 갑자기 저장이 안되는데 어떻게해요? 제가 게임을 만들었는데 저장이 안되면 게임자체가 망한거여서... 답변 부탁드립니다.

    • @funkytown.kr.co.neguma
      @funkytown.kr.co.neguma 4 роки тому

      제가 해드리져 스튜 초대 좀요

    • @user-wm1rj4cg1u
      @user-wm1rj4cg1u 4 роки тому

      @@funkytown.kr.co.neguma 음 "Date store request has added to the queue" 만 고치면 될듯한데.. 아마 좀 어려울 겁니다. 외국 스크립트 짜는 곳에서도 찾아봤는데 안되서.. 아 그리고 글로벌 리더 보드도 있어서 좀 힘드실 겁니다.

    • @WinTips531
      @WinTips531 2 роки тому

      @@user-wm1rj4cg1u 이유 못찾으셨나요?

  • @최만두-e6q
    @최만두-e6q 4 роки тому

    안녕하세요.페어님
    제가 지금 오비를 만들고 있는중입니다
    그 스크립트에서 잘못된부분이 있는지 나갔다와도 플레이어의 팀이 유지되지 않고 다시 처음 인 팀으로 돌아갑니다. 스크립트에서 function checkname 의 가로 안에 플레이어의 이름을 쓰면 안되나요? 아 그리고 페어님의 스크립트에서 한글만 지우고 다 입력했습니다.(복사->붙여넣기)잘못된부분이 있다면 알려주세요. 감사합니다:) 😷건강조심하세요👍

  • @VALORANT_TOJI
    @VALORANT_TOJI 3 роки тому

    로블록스 맵만들면 망치표시 뜨잖아요 다른사람에게 주고싶은데 그런스크립트 있으면 알려주세요 !

    • @샤드를
      @샤드를 3 роки тому

      그런건 아마 없을거예요... 맵 개발자는 자신 뿐이니까요...

    • @이재-d3f
      @이재-d3f 3 роки тому

      @@샤드를 있습니다

    • @이재-d3f
      @이재-d3f 3 роки тому

      그룹만들어서 겜을 그룹겜으로 만들고 그룹설정어세 역할에서 망치모양뜰역할을 접근불가를 바꾸면됨

  • @MrBaSa
    @MrBaSa 3 роки тому +1

    복사 복붙도돼나여?

  • @AaaaAaa-qu7lw
    @AaaaAaa-qu7lw 4 роки тому

    페어님 리더보드에 있는 리더스탯이 정해진 수가 되면 뱃지를 지급하는 스크립트 혹시 아시나요? 아시다면 스크립트 좀 보내주실수있나요?

  • @yun5083
    @yun5083 4 роки тому +1

    파트를 밟았을때 스코어보드가 올라가는 스크립트 주실수 있나요?

    • @아이고난-r1l
      @아이고난-r1l 3 роки тому

      파트 스크립트
      script.Parent.Touched:Connect(function(hit)
      if hit.Parent:FindFirstChild("Humanoid") then
      local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
      plr.leaderstats.리더보드 이름.Value += 올라갈 값
      end
      end)
      밟을때 중복이 되서 스코어 엄청 많이 올라갈 수 있어요.
      그건 따로 쿨타임 해주셔야해요.

  • @jhy7750
    @jhy7750 4 роки тому

    페어님 이거 스크립트만 따로 저장하는법좀 알려주세요;;

  • @박재복-m8l
    @박재복-m8l 4 роки тому

    노페어님 점프맵 스테이지 저장하는거 알려주세요.

    • @Yuki_2727
      @Yuki_2727 4 роки тому

      그거 저가 알려드릴 수 있을 거 같아요

  • @hota2_
    @hota2_ 4 роки тому +1

    팀저장하는 스크립트는 없나요 모르는 사람이 너무 많아요..

    • @nofair
      @nofair  4 роки тому

      로블록스 스튜디오 팀 저장하기 검색하시면 나올겁니다

    • @hota2_
      @hota2_ 4 роки тому

      팀저장이 그저장이 아니라
      :team 이름 팀이름치면 팀에들어가지는데 나가면 다른팀이 되는거 때문에
      팀에들어가고 나가도 다른팀이 되지 않게 하는거를..

    • @nofair
      @nofair  4 роки тому

      네, 그 스크립트가 플레이어 나가기 직전 팀을 저장하고 다시 들어왔을 때 저장한 팀으로 넣어줍니다.

  • @atinstv
    @atinstv 4 роки тому

    페어님, 로블록스 리더보드에 돈시스템 넣고, 그 돈시스템으로 사람들과 주고받을 수 있는 GUI제작하는 과정(방법) 올려주실 수 있으시면 올려주세요~^^!

  • @과학자고릴라X바나
    @과학자고릴라X바나 3 роки тому

    감사합니다ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

  • @민순-i8z
    @민순-i8z 3 роки тому

    설명한것들다 수정해야되요?

  • @H_JUUN_STUDIO
    @H_JUUN_STUDIO 4 роки тому

    혹시 돈을 넣었다 뺄 수 있는 은행도 가능한가요

    • @라라랄라-p2b
      @라라랄라-p2b 4 роки тому

      제 생각에는 당연히 가능한 것 같습니다

  • @익명-n6u
    @익명-n6u 4 роки тому

    다른 리더보드스크립트로도 이거 넣을수 있나요?

    • @nofair
      @nofair  4 роки тому

    • @익명-n6u
      @익명-n6u 4 роки тому

      @@nofair 님 궁금한게 있는데요 저 리더보드랑 gui상점이 작동을 않해요
      왜작동이 않돼나요? 저는 로블록스 업데이트로 스크립트가 빠뀐걸로 알고있는데... 혹시 알고계시면 답글좀 해주세요

    • @nofair
      @nofair  4 роки тому

      @@익명-n6u gui 상점은 조만간 다시 올리겠습니다. 리더보드는 저거 저장이 안된다는 뜻인가요?

    • @익명-n6u
      @익명-n6u 4 роки тому

      @@nofair 그 저장이 아니라 리더보드를 다 친후 작동을 시켰는데 리더보드글자가 않나와요
      다시올려주시면 감사합니다

    • @nofair
      @nofair  4 роки тому

      @@익명-n6u 스크립트 보여줘봐요

  • @상-k5l
    @상-k5l 4 роки тому

    리더보드 말고 그냥 value 저장스크는 없나요

  • @IAmAYeezus
    @IAmAYeezus 4 роки тому +1

    앗 이부분!!!
    8:37

    • @리스-g5t
      @리스-g5t 4 роки тому

      ? 뭐가있길래

    • @IAmAYeezus
      @IAmAYeezus 4 роки тому

      @@리스-g5t 저게 없었으면 이중반복문 싸야해서요

    • @리스-g5t
      @리스-g5t 4 роки тому

      @@IAmAYeezus 아항

  • @jhy7750
    @jhy7750 4 роки тому

    저 이거 보면 제발 답좀 uncommitted라면서 저장할때 뜨는데
    어케행햐해여 스크립트 실행이 안됨 ;;

    • @Arc-hived
      @Arc-hived 4 роки тому +1

      Drafts 가서 그거 commit 하면 됌

  • @킹캉콩캉킹꽁끼낑깡캉
    @킹캉콩캉킹꽁끼낑깡캉 3 роки тому

    저장안할 리더보드가 없는디 어케해요

  • @Lee-m3g3e
    @Lee-m3g3e 4 роки тому +1

    나갔다와도 그스테이지에 태어날수 없음요?
    알려주세요 저이거 필요해서ㅠㅠ

  • @Bingus-b1g
    @Bingus-b1g 4 роки тому

    목소리가 작아요;;

  • @jhy7750
    @jhy7750 4 роки тому +1

    페어님 복사가안되요...

    • @허욱-f8j
      @허욱-f8j 3 роки тому

      local data = game:GetService("DataStoreService") -- 서비스
      local leader = data:GetDataStore("leaderboardsave")
      local dontsave = {"Time Played", } -- 저장하기 싫은 리더보드 이름(대소문자 정확히)
      function checkname(name) -- 저장하려는 리더보드 이름 확인
      for i, v in pairs(dontsave)do
      if v == name then return false end -- 4줄에 입력한 이름과 일치하는 게 있으면 거짓 내보냄
      end
      return true -- 4줄에 이름 없을 때 참으로 내보냄
      end
      function savedata(plr) -- 저장
      local runservice = game:GetService("RunService")
      if runservice:IsStudio() then return end
      -- 스튜디오에서 스크립트 실행하면 에러나기 때문에 스튜디오면 함수 취소

      if not plr:FindFirstChild("loaded") or plr.loaded.Value == false then return end
      --불러오기 했는지 1,2차 확인/ 불러오기 안한채로 저장하면 데이터 초기화되니까
      plr:WaitForChild("leaderstats") -- 리더보드 생성되길 기다리기
      for i, v in pairs(plr.leaderstats:GetChildren())do -- 리더보드 열어봄
      if string.find(v.ClassName, "Value") -- 제대로 된 value 오브젝트인지 구함
      and checkname(v.Name) then -- 저장하는 리더보드인지 확인(스크립트 4줄)

      repeat -- 반복
      local success = pcall(function()-- 성공했는지 알려주는 함수(pcall)와 변수(success)
      leader:SetAsync(plr.UserId..v.Name, v.Value) -- 저장
      end)
      wait(0.5) -- 약간의 기다림. 반복 딜레이가 너무 짧으면 서버 과부하됨
      until success --저장 성공할때까지

      end
      end
      end
      function loaddata(plr) -- 불러오기
      local runservice = game:GetService("RunService")
      if runservice:IsStudio() then return end
      -- 스튜디오에서 스크립트 실행하면 에러나기 때문에 스튜디오면 함수 취소

      plr:WaitForChild("leaderstats") -- 리더보드 생성되길 기다림
      wait()
      for i, v in pairs(plr.leaderstats:GetChildren())do -- 리더보드 열어봄
      if string.find(v.ClassName, "Value") -- 제대로 된 value 오브젝트인지 구함
      and checkname(v.Name) then -- 저장하는 리더보드인지 확인(스크립트 4줄)
      local success = pcall(function() -- 성공했는지 알려주는 함수(pcall)와 변수(success)
      local data = leader:GetAsync(plr.UserId..v.Name) -- 불러오기(수정된 부분)
      if data ~= nil then -- 불러온 데이터가 있는 경우에만
      v.Value = data -- 불러온 값 적용
      end -- 이부분은 영상에 없었는데 나중에 추가함
      end)
      if not success then -- 불러오기 실패시
      plr:Kick("Data loading failed sorry. Please try again.") -- 강퇴(따옴표 사이에 메세지)
      return -- 불러오기 함수 취소
      end

      end
      end
      local isloaded = Instance.new("BoolValue", plr) -- 불러오기 했다는 표시
      isloaded.Name = "loaded" -- 불러오기 했다는 표시
      isloaded.Value = true -- 2차 표시
      end
      game.Players.PlayerAdded:Connect(function(plr) -- 새 플레이어 접속
      local runservice = game:GetService("RunService")
      if runservice:IsStudio() then return end
      -- 스튜디오에서 스크립트 실행하면 에러나기 때문에 스튜디오면 함수 취소

      loaddata(plr) -- 불러오기
      while wait(300) do -- 300초마다
      savedata(plr) -- 저장
      --(시간 바꿔도 되는데 최소 1분 이상은 유지할 것, 너무 자주 세이브하면 서버 과부하됨)
      end
      end)

      game.Players.PlayerRemoving:Connect(function(plr) -- 플레이어 나갈 때
      savedata(plr) -- 저장
      end)
      game:BindToClose(function() -- 모종의 이유로 게임 서버가 닫힐 때(업데이트, 서버 폭발 등등)
      local runservice = game:GetService("RunService")
      if runservice:IsStudio() then return end
      -- 스튜디오에서 스크립트 실행하면 에러나기 때문에 스튜디오면 함수 취소

      for i, v in pairs(game.Players:GetPlayers())do -- 모든 플레이어
      savedata(v) -- 저장
      end
      wait(30) -- 30초 기다려서 스크립트가 데이터 저장할 시간을 벌어줌
      end)

  • @min_8449
    @min_8449 3 роки тому

    혹시 그 점프맵하다 보변 있는 불투명해서 점프해서 앞으로가면 통과돼면서 슉 올라가는 그거 만드는 법점...^^

    • @IamGodSasle
      @IamGodSasle 3 роки тому

      옐롯님 영상에 엘리베이터 있는데 그게 아마 맞을겁니다

  • @라라랄라-p2b
    @라라랄라-p2b 4 роки тому

    감사합니다