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

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

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

переходить в оффлайн, находясь при этом в радиусе switch_distance актора

Если такое происходит на граничной дистанции, то это нормально: там есть гистерезис на вход/выход.

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

Ссылка на комментарий
Поделиться на других сайтах

10 минут назад, lordmuzer сказал:

Попробуй без

Ну а на кой оно мне без функции времени... В принципе, ничего важного в сообщении, просто хотелось... Видать чой-то из-за того, что я худ правил, уже не помню где... В любом случае, благодарю.

Ссылка на комментарий
Поделиться на других сайтах

Так ясно дело что незачем)

Ну что бы найти причину сначала с 

news_manager.send_tip

Но ок.

Ссылка на комментарий
Поделиться на других сайтах

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

граничной дистанции

Я имел ввиду, что подхожу к НПС вплотную, а его нет в онлайне вообще, но знаю, что он существует, так как метку на него можно поставить.

Важнейшая задача цивилизации - научить человека мыслить.

Ссылка на комментарий
Поделиться на других сайтах

Скрытый текст

 

@lordmuzer, дружище, огромное тебе спасибо! Ты помог мне реализовать мечту не первого года...

Осталось задебажить, и сразу вопрос к тебе, как к спасителю.

При вызове функции игра подвисает на некоторые секунды, считывая нетпакеты. При повторном вызове функции ловлю лог:


LUA error: not enough memory.

И вот вопрос: как можно ограничить количество циклов выполнения функции? Он мне выводит сразу кучу имён сталкеров, а достаточно 5-6 имен, например... Ну и еще мне нужно придумать как обновляться, чтобы память не кончалась, но по поводу последнего наверно что-то сам придумаю...

 

Не смекну как стереть более неактуальное сообщение, так что просто спрячу его под спойлер. До всего допетрил сам.

@lordmuzer, брат, братишка. огромное тебе спасибо! Около года я мозговал как это реализовать!

Изменено пользователем _Sk8_AsTeR_
Ссылка на комментарий
Поделиться на других сайтах

@Fenrir02, в кастом-дате нпс может быть секция spawner, в которой прописаны условия перехода в онлайн/оффлайн. Также, если непись под гулагом, то в этом гулаге могут быть прописаны условия перехода в онлайн. Обрабатываются эти условия в функции can_switch_online непися, и если она возвращает false, то никакие alife():set_switch_... непися из оффлайна не вытащат.

  • Спасибо 1
  • Согласен 1
  • Полезно 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
Поделиться на других сайтах

Господа, подскажите пожалуйста, в бинд сталкер куда вставлять вызов функции, чтобы она вызывалась только при каждой загрузке сейва или локи? Вроде можно было...

Ссылка на комментарий
Поделиться на других сайтах

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

чтобы она вызывалась только при каждой загрузке сейва или локи?

В actor_binder:net_spawn попробуй.

Ссылка на комментарий
Поделиться на других сайтах

Вопрос относительно блокировки доступа к инвентарю. Даже целых три. Весьма понравились идеи из ОП-2.1 и НА-6, где нельзя открыть инвентарь в движении (вернее, ГГ остановится) и при перезарядке оружия. Кроме того, пытался реализовать автозакрытие инвентаря при поедании медикаментов/еды (с блокировкой доступа до истечения времени использования), но ничего не вышло. Если есть подобные методы, скриптово реализуемые, буду признателен.

Ссылка на комментарий
Поделиться на других сайтах

@_Sk8_AsTeR_, объявить таковую в одном скрипте и обратиться в другом. Объявлять без служебного слова local. Пример - db.script с известным множеством таблиц, которые много откуда читаются и используются в некоторых целях.

 

Объявление:

zone_by_name = {}

А в каком-нибудь xr_conditions.script:

function actor_in_zone(actor, npc, p)
    local zone = db.zone_by_name[p[1]]
    return utils.npc_in_zone(db.actor, zone)
end

 

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

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий
Поделиться на других сайтах

@_Sk8_AsTeR_, можно ещё написать ф-цию которая возвращает значение нужной переменной, в другом скрипте создаете переменную с приравниванием к вызову ф-ции.

Скрытый текст

-- файл скрипта, например my_script.script --
local a = 5 -- переменная

function get_a()
	return a
end
--------------------------------

--- файл скрипта 2 "не важно имя файла" --

local a = my_script.get_a() -- теперь у нас в этом скрипте есть переменная "а" такая же как в "my_script.script"
 
-----------------------------------------

 

 

Ссылка на комментарий
Поделиться на других сайтах

@mole venomous
Закрыть инвентарь при использовании чего-либо можно так:
 

Скрытый текст


local objects = {
  [ "medkit" ] = true,
}


function on_use( obj )
  if objects[ obj:section() ] then
    local input = level.main_input_receiver()
    if input then
      level.start_stop_menu( input, true )  -- Закрываем инвентарь
    end
  end
end

-- Только такой способ знаю
function on_block_inventory()
  cmd( "unbind inventory" )
end

function cmd( scmd, ... )
  local args = { ... }
  if #args > 0 then
    scmd = scmd .. ' ' .. table.concat( args, ' ' )
  end
  get_console():execute( scmd )
end

 

 

Важнейшая задача цивилизации - научить человека мыслить.

Ссылка на комментарий
Поделиться на других сайтах

Всем привет, вот такой словил ЛОГ вылета на Сталкер ЧН, думаю что из-за "не найденных анимаций" в HD Моделе NPC
 

Expression    : motion_ID.valid()
Function      : CKinematicsAnimated::ID_Cycle
File          : E:\priquel\sources\engine\Layers\xrRender\SkeletonAnimated.cpp
Line          : 208
Description   : ! MODEL: can't find cycle: 
Arguments     : idle

Нужна помощь как можно решить, или в чем проблема

Ссылка на комментарий
Поделиться на других сайтах

Подскажите пожалуйста, возможно ли такое реализовать на движке COP/COC, и если да, то какие могут быть подводные камни?

У меня появилась идея усложнить систему фаст тревала, когда ГГ может попросить НПС-проводника провести его к определенной точке. А именно: ГГ с проводником могут попасть в засаду реальных НПС и мутантов, которые находились "по маршруту" фаст тревела.

В теории это выглядит так: когда игрок выбирает точку для фастревела, скрипт берет текущую позицию ГГ и начинает "чертить маршут" от смарт террейна к смарт террейну - пока не дойдет до точки выбранной игроком. Но если на одном из этих смарт терейнов будет враждебный НПС или мутант - то ГГ и проводник телепортятся недалеко от этого смарт терейна и все враги находящиеся там- атакуюют ГГ.

Пример: ГГ в деревне новичков просит НПС сопроводить его до определенного места в темной долине. В это время на АТП находятся бандиты, которые враждебны ГГ. ГГ и проводник телепортятся возле АТП и вступают в бой с бандитами

--

зы: язык Lua для меня новый и я только собираюсь его начать изучать, чтобы реализовать подобный скрипт

Изменено пользователем blackburn1489
Ссылка на комментарий
Поделиться на других сайтах

Здрасьте.

 

Слепил уборщик бесхозного оружия:

• вызов из [scripts\bind_stalker.script] actor_binder:net_spawn(data);

• удалять все, кроме списка исключений;

• на текущей локации удалять, если рядом нет трупов;

• на других локациях удалять просто так.

 

Проблема: если вызывать скрипт каким-нибудь триггером (сброс бинта, например) в уже прогруженной локации, то ближайшие трупы учитываются и пушки, соответственно, лежат на месте. При вызове из "net_spawn" трупы в процессе прогрузки не обнаруживаются.

Вариант 1: https://drive.google.com/open?id=1-K5gPW3q3AUPN1bGXfEjBZ1Uj8kecjwh

 

Добавил задержку запуска через level.client_spawn_manager: трупы обнаруживаются и при вызове из "net_spawn", хотя задержка всего ничего.

Вариант 2: https://drive.google.com/open?id=1eEcuoF9Daw150FPWxpsAkXodliqAE2x1

 

Выходит, трупы на текущей локации загружаются чуть позже ГГ. Как это обойти без костылей?

Мини-моды: ТЧ ЧН ЗП

Ссылка на комментарий
Поделиться на других сайтах

Ребят, вопрос - загадка. С вашей помощью огромной наваял скриптец, благодаря которому через нетпакеты будут перебираться реально существующие НПС, их имена записаться в таблицу, и в итоге от их имени будут сообщения в чат приходить. И так случилось, что практически в начале игры (успел только АТП зачистить вначале) мне отписался Фанат. Официально он появляется после х-18, но он у меня отписался намного раньше.

Скрытый текст

function table_update_pda()
tab = {"пусто"}       -- обнуляем таблицу всех НПС
tab_newbIes = {"new"} -- обнуляем таблицу новичков

	for i = 1, 65535 do
		local sobj = alife():object(i)
		if (sobj) and IsNpcStalker(sobj) then  -- проверка на фракцию (только сталкер, долг, фридум, грин)
		
		local pk = get_netpk(sobj)
			if pk and pk:isOk() 
			then
				local data = pk:get()
				local charname = data.character_name
				table.insert(tab, charname)
					if (sobj) and is_npc_newbie(sobj) then  -- проверка на новичка
					table.insert(tab_newbIes, charname)	
					end
			end	

		end
	end
end

 

Так вот вопрос, игра где-то спавнит Фаната намного раньше, или я не понимаю как работает моя ф-ция? Помогите разобраться, ибо интрига!

Ссылка на комментарий
Поделиться на других сайтах

8 часов назад, Norman Eisenherz сказал:

Как это обойти без костылей?

Попробуй в апдейте биндера:

if device().precache_frame <= 1 then

     ....тут вызывай свой уборщик....

end

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

Официально он появляется после х-18, но он у меня отписался намного раньше.

Фанат прописан в all.spawn, по этому спавнится с самого начала НИ, но до момента "Х" сидит в офф-лайне. А в чем проблема? Типа, до появления в качестве замены Волку в ДН, Фанат лежит в анабиозе в секретной лаборатории? И по тому не может писать сообщения, как любой другой сталкер?

Ссылка на комментарий
Поделиться на других сайтах

@AndreySol Теперь на текущей локации вообще пушки не удаляются (вариант скрипта 1).

Мини-моды: ТЧ ЧН ЗП

Ссылка на комментарий
Поделиться на других сайтах

@Norman Eisenherz, делай проверку не по клиентским объектам, а по серверным.

Я смотрю, у тебя получается в цикле на 65535 ещё один цикл на 65535, это же аццкий ад какой-то. Не лучше будет пройтись один раз по всем объектам, разложив их по таблицам, а потом по этим таблицам уже проверять расстояния, паренты и т.д.?..

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

×
×
  • Создать...