DarkSempai
offline
Опыт:
56Активность: |
Извлечь integer из команды в чате
Еще один вопрос.)
Заранее скажу: У меня редактор UMS New Gen Эксперементальный У меня есть триггер, который дант возможность в начале игры прописать команду: -gold 123456 123456 - это любое число которое будет введено после -gold. Оно должно установить кол-во голды для каждого при старте. Я поставил событие ввода игрока в чат, тип совпадения счел поставить не Точное совпадение а Подстройка. Может я сделал что то не так, но я замучался как сделать так, что бы я мог как то разделить -gold и число после него отведьно, то есть в действиях стоит SetVariable GoldInteger = что то там... Как подставить именно цифры после введенной команды ипу как... Подскажите плиз. |
23.03.2010, 19:36 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mr_ILYAS
Kicked by XimikS
offline
Опыт:
492Активность: |
function Player_and_String_Conditions takes nothing returns boolean
return(GetTriggerPlayer()==Player(0))and(SubString(GetEventPlayerChatString(),0,6)=="-gold ") Проверяет, что строго после нулевого символа и до 6 включительно написано "-gold " (с пробелом), и что команду ввёл хост. endfunction function Gold_Actions takes nothing returns nothing
local integer i=0 loop Через цыкл устанавливаем всем игрокам нужного голды. call SetPlayerState(Player(i),PLAYER_STATE_RESOURCE_GOLD,S2I(SubString(GetEventPlayerChatString(),6,StringLength(GetEventPlayerChatString())))) Конвертируем строку в число, и берём за число то, что написано после 6 символа и до конца строки. set i=i+1 exitwhen(i==11) Так как отсчёт первого игрока идёт от 0 в Jass'e, поэтому стоит 11 endloop endfunction function InitTrig_Gold takes nothing returns nothing set gg_trg_Gold=CreateTrigger() call TriggerRegisterPlayerChatEvent(gg_trg_Gold,Player(0),"",false) call TriggerAddCondition(gg_trg_Gold,Condition(function Player_and_String_Conditions)) call TriggerAddAction(gg_trg_Gold,function Gold_Actions) endfunction Отредактировано Mr_ILYAS, 24.03.2010 в 04:40. |
23.03.2010, 20:07 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Mr_ILYAS, что по твоему хост? 1 (0) игрок?)))
в данном случае будет только работать при условии что введет 1 игрок, а как же остальные? допустим если ты зайдешь как игрок 2? лучше через тот же массив обозначить игроков |
23.03.2010, 20:17 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mr_ILYAS
Kicked by XimikS
offline
Опыт:
492Активность: |
Ну да. Он же сказал, что эта команда устанавливает голду для всех игроков, значит это должен быть хост.
И если уж на то пошло, как ты узнаешь, кто хост в триггерах? Да и вообще не надо придираться, он сам там всё наладит, я просто показал, как надо работать с подстроками. |
23.03.2010, 20:22 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Mr_ILYAS, как определить хоста - была тема про это, поиск в помощь
я не придираюсь, сказал лишь только какие проблемы могут быть вызваны |
23.03.2010, 20:27 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Anufis
offline
Опыт:
6,290Активность: |
Mr_ILYAS:
В кеш локально у каждого игрока пишется его номер. Потом выполняется синхронизация в триггере, и извлекая данную переменную, получаем хоста. |
23.03.2010, 22:25 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
хост насколько я помню из триггеров определить нельзя. с другой стороны в большинстве это красный. в любом случае можно дать право прописывать только красному - это решит все проблемы.
правильно мыслите я сейчас точно не вспомню как в варкравте это сделать правильно, но, используйте подстроку (substring) - позволяет извлеч символы от а до б (указываете сами какие) из заданной строки, при это в качестве конца можно использовать длину строки. а потом преобразовать ваши обрезанную строку (если все правильно - это будет "123456") в число. вот только где это в триггерах я незнаю |
24.03.2010, 00:13 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
|
24.03.2010, 08:57 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
незнаю т.к. непробывал и вообще впервые о нем слышу) |
24.03.2010, 22:41 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sebra
offline
Опыт:
5,603Активность: |
FellGuard, было писано, что этот способ позволяет определить хост, если он не отвлёкся. (альт-табом например) А вообще он определяет наименьший лаг. |
25.03.2010, 13:04 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mr_ILYAS
Kicked by XimikS
offline
Опыт:
492Активность: |
Кароче, ограничимся первыми 2мя строками в 7 посте этой темы |
25.03.2010, 15:59 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|