Урок 1. Intro - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: Woitek, 4erveR, Unaited, Renny


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 1 из 212»
Форум » Worms 4 Mayhem » 5.1. Уроки Lua » Урок 1. Intro (Что такое lua? Общий трёп)
Урок 1. Intro
Герыч
Дата: ВС, 13.09.2009, 00:13:38 | Сообщение # 1
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Итак, начинаем наше обучение=)
Для начала надо разобраться с тем, что такое lua, в чём его "сила", что даст его знание. Ну и как работать с lua.

Lua - это язык программирования. Его создали какие-то студенты или профессора, что-то такое. Эти студенты были португальцами, поэтому они назвали свой язык Lua, что переводится как "луна".
Но это никому интересно, поэтому сразу о том, что такое lua в плане применения. Lua - язык для написания скриптов. Под скриптом понимается небольшая программка, которая исполняется другой программой. При этом скрипт расширяет функции основной программы, делает её более гибкой и динамичной.

В нашем случае основная программа - Worms. Разработчики Worms(дядьки, постоянно глотающие пиво и сидящие в Team17) захотели, чтобы каждую карту можно было описывать не в коде самой игры, а отдельно. Зачем? Много причин:
1) для того чтобы получить программу, её нужно скомпилировать. Компиляция - анализ каждой строчки файла, проверка синтаксиса и создание большого exe файла. Конечно это очень долго, поэтому разумно отделить такие мелочи, как карты от основной игры.
2) возможность описывать уровни на более удобном языке. Ведь сама игра написана на C++, а это, хотя и мощный и быстрый язык, но не оч гибкий(все переменные имеют точный тип, при любой ошибке C++ оч сильно на неё ругается). Короче нужно что-то более податливое для быстрого описания уровней.

Поэтому эти дядьки(а они умные программисты, хотя и пьют много пива) зашли на сайт lua.org взяли код lua интерпретатора(а он бесплатен, доступен и открыт) и присобачили к своей игре.

Естественно lua есть не только в Worms. Поглядите список игр на википедии, и это не полный список!

По lua есть хороши описания, есть много разработок(я нашёл на нём даже сервер-kepler называется если что).

Так вот все эти игры и программы объединяет то, что у них есть интерпретатор Lua. Это такая часть программы которая понимает lua и может его загружать и выполнять.

Мы будем пользоваться двумя интерпретаторами:
1) Стандартный интерпретатор Lua
2) Интерпрератор Worms

Стандартный интерпретатор Lua - это чёрное досовское окошко, в котором нет ничего лишнего, но есть всё что надо, поэтому он идеален для понимания lua. В нём мы будем пробовать всё, что изучаем. А поскольку язык один, то всё что мы научимся делать можно будет применять в worms(с некоторыми оговорками)

Теперь пару слов о том, что мы можем добиться от программы. Вообще, у всех часто возникают вопросы: "а можно ли?" "а это реально сделать?" - на такие вопросы сразу отвечаю - чудес не бывает. Поясню на таком маленьком диалоге(Васи и Пети):
Вася: Можно ли червя во время игры с помощью скрипта переместить в любую произвольную точку??
Петя: Нет
Вася: Почему??? Было бы классно!
Петя: Потому что интепретатор не даёт такой возможности
Вася: А если поковыряться в exe?
Петя: Ковыряйся!
Вася: Нууу!
Примерно то же я отвечу, если вы будете приставать ко мне с такими вопросами, поэтому объясняю сразу.
Интерпретатор-прослойка между игрой и скриптом. В игре можно многое. Т.е. там реально существует возможность переместить червя. НО! чтобы в скрипте была эта возможность интерпретатор должен её предоставить скрипту. Это означает, что ленивые дядьки, вовсю пьющие пиво в Team17 должны пошевелить ручками и добавить это в lua, НО! они ленивые и пьяные, поэтому:
1) чтобы сделать такую возможность надо было достаточно долго посидеть над кодом и они это не стали делать
2) если даже делать такую возможность, она может вызвать кучу ошибок, а ошибки это плохо
3) lua они добавили не для нас(людей, которые пытаются извращаться над игрой), а для себя- то есть чтобы быстро описывать карты и ничего кроме этого!

Таким образом вы должны понять, как отвечать себе на многие такие вопросы. Но не огорчайтесь, к концу обучения вы найдёте массу полезных и интересных фич, да и сами научитесь делать скрипты, и искать инфу по ним.

По тексту выше уже немного понятно, что интерпретатор даёт функции скрипту. К примеру даёт скрипту возможность узнать, сколько червей на карте, к какой команде каждый принадлежит, какое у него оружие.
Но сам скрипт даёт интерпретатору кое-какую инфу, к примеру он может сказать интерпретатору "Слушай парниш, если тут червяк подохнет, ты мне об этом скажи, ага". Это называется событием. То есть если на карте что-то важное произошло, то об этом можно узнать в скрипте.

Кроме того скрипт может менять объекты в игре. К примеру он может взять и оживить червя, добавить ему здоровье, убрать у него оружие, кинуть ящик, ещё кучу всего.

Вот так.

Ну о червях достаточно, более детально поговорим ближе к концу обучения. Для того, чтобы всё это понять нам нужны базовые знания по луа, так что будем их получать!

Для того, чтобы их опробовать - надо будет установить стандартный интерпретатор, но о том, как это сделать - позже, в следующем уроке.

А сейчас жду мнений и отзывов. Что непонятно?



[Список уроков]|[Следующий урок]


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
vera34
Дата: ВС, 13.09.2009, 01:42:11 | Сообщение # 2
vera34
Его узнают в чате
Группа: Проверенные
Сообщений: 666
Репутация: 18
Статус: Offline
а я се мозг не сломаю))) ато и так он сломан biggrin



Затянись, и мир станет прекрасным.
С каждым днем я все больше убеждаюсь в том, что людей умышленно делают идиотами (С).
 
SW_Krash
Дата: ВС, 13.09.2009, 10:04:15 | Сообщение # 3
SW_Krash
BugagaXD
Группа: Проверенные
Сообщений: 818
Репутация: 28
Статус: Offline
Всё понятно... непонятно только почему мы не можем переместить червя... я пробовал менять контейнер червя на контейнер прописанный в ксмл с изменённым значением позиции но червь создался в точке 0,0,0... наверно надо было изменить в все координаты... или просто игра в тупую при создании червя сбрасывает все значения которые не прописаны в твиках... блин пока это говорил мну озарила идея =))) и ещё... мне было сказано что никто не знает на каком языке написаны черви, а тут на тебе и так точно было сказано что это C++ ... НЕПОНЯТНО =)... ну а остальное понятно... думаю к завтрашнему вечеру можно новый урок выкладывать... хотя можно и сегодня вечером =)

Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
AlexBond
Дата: ВС, 13.09.2009, 18:11:24 | Сообщение # 4
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Оставлю лишь одно замечание - неперемудрите в своих скриптах, проверено, слишком мудреные скрипты неинтересны...

 
Герыч
Дата: ВС, 13.09.2009, 21:11:01 | Сообщение # 5
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Quote
тут на тебе и так точно было сказано что это C++ ... НЕПОНЯТНО =)

Верный признак C++ - dll-ки, которые используются игрой. Насколько я помню в папке есть msvcrt.dll - это библиотека исполнения языка C++. Ещё сам луа написан на чистом ANSI C. Вот все доказательства.

А про позицию червя - ты пробовал проверить тип контейнера-вектора?? т.е. вывести type(worm.position)? если нет, то скорее всего на экране будет userdata - это неизвестный для lua тип данных, который может использовать только внешняя программа, но ещё его может использовать скрипт, если внешняя программа через интерпретатор даёт функции для работы с ним.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
AlexBond
Дата: ВС, 13.09.2009, 22:02:36 | Сообщение # 6
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Quote (Герыч)
msvcrt.dll - это библиотека исполнения языка C++.

Вопрос не по теме, но все же, Герыч как думаешь эту библиотеку можно форварднуть? Тогда бы я смог сделать универсальный W4MapLoader для любой версии игры...


 
DrHitman27
Дата: ВТ, 15.09.2009, 16:57:00 | Сообщение # 7
DrHitman27
•Polarized•
Группа: Заблокированные
Сообщений: 2107
Репутация: 52
Статус: Offline
Quote (Герыч)
ленивые дядьки, вовсю пьющие пиво в Team17

tongue


 
Герыч
Дата: ЧТ, 07.01.2010, 16:36:20 | Сообщение # 8
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Quote (AlexBond)
Вопрос не по теме, но все же, Герыч как думаешь эту библиотеку можно форварднуть?

Форварднуть - это что?


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Мэйт
Дата: ЧТ, 07.01.2010, 17:41:01 | Сообщение # 9
Мэйт
Реальный чел
Группа: Проверенные
Сообщений: 1140
Репутация: 24
Статус: Offline
Quote (Герыч)
ленивые дядьки, вовсю пьющие пиво в Team17

Откуда ты знаешь?



 
Герыч
Дата: ЧТ, 07.01.2010, 17:46:43 | Сообщение # 10
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Потому что по-другому игры с таким количеством багов не пишутся) Да и многие программисты любят пиво) + про Team17 ходят такие слухи)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
DrHitman27
Дата: ЧТ, 07.01.2010, 18:14:33 | Сообщение # 11
DrHitman27
•Polarized•
Группа: Заблокированные
Сообщений: 2107
Репутация: 52
Статус: Offline
Quote (Герыч)
+ про Team17 ходят такие слухи)

я даж где-то фотки видел)


 
[WEC]__Grim
Дата: СР, 29.09.2010, 18:02:10 | Сообщение # 12
([WEC]__^Res24^__[WEC])

[WEC]__Grim
Его узнают в чате
Группа: Проверенные
Сообщений: 507
Репутация: 17
Статус: Offline
а можно сделать самому интерпрератор LUA


Я вернулся...
 
DrHitman27
Дата: СР, 29.09.2010, 18:08:57 | Сообщение # 13
DrHitman27
•Polarized•
Группа: Заблокированные
Сообщений: 2107
Репутация: 52
Статус: Offline
да, но для этого нужно быть хорошим програмистом.

 
Герыч
Дата: ЧТ, 30.09.2010, 00:49:25 | Сообщение # 14
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
на самом деле ничего сложного) Я построитель графиков делал) функцию в луа пишешь, она строится в окошке)

Только естественно я использовал их библиотеку.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
DrHitman27
Дата: ЧТ, 30.09.2010, 00:59:53 | Сообщение # 15
DrHitman27
•Polarized•
Группа: Заблокированные
Сообщений: 2107
Репутация: 52
Статус: Offline
Quote (Герыч)
на самом деле ничего сложного) Я построитель графиков делал) функцию в луа пишешь, она строится в окошке) Только естественно я использовал их библиотеку.

ну это не уже халява


 
Форум » Worms 4 Mayhem » 5.1. Уроки Lua » Урок 1. Intro (Что такое lua? Общий трёп)
Страница 1 из 212»
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz