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

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


Svoboда

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

.Там при взятии записки из тайника спавнится другой тайник и т.д

Само собой, только - function actor_binder:on_item_take (obj). Ф-ция срабатывает при появлении(взятии в) инвентарь ГГ предмета. Соответственно делаем проверку что это та самая записка, к примеру, и выполняем требуемое действие.

 

 

Насчет ассортимента, мне и не надо чтоб старое удалядось, я вроде по русски объяснил, что мне нужно пополнение, а не замена

Не все что Вам нужно(хочется) есть в движке... Придется пользоваться тем, что есть.

Да и что не устраивает ? Сделайте несколько секций торговли, так чтобы каждая следующая дополняла(пополняла) предыдущую - и переключайтесь по инфо-порциям между ними...

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

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


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

 

 

если вероятность появления предмета поставить на 1, то по идеи должен же убраться баг с разным ассортиментом при перезагрузке?

Все зависит от мировоззрения модостроителя - а я это не считаю багом...


 

 

некоторые предметы торговцы резервируют "под себя",

А вот это интересно ! Можно подробнее ? Это о том, что торговец может взять в слот более лучшее оружие, из того что у него появилось в инвентаре ?

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


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

 

 

Подскажите плз если существует скриптовая функция для использования (выстрел) активного оружия гг. Другими словами, скриптовая симуляция нажатия левой кнопки мышки.

А зачем ? Какова цель такой симуляции ? Если симитировать выстрел ГГ в кого-то - то есть скриптовый хит.

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


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

 

 

По логике вещей, должна быть возможность заставить гг выстрелить через скрипт

Что для тебя значит "заставить гг выстрелить" ? Выше ты пишешь - "проиграть худ анимацию". Это разные вещи, не связанные какими-либо скриптовыми телодвижениями.... (по моим сведениям).

Опять-же повторюсь - какова цель такой симуляции ? Не боись, поясни смысл, никто не украдет у тебя твою супер-задумку в будущем супер-моде... (без сарказма написано...)

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


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

Кто знает, поясните что за скрипт такой - level_tasks.script ? Какова его задача в игре ?

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


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

Насчет process_info_portion вроде все понятно, а вот proceed в каких случаях вызывается ? И если я правильно понял - обе эти ф-ции вызываются движком ?

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


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

 

 

но к сожалению на форуме я подобного не нашел. Как работать с прогресс баром?

Справочник по функциям и классам -> Оконные классы. Сложно не найти....

Класс недоэкспортирован в ТЧ, следовательно работать - никак. В ЗП - можно.

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


Ссылка на сообщение
Кривая инфа из луа_хелпа - не показатель. Все методы есть и в ТЧ

Действительно работает ! Правда не все - SetRange таки дает вылет "...attempt to call method..."

Информацию брал не из луа_хелп, а из Справочника по ф-циям и классам... Интересно - остальное, описанное в нем как недоэкспортированное - то-же хотя-бы частично рабочее в ТЧ ?

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

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


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

@Zander_driver,

1. отловить факт того, что предмет попытались использовать (use_collback, тут все просто)

Может я не прав, но use_collback вроде извещает о том что уже было сделано, а не о попытке это сделать ?

В результате вашим способом получится на мой взгляд коряво - к примеру, если съедание консервы прибавляет здоровья, то когда съели - здоровье прибавилось, затем оказалось что консервного ножа нет, вернули консерву обратно в инвентарь, а затем надо мудрить с отниманием той прибавки к здоровью, что дало съедание этой консервы.

 

 

как запретить использование предмета без другого

А если близко к тексту, именно "запретить" - то можно попытаться покопать в сторону фейковых объектов. Примерно так:

все консервы, в момент открытия инвентаря, подменять на фейковые, созданные на родительской секции како-го либо предмета, который можно только выбросить. Открывашку же сделать как-раз "съедобной" (заменив текст подсказки на "Открыть..."), и при ее "съедании" - создавать скриптовое окно, в которое выводить список фейковых консерв, и после выбора нужной, удалять ее из инвентаря, спаунить вместо нее уже нормальную, съедобную консерву и соответственно открывашку обратно. В результате появится уже типа открытая консерва, которую можно съесть стандартно и получить нужный эффект, и готовый к дальнейшему использованию консервный нож.

 - вообще насчет консервы пример глуповат - имея нож как одно из оружий, не открыть им консерву... :blink:

 - для вскрытых банок можно текстурки использовать соответствующие, для пущей достоверности...

 - и сделать, чтоб содержимое вскрытой банки протухало по-быстрому, опять-же для пущей достоверности...

 

И вообще - все это извращение...

 

 

Изменено пользователем AndreySol
  • Нравится 1

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


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

 

 

оказывается ГГ становится наймом, а не НПС

ошибка скорее всего в передаче объектов в ф-цию npc_set_killer (actor, npc) - актер и НПС попутаны.

Попробуй, сделать так:

 

if npc:section() ~= "actor" then
     npc:set_character_community ("killer", 0, 0)
else
     actor:set_character_community ("killer", 0, 0)
end

такой код будет универсальный - в любом раскладе именно НПС сменит группировку.

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


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

 

 

Советую почитать настройку логики вот здесь.

А где Вы, в указанных статьях, видели какие-то подробности про эти самые  team, squad и group ? А общие, вскольз упомянутые, определения не сильно то и помогают...

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


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

Пытаюсь заспавненому скриптом НПСу установить story_id. Перепробовал несколько способов - безрезультатно.
Пробовал так:

local ser_obj = alife():create(.....)
if ser_obj then local pk = m_netpk.get(ser_obj)
 if pk and pk:isOk() then
  local data = pk:get()
  if data then
   data.story_id = 125
   pk:set(data)
  end
 end
end

и так:
в se_stalker.script в STATE_Write(packet) добавил
if self.cb_netpk then self.cb_netpk(self, packet) end
затем

local ser_obj = alife():create(.....)
if ser_obj then
 local pk = m_netpk.get(ser_obj, 0)
 if pk and pk:isOk() then
  pk:setCallback( function(data) data.story_id = 125 end )
 end
end

и вот так

obj_spawn = level.client_spawn_manager()
function obj_spawn_callback(first, id, obj)
 ----- присваиваем SID объекту после выхода в он-лайн -----
 local pk = m_netpk.get(obj, 0)
 if pk and pk:isOk() then
  pk:setCallback( function(data) data.story_id = 125 end )
 end
end

local ser_obj = alife():create(.....)
if ser_obj then
 obj_spawn:add(ser_obj.id, -1, obj_spawn_callback, 0)
end

Ничего не получается, НПС спавнится, берется на свободную работу в гулаг, а стори_ид ему не прописывается.
Подскажите, что не так ?

 

Не так прежде всего с самой идеей прописывать sid после перехода в онлайн. Для нафига, собственно ? Во-вторых, 4 страницы назад пост был - чем не нравится ? dc

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

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


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

Не так прежде всего с самой идеей прописывать sid после перехода в онлайн. Для нафига, собственно ? Во-вторых, 4 страницы назад пост был - чем не нравится ? dc

Опять повторю - способ с он-лайном, третий из проверенных и перечисленных мной.

Не нахожу, блин 4 страницы назад то что я спросил - ткните носом....

 

http://www.amk-team.ru/forum/index.php?showtopic=6185&p=867602

Берем функции чтения/записи непися, читаем, изменяем нужное поле, записываем все обратно. dc

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

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


Ссылка на сообщение
Берем функции чтения/записи непися, читаем, изменяем нужное поле, записываем все обратно. dc

А что не так в m_netpk.script ? Он что, не так как амк'шный данные нет-пакетов читает\пишет ?

Изменено пользователем AndreySol
  • Не нравится 1

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


Ссылка на сообщение
Спасибо, работает и с одной if obj:section() == "bread" then db.actor:give_info_portion( "boxkvest2_dal" ) end

Похоже, что любое взятие хлебушка из любого инвентарного ящика будет проходить проверку, и соответственно выполнять назначенное действие... Условия проверки надо доработать, в соответствии с одноразовостью(или нет ?) действия.

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

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


Ссылка на сообщение
1 час назад, _Sk8_AsTeR_ сказал:

self.npc:eat(self.npc:object("vodka"))   --НПС должен выпить водку (не работает)

self. убери и там и там.

1 час назад, _Sk8_AsTeR_ сказал:

dialogs.relocate_item_section(second_speaker, "vodka", "out") 

second_speaker откуда у тебя взялось? В твоем коде не вижу...

И вообще - зачем тебе непосредственное "выпивание" водки неписем ? Толку от этого ноль: эффекта на непися не будет и анимацию он не отыграет.

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


Ссылка на сообщение
31 минуту назад, _Sk8_AsTeR_ сказал:

А без self просто выкидывает с ошибкой на этот файл.script

Чевой-то у тебя там по накручено...

Попробуй так:

...     
db.actor:eat(db.actor:object("vodka"))  --сами выпиваем водочку (РАБОТАЕТ, мы пьянеем и экран покачивается)
second_speaker:eat(second_speaker:object("vodka"))   --НПС должен выпить водку (не работает)
...

 

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


Ссылка на сообщение
2 часа назад, _Sk8_AsTeR_ сказал:

просто рандомные имя и фамилия из файлика. То есть отправляют сообщения несуществующие нпс. Отсюда вопрос: А можно сделать так, чтобы отправители сообщения были реальными рандомными нпс?

Сделать вместо файла, как я понял, из которого идет выборка имен и погонял, табличку, которую заполнять именами и прозвищами реальных неписей. Затем выборку делать уже из этой таблички.

 

@BossBoroda

Цитата

как увеличить длительность исчезание трупов

Это понял, а вот это

Цитата

и одновременное их нахождение в игре?

не понял.

Если память не изменяет, в "чистой" ТЧ вообще нет уборки(исчезания) трупов. По этому уточни - что у тебя там за часть трилогии и мод.

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


Ссылка на сообщение
Только что, _Sk8_AsTeR_ сказал:

выборка имен и прозвищ и так идет из АМКшной таблицы. Но они рандомно сочетаются друг с другом.

Это как понимать ?

Только что, _Sk8_AsTeR_ сказал:

А я имею в виду чтобы реально существующие НПС были авторами сообщений.

Ну так проверь, как вообще заполняется эта "АМКшная" таблица. Что мешает перебрать все объекты в игре, которые являются сталкерами, и заполнить таблицу реально существующими(заспавненными) неписями ?

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


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

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