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

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


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

(изменено)

НУ не знаю надо это или нет,но напишу....

 

Lua(в Сталкере,дальше буду просто писать Lua ) можно использовать не только для игрового процесса...

Доступны основные(а может и все)

команды(функции)

к примеру Оператор ввода/вывода..работа с фаилами и т.д.(Возможно,только в ЧН....)

вот простой пример:

function to_my_log(text)

io.open("gamedata\\solinx_log.txt","w"):write( text, "\n" )

io.open("gamedata\\solinx_log.txt","w"):close()

end

Рассмотрим подробнее

io.open(filename) - "открывает" для каких либо целей filename

:write(text,"\n") - оператор вывода,выводит(читай вписывает) в фаил открытый с помощью io.open , строку text...после переходит на следующую строку(есть ещё:"\t","\w")

:read(text) - оператор ввода,вводит (читай "читает") из фаила открытого с помощью io.open,строку текст

:close() - закрывает фаил открытый с помощью io.open

 

статьи по Lua(основам) можно найти тут http://www.lua.ru/doc/

 

Также есть функции "преобразования" ,как в любом языке(скриптовом,программирования)

Преобразование числового значения(любого) в строку:

tostring(c)

где с - это число

Преобразование строки в число:

tonumber(string)

где string - это строка (вдруг кто не в курсе :))

 

Особенность Lua(по моему только в нём так,хотя кроме Lua только питон смотрел):

что после основных операторов(циклов,условного и т.д.)(if ,for,while...)

ставится end

пример:

 

if then

else

end

 

for i,c do

end

 

while "true" do

end

 

 

Ещё одной особенность LUА ,можно назвать работу с массивами(читай "таблицами") без цикла

 

пример:

local tbl={}

 

--заполнение

function objparams_to_tbl(obj)

if isstalker(obj) then

tbl.sec =obj:section()

tbl.hp=obj:health

....

end

end

 

 

--применение

function objparams_to_msg()

news_manager.send_tip(db.actor,"obj:section ="..tbl.sec.."obj:health ="..tostring(obj.hp),nil,nil,1000)

end

 

Массив можно очистить/заполнить/прочитать/преобразовать....

 

И совет:Пользуйтесь SCiTE или любой другой редактор с выделением синтаксиса....

 

по alife_simulator

dont_has_info(const number&, string); - проверка на Неполученный инфопоршень(db.actor:dont_has_info("infoportion") или alife():actor():dont_has_info("infoportion")).
has_info - противоположная

 

Работа с фаилами:

Через системный фаил(systems.ltx)

 

system_ini():r_string(section,key) -- получение строки из секции[section ] и ключа key

system_ini():r_bool(section,key) --получение булевого значения (true,false) из секции[section ] и ключа key

system_ini():r_s32(section,key) --получение (целого?)числа из секции[section ] и ключа key

system_ini():r_float(section,key) --получение числа(с плавающей точкой) числа из секции[section ] и ключа key

 

Через другой фаил(который не прописан в системе)

 

local ini =ini_file("") -- путь до фаила (обьявляем переменную которая хранит имя и путь).Дальше также как и с системным фаилом

 

ini:r_string(section,key) -- получение строки из секции[section ] и ключа key

ini:r_bool(section,key) --получение булевого значения (true,false) из секции[section ] и ключа key

ini:r_s32(section,key) --получение (целого?)числа из секции[section ] и ключа key

ini:r_float(section,key) --получение числа(с плавающей точкой) числа из секции[section ] и ключа key

 

Вспомогательные функции

 

system_ini():line_exist( section, key ) -- проверяет существует ли в секции [section ] ключ key

system_ini():section_exist(section) --проверяет существует ли секция [section ]

 

EG:

0function eg()

1local ini=ini_file("gamedata\\test.ltx")

2if not ini then ini=system_ini() end

3if ini:section_exist("test_section") then

4if ini:line_exist("test_section","test_line") then

5return true

6end

7end

8end

 

1. - присваиваем переменной фаил

2. - проверяем существует ли фаил ,если нет то работаем с системой

3. - проверяем наличие секции в фаиле(системе)

4. - проверяем наличие ключа в секции из фаила(системы)

5. - возвращаем истину(нашли ключ)

 

Проверка ,что из себя представляет переменная

 

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

 

 

 

 

Теперь по порядку...

Если obj это строка ,то возвращаем "string"

Если же obj это число ,то возвращаем "number"

Если же obj это функция ,то возвращаем "function"

Если же obj это булево значение ,то возвращаем "booolean"

Если же obj это юзердата(хз что это),то возвращаем "userdata"

Если же obj это таблица, то возвращаем "table"

 

Это поможет в таких случаях ,когда неизвестно какой тип данных поступает в то или иное место...

 

 

класс CUIScriptWnd (); --для работы с окном....

Где знаю или догадываюсь поставил коментарий ....

    function _construct();
    function Register(CUIWindow*);
    function Register(CUIWindow*, string);
    function Enable(boolean);        --вкл/выкл
    function SetHeight(number);  --установка высоты
    function GetFrameLineWnd(string);
    function SetHolder(CDialogHolder*);
    function GetWidth() const;  --получение ширины контрола
    function GetCheckButton(string);--Получение состояния checkBox ,на выходе true или false?
    function DetachChild(CUIWindow*);
    function SetPPMode();
    function SetFont(CGameFont*);  --установка шрифта по имени
    function IsShown();                --проверка видно ли контрол иль нет?
    function Show(boolean);            --показывать контолили нет?
    function GetHeight() const;        --возвращает высоту
    function SetWidth(number);        --устанавливает ширину
    function GetListWndEx(string);
    function IsEnabled();
    function ResetPPMode();
    function GetPropertiesBox(string);
    function GetFont();                --возвращает шрифт установленный setFont?
    function Update();
    function AddCallback(string, number, const function<void>&); --соответские контрола с действие?
    function AddCallback(string, number, const function<void>&, object);--соответские контрола с действие?
    function GetButton(string);--Получаем последнюю нажатую кнопку?
    function SetAutoDelete(boolean);
    function OnKeyboard(number, enum EUIMessages);--Колбек нажатия на клавиатуре
    function Dispatch(number, number);
    function GetListWnd(string);--получение окна ListBoxa?
    function AttachChild(CUIWindow*);
    function GetStatic(string);--получение текста метки
    function SetWndPos(number, number);--установка позиции окна(x,y)
    function GetTabControl(string);
    function GetRadioButton(string);--состояние RadioButtton на выходите true или false
    function Init(number, number, number, number);--инициализация окна...читай FormInitializatione (x,y,width,height)
    function Init(Frect*);--инициализация окна
    function GetFrameWindow(string);
    function WindowName();
    function GetDialogWnd(string);
    function GetHolder();
    function SetWndRect(Frect);--установка координат углов
    function SetWndRect(number, number, number, number);--установка координат углов
    function GetEditBox(string);--получение текста из ЭдитБокса
    function SetWindowName(string);--Устанавливаем имя форме(caption)
    function GetProgressBar(string);
    function GetMessageBox(string);
    function SetWndSize(number, number);
    function Load(string);
    function IsAutoDelete();

Изменено пользователем меченый(стрелок)
  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Nekt, Спасибо :)...

malandrinus, желаю приятной поездки...

Ну и чтобы как-то разбудить тему расписал малюсенький класс.Мало кто им пользуется(что ИМХО плохо).Этот класс позволяет хранить данные в конфиг-файлах(что даёт возможность пользователям более легко править под себя параметры и т.д.).Раньше я расписывал некоторые методы класса,но всё таки.

C++ class ini_file {

ini_file (string); --создать объект класса ini_file/за место string прописываем путь до файла

 

function line_count(string); --возвращает количество ключей в секции string/ return ini:line_count("my_section")

function r_bool(string, string); --возвращает логическое(булево) значение/(секция,ключ)

function section_exist(string); --"проверка" существует ли секция string/if ini:section_exist("my_section")

function r_float(string, string); --возвращает значение с плавающей точкой

function r_clsid(string, string);*********************

function r_s32(string, string); --возвращает целое число

function r_line(ini_file*, string, number, string&, string&); --возвращает полностью "линию" т.е. key1 = value1

function r_token(string, string, const token_list&); **********

function r_vector(string, string);********

function r_u32(string, string);--возвращает целое число(чуть-чуть медленне чем s32)

function r_string_wq(string, string);--возвращает строку

function r_string(string, string);--возвращает строку

function line_exist(string, string);--"проверка" существует ли ключ /if ini:line_exist("my_section","key1")

};

 

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

Изменено пользователем меченый(стрелок)

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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