Сповіщення
Очистити все

Виведення повідомлення на екран


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
7 місяців тому
 

Як вивести повідомлення на екран без використання функцій АМК

У будь-якого клієнтського об'єкта є метод give_game_news . Він виводить повідомлення на екран. Експериментом з'ясував, що повідомлення можна вивести зовсім від будь-якого клієнтського об'єкта, хоч від шматка ковбаси (хвала дизайнерському генію GSC! Ну чому не зробити просто глобальну функцію?). Проте, слідуючи традиції та здоровий глузд, ми таки скористаємося при цьому об'єктом, відповідним ГГ, тобто. актором.

 
  local sactor = alife ( ) :actor ( )  --отримуємо серверний об'єкт актора 
    local cactor = level.object_by_id ( sactor.id )  --за його ID отримуємо клієнтський об'єкт актора 
    cactor:give_game_news ( 
        "Свободу тушканам! \\ nТушканчики всіх країн, об'єднуйтесь!" , -- рядок повідомлення, може бути багаторядковим 
        "ui \\ ui_npc_monster" ,         --текстура, з якої береться аватара "відправника" 
        Frect ( ) :set ( 0 , 215 , 163 , 105 ) ,   --координати та розміри зображення, що вирізається з текстури 
        math .random ( 1000 , 3000 ) ,      --початок показу повідомлення з поточного моменту (у мілісекундах) 5000 --тривалість показу повідомлення (у мілісекундах) )
                                 
        
 

Дод. коментарі до аргументів give_game_news

Ім'я текстури - це ім'я dds-файлу без розширення, адресованого щодо папки \gamedata\textures\ у цьому виразі:

 
Frect ( ) :set ( 0 , 215 , 163 , 105 )
 

0,215 – це координати верхнього лівого кута потрібного зображення;
163,105 – його розміри.
Розміри та координати можуть бути будь-якими, але отримане зображення буде збільшено або зменшено до розмірів 83х47. У цьому випадку зображення тушкана з файлу ui_npc_monster.dds було зменшено. Параметр часу початку показу потрібний, очевидно, для внесення певної жвавості у гру. Річ у тім, що код Lua отримує управління лише певні моменти, за певним подіям. У такий момент можна згенерувати пачку повідомлень та розкидати їх за часом за допомогою цього параметра, створивши таким чином деяку імітацію життєдіяльності на найближчий час. Думаю, так само можна імітувати діалоги. Просто генерується пачка повідомлень і задається висновок з невеликим інтервалом.


   
Цитата