廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3403 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
epic
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[1.6] 这两天写了个给僵尸加血的插件,遇到一个问题,百思不得其解
插件目的是让受伤的僵尸可以通过买道具(也就是M2菜单里的额外选项)来补回有一定上限的血(目前上限设定的是20000)。目前这个插件能工作,只是不知道为什么补血补得特别的快(从3000HP补到20000HP大概只用10秒),但我在插件里已经设置了每1秒补10血(iHealth += 10)(set_task(1.0, "Task_HealthRegen", id, "b")),不知道问题出在哪,请大家指点我,感谢
SMA如下:
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <zombieplague.inc>


new const g_item_name[] = { "自动补血 Made by epic" }
const g_item_cost = 5
new g_itemid_HealthRegen;
new PLUGIN_NAME[]      = "HPRegen epic"
new PLUGIN_AUTHOR[]      = "epic"
new PLUGIN_VERSION[]      = "2.8"

new bool:g_HPRegen[33]
public plugin_init()
{
     register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
    g_itemid_HealthRegen = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_ZOMBIE);
     register_forward(FM_PlayerPreThink, "Task_HealthRegen");
     register_event("ResetHUD", "Event_ResetHUD", "be");
     register_event("DeathMsg", "Event_DeathMsg", "a");
    register_event("HLTV", "EVENT_round_start", "a", "1=0", "2=0");
}

public client_connect(id) {
     g_HPRegen[id] = false
}

public Event_ResetHUD(id)
{
     if(!is_user_connected(id) || !is_user_alive(id)) {
           return PLUGIN_CONTINUE
     }
     
     if(g_HPRegen[id])
     {
           if(!task_exists(id)) {
                 set_task(1.0, "Task_HealthRegen", id, "b")
           }
     }
     return PLUGIN_CONTINUE
}

public Event_DeathMsg() {
     if(task_exists(read_data(2))) {
           remove_task(read_data(2))
     }
}

public Task_HealthRegen(id)
{
     if(!is_user_alive(id) || !is_user_connected(id) || !g_HPRegen[id])
     {
           if(task_exists(id)) {
                 remove_task(id)
           }
           return PLUGIN_CONTINUE
     }
     
     new iHealth = get_user_health(id)
     if(iHealth < 20000)
     {
           set_hudmessage(0, 255, 0, -1.0, 0.65, 0, 1.0, 2.0, 0.1, 0.1, 4)
           show_hudmessage(id,"<< !!Healing!! >>")
           emit_sound(id,CHAN_VOICE,"items/medshot4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
           message_begin(MSG_ONE, get_user_msgid("ScreenFade"), { 0, 0, 0 }, id)
           write_short(1<<10)
           write_short(1<<10)
           write_short(1<<12)
           write_byte(0)
           write_byte(0)
           write_byte(255)
           write_byte(50)
           message_end()
           
           iHealth += 10
           set_user_health(id, iHealth)

           if(get_user_health(id) > 20000)
          {
                emit_sound(id,CHAN_VOICE, "fvox/medical_repaired.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
                 set_user_health(id, 20000)
           }
     }
     return PLUGIN_CONTINUE
}
public zp_extra_item_selected(player, itemid)
{
     if (itemid == g_itemid_HealthRegen){

           g_HPRegen[player]++;
           client_print(player, print_chat, "You have now %d HPRegen", g_HPRegen[player]);
     }
}

public EVENT_round_start()
{
     for (new id; id <= 32; id++) g_HPRegen[id] = false;
}



獻花 x0 回到頂端 [樓 主] From:歐洲 | Posted:2008-11-19 22:10 |
牙京
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x148 鮮花 x155
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

很明顯的,,問題出在register_forward(FM_PlayerPreThink, "Task_HealthRegen");

我把
複製程式
register_forward(FM_PlayerPreThink, "Task_HealthRegen");
刪去
然後把
複製程式
public zp_extra_item_selected(player, itemid)
{
     if (itemid == g_itemid_HealthRegen){

           g_HPRegen[player]++;
           client_print(player, print_chat, "You have now %d HPRegen", g_HPRegen[player]);
     }
}

改成
複製程式
public zp_extra_item_selected(id, itemid)
{
     if (itemid == g_itemid_HealthRegen){

set_task(1.0,"Task_HealthRegen",id)
           g_HPRegen[id]++;
           client_print(id, print_chat, "You have now %d HPRegen", g_HPRegen[id]);
     }
}
最後我回到複製程式
public Task_HealthRegen(id)
加入
複製程式
set_task(1.0,"Task_HealthRegen",id)
這樣就可以了!


獻花 x1 回到頂端 [1 樓] From:香港網上行 | Posted:2008-11-21 09:05 |
epic
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用kevin741於2008-11-21 09:05(1樓)發表的 :
很明顯的,,問題出在register_forward(FM_PlayerPreThink, "Task_HealthRegen");
我把
複製程式
register_forward(FM_PlayerPreThink, "Task_HealthRegen");
刪去
然後把
.......

太感谢了,晚上到家我试试,谢谢您指点我


獻花 x0 回到頂端 [2 樓] From:天津 | Posted:2008-11-21 10:15 |
牙京
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x148 鮮花 x155
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用epic於2008-11-21 10:15(2樓)發表的 :


太感谢了,晚上到家我试试,谢谢您指点我

不客氣,,其實我也寫了一個更簡單的,,待我回家才post出來 表情


獻花 x0 回到頂端 [3 樓] From:香港網上行 | Posted:2008-11-21 12:05 |
epic
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用kevin741於2008-11-21 12:05(3樓)發表的 :


不客氣,,其實我也寫了一個更簡單的,,待我回家才post出來 表情


那太好了,那我晚上等你的SMA吧.... 表情


獻花 x0 回到頂端 [4 樓] From:天津 | Posted:2008-11-21 13:34 |
牙京
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x148 鮮花 x155
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用epic於2008-11-21 13:34(4樓)發表的 :
 

那太好了,那我晚上等你的SMA吧.... 表情

這個是你的,,可以用的了
複製程式
#include <amxmodx>
#include <fun>
#include <zombieplague.inc>


new const g_item_name[] = { "自动补血 Made by epic" }
const g_item_cost = 5
new g_itemid_HealthRegen;
new PLUGIN_NAME[]      = "HPRegen epic"
new PLUGIN_AUTHOR[]      = "epic"
new PLUGIN_VERSION[]      = "2.8"

new bool:g_HPRegen[33]
public plugin_init()
{
     register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
    g_itemid_HealthRegen = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_ZOMBIE);

     register_event("ResetHUD", "Event_ResetHUD", "be");
     register_event("DeathMsg", "Event_DeathMsg", "a");
    register_event("HLTV", "EVENT_round_start", "a", "1=0", "2=0");
}

public client_connect(id) {
     g_HPRegen[id] = false
}

public Event_ResetHUD(id)
{
     if(!is_user_connected(id) || !is_user_alive(id)) {
           return PLUGIN_CONTINUE
     }
     
     if(g_HPRegen[id])
     {
           if(!task_exists(id)) {
                 set_task(1.0, "Task_HealthRegen", id, "b")
           }
     }
     return PLUGIN_CONTINUE
}

public Event_DeathMsg() {
     if(task_exists(read_data(2))) {
           remove_task(read_data(2))
     }
}

public Task_HealthRegen(id)
{
     if(!is_user_alive(id) || !is_user_connected(id) || !g_HPRegen[id])
     {
           if(task_exists(id)) {
                 remove_task(id)
           }
           return PLUGIN_CONTINUE
     }
     
     new iHealth = get_user_health(id)
     if(iHealth < 20000)
     {
           set_hudmessage(0, 255, 0, -1.0, 0.65, 0, 1.0, 2.0, 0.1, 0.1, 4)
           show_hudmessage(id,"<< !!Healing!! >>")
           emit_sound(id,CHAN_VOICE,"items/medshot4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
           message_begin(MSG_ONE, get_user_msgid("ScreenFade"), { 0, 0, 0 }, id)
           write_short(1<<10)
           write_short(1<<10)
           write_short(1<<12)
           write_byte(0)
           write_byte(0)
           write_byte(255)
           write_byte(50)
           message_end()
           
           iHealth += 10
           set_user_health(id, iHealth)

set_task(1.0,"Task_HealthRegen",id)

           if(get_user_health(id) > 20000)
          {
                emit_sound(id,CHAN_VOICE, "fvox/medical_repaired.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
                 set_user_health(id, 20000)
           }
     }
     return PLUGIN_CONTINUE
}
public zp_extra_item_selected(id, itemid)
{
     if (itemid == g_itemid_HealthRegen){

set_task(1.0,"Task_HealthRegen",id)
           g_HPRegen[id]++;
           client_print(id, print_chat, "You have now %d HPRegen", g_HPRegen[id]);
     }
}

public EVENT_round_start()
{
     for (new id; id <= 32; id++) g_HPRegen[id] = false;
}

這是我的做法,,交流一下吧@_@

複製程式
#include <amxmodx>
#include <fun>
#include <zombieplague>

new g_itemid999
new cvar_hp[] = "kevin_hp"    

public plugin_init()
{
       register_plugin("[ZP] Additional Extra Items", "0.1", "Example")
       register_cvar(cvar_hp, "10");
       // Register the new items and store their IDs for reference
       g_itemid999 = zp_register_extra_item("My Extra Item 1", 5, ZP_TEAM_ZOMBIE)
}

// Item Selected forward
public zp_extra_item_selected(id, itemid)
{
       // check if the selected item matches any of our registered ones
       if (itemid == g_itemid999)
                     client_print(id, print_chat, "你購買了自我復原!");
set_task(1.0,"extra_hpppp",id)
}
public extra_hpppp(id) {  
new extra_hp = get_cvar_num(cvar_hp)  
new maxhp = 20000 
new hp = get_user_health(id)   
if (is_user_alive(id) && (hp < maxhp) && zp_get_user_zombie(id)) { 
set_user_health(id, hp + extra_hp)
set_task(1.0,"extra_hpppp",id)
}
else {
if (is_user_alive(id) && (hp > maxhp))
remove_task(id)
}
}  


獻花 x0 回到頂端 [5 樓] From:香港網上行 | Posted:2008-11-21 17:45 |
epic
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用kevin741於2008-11-21 17:45(5樓)發表的 :

這個是你的,,可以用的了
[code]#include <amxmodx>
#include <fun>
#include <zombieplague.inc>
.......


十分感动。希望能和你成为朋友

我的QQ:37222572,如果您不介意,可以加我为好友


獻花 x0 回到頂端 [6 樓] From:歐洲 | Posted:2008-11-21 17:58 |
牙京
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x148 鮮花 x155
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用epic於2008-11-21 17:58(6樓)發表的 :
 

十分感动。希望能和你成为朋友

我的QQ:37222572,如果您不介意,可以加我为好友

我只有MSN-.-
你有MSN嗎@@??


獻花 x0 回到頂端 [7 樓] From:香港網上行 | Posted:2008-11-21 18:37 |
epic
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用kevin741於2008-11-21 18:37(7樓)發表的 :


我只有MSN-.-
你有MSN嗎@@??


我没有MSN


獻花 x0 回到頂端 [8 樓] From:天津 | Posted:2008-11-26 13:32 |
w5014560
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x7 鮮花 x9
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

插件代码是Upgrades mod 2.0


獻花 x0 回到頂端 [9 樓] From:安徽 | Posted:2009-05-21 17:16 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.088452 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言