XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
R2on

offline
Опыт: 111
Активность:
рисование итемов командой
Здравствуйте, уважаемые обитатели форума! На ваш форум я попал случайно, и по крайней необходимости не стал бы постить. пожалуйста помогите написать тригер, который бы по команде рисовал около выбранного юнита необходимый итем.
например по команде -item H008 появлялся предмет, который имеет данный идентификатор.
похожие команды я кое-где встречал, но немного не то, что мне надо.
пример выдрал из какой-то мапы, вроде бы ломанной:
elseif SubString(s2s,0,8)=="-additem [XXX]"then
set temp=0
loop
set temp=temp+1
exitwhen temp>c2c
call CreateItemLoc( ChooseRandomItemEx(ITEM_TYPE_ANY,-1), GetUnitLoc(u2u) )
endloop
команда рисует [XXX] итемов около выделенного юнита (или здания). при этом идентификаторы предметов случайны, и за частую рисуется по нескольку одинаковых предметов. А мне необходим тригер, который бы рисовал 1 предмет, но с заданным идентификатором по маске: -item [ID].
Помощи просил на нескольких форумах, но там мне не смогли ничем помочь. Очень на Вас надеюсь!
Старый 03.06.2011, 03:09
Dragor

offline
Опыт: 82
Активность:
ну у вас же всё и так тут написано
function CreateItemLoc takes integer itemId, location loc returns item
так что
local itemstring = SubString(GetEventPlayerChatString(), 0, 6)
if itemstring == '-item ' them
call CreateItemLoc( SubString(GetEventPlayerChatString(), 7, 10), GetUnitLoc(u2u) )
endif
это без проверки, жалко нет регулярок а то бы [A-Z0-9]{4}. можеш канечно через loop и каждую букву проверять ))

Отредактировано Dragor, 08.06.2011 в 00:56.
Старый 08.06.2011, 00:19
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
R2on, в принципе все просто. Проверяешь команду через SubString, что она равна -additem. Затем поищи на этом форуме перевод из строки в RawCode (256 система счисления). И по полученному int'у создавай айтем
Старый 08.06.2011, 10:39
R2on

offline
Опыт: 111
Активность:
Cпасибо, alexprey, но я пока плохо понял что именно надо сделать. хорошо, постараюсь упростить задачу до минимума. помогите написать код, который бы рисовал итем, допустим I00T по команде -creat
что бы это выглядело примерно так:
elseif SubString(s2s,0,8)=="creat"then
call CreateItem(I00T, GetUnitLoc(u2u))
или так?
elseif SubString(s2s,0,8)=="creat"then
call CreateItemLoc( CreateItem(I00T), GetUnitLoc(u2u) )
скажите пожалуйста где тут допущена ошибка?
R2on добавил:
спасибо за ответы, разобрался сам
elseif SubString(s2s,0,8)=="-creat"then
call CreateItemLoc( 'I00T', GetUnitLoc(u2u) )
немного почитав про данные функции таки смог написать.
тему можно закрыть
Старый 08.06.2011, 13:51
Dragor

offline
Опыт: 82
Активность:
спасибо за ответы, разобрался сам
elseif SubString(s2s,0,8)=="-creat"then
call CreateItemLoc( 'I00T', GetUnitLoc(u2u) )
немного почитав про данные функции таки смог написать.
тему можно закрыть
а зачем SubString тогда ?
просто if GetEventPlayerChatString() == "-creat" then
Старый 08.06.2011, 14:12
R2on

offline
Опыт: 111
Активность:
а чем отличается SubString от GetEventPlayerChatString?
Старый 08.06.2011, 16:45
Dragor

offline
Опыт: 82
Активность:
R2on:
а чем отличается SubString от GetEventPlayerChatString?
ну хотя бы по названию суди
SubString - возвращает подстроку из задорной строки
GetEventPlayerChatString - возвращает сообщение
например если мы пишем в чат "-get"
то GetEventPlayerChatString будет = "-get"
а SubString(GetEventPlayerChatString(),2,3) будет = "g"
Старый 08.06.2011, 18:57
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 07:07.