Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Server.gumps.gump, Пример, и описание класса...
Barracoon
сообщение 15.7.2007, 23:50
Сообщение #1


*******

Adept
Сообщений: 1.169
Регистрация: 21.1.2006
Группа: Пользователи
Наличность: 0
Из: Vladivostok
Пользователь №: 4.839



Данный топик будет посвяшен работе с гампами в RunUO. Ибо задолбался обьяснять... А то что должно было быть учебником - лень заного переписывать (IMG:style_emoticons/default/sad.gif) Лучше наделать кучу маленьких руководств, чем в последствии отвечать на кучу глупых вопросов...

Описание членов класса:
Конструкторы:
  • Gump( int x, int y ) - поготавливает новый экземпляр класса.
    Параметры int x, int y - координаты относительно игрового окна("x" - по вертикали, ну и "y" - соответсвенно по горизонтали). По этим координатам Гамп появится при создани.
Своиства:
  • bool Closable( get; set; ) - определяет возможность закрывать гамп при клике правой кнопкой мыши.
  • bool Disposable( get; set; ) - определяет возможность закрывать гамп нажимая Escape.
  • bool Dragable( get; set; ) - определяет возможность перемешать гамп по экрану.
  • bool Resizable( get; set; ) - определяет возможность изменять размеры гампа.
  • int X( get; set; ) и int Y( get; set; ) - определяют координаты гампа по вертикали и горизонтали.
  • List<GumpEntry> Entries( get; ) - возврашает список элементов гампа
  • int Serial( get; set; ) - определяет уникальный идентификатор Гампа.
  • int TypeID( get; ) - возврашает тип текушего класа.
Методы:
  • void AddAlphaRegion( int x, int y, int ширина, int высота ) - добавляет прозрачный регион(работает только в клиентах третьей линейки серии, и выше)
  • void AddBackground( int x, int y, int width, int height, int gumpID ) - добавляет фон.Фон сосоит из 9 картинок
  • void AddButton( int x, int y, int normalID, int pressedID, int buttonID, GumpButtonType тип, int параметр) - добавляет кнопку.
  • void AddCheck( int x, int y, int inactiveID, int activeID, bool initialState, int switchID ) - добавляет переключатель
  • void AddGroup( int group ) - добавляет группу
  • void AddHtml( int x, int y, int width, int height, string text, bool background, bool scrollbar ) - добавляет html-поле
  • void AddHtmlLocalized( int x, int y, int width, int height, int number, bool background, bool scrollbar ) - добавляет html-поле с содержимым из клилока
  • void AddHtmlLocalized( int x, int y, int width, int height, int number, int color, bool background, bool scrollbar ) - аналогично предыдушему, но с цветом
  • void AddHtmlLocalized( int x, int y, int width, int height, int number, string args, int color, bool background, bool scrollbar ) - аналогично предыдушему, но с аргументами
  • void AddImage( int x, int y, int gumpID ) - добавляет картинку
  • void AddImage( int x, int y, int gumpID, int hue ) - аналогично предыдушему, но с указанием цвета картинки
  • void AddImageTiled( int x, int y, int width, int height, int gumpID ) - добавляет "размноженую" картинку.
  • void AddImageTiledButton( int x, int y, int normalID, int pressedID, int buttonID, GumpButtonType type, int param, int itemID, int hue, int width, int height ) - добавляет "размноженую" кнопку
  • void AddImageTiledButton( int x, int y, int normalID, int pressedID, int buttonID, GumpButtonType type, int param, int itemID, int hue, int width, int height, int localizedTooltip ) - аналогично предыдушему, но с подсказкой из клилока
  • void AddItem( int x, int y, int itemID ) - добавляет изображение предмета
  • void AddItem( int x, int y, int itemID, int hue ) - добавляет изображение предмета с определным цветом
  • void AddLabel( int x, int y, int hue, string text ) - добавляет надпись
  • void AddLabelCropped( int x, int y, int width, int height, int hue, string text ) - добавляет урезаемую(?) надпись
  • void AddPage( int page ) - добавляет новую страницу
  • void AddRadio( int x, int y, int inactiveID, int activeID, bool initialState, int switchID ) - добавляет радиокнопку
  • void AddTextEntry( int x, int y, int width, int height, int hue, int entryID, string initialText ) - добавляет текстовое поле
  • void AddTextEntry( int x, int y, int width, int height, int hue, int entryID, string initialText, int size ) - аналогично предыдушему, но с указанием максимального количества вводимых символов
  • void AddTooltip( int number ) - добавляет подсказку
  • void Add( GumpEntry g ) - добавляет произвольный элемент гампа(вызывается во всех методах указаных выше, но практически никогда не используется отдельно)
  • void Remove( GumpEntry g ) - удаляет произвольный элемент гампа.
  • Packet Compile() - преобразует обьект гампа в готовый, сетевой пакет сжатого гампа. В основном используется для экономии ресурсов, например когда один и тот-же гамп нужно разослать большому количеству клиентов.
  • Packet Compile( NetState ns ) - делает то-же самое что и предыдуший метод, но в зависимости от версии подключеного клиента(ns), может создать либо сжатый пакет, либо обычный пакет.
  • int Intern( string value ) - проверяет ввод на недопустимые символы
  • void Invalidate() - уничтожает гамп
  • virtual void OnResponse( NetState sender, RelayInfo info ) - вызывается после нажатия какого-то элемента
  • virtual void OnServerClose( NetState owner ) - вызывается при закрытии сервера
  • void SendTo( NetState state ) - посылает гамп указанному клиенту
  • static int GetTypeID( Type Тип ) - возврашает хеш типа текушего класса(врядли будете использовать).
  • static byte[] StringToBuffer( string строка ) - преобразует строку в масив байт.
Пример
введение.
простенькое описание того, что гампами можно сделать, что нельзя.
простые контролы.
сложные контролы.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Konstantin.
сообщение 26.3.2009, 3:32
Сообщение #2


**

Neophyte
Сообщений: 15
Регистрация: 26.3.2009
Группа: Пользователи
Наличность: 0
Пользователь №: 11.682
Возраст: 25



Будет справедливо немного подправить автора(если честно от описания некотрых фукнций просто в шоке):

Цитата(Barracoon @ 15.7.2007, 23:50) *

[*]int TypeID( get; ) - возврашает тип текушего класа.

Возвращает номер гампа, но не порядковый, а типовой. Причём, околоуникальный для каждого отдельно взятого гампа.

Цитата(Barracoon @ 15.7.2007, 23:50) *

[*]Packet Compile() - преобразует обьект гампа в готовый, сетевой пакет сжатого гампа. В основном используется для экономии ресурсов, например когда один и тот-же гамп нужно разослать большому количеству клиентов.

Данная функция преобразует гамп в готовый сетевой пакет НЕ сжатого гампа.

Цитата(Barracoon @ 15.7.2007, 23:50) *

[*]int Intern( string value ) - проверяет ввод на недопустимые символы

Где она там проверяет на недопустимые символы (IMG:style_emoticons/default/smile.gif)
Данная функция присваивает переданной в неё строке номер и записывает строку в буффер гампа (если строки одинаковые, то не записывает и просто возвращает соответствующий номер).

Цитата(Barracoon @ 15.7.2007, 23:50) *

[*]void Invalidate() - уничтожает гамп

Фукнция вообще ничего не делает (IMG:style_emoticons/default/smile.gif)

Цитата(Barracoon @ 15.7.2007, 23:50) *

[*]virtual void OnServerClose( NetState owner ) - вызывается при закрытии сервера

Вызывается если гамп закрыт не игроком, а сервером. Например, CloseGump.

Цитата(Barracoon @ 15.7.2007, 23:50) *

[*]static int GetTypeID( Type Тип ) - возврашает хеш типа текушего класса(врядли будете использовать).

Возвращает околоуникальный номер гампа основанный на хеше типа гампа.
Фукнция которую придумали уже после того как поняли что гампам нужны уникальные цифровые идентификаторы - прописывать везде вручную было влом, поэтому ничего умнее чем хеш не смогли придумать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Juzzver
сообщение 19.4.2009, 14:42
Сообщение #3


**********

Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008
Группа: Супермодераторы
Наличность: 22568
Из: Северная Корея
Пользователь №: 11.273



Так как же будет выглядить гамп допустим при выключении сервера?

"[*]virtual void OnServerClose( NetState owner )" - если не так то как?


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 19.4.2009, 15:08
Сообщение #4


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 3271
Пользователь №: 7.166



При выключении сервера гамп будет выглядеть как невзрачная серая табличка с надписью "Connection lost" на ней (IMG:style_emoticons/default/biggrin.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 19.4.2009, 23:19
Сообщение #5


*********

Группа: Модераторы
Наличность: 0
Пользователь №: 10.905
Возраст: 25



Сотерик, немного не так... В OnServerClose гамп создастся... И покажется. Но тут-же будет табличка Connection lost


--------------------
Do. Or do not. There is no Try!
© Master Joda, Dagobah, Star Wars: Episode V.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 20.4.2009, 7:08
Сообщение #6


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 3271
Пользователь №: 7.166



Это где там такое написано?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Juzzver
сообщение 20.4.2009, 18:12
Сообщение #7


**********

Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008
Группа: Супермодераторы
Наличность: 22568
Из: Северная Корея
Пользователь №: 11.273



К примеру на Shutdown, Restart или Crush что бы гамп выскакивал?


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 21.4.2009, 10:50
Сообщение #8


*********

Группа: Модераторы
Наличность: 0
Пользователь №: 10.905
Возраст: 25



Цитата
Это где там такое написано?
Можешь руками при краше сервера пакеты посылать с гампом. =)) Написано... Если крашанулась не ядро, то гамп отослать можно.


--------------------
Do. Or do not. There is no Try!
© Master Joda, Dagobah, Star Wars: Episode V.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Konstantin.
сообщение 19.5.2009, 18:22
Сообщение #9


**

Neophyte
Сообщений: 15
Регистрация: 26.3.2009
Группа: Пользователи
Наличность: 0
Пользователь №: 11.682
Возраст: 25



Если крашнулся сервер то врядли вы что-либо отправите.
По теме: видимо меня не правильно поняли. Это событие обрабатывается не когда сервер выключается, а когда сервер закрывает гамп принудительно. Например, CloseAllGumps(). У всех открытых гампов сработает данный обработчик.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 19.5.2009, 22:38
Сообщение #10


*********

Группа: Модераторы
Наличность: 0
Пользователь №: 10.905
Возраст: 25



Цитата
Если крашнулся сервер то врядли вы что-либо отправите.
Легко. Главное выцепить в мейне подключения и основной луп в трай засунуть. И при краше - сформированный пакет "про send'ить" на все подключения.


--------------------
Do. Or do not. There is no Try!
© Master Joda, Dagobah, Star Wars: Episode V.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Konstantin.
сообщение 30.5.2009, 17:49
Сообщение #11


**

Neophyte
Сообщений: 15
Регистрация: 26.3.2009
Группа: Пользователи
Наличность: 0
Пользователь №: 11.682
Возраст: 25



Цитата(Warstone @ 19.5.2009, 23:38) *

Легко. Главное выцепить в мейне подключения и основной луп в трай засунуть. И при краше - сформированный пакет "про send'ить" на все подключения.

Ну, да, ты прав.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.3.2024, 12:07
Designed by Nickostyle