Цитата


Some переводs
#21
Отправлено 19 May 2016 - 22:18
#22
Отправлено 19 May 2016 - 22:20
Neray (19 May 2016 - 22:18) писал:
alexix (23 September 2017 - 18:39) писал:
#23
Отправлено 20 May 2016 - 04:51
Super-Derven (19 May 2016 - 21:27) писал:
Лучше бы написал частые ошибки и как их решить. А это даже с моим английским на 3 я осилил. И да непоследовательно же. То для себя говоришь только, то говоришь что для других. Дервин Цундере?
#25
Отправлено 20 May 2016 - 09:01
Onnyx (20 May 2016 - 07:34) писал:
А ещё выёбывается своим напряжённым школьным графиком, из-за которого не имеет возможности играть в игры.
Цитата
Я даже не понимаю, хули ты ко мне приебался. Чо, пермы не снимают, теперь на форуме на людей кидаешься?
Короче, старайся думать мозгом. Несешь дичь какую-то, обвиняешь меня в том, что я демонстрирую плоды своих трудов публике, хотя я это никогда и не отрицал, и даже не вижу ничего плохого в этом. Я считаю, что это лучше, чем держать их на локалке, обмазываться ими и дрочить, за что, судя по всему, ратуешь ты.
За все мое время на форуме я прошел путь от рисования спрайта отвертки до попытки в запил станции с нуля, скиллуху набил, и все это благодаря критике, которая шла извне. Обучился азам в программировании, пиксельарте, и некоторым другим вещам. Разве это плохо?
Zanytsin14 (20 May 2016 - 04:51) писал:
alexix (23 September 2017 - 18:39) писал:
#26
#28
Отправлено 20 May 2016 - 13:50
Super-Derven (20 May 2016 - 09:01) писал:
Super-Derven (20 May 2016 - 09:01) писал:
Super-Derven (20 May 2016 - 09:01) писал:
Super-Derven (20 May 2016 - 09:01) писал:
Это очень хорошо. Просто было бы уместным быть несколько скромнее.
#29
Отправлено 20 May 2016 - 15:17
Onnyx (20 May 2016 - 13:50) писал:
Цитата
Цитата
Цитата
alexix (23 September 2017 - 18:39) писал:
#31
Отправлено 20 May 2016 - 18:14
EnoughConcrete (20 May 2016 - 17:12) писал:
Super-Derven (20 May 2016 - 15:17) писал:
Затягивать срач с дурачком мне не надо, просто попросил пыл умерить немного, это для тебя полезно будет.
#32
Отправлено 20 May 2016 - 18:47
Onnyx (20 May 2016 - 18:14) писал:
Затягивать срач с дурачком мне не надо, просто попросил пыл умерить немного, это для тебя полезно будет.
Сириусли, то, что у тебя горит жопа с нихуя - твое личное дело, ты не центр вселенной.
alexix (23 September 2017 - 18:39) писал:
#35
Отправлено 20 May 2016 - 20:46
Этот учебник познакомит нас с созданием простых систем левелинга путем добавления переменных и процедур.
Если вы еще не прочли %ссылка на вторую часть% мы рекомендуем сначала ознакомиться с ним. Или, %ссылка на первый урок%, если вы совсем новичок.
Переменные!
Переменные используются, чтобы хранить данные. Они могут хранить числа, текст, списки и даже обращения к
игрокам или другим объектам.
Шаг 1.1 Начнем, сначала создадим код-файл в нашем проекте и назовем его "Vars.dm"
Шаг 1.2 Добавим следующий код:
http://pastebin.com/SJe18nQW
Здесь мы создаем 3 новых переменных для всех объектов типа /mob. Включая нашего моба игрока mob/Player, потому как это дочерний подтип от /mob; /mob/Player.
"Level" будет хранить информацию о уровне, на котором находится игрок, и начнется наш отчет с 1.
"Exp" - сколько опыта мы имеем на данный момент, начальное значение 0.
И "Nexp" - сколько нужно опыта, чтобы перейти на новый уровень, в данном случае это значение равно 100.
Процедуры!
В следующей части мы создадим нашу первую процедуру или "proc".
Процедура во многом похожа на verb (мы разобрали это на прошлом уроке), за исключением того, что может быть вызвана только через код.
Шаг 2.1 Создадим новый код-файл в нашем проекте и назовем его "Procs.dm"
Шаг 2.2 Добавим следующий код:
http://pastebin.com/uR3RvXG5
Во-первых, обратите внимание на тот важный факт, что мы используем "src", а не "usr".
В некоторых случаях usr и src могу быть похожи, но вам почти всегда необходимо использовать src, а не usr.
Далее разберем построчно:
"mob/proc/LevelCheck()" - новая процедура для моба, которая называется LevelCheck.
"if(src.Exp>=src.Nexp)" - проверяет, больше ли или равно Exp Nexp.
Все остальное, это то, что по табам дальше нашего условия и будет выполняться в зависимости от него.
"src.Exp=0" - сбрасывает src's Exp на 0 для следующего уровня.
"src.Nexp+=10" - Увеличивает необходимый опыт для получения уровня с каждым новым.
"src.Level+=1" - Увеличивает уровень.
"src<<"You are now Level [src.Level]" - Уведомляет нас о том, что наш уровень увеличился.
* Источник(src) обозначает здесь нашего Игрока, но также вы можете использовать эту же процедуру и для левелинга врагов или других NPC, если вам нужно.
Сейчас нам нужно увидеть нашу работу.
Мы не имеем пока рабочую систему боя, потому на скорую руку сделаем verb для теста, который будет добавлять нам опыт.
Шаг 2.3 Добавим следующий код:
http://pastebin.com/AaRwtAPq
Это простой тестовый verb, который вы можете убирать в случае ненадобности.
Он дает 100 опыта игроку и из него вызывается наша процедура LevelCheck().
Дополним!
В конце-концов, мы сделаем отображение нашей переменной Level из Who verb'a.
Шаг 3.1 Находим и открываем "Verbs.dm"
Шаг 3.2 Изменяем наш код:
http://pastebin.com/MYffGUHb
Теперь добавлено отображение "([M.Level]) ", что будет указывать нам на уровень игрока перед его именем.
alexix (23 September 2017 - 18:39) писал:
#36
Отправлено 21 May 2016 - 14:46

Покажет же только созданную моботу. И тех, кто оффлайн.
Цитата
dm-startup.sh - для удобного запуска билдосиков
#37
Отправлено 21 May 2016 - 18:44
sasichkamega (21 May 2016 - 14:46) писал:

Покажет же только созданную моботу. И тех, кто оффлайн.
Дело в том, что:
mob Logout() world<<"[src] has Logged Out" del src
При выходе из игры у нас моб удаляется. Это из первой части.
alexix (23 September 2017 - 18:39) писал:
#38
Отправлено 21 May 2016 - 19:16
Super-Derven (21 May 2016 - 18:44) писал:
Цитата
dm-startup.sh - для удобного запуска билдосиков
#39
Отправлено 22 May 2016 - 22:45
Этот учебник покажет простой путь показать игрокам их характеристики на специальной панели характеристик.
Если вы не читали %ссылка на третий урок%, то мы рекомендуем вам это сделать. Ну а если вы совсем
новичок, то %ссылка на первый урок%.
Характеристики!
Используя процедуру Stat() вы можете быстро и легко показать игроку некоторую информацию.
Шаг 1.1 Сперва добавим некоторые характеристики в файл "Vars.dm".
http://pastebin.com/P4UNsTvL
Эти характеристики будут довольно наглядны.
Здесь мы создали для ваших мобов здоровье, силу и защиту, и присвоили начальные значения этим
характеристикам.
Шаг 1.2 Сейчас создадим новый код-файл под названием "StatPanel.dm" и добавим туда следующий код:
http://pastebin.com/9PGU9tan
Stat() - встроенная в ДМ(дрим мейкер) процедура, которая может быть использована для того, чтобы
показывать информацию в специальной вкладке.
Stat() автоматически вызывается каждый 8-ой тик, или каждые 8/10 секунд, в этих промежутках информация и
будет обновляться.
statpanel() и stat() также встроены, и используются для того, чтобы оформлять показ наших данных.
Шаг 1.3 Вы также можете показывать несколько вкладок, если вам это нужно.
http://pastebin.com/vq4yD4kq
Не очень много, но это подверждает вышесказанные слова.
Дополним!
Мы добавили некоторые переменные, чтобы отобразить здоровье, силу и защиту; сейчас сделаем увеличение
наших характеристик с уровнем.
Шаг 2.1 Меняем некоторый код на следующий в "Procs.dm"
http://pastebin.com/rgkegQ2A
Мы добавили три строки кода, по одной на каждую характеристику.
MaxHP увеличивается случайно, целое значение в пределах от 1 до 5.
Str и Def увеличивается на 1.
Если вам нужно восполнение здоровья при новом уровне, используйте что-то вроде этого:
"src.HP=src.MaxHP" после добавления MaxHP
alexix (23 September 2017 - 18:39) писал:
#40
Отправлено 26 May 2016 - 23:29
Сейчас у нас есть некоторые характеристики и мы можем изменять свой уровень, теперь же нам нужно сохранять своего персонажа.
Если вы не читали %ссылка на четвертую часть%, то вам следует это сделать. Если же вы совсем новичок, то %ссылка на первую часть%
Сохранения!
Сперва мы создадим процедуру Save, и сделаем её так, чтобы игроки сохранялись автоматически и без мандража.
Шаг 1.1 Во-первых мы создадим код-файл под названием Save.dm, и добавим туда следующий код:
http://pastebin.com/66n0NRqK
Мы уже создавали процедуры, потому первая строка должна быть вам знакомой.
Следующая строка объявляет переменную, которая послужит именем файла. ckey() - встроенная процедура которая избавляет нас от ненужных вещей, к примеру пробелов.
После этого нам нужно проверить, существует ли такой файл, если да, то удалим его. Это необоходимо в первую очередь для того, чтобы обновить наши сохранения.
fexists() - встроенная процедура которая и делает эту проверку. fdel() также встроенна, и она может удалить файл.
Следующая строка создает переменную типа savefile и дает ей имя F.
Следующие строки обращаются в каталог F и выводят туда данные. Оператор вывод должен выглядеть вам знакомым, мы пользовались им для отправки сообщений.
Таким образом мы создали строки для каждой хуйни, которую мы хотим сохранить. В этом случае, все созданные нами переменные. Также нам нужно сохранить место игрока на карте.
Шаг 1.2 Сделаем так, чтобы игроки всегда(и автоматически) сохранялись при вызове процедуры Logout(). Её
мы можем найти в файле Main.dm
http://pastebin.com/RsDfG71M
Тут лишь одна новая строка кода, вызов процедуры, которую мы написали выше. Сохранение игрока автоматически при выходе из игры.
Шаг 1.3 Мы должны, очевидно, дать игрокам возможность вручную сохраняться, иначе мы конченные ублюдки!
Этот простой код может быть добавлен в Verbs.dm
http://pastebin.com/TAakL9wK
Загрузка!
На очереди загрузка. Это покажет, как хорошо работает наше сохранение.
Шаг 2.1 Мы добавим процедуру LoadProc() в Save.dm, чуть пониже SaveProc()
http://pastebin.com/0Lxhg2tn
Как вы можете видеть, это очень похоже на SaveProc(). Но все равно есть некоторые различия.
На сей раз по табуляции под fexists(). Это способ выполнять все только в случае если файл есть.
Также нам здесь не нужно удалять файл. Несмотря на то, что мы создали переменную типа savefile.
Мы по-прежнему обращаемся в каталог с сохранением, мы устанавливаем для встроенной переменной loc наше
значение. Мы также используем встроенную процедуру locate(). Мы также обращаемся к значениям savefile переменной.
Далее следует сообщение игроку о том, что он загрузился.
В итоге, мы возвращаем 1("return 1") внутри if(). Если файла не существует, то эта процедура вернет ноль
(возвращает ноль по умолчанию). Используя return мы оканчиваем процедуру или verb. Это также может быть использовано, чтобы возвращать значения, в данном случае 1. Я включил пример в конце для лучшего понимания.
Шаг 2.2 Сейчас нам нужно загрузиться. Мы сделаем это при входе в игру. Процедура Login() может быть
найдена в Main.dm
http://pastebin.com/pKQPGvbf
Сейчас при входе в игру мы используем LoadProc(), внутри if(). Когда эта шняга возвращает 1 - файл есть, это будет true(1) если вы действительны загрузились, и мы скажем серверу о том, что игрок вернулся.
В противном случае при выполнение LoadProc вернет ноль, false(0) для if(), и следовательно выполнение
пойдет по ветви else. Внутри esle наш старый код вхождения в игру.
return!
Быстрый пример как мы можем использовать return
http://pastebin.com/FNcV4RKp
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных