Случайная подборка модов
Clear Sky: MYSTERY
4.1
S.T.A.L.K.E.R. F.M.
4.4
Под прикрытием смерти. Клондайк 2.0
4.0
Зимний путь 1.2: Альтернатива
2.2
CoP’s Level Pack [beta]
4.1
NEYA Online
3.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Институт модмейкера
Российская Федерация  _Призрак_
Среда, 27.06.2012, 21:16 | Сообщение # 1
Статус:
Неопытный:
Сообщений: 544
Награды: 6
Регистрация: 12.02.2011

Лекции


На сайте gamedev.ru уже давно существует раздел, в которых выкладываются логи переписки с лекциями. Не смотря на то, что там собрано все в кучу, практически каждая такая переписка имеет толк. Например из них можно узнать множество вещей, которые невозможно узнать из сухой документации. В связи с тем, что на сайте много новичков, я хотел бы провести ряд таких экспериментальных лекций. Они будет представлять собой голосовой чат в котором будет подниматься какая-либо тема (например логика в игре) и лектор будет о ней рассказывать. Участники могут спрашивать любые вопросы, на которые лектор постарается ответить. По окончанию логи беседы будут выложены в аудио и текстовом формате. На каждую лекцию необходима будет записываться - это нужно для того, чтобы можно было искоренить флудеров и предотвратить переполнение.
Формат записи (пример - я):

Quote (me)
Skype: rus_phantom
Есть микрофон
Буду на лекции.


Если вы записались, но не пришли - никаких проблем.

Правила:
1. Не флудить
2. Уважать участников
3. Уважать русский язык

Если будет адекватная аудитория то я обязательно постараюсь увеличить количество направлений в лекциях, и приглашу знаменитых людей, таких как AlexRos, macron, malandrinus. Не уверен что они все согласятся, но многие не против поделиться опытом.

Так же буду рад если кто нибудь из сильных скриптеров тоже присоединится к нам. Чтобы дополнить или поправить материал.

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

Те, кто записался, приглашу за полчаса до начала к скайп конференцию.


Расписание:

29.06.12 21:00 - Основы скриптов (переменные, условия, циклы, функции, области видимости). Лектор: _Призрак_
07.07.12 20:00 - Основы скриптов (Повторение). Лектор: _Призрак_
08.07.12 20:00 - Логику игровых объектов (спавн НПС, установка логики). Лектор: ColR_iT
13.07.12 21:15 - Основы скриптов Лекция 3. Лектор: _Призрак_
14.07.12 20:00 - Логика игровых объектов (схемы поведения НПС). Лектор: ColR_iT

Объявление

Происходит запись на лекцию по скриптам, а так же на лекцию про логику
Сообщение отредактировал _Призрак_ - Пятница, 13.07.2012, 00:20
  Злобная реклама
Среда, 27.06.2012, 21:16
Статус:
Сообщений: 666
Регистрация: 12.02.2011
Российская Федерация  Michman
Суббота, 30.06.2012, 11:40 | Сообщение # 76
Статус:
Новичок:
Сообщений: 303
Награды: 2
Регистрация: 16.06.2011

1.5 - 2 часа достаточно. Тут я согласен с Colr_iT, если уделить время только заданной теме, то вполне достаточно получается.
  Злобная реклама
Суббота, 30.06.2012, 11:40
Статус:
Сообщений: 666
Регистрация: 16.06.2011
Российская Федерация  Скаут
Суббота, 30.06.2012, 12:43 | Сообщение # 77
Статус:
Опытный:
Сообщений: 2371
Награды: 4
Регистрация: 16.03.2011

Лекция мне понравилась. Буду ждать следующей.
Только есть одно "но". Где-то в середине лекции пошли примеры из S.T.A.L.K.E.R.'а. Это, конечно, интересно, но я этого ничего не понимал. Может быть что-то прояснялось, но я себя чувствовал "ежиком в тумане".
Начало лекции было самое то! smile
Да и ещё, хотелось бы, чтобы лектора не перебивали и не писали тупые посты в чат.
  Злобная реклама
Суббота, 30.06.2012, 12:43
Статус:
Сообщений: 666
Регистрация: 16.03.2011
Украина  BozKurt
Суббота, 30.06.2012, 13:09 | Сообщение # 78
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Скаут, если остались не понятные моменты в лекции - задавай вопросы, пока идёт подготовка ко второй, попытаемся закрыть пробелы первой.
  Злобная реклама
Суббота, 30.06.2012, 13:09
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  antonnkz76
Суббота, 30.06.2012, 13:14 | Сообщение # 79
5 лет в Зоне
Статус:
Опытный:
Сообщений: 2342
Награды: 9
Регистрация: 26.02.2012

Где брать названия переменных?
Ну то есть вот функция:
if i==1
then local b= "100"
end
То откуда брать переменную i , откуда скрипт будет знать что i это именно то нам нужно
Я вот например хочу, что если здоровье равно половине, то оно автоматически восстанавливается, как это провернуть? Ведь если я напишу i, скрипт вообще в душе не знает что за i и что она значит, как сделать так чтобы он знал(в принципе тут много лишнего текста, по другому не смог smile )
  Злобная реклама
Суббота, 30.06.2012, 13:14
Статус:
Сообщений: 666
Регистрация: 26.02.2012
Российская Федерация  SkyLoader
Суббота, 30.06.2012, 13:32 | Сообщение # 80
Статус:
Бывалый:
Сообщений: 1116
Награды: 12
Регистрация: 29.11.2010

antonnkz76, i - это некая внутренняя переменная, которая автоматически создается при создании цикла.

Если ты хочешь, чтобы здоровье восстановилось сразу же, то тут цикл не нужен. Можно просто проверить так:
Code
local zdorovie = db.actor.health
if zdorovie <= 0.5 then
db.actor.health = 1
end

Здоровье у игрока и неписей высчитывается в процентах, поэтому 100% = 1.
Почему я написал не db.actor:health(), а db.actor.health? Потому что у живых объектов в сталкере есть несколько параметров, и задавать и получать. (Объяснил по-легче)
Сообщение отредактировал SkyLoader - Суббота, 30.06.2012, 13:36
  Злобная реклама
Суббота, 30.06.2012, 13:32
Статус:
Сообщений: 666
Регистрация: 29.11.2010
Российская Федерация  antonnkz76
Суббота, 30.06.2012, 13:33 | Сообщение # 81
5 лет в Зоне
Статус:
Опытный:
Сообщений: 2342
Награды: 9
Регистрация: 26.02.2012

SkyLoader, аа, понял, то есть надо указывать то, чему равна переменная, ну спасибо)
  Злобная реклама
Суббота, 30.06.2012, 13:33
Статус:
Сообщений: 666
Регистрация: 26.02.2012
Российская Федерация  Michman
Суббота, 30.06.2012, 13:58 | Сообщение # 82
Статус:
Новичок:
Сообщений: 303
Награды: 2
Регистрация: 16.06.2011

Кстати чем-то некоторые простейшие функции в Lua похожи на паскалевские)
Вот вопрос по пунктуации, чем "==" отличается от "="? Что из этого где юзается?
  Злобная реклама
Суббота, 30.06.2012, 13:58
Статус:
Сообщений: 666
Регистрация: 16.06.2011
Украина  BozKurt
Суббота, 30.06.2012, 14:05 | Сообщение # 83
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Немного о цикле for.

В общем виде цикл for выглядит так:
Code
for i=1, 10, 2 do
      get_console():execute("i_равно_"..i)
end
Если осуществить некий перевод на русский язык, то это будет так:
Производить цикл для счётчика с именем i, равному 1, до тех пор пока i не станет равным 10, с шагом 2.
Т.е. если выводить, в примере вывод идёт в лог, значение счётчика, то в консоле мы увидим вот такое:
Code
i_равно_1
i_равно_3
i_равно_5
i_равно_7
i_равно_9

Некоторые параметры можно не указывать. Например последнее значение, которое обозначает на сколько будет увеличиваться i на следующем цикле, по умолчанию равно еденицы, т.е. вот такой код:
Code
for i=1, 10 do
      get_console():execute("i_равно_"..i)
end
Выведет в консоль все значения i от 1 до 10.

Можно осуществить цикл но в обратном порядке. Вот такой код:
Code
for k=5, 1, -1 do
      get_console():execute("k_равно_"..k)
end
Выведет в консоль вот такие строки:
Code
k_равно_5
k_равно_4
k_равно_3
k_равно_2
k_равно_1

Кстати, замете, что имя счётчика можно задавать любое.
Сообщение отредактировал ColR_iT - Суббота, 30.06.2012, 14:19
  Злобная реклама
Суббота, 30.06.2012, 14:05
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Украина  KDit
Суббота, 30.06.2012, 14:06 | Сообщение # 84
Статус:
Зевака:
Сообщений: 13
Награды: 0
Регистрация: 14.04.2012

"=" - операция присваивания, "==" - операция сравнения. В Паскале "=" ето оператор сравнения ...
  Злобная реклама
Суббота, 30.06.2012, 14:06
Статус:
Сообщений: 666
Регистрация: 14.04.2012
Украина  BozKurt
Суббота, 30.06.2012, 14:18 | Сообщение # 85
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Michman, разница между ними колоссальна.
"==" - это оператор сравнения "равно".
"=" - это оператор присваивания.

Оператор сравнения используется только в случае проверки двух значений на равенство. Например:
Code
local a = 1
local b = 1
local c = 2
if a == b then
      --# если "a" равно "b", то выполняется только эта часть кода.
else
      --# если "a" не равно "b", то выполняется уже только эта часть кода.
end
if a == c then
      --# если "a" равно "с", то выполняется только эта часть кода.
end
Как видно в примере, что в первом условии выполнится первая часть, потому как "а" равна "b". Второе же условие не сработает поскольку "a" меньше "с".

Оператор присваивания делает же совершенно другое. На том же примере выше.
Code
local a = 1
local c = 2
Здесь переменной "а" присваивается значение 1, а переменной "с" значение 2.
Оператор присваивания выполняет свои действия справа налево, т.е. в словесной форме вот такая запись:
Code
local a = 1
Читается так: Присвоить значение "единица" переменной "а".
Сообщение отредактировал ColR_iT - Суббота, 30.06.2012, 14:24
  Злобная реклама
Суббота, 30.06.2012, 14:18
Статус:
Сообщений: 666
Регистрация: 25.05.2012
  Earthworm-Jim
Суббота, 30.06.2012, 14:19 | Сообщение # 86
Статус:
Опытный:
Сообщений: 2561
Награды: 3
Регистрация: 01.01.2012

Без примеров на скриптах игры, ничего не понять. ИМХО dry
  Злобная реклама
Суббота, 30.06.2012, 14:19
Статус:
Сообщений: 666
Регистрация: 01.01.2012
Украина  BozKurt
Суббота, 30.06.2012, 14:27 | Сообщение # 87
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Earthworm-Jim, так ты пиши, что конкретно не понятно.
Сообщение отредактировал ColR_iT - Суббота, 30.06.2012, 14:27
  Злобная реклама
Суббота, 30.06.2012, 14:27
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  Michman
Суббота, 30.06.2012, 14:30 | Сообщение # 88
Статус:
Новичок:
Сообщений: 303
Награды: 2
Регистрация: 16.06.2011

ColR_iT, спасибо. И еще один вопрос по выражениям. Просматривая справочное руководство по Lua я не нашел массивов. Они есть не присутствуют или заменяются таблицей?
Сообщение отредактировал Michman - Суббота, 30.06.2012, 14:40
  Злобная реклама
Суббота, 30.06.2012, 14:30
Статус:
Сообщений: 666
Регистрация: 16.06.2011
  Earthworm-Jim
Суббота, 30.06.2012, 14:40 | Сообщение # 89
Статус:
Опытный:
Сообщений: 2561
Награды: 3
Регистрация: 01.01.2012

ColR_iT, а что я могу спросить, если я не скрптер? То что мне надо знать я прочитаю на сайтах о LUA.
  Злобная реклама
Суббота, 30.06.2012, 14:40
Статус:
Сообщений: 666
Регистрация: 01.01.2012
Украина  BozKurt
Суббота, 30.06.2012, 14:57 | Сообщение # 90
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Michman, как таковых массивов в Lua нет, их роль выполняют таблицы, причём смею заметить очень успешно. Таблицам думаю стоит уделить значимую часть одной из лекций, потому как в двух словах не объяснить.
В качестве массива также может выступать строка, но об этом быстро тоже не получится.
  Злобная реклама
Суббота, 30.06.2012, 14:57
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Поиск: