廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 2099 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為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.068758 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言