Случайная подборка модов
Darkest Time
3.5
Зимний Снайпер
3.8
Nature Winter v2.0 «Квантовый скачок»
4.0
Холодная кровь: Факты.Часть первая
1.9
Paradise Lost
3.7
Путь Человека: Возвращение
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Функции Диалогов
Российская Федерация  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
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: