Lua-скрипты Π² My Summer Car: ΠΎΡ‚ простых Ρ‡ΠΈΡ‚ΠΎΠ² Π΄ΠΎ слоТных ΠΌΠΎΠ΄ΠΎΠ²

My Summer Car β€” это Π½Π΅ просто ΠΈΠ³Ρ€Π° ΠΎ сборкС автомобиля Π² финской Π³Π»ΡƒΠ±ΠΈΠ½ΠΊΠ΅, Π° Ρ†Π΅Π»Ρ‹ΠΉ симулятор ΠΆΠΈΠ·Π½ΠΈ с Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Ρ„ΠΈΠ·ΠΈΠΊΠΎΠΉ, экономикой ΠΈ Π΄Π°ΠΆΠ΅ психологиСй пСрсонаТа. Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли стандартного гСймплСя ΠΌΠ°Π»ΠΎ? Π—Π΄Π΅ΡΡŒ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Lua β€” скриптовый язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ Π»ΡŽΠ±Ρ‹Π΅ Π½ΡƒΠΆΠ΄Ρ‹: ΠΎΡ‚ ΠΌΠ΅Π»ΠΊΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ интСрфСйса Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ транспортных срСдств.

Π’ этом руководствС ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Lua-скрипты Π² MSC, Π³Π΄Π΅ ΠΈΡ… ΠΈΡΠΊΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ возмоТности ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ модификация Ρ‡Π΅Ρ€Π΅Π· Lua β€” ΠΎΡ‚ простых Ρ‡ΠΈΡ‚ΠΎΠ² (бСсконСчныС дСньги, мгновСнная сборка Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ) Π΄ΠΎ слоТных систСм (Π°Π²Ρ‚ΠΎΠΏΠΈΠ»ΠΎΡ‚, динамичСская ΠΏΠΎΠ³ΠΎΠ΄Π°, Π½ΠΎΠ²Ρ‹Π΅ транспортныС срСдства). ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ совмСстимости с послСдними вСрсиями ΠΈΠ³Ρ€Ρ‹.

Π’Π°ΠΆΠ½ΠΎ: Lua Π² My Summer Car β€” это Π½Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ сообщСства. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрипты ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈΠ»ΠΈ Π»ΠΎΠΌΠ°Ρ‚ΡŒΡΡ послС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈΠ³Ρ€Ρ‹. Однако Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ языка позволяСт Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠΈ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ этому ΠΌΡ‹ научимся.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Lua ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² My Summer Car

Lua β€” это Π»Ρ‘Π³ΠΊΠΈΠΉ, встраиваСмый скриптовый язык, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ созданный для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π±Π΅Π· ΠΈΡ… пСрСкомпиляции. Π’ контСкстС My Summer Car ΠΎΠ½ выполняСт Ρ€ΠΎΠ»ΡŒ моста ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ модификациями. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Lua для ΠΌΠΎΠ΄Π΄ΠΈΠ½Π³Π°:

  • πŸ”Ή ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° синтаксиса: Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΠΎΠΏΡ‹Ρ‚Π° программирования ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π±Π°Π·ΠΎΠ²Ρ‹Ρ… конструкциях Π·Π° нСсколько часов.
  • πŸ”Ή БыстроС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: скрипты ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Π΅Π· Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ.
  • πŸ”Ή Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ любой аспСкт ΠΈΠ³Ρ€Ρ‹ β€” ΠΎΡ‚ Ρ„ΠΈΠ·ΠΈΠΊΠΈ Π΄ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² NPC.
  • πŸ”Ή БообщСство: тысячи Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… скриптов Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… ΠΈ Π² Steam Workshop.

Π’ MSC Lua-скрипты Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· API (Application Programming Interface), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдоставляСт доступ ΠΊ:

  • πŸ“Œ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ транспортных срСдств (ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, износ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, Ρ‚ΠΎΠΏΠ»ΠΈΠ²ΠΎ).
  • πŸ“Œ Π‘ΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΈΠ³Ρ€ΠΎΠΊΠ° (ΡƒΡΡ‚Π°Π»ΠΎΡΡ‚ΡŒ, Π³ΠΎΠ»ΠΎΠ΄, дСньги).
  • πŸ“Œ ΠžΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅ΠΉ срСдС (врСмя суток, ΠΏΠΎΠ³ΠΎΠ΄Π°, спавн NPC).
  • πŸ“Œ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡƒ (HUD, мСню, увСдомлСния).

Π“Π»Π°Π²Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ скриптов β€” это game.lua, располоТСнный Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΈΠ³Ρ€ΠΎΠΉ. ИмСнно Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ происходит основноС взаимодСйствиС с ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΌΠΈΡ€ΠΎΠΌ. Однако для установки ΠΌΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ трСбуСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹: скрипты ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΠΊ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ процСсс бСзопасным.

πŸ“Š Для Ρ‡Π΅Π³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Lua Π² My Summer Car?
Π§ΠΈΡ‚Ρ‹ (дСньги, Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅)
Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ·ΠΈΠΊΠΈ автомобиля
НовыС транспортныС срСдства
ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Ρ‹Π΅ миссии ΠΈ NPC
Π”Ρ€ΡƒΠ³ΠΎΠ΅

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Lua-скрипты: пошаговая инструкция

Установка скриптов Π² My Summer Car Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… тСхничСских Π·Π½Π°Π½ΠΈΠΉ, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок. Π’ΠΎΡ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ инструкция для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΌΠΎΠ΄ΠΎΠ²:

  1. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ скрипт с ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ источника (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Steam Workshop ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΡƒΠΌΡ‹ ΠΌΠΎΠ΄Π΄Π΅Ρ€ΠΎΠ²). ΠžΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ ΠΈΠ³Ρ€Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΌΠΎΠ΄.
  2. РаспакуйтС Π°Ρ€Ρ…ΠΈΠ² (Ссли скрипт Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ .zip ΠΈΠ»ΠΈ .rar). Π§Π°Ρ‰Π΅ всСго Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΠ° с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π° ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠΌ script.lua.
  3. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ:
    Steam\steamapps\common\My Summer Car\data\scripts\

    Если ΠΏΠ°ΠΏΠΊΠΈ scripts Π½Π΅Ρ‚ β€” создайтС Π΅Ρ‘ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

  4. АктивируйтС ΠΌΠΎΠ΄ Π² ΠΈΠ³Ρ€Π΅ Ρ‡Π΅Ρ€Π΅Π· консоль (клавиша ~) ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
    script.load("Π½Π°Π·Π²Π°Π½ΠΈΠ΅_скрипта.lua")

    Или Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку Π² Ρ„Π°ΠΉΠ» autoexec.cfg для автоматичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

НСкоторыС скрипты Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, json.lua для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ). Π˜Ρ… Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅ scripts. Если послС установки ΠΌΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° (рСгистр Π²Π°ΠΆΠ΅Π½!)

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ вСрсии скрипта с вСрсиСй ΠΈΠ³Ρ€Ρ‹

НаличиС всСх зависимостСй (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ .dll ΠΈΠ»ΠΈ .lua)

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄Π°ΠΌΠΈ-->

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ошибка: Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ замСняйтС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ³Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, game.lua Π² ΠΏΠ°ΠΏΠΊΠ΅ data) Π±Π΅Π· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСработоспособности ΠΈΠ³Ρ€Ρ‹ ΠΈ нСобходимости ΠΏΠΎΠ»Π½ΠΎΠΉ пСрСустановки.

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ Lua-скрипты для My Summer Car: ΠΎΠ±Π·ΠΎΡ€ ΠΈ возмоТности

БообщСство ΠΌΠΎΠ΄Π΄Π΅Ρ€ΠΎΠ² создало сотни скриптов для MSC, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ β€” ΠΎΡ‚ упрощСния гСймплСя Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ Π΅Π³ΠΎ трансформации. Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вострСбованныС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ скриптов Π§Ρ‚ΠΎ мСняСт
Π§ΠΈΡ‚Ρ‹ infinite_money.lua, no_hunger.lua БСсконСчныС дСньги, отсутствиС Π³ΠΎΠ»ΠΎΠ΄Π°/усталости, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΌΠΎΠ½Ρ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ.
Π€ΠΈΠ·ΠΈΠΊΠ° realistic_damage.lua, better_suspension.lua Π‘ΠΎΠ»Π΅Π΅ рСалистичныС поврСТдСния, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ подвСска, ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ΅ сцСплСниС с Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ.
Вранспорт new_cars.lua, boat_physics.lua Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… машин (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Satsuma с Ρ‚ΡƒΡ€Π±ΠΈΠ½ΠΎΠΉ), ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ Ρ„ΠΈΠ·ΠΈΠΊΠ° Π»ΠΎΠ΄ΠΎΠΊ.
Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ custom_hud.lua, speedometer_fix.lua НовыС элСмСнты HUD, исправлСниС Π±Π°Π³ΠΎΠ² спидомСтра, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² износа Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ.
Π“Π΅ΠΉΠΌΠΏΠ»Π΅ΠΉ dynamic_weather.lua, npc_ai_improved.lua ДинамичСская смСна ΠΏΠΎΠ³ΠΎΠ΄Ρ‹, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ NPC, Π½ΠΎΠ²Ρ‹Π΅ квСсты.

Один ΠΈΠ· самых популярных скриптов β€” satsuma_tuning.lua, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Satsuma:

  • πŸ”§ ИзмСнСниС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… чисСл ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡.
  • πŸ”§ Настройка давлСния Π² ΡˆΠΈΠ½Π°Ρ… ΠΈ Тёсткости подвСски.
  • πŸ”§ Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΡƒΡ€Π±ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ компрСссора с рСалистичным бустом.
  • πŸ”§ Π Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° расхода Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π° ΠΈ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ двигатСля.

Для установки Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° скриптов ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ достаточно ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΡƒ scripts, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ машин) Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² тСкстур ΠΈ 3D-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ВсСгда Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π°Π²Ρ‚ΠΎΡ€Π° ΠΌΠΎΠ΄Π°!

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой Lua-скрипт для My Summer Car: Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹

Если Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄Ρ‹ Π½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ваши Π½ΡƒΠΆΠ΄Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный скрипт. Для Π½Π°Ρ‡Π°Π»Π° разбСрёмся с основами синтаксиса Lua ΠΈ спСцификой MSC.

Π›ΡŽΠ±ΠΎΠΉ скрипт начинаСтся с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌΡƒ API. ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

-- ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ³Ρ€Ρ‹

local game = require('game')

-- Ѐункция, которая выполняСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€

function onUpdate(dt)

-- Π’Π°Ρˆ ΠΊΠΎΠ΄ здСсь

game.player.money = 1000000 -- ΠŸΡ€ΠΈΠΌΠ΅Ρ€: установка Π΄Π΅Π½Π΅Π³

end

-- РСгистрируСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΈΠ³Ρ€Π΅

game.addUpdateHandler(onUpdate)

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ элСмСнты скрипта:

  • πŸ“ require('game') β€” ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ API.
  • πŸ“ onUpdate(dt) β€” функция, вызываСмая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ (Π³Π΄Π΅ dt β€” врСмя ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°Π΄Ρ€Π°ΠΌΠΈ Π² сСкундах).
  • πŸ“ game.addUpdateHandler β€” рСгистрируСт Π²Π°ΡˆΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΈΠ³Ρ€Π΅.
  • πŸ“ game.player, game.vehicles β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для взаимодСйствия с ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ ΠΈ транспортом.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π² консоль:

local game = require('game')

function onUpdate(dt)

local pos = game.player.position

print(string.format("X: %.2f, Y: %.2f, Z: %.2f", pos.x, pos.y, pos.z))

end

game.addUpdateHandler(onUpdate)

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ print() β€” ΠΎΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ тСкст Π² консоль ΠΈΠ³Ρ€Ρ‹ (открываСтся клавишСй ~). Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ основныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ API:

  • πŸš— game.vehicles[1] β€” доступ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ транспортному срСдству (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Satsuma).
  • πŸ’° game.player.money β€” Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ количСство Π΄Π΅Π½Π΅Π³.
  • ⚑ game.vehicles[1].engineHealth β€” состояниС двигатСля (ΠΎΡ‚ 0 Π΄ΠΎ 1).
  • πŸ› οΈ game.vehicles[1].repairPart("engine") β€” Ρ€Π΅ΠΌΠΎΠ½Ρ‚ Π΄Π΅Ρ‚Π°Π»ΠΈ.
Как Π½Π°ΠΉΡ‚ΠΈ ID Π΄Π΅Ρ‚Π°Π»ΠΈ для Ρ€Π΅ΠΌΠΎΠ½Ρ‚Π°?

Π’ My Summer Car каТдая Π΄Π΅Ρ‚Π°Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ID, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ скрипт:

local game = require('game')

for k,v in pairs(game.vehicles[1].parts) do

print(k) -- Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС доступныС Π΄Π΅Ρ‚Π°Π»ΠΈ

end

Бписок Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ID, ΠΊΠ°ΠΊ "engine", "gearbox", "wheel_fl" (ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π΅ Π»Π΅Π²ΠΎΠ΅ колСсо) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΈΡ… исправлСниС

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΄Π΅Ρ€Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π±Π°Π³Π°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Lua Π² MSC. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если послС установки скрипта ΠΈΠ³Ρ€Π° пСрСстаёт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΌΠΎΠ΄Π° ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ scripts ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ ошибок Π² Ρ„Π°ΠΉΠ»Π΅ output_log.txt (находится Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΈΠ³Ρ€Ρ‹). Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ синтаксичСскиС ошибки ΠΈΠ»ΠΈ отсутствиС зависимостСй.
Ошибка ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
attempt to index a nil value ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, машинС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· if game.vehicles[1] then.
invalid argument ΠŸΠ΅Ρ€Π΅Π΄Π°Π½ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строка вмСсто числа). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ tonumber() для прСобразования Ρ‚ΠΈΠΏΠΎΠ².
Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π½Π΅ загруТаСтся ΠžΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ script.load(). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ рСгистр символов ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ (.lua).
Π˜Π³Ρ€Π° Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» скрипта. ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ всС скрипты ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°.

Одна ΠΈΠ· самых ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹Ρ… ошибок β€” бСсконСчный Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ "ΠΏΠΎΠ΄Π²Π΅ΡˆΠΈΠ²Π°Π΅Ρ‚" ΠΈΠ³Ρ€Ρƒ. НапримСр, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ застопорит MSC:

while true do

game.player.money = game.player.money + 1

end

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ зависаний, всСгда ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ:

local timer = 0

function onUpdate(dt)

timer = timer + dt

if timer > 1 then -- ВыполняСм Ρ€Π°Π· Π² сСкунду

game.player.money = game.player.money + 100

timer = 0

end

end

Если скрипт Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° nil:

function onUpdate(dt)

if game and game.player then

game.player.money = 1000000

end

end

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ: события, Ρ…ΡƒΠΊΠΈ ΠΈ взаимодСйствиС с ΠΌΠΈΡ€ΠΎΠΌ

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ скрипты ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈΠ»ΠΈ машин, Π½ΠΎ настоящая ΠΌΠΎΡ‰ΡŒ Lua Π² My Summer Car проявляСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с событиями ΠΈ Ρ…ΡƒΠΊΠ°ΠΌΠΈ (hook β€” "ΠΊΡ€ΡŽΡ‡ΠΎΠΊ", Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° управлСния). Π­Ρ‚ΠΎ позволяСт Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° дСйствия ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ³Ρ€Ρ‹ Π½Π° Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ:

  • πŸ”§ onVehicleEnter(vehicle) β€” ΠΈΠ³Ρ€ΠΎΠΊ садится Π² транспорт.
  • πŸ”§ onPartBroken(part) β€” Π΄Π΅Ρ‚Π°Π»ΡŒ ломаСтся.
  • πŸ”§ onMoneyChange(amount) β€” измСняСтся количСство Π΄Π΅Π½Π΅Π³.
  • πŸ”§ onTimeChange(hour) β€” мСняСтся врСмя суток.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡ΠΈΠ½ΠΈΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΏΡ€ΠΈ посадкС Π² Π½Π΅Ρ‘:

local game = require('game')

function onVehicleEnter(vehicle)

if vehicle then

vehicle:repairAllParts() -- Π§ΠΈΠ½ΠΈΠΌ всС Π΄Π΅Ρ‚Π°Π»ΠΈ

game.player:notify("Машина ΠΎΡ‚Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°!") -- Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠΊΡƒ

end

end

game.addEventHandler("onVehicleEnter", onVehicleEnter)

Для создания Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ (ΠΏΠΎΡ‚ΠΎΠΊΠΈ выполнСния). НапримСр, скрипт динамичСской ΠΏΠΎΠ³ΠΎΠ΄Ρ‹:

local game = require('game')

local weatherTypes = {"clear", "rain", "snow"}

local currentWeather = 1

function updateWeather()

currentWeather = currentWeather + 1

if currentWeather > #weatherTypes then currentWeather = 1 end

game.setWeather(weatherTypes[currentWeather])

game.player:notify("Погода измСнилась на " .. weatherTypes[currentWeather])

end

-- МСняСм ΠΏΠΎΠ³ΠΎΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 5 ΠΌΠΈΠ½ΡƒΡ‚ (300 сСкунд)

game.setTimer(updateWeather, 300000)

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с NPC ΠΈ квСстами потрСбуСтся Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ структуры ΠΈΠ³Ρ€Ρ‹. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π’Π΅ΠΉΠΌΠΎ (Teimo) ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ дСшСвлС, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ†Π΅Π½:

local game = require('game')

game.shops.teimo.priceMultiplier = 0.5 -- Π‘ΠΊΠΈΠ΄ΠΊΠ° 50%

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ИзмСнСниС Π»ΠΎΠ³ΠΈΠΊΠΈ NPC ΠΈΠ»ΠΈ квСстов ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ основной истории. РСкомСндуСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² savegame.lua ΠΏΠ΅Ρ€Π΅Π΄ экспСримСнтами.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊ Π½Π΅ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ

ΠŸΠ»ΠΎΡ…ΠΎ написанныС Lua-скрипты ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ FPS Π² My Summer Car, особСнно Ссли ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ тяТёлыС вычислСния ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€. Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ этим ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • ⚑ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ частых Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² print(): ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² консоль Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΈΠ³Ρ€Ρƒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.
  • ⚑ ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹: Π½Π΅ ΠΈΡ‰ΠΈΡ‚Π΅ game.vehicles[1] ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ β€” сохранитС ссылку Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.
  • ⚑ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ частоту ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ: Π½Π΅ всС скрипты Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ 60 Ρ€Π°Π· Π² сСкунду.
  • ⚑ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²: ΠΎΠ½ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ скрипта (обновляСт дСньги Ρ€Π°Π· Π² сСкунду, Π° Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€):

local game = require('game')

local timer = 0

function onUpdate(dt)

timer = timer + dt

if timer >= 1 then -- Π Π°Π· Π² сСкунду

game.player.money = game.player.money + 100

timer = 0

end

end

game.addUpdateHandler(onUpdate)

Для слоТных скриптов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… Ρ„ΠΈΠ·ΠΈΠΊΡƒ всСх машин Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ пространствСнныС Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Ρ‹Π΅ структуры (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΊΡ‚ΠΎΠ΄Π΅Ρ€Π΅Π²ΡŒΡ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ столкновСний:

-- ΠŸΠ»ΠΎΡ…ΠΎ (провСряСм всС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€)

for i, veh in ipairs(game.vehicles) do

if veh.position:distance(game.player.position) < 10 then

-- Π”Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ

end

end

-- Π›ΡƒΡ‡ΡˆΠ΅ (провСряСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹)

local lastCheck = 0

local nearbyVehicles = {}

function onUpdate(dt)

lastCheck = lastCheck + dt

if lastCheck > 0.5 then -- Π Π°Π· Π² 0.5 сСкунды

nearbyVehicles = game.getVehiclesInRadius(game.player.position, 10)

lastCheck = 0

end

for _, veh in ipairs(nearbyVehicles) do

-- Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π±Π»ΠΈΠ·ΠΊΠΈΠΌΠΈ машинами

end

end

Если скрипт всё Ρ€Π°Π²Π½ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  1. ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄Ρ‹ β€” ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ.
  2. Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ частоту ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 60 Π΄ΠΎ 30 Ρ€Π°Π· Π² сСкунду).
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ game.collectgarbage() для очистки памяти (Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π· Π² нСсколько ΠΌΠΈΠ½ΡƒΡ‚).

FAQ: Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΎ Lua Π² My Summer Car

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Lua-скрипты Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€Π΅?

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ My Summer Car (Ρ‡Π΅Ρ€Π΅Π· Teardown Multiplayer Mod) Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Lua-скриптов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с локальной ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΈΠ³Ρ€Ρ‹. Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСрвСры Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ клиСнтскиС ΠΌΠΎΠ΄Ρ‹, Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ HUD). ВсСгда уточняйтС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ сСрвСрС.

Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ скрипт послС обновлСния ΠΈΠ³Ρ€Ρ‹?

ПослС ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ MSC Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ API ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ. Π§Ρ‚ΠΎΠ±Ρ‹ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скрипт:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ ошибок (output_log.txt).
  2. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ game.lua (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ… Steam).
  3. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, game.player.setMoney() ΠΌΠΎΠ³ ΡΡ‚Π°Ρ‚ΡŒ game.player.money = value).

Если Π°Π²Ρ‚ΠΎΡ€ скрипта большС Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ„ΠΎΡ€ΠΊ Π½Π° GitHub ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π“Π΄Π΅ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ слоТныС скрипты для MSC?

Для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ погруТСния Π² ΠΌΠΎΠ΄Π΄ΠΈΠ½Π³ My Summer Car ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅:

НачнитС с простых ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ HUD), Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ Ρ„ΠΈΠ·ΠΈΠΊΠ΅ ΠΈ NPC.

ΠœΠΎΠ³ΡƒΡ‚ Π»ΠΈ скрипты Π·Π°Π±Π°Π½ΠΈΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π² Steam?

НСт, использованиС Lua-скриптов Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ³Ρ€Π΅ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Steam, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ сСтСвыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Однако:

  • ИспользованиС Ρ‡ΠΈΡ‚ΠΎΠ² Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π±Π°Π½Ρƒ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ сСрвСрС.
  • Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ³Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· DLL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ), тСорСтичСски ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ подозрСния Ρƒ Π°Π½Ρ‚ΠΈΡ‡ΠΈΡ‚Π° VAC, Π½ΠΎ Ρ‚Π°ΠΊΠΈΡ… случаСв для MSC Π½Π΅ зафиксировано.

Для ΠΏΠΎΠ»Π½ΠΎΠΉ бСзопасности ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ ΠΌΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² ΠΎΠ½Π»Π°ΠΉΠ½-Ρ€Π΅ΠΆΠΈΠΌΡ‹.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию ΠΏΠ΅Ρ€Π΅Π΄ установкой скриптов?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ прогрСсса:

  1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ с сохранСниями:
    Steam\userdata\{YOUR_STEAM_ID}\516750\remote
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ копию Ρ„Π°ΠΉΠ»Π° savegame.lua Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΈΠ³Ρ€Ρ‹ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄Ρ‹, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ прогрСсс).
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Steam Cloud: Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ сохранСния Π² свойствах ΠΈΠ³Ρ€Ρ‹ (ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΊΠ»ΠΈΠΊ β†’ ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ сохранСния).

Для быстрого ΠΎΡ‚ΠΊΠ°Ρ‚Π° достаточно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ.