Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Создание диалогов. Очень просто! (Пусть вас не пугает огромное кол-во текста.) |
Создание диалогов. Очень просто! |
› Воскресенье
› 18.01.2009
› 16:24
› Сообщение #
Привожу пример создания диалога - картинка, 3 кнопки, текст
class NamDialog { idd = 5000; movingEnable = true; objects[] = {}; controlsBackground[]={Fon}; controls[]= {Pic1, But1, But2, ButOK}; class Pic1 : RscPicture { И файл с пояснением как это делается Прикрепления:
Class.txt
(9.9 Kb)
|
› Понедельник
› 19.01.2009
› 12:39
› Сообщение #
class RscTitles - Ещё один вид диалога , неотключает управления ботом.
можно показать карту, картинки, текст (кнопки недействуют) - непрерывая игры. пример - карта (работает 20 сек) |
› Понедельник
› 19.01.2009
› 19:06
› Сообщение #
по прозьбе трудящихся
Основные определения классов впрочем эти названия только для удобства , определяется класс в параметрах: Описание класса содержит состовляющие его элементы, параметры можно менять В составе диалога определяют ПОДклассы - т.е. часть класса , только то что подлежит изменению Основные параметры : значения от 0.0000 до 1.0000 размер элемента: значения от 0.0000 до 1.0000 (0.01 = 1% размера экрана) Описание диалога : Вызвать диалог можно из скрипта, тригера, поинта. class NamDialog { - это название используется при вызове диалога(как назовёте) objects[] = {}; - (компас , часы , и многдругое) class Pic1 : RscPicture { Для большенства диалогов хватает _ картинки _ кнопки _ тексты Определения классов лудше помещать в файл description.ext а описание диалога в отдельный файл #include "MapCont.hpp" - способ подключения файла с диалогом (после определения классов те в самом низу) #define FontM "Zeppelin33Italic" - использование переменной, -
Code class RscButton { type = 1; - - - - - - - - тип 1 значит кнопка idc = 0; style = 1; - - - - - - центровка текста colorText[] = { 1, 0, 0, 0.7 }; colorDisabled[] = { 0, 0, 1, 0.7 }; colorBackground[] = { 1, 1, 1, 0.9 }; colorBackgroundDisabled[] = { 1, 1, 1, 0.2 }; colorBackgroundActive[] = { 0, 0.7, 0.8, 1 }; colorShadow[] = { 0.3, 0.3, 0.3, 0.5 }; colorBorder[] = { 0.3, 0.3, 0.3, 1 }; borderSize = 0.001; offsetX = 0.001; offsetY = 0.001; offsetPressedX = 0.001; offsetPressedY = 0.001; soundEnter[] = {"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[] = {"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[] = {"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[] = {"\ca\ui\data\sound\mouse1", 0.15, 1}; font = FontN; sizeEx = 0.03; x = 0; y = 0; w = 0.1; h = 0.2; }; Code class RscPicture { type = 0; - - - - - - - статический объект idc = -1; style = 48; - - - - - - картинка colorBackground[] = {1, 1, 1, 1}; colorText[] = {1, 1, 1, 1}; font = Zeppelin32; sizeEx = 0.04; x = 0; y = 0; w = 0.1; h = 0.2; }; Code class RscText { type = 0; idc = -1; style = 2; colorBackground[] = {0, 0, 0, 0}; colorText[] = {0, 1, 0.5, 1}; font = FontM; sizeEx = 0.08; x = 0; y = 0; w = 0.1; h = 0.2; }; Code class ActiveText { idc = 0; type = 11; style = 2; x = 0.4; w = 0.2; h = 0.05; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; x = 0; y = 0; w = 0.1; h = 0.2; }; в каждой АА, а иногда и с новым патчем этот класс меняется Code class RscMapControl{ - - - - -Элементы карты можно подстроить access = 0; type = 101; idc = -1; style = 48; colorBackground[] = {1.00, 1.00, 1.00, 1.00}; colorText[] = {0.00, 0.00, 0.00, 1.00}; font = "TahomaB"; sizeEx = 0.040000; showCountourInterval=2; colorSea[] = {0.56, 0.80, 0.98, 0.50}; colorForest[] = {0.60, 0.80, 0.20, 0.50}; colorRocks[] = {0.50, 0.50, 0.50, 0.50}; colorCountlines[] = {0.65, 0.45, 0.27, 0.50}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1.00}; colorCountlinesWater[] = {0.00, 0.53, 1.00, 0.50}; colorMainCountlinesWater[] = {0.00, 0.53, 1.00, 1.00}; colorForestBorder[] = {0.40, 0.80, 0.00, 1.00}; colorRocksBorder[] = {0.50, 0.50, 0.50, 1.00}; colorPowerLines[] = {0.00, 0.00, 0.00, 1.00}; colorNames[] = {0.00, 0.00, 0.00, 1.00}; colorInactive[] = {1.00, 1.00, 1.00, 0.50}; colorLevels[] = {0.00, 0.00, 0.00, 1.00}; fontLabel = "TahomaB"; sizeExLabel = 0.02; fontGrid = "TahomaB"; sizeExGrid = 0.02; fontUnits = "TahomaB"; sizeExUnits = 0.02; fontNames = "TahomaB"; sizeExNames = 0.06; fontInfo = "TahomaB"; sizeExInfo = 0.02; fontLevel = "TahomaB"; sizeExLevel = 0.02; stickX = {0.20, {"Gamma", 1.00, 1.50} }; stickY = {0.20, {"Gamma", 1.00, 1.50} }; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; text = "\ca\ui\data\map_background_co.paa"; class ActiveMarker { color[] = {0.30, 0.10, 0.90, 1.00}; size = 50; }; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 14; importance = "1.5 * 14 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0.55, 0.64, 0.43, 1.00}; size = 14; importance = "0.2 * 14 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {0.00, 0.00, 1.00, 1.00}; size = 10; importance = "1 * 10 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Command { icon = "#(argb,8,8,3)color(1,1,1,1)"; color[] = {0.00, 0.00, 0.00, 1.00}; size = 18; importance = 1.00; coefMin = 1.00; coefMax = 1.00; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "0.7 * 16 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {1.00, 0.35, 0.35, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.75; coefMax = 4.00; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 12; importance = "1 * 12 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.50; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "1 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 20; importance = "3 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.50; coefMax = 4.00; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.35, 0.35, 0.35, 1.00}; size = 12; importance = "0.5 * 12 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 16; importance = "1.2 * 16 * 0.05"; coefMin = 1.00; coefMax = 4.00; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 20; importance = "2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1.00}; size = 12; importance = "0.9 * 16 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1.00}; size = 12; importance = "0.6 * 12 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 16; importance = "1 * 16 * 0.05"; coefMin = 0.70; coefMax = 4.00; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 20; importance = "2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2.5 * 16 * 0.05"; coefMin = 0.50; coefMax = 4.00; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 32; importance = "1.2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {0.00, 0.00, 0.00, 1.00}; size = 24; importance = 1.00; coefMin = 1.00; coefMax = 1.00; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; color[] = {0.00, 0.00, 0.00, 1.00}; size = 24; importance = 1.00; coefMin = 1.00; coefMax = 1.00; }; }; |
› Вторник
› 20.01.2009
› 09:18
› Сообщение #
Очень удобный класс для создания диалогов с большим количеством кнопок.
Code class RscToolbox { idc = 0; type = 6; style = 0x02; x = 0.1; - - - - место и размер поля размещения кнопок y = 0.41;- - - -(ложатся вплотную) w = 0.1; h = 0.05; colorText[] = {1, 1, 1, 1}; color[] = {0, 0, 0, 1}; colorTextSelect[] = {1, 0, 0, 1}; colorSelect[] = {0, 0, 1, 1}; colorTextDisable[] = {0.4, 0.4, 0.4, 1}; colorDisable[] = {0.4, 0.4, 0.4, 0.8}; font = "Zeppelin32"; sizeEx = 0.03;- - - размер текста rows = 6; - - - - - количество строк columns = 3; - - - -колво столбцов strings[] = {"здесь","названия","кнопок"}; - вданном случае 18 штук }; пример - 36 кнопок - 6x6 Code class dial { idd = 1000; movingEnable = true; controlsBackground[]={}; controls[]= {buk}; class buk : RscToolbox { idc = 1200; x = 0.1; y = 0.5; w = 0.3; h = 0.3; strings[] = {"Kn1","Kn2","Kn3",......"Kn36"}; rows = 6; columns = 6; onKeyDown = "arp = [_this select 0,_this select 1];"; onToolBoxSelChanged = "ars = [_this select 1];"; }; }; onToolBoxSelChanged = "_this - передача аргументов выбраного"; onToolBoxSelChanged _и_ onKeyDown - дополнительныe управляющиe элементы системы : В отличии от подбного диалога построенного на кслассах "RscButton" , текст значительно короче НО , каждый "RscButton" может запустить программу или установить маленький скрипт для демонстрации _ok = createDialog "dial" #next |
› Среда
› 21.01.2009
› 01:08
› Сообщение #
RscListBox - Шикарный класс, строки с текстом и картинками, каторые можно кликнуть.
Реализуется разворачивающийся список, при переполнении выделенного окна появляется полоса прокрутки. Большой набор команд обработки из скрипта. Code class RscListBox { idc = -1; type = 5; style = 16; w = 0.4; h = 0.4; font = "TahomaB"; colorText[] = {1, 1, 1, 1}; colorScrollbar[] = {1, 1, 1, 1}; colorSelect[] = {0.3, 0.3, 0.3, 1}; colorSelect2[] = {0, 1, 0, 1}; colorSelectBackground[] = {0.6, 0.6, 0.6, 1}; colorSelectBackground2[] = {0.2, 0.2, 0.2, 1}; colorBackground[] = {0, 0, 0, 1}; soundSelect[] = {"", 0.1, 1}; - звук *.ogg rowHeight = 0.05; - высота ряда period = 1; - шаг прокрутки (по одному) x = 0; - - место и размер окна y = 0; w = 1; h = 1; sizeEx = 0.04; - размер текста }; Дополнительный контроль системы "User Interface Event Handlers" onLBSelChanged - нажатие лев. клав. мыши на строке onLBListSelChanged - нажатие лев. клав. мыши на листе onLBDblClick - Дабл клик onLBDrag - начало перемещения onLBDragging - процесс перемещения onLBDrop - конец перемещения Ксожелению всё управление только из скрипта. продолжение следует. |
› Среда
› 21.01.2009
› 17:23
› Сообщение #
После того как я вас напугал или наоборот. Выкладываю описание как был сделан "ДУПЛЕТ".
состав диалога: Классы : RscText, RscPicture, RscButton - находятся в description.ext Работает без скрипта !!! Code class SelectPlayerDialog { idd = 5000; movingEnable = true; controlsBackground[]={Fon1,Fon2,FonImg1,FonImg2}; controls[]= {BootOK,Boot1,Boot2,Text1,Text2,Img1,Img2}; class Fon1 : RscText { colorBackground[] = {0.6,0.6,0.6,0.4}; - Фон серый x = 0.09; y = 0; w = 0.82; h = 1; text = ""; }; class Fon2 : RscText { colorBackground[] = {0.6,0.6,0.6,1}; - второй фон, чуть темней x = 0.1; y = 0.06; w = 0.8; h = 0.93; text = ""; }; class FonImg1 : RscText { colorBackground[] = {0, 0, 0, 0.7}; - фон под картинкой , чёрный x = 0.15; y = 0.1; w = 0.3; h = 0.67; text = ""; }; class FonImg2 : FonImg1 { - фон под картинкой 2, но сдвинут под вторую x = 0.55; }; class Text1 : RscText { colorBackground[] = {0.24,0.47,0.07,1}; - текст наверху (кирилица) "Смена роли" colorText[] = {1, 1, 1, 1}; x = 0.1; y = 0.01; w = 0.8; h = 0.06; text = "Смена роли"; }; class Text2 : RscText { idc = 2000; - - - - - - - - - - - - - адрес обращения для смены текста colorBackground[] = {0.5, 0.5, 0.5, 0.7}; - текст внизу "Игрок невыбран" - вначале, colorText[] = {0, 0, 0, 1}; - - - - - - - - после клика имя выбраного x = 0.2; y = 0.92; w = 0.45; h = 0.06; text = "РРіСЂРѕРє невыбран"; }; class Img1 : RscPicture { x = 0.17; y = 0.12; w = 0.26; h = 0.63; - картинка 1 (скрин) text = "img\Bot1.jpg"; }; class Img2 : Img1 { x = 0.56; text = "img\Bot2.jpg"; - - - картинка 2 }; class BootOK : RscButton { x = 0.66; y = 0.92; w = 0.14; h = 0.06; - КН "ОК" ,создаёт бота, передача упровления text = "OK"; action = "unit=group Player createUnit [SelTyp, pos0, [], 0, ""FORM""];selectPlayer unit;closeDialog 0"; }; class Boot1 : RscButton { x = 0.15; y = 0.8; w = 0.3; h = 0.06; - КН выбор роли text = "Майк Ламверт"; action = "SelTyp = ""SoldierWB"";ctrlSetText [2000, ""Майк Ламверт""]"; }; class Boot2 : Boot1 { - КН выбор роли 2 x = 0.55; text = "Ричард Анжело"; action = "SelTyp = ""SoldierWAT"";ctrlSetText [2000, ""Ричард Анжело""]"; }; }; |
› Четверг
› 15.10.2009
› 09:32
› Сообщение #
Способ построения диалогов в АА2 остался прежним. Добавили несколько новых элементов.
Для обнавления темы пример диалога с новыми кнопками. Кнопка в АА2 анимирована, используется 6 картинок которые можно заменить а также многострочный текст. Класс - RscShortcutButton копируется в файл.
Code class RscShortcutButton { type = 16; idc = -1; style = 0; default = 0; w = 0.183825; h = 0.104575; color[] = {0.543000,0.574200,0.410200,1.000000 }; color2[] = {0.950000,0.950000,0.950000,1 }; colorBackground[] = {1,1,1,1 }; colorbackground2[] = {1,1,1,0.400000 }; colorDisabled[] = {1,1,1,0.250000 }; periodFocus = 1.200000; periodOver = 0.800000; class HitZone { left = 0.004000; top = 0.029000; right = 0.004000; bottom = 0.029000; }; class ShortcutPos { left = 0.014500; top = 0.026000; w = 0.039216; h = 0.052288; }; class TextPos { left = 0.025000; top = 0.034000; right = 0.015000; bottom = 0.005000; }; animTextureNormal = "\ca\ui\data\ui_button_normal_ca.paa"; animTextureDisabled = "\ca\ui\data\ui_button_disabled_ca.paa"; animTextureOver = "\ca\ui\data\ui_button_over_ca.paa"; animTextureFocused = "\ca\ui\data\ui_button_focus_ca.paa"; animTexturePressed = "\ca\ui\data\ui_button_down_ca.paa"; animTextureDefault = "\ca\ui\data\ui_button_default_ca.paa"; TextureNoShortcut = ""; period = 0.400000; font = "Zeppelin32"; size = 0.039210; sizeEx = 0.039210; text = ""; soundEnter[] = {"\ca\ui\data\sound\mouse2",0.090000,1 }; soundPush[] = {"\ca\ui\data\sound\new1",0.090000,1 }; soundClick[] = {"\ca\ui\data\sound\mouse3",0.070000,1 }; soundEscape[] = {"\ca\ui\data\sound\mouse1",0.090000,1 }; action = ""; class Attributes { font = "Zeppelin32"; color = "#E5E5E5"; align = "left"; shadow = "true"; }; class AttributesImage { font = "Zeppelin32"; color = "#E5E5E5"; align = "left"; }; }; Диалог в другом файле, оба подключаются к Description.ext строками Code class dialog_new { idd = 61000; movingEnable = 0; objects[] = {}; controlsBackground[] = {}; controls[] = {But0, But1, But2}; class But0 : RscShortcutButton { x = 0; y = 0.83; w = 0.3; h = 0.1; text = "Click booton0"; action = "as = [] execVM ""File0.sqf"";"; }; class But1 : But0 { y = 0.88; text = "Click booton1"; action = "as = [] execVM ""File1.sqf"";"; }; class But2 : But0 { y = 0.93; text = "Click booton2"; action = "as = [] execVM ""File2.sqf"";"; }; }; action = ""; - Аналогично строке "expActiv" в тригере Запуск диалога : ok = createDialog "dialog_new" Прикрепления:
7250533.jpg
(6.7 Kb)
|
› Четверг
› 15.10.2009
› 09:36
› Сообщение #
Тут папка с файлами (непожелала крепится к общей куче)
Прикрепления:
Dl_Rsc.utes.rar
(1.8 Kb)
|
› Четверг
› 15.10.2009
› 15:57
› Сообщение #
Большое разнообразие класса RscText
все параметры постоянны кроме style для картинок style = 48; Прикрепления:
9594395.jpg
(21.3 Kb)
|
› Пятница
› 16.10.2009
› 09:31
› Сообщение #
Элемент Движок.
Тип - 3 , горизонтальный и вертикальный, со времён Офп. Тип - 43 , новый , только горизонтальный с возможностью заменить картинки. class MySlider { class RscSlider { управление из скрипта _pos = sliderPosition 123; - возвращает величину установленную движком. (idc = 123;) Прикрепления:
6364878.jpg
(6.3 Kb)
|
› Пятница
› 06.08.2010
› 12:27
› Сообщение #
Slon, Спасибо за наводку. Я попробовал один из представленных в этой ветке вариантов и он мне очень подошел. НО... Как сделать так, чтобы положение менюшки задавалось по клику на карте (т.е. в позиции курсора при клике по карте)? Это вообще возможно?
Сообщение отредактировал DAP5000 - Пятница, 06.08.2010, 15:02
|
› Пятница
› 06.08.2010
› 17:18
› Сообщение #
Каждый диалог можно оснастить дополнительными обработчиками событий
http://community.bistudio.com/wiki....ce_List плюс к этому спецально для карты а также котроль положения карты (открыта закрыта) |
› Вторник
› 23.11.2010
› 21:46
› Сообщение #
Slon, можешь сделать пример с менюшкой типа квадрат на экране появляется, в нем название, картинка, небольшой текст описания и две кнопки типа принять и отказаться, хочу сделать под минимиссии типо всплывающая на экране овервьюшка и чтоб можно было принять или отказаться от задания через кнопки.
Пытался разобраться сам, целый день просидел, нефига не получилось. А на примере с текстом проще будет разобраться. Плз очень надо Добавлено (23.11.2010, 21:31) Добавлено (23.11.2010, 21:46)
Броня крепка и танки наши быстры...
|
› Вторник
› 23.11.2010
› 21:56
› Сообщение #
примерно так
не давать закрыть диалог не получится но можно открывать его заново. Прикрепления:
Mini_tim.utes.rar
(3.8 Kb)
|
› Вторник
› 23.11.2010
› 22:15
› Сообщение #
Slon, Спасибо огромное за пример, ща буду ковыряться А можно сделать как -нибудь, чтобы игрок не мог сбрасывать диалог через ESC или чтобы он повторно возникал, если был сброшен...
Если можно примерчик условия: Если диалог закрыт, то открыть его заново Добавлено (23.11.2010, 22:07) Добавлено (23.11.2010, 22:09) Добавлено (23.11.2010, 22:15) class Bush { class BusStop { Вот это меня полностью вымораживает, что это такое ? Для чего это? Какие то кусты, автобусные астоновки, что это за классы такие и зачем нужны.....не понимаю
Броня крепка и танки наши быстры...
|
| |||
Чат сайта |