Здравия всем!
Пытался реализовать через GUI, однако, давать способность с названием введённой строки (enteredstring) нельзя, в отличии от создания юнита. Какой customscript позволит дать юниту скилл по введённой строке?
call UnitAddAbilityBJ(GetEventPlayerChatString(), GetEnumUnit () ) - не выходит
Буду премного благодарен за помощь!

Mrachny, переходите на последний патч с lua и забывайте GUI. Там это реально в несколько строчек делается)

Заодно можете почитать статьи, там много интересного есть.
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
Подключаете библиотеку и добавляете по равкоду.
call UnitAddAbility(GetEnumUnit(),S2A(GetEventPlayerChatString())) 
16
NazarPunk, благодарю, однако, я думал, что будет по проще)
30
благодарю, однако, я думал, что будет по проще)
А что тут сложного?

Близы обещали запилить нативку, но обещанного три года ждут. На новом патче для lua можете юзать функцию
function FourCC(id)
	return string.unpack(">I4", id)
end
UnitAddAbility(GetEnumUnit(),FourCC(GetEventPlayerChatString())) 
16
NazarPunk, всё познается в сравнении)
Для меня фраза "подключаете библиотеку и добавляете по равкоду" уже вызвала затруднения. Понял, что такое равкод, но вот "подключите библиотеку" немного не вышло. Правильно ли я понимаю, что "подключите" - это значит, что нужно скопировать тот код (сайт на который Вы дали ссылку) и вставить в пустой триггер (см. скрин). Если это так, то тут я застопорился на ошибках в данном триггере.
"На новом патче для lua можете юзать функцию" - т.е., если я устанавлю новый патч для lua, я смогу обойтись этой короткой функцией без библиотеки?:
function FourCC(id)
return string.unpack(">I4", id)
end
UnitAddAbility(GetEnumUnit(),FourCC(GetEventPlayerChatString()))
Загруженные файлы
24
На релизнонм 1.31 FourCC уже встроена в вар - в неё сам редактор начал оборачивать равкоды юнитов поставленых на карту.
30
если я устанавлю новый патч для lua, я смогу обойтись этой короткой функцией без библиотеки?:
Как написал prog, на последнем патче, вы можете использовать нативную функцию, как на jass, так и на lua без всяких библиотек.
UnitAddAbility(GetEnumUnit(),FourCC(GetEventPlayerChatString()))

А для этой библиотеки вам нужен JNGP.
16
NazarPunk, правильно ли я понимаю, что этот патч на данный момент является платным?
Установил JNPG, однако, при нажатии Ctrl+F9 запускается не карта, а warcraft. Это из-за библиотеки и триггера с customscript, т.к. убрав их - карта включается. Если для вас и вправду не трудно, можете сделать наглядный пример в пустой карте? Как будет время и желание. Или мне совсем чуть-чуть осталось до реализации задуманного? Ибо проблему сейчас не вижу, но она есть.
Загруженные файлы
30
что этот патч на данный момент является платным?
Да, но обновляя страницу можно выудить ключ и пользоваться, пока денег на покупку не появится.
при нажатии Ctrl+F9 запускается не карта, а warcraft
Перед нажатием Ctrl+F9 карту нужно сохранить, чтоб небыло звёздочки в названии.
можете сделать наглядный пример в пустой карте?
К сожалению у меня нет 1.26, но я писал наработку, где подобное было реализовано.

Кстати, зачем вам добалять способность из чата? Это же костыль костыльный.
16
NazarPunk, зачем? Ради интереса, т.к. до этого я делал триггер, с помощью которого можно создать любого юнита, в нужном количестве, нужному игроку, конечно, при условии, если знаешь его название. Например:
foresttrollking 1 1
Это значит - создать вождя лесных троллей в количестве равном одному для первого игрока в центре камеры игрока красного (т.е. моей)
Потом я подумал: А почему бы не добавлять юнитам скиллы по такому же принципу? Знай их истинное название и добавляй. Но как оказалось, что для моего уровня на данный момент - сложно, да и муторно. Как вы уже сказали - костыль костыльный.
Скачал вашу карту и поставил туда свой триггер, однако, war3 вылетает. О чём я и говорю - понимания мало)
Убрал свой триггер, но карта всё равно выдаёт вылет war3
Загруженные файлы
30
Mrachny, переходите на последний патч с lua и забывайте GUI. Там это реально в несколько строчек делается)

Заодно можете почитать статьи, там много интересного есть.
Принятый ответ
26
Mrachny:
думал, что будет по проще)
Есть один вариант, который годится и для 1.26, причём названия способности можно будет на русском печатать, только работать будет для стандартных способностей, нестандартные надо будет вручную добавлять. Есть в mpq-архиве файл csv со списком способностей, открывается в виде таблицы в Excel и в виде текста в блокноте, если не изменяет память, ячейки в нём разделяются табуляцией, а строки Enter. Можно в Excel оставить в таблице лишь столбцы с равкодом и названием способностей, а в остальных ввести в ячейку и протянуть вниз set udg_rawcode[ | 0 | ] = равкод Enter set udg_title[ | 0 | ] = ""название“, потом в Блокноте замени табуляции на ничего, а надпись Enter на него самого, в итоге получишь два массива. Создай в редакторе массивы переменных rawcode(способность) и title(текст/строка), так как коэффициенты равкода и названия будут совпадать, получится база данных. Потом создай триггер с событием инициализации и задай там любые значения для этих переменных, переведи в текст и проверь, так ли в текстовом файле у тебя оформлено присвоение значений, если да, то заменяй строки с заданными переменными на приготовленный текст. Триггер на присвоение способности должен циклом проходить по массиву, сверяя введённую строку с title[A], если совпало, то дать юниту способность rawcode[A].
33
NazarPunk, Собственно говоря поэтому он и занимается вар3модмейкингом, потому что тут есть ГУИ, человек умеющий писать код, пойдёт делать свою игру на полноценном движке (Юнити/Анриал), скорее всего туда все и ушли, а тут или гуишники или отбитые фанатики, которые может никогда и не были программистами... и как же это всё печально =(
30
Bergi_Bear, эх, плохой из меня программист, коли не ушёл пилить Unity(
33
ты как раз таки хороший программист, исходя из моего уровня знаний о программистах, но если ты здесь, то ты больше фанат варкрафта
Чтобы оставить комментарий, пожалуйста, войдите на сайт.