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

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


Svoboда

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

Привет народ, чёт у меня проблемка: никак не выходит "толкнуть" артефакт. Пробовал наносить хит взрывом, передавая импульс. Но использование метода к онлайновому объекту, к примеру как к актору - не прокатывает. Есть ли какой простой способ его толкнуть?

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

Всем привет.

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

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

 

P.S. Работаю с модом LWO 1.5

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

Привет всем, возник вопрос: как можно моментально узнать мёртв ли объект или нет? Нужно узнать почти сразу же - мёртв ли сталкер после метода obj:kill(obj). Метод obj:alive() не предлагать, пробовал - метод говорит что сталкер всё ещё жив.

... А наше дело маленькое - с ружьём да по болотам. (с)

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


Ссылка на сообщение
(изменено)

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

Я бы попробовал расписать: что надо, что есть, и в чем это выражается в каких случаях. Где именно проблема, как ее увидеть. Соответствующая тема как раз открыта. dc

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

... А наше дело маленькое - с ружьём да по болотам. (с)

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


Ссылка на сообщение
(изменено)

, пробовал, вроде не сработало. Ща ещё раз гляну.

 

Да проблемы по сути нету никакой. Просто есть 3 функции. В первой сталкер самовыпиливается и функция завершается. Затем после неё идёт вторая функция в которой нужно проверить жив ли сталкер (идёт вторая) или нет (идёт третья). Вот и вопрос: как узнать почти что сразу, самовыпилился ли он для второй функции, иначе сработает третья функция. По сути можно и переменными в таблице, но интересно, есть ли другой способ без лишних заборов? К примеру коммьюнити ему сменить и потом проверять по ней (но это уже используется)

, а если надо почти моментально? Получается надо и переменные и метод alive() вместе... но забор ведь)

 

иными словами: нужен определённый "флаг" трупа который выставляется моментально.

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

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

@Dennis_Chikin, мм способ по сути такой же как и у  .  Ладно, попробую чо нить придумать сам. Всем спс. 

... А наше дело маленькое - с ружьём да по болотам. (с)

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


Ссылка на сообщение
(изменено)

@Struck

 

про kill:   в первой функции ставил health в ноль вот так obj.health = - obj.health , затем во второй проверял obj.health <= 0. Итог - не прокатило. Но проверю ещё раз, мало ли напортачил.

 

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

 

 

 

P.S. Я много чего не знаю.

 

Да забейте ребят, проблемы нет. Просто любопытно.

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

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

Всем здрасте. Вот решил таки понять, как сохранять переменные в игре, чтобы они при перезагрузке сохранялись. Наткнулся на такую запись:

-- Записываем переменную
function save_variable(variable_name, value)
	xr_logic.pstor_store(db.actor, variable_name, value)
end

-- Загружаем переменную
function load_variable(variable_name, value_if_not_found)
	return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found)
end

-- Удаляем переменную
function del_variable(variable_name)
	if db.storage[db.actor:id()].pstor[variable_name] then
		db.storage[db.actor:id()].pstor[variable_name] = nil
	end
end

читая в xr_logic , понял, что таким образом сохраняются переменные в пакеты. Но был бы не против, что бы мне разжевали эту тему по самые самые. Есть ли подводные камни, или ограничения? Смогу ли я допустим туда целый текст запихнуть? или что то в этом духе. Или , скажем, на каждую аномалию записывать на неё какие то уникальные значения, которые можно будет использовать? Где вообще найти какой Faq про сохранение переменных или текста в игре, что бы всё яснопонятно?

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

Столкнулся с проблемой. Стоит версия X-ray Extensions 232. Есть 2 одинаковых ствола. На одном установлен прицел. Я пытаюсь с помощью функций изменения значений в памяти объектов (get_wpn_int , set_wpn_int) установить на втором стволе прицел. А именно: копирую значения по смещению 936 ( флаги установленных аддонов) и по смещению 1008 ( зум фактор ). Вроде бы всё нормально: прицел стоит на стволе, но как будто не используется - нету текстуры прицела, а так же не срабатывает смещение худа как в режиме прицеливания . К примеру с подствольником таких проблем не возникло. Вообщем, как активировать на втором стволе нормальное функционирование прицела? Чего не хватает?

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

@Kober(BRUC), функцию, которая написана в файле скрипта вызывается просто по имени, без указания, в каком файле. Из твоего примера - вызывать просто  outfit() внутри скрипта none.script .  А что насчёт таблиц:

 

 

-- "ammo_9x18_fmj" это строковый тип данных, не цифры, обозначаются всегда кавычками
-- к примеру переменная с числовым типом данных k = 1, и так же со строкой k = "string"

T = {"ammo_9x18_fmj",   -- в таблице должно быть перечисление каждой строки через запятую
"ammo_5.45x39_fmj",     -- кстати данные будут записаны в таком виде: T[1] = "ammo_9x18_fmj"
"ammo_5.7x28_fmj"}      -- таблица построена как массив, ключи выдаются по порядку. скажем "ammo_5.7x28_fmj" поставь первым - он будет первым
 
function none ()
-- движковая функция create вроде не предусматривает перебор в таблице по значениям,
-- потому надо "вручную" перебирать строки в таблице T и вызывать функцию с этим входным параметром
-- для этого надо цикл
 for key = 1, #T do   -- #T означает конечный ключ в таблице T (можно и так: for key, section in ipairs(T) только в функцию вместо T[key] просто section, но лучше загугли о таком) 
  -- входным параметром является значение в таблице T по ключу key, который будет с каждым повтором
  -- прибавлять +1 до #T (в нашем случае это будет 3, тк всего 3 строковых переменных в таблице)
  alife():create(T[key],db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
 end
end 

 

 

 

Надеюсь правильно объяснил. Оо

  • Спасибо 1

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

@Romann, может с помощью X-Ray Extensions, вроде там есть возможность "хакнуть" параметр бега.

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

@PTB, тебе нужно получить все конкретные объекты по этим секциям чтобы манипулировать с каждым?

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

@PTB, не догоняю, что ты именно хочешь. Что за список? В твоём примере просто функция, которая проверяет, есть ли объект по такой-то секции в инвентаре и так несколько раз. Если тебе надо достать какой то конкретный предмет после проверки на наличие, то пиши, можно сказать точно так же:

 

 

function name_func()
      if db.actor:object("bread") then 
        local object = db.actor:object("bread") -- получение вроде как первого попавшегося объекта хлебушка
      end
      --...
end  

 

 

 

Спрашивай конкретней и опиши что именно ты хочешь.

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

@Kober(BRUC), подсмотри в амк моде 1.4.1

... А наше дело маленькое - с ружьём да по болотам. (с)

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


Ссылка на сообщение
(изменено)

@Romann, вроде так:

 

 

local radius_sqr = 100 -- квадрат радиуса
local actor_position = db.actor:position() -- позиция актора
-- по идее, лучший вариант сделать биндеры на все живие объекты
-- и регистрировать их в определённую таблицу, которую будем 
-- перебирать и проверять, живой ли объект. Но обойдёмся этим:
-- перебор объектов в онлайне (медленно!)
for i = 1, 65534 do  -- апд: был 0, могло стукнуть актора 
    -- берём с локации
	local object = level.object_by_id( i )
	-- если объект по ид есть, то
    if object then
	    -- если макс хп у объекта не равно -1, значит объект живой
	    if object:max_health() ~= -1 then
		    -- если квадрат дистанции, между позицией актора и объектом меньше либо равен макс радиусу в квадрате, то ( distance_to_sqr быстрей вроде как)
		    if actor_position:distance_to_sqr( object:position() ) <= radius_sqr then
			    -- Наносим хит (ну тут можно брать и какие то определённые параметры)
			    hit = hit() -- создание объекта класса hit
			   hit.direction = vector():set(1,0,0) --дирекция по оси x
			   hit.draftsman = db.actor --нанёс урон актор
			   hit.impulse = 600 --импульс
			   hit.power = 1.45 --хит
			   hit.type = 2 --тип урона - выстрел
			   hit:bone("bip01_head") -- удар приходится на голову
			   -- наносим урон
			   obj:hit(hit)
			    -- ( с ) http://stalkerin.gameru.net/wiki/
			end
		end	
	end
end 

 

 

 

Ну поправите меня, если что вдруг.

Изменено пользователем Max_Raf
  • Спасибо 2

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

@Romann, только по одной вроде как. А вообще, поищи в той ссылке что указана в коментарии саму функцию hit(), и почитай о ней, будет полезно. 

  • Спасибо 1

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

Здравствуйте. Интересует пару вопросов.

1. Есть ли у кого какой-либо парсер xml данных нпс по specific_character id, чтобы получить этим самым парсером данные по спавну оружия и предметов у конкретного нпс? (всё думаю сделать скриптовую замену спавна предметов нпсам при спавне, через условную Lua-таблицу. В теории можно было бы просто <supplies> закоментить и спавнить что хош уже в скриптах, но было бы здорово получить хоть какие то данные из xml, чтобы хоть как то не подтереть что квестовое ненароком)

2. Словил прикол с поведением зверушек. А именно: 1) заспавнил зверушку и перманентно её ослепил. (set_fov(0)) 2) далее просто сделал движение и зверушка меня услышала и начала бежать на меня. 3) Я убежал, аж за АИ-сетку, чтобы зверушка отстала от меня. 4) Зверушка отагрилась и уселась под кустом отдыхать 5) Самый сок: я возвращаюсь на АИ-сетку за овер9999 метров от неё, она начинает бежать на меня. Самое интересное что best_enemy == nil , а get_enemy == 0. По моему монстры не обнуляют что то у себя, тем самым и возникают проблемы с тем что они порой "видят спиной". Вот интересно  мнение спеца на подобное.

3. Монстры "видят спиной", как лечить? :)

4. Ребят, как реализовать рандомные апгрейды в ЗП на заспавненных предметах? В наличии есть m_netpk, но не знаю какой параметр и как "подкручивать" :russian_ru:

5. есть у кого рабочая схема работы подствольников для нпс на COC 1.4.22 ? 

6. в COC 1.4.22 когда нпс стреляют из РГ-6 то у них затем в некоторой области зависает danger_inertion: стоят тупо озираются и ничего больше не делают. Мало ли у кого есть правка. :happy:

7. Пытаюсь перенести музыку из бара на базе ЧН в ЧН - в ЗП COC 1.4.22. Столкнулся с проблемой при установке комментария на музыку . Использовал  oggcommentfix ver. 8 и ничего не вышло,звучит всё так же "из головы" а не от бара. Может кто подсказать в чём дело? Мб каким другим софтом коммент править?

... А наше дело маленькое - с ружьём да по болотам. (с)

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


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

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

AMK-Team.ru

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