SkyRiver Forum http://skyriver.ru/forum/ |
|
Пожелания по улучшению скриптового механизма и SDK http://skyriver.ru/forum/viewtopic.php?f=21&t=2882 |
Страница 1 из 1 |
Автор: | Ark [ Чт 15 мар 2007 19:07 ] |
Заголовок сообщения: | Пожелания по улучшению скриптового механизма и SDK |
[nbsp]Эта тема о том, какие возможности и исправления было бы желательно сделать в скриптовом механизме Механоидов 2 и в инструментах SDK, ибо Spline писал(а): Может патчик будет...
[nbsp]Патчик - вещь полезная, в том числе и самим Разработчикам, ежели они возьмутся за аддон к Механоидам 2... но просьба особо губу не раскатывать , так как стоящими будут лишь очень важные, критические поправки либо такие, которые относительно легко выполнить. |
Автор: | smt005 [ Чт 15 мар 2007 23:40 ] |
Заголовок сообщения: | |
Чтобы были пожелания, нужно знать всё что может делать редактор.......... Не так ли ? Добавлено спустя 12 минут 39 секунд: А сделать с помощью этих скриптов можно многое. Чего только стоит аномалия которую я придумал и успешно реализовал........ |
Автор: | Ark [ Пт 16 мар 2007 12:10 ] |
Заголовок сообщения: | |
По скриптовому механизму: Критично: [nbsp]1) Добавить возможность явного объявления общих переменных в головном модуле, чтобы обращение к таким переменным шло по адресам, вшитым в код процедур ещё при компиляции. [nbsp]Критично потому, что существующий механизм "общих переменных" работает по принципу интерпретатора и тратит на доступ к нужной переменной очень много времени. При значительном количестве "общих переменных" время поиска нужной заметно возрастает и игра начинает тормозить. То есть сейчас на скриптах в принципе нельзя выполнить чего-нибудь более-менее сложного - играбельность пропадёт. [nbsp]2) Добавить возможность создавать одномерные массивы для типов данных boolean, integer, float. Если будет реализовано предложение (1) - достаточно только для явноопределяемых переменных. [nbsp]Это может в некоторой степени заменить предложение (1) (чем меньше число "общих переменных", тем меньше время поиска нужной), хотя такая замена далеко не полноценна. Лучше и (1), и (2). Весьма желательно: Добавить процедуры, дающие возможность: Узнать количество товара в здании: int proc GetBuildGoods ( char cBuild, char cGoods ); Узнать загрузку производства в здании: float (либо int) proc Build Productivity ( char cBuild ); Узнать уровень экономики клана: float (либо int) proc GetEconomics ( char orgID ); Получить случайный глайдер, принадлежащий данной организации: char proc GetRandomGliderMember ( char orgID ); Назначить рейтинг глайдера: void proc SetGliderR ( char gliderID ); _______ [nbsp]Исправить работу void proc Resurrect ( char locationID, char buildingID="" ) (Восстановить игрока на локации ( в здании ) ). Сейчас она ведёт себя так. Желательно: Добавить процедуры, дающие возможность: Узнать то или иное оборудование глайдера-NPC аналогично GetEquipLayer: char proc GetEquipNPC ( char gliderID, int iEqipLayer ); Установить на глайдер-NPC оборудование аналогично InstallEquipLayer: void proc InstallEquipNPC ( char gliderID, int iEqipLayer, char eqpID ); Узнать поколение механоида: int proc GetMechGeneration ( char cMechID ); Узнать Ремесло глайдера: int proc GetGliderSpeciality ( char gliderID ); (пустое/Народ/Торговец/Охранник/Захватчик) _______ [nbsp]Чтобы при вызове void proc GliderGo ( char gliderID, char pointID ) ( Послать группу глайдеров куда-то ), в качестве pointID мог бы выступать идентификатор строения, и глайдер/группа при этом выполняли 2 операции: [nbsp]1) Прибыть в точку (вход в строение pointID ) [nbsp]2) Залететь в строение pointID , а для void proc SetSensorNPC( char cPointer, char cMech, int iIn=1); ( Поставить сенсор для NPC`а ) чтобы cPointer также мог быть идентификатором здания, и EVENT OnEnterSensorNPC в таком случае срабатывало бы при въезде любого глайдера-NPC в это здание. Хорошо бы :) Добавить процедуры, дающие возможность: Запустить постоянное (кроме ситуаций раскрытия окна чтения сообщений с остановкой игры и просмотра Игроком Карты/Груза/Глайдера/Журнала) проигрывание Ситуативной мелодии для состояния "в полёте" с подавлением проигрывания Основных мелодий и Мелодий-Вставок и, возможно, подавлением переключения на Боевую мелодию во время боя: PlayMusicFly ( char iMus, int suppresswarmusic=0 ); здесь iMus - идентификатор Записи в базе данных ("MUS_что-то-там"), если iMus == "" или такая Запись не найдена, то переключение музыкальной схемы в стандартный режим. Аналогично - Запустить постоянное проигрывание Ситуативной мелодии для ситуации раскрытия окна чтения сообщений с остановкой игры и состояния "в здании" с подавлением проигрывания мелодий состояния здания Своё/Чужое/Нейтральное : PlayMusicTxt ( char iMus ); Узнать численность данного клана на текущей локации: int proc GetMembersCount ( char orgID ); |
Автор: | smt005 [ Пт 16 мар 2007 21:50 ] |
Заголовок сообщения: | |
1. Узнать количество кристалов у игрока. 2. Создать группу механоидов в конкретной точке. |
Автор: | Микс [ Пн 19 мар 2007 10:49 ] |
Заголовок сообщения: | |
1) Добавить процедуру char proc InputBox( char cCapt ) Которая выводило бы поле для ввода информации (как при вводе имени меха) и возвращала её. cCapt - заголовок 2) Отделить процедуру EndGame() и проигрывание ролика в конце игры. 3) Добавить процедуру void proc HideObject( char itemName, int iEnable ) Которая позволяет делать видимым/не видимым объекты. Пригодится, если нужно, например, скрыть объект созданный в Редакторе локаций 4) Исправить прокрутку поля "Описание" в гл. меню, в разделе "Моды" |
Автор: | Krogoth [ Сб 4 авг 2007 22:52 ] |
Заголовок сообщения: | |
Создание здания: CreateBuildingAt(char itemName, char cBuildingType, char cPointer) RemoveObject, судя по экспериментам, может удалять и здания, но создавать их, к сожалению, невозможно. |
Автор: | Krogoth [ Пт 17 авг 2007 16:10 ] |
Заголовок сообщения: | |
Несложные в реализации, но позарез необходимые: ExitFromBuilding() - выйти из здания. MoveToObject(char cObject, char cLocation = GetArea) - перенести глайдер к хелперу CloseAngar(int iEnable = 1) - заблокировать/разблокировать отдел "Ангар" на текущей базе (в случае, если механоид находится вне базы, процедуру игнорировать) |
Автор: | Kalembas [ Пн 29 окт 2007 12:09 ] |
Заголовок сообщения: | |
Очень желательно поиметь работу с интерфейсом игры. Набор объектов (панели, окна,, кнопки, закладки и тд), функции доступа к ним и работы с ними. Обработчики их событий, типа OnButtonClick(), OnWindowOpen(), OnWindowClose() итд. Также очень хорошо открыть в движке набор переменных или объектов, используемых при отображении различной статистической информации в игре. Соответственно в самом СДК реализовать набор функций для работы с ними из скриптов. Для работы в связке с функциями интерфейса. Всё это очень хорошо поможет разнообразить модификации игры, не только работой с новыми картами, модификацией оружия и прочих объектов, но также созданием новых окон, интерфейсов доступа, помогая делать игру более гибкой, за счет большего доступа к внутриигровой информации. Чем больше откроется хардкорных данных для доступа из скриптов, тем гибче можно программироавть всякие "удобства" и "вкусности" для игроков. |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |