Пользователей: 0
Гостей: 478

» Подробно
Привет, гость!








Автор Сообщение
Psychologist
    
Посты: 1806
Откуда: Челябинск
Возраст: 28
30-09-2009 19:21 GMT3 час. #1050018   
erlik Как тебе идейка?
Допустим, подходишь к НПС и там есть ветка диалога Есть ЧО? дальше два варианта ответа НПС: Вот, вот возьми, только не бей или Неа, ничего нет.
Если первый вариант то потставить скрипт выдачи инвентаря НПС. Если второй то идёт фраза: А если по *ВЫРЕЗАНО*(морде). После этой фразы идут два хода развития.
1.НПС становится врагом и палит в ГГ.
2.Отдаёт содержимое Рюкзака.
+ всё это сделать радомно
Назвать всё это: Гоп-Стоп MOD(Gop-Stop mod)

Дак вот. Помогите создать скрипт выдачи содержимого инвертаря ГГ.
Возможно ли такое?


singapur22 я и не собирался перекладывать на вас работу. Я поросил Объяснить мне как это можно сделать.


И все мы ждем чего-то. Работа - дом - работа ©
karavan
    
Посты: 940
Откуда:
Возраст:
30-09-2009 19:30 GMT3 час. #1050028   
erlik и singapur22 простите за тупость.
Это моя ошибка. Я разделил одну функцию на два файла вот и не работало.
Спасибо теперь все отично работает, :-) вот только маркер с карты не убирается, но возможно это я опять что то не так зделал.

erlik
Если не сложно можеш скинуть название всех аномалий протестил - zone_emi - очень понравилась.

Или скажи где смотреть, я пока нашел только эти: :no)
zone_witches_galantine - Электра
zone_mincer - трамплин
zone_buzz - Холодец
zone_gravi_zone - Грави
zone_mine_field - Мина
zone_monolith - радиактивная зона-монолита
zone_mosquito_bald - разрыв
zone_no_gravity - зона без гравитации
zone_radioactive - зона радиации
zone_teleport - телепорт
zone_zharka_static - Жарка


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
BOGGAD
    
Посты: 83
Откуда: Старый Оскол
Возраст: 30
30-09-2009 20:00 GMT3 час. #1050053   
FATAL ERROR

[error]Expression : fatal error
[error]Function : CInifile::r_string
[error]File : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
[error]Line : 352
[error]Description :
[error]Arguments : Can't find variable class in [wpn_ak47]

ему чо, мой ак47 не нравится?!


GIDDRA
    
Посты: 88
Откуда:
Возраст:
30-09-2009 20:25 GMT3 час. #1050079   
Народ мне срочно нужен человек шарящий в максе!!!!(не в команду)Дело одно назрело!!!!!


Rayko
    
Посты: 1113
Откуда:
Возраст: 27
30-09-2009 20:38 GMT3 час. #1050092   
Я повтарю свой вопрос...

Такс С СДК разобрался...
Теперь как наложить текстуру на плоскость в Maya6.5?
ВАще не чё понять не могу !
В Фотошопе текстуру зделал теперь в Майе куда тыкать чтобы он поставилась?
Срочно плиз!
Кто знает не молчите...


egor0007
    
Посты: 1
Откуда:
Возраст:
30-09-2009 20:46 GMT3 час. #1050099   
народ я дико извиняюсь я в деревне и инет по модему так что читать все я порсто не могу у меня тут вопрос можно ли поменять количество патронов в магазине


ДатчикХабара
    
Посты: 558
Откуда: Saratov
Возраст:
30-09-2009 21:09 GMT3 час. #1050118   
egor0007

Можно.Для этого заходишь в папку
\config\weapons
Находишь нужный конфиг оружия-->>
скажем ПМ
w_pm.ltx
и меняешь вот эти параметры
ammo_elapsed = 8

ammo_mag_size = 8;7

на эти

ammo_elapsed = 12

ammo_mag_size = 12

Всё,теперь в обойме будет 12 патронов.
+
Символ ; - означает закодированное,т.е эта строчка не используется


erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
30-09-2009 23:08 GMT3 час. #1050176   
karavan
ты почти все назвал.
все файлы конфигов аномалий в папке misc - имена начинаются в с zone_....
вот еще:
torrid_zone - не спавнится - выдает ошибку об отсутствии цикла - в принципе можно исправить, но пока не пробовал. Что из себя представляет не знаю.
костры из файла zone_kampfire:
zone_flame - большой
zone_flame_small - обычный
zone_campfire_mp_nolight - почти такой же - особой разницы не уловил
zone_campfire_grill - жар от тлеющих углей
zone_ameba - не помню как выглядит
zone_burning_fuzz - жгучий пух
zone_rusty_hair - ржавые (рыжие) волосы - тип хита shock, в игре не помню - видимо не использовалсь.

