设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1249|回复: 10

[求助] 会AMXX编程的大虾进来 [复制链接]

Rank: 2

帖子
226
精华
0
声望
228 点
金币
16 Mold
被赞许
0 次
注册时间
2010-5-2
发表于 2010-11-20 19:02:53 |显示全部楼层
我修改了一个武器插件,可是发现无论如何也没发改变武器的伤害力,请问有办法解决吗?
附上源码:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <xs>

#define SUPPORT_CZBOT

#if defined SUPPORT_CZBOT
new cvar_botquota
new bool:BotHasDebug = false
#endif

#define TASK_RESET_WEAPON        10397

co***** OFFSET_FlNextPrimaryAttack = 46

co***** OFFSET_LINUX_WEAPONS = 4

co***** PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_AK47)
new co***** M14_V_Model[] = { "models/v_m14.mdl" }
new co***** M14_P_Model[] = { "models/p_m14.mdl" }
new co***** M14_W_Model[] = { "models/w_m14.mdl" }

new cvar_dmg_multiplier, cvar_knock_power, cvar_fire_rate, cvar_bullet_tracer
new g_beamSpr

new g_maxplayers
new bool:hasM14[33] = { false, ... }
new user_clip[33] = { 0, ... }, user_bpammo[33] = { 0, ... }
new user_drop[33] = { -1, ... }, Float:drop_time[33] = { 0.0, ... }
new bool:user_shoot[33] = { false, ... }

public plugin_init()
{
        register_clcmd("say /buy_M14","M14")
        register_cvar("M14cost","3300")
        register_plugin("Add New Weapon", "1.0", "Haunt.Skua")
       
        cvar_dmg_multiplier = register_cvar("M14_dmgmultiplier", "9")
        cvar_knock_power = register_cvar("M14_knockpower", "50")
        cvar_fire_rate = register_cvar("M14_firerate", "1.23")
       
        RegisterHam(Ham_TakeDamage, "player", "fw_Player_TakeDamage")
        RegisterHam(Ham_TraceAttack, "player", "fw_Player_TraceAttack")
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_ak47", "fw_ak47_PriAttack")
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_ak47", "fw_ak47_PriAttack_Post", 1)
       
        register_forward(FM_SetModel, "fw_SetModel")
        register_forward(FM_Touch, "fw_Touch")
       
        register_event("CurWeapon", "event_cur_weapon", "be", "1=1")
        register_event("HLTV", "event_rou*****art", "a", "1=0", "2=0")
       
        g_maxplayers = get_maxplayers()
       
        #if defined SUPPORT_CZBOT
        cvar_botquota = get_cvar_pointer("bot_quota")
        #endif
       
        new Float:maptime = get_cvar_float("mp_timelimit")
        if (maptime == 0.0)
                maptime = 15.0
        new Float:anntime = 60.0 * 5.0 // 5 minutes
        if (maptime < 5.0)
                anntime = maptime / 3.0
        set_task(anntime, "Announcement", 0, "", 0, "b")
}

public plugin_precache()
{
        precache_model(M14_V_Model)
        precache_model(M14_P_Model)
        precache_model(M14_W_Model)
       
        g_beamSpr = precache_model("sprites/zbeam4.spr")
}

public Announcement(id) {
        client_print(id, print_chat, "鎵€鏈夌帺瀹跺彲璨稭14EBR [say /buy_M14]")
}

public M14(id)
{
        new M14cost = get_cvar_num("M14cost")
        new money = cs_get_user_money(id)
       
        if(!is_user_alive(id))
        {
                client_print(id,print_chat,"娲昏憲鎵嶈兘璨稭14EBR^n")
                return
        }
       
        if(hasM14[id])
        {
                client_print(id,print_chat,"浣犲凡缍撴湁M14EBR浜哵n")
                cs_set_user_bpammo(id, CSW_AK47, 90)
                return
        }
       
        if(money < M14cost)
        {
                client_print(id,print_chat,"鐝鹃噾涓嶈冻^n")
                return
        }
       
        cs_set_user_money(id,money-M14cost)
        client_print(id,print_chat,"浣犺卜浜哅14EBR^n")
        user_drop_ak47(id)
        hasM14[id] = true
        fm_give_item(id, "weapon_ak47")
        cs_set_user_bpammo(id, CSW_AK47, 90)
        engclient_cmd(id, "weapon_ak47")
}

user_drop_ak47(id)
{
        if (user_has_weapon(id, CSW_AK47))
        {
                engclient_cmd(id, "drop", "weapon_ak47")
        }
}

public fw_Player_TakeDamage(victim, attacker, Float:damage, damage_type)
{
        static Float:damage_multiplier
        damage_multiplier = get_pcvar_float(cvar_dmg_multiplier)
        if (damage_multiplier <= 0.0)
                return HAM_IGNORED;
       
        if (victim == attacker || !is_user_connected(attacker))
                return HAM_IGNORED;
       
        if (!(damage_type & DMG_BULLET))
                return HAM_IGNORED;
       
        if (!hasM14[attacker] || (get_user_weapon(attacker) != CSW_AK47))
                return HAM_IGNORED;
       
        SetHamParamFloat(4, damage * damage_multiplier)
       
        return HAM_IGNORED;
}

public fw_Player_TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damage_type)
{
        static Float:knockpower
        knockpower = get_pcvar_float(cvar_knock_power)
        if (knockpower <= 0.0)
                return HAM_IGNORED;
       
        if (victim == attacker || !is_user_connected(attacker))
                return HAM_IGNORED;
       
        if (!(damage_type & DMG_BULLET) || !get_cvar_num("cs_knockback"))
                return HAM_IGNORED;
       
        if (!hasM14[attacker] || (get_user_weapon(attacker) != CSW_AK47))
                return HAM_IGNORED;
       
        static victimflags, Float:knockduck
        victimflags = pev(victim, pev_flags)
        knockduck = get_cvar_float("cs_knockback_ducking")
       
        if (knockduck == 0.0 && (victimflags & FL_DUCKING) && (victimflags & FL_ONGROUND))
                return HAM_IGNORED;
       
        static Floatrigin1F[3], Floatrigin2F[3]
        pev(victim, pev_origin, origin1F)
        pev(attacker, pev_origin, origin2F)
       
        if (get_distance_f(origin1F, origin2F) > get_cvar_float("cs_knockback_distance"))
                return HAM_IGNORED;
       
        static Float:velocity[3]
        pev(victim, pev_velocity, velocity)
       
        if (get_cvar_num("cs_knockback_damage"))
                xs_vec_mul_scalar(direction, damage, direction)
       
        if (knockpower > 0.0 && get_cvar_num("cs_knockback_power"))
                xs_vec_mul_scalar(direction, knockpower, direction)
       
        if ((victimflags & FL_DUCKING) && (victimflags & FL_ONGROUND))
                xs_vec_mul_scalar(direction, knockduck, direction)
       
        xs_vec_add(velocity, direction, direction)
       
        if (!get_cvar_num("cs_knockback_zvel"))
                direction[2] = velocity[2]
       
        set_pev(victim, pev_velocity, direction)
       
        SetHamParamVector(4, Float:{0.0, 0.0, 0.0})
       
        return HAM_IGNORED;
}

附上源文件:


问题出在哪里?请高手指正!
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 3Rank: 3

帖子
0
精华
0
声望
110 点
金币
40 Mold
被赞许
3 次
注册时间
2009-6-18
发表于 2010-11-20 19:40:25 |显示全部楼层
其实你可以用别的插件来改的
拿走源码帮你看看..最近比较忙

使用道具 举报

Rank: 5Rank: 5

帖子
247
精华
0
声望
1053 点
金币
129 Mold
被赞许
2 次
注册时间
2008-9-15
发表于 2010-11-20 20:15:21 |显示全部楼层
你把源码用代码弄起来..不然会屏蔽掉一些源码的

源码就貌似没什么问题,你是怎么测试伤害的?
如果是跟ZBOT [就是3248那些自带的BOT]的话..用你那把枪后对ZBOT造成伤害还是原来的..原因是作者将对ZBOT的伤害不允许增加或减少
如果是跟真人测试的话..我也不知道错哪里了..

希望对你有帮助..

使用道具 举报

Rank: 2

帖子
226
精华
0
声望
228 点
金币
16 Mold
被赞许
0 次
注册时间
2010-5-2
发表于 2010-11-21 10:20:39 |显示全部楼层
额……我确实是用ZBOT进行测试的……
那怎样修改才能使这武器对ZBOT的攻击加成也同样有效呢?
请楼上的大虾多指点指点,谢谢

使用道具 举报

Rank: 2

帖子
226
精华
0
声望
228 点
金币
16 Mold
被赞许
0 次
注册时间
2010-5-2
发表于 2010-11-21 10:23:48 |显示全部楼层
回复 3# 543658883


    可以提供一些具体细节吗?就是哪些部分控制着对ZBOT的伤害?

使用道具 举报

头像被屏蔽

禁止发言

帖子
667
精华
0
声望
558 点
金币
1135 Mold
被赞许
3 次
注册时间
2009-8-2
发表于 2010-11-21 10:55:02 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

使用道具 举报

头像被屏蔽

禁止发言

帖子
667
精华
0
声望
558 点
金币
1135 Mold
被赞许
3 次
注册时间
2009-8-2
发表于 2010-11-21 10:57:10 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

使用道具 举报

Rank: 5Rank: 5

帖子
247
精华
0
声望
1053 点
金币
129 Mold
被赞许
2 次
注册时间
2008-9-15
发表于 2010-11-25 20:04:50 |显示全部楼层
在RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_ak47", "fw_ak47_PriAttack_Post", 1)
另起一行输入:
RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")

然后在
public fw_Player_TakeDamage(victim, attacker, Float:damage, damage_type)
{
        static Float:damage_multiplier
        damage_multiplier = get_pcvar_float(cvar_dmg_multiplier)
        ..................        
}

这里输入
public Bot_Debug(id)
{

......这里写入代码

}
帮你就那么多,代码那里不会...
LS很缺德..会却不帮..

使用道具 举报

Rank: 2

帖子
226
精华
0
声望
228 点
金币
16 Mold
被赞许
0 次
注册时间
2010-5-2
发表于 2010-11-26 19:27:06 |显示全部楼层
失败了……
代码如下:
  1. new Debug
  2. public client_putinserver(id)
  3. {  
  4.           
  5.    if(Debug == 1)return
  6.    new classname[32]
  7.    pev(id,pev_classname,classname,31)
  8.    if(!equal(classname,"player"))
  9.    {
  10.          Debug =1
  11.          set_task(1.0,"Bot_Debug",id)
  12.    }
  13. }
  14. public Bot_Debug(id)
  15. {
  16.         RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
  17. }
复制代码

使用道具 举报

Rank: 2

帖子
226
精华
0
声望
228 点
金币
16 Mold
被赞许
0 次
注册时间
2010-5-2
发表于 2010-11-26 19:32:13 |显示全部楼层
楼上几位前辈帮帮小弟吧,我实在不知问题出在哪里……
源代码里似乎包含了botdebug,不过好像是只对CZBOT有效……
怎么改才能成功啊……
求详解!
或者能把改好的m14.sma发上来,小弟感激不尽!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部