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 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
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 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
R2on, в принципе все просто. Проверяешь команду через SubString, что она равна -additem. Затем поищи на этом форуме перевод из строки в RawCode (256 система счисления). И по полученному int'у создавай айтем
|
08.06.2011, 10:39 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
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 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dragor
offline
Опыт:
82Активность: |
R2on:
а зачем SubString тогда ? просто if GetEventPlayerChatString() == "-creat" then |
08.06.2011, 14:12 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
R2on
offline
Опыт:
111Активность: |
а чем отличается SubString от GetEventPlayerChatString? |
08.06.2011, 16:45 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dragor
offline
Опыт:
82Активность: |
R2on:
ну хотя бы по названию суди SubString - возвращает подстроку из задорной строки GetEventPlayerChatString - возвращает сообщение например если мы пишем в чат "-get" то GetEventPlayerChatString будет = "-get" а SubString(GetEventPlayerChatString(),2,3) будет = "g" |
08.06.2011, 18:57 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|