зона из модов - в оригинале ее нет, партиклы и эффекты амкашные - видел в симбионе
zone_ice - по названию понятно, что из себя представляет

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


добавлено спустя 5 минут

BOGGAD
судя по логу ты с классом автомата че то не то сделал. Ты какой ему поставил?

отредактировал(а) erlik: 30-09-2009 23:18 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Ангус Янг
    
Посты: 28
Откуда: Ростов-на-Дону
Возраст: 31
30-09-2009 23:42 GMT3 час. #1050188   
Я хочу перетащить дин. худ из Нар. Солянки,но:
1.я не знаю какие нужно файлы тащить
2.В ОГСМ есть АМК скрипт,а заменять - боюсь

Помогите,а?:-(


Воины в интернете как олимпиада для дебилов,даже если ты победил,ты все равно дебил
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
01-10-2009 00:56 GMT3 час. #1050192   
Сталкер Монолита
вот скрипт отбирающий(удаляющий) у ГГ все что у него есть, окромя болта и фонарика:


function clear_actor_inventory(actor)
actor:iterate_inventory(__del_item, actor)
end

function __del_item(actor, item)
local section = item:section()
if section == "bolt" or section == "device_torch" then
return false
end
alife():release(alife():object(item:id()), true)
end

вызывать надо clear_actor_inventory(actor)
если через диалог то
имя_файла.clear_actor_inventory

если тебе надо, чтобы все вещи ГГ были переданы неписю, то попробуй воспользоваться этой функцией


local in_object, in_object = 0, 0
local function drop_object_item(item)
out_object:drop_item_and_teleport(item, in_object)
end
local npc = level_object_by_sid (айди)
out_object = db.actor
in_object = npc
db.actor:inventory_for_each(drop_object_item)
end


так я ей еще не пользовался - то и запись может быть ошибочной - как то singapur22
выкладывал функцию телепортации вещей из рюкзака ГГ - это ее переделка под телепортацию вещей в рюкзак непися. Тока у непися, которому все это надо передать нужно знать сид.

Можно конечно сделать и другой скрипт - скажем задать таблицу вещей, в которую вписать определенные вещи, и при активации функции скрипт сравнит вещи из таблицы с тем что у есть ГГ и что найдет, то и заберет. Это чтобы все подряд у ГГ не забирать - а так сказать делать выборочный шмон. :-) Будем время накидаю скрипт...


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Максим Р.
    
Посты: 1025
Откуда:
Возраст:
01-10-2009 09:52 GMT3 час. #1050240   
Как производится выбор позиции во время респавна?
А то после того, как внёс изменения в ИИ-сетку, в консоль частенько выводится информация такого рода:
...
! Cannot build GAME path! (object dog_normal17155)
! CURRENT LEVEL : l02_garbage
! CURRENT game point position : [271.390381][-7.346767][-107.826294]
! TARGET LEVEL : l07_military
! TARGET game point position : [-197.972778][-3.860565][421.732391]
! Target point mask [12][0][0][0]
! Object masks (1) :
! [255][0][255][255]
...

Пока к вылетом это не приводит.
На одном из форумов прочитал, что такое сообщение выходит, когда пёсик (или кто-либо ещё) криво переходит из офлайна в онлайн: появляется в месте, откуда нет выхода.
Судя по логу, пёсик появился на Свалке и ему надо идти на Военных склады, но что-то препятствует ему это сделать.
Может причина вовсе не в респавнере? Может какая-нибудь связка уровней нарушилась во время пересборки ИИ-сетки? Сетку изменял на локации Бар (как раз между Свалкой и Складами).
Сообщение выходит стабильно, переход на другой уровень и обратно не помогает.
Этим сообщением забит весь лог. Из-за него лог теперь весит не килобайты, а мегабайты.

А да, забыл сказать почему я подумал на респавн. Та позиция, на которой появляется пёсик, ближе всего похожа на позицию респавнера, который как раз и респавнит таких пёсиков.

отредактировал(а) Максим Р.: 01-10-2009 10:06 GMT3 час.

Psychologist
    
Посты: 1806
Откуда: Челябинск
Возраст: 28
01-10-2009 11:56 GMT3 час. #1050293   
erlik ты не так понял. НПС отдаёт ивертарь ГГ. А ты наоборот функцию выложил. Хотя, можно как в ЧН сделать, чтоб бандиты поймали.


И все мы ждем чего-то. Работа - дом - работа ©
kolyan stalker
    
Посты: 53
Откуда:
Возраст: 27
01-10-2009 12:04 GMT3 час. #1050296   
я попытался изменить всем сталкерам-одиночкам текстуры и оружие(в папке character_desc_escape)с помощью блокнота и у меня потом игра вылетела. експериментировал с патчем1.0006 и с 1.0004.
что делать?


"ХОЧЕШЬ МИРА - ГОТОВЬСЯ К ВОЙНЕ"
Psychologist
    
Посты: 1806
Откуда: Челябинск
Возраст: 28
01-10-2009 12:05 GMT3 час. #1050297   
kolyan stalker юзай Notepad++. Какой лог вылета?


И все мы ждем чего-то. Работа - дом - работа ©
kolyan stalker
    
Посты: 53
Откуда:
Возраст: 27
01-10-2009 12:05 GMT3 час. #1050298   
я попытался им поставить вал и патроны к ним и изменить текстуры как у Волка

добавлено спустя 1 минуту

я не специалист по модам, это я первый раз попробовал

добавлено спустя 2 минут

Сталкер Монолита а если не поставить пробел или не там его поставить(в character_desc_escape)
из за этого игра вылетает?

добавлено спустя 3 минут

Сталкер Монолита а можно ли проделать такую процедуру с амк модом?

отредактировал(а) kolyan stalker: 01-10-2009 12:13 GMT3 час.

"ХОЧЕШЬ МИРА - ГОТОВЬСЯ К ВОЙНЕ"
Psychologist
    
Посты: 1806
Откуда: Челябинск
Возраст: 28
01-10-2009 12:13 GMT3 час. #1050304   
kolyan stalker Ну незнаю, щас игру распакую и посмотрю. Лог вылета есть? (Когда вылетит открой любой текстовик и нажми вставить).

добавлено спустя 8 минут

kolyan stalker http://stalkerin.gameru.net/wiki/index.php/Редактирование_NPC вот про редактирование НПС

отредактировал(а) Сталкер Монолита: 01-10-2009 12:22 GMT3 час.

И все мы ждем чего-то. Работа - дом - работа ©
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
01-10-2009 12:22 GMT3 час. #1050306   
Сталкер Монолита
так в function drop_object_item поменяй местами переменные и должно сработать наооборот
local npc = level_object_by_sid (айди)
out_object = npc
in_object = db.actor
npc:inventory_for_each(drop_object_item)


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Psychologist
    
Посты: 1806
Откуда: Челябинск
Возраст: 28
01-10-2009 12:25 GMT3 час. #1050307   
erlik а как сделать чтоб инвертарь выдавыли все НПС а не по СИДу?
И где хранится скелеты диологов НПС (не квестовых)?


И все мы ждем чего-то. Работа - дом - работа ©
mrslepoff
    
Посты: 28
Откуда: Москва
Возраст:
01-10-2009 13:44 GMT3 час. #1050338   
Сталкер Монолита в character_dialogs.xml


Изготовляется новый сюжетный мод. Рабочее название SZ. Принимаются новички и опытные модмейкеры. Обращаться по ICQ и ЛС
BOGGAD
    
Посты: 83
Откуда: Старый Оскол
Возраст: 30
01-10-2009 14:26 GMT3 час. #1050376   
вот лог:

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description :
[error]Arguments : LUA error: ....a.l.k.e.r. - Тень\gamedata\scripts\state_mgr.script:145: C stack overflow



чё эт такое?

вот скрипт:



----------------------------------------------------------------------------------------------------------------------
-- Менеджер изменения состояния тела
-- автор: Диденко Руслан (Stohe)
-- TODO:
----------------------------------------------------------------------------------------------------------------------
function printf()
end

aim_ratio = 1000/50
min_ratio = 1500

--' Эвалуатор, который синхронизирует менеджер.
--' Мы уже в безраличном состоянии idle или нет
class "evaluator_state_mgr_idle" (property_evaluator)
function evaluator_state_mgr_idle:__init(name, state_manager) super (nil, name)
self.st = state_manager
self.mgr = nil
end
function evaluator_state_mgr_idle:evaluate()
local t = self.st.target_state == "idle" and
--not self.st.planner:evaluator(self.st.properties["locked"]):evaluate() and
self.st.planner:evaluator(self.st.properties["movement"]):evaluate() and
self.st.planner:evaluator(self.st.properties["animstate"]):evaluate() and
self.st.planner:evaluator(self.st.properties["animation"]):evaluate()

if t == true then

if self.mgr == nil then
self.mgr = self.object:motivation_action_manager()
end
if self.mgr:initialized() and self.mgr:current_action_id() == xr_actions_id.state_mgr + 1 then
self.st.combat = true
end
end

if self.st.combat == true then return true end

return false
end
--' Мы уже в безраличном состоянии idle или нет ()учет с проверкой alife
class "evaluator_state_mgr_idle_alife" (property_evaluator)
function evaluator_state_mgr_idle_alife:__init(name, state_manager) super (nil, name)
self.st = state_manager
self.t = nil
end
function evaluator_state_mgr_idle_alife:evaluate()
if not self.object:alive() then
return true
end
-- апдейт менеджера анимаций
-- раньше он был тут, сейчас он вынесен из эвалуатора

-- printf("SECTION %s", utils.to_str(db.storage[self.st.npc:id()].active_section))
mgr = self.object:motivation_action_manager()
self.t = nil
if mgr:initialized() then
self.t = mgr:current_action_id()
--printf("ACTION %s", utils.to_str(self.t))
if self.t ~= xr_actions_id.alife then
self.st.alife = false
end
end

if db.storage[self.st.npc:id()].active_section == nil then
if xr_meet.is_meet(self.object) == false then
local t = self.st.target_state == "idle" and
not self.st.planner:evaluator(self.st.properties["locked"]):evaluate() and
self.st.planner:evaluator(self.st.properties["movement"]):evaluate() and
self.st.planner:evaluator(self.st.properties["animstate"]):evaluate() and
self.st.planner:evaluator(self.st.properties["animation"]):evaluate()

-- printf("%s", utils.to_str(self.st.target_state))
-- printf("%s", utils.to_str(self.st.planner:evaluator(self.st.properties["locked"]):evaluate()))
-- printf("%s", utils.to_str(self.st.planner:evaluator(self.st.properties["movement"]):evaluate()))
-- printf("%s", utils.to_str(self.st.planner:evaluator(self.st.properties["animstate"]):evaluate()))
-- printf("%s", utils.to_str(self.st.planner:evaluator(self.st.properties["animation"]):evaluate()))

if t == true then self.st.alife = true end
if self.st.alife == true then
return true
end
return t
else
return false
end
end
return true
end


--' Переход в idle
class "act_state_mgr_to_idle" (action_base)
function act_state_mgr_to_idle:__init(name,state_manager) super (nil, name)
self.st = state_manager
end
function act_state_mgr_to_idle:initialize()
action_base.initialize(self)
self.object:movement_enabled(true)
if self.object:best_enemy() then
self.st:set_state("idle", nil, nil, nil, {animation = true})
xr_sound.set_sound(self.object, nil)
stop_play_sound(self.object)
return
end
if self.object:best_danger() then
self.st:set_state("idle", nil, nil, nil, {animation = true})
xr_sound.set_sound(self.object, nil)
stop_play_sound(self.object)
return
end
self.st:set_state("idle")
end
function act_state_mgr_to_idle:execute()
action_base.execute(self)
if self.object:best_enemy() then
self.st:set_state("idle", nil, nil, nil, {animation = true})
return
end
if self.object:best_danger() then
self.st:set_state("idle", nil, nil, nil, {animation = true})
return
end
self.st:set_state("idle")
end
function act_state_mgr_to_idle:finalize()
-- По завершению перехода нужно записать -1 в указатель "на кого смотреть",
-- чтобы при возврате было понятно что его нужно переинициализировать.

self.st.current_object = -1

action_base.finalize(self)
end


--'-------------------------------------------------------------------------------------
--' Эвалуаторы и экшены менеджера
--'-------------------------------------------------------------------------------------
--' Закончил ли менеджер свою работу
class "eva_state_mgr_end" (property_evaluator)
function eva_state_mgr_end:__init(name, st) super (nil, name)
self.st = st
self.mgr = nil
end
function eva_state_mgr_end:evaluate()
if self.mgr == nil then
self.mgr = self.object:motivation_action_manager()
end

if not self.mgr:initialized() then
return false
end

local current_action_id = self.mgr:current_action_id()
if current_action_id ~= stalker_ids.action_combat_planner and
current_action_id ~= stalker_ids.action_danger_planner and
current_action_id ~= stalker_ids.action_anomaly_planner
then
self.st.combat = false
end

return false
end

--' Залочен ли менеджер
class "eva_state_mgr_locked" (property_evaluator)
function eva_state_mgr_locked:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_locked:evaluate()
--printf("npc %s", self.object:name())
--printf("weapon locked: %s", utils.to_str(self.st.planner:evaluator(self.st.properties["weapon_locked"]):evaluate()))
--printf("direction locked: %s", utils.to_str(self.st.planner:evaluator(self.st.properties["direction_turning"]):evaluate()))
--printf("animstate locked: %s", utils.to_str(self.st.planner:evaluator(self.st.properties["animstate_locked"]):evaluate()))
--printf("animation locked: %s", utils.to_str(self.st.planner:evaluator(self.st.properties["animation_locked"]):evaluate()))

--printf("combat[%s] alife[%s]", tostring(self.st.combat), tostring(self.st.alife))
if self.st.combat or self.st.alife then
return true
end

return self.st.planner:initialized() and (
self.st.planner:evaluator(self.st.properties["weapon_locked"]):evaluate() or
self.st.planner:evaluator(self.st.properties["animstate_locked"]):evaluate() or
self.st.planner:evaluator(self.st.properties["animation_locked"]):evaluate() or
self.st.planner:evaluator(self.st.properties["direction_turning"]):evaluate())
end

--' Идловый экшн менеджера
class "act_state_mgr_end" (action_base)
function act_state_mgr_end:__init(name, st) super (nil, name)
self.st = st
end
function act_state_mgr_end:initialize()
action_base.initialize(self)
end
function act_state_mgr_end:execute()
action_base.execute(self)

-- if not self.st.planner:evaluator(self.st.properties["movement_stand_now"]):evaluate() then
-- state_mgr_direction.update_movement_direction(self.object, self.st)
-- end
local t = state_lib.states[self.st.target_state].weapon
local w = isWeapon(self.object:best_weapon())

if not w then
return
end
if t == "fire" or t == "sniper_fire" then
--printf("[%s] shooting", self.object:name())
local sniper_aim = 3000
if self.st.look_object ~= nil then
local look_object = level.object_by_id(self.st.look_object)
if look_object == nil then
self.st.look_object = nil
return
end
if self.object:see(look_object) and
(not IsStalker(look_object) or
self.object:relation(look_object) == game_object.enemy) and
look_object:alive() == true
then
if t == "sniper_fire" then
sniper_aim = self.object:position():distance_to(look_object:position())*aim_ratio
if sniper_aim <= min_ratio then
self.object:set_item(object.fire1, self.object:best_weapon(), 1, min_ratio)
return
end
self.object:set_item(object.fire1, self.object:best_weapon(), 1, sniper_aim)
else
self.object:set_item(object.fire1, self.object:best_weapon(), state_mgr_weapon.get_queue_params(self.object, look_object))
end
return
else
self.object:set_item(object.idle, self.object:best_weapon())
return
end
end

if self.st.look_position ~= nil and
self.st.look_object == nil
then
if t == "sniper_fire" then
self.object:set_item(object.fire1, self.object:best_weapon(), 1, sniper_aim)
else
self.object:set_item(object.fire1, self.object:best_weapon(), state_mgr_weapon.get_queue_params(self.object, nil))
end
return
else
if self.st.target_state == "psy_shoot" then
self.object:set_item(object.fire1, self.object:best_weapon())
return
end
self.object:set_item(object.idle, self.object:best_weapon())
return
end
return
elseif t == "unstrapped" then
--printf("[%s] not shooting", self.object:name())
self.object:set_item(state_mgr_weapon.get_idle_state(self.st.target_state), self.object:best_weapon())
end
end
function act_state_mgr_end:finalize()
action_base.finalize(self)
end

--' Лок менеджера
class "act_state_mgr_locked" (action_base)
function act_state_mgr_locked:__init(name, st) super (nil, name)
self.st = st
end
function act_state_mgr_locked:initialize()
action_base.initialize(self)
end
function act_state_mgr_locked:execute()
action_base.execute(self)
end
function act_state_mgr_locked:finalize()
action_base.finalize(self)
end


animation_reset_denied = {
wounded = true,
wounded_heavy = true,
wounded_heavy_2 = true,
wounded_heavy_3 = true,
wounded_zombie = true
}

--' Сам менеджер
class "state_manager"
function state_manager:__init(npc)
state_mgr_goap.goap_graph(self, npc)

self.target_state = "idle"
self.current_direction = nil
self.target_position = nil
self.current_object = nil
self.combat = false
self.alife = true
self.emerg = {}
self.synsound = nil
self.yaw_delta = nil
self.subanim = 0
self.need_reweapon = false
end
function state_manager:set_state(state_name, callback, timeout, target, emerg, synsound, extrakeys)
printf("Set State called: for %s State: %s", self.npc:name(), state_name)

if state_lib.states[state_name] == nil then
mylog("ERROR: ILLEGAL SET STATE CALLED!!! " ..tostring(state_name).. " for "..self.npc:name())
return
end
if target then
if target.look_position then
printf("look position: %s %s %s", target.look_position.x,
target.look_position.y,
target.look_position.z)
else
printf("look position: NIL")
end
if target.look_object then
printf("look object: %s", target.look_object:name())
else
printf("look object: NIL")
end
else
printf("look target NIL")
end

--сперва устанавливаем цели
if target ~= nil then
self.look_position = target.look_position
if target.look_object ~= nil then
self.look_object = target.look_object:id()
else
self.look_object = nil
end
else
self.look_position = nil
self.look_object = nil
end
-- меняем угол точности.
if extrakeys and extrakeys.yaw_delta ~= nil then
self.yaw_delta = extrakeys.yaw_delta
else
self.yaw_delta = 5
end
-- меняем глубину рекурсивности анимации.
if extrakeys and extrakeys.subanim ~= nil then
self.subanim = extrakeys.subanim
else
self.subanim = 0
end

local switched = false
local last_state = self.target_state
if self.target_state ~= state_name then

--' Если мы переключаемся из стреляющего состояния в нестреляющее - необходимо сразу же прекратить стрельбу
if (state_lib.states[self.target_state].weapon == "fire" or
state_lib.states[self.target_state].weapon == "sniper_fire") and
(state_lib.states[state_name].weapon ~= "fire" and
state_lib.states[state_name].weapon ~= "sniper_fire")
then
self.npc:set_item(state_mgr_weapon.get_idle_state(state_name), state_mgr_weapon.get_weapon(self.npc, state_name))
--printf("[%s] stop shooting", self.npc:name())
end


--' Если мы переключаемся из идущего положения в стоящее - надо задизаблить перемещение
if state_lib.states[self.target_state].movement ~= move.stand and
state_lib.states[state_name].movement == move.stand
then
self.npc:movement_enabled(false)
end


self.target_state = state_name
self.current_object = nil
switched = true
end

-- mylog("set state " .. state_name)
if state_lib.states[state_name].reset == true then
self.reset_state = true
else
self.reset_state = false
end


if switched and emerg ~= nil then
if animation_reset_denied[last_state] ~= true then
self.emerg.animation = emerg.animation
self.emerg.animation_nout = emerg.animation_nout
end
end

self.synsound = synsound


self.callback = callback
if timeout ~= nil and
timeout >= 0
then
self.callback.timeout = timeout
self.callback.begin = nil
else
if self.callback then
self.callback.func = nil
self.callback.timeout = nil
end
end

-- if switched == true then
-- self:update()
-- end
end
function state_manager:get_state()
return self.target_state
end
function state_manager:update()
--printf("Update called")
self.animstate:update()
self.animation:update()
self.planner:update()
--self.planner:show("")
end





function set_state(npc, state_name, callback, timeout, target, emerg, synsound, extrakeys)
if db.storage[npc:id()].state_mgr then
db.storage[npc:id()].state_mgr:set_state(state_name, callback, timeout, target, emerg, synsound, extrakeys)
end
end
function get_state(npc)
if db.storage[npc:id()].state_mgr then
return db.storage[npc:id()].state_mgr:get_state()
end
return nil
end









function bind_manager(object)
local manager = object:motivation_action_manager()


local properties = {}
properties["state_mgr_idle_combat"] = xr_evaluators_id.state_mgr + 1
properties["state_mgr_idle_alife"] = xr_evaluators_id.state_mgr + 2

local operators = {}
operators["state_mgr_to_idle_combat"] = xr_actions_id.state_mgr + 1
operators["state_mgr_to_idle_alife"] = xr_actions_id.state_mgr + 2

local state_manager = state_mgr.state_manager(object)

manager:add_evaluator(properties["state_mgr_idle_combat"], evaluator_state_mgr_idle("state_mgr_idle_combat", state_manager))
manager:add_evaluator(properties["state_mgr_idle_alife"], evaluator_state_mgr_idle_alife("state_mgr_idle_alife", state_manager))

local action = this.act_state_mgr_to_idle("state_mgr_to_idle_combat", state_manager)
action:add_precondition (world_property(properties["state_mgr_idle_combat"], false))
action:add_effect (world_property(properties["state_mgr_idle_combat"], true))
manager:add_action(operators["state_mgr_to_idle_combat"], action)

action = this.act_state_mgr_to_idle("state_mgr_to_idle_alife", state_manager)
action:add_precondition (world_property(stalker_ids.property_enemy, false))
action:add_precondition (world_property(stalker_ids.property_danger,false))
action:add_precondition (world_property(properties["state_mgr_idle_alife"], false))
action:add_effect (world_property(properties["state_mgr_idle_alife"], true))
manager:add_action(operators["state_mgr_to_idle_alife"], action)

action = manager:action(xr_actions_id.alife)
action:add_precondition(world_property(properties["state_mgr_idle_alife"],true))

action = manager:action(stalker_ids.action_combat_planner)
action:add_precondition(world_property(properties["state_mgr_idle_combat"],true))

action = manager:action(stalker_ids.action_anomaly_planner)
action:add_precondition(world_property(properties["state_mgr_idle_combat"],true))

action = manager:action(stalker_ids.action_danger_planner)
action:add_precondition(world_property(properties["state_mgr_idle_combat"],true))

action = manager:action(stalker_ids.action_gather_items)
action:add_precondition(world_property(properties["state_mgr_idle_alife"],true))

return state_manager
end





Ангус Янг
    
Посты: 28
Откуда: Ростов-на-Дону
Возраст: 31
01-10-2009 18:33 GMT3 час. #1050580   
Парни,как сделать в ОСГМ дин худ как в НС?Что бы и с эффектом дыхания и с бьющимся забралом?


Воины в интернете как олимпиада для дебилов,даже если ты победил,ты все равно дебил
mrslepoff
    
Посты: 28
Откуда: Москва
Возраст:
01-10-2009 19:24 GMT3 час. #1050621   
Читай журнал singapur22
http://stalker-portal.ru/plug.php?e=weblogs&m=page&id=7537 вот это
http://stalker-portal.ru/plug.php?e=weblogs&m=page&id=7538 и это


Изготовляется новый сюжетный мод. Рабочее название SZ. Принимаются новички и опытные модмейкеры. Обращаться по ICQ и ЛС
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
01-10-2009 20:28 GMT3 час. #1050705   
mrslepoff
твой диалог может и образцово-показательный, только ты лучшего места для него не нашел чем совать волку?
Если уже решил заменить один диалог на другой - то сначала структуру диалога изучи - во первых это start_dialog - такой тип диалога начинается с фразы NPC, а вторых он активируется тока при выполнении заложенных в нем условий.
в этом диалоге сначала идет так


1
2
3
4
5


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

добавлено спустя 3 минут

Сталкер Монолита
Вот тебе скрипт для отбирания вещей у NPC - дописываешь в таблицу то что тебе надо - (там нет аптечек, патронов, гранат, уникальных стволов) - экшен по вызову collector ставишь в диалог на фразу актора, и если у непися есть вещи из таблицы, то при активации нужной фразы они отберутся и будут переданы ГГ. Есть минус - пока отбирается тока по одной вещи одного имени - позже исправлю - пока не получилось.



local tab = {
"wpn_l85",
"wpn_lr300",
"wpn_sig550",
"wpn_fn2000",
"wpn_g36",
"wpn_bm16",
"wpn_toz34",
"wpn_wincheaster1300",
"wpn_spas12",
"wpn_ak74",
"wpn_ak74u",
"wpn_abakan",
"wpn_groza",
"wpn_val",
"wpn_vintorez",
"wpn_groza_coll",
"wpn_groza_m1",
"wpn_vintorez_coll",
"wpn_val_m1",
"wpn_svu",
"wpn_svd",
'wpn_desert_eagle',
'wpn_usp',
'wpn_colt1911',
'wpn_sig220',
'wpn_walther',
'wpn_beretta',
'wpn_hpsa',
'wpn_fort',
'wpn_pb',
'wpn_pm'
}

function collector(actor, npc)
for k,v in pairs(tab) do
if npc:object(v) then
obj = npc:object(v)
if obj then
local obj_name = obj:section()
local sobj = alife():object(obj:id())
if sobj then
alife():release(sobj, true)
this.spawn(obj_name)
end
end
end
end
end



function spawn(obj_name)
alife():create(obj_name, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end


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

отредактировал(а) erlik: 01-10-2009 20:32 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
mrslepoff
    
Посты: 28
Откуда: Москва
Возраст:
01-10-2009 20:43 GMT3 час. #1050726   
erlik может тогда лучше создать нового НПС? Потому что уже сил нету.


Изготовляется новый сюжетный мод. Рабочее название SZ. Принимаются новички и опытные модмейкеры. Обращаться по ICQ и ЛС
новиков сергей
    
Посты: 413
Откуда: Москва
Возраст:
01-10-2009 21:04 GMT3 час. #1050777   
мы уже со слеповым че не делали= ) я все ваиранты пеерпробовал.. тогда вопрос, как удалить непися не затрагивая all.spawn ?? например тогоже волка. потому что именно ОН нам нужен


создание NPC через All.spawn почти с нуля у меня в журнале
Так же известен, как Stunder
БаЛаБоЛ
    
Посты: 5062
Откуда: Промышленный район нанотехнологий
Возраст: 31
01-10-2009 21:11 GMT3 час. #1050785   
я щас задам наитупейший вопрос, я просто забыл: вообщем, как сделать так, чтобы папка gamedata была видна игрой?
какое значение надо поставить в fs_game ?:blink
модов куча, а не видит:-(


:>=
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
01-10-2009 21:37 GMT3 час. #1050806   
mrslepoff
сделай просто структуру диалога правильно: сначала пустой тэг без текста




1



твое условие
2


айди фразы -- начальная фраза NPC, которая появится сама, когда меченый попробует пообщаться с Волком, но появится она тока если условие для нее выполнилось.
3 -- переход к фразе ГГ


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

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

function wolf_delete()
local obj = alife():object( "esc_wolf" )
if obj then
alife():release(obj , true)
end
end

добавлено спустя 13 минут

mrslepoff
слушай, а сделай проще - просто поменяй тип диалога у волка в профиле со start на actor_dialog и все.
и оставляй прежнюю структуру.

отредактировал(а) erlik: 01-10-2009 21:52 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Vixler
    
Посты: 15
Откуда:
Возраст:
02-10-2009 03:02 GMT3 час. #1050883   
Кто-нибудь знает, можно ли как-то обновить скрипты при запущенной игре? Т.е., я запустил игру, альттабом перешёл в винду, изменил параметры .ltx файлах, альттабом переключился в игру - изменений никаких, надо закрывать её, запускать по-новой. Но это не слишком продуктивно. Я порылся в консоли, но ничего подходящего пока не нашёл, можт кто из мододелов знает, есть ли такая возможность?


karavan
    
Посты: 940
Откуда:
Возраст:
02-10-2009 05:40 GMT3 час. #1050891   
Люди кто знает.
При добавлении новой локации вертексы добавляются к ГеймГрафу или все вертексы и координаты расчитываются заново?


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
02-10-2009 08:40 GMT3 час. #1050935   
Vixler
пока никак нельзя. скрипты и конфиги считываются при загрузке игры.
Но правда singapur22 разрабатывает редактор скриптов в игре ( насчет ltx не знаю) -
пока он свою работу не выкладывал.
Так что жди или спроси у него. Профиль найдешь на 26 стр.

добавлено спустя 5 часа 57 минут

Вопрос
по параметрам конфига гранаты:

вот этот blast_impulse_factor - за что отвечает?
понятно что переводится "фактор импульса взрывной волны" - дефолтом там стоит = 1 но там и так есть blast_impulse - импульс взрывной волны, дефолт больше 100.
Второй вроде отвечает за силу импульса, которая будет придана трупу непися - то есть наскока далеко он отлетит после взрыва. Но как он пересекается с первым параметром - blast_impulse_factor ?
И от какого параметра зависит дальность разлета осколков? там есть fragment_speed - скорость полета осколков - если ее уменьшить, это повлияет на дальность? (понятно, что в жизни - повлияет, но в игре непонятно по каким формулам прописана физика этих осколков).

Просто пока наугад все выкрутил по максимуму - и получил мегабомбу, которая убивает даже Меченого на дистанции 70-100 метров. Может кто-нибудь знает точные значения всех параметров?

отредактировал(а) erlik: 02-10-2009 14:38 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"


Форумы Архив » Свалка Вопросы и ответы (по 04.12.09)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2025 «Stalker-Portal.ru»