[Гайд] Типы сообщений

-ExotiC-

Какой-то ноунэйм
Команда форума
11 Авг 2014
498
56
customgames.ru
Предполагается, что вы уже имеете общее представление о путях к файлам. Гайд ознакомит вас с возможностями сообщений и их использованием. Большинство из них поддерживают манипуляции с текстом, отображаемым с помощью переменных.

v0d7kxD.jpg


FesPU9z.jpg

Скопируйте в ваш initgamemode что-то на подобии:

Код:
Convars:RegisterCommand( "call1", function(...) return self:call1( ... ) end, "Function Call 1", FCVAR_CHEAT )
Convars:RegisterCommand( "call2", function(...) return self:call2( ... ) end, "Function Call 2", FCVAR_CHEAT )
Convars:RegisterCommand( "call3", function(...) return self:call3( ... ) end, "Function Call 3", FCVAR_CHEAT )
Convars:RegisterCommand( "call4", function(...) return self:call4( ... ) end, "Function Call 4", FCVAR_CHEAT )

Это дает вам 4 консольные команды (call1-4), чтобы запустить ваши 4 функции. Это делает возню немного легче, команда "script_reload" (в консоль) перезагрузит ваш скрипт, не тратя время на перекомпиляцию карты.

Стандартное всплывающее окно
Код:
ShowGenericPopup( "#popup_title", "#popup_body", "", "", DOTA_SHOWGENERICPOPUP_TINT_SCREEN )
--Это будет читать ваш #popup_title и #popup_body переменные из \resource\addon_english.txt

И этот файл будет выглядеть примерно так:

Код:
"lang"
{
"Language"   "English"
"Tokens"
{    
  "popup_title"              "OMG its a title"

  "popup_body"          "useful info here"
}  
}

Сообщение в чат
Похоже на то, как пользователь вводит сообщение

Код:
Say(nil,"text here", false)
-- nil может быть заменен на Player ID
-- Текст поддерживает вводимые переменные, из кода или даже от вашей консольной команды

Большой текст сверху по центру он же show_center_message

Код:
local messageinfo = {
message = messagetext,
dur = timetoshow
}
FireGameEvent("show_center_message",messageinfo)

Чтобы это работало, вам нужно вызвать функцию для принятия строк messagetext и timetoshow. Ваша функция должна быть примерно такая:

Код:
function blah:call1 ( cmd, messagetext, timetoshow )
-- cmd будет возвращать call1

Вызвать командой из консоли? Это выглядело бы так:
Код:
sv_cheats 1
call1 TEXTTOSHOW 2

Текст в области вывода убийства

Код:
GameRules:SendCustomMessage("<font color='#58ACFA'>This is some Blue Text</font> This is white", 0, 0)


Переменные поддерживаются, так же как простой ограниченный HTML. Я не уверен в том что HTML поддерживается, но по крайней мере базовые манипуляции с текстом (Жирность, Курсив, Цвет) работают.

Перевод: http://removie.ru/d2wt
Источник: http://www.reddit.com/r/Dota2Modding/comments/2dfvgl/intermediate_a_few_of_the_messagepopuptext/
 
Последнее редактирование:
Реклама: