Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
Sharipische

Куплю скрипт повышения хп

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

Название: 1

Функционал: Вкалываю "инъектор" или съедаю " таблетку" и получаю +3 к постоянному хп. Итого становится 103. Вкалываю еще раз - становится 106. И т.д. до бесконечности. У персонажа есть так же хп головы, торса, ног и т.д. Эти значения так же увеличиваются.

И всё обнуляется при смерти.

Цена: договорная.

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


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



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

Кусок ванильного Object.c (в классах выше ничего нужного тоже не увидел)
 

	//! Equivalent of GetHealth("", "");
	float GetHealth()
	{
		return GetHealth("", "");
	}
	//! Equivalent of GetHealth01("", "");
	float GetHealth01()
	{
		return GetHealth01("", "");
	}
	//! Equivalent of GetMaxHealth("", "");
	float GetMaxHealth()
	{
		return GetMaxHealth("", "");
	}
	//! Equivalent of SetHealth("", "", float value);
	void SetHealth(float health)
	{
		SetHealth("", "", health);
	}
	//! Sets health relative to its maximum
	void SetHealth01(string zoneName, string healthType, float coef)
	{
		SetHealth(zoneName,healthType,(GetMaxHealth(zoneName,healthType)*coef));
	}
	//! Sets health to its maximum (zone or global)
	void SetHealthMax(string zoneName = "", string healthType = "")
	{
		SetHealth(zoneName,healthType,GetMaxHealth(zoneName,healthType));
	}
	//! Equivalent of AddHealth("", "", float value);
	void AddHealth( float add_health)
	{
		AddHealth("", "", add_health);
	}
	//! Equivalent of DecreaseHealth("", "", float value, bool auto_delete);
	void DecreaseHealth(float dec_health, bool auto_delete = true)
	{
		DecreaseHealth("", "", dec_health, auto_delete);
	}
	//! Decreases health by the given coeficient.
	void DecreaseHealthCoef(float dec_health_coef, bool auto_delete = true)
	{
		float current_health = GetHealth();
		float final_health_coef = GetHealth01() - dec_health_coef;
		float final_health = GetMaxHealth() * final_health_coef;		
		DecreaseHealth("", "", current_health - final_health);
	}

 

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


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

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

Кусок ванильного Object.c (в классах выше ничего нужного тоже не увидел)
 

//! Equivalent of GetHealth("", ""); float GetHealth() { return GetHealth("", ""); } //! Equivalent of GetHealth01("", ""); float GetHealth01() { return GetHealth01("", ""); } //! Equivalent of GetMaxHealth("", ""); float GetMaxHealth() { return GetMaxHealth("", ""); } //! Equivalent of SetHealth("", "", float value); void SetHealth(float health) { SetHealth("", "", health); } //! Sets health relative to its maximum void SetHealth01(string zoneName, string healthType, float coef) { SetHealth(zoneName,healthType,(GetMaxHealth(zoneName,healthType)*coef)); } //! Sets health to its maximum (zone or global) void SetHealthMax(string zoneName = "", string healthType = "") { SetHealth(zoneName,healthType,GetMaxHealth(zoneName,healthType)); } //! Equivalent of AddHealth("", "", float value); void AddHealth( float add_health) { AddHealth("", "", add_health); } //! Equivalent of DecreaseHealth("", "", float value, bool auto_delete); void DecreaseHealth(float dec_health, bool auto_delete = true) { DecreaseHealth("", "", dec_health, auto_delete); } //! Decreases health by the given coeficient. void DecreaseHealthCoef(float dec_health_coef, bool auto_delete = true) { float current_health = GetHealth(); float final_health_coef = GetHealth01() - dec_health_coef; float final_health = GetMaxHealth() * final_health_coef; DecreaseHealth("", "", current_health - final_health); }


	//! Equivalent of GetHealth("", "");
	float GetHealth()
	{
		return GetHealth("", "");
	}
	//! Equivalent of GetHealth01("", "");
	float GetHealth01()
	{
		return GetHealth01("", "");
	}
	//! Equivalent of GetMaxHealth("", "");
	float GetMaxHealth()
	{
		return GetMaxHealth("", "");
	}
	//! Equivalent of SetHealth("", "", float value);
	void SetHealth(float health)
	{
		SetHealth("", "", health);
	}
	//! Sets health relative to its maximum
	void SetHealth01(string zoneName, string healthType, float coef)
	{
		SetHealth(zoneName,healthType,(GetMaxHealth(zoneName,healthType)*coef));
	}
	//! Sets health to its maximum (zone or global)
	void SetHealthMax(string zoneName = "", string healthType = "")
	{
		SetHealth(zoneName,healthType,GetMaxHealth(zoneName,healthType));
	}
	//! Equivalent of AddHealth("", "", float value);
	void AddHealth( float add_health)
	{
		AddHealth("", "", add_health);
	}
	//! Equivalent of DecreaseHealth("", "", float value, bool auto_delete);
	void DecreaseHealth(float dec_health, bool auto_delete = true)
	{
		DecreaseHealth("", "", dec_health, auto_delete);
	}
	//! Decreases health by the given coeficient.
	void DecreaseHealthCoef(float dec_health_coef, bool auto_delete = true)
	{
		float current_health = GetHealth();
		float final_health_coef = GetHealth01() - dec_health_coef;
		float final_health = GetMaxHealth() * final_health_coef;		
		DecreaseHealth("", "", current_health - final_health);
	}

 

макс хп, наскока знаю, в конфигурации персонажа как 3к прописывается, через константы в 3_game Constantc.c

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

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


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

как известно есть конфиг:    class SurvivorBase: Man

чуть ниже есть такие значения: class DamageSystem
        {
            class GlobalHealth
            {
                class Health
                {
                    hitpoints=100; - вот это значение надо как то притянуть

                class Blood
                {
                    hitpoints=5000; - и с этим так же можно что то делать
                };
                class Shock
                {
                    hitpoints=100; - то же очень полезный параметр
                };

 

мне кажется, если сделать так....

пишем действие:

class ActionВжаритьШприц: ActionInjectSelf

{

void "какая то там функция"
    если значение hitpoints=100;  -  (то самое значение из конфига, которое нужно притянуть)

             сделать значение hitpoints=103

             

 

    если значение hitpoints=103;

             сделать значение hitpoints=106

 

    если значение hitpoints=106;

             сделать значение hitpoints=109

}

 

или так???

09.11.2021 в 08:11, XenoZD сказал:

float GetMaxHealth()

 

class ActionВжаритьШприц: ActionInjectSelf

{

void "какая то там функция"

           если action_data.m_Player.GetMaxHealth("","") = 100

                      сделать action_data.m_Player.GetMaxHealth("","") = 103

           если action_data.m_Player.GetMaxHealth("","") = 103

                      сделать action_data.m_Player.GetMaxHealth("","") = 106

           если action_data.m_Player.GetMaxHealth("","") = 106

                      сделать action_data.m_Player.GetMaxHealth("","") = 109

}

 

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

 

ну будет хп персонажа выходить за рамки

float GetStatBordersHealth()
	{
		float health = GetHealth("","");
		float health_max = GetMaxHealth("","");
		return GetStatLevelBorders(health, PlayerConstants.SL_HEALTH_CRITICAL, PlayerConstants.SL_HEALTH_LOW, PlayerConstants.SL_HEALTH_NORMAL, PlayerConstants.SL_HEALTH_HIGH, health_max);
	}

и ничего страшного, весь урон, болезни и т.д.(кроме иммунитета) не привязаны к значениям в коде выше. Но если хп уже 100, то и иммунитет соответствует. Он же не будет считывать 103хп там или 330хп. 100 есть, значит иммунитет высокий.

Изменено пользователем Sharipische (история изменений)

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


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

как известно есть конфиг:    class SurvivorBase: Man

чуть ниже есть такие значения: class DamageSystem
        {
            class GlobalHealth
            {
                class Health
                {
                    hitpoints=100; - вот это значение надо как то притянуть

                class Blood
                {
                    hitpoints=5000; - и с этим так же можно что то делать
                };
                class Shock
                {
                    hitpoints=100; - то же очень полезный параметр
                };

 

мне кажется, если сделать так....

пишем действие:

class ActionВжаритьШприц: ActionInjectSelf

{

void "какая то там функция"
    если значение hitpoints=100;  -  (то самое значение из конфига, которое нужно притянуть)

             сделать значение hitpoints=103

             

 

    если значение hitpoints=103;

             сделать значение hitpoints=106

 

    если значение hitpoints=106;

             сделать значение hitpoints=109

}

 

или так???

 

class ActionВжаритьШприц: ActionInjectSelf

{

void "какая то там функция"

           если action_data.m_Player.GetMaxHealth("","") = 100

                      сделать action_data.m_Player.GetMaxHealth("","") = 103

           если action_data.m_Player.GetMaxHealth("","") = 103

                      сделать action_data.m_Player.GetMaxHealth("","") = 106

           если action_data.m_Player.GetMaxHealth("","") = 106

                      сделать action_data.m_Player.GetMaxHealth("","") = 109

}

 

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


Урон это не стат, сразу отметается. Количество хп оружия, вещей и т.д. когда-то менялось в процессе игры? Сколько помню, менял в конфиге, перепаковывая мод т.е. не во время игры уж точно.

Конкретно по поводу 
 

class ActionВжаритьШприц: ActionInjectSelf

{

void "какая то там функция"

           если action_data.m_Player.GetMaxHealth("","") = 100

                      сделать action_data.m_Player.GetMaxHealth("","") = 103

           если action_data.m_Player.GetMaxHealth("","") = 103

                      сделать action_data.m_Player.GetMaxHealth("","") = 106

           если action_data.m_Player.GetMaxHealth("","") = 106

                      сделать action_data.m_Player.GetMaxHealth("","") = 109

}

GetMaxHealth() покажет тебе хп, но уж точно не даст тебе изменять это значение.
И последнее - переменные из конфига не достаются простым SurvivorBase.DamageSystem.hitpoints, и уж тем более не изменяются (если я не совсем забыл теорию программирования)

Проблема заключается в том, что для некоторых статистик персонажа разрабы не предусматривали возможность менять максимальное/минимальное значение, а зачастую и расчёты в формулах идут в разрезе "никто же не будет ставить игроку 120 хп давайте вместо 20% отнимать сразу 20", что при изменении таких статов может вылиться в серьёзную проблему. К тому же система получения урона заложена в ядро игры и её нельзя изменить модами (поэтому нельзя спасти игрока от ваншота с помощью кода), и единственный обозримый (как минимум мной) вариант - брать ВЕСЬ код игры, затрагивающий хп и менять его, делая вид будто у игрока больше хп. И то с вышеупомянутой системой урона это часто не будет работать

 

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


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

покажет тебе хп, но уж точно не даст тебе изменять это значение.

прошу простить, я ничего не понимаю в языке программирования. Я лишь пытаюсь мыслить логически.

 

То есть в рамках от 0 до 100 игра дает менять значение хп. а за пределами 100 уже нет.

а что если 1хп брать как 0.1, и при старте у персонажа будет 10хп. и тогда.....

не не не, подождите. Тут уже пора остановиться😀

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


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

прошу простить, я ничего не понимаю в языке программирования. Я лишь пытаюсь мыслить логически.

 

То есть в рамках от 0 до 100 игра дает менять значение хп. а за пределами 100 уже нет.

а что если 1хп брать как 0.1, и при старте у персонажа будет 10хп. и тогда.....

не не не, подождите. Тут уже пора остановиться😀

нет, игра даст поменять хп хоть до 50к, но не во время самой игры. то есть менять число можно только ручками, не скриптами

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


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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

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

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

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.