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

Редактирование движка X-Ray


Rolan

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

Подскажите пожалуйста, какой класс в движке отвечает за расчет повреждений при стрельбе, взрыве, etc. нашел SHit но в нем только "хранение". хочу увидеть формулу расчета в зависимости от hit_power,frag_hit  и других параметров...

Благодарю!

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


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

Подскажите пожалуйста, существует ли чистые (без каких либо правок) исходники ТЧ 1.0006, адаптированные  под VS2012 (VS2010)?

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


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

Уважаемые знающие, подскажите пожалуйста Пытаюсь собрать 1.0007 rc1 в vs2012, не собирается xrRender_R* с такими ошибками:

1>------ Перестроение всех файлов начато: проект: xrRender_R2, Конфигурация: Mixed Win32 ------
1>  stdafx.cpp
1>S:\xrCore\fixedmap.h(87): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>          S:\xrCore\fixedmap.h(247): см. ссылку на создание экземпляров класса шаблон при компиляции "FixedMAP<K,T,allocator>"
1>S:\xrCore\fixedmap.h(87): error C2143: синтаксическая ошибка: отсутствие ")" перед ">"
1>S:\xrCore\fixedmap.h(87): error C2059: синтаксическая ошибка: >
1>S:\xrCore\fixedmap.h(87): error C2143: синтаксическая ошибка: отсутствие ";" перед ">"
1>S:\xrCore\fixedmap.h(87): error C2059: синтаксическая ошибка: )
1>S:\xrCore\fixedmap.h(88): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
1>S:\xrCore\fixedmap.h(93): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(93): error C2143: синтаксическая ошибка: отсутствие ")" перед ">"
1>S:\xrCore\fixedmap.h(93): error C2059: синтаксическая ошибка: >
1>S:\xrCore\fixedmap.h(93): error C2143: синтаксическая ошибка: отсутствие ";" перед ">"
1>S:\xrCore\fixedmap.h(93): error C2059: синтаксическая ошибка: )
1>S:\xrCore\fixedmap.h(94): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
1>S:\xrCore\fixedmap.h(99): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(99): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>S:\xrCore\fixedmap.h(105): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(105): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>S:\xrCore\fixedmap.h(216): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(216): error C2143: синтаксическая ошибка: отсутствие ")" перед ">"
1>S:\xrCore\fixedmap.h(216): error C2059: синтаксическая ошибка: >
1>S:\xrCore\fixedmap.h(216): error C2143: синтаксическая ошибка: отсутствие ";" перед ">"
1>S:\xrCore\fixedmap.h(216): error C2059: синтаксическая ошибка: )
1>S:\xrCore\fixedmap.h(217): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
1>S:\xrCore\fixedmap.h(218): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(218): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>S:\xrCore\fixedmap.h(220): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(220): error C2143: синтаксическая ошибка: отсутствие ")" перед ">"
1>S:\xrCore\fixedmap.h(220): error C2059: синтаксическая ошибка: >
1>S:\xrCore\fixedmap.h(220): error C2143: синтаксическая ошибка: отсутствие ";" перед ">"
1>S:\xrCore\fixedmap.h(220): error C2059: синтаксическая ошибка: )
1>S:\xrCore\fixedmap.h(221): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
1>S:\xrCore\fixedmap.h(222): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(222): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>S:\xrCore\fixedmap.h(224): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(224): error C2143: синтаксическая ошибка: отсутствие ")" перед ">"
1>S:\xrCore\fixedmap.h(224): error C2059: синтаксическая ошибка: >
1>S:\xrCore\fixedmap.h(224): error C2143: синтаксическая ошибка: отсутствие ";" перед ">"
1>S:\xrCore\fixedmap.h(224): error C2059: синтаксическая ошибка: )
1>S:\xrCore\fixedmap.h(225): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
1>S:\xrCore\fixedmap.h(229): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(229): error C2143: синтаксическая ошибка: отсутствие "," перед "*"
1>S:\xrCore\fixedmap.h(236): error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
1>S:\xrCore\fixedmap.h(236): error C2628: недопустимый "xr_vector<void*,allocator::helper>" с последующим "void" (возможно, отсутствует ";")
1>S:\xrCore\fixedmap.h(236): error C2143: синтаксическая ошибка: отсутствие ")" перед ">"
1>S:\xrCore\fixedmap.h(236): error C2059: синтаксическая ошибка: >
1>S:\xrCore\fixedmap.h(236): error C2143: синтаксическая ошибка: отсутствие ";" перед ">"
1>S:\xrCore\fixedmap.h(236): error C2059: синтаксическая ошибка: )
1>S:\xrCore\fixedmap.h(237): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
========== Перестроение всех: успешно: 0, с ошибками: 1, пропущено: 0 ==========

Build Summary
-------------
00:06.914 - Failed  - Mixed Win32 - xrRender_R2\xrRender_R2.vcxproj

Total build time: 00:06.914

========== Rebuild All: 0 succeeded or up-to-date, 1 failed, 30 skipped, Completed at 28.01.2016 10:41:36 ==========

 

 

 

Список включенных каталогов:

S:\SDK\boost_1_30_0;S:\SDK\dx9sdk\dx9sdk\include;S:\xrCore;$(IncludePath)

Чего не хватает?

Благодарю за разъяснения.

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


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

Уважаемые, собрал 1.0007 rc1.

Ресурсы от 1.0006

При запуске игры вылет

* Detected CPU: GenuineIntel Pentium-III, F6/M7/S6, 2704.00 mhz, 40-clk 'rdtsc'

* CPU Features: RDTSC, MMX, SSE, SSE2
 
Initializing File System...
using fs-ltx fsgame.ltx
FS: 57393 files cached, 7975Kb memory used.
Init FileSystem 1.825350 sec
'xrCore' build 6202, Jan 28 2016
 
CRT heap 0x00460000
Process heap 0x00460000
Initializing Engine...
Executing config-script "user.ltx"...
[d:\games\stalker_soch\appdata\user.ltx] successfully loaded.
Starting INPUT device...
Loading DLL: xrRender_R2.dll
Loading DLL: xrGame.dll
* [win32]: free[4020396 K], reserved[56924 K], committed[116920 K]
* [ D3D ]: textures[0 K]
* [x-ray]: crt heap[21041 K], process heap[21041 K]
* [x-ray]: economy: strings[12019 K], smem[0 K]
* [x-ray]: file mapping: memory[0 K], count[0]
* active file mappings (0):
Executing config-script "d:\games\stalker_soch\gamedata\config\default_controls.ltx"...
! cant convert dik_name for dik[144], prop=[
[d:\games\stalker_soch\gamedata\config\default_controls.ltx] successfully loaded.
Executing config-script "user.ltx"...
Executing config-script "d:\games\stalker_soch\gamedata\config\rspec_minimum.ltx"...
[d:\games\stalker_soch\gamedata\config\rspec_minimum.ltx] successfully loaded.
Executing config-script "d:\games\stalker_soch\gamedata\config\default_controls.ltx"...
[d:\games\stalker_soch\gamedata\config\default_controls.ltx] successfully loaded.
[d:\games\stalker_soch\appdata\user.ltx] successfully loaded.
SOUND: OpenAL: enumerate devices...
SOUND: OpenAL: EnumerationExtension Present
devices Generic Hardware
SOUND: OpenAL: system  default SndDevice name is Generic Hardware
SOUND: OpenAL: default SndDevice name set to Generic Software
SOUND: OpenAL: All available devices:
1. Generic Software, Spec Version 1.1 (default)
2. Generic Software, Spec Version 1.1 (default)
SOUND: OpenAL: SelectBestDevice is Generic Software 1.1
SOUND: OpenAL: Required device: Generic Software. Created device: Generic Software.
* sound: EAX 2.0 extension: absent
* sound: EAX 2.0 deferred: absent
* sound : cache: 65538 kb, 7609 lines, 8820 bpl
Starting RENDER device...
* GPU [vendor:10DE]-[device:DE1]: NVIDIA GeForce GT 430
* GPU driver: 9.18.13.3523
Available video modes[17]:
[800x600]
[1024x768]
[1152x864]
[1176x664]
[1280x720]
[1280x768]
[1280x800]
[1280x960]
[1280x1024]
[1360x768]
[1366x768]
[1600x900]
[1600x1024]
[1680x1050]
[1768x992]
[1920x1080]
[1440x900]
* CREATE: DeviceREF: 1
* Vertex Processor: PURE HARDWARE
*     Texture memory: 2758 M
*          DDI-level: 9.0
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: unrecognized, 16
* DVB created: 1536K
* DIB created: 512K
stack trace:
 
0023:0018A260 xrLua.dll, luaF_findupval(), s:\xrlua\src\lfunc.c, 61
 

 

 

post-35264-0-52965800-1454058007_thumb.png

 

 
Направьте новичка в правильное русло размышлений :)
Благодарю за информацию!

 

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


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

Уважаемые знающие. Закралось подозрение что я что-то делаю не так при алгоритме размещения скомпилированного x-ray 1.0007 rc1. Помогите разобраться, что именно не так:

игра установлена в D:\Games\stalker_soch\

1) компилирую исходники, результат в X:\binaries\

2) копирую dll и exe в чистую папку D:\Games\stalker_soch\bin 

3) 

d3dx9_31.dll

d3dx9_34.dll
dbghelp.dll
eax.dll
Microsoft.VC80.CRT.manifest
msvcp71.dll
msvcp80.dll
msvcr71.dll
msvcr80.dll
protect.dll
protect.drv
protect.exe
stlport.5.0.dll
stlport.5.0.dll.manifest
wrap_oal.dll

 

4) запускаю запускаю с установленной папки с игрой D:\Games\stalker_soch\bin\XR_3DA.exe 

5) вылет 0023:6C0EA260 xrLua.dll, luaF_findupval(), s:\xrlua\src\lfunc.c, 61

Благодарю!

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


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

 

 

Хотя в твоём случае всего исключать нельзя
- а если бы был 1.0006 - порядок действий правильный? или я что-то не так делаю на каком либо этапе?

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


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

Возможно патчили не ту версию, для которой сделан патч? 

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


Ссылка на сообщение
Уважаемые, очередное отличие непонятное 1.0006 от 1.0007 

при чтении строковых ресурсов 1.0007 получает вылет при чтении строки больше 4096 байта 

[error]Expression    : HEADER+s_len_with_zero < 4096

[error]Function      : str_container::dock

[error]File          : xrstring.cpp

[error]Line          : 24

 

1) зачем ПЫСы придумали str_container (crc зачем то....) и хранят в нем строковые данные, прочитанные из xml?

2) кто как обходил эту проблему?

Притом что 1.0006 эти же строки вычитывал и выводил прекрасно. Речь идет, например, о дневниках контроллера из НС. 

Благодарю за разъяснения!

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


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

ТЧ 1.0006 + НС

есть такой конфиг например - arc_string_table.xml  - там дневники контролера, они больше 4к... ~7k по длинне. каждый.

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

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


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

 

 

Разумеется. Более того, во всех версиях ТЧ так.

Хм. к сожалению - исходников 1.0006 не нашел,утверждать точно не могу. 1.0006 (предыдущий бинарник) эти же ресурсы читает и выводит в энциклопедию без проблем... в моем случае - макроновская адаптация движка 1.0006 (но там xrCore.dll не менялся), до этого был обычный 1.0006 - т.е. явно есть отличия в работе со строками. 

 

 

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

