DioD
offline
Опыт:
45,134Активность: |
Оптимизация
Цитата:
Здравствуйте все, написал магию на JASS первый раз, но возник вопрос о утечках памяти, помогите кто может, скажите есть ли тут утечки. Мне еще очень надо написать функцию, которая бы возращала компоненты кода constant function Remove takes nothing returns что-то return call remove location x endfunction Где х некая переменная. Зачем это надо? Код становится в 20 раз короче, надеюсь на вашу помощь. Кто нибудь знает как сделать вызов 1 из 3 юнитов дамми без кучи If else. Это надо сделать для того что-бы можно было сделать 3 вида дами атакеров каждый уникален. Отредактировано DioD, 02.03.2006 в 09:55. |
|
02.03.2006, 09:25 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zibada
offline
Опыт: отключен
|
Цитата:
такого делать нельзя. можно извратнуться, и написать функцию создания "самоуничтожающейся" через 0.01 сек точки (вот здесь написано, как такое сделать с эффектами, на точки это легко переносится), тогда не придется никогда писать RemoveLocation вообще... но имхо, это стрельба из пушки по воробьям =) Цитата:
можно как-то так: local integer array u local integer u1 set u[0] = 'xxxx' set u[1] = 'yyyy' set u[2] = 'zzzz' set u1 = u[GetRandomInt(0, 2)] в u1 будет рандомный тип из описанных. для более навороченных случаев, опять-таки, можно юзать кэш. |
||
02.03.2006, 10:28 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Большое спасибо, возник только один вопрос по ожиданию,
Цитата:
Что лучше использовать для тригеров? Вопрос возник после просмотра ДотЫ, там во многих местах встречается Polled. Цитата:
Я всё-же нашел что мне было нужно, может кому-то интересно, вот кусок этой функции. Просто больше спросить негде, так что ногами не бейте. Как известно в картах типа доты 10 игроков и 2 компа, также есть еще 2 стороны, крипы и злые крипы, стоит ли жертвовать нейтралами ради шестого места в командах? Отредактировано DioD, 02.03.2006 в 12:26. |
||
02.03.2006, 12:17 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
DioD оба ожидания в ацтой. Если уж очень приперло вешать очередь триггеров, то лучше call TriggerSleepAction( ) так как он проверки не делает. Лучше использовать таймеры - то есть разбивать функцию на две части и вторую часть заносить в действие таймера. Конечно, если время ожидания невелико, а переменных которые нужны во второй части достаточно много, то можно и TriggerSleepAction
Гм, я, например вообще эти две команды не использую, а PolledWait на мой взгляд - это дурной тон так как он частенько проверяет свое время жизни (и, кстати, из BJ) А каким образом ты хочешь пожертвовать? Компов заменить на нейтралов? Они же воевать не будут друг с другом. Думаю, что это не обязательно. В контре, кстати говоря, командная игра именно 5*5 |
02.03.2006, 14:13 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Как-то я с таймерами не дружу, то ошибки то криво работает, но если не очень трудно, можно ссылку на какой-нибудь готовый пример.
А про замену компов нейтралами, они дерутся, просто необходимо добавить их в карту как игроков.
То-есть выставить им приоритеты врагов и союзников. Я сейчас печатая карту и хочу сделать её особеной и несколько унакальной, именно для этого требуются 6 игроков на сторону.
А ожидания у меня есть почти во всех тригерах, что не особо мне нравится.
И еще один вопрос по RB+Cache , стоит ли делать малый заголовок а необходимые функции выносить в самый верх тригеров которые их используют. |
02.03.2006, 15:16 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Markiz
offline
Опыт:
11,432Активность: |
Netrat: полледвэйт работает нормально при любой скорости игры. |
02.03.2006, 15:50 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Кстати, какие еще полезности есть кроме call DoNotSaveReplay() ? |
02.03.2006, 15:56 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
TiM
Старичок
offline
Опыт:
8,594Активность: |
можно выкидывать читеров в винду путем запуска бесконечного цикла. |
02.03.2006, 16:14 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Вот такие фичи мне очень пригодятся, функцию в студию пожалуста.
Кстати я почти сделал "магию" осталось подогнать под JESP и готово. |
02.03.2006, 16:24 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Markiz да, я знаю, однако мало кто меняет скорость игры, и, потом, это слишком уж Rapidly
TiM есть масса способов намного проще выкидывать и не заниматься фигней типа бесконечных циклов от которых проц в коматоз уходит. Банальный пример - выставить координаты юниту за пределами 65k DioD так ты собираешься выставить Neutral Passive против Neutral Hostile или как? ожидания - это не по-кодерски. Все следует делать на основе событийной модели. Это, конечно понятно, что те же WaitForSingleObject(VC++) в винде реализованы через проверки, однако, они намного более оптимальны чем мы те же проверки делали бы ручками в программе Таймеры нормально работают, просто ты не умеешь их готовить... О чем ты спрашивал в последнем вопросе - что-то не совсем понимаю? |
02.03.2006, 17:15 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Так всем спасибо за ответы, остальное я уже решил при момощи яндекса, всё-таки поисковики это сила.
Я очень долго мучил одну карту AoM , типа век мифов, там это реализовано четко и ясно.
Но вытащить эту туму полностью пока не смог, уж очень там замутно и нет ориентиров типа названий или моделей внутри кода.
А что мешает написаь тему типа если кто то напишет greedisgood = плаер стэйт леав?
Кстати что лучше использовать для хранения констант Глобальные переменные Кеш Константы |
03.03.2006, 07:52 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Константы, конечно, если не получится, то без разницы что. Дело в том что глобалки переносить сложнее, однако доступ к ним осуществляется быстрее чем к кешу
что за карта AoM? - может линк кинь |
03.03.2006, 11:35 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
А мне не надо что либо переносить, я буду эксперементировать с защитой так как могу, может даже сделаю огромную кучу переменных и всё перемешаю а потом оптимизирую.
Тогда код будет нечитаем человеком. Кстати тут реализовано многое что хотели сделать в MyDotA. Только вдобавок сделано то чего в доте нет и никогда небыло. Отредактировано NETRAT, 03.03.2006 в 14:24. |
03.03.2006, 13:43 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Ну, вообще-то по слухам в MyDota реализовано достаточно...
Смысл в том что разобраться в любом коде вполне реально - всегда стоит вопрос - стоит ли то время, которое было потрачено на обфускацию того эффекта, который получен в результате. То есть возьмем, к примеру, Доту - в ней разобраться и убрать результаты обфускации достаточно просто (кстати говоря ее параллельно можно значительно оптимизировать) однако займет около 8 часов(во всяком случае у меня), зато после этого я точно буду знать что к чему и смогу делать с нею все что захочу. Имеет ли для меня смысл потратить на это 8 часов? На данный момент - нет Тогда зачем еще все усложнять? Увеличить время которое я должен буду потратить? Так ведь я его и так не стану тратить... спасибо за линк |
03.03.2006, 14:22 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Лично мне непонятно стремление некоторых личностей защитить свои творения всеми мыслимыми и немыслимыми способами, особенно это относится к доте.
Так как я используя ориентиры - линки на модели внутри кода, очень быстро разбил весь код на группы. Лично я своими скромными знаниями заметил только переименование переменных и ничего кроме, функции не перемешаны и не собраны в кучу, любой тригер можно достать и восстановить. Кстати, я не обнаружил РБ+кеш внутри заголовка доты но в различных его частях наблюдается одно и тоже. Кстати мне очень нужен конвертер стринговых команд в числовой набор. Так как через список неудобно работать. Всё нашел сам, но возник один вопрос чисто по джазу. Инициация многих тригеров написана так Цитата:
Зачем это сделано, я не понимаю. Отредактировано DioD, 04.03.2006 в 12:12. |
|
03.03.2006, 15:23 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Цитата:
Я всегда пишу в логическом порядке то есть Код:
|
|
04.03.2006, 13:37 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Скажу большой секрет, это скатер из доты так как он был, только переименованы переменные.
А кусок тригера с локалкой это компонент такого навыка как импектус, который сделан через глобальные переменный и воще непонятно как работает. |
04.03.2006, 13:58 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioDUnderCry
Access Denied by NETRAT
offline
Опыт:
92Активность: |
Здрасте все.
Мне нужно написать функцию для превращения любого кто атакует союзника в овцу. Цитата:
Так вот эту функцию мне надо написать и разместить так что-бы написав call TA2Sheep Эта функия запускалась |
|
05.03.2006, 11:14 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Медведь
ФффыррфррфффФФфф!
offline
Опыт:
21,702Активность: |
DioDUnderCry её надо написать в кастом-коде карты. Подробнеее - в редакторе тригов, справа, где древовидный каталог триггеров и категорий жмёшь на значок карты, в самом верху. Слева появляются:
--поле для комментариев (верх) --поле для кода (низ) вот в это нижнее и пишешь функцию ЗЫ ну не хотите вы ФАКи читать, так хотя бы World Editor Help зади и прочти! |
05.03.2006, 22:24 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Медведь ну если учесть что DioD и DioDUnderCry - один человек, то для меня достаточно странно, если он не знает что такое кастом код ... я вообще не понял суть вопроса, учитывая набор постов этого пользователя в этой теме
|
05.03.2006, 22:27 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|