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

Скриптование


Svoboда

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

TREWKO

с диалогом:

сделай выдачу поршня "my_info" в твоей функции,а в диалоге сделай <has_info>my_info</has_info>

--------------------

Описание "class ini_file" от меченый(стрелок):

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")

};

 

Примеры работы с ним:

...

local ini = ini_file("my_folder\my.ltx")

if ini:section_exist("my_section") then

...

end

----------------------------------------

local ini = ini_file("my_folder\my.ltx")

ini:r_float("my_section", "my_line") --возвращает значение с плавающей точкой

...

----------------------------------------

local ini = ini_file("my_folder\my.ltx")

ini:r_s32("my_section", "my_line") --возвращает целое число

...

----------------------------------------

local ini = ini_file("my_folder\my.ltx")

ini:r_u32("my_section", "my_line") --возвращает целое число

...

 

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

кровоSTALKER

юзай так:

function wpn_class()
local hud = get_hud()
local custom_static = hud:GetCustomStatic("din_pric")
local active_item=db.actor:active_item()
if active_item then
    if (active_item:section() == "wpn_vintorez" or active_item:section() == "wpn_svu" or active_item:section() == "wpn_svd") and math.ceil(db.actor:accuracy()*1000) == 1 then
        if custom_static == nil then
                      hud:AddCustomStatic("din_pric", true)
        end
    end
end
end

 

апдейт в bind_stalker.script - function actor_binder:update(delta)

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение
function din_scope()
local hud = get_hud()
local custom_static = hud:GetCustomStatic("din_pric")
local active_item=db.actor:active_item()
if active_item then
    if active_item:section() == "wpn_vintorez" or active_item:section() == "wpn_svu" or active_item:section() == "wpn_svd" then
    if math.ceil(db.actor:accuracy()*1000) == 1 then
        if custom_static == nil then
                      hud:AddCustomStatic("din_pric", true)
        end
      end
    end
end
end

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

кровоSTALKER

не ври!я проверил - всё работает!

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

кровоSTALKER

в bind_stalker.script, function actor_binder:update(delta)

...
        self.bCheckStart = false        
    end        
test.active_weapon()
end
...

 

и как у тебя может не работать,если я у себя изменял только название кастом статика,скрипт не трогал?

function active_weapon()

local hud = get_hud()

local custom_static = hud:GetCustomStatic("ait")

local active_item=db.actor:active_item()

if active_item then

if active_item:section() == "wpn_vintorez" or active_item:section() == "wpn_svu" or active_item:section() == "wpn_svd" then

if math.ceil(db.actor:accuracy()*1000) == 1 then

if custom_static == nil then

hud:AddCustomStatic("ait", true)

end

end

end

end

 

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

Renson

function check_level()

local current_level = ""

if level.name() == "l01_escape" then

current_level = "esc"

end

if level.name() == "l02_garbage" then

current_level = "gar"

end

if level.name() == "l04_darkvalley" then

current_level = "dv"

end

if level.name() == "l05_bar" then

current_level = "bar"

end

if level.name() == "l06_rostok" then

current_level = "rost"

end

if level.name() == "l07_military" then

current_level = "mil"

end

if level.name() == "l08_yantar" then

current_level = "yan"

end

if level.name() == "l10_radar" then

current_level = "rad"

end

if level.name() == "l11_pripyat then

current_level = "pri"

end

if level.name() == "l12_stancia" then

current_level = "stan"

end

if level.name() == "l11_pripyat then

current_level = "pri"

end

return current_level

end

 

для добавления уровня делай так:

if level.name() == "название_локи" then
    current_level = "любой_текст"
end

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

кровоSTALKER

Так я не экстрасенс.Не могу я знать,что тебе на ЗП надо.

сейчас попробую на ЗП,потом отпишусь.

----upd.

ну вот,проверил на ЗП.Всё работает.

только строчку

if math.ceil(db.actor:accuracy()*1000) == 1 then

измени так

if math.ceil(db.actor:accuracy()*1000) == 0 then

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

max_max_08

на,держи ;)

function spawn()

alife():create("item1", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

alife():create("item2", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

end

 

function update()

local tim = game.time()

local timer = 100000

if (game.time() - tim) >= timer and db.actor:object("item1") and db.actor:object("item2") then

alife():release(alife():object(db.actor:object("item1"):id()), true)

alife():release(alife():object(db.actor:object("item2"):id()), true)

tim = game.time()

timer = 100000

end

alife():create("item1", vector():set(x,y,z),level_vertex_id,game_vertex_id)

alife():create("item2", vector():set(x,y,z),level_vertex_id,game_vertex_id)

end

 

функцию update() пихай в bind_stalker.script, function actor_binder:update(delta).

my.update()

----------

функцию spawn() пихай в bind_stalker.script, function actor_binder:update(delta),между

level_tasks.add_lchanger_location()

и

self.bCheckStart = false

т.е. так:

level_tasks.add_lchanger_location()

my.spawn()

self.bCheckStart = false

 

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

кровоSTALKER

:blink: не знаю..у себя раза 2-3 точно проверял - работало.как ты всё это делал - не знаю.в ПМ стучи.Расскажешь.

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

zubr14

пропиши в диалоге

<action>killactor</action>

и,если тебе надо на ЗП,в xr_effects.script пропиши.

function killactor (actor, npc)
    npc:set_relation (game_object.enemy, actor)
end

не проверял,но должно работать.

 

или как?!

я разве не ясно написал? :huh:

<action>killactor</action>

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

Вопрос по кастом статикам в ЗП:

cust_static:wnd():SetWidth(num)

cust_static:wnd():SetHeight(cw)

cust_static:wnd():SetWndPos(pos)

custom_static:wnd():SetColor(col)

Не один из методов не работает.В ТЧ всё работало..Собсно ПЫС это полностью вырезали,или чем-то заменили?

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

Galil

[spoiler=Делай работу над ошибками :D]

local ? = level.get_weather()

не задано имя локальной переменной

...

if weather == ? then

чему они должны равнятся?

...

if not self.particles then

self.particles=particles_object("anomaly2\\snow_vuga")

self.particles:play_at_pos( db.actor:position() )

||

\/

что такое self.? откуда его взял?

...

need_play = true

end

end

 

local need_play = false

...

сначала задаём переменную,а только потом юзаем.т.е.,так:

local need_play = false

...

проверка/действия

...

need_play = true

end

end

 

 

 

Вопрос по кастом статикам в ЗП:

cust_static:wnd():SetWidth(num)

cust_static:wnd():SetHeight(cw)

cust_static:wnd():SetWndPos(pos)

custom_static:wnd():SetColor(col)

Не один из методов не работает.В ТЧ всё работало..Собсно ПЫС это полностью вырезали,или чем-то заменили?

 

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

malandrinus

Спасибо.А про lua_help.script совсем забыл -_-.

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

dimka.qwer

можно ли в скрипте прописать две и более функции alife():create

да,можно.

как автоматически запускать скрипт при старте игры через bind_stalker.script

находим:

function actor_binder:on_item_drop (obj)

для проверки итема на выброс из инвентаря.

function actor_binder:on_item_take (obj)

на взятие итема

function actor_binder:update(delta)

"общий апдейтер".

 

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

Повесил выполнение ф-ции на кнопку:

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\ui_main_menu.script:315: attempt to call method 'kill' (a nil value)

 

ob = alife():create(section,pos,db.actor:level_vertex_id(),db.actor:game_vertex_id())
ob:kill(ob)

 

Кто знает,в чём трабла?

 

malandrinus

Спасибо!

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

Работаю с юи-элементами:

Кнопка:

self.W = xml:Init3tButton("test", self)
self:Register(self.W,"test")
self.W:Enable(true)

 

Ф-ция,которая срабатывает при нажатии на эту кнопку:

function ui_test:testButton()
...
self.W:Enable(false)
...
end

Только вот при нажатии на кнопку,она не исчезает.Как быть?

 

 

malandrinus

Спасибо!Снова помог)

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

Хотел выести текст в мессаг-боксе,

local xml = CUIScriptWnd()
xml:GetMessageBox("ТЕСТ")

но ничего не произошло..

 

Или такой вариант не катит?

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

bill_gates

В ТЧ не получится,а вот в ЧН\ЗП - да,получится.

function funcname()
local file = io.open("C:\\Test.ltx","w")
local text = "ТЕКСТ"
file:write(text)
file:close()
end

Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение
...
local actor = db.actor
local wpn_sec = actor:item_in_slot(slot):section()
...

 

function GC(wpn_sec)
    if wpn_sec == nil then
        return nil
    end
  return wpn_sec:clsid()
end

При обращении к ней вылетает с логом:

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: c:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:773: attempt to call method 'clsid' (a nil value)

Что тут не так? :huh:

 

Kolmogor,спасибо,работает :)

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


Ссылка на сообщение

TREWKO, не знаю правильно,или нет,но пробуй так:

local tbls = {"wpn_pm_1","wpn_fn2000","wpn_ksvk","wpn_ak74"}
local sec = "wpn_fn2000"

function test()
    for i=1,#tbls do
      if tbls[i] == sec then
    --'действия
      end
    end
end

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали

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


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

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