廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3052 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
55331200
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x24 鮮花 x15
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[1.6] [ZP] 限制VIP道具問題
請問如何把一種道具限制要權限才可購買呢?
例如:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define SUPPORT_BOT_TO_USE

new g_laserspr, g_bloodspr
new g_haha
new g_entity_damage, g_entity_chance
new g_cost
new bool:Bought[33]

public plugin_init()
{
     register_plugin("[ZP] Extra: 致命攻擊", "1.0", "MyChat數位男女會員:Rubbish-Nec")
     RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
     register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
     register_event("DeathMsg", "event_Death", "a")
     
     g_cost = register_cvar("zp_da_cost", "1")
     
     g_entity_damage = register_cvar("zp_da_entity_damage", "2.5")
     g_entity_chance = register_cvar("zp_da_entity_chance", "10")
     
     g_haha = zp_register_extra_item("致命攻擊", get_pcvar_num(g_cost), ZP_TEAM_HUMAN)
}

public plugin_precache()
{
     g_laserspr = precache_model("sprites/white.spr")
     g_bloodspr = precache_model("sprites/blood.spr")
}

public zp_extra_item_selected(id, itemid)
{
     if (itemid == g_haha)
     {
           if (Bought[id])
           {
                 zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + get_pcvar_num(g_cost))
                 client_print(id, print_chat, "[ZP] 你已經買了致命攻擊。")
           }
           else
           {
                 client_print(id, print_chat, "[ZP] 你買了致命攻擊,攻擊敵人有機會造成更大傷害。")
                 Bought[id] = true
           }
     }
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
     if (victim != attacker && is_user_connected(attacker))
     {
           if (!zp_get_user_zombie(attacker) && zp_get_user_zombie(victim))
           {
                 if (Bought[attacker])
                 {
                       if (random_num(1,100) <= get_pcvar_num(g_entity_chance))
                       {
                             static origin[3]
                             get_user_origin(victim, origin, 0)
                             show_laser(attacker, origin)
                             //particle_burst_effect(origin)
                             create_blood(origin)
                             screen_shake(victim, 4, 2, 5)
                             
                             damage *= get_pcvar_num(g_entity_damage)
                             SetHamParamFloat(4, damage)
                       }
                 }
           }
     }
}

public zp_user_infected_post(id, infector)
{
     Bought[id] = false
}

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

public client_disconnect(id)
{
     Bought[id] = false
}

public event_Death()
{
     new id = read_data(2)
     
     if (!(1 <= id <= get_maxplayers()))
           return;
     
     Bought[id] = false
}

public event_RoundStart()
{
     for (new i = 1; i <= 32; i++)
     {
           Bought = false
     }
}

#if defined SUPPORT_BOT_TO_USE
public zp_round_started(gamemode, id)
{
     if (is_user_bot(id) && is_user_connected(id) && is_user_alive(id) && !zp_get_user_zombie(id))
     {
           if (!Bought[id] && zp_get_user_ammo_packs(id) >= get_pcvar_num(g_cost) * 1.5)
           {
                 Bought[id] = true
                 zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - get_pcvar_num(g_cost))
           }
     }
}
#endif

new Debug
public client_putinserver(id)
{
     if (Debug == 1) return;
     
     new classname[32]
     pev(id, pev_classname, classname, charsmax(classname))
     if (!equal(classname, "player"))
     {
           Debug = 1
           set_task(1.0, "_Debug", id)
     }
}

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

public show_laser(id, const origin[3])
{      
     if (!is_user_alive(id) || zp_get_user_zombie(id))
           return;
     
     // Laser beam.
     message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
     write_byte (TE_BEAMENTPOINT)
     write_short(id ) //(id | 0x1000)
     write_coord(origin[0]) // x = horizontal /\ write_coord = position
     write_coord(origin[1]) // y = vertical
     write_coord(origin[2]) // z = ???
     write_short(g_laserspr) // The sprite
     write_byte(0)      // framestart
     write_byte(0)      // framerate
     write_byte(2)      // Life
     write_byte(10)      // Width
     write_byte(0)      // Noise ?
     write_byte(200) // Red   | R,G,B
     write_byte(50)      // Green | R,G,B
     write_byte(50)      // BLUE | R,G,B
     write_byte(200) // Brightness.
     write_byte(200) // Speed.
     message_end()
}

