[CoP] Создание инвентарного комплекса
|
|
|
MoDoStRoY
Воскресенье, 02.06.2013, 19:32 | Сообщение # 31
Статус: |
|
Бывалый: |
|
Сообщений: |
602 |
Награды: |
4 |
Регистрация: |
03.04.2012 |
|
Возможно я чего-то не понимаю, но к чему всё так усложнять? Я делаю гораздо проще. Код local eat = nil
function use_med() if eat and type(eat) == 'number' then if not level.object_by_id( eat ) then amk.spawn_item_in_inv("vodka") end eat = nil end
if eat and type(eat) == 'userdata' then eat = eat:id() else eat = nil end end
function drop_med(obj) local obj_sect = obj:section() if obj_sect == 'bread' then eat = obj end end
Там конечно ещё в bind_stalker.script прописать колбеки на апдейт, но это я уже писать не буду, ибо и так понятно. Хотя может быть функции твоего скрипта в чём-то лучше, но я честно не понимаю чем он отличается от этого. Разве, что набором функций, которые используются при "юзании" предмета.
|
|
Воскресенье, 02.06.2013, 19:32
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
03.04.2012 |
|
|
|
|
|
FantomICW
Воскресенье, 02.06.2013, 19:55 | Сообщение # 32
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2259 |
Награды: |
8 |
Регистрация: |
06.01.2013 |
|
MoDoStRoY, кому как удобней, скрипты - это дело крайне "интимное")))
|
|
Воскресенье, 02.06.2013, 19:55
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
06.01.2013 |
|
|
|
|
|
MoDoStRoY
Воскресенье, 02.06.2013, 19:57 | Сообщение # 33
Статус: |
|
Бывалый: |
|
Сообщений: |
602 |
Награды: |
4 |
Регистрация: |
03.04.2012 |
|
Интимное... Меня новые, интересные функции очень возбуждают... FantomICW, Нет, правда так ведь проще, а ты там наверетенил)
|
|
Воскресенье, 02.06.2013, 19:57
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
03.04.2012 |
|
|
|
|
|
FantomICW
Воскресенье, 02.06.2013, 20:01 | Сообщение # 34
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2259 |
Награды: |
8 |
Регистрация: |
06.01.2013 |
|
MoDoStRoY, не знаю, просто к этому методу привык) еще с времен начала ковыряния СГМ) но как-нибудь и так попробую, спасибо за функцию!
|
|
Воскресенье, 02.06.2013, 20:01
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
06.01.2013 |
|
|
|
|
|
Sanjaaa
Воскресенье, 02.06.2013, 20:14 | Сообщение # 35
Dark Reaper Souls
Статус: |
|
Бывалый: |
|
Сообщений: |
926 |
Награды: |
6 |
Регистрация: |
22.08.2012 |
|
FantomICW, если не трудно можеш на тч разобрать?
|
|
Воскресенье, 02.06.2013, 20:14
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
22.08.2012 |
|
|
|
|
|
FantomICW
Воскресенье, 02.06.2013, 20:17 | Сообщение # 36
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2259 |
Награды: |
8 |
Регистрация: |
06.01.2013 |
|
Sanjaaa, как-нибудь попробую
|
|
Воскресенье, 02.06.2013, 20:17
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
06.01.2013 |
|
|
|
|
|
MoDoStRoY
Понедельник, 03.06.2013, 09:42 | Сообщение # 37
|
Понедельник, 03.06.2013, 09:42
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
03.04.2012 |
|
|
|
|
|
BozKurt
Понедельник, 03.06.2013, 13:39 | Сообщение # 38
Статус: |
|
Опытный: |
|
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
А можно такой вопрос: для чего в функции on_use_item вот эти строки:Код --Переменные local actor=db.actor local item_name=sect:section() local actor_pos=db.actor:position() local active_slot=db.actor:active_slot() local active_item=db.actor:active_item() local pistol_in_slot=db.actor:item_in_slot(2) local rifle_in_slot=db.actor:item_in_slot(3) local outfit_in_slot=db.actor:item_in_slot(7) local helm_in_slot=db.actor:item_in_slot(12) ?
|
|
Понедельник, 03.06.2013, 13:39
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
FantomICW
Понедельник, 03.06.2013, 14:15 | Сообщение # 39
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2259 |
Награды: |
8 |
Регистрация: |
06.01.2013 |
|
ColR_iT, для удобства. Механизм комплекса можно задать по-разному. Необязательно использовать if item_name==. Это ведь уже на усмотрение пользователя.
|
|
Понедельник, 03.06.2013, 14:15
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
06.01.2013 |
|
|
|
|
|
BozKurt
Понедельник, 03.06.2013, 14:31 | Сообщение # 40
Статус: |
|
Опытный: |
|
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
FantomICW, ты не очень внимателен... Я конкретно указал какие строки я имел ввиду, при чём здесь проверка?
|
|
Понедельник, 03.06.2013, 14:31
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
FantomICW
Понедельник, 03.06.2013, 15:08 | Сообщение # 41
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2259 |
Награды: |
8 |
Регистрация: |
06.01.2013 |
|
ColR_iT, если говорить о конкретном механизме комплекса (используется предмет, другой выпадает), то действительно можно переменные сократить: Код --Переменные local item_name=sect:section() Опять-же, если используем механизм в роде Код if item_name=="medkit_complex" then give_object_to_actor("drug_anabiotic") end Переменных, кроме item_name, не задействовано. Тем не менее, остальные переменные кому-то могли бы пригодится, нет, так можно удалить. Если когда-нибудь ковырял СГМ, там есть коллбеки, как Код elseif sgm_functions.ReadActivateBinocular(item_name) then if sgm_functions.ReadActivateSection(db.actor:item_in_slot(5):section()) then give_object_to_actor(sgm_functions.ReadActivateSection(db.actor:item_in_slot(5):section())) remove_item_from_slot(db.actor,5) give_object_to_actor(sgm_functions.ReadActivateBinocular(item_name)) end end Тут переменная Код local binoc_in_slot=db.actor:item_in_slot(5) могла бы пригодится. Можно ли жить без переменных? Можно. Но с ними удобней.
|
|
Понедельник, 03.06.2013, 15:08
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
06.01.2013 |
|
|
|
|
|
BozKurt
Понедельник, 03.06.2013, 15:15 | Сообщение # 42
Статус: |
|
Опытный: |
|
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
FantomICW, честно, в упор не понимаю удобства наличия этих переменных... Да и вообще, всё из сказанного в шапке (касательно скриптов) можно свести к всего лишь одной записи:Код if obj:section()=="medkit_complex" then give_object_to_actor("drug_anabiotic") give_object_to_actor("antirad") give_object_to_actor("bandage") give_object_to_actor("drug_radioprotector") give_object_to_actor("drug_antidot") give_object_to_actor("drug_psy_blockade") give_object_to_actor("drug_coagulant") give_object_to_actor("drug_booster") end прописанную в колбеке на юз. Для чего такие сложности?
|
|
Понедельник, 03.06.2013, 15:15
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
FantomICW
Понедельник, 03.06.2013, 16:14 | Сообщение # 43
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2259 |
Награды: |
8 |
Регистрация: |
06.01.2013 |
|
ColR_iT, не знаю, мне нравится использовать переменные. Хотя в целом ты прав, и это можно сократить. Можно и функцию give_object_to_actor не прописывать. Тогда уже будет: Код if obj:section()=="medkit_complex" then alife():create("предмет",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) ... end
Сообщение отредактировал FantomICW - Понедельник, 03.06.2013, 16:14
|
|
Понедельник, 03.06.2013, 16:14
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
06.01.2013 |
|
|
|
|
|
BozKurt
Понедельник, 03.06.2013, 16:36 | Сообщение # 44
Статус: |
|
Опытный: |
|
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
FantomICW, и даже функцию спавна в таком случае можно сократить:Код alife():create("предмет",vector(),nil,nil,db.actor:id()) Извини за наглость и не сочти за оскорбление, но этот ... урок, мало кому может быть действительно полезным. Вот было бы совсем другое дело, если бы при использовании предмета, появлялось окно, в котором можно было бы выбрать, какой из компонентов медкомплекта использовать, при этом сам комплект бы исчезал, только после того, как из него были бы использованы все предметы. А так...
|
|
Понедельник, 03.06.2013, 16:36
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
FantomICW
Понедельник, 03.06.2013, 18:44 | Сообщение # 45
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2259 |
Награды: |
8 |
Регистрация: |
06.01.2013 |
|
ColR_iT, спасибо за совет, в дальнейшем я могу такое сделать. Конечно, урок посерьезней будет, но попробуем
|
|
Понедельник, 03.06.2013, 18:44
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
06.01.2013 |
|
|
|
|