Skocz do zawartości
karakantoziomal

[Rozwiązane] (szukam) Fall damage - upadek śmiertelny zostawia 1HP

Rekomendowane odpowiedzi

Siemanko, potrzebuję małego pluginu, który na wybranej mapie (np. zakodowana nazwa mapy w pluginie) będzie aktywował coś takiego, że przy upadku z dużej wysokości, graczowi zawsze zostanie co najmniej 1 hp (w przypadku gdyby miał już zginąć).

Czyli gracz ma mało hp, spada, normalnie miałby już zginąć, ale plugin nadaje mu 1hp. Jest może już coś takiego? ?

Przez MAGNET,

poprawiłem tytuł i przeniosłem do odpowiedniego działu :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przerobiony nofalldamage:

Spoiler

#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

#define DMG_FALL   (1 << 5)

#define PLUGIN_VERSION "0.0.1.9"

public Plugin myinfo = 
{
	name = "No Fall Damage",
	author = "alexip121093",
	description = "no falling damage",
	version = PLUGIN_VERSION,
	url = "www.sourcemod.net"
}

public OnClientPutInServer(client)
{
	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public Action:OnTakeDamage(client, &attacker, &inflictor, &Float:damage, &damagetype)
{
	if (damagetype & DMG_FALL)
	{
		if(float(GetClientHealth(client)) - damage < 1.0)
		{
			SetEntityHealth(client, 1);	
			return Plugin_Handled;
		}
		else	return Plugin_Continue;
	}
	return Plugin_Continue;
}

 

 

Jeśli obrażenia, jakie miałby otrzymać gracz na skutek upadku, spowodują jego śmierć, ustawiam zdrowie na 1 i blokuje obrażenia

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
#include <sdkhooks>

#pragma semicolon 1
#pragma newdecls required

bool g_bGoodMap;

public void OnMapStart()
{
	g_bGoodMap = false;

	char sMap[128];
	GetCurrentMap(sMap, sizeof(sMap));

	if(StrEqual(sMap, "Twoja_Mapa") || StrEqual(sMap, "Twoja_Mapa2"))
	{
		g_bGoodMap = true;
	}
}

public void OnClientPutInServer(int client)
{
	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{
	if(!g_bGoodMap)
		return Plugin_Continue;

	if(damagetype & DMG_FALL)
	{
		if(float(GetClientHealth(victim)) - damage < 1.0)
		{
			SetEntityHealth(victim, 1);	
			return Plugin_Handled;
		}
	}

	return Plugin_Continue;
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...