☁scratch scrolling platformer- online☁

Instructions: this is one of my best projects!\nuse you to move\nclick on "skins" to change skin\nproject\n70% of the code is my rest\nthank you griffpatch multiplayer engine\ndo we get to explore?\ni tried very hard please post like and follow me\nthanks to @Scratchmailru for the costumes of the ship\nthanks to @griffpatch for idea\nif you want to get cheats then follow me, put an asterisk and write in the comments "I want to get"\nand I will make a shopping mall so you can use cheats\nlist of those who received cheats:\n@andwels\n@M3gaKot228\n

@Stage\n\nwhen flag clicked\nforever\n    if <((() - ((у игрока) / (10))) - (-100)) > [0]> then\n        set [brightness v] effect to (0)\n    else\n        set [brightness v] effect to ((() - ((у игрока) / (10))) - (-100))\n    end\nend\n\n@Player\n\ndefine х+ (х)\nchange [х игрока v] by (х)\ngo to x: ((х игрока) - (скроллинг х)) y: ((у игрока) - (скроллинг у))\nif <touching (спрайт 1 v)?> then\n    repeat (7)\n        change [у игрока v] by (1)\n        go to x: ((х игрока) - (скроллинг х)) y: ((у игрока) - (скроллинг у))\n        if <not <touching (спрайт 1 v)?>> then\n            stop [this script v]\n        end\n    end\n    change [у игрока v] by (-7)\n    if <key (up arrow v) pressed?> then\n        if <(х) > [0]> then\n            set [скорость х v] to [-2]\n        else\n            set [скорость х v] to [2]\n        end\n    else\n        set [скорость х v] to [0]\n    end\n    repeat until <not <touching (спрайт 1 v)?>>\n        if <(х) > [0]> then\n            change [х игрока v] by (-1)\n        else\n            change [х игрока v] by (1)\n        end\n        go to x: ((х игрока) - (скроллинг х)) y: ((у игрока) - (скроллинг у))\n    end\nend\n\ndefine <к> (х) (напр)\nif <к> then\n    point in direction (напр)\n    if <(скин) = [1]> then\n        change [скорость х v] by (х)\n    else\n        if <(скин) = [2]> then\n            change [скорость х v] by ((х) * (0.7))\n        else\n            change [скорость х v] by ((х) * (1.2))\n        end\n    end\nend\n\ndefine скроллинг\nif <<<(username) = [M3gaKot228]> or <(username) = [andwels]>> and <key (c v) pressed?>> then\n    set [скроллинг х v] to ((х игрока) + ((mouse x) / (2)))\n    set [скроллинг у v] to ((у игрока) + ((mouse y) / (2)))\nelse\n    change [скроллинг х v] by (((х игрока) - (скроллинг х)) / (5))\n    change [скроллинг у v] by (((у игрока) - (скроллинг у)) / (5))\nend\ngo to x: ((х игрока) - (скроллинг х)) y: ((у игрока) - (скроллинг у))\nif <(у игрока) < [-500]> then\n    set [скроллинг х v] to [0]\n    set [скроллинг у v] to [0]\n    set [х игрока v] to [0]\n    set [у игрока v] to [0]\nend\nif <touching (спрайт 4 v)?> then\n    set [скроллинг х v] to [4130]\n    set [скроллинг у v] to [2000]\n    set [х игрока v] to [4130]\n    set [у игрока v] to [2000]\nend\nbroadcast (платформа v)\n\ndefine касание земли <вверх>\ngo to x: ((х игрока) - (скроллинг х)) y: ((у игрока) - (скроллинг у))\nset [прыжок v] to [0]\nrepeat until <not <touching (спрайт 1 v)?>>\n    go to x: ((х игрока) - (скроллинг х)) y: ((у игрока) - (скроллинг у))\n    set [скорость падения v] to [0]\n    if <вверх> then\n        change [у игрока v] by (-1)\n    else\n        change [у игрока v] by (1)\n        set [прыжок v] to [1]\n    end\n    go to x: ((х игрока) - (скроллинг х)) y: ((у игрока) - (скроллинг у))\nend\n\ndefine set cloud # (player) to (value)\nif <(player) = [1]> then\n    set [☁ p1 v] to (value)\nelse\n    if <(player) = [2]> then\n        set [☁ p2 v] to (value)\n    else\n        if <(player) = [3]> then\n            set [☁ p3 v] to (value)\n        else\n            if <(player) = [4]> then\n                set [☁ p4 v] to (value)\n            else\n                if <(player) = [5]> then\n                    set [☁ p5 v] to (value)\n                else\n                    if <(player) = [6]> then\n                        set [☁ p6 v] to (value)\n                    else\n                        if <(player) = [7]> then\n                            set [☁ p7 v] to (value)\n                        else\n                            set [☁ p8 v] to (value)\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine Send Cloud Data\nif <(MY PLAYER #) < [1]> then\n    stop [this script v]\nend\nadd (х игрока) to [buffer v]\nadd (у игрока) to [buffer v]\nadd (direction) to [buffer v]\nadd (costume [number v]) to [buffer v]\nchange [cloud timer v] by (1)\nif <(cloud timer) < [3]> then\n    stop [this script v]\nend\nset [cloud timer v] to [0]\nset [encoded v] to []\nwrite (username) to encoded\nwrite (round ((timer) * (10))) to encoded\nrepeat (length of [buffer v])\n    write (item (1) of [buffer v]) to encoded\n    delete (1) of [buffer v]\nend\nset cloud # (MY PLAYER #) to (encoded)\n\nwhen I receive [begin v]\nforever\n    Player Tick\n    Send Cloud Data\nend\n\ndefine write (val) to encoded\nset [letter # v] to [1]\nrepeat (length of (val))\n    set [encoded v] to (join (encoded) (item # of (letter (letter #) of (val)) in [code v]))\n    change [letter # v] by (1)\nend\nset [encoded v] to (join (encoded) [00])\n\ndefine Player Tick\nswitch costume to (хит бт32 v)\nchange [скорость падения v] by (-1)\nchange [у игрока v] by (скорость падения)\nкасание земли <(скорость падения) > [0]>\nset [скорость х v] to ((скорость х) * (0.9))\n<<key (right arrow v) pressed?> or <<mouse down?> and <(mouse x) > (x position)>>> [0.8] [90]\n<<key (left arrow v) pressed?> or <<mouse down?> and <(mouse x) < (x position)>>> [-0.8] [-90]\nх+ (round (скорость х))\nif <<<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > (y position)>>> and <<<(прыжок) = [1]> or <<(можно летать?) = [да]> and <(pick random (1) to (20)) = [1]>>> or <<<(username) = [M3gaKot228]> or <(username) = [andwels]>> and <key (space v) pressed?>>>> then\n    if <(скин) = [1]> then\n        set [скорость падения v] to [15]\n    else\n        if <(скин) = [2]> then\n            set [скорость падения v] to [20]\n        else\n            set [скорость падения v] to [14]\n        end\n    end\nend\nскроллинг\nswitch costume to (скин)\n\ndefine старт\nset [можно летать? v] to [нет]\nset [скроллинг х v] to [0]\nset [скроллинг у v] to [0]\nset [х игрока v] to [0]\nset [у игрока v] to [0]\nset [скорость падения v] to [0]\nset [прыжок v] to [0]\nset rotation style [left-right v]\n\nwhen I receive [старт игра v]\nстарт\nset [max players v] to [8]\nset [my player # v] to [0]\ndelete all of [buffer v]\nbroadcast (setup - opponents v) and wait\nswitch backdrop to (joining v)\nbroadcast (Join Game v) and wait\nif <(MY PLAYER #) > [0]> then\n    switch backdrop to (joined v)\nelse\n    switch backdrop to (full v)\nend\nbroadcast (таймер v)\nbroadcast (begin v)\n\n@Opponents\n\ndefine begin decode of (encoded)\nset [encoded v] to (encoded)\nset [letter # v] to [1]\n\ndefine value = read from encoded\nset [value v] to []\nforever\n    set [idx v] to (join (letter (letter #) of (encoded)) (letter ((letter #) + (1)) of (encoded)))\n    change [letter # v] by (2)\n    if <(idx) < [1]> then\n        stop [this script v]\n    end\n    set [value v] to (join (value) (item (idx) of [code v]))\nend\n\ndefine setup players\nset rotation style [left-right v]\ndelete all of [buffer v]\nset [color v] effect to (0)\nset [offline v] to [100]\nhide\nset [player # v] to [1]\nrepeat ((MAX PLAYERS) - (1))\n    create clone of (_myself_ v)\n    change [player # v] by (1)\nend\n\nwhen I receive [begin v]\nforever\n    if <(MY PLAYER #) = (player #)> then\n        set [offline v] to [100]\n        hide\n    else\n        tick\n    end\nend\n\ndefine value = cloud # (player)\nif <(player) = [1]> then\n    set [value v] to (☁ P1)\nelse\n    if <(player) = [2]> then\n        set [value v] to (☁ P2)\n    else\n        if <(player) = [3]> then\n            set [value v] to (☁ P3)\n        else\n            if <(player) = [4]> then\n                set [value v] to (☁ P4)\n            else\n                if <(player) = [5]> then\n                    set [value v] to (☁ P5)\n                else\n                    if <(player) = [6]> then\n                        set [value v] to (☁ P6)\n                    else\n                        if <(player) = [7]> then\n                            set [value v] to (☁ P7)\n                        else\n                            set [value v] to (☁ P8)\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [setup - opponents v]\nsetup players\n\ndefine tick\nvalue = cloud # (player #)\nif <(join [A] (value)) = (last value)> then\n    change [offline v] by (1)\n    if <(offline) = [100]> then\n        hide\n    end\nelse\n    set [last value v] to (join [A] (value))\n    if <(offline) > [99]> then\n        show\n    end\n    set [offline v] to [0]\n    begin decode of (value)\n    value = read from encoded\n    say (join (player #) (join [: ] (value)))\n    value = read from encoded\n    value = read from encoded\n    repeat until <(value) = []>\n        add (value) to [buffer v]\n        value = read from encoded\n    end\nend\nif <(length of [buffer v]) > [0]> then\n    set x to ((item (1) of [buffer v]) - (скроллинг х))\n    delete (1) of [buffer v]\n    set y to ((item (1) of [buffer v]) - (скроллинг у))\n    delete (1) of [buffer v]\n    point in direction (item (1) of [buffer v])\n    delete (1) of [buffer v]\n    switch costume to (item (1) of [buffer v])\n    delete (1) of [buffer v]\nend\n\nwhen I receive [join game v]\nvalue = cloud # (player #)\nset [last value v] to (join [A] (value))\nwait (3) seconds\nvalue = cloud # (player #)\nif <(join [A] (value)) = (last value)> then\n    set [my player # v] to (player #)\nend\n\n@Спрайт 1\n\nwhen I receive [платформа v]\ngo to x: ((смещение х) - (скроллинг х)) y: ((смещение у) - (скроллинг у))\nif <<(round (x position)) = (round ((смещение х) - (скроллинг х)))> and <(round (y position)) = (round ((смещение у) - (скроллинг у)))>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [setup - opponents v]\nhide\ngo to x: (0) y: (-2000)\nswitch costume to (костюм 8 v)\nset [смещение х v] to [0]\nset [смещение у v] to [0]\nrepeat (4)\n    create clone of (_myself_ v)\n    change [смещение х v] by (480)\n    next costume\nend\nchange [смещение у v] by (480)\nchange [смещение х v] by (300)\ncreate clone of (_myself_ v)\nnext costume\nchange [смещение х v] by (800)\nchange [смещение у v] by (300)\ncreate clone of (_myself_ v)\nnext costume\nchange [смещение х v] by (650)\nchange [смещение у v] by (-40)\ncreate clone of (_myself_ v)\nnext costume\nchange [смещение х v] by (-1000)\nchange [смещение у v] by (500)\ncreate clone of (_myself_ v)\nnext costume\nchange [смещение х v] by (-600)\nchange [смещение у v] by (500)\ncreate clone of (_myself_ v)\nnext costume\nchange [смещение х v] by (-600)\ncreate clone of (_myself_ v)\nchange [смещение х v] by (-600)\nchange [смещение у v] by (500)\ncreate clone of (_myself_ v)\nchange [смещение х v] by (-600)\nchange [смещение у v] by (500)\ncreate clone of (_myself_ v)\nnext costume\nset [смещение х v] to [4130]\nset [смещение у v] to [1900]\n\n@Background\n\nwhen I receive [платформа v]\nposition it\ngo [backward v] (100) layers\n\nwhen I receive [setup - opponents v]\nset [ghost v] effect to (30)\nswitch costume to (background3 v)\nset size to (100) %\ngo [backward v] (100000) layers\nset [х фона v] to [0]\nset [у фона v] to [0]\ncreate clone of (_myself_ v)\nset [х фона v] to [1]\ncreate clone of (_myself_ v)\nset [у фона v] to [1]\ncreate clone of (_myself_ v)\nset [х фона v] to [0]\n\ndefine position (x) (y)\nif <(x) < [-448]> then\n    change [х фона v] by (2)\n    position it\nelse\n    if <(x) > [448]> then\n        change [х фона v] by (-2)\n        position it\n    else\n        if <(y) < [-308]> then\n            change [у фона v] by (2)\n            position it\n        else\n            if <(y) > [308]> then\n                change [у фона v] by (-2)\n                position it\n            else\n                go to x: (x) y: (y)\n            end\n        end\n    end\nend\n\ndefine position it\nposition (((х фона) * (448)) - ((скроллинг х) / (7))) (((у фона) * (308)) - ((скроллинг у) / (7)))\n\n@Timer\n\nwhen I receive [таймер v]\nshow\nset [таймер v] to [0]\nset [клон таймера v] to [1]\ncreate clone of (_myself_ v)\nset [клон таймера v] to [2]\ncreate clone of (_myself_ v)\nset [клон таймера v] to [3]\ncreate clone of (_myself_ v)\nhide\nforever\n    change [таймер v] by (1)\n    wait (1) seconds\nend\n\nwhen I start as a clone\nforever\n    switch costume to (letter (клон таймера) of (таймер))\n    if <<(length of (таймер)) = [1]> and <(клон таймера) = [1]>> then\n        go to x: (218) y: (152)\n    end\n    if <<(length of (таймер)) = [2]> and <(клон таймера) = [1]>> then\n        go to x: (200) y: (152)\n    end\n    if <<(length of (таймер)) = [3]> and <(клон таймера) = [1]>> then\n        go to x: (182) y: (152)\n    end\n    if <<(length of (таймер)) = [3]> and <(клон таймера) = [2]>> then\n        go to x: (200) y: (152)\n    end\nend\n\n@Спрайт 2\n\nwhen flag clicked\ngo to x: (0) y: (0)\nshow\nset [скин v] to [1]\nswitch costume to (костюм 2 v)\ncreate clone of (_myself_ v)\nswitch costume to (костюм 4 v)\ncreate clone of (_myself_ v)\nswitch costume to (костюм 1 v)\n\nwhen I start as a clone\ngo [forward v] (2) layers\nif <(costume [number v]) = [4]> then\n    go to x: (148) y: (-145)\n    repeat until <<mouse down?> and <touching (mouse-pointer v)?>>\n        if <touching (mouse-pointer v)?> then\n            change size by (((110) - (size)) / (5))\n        else\n            change size by (((100) - (size)) / (5))\n        end\n    end\n    broadcast (старт игра v)\n    switch costume to (костюм 3 v)\n    wait (0) seconds\n    show\n    wait (3) seconds\n    delete this clone\nend\nif <(costume [number v]) = [6]> then\n    go to x: (-151) y: (144)\n    forever\n        repeat until <<mouse down?> and <touching (mouse-pointer v)?>>\n            if <touching (mouse-pointer v)?> then\n                change size by (((110) - (size)) / (5))\n            else\n                change size by (((100) - (size)) / (5))\n            end\n        end\n        broadcast (изменить скин v)\n        wait until <not <mouse down?>>\n    end\nend\n\nwhen I receive [старт игра v]\nhide\nif <(costume [number v]) = [6]> then\n    delete this clone\nend\n\nwhen I receive [изменить скин v]\nif <<(costume [number v]) = [1]> or <<(costume [number v]) = [2]> or <(costume [number v]) = [3]>>> then\n    if <(costume [number v]) = [3]> then\n        switch costume to (костюм 1 v)\n    else\n        next costume\n    end\n    set [скин v] to (costume [number v])\nend\n\n@Спрайт 3\n\nwhen flag clicked\ngo to [front v] layer\ngo to x: (0) y: (0)\nset [ghost v] effect to (100)\n\n@Спрайт 4\n\nwhen I receive [платформа v]\ngo to x: ((4130) - (скроллинг х)) y: ((670) - (скроллинг у))\nif <<(round (x position)) = (round ((4130) - (скроллинг х)))> and <(round (y position)) = (round ((670) - (скроллинг у)))>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [setup - opponents v]\nset [ghost v] effect to (50)\ngo to [front v] layer\nhide\n\nwhen flag clicked\nhide\n\n@Dinosaur4\n\nwhen I receive [платформа v]\ngo to x: ((3500) - (скроллинг х)) y: ((1000) - (скроллинг у))\nif <<(round (x position)) = (round ((3500) - (скроллинг х)))> and <(round (y position)) = (round ((1000) - (скроллинг у)))>> then\n    show\nelse\n    hide\nend\nset [ghost v] effect to (<touching (player v)?> * (40))\n\nwhen flag clicked\nhide\n\n@Crystal\n\nwhen I receive [платформа v]\nif <(можно летать?) = [нет]> then\n    go to x: ((3500) - (скроллинг х)) y: ((1000) - (скроллинг у))\n    if <<(round (x position)) = (round ((3500) - (скроллинг х)))> and <(round (y position)) = (round ((1000) - (скроллинг у)))>> then\n        show\n    else\n        hide\n    end\n    if <touching (player v)?> then\n        set [можно летать? v] to [да]\n        hide\n    end\nend\n\n@Спрайт 5\n\nwhen I receive [платформа v]\ngo to x: ((4130) - (скроллинг х)) y: ((1900) - (скроллинг у))\nif <<(round (x position)) = (round ((4130) - (скроллинг х)))> and <(round (y position)) = (round ((1900) - (скроллинг у)))>> then\n    show\nelse\n    hide\nend\n\nwhen flag clicked\nhide\n\n