Помогите разобраться с уроном.

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
PHP:
#pragma semicolon 1 

#include <sdkhooks> 
#include <sourcemod> 
#include <cstrike> 

public OnPluginStart()

{ 
    RegConsoleCmd("vipmenu", Vip_Command);
} 

public Action:OnDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype) 
{ 
    if (attacker > 0 && attacker < MaxClients && !IsFakeClient(attacker))  
    { 
        damage += 50; 
        return Plugin_Changed; 
    } 
    return Plugin_Continue; 
}  
public Action:OnDamageStandart(victim, &attacker, &inflictor, &Float:damage, &damagetype) 
{ 
    if (attacker > 0 && attacker < MaxClients && !IsFakeClient(attacker))  
    { 
        damage += 0; 
        return Plugin_Changed; 
    } 
    return Plugin_Continue; 
}  


public Action:Vip_Command(client, args)
{
    ShowVipMenu(client);
    return Plugin_Handled;
}

ShowVipMenu(client)
{
    new Handle:hMenu = CreateMenu(Handle_VipMenu);
    SetMenuTitle(hMenu, "Vip меню: \n \n");
    AddMenuItem(hMenu, NULL_STRING, "Меню урока");
    DisplayMenu(hMenu, client, MENU_TIME_FOREVER);
}

public Handle_VipMenu(Handle:hMenu, MenuAction:action, client, iSlot )
{
    if ( action == MenuAction_Select )
    {
        if ( iSlot == 0 )
        {
            ShowVipDamage(client);
        }
    }
    
    else if ( action == MenuAction_End )
    {
        CloseHandle(hMenu);
    }
}

ShowVipDamage(client)
{
    new Handle:hMenu = CreateMenu(Handle_VipDamageMenu);
    SetMenuTitle(hMenu, "Меню урона: \n \n");
    AddMenuItem(hMenu, NULL_STRING, "Стандартный урон");
    AddMenuItem(hMenu, NULL_STRING, "Увеличенный на 50ДМГ");
    DisplayMenu(hMenu, client, MENU_TIME_FOREVER);
}

public Handle_VipDamageMenu(Handle:hMenu, MenuAction:action, client, iSlot )
{
    if ( action == MenuAction_Select )
    {
        if ( iSlot == 0 )
        {
            SDKHook(client, SDKHook_OnTakeDamage, OnDamageStandart); 
        }
        
        else if ( iSlot == 1 )
        {
            SDKHook(client, SDKHook_OnTakeDamage, OnDamage); 
        }
    }
    
    else if ( action == MenuAction_End )
    {
        CloseHandle(hMenu);
    }
}
Как сделать так, чтобы тот, кто нажал на увеличенный дамаг, только у него прибавилось 50ДМГ
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Попробуй
PHP:
#include <sourcemod>
#include <sdkhooks>

new Handle:hMenu = INVALID_HANDLE;

new bool:IncreasedDamage[MAXPLAYERS + 1] = {false, ...};

public OnPluginStart()
{
	RegConsoleCmd("vipmenu", RCC_VipMenu);

	hMenu = CreateMenu(MenuHandler);
	SetMenuTitle(hMenu, "Урон:");

	AddMenuItem(hMenu, "0", "Стандартный");
	AddMenuItem(hMenu, "1", "Увеличенный");
}

public OnClientPutInServer(client)
{
	if (!IsFakeClient(client))
	{
		if (IncreasedDamage[client])
		{
			IncreasedDamage[client] = false;
		}

		SDKHook(client, SDKHook_OnTakeDamage, SDK_OnTakeDamage);
	}
}

public Action:SDK_OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
{
	if (IncreasedDamage[attacker])
	{
		damage += 50.0;

		return Plugin_Changed;
	}

	return Plugin_Continue;
}

public Action:RCC_VipMenu(client, args)
{
	if (client > 0)
	{
		DisplayMenu(hMenu, client, MENU_TIME_FOREVER);
	}

	return Plugin_Handled
}

public MenuHandler(Handle:menu, MenuAction:action, param1, param2)
{
	switch (action)
	{
		case MenuAction_Select:
		{
			IncreasedDamage[param1] = param2 == 0 ? false : true;
		}
	}
}
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
Спасибо))
 
Последнее редактирование модератором:
Сверху Снизу