По скриптовому механизму:
Критично:
[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 );