Случайная подборка модов
Winter Mod
3.9
OGSM 1.8 Community Edition
4.2
NZK MOD 1.3
3.2
Oblivion Lost Remake 2.0
4.1
История Борланда.Пролог
3.8
EPILOGUE
3.5
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Функции Диалогов (Functions Dialog)
Функции Диалогов
Российская Федерация  Novellus
Воскресенье, 03.06.2012, 17:47 | Сообщение # 1
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

Нашел на одном из форумов, не помню где. Решил выложить ибо не встретил здесь такой темы. Думаю многим пригодится B):

Автор: Неизвестен
---------------------------------------------------------------------------------------------------------
Вот еще:

-------------------------------------------------
-------------------------------------------------
Автор: Неизвестен.
Выложил: amik.
Отредактировал: ColR_iT.
Взято с АМК форума.
Сообщение отредактировал Novellus - Четверг, 21.06.2012, 22:42
  Злобная реклама
Воскресенье, 03.06.2012, 17:47
Статус:
Сообщений: 666
Регистрация: 25.04.2012
Российская Федерация  RETRIX
Воскресенье, 03.06.2012, 18:35 | Сообщение # 2
AP-Production
Статус:
Ветеран:
Сообщений: 9439
Награды: 12
Регистрация: 24.08.2011

Novellus, спасибо, нужная инфа. А есть проверка на отсутствие предмета у ГГ ?
  Злобная реклама
Воскресенье, 03.06.2012, 18:35
Статус:
Сообщений: 666
Регистрация: 24.08.2011
Российская Федерация  Novellus
Воскресенье, 03.06.2012, 18:37 | Сообщение # 3
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

RETRIX, пороюсь, найду, выложу.
  Злобная реклама
Воскресенье, 03.06.2012, 18:37
Статус:
Сообщений: 666
Регистрация: 25.04.2012
Швеция  KazakHD5770
Воскресенье, 03.06.2012, 18:55 | Сообщение # 4
Статус:
Опытный:
Сообщений: 2077
Награды: 7
Регистрация: 03.06.2011

Quote (RETRIX)
А есть проверка на отсутствие предмета у ГГ?

function Название функции()

if db.actor:object("название предмета") ~= true then
return true
end
return false
end

в диалог

имя скрипта.название функции
P.S.: biggrin
Сообщение отредактировал KazakHD5770 - Воскресенье, 03.06.2012, 18:58
  Злобная реклама
Воскресенье, 03.06.2012, 18:55
Статус:
Сообщений: 666
Регистрация: 03.06.2011
Российская Федерация  Silva
Воскресенье, 03.06.2012, 19:01 | Сообщение # 5
Статус:
Гость:
Сообщений: 45
Награды: 0
Регистрация: 29.02.2012

О, полезно, автору респект! Только вот про проверку инфопоршня в диалоге надо было по подробнее расписать. Например : проверку поршня в диалоге нужно под id вписать <has_info>ваш_поршень</has_info>, а то я думаю новичкам будет не понятно. yu
  Злобная реклама
Воскресенье, 03.06.2012, 19:01
Статус:
Сообщений: 666
Регистрация: 29.02.2012
Российская Федерация  Novellus
Воскресенье, 03.06.2012, 19:04 | Сообщение # 6
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

Ну вот и выложили))
  Злобная реклама
Воскресенье, 03.06.2012, 19:04
Статус:
Сообщений: 666
Регистрация: 25.04.2012
Российская Федерация  Гереро
Воскресенье, 03.06.2012, 20:07 | Сообщение # 7
Technologies Progress
Сообщений: 1874
Регистрация: 26.07.2011

Novellus, Вот это круто...Для ЗП?
  Злобная реклама
Воскресенье, 03.06.2012, 20:07
Статус:
Сообщений: 666
Регистрация: 26.07.2011
Российская Федерация  RETRIX
Воскресенье, 03.06.2012, 20:10 | Сообщение # 8
AP-Production
Статус:
Ветеран:
Сообщений: 9439
Награды: 12
Регистрация: 24.08.2011

KazakHD5770, спасибо smile
  Злобная реклама
Воскресенье, 03.06.2012, 20:10
Статус:
Сообщений: 666
Регистрация: 24.08.2011
Беларусь  [$FaMa$]
Воскресенье, 03.06.2012, 20:40 | Сообщение # 9
Статус:
Новичок:
Сообщений: 364
Награды: 0
Регистрация: 24.04.2012

Полезная информация, спасибо автору! happy
  Злобная реклама
Воскресенье, 03.06.2012, 20:40
Статус:
Сообщений: 666
Регистрация: 24.04.2012
Украина  Creon
Воскресенье, 03.06.2012, 21:13 | Сообщение # 10
Статус:
Отмычка:
Сообщений: 92
Награды: 1
Регистрация: 06.05.2012

больше половины давно знаю, но все равно +
  Злобная реклама
Воскресенье, 03.06.2012, 21:13
Статус:
Сообщений: 666
Регистрация: 06.05.2012
Российская Федерация  XOBAH
Воскресенье, 03.06.2012, 22:11 | Сообщение # 11
Проект Смерти вопреки
Статус:
Неопытный:
Сообщений: 476
Награды: 0
Регистрация: 01.11.2010

KazakHD5770, Твою функцию можно сократить до минимума:
function func_name()
return db.actor:object("item_section")
end
  Злобная реклама
Воскресенье, 03.06.2012, 22:11
Статус:
Сообщений: 666
Регистрация: 01.11.2010
Украина  BozKurt
Понедельник, 04.06.2012, 15:00 | Сообщение # 12
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

XOBAH, лично я бы не рекомендовал это делать, во всяком случае так, как предлагаешь ты, по правде сказать, методом KazakHD5770, я бы то же не воспользовался.
Начну по порядку.
Функция KazakHD5770:
несколько не корректна. Дело в том, что функция object возвращает объект класса game_object из инвентаря актора, по имени её секции в system.ltx.
Для булевых значений ноль эквивалентен false, любое же другое отличное от нуля значение, позиционируется как true.
Поэтому в случае когда у актора не окажется указанного предмета функция object вернёт nil, а это в свою очередь отсутствие вообще какого-либо значения, это не ноль, не какое-то другое число, одним словом - ничего. Вот тут и возникнет ошибка сравнения nil ~= true.
Поэтому я бы переписал эту функцию несколько иначе:

Предложенный вариант от XOBAH, несколько короче, но всё же приводит к тому же результату, если и укорачивать функцию, то возвращать результат следует явно, а не возвращать объект по секции:
Функция вернёт true в случает отсутствия предмета у актора.

P.S. Извиняюсь за критику.
  Злобная реклама
Понедельник, 04.06.2012, 15:00
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  XOBAH
Понедельник, 04.06.2012, 15:56 | Сообщение # 13
Проект Смерти вопреки
Статус:
Неопытный:
Сообщений: 476
Награды: 0
Регистрация: 01.11.2010

ColR_iT, Но работать будут и те, и другие функции. Lua сильно похож на JS, а в нем, в логических операциях с объектами, любое определенное, не пустое, значение будет возвращать true, в остальных случаях будет возвращать false
  Злобная реклама
Понедельник, 04.06.2012, 15:56
Статус:
Сообщений: 666
Регистрация: 01.11.2010
Украина  BozKurt
Понедельник, 04.06.2012, 17:34 | Сообщение # 14
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

XOBAH, нет не будет. Проверь!
Ещё раз повторюсь. Функция object возвращает объект, не число, не булево значение, не строку, а объект целого класса, т.е. у него есть куча свойств и методов и сравнивать его с не true - это не правильно. Нужно сравнивать с наличием предмета либо его отсутствием, а это проверка:
Code
if db.actor:object("название_предмета") == nil then


P.S. Я тоже похож на своего брата, но мы такие разные.
Сообщение отредактировал ColR_iT - Понедельник, 04.06.2012, 17:35
  Злобная реклама
Понедельник, 04.06.2012, 17:34
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  XOBAH
Понедельник, 04.06.2012, 18:43 | Сообщение # 15
Проект Смерти вопреки
Статус:
Неопытный:
Сообщений: 476
Награды: 0
Регистрация: 01.11.2010

ColR_iT, Вот функция на проверку наличия артефакта "Медуза" из SGM (у меня, и у кучи других пользователей такая проверка в диалоге к вылету не приводит):
Code
function breeder_has_1(actor,npc)
       return db.actor:object("af_medusa")
end

Также, в SGM моде полно подобных проверок
Я не думаю, что Вы будете сильно отличаться от своего брата :)
Quote (Wikipedia)
По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями. Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы объектно-ориентированного программирования с поддержкой прототипов (включая множественное наследование) легко реализуются с использованием метатаблиц, которые также делают возможной перегрузку операций и т. п. Реализуемая модель ООП (как и в JavaScript) — прототипная.
Вот описание boolean-типа в JavaScript:
Ну а в Lua, если метод вернет nil - получим false, вернет объект - получим true
Сообщение отредактировал XOBAH - Понедельник, 04.06.2012, 18:53
  Злобная реклама
Понедельник, 04.06.2012, 18:43
Статус:
Сообщений: 666
Регистрация: 01.11.2010
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Функции Диалогов (Functions Dialog)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: