ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ

C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

Начало

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ (со всСми dll, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ) Π²Ρ‹Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ поста

LuaInterface β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Lua ΠΈ CLR
Lua β€” ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΈΠΉ скриптовый язык программирования. Π’ΠΎΡ‚ Π΅Π³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€
Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ скрипты β€” Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΌΠΎΠ΅Π³ΠΎ поста

Но Π΅ΡΡ‚ΡŒ способ, Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ Π²Ρ‹ΡˆΠ΅ β€” использованиС скриптов.

«ОкСй, для Ρ‚Π°ΠΊΠΈΡ… Π΄Π΅Π» Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° с описаниСм характСристиков ΠΈΠ³Ρ€ΠΎΠΊΠ°. Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π² Π±ΡƒΡ€Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌΡΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь приходится Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ°, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚?Β»
Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос. Π’ этом случаС Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят скрипты, Π΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ³Ρ€ΠΎΠΊΠ° со всСми характСристиками Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ части ΠΈΠ³Ρ€Ρ‹.
ЕстСствСнно, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ всСго Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ, Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ языка программирования.
ΠŸΠ΅Ρ€Π²Π°Ρ ΠΌΡ‹ΡΠ»ΡŒ β€” Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ своСго скриптового языка, выкидываСтся ΠΈΠ· ΠΌΠΎΠ·Π³Π° Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд. Π›ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ стоит Ρ‚Π°ΠΊΠΈΡ… ΠΆΡƒΡ‚ΠΊΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚.
К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ скриптовых языков для Π‘++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π° Π²Ρ…ΠΎΠ΄ тСкстовый Ρ„Π°ΠΉΠ» ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΅Π³ΠΎ.

Об ΠΎΠ΄Π½ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΌ скриптовом языкС Lua ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ LuaInterface, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΊΠΎΠ΄Ρƒ!

LuaInterface β€” основы

Основной класс этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” Lua

ОбъявлСниС констант

ΠžΡ‡Π΅Π½ΡŒ просто ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ константы. ДСлаСтся это Ρ‚Π°ΠΊ

Π’ качСствС значСния ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ β€” число, строка, Π΄Π°ΠΆΠ΅ классы ΠΈ структуры (ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ дальшС)

РСгистрация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’ Lua ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· C#

РСгистрация классов ΠΈ структур

Одна ΠΈΠ· самых приятных сторон LuaInterface, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Lua совмСстно с C++, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ΠΈ послС этого Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² скриптС Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽΒ»
Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

И послС этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Lua скрипт с Ρ‚Π°ΠΊΠΈΠΌ содСрТаниСм:

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Lua ΠΊΠΎΠ΄Π°

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Lua ΠΊΠΎΠ΄ (со всСми зарСгистрированными функциями ΠΈ константами) ΠΌΠΎΠΆΠ½ΠΎ двумя способами
ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” прямиком ΠΈΠ· C#

(Оба ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ object[] β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Lua скрипт послС выполнСния)

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ β€” ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΠΊΠΎΡ‡ΠΈΡ‚ΡŒ Π²ΠΎ врСмя выполнСния скрипта, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ LuaException err

Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ· Lua

Для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ· Lua Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ скрипт, Π²Ρ‹ΡƒΠ΄ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ³Π΄Π° потрСбуСтся.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’Π°ΠΊΠΆΠ΅ Π² Call(params object[] args) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Π’ΠΎΡ‚ ΠΆΠ΅ Ρ„ΠΈΠ½Ρ‚ срабатываСт ΠΈ со значСниями, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто LuaFunction ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ string, int, double ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. 01af2ca347dec0f26d06f8a7f8c3aad9. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-01af2ca347dec0f26d06f8a7f8c3aad9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 01af2ca347dec0f26d06f8a7f8c3aad9. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio
Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΠΊΠ° Lua

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio
Love2D β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых популярных Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π½Π° Lua

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio
Мод для Minecraft на Lua

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio
https://bitbucket.org/Izaron/luaforhabr/src
Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ скриптинга Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Lua

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio
Lua это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, быстрый, Π»Π΅Π³ΠΊΠΈΠΉ, встраиваСмый язык сцСнариСв. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ быстро Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ скриптинга Π² Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ донастройку (ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ) вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈ внСсСнии ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π»ΠΈΠ±ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ написании ΠΈΠ³Ρ€).

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ встраивания Lua Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Lua достаточно ΠΌΠ½ΠΎΠ³ΠΎ. Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Lua, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь Lua Wiki ΠΈ здСсь Wikipedia

Π― ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡƒΡ‚ΡŒ ΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, пСрСчисляСт Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΡ… Π² скрипт. Π‘ΠΊΡ€ΠΈΠΏΡ‚, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡ‰Π΅Ρ‚ соотвСтствиС Π² путях, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ, Ссли Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» согласно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ я создавал Π² Visual Studio ΠΏΠΎΠ΄ Windows. НСсмотря Π½Π° это, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (пСрСчислСниС Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°), спСцифичных для Windows, послС нСбольшой Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Ρ‚.ΠΊ. Lua являСтся кроссплатформСнным языком сцСнариСв.

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ посСтим ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт ΠΈ скачаСм Lua для своСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Для Windows ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π²ΠΎΡ‚ этот Π°Ρ€Ρ…ΠΈΠ², Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ°, динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Lua.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ extern Β«CΒ»? Lua написан Π½Π° ANSI C, Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π΅Π· extern Β«CΒ» Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ мноТСство ошибок, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ:

Π­Ρ‚ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ соглашСния ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Π² C ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ соглашСний Π² C++.

НС Π·Π°Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ экзСмпляр Lua ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

int _tmain( int argc, _TCHAR* argv[])
<
// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ экзСмпляр
g_LuaVM = lua_open();
.
// Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ
lua_close(g_LuaVM);
>

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ· Lua. ΠŸΠ΅Ρ€Π²Π°Ρ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ соотвСтствиС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ:

Вторая β€” ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»:

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ:

// Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈ Π½ΠΎΠ²ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π°
// Π’ случаС успСха Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1, ΠΈΠ½Π°Ρ‡Π΅ 0
int LuaRenameFile(lua_State *luaVM)
<
// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ число ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Lua скрипта Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
int argc = lua_gettop(luaVM);

// ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
return 1;
>

strDestination = strSource.substr(0, strSource.rfind(‘\\’) + 1) + strDestination;

int nResult = ( int )::MoveFileEx(strSource.c_str(), strDestination.c_str(), MOVEFILE_REPLACE_EXISTING|MOVEFILE_WRITE_THROUGH);

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π² Lua скрипт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния MoveFileEx
lua_pushnumber(luaVM, nResult);

// ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
return 1;
>

Как Π²ΠΈΠ΄Π½ΠΎ β€” Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного: провСряСм количСство ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², провСряСм Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ, выполняСм ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π°Ρ‚ΡŒ Lua Π·Π½Π°Ρ‚ΡŒ, ΠΎ экспортируСмых функциях, дСлаСтся это просто:

lua_register(g_LuaVM, «RenameFile», LuaRenameFile);
lua_register(g_LuaVM, «MatchString», LuaMatchString);

RenameFile ΠΈ MatchString это ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Β«Π²ΠΈΠ΄Π½Ρ‹Β» Π² скриптС.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ скрипт, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ всю Ρ€Π°Π±ΠΎΡ‚Ρƒ:

Π§Ρ‚ΠΎΠ±Ρ‹ совсСм стало понятно, ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ кусок ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ стСка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ onFileFound
lua_getglobal(g_LuaVM, «onFileFound»);
// ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтом Π² стСк ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ (fileName Π² скриптС)
lua_pushstring(g_LuaVM, strFilePath.c_str());

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ скрипт ΠΈΠ· нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

// Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ скрипт
int s = luaL_loadfile(g_LuaVM, szScriptPath);

// ВыполняСм ΠΊΡ€ΠΈΠΏΡ‚
s = lua_pcall(g_LuaVM, 0, LUA_MULTRET, 0);

Как Π²ΠΈΠ΄Π½ΠΎ встраиваниС Lua скриптинга Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ являСтся, ΠΏΠΎ сути, Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΈ вмСстС с Ρ‚Π΅ΠΌ Π΄Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ для творчСства.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список рСсурсов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎ Lua Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Lua: ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΆΠΈΡ‚ΡŒ

Lua: ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΆΠΈΡ‚ΡŒ

Π—Π° Lua ΠΏΡ€ΠΎΡ‡Π½ΠΎ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠ»Π°ΡΡŒ слава полуязыка β€” инструмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ случаС ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, написанноС Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ языкС Π²Ρ€ΠΎΠ΄Π΅ Π‘++. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Lua являСтся Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ языком, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ свой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, большоС число Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΈ ΠΏΡ€ΠΈ этом Π΄Π°Π½Π½Ρ‹ΠΉ ЯП ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ срСди Π°Π½Π°Π»ΠΎΠ³ΠΎΠ². ΠŸΡ€ΠΎΡ‰Π΅ говоря Ρƒ нас Π΅ΡΡ‚ΡŒ всС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ прилоТСния ΠΊΠ°ΠΊ Π½Π° perl, python, ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ распространСнном языкС программирования.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ возмоТности Lua, я ΠΏΠΎΠΊΠ°ΠΆΡƒ ΠΊΠ°ΠΊ с Π΅Π³ΠΎ использованиСм ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΏΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ сохранСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° изобраТСния.

Π’ качСствС графичСского Ρ‚ΡƒΠ»ΠΊΠΈΡ‚Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ iup β€” ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ с расчСтом использования ΠΈΠ· Lua.

Установка Lua SDK

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΈΠ΄Π΅ΠΈ использования Lua ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ЯП, Π±Ρ‹Π»Π° создана сборка Lua for Windows, которая содСрТит сСбС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π² повсСднСвных Π·Π°Π΄Π°Ρ‡Π°Ρ…, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ОБ: Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π”, GUI, парсинг XML ΠΈ Ρ‚.Π΄. ΠŸΡƒΡΡ‚ΡŒ вас Π½Π΅ смущаСт, Ρ‡Ρ‚ΠΎ вСрсия Lua Π² сборкС 5.1, Π° Π½Π΅ 5.2 β€” особой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² нашСм случаС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½Π΅Ρ‚.

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ΠΈ установитС сборку.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ iup
Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
ΠŸΠ°Ρ€Π° слов ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ clibs/, которая находится Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΊΡƒΠ΄Π° Π±Ρ‹Π» установлСн Lua for Windows. Π§Ρ‚ΠΎΠ±Ρ‹ максимально ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ скрипт ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для пСрСноса Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, достаточно ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ слСдущиС Ρ„Π°ΠΉΠ»Ρ‹(ΡƒΠΊΠ°Π·Π°Π½Ρ‹ с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ путями ΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ установки Lua):

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² эту ΠΏΠ°ΠΏΠΊΡƒ ΠΈ сам скрипт с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ пСрСнСсти эту ΠΏΠ°ΠΏΠΊΡƒ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅. ΠŸΡ€ΠΈ этом Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия ΠΏΠΎ установкС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ° Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

К соТалСнию Ρ„Π°ΠΉΠ»Ρ‹ cd.dll, cdluad51.dll ΠΈ iupcd.dll Π² Π΄Π°Π½Π½ΠΎΠΉ вСрсии Lua for Windows ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, поэтому Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π·ΡΡ‚ΡŒ ΠΈΡ… ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π° ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅.

Π˜Ρ‚ΠΎΠ³ΠΈ

Архив с Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ вСрсиСй Ρ‚ΡƒΡ‚, для удобства Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° пускалка app.bat.

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. lua1. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-lua1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° lua1. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. lua2. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-lua2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° lua2. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, ΠΏΡƒΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΊΠ°Π·ΠΈΡΡ‚ΡƒΡŽ, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», ΠΊΠ°ΠΊ ΠΈ Ссли Π±Ρ‹ ΠΎΠ½Π° Π±Ρ‹Π»Π° написана Π½Π° Β«ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΌΒ» языкС программирования. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π² Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ΠΈ суммарным вСсом ΠΌΠ΅Π½Π΅Π΅ 2 ΠΌΠ±. ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти β€” ΠΎΠΊΠΎΠ»ΠΎ 7 ΠΌΠ±. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ доступСн для рСдактирования, сам Lua ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ понятСн, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ софта Π½Π° мСстах.

На ΠΌΠΎΠΉ взгляд, это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для написания ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ софта для школ ΠΈ институтов, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ использования Π½Π° прСдприятиях. Π’Π°ΠΊ ΠΊΠ°ΠΊ слабыС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π΄ΠΎ сих ΠΏΠΎΡ€ Π² ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… мСстах ΠΏΠΎ всСму БНГ, Ρ‚ΠΎ использованиС LuΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ цСлСсообразно, особСнно Π² свСтС постСпнного ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° Linux Π½Π° дСсктопы. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ исходников самописного софта ΠΏΡ€ΠΈ ΠΆΡƒΡ‚ΠΊΠΎΠΉ Π΅Π³ΠΎ ΠΆΠ΅ забагованности ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ€Π°Π²Π½ΡΡ‚ΡŒ ΠΊ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Π±Π΅Π΄ΡΡ‚Π²ΠΈΡŽ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π°Ρˆ ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ скрипт QLUA

Ну Π²ΠΎΡ‚ Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя для написания нашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ скрипта. НачнСм Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΌΡ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ со скрипта, Π° Π½Π΅ с ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. Π’ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ большой Π½Π΅Ρ‚, Π½ΠΎ скрипт Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, поэтому я Ρ€Π΅ΡˆΠΈΠ» Π½Π°Ρ‡Π°Ρ‚ΡŒ с Π½Π΅Π³ΠΎ. Если Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ сайт с самого Π½Π°Ρ‡Π°Π»Π°, Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ скрипты ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² любом мСстС Π½Π° нашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡ… Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ QUIK, создав Π² Π½Π΅ΠΉ ΠΏΠ°ΠΏΠΊΡƒ для скриптов. ΠœΡ‹ поступим Ρ‚Π°ΠΊ ΠΆΠ΅. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ, Π³Π΄Π΅ установлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° QUIK.

НСобходимыС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π² Π½Π΅ΠΉ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ lua, Π² Π½Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ всС ваши написанныС скрипты. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ lua ΠΈ создайтС Π² Π½Π΅ΠΉ тСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Для этого Π² пустом мСстС Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ВСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. НаТмитС Π½Π° Π½Π΅Π³ΠΎ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя нашСго Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ скрипта. Π― ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ русскиС Π±ΡƒΠΊΠ²Ρ‹ Π² названиях поэтому всСгда всё ΠΏΠΈΡˆΡƒ Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π΅ΠΉ. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ myNewScript. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ создаСтС тСкстовыС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° txt, Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ lua. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ myNewScript.lua ΠšΡΡ‚Π°Ρ‚ΠΈ говоря, Π² настройках вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠΎΠΊΠ°Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², Ссли Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ создании тСкстового Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° .txt, ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ lua Π½Π΅Ρ‚ смысла, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Windows автоматичСски Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .txt, Π² нСзависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ .lua. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΠΈΠ±ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π»ΠΈΠ±ΠΎ создавайтС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· notepad.

Для создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ· notepad, запускаСтС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ notepad. Π’Π²Π΅Ρ€Ρ…Ρƒ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΠ° new 1. Π’ мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ синтаксисы, Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π°Π½Π³Π»ΠΈΠΉΡΠΊΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ L ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ lua. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Π€Π°ΠΉΠ» ΠΈ ΠΈΡ‰ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ. ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ, Π³Π΄Π΅ Ρƒ вас установлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° QUIK, Π² Π½Π΅ΠΉ ΠΈΡ‰ΠΈΡ‚Π΅ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅ ΠΏΠ°ΠΏΠΊΡƒ lua. Π’Π½ΠΈΠ·Ρƒ Π³Π΄Π΅ написано имя Ρ„Π°ΠΉΠ»Π° ΠΏΠΈΡˆΠΈΡ‚Π΅ myNewScript А Π²ΠΎΡ‚ Π½ΠΈΠΆΠ΅, Π³Π΄Π΅ написано Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°, Ρƒ вас ΡƒΠΆΠ΅ Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΡƒΠ½ΠΊΡ‚ Lua Source file, Ссли Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΡ‰ΠΈΡ‚Π΅ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅. НаТимаСтС ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

Если Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ Π½Π° ΠΌΠΎΡ‘ΠΌ сайтС ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° Π Π°Π±ΠΎΡ‡Π΅Π΅ мСсто, Ρ‚ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ notepad++ создавали панСль ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ 1 ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΡƒΠΌΠ°ΡŽ стоит ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ созданный Π½Π°ΠΌΠΈ Ρ„Π°ΠΉΠ» Π² эту панСль. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π² notepad++ Ссли Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ это дСлаСтся.

Ну Ρ‡Ρ‚ΠΎ ΠΆΠ΅ с основами Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ самому интСрСсному, ΠΊ написанию ΠΊΠΎΠ΄Π°. Π’Π°ΠΊ ΠΊΠ°ΠΊ скрипты ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊ языку lua, Ρ‚ΠΎ информация ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ создаСтся скрипт Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π· Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎΠΌΠΎΡ‰ΠΈ QLUA.chm, Ρ‡Ρ‚ΠΎ находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Π³Π»Π°Π²Ρƒ напишСм простой скрипт

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния Π² Ρ„Π°ΠΉΠ»Π΅, синяя дискСтка Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ запуск

Пока Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ понятСн ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ ΡΠΏΠ΅ΡˆΠΈΡ‚Π΅, всС Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎ порядку, Π° ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅, запуститС ΠΈ посмотритС Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. scriptList. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-scriptList. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° scriptList. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

Окно Бписок доступных скриптов

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. quik Info encode. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-quik Info encode. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° quik Info encode. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

Ошибка ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ скрипта

Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ notepad++, Π³Π΄Π΅ написан ΠΊΠΎΠ΄ скрипта, Π² мСню Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² ANSI. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² QUIK ΠΈ снова запуститС скрипт. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ отобраТаСтся тСкст Β«Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ запуск ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ скрипта». Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Windows-1251, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² спискС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню.

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. quik Info encode true. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-quik Info encode true. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° quik Info encode true. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² скриптС Квик

Ну Ρ‡Ρ‚ΠΎ ΠΆΠ΅, скрип написан, скрипт Π·Π°ΠΏΡƒΡ‰Π΅Π½, скрипт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π’Ρ‹ сдСлали Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ шаг, ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π½Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° этом, Π° Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΏΠ΅Ρ€Π΅Π΄. Π”Π°Π»ΡŒΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ всС Π΅Ρ‰Π΅ интСрСснСС ΠΈ интСрСснСС, ΠΌΡ‹ разбСрСмся с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ понаписали, ΠΊΠ°ΠΊ выполняСтся скрипт ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ скрипты ΠΈ с Ρ‡Π΅ΠΌ ΠΈΡ… Сдят β€” Lua & C++

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь, Π₯Π°Π±Ρ€Π°Ρ…Π°Π±Ρ€!
РСшил Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ этот Ρ‚ΠΎΠΏΠΈΠΊ Π½Π° Ρ‚Π΅ΠΌΡƒ скриптов

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ?

Но Π΅ΡΡ‚ΡŒ способ, Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ Π²Ρ‹ΡˆΠ΅ β€” использованиС скриптов.

РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

«ОкСй, для Ρ‚Π°ΠΊΠΈΡ… Π΄Π΅Π» Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° с описаниСм характСристиков ΠΈΠ³Ρ€ΠΎΠΊΠ°. Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π² Π±ΡƒΡ€Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌΡΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь приходится Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ°, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚?Β»
Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос. Π’ этом случаС Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят скрипты, Π΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ³Ρ€ΠΎΠΊΠ° со всСми характСристиками Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ части ΠΈΠ³Ρ€Ρ‹.
ЕстСствСнно, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ всСго Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ, Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ языка программирования.
ΠŸΠ΅Ρ€Π²Π°Ρ ΠΌΡ‹ΡΠ»ΡŒ β€” Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ своСго скриптового языка, выкидываСтся ΠΈΠ· ΠΌΠΎΠ·Π³Π° Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд. Π›ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ стоит Ρ‚Π°ΠΊΠΈΡ… ΠΆΡƒΡ‚ΠΊΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚.
К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ скриптовых языков для Π‘++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π° Π²Ρ…ΠΎΠ΄ тСкстовый Ρ„Π°ΠΉΠ» ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΅Π³ΠΎ.

Об ΠΎΠ΄Π½ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΌ скриптовом языкС Lua ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ скриптовый язык. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² скриптовых языках Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ конструкций for, while, if, ΠΏΡ€ΠΎΡ‡ΠΈΡ….
Π’ основном это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста Π² консоль, матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.
Как ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· скрипты?

ΠœΡ‹ Π² Π‘++-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, «рСгистрируСм» ΠΈΡ… ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² скриптС ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π² скриптС. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΌΡ‹ зарСгистрировали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SetPos(x,y) для опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π² Π‘++-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚ΠΎ, встрСтив эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² скриптС, Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Β» ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ скриптового языка Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Π‘++-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, СстСствСнно, с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π°? πŸ™‚

UPD: Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Один ΡŽΠ·Π΅Ρ€ обратился ΠΌΠ½Π΅ с ΠΌΠ΅ΠΉΠ»ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° я Π·Π°Π»ΠΈΠ²Π°Π» ΠΊΠΎΠ΄, я Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ устранил всС ошибки β€” habrahabr.ru/post/196272/#comment_6850016
Π’ ΠΊΠΎΠ΄Π΅ с позволСния Ρ…Π°Π±Ρ€Π° ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ»ΠΈ ΠΆΡƒΡ‡ΠΊΠΈ
Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ участки ΠΊΠΎΠ΄Π° Π²Ρ€ΠΎΠ΄Π΅

И Π΅Ρ‰Π΅ вмСсто lua_CFunction проскакиваСт lua_cfunction
Бпасибо!

Π― Π³ΠΎΡ‚ΠΎΠ²!

Когда Π²Ρ‹ поняли прСимущСства скриптовых языков программирования, самоС врСмя Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ!
Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ΠΈΠ· рСпозитория Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅ (Π½ΠΈΠ· Ρ‚ΠΎΠΏΠΈΠΊΠ°) lib’Ρƒ ΠΈ includ’Ρ‹ Lua, Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·ΠΌΠΈΡ‚Π΅ ΠΈΡ… Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π»ΠΈΠ±ΠΎ Win32 (это Π½Π΅Π²Π°ΠΆΠ½ΠΎ) Π² Visual Studio (Ρƒ мСня стоит вСрсия 2012)

Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠŸΡ€ΠΎΠ΅ΠΊΡ‚->Бвойства->Бвойства ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ->ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ VC++ ΠΈ Π² Β«ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΒ» ΠΈ Β«ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΒ» Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ Include ΠΈ Lib ΠΈΠ· рСпозитория соотвСтствСнно.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создаСм Ρ„Π°ΠΉΠ» main.cpp, пишСм Π² Π½Π΅ΠΌ:

Как Π²Ρ‹ догадались, Ρƒ мСня консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΊΠΎΠ΄ΠΈΠ½Π³Ρƒ

ΠžΠ±Π΅Ρ‰Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Ρƒ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚

Π£ нас Π·Π° скрипты Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ класс Script. Π― Π±ΡƒΠ΄Ρƒ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Script.h/.cpp
БоздаСм Script.cpp и пишСм в нСм

БоздаСм Script.h и пишСм в нСм

ПослС 2 строчки ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ #endif ΠΌΡ‹ опрСдСляСм класс скриптов
Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ для прСдотвращСния Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ². Допустим, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Game.h ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Script.h, Π° Script.h ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Game.h β€” нСпорядок! А с Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 Ρ€Π°Π·

Π’Π΅ΠΏΠ΅Ρ€ΡŒ пишСм Π²Π½ΡƒΡ‚Ρ€ΠΈ этого ΠΊΠΎΠ΄Π° Π²ΠΎΡ‚ это

ΠŸΠ΅Ρ€Π²Π°Ρ строчка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сам lua.lib ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π°.
Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ extern Β«CΒ»? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ lua написан Π½Π° Π‘ ΠΈ поэтому Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстных ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с консолью

Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступим ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ класса

Π‘Π°ΠΌΡ‹ΠΉ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Lua для C++ β€” lua_State, ΠΎΠ½ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для выполнСния скриптов

Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄ΡƒΡ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π­Ρ‚Π° функция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ lua_State

Π•Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Script.cpp

ΠŸΠ΅Ρ€Π²ΠΎΠΉ строчкой ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ наш lua_State.
ΠŸΠΎΡ‚ΠΎΠΌ ΠΌΡ‹ объявляСм список Β«ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΒ». Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² «чистом» Π²ΠΈΠ΄Π΅ Π² Π»ΡƒΠ° Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ функция print(). Для матСматичСских ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ трСбуСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ math.foo, base.foo, io.foo. Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² lualibs, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, <Β«mathΒ», luaopen_math>. ВсС названия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с luaopen_. Π² ΠΊΠΎΠ½Ρ†Π΅ lialibs Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚ΠΎΡΡ‚ΡŒ

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ lua_close()

А эта функция выполняСт Ρ„Π°ΠΉΠ». На Π²Ρ…ΠΎΠ΄ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«C:\\script.luaΒ».
ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int? ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрипты ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ return, прСрывая Ρ€Π°Π±ΠΎΡ‚Ρƒ скрипта ΠΈ возвращая ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, я Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ скрипт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽ int. Но Π²ΠΎΠ·Ρ€Π°Ρ‰Π°Ρ‚ΡŒ функция ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ int, Π½ΠΎ Π΅Ρ‰Π΅ ΠΈ bool ΠΈ char*, просто я всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽ числа (lua_toboolean, lua_tostring)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ сдСлаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ константы (числа, строки, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ)

ΠœΡ‹ дСйствуСм Ρ‡Π΅Ρ€Π΅Π· ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
Π•Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ значСния class T ΠΌΡ‹ опрСдСляСм свои дСйствия.
*ΠšΠ°ΠΏΠΈΡ‚Π°Π½* послСднСС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ β€” рСгистрация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³ΠΎΠ΄Π½Ρ‹Π΅ для рСгистрации, выглядят Ρ‚Π°ΠΊ:

Π“Π΄Π΅ n β€” количСство Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Если n = 2, Ρ‚ΠΎ Π² Π›ΡƒΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΌΠ°Π½ΡƒΠ°Π»Ρ‹ ΠΏΠΎ Π›ΡƒΠ°, Ссли Π±Ρ‹Π»ΠΈ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ πŸ™‚

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция создаСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для Π›ΡƒΠ°. Если нСпонятно, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‚ΠΎ Ρ‚Π°ΠΌΠΎΡˆΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° всС Ρ€Π°Π²Π½ΠΎ Ρ‡Ρ‚ΠΎ массив

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция рСгистрируСт элСмСнт Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Lua, Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄ΠΈΠ½ массив помСщаСтся ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏΠΎΠ²? πŸ™‚
На самом Π΄Π΅Π»Π΅ Π² элСмСнтС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π΅Ρ‰Π΅ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°, я Ρ‚Π°ΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ дСлаю.

НаконСц, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

НичСго особСнного Π½Π΅Ρ‚

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Π² основном Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int foo(lua_State*), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для рСгистрации Π² Π›ΡƒΠ°.

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· Π½ΠΈΡ… β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Π­Ρ‚Π° функция Π½ΡƒΠΆΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Write(), ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡ…Π°Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ
ΠŸΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² скриптС

МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Ρ‚ΠΈΠΏΡ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°Π²ΡˆΠΈΠ΅ΡΡ Ρ€Π°Π½Π΅Π΅, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
index β€” это Π½ΠΎΠΌΠ΅Ρ€ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. И ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ начинаСтся с 1.

НаконСц, послСдняя функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² скрипт

Π‘ΠΎΠ΅Π²ΠΎΠΉ ΠΊΠΎΠ΄

ΠŸΠΎΡ€Π° Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ!
ИзмСняСм main.cpp

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ нашСго класса

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, я ΠΎΠ±Π΅Ρ‰Π°Π» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Write? πŸ™‚
ВидоизмСняСм main.cpp

А Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ создаСм Ρ„Π°ΠΉΠ» script.lua

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ запускаСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

Π’Π΅ΠΏΠ΅Ρ€ΡŒ измСняСм script.lua

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ 2 строки («\n» β€” созданиС Π½ΠΎΠ²ΠΎΠΉ строки), ΠΆΠ΄Π°Ρ‚ΡŒ наТатия Enter ΠΈ снова Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строки.

ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. image loader. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠ° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. C# Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ понятиС ΠΎΠ± основах программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ссылок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Visual Studio

ЭкспСримСнтируйтС со скриптами!

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ main.cpp с функциями ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ script.lua

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты
Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *