[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
Результаты поиска
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Продлил! Всем спасибо! На счёте около 60 рублей осталось)

Quote
Уважаемый 153866884075!

Домен w4tweaks.ru был успешно продлён на срок 1 лет.
Новый срок окончания делегирования: 2011-11-01.

Информация о сроках делегирования домена
в базе WHOIS будет обновлена в течение суток.



________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Рекламы не будет.
Довольствуйтесь её отсутствием.
Продление домена = 120(или 180 рублей.. хз), что не очень много.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Большую часть моих мыслей выразил Фирсачо)
Времени у меня реально нет на сайт - с этим смиритесь!

И Фирсачо прав - интерес к сайту прямо пропорционален числу активных качественных законченных модов и обратно пропорционален количеству флуда. Отсюда вывод - меньше флудите(на что и направлены правила), развивайте свои таланты в изменении червяков - и сайт оживёт, поверьте!

P.S. а ещё внушите это каждому посетителю сайта)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Да, с помощью Lua скриптов создавать взрывы в заданных местах карты по какому-либо событию - таймер/новый ход

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Глупая идея внезапно возникла - сделать червю шапку - презерватив) или полностью его всунуть в него)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Чтобы с основами lua разобраться почитай http://w4tweaks.ru/forum/90
Тут 3 файла для расстановки червей: http://w4tweaks.ru/forum/51-155-1#link1
Изучи их (карту с эмиторами - в редакторе карт, а скрипт в текстовом редакторе - сравни с исходным)

Вот тут конкретно про подключение скрипта к карте можно узнать http://w4tweaks.ru/forum/90-28-1


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Повысил Sergey до модератора и назначил его модератором раздела W4Challenge.
Поздравляем нового модератора с его повышением! =)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Неплохая работа, продолжай в том же духе)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
По поводу Brainfuck - одна из моих первых программ на C# была интерепретатором брейнфака)
Даже попробовал сделать бой в памяти 2-х бегущих навстречу программ =)
P.S. C# - один из последних изученных мною языков..

Присоединяюсь к Lex-у в их споре с firsacho по поводу необходимости таких явлений как брейнфак.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Хочу ещё раз предложить вам использовать систему контроля версий, SVN к примеру.
Разработку стало бы легче контролировать, все ваши промежуточные идеи хранились бы и весь мод был бы в центральном хранилище.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Кто хочет продолжения уроков? У меня есть настроение немного ими заняться)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Этим я займусь лишь при большом желании и наличии какого-либо времени. Сейчас я спрашиваю более конкретно - следующий урок кому-нибудь нужен?

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Попробуй начать с луа, тогда можно будет и паскаль выучить, разницы нет) они все похожие.

Пройди мои уроки с первого по пятый, если будут вопросы, задавай.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
О, SW_Krash, привет) тогда будет ;)
Только сомневаюсь, что сумею сохранить свой прежний стиль изложения уроков.. И надеюсь вспомню всё, что хотел рассказать.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
30% урока о функциях готово..

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Итак, на данный момент мы уже умеем работать с переменными и знаем, что у них есть типы (nil, boolean, number, string, function, userdata, thread, table).
В прошлом уроке мы узнали, что такое таблицы (table), и узнали пару функций для работы с ними.
Первые четыре типа мы уже знаем из третьего урока.
Единственный тип, о котором я ещё вам не рассказал, но хочу - это функция(function).

Страшное пожалуй название "функция"... Но вы не пугайтесь, это всего лишь название =)
Я не буду рассказывать, что такое функция в математике(всякие там параболы и синусы), сдались они нам сейчас?
Скажу лучше, что это.
Функция в lua - это какая-то последовательность действий, у которой есть своё название.
Не воспринимайте это, как точное определение.

Представьте, что перед нами стоит задача написать на экране сумму, разность, произведение и частное двух чисел a и b. Её можно решить очень просто:

Code
a = 10
b = 2
print(a + b)
print(a - b)
print(a * b)
print(a / b)

Теперь вдруг кроме чисел a и b надо написать то же самое для чисел c и d. Решаем аналогично

Code
c = 5
d = 7
a = 10
b = 2

print(a + b)
print(a - b)
print(a * b)
print(a / b)

print(c + d)
print(c - d)
print(c * d)
print(c / d)

А теперь вдруг понадобилось сделать это для a и b, для a и c, для a и d, для b и c, для b и d, для c и d.
Пересилю свою лень и напишу решение:

Code
a = 10
b = 2
c = 5
d = 7

print(a + b)
print(a - b)
print(a * b)
print(a / b)

print(a + c)
print(a - c)
print(a * c)
print(a / c)

print(a + d)
print(a - d)
print(a * d)
print(a / d)

print(b + c)
print(b - c)
print(b * c)
print(b / c)

print(b + d)
print(b - d)
print(b * d)
print(b / d)

print(c + d)
print(c - d)
print(c * d)
print(c / d)

Страшно, не правда ли? Если бы приходилось писать так много кода, программирование было бы самым тупым и занудным занятием в мире. Но для таких лентяев, как я, то есть для программистов, придумали функции.

Покажу на примере, как они облегчат жизнь:

Code
function arifmetika(x, y)
   print(x + y)
   print(x - y)
   print(x * y)
   print(x / y)
end

a = 10
b = 2
c = 5
d = 7

arifmetika(a, b)
arifmetika(a, c)
arifmetika(a, d)
arifmetika(b, c)
arifmetika(b, d)
arifmetika(c, d)

Отлично выглядит по сравнению с прошлым кодом? А делает те же действия)

Всё легко - мы взяли и назвали 4 строчки кода словом арифметика, а потом вместо дублирования этих строк кода поставили их имя.

Теперь более формально. Функция описывается вот так:

Code
function имя_функции(параметры_через_запятую)
   код_функции
end

После того, как функция описана, можно её вызывать, то есть писать arifmetika(a, b), подставляя в неё параметры.
При этом выполнится код функции, с учётом, что вместо x подставлено значение a, то есть 10, а вместо y подставлено значение b, то есть 2.

Надеюсь это хороший пример и его достаточно, чтобы понять, что такое функция.

Есть ещё одна важная вещь - функция может возвращать какой-либо результат.
В самом простом случае это может быть математическое выражение.
Вот пример знакомой всем из математики параболы:

Code
function parabola(x)
   return 2*x^2+3*x+8
end

y = parabola(2)
print(y)

Этот код выведет на экран число 22.
Всё очень просто: наша Функция вернула 22 наружу и это значение записалось в y.

Чтобы вернуть результат функции используется слово return c возвращаемым значением.
При этом функция завершает свою работу.
Если значение отсутствует, то функция просто завершает свою работу.

Пример:

Code
function test()
   print(1)
   return
   print(2)
end

test()

На экран будет выведено только 1, потому что до строки print(2) выполнение не дойдёт.

Важно, что функция может возвращать что угодно, то есть любой тип данных lua - число, строку, логическое значение, таблицу и даже функцию (но о последнем мы поговорим попозже).
Вот пример функции, которая возвращает строку

Функция, возвращающая строку. Примимает на вход час, минуту и секунду, а возвращает понятную человеку текстовую строчку

Code
function format_time(h,m,s)
   return h..":"..m..":"..s;
end

print(format_time(10,12,48))

Эта функция распечатает на экране 10:12:48.

В lua есть чудесная возможность - писать в одной строке сразу два присваивания, смотрите:

Code
a, b = 2, 3

print(a)
print(b)

Пример выведет сначала 2, потом 3. В первой строке мы присвоили a первое значение, то есть 2, а переменной b - второе, то есть 3.
Можно писать после равно не только числа но и любые значения или переменные, в частности это можно использовать, чтобы обменять два значения:

Code
a, b = 2, 3

print(a)
print(b)

a, b = b, a

print(a)
print(b)

Тут выведется сначала 2 и 3, а потом, после обмена 3 и 2. Удобно..)

К чему я это всё? А к тому, что функция может возвращать не одно, а 2 значения, смотрите:

Code
function test()
   return 2, 3
end

a, b = test()

print(a)
print(b)

Результат примера аналогичен первому.

А это можно использовать, чтобы вычислить сразу 2 функции с помощью одной:

Code
function sincos(x)
   return math.sin(x), math.cos(x)
end

s, c = sincos(1.2)

print(s)
print(c)

Тут переменная s станет синусом 1.2, а переменная c - косинусом 1.2

Так, теперь ещё одна особенность работы с функциями.
Посмотрите на этот код:

Code
function test()
   a = 10
   b = 20
   return a + b
end

a = 15
b = 22

print(a)
print(b)

print(test())

print(a)
print(b)

Пример напечатает:

Code
15
22
30
10
20

Как видите, после работы функции test переменные a и b снаружи функции изменились.
Это называют Функцией с обратным эффектом. То есть функция возвращает какое-то значение (a + b), но снаружи при этом что-то ещё меняется.
Иногда это делать не надо. В данном примере, чтобы найти сумму 10 и 20 нам не надо использовать внешние переменные.
Поэтому придумали локальные переменные, которые видны только внутри функции.
Объявляется локальная переменная так же как и обычная, но с ключевым словом local:

Code
function test()
   local a = 10
   local b = 20
   return a + b
end

a = 15
b = 22

print(a)
print(b)

print(test())

print(a)
print(b)

В этом примере внешние переменные a и b не изменятся, и на экране появится

Code
15
22
30
15
22

Отлично, с этим разобрались.

Теперь немного посложнее. Помните список типов переменных lua? Один из них function.
Что же это значит? А это значит, что в переменной мы можем хранить функцию!
Смотрите, сейчас переделаю прошлый пример:

Code
function sincos(x)
   return math.sin(x), math.cos(x)
end

sc = sincos

s, c = sc(1.2)

print(s)
print(c)

Тут в переменную sc я записал функцию sincos.
Важно, что записи sc = sincos и sc = sincos() означают разное.
Первая запись - это записать в sc функцию sincos, вторая значит вызвать sincos() без параметров и записать в sc результат. Не путайте!

Если написать в последнем примере print(type(sc)), то на экране будет выведено слово function.
Это значит, что у sc тип данных function. Во как)

А что, если попробовать написать print(type(sincos))? Мы получим тот же результат - тип function.
Интересно, что же это получается, sincos - это переменная, которая хранит функцию? Да это так.

Поэтому функции можно объявлять другим способом, смотрите:

Code
test = function(x)
   return x
end

print(test(2))

Этот пример абсолютно идентичен такому:

Code
function test(x)
   return x
end

print(test(2))

Вот так.

А теперь давайте подумаем.
1) В lua есть тип переменных function.
2) В любой функции можно объявить локальную переменную

Так почему бы не объявить локальную функцию? Это можно сделать и очень даже не сложно, смотрите:

Code
function f(x, a, b, c)
   local function parabola(x)
    return a*x^2 + b*x+ c
   end
     
   return parabola(x)
end

print(f(2, 1, 2, 3))

Внутри функции f объявлена локальная Функция parabola, которая принимает на вход x. Так как она объявлена внутри функции f она знает числа a, b и c и может их использовать Для вычисления формулы.

С точки зрения программирования это красиво =) У всех людей нормальное представление о красоте, а у программистов такое вот....

Напоследок ещё раз напряжём мозги:
1) В lua есть тип переменных function.
2) Из функции можно возвращать любой тип данных, в том числе и function

Попробуем вернуть из функции функцию:

Code
function parabola(a, b, c)
   return function(x)
    return a*x^2 + b*x+ c
   end
end

f = parabola(1, 2, 3)

print(f(2))

Тут на выходе мы получаем функцию от x, которую потом мы можем использовать сколько угодно раз.

Надеюсь после прочтения всего этого вы не повредели свои мозги)))

Ну и самое последнее - в функциях не было бы смысла, если бы разработчики lua не сделали бы нам прилично много готовых функций для решения разнообразных задач.
Вы уже видели в прошлом уроке функции для работы с таблицами.
Как правило, все их функции орагнизованы в модули, к примеру модуль math - для работы с математикой, модуль table - для работы с таблицами, string - для строк и т.д.
И как вы наверно уже видели, вызов функции выглядит так:

Code
math.sin(10)

Похоже на таблицы, правда?

Всё дело в том, что в таблице можно хранить любые значения, в том числе и функции, поэтому можно писать так:

Code
my_module = {}
my_module.do_something = function()
   print("chto-to delaem")
end

my_module.do_something()

Это удобно для организации всех ваших функций в один модуль.



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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Выложил новый урок! Читайте!

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Есть такой вот мануальчик Основы Lua, который я когда-то создал.
Советую его почитать...

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

4erver: рили годный мануал, добавил mht копию, если вдруг вики упадет
Прикрепления: _Lua__W3d.mht (222.6 Kb)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Зачем тебе нужен перехват захода на сервер? 2
Оптимально отдельный загрузчик перед стартом игры.

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

При этом есть некий глобальный сервер, к примеру example.com, на нём находтся php скрипт, который возвращает xml-ку со списком модов и где их можно загрузить + краткое описание + md5 + возможно, список зеркал.
Ещё можно возвращать список подобных ему сайтов, где можно раздобыть такой вот список.

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

На чём собираешься писать? Если на C#, плюсах или java - могу немного помочь, если будет желание.
Сразу делай хранилище либо в SVN, либо в git, или не буду помогать ;)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
По данной теме попробуйте вот эти проги
http://w4tweaks.ru/load/w4tweakgen/4-1-0-481
Описание: http://w4tweaks.ru/forum/80-696-1
Некоторые примеры использования: http://w4tweaks.ru/load/0-0-1-0-17


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Поиск: