Перейти к контенту
Malandrinus

Справочник по функциям и классам

Рекомендуемые сообщения

Может кто знает как работает константы\флажки из ui_events. Как работает кнопка я знаю, но как остальные не вполне понимаю.

Вот к примеру там есть "INVENTORY_ATTACH_ADDON", как это можно использовать и можно ли вообще?

 

Garry_Galler,

Спасибо, но я уже разобрался. Вот теперь вопрос по ui_events.

Изменено пользователем Real Wolf
Ссылка на комментарий

Слегка обновил информацию в одной из старых статей, а именно про управление задачами (они же квесты). В описание класса SGameTaskObjective добавил информацию по заданию предусловий на провал и успех а также действий по провалу и успеху. Указаны соответствущие теги в XML описании.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

IQDDD,

никак. В ЧН этот контрол такой-же нерабочий, как и в ТЧ.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

да я уж понял. приходится всплывающим листбоксом делать. :(

зы: а по идее можно создать собственный ComboBox, используя классы CUIButtonWnd, CUIStaticWnd и CUIListWnd. Неполноценный, конечно, но всё равно. :) А есть коллбек на потерю фокуса окном?

Изменено пользователем IQDDD
Ссылка на комментарий

IQDDD,

нету. Да и посмотри сам класс-перечисление ui_events. Там всё, что есть.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Всё таки мне не понятно как испольовать этот класс ui_events. Вот к примеру, что как использовать UNDRESS_OUTFIT?

 

Ссылка на комментарий

Real Wolf,

класс ui_events непосредственно использовать нельзя. Это просто набор именованных целочисленных констант. Использовать можно класс CUIScriptWnd, где можно регистрировать события от дочерних окошек. Там эти константы и используются для указания, какое именно событие регистрируется. Это было описано в посте про окна. При этом, часть событий недоступна для использования, поскольку не экспортированы классы окон, которые их генерируют. В частности UNDRESS_OUTFIT бесполезен, поскольку генерируется классом окна инвентаря, а оно никак в скриптах не доступно.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

почему же недоступно? доступно. но вот как обратиться к дочерним элементам-загадка.

и зарегистрированы ли под именами-тоже.

Ссылка на комментарий

IQDDD,

почему же недоступно? доступно

В смысле доступны? Поясни, пожалуйста, или пример приведи.

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Товарищи!

В посте про СConsole говорится:

local hud_crhr = con:get_bool("hud_crosshair") -- узнать, включён ли прицел (выдаст логическое значение)

А если узнавать аргумент у не зарегистрированного? Например:

local hud_crhr = con:get_bool("test")

Можно так делать?

Ссылка на комментарий

DiXares,

Нет же такой консольной команды "test". Вылет будет или nil вернёт - какая разница. По-любому нет смысла так делать.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

malandrinus, а можно как то в движок добавлять фейковые команды?

В соседней теме где-то читал про то, как kolmogor показывал, как добавлять, но не нашёл...

По идее, если сделать пару команд, то можно из консоли управлять скриптами.

Ссылка на комментарий

DiXares,

можно добавлять. Пример там, посмотри в теме xray extentions. Там есть добавление команд.

 

По идее, если сделать пару команд, то можно из консоли управлять скриптами.

Наверное можно, только зачем это надо? Есть и другие способы во время игры выполнить произвольный скрипт.

Даже если предположить реализацию с консолью. Как это будет выглядеть? Набираешь команду, аргумент - имя функции для выполнения. Так? А как передавать аргументы? Страшная морока для реализации.

И по любому, не вижу в этом ровно никаких преимуществ перед существующими способами.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

1. Как узнать локацию серверного объекта? Смотрел справочник, смотрел состав net packet'ов, юзал поиск на форуме и google (возможно, плохо) - не нашёл.

2. Почему вызов level.add_map_object_spot_ser на объект из другой локации не ставит метку? (Перебирал все предметы alife'а, стоя на болотах. Метки появились только на болотах.

Ссылка на комментарий

IQDDD Ты сам ответил себе на первый вопрос во втором. Локация серверного объекта - видимо текущая

 

ЗЫ:

function check_type(obj)

if obj then

if type(obj)=="string" then

return "string"

elseif type(obj)=="number" then

return "number"

elseif type(obj)=="function" then

return "function"

elseif type(obj)=="boolean" then

return "boolean"

elseif type(obj)=="userdata" then

return "userdata"

elseif type(obj)=="table" then

return "table"

end

end

end

 

function check_type(obj)
if obj then
return type(obj)
end
end

вернет тоже самое

 

Изменено пользователем XMK
Ссылка на комментарий

А теперь, товарищи, дружно забудем такой архаизм как амкашную функцию разделения строки str_explode (и ее варианты в других модах) и начинаем пользоваться быстрыми методами:

(несмотря на то, что код может показаться не очень компактным, легко заметить, что там всю основную работу выполняет одна строчка - все прочее - дань универсализму.)

Авторы Gun12, Garry_Galler, Artos - изначально был мой вариант с одним шаблоном, потом Gun12 предложил более универсальный паттерн, Artos привел все в божеский вид, ну и общими усилиями получился такой вариант (последняя редакция - чисто моя)

 

Аргументы:

sStr -- cтрока для разбора

Mode -- режим заполнения таблицы

sDiv --сепаратор: если указываем, то обязательно указать режим Mode

sPattern -- свой шаблон:если указываем, то в аргументе sDiv передать nil и обязательно указать режим Mode

 

function StringSplit(sStr, Mode, sDiv, sPattern)
    local tRet = {}
    local sPatt
    if sDiv and  not sPattern then --// если сепаратор  задан: разделяем по нему
    --// если нет шаблона - используем универсальный
    sPatt = '[^%s%'..sDiv..']+'
--// если сепаратор указан как nil, но указан  шаблон: используем его
    elseif not sDiv and  sPattern then 
    sPatt=sPattern
    else--/ если сепаратор и шаблон  не указаны: разделяем слова
    sPatt = '[%w%_]+'
    end
    if Mode == nil then --// обычный массив
        for sValue in sStr:gmatch(sPatt) do
            table.insert(tRet, sValue)
        end
    elseif Mode == true then --// таблица '[значение]=true'
        for sValue in sStr:gmatch(sPatt) do
            tRet[sValue] = true
        end
    elseif type(Mode) == "number" then --//таблица '[idx] = число или стринг'
        for sValue in sStr:gmatch(sPatt) do
        tRet[#tRet+1] = tonumber(sValue) or sValue
        end
    end
  return tRet
end

--вызовы

local t =StringSplit("vid mode 1024x768", true, nil, "%d+")  --используем свой шаблон для получения из строки двух цифр
local t =StringSplit("ammo_9x18_fmj, ammo_9x18_pmm, ammo_11.43x23_fmj", 1,",") -- делим строку по разделителю-запятой
-- делим строку на слова независимо от имеющихся разделителей
local t =StringSplit(" There will come soft rains and the smell of the ground, And swallows circling with their shimmering sound")
-- когда в строке имеется несколько видов сепараторов и нужно все их указать, можно сделать так:
local s = "ammo_9x18_fmj, ammo_9x39_pab9! ammo_9x39_ap$ ammo_9x39_sp5? ammo_9x18_pmm; ammo_11.43x23_fmj"
local t =StringSplit(s, true,",%;%?%!%$")

 

Изменено пользователем Garry_Galler
Ссылка на комментарий

Всех с наступающим! Подскажите, можно ли (и если да, то как) запретить выполнение какой-либо консольной команды?

Ссылка на комментарий

Всех с наступающим Новым Годом!

 

Scarabay,

насколько я знаю, запретить выполнение консольных команд нельзя.

Изменено пользователем malandrinus
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...