|
|
|
|
Помогите с чатом
|
|
IncOnes | Дата: Вторник, 16 Июля 2013, 01:40:39 | Сообщение # 1 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| Всем привет.
Создаю свою карту. Собираюсь убрать возможность видения обычного чата и сделать чат на триггерах, т.е. текст должен отображаться через "Игра - Text message". Вот только одна проблема, я не могу никак кое-что сделать.
У меня получается вывести в чат только то, что указано в событии "Точное совпадение или подстрока", в моем случае точка. Как сделать, чтобы выводился точный текст, который ввел игрок в чат?
Спасибо.
|
|
|
|
Reckit | Дата: Вторник, 16 Июля 2013, 10:05:00 | Сообщение # 2 |
3 уровень
Группа: Проверенные
Сообщений: 74
Награды: 0
Репутация: 7
Блокировки:
| У тебя есть карта 88_RDZARENA? Добавлено (16 Июля 2013, 10:05:00) --------------------------------------------- Если у тебя она есть, то открой посмотри.
|
|
|
|
Наклз | Дата: Вторник, 16 Июля 2013, 10:25:26 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| http://rghost.ru/47452818 - думаю всё поймёшь... ну триггеры так как на гуи понятны, что хотел добавить, как я убрал чат изменил имена игроков... но как убрать [всем], [союзникам] и т.д., это через импорт, файл war3mapskin.txt Система отлично работает, но только если игроку нельзя сменить цвет... так как цвет его имени в искусственном чате зависит от его положения, ну игрок1 всегда красный, игрок2 всегда синий... если цвет может меняться, напиши, попробую что-то придумать.
|
|
|
|
Q1wAse | Дата: Вторник, 16 Июля 2013, 10:35:42 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата (Наклз) http://rghost.ru/47452818 - думаю всё поймёшь... ну триггеры так как на гуи понятны, что хотел добавить, как я убрал чат изменил имена игроков... но как убрать [всем], [союзникам] и т.д., это через импорт, файл war3mapskin.txt Система отлично работает, но только если игроку нельзя сменить цвет... так как цвет его имени в искусственном чате зависит от его положения, ну игрок1 всегда красный, игрок2 всегда синий... если цвет может меняться, напиши, попробую что-то придумать. Классно
|
|
|
|
IncOnes | Дата: Вторник, 16 Июля 2013, 13:24:07 | Сообщение # 5 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| Всем спасибо. Буду разбираться. Добавлено (16 Июля 2013, 13:07:47) ---------------------------------------------
Цитата (Наклз) http://rghost.ru/47452818 - думаю всё поймёшь... ну триггеры так как на гуи понятны, что хотел добавить, как я убрал чат изменил имена игроков... но как убрать [всем], [союзникам] и т.д., это через импорт, файл war3mapskin.txt Система отлично работает, но только если игроку нельзя сменить цвет... так как цвет его имени в искусственном чате зависит от его положения, ну игрок1 всегда красный, игрок2 всегда синий... если цвет может меняться, напиши, попробую что-то придумать. Огромное спасибо, все идеально работает.Добавлено (16 Июля 2013, 13:24:07) --------------------------------------------- Нашел один побочный эффект от файла war3mapskin.txt. С ним чат работает отлично, но то, что я указываю в игровом интерфейсе, например изменяю "Нет расходов" не работает, без war3mapskin.txt все работает. В чем может быть проблема?
|
|
|
|
Наклз | Дата: Вторник, 16 Июля 2013, 13:33:22 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| В том что war3mapskin это игровой интерфейс в текстовом документе, сделай вот что: 1.Убери мой war3mapskin.txt из карты; 2.Измени "Игровой интерфейс" как тебе угодно; 3.Сохрани; 4.Открой карту программой Ladik’s MPQ 5.Вытащи из карты файл war3mapskin.txt , не тот мой, а после изменения игрового интерфейса, которые ты произведёшь, он появится сам, но видно его только через программу, в редакторе импорта его нет. 6.Открой вытащенный файл war3mapskin.txt блокнотом, найди там [FrameDef] и под ним на следующей строчке напиши CHAT_RECIPIENT_ALL= CHAT_RECIPIENT_ALLIES= CHAT_RECIPIENT_OBSERVERS= CHAT_RECIPIENT_PRIVATE= CHAT_RECIPIENT_REFEREES= (именно так, они в разных строчках по очереди, а не все в одну запихни, и после равно там пробел стоит) Если ты не нашёл [FrameDef] то допиши его в конце файла(на новой строчке последней) и под ним напиши эти строки CHAT_RECIPIENT_ALL= CHAT_RECIPIENT_ALLIES= CHAT_RECIPIENT_OBSERVERS= CHAT_RECIPIENT_PRIVATE= CHAT_RECIPIENT_REFEREES= (пробелы тут так же есть) 7.С помощью уже названной программы засунь файл war3mapskin.txt обратно в карту.
Сообщение отредактировал Наклз - Вторник, 16 Июля 2013, 13:45:08 |
|
|
|
IncOnes | Дата: Вторник, 16 Июля 2013, 14:03:48 | Сообщение # 7 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| Цитата (Наклз) В том что war3mapskin это игровой интерфейс в текстовом документе, сделай вот что: 1.Убери мой war3mapskin.txt из карты; 2.Измени "Игровой интерфейс" как тебе угодно; 3.Сохрани; 4.Открой карту программой Ladik’s MPQ 5.Вытащи из карты файл war3mapskin.txt , не тот мой, а после изменения игрового интерфейса, которые ты произведёшь, он появится сам, но видно его только через программу, в редакторе импорта его нет. 6.Открой вытащенный файл war3mapskin.txt блокнотом, найди там [FrameDef] и под ним на следующей строчке напиши CHAT_RECIPIENT_ALL= CHAT_RECIPIENT_ALLIES= CHAT_RECIPIENT_OBSERVERS= CHAT_RECIPIENT_PRIVATE= CHAT_RECIPIENT_REFEREES= (именно так, они в разных строчках по очереди, а не все в одну запихни, и после равно там пробел стоит) Если ты не нашёл [FrameDef] то допиши его в конце файла(на новой строчке последней) и под ним напиши эти строки CHAT_RECIPIENT_ALL= CHAT_RECIPIENT_ALLIES= CHAT_RECIPIENT_OBSERVERS= CHAT_RECIPIENT_PRIVATE= CHAT_RECIPIENT_REFEREES= (пробелы тут так же есть) 7.С помощью уже названной программы засунь файл war3mapskin.txt обратно в карту. Спасибо, помогло.
Можно еще вопросик? Зачем мы в инициализации сражения используем Set name с большим количеством пробелов? Что это дает? У меня получается при выводе в чат сообщение появляется через 1 пробел, хотелось бы сделать также ровно, как и текст, выводимый игрой.Добавлено (16 Июля 2013, 14:03:48) --------------------------------------------- http://imgdepo.ru/id/i4279324
|
|
|
|
Наклз | Дата: Вторник, 16 Июля 2013, 14:26:34 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| За тем, что бы твои сообщения которые ты пишешь в чат не выводились стандартным путём, куча пробелов и сообщение и имя игрока не выводится в чат, ну не влазит оно в месте с пробелами, по этому когда ты пишешь в чат ничего не происходит... только триггерное сообщение опявляется Добавлено (16 Июля 2013, 14:26:34) --------------------------------------------- А по поводу пробела перед именем игрока, найди в наработке в втором триггере число 153, замени на 154 и пробел пропадёт
|
|
|
|
IncOnes | Дата: Вторник, 16 Июля 2013, 14:43:52 | Сообщение # 9 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| А можете объяснить для чего требуются числа 153/154, 170? Не совсем понимаю с этим сабстрингом.
|
|
|
|
Наклз | Дата: Вторник, 16 Июля 2013, 14:57:10 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Объясняю: Что бы сообщения не выводились в чат, я вставил в начало имени всех игроков пробелы, но второй триггер, он же выводит "Игра - сообщение: "Имя игрока": "Сообщение" , нам же не нужно что бы тут перед именем игрока куча куча пробеллов была, так что мы берём сабстринг Имя игрока, то есть действие работает со строкой "Имя игрока", я знаю что там стоит 153(теперь уже понял что 154) пробелла, по этому я ставлю 153(154) - 170, это означает что действие возмёт символы из "Имени игрока" с 154-того по 170, как-то не понятно получилось, вот на всякий случай пример:
Игрок 1 вводит сообщение в чат: "-dak" (вводит без ковычек) Я беру substring(Реакция на событие - Введённое в чат сообщение) 2,4 Результат равен второму, третьему и четвёртому символу "Введённому в чат", а значит результат = dak , таким образом мы упускаем первый символ, минус(чёрточку), который нам не нужен.Добавлено (16 Июля 2013, 14:57:10) --------------------------------------------- Всё?
Сообщение отредактировал Наклз - Вторник, 16 Июля 2013, 14:56:58 |
|
|
|
IncOnes | Дата: Вторник, 16 Июля 2013, 20:56:03 | Сообщение # 11 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| Спасибо. Очень хорошо и понятно объясняете. У меня есть вопрос не к этой теме, мне нужно заблокировать камеру для игрока, т.е. чтобы он не смог вертеть ей, но не к юниту, а именно к камере. Это возможно?
|
|
|
|
Наклз | Дата: Вторник, 16 Июля 2013, 21:37:44 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| С: Время - Каждые 1.0 сек. У: Д: Применить камеру, весь фокус в том что бы применять постоянно, каждую секунду, ну или даже меньше секунды, и тогда он ничего не сможет сделать.
А по поводу сабстринг я немного был не прав, там таки 153 пробелла, просто если поставить там число 153 то он с 153-тего символа ВКЛЮЧИТЕЛЬНО, а 153 = пробел, а 154 уже начало никаДобавлено (16 Июля 2013, 21:37:44) --------------------------------------------- Кстати, по поводу наработки с чатом, если игрок каким-то образом сменить цвет... ну красный станет синим, то он в чате будет писать всё равно красным цветом, сейчас исправлю, 5 мин.
|
|
|
|
IncOnes | Дата: Вторник, 16 Июля 2013, 21:44:53 | Сообщение # 13 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| Спасибо Вам за помощь.
Я и делал таймер на 0.50 секунд, но игра начала подтормаживать.
|
|
|
|
Наклз | Дата: Вторник, 16 Июля 2013, 21:54:40 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Cделай на 1 сек
Добавлено (16 Июля 2013, 21:54:40) --------------------------------------------- Вот вторая версия
Сообщение отредактировал Наклз - Вторник, 16 Июля 2013, 21:55:54 |
|
|
|
IncOnes | Дата: Среда, 17 Июля 2013, 01:34:39 | Сообщение # 15 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| Нашел еще один баг с чатом, при наведении на игрока выводит табличку с уровнем, но там большое количество пробелов и потом ник... Т.е. табличка получается огромных размеров в широту. Это можно исправить?
|
|
|
|
Наклз | Дата: Среда, 17 Июля 2013, 09:40:12 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Увы никак, это ж имя игрока... что бы его не было в чате там куча пробелов... но можно сделать так, вставить пробелы все в эти строчки CHAT_RECIPIENT_ALL= CHAT_RECIPIENT_ALLIES= CHAT_RECIPIENT_OBSERVERS= CHAT_RECIPIENT_PRIVATE= CHAT_RECIPIENT_REFEREES= в файле war3mapskin.txt вытащить опять, и к тому 1 пробелу что там уже стоит ДОБАВИТЬ ещё эти 153(можешь взять из переменной JumpLine153 там в нач. значении эти все пробелы, скопируй и вставь в эти строчки... так как там уже 1 был + 153 = 154 пробела, когда сделаешь это, действие SetName(изменить имя игрока) можно будет удалить.Добавлено (17 Июля 2013, 09:40:12) --------------------------------------------- И сабстринг заменить на имя игрока(триггерный игрок)
|
|
|
|
[SeKtOR] | Дата: Среда, 17 Июля 2013, 09:40:50 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
| Можно добавить и убрать москиты, табличка с именем игрока конечно уберётся(как хорошая альтернатива гигантской таблички), но и прочие последствия останутся...
|
|
|
|
Наклз | Дата: Среда, 17 Июля 2013, 09:44:36 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Вот, надеюсь был последний баг. - Убрал set name , заменил substirng на имя игрока, и обновил war3mapskin , там после = теперь ещё куча пробеллов, 157 .
Добавлено (17 Июля 2013, 09:44:36) --------------------------------------------- Цитата (|SeKtOR|) Можно добавить и убрать москиты, табличка с именем игрока конечно уберётся(как хорошая альтернатива гигантской таблички), но и прочие последствия останутся... разве если москитов убрать, то юнит всё равно останется не выделяемым? ну у меня по крайней мере получается так
Сообщение отредактировал Наклз - Среда, 17 Июля 2013, 09:46:50 |
|
|
|
Q1wAse | Дата: Среда, 17 Июля 2013, 09:47:59 | Сообщение # 19 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата (|SeKtOR|) Можно добавить и убрать москиты, как? только через РО.
|
|
|
|
Наклз | Дата: Среда, 17 Июля 2013, 09:51:13 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Пахаххахаа Через джасс добавить, код способности Aloc
|
|
|
|
Q1wAse | Дата: Среда, 17 Июля 2013, 09:53:20 | Сообщение # 21 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата (Наклз) Через джасс добавить, код способности Aloc А ну да. "Джасс" я не знал. На гуи такого не было код способности Aloc значит. Ну ок. Это поможет мне с некоторыми скилами.
|
|
|
|
Наклз | Дата: Среда, 17 Июля 2013, 10:43:04 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Но забрать не получится скилл... ну как ты то заберёшь, но его эффект останется
|
|
|
|
FEARKILLER | Дата: Среда, 17 Июля 2013, 11:41:40 | Сообщение # 23 |
6 уровень
Группа: Проверенные
Сообщений: 175
Награды: 0
Репутация: 149
Блокировки:
| Цитата (Наклз) но его эффект останется Скорей это абилка осталась цела и невредима у юнита, а не эффект. Москитов не заберёшь так просто, если удалять через UnitRemoveAbility() без скрытия б\е. Функция в таком случае просто игнорирует эту абилку. Цитата (Наклз) Но забрать не получится скилл... Удаление москитов: Код call ShowUnit(u,false) call ShowUnit(u,true) call UnitRemoveAbility(u,'Aloc')
А теперь для тех кто в танке и считает что даммику для москитов нужна в паре ещё и неуязвимость(нейтральный), советую дать юниту только москитов и сделать так: Код call ShowUnit(u,false) call ShowUnit(u,true) А после выделить его и посмотреть на защиту, там будет написано НЕУЯЗВИМЫЙ, потому что мы не отбирали москитов, а просто функциями скрыть\показать стряхнули боевой единице её невыделяемость для того, чтобы выделить и убедиться что москиты и так делают юнита не только невыделяемым, но и максимально неуязвимым.
Делаю из воды вино, хожу по воде...
|
|
|
|
IncOnes | Дата: Среда, 17 Июля 2013, 12:12:14 | Сообщение # 24 |
1 уровень
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Блокировки:
| Цитата (Наклз) Увы никак, это ж имя игрока... что бы его не было в чате там куча пробелов... но можно сделать так, вставить пробелы все в эти строчки CHAT_RECIPIENT_ALL= CHAT_RECIPIENT_ALLIES= CHAT_RECIPIENT_OBSERVERS= CHAT_RECIPIENT_PRIVATE= CHAT_RECIPIENT_REFEREES= в файле war3mapskin.txt вытащить опять, и к тому 1 пробелу что там уже стоит ДОБАВИТЬ ещё эти 153(можешь взять из переменной JumpLine153 там в нач. значении эти все пробелы, скопируй и вставь в эти строчки... так как там уже 1 был + 153 = 154 пробела, когда сделаешь это, действие SetName(изменить имя игрока) можно будет удалить. Добавлено (17 Июля 2013, 09:40:12) --------------------------------------------- И сабстринг заменить на имя игрока(триггерный игрок) Тогда текст чата становится виден стандартным путем
|
|
|
|
Наклз | Дата: Среда, 17 Июля 2013, 12:37:07 | Сообщение # 25 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| я же наработку кинул... у меня не виден...
Добавлено (17 Июля 2013, 12:30:16) --------------------------------------------- http://warcraft3ft.info/go?http://rghost.ru/47474948 Там сделал всё что написал, PS сылка уже была выше..
Добавлено (17 Июля 2013, 12:37:07) --------------------------------------------- Цитата (IncOnes) Тогда текст чата становится виден стандартным путем понял же в чём смысл, пробелы которые я раньше в ник ставил, поставить вместо [всем] , [союзникам], получается пробелы сохранятся, и ники не надо менять.
Сообщение отредактировал Наклз - Среда, 17 Июля 2013, 12:39:04 |
|
|
|
|
|
|
|
|
|
|