[Система] Group Sys
Dreii Дата: Среда, 08 Февраля 2012, 22:48:11 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
Написал систему отрядов. Хочу узнать что лишнее,что неправильно,а самое важное ГДЕ ДЕСТРОИТЬ структуру? Ну и конечно утечки,баги. Просто уж немогу на этот код смотреть( Тест-карта
Code
CountinGroup=4 //глобальная отвищайущая за количество унитов в созданом отряде.
GTrain - тренировка юнита
Code
scope Train initializer Init { "cj_types_priv.j struct tr { unit lider unit ingr group g } private void GTrain() { tr svt=tr.create() unit u=GetTriggerUnit() svt.lider=GetTrainedUnit() svt.g=CreateGroup() int id=GetHandleId(svt.lider),i=0 UnitAddAbility(svt.lider,'A000') whilenot i>=CountinGroup { svt.ingr=CreateUnit(GetOwningPlayer(svt.lider),GetUnitTypeId(svt.lider),GetWidgetX(u),GetWidgetY(u),GetUnitFacing(svt.lider)) GroupAddUnit(svt.g,svt.ingr) RemoveGuardPosition(svt.ingr) i++ } SaveInteger(Hash,id,id,svt) u=null } private void Init() { gg_trg_GTrain = CreateTrigger( ) TriggerRegisterAnyUnitEventBJ( gg_trg_GTrain, EVENT_PLAYER_UNIT_TRAIN_FINISH ) TriggerAddAction( gg_trg_GTrain, function GTrain ) } }
GMove - повторение приказов за командиром отряда.
Code
scope Move initializer Init { "cj_types_priv.j private void GMove() { unit t = GetTriggerUnit() int id = GetHandleId(t),order = GetIssuedOrderId() float xo=GetOrderPointX(),yo=GetOrderPointY() tr svt=LoadInteger(Hash,id,id) if t==svt.lider && xo!=0 && yo!=0 { GroupPointOrderById(svt.g,order,xo,yo) elseif t==svt.lider GroupTargetOrderById(svt.g,order,GetOrderTargetUnit()) } t = null } private void Init() { gg_trg_GMove = CreateTrigger( ) TriggerRegisterAnyUnitEventBJ( gg_trg_GMove, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER ) TriggerRegisterAnyUnitEventBJ( gg_trg_GMove, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER ) TriggerAddAction( gg_trg_GMove, function GMove ) } }
GSelected - выбор юнита лидера и его отряда
Code
scope Selected initializer Init { "cj_types_priv.j private void GSelectedAdd() { UnitAddAbility(GetEnumUnit(),'A001') } private void GSelected() { unit t = GetTriggerUnit() int id = GetHandleId(t) tr svt=LoadInteger(Hash,id,id) if t!=svt.lider && !IsUnitType(t,UNIT_TYPE_STRUCTURE) { if GetLocalPlayer() == GetTriggerPlayer() { SelectUnit(t,false) SelectUnit(svt.lider,true) } else ForGroup(svt.g,function GSelectedAdd) } t = null } private void Init() { gg_trg_GSelected=CreateTrigger() TriggerRegisterAnyUnitEventBJ(gg_trg_GSelected,EVENT_PLAYER_UNIT_SELECTED) TriggerAddAction(gg_trg_GSelected,function GSelected) } }
GDeSelected - отмена выбора ^
Code
scope DeSelected initializer Init { "cj_types_priv.j private void GDeSelectedRemove() { UnitRemoveAbility(GetEnumUnit(),'A001') } private void GDeSelected() { unit t = GetTriggerUnit() int id = GetHandleId(t) tr svt=LoadInteger(Hash,id,id) ForGroup(svt.g,function GDeSelectedRemove) t = null } private void Init() { gg_trg_GDeSelected = CreateTrigger( ) TriggerRegisterAnyUnitEventBJ(gg_trg_GDeSelected,EVENT_PLAYER_UNIT_DESELECTED) TriggerAddAction( gg_trg_GDeSelected, function GDeSelected ) } }
GLeaderdies - смерть лидера и замена его случайным юинтом из отряда.
Code
scope Leaderdies initializer Init { "cj_types_priv.j private void GLeaderdies() { unit t=GetTriggerUnit(),u integer i=GetHandleId(t) tr svt=LoadInteger(Hash,i,i) call GroupRemoveUnit(svt.g,t) if t == svt.lider { svt.lider = GetRndUnit(svt.g) UnitAddAbility(svt.lider,'A000') UnitRemoveAbility(svt.lider,'A001') GroupRemoveUnit(svt.g,svt.lider) SaveInteger(Hash,GetHandleId(svt.lider),GetHandleId(svt.lider),svt) } if CountUnitsInGroup(svt.g)<=0 { DestroyGroup(svt.g) FlushChildHashtable(Hash,i) svt.destroy() } t = null } private void Init() { gg_trg_GLeaderdies = CreateTrigger( ) TriggerRegisterAnyUnitEventBJ( gg_trg_GLeaderdies, EVENT_PLAYER_UNIT_DEATH ) TriggerAddAction( gg_trg_GLeaderdies, function GLeaderdies ) } }
Сообщение отредактировал Dreii - Четверг, 09 Февраля 2012, 13:33:07
SirNikolas Дата: Четверг, 09 Февраля 2012, 12:27:09 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды:
1
Репутация:
1867
Блокировки:
В код сейчас нет времени вникать, бегло просмотрел.Quote (Dreii )
Code
if CountUnitsInGroup(svt.g)<=0 { DestroyGroup(svt.g) FlushChildHashtable(Hash,i) svt.destroy() }
Все правльно, здесь надо.Quote (Dreii )
Code
struct tr { public unit lider public unit ingr public group g }
Поля и методы структуры по умолчанию публичные. По правилам хорошего тона следует подключать "cj_types_priv.j" в каждый scope, а не один глобальный. Вдруг где-нибудь вне этой системы есть переменная с именем int?
Dreii Дата: Четверг, 09 Февраля 2012, 12:48:02 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
Quote (SirNikolas )
По правилам хорошего тона следует подключать "cj_types_priv.j" в каждый scope, а не один глобальный. Вдруг где-нибудь вне этой системы есть переменная с именем int?
Ок.
Hearling Дата: Четверг, 19 Апреля 2012, 14:48:23 | Сообщение # 4
3 уровень
Группа: Пользователи
Сообщений: 41
Награды:
0
Репутация:
16
Блокировки:
Нечего неполучается
Dreii Дата: Четверг, 19 Апреля 2012, 15:14:13 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
Сейчас позову своего друга-телепата. хмм он затрудняяеться ответить,но я могу предположить что у тебя нет джнгп
Ty3uK Дата: Четверг, 19 Апреля 2012, 15:23:36 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
А мой друг-телепат говорит, что можно было и на классическом жассе написать
Dreii Дата: Четверг, 19 Апреля 2012, 16:28:01 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
Ty3uK , Дуос,выходи.Добавлено (19 Апрель 2012, 16:28:01) ---------------------------------------------
Quote (Ty3uK )
классическом жассе
Quote (Ty3uK )
препроцессор для языка Jass2
Ty3uK Дата: Четверг, 19 Апреля 2012, 16:28:17 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Пиши на жаспе, это все еще я
Dreii Дата: Четверг, 19 Апреля 2012, 16:32:53 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
Ty3uK , Обдумаю концепцию нью проджекта и начнем писать!
Ty3uK Дата: Четверг, 19 Апреля 2012, 16:33:58 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Окей, меня возьмешь к себе? Будешь учить кодить
Dreii Дата: Четверг, 19 Апреля 2012, 16:36:27 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
Нет офк,это тайная разработка спешал фо ми!!
Ty3uK Дата: Четверг, 19 Апреля 2012, 16:43:46 | Сообщение # 12
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Dreii Дата: Четверг, 19 Апреля 2012, 16:53:20 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
имхо дузик и туос в одном подъезде живут
Hexing Дата: Четверг, 19 Апреля 2012, 17:01:25 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды:
1
Репутация:
432
Блокировки:
Quote (Dreii )
имхо дузик и туос в одном подъезде живут
ещё бы наверное они выглядят так: о да, я специально выискивал этот момент
Сообщение отредактировал Hexing - Четверг, 19 Апреля 2012, 17:16:28
Ty3uK Дата: Четверг, 19 Апреля 2012, 17:07:43 | Сообщение # 15
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Уберите плз картинку под спойлер- рвет телефон. А вообще- я живу в Ростове, а Руслан- в Москве
Dreii Дата: Четверг, 19 Апреля 2012, 17:13:43 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
баста гуф
Ty3uK Дата: Четверг, 19 Апреля 2012, 17:15:28 | Сообщение # 17
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Я не рапер =/
Dreii Дата: Четверг, 19 Апреля 2012, 17:16:29 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
Ty3uK , я написал для себя1
Hexing Дата: Четверг, 19 Апреля 2012, 17:17:29 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды:
1
Репутация:
432
Блокировки:
R.I.P. и все это знают... это врядли
Ty3uK Дата: Четверг, 19 Апреля 2012, 17:39:02 | Сообщение # 20
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Почоны, я металлист
Hexing Дата: Четверг, 19 Апреля 2012, 17:44:59 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды:
1
Репутация:
432
Блокировки:
Quote (Ty3uK )
Почоны, я металлист
ну я тоже отчасти, MaSu, soad, Maybeshewill, orange range, но всё же думаю хватить оффтопить
Hearling Дата: Суббота, 12 Мая 2012, 00:15:57 | Сообщение # 22
3 уровень
Группа: Пользователи
Сообщений: 41
Награды:
0
Репутация:
16
Блокировки:
Что надо скачать чтобы система работала дайте ссылки
SirNikolas Дата: Суббота, 12 Мая 2012, 14:42:07 | Сообщение # 23
Группа: Модераторы
Сообщений: 6729
Награды:
1
Репутация:
1867
Блокировки:
29-37497
Hearling Дата: Воскресенье, 13 Мая 2012, 18:24:14 | Сообщение # 24
3 уровень
Группа: Пользователи
Сообщений: 41
Награды:
0
Репутация:
16
Блокировки:
А эта систему абсолютна для всех войск????
Faion Дата: Воскресенье, 13 Мая 2012, 18:46:24 | Сообщение # 25
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды:
0
Репутация:
430
Блокировки:
Quote (SirNikolas )
Поля и методы структуры по умолчанию публичные.
Публичные объекты без приставки public отличаются от объектов у которых нету этой приставки. Конкретно в jass для обращения к паблик объекту из вне, нужно будет использовать имя либы_имя объекта. Если нет приставки паблик, то можно и без имени либы обращаться. В промышленных языках кстати тоже есть разница.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari MAL