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

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


Rolan

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

Кто неплохо разбирается в файле в xrGame Actor.cpp, помогите. Там есть, как я нашёл, секции по значениям таких параметров, как radiation restore speed, health restore speed и т.д. Что в них нужно поменять, чтобы показывались другие исходные значения в игре? Т.е. по стандарту, вроде, 0.01 radiation restore speed у арта отмечается как "радиация +1". Я хочу сделать, чтомы отмечалось "радиация +60 мзв/мин". Как это можно сделать?

Или если это находится в файле Act,orCondition.cpp, объясните, что нужно изменить там.

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


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

Как можно вбить в движок новые функции для скриптов? Например, я хочу изменять параметры артов и вес всех предметов. Но таких функций в ориг движке просто не существует, зато они есть в модифицированных движках. Подскажите, пожалуйста, очень нужно научиться. Даже еслт скажете какие файлы нужно редактировать - уже буду очень благодарен!

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


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

@Romann вот я тоже хочу сделать систему, как в DA, надеюсь тут найдутся знатоки, которые помогут. Жаль, что нельзя расковырять движок DA и посмотреть, как сделано у них...

P.S. если когда-то доделаешь, можно попросить кинуть мне? Я погляжу, поучусь, как это делается.

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

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


Ссылка на сообщение
29 минут назад, Zander_driver сказал(а):

В движке, опять же, множество уже готовых примеров...

А можно поконкретнее, где именно эти примеры находятся?

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


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

https://drive.google.com/file/d/1WA2lyTJq2pgWfBTQz0Y_QoMKyP0DDHIM/view?usp=sharing

В ориг движке бинокль и нож по умолчанию забиты на класс "weapon", и я так понимаю, это в движке. Я сделал видимыми слоты для них, и т.к. у них такой класс, то подсвечиваются слоты для оружия. Если добавить хайлайты к тем, которые уже указаны для класса оружия, то тогда будет вообще 4 слота подсвечиваться. Как можно добавить отдельные 2 класса, прописать в один нож, в другой бинокль, чтобы подсветка была у них только для своего слота?

Либо, если так можно, вставить какое-то условие на проверку имени секции

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


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

@Zander_driver, я решил заморочиться чуть-чуть меньше, по готовым примерам из других файлов движка сделал проверку на имя предмета и настроил таким образом. Всё работает прекрасно

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


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

Как можно реализовать разъединение одинаковых предметов в инвентаре, чтобы каждый занимал отдельную ячейку, а не одну с текстом х3 (к примеру)

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


Ссылка на сообщение
5 часов назад, AndreySol сказал(а):

@ARTLantistПредполагаю, что в ЗП похожим образом группировка работает. Ищи поиском название ф-ции, от нее дальше раскапывай...

Да, я нашёл, она там немного по-другому устроена, но принцип тот же. Просто выставил для функции return false и всё стало работать. Спасибо)

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


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

ЗП. Какие строчки нужно убрать/заменить в weaponMagazined.cpp, чтобы убрать автоперезарядку оружия? Или, если я неправильно всё понимаю, то подскажите, в какой файл мне направиться

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

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


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

@Zander_driver когда ты достреливаешь с калаша очередь и расходуешь все патроны, ГГ сам его перезаряжает

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


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

Это будет тяжело объяснить, но я попробую. Платформа СоР.

Как можно реализовать такой коллбек, который будет "отлавливать" перемещение предмета из одной ячейки инвентаря в другую (именно в рюкзаке). И нужно, чтобы он возвращал, какой предмет мы перемещаем (item1), и какой предмет(item2) находится в ячейке инвентаря (если его нет, то, соответственно, возвращает nil), в которую мы переместили наш предмет (item1). Все названия в скобках условные (это чисто для переменных уже в скриптах, а не движке). Надеюсь, объяснил довольно понятно:rolleyes:

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

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


Ссылка на сообщение
2 часа назад, Zander_driver сказал(а):

Ты можешь отследить, что какой-то итем перетащили на другой какой-то итем или в какой-то другой слот/другое окно

ну в принципе я этого и хотел в конечном итоге)

 

7 часов назад, AndreySol сказал(а):

Просто поясни, зачем???

Посмотри на тот же СоС, в котором арты кладутся в СИМК и другие контейнеры с помощью перетягивания арта на контейнер в инвентаре (про доп.кнопки на них я вообще молчу), или возьмём ДА, в котором убрано объединение одинаковых предметов в инвентаре, да и в принципе многие "съедобные" предметы имеют несколько использований, и их тоже можно объединять, чтобы не засорять инвентарь (например две водки на одно использование объединить в одну на 2). Вот для подобного мне и нужно.

2 часа назад, Zander_driver сказал(а):

ячеек нет, даже в нем.

Есть просто нарисованная сетка

Ну это уже прелести моего объяснения

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


Ссылка на сообщение
3 часа назад, Zander_driver сказал(а):

Перетягивание итема на итем - по-моему, уже и так есть.

Разве? А где находится?

 

3 часа назад, Zander_driver сказал(а):

Метод EqualTo и возможность его переписать, тем более есть.

Если не ошибаюсь, метод EqualTo отвечает за объединение одинаковых предметов в одну ячейку инвентаря с указанием количества объединённых предметов. А мне нужно, чтобы я перетащил один предмет на другой, они оба удалились и заменились нужным (скрины прикрепляю) https://disk.yandex.ru/d/CiSnzNXKkj58nQ?w=1

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


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

@_ХоЗаР_ попробую вставить и посмотреть, что да как. Просто я уже сам сделал функцию, и пришлось добавить её в UIDragDropListEx.cpp, т.к. из UIActorMenu_action.cpp почему-то не вызывалось

у тебя она норм вызывается?

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


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

@_ХоЗаР_ не знаю, у меня из данной функции вызывается скрипт только после того, как я перемещу предмет в другой слот, а не в пределах одного слота (в том числе рюкзака)

а вот из подобной в UIDragDropListEx.cpp вызывается только тогда, когда в пределах одного слота (к сожалению, мне нужен и тот и тот вариант, и пришлось создавать два вызова скриптов в одном файле и другом)

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


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

Как можно пофиксить вылет при перетаскивании патронов на пояс, которые занимают 2 ячейки, а на поясе свободна только 1? Причём если отправлять туда патроны двойным нажатием ЛКМ, то всё норм, они просто не отправляются, а если перетаскивать, то получаешь вылет. Где-то же должна быть проверка, которая проверяет, можно ли поместить предмет на пояс? Только её нужно доработать для проверки размера предмета, помещаемого на пояс.

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

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


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

В чистой зп есть такой небольшой баг, я думаю, что не я один его замечал: когда мы пытаемся перетащить предмет из одной клетки сетки рюкзака в другую - это не всегда выходит (предмет возвращается обратно, либо ставится в другую). Прикол в том, что нужно перетягивать этот предмет не в любую точку клетки, а со смещением от центра к правому нижнему углу - тогда всегда предмет переносится в эту клетку. Ну так вот, как пофиксить данный баг? Чтобы можно было перетянуть предмет в любую точку ДАННОЙ клетки и он туда без труда поместился.

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


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

Платформа ЗП. Наткнулся на одну неприятную проблему. При создании нового слота (не визуализации уже существующих, а полностью нового) обнаружил, что файл inventory_space.h, в котором прописаны слоты, ни в какую не хочет воспринимать изменения.

Скрытый текст

#pragma once

#define CMD_START	(1<<0)
#define CMD_STOP	(1<<1)
 //edited by ARTLantist
enum{
	NO_ACTIVE_SLOT	= 0,
	KNIFE_SLOT		= 1,//btn1
	INV_SLOT_2,			//btn2
	INV_SLOT_3,			//btn3
	GRENADE_SLOT,		//btn4
	BINOCULAR_SLOT,		//btn5
	BOLT_SLOT,			//btn6 
	OUTFIT_SLOT,
	PDA_SLOT,
	DETECTOR_SLOT,
	TORCH_SLOT,
	ARTEFACT_SLOT,
	HELMET_SLOT,
	AMMO_SLOT, //начиная с этой переменной идут новые слоты
	MEDCINE_SLOT,
	GRENADEW_SLOT,
	DOSIMETER_SLOT, //до этой
	LAST_SLOT		= DOSIMETER_SLOT
};

#define RUCK_HEIGHT			280
#define RUCK_WIDTH			7

class CInventoryItem;
class CInventory;

typedef CInventoryItem*				PIItem;
typedef xr_vector<PIItem>			TIItemContainer;


enum eItemPlace
{			
	eItemPlaceUndefined = 0,
	eItemPlaceSlot,
	eItemPlaceBelt,
	eItemPlaceRuck
};

struct SInvItemPlace
{
	union{
		struct{
			u16 type				: 4;
			u16 slot_id				: 6;
			u16 base_slot_id		: 6;
		};
		u16	value;
	};
};

 

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

Ради интереса решил поизменять положения стандартных переменных, но в итоге их значения не изменялись: даже если поставить HELMET_SLOT на первое место, он всё равно будет равен 12, а не 0... Как данный момент можно исправить?

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


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

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

AMK-Team.ru

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