|
|
|
|
Уголок библиотек
|
|
Ty3uK | Дата: Пятница, 11 Января 2013, 20:29:33 | Сообщение # 1 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| В данной теме я буду выкладывать библиотеки, разработанные ( ) для моего проекта Simple Shooter. Говорю сразу - библиотеки ни о чем, просто являются теоретически полезными для тех, кому лень (или просто жалко времени) писать аналогичные библиотеки. В первом посте я буду выкладывать ссылки на посты с каждой библиотекой. Всем спасибо и всем добра! И, как всегда, большое спасибо Николаю aka SirNikolas за отлов ошибоки недоработок!
|
|
|
|
Ty3uK | Дата: Пятница, 11 Января 2013, 20:33:35 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
|
Библиотека Multiboard [code=jass]/************************************** * * Multiboard Class * v1.0 * By Max Karelov aka Ty3uK * * -Класс-обертка над API для типа Multiboard. * * Требуется: * ------------- * * Jass New Gen Pack 5d с последними AdicHelper и JassHelper * Ссылка на загрузку: * http://www.mediafire.com/?aqfwy8wmrcuf67k * * API: * ---- * * Методы: * destroy() - уничтожает экземпляр класса. * Clear() - очищает доску. * create(rows, columns) - создает экземпляр класса (но не показывает саму доску) с указанным количеством строк и столбцов. * Maximize(value) - сворачивает или разворачивает доску. * SetColor(row, column, red, green, blue, transparent) - устанавливает цвет (красный, зеленый, синий) и прозрачность элемента доски. * SetDecoration(row, column, value, ico) - устанавливает значение и/или иконку элемента доски. В качестве значения можно задавать null. * SetStyle(row, column, value, ico) - устанавливает стиль отображения элемента доски. * SetTitleColor(red, green, blue, transparent) - устанавливает цвет (красный, зеленый, синий) и прозрачность заголовка доски. * SetWidth(row, column, width) - устанавливает ширину (задается в процентах) элемента доски. * * * Свойства: * Columns - возвращает количество столбцов доски. * Columns= - устанавливает количество столбцов доски. * Display - отображается доска или нет. * Display= - показывает или скрывает доску. * Rows - возвращает количество строк доски. * Rows= - устанавливает количество строк доски. * Title - возвращает заголовок доски. * Title= - устанавливает заголовок доски. * Maximized - развернута доска или нет. * * * Ваше здоровье, SirNikolas! * **************************************/ library_once MultiboardLibrary { #include "cj_types_priv.j"; #define <trigger gg_trg_Multiboard_Library = null>; struct Multiboard { /* Публичные переменные */ readonly bool Maximized; /* Приватные переменные */ private multiboard M; private static multiboarditem m; private int ROWS; private int COLUMNS; private bool DISPLAY; /* Операторы */ public int operator Columns() { return COLUMNS; } public void operator Columns= (int count) { COLUMNS = count; MultiboardSetColumnCount(M, count); } public bool operator Display() { return DISPLAY; } public void operator Display= (bool value) { DISPLAY = value; MultiboardDisplay(M, value); } public int operator Rows() { return ROWS; } public void operator Rows= (int count) { ROWS = count; MultiboardSetRowCount(M, count); } public string operator Title() { return MultiboardGetTitleText(M); } public void operator Title= (string title) { MultiboardSetTitleText(M, title); } /* Публичные методы */ public void Clear() { MultiboardClear(M); }
public void Maximize(bool maximize) { Maximized = maximize; MultiboardMinimize(M, !maximize); } public void SetColor(int row, int column, int red, int green, int blue, int transparent) { m = MultiboardGetItem(M, row, column); MultiboardSetItemValueColor(m, red, green, blue, transparent); MultiboardReleaseItem(m); } public void SetDecoration(int row, int column, string value, string ico) { m = MultiboardGetItem(M, row, column); if (value != "" && value != null) { MultiboardSetItemValue(m, value); } if (ico != "" && ico != null) { MultiboardSetItemIcon(m, ico); } MultiboardReleaseItem(m); } public void SetStyle(int row, int column, bool value, bool ico) { m = MultiboardGetItem(M, row, column); MultiboardSetItemStyle(m, value, ico); MultiboardReleaseItem(m); } public void SetTitleColor(int red, int green, int blue, int transparent) { MultiboardSetTitleTextColor(M, red, green, blue, transparent); } public void SetWidth(int row, int column, float width) { m = MultiboardGetItem(M, row, column); MultiboardSetItemWidth(m, width / 100.); MultiboardReleaseItem(m); } /* Конструктор, деструктор */ public static thistype create(int rows, int columns) { thistype self = thistype.allocate(); self.ROWS = rows; self.COLUMNS = columns; self.M = CreateMultiboard(); MultiboardSetColumnCount(self.M, columns); MultiboardSetRowCount(self.M, rows); return self; } public void destroy() { MultiboardDisplay(M, false); DestroyMultiboard(M); this.deallocate(); }
} }[/code]
|
|
|
|
Ty3uK | Дата: Понедельник, 14 Января 2013, 14:36:54 | Сообщение # 3 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
|
Библиотека Dummy [code=jass]/************************************** * * Dummy Class * v1.0 * By Max Karelov aka Ty3uK * * -Класс универсального дамми. * * Требуется: * ------------- * * Jass New Gen Pack 5d с последними AdicHelper и JassHelper * Ссылка на загрузку: * http://www.mediafire.com/?aqfwy8wmrcuf67k * * Модель универсального дамми * Ссылка на загрузку: * http://www.mediafire.com/?635lbbloxjbco24 * * Создать дамми с загруженной моделью * Указать в значение дефайна dummy_ID ИД вашего универсального дамми. * * API: * ---- * * Методы: * destroy() - уничтожает экземпляр класса. * destroy(time) - уничтожает экзепляр класса через заданное время. * create(model, owner, x, y, face) - создает экземпляр класса. * Order(order) - заставляет дамми совершить действие без цели. * Order(order, target) - заставляет дамми совершить действие на цель. * Order(order, x, y) - заставляет дамми совершить действие в точку. * * * Свойства: * LastOrder - последнее совершенное действие. * * **************************************/ library Dummy { #include "cj_types_priv.j"; #define <trigger gg_trg_Dummy = null>; #define { dummy_ID = 'e000'; Order(order) = immediateOrder(order); Order(order, target) = targetOrder(order, target); Order(order, x, y) = pointOrder(order, x, y); destroy(time) = destroyTimed(time); } struct Dummy { private unit dummy; private effect model; private int lastOrder = 0; public int operator LastOrder() { return lastOrder; } public void immediateOrder(int order) { IssueImmediateOrderById(dummy, order); lastOrder = order; } public void targetOrder(int order, widget target) { IssueTargetOrderById(dummy, order, target); lastOrder = order; } public void pointOrder(int order, float x, float y) { IssuePointOrderById(dummy, order, x, y); lastOrder = order; } public static thistype create(string model, player owner, float x, float y, float face) { thistype self = thistype.allocate(); self.dummy = CreateUnit(owner, dummy_ID, x, y, face); self.model = AddSpecialEffectTarget(model, self.dummy, "chest"); return self; } public void des##troy() { DestroyEffect(model); RemoveUnit(dummy); .deallocate(); } public void destroyTimed(float time) { timer t = CreateTimer(); TimerStart(t, I2R(this), false, null); PauseTimer(t); TimerStart(t, time, false, lambda void() { timer t = GetExpiredTimer(); Dummy self = R2I(TimerGetRemaining(t)+.5); self.des##troy(); DestroyTimer(t); t = null; }); t = null; } } }[/code] Внимательно читаем шапку библиотеки - важно скачать модель универсального дамми.
|
|
|
|
Ty3uK | Дата: Четверг, 11 Апреля 2013, 18:43:41 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
|
Библиотека Players [code=jass]/************************************** * * Player Class * v1.0 * By Max Karelov aka Ty3uK * * -Класс игроков. * * Требуется: * ------------- * * Jass New Gen Pack 5d с последними AdicHelper и JassHelper * Ссылка на загрузку: * http://www.mediafire.com/?aqfwy8wmrcuf67k * * API: * ---- * * Свойства: * Player[index] - возвращает игрока с указанным номером. Нумерация начинается с 0. * **************************************/ library Players { player Player[16]; callback onInit() { #for i(0, 15) Player[i] = Pla##yer(i); #endfor } }[/code]
|
|
|
|
SirNikolas | Дата: Четверг, 11 Апреля 2013, 19:43:37 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Давненько пилил такое на дефайнах с инъекцией в main. Даже темка осталась (смотреть последний пост).
|
|
|
|
Ty3uK | Дата: Четверг, 11 Апреля 2013, 19:56:40 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| SirNikolas, а у меня в майне не заработали. Вот так вот. Добавлено (11 Апреля 2013, 19:56:40) --------------------------------------------- Теперь понял почему
|
|
|
|
SirNikolas | Дата: Четверг, 11 Апреля 2013, 19:57:12 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Последний пост точно прочитал?
Добавлено (11 Апреля 2013, 19:57:12) --------------------------------------------- Цитата (Ty3uK) Теперь понял почему Ясно, теперь прочитал.
|
|
|
|
Ty3uK | Дата: Четверг, 11 Апреля 2013, 19:57:42 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Но меня мой вариант вполне устраивает.
|
|
|
|
SirNikolas | Дата: Четверг, 11 Апреля 2013, 19:59:25 | Сообщение # 9 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Дело в том, что у меня на руках была карта, больше чем наполовину сделанная на GUI. И мне надо было заменить сразу везде, так что дефайны подошли как нельзя лучше.
|
|
|
|
Ty3uK | Дата: Четверг, 11 Апреля 2013, 19:59:58 | Сообщение # 10 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| SirNikolas, да, я это понял.
|
|
|
|
Borodach | Дата: Суббота, 13 Апреля 2013, 10:00:56 | Сообщение # 11 |
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
| Ty3uK, Полезная тема. Только надо больше библиотек на все случаи жизни
Karamba
|
|
|
|
Ty3uK | Дата: Суббота, 13 Апреля 2013, 13:35:12 | Сообщение # 12 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Borodach, пишутся пропорционально нуждам.
|
|
|
|
Thehakker | Дата: Воскресенье, 22 Июня 2014, 02:07:03 | Сообщение # 13 |
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 0
Блокировки:
| Ехухуу класс
|
|
|
|
|
|
|
|
|
|
|