SDKTools Hook_OnTakeDamage

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

  1. Z3R0M1ND

    Z3R0M1ND

    Сообщения:
    25
    Симпатии:
    0
    [SM] Plugin encountered error 15: Array index is out of bounds

    PHP:
    public Action:Hook_OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weaponFloat:damageForce[3], Float:damagePosition[3], damagecustom)
    {
        if (
    g_AFKModElabled && attacker != 0)
        {
            if (
    isPlayersAFK[victim] && IsValidPlayer(victim) || isPlayersAFK[attacker] && IsValidPlayer(attacker))
            {
                
    damage 0.0;
                return 
    Plugin_Changed;
            }
        }
        
        return 
    Plugin_Continue;
    }
    PHP:
    327: if (isPlayersAFK[victim] && IsValidPlayer(victim) || isPlayersAFK[attacker] && IsValidPlayer(attacker))
    PHP:
    new bool:isPlayersAFK[MAXPLAYERS 1];
     
  2. AlmazON

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

    Сообщения:
    4.517
    Симпатии:
    1.969
    if (g_AFKModElabled && 0 < attacker <= MaxClients)
     
    Z3R0M1ND нравится это.
  3. Z3R0M1ND

    Z3R0M1ND

    Сообщения:
    25
    Симпатии:
    0
    //close
     
  4. Александр Смирнов 8452246

    Александр Смирнов 8452246

    Сообщения:
    150
    Симпатии:
    28
    Не делай в одну строчку. С точки зрения красоты - да, с точки зрения кода - зло.
     
  5. AlmazON

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

    Сообщения:
    4.517
    Симпатии:
    1.969
    Обоснуй. Здесь нет else if или else, где действительно в одну строчку могло испортить код.
    Ладно, тогда уж делаем так:
    PHP:
    public Action:Hook_OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weaponFloat:damageForce[3], Float:damagePosition[3], damagecustom

        if (
    g_AFKModElabled)
        {
            if (
    attacker <= MaxClients)
            {
                if (
    isPlayersAFK[victim])
                {
                    if (
    IsValidPlayer(victim) || isPlayersAFK[attacker])
                    {
                        if (
    IsValidPlayer(attacker))
                        {
                            
    damage 0.0;
                            return 
    Plugin_Changed;
                        }
                    }
                }
            }
        }
        return 
    Plugin_Continue
    :-D Что такое? Это же такой "добротный" код! :lol:
     
  6. Александр Смирнов 8452246

    Александр Смирнов 8452246

    Сообщения:
    150
    Симпатии:
    28
    Ну ты же в курсе - тебе доказать ничего не возможно. Просто - поверь на слово. А свой совет я Z3R0M1ND даю.

    P.S. ВаУ, AlmazON, для тебя еще не все потеряно! Суть ты понял, но пока проблема с последовательностью проверок.

    P.S. Упс, перехвалил тебя. Свои слова про твой прогресс забираю назад.