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

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








Автор Сообщение
Artos
    
Посты: 4176
Откуда:
Возраст: 66
10-12-2010 23:16 GMT3 час. #1395989   
Чуть дополню/поправлю:

erlik: Что такое файл логики? Просто набор конфигурационных параметров, которые считываются движком - парсером конфигов в движке - и далее производится их разбор и выполнение требуемых действий.

Читает/разбирает 'xr_logic.script' при активации схем, парсит движек, выполняе(ю)т - 'xr_conditions.script' и/или 'xr_effects.script' ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
10-12-2010 23:19 GMT3 час. #1395991   
Alex-San по идее если в скрипте zzzz.script много функций и в другом скрипте используется одна из функций zzzz.script то игра не должна использовать остальные функции скрипта zzzz.script ?
(zzzz.script- это пример)


-=NSM=-
Alex-San
    
Посты: 1015
Откуда:
Возраст: 51
10-12-2010 23:24 GMT3 час. #1395995   
batment

Чёт ты перемудрил) Конкретизируй.


erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
10-12-2010 23:27 GMT3 час. #1395996   
Artos
Спасибо за поправку :-)
---------------------------------

Супер) Вот бы сделать детекторы в руках отдельным минимодом.

Насчет мода - "детектор в руках" - уже сделано.
Смотрите здесь видео - от SkyLoader'a http://www.stalker-portal.ru/forums.php?m=posts&q=10663&d=210
На всякий случай - если ссылка не откроется - это топик S.T.A.L.K.E.R.: Secret of the Zone, 8 страница.
Правда не знаю - выкладывал ли он свою разработку или делал ее чисто для глоблаки.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Alex-San
    
Посты: 1015
Откуда:
Возраст: 51
10-12-2010 23:37 GMT3 час. #1395999   
АМК зло) Оригинал рулит;-)


Artos
    
Посты: 4176
Откуда:
Возраст: 66
10-12-2010 23:49 GMT3 час. #1396005   
Возникла задачка: Нужно передать параметр/знчение из главного меню перед стартом игры -> в запущенную игру. Т.е. при старте установить некий параметр, например в 'main_menu' и этот параметр нужно считать из игры.
Вариант с использованием 'user.ltx' или записью в файл аналогичным способом известен, но хотелось бы найти что-то попроще и не заморачиваться с файловыми операциями.

Итак вопрос: "Как передать значение переменной из стартового меню игры в запущенную игру без записи в какой-либо файл?"


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Sapsan
    
Посты: 5
Откуда:
Возраст:
10-12-2010 23:57 GMT3 час. #1396014   
Artos, это не аналог АМК-опций (ui_amk_options.script) ?


SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
11-12-2010 00:08 GMT3 час. #1396026   
Arist, такой функции нету в файле. Только если новую писать.


Хочешь работать нормально, работай один!
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
11-12-2010 00:42 GMT3 час. #1396041   
Arist, они относятся к конкретному неписю.
Чтобы добавить такую функцию, надо править 2 файла (можно 1, но лучше 2): xr_effects.script и xr_gulag.script.
Через диалог можно, но если ты до**5001b67681f3126adde4** персонажам, которые в онлайне под указанным смартом
function set_gulag_friend_actor( actor, npc, p )
if p[1] then
xr_gulag.setGulagFriend(p[1], actor)
end
end[/code]
В xr_gulag.script пишешь:
[code]-- сделать указанного персонажа другом всех персонажей смарта
function setGulagFriend( name_or_sid, target_obj )
setGulagRelation( name_or_sid, game_object.friend, target_obj )
end[/code]

отредактировал(а) SkyLoader: 11-12-2010 00:53 GMT3 час.

Хочешь работать нормально, работай один!
Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-12-2010 00:46 GMT3 час. #1396042   
Sapsan
Можно считать и аналогом AMK-опций. Более ближний аналог - симбионовские опции.
Только они работают уже в запущенной игре(!), а мне требуется до запуска игры иметь возможность поуправлять некоторыми опциями и их передать в игру.

Собственно частный пример применения:
Собрал свои наработки по инструментарию для модмейкера в единый пакет "STALKER Tools Kit". Пакет адаптирован под все три платформы (SHoC/CS/SCoP). Но пока не удается встроить чистильщик 'баговых' объектов, т.е. объектов, которые нужно удалять при запуске сэйва ...
Требуется ДО старта игры ввести идентификатор/имя и ... уже при запуске сэйва - удалить до его активизации.

Применения подобному (ввод пользовательских параметров в игру) можно найти немало ... Опций 'от 'разрабов игры' уже давно маловато.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
11-12-2010 01:02 GMT3 час. #1396047   
урааа получилось с детекторами


-=NSM=-
Alex-San
    
Посты: 1015
Откуда:
Возраст: 51
11-12-2010 01:07 GMT3 час. #1396049   
batment
А в чём проблема была?


batment
    
Посты: 267
Откуда: Киев
Возраст: 30
11-12-2010 01:12 GMT3 час. #1396050   
Alex-San в конфиге, нужно было поставить клас артефакта и дальше все делать как у артефакта.
Наверное если бы не SkyLoader я бы до утра сидел разбирался


-=NSM=-
Alex-San
    
Посты: 1015
Откуда:
Возраст: 51
11-12-2010 01:18 GMT3 час. #1396052   

# Gun12 :
Продолжу в следующем посте (я с тела)


Ну ты блин и мазоохист) Модульня структура ЛУА и привязанная к ней типизация локальных переменных, на первых страницах букваря прописана. Простая и очивидная вещь для любого процердурного языка.

batment
Дык я скрипты то нужны были? И что там с отдельной секцией?


999Geka666
    
Посты: 89
Откуда: Ижевск
Возраст: 34
11-12-2010 01:37 GMT3 час. #1396055   
подскажите из за чего вылет? game_tasks.xml у меня вообще в gamedata нету

FATAL ERROR

[error]Expression : false
[error]Function : CXml::Init
[error]File : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp
[error]Line : 87
[error]Description : XML file:gameplay\game_tasks.xml value: errDescr:Error reading end tag.


stack trace:


С понедельника не пью.... со следующего....
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
11-12-2010 01:41 GMT3 час. #1396057   
Alex-San скрипты не нужны
вот конфиг детектора
[det_artefact_indy]:identity_immunities

GroupControlSection = spawn_group
$spawn = "devices\detector_advanced"
$prefetch = 64
cform = skeleton
class = ARTEFACT
visual = equipments\item_datchik3.ogf

ef_detector_type = 1

description = det_art_indy_info
inv_name = det_art_indy
inv_name_short = det_art_indy
inv_weight = 0.3

inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 12
inv_grid_y = 27

cost = 2
jump_height = 0
particles =
lights_enabled = false
artefact_activation_seq = af_activation_bold

hud = detfake_hud
animation_slot = 11
allow_inertion = true
slot = 1
attach_angle_offset = 0, 0, 270
attach_position_offset = 0.0, 0.0, 0.08
attach_bone_name = bone01
belt = false
af_actor_properties = on
actor_properties = on

health_restore_speed = 0.0
radiation_restore_speed = 0.0
satiety_restore_speed = 0.0
power_restore_speed = 0.0
bleeding_restore_speed = 0.0

hit_absorbation_sect = af_mine_absorbation

[detfake_hud]
shell_point = 0.0, 0.0, 0.0
fire_point = 0.05, 0.0, 0.1
fire_bone = binoculars
orientation = 25, -35, 0
;;;position = 0.4, 0.3, 0.3

position = 0.4, 0.4, 0.4

visual = equipments\wpn_det1_hud.ogf

zoom_offset = -0.238600,0.153600,0.000000
zoom_rotate_x = -0.014000
zoom_rotate_y = 0.324000

anim_idle = idle
anim_idle_sprint = idle
anim_hide = holster
anim_show = draw
anim_activate = holster


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

и еще почему когда детектор суеш в первый слот то детектор перестает пищать ?

отредактировал(а) batment: 11-12-2010 01:43 GMT3 час.

-=NSM=-
win win
    
Посты: 258
Откуда: о_О
Возраст: 13
11-12-2010 02:50 GMT3 час. #1396079   
Блин ну как избавиться от вылета
Expression : sz<(tgt_sz-1)
Function : IReader::r_string
File : E:\stalker\patch_1_0004\xrCore\FS.cpp
Line : 349
Description : Dest string less than needed.

гамедаты нет модс нет все гамедаты.db на месте бин на месте фс гаме есть НУ ПОЧЕМУ ОН *** НЕ ЗАПУСКАЕТСЯ?!


Мои модельки NEW!
Sapsan
    
Посты: 5
Откуда:
Возраст:
11-12-2010 03:53 GMT3 час. #1396084   
Artos, за главное меню отвечает ui_main_menu.script. Вот в нём можно ведь и хранить локальную или глобальную таблицу с данными, которые будут введены до загрузки игры. Или после начала загрузки вся луа "перезапускается" и скрипт меню "забудет" данные ?

Artos, читал в туториалах о диалогах, что они после просчета не меняются (не пересчитываются) даже при загрузке сохранений пока опять полностью не перезапустишь игру. Тоесть данные можно сохранять, но только если уже был запущен сервер (или клиент). Так может при запуске игры принудительно стартовать игру (сервер или клиент) и тут же из неё выйти вернуться в главное меню, но так, чтобы это незаметно было...

отредактировал(а) Sapsan: 11-12-2010 12:55 GMT3 час.

Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-12-2010 04:39 GMT3 час. #1396097   
Sapsan
Если бы все было бы так просто ... то и не спрашивал.
Сам попробуй и увидишь ... В логе между закрытием меню по кнопкам запуска и запуском игры имеется 'нечто', что все скрипты/модули сбрасывает в дефолт. Вот кусок лога:


* DVB created: 1536K
* DIB created: 512K
- r__tf_aniso 16
- r2_tf_mipbias 0.
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: unrecognized, 16
*** RESET [1304 ms]
"e:\games\stalker\shoc\bin\xr_3da.exe" -nointro
* phase time: 0 ms
* phase cmem: 136863 K
Кэширование объектов...
Loading objects...
Loading models...
* [prefetch] time: 4680 ms
* [prefetch] memory: 86127Kb
* phase time: 4723 ms
* phase cmem: 212134 K
Сервер: Старт...

До него все что нужно вычисляется/запоминается, после ... девственно чисто.
О 'хранении в _G иль _g.script' тоже можно не поминать ...

Могу еще подбросить материальчика для 'поломать голову' ;-)
(упрощенно!)

Имеется в головном модуле функция, из которой вызывается проверка скриптов (на синтаксис):
(_m.script)
tScripts = nil

function on_game_init()
  local bFlg = type(tScripts) ~= "table"
  if not bFlg then--/ еще не проверялись
    log(":on_game_init:Check_Scripts")
    tScripts = m_debug.Check_Scripts()
  end
end

В модуле 'm_debug.script' соответственно ответная функция:

local tChecked = nil

function Check_Scripts()
  log("Run:Tbl="..type(tChecked) )
  if type(tChecked) ~= "table" then --/ проверки не было
    tChecked = {}
    ... --/ собственно процедура проверки
    log("Checked ...")
  else --/ проверка уже выполнена
    log("Already_Executed="..type(tChecked) )
  end
  log("Return_Table="..type(tChecked))
  return tChecked --/> возвращаем таблицу
end

Имеем в логе:
Сервер: Старт...
Info~>:_m:on_game_init:Check_Scripts
Info~>:m_debug:Run:Tbl=(nil)
Info~>:_m:on_game_init:Check_Scripts
Info~>:m_debug:Run:Tbl=(table)
Info~>:m_debug:Already_Executed=[table]
Info~>:m_debug:Return_Table=(table)
Info~>:m_debug:Checked:(527/300)
Info~>:m_debug:Return_Table=(table)

Т.е. видны два(!) вызова функции проверки и два ее ответа ... причем ответы явно оказались вложены друг в друга по времени ... ???
Как будто запущены два независимых потока (треда) ... иль второе ядро процессора так разрабы "заиспользовали" ...
(вывод в лог естественно последовательно по времени)


отредактировал(а) Artos: 11-12-2010 07:43 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Arist
    
Посты: 310
Откуда: Москва
Возраст:
11-12-2010 10:24 GMT3 час. #1396127   
SkyLoader
А как активировать твою функцию через диалог.И ещё: в alife_01_escape,есть в [87]спейсрестрикторе:
; cse_shape properties
shapes = shape0,shape1,shape2,shape3
shape0:type = box
shape0:axis_x = 6.23620176315308,0,0
shape0:axis_y = 0,3.98619985580444,0
shape0:axis_z = 0,0,3.83500003814697
shape0:offset = 0,0,0
shape1:type = box
shape1:axis_x = 7.71732950210571,0,0
shape1:axis_y = 0,24.0907764434814,0
shape1:axis_z = 0,0,17.714391708374
shape1:offset = 47.7419891357422,2.33591651916504,-10.4073867797852
shape2:type = box
shape2:axis_x = 1.57269442081451,0,0
shape2:axis_y = 0,11.6672286987305,0
shape2:axis_z = 0,0,18.4270477294922
shape2:offset = -15.5425109863281,7.22870635986328,-10.7128219604492
shape3:type = box
shape3:axis_x = 61.7394027709961,0,0
shape3:axis_y = 0,18.8940544128418,0
shape3:axis_z = 0,0,49.526496887207
shape3:offset = 16.0246124267578,4.26228523254395,-26.3295516967773

Я подумал,что это четыре рестриктора в одной секции,поставил два аналогиным способом - работает только один.Есть два входа в деревню.Можно ли таким методом поставить два рестриктора?


999Geka666
    
Посты: 89
Откуда: Ижевск
Возраст: 34
11-12-2010 10:33 GMT3 час. #1396128   
Подскажите, не могу таки понять из за чего происходит вылет:
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: ...:\s.t.a.l.k.e.r\gamedata\scripts\task_manager.script:716: bad argument #1 to 'pairs' (table expected, got nil)


С понедельника не пью.... со следующего....
vhodnoylogin
    
Посты: 211
Откуда:
Возраст: 35
11-12-2010 13:06 GMT3 час. #1396172   
Люди, здравствуйте.
Пару вопросов о патронах:
1) как узнать, что за тип руль в стволе находится? Есть обычные, бронебойные, снайперские и, может быть (если добавили), другие. А какие в стволе - не известно.

2) как подсчитать количество пуль в рюкзаке?
У нас, например, 100 пуль. В коробке пуль (той, что у торговцев покупаем) 30 пуль. Сколько пуль в инвентаре? Сто? Как это узнать?


Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
Deathdoor
    
Посты: 906
Откуда: Москва
Возраст: 48
11-12-2010 13:46 GMT3 час. #1396189   
адские задачки какие вы спрашиваете :blink
1. иконка внизу показывет какие в стволе патроны
2. над иконкой патронов в рюкзаке написано количество


До каких пор людей, по крохам собиравших державу и беспощадно каравших её врагов, мы будем обзывать палачами, а индивидов, разваливших страну и пустивших на ветер труды целых поколений, именовать реформаторами? (Ф.М. Достоевский)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
11-12-2010 15:10 GMT3 час. #1396217   
vhodnoylogin
1)Тип патронов в стволе:
Аргумент на **5001b67681f3126adde4**:r_u8()
return iAmmoType
end
end [/code]
Возвращает 0 или 1. 0 - обычный патрон, 1- бронебойный\улучшенный.
Метод я тестил мало, поэтому точно не знаю возвращается ли что то еще кроме 0 и 1.

2) Методы получения числа патронов:
[code] local weapon = db.actor:active_item()
if isWeapon(weapon) then
local num = weapon:get_ammo_total() - вернет общее число патрон в рюкзаке к активному стволу .
end
[/code]
[code]get_ammo() - получить общее количество патронов в рюкзаке[/code]
Не знаю к какому объекту ее применять - наверно к db.actor. Не использовал.

--- кол-во патрон в конкретной пачке -- передаем объект пачки
[code]function get_ammo_size(obj)
local se_obj = alife():object(obj:id())
local packet = net_packet()
cse_alife_item_ammo.STATE_Write(se_obj, packet)
packet:r_seek(packet:w_tell() - 2)
return packet:r_u16()
end[/code]

PS:И на будущее - все эти функции есть в любом глобальном моде. Найти их - дело пяти минут.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
11-12-2010 15:17 GMT3 час. #1396219   
Arist, вызов происходит так: %=set_gulag_friend_actor(esc_lager)%.
999Geka666, кидай конфиг диалога.
vhodnoylogin,
1) Через нет-пакет оружия.


Хочешь работать нормально, работай один!
Arist
    
Посты: 310
Откуда: Москва
Возраст:
11-12-2010 16:26 GMT3 час. #1396262   
SkyLoader

Arist, вызов происходит так: %=set_gulag_friend_actor(esc_lager)%.

Через рестриктор, а через диалог?Это начало из возвращения ст. сюжета.


SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
11-12-2010 16:49 GMT3 час. #1396278   
Arist, это через логику рескриптора.


Хочешь работать нормально, работай один!
Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-12-2010 17:26 GMT3 час. #1396303   

erlik :Возвращает 0 или 1. 0 - обычный патрон, 1- бронебойный\улучшенный.

Возвращается 'тип'/индекст, который читается из строки патронов ("ammo_class") конкретного оружия. Собственно это порядковы**5001b67681f3126adde4**d())
local packet = net_packet()
seObj:STATE_Write(packet)
local iSize = packet:w_tell()
packet:r_seek(iSize - 1)
local iAmmoType = packet:r_u8()
return iAmmoType --/> (0|1|2|...)
end
end
[/code]
добавить это:
[code]--/ определяем имя секции патронов (ammo_name) по типу (ammo_type) для конкретного оружия (sSection)
function Get_AmmoSection(sSection, iAmmoType) --/< ammo_type (0|1|2|...)
local tAmmoList = fReadFromIni(system_ini(), sSection, "ammo_class", {}, "table", ",")
local iAmmo = 1 + (iAmmoType or 0)
return tAmmoList[iAmmo] --/> "ammo_section"
end
[/code]
- то получим имя/название патрона в стволе.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Arist
    
Посты: 310
Откуда: Москва
Возраст:
11-12-2010 19:29 GMT3 час. #1396382   
SkyLoader

Arist, это через логику рескриптора.

Это я понял.А одним рестриктором два входа можно перегородить?Что значит shape0,shape1, shape3 ?
Это три рестриктора?


Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
11-12-2010 19:46 GMT3 час. #1396390   
Это один рестрикт, состоящий из 3-х "кусков".


Не стань номинантом премии Дарвина.


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


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

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