Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
Sharipische

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

Recommended Posts

Название: 1

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

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

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

Share this post


Link to post
Share on other sites



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

Кусок ванильного 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);
	}

 

Share this post


Link to post
Share on other sites
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

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

Share this post


Link to post
Share on other sites

как известно есть конфиг:    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 есть, значит иммунитет высокий.

Edited by Sharipische (see edit history)

Share this post


Link to post
Share on other sites
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", что при изменении таких статов может вылиться в серьёзную проблему. К тому же система получения урона заложена в ядро игры и её нельзя изменить модами (поэтому нельзя спасти игрока от ваншота с помощью кода), и единственный обозримый (как минимум мной) вариант - брать ВЕСЬ код игры, затрагивающий хп и менять его, делая вид будто у игрока больше хп. И то с вышеупомянутой системой урона это часто не будет работать

 

Share this post


Link to post
Share on other sites
13 минут назад, XenoZD сказал:

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

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

 

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

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

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

Share this post


Link to post
Share on other sites
9 часов назад, Sharipische сказал:

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.