stock particle_burst_effect(const origin[3])
{
     // Particle burst
     message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
     write_byte(TE_PARTICLEBURST) // TE id: 122
     write_coord(origin[0]) // x
     write_coord(origin[1]) // y
     write_coord(origin[2]) // z
     write_short(20) // radius
     write_byte(70) // color
     write_byte(3) // duration (will be randomized a bit)
     message_end()
}

stock create_blood(const origin[3])
{
     // Blood
     for (new i = 0; i < 4; i++)
     {
           new x, y, z
           x = random_num(-50, 50)
           y = random_num(-50, 50)
           z = random_num(0, 50)
           
           for (new j = 0; j < 2; j++)
           {
                 message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
                 write_byte(TE_BLOODSPRITE)
                 write_coord(origin[0]+(x*j))
                 write_coord(origin[1]+(y*j))
                 write_coord(origin[2]+(z*j))
                 write_short(g_bloodspr)
                 write_short(g_bloodspr)
                 write_byte(229) // color index
                 write_byte(15) // size
                 message_end()
           }
     }
}

stock screen_shake(id, amplitude = 4, duration = 2, frequency = 10)
{
     message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenShake"), _, id)
     write_short((1<<12)*amplitude) // 振幅
     write_short((1<<12)*duration) // 時間
     write_short((1<<12)*frequency) // 頻率
     message_end()
}

要怎辦呢?
我試過
&& get_user_flags(id) & ADMIN_LEVEL_A
http://bbs.mychat.to/reads.php?tid=864080&keyword=%E6%AC%8A%E9%99%90
可是他彈出錯誤啊
好像是說(id)有錯誤......



獻花 x0 回到頂端 [樓 主] From:APNIC | Posted:2010-06-10 15:56 |
55331200
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x24 鮮花 x15
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

沒有人嗎? 表情


獻花 x0 回到頂端 [1 樓] From:APNIC | Posted:2010-06-12 13:14 |
calove00
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x171 鮮花 x99
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define SUPPORT_BOT_TO_USE

new g_laserspr, g_bloodspr
new g_haha
new g_entity_damage, g_entity_chance
new g_cost
new bool:Bought[33]

public plugin_init()
{
  register_plugin("[ZP] Extra: 致命攻擊", "1.0", "MyChat數位男女會員:Rubbish-Nec")
  RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
  register_event("DeathMsg", "event_Death", "a")
 
  g_cost = register_cvar("zp_da_cost", "1")
 
  g_entity_damage = register_cvar("zp_da_entity_damage", "2.5")
  g_entity_chance = register_cvar("zp_da_entity_chance", "10")
 
  g_haha = zp_register_extra_item("致命攻擊", get_pcvar_num(g_cost), ZP_TEAM_HUMAN)
}

public plugin_precache()
{
  g_laserspr = precache_model("sprites/white.spr")
  g_bloodspr = precache_model("sprites/blood.spr")
}

public zp_extra_item_selected(id, itemid)
{
  if (itemid == g_haha)
  {
      if (Bought[id])
      {
          zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + get_pcvar_num(g_cost))
          client_print(id, print_chat, "[ZP] 你已經買了致命攻擊。")
      }
      else if(get_user_flat(id) & ADMIN_LEVEL_A)
      {
          client_print(id, print_chat, "[ZP] 你買了致命攻擊,攻擊敵人有機會造成更大傷害。")
          Bought[id] = true
      }
      else
      {
          client_print(id, print_center, "你沒有此權限")
      }
  }
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
  if (victim != attacker && is_user_connected(attacker))
  {
      if (!zp_get_user_zombie(attacker) && zp_get_user_zombie(victim))
      {
          if (Bought[attacker])
          {
              if (random_num(1,100) <= get_pcvar_num(g_entity_chance))
              {
                  static origin[3]
                  get_user_origin(victim, origin, 0)
                  show_laser(attacker, origin)
                  //particle_burst_effect(origin)
                  create_blood(origin)
                  screen_shake(victim, 4, 2, 5)
                 
                  damage *= get_pcvar_num(g_entity_damage)
                  SetHamParamFloat(4, damage)
              }
          }
      }
  }
}

public zp_user_infected_post(id, infector)
{
  Bought[id] = false
}

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

public client_disconnect(id)
{
  Bought[id] = false
}

public event_Death()
{
  new id = read_data(2)
 
  if (!(1 <= id <= get_maxplayers()))
      return;
 
  Bought[id] = false
}

public event_RoundStart()
{
  for (new i = 1; i <= 32; i++)
  {
      Bought = false
  }
}

#if defined SUPPORT_BOT_TO_USE
public zp_round_started(gamemode, id)
{
  if (is_user_bot(id) && is_user_connected(id) && is_user_alive(id) && !zp_get_user_zombie(id))
  {
      if (!Bought[id] && zp_get_user_ammo_packs(id) >= get_pcvar_num(g_cost) * 1.5)
      {
          Bought[id] = true
          zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - get_pcvar_num(g_cost))
      }
  }
}
#endif

new Debug
public client_putinserver(id)
{
  if (Debug == 1) return;
 
  new classname[32]
  pev(id, pev_classname, classname, charsmax(classname))
  if (!equal(classname, "player"))
  {
      Debug = 1
      set_task(1.0, "_Debug", id)
  }
}

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

public show_laser(id, const origin[3])
{    
  if (!is_user_alive(id) || zp_get_user_zombie(id))
      return;
 
  // Laser beam.
  message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  write_byte (TE_BEAMENTPOINT)
  write_short(id ) //(id | 0x1000)
  write_coord(origin[0]) // x = horizontal /\ write_coord = position
  write_coord(origin[1]) // y = vertical
  write_coord(origin[2]) // z = ???
  write_short(g_laserspr) // The sprite
  write_byte(0)     // framestart
  write_byte(0)     // framerate
  write_byte(2)     // Life
  write_byte(10)     // Width
  write_byte(0)     // Noise ?
  write_byte(200) // Red   | R,G,B
  write_byte(50)     // Green | R,G,B
  write_byte(50)     // BLUE | R,G,B
  write_byte(200) // Brightness.
  write_byte(200) // Speed.
  message_end()
}

stock particle_burst_effect(const origin[3])
{
  // Particle burst
  message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  write_byte(TE_PARTICLEBURST) // TE id: 122
  write_coord(origin[0]) // x
  write_coord(origin[1]) // y
  write_coord(origin[2]) // z
  write_short(20) // radius
  write_byte(70) // color
  write_byte(3) // duration (will be randomized a bit)
  message_end()
}

stock create_blood(const origin[3])
{
  // Blood
  for (new i = 0; i < 4; i++)
  {
      new x, y, z
      x = random_num(-50, 50)
      y = random_num(-50, 50)
      z = random_num(0, 50)
     
      for (new j = 0; j < 2; j++)
      {
          message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
          write_byte(TE_BLOODSPRITE)
          write_coord(origin[0]+(x*j))
          write_coord(origin[1]+(y*j))
          write_coord(origin[2]+(z*j))
          write_short(g_bloodspr)
          write_short(g_bloodspr)
          write_byte(229) // color index
          write_byte(15) // size
          message_end()
      }
  }
}

stock screen_shake(id, amplitude = 4, duration = 2, frequency = 10)
{
  message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenShake"), _, id)
  write_short((1<<12)*amplitude) // 振幅
  write_short((1<<12)*duration) // 時間
  write_short((1<<12)*frequency) // 頻率
  message_end()
}



路過 表情


獻花 x0 回到頂端 [2 樓] From:香港有線寬頻 | Posted:2010-07-20 19:22 |
die98748
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x34
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

這些程式碼我當真看到頭暈眼花花了
真希望自己也能懂有關這方面的東西 但願....


獻花 x0 回到頂端 [3 樓] From:台灣中華電信 | Posted:2010-07-21 00:47 |

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