использование dwCrc в движке есть только в менеджере управления shared memory - судя по всему для контроля за целостностью общих ресурсов. это понятно. я думал - это как то попроще сделано... и в Inventory.cpp ...

 

 

Надо переводами строк текст отбивать. Это ж наркомания - текст в 4 Кб одним абзацем

Хм. так там и отбивается. т.е. один блок в тегах <text></text> более 4к, разбитый на несколько абзацев переводами строки, вычитывается парсером одним куском. 

Просто так заккоментировать эту проверку нельзя, неизвестно к чему это приведет , слишком много где в игре используется буфер в 4к при работе со строками...

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


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

Страница недоступна, ну и способа сравнить адекватно нет :) 

xr_3da\xrGame\xrGameSpy\xrGameSpy_MainDefs.h\GAME_VERSION я могу написать что угодно:) 

кстати - а кто может знает - как действительно проверить, на основании каких исходников (какой версии) собран xr_3da? есть какие то ключевые особенности именно в 6? имена переменных, которые были только в нем, например... :)

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


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

писанине разработчиков X-Ray в плане версионирования их же движка

- имелось в виду что данную строку я hex эдитором могу попробить и в бинарнике... не говоря уже про исходный код. Имелось в виду что данная переменная не есть 100% вариант правильности версии.

 

 

Бредовый, однако, вопросец/

 

ну почему же... небольшое пример - в собранной dll (версия x) в экспорте есть функция, которую разработчики вырезали в следующей версии (x+1). Найдя у себя в экспортах  эту функцию , я могу с определенной вероятность сказать что я использую версию x. вот о таком признаке я и спрашивал. Не говоря уже что например, те же символьные названия функций. и я не думаю что те люди, которые сейчас пересобирают движок, для того чтобы оставить о себе след в истории, сидят и переименовывают все подряд.

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


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

 Есть ли в 7 патче возможность заливки иконок инвентаря нужным цветом?

Если репозитарий xp-dev - посмотрите все что касается #define INV_COLORIZE. 

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

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


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

Уважаемые, помогите разобраться...
ТЧ 1.0007 + НС геймдата + debug конфигурация.

[LUA] SCRIPT RUNTIME ERROR
[LUA] 0 : [C] [C](-1) : 
[LUA] 1 : [C ] add_precondition
[LUA] 2 : [Lua] ...es\stalker_soch\gamedata\scripts\xr_motivator.script(574) : addCommonPrecondition
[LUA] 3 : [Lua] ...games\stalker_soch\gamedata\scripts\xrs_armor.script(2448) : add_to_binder
[LUA] 4 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_logic.script(544) : assign_storage_and_bind
[LUA] 5 : [Lua] ...games\stalker_soch\gamedata\scripts\xrs_armor.script(2461) : set_scheme
[LUA] 6 : [Lua] d:\games\stalker_soch\gamedata\scripts\xrs_ai.script(56) : enable_schemes
[LUA] 7 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_logic.script(360) : enable_generic_schemes
[LUA] 8 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_logic.script(224) : configure_schemes
[LUA] 9 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_gulag.script(867) : setup_logic
[LUA] 10 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_gulag.script(384) : object_setup_online
[LUA] 11 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_gulag.script(1212) : setup_gulag_and_logic_on_spawn
[LUA] 12 : [Lua] ...es\stalker_soch\gamedata\scripts\xr_motivator.script(134) : 
[LUA] s:\xr_3da\xrgame\condition_state_inline.h(44) : "(I == m_conditions.end()) || ((*I).condition() != condition.condition())

 

 

Насколько я понял - в xr_motivator.addCommonPrecondition пытаются добавить евалуатор с condition , id которого уже было добавлено в список conditions ранее. По логике скрипта - эти эвалуаторы должны перекрывать существующие в этом списке, но в коде ни о каком перекрытии (переназначении) речь не идет. Я вообще такого функционала (замещение/перекрытие condition) не нашел в коде... Конечно, можно собрать с undef XRAY_EXCEPTIONS и undef DEBUG - ошибка пропадет, но список conditions будет расти постоянно. 
Насколько критично наличие дублей в этом списке и на каком принципе вообще работают эти conditions?
Спасибо за любую информацию!

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

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


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

Уважаемые знающие, кто сталкивался с тем что движок не может высчитать для какого-либо рестриктора его границы?

space_restriction_abstract_inline.h

CSpaceRestrictionAbstract::border () m_border.empty()==true

Это ошибки в all.spawn (неправильно выставлены координаты, например, или тип рестриктора) или на локации (LevelEditor-ом как то криво поставили рестриктор)? И может ли быть ситуация, когда у ретриктора действительно может не быть бордера?

Благодарю за информацию.

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


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

В СДК ставим на локации спавн-объект "спэйс-рестриктор", но забываем назначить ему шейп... Или в all.spawn'е, когда через uACDC его ковыряем.

в том то и дело  - объект в распакованном аллспавне имеет секцию shape... :( т.е. вроде как придраться не к чему.

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


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

Дефицит - это, я так понял, те коэффициенты, что в ини-файле торговли прописываются, но по какому принципу берутся значения - не могу понять...

Как минимум в 1.0007 TЧ дефицит не считается никак...вернее - он всегда равен 1. при этом с конфигов он может вычитываться. Насколько я понял - была идея реализовать некую динамику в ценообразовании в  торговле. закончилось статическим списком "секция=коэф.дифицита". следующее урезание - и как результат - в торговле - он всегда 1.

 

все формулы в trade2.cpp. 

  • Спасибо 1

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


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

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

С данной проблемой сможет помочь отладочная версия. Скорее всего - проблема где то в геймдате, debug сборка даст более расширенную информацию - что именно не так. В Вашей ошибке всего навсего не смогла правильно освободиться память, выделенная для какой то строки.

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


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

@tatarinrafa, небольшой пример работы с потоками (с++11).

// thread_test.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <thread>
#include <future>
#include <limits>

//Один цикл выполняется в уже идущем(главном) потоке где к "A" прибавляется 1 сто раз.
//Второй цикл, в новом фоновом потоке, прибавляет 1 к "B" двести раз.
//В конце обе переменные, в главном потоке, складываются(без багов, главный поток ждет завершения второго цикла).

void secondLoop(std::promise<int> & p)
{
	int B=0;
	for (;
	{
		B++;
		std::this_thread::sleep_for(std::chrono::milliseconds(10));
		std::cout << "secondLoop running." <<std::endl;
		if (B>=200)
			break;
	}
	p.set_value(;
	std::cout << "secondLoop ending." <<std::endl;
}

int firstLoop()
{
	int A=0;
	for (;
	{
		A++;
		std::this_thread::sleep_for(std::chrono::milliseconds(10));
		std::cout << "firstLoop running." <<std::endl;
		if (A>=100)
			break;
	}
	std::cout << "firstLoop ending." <<std::endl;
	return A;
}

void PressEnterToContinue()
{
  std::cout << "Press ENTER to continue... " << std::flush;
  std::cin.ignore( std::numeric_limits <std::streamsize> ::max(), '\n' );
}

int _tmain(int argc, _TCHAR* argv[])
{
	std::promise<int> p;
	auto future = p.get_future();
	std::thread threadRun(&secondLoop, std::move(p));
	int result1,result2;
	result1=firstLoop();
	threadRun.join();
	result2=future.get();
	std::cout << "results: " << result1 + result2 << std::endl;
	PressEnterToContinue();
	return 0;
}

 

 

отдельные функции сделаны для наглядности, для этого же добавлены задержки в циклах.

Само собой - пример чрезвычайно прост и не учитывает кучи вариантов, как блокировки, исключения. также, можно использовать std::async вместо std::future. Если с потока нет необходимости возвращать результат - пример еще упрощается :)

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

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


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

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

AMK-Team.ru

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