Перейти к содержанию

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

 
 

Paracetamol Игнор ВСЕХ нпс:

[logic] 
active = remark
combat_ignore = combat_ignore

[remark]
anim = hello 
combat_ignore_cond = always

danger = danger_condition@shustryi
meet = default_meet@master
target = actor

[danger_condition@shustryi]
ignore_distance = 0

 

Ну а вот видос, как поговорить с врагом:

 

  • Лайк 1

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


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

Господа, как получить профиль НПС скриптом?


Дополнено 4 минуты спустя

А также: как получить список шмоток у НПС?

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Paracetamol сказал:

получить профиль НПС скриптом

Готового метода нет, да и зачем?

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

получить список шмоток у НПС

Через итерацию инвентаря можно.
 

Спойлер

self.object:iterate_inventory( function(_, item)
		if item then
			--log1("hass item")
			--if has_alife_info(known_inf_desc) then
				--log1("hasss part !!!!")
				local sec_item = tostring(item:section())
				alife():create(sec_item, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
				olr.del(item)
				olr.snd([[ol3\koan\KnifeStow1-m]])
				--log1("hasss part - ")
				--self.object:drop_item(item)  -- тут вылет dBodyStateValide(b)	
				--self.object:transfer_item(item, db.actor)
				--log1("has part - "..item:name().."")
				olr.hud_tip("", game.translate_string("st_bind_monster_received_items")..item:get_name().."", 2)
				take_flag = 1
				local wait_time = 0
  				wait_time = time_global() + 1000
  				level.add_call(
    				function() return time_global() > wait_time end,
    				function() self.object:set_tip_text(game.translate_string("st_bind_monster_no_needed_parts")) end
  				)
			--else
				--log1(" non has part ")
			--end
		else
			local wait_time = 0
  			wait_time = time_global() + 1000
  			level.add_call(
    			function() return time_global() > wait_time end,
    			function() self.object:set_tip_text(game.translate_string("st_bind_monster_no_needed_parts")) end
  			)
		end
	end )

 

Нашёл тут в олр использование этой функции, ты всяко лучше меня понимаешь по скриптам. Уверен, разберёшься.

  • Лайк 1

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


Ссылка на сообщение
Поделиться на другие сайты
 
10 часов назад, Paracetamol сказал:

как получить профиль НПС скриптом?

npc:profile_name(), если ты про это

Изменено пользователем N42
  • Лайк 1

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


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

Как заспавнить повреждённый предмет в ящик?

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


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

@Paracetamolтут писали. Можно также через `alife:spawn_item` создать `item_to_broke` и сделать `item_to_broke:set_condition(0.78)`.

 

  • Лайк 1

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


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

Если предмет находится в инвентаре актора/нпс, то он находится в онлайне и для него можно привязать кастом дату, верно я понимаю?

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


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

Paracetamol движок оригинальный?

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


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, N42 сказал:

Paracetamol движок оригинальный?

ОГСР

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


Ссылка на сообщение
Поделиться на другие сайты
 
36 минут назад, Paracetamol сказал:

ОГСР

В огср можно сразу после alife():create... менять состояние, не ждя выхода в онлайн (по крайней мере, в старых версиях огср так было)

local sobj = alife():create....

sobj.item_condition = 0.1

5 часов назад, Paracetamol сказал:

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

Какую кастом дату?

Изменено пользователем N42
  • Лайк 1

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, N42 сказал:

Какую кастом дату?

Типа хочу сделать изменение имени предмета когда он в онлайне (соответствующая функция есть в движке), но нужно знать, что этот предмет сейчас в онлайне

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


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

Paracetamol проверь, может для серверных переименовка тоже работает. Раньше вроде и у клиентских не работало, хотя в вики было, может щас уже работает, хз, давно уже не смотрел огср, но лучше проверь сразу. Разово надо переименовать один объект или несколько раз? И у скольких объектов? Если повально переименовываешь, может проще биндер прилепить и на net_spawn менять

Изменено пользователем N42
  • Лайк 1

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


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

Всем привет. Кто знаете, как сделать так что-бы когда НПС входил в АГР, то ГГ выдавался бы инфопоршень?

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


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

RicoNRT Любой нпс или с заранее указанной логикой?

 

Если с логикой, то попробуй 

Цитата

[combat]

on_info = %+info -info =func%

 

Изменено пользователем Balavnik
  • Лайк 1

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


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

Balavnik Короче, будет база 40 человек, её мы должны пройти по стелсу, но если нас замечает хоть 1 человек, то стелс срывается и они все на нас агрятся.

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


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

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

 

Еще есть секция

danger = danger_condition

но я её не тестил.

 

Посмотри реализацию агропрома из ТЧ.

 

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

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


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

RicoNRT привет. Я думаю, можно просто в логику НПС прописать что-то типа такого:
on_actor_dist_le = 50 | %=killactor%
В тот же walker к примеру. Либо так:
on_actor_dist_le = 50 | %=actor_enemy%
Если ГГ в поле видимости НПС и ближе 50м метров - НПС становится врагом.

А далее через функцию подключить к этому НПС весь гулаг:
function killactor (actor, npc)
    xr_gulag.setGulagEnemy ("название смарта", actor)
end

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

  • Спасибо 1

Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


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

oleg19966 типо так:

[smart_terrains]
Смарт_террейн = true

логика НПС в террейне:

[logic]

active = walker

[walker]

path_walk = pioner_way_2

path_look= pioner_look_2

on_actor_dist_le = 50 | %=baza_emeny%

А это в функцию писать в любой файл логики:

function baza_emeny (actor, npc)
    xr_gulag.setGulagEnemy ("название смарта", actor)
end

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
4 часа назад, N42 сказал:

не ждя выхода в онлайн

Да это и в ванили же есть, разве нет?

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


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

Hrust неа, нету

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


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

RicoNRT да, функцию в скрипт писать. Можно в xr_effects.script.

Если не сработает, то привяжи функцию к инфопоршню, типа так:
on_actor_dist_le = 50 | %+become_enemies%

И создай новый поршень с функцией:
<info_portion id="become_enemies">
    <action>xr_effects.baza_emeny</action>
</info_portion>


Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
30 минут назад, oleg19966 сказал:

on_actor_dist_le = 50

Как по-мне, лучше see_actor использовать, а то такое себе когда через стену унюхивают

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


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

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

Я сам больше предпочитаю on_actor_dist_le только потому, что не всегда надо, что бы НПС открывал огонь, например со 100м по ГГ.

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

Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


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

oleg19966 сколько ни пробовал на оригинальных локах, вечно чуяли за стенами. С ограничением расстояния и добавкой see_actor работало как надо. Ну не было возможности часто менять носки после долгих походов, что поделать :u1F643:

Изменено пользователем N42
  • Лайк 1

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


Ссылка на сообщение
Поделиться на другие сайты
 
10 часов назад, RicoNRT сказал:

on_actor_dist_le = 50 | %=baza_emeny%

не слабая у тебя база по размеру наверное, если надо держать дистанцию в 50 м (треть дистанции онлайна нпс по дефолту) от каждого часового:u1F642:

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

    Ни одного зарегистрированного пользователя не просматривает данную страницу