PDA

Просмотр полной версии : [Вопрос] Чем вас привлек Pawn



Иван Бубнов
14.02.2016, 20:40
Всем привет. Недавно в чате, пользователь Profyan (http://pro-pawn.ru/member.php?2354-Profyan) задал вопрос:


Чем вас привлек Pawn,что вы все до сих пор им пользуетесь?(Тем,у кого нет проектов)

Далее вроде-бы собирался создать тему в этом разделе, но так-и не решился.

В общем, пишите сюда :grafon:

jeraqiv
14.02.2016, 21:18
Люди делятся на два лагеря. Одни люди учат язык программирования с целью научиться владеть им до уровня частиц, другие-же изучают его чтобы что-то сделать и оно работало. Я отношу себя к первой категории и для меня интересно изучать программирование используя этот язык. Дело в том что он не слишком огромен, и область применения меня удовлетворяет. Кроме использования каких-нибудь готовых библиотек для разработки игровых модификаций можно создавать собственные модули и радовать других свой разработкой.

$continue$
14.02.2016, 21:40
http://risovach.ru/upload/2013/05/mem/dima_18686102_orig_.jpeg


область применения меня удовлетворяет

Иван Бубнов
14.02.2016, 22:15
А я то это ну это самое в общем то да все понятно же

jeraqiv
14.02.2016, 22:23
http://risovach.ru/upload/2013/05/mem/dima_18686102_orig_.jpeg


Что вас смутило в этом предложении?

Desulaid
14.02.2016, 22:27
http://risovach.ru/upload/2013/05/mem/dima_18686102_orig_.jpeg


Да хватит сравнивать несравнимое! Да-да, я про Pawn и C++ :dash2:

Мне понравился ответ Gecriq, но я отношу себя ко второму лагерю. Мне мне не особо интересно, что сколько кушает, какая затрата ресурсов идет на выполнение различных сценариев и т.д. Не всегда. Но все же для меня как такого непрофессионала привлекает в Pawn то, что не нужно устанавливать какой-либо софт, чтобы начинать программировать, все что тебе понадобится - лежит в папке pawno. Антипример - Java, чтобы начать там кодить, ты должен скачать JDK, а он весит 180 Мб с копейками, вроде бы и все, но там тебе понадобится хорошая IDE, ведь гадать с расположением элементов на GUI никому не хочется, а это еще примерно столько же Мб (Intellij IDEA 230 :negative: ... урезанная к тому же). А еще всякая настройка самой JDK, что очень укорачивается рвение начать кодить.
Язык же сам по себе в основном простой, по сравнению с другими ЯП, нет ничего лишнего, так и нет важного (динамика отсутствует, отсутствуют и типы данных, есть только синтаксический сахар - теги; ООП вам не видать, хотя, говорят, что в новой версии Pawn оно есть. Эти минусы для многих абсурдны, так как все это не очень обязательно).
Некоторые ограничения языка или "плюхи" от Куя могут заставить подумать на каким-нибудь алгоритмом, например - ZCMD.

Есть еще интересная статья на "Типичном скриптере", советую почитать (тычь по ссылке) (https://vk.com/ts_samp?w=page-58723216_51980308), мне понравилась :3

Еще можно добавить, что школьники могут повыпендриваться, что те программируют на Pawn


https://pp.vk.me/c613423/v613423949/9b9b/grxis_zymoY.jpg

$continue$
14.02.2016, 23:14
А кто сказал, что Pawn сравним с C++?
Абсурд, не более. Действительно, в SourcePawn, похоже, что то на ООП есть. (https://wiki.alliedmods.net/SourcePawn_Transitional_Syntax#Methodmaps)
Больше, скажу - там даже похоже, что динамическое выделение памяти - есть. Pawn можно сравнивать: Python/Lua/Squirrel - и везде (ну или почти везде, привет синтаксису Python :negative:), Pawn проигрывает. На счёт того, что можно сразу начать писать программный код, ну и что? (Я про установку дополнительного софта), как там Linux, GCC, Atom, текстовые редакторы от DE, нормально живут?
Я к тому, что в C++ можно тоже так же программировать, ПОЧТИ (https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80), без дополнительных скачиваний софта.
Что, касается создания GUI - есть много софта для этого дела. Примером тому является Glade (https://ru.wikipedia.org/wiki/Glade)


А теперь по теме:
Учился я в 6 (ну или 7, уже точно не помню) классе, в то время с другом искали во что можно по играть совместно, наткнулись на SA-MP ну и начали играть на Advance. Где то через 5 месяцев - я узнал, что можно создавать свой сервера с помощью языка - Pawn. Тогда я не читал литературу по языкам программирования. Учился по урокам (если, честно, не многому и научился), где то около года, а то и больше сидел на ГИ - инфо, там я многому не научился. В то время я часто задавал вопросы в Skype. В частности это был Dron_Turbo(нынешней bredvix (http://pro-pawn.ru/member.php?1937-bredvix)). Как то раз я его попросил, мне помочь - он сказал, что больше не помогает пользователям ГИ - инфо и что бы я регистрировался за помощью на Pro-Pawn.ru. Тут то и началась целая история, очень много вопрос я задавал, почти по всем система (даже по самым простым). Учился писать код - как мог. Честно говоря держал 2 сервера: Liberty Gang War (80+ онлайн) и Inspire Death Match (50+ онлайн). Если сейчас открыть тот код - я понимаю, что там говнокод. Сейчас я уже не пишу на Pawn - нет перспективы да и зачем? Куда лучше писать на Lua под MTA (Функционал больше, язык лучше, частые обновления, багофиксы), это совет начинающим скриптерам в SA-MP. Программирования меня затянуло, настолько глубоко, что не представляю, чем бы я сейчас занимался. На данный момент изучаю С++, учусь на программиста, честно говоря, ожидал большего от техникума, зачем мне Ваша Delphi/Visual Basic?. Нет, смысла изучать Pawn, переходя на тот же C++, придется переучиваться.

Я очень благодарен: DeimoS (ну ты это давай *********), Londlem, Daniel Cortez, cпасибо за то, что Вы помогали при обучении.

Воооооооооооооооооооооооооооооооооооооооооооооооот

Desulaid
14.02.2016, 23:28
Никога еще не читал такого текста с перескоками на темы :))

Не по теме:

Если брать пингвинукс, то тебе качать ничего не надо, Python2 и 3, Java и GCC там есть в комплекте. Но это не относится к Window-юзерам, там изволь скачать сам.
Гораздо удобнее, чтобы все было в одном месте, не так ли? :blush:


По теме:
Тебе дали удочку, но ты ее променял на динамит, улова же больше ... Можно же взять как пример RakNet, они вполне пилили годные обновы, отличное применение TD было, чего только стоит их инвентарь. Но тебе не хватит скилла, чтобы сделать подобное, рили же сложно. :victory: Что я и говорил, все это заставит тебя думать над алгоритмом. :victory::victory:

$continue$
14.02.2016, 23:44
Linux - для разработчиков, Windows - для геймеров.


Если брать пингвинукс, то тебе качать ничего не надо, Python2 и 3, Java и GCC там есть в комплекте. Но это не относится к Window-юзерам, там изволь скачать сам.

Daniel_Cortez
15.02.2016, 11:19
Linux - для разработчиков, Windows - для геймеров.
Скажи это гейбену с его Steam Machines (https://ru.wikipedia.org/wiki/Steam_Machines).


По теме: пожалуй, тоже отвечу, поскольку никакого проекта на Pawn, приносящего доход, у меня нет.

Я начал изучение Pawn 3 года назад и у меня до сих пор нет однозначного впечатления об этом языке, поскольку у него и плюсов, и минусов примерно поровну.
Можно отметить следующие достоинства:
Простота языка (он с самого начала был ориентирован на нубов).
Сравнительно небольшое потребление ресурсов.
Язык весьма хакабелен (не совсем уверен, но надеюсь, что адекватно перевёл слово "hackable").
Многие проблемы, которые нельзя решить стандартными средствами языка, решаются с помощью #emit. Тот же вызов функций по указателям, например.
Интерпретатор написан на C (причём на диалекте 89-го года) и может быть портирован практически на любую платформу.
Простота встраивания интерпретатора в свои проекты.

Тем не менее, в Pawn почти во всех аспектах можно встретиться с теми или иными ограничениями:
Язык просто не создан для больших проектов, в нём нет никакой модульности.
Весь проект компилируется только в одну программную единицу, нельзя разбить проект на несколько отдельных единиц, как в C/C++. Лучшее, что можно сделать - разве что разбить проект на инклуды.
Но тогда если изменить содержимое только одного из этих инклудов, придётся ждать, пока заново скомпилируется весь проект.
Мало того, из-за такого подхода глобальное пространство имён будет засоряться названиями функций, переменных, констант и макросов, которые кроме одного инклуда больше нигде не пригодятся, да ещё и могут привести к конфликту имён, если имена в нескольких инклудах совпадают (чтобы предотвратить такие конфликты, придётся напичкивать все имена в инклудах уникальными префиксами).
Нельзя сделать даже хоть что-то похожее на объектно-ориентированное программирование. Всё упирается в процедурный подход.
Разве что есть возможность сделать перечисление (enum), на его основе создать массив, в нужные поля структуры записать адреса функций и вызывать получившиеся "методы" по их адресам с помощью трюка с #emit sctrl 6.
Причём делать это каждый раз через #emit не иначе, как извращение, придётся использовать отдельные функции... для вызова других функций.
В общем, получается один большой костыль, и не факт, что он будет правильно работать на всех платформах.
И это ещё цветочки по сравнению с костылями для наследования и полиморфизма.
Нет никакой возможности для динамической аллокации памяти.
Чтобы добавить в Pawn эту возможность, придётся делать своё дополнение, из которого регистрировать свои нативные функции для аллокации и высвобождения участков памяти.
Но данные из этих участков нельзя будет читать или записывать напрямую из скриптов на Pawn, для доступа к ним нужно будет делать ещё несколько функций (Get/Set), да ещё и для нескольких типов данных (если для целых и вещественных чисел ещё можно сделать одну общую функцию, то для массивов придётся делать отдельную).
К тому же, такой подход с нативными функциями будет заметно медленнее, чем при "прямом" доступе к данным в стеке или в секции данных экземпляра AMX.
Ещё можно модифицировать код самой виртуальной машины, добавив свои инструкции и/или изменив уже существующие, но поддерживать свой форк ради пары фич... вряд ли оно того стоит.
Все типы данных ограничены по размеру в 1 ячейку. В случае с SA:MP размер ячейки - 4 байта, что соответствует типу int32_t из C/C++.
Нельзя сделать что-то похожее на int64_t (только костылями, используя отдельные функции вместо арифметических операций - перегрузка операторов здесь не прокатит), можно разве что сделать массив и обращаться к отдельным его байтам вместо ячеек.
Язык очень медленно развивается (если развивается вообще).
В SA:MP и вовсе используется устаревшая версия Pawn (для компилятора это 3.2.3664, но в сервере используется более старая версия 3.2.3367, из-за чего не поддерживаются скрипты, скомпилированные с ключом -O2).
Кроме того, старые ветки разработчиком Pawn не поддерживаются, разве что некоторые добровольцы, такие как Zeex, время от времени фиксят в них баги.


Для таких проектов, как SA:MP, с этими минусами ещё можно смириться (всё равно проект стагнирующий, раз сам Kalcor не хочет вносить в него ничего нового), но в других случаях этот язык мало где подойдёт.
Недавно пришлось рассматривать EiC и AngelScript.
EiC на первый взгляд выглядит очень хорошо (ещё бы, это ж чуть ли не полноценный скриптовый Си), но не поддерживается сохранение байткода в файл для его дальнейшего использования, да и кодовая база старая (последние изменения разработчик вносил в 2000-2005 гг., потом до 2009 года только энтузиасты вносили небольшие улучшения, попутно выкинув поддержку для SUNOS и PPC).
С лицензией в EiC тоже не всё понятно. В исходных файлах написано "This code may be copied for personal, non-profit use only" ("Вы можете копировать этот код только для личного некоммерческого использования"), что по идее должно сделать интерпретатор непригодным для легального использования в закрытых коммерческих проектах. В то же время в корневой папке с исходниками есть файл LICENSE, в котором приведён текст лицензии Artistic License, разрешающей использование в коммерческих проектах, но накладывающей ещё кучу условий и обязательств.
Мало того, сейчас многие проекты делают со скриптами для CMake, из которых потом можно сделать скрипты и проекты для различных IDE и систем сборки. Естественно, в начале 2000-х, когда EiC был заброшен, никакого CMake и в помине не было, поэтому со сборкой интерпретатора тоже могут возникнуть проблемы.
Поэтому я сейчас присматриваюсь к AngelScript. В нём тоже есть Си-подобный синтаксис, да и процесс встраивания относительно простой. Более, чем уверен, что этот язык лучше подойдёт для создания движка для 2D-игр.

$continue$
15.02.2016, 12:39
Да, действительно , забыл про AngelScript.
Можно поставить в ряд с Lua, Python, Squirrel.
На счйт встраивомости : Пробувал встроить в C# - очень муторно. В C++ , да, легко встроить

Profyan
15.02.2016, 13:50
Daniel_Cortez,а почему все-таки вы его начали изучать? Могу предположить,что как многие игроки,играющие когда-то в самп,решили сделать свой сервер.(я таким путем и шел)

Моя история:
Хоть у меня и есть проект,но он стал для меня второстепенным.В далеком 2011 году,когда я был в классе 5, впервые услышал о самп.Тогда была версия 0.3d. Зашел на первый РП сервер и меня поразило то,что разработчики сделали такое в игре.Они приблизили многое к реальности.Существенным плюсом является то,что язык скриптовый,поэтому он легок в обучении.(хотя в 5ом классе я так не думал).Как уже сказал Untonyst, чтобы кодить на Pawn, нужно открыть всего-лишь Pawno.Платформа(если можно так сказать) на которой можно воплотить все свои фантазии в реальность,хоть и игровую, уже есть. Поэтому знания легко подкрепляются практикой. Для меня этот скриптовый язык стал первым и он подтолкнул меня на изучение других ЯП, уже более серьезных и практичных. Но Pawn забывать не хочется,потому что из-за его медленного развития приходится включать свои мозги,когда решаешь нетривиальную задачу. Т.к и в ресурсах мы ограничены и в возможностях.Почему я об этом говорю?Да потому, что некоторые "программисты" использующие серьезные языки не заботятся совершенно о памяти,о скорости работы,т.к в наше время вычислительные машины(ПК) довольно производительные и сложные задачи с не рациональным алгоритмом решают быстро.А Pawn меня научил(или вы,комьюнити п-п) рационально использовать ограниченные ресурсы и разрабатывать эффективные алгоритмы.

$continue$
18.02.2016, 01:57
Увы, реальность такова - что сейчас, работодателям легче докупить планку с 16 гб оперативы, чем платить C++ программистам.
Да и иногда, погоня за теми же макросекундами - нафиг не нужна.

Да потому, что некоторые "программисты" использующие серьезные языки не заботятся совершенно о памяти,о скорости работы,т.к в наше время вычислительные машины(ПК) довольно производительные и сложные задачи с не рациональным алгоритмом решают быстро

Profyan
18.02.2016, 05:20
Увы, реальность такова - что сейчас, работодателям легче докупить планку с 16 гб оперативы, чем платить C++ программистам.
Да и иногда, погоня за теми же макросекундами - нафиг не нужна.

Поэтому востребованы программисты,пишущие на ЯП высокого уровня.Например, Java.

Daniel_Cortez
18.02.2016, 06:35
Daniel_Cortez,а почему все-таки вы его начали изучать? Могу предположить,что как многие игроки,играющие когда-то в самп,решили сделать свой сервер.(я таким путем и шел)
Да, но буквально через неделю понял, что открывать свой сервер не стоит того, когда весь русскоязычный сегмент серверов SA:MP переполнен "уникальными" RLS, в которых уникально только название (и то не всегда), которое изменили за 5 минут и за такое же время залили на хостинг.


Да, действительно , забыл про AngelScript.
Можно поставить в ряд с Lua, Python, Squirrel.
На счйт встраивомости : Пробувал встроить в C# - очень муторно. В C++ , да, легко встроить
Про Lua вообще отдельный разговор.
В нём нет переменных в обычном их понимании, всё завязано вокруг таблиц.
Глобальные переменные и встроенные функции с модулями являются элементами таблицы _G, которая, в свою очередь, принадлежит сама себе (_G._G = _G), а локальные переменные, начиная с Lua 5.2, принадлежат к таблице _E.
Отсюда универсальный способ перекрыть Lua'шнику кислород - опустошить таблицы _G и _E (в принципе достаточно очистить _G, но вдруг мы имеем дело с параноиком, который забэкапил _G в локальной переменной?)

Операции со строками производятся, как с объектами.
Например, чтобы получить i-й символ из строки, нельзя просто написать "str[i]", нужно вызвать функцию для извлечения подстроки ("string.sub(str, i, i+1)") или аналогичный метод (str:sub(i, i+1)).
Мало того, при этом создастся новый строковый объект, который будет помещён в общую таблицу строк.

Функции в Lua могут возвращать несколько значений, но если таких функций вызывается несколько в списке, то больше одного значения сможет вернуть только последняя функция:


function f1()
return 1, 2, 3
end

function f2()
return 4, 5, 6
end

local t = { f1(), f2() }
for i = 1, #t do print(t[i]) end

В результате будет выведено "1 4 5 6".
Нет, я понимаю, эта багофича задокументирована и всё такое. Но что помешало авторам Lua сделать куда более логичный возврат нескольких значений для всех функций, а не только для f2?
И такие подводные камни в Lua можно ещё долго перечислять.

Хвалёная "простота встраивания" Lua на деле ни что иное, как просто миф.
Да, для встраивания интерпретатора в проект на Си достаточно лишь ввести «#include "lua.h"», но на этом вся простота заканчивается.
Чтобы сделать свою нативную функцию, придётся не раз поломать голову с уродливым стековым механизмом передачи параметров (самый геморрой, если передаётся таблица и нужно прочесть из неё элементы, представляя её либо как массив, либо как хеш-таблицу) и обработкой аргументов, которых, кстати говоря, может и не существовать или они могут оказаться не совсем такими, какими вы их ожидали: у функций в Lua нельзя сделать фиксированное число аргументов, да ещё и строго заданного типа (ишь, чего захотели!)

Язык разрабатывается всего 3 программистами из PUC-Rio по закрытой (соборной) модели.
У проекта нет публичного репозитория и кроме них троих никто не может притрагиваться к коду.
После релиза можно скачать исходники и сделать свой форк, но вряд ли он станет достаточно популярным, чтобы привлечь других разработчиков, да и сами инициаторы форков имеют тенденцию со временем переходить на другие проекты, оставляя форки Lua стагнировать.
Можно связаться с разработчиками по электронной почте и предложить им какие-либо улучшения, но они мало когда прислушиваются к этим предложениям (достаточно лишь посмотреть их публичный список рассылки) и чужой код не принимают (религия запрещает, наверное).
Разработчики Lua объясняют всё это тем, что они хотят, чтобы язык был таким, каким хотят его видеть только они сами, а не сообщество.

Наверное, именно все это и удерживает меня от перехода с SA:MP на MTA (впрочем, наверное я и в SA:MP никогда не разбирался достаточно хорошо).
Сначала вам может понравиться простота языка Lua, но при работе над крупными проектами, в которых требуется что-то большее, чем просто пара таблиц и обработчиков событий, вы будете сталкиваться со всё новыми и новыми ограничениями, накладываемыми языком, и ещё не раз пожалеете о своём выборе.
Из-за анально огороженного процесса разработки Lua, ЧСХ, имеем кучу мелких форков и наборы патчей для самых разнообразных целей.
Но, что самое интересное, несмотря на все свои недостатки Lua смог стать самым популярным языком для игрового скриптинга и до сих пор не собирается сдавать свои позиции. Мало того, на основе его концепций в последствии были созданы языки Squirrel, GameMonkey и наверняка ещё куча похожих на Lua малоизвестных скриптовых языков (по-моему, их все, вместе с самим Lua, следовало бы выделить в отдельную категорию), которые заполонили оставшуюся после Lua часть сферы геймдева.
Не знаю, что насчёт самого языка (мне вообще всё это фиолетово, т.к. я не собираюсь делать никаких серьёзных проектов на Lua), но, ИМХО, его авторы - одни из самых успешных троллей всех времён.


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


int result = engine->RegisterGlobalFunction("void DoSomething(string, int)", WRAP_FN(DoSomething), asCALL_GENERIC);
assert( result >= 0 );

Стоит заметить, что эта главная фича языка является в то же время и его главным недостатком, т.к. с ней связаны многие проблемы в AngelScript.
Она работает только на самых распространённых платформах (Windows, Linux, OS X, Android), но на других платформах ещё не успели сделать так, чтобы нативные функции вызывались правильно.
Как результат, на некоторых платформах при вызове нативных функций происходит краш, а без них язык практически бесполезен.
Для таких проектов, как SA:MP или MTA, внедрение AngelScript может и прокатит, но если вы хотите сделать что-то с более широким списком целевых платформ, лучше использовать язык с более переносимым интерпретатором - например, тот же Pawn.
Я бы предложил ещё C# или Java, но у них чересчур раздутая стандартная библиотека функций, да и патентов там больше, чем строк кода. Вообще, что Microsoft (создатели C# и владельцы патентов на него), что Oracle (также владеют кучей патентов на Java) - жирные патентные тролли, достаточно лишь вспомнить претензии oracle к Google за использование их API в своей реализации Java, а также что за счёт патентных отчислений Microsoft зарабатывает на платформе Android больше, чем даже её создатели: Google.

UPD: Что ещё интересно, в AngelScript я не нашёл ни одного момента по объявлению заголовков нативных функций в скриптах.
Если этой возможности реально нет, то как вообще можно работать над проектом, если список нативок известен только интерпретатору и IDE не может по мере ввода названия функций предложить список вариантов? Узнавать об ошибках только после компиляции? В лучшем случае, можно сделать захардкоженный список функций, который придётся время от времени пополнять вручную.
Пару дней назад я хотел использовать AngelScript для своего проекта (который, возможно, анонсирую несколько позже; разработка ведётся черепашьими шагами), но теперь больше склоняюсь к использованию Pawn версии 3.2, чтобы можно было использовать уже привычный компилятор с патчами от Zeex, а многие проблемы можно было решить с помощью #emit (в последней версии 4.0 #emit использовать нельзя, а из 3.3 Zeex уже бэкпортировал многие исправления и оптимизации для генерируемого байткода).

$continue$
18.02.2016, 11:49
Была идея сделать бота на C#, с возможностью написания скриптов на AngelScript. (Вызов методов: getVKMessange, sendVKMessange, etc...)
Херово, что встраемость в C# , почти ровна = 0.
Вот, подумываю бота писать теперь на C++

Daniel_Cortez
18.02.2016, 13:12
Была идея сделать бота на C#, с возможностью написания скриптов на AngelScript. (Вызов методов: getVKMessange, sendVKMessange, etc...)
Херово, что встраемость в C# , почти ровна = 0.
Вот, подумываю бота писать теперь на C++
Есть альтернативные реализации Lua на C# (http://lua-users.org/wiki/LuaImplementations), но они в лучшем случае застряли на версии 5.2.

TheMallard
07.04.2016, 14:27
Где-то в классе четвертом-пятом (2013-2014), пошел на курсы Java для школьников. Курсы закончили 4 человека, из них я единственный понимал ООП и всерьез заинтересовался языком, написал две(!!!) змейки и один платформер (это все в 2014). Позвали пилить сервер для Майнкампфа. С нами был пацан, который писал на Pawn, звали Александр. Ну и я типо с ним начал пилить сервер, правда Pawn совсем (совсем-совсем!!!) не знал, к тому же не было ООП. С Александром мы расстались, прихватив исходники, я свалил. Собственно, вот и все, теперь летом собираюсь пилить сервер уже на платформе SA-MP.

[ForD]
07.04.2016, 17:01
привет синтаксису Python :negative:

:punish:

Seregamil
11.04.2016, 11:06
Была идея сделать бота на C#, с возможностью написания скриптов на AngelScript. (Вызов методов: getVKMessange, sendVKMessange, etc...)
Херово, что встраемость в C# , почти ровна = 0.
Вот, подумываю бота писать теперь на C++
Улыбнуло)

По теме: ничем язык не привлек. Играл на дм серверах со времен 0.3c, играл на nWo League, даже клан свой был, было весело и интересно) И никогда не играл на РП, хоспаде, как же это прекрасно, что этот жанр не привлекает меня, просто сказка. Ну а по определенному стечению жизненных обстоятельств пришлось учиться тому, что мне не подвластно. Коротко и ясно.