• Страница 1 из 1
  • 1
Отправка текста в чат из поля в аддоне
Nyll
Здравствуйте, сегодня мы будем делать аддон, который отправляет текст из поля для ввода в чат, при нажатии на кнопку. Этот аддон будет состоять из lua и xml файла.



Полезные ссылки:
Инструкция по созданию toc файла - тык
Ссылка на предыдущие статью - тык
Скачать notepad++ - тык
API функции - тык

Создаем папку для аддон, и называем ее как угодно(Я назову ее, myaddon). В этой папке создаем 3, файла: myaddon.toc(измените название этого файла в название вашей папки), myaddon.lua и myaddon.xml.
Теперь откроем файл lua, изменяем кодировку на UTF-8, и пишем туда следующий код:

Code
function out(text)
DEFAULT_CHAT_FRAME:AddMessage(text);
end

function outHUD(text)
UIErrorsFrame:AddMessage(text, 1.0, 1.0, 0, 1,10);
end

function outERROR(text)
DEFAULT_CHAT_FRAME:AddMessage(text, 1.0, 0.0, 0.0, 1.0);
UIErrorsFrame:AddMessage(text, 1.0, 1.0, 0, 1,10);
end

function outPM(text,recipient)
SendChatMessage(text, "WHISPER", nil,recipient);
end

function outPMSET(text,lang, recipient)
SendChatMessage(text, "WHISPER", lang ,recipient);
end

function outSAY(text)
SendChatMessage(text, "SAY", nil,nil);
end

function outSYS(text)
DEFAULT_CHAT_FRAME:AddMessage(text, 1.0, 1.0, 0, 0);
end

function outNotes(text)
SendChatMessage(text, "CHANNEL", nil, chanNum);
end

function outMESS(text,name)
MessengerMainFrame:AddMessage(text);
end

function wowjp()   
   texts = name:GetText();   
   outSAY(""..texts.."");   
   end


Теперь я объясню, что значат эти строки.

Code
function out(text)
DEFAULT_CHAT_FRAME:AddMessage(text);
end

function outHUD(text)
UIErrorsFrame:AddMessage(text, 1.0, 1.0, 0, 1,10);
end

function outERROR(text)
DEFAULT_CHAT_FRAME:AddMessage(text, 1.0, 0.0, 0.0, 1.0);
UIErrorsFrame:AddMessage(text, 1.0, 1.0, 0, 1,10);
end

function outPM(text,recipient)
SendChatMessage(text, "WHISPER", nil,recipient);
end

function outPMSET(text,lang, recipient)
SendChatMessage(text, "WHISPER", lang ,recipient);
end

function outSAY(text)
SendChatMessage(text, "SAY", nil,nil);
end

function outSYS(text)
DEFAULT_CHAT_FRAME:AddMessage(text, 1.0, 1.0, 0, 0);
end

function outNotes(text)
SendChatMessage(text, "CHANNEL", nil, chanNum);
end

function outMESS(text,name)
MessengerMainFrame:AddMessage(text);
end


Это так сказать "Изменение стандартных чат функций" например: Была у нас функция SendChatMessage, из нее мы сделали функцию outSAY, так легчи будет нам писать код wink
Code
function outSAY(text)
SendChatMessage(text, "SAY", nil,nil);
end


Код:
Code
function wowjp()
texts = name:GetText();
outSAY(""..texts.."");
end

Это так сказать обработчик, который принимает и отправляет сообщение в чат.
Code
function wowjp()

Функция

Code
texts = name:GetText();

Перезаправка сообщение на "..texts.." и создание "..texts.."

Code
outSAY(""..texts.."");

Отправка сообщения в чат

Теперь откроем файл xml, и пишем туда:

Code
<Ui xmlns="http://www.blizzard.com/wow/ui" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <!--Autogenerated by wowuides, Version=1.0.300.0, Culture=neutral, PublicKeyToken=null-->
       <Frame name="MangAdminForm32" movable="true" enableMouse="true" clampedToScreen="true">
         <!--<FrameSkin skinid="dcb143e1-a4ab-4e7c-b934-1efa40101d21" frameid="2d508883-59c2-4f83-ae10-27aaad48391b" />-->
         <Size>
           <AbsDimension x="371" y="95" />
         </Size>
         <Anchors>
           <Anchor point="CENTER" relativeTo="UIParent">
             <Offset>
               <AbsDimension x="0" y="0" />
             </Offset>
           </Anchor>
         </Anchors>
         <TitleRegion setAllPoints="true" />
              
         <Layers>
           <Layer>
                  
                  
           </Layer>
         </Layers>
         <Frames>
           <Frame name="$parentPanel1">
                 
             <Size>
               <AbsDimension x="327" y="95" />
             </Size>
             <Anchors>
               <Anchor point="TOPLEFT">
                 <Offset>
                   <AbsDimension x="41" y="-59" />
                 </Offset>
               </Anchor>
             </Anchors>
              <Backdrop bgFile="Interface\Buttons\UI-SliderBar-Background" edgeFile="Interface\Buttons\UI-SliderBar-Border" tile="false">
                
        <BackgroundInsets>
             <AbsInset left="3" right="3" top="6" bottom="6" />
           </BackgroundInsets>
           <TileSize>
             <AbsValue val="8" />
           </TileSize>
           <EdgeSize>
             <AbsValue val="8" />
           </EdgeSize>
         </Backdrop>
             <Frames>
                   
           
                    
                    
               <Button name="$parentButton1" text="Отправить">
                 <Size>
                   <AbsDimension x="145" y="30" />
                 </Size>
                 <Anchors>
                   <Anchor point="TOPLEFT">
                     <Offset>
                       <AbsDimension x="19" y="-49" />
                     </Offset>
                   </Anchor>
                 </Anchors>
                 <Scripts>
                   <OnClick>wowjp()
               
</OnClick>
                 </Scripts>
                 <NormalTexture file="Interface\Buttons\UI-Panel-Button-Up">
                   <TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
                 </NormalTexture>
                 <PushedTexture file="Interface\Buttons\UI-Panel-Button-Down">
                   <TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
                 </PushedTexture>
                 <DisabledTexture file="Interface\Buttons\UI-Panel-Button-Disabled">
                   <TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
                 </DisabledTexture>
                 <HighlightTexture file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD">
                   <TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
                 </HighlightTexture>
                 <ButtonText name="$parentText">
                   <Anchors>
                     <Anchor point="CENTER">
                       <Offset>
                         <AbsDimension x="0" y="1" />
                       </Offset>
                     </Anchor>
                   </Anchors>
                   <FontHeight>
                     <AbsValue val="10" />
                   </FontHeight>
                 </ButtonText>
                 <NormalFont style="GameFontNormal" />
                 <HighlightFont style="GameFontHighlight" />
                 <DisabledFont style="GameFontDisable" />
                 <PushedTextOffset x="0" y="0" />
               </Button>
                    
              
            
<EditBox name="name" enableMouse="true">
                     
                 <Size>
                   <AbsDimension x="269" y="22" />
                 </Size>
                 <Anchors>
                   <Anchor point="TOPLEFT">
                     <Offset>
                       <AbsDimension x="19" y="-21" />
                     </Offset>
                   </Anchor>
                 </Anchors>
                 <Layers>
                   <Layer level="BACKGROUND">
                     <Texture name="$parentLeft" file="Interface\Common\Common-Input-Border">
                       <Size>
                         <AbsDimension x="8" y="20" />
                       </Size>
                       <Anchors>
                         <Anchor point="LEFT" />
                       </Anchors>
                       <TexCoords left="0" right="0.0625" top="0" bottom="0.625" />
                     </Texture>
                     <Texture name="$parentRight" file="Interface\Common\Common-Input-Border">
                       <Size>
                         <AbsDimension x="8" y="20" />
                       </Size>
                       <Anchors>
                         <Anchor point="RIGHT" />
                       </Anchors>
                       <TexCoords left="0.9375" right="1" top="0" bottom="0.625" />
                     </Texture>
                     <Texture name="$parentMiddle" file="Interface\Common\Common-Input-Border">
                       <Size>
                         <AbsDimension x="10" y="20" />
                       </Size>
                       <Anchors>
                         <Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT" />
                         <Anchor point="RIGHT" relativeTo="$parentRight" relativePoint="LEFT" />
                       </Anchors>
                       <TexCoords left="0.0625" right="0.9375" top="0" bottom="0.625" />
                     </Texture>
                   </Layer>
                 </Layers>
                 <FontString font="Fonts\ARIALN.TTF">
                   <FontHeight>
                     <AbsValue val="14" />
                   </FontHeight>
                   <Color r="1" g="1" b="1" />
                   <Shadow>
                     <Color r="0" g="0" b="0" />
                     <Offset>
                       <AbsDimension x="1" y="-1" />
                     </Offset>
                   </Shadow>
                 </FontString>
               </EditBox>
              
               
                    
             </Frames>
           </Frame>
           <Frame name="$parentTexture1">
             <!--<FrameSkin skinid="f15d4970-d66d-444e-bb2d-1ad102c87fed" frameid="f15d4979-d66d-444e-bb2d-1ad102c87fed" />-->
             <Size>
               <AbsDimension x="348" y="207" />
             </Size>
             <Anchors>
               <Anchor point="TOPLEFT">
                 <Offset>
                   <AbsDimension x="12" y="-20" />
                 </Offset>
               </Anchor>
             </Anchors>
             <Layers>
               <Layer>
                      
               </Layer>
             </Layers>
           </Frame>
         </Frames>
       </Frame>
</Ui>

Теперь я вам расскажу значение очень важных для нас строк.

Code
<Size>
<AbsDimension x="327" y="95" />
</Size>

Установка размера окна.

Code
<Offset>
<AbsDimension x="41" y="-59" />
</Offset>

Позиция окна(в координатах)

Code
<Backdrop bgFile="Interface\Buttons\UI-SliderBar-Background" edgeFile="Interface\Buttons\UI-SliderBar-Border" tile="false">

<BackgroundInsets>
<AbsInset left="3" right="3" top="6" bottom="6" />
</BackgroundInsets>
<TileSize>
<AbsValue val="8" />
</TileSize>
<EdgeSize>
<AbsValue val="8" />
</EdgeSize>
</Backdrop>

Скин.

Code
<Button name="$parentButton1" text="Отправить">
<Size>
<AbsDimension x="145" y="30" />
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="19" y="-49" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>wowjp()

</OnClick>
</Scripts>
<NormalTexture file="Interface\Buttons\UI-Panel-Button-Up">
<TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
</NormalTexture>
<PushedTexture file="Interface\Buttons\UI-Panel-Button-Down">
<TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
</PushedTexture>
<DisabledTexture file="Interface\Buttons\UI-Panel-Button-Disabled">
<TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
</DisabledTexture>
<HighlightTexture file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD">
<TexCoords left="0" right="0.625" top="0" bottom="0.6875" />
</HighlightTexture>
<ButtonText name="$parentText">
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="0" y="1" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="10" />
</FontHeight>
</ButtonText>
<NormalFont style="GameFontNormal" />
<HighlightFont style="GameFontHighlight" />
<DisabledFont style="GameFontDisable" />
<PushedTextOffset x="0" y="0" />
</Button>

Кнопка, которая посылает текст с едитбокса на наш обработчик.
Code
<OnClick>wowjp()

</OnClick>

Название нашей функции "Обработчика"
Code
<Button name="$parentButton1" text="Отправить">

Название кнопки
Code
<Size>
<AbsDimension x="145" y="30" />
</Size>

Размер кнопки
Code
<Offset>
<AbsDimension x="19" y="-49" />
</Offset>

Позиция кнопки в координатах.

Code
<EditBox name="name" enableMouse="true">

<Size>
<AbsDimension x="269" y="22" />
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="19" y="-21" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentLeft" file="Interface\Common\Common-Input-Border">
<Size>
<AbsDimension x="8" y="20" />
</Size>
<Anchors>
<Anchor point="LEFT" />
</Anchors>
<TexCoords left="0" right="0.0625" top="0" bottom="0.625" />
</Texture>
<Texture name="$parentRight" file="Interface\Common\Common-Input-Border">
<Size>
<AbsDimension x="8" y="20" />
</Size>
<Anchors>
<Anchor point="RIGHT" />
</Anchors>
<TexCoords left="0.9375" right="1" top="0" bottom="0.625" />
</Texture>
<Texture name="$parentMiddle" file="Interface\Common\Common-Input-Border">
<Size>
<AbsDimension x="10" y="20" />
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT" />
<Anchor point="RIGHT" relativeTo="$parentRight" relativePoint="LEFT" />
</Anchors>
<TexCoords left="0.0625" right="0.9375" top="0" bottom="0.625" />
</Texture>
</Layer>
</Layers>
<FontString font="Fonts\ARIALN.TTF">
<FontHeight>
<AbsValue val="14" />
</FontHeight>
<Color r="1" g="1" b="1" />
<Shadow>
<Color r="0" g="0" b="0" /> <Offset>

<AbsDimension x="1" y="-1" />
</Offset>
</Shadow>
</FontString>
</EditBox>

Наш эдитбокс

Вот и все, ниже видео, о том, как это будет выглядеть в игре.



[download]Addon - для WoW 3.3[/download]
Прикрепления: 4955949.png (25.6 Kb)
Маме беркута привет!
Сообщение # 1 отредактировано Nyll - Пятница, 24.02.2012, 12:10
Mercan
Скаут
За старания +
А вот аддон ни о чем!

______________________________________________________________


Сообщение # 2 написано 25.11.2011 в 23:10
Nightdied
Старший Маршал
Quote (Mercan)
А вот аддон ни о чем!

Почему же? smile Быть может, пригодится сборщикам UI или чего-то подобного.
Сообщение # 3 написано 26.11.2011 в 06:18
TiHoN
Скаут
Вопрос: "Для чего это?"
Сообщение # 4 написано 26.11.2011 в 12:51
ИллидашкО
Скаут
Quote (TiHoN)
Вопрос: "Для чего это?"

Quote (Mercan)
А вот аддон ни о чем!

Ребят для дебилов же х)

Quote
Разработка аддонов

изучение основ для новичков

Руки работают, видят глаза. Порхай как бабочка, жаль как пчела © Мухаммед Али
то что вы на свободе это не ваша заслуга,а наша не дороботка!!!
Сообщение # 5 отредактировано ИллидашкО - Суббота, 26.11.2011, 14:37
INFERNOS
нул,займись полезным.хватит делать спамерские аддоны
Присяжный - краб.
Сообщение # 6 написано 26.11.2011 в 21:21
SnAtVB
Скаут
О боже мой..
Парень, красавчик)
Все начинается с малого, и такая функция будет полезна. Или же часть функции.
Это АЗЫ ..пф.. вы наверное гении)
Сообщение # 7 написано 26.11.2011 в 23:52
Poбот
Король железяк.
Сделай лучше что-нибудь типо плейлиста =)А так аддон норм.
Сообщение # 8 написано 28.11.2011 в 22:03
Mercan
Скаут
Quote (Nightdied)
Почему же? Быть может, пригодится сборщикам UI или чего-то подобного.

Ну не знаю.
По мне стандартный чат лучше чем вот это.
Мое мнение.

______________________________________________________________


Сообщение # 9 написано 20.01.2012 в 18:26
Vladyxxa
Капрал
На видео мой чар Самотык biggrin на увове тестовый реалм 2 biggrin

Добавлено (08.04.2012, 22:23)
---------------------------------------------
а по поводу аддона, спс нулл за поле) если вы непоняли то меню модификации в NyllAdmin сделано с этим полем)

Сообщение # 10 написано 08.04.2012 в 22:23
sword_Full
Скаут
Он как то писал. Онли луа. Посмотрим:)
Сообщение # 11 написано 08.04.2012 в 23:33
Vladyxxa
Капрал
Nyll, как сделать что-бы при запуске игры это окно было закрыто, а не открыто?
Сообщение # 12 написано 09.04.2012 в 00:31
Nyll
Vladyxxa, хз (сарказм)
Маме беркута привет!
Сообщение # 13 отредактировано Nyll - Понедельник, 09.04.2012, 00:34
Vladyxxa
Капрал
все дело в одной строчке -_- в двух словах
вместо
Code
<Frame name="MangAdminForm32" movable="true" enableMouse="true" clampedToScreen="true">

надо
Code
<Frame name="MangAdminForm32" hidden="true" movable="true" enableMouse="true" clampedToScreen="true">

элементарно)
Сообщение # 14 написано 09.04.2012 в 01:54
Demolisher
Скаут
Ты ему это так говоришь, будто он этого никогда не знал bag
Сообщение # 15 написано 09.04.2012 в 10:00
Insurgente
Скаут
Nyll, знаю что не в той теме пишу, но как сделать интерфейс как у тебя в видео?)
Сообщение # 16 написано 24.07.2012 в 20:17
Innovation
куллл
Не доверяй никому!)
Сообщение # 17 написано 26.07.2012 в 10:35
Self_Killing
Скаут
Так-то аддон нормальный. Но есть минус: Когда создаешь нового персонажа и заходишь за него в игру, а там же сначала ролик идет.... Его пропустить нельзя и проходиться ждать... Ну а так норм. smile
Смерть - это стрела, пущенная в тебя, а жизнь - то мгновение, за которое она до тебя долетает.
Сообщение # 18 написано 06.08.2012 в 21:30
Vladyxxa
Капрал
Подсказка. поставь просто закрытым его при вхоже в игру, и слеш команду для открытия, и не будет этого.
Сообщение # 19 отредактировано Vladyxxa - Вторник, 07.08.2012, 04:09
digital_vicing
Скаут
Подскажите плиз, есть ли возможность добавить функцию "линка" ника игрока из чата (как в почтовом аддоне)? Спс заранее!
Сообщение # 20 написано 27.03.2013 в 17:56
  • Страница 1 из 1
  • 1
Поиск: