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

[SoC] Модострой: вопросница

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

 
 
RicoNRT

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

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


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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
Hrust
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

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


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

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

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

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

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


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

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

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


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

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

 

  • Лайк 1

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


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

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

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


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

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

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


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

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

ОГСР

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


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

ОГСР

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

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

sobj.item_condition = 0.1

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

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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


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

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

 

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

Цитата

[combat]

on_info = %+info -info =func%

 

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

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


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

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

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


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

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

 

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

danger = danger_condition

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

 

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

 

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

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


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

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

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

Спойлер

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

 

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


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

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

 

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


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

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

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

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


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

Hrust неа, нету

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


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

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

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

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


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

Спойлер

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

 

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


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

on_actor_dist_le = 50

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

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


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

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

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

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

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

Спойлер

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

 

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


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

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

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

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


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

on_actor_dist_le = 50 | %=baza_emeny%

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

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


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

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

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

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

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

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

Войти

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

Войти

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

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

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. Оставаясь на сайте, вы подтверждаете свое согласие на их использование. Политика конфиденциальности | Условия использования