На сайте 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
Поскольку вопрос остался не отвеченным, попробую объяснить. Все функции могут либо возвращать какое-либо значение, и даже не одно, либо не возвращать ничего, например, напишем и разберём функцию, которая возводит в квадрат получаемое значение:
Code
function square_number (number) local square = number*number return square end
Ничего сложного здесь нет. В функцию передаётся исходное число number. Затем квадрат этого числа присваивается локальной переменной square (доступна эта переменная только внутри "тела" функции) и эта переменная возвращается из функции. Небольшое "лирическое отступление":
Что означает "возвращает"? Движок игры выполняет какую-то часть кода и ему встречается вызов какой-то функции, например ту, что написали мы:
Code
local new_number = square_number(3)
что он делает, он приостанавливает выполнение кода, который он делал, переключается на нашу функцию, смотрит какие параметры были переданы в неё, для её правильной работы, выполняет код в "теле" функции и возвращает какой-то результат и присваивает его переменной new_number. После этого движок продолжает выполнять код, который идёт за вызовом нашей функции, т.е. продолжает он с того места где остановился. Так вот "возвращает", это по сути значит нахождение квадрата и результат этот передаётся в основной код (который выполнял движок, до того как встретил нашу функцию), а именно в переменную new_number.
Бывают случаи, когда функция возвращает не одно, а несколько значений, как например функция, которую мы использовали в скрипте на лекции:
Code
global_time:get()
, фунеция get, не одно, а целых семь значений, конкретно вот таких: год, месяц, день, час, минута, секунда, миллисекунда. Помните в начале лекции _Призрак_ рассказывал о способе присвоения значения в одну строчку:
Code
local a, b= 5, 1
так вот для того, чтобы определить количество часов при помощи функции get, нужно как минимум создать четыре переменные и присвоить им результат этой функции, что мы и сделали:
Code
local y,m,d,h,min,sec,ms = global_time:get()
Сообщение отредактировал ColR_iT - Воскресенье, 08.07.2012, 03:21
Люди, можно вас попросить сделать с сегодняшней лекции аудиозапись и выложить (у меня нет жестоко тупит, до 32кбит/сек. вчера дольше соединение с конфой дольше 20 сек не держалось, выкидывало из нее, сегодня так же будет ).
SkyLoader Мой пример показывает решение задачи способом, не имеющем ничего общего с классом скиптёра. Простая логика. Школьный уровень. Главное правильно построить алгоритм решения. Большинство людей привыкли делать так как все, не задумываясь о том, что можно ведь и по-другому.