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

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


Svoboда

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

(изменено)

В следующий раз прочти шапку темы перед тем, как задать вопрос. 

ColR_iT

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

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)
Еще вроде резервируют аптечки.

Совершенно точно резервируют батон хлеба. Пишешь в продаже количество - 10, появляется 9. А про флаги можно поподробнее, где и какие?

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

Сталкер - наше всё!

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


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

Народ, как стартануть таймер в АМК моде, после окончания времени которого выдается инфопоршень? В амк.скрипт че то писать надо... Помогите плиз!

function имя_твоей_функции()

 amk.g_start_timer("идентификатор",0, 0, 3) -- в кавычках - уникальный буквенный идентификатор, дальше - время. Последняя цифра - кол-во игровых минут.

end

 

В amk.script:

 

после строк

function __do_timer_action(select_string,params_string)

 local a

 

пишешь:

 if select_string=="твой буквенный идентификатор" then

...делай все, что хочешь, в том числе и выдавай нужный поршень

 end

BoBaH_671, а вообще-то все это легко высматривается в самом amk.script

Сталкер - наше всё!

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


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

А возможно ли технически при ранге ГГ скажем, более 5000, в окне разговора показывать его не мастером, а скажем, легендой?

Сталкер - наше всё!

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


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

Позволю себе теоретическое предположение: если значение 5000 - это максимальная цифирь, выше которой движок или будет игнорировать или вытворять глупости, то можно в конфиге, где расписаны диапазоны, указать ...-4999 - мастер, 4999-5000 - легенда. Такой, типа финт ушами, вполне может прокатить...

Нет, 5000 - цифирь не максимальная, можно реально и больше набрать. Просто не нашел, где в каком файле, выводится сие название, там где под иконкой Меченого - ранг и его значение выводится при разговоре.

Сталкер - наше всё!

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


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

J.A.A, присоединяюсь к вопросу. Иногда очень напрягает сия возможность.

Сталкер - наше всё!

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


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

Кто объяснит, как в цикле for отловить последнюю итерацию?

 

function take_money(pid)


local cond = 5000
local col = 0
local count = db.actor:object_count() - 1
if has_alife_info("ui_car_body") then
for i=0, count do
local item = db.actor:object(i)
if item:section() == "pack_money" then
local sobj = alife():object(item:id())
if sobj then
col = col + 1
db.actor:give_money(cond)
alife():release(sobj,true)
end
end
end
end
end

 

 

Нужно вывести итоговое значение переменной col. Пробовал проверку сделать

 

if i=count then

.

.

.

end

 

так вылетает.

Сталкер - наше всё!

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


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

 

 

как минимум "if i==count then", чтобы не вылетало.

Блин, ну конечно. Привычка, что "=" - это сравнение. Спасибо.


Kirgudu, переписал функцию так:

function take_money(pid)
local cond = 5000
local col = 0
local count = db.actor:object_count() - 1
if has_alife_info("ui_car_body") then
for i=0, count do
local item = db.actor:object(i)
if item:section() == "pack_money" then
local sobj = alife():object(item:id())
if sobj then
col = col + 1
alife():release(sobj,true)
end
end
if i == count and col ~= 0 then
cond = cond * col
db.actor:give_money(cond)
local text = "Найдено денег - "..cond
news_manager.send_tip(db.actor, cond, nil, nil, 30000)
end
end
end
end

 

но сообщение выводится не один раз, как задумывал, а столько раз, сколько нужного предмета попало в рюкзак. А если перед закрывающим функцию end вывод вписать, то вообще ничего не выводится. Почему?

Сталкер - наше всё!

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


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

@Kirgudu, А всё равно выводится не одно сообщение, а несколько. Я так понимаю, что биндер отслеживает получение первого предмета и идет подсчет в цикле. Выводится сообщение. Далее отслеживается получение предмета номер 2, опять цикл и вывод сообщения. Ну и так далее. А как бы мне сделать, чтобы выводилось только одно, итоговое сообщение?

Сталкер - наше всё!

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


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

@Kirgudu, при взятии денег из схрона прибавлять их к общим деньгам ГГ, взятые деньги из рюкзака долой, а потом выводить сообщение о полученной сумме целиком. Эта моя функция вызывается из биндера on_take_item.

Сталкер - наше всё!

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


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

 

 

Мне нужно заспавнить physic_destroyable_object. Через all.spawn всё красиво, но есть одно "НО" - не работает функция [spawner].

Насколько я помню, секция spawner работает только для НПС и монстров.

Сталкер - наше всё!

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


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

Всем привет, опять я со своей проблемой по деньгам.

В bind.stalker.script в биндере take_item_from_box пишу: money.take_money(item)

 

Мой скрипт:

function take_money(pid)


db.actor:iterate_inventory(is_item, db.actor)
end

function is_item(npc, item)
local cond = math.ceil(math.random(28,70)*100)
local section = item:section()
if item:section() == "pack_money" then
local sobj = alife():object(item:id())
if sobj then
alife():release(sobj,true)
db.actor:give_money(cond)
local text = "Найдено денег - "..cond.."\\nВсего денег - "..db.actor:money()
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end
end
end

 

 

Или так:

function take_money(pid)
local cond = math.ceil(math.random(28,70)*100)
local count = db.actor:object_count() - 1
for i=0, count do
local item = db.actor:object(i)
if item:section() == "pack_money" then
local sobj = alife():object(item:id())
if sobj then
db.actor:give_money(cond)
local text = "Найдено денег - "..cond.."\\nВсего денег - "..db.actor:money()
news_manager.send_tip(db.actor, text, nil, nil, 30000)
alife():release(sobj,true)
end
end
end
end

 

 

Результат один и тот же: первый предмет, берущийся из ящика, не обрабатывается. Остается в рюкзаке. Соответственно, если в ящике 8 предметов, то обрабатываются только 7, один остается в инвентаре. Почему?

Сталкер - наше всё!

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


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

@Карлан, Я делал, как ты посоветовал, и все равно не работает.

 

PS: ты бы лучше объяснил, что где не так. В общем, спасибо за "помощь".


Карлан, по твоему совету при обыске трупа вылет:

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...blishing\s.t.a.l.k.e.r\gamedata\scripts\money.script:39: attempt to index global 'alife' (a function value)

Сталкер - наше всё!

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


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

@Карлан, Именно, что не додумался. Но я сделал маленько по другому, не вынося обработку в отдельный файл, все в биндерах прописал. Теперь работает, как задумывал. Но твой скрипт все равно помог допереть до истины.

Сталкер - наше всё!

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


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

V92, в логике дело. Выложи логику. А если двери спавнил сам, смотри дирекцию по Y.

Сталкер - наше всё!

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


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

V92, а зачем тебе сия строка "hit_on_bone = 1|ph_door@free|2|ph_door@free"?

Вот моя логика, все отлично работает:

 

[logic]
аctive = ph_door@locked

[ph_door@locked]
closed = true
locked = true
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop
on_use = ph_door@unlocked


[ph_door@unlocked]
closed = false
locked = true
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop
on_use = ph_door@locked

Сталкер - наше всё!

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


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

Знающие, подскажите: возможно ли скриптом вывести message_box с кнопками? И какую функцию пользовать: AddCustomStatic? Или какую другую?

Сталкер - наше всё!

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


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

Знающие, подскажите. Мод FAE для ТЧ. Если запустить таймер из amk.script, как его возможно сбросить или отключить?

Сталкер - наше всё!

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


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

@UnLoaded, Просто я еще в скрипте таймера еще не разбирался, а необходимость сброса/отмены таймера назрела.

Сталкер - наше всё!

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


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

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

AMK-Team.ru

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