Подкиньте код [урон за деньги]

Тема в разделе "Программирование / Скриптинг", создана пользователем pokypka20, 21 окт 2014.

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Видел на зомби моде интерестную вещь при нанесении урона начисляются деньги 1 ед. урона - 1$ подкиньте код, как это можно реализовать. Вытащить из zr не получилось.
     
  2. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.718
    Симпатии:
    458
    1) Берешь и достаешь демейдж нанесенный при player_hurt
    2) Берешь и выдаешь деньги значением нанесенного урона
    3) Берешь и ловишь профиты
     
  3. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Оффтоп
    ПРобуй этот https://forums.alliedmods.net/showthread.php?p=523385
     
    pokypka20 нравится это.
  4. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Не получается сделать, подскажите как правильно.
    PHP:
    #include <sourcemod>
    #include <sdktools>

    public OnPluginStart() 

        
    HookEvent("player_hurt"DamageEventEventHookMode_Post)


    public 
    Action:DamageEvent(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    attacker GetClientOfUserId(GetEventInt(event"attacker"));
        new 
    fMoney = (GetMoney(attacker) + GetEventInt(event"dmg_health"))
    }
     
    Sam_Fisher нравится это.
  5. AlmazON

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

    Сообщения:
    4.521
    Симпатии:
    1.971
    Не выдумывай.
    GetEntProp(client, Prop_Send, "m_iAccount") - это деньги игрока.
    SetEntProp(client, Prop_Send, "m_iAccount", money) - установка денег игроку (со значение money).
    Не забудь ограничить код проверкой на $16000 и более (как "антиспам").
     
  6. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Не пойму я как это зделать, второй час пытаюсь скомпилить и насчёт проверки не совсем понял. Если можно подсказку для новичков.. Как GetEntProp добавить и вообще что с ним делать не пойму. GetEntProp(client, Prop_Send, "m_iAccount", 16000) - это выдаст деньги игроку я так понимаю и нужно вместо GetEntProp(client, Prop_Send, "m_iAccount", damage) примерно так сделать, но как сформулировать и как получить значение damage не пойму. И проверка я так понимаю нужно брать проверять если денег > 16000 то return как то так вроде.
     
  7. R1KO

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

    Сообщения:
    5.982
    Симпатии:
    2.983
    PHP:
    #include <sourcemod>
    #include <sdktools>

    public OnPluginStart() 

        
    HookEvent("player_hurt"DamageEvent)


    public 
    DamageEvent(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    attacker GetClientOfUserId(GetEventInt(event"attacker"));
        if(
    attacker && attacker != GetClientOfUserId(GetEventInt(event"userid"))
        {
            new 
    iNewMoney GetEntProp(attackerProp_Send"m_iAccount") + GetEventInt(event"dmg_health");
            
    SetEntProp(attackerProp_Send"m_iAccount"iNewMoney 16000 16000:iNewMoney);
        }
     
    Последнее редактирование: 22 окт 2014
    Саша Шеин и pokypka20 нравится это.
  8. AlmazON

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

    Сообщения:
    4.521
    Симпатии:
    1.971
    Оффтоп
    Мда... Чтобы ни было - всё равно проходим все проверки и устанавливаем значение.
    PHP:
    public OnPluginStart() HookEvent("player_hurt"DamageEvent);

    public 
    DamageEvent(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    attacker GetClientOfUserId(GetEventInt(event"attacker"));
        if (
    attacker && GetClientOfUserId(GetEventInt(event"userid")) != attacker)
        {
            new 
    money GetEntProp(attackerProp_Send"m_iAccount");
            if (
    money 16000 && (money += GetEventInt(event"dmg_health")) < 16000SetEntProp(attackerProp_Send"m_iAccount"money);
        }
    }
    1) Если количество имеющихся денег больше 16000 - сразу же ничего не делаем.
    2) Если 1 меньше, но сумма с уроном более 16000 - ничего не делаем.
    3) Если 2 меньше, то даём эту самую сумму игроку.
    Поскольку "дамаг" за раз может превышать 440 единиц (здесь равносильно $440) и учитывая, что у игрока после покупок редко $0, то убив несколько противников, у нас уже будет $16000 (и скорей всего, до конца раунда). Так что, лучше сначала проверять кошелёк игрока - меньше по нагрузке выйдет.
     
    pokypka20 нравится это.
  9. R1KO

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

    Сообщения:
    5.982
    Симпатии:
    2.983
    AlmazON, свой код исправил. Мне кажется по моему лучше будет.
     
  10. MaEStro71

    MaEStro71

    Сообщения:
    165
    Симпатии:
    5
    30.06.2016(23.07.15).jpg
     
  11. 666FoX666

    666FoX666

    Сообщения:
    628
    Симпатии:
    60
  12. MaEStro71

    MaEStro71

    Сообщения:
    165
    Симпатии:
    5
    ожидаемый знак: ">", но найден "{"
    Я понятия не имею куда эту скобку пихать.
     
  13. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Забыл одну скобку.

    PHP:
    #include <sourcemod>
    #include <sdktools>

    public OnPluginStart()
    {
        
    HookEvent("player_hurt"DamageEvent)
    }

    public 
    DamageEvent(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    attacker GetClientOfUserId(GetEventInt(event"attacker"));
        if(
    attacker && attacker != GetClientOfUserId(GetEventInt(event"userid")))
        {
            new 
    iNewMoney GetEntProp(attackerProp_Send"m_iAccount") + GetEventInt(event"dmg_health");
            
    SetEntProp(attackerProp_Send"m_iAccount"iNewMoney 16000 16000:iNewMoney);
        }
     

    Вложения:

    • 111.smx
      Размер файла:
      3 КБ
      Просмотров:
      0
  14. 666FoX666

    666FoX666

    Сообщения:
    628
    Симпатии:
    60