Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Война и Мир в 5ти томах, или как я прогу писал)

ultimabear
Posts: 8
Joined: 22.11.2009 22:30

Война и Мир в 5ти томах, или как я прогу писал)

Post by ultimabear »

Делаю (начал где-то полгода наверно назад, после большого перерыва продолжаю) свой клиент под уо) Когда делать начал о стелсе незнал) Сейчас вижу что по функционалу то что я хочу получить это тот же стелс + графика)

Настрой решительный, ни одну прогу так долго еще не мусолил)
По существу и язык для меня новый(на C# пишу - это мой 1ый на нем проект) и вобще я раньше не работал особо с пакетами, тридами скриптами, графикой и прочей хренотенью) Боюсь как бы какашку не сделать из-за незнания того что делаю)

...

А началось все с инжектора) Начал играть на пвп-альфе(шард такой) и там же начал 1 раз юзать инжект (до этого его не юзал потому что он запрещен везде)... мой скрипто-ориентированный моск сразу усек что можно написать на нем такие скрипты что бегать возможно будет в 2 кнопки) Что я и сделал. Написал много прикольных скриптов (которые используются непосредственно в ПвП), но с ростом сложности скриптов стало увеличиватся количество крашей ( некоторые скрипты у валили клиент с довольно большой вероятностью - тяжелые скрипты).
Да и на слабом компе под инжектом особо не поиграешь там просто слайдшоу (хотя без инжекта норм). Ну и в рамки вгоняет нехило ограниченность по функционалу(много чего нельзя через инжект сделать) Вот и пришла идея замутить свой клиент.. причем цель сразу поставил себе переплюнуть инжект в плане гибкости (скорости выполнения, отказоустойчивости) скриптов, дабы воплотить в реальность свою мечту - ПвП бот (который сам бегает всех валит, пока хозяин чара спит).

...

Почему именно C#? А все просто - нашел в сети исходник UOPhoenix (прога на c# очень сырая - аналог инжекта) .. проект этот успешно заброшен и не обновляется. Из этого исходника я сп***ил (по другому не скажешь) пару тройку классов.. (по сетевой части - пакет билдер (набор функций создающих тело пакета из входных параметров), и описание длин пакетов.. оттуда же вытащил .net надстройку над стандартным uoencryption.dll (это для шифровки пакетов)).. Долго ковырялся с шифровалкой.. но в итоге кое -как все вроде бы заработало, подрубился на пвп-альфу со своей консольной проги(чему был жутко рад). Первый этап пройден теперь меня ничто не остановит. Дальше оказалось что не все так просто как с тупо коннектом на сервер - пакеты то нужно принимать асинхронно) В отдельном триде тобишь (тут началось мое очень приятное знакомство с тридами и тем как они любят вылетать с ошибками, если их не синхронизировать). После пары дней мук, получилось нечто способное ходить в разные стороны) Для того чтоб увидеть что собственно происходит приходилось 2ым чаром через стандартный клиент заходить )))
Этот факт мне не очень понравился и я начал ковырять интернеты в надежде найти какой-то алгоритм, способный открыть стандартные mul-ы чтобы из них отображать графику. В итоге нашел (опять под c#!) библиотеку для открывания этих мулов (я с ней еще не до конца разобрался). Кстати она от вроде как от создателей RunUo(если не путаю). Далее пошли проблемы с выбором граф движка (под c# альтернатив не много в отличии от native-языков таких как c++), остановился на Managed DirectX(мелкософтовская надстройка над DirectX под .net). Кое как сделал вывод тайловой карты (мучался еще с формулами преобразовния координат из x y объекта в экранные координаты - так как в уо все повернуто на 45 градусов). Потом и отрисовку объектов(присобачил в обработчике приходящих пакетов пакет на отрисовку(не знаю как по другому назвать) объекта). Потом у меня были долгие муки связанные с тем что мир нужно рисовать какбэ в 3д(тоесть устанавливать порядок отрисовки объектов).
Ну дальше я на эту прогу забил и ушел с головой в задротство World of Warcraft на оффе, так как приехал брат и затянул меня в это дело. вкачал 80ку одел в эпики, и теперь могу спокойно смотреть на вас как на говно потому что у меня эльф 80лвл)))) (хотя он на самом деле хуман).
Далее вов разочаровал меня своей убогостью и крайним нежеланием близзардов избавить ПвПшников от сраного ПвЕ-контента. Забил.
Решил снова взятся за прогу. Решил не убивать свой мозг MUL-ами и сделать примитивненькую графику, лишь-бы было понятно что происходит на экране. Однако проблема с отрисовкой в "3д" осталась. На форуме gamedev.ru мне сказали что нужно тупо сортировать массив вида(объекты которые отрисовываются) по xyz. Сработало). Поставил обратно MUL-ки и теперь уже у меня отрисовывается что-то отдаленно напоминающее уо). Узнал, что данные об объектах перестают приниматся (а также начинают приниматся с другой стороны) в пределах определенного радиуса от чара ( - кругом, хотя я считал что там все в форме экрана тоесть таким непонятным прямоугольником повернутым на 45 градусов). Оказалось что область которую можно показывать игроку на самом деле раза в полтора больше чем на стандартном клиенте. Дальше засунул в отрисовку статику. Все стало очень красиво и теперь я перестал упиратся мордой в невидимые объекты(которыми и была статика).
Однако меня огорчал фпс.. (в самом начале я тупо загружал практически все ресурсы нужные для отображния, что длилось секунд 15 наверно.. и это без анимаций!.. и памяти жрало кучу..при том стандартная уо жрет вначале около 35метров и спокойно работает без тормозов)). При загрузке ресурсов(уже динамически - когда их требует отрисовщик) игра подвисала пока не загрузит нужные ресурсы.. эти зависания всего по несколько милисекунд но ресурсов много и в итоге это выливалось в ТОРМОЗА.
Решением стала загрузка всех ресурсов в отдельном триде. все стало работать НАМНОГО быстрее но все таки не айс.. оказалось что в managed directx отрисовка какая-о мега медленная.
В итоге я сменил Managed DirectX(by Мелкософт, правдо они его уже не поддерживают) на SlimDx(аналог манажед, от сторонних разработчиков). Новый граф апи был 1 в 1 похож на манажед директикс (в смысле все функции также называются - не пришлось врубатся в него с 0ля) - и отрисовка у него была намного быстрее.
Дальше ковырял анимацию в итоге у меня уже есть возможность проигрывать анимацию у персов (чуть позже сделаю и анимацию тайлов - там все просто).
Примерно на этом моменте я вспомнил рад чего я это все делаю - мне же скрипты нужно присобачить (можно конечно и прямо в коде прописать все что нужно, но тогда народ не сможет писать под себя ничего.. ведь шардов разных много да и разные скрипты всем нужны - всего в "твердом" коде не пропишешь) - в итоге я завис надолго.. ковырял LuaInterface сначала оказалось что там нифига не поддерживаются триды(а это в скриптах на уо критично)..есть какойто внутренний механизм тридов(из скрипта) я его долго мучал но так и не нашел механизма его связки с внешним миром(прогой).
Уже начал растраиватся и думать о том как буду писать свой интерпретатор скрипт-языка. В итоге узнал что у .net есть прикольный механизм - можно прямо из проги скомпилировать .net скрипты(стандартными средставми) и подрубить то что получилось(.dll - сборка .net) к основной проге. И это сработало. Оказалось в UOPhoenix использовалась эта же система но я тогда не мог разобрацо в коде на c# особо, по этому не стал вытаскивать оттуда механизм скриптов. Теперь я могу вызывать из скрипта любые функции (прямо как в инжекторе), и из скрипта вызывать функции проги.
Сделал систему запуска каждой функции в отдельном триде с возможностью пришлепнуть зависшую функцию(такое же окошко как в инжекторе).
До этого момента у меня была возможность использовать только 1го чара для своих экспирементов с 1го окна проги. Теперь сделал по - другому. Ну тут аналогия со стелсом(к этому моменту я уже успел его немного поковырять.. скрипты не писал просто коннектился к пвп-альфе сморел че за прога вобщем) из списка выбирается чар его можно подключить от его имени можно запустить скрипт.
Также скрипты можно запускать от активного перса(активный - тот который в данный момент виден в игровом окне - там де графика рисуется..остальные либо просто подключены и стоят на месте либо на скриптах стоят..в любой момент можно переключится на другого чара и играть уже им). Такие активные функции по аналогу с инжектом будут вешатся на кнопки и вызыватся из игрового окна по нажатии кнопок.
Еще присобачил крякнутый компонент для подсветки кода(это для редактирования скриптов - планирую там еще систему сделать (наработки есть) выведения списка объектов например когда точку пишешь (ну во всех IDE такое сть) и подсветку аргументов у функции когда скобку открываешь.. впринципе я это уже сделал но малец глючит - отключил пока..потом доработаю.
Это для того чтобы не держать в уме все названия(а они чувствительны к регистру) функций которые нужны для написания скриптов.. там еще комменты к каждой функции (так что по большому счету еще и справочник частично заменят)
Пока что можно использовать только 1ин сервер одновременно (с 1го окна проги), но в будующем сделаю для нескольких серверов (хотя на самом деле непонимаю зачем это может понадобится)
Все данные о настройках относительно игроков(логин, пароль, имя чара.. потом там будут еще другие настройки) а также настройки адреса сервера, необходимоси использования мулов(читать дальше))
хранятся в 1ом файле (профайл). Еще будут(пока не сделал) в другом файле общие настройки такие как путь к скрипту на автозагрузку.. там цвета окошек всякие и прочая шелуха).
Вроде ничего не упустил. Да кстати скрипты(процессы) не разделены между отдельными игроками.. то есть можно сделать скрипт который будет управлять сразу 10-ю чарами (стратегии из уо делать xD).
Соответственно перестают быть полезными скрипты которые до этого юзались для спаррингов(это просто пример).. в которых для того чтоб друг друга не убить приходилось своим чаром говорить из скрипта команду(в уо чат) о том что нужно перестать меня бить(когда мало хп) - таким скриптом я пользовался на уо пилоте. Тут просто скрипт может посмотреть данные другого чара абсолютно спокойно.

...

Блин целую поэму накатал)

Что планирую сделать:
1) Херову тучу функций для работы с прогой из скрипта (включая "сырые" функции, такие как отправка определенного пакета, отрисовка произвольной загогулины на игровом экране и тд)
2) Возможность эмуляции разных версий клиента (само собой разная шифровка пакетов + фишки доступные в определенных версиях)
3) Защиту от вредоносного действия скрипта (не секрет что в код скриптов врубаются далеко не все кто играет например на инжекте, и не всегда можно проверить а не прислал ли дядя вася скрипт с названием мего-авто-лесоруб, в котором на самом деле скриптовый-вирус. (открытие файла(профайла) - смотрение в пароль и рассказывание этого пароля через Say в игре))
Для начала отключу по дефолту некоторые библиотеки которые будет использовать скрипт(для чтения файла.. создания сокетов и многое другое).. при желании их можно будет подрубить в натройках.. но тогда план дяди васи по захвату мира через ваш комп может пройти успешно.С другой стороны необходимость в этих библиотеках не должна появлятся(это только если вы делаете какойто - мега сложный скрипт) Все что нужно для скриптинга в уо я включу в стандартные функции. Встречный вопрос - может ли интерпретатор паскаля(ну то что стоит в стелсе) открыть реестр и увидеть там пароль от акков стелса? Если может то советую задуматся над тем как это ограничить.
4) Графика. Сделать все то что нужно для нормального восприятия ситуации(игровой) в уо. То есть возможности стандартного клиента уо. Возможно тут сделаю что то прикольное вроде нормальных теней света и прочего(но это все стоит по приоритету на последнем месте)
5) Играбельность - она должна быть не ниже чем на оригинальном клиенте. Планирую отойти от стандартных вещей в уо, таких как лут с трупа(сделаю короче говоря весь инвентарь в клеточках по дефолту - как в оригинальной уо можно будет включить в настройках), **ля с таргетами - сделаю как во всех нормальных(читай корейских xD) мморпгах - выделил цель (она выделелась и хорошо видна на экране), причем выделил без всяких сумасшедших ловушек таргетов - а просто сингл кликом(кнопки можно будет настроить на нужные действия) и шлепаешь касты в цель(причем ненужно будет писать скрипт в пол-экрана чтобы кастануть по последнему таргету) 1им юзом спелла. Если цели никакой нету то будет вылезать таргет(ну это как в ВоВе).. также можно будет кастовтаь на себя.
Можно будет задавать задержку на разные спеллы (возможно даже без использования скриптов) - и на экране у спеллов будет показыватся время кулдауна(время пока этот спелл нельзя кастовтаь).. вобщем все как в нормальных мморпгах. В итоге большинству игроков скрипты не нужны будут вобще! Все будет по дефолту удобным.
6) Работа без MUL-ов. Графика в таком случае берется из папки с прогой и она крайне примитивная.. нужна исключительно для того чтоб понять что где находится..играть на таком будет проблематично
7) Всякие дополнительные фичи.. вроде записи макроса(результат - набор скриптовых команд, которые нужно вставлять в скрипт+редактировать).. поддержки функций инжектора(с такими же названиями и аналогичной реализацией..они будут в отдельном классе) ..также возможно херовину сделаю для перевода скриптов из инжекта на скрипты моей проги.
Еще думаю сделать что-то вроде пактной записи видео.. из кучи пакетов выделять скриптовые команды которые будут отрисовывать нужные оббъекты на экране - результат - скрипт который в оффлайне запускаешь и наблюдаешь "видео"
8) В случае успешного релиза проги, можно будет задумыватся о версии под КПК. Кпк с каждым днем становятся все мощнее.. вполне хватит современного кпк (коммунтикатора) для отрисовки графики в примитивном виде..примитивной анимации и использования протокола уо(сетевого) для связи с сервером. ММОРПГИ под кпк уже есть и неплохо бы увидеть УО на кпк. Конечно в хард-моде ПвПшится врядли с него получится но помочить мобов(порубить лес xD) вполне реально.

Вот такие у меня планы.

К разработчику стелса:
По большому счету наши проги выполняют одну и ту же задачу - автоматизация действий игрока через скрипты, без использования оригинального клиента от уо.
Может поделимся мыслями о том как и что делать и в итоге возможно сделаем нечто на основе этих прог более крутое? Делаем то одно и тоже)

Саму прогу выкладывать не буду, пока она не будет нормально(без ошибок) работать.. ну и чтоб функционал у нее был поболее чем сейчас. Щас то все равно толку с нее 0. Только перспективы.
Выложу несколько скринов (скрины разных версий)
http://depositfiles.com/files/sdvstz43t

А это шаблон скрипта:

Code: Select all

// Это шаблон скрипта для HandOfGod
// Все функции, вызываемые из HandOfGod, должны находится в пространстве имен Script, public классе Executable. Класс
// не должен быть статическим. Функции не вызываемые напрямую из HandOfGod могут определятся в любом месте.
// После загрузки скрипта в HandOfGod создается экземпляр класса Script.Executable.
// Из него вызываются все нужные функции

using ScriptAPI;

namespace Script
{
	public class Executable
	{
		//------------------------------Блок вызова от имени определенного игрока----------------------
		// Это точка входа в скрипт, при вызове скрипта от имени игрока, где playerId - ИД игрока,
		// action - действие, которое игрок должен выполнить(скрипт, который игрок должен использовать)
		public void PlayScriptOnline(string action, int playerId)
		{
			Player me = Player.PlayerById(playerId);
			if (action == "Скрипт1")
				Functions.Script1(me);
			else if (action == "Скрипт2")
				Functions.Script2(me);
			else
				Functions.DefaultScript(me);
		}
		
		// Тоже самое, но для игроков не в онлайне, здесь передается логин и имя чара(для дальнейшего
		// подключения
		public void PlayScriptOffline(string action, string accountName, string characterName)
		{
			int res = Player.LoginAndEnterWorld(accountName, characterName);
			if (res != -1)
				PlayScriptOnline(action, res);
		}
		
		//------------------------------Блок вызова от имени активного игрока----------------------
		public void ActiveCharScript()
		{
			// Подобные скрипты(функции) вызываются для
			// активного игрока, обычно они биндятся на
			// кнопки и вызываются непосредственно нажатием
			// кнопок в игре. Для манипуляций активным
			// игроком использовать свойство Player.Active
			// например
			Player activePlayer = Player.Active;
			// далее использовать activePlayer
			activePlayer.Say("Это активный персонаж");
		}
	}
	
	class Functions
	{
		public static void Script1(Player player)
		{
			// Скрипт1 (использовать объект player для
			// манипуляций игроком)
			player.Say("Запущен скрипт1");
		}
		
		public static void Script2(Player player)
		{
			// Скрипт2 (использовать объект player для
			// манипуляций игроком)
			player.Say("Запущен скрипт2");
		}
		
		public static void DefaultScript(Player player)
		{
			// Скрипт по умолчанию (не задано действие)
			// (использовать объект player для манипуляций игроком)
			player.Say("Запущен скрипт по умолчанию");
		}
	}
}
Жду комментов

PS: Еще вспомнил что хотел сделать для удобства выделения игроков(и прочих мобов) таргетом, такую функцию чтобы выделялся ближайший к таргету перс. Часто в пвп бывают ситуации когда бегаешь и нужно сменить таргет..во первых то что нужно одновременно бежать при этом уже затрудняет выделение. так как и бегаешь мышкой и выделяешь ей же. Так вот если таргет промахнулся то выделится самый ближайший перс к курсору.
PPS: До этого тоже кодил на делфях) думал ничего удобнее еще не придумали, так вот я ошибался) Но минусы у c# тоже есть)
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Чтож ты хочешь услышать, о всемогусчий? :)
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Предлагаю сменить язык на Дельфи и подключиться к разработке стелса.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Да, это будет гораздо лучше и полезнее ).
А писать свой клиент, да в одно лицо...
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

grundick wrote:А писать свой клиент, да в одно лицо...
Все же судя по скринам, он весьма преуспел в этом.
Заимствование кода, будет полезно для всех, я думаю.
ultimabear
Posts: 8
Joined: 22.11.2009 22:30

Post by ultimabear »

Предложили бы мне это до того как я начал делать эту прогу)
То что в одно рыло делать это, да, хреново.. подсказать некому приходится самому выкручивацо. Однако пока все получается и я не буду останавливацо) В любом случае я планирую, когда прога будет выполнять все минимально необходимые для игры функции.. попробовать конвернуть на delphi или vc++. Вот в этот момент возможно присоединюськ вам.. Все таки между .net и native языками очень большие различия, я вот например не представляю как писать то что я тут наделал на делфи(возможно хреново делфи просто знаю xD) Хотел спросить, насколько хорошо стелс открывает mul-ы(все ли реализованы функции) и откуда взяли алгоритм?
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Насколько я знаю, работа с мулами была содрана с палантира. Вообщем то всё работает, вот только ускорить бы ). В алгоритмах поиска пути на проверку нескольких тысяч точек уходит несколько секунд :evil:
ultimabear
Posts: 8
Joined: 22.11.2009 22:30

Post by ultimabear »

Если возможно ускорить то конечно надо ускорять.. чем дальше дистанция у алгоритма поиска пути тем томрознее он будет выполнятся(кроме открытия самой карты тут еще тормозит сам алгоритм скорее всего.. так как они они довольно прожорливые сами по себе)
ЗЫ: посмотрите ultima sdk (это то что я юзаю для мулов), возможно там алгоритм пошустрее (сам я не вкуривал его). А насчет графики в стелсе не думали?(Она нужна на примитивном уровне для отладки скриптов). Еще по поводу поиска пути: возможно стоит сделать в скриптах возможность загрузки полностью карты(участка-сектора) в оперативную память? Загрузить в начале работы скрипта карту в ОП и работать уже в оп это будет в сотни раз быстрей. Еще насчет ускорения считывания с диска: не всегда требуется считывать все данные определенного фрагмента(тайла карты например).. возможно в определенных местах в программе нужно узнавать только Z, так вот и считывать с диска нужно только Z, без типа тайла(и что там еще в этой карте прописано..)
me
Posts: 2
Joined: 06.10.2009 16:12

Post by me »

оффтоп. Я писал многим в личку по поводу СВН, но про меня забыли =(. Вот, решил напомнить... Спасибо.
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

me
Вопрос будет решен в ближайшее время.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Товарищ me , я оставил тебе в ЛС свою аську. Но никаких сообщений от тебя так и не получил.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

grundick wrote:Насколько я знаю, работа с мулами была содрана с палантира.
iz palantira tolko rashurennue i graf. mul-files vzyatu, chto-to vukinuto za nenadobnost'u, chto-to polnost'uperepisano - tak chto oni krome kak strukturoi klassov malo chem pohoji )

me - da, pisal. ya tebe otvetil - chto port na linux kak bu ne ochen nujen. a tochnee, sovsem ne nujen - potomu chto eto v itoge vuidet v otdelnui vetku. a hotelos bu chtobu stels ne raspadalsya na neskolko proektov. ochen' hotelos' bu
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

Всегда удивляет как нубы которые ничего не знают, а пишут на шарпах неплохие вещи и архитектура у них не страдает.
Ни хитростей наследований, ни лямбд, ни вывода типов. ни изометрии наверное не знаешь ). Скрипты можно круто делать лямбдами, хэндлерами, DSLями, фреймворками. Луа не должен быть многопоточным например. Его экземпляр работает в контексте твоего ОС-потока( тоесть достаточно просто свойства threadsave )

Ну ваще молодец. Могу только посоветовать не вестись на стелс и продолжать своё. Прежде чем делать скрипты посмотреть как ботов делают белые люди - например почитать какое-нибудь AI for game programming.
Делфи мёртвый язык.
Стелс уже давно надо переписать на более практичном языке с нормальной архитектурой. Наример разделить ядро и API для нового функционала. 8) Просто стелс делают ниразу не прогеры и им многое можно простить.

Тоже делал свой клиент на erlang. Но муторно это всё. Больше реверс-инжинеринга чем кодинга. Ты хоть готовое нашел, а я сам читал сишечкой мулы и забивал ручками пакеты
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Выскажу мнение обычного юзверя.
Почему-то мне кажется, что не стоит требовать от клиента маны небесной.
Не такая-уж это мега задача, управлять закономерностью отправки 2х-3х десятков пакетов серверу. А то, что текущий функционал стелса переваривает это, говорит о том, что как Вы выразились "мертвый язык" вполне с этим справляется. Приведу высказывание господина А. Подгорецкого http://www.podgoretsky.com/ftp/Docs/ -
"В программировании нет правильных и не правильных способов написания программ, есть правильно и неправильно работающие программы. И если этим способом написанная программа работает правильно, значит он правильный. Все остальное полемика."
К тому-же использование "мертвого", но замечу популярного языка, позволило до сих пор выживать проэкту. Хотя как тут заметили, многие подобные проэкты на "живых" языках сейчас выглядят гораздо мертвее стелса. :(

И интересно как мега гибкая архитектура С или использование каррирования поможет исправить тучу дыр в протоколе УО?
Например пакет 0x37 Move Item ( где ответ от сервера поступает ТОЛЬКО в случае отказа на действие) обрабатывается клиентом и логическое решение имеется возможность реализовать во ВСЕХ языках. Так зачем стрелять из пушки по воробьям?

А по поводу "ниразу не прогеры", почему бы Вам не присоедениться к разрабам и не реализовать "все тонкости наследования и инкапсуляции"?
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

Не такая-уж это мега задача, управлять закономерностью отправки 2х-3х десятков пакетов серверу.
А то, что текущий функционал стелса переваривает это, говорит о том, что как Вы выразились "мертвый язык" вполне с этим справляется.
Я например хочу сделать обьект, который бы последовательность событий воспринимал как event. и вешать на этот event банальный хендлер, чтобы не проверять через каждые пять строчек сыт ли жив ли и нет ли никого рядом. И чтобы этот хэндлер захватывал контекст, который был бы стратегией например. Что на это скажешь ?

Походу господин подгородецкий застрял в совке. Вы слышали о поддержке ? о расширении ? Грязный код могут позволить писать себе только академики и ненормальные фрики, которые пишут 50 наглухо ебанутых строк реализующих какоето шифрование, которые никто никогда не будут читать.
Даже Дейкстра смотрит на него как на говно
Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации (по этому вопросу см. статью про оператор GOTO).
Не говоря уже о Маккарти, Муре и Армстронге...
К тому-же использование "мертвого", но замечу популярного языка, позволило до сих пор выживать проэкту. Хотя как тут заметили, многие подобные проэкты на "живых" языках сейчас выглядят гораздо мертвее стелса.
Позволило выживать проекту только огромная сила духа разработчиков, за что им респект. Просто когда они учились, у всех была мания считать делфи величайшим языком.
И интересно как мега гибкая архитектура С или использование каррирования поможет исправить тучу дыр в протоколе УО?
Походу ничего вы о си и о каррировании не знаете. Хи.
А по поводу "ниразу не прогеры", почему бы Вам не присоедениться к разрабам и не реализовать "все тонкости наследования и инкапсуляции"?
Это из серии - п*ть не мешки ворочать ? ну вы имеете право так говорить. Я просто дал совет топикстартеру. Я был бы рад если бы он был рад делать что то своё и учится на своих ошибках, а не читать чужой АД. Для нуба-программиста лучше читать хороший код. некоторые моменты из ядра линекс, Quake может быть. Мне лично понравилось.

Да и. разрабатывать стелс мог бы действительно каждый если бы была такая простая вещь как API.
Банально пишем класс. Наследуем интерфейс в котором описываем какие экспортируем функции для скриптового движка, какие хотим получать ивенты/пакеты.
И также имеем с десяток фукнций которые можем вызвать из стелса чтобы иметь доступ к чему-угодно. И это таки можно сделать на почти любом языке. Даже на си.
Просто когда мыслишь на языке, ты мыслишь этими понятиями. Вот в шарпах такой подход очевиден.
Post Reply