關於BOT的問題,求大大解答~~

Home Home
引用 | 編輯 z2352671213
2014-08-19 20:16
樓主
推文 x0
我的ZP伺服器裝了個人類升級插件。

複製程式
    ……
    RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
    ……
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    // 插件开关
    if (!g_pluginenabled) return HAM_IGNORED;
    
    if (victim == attacker || !is_user_connected(attacker))
        return HAM_IGNORED;
    // 如果是人类攻击
    if(!zp_get_user_zombie(attacker))
    {
        // 攻击倍数
        if(g_human_level[attacker][HLU_DAMAGE])
            damage *=float(g_human_level[attacker][HLU_DAMAGE])*1.2
        
        //如果满级则不增加经验
        if(g_human_level[attacker][HLU_LEVEL] < sizeof LEVELSCORE-1)
        {
            // 储存伤害值
            g_damagedealt[attacker] += floatround(damage)
            
            // 经验值增加
            while (g_damagedealt[attacker] > hlu_damage_reward)
            {
                if(get_user_flags(attacker) & ADMIN_RESERVATION)
                {
                    g_human_level[attacker][HLU_EXPERIENCE] += floatround(float(hlu_experience) * hlu_vip) // VIP获得经验倍数
                }else{
                    g_human_level[attacker][HLU_EXPERIENCE] += hlu_experience // 普通用户获得经验
                }
                g_damagedealt[attacker] -= hlu_damage_reward
            }
            
            for(new i = 0; i < sizeof LEVELSCORE; i++)
            {
                if(g_human_level[attacker][HLU_EXPERIENCE]<LEVELSCORE[i])
                {
                    if(i>0)
                    {
                        g_human_level[attacker][HLU_LEVEL]         = i;
                        g_human_level[attacker][HLU_EXPSCORE]    = g_human_level[attacker][HLU_EXPERIENCE] - LEVELSCORE[i-1]; // 当前经验值
                        g_human_level[attacker][HLU_EXPNEED]     = LEVELSCORE[i] - LEVELSCORE[i-1]; // 升级所需经验值
                    }else{
                        g_human_level[attacker][HLU_EXPNEED]     = 100;
                        g_human_level[attacker][HLU_EXPSCORE]    = g_human_level[attacker][HLU_EXPERIENCE];
                    }
                    g_human_level[attacker][HLU_EXPRATE] = floatround(float(g_human_level[attacker][HLU_EXPSCORE]) / float(LEVELSCORE[i] - LEVELSCORE[i-1]) * 100.0) // 升级百分比
                    break;
                }
            }
        }
        SetHamParamFloat(4, damage)
        check_leveling_up(attacker); // 检查是否升级了
        return HAM_IGNORED;
    }
    
    SetHamParamFloat(4,damage)
    return HAM_HANDLED
}

  ……

但是我裝到伺服器裏後,攻擊BOT(不是PODBOT)發現經驗根本不會增加。
只有攻擊PODBOT或者真人,經驗才會增加。

有大大知道這是為什麼嗎?為什麼攻擊CS1.6自帶的BOT不增加經驗?


獻花 x0
引用 | 編輯 fouury
2014-08-21 17:17
1樓
  
複製程式
new g_czbot

public client_putinserver(id)
{
       new classname[32]
       pev(id, pev_classname, classname, 31)
       

       if (!equal(classname, "player") && !g_czbot)
       {
              g_czbot = true
              set_task(0.5, "registerham_from_czbot", id)
       }
}

public registerham_from_czbot(id)
{
        RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
}


應該吧.

獻花 x0
引用 | 編輯 z2352671213
2014-08-21 23:16
2樓
  
下面是引用 fouury 於 2014-08-21 17:17 發表的 : 到引言文
複製程式
new g_czbot

public client_putinserver(id)
{
       new classname[32]
       pev(id, pev_classname, classname, 31)
       

       if (!equal(classname, "player") && !g_czbot)
       {
              g_czbot = true
              set_task(0.5, "registerham_from_czbot", id)
       }
}

public registerham_from_czbot(id)
{
        RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
}


應該吧.

謝謝大大!!

獻花 x0