Случайная подборка модов
Lost World: Origin
4.1
ReBorn 2.50 «Артефакты смерти»
3.5
Секрет Дианы
2.2
Судьба Зоны 0.5
3.9
Зона поражения 2: Ответный удар
4.1
Dream Reader - Dangerous Area
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
[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, не знаю, просто к этому методу привык) еще с времен начала ковыряния СГМ) но как-нибудь и так попробую, спасибо за функцию! smile
  Злобная реклама
Воскресенье, 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, если не трудно можеш на тч разобрать? happy
  Злобная реклама
Воскресенье, 02.06.2013, 20:14
Статус:
Сообщений: 666
Регистрация: 22.08.2012
Украина  FantomICW
Воскресенье, 02.06.2013, 20:17 | Сообщение # 36
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

Sanjaaa, как-нибудь попробую smile
  Злобная реклама
Воскресенье, 02.06.2013, 20:17
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  MoDoStRoY
Понедельник, 03.06.2013, 09:42 | Сообщение # 37
Статус:
Бывалый:
Сообщений: 602
Награды: 4
Регистрация: 03.04.2012

FantomICW, Не за что. wink
  Злобная реклама
Понедельник, 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, спасибо за совет, в дальнейшем я могу такое сделать. Конечно, урок посерьезней будет, но попробуем smile
  Злобная реклама
Понедельник, 03.06.2013, 18:44
Статус:
Сообщений: 666
Регистрация: 06.01.2013
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: