Steal nerves #1 - 9 часов назад (отредактировано ) 0

» WarCraft 3 / Система покупки и продажи предмета

Решил добить эту систему, но что-то не понимаю, почему так происходит (логически все верно). Мне кажется дело в варе, а не в коде.
» пример
Вот, допустим, у вас есть пустой магазин, и кучу валяющих айтемов.
Вы забиваете полностью магазин предметами. У вас ограничение максимум 11 слотов, больше не может занять. Дебаг пишет, что максимум 11. Там своего рода счетчик. Короче удаляется у магазина абилка 'Apit' (Лавка: Продать предмет), вы не сможете ничего продавать в этот магазин, так как удалена абилка.
Далее покупаем "талисман здоровья", счетчик становится 10. Абилка 'Apit' (Лавка: Продать предмет) добавляется обратно
Далее покупаем "пояс богатыря", счетчик становится 9.
Следом - прикупим "перчатки скорости". счетчик становится 8
покупаем "флейту меткости". счетчик становится 7.
покупаем "одеяние мага". счетчик становится 6.
не хватило места, поэтому будем продавать. часто багуется тогда, когда итемы закладываешь в магазин. Короче может быть так что пропадает из магазина какой-то итем. В этом и баг. Например, продажа произошла, а в магазине новый итем заменил слот со старым, а старый пропал. Или просто пропадает. Увидите ниже. Не знаю, в чем дело. Очень бесит.
Продаю "сапоги скорости", счетчик становится +7
продаю "талисман здоровья", счетчик становится +8. А вот на самом деле в магазине предметов всего 7. Пропало кольцо защиты из магазина.
продаю "пояс богатыря", счетчик становится +9. !!А на самом деле в магазине предметов по прежнему становится 7. Пропал "Огненный плащ".
продаю "перчатки скорости", счетчик становится +10. Конечно изменилось немного +8 стало
продаю "флейту меткости", счетчик показывает +11 (все, я больше не могу продавать/закладывать в этот магазин, так как абилку 'Apit' (Лавка: Продать предмет) удалил). Кол-во итемов в магазине +9
Хотел бы по-другому:
если было бы известно какому магазину ты продаешь, а так сложно узнать. регулировать поставки итемов в магазин и их продажу.
прикреплены файлы
Steal nerves #2 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / Выброс в главое меню

сложно сказать. вы же нам не показываете код или карту, ошибки
вам нужно выключить Cjass, скачать Pjass.exe и возможно где-то ошибки из-за не существующих данных. у меня часто критовало из-за того, что я обращался к данным несуществующих юнитов. А допустил ошибку в массиве. еще нужно антивирус выключать, и на виндовс 10 выключить антивирус. Представь на 10-ке что-то блочит JNGP.
ну вылет у меня был из-за обращения к Memory с малым адресом и др
переписывал все подобные операции с уровня кода (кроме инициализации хака) на RMem/WMem с проверками. Пока в интернете не нашел пофиксинную. там где возвращает несуществующие, будет норм возвращать нули или нужные значения, чтобы вар не вылетал. Советую с Драколичем пообщаться
я всегда на рабочий стол сохраняю. и карту на английском языке. надо 2 раза сохранять. выдает хоть какие ошибки jass hepher?
вот пример скинул новой версии - карта C +исходники

старая версия
Бери этот мемхак xgm.guru/p/wc3/179535 - оттда скачай pjass.exe
вот пример старой версии - карта Test
прикреплены файлы
Steal nerves #3 - 1 неделю назад (отредактировано ) 1

» WarCraft 3 / Очередные вопросы по триггерам

PT153:
Вспомнил про один баг. Есть сделать PauseTimer() на периодический таймер, а потом на этой таймер использовать ResumeTimer(), то таймер повторит свой цикл лишь раз, а потом остановится.
сам не пользуюсь ResumeTimer, но щас проверил, действительно не работает что-то. Видимо, это работает только тогда, когда таймер не до конца дошел.
можно обойтись и без ResumeTimer
понимаю, ты хочешь сделать какое-то ограничение после возвращения урона. Спустя 3 секунды возвратка может снова возвращать урон.
» Можно было сделать по-другому.
Еще не понимаю, зачем нам нужен периодический таймер.
  1. можем логическую переменную b завести и таймер t
  2. нанес противник урон = проверяем логическую переменную, если истина, запускаем одноразовый таймер, и ставим ложь в логической переменной = false
if b then 
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.​?mdl",u,"origin"))
call UnitDamageTarget(udg_u,u,r*5,false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
call BJDebugMsg("Reflected:"+R2S(r*5))
call TimerStart(udg_t,0.5,false,function t3a)
set b = false
endif
  1. когда таймер запустится
function t3a takes nothing returns nothing
    call PauseTimer(udg_t)
    set b = true
endfunction
думаю все что надо это call ResumeTimer() заменить на call TimerStart()
Steal nerves #4 - 1 неделю назад (отредактировано ) 2

» WarCraft 3 / Как дать возможность выбора расы через лобби?

eriel222, +
в Necris тоже сделан выбор через диалоговое окно. Там правда менюшки и голоса с музоном не поменяешь, выдают интерфейс с музыкой тот что указано в слоте. Зато выбираешь на какой стороне герой будет спавнится. Здесь тоже самое, можно выдать диалоговое окно с кнопками, где нужно выбирать расу. и заспавнить базу на карте, по-моему в какой-то карте сделано похоже было.
Steal nerves #5 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / Очередные вопросы по оптимизации

PyCCKuu_4eJl, прочитай вот этк тему xgm.guru/p/100/192427 особенно про то что макс число на каждого игрока, и что их обнулять нет смысла
блин не в эту тему. ну ладно
Steal nerves #6 - 1 неделю назад 0

» WarCraft 3 / Очередные вопросы по оптимизации

PyCCKuu_4eJl, прочитай вот этк тему xgm.guru/p/100/192427 особенно про то что макс число на каждого игрока, и что их обнулять нет смысла
Steal nerves #7 - 1 неделю назад (отредактировано ) 1

» WarCraft 3 / Очередные вопросы по оптимизации

Если нет задержек, то локалки нет смысла использовать - в основном для удобства.
Там все потоки выполняются последовательно. Друг за другом идут потоки - переменные никогда не могут перезаписаться. Такое не видел. Например, запустилось событие - пустили поток: сработало условие, действие. Все. Запускается следующий поток - либо событием либо таймером. Короче потоки одновременно не могут в одно и то время работать. Иначе бы триггеры в варе не работали из-за станд варкрафтоских переменных - тогда бы значения в варкрафтовских переменных перезаписывали в ходе потоков.
Потоки мгновенно срабатывают, за одно мгновение можно много потоков запустить можно - и вам будет казаться, что сработало сразу или одновременно. Это можно проверить дебагом, выводи текстом в какой последовательности выходят потоки, и тут увидите, что потоки последовательны. Вам могут еще помочь эти функции ссылка
Обычно риск есть только во время паузы или задержки, ибо глобалки перезаписываются во время задержки, например через 5 минут в одной переменной может оказать другой юнит. Поэтому локалки и используют. Еще локалки используют тем, кому лень глобалки плодить
Steal nerves #8 - 1 неделю назад (отредактировано ) 1

» WarCraft 3 / Очередные вопросы по оптимизации

нет, достаточно одной глобалки bj_lastCreatedTextTag на все. И тогда не нужна никакая локалка. Так использую во многих системах, и работает. Глобалка bj_lastCreatedTextTag является темповой - ну то есть временной ссылкой, чтобы что-то там сделать дальше: цвета прозрачность настроить, время жизни и так далее.
Раньше давно-давно тоже думал, что нужно прям везде и на всё локалки ставить для мультиплеера. А как оказалось нет. Работает и глобалка. Дело в том, что у тебя задержек никаких нет, то и локалки не нужны. Потому что делаешь лишние операции - объявить - обнулить. Ну и во-вторых, у текстагов можно задавать время жизни, сами удаляться.
Steal nerves #9 - 2 недели назад 0

» WarCraft 3 / Воскрешение всех героев

мне кажется дело во втором условии. Там где проверяешь TriggeringUnit is Hero. Так как триггеринг юнит работает только по событию. попробуй удалить
Steal nerves #10 - 2 недели назад (отредактировано ) 0

» WarCraft 3 / Воскрешение всех героев

epsilon_eridana, я не знаю чего у вас там не работает. поэтому и предложил с тем случаем которым сталкивался я сам. Просто я в начале не подумал, что из-за нехватки пищи. Но это действие работает.
кстати по скринам мб быть нужно событие и действие в одном триггере нужно ?
Steal nerves #11 - 2 недели назад 0

» WarCraft 3 / Воскрешение всех героев

недавно делал воскрешение, и не мог воскресить героя. Система просто не хотела работать. думал дело в
-Герой - Instantly revive (Triggering unit) at (Position of (Triggering unit), показать revival graphics
а как оказалось, пищи не хватало, и юнит не воскрешался. у меня много футманов наплодилось, которые жрали еду.
Steal nerves #12 - 2 недели назад (отредактировано ) 2

» WarCraft 3 / Способности, не прерывающие текущий приказ

ссылка
не прерывается приказ почти у любой абилы без цели. В большинстве случаев, останавливаются, чтоб заюзать скилл. А потом продолжают делать те действия, которые оборвал. Типа Рев. Есть длительные касты, например: заговор неуязвимости, он остановится, попрыгает (channeling-анимация), и потом дальше будет идти. Или заклинание крови дракончика.
А вот тех, из-за чего еще и не останавливается на ходу, совсем мало
То есть если я поставлю в очередь приказы постройки, а в середине использую эти способности, то очередь прервётся?
можно проверить
Steal nerves #13 - 2 недели назад (отредактировано ) 0

» WarCraft 3 / Отлов строящего юнита

DarkLigthing, ну это не совсем верно. Юнит вряд ли по прямой линий двигаться будет. Мб будет обегать вокруг ёлок и гор. Да, движение равномерное, но не прямолинейное. Хотя в TD-шках у строителей почти не бывает преград - делаем летающим, и все.
Steal nerves #14 - 2 недели назад (отредактировано ) 0

» WarCraft 3 / Отлов строящего юнита

xgm.guru/p/100/195412?postid=359072#comment1 кто-то задавал такие вопросы. Сейчас в патче 1.26 нельзя определить строителя (только через костыли, и то это работать будет норм?!), но обещали завести в следующих патчах. Не знаю, есть ли там. В одном видосе рассказывали
можешь отслеживать:
  1. выдача приказа - Id-приказ - это rawcode. Так узнаем какое здание строится, и кто его строит, и где ее строит. Проверяем, чтоб приказ не изменился.
  2. проверяем через событие "юнит начинает строительство" - проверяем какой тип здания строится, и где строится.
А вот между этими двумя надо как-то связать
Steal nerves #15 - 2 недели назад 0

» WarCraft 3 / Равкод 'A00\'

PT153, я не использовал vJass, короче jasshelper. можно вместо символа записать цифрами.
Steal nerves #16 - 2 недели назад 0

» WarCraft 3 / Равкод 'A00\'

DracoL1ch, если я хочу '\' мне надо '\\'? Короче дебагом проверять надо.
инфа полезна, тоже как-то делал такую ошибку
'\\' = 92
'\' - вылетает в меню
'[' = 91
'\\' = 92
']' = 93
Steal nerves #17 - 2 недели назад (отредактировано ) 2

» WarCraft 3 / Продажа юнита

можно использовать в вашей карте в качестве базы данных какие-то неиспользуемые поля (например уровень юнита GetUnitLevel, опыт за убийство GetUnitPointValue/GetUnitPointValueByType). Используем канал. При продаже можешь проверять уровень, и давать точно такое же значение.

Еще есть Custom Value of Unit (GetUnitUserData) - но это значение нам не поможет, дело в том, что когда юнит создается в игре, у него это значение изначально равно 0. Вы не узнаете сколько. Ибо в ро кажется нельзя задать, только триггерах можно менять

Придется использовать бд - на каждый тип юнита забиваете значение.
» На хэш-таблице легко делается, ибо достается по ключам.
Ключ = это целое число. Тип юнита = rawcode = целое число.
parentKey - родительский ключ
childKey - младший ключ
Действие - Сохранить в Хэше по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=0) целое число (указываем золото)
Действие - Сохранить в Хэше по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=1) целое число (указываем дерево)

Достаем точно также:
Загрузить из Хэша целое по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=0)
можно также
<переменная> = Загрузить из Хэша целое число по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=0)
можно проделать так с каждым типом юнита, при инициализации все это подсохраняется в хэш.

левым игроком попробовать через даймика построить здание где-нибудь в невидимом уголке, и проверять разницу между "было золота" и "стало золота". И удалить здание с дамми.

попробовать нейтральным игроком купить этого юнита. И проверять разницу.

рассеять здание 'Auns' - это типа продать здание. При рассеиваний наносится урон зданию (ловится дебагом это в качестве урона от лица кастера). Урон относится к типу атаки "Заклинание", не понижается защитой. Поле "шаг накопления" - здесь указывают урон. В поле "коэффициент стоимости спасения" - указывают процент от стоимости здания (дерево и золото, указанных в ро здания), типа возвращает какой-то процент затраченных ресурсов на создание здания. Время действия заклинания не указано, это значит, оно действует до сих пор, пока здание не уничтожится. Урон наносится каждую секунду.
Формула вычисления прибавленного ресурса за 1 секунду: Ресурс=Cost/(hp/damage)*p

использовать трансмутацию. За уничтожение юнита дает деньги за стоимость. Правда, целевая. но.. не точное. можно на сайте поискать про трансмутацию.
PT153,
Действие - Add Integer(0.70 x (Real(Point Value of Casting Unit))) to (Owner of Casting Unit) Current Gold
Добавить игроку к текущему значению золото
Steal nerves #18 - 2 недели назад (отредактировано ) 3

» WarCraft 3 / Где находится способность "Постройки" зданий?

ссылка смотри раздел "строительство"
иконку нужно менять у способности "строительство", у каждой расы оно разное. У них отсутствует описание, но его можно поменять в
Описание кнопок и горячие клавиши (hot keys) находятся в Units/CommandStrings.txt
Изменить также можно в "дополнительно"->"игровой интерфейс"
чтобы было 2 меню. нужно делать 2 разных юнитов = морф.
пробовал делать через спелбук с кучу игрушечных здании, но так не получится
Steal nerves #19 - 2 недели назад 2

» WarCraft 3 / Система формаций как в Warcraft 3 ROC

Во-первых, у юнитов должны быть редакторе указаны построения (характеристики - построение: 0 - воины на передовой, 2 - воины позади, насчет других не знаю, но посмотри у стандартных что означают другие цифры). Во-вторых, все созданных нужно добавлять в группу, и потом отдавай приказ группе
вот
прикреплены файлы
Steal nerves #20 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Хак на память Warcraft3

Кстати, у меня из-за обновления виндовс 10, теперь не всегда охотно работает JNGP (хотя добавил в исключения). Даже некоторые купленные игры не работают. такие уж придурки маркрософт.
Приходится заранее выключать антивирус виндовса, чтоб включить.
а в программе Word теперь не могу читать в спец-режиме. нафига 5000 офис покупал
Steal nerves #21 - 3 недели назад (отредактировано ) 4

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

eriel222:
Можете скрином или т.п. показать? не могу понять, как вы предлагаете это сделать
  1. Ну, объявляете локалку и создаете группу или используете глобалку (тогда ничего не надо пересоздавать, просто очищаете группу)
  2. выбираете всех юнитов, находящих в области, в группу, с подходящим условием f1
call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea ,f1)
  1. проверяете кол-во юнитов в группе
  2. если глобалка очищаем группу, если локалка - обнуляем ее
Есть другой вариант - счетчик. Проверяете всех, кто вошел (прибавляете). И всех, кто вышел (убавляете). Можно проверять на смерть
Steal nerves #22 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Как пользоваться нативкой UnitHasBuffsEx?

UrsaBoss, разные типы, при чем они могут взаимодействовать (например положительный магический бафф)
native UnitHasBuffsEx takes unit whichUnit, boolean removePositive, boolean removeNegative, boolean magic, boolean physical, boolean timedLife, boolean aura, boolean autoDispel returns boolean
native UnitRemoveBuffsEx takes unit whichUnit, boolean removePositive, boolean removeNegative, boolean magic, boolean physical, boolean timedLife, boolean aura, boolean autoDispel returns nothing
removePositive - позитивный / removeNegative - негативный
magic - магический / physical - физический
timedLife - время жизни (у призываемых существ)
aura - ауры
autoDispel - ??? (скорее всего есть какие-то скилы с баффами отключающие)
Для конкретной проверки есть Unit Has Specific Buff
можно проверять самому. берешь создаешь тестовую карту, создаешь двух юнитов, создаешь триггер с периодической проверкой дебагом и проверяешь у одного из них есть ли бафф. И в игре проверяешь
Steal nerves #23 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Хак на память Warcraft3

лучше бы обновлялись данные версиями мем хака
quq_CCCP, а где вы публикуете? пробовал найти свежую версию, так час искал. Пока в теме не нашел (как потом оказалась, что свежее есть еще в вашей системе урона).
Steal nerves #24 - 3 недели назад (отредактировано ) 5

» WarCraft 3 / Как создать сплеш способность и правильно её настроить?

ну так на основную цель этот урон не распределяется. Распределение урона в % идет от атаки героя основной цели. Распределительный урон наносится окружающим вражеским юнитам.
вот атака 140, а остальным врагам (35% от атаки - это 140*0.35=49 урона)
тут распределение идет от величины атаки, а не от урона (не путать)
вот
вот
Steal nerves #25 - 4 недели назад (отредактировано ) 2
Steal nerves #26 - 4 недели назад 0

» WarCraft 3 / Не подойти к зданию, а встать в него

8gabriel8, тфу затупил я. не внимательно прочел
Steal nerves #28 - 4 недели назад 2
Steal nerves #29 - 4 недели назад 0

» WarCraft 3 / Воскрешение Героя

делал воскрешение, и не мог сделать нормально. А как оказалось, пищи не хватало (у меня наспавнилось много войск), и поэтому не воскресал герой. я то думал, дело в триггере.
Steal nerves #31 - 1 месяц назад (отредактировано ) 0

» WarCraft 3 / Knockback

Msey, пробовал его код вставить, у него это влево все время ехать юнит будет (либо код не правильный либо не все показал). =(
nvc123, в вашем коде float distance можно убрать, ничего не делает =(
прикреплены файлы
Steal nerves #32 - 1 месяц назад (отредактировано ) 0

» WarCraft 3 / Knockback

вот переделанная мной карта по быстрому (но надо еще проверки делать, чтобы не заехал за карту или в кустах не застрял, и проверять может лить ходить вот ссылка раздел 3. пункт 3.). только не знаю это то, что тебе нужно было ли.
прикреплены файлы
Steal nerves #33 - 1 месяц назад (отредактировано ) 1

» WarCraft 3 / Knockback

попробуй наработки под себя подмять вот
еще вот
смотрю на код, и не понимаю. Нужно чтобы он вперед толкал (просто данных мало, берет координаты одного и того же юнита)? тогда зачем нужно было высчитывать угол между двумя точками, брал бы угол взгляда юнита, и крутил вперед. еще проверку надо делать, чтоб за границу карты не вылетел юнит и может ли там двигаться
тут должна быть относительность чего-то либо. Либо от угла взгляда кастера или от угла взгляда цели, или угла между точками. А так он едет влево или вправо, или еще куда.
Steal nerves #34 - 1 месяц назад (отредактировано ) 3

» WarCraft 3 / Выявление утечек в коде имитации крипов в МОБА (как в Доте)

nvc123, а мне кажется группа влияет на то как они ходят. не зря же порядок ходьбы выстраивается. а так бы ходили бы линейкой

хотя проблем групп что они весь путь вряд ли будут ходить отрядами. Например, при перенаправлении там юнита посылают дальше, а не отряд. Событие "юнит входит в регион" ловит юнита. Тогда надо как-то переделывать, что ли отряды запоминать.

кстати можно потом области добавлять в один большой регион. А событие накидывать на регион. Как кто-то вступит в одну из области, то можно проверить условием, что за область (условие юнит находится в области как-то так называется). потом перенаправлять на следующую. не нужно плодить кучу триггеров и кучу регионов
прикреплены файлы
Steal nerves #35 - 1 месяц назад (отредактировано ) 0

» WarCraft 3 / Как сделать способность цель-юнит с обходом имуннитета к магии

Ну в идеале только канал пробивал иммунитет к магии (если понял о чем идет речь). Иначе будет писать "Не удалось натравить заклинание". Если говорим не про АОЕ-шные скилы
есть некоторые скилы, которые накидывают дебаффы или наводят на него (например перст боли, но урон иммунному не наносится. больше свожу к выводу, что это магический урон) ссылка
quq_CCCP, что значит высшая? эта та, которая 6 уровне?
есть в константах
"Баланс: невосприимчивость к магии защищает от высших заклинаний" - Определяет, будет ли невосприимчивость к магии защищать от заклинаний, которые становятся доступны для изучения на 6-м (по умолчанию) уровне. По умолчанию константа равна "Нет".
это нашел в интернете. Похоже не все геройские абилки работают, а только "высшие". Все понял:
Любая высшая способность ( геройская, требуемый уровень выше 1 ).
Steal nerves #36 - 1 месяц назад 0

» WarCraft 3 / Удержание позиции вместо атаки

STALKERfree, то что ты скинул на скрине работает (проверял). Может быть есть что-то еще из-за чего не работает?
Steal nerves #37 - 1 месяц назад (отредактировано ) 0

» WarCraft 3 / Удержание позиции вместо атаки

STALKERfree, этот приказ точно "удерживает позицию"? конвентируй в jass и посмотри что за приказ стоит. потом верни на гуи.
нужен приказ holdposition
Steal nerves #38 - 2 месяца назад 0

» WarCraft 3 / Катакомбы

сделай ИИ, скучно играть одному
Steal nerves #39 - 2 месяца назад (отредактировано ) 0

» WarCraft 3 / Хак на память Warcraft3

а можно ли узнать текущую дальность обзора юнита? или как-то на обзор юнита влиять (подзорная труба не в счет, так как ограничение в 1800)
Steal nerves #40 - 2 месяца назад (отредактировано ) 0

» WarCraft 3 / Как использовать "Walk Fast" после приобретение сопогов

смотри тут про скорость
можно триггерно попробовать, но есть баг с сапогами. см. выше по ссылки
еще можно юзать активный скилл, вешая бафф. А когда снимаешь сапоги, удаляй бафф. (можно юзать руну, приказ не сбивается и юнит не останавливается чтобы юзнуть)
Steal nerves #41 - 2 месяца назад 2

» Commander! Blue Alert / Доклад Разведки: "мучитель" альянса

выкладывал бы фотки на сайт. А то через 10 лет зайдет кто-нибудь туда, и не увидит ничего на файлообменнике
Steal nerves #42 - 2 месяца назад 3

» WarCraft 3 / Два простейших вопроса по спеллбукам

смотри
  1. да, верно. ID-приказ ничего не делает у spellbook-а. Никак триггерно не вызвается, не отслеживается. Но зато одинаковые книжки с ID-приказом склеиваются, точнее склеивается их содержимое. Это не значит, что иконка 2-го спелбука пропадет с панели команд. При открытий 1-ой книжки или 2-ой книжки у вас будет отображаться 10 скилов (там и там). Даже, триггерно не заставить юнитов юзать лежащие скилы в spellbook-е (у меня орк не хочет юзать скилы в спелбуке)
  2. неизвестно. обычно открывается у игрока. А вот открыть и заюзать через триггеры не удается.
Steal nerves #43 - 2 месяца назад (отредактировано ) 0

» WarCraft 3 / Какие баги существуют у темного? И что их вызывает?

Все понял из-за чего атака и здоровье удваивается (только у героев):
Просто при добавлений темного, я удалял старый морф (абилку) и поэтому у меня не было наслоения.
если повторно дать темный - у него удвоится базовый урон.
но запас здоровья не удваивается. Если прочесть книжку, увеличивающий запас хп (медицинский трактат), то позже при повторном получении темного увеличивается здоровье.
Steal nerves #44 - 2 месяца назад (отредактировано ) 0

» WarCraft 3 / Какие баги существуют у темного? И что их вызывает?

Raised, это читал. все равно не то. хочу знать другое. Не ищу способ решения, ищу то что эти баги вызывает.
Steal nerves #45 - 2 месяца назад (отредактировано ) 0

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

Alexander122, ну он хочет управлять юнитами по команде. Мб быть скорость триггерно снижать.
кстати, классификация рабочий довольно странная штука. У меня почему-то единственный рабочий из всей группы рабов, на котором тестировал все удары и уроны, иногда агрится и бежит драться, остальные убегают. Не понимаю, что в нем такого особенного (на него я навешал кучу дебагов)? Еще рабы могут агрится на вражеских рабов
Steal nerves #46 - 2 месяца назад (отредактировано ) 0

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

Через триггеры можно отключить ии у юнита (если этот юнит управляется ИИ-скриптами), это в триггерах разделе ИИ все есть:
ИИ - Действие Ignore Guard Postition (на jass RemoveGuardPosition)
а вот этот вопрос
Как сделать так, чтобы юнит вообще никак не реагировал на атаки, врагов, которые к нему подходят.
это другой вопрос. юнит не может не игнорировать атаки врагов. это у него в модели поведения так устроено. он побежит драться. мб классификация рабочий спасет?
Steal nerves #47 - 2 месяца назад 0

» WarCraft 3 / Что делает Константа: "Баланс: объединение астрального урона"?

Понял, включает бонус от таблицы.
Например, буран, наносящий 30 урона. Союзный юнит и мой получают по голове 30 урона. После включения константы получает 49.8 (30*1.66=49.8 урона).
Тут не только АОЕ-способности. Любые способности, которые способны причинить вред себе, союзным и своим юнитам.
Вот ярость проклятых: 4 урона в секунду наносит указанному юниту. После включения константы получает 6.64 урона в секунду (4.00*1.66=6.64 урона)
Steal nerves #48 - 2 месяца назад (отредактировано ) 5

» WarCraft 3 / Что значит игрок-иницатор?

Игрок-инициатор (видимо Triggering Player) это тот, кто запустил событие. Событие общее обычно вешают, регистрируют на игрока.
если заглянуть в код jass, мы увидим нативку регистрирующая событие на игрока
native TriggerRegisterPlayerUnitEvent takes trigger whichTrigger, player whichPlayer, playerunitevent whichPlayerUnitEvent, boolexpr filter returns event
есть "Боевая единица - Generic unit event" - регистрирует на юнитов всех игроков
есть "Боевая единица - Player-Owned unit event" - регистрирует на юнитов определенного игрока
Например, в событии "юнит умирает" инициатором является юнит, который умер. Ссылаются на него две переменные Triggering Unit и Dying unit. Еще есть юнит, который убил его - Killing Unit.
Triggering Player = Owner of (Triggering Unit) Перевод: Игрок-инициатор = Владелец Triggering-юнита
Есть отдельные случаи, это когда события вешают не на всех юнитов игрока, а на определенного юнита.
native TriggerRegisterUnitEvent takes trigger whichTrigger, unit whichUnit, unitevent whichEvent returns event
Например, событие "юнит получает урон". Там вот инициатором является только Triggering Unit. А не игрок Triggering Player. Хотя я дебагом проверял, у меня Triggering Player работает и здесь.
Кроме этого есть еще события не связанные с юнитами игрока. Например, игрок ввел в чат, нажал на кнопку, проиграл, выиграл, вышел и так далее.
Steal nerves #49 - 2 месяца назад (отредактировано ) 0

» WarCraft 3 / как вписать номер предмета из редактора в текст

кстати, автору нужно чтобы из строки из 4 символов перевести в число. эту строку так понял вводит через чат, а потом по этим символам создает итем. Проблема в том, что у меня не хочет создавать. Дебагом вывожу, вроде все правильно (число правильное: онлайн-калькулятором проверял и сравнивал с тем. что выдавал дебаг), а итем не создается. Не понимаю почему
» пример 1
function Char2Id takes string c returns integer
    local integer i = 0
    local string abc = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    local string t

    loop
        set t = SubString(abc,i,i + 1)
        exitwhen t == null or t == c
        set i = i + 1
    endloop
    if i < 10 then
        return i + 48
    elseif i < 36 then
        return i + 65 - 10
    endif
    return i + 97 - 36
endfunction

function String2Id takes string s returns integer
    return ((Char2Id(SubString(s,0,1)) * 256 + Char2Id(SubString(s,1,2))) * 256 + Char2Id(SubString(s,2,3))) * 256 + Char2Id(SubString(s,3,4))
endfunction

function Id2Char takes integer i returns string
    local string abc = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

    if i >= 97 then
        return SubString(abc,i - 97 + 36,i - 96 + 36)
    elseif i >= 65 then
        return SubString(abc,i - 65 + 10,i - 64 + 10)
    endif
    return SubString(abc,i - 48,i - 47)
endfunction

function Id2String takes integer id1 returns string
    local integer t = id1 / 256
    local string r = Id2Char(id1 - 256 * t)
    set id1 = t / 256
    set r = Id2Char(t - 256 * id1) + r
    set t = id1 / 256
    return Id2Char(t) + Id2Char(id1 - 256 * t) + r
endfunction

function Chat_Actions takes nothing returns nothing
    local string S0 = "I0" + SubStringBJ(GetEventPlayerChatString(), 3, 4)
    local integer N = String2Id(S0)
    call BJDebugMsg(S0)
    call BJDebugMsg(I2S(N))
    call UnitAddItemById(gg_unit_Hpal_0001, N)
endfunction

//===========================================================================
function InitTrig_Chat takes nothing returns nothing
    set gg_trg_Chat = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_Chat, Player(0), "I0", false )
    call TriggerAddAction( gg_trg_Chat, function Chat_Actions )
endfunction
код скорпа у меня не работает - xgm.guru/p/wc3/hex-to-dec-to-ascii
» ошибка в этом месте
function S2Ix takes string s returns integer
    //return GetHandleId(s) // changed, 20.03.2012
    //return StringHash(s) // changed by ScorpioT1000, 03.04.2012
    // wrong fixes =(
    return s
    return 0
endfunction

function ASCII2DEC takes string num256 returns integer
    local integer num10 = 0
    local integer i = 0
    local integer len = StringLength(num256)
    loop
        exitwhen i >= len
        set num10 = num10 + CharInx256[S2Ix(SubString(num256, i, i+1))] * Pow256x[len-i-1]
        set i = i + 1
    endloop
    return num10
endfunction
беру функцию ASCII2DEC, вставляю. А вот функция S2Ix выводит мне ошибку с ретурном. пробовал сам исправить, теперь функция S2Ix нули мне выдает при тесте. не шарю в счислениях. можно ли это как-то пофиксить?
нашел ответ вот здесь здесь карта пример на гуи
Steal nerves #50 - 2 месяца назад (отредактировано ) 0

» WarCraft 3 / как вписать номер предмета из редактора в текст

вот
I2R(ItemTypeId(UnitItemInSlotBJ(u, 1))) - кажется, если не ошибаюсь, выведет в десятичной системе счисления, а чтобы в 256-ричную, надо будет переводить из 10-чной в 256-ричную.