广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 2095 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
caution222
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x15 鲜花 x34
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x1
[1.6][插件] sma问题
我想在这里加等级 加升了1等级加1hp 2等级加2hp 我想知道要加什么- -

 

/*=======================================

---------------------------------
   -*- oN. Level System v1.0 -*-
---------------------------------
                     By:oN.

========================================*/

//先Include左先.
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta>
#include <hamsandwich>

/*=======================================*/

//一些参数.
new g_xp[33]         // 玩家的经验值
new g_level[33]      //  玩家的等级
new g_damage[33] //  玩家的给予伤害累积
new g_vault           // Save & Load 既野

/*==========================================
[Plugin Init]
===========================================*/

public plugin_init()
{
          // 注册插件
          register_plugin("[oN.] Level System", "1.0", "oN.")

          // Forwards
          register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
          RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
          RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")

          // Save xp 既野
          // g_vault 等于 打开LevelSystem这个nvault档.
          g_vault = nvault_open("LevelSystem")
}

/*===============================================
[Plugin Customization]
===============================================*/

// Ham 既 得到伤害 既 Forward (inflictor = weapon)
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
            // 如果 攻击者 是 伤害者 (即自残) 或者 攻击者并没有连接
            if (attacker == victim  || !is_user_connected(attacker))
                          return HAM_IGNORED     // 返回

            // 把 攻击者给予的伤害 加落 攻击者的给予伤害累积 度
            g_damage[attacker] += damage

            // 如果 攻击者的给予伤害累积 大于 或 等于 1000
            if (g_damage[attacker] >= 1000)
            {
                    g_damage[attacker] -= 1000  // 攻击者的给予伤害累积 减 1000
                    g_xp[attacker] += 100    // 攻击者的经验值 加 100

                    // 在攻击者的正中央 说 累积伤害1000 +100XP
                    client_print(attacker, print_center, "累积伤害1000 +100XP")
            }
           
            return HAM_IGNORED
}

// Ham 既 杀左人 既 Forward
public fw_PlayerKilled(victim, attacker, shouldgib)
{
        // 如果 攻击者 是 伤害者 (即自杀) 或 攻击者并没有连接
        if (attacker == victim  || !is_user_connected(attacker))
                 return HAM_IGNORED      //返回

        // 攻击者的经验值 + 100
        g_xp[attacker] += 100

        // 在攻击者的正中央 说 杀敌 +100XP
        client_print(attacker, print_center, "杀敌 +100XP")

        return HAM_IGNORED
}

// 呢个好难解释, 大约系 监查玩家做紧一d野 既 Forward
public fw_PlayerPreThink(id)
{
           // 下面果句有用脑谂谂, 有点乱.
           // 当 玩家的经验值 大于 或 等于 ((玩家的等级 + 1) 乘以 10000)
           if (g_xp[id] >= ((g_level[id] + 1) * 10000))
                   g_level[id] ++        // 玩家的等级 + 1
}

// 当玩家进入伺服器 的Function
public client_putinserver(id)
{
         LoadData(id)      // 去这个Function (载入 资料)
}

// 当玩家离开伺服器 的Function
public client_disconnect(id)
{
         SaveData(id)      // 去这个Function (储存 资料)
}

// 储存 玩家 资料
public SaveData(id)
{
         new name[35], vaultkey[64], vaultdata[256]

         // 将玩家既名字 代入 name
         get_user_name(id, name, 34)

         // 组织 vaultkey 做 %s-LevelInfo, 而%s代表 name
         format(vaultkey, 63, "%s-LevelInfo", name)
        
         // 组织 vaultdata 做 %i#%i#%i# ,
         // 它们代表 玩家的经验值, 玩家的等级, 玩家的给予伤害累积
         format(vaultdata, 255, "%i#%i#%i#", g_xp[id], g_level[id], g_damage[id])

         // 设定 g_vault, 主题系 vaultkey, 资料系 vaultdata
         // 大概系咁意思....
         nvault_set(g_vault, vaultkey, vaultdata)

         return PLUGIN_CONTINUE
}

// 载入 玩家 资料
public LoadData(id)
{
          new name[35], vaultkey[64], vaultdata[256]

          // 将玩家既名字 代入 name
          get_user_name(id,name,34)

          // 和上面的意思一样
          format(vaultkey, 63, "%s-LevelInfo", name)
          format(vaultdata, 255, "%i#%i#%i#", g_xp[id], g_level[id], g_damage[id])

          // 拿 g_vault 中 vaultkey主题 的 vaultdata资料
          nvault_get(g_vault, vaultkey, vaultdata, 255)

          // 移开 vaultdata 中的 # 和 空格
          replace_all(vaultdata, 255, "#", " ")

          new playerxp[32], playerlevel[32], playerdamage[32]
         
          // 解析(唔知系唔系咁解-.-) vaultdata 为 playerxp, playerlevel, playerdamage
          parse(vaultdata, playerxp, 31, playerlevel, 31, playerdamage, 31)

          // 玩家的经验值 变做 playerxp(转换成数字)
          g_xp[id] = str_to_num(playerxp)

          // 玩家的等级 变做 playerlevel(转换成数字)
          g_level[id] = str_to_num(playerlevel)

          // 玩家的给予伤害累积 变做 playerdamage(转换成数字)
          g_damage[id] = str_to_num(playerdamage)

          return PLUGIN_CONTINUE
}

/*=============================================
[End.]
==============================================*/



正在准备CS1.6灾厄之章影片@_@
献花 x0 回到顶端 [楼 主] From:香港网上行 | Posted:2010-07-19 17:33 |
a7811311622 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章 社区建设奖
头衔:我…在工作了…我…在工作了…
版主
级别: 版主 该用户目前不上站
版区: CS提问区
推文 x771 鲜花 x2152
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 caution222 于 2010-07-19 17:33 发表的 sma问题: 到引言文
我想在这里加等级 加升了1等级加1hp 2等级加2hp 我想知道要加什么- -
 
/*=======================================
---------------------------------
   -*- oN. Level System v1.0 -*-
.......

总之…我想先吐槽上面解释的「(inflictor = weapon)」这句…这句解释是错的…

至于升级时加HP的改法就只是在「public fw_PlayerKilled」里面加入:
复制程式
 
        if (g_xp[attacker] >= ((g_level[attacker] + 1) * 10000)) 
                set_pev(attacker,pev_health,pev(attacker,pev_health) + (g_level[attacker] + 1)) 

这段就解决了…表情


[ 此文章被a7811311622在2010-07-20 16:54重新编辑 ]


尚无签名,欢迎 [新增个性化签名]
献花 x1 回到顶端 [1 楼] From:台湾中华电信 | Posted:2010-07-19 18:50 |
a7811311622 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章 社区建设奖
头衔:我…在工作了…我…在工作了…
版主
级别: 版主 该用户目前不上站
版区: CS提问区
推文 x771 鲜花 x2152
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你可不可以帮我改- - 我不知道要写什么- - 升级时加1hp 我想左中间下方显示你的等级
例如:等级: 1 l 血量: 101 l 经验: 20 l
表情
在「public fw_PlayerPreThink」里面加入:
复制程式
           static Float:last_check_time
           if (get_gametime() - last_check_time >= 0.1)
           {
                   last_check_time = get_gametime()
                   set_hudmessage(255, 255, 255, 0.02, 0.9, 0, 6.0, 1.1, 0.0, 0.0, -1)
                   show_hudmessage(id,"等级: %d | 血量: %d | 经验: %d |", g_level[id], get_user_health(id), g_xp[id])
           }


尚无签名,欢迎 [新增个性化签名]
献花 x1 回到顶端 [2 楼] From:台湾中华电信 | Posted:2010-07-20 11:17 |
calove00
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x171 鲜花 x99
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

复制程式
public plugin_init()
{
       // xxxxx
       RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
}


public fw_PlayerSpawn_Post(id)
{
    if (!is_user_alive(id))
        return

    g_damage[id] = 0

    fm_set_user_health(id, get_user_health(id) + g_level[id]*1)

}


stock fm_set_user_health(id, health)
{
    (health > 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
}


献花 x0 回到顶端 [3 楼] From:香港有线宽频 | Posted:2010-07-21 01:12 |
a7811311622 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章 社区建设奖
头衔:我…在工作了…我…在工作了…
版主
级别: 版主 该用户目前不上站
版区: CS提问区
推文 x771 鲜花 x2152
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 calove00 于 2010-07-21 01:12 发表的 : 到引言文
复制程式
public plugin_init() 
{ 
       // xxxxx 
       RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1) 
} 


public fw_PlayerSpawn_Post(id) 
{ 
    if (!is_user_alive(id)) 
        return 

    g_damage[id] = 0 

    fm_set_user_health(id, get_user_health(id) + g_level[id]*1) 

} 


stock fm_set_user_health(id, health) 
{ 
    (health > 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); 
} 

请问…你在写什么…?表情
「重生」≠「 升级」吧…表情


尚无签名,欢迎 [新增个性化签名]
献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2010-07-21 11:59 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.059207 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言