32

» WarCraft 3 / Отказ от катологизации предметов.

Всякие генераторы баз данных, же были, ну взял и записал.
Ну а теории все впросто, если 'I000' первый, 'I001' второй и так далее, то можно перебрать все предметы но только нестандартные, весь дефолт не подчиняется этому правилу.
32

» WarCraft 3 / Автокаст Канибализма

ssbbssc:
quq_CCCP:
+надо отслеживать, что гуль стоит на месте и ничего не делает, так как каннибализм - channel spell
А что там отслеживать - текущий приказ не равен - канибализму, то значит остановить реген.
Так же юзать канал никто не мешает.
32

» WarCraft 3 / Автокаст Канибализма

Никто не вспомнил про автокасты работающие на трупов? Ну вы блин даетее, скилл оживить скелета, для основы триггер с событием вызывает скелета, ну а там уже хилите хп гулю, удаляете скелетов и проигрываете анимацию...
32

» WarCraft 3 / Бафф Slowed

Ну разумеется дело в способностях, а именно в ледяных стрелах, дыхании ходода и фрост нове - от этих способностей юниты синеют.
32

» WarCraft 3 / Как добавить в локальную переменную способность?

nvc123:
quq_CCCP, нафига плодить действия
берём таймер
берём список
профит
Знаешь есть у юнитов такое свойство умирать, а когда начинаешь убирать им эффект от спелла (там спеллбук с элуной) фатал выскакивает.
32

» WarCraft 3 / Как добавить в локальную переменную способность?

nvc123, Пришлось, сделать так часть абилок - ибо задолбали фаталы на ровном месте.
Ну конечно можно обойтись одним триггером на всех, просто плодя действия триггеров но это точно не для гуи.
32

» WarCraft 3 / Как добавить в локальную переменную способность?

Такое нужно реализовать не на GUI.
Для начала делается ключ строка для каждого баффа, с помощью функции StringHash а потом по этому ключу записывается триггер, который следит за событиями:
  • Время истекло
  • Юнит умер.
  • На цель применили одну из рассеивающих способностей (если планируется сделать бафф рассеиваемым)
При каждом касте на юнита проверять а есть ли по заданному ключу триггер, если нет то создать и сделать все необходимые эффекты, а если уже есть то сбросить счетчик (таймер) и проверить уровни (если у баффа много уровней) обновляя эффекты.
Реализация не из простых, но самая безопасная и удобная.
32

» WarCraft 3 / Пара вопросов

  1. можно только модель героя, которая будет прикреплена в качестве спецэффекта к дамми юниту с особыми анимациями.
  2. Удалить и добавить снова, или юзнуть книгу забвения (учитывая что это руна это совсем изи) а затем приказать герою выучить все скиллы кроме нужного тебе, ну или как то иначе.
32

» WarCraft 3 / Abilities Cooldown

Есть, ретун баг - но увы, пока не релизнуты примеры говорить об этом можно еще долго.
Есть вариант рисования левого кд на предмете, реализовано у меня в карте.
Так что пока техника.
32

» WarCraft 3 / Утечка при создании юнита

Включите мозги! Я вас спросил в надежде что вы одумаетесь, но нет...
Кароче вы создали юнита, а удалять его кто будет? Ау, юнит точно такой же хендл, который висит в памяти, переменную то вы обнулили а юнита удалить забыли..
Не создает ваш код никаких утечек!
32

» WarCraft 3 / Утечка при создании юнита

Ты уверен что это юнит создает утечку? Кол-во хендлов растет, ибо юнит то никуда не делся...
32

» WarCraft 3 / Не работает цикл в jass

Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
32

» WarCraft 3 / Как удалить !!область!!

Lotus101:
Из-за области создаются утечки? Вверху пишут, что удалять не надо, то есть утечек нет?
Какие утечки? Утечки от локейшинов.
32

» WarCraft 3 / Как удалить !!область!!

darkowlom, еще 1. Подумай внимательно какие координаты будут взяты от несуществующей области.
32

» WarCraft 3 / Как удалить !!область!!

А нахрена удалять область? Если нужно всего лишь отключить триггер спауна (или таймер)
Чувак ты думай что делаешь, ахинею же написал...
32

» WarCraft 3 / Отданный приказ

antonpoganui:
nvc123, предмет-цель
Проверил если GetSpellTargetUnut == null проверяешь потом GetSpellTargetItem если не равен null то цель предмет..
32

» WarCraft 3 / Защита карты

nvc123:
quq_CCCP, мб ты имеешь ввиду не хеш а адрес в таблице
ибо хеш это результат действия хеш функции и для 1 и той же строки он не должен меняться(один из пунктов определения)
Ну функция везде именуется StringHash но она возвращает именно адрес как ты и написал, а не инт от балды. Это нам и нужно, "" - первая строка в карте, а последнюю нужно найти, глядя что по адресу последней строки в карте можно сделать вывод модифицировали ли код или нет?
32

» WarCraft 3 / Как лучше учится созданию карт?

Lotus101, ты что юмора не понимаешь? Лол, защита от копирования - это не для тебя, раз спрашиваешь.
32

» WarCraft 3 / Защита карты

ssbbssc:
quq_CCCP:
кук, ты говорил о проверке размера карты
а как ты запишешь число-размер-ключ, если после сохранения он опять изменится?
Ну ты сначало смотришь на что изменится, а потом сохраняешь с проверкой, что мешает узнать какое оно будет в игре?
32

» WarCraft 3 / Защита карты

Astra:
Смысл по сути тот же что и сравнивать значения заголовков от первой до последней строки через хэш-таблицу. Так и без РБ можно сделать.
Без рб низя залезть в именя функций, хеш от сроки (именно хеш а не всякое гно) можно тока через рб.
32

» WarCraft 3 / Защита карты

Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.