нет таких функции чтобы сохранить в хэш такие типы переменных как attacktype, damagetype, weapontype. Такое вообще не предусмотрено, и мало где можно использовать (проверить даже нельзя будет, нет таких условии, и еще у разных юнитов разные будут типы урона, атаки и брони). Но можно же по-другому, например использовать целочисленную
смотреть сюда
Например:
if типа юнита == пехотинец (а пехотинец имеет обычную атаку) then
сохранить число 0
elseif типа юнита == волшебница Альянса (магичка имеет маг. атаку) then
сохранить число 1
endif
Есть более совершенный способ, использовать хак-памяти, но требует знания jass
function SetUnitAttackType takes unit u, integer i, integer attacknum returns nothing
//типы атак (для 1-ой атаки, для 2-ой атаки) У юнитов 2 атаки
//установить тип атаки
function SetUnitAttackType1 takes unit u, integer i returns nothing
function SetUnitAttackType2 takes unit u, integer i returns nothing
//вычислить тип атаки
function GetUnitAttackType1 takes unit u returns integer
function GetUnitAttackType2 takes unit u returns integer
//внизу типы брони, точно не уверен, но одно отвечает за звуки, второе - за снижение урона
//тип брони, за звуки отвечает
function SetUnitWeaponType takes unit u, integer i returns nothing
function GetUnitWeaponType takes unit u returns integer
//тип защиты
function GetUnitArmorType takes unit u returns integer
function SetUnitArmorType takes unit u, integer id returns nothing
по типу атаки и прочее сохранять целочисленную, если так уж хочется
Какие декорации? Пытаешься навести на дерево или что? Вот, если юниты выделены у игрока, и их наводишь на дерево или на бочок/стены, то можно отловить приказ. Но не все юниты наводятся на дерево (только рабочие или каменный голем у ночных эльфов), даже игрок без юнитов не может выбрать деревце.
Но обычно когда игрок просто щелкает и наводит на такие декорации как бочок или ворота, то никак это отследить нельзя Стандартным способом никак, такого события нет =(( Если надо делать невыделяемым, то можно переделать декор на дерево попробовать, но на ворота и бочок зачем такое делать?
видел где-то похожие темы и даже системы. Но что-то не могу найти. Но xgm-bot нашел одну тему.
Можно создать заранее заготовленный класс предметов, где будет рассортировано по классу. В одном классе будут мечи, в другом броня. Другая проблема в том, что у варкрафта всего 7 классов (постоянные, усиливащие, артефакты и др.), этого может быть мало, но и ячеек у героя не много - всего 6. Но думаю этого будет достаточно.
Чтобы классификации предметов стало больше - проблема устраняется базой данных, где записываешь в переменные с массивами Туда записываешь типы предметов. Еще можно использовать SetItemUserData, при создании заранее задаешь число. Каждое число - это класс предмета. Можно еще использовать здоровье предмета, а сам предмет будет неуязвимым. Не знаю можно ли создавать классификацию и добавлять в нее предметы.
А вот, чтоб увеличить слоты герою нужно делать систему. поищи на сайте, на форуме
при подборке проверяй тип предмета/классификацию предмета. Пробегаешь циклом от 1-6 сверяешь есть ли такой же предмет и дропаешь его. обычно все проще делается, во многих системах определенный класс предмета закреплен за определенной ячейкой.
Если имеет дело с cjass и vjass иногда для работы карты перед тестом нужно сохранить карту два раза. Иногда и одного раза хватает в некоторых случаях, в остальных случаях одного раза мало, чтобы код скомпилировался норм.
В некоторых ситуациях бывает используется код xgm.guru/p/wc3/179535, который норм не компилируется. Поэтому используется новая версия компилирующей программы. Например pjass. Вставляется в папку jngp/jasshelper/pjass.exe Может не работать норм, потому что нужно отключить cjass
Talgar2, создай триггер, в котором при инициализации будут прописаны по-порядку ректы в глобалку.
oblast [0]= lvl 1
oblast [1]= lvl 2
....
oblast [1]= lvl 90
//лучше бы создать область с помощью функции Rect, на карте создаешь область (ну чтобы заранее присмотреться как область укладывается на карте), смотришь какие у нее координаты, приписываешь в функцию Rect координаты. Область на карте удаляешь.
скобки круглые (), в скобках обычно записывают аргументы, если функция не берет аргументов, то значит ничего не берет.
например, call Init()
А вот {} - cjass и vjass, типа блок функции { открывает и } закрывает. А вот с void мало инфы, для удобства сделали. типа void = nothing, ничего не возвращает
DracoL1ch, это через редактор объектов или через хак? В РО я ставил такое значение, но ниже чем -1000000000 в редакторе не ставится. И при отрицательном значении крашится вар. Если это поставить в изучении (х, у), то крашится при нажатии красного плюсика (изучения). Если просто в используется (х, у), то при получении крашится. Надо будет в таблицах .slk или через хак попробовать ввести такие значения
Засовываем змеиную ловкость в спелбук, а спелбук блокируем командой "Игрок - Enable/Disable Ability". В скрытый спелбук можно добавлять только пассиные способности. Ищи на тему как скрыть способность, иконку/кнопку способности. xgm.guru/forum/showthread.php?t=31722 И называйте норм тему
В хаке есть функции переключения атаки (1 атака, 2 атака). В РО придется настроить атаки (цели атаки, тип атаки). Еще есть включения, можно включить одну из двух, а можно сразу одновременно две атаки включить. Это получше чем с орбом, ибо потом другой какой-нибудь орб не сможешь юзать. Есть отдельные функции смены типа атаки и защиты. Короче можно всю атаку подстроить (урон, кол-во костей, урон 1 кости, скорость снарядов и прочее). Практичски много чего вкусного и интересного есть
//тип защиты
function GetUnitArmorType takes unit u returns integer
function SetUnitArmorType takes unit u, integer id returns nothing
//защита
function GetUnitArmor takes unit u returns real
function SetUnitArmor takes unit u,real r returns nothing
//атаки (1 атака, 2 атака, или обе атаки)
function SetUnitAttackType takes unit u, integer i, integer attacknum returns nothing
//тип атаки
function SetUnitAttackType1 takes unit u, integer i returns nothing
function SetUnitAttackType2 takes unit u, integer i returns nothing
function GetUnitAttackType1 takes unit u returns integer
function GetUnitAttackType2 takes unit u returns integer
//
function SetUnitWeaponType takes unit u, integer i returns nothing
function GetUnitWeaponType takes unit u returns integer
DracoL1ch, я просто не шарю в этом =(( кода много просто. это надо проверять больше 0, а чем так варику не нравятся нули. И еще вопрос что такое вот 0x90, умножают на нули
quq_CCCP, А вот функции которые задают длительность баффа.
local integer pBuff = GetUnitAbility( u, 'B00A' ) + 0x90
call WriteRealMemory(ReadRealMemory(pBuff)+0x4,SetRealIntoMemory(текущее время + 15.00)) // задаёт длительность
call WriteRealMemory(ReadRealMemory(pBuff)+0x8,SetRealIntoMemory(текущее время + 10.408)) // Задает время после которого бафф начнёт мигать
Жаль что нормально выудить игровое время не получается, поэтому юзаем таймер который мы запускаем при старте карты на 99999999999.00 сек., и по нему мы будем узнавать текущее время, который кстати будет отставать относительно игрового примерно на 0.408 сек.
После 20-минутного копипаста, сохранил карту. Запустил карту, но как только произошел тот момент, когда должен код работать, у меня фаталит =((. Пример, божественный щит
То что ты пытаешься сделать - отловить чат. Поищи в интернете.
смотреть сюда
Например, игрок вводит текст типа -gold X. где Х - кол-во голды
Событие - Игрок 1 (Красный) types a chat message containig "текст" as ===
Вместо === дают два выбора "подстрока" и "точное совпадение"
точное совпадение - точно, как ты указал в тексте, никак не иначе. Это не то, что тебе нужно. А подстрока (англ. substring, это текст, который ты указал в событий). Может находится впереди, в серединке, или даже в конце.
см. в условии раздел строка (англ. string) - substring
условие - Substring (Entered chat string, 1, 6) == "-gold "
функция Substring берет определенное кол-во символов введенной строки в подстроку. Например, нам нужно знать, что в введенной строке подстрока "-gold " находится впереди, не сзади (то есть от 1 до 6 символов, включая пробел).
set U= S2I (Substring (Entered chat string, 7, 16) )
А остальные символы от 7 до 16 могут быть цифрами. Но подстрока - строка. И ее надо конвентировать, то есть превратить в целочисленное число. Есть всякие специальные команды, вот нам нужна S2I. И даем золото игроку.
Стандартным способом нельзя. Используют горячие клавиши способностей юнитов, только тогда когда юниты выделены игроком. Не знаю можно ли отловить нажатие Enter игроком, и снять выделение с юнита. Но по-моему когда ты чатишься с другими игроками, то есть пишешь в окошко, ты не можешь хоткеи юзать, разве не так?
Про использовании метода глобалок с массивами не нашел статью (МУИ). Но там не трудно реализуется, но объяснять лень. Запустил заклинание, запомнил по номеру массива - закончил, удалил и очистил по номеру массива. Недостаток, что приходиться перебирать циклом все массивы, чтобы найти нужный номер массива, хотя проще можно, но ладно. xgm.guru/forum/showthread.php?t=55275
Можно использовать вместо этого хэш-таблицы, хэш-таблица - типа как электронная таблица с ячейками, имеет двухмерный массив, типа 1 массив - как строчка/адрес, 2 массив - как столбик/ряд/номер. В ячейке можно сохранить число, строку, объект.
Вэйты - то же недостаток, работает в действии Action, типа паузит поток. В некоторых других функциях (не в действии) пахать не будет (см. пример карты). xgm.guru/forum/showthread.php?t=57352
вот
зависит от разных обстоятельств: может нет проги jgnp, компилирующей код; не настроен нормально jngp; не правильно компилируешь код (надо чтоб кириллицы не было); нету обновлении, нет библиотеки, а мб из-за ретурн бага (версия варика ниже 1.24). Перед тестом пробуем сохранить
Если раскрыть события входа, выхода в область, то там событие действует не на область, а на регион. Область добавляют в регион xgm.guru/forum/showthread.php?t=59215 но перемещение будет не таким, как можете ожидать, оно можно слегка кривым.
Talgar2, потому что надо не Picкed unit() а Maching unit() потому что это фильтр (условие) Как происходит все, есть специальные функции выбора, они выделяют всех юнитов в группу, а фильтр отсеивает не нужных при выборе. Потом происходит ForGroup, то есть перебор. На самом деле, отдельный поток на каждого юнита вызывает этот ForGroup. Там в фильтре обращают конкретно не к Picкed unit, а к Maching unit. Picкed unit - в FrorGroup. pricoluwa, хотя не, вэйт не норм работает в группе. У мебя получилось так дал способность всем, и все. Видимо вэйт работает только в действий. А потоки видимо обрубил.
pricoluwa, используй локалки и таймеры + хэш-таблица, или переменные массивы (типа как муи) pricoluwa, что совсем что ли не работает? очевидно если ничего не выводит на экран, значит не работает pricoluwa, хотя с вэйтом я ошибся. Там выборка (ForGroup) для каждого юнита отдельный поток шлет. Должно норм работать у тебя на скрине
Что за выделенная боевая единица? может выбранная? мне кажется из-за вэйтов (ожидать) может быть не работает? там обрывает поток триггера. Вот например, есть 5 юнитов и герой, применяет он заклинание, потом работает триггер, ты выбираешь всех юнитов рядом с кастером. Потом идет перебор, или проще сказать цикл, триггер сначало выбрал одного, добавил ему способность и потом... БАХ, у триггера пауза на 15 сек., то есть только у одного твоего юнита есть эта способность. Прошло 15 сек. триггер врубился, и затем удаляем у юнита способность. И затем происходит со следующим юнитом те же действия, и так будет делать пока не переберет всех юнитов.
лучше правильно структуру триггеров сделай. Создаем переменную типа группа С.
установить группа С = выбираем всех юнитов
отряд - выбрать каждую боевую единицу в группе С
добавить скилл
ждать 15 сек.
отряд - выбрать каждую боевую единицу в группе С
удалить скилл
удалить группу С
Может быть лучше использовать способность друида-медведя? такая же копия. Называется рев
Юзай дебаг. выводи на экран текст, вот в самом начале провел тест, работает ли триггер с такими событием и условием, затем проверяй также с группой. При выборе группы тебе должно выскочить столько строчек, сколько и юнитов. Если выборка не работает, то нужно см. что там. Или выводи на экран кол-во юнитов в отряде
р
nvc123, а как вырубить ИИ у нейтралов то? юниты, привязаны к точке их создания. Через определенное время и расстояния они возвращаются (это все указано в константах). Можно сбить эту точку появления xgm.guru/forum/showthread.php?t=46038 Можно отключить в константах или сбить точку появления, недостаток такого способа в том, что он будет агрится и без конца по всей карте гнаться за тобой.
функцией RemoveGuardPosition вырубить нельзя это. Мне кажется ничего не делает она, эта функция полезна на юнитах игроков 0-11, где включен скрипт ИИ. Тестил.
А так можно ловить и перебить этот приказ, и все. И еще юниты нейтралов сами по себе катастрофа.=) Я так и не решился делать себе загоны, отгонять их и прочее.
можно использовать новый ретурн баг (правда там нет на зеленого бонуса атаки)
смотреть сюда (как я понял)
формула xgm.guru/forum/showpost.php?p=1299685&postcount=7:
Расстояние = Скорость * время
Чтобы найти время
время = Расстояние / скорость
Расстояние и время берется за единицы типа 100%
а 0.02% - за каждую 1 ед. ловкости (прописано в константах)
А вот эти все проценты прибавляют к скорости
Можно выявить время между между замахом и нанесением урона, то вот не уверен будет ли это считаться КД. Или мб между двумя атаками. Не понимаю вот мне кажется, что КД атаки и время атаки не одно и тоже.
мне кажется (мб ошибаюсь), что КД - ударил и будет отдыхать, типа как у абилок, а время атаки - насколько быстро ударил, анимация атаки будет быстрее (снарядов и прочее). Но КД тоже влияет на скорость, дает перерыв к след. атаке. Из-за этого путаешься
Не могу понять анимация атаки и анимация снарядов как связаны со скоростью?
что-во здесь в двух ссылках пишут про анимацию
в триггере есть функция с изменением скорости анимации, она дает быстро или медленно проигрывать любую анимацию, даже анимацию атаки, это нужно у модели смотреть название (например. крит. удар орка-самурая). Но не знаешь какое значение давать анимации
И у скорости есть лимит на бонусы %, больше 400% нельзя делать
Можно. придумывать свою систему, где взаимодействуют система урона и триггерные заклинания вместе. Короче заклинания триггерно полностью реализуются, или можно станд. скиллы юзать, но тогда как-то нужно запомнить или дать знать, что какой-то определенный скилл применился. Также поиграйся с целями заклинаний xgm.guru/p/wc3/wc3targets
Ну можно по-разному. Главное понять от чего отталкиваться.
Создаем две переменные: одна целочисленная К и вторая целочисленная G с массивом.
событие - инициализация
действие - цикл А от 1 до 6 //это игроки 1-6 -=1 клан или можно от 1-3, у тебя же 3 первых игрока
if игрок (A) = комп and игрок (А) = играет then
К=К+1 //кол-во игроков
G (К) = А //номер игрока, в этой ячейке хранится номер игрока
endif
также можно было создать группу игроков, и при инициализации засунуть и использовать ее, но не важно.
Вызываем
I=Random (от 0 до К) //короче I - это целочисленная переменная, К - общее кол-во игроков
И передать здания Игрока Х игроку ( G (I) )
Ред. MpW
» WarCraft 3 / Нестандартная способность с "отталкиванием".
» WarCraft 3 / Как сохранить в хэш-таблицу attacktype, damagetype, weapontype
Ред. MpW
» WarCraft 3 / Как сохранить в хэш-таблицу attacktype, damagetype, weapontype
Ред. MpW
» WarCraft 3 / Как триггерно отследить выбор игроком разрушаемого объекта?
https://www.xgm.guru/forum/showthread.php?t=12511
Ред. MpW
» WarCraft 3 / Один предмет
Чтобы классификации предметов стало больше - проблема устраняется базой данных, где записываешь в переменные с массивами Туда записываешь типы предметов. Еще можно использовать SetItemUserData, при создании заранее задаешь число. Каждое число - это класс предмета. Можно еще использовать здоровье предмета, а сам предмет будет неуязвимым. Не знаю можно ли создавать классификацию и добавлять в нее предметы.
Ред. MpW
» WarCraft 3 / После сохранения карты редактор JNGP закрывается
Ред. MpW
» WarCraft 3 / globals/ регионы
например, call Init()
https://www.xgm.guru/p/wc3/we-help
Ред. MpW
» WarCraft 3 / Пожалуйста, помогите с способностью!
Ред. MpW
» WarCraft 3 / Пожалуйста, помогите с способностью!
Ред. MpW
» WarCraft 3 / Тип атаки
http://www.hiveworkshop.com/threads/memoryhacks-newgen-integrati...
http://www.hiveworkshop.com/threads/memory-hack-api-description....
Ред. MpW
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
Ред. MpW
» WarCraft 3 / Событие
Ред. MpW
» WarCraft 3 / Поменять стрелки на WASD
Ред. MpW
» WarCraft 3 / Проблема с невероятно простой способностью.
https://www.xgm.guru/p/wc3/jass_local_vars
Можно использовать вместо этого хэш-таблицы, хэш-таблица - типа как электронная таблица с ячейками, имеет двухмерный массив, типа 1 массив - как строчка/адрес, 2 массив - как столбик/ряд/номер. В ячейке можно сохранить число, строку, объект.
Вэйты - то же недостаток, работает в действии Action, типа паузит поток. В некоторых других функциях (не в действии) пахать не будет (см. пример карты). xgm.guru/forum/showthread.php?t=57352
вот
» WarCraft 3 / синтаксис
Ред. MpW
» WarCraft 3 / Перемещение области.
Ред. MpW
» WarCraft 3 / Проблема с невероятно простой способностью.
pricoluwa, хотя не, вэйт не норм работает в группе. У мебя получилось так дал способность всем, и все. Видимо вэйт работает только в действий. А потоки видимо обрубил.
» WarCraft 3 / Проблема с невероятно простой способностью.
pricoluwa, что совсем что ли не работает? очевидно если ничего не выводит на экран, значит не работает
pricoluwa, хотя с вэйтом я ошибся. Там выборка (ForGroup) для каждого юнита отдельный поток шлет. Должно норм работать у тебя на скрине
Ред. MpW
» WarCraft 3 / Проблема с невероятно простой способностью.
р
Ред. MpW
» WarCraft 3 / Есть ли какая то статья по использованию 13-16 игроков?
Ред. MpW
» WarCraft 3 / Скорость атаки
https://www.xgm.guru/forum/showthread.php?t=56510
https://www.xgm.guru/forum/showthread.php?t=56230
https://www.xgm.guru/forum/showthread.php?t=60352
https://www.xgm.guru/forum/showthread.php?t=53217
https://www.xgm.guru/forum/showthread.php?t=50903
https://www.xgm.guru/forum/showthread.php?t=50225
https://www.xgm.guru/forum/showthread.php?t=38664
https://www.xgm.guru/p/blog-azazzell/set-unit-attribute
Расстояние = Скорость * время
Чтобы найти время
время = Расстояние / скорость
Расстояние и время берется за единицы типа 100%
а 0.02% - за каждую 1 ед. ловкости (прописано в константах)
А вот эти все проценты прибавляют к скорости
мне кажется (мб ошибаюсь), что КД - ударил и будет отдыхать, типа как у абилок, а время атаки - насколько быстро ударил, анимация атаки будет быстрее (снарядов и прочее). Но КД тоже влияет на скорость, дает перерыв к след. атаке. Из-за этого путаешься
что-во здесь в двух ссылках пишут про анимацию
https://www.xgm.guru/forum/showthread.php?t=60352
И у скорости есть лимит на бонусы %, больше 400% нельзя делать
Ред. MpW
» WarCraft 3 / Система складывания Предметов
блин не то добавил, удалить бы
Ред. MpW
» WarCraft 3 / Невосприимчивость к стихиям
Ред. MpW
» WarCraft 3 / Передать здание игроку X
Создаем две переменные: одна целочисленная К и вторая целочисленная G с массивом.
Вызываем