Увеличение урона Игрокам

Тема в разделе "Counter-Strike: Source", создана пользователем Дмитрий Иванов 1927199390, 6 янв 2015.

  1. Дмитрий Иванов 1927199390

    Дмитрий Иванов 1927199390

    Сообщения:
    12
    Симпатии:
    0
    Здравствуйте еще раз




    проверил код который дали, в итоге не рабочий
    что не так??
    обьясняю, проверял на себе - без плагина кинул под себя гранату осталось 19хп
    и после плагина тоже 19 хотя в стиме ввел свой стим
     
  2. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Ой ё ёй, код неверный, совсем.
     
    Дмитрий Иванов 1927199390 нравится это.
  3. Felton

    Felton

    Сообщения:
    332
    Симпатии:
    9
    Дмитрий Иванов 1927199390 нравится это.
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.982
    return Plugin_Changed;

    В OnTakeDamage нет проверки на наличие прав у игрока.
    На остальное даже смотреть не хочу.
     
    Дмитрий Иванов 1927199390 нравится это.
  5. Дмитрий Иванов 1927199390

    Дмитрий Иванов 1927199390

    Сообщения:
    12
    Симпатии:
    0
    ну а что мне сделать чтоб данный код заработал?
     
  6. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Как-то так, наверное
    PHP:
    #include <sourcemod>
    #include <sdkhooks>

    new const String:hListSteamIDs[][] = {"STEAM_0:0:1111111111""STEAM_2""STEAM_3"};

    #define SIZE sizeof(hListSteamIDs)
    #define VALUE 1.5

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

    public 
    OnClientAuthorized(client, const String:auth[])
    {
        
    IsClientValid[client] = false;

        for (new 
    0SIZEi++)
        {
            if (
    strcmp(hListSteamIDs[i], authfalse) == 0)
            {
                
    SDKHook(clientSDKHook_OnTakeDamageOnTakeDamage);
                
    IsClientValid[client] = true;
                break;
            }
        }
    }

    public 
    Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
    {
        if (
    IsClientValid[attacker])
        {
            
    damage *= VALUE;
            return 
    Plugin_Changed;
        }

        return 
    Plugin_Continue;
    }
     
    Дмитрий Иванов 1927199390 нравится это.
  7. Дмитрий Иванов 1927199390

    Дмитрий Иванов 1927199390

    Сообщения:
    12
    Симпатии:
    0
    работает, но не могу понять, как пашет, к примеру на 30% больше урон сделать
     
  8. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    Умножь
    на 100% и получишь проценты сверх нормы (т.е. сверх нормальных 100%) - стоит 150%.
    100% = 1.0, 1.0/100% = 0.01 * 30% = 0.3 (прибавка) + 1.0 (стандарт) = 1.3.
    Оффтоп
     
    Дмитрий Иванов 1927199390 нравится это.
  9. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.982
    Дмитрий Иванов 1927199390,
    Это коэффициент умножения урона.
    1.0 - нормальный
    1.3 - на 30 % больше
    1.5 - на 50 % больше
    2.0 - в 2 раза больше
     
    Дмитрий Иванов 1927199390 нравится это.
  10. Дмитрий Иванов 1927199390

    Дмитрий Иванов 1927199390

    Сообщения:
    12
    Симпатии:
    0


    похоже не пашет, при точно проверке, умножил на 3 чтоб греной себя убить, и так же остается хп - 18-19
     
  11. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.982
    а если так:
    PHP:
    #include <sourcemod> 
    #include <sdkhooks> 

    new const String:hListSteamIDs[][] = {"STEAM_0:0:1111111111""STEAM_2""STEAM_3"}; 

    #define SIZE sizeof(hListSteamIDs) 
    #define VALUE 1.5 

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

    public 
    OnClientAuthorized(client, const String:auth[]) 

        
    IsClientValid[client] = false

        
    SDKHook(clientSDKHook_OnTakeDamageOnTakeDamage); 

        for (new 
    0SIZEi++) 
        { 
            if (
    strcmp(hListSteamIDs[i], authfalse) == 0
            {
                
    IsClientValid[client] = true
                return; 
            } 
        } 


    public 
    Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype

        if (
    IsClientValid[attacker]) 
        { 
            
    damage *= VALUE
            return 
    Plugin_Changed
        } 

        return 
    Plugin_Continue
     
  12. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    странно как-то

    R1KO
    Зачем ловить дамаг, если клиент не причастен к этому
    upd. Хм, это работает

    PHP:
    #include <sourcemod>
    #include <sdkhooks>

    new const String:hListSteamIDs[][] = {"STEAM_0:0:47497819""STEAM_2""STEAM_3"};

    #define SIZE sizeof(hListSteamIDs)
    #define VALUE 10.5

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

    public 
    OnClientPutInServer(client)
    {
        
    decl String:SteamID[32];
        if (
    GetClientAuthString(clientSteamID32))
        {
            
    IsClientValid[client] = false;
            
    SDKHook(clientSDKHook_OnTakeDamageOnTakeDamage);

            for (new 
    0SIZEi++)
            {
                if (
    strcmp(hListSteamIDs[i], SteamIDfalse) == 0)
                {
                    
    IsClientValid[client] = true;
                    break;
                }
            }
        }
    }

    public 
    Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
    {
        if (
    IsClientValid[attacker])
        {
            
    damage *= VALUE;
            return 
    Plugin_Changed;
        }

        return 
    Plugin_Continue;
    }
     
    Последнее редактирование: 12 янв 2015
    Дмитрий Иванов 1927199390 нравится это.
  13. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.982
    У меня когда-то из-за этого не работало. Пусть проверит и узнаем.
     
    Дмитрий Иванов 1927199390 нравится это.
  14. Дмитрий Иванов 1927199390

    Дмитрий Иванов 1927199390

    Сообщения:
    12
    Симпатии:
    0
    теперь работает))))))спасибо чуваки))))
     
  15. Дмитрий Иванов 1927199390

    Дмитрий Иванов 1927199390

    Сообщения:
    12
    Симпатии:
    0
    а можно ли сделать, чтоб она включилась по команде и выключалась?
    к примеру sm_alldm 1 включилась и sm_alldm 0 выключилась?
     
  16. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    PHP:
    #include <sourcemod>
    #include <sdkhooks>

    new const String:hListSteamIDs[][] = {"STEAM_0:0:47497819""STEAM_2""STEAM_3"};

    #define SIZE sizeof(hListSteamIDs)
    #define VALUE 10.5

    new bool:IsPluginEnabled false;

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

    public 
    OnPluginStart()
    {
        
    RegAdminCmd("sm_dmall"RCC_CallbackADMFLAG_ROOT);
    }
        
    public 
    OnClientPutInServer(client)
    {
        
    decl String:SteamID[32];
        if (
    GetClientAuthString(clientSteamID32))
        {
            
    IsClientValid[client] = false;
            
    SDKHook(clientSDKHook_OnTakeDamageOnTakeDamage);

            for (new 
    0SIZEi++)
            {
                if (
    strcmp(hListSteamIDs[i], SteamIDfalse) == 0)
                {
                    
    IsClientValid[client] = true;
                    break;
                }
            }
        }
    }

    public 
    Action:RCC_Callback(clientargs)
    {
        if (
    client 0)
        {
            
    ReplyToCommand(client"\x01\x03[SM] \x01Плагин %s", (IsPluginEnabled = !IsPluginEnabled) ? "включен" "выключен");
            
            for (new 
    1<= MaxClientsi++)
            {
                if (
    IsClientInGame(i))
                {
                    if (
    IsPluginEnabled)
                    {
                        
    OnClientPutInServer(i);
                    }
                    else
                    {
                        
    SDKUnhook(iSDKHook_OnTakeDamageOnTakeDamage)
                    }
                }
            }
        }

        return 
    Plugin_Handled;
    }

    public 
    Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
    {
        if (
    attacker <= MaxClients)
        {
            if (
    IsClientValid[attacker])
            {
                
    damage *= VALUE;
                return 
    Plugin_Changed;
            }
        }

        return 
    Plugin_Continue;
    }

    Добавлено через 21 час 46 минут
    Оффтоп
     
    Последнее редактирование: 13 янв 2015
    Дмитрий Иванов 1927199390 нравится это.
  17. Дмитрий Иванов 1927199390

    Дмитрий Иванов 1927199390

    Сообщения:
    12
    Симпатии:
    0

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


    Вот исходник
     
  18. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    Оффтоп
    Зачем он тебе вообще? ТС не нужен - в мусор. Пускай постоянно грузит свой сервер - дело личное.
     
  19. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    AlmazON
    Вроде как выяснили, что в если в цикле ловить хук лишь нужным клиентам, то работать оптимально не будет.

    Грузит? поподробнее
     
  20. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    Ты о чём? Просто хукать надо всех, а не только атакующего.
    Человека с указанным SteamID нет на сервере - каждый раз происходит хук при подключении, причём он и не отключается при дисконнекте (на нормальных скриптах должен быть).
    От каждого ранения проверяется функция... когда, опять же, не нужно вовсе (некому умножать дамаг). Нагрузка ощутимая.