Мне нужна система на GUI,Ну или если нет на GUI то JASS,которая при вводе в чат -spawn (ID Unit),заспавнит рядом с выделенным юнитом того кого ввёл по ID!?

Принятый ответ

Slashur, вы даете
call CreateUnitAtLoc(GetTriggerPlayer(), udg_ItemID, udg_temp_point, 0)
изменяете на
call CreateUnitAtLoc(GetTriggerPlayer(), udg_ItemID, udg_temp_point, 270)
всего 1 строчку. всего 1 аргумент. с нуля на 270 поменял и все. стандартное ориентация зданий = 270 град, записана в переменную.
хотел чтобы вы сами помучались. пробуй брать гуи,конвентировать в код. сравнивали. пример
статьи читали бы.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
7
6 лет назад
0
darkowlom:
Ну так возьми и распарсь строку, через сабстринг кажется - и спавни на здоровье
я не знаю как:(
2
24
6 лет назад
2
карта в архиве есть: Substring - titul to player.w3x. Разбери этот пример
1
21
6 лет назад
1
Уверен, что именно по ID лучше? Может, удобнее бд сделать и, скажем, через -spawn Драконид спавнить драконида и т. п.?
1
27
6 лет назад
Отредактирован MpW
1
смотри тему кто-то похожее несколько месяцев назад задавал
вот ссылка на карту чтоб не читать тему, а сразу скачать готовенькое
можно просто бд сделать. Сделать два массива: имена юнитов и равкоды. Перебегаешь циклом, и сравниваешь введенное имя с именем, сохраненное в данном индексе массива. Если имена совпали выдаешь равкод. Главное из цикла просто индекс массива нужный вытащить.
Откуда обычный игрок будет знать равкоды. Если не предоставив ему в описании и не пойми где еще.
0
7
6 лет назад
0
ClotPh:
Уверен, что именно по ID лучше? Может, удобнее бд сделать и, скажем, через -spawn Драконид спавнить драконида и т. п.?
а так возможно?
Steal nerves:
скачай мапу кто-то похожее несколько месяцев назад задавал
можно просто бд сделать. Сделать два массива: имена юнитов и равкоды. Перебегаешь циклом, и сравниваешь введенное имя с именем, сохраненное в данном индексе массива. Если имена совпали выдаешь равкод. Главное из цикла просто индекс массива нужный вытащить.
Откуда обычный игрок будет знать равкоды. Если не предоставив ему в описании и не пойми где еще.
хм
ClotPh:
Уверен, что именно по ID лучше? Может, удобнее бд сделать и, скажем, через -spawn Драконид спавнить драконида и т. п.?
вроде с ID легче)
0
27
6 лет назад
Отредактирован MpW
0
а выше скинул ссылку на карту с равкодом ID
карта с равкодом ID вводишь например "-hfoo" и спавнится пехотинец. Вводишь "-Hpal" создается герой паладин. Тут не только равкод можно юнита, но и итема, декора. Только надо брать соответствующую функцию, типа CreateItem для предмета или CreateUnit для юнита. Немного ту карту редакт с пояснениями, а то там может быть непонятно.
пример со строками вводишь в чат название юнита. Например: "-spawn Пехотинец", и вам спавнится пехотинец.
Загруженные файлы
2
21
6 лет назад
2
Slashur, с id просто не надо бд мутить но так всем, кто будет пользоваться, надо все id помнить
что проще запомнить - id или осмысленное название?
это как раз тот случай, когда бд оправдана
upd: а, да, выше примерно про то же вот написали
кстати, в Battle for Souls такое используется, но там не ид хотя бы, а номер
и неплохая идея и имена использовать, да, позже как альтернативу
0
26
6 лет назад
0
ClotPh, а как автоматически БД сделать, чтобы не руками название каждого юнита вводить?
3
25
6 лет назад
Отредактирован Jack-of-shadow
3
8gabriel8:
ClotPh, а как автоматически БД сделать, чтобы не руками название каждого юнита вводить?
Слк скриптом разбирать.
Либо закинуть всех нужных юнитов на карту. Выбрать группу и для каждого
SaveInteger (hash, BdNameHandle,StringHash(GetUnitName(u)), GetUnitId())
Сохранить прелоадом в текстовик.
тип того:
cjass
nothing PreloadAddString (string unitname, string unitid, ){
Preload ("SaveInteger (hash,BdNameHandle,StringHash("unitname"),"unitid")" )
}
nothing SaveUnitName (){
unit u = GetFilterUnit()
PreloadAddString (GetUnitName(u), I2S(GetUnitId(u)))
}
nothing SaveUnitsName () {
ForGroupBJ( GetUnitsInRectAll(GetPlayableMapRect()), function SaveUnitName )
PreloadGenEnd (path)
PreloadGenClear()
}
0
21
6 лет назад
0
8gabriel8, ну вот именно это как раз тот случай где имхо и руками можно и всех новых тоже руками только пометку сделать чтобы не забыть
хотя в идеале конечно вообще вот как-то через мемхак по id имя боевой единицы считывать, оно же есть в РО
1
25
6 лет назад
Отредактирован Jack-of-shadow
1
поправочка, I2S забыл. теперь вроде должно сработать. Для сохранения нужно включить доступ к локальным файлам и указать переменные :
YourHash
YourBdHandle
YourFolderPath

vjass
nothing PreloadAddString (string unitname, string unitid, ){
Preload ("SaveInteger ("+YourHash+,+YourBdHandle+",StringHash("+unitname+"),"+unitid+")") 
}

nothing SaveUnitName (){
 unit u = GetFilterUnit()
 PreloadAddString (GetUnitName(u), I2S(GetUnitId(u)))
}

nothing SaveUnitsName () { 
  ForGroupBJ( GetUnitsInRectAll(GetPlayableMapRect()), function SaveUnitName ) 
  PreloadGenEnd (YourFolderPath)
  PreloadGenClear() 
}
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.