搜索
查看: 2229|回复: 6

求:谁能发个随机彩色弹痕的插件

[复制链接]
发表于 2006-9-8 21:01:07 | 显示全部楼层 |阅读模式 来自 中国–广东–佛山
谁能发个随机彩色弹痕的插件。找了好久找不到。Please help me:cry:
发表于 2006-9-9 13:02:26 | 显示全部楼层 来自 中国–山西–忻州

回复: 求:谁能发个随机彩色弹痕的插件

手雷拖尾,还是子弹??????????????
回复

使用道具 举报

 楼主| 发表于 2006-9-10 09:45:30 | 显示全部楼层 来自 中国–广东–佛山

回复: 求:谁能发个随机彩色弹痕的插件

是子弹的弹痕,以前用过现在找不到了:cold:
回复

使用道具 举报

发表于 2006-9-10 10:24:54 | 显示全部楼层 来自 中国–黑龙江–哈尔滨

回复: 求:谁能发个随机彩色弹痕的插件

[PHP]
/* AMX Mod X script.
*
* tracer_fire by jon
*
* based on war weapon tracers.
*
* latest fixes:
*  - found get_user_origin mode 4, for cs only.
*    this allows us to draw the tracer to where the bullet actually
*    went instead of where the player was aiming.
*
* features solid, random, weapon class, and team color(s)
* and a new option to prevent player from seeing their own tracer.
*
*  *******************************************************************************
*   
*        Ported By KingPin( kingpin@onexfx.com ). I take no responsibility
*        for this file in any way. Use at your own risk. No warranties of any kind.
*
*  *******************************************************************************
*
*
* TODO:
*  - read default colors from a cfg or ini or something
*  - save colors/mode between map changes instead of loading defaults
*/


#include <amxconst>
#include <amxmodx>
#include <amxmisc>
#include <string>

/* current version */
static const CURR_VERSION[] = "1.6"

/* mode nomenclature */
static const modenames[5][] = { "disabled", "uniform", "random", "weapon-class", "player-team" }


/***************** some shiz *****************/


/* color tables. */
static weap_colors[31][3]
static rand_colors[23][3]

/* table[playerid] stores ammo count and last weapon id. */
new lastammo[33]
new lastweap[33]

/* cached beam sprite */
new spriteidx


/***************** more shiz *****************/


/*        gamemode:
*        0 - disabled
*        1 - use nCOLOR vars for color (defaults to pink 255,0,204)
*        2 - random color from fixed table for every shot
*        3 - use weapon table for colors
*        4 - team based. CT=blue, T=red
*/
new gamemode

/*        option_all
*        0 - send individual messages. player does not 'see' his/her own tracer. bots do not 'see' tracers.
*        1 - MSG_ALL every tracer.
*/
new option_all = 1


/* nCOLOR: [0-255] - store rgb values for solid tracer. */
new nred
new ngreen
new nblue


/***************** still more shiz *****************/


public tracer_setmode(id, level, cid)
{
        if (!cmd_access(id,level,cid,1))
                return PLUGIN_HANDLED

        new bool:nochange = false
        new args[1]

        read_argv(1, args, 1)

        if (equal(args,"0")) gamemode = 0
        else if (equal(args,"1")) gamemode = 1
        else if (equal(args,"2")) gamemode = 2
        else if (equal(args,"3")) gamemode = 3
        else if (equal(args,"4")) gamemode = 4
        else nochange = true

        console_print(id, "tracer mode is: %s", modenames[gamemode])

        // didn't change gamemode, don't display anything.
        if (nochange) {
                console_print(id, "usage: 'amx_tracers <0-4>' where: 0=off, 1=uniform, 2=random, 3=weapons, 4=teams")
                return PLUGIN_HANDLED
        }

        set_hudmessage(255, 255, 255, 0.05, 0.65, 0, 0.00, 6.0, 0.01, 4.0, 3)
        show_hudmessage(0, "tracer mode is: %s", modenames[gamemode])

        return PLUGIN_HANDLED
}


public tracer_setall(id, level, cid)
{
        if (!cmd_access(id,level,cid,1))
                return PLUGIN_HANDLED

        new bool:nochange = false
        new args[1]

        read_argv(1, args, 1)

        if (equal(args,"0")) option_all = 0
        else if (equal(args,"1")) option_all = 1
        else nochange = true

        console_print(id, "tracer option_all is: %s", ((option_all==1) ? "on" : "off"))

        // didn't change option_all, don't display anything.
        if (nochange) {
                console_print(id, "usage: 'amx_tracers_all <0-1>' where 0=dont draw own tracer, 1=draw all tracers")
                return PLUGIN_HANDLED
        }

        set_hudmessage(255, 255, 255, 0.05, 0.65, 0, 0.00, 6.0, 0.01, 4.0, 3)
        show_hudmessage(0, "tracer option_all is: %s", ((option_all==1) ? "on" : "off"))

        return PLUGIN_HANDLED
}



public tracer_setcolor(id, level, cid)
{
        if (!cmd_access(id,level,cid,3))
                return PLUGIN_HANDLED

        new ared[4], agreen[4], ablue[4]
        new tnred, tngreen, tnblue

        // get args
        read_argv(1, ared, 3)
        read_argv(2, agreen, 3)
        read_argv(3, ablue, 3)

        // convert to int
        tnred = str_to_num(ared)
        tngreen = str_to_num(agreen)
        tnblue = str_to_num(ablue)

        // check bounds
        if (tnred < 0) tnred = 0
        if (tngreen < 0) tngreen = 0
        if (tnblue < 0) tnblue = 0
        if (tnred > 255) tnred = 255
        if (tngreen > 255) tngreen = 255
        if (tnblue > 255) tnblue = 255

        // values ok, update application
        nred = tnred
        ngreen = tngreen
        nblue = tnblue

        return PLUGIN_HANDLED
}


public draw_tracer_for(pl, pteam[], vec1[3], vec2[3], weap)
{
        new rval

        message_begin(((pl==0) ? MSG_ALL : MSG_ONE), SVC_TEMPENTITY, vec1, pl)
        write_byte(0)                // TE_BEAMPOINTS
        write_coord(vec1[0])        // start point
        write_coord(vec1[1])
        write_coord(vec1[2])
        write_coord(vec2[0])        // end point
        write_coord(vec2[1])
        write_coord(vec2[2])
        write_short(spriteidx)        // sprite to draw (precached below)
        write_byte(0)                        // starting frame
        write_byte(0)                        // frame rate
        write_byte(4)                        // life in 0.1s
        write_byte(1)                        // line width in 0.1u
        write_byte(0)                        // noise in 0.1u

        switch (gamemode) {
                case 4: {
                        if (equali(pteam,"CT")) write_byte(0); else write_byte(255)
                        write_byte(0)
                        if (equali(pteam,"CT")) write_byte(255); else write_byte(0)
                }
                case 3: {
                        write_byte(weap_colors[weap][0])
                        write_byte(weap_colors[weap][1])
                        write_byte(weap_colors[weap][2])
                }
                case 2: {
                        rval = random_num(0, 22)
                        write_byte(rand_colors[rval][0])
                        write_byte(rand_colors[rval][1])
                        write_byte(rand_colors[rval][2])
                }
                default: {
                        write_byte(nred)
                        write_byte(ngreen)
                        write_byte(nblue)
                }
        }

        write_byte(120)                                // brightness
        write_byte(50)                                // scroll speed
        message_end()

        return PLUGIN_CONTINUE
}


public make_tracer(id)
{

        if (gamemode == 0) return PLUGIN_CONTINUE

        new weap = read_data(2)                // id of the weapon
        new ammo = read_data(3)                // ammo left in clip
        new pteam[16]
        new players[32]
        new i, n

        get_user_team(id, pteam, 15)

        /* if no lastweap is set, you'll miss the first tracer!
           weap is never zero.
        */
        if (lastweap[id] == 0) { lastweap[id] = weap; }

        /* fire this event only if the ammo has changed but the weapon has not.
           this prevents a tracer from being drawn when you switch from a weapon
           with a larger clip to one with a smaller clip.

           also, new ammo setting must be less.. otherwise a tracer is fired on reload.
        */
        if ((lastammo[id] > ammo) && (lastweap[id] == weap)) {

                new vec1[3], vec2[3]
                get_user_origin(id, vec1, 1) // origin; your camera point.
                get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)

                vec1[2] -= 6

                if (option_all==1)
                {
                        // MSG_ALL
                        draw_tracer_for(0, pteam, vec1, vec2, weap)
                }
                else
                {
                        // MSG_ONE
                        get_players(players, n, "c")
                        for(i = 0; i < n; i++)
                                if ((id != players) && (is_user_connected(players)))
                                        draw_tracer_for(players, pteam, vec1, vec2, weap)
                }
        }

        lastammo[id] = ammo
        lastweap[id] = weap

        return PLUGIN_CONTINUE
}


public plugin_init()
{
        gamemode = 1
        nred = 255
        ngreen = 0
        nblue = 204

        rand_colors[0]  = {0, 255, 255}    // cyan
        rand_colors[1]  = {255, 0, 255}    // magenta

        rand_colors[2]  = {255, 255, 204}  // lt yellow
        rand_colors[3]  = {255, 255, 0}    // yellow
        rand_colors[4]  = {153, 153, 0}    // dark yellow/gold

        rand_colors[5]  = {204, 204, 255}  // lt blue
        rand_colors[6]  = {0, 0, 255}      // blue
        rand_colors[7]  = {0, 0, 102}      // dark blue

        rand_colors[8]  = {255, 204, 255}  // lt purple
        rand_colors[9]  = {204, 0, 204}    // purple
        rand_colors[10] = {102, 0, 102}    // dark purple

        rand_colors[11] = {255, 102, 102}  // lt red
        rand_colors[12] = {255, 0, 0}      // red
        rand_colors[13] = {102, 0, 0}      // dark red

        rand_colors[14] = {0, 255, 0}      // lt green
        rand_colors[15] = {0, 153, 0}      // green
        rand_colors[16] = {0, 102, 0}      // dark green

        rand_colors[17] = {255, 204, 153}  // lt orange
        rand_colors[18] = {255, 153, 0}    // orange
        rand_colors[19] = {153, 102, 0}    // brown
        rand_colors[20] = {102, 102, 102}  // gray
        rand_colors[21] = {204, 204, 204}  // lt gray
        rand_colors[22] = {255, 255, 255}  // white


        weap_colors[CSW_USP]                = { 0, 0, 255 } // blue
        weap_colors[CSW_GLOCK18]        = { 0, 0, 255 }
        weap_colors[CSW_P228]                = { 0, 0, 255 }
        weap_colors[CSW_ELITE]                = { 0, 0, 255 }
        weap_colors[CSW_FIVESEVEN]        = { 0, 0, 255 }
        weap_colors[CSW_DEAGLE]                = { 0, 0, 255 }

        weap_colors[CSW_XM1014]                = { 255, 255, 0 } // yellow
        weap_colors[CSW_M3]                = { 255, 255, 0 }

        weap_colors[CSW_MP5NAVY]        = { 255, 153, 0 } // orange
        weap_colors[CSW_TMP]                = { 255, 153, 0 }
        weap_colors[CSW_MAC10]                = { 255, 153, 0 }
        weap_colors[CSW_UMP45]                = { 255, 153, 0 }
        weap_colors[CSW_P90]                = { 255, 153, 0 }

        weap_colors[CSW_M4A1]        = { 102, 0, 0 } // dark red
        weap_colors[CSW_AUG]        = { 102, 0, 0 }
        weap_colors[CSW_SG552]        = { 102, 0, 0 }
        weap_colors[CSW_AK47]        = { 102, 0, 0 }
        weap_colors[CSW_G3SG1]        = { 102, 0, 0 }
        weap_colors[CSW_SG550]        = { 102, 0, 0 }

        weap_colors[CSW_SCOUT]        = { 102, 102, 102 } // lt gray
        weap_colors[CSW_AWP]        = { 204, 204, 204 } // gray

        weap_colors[CSW_M249]        = { 0, 255, 0 } // lt green


        register_concmd("amx_tracers", "tracer_setmode", ADMIN_LEVEL_B, "<0-4> - 0:off,1:uniform,2:random,3:weapons,4:teams")
        register_concmd("amx_tracers_all", "tracer_setall", ADMIN_LEVEL_B, "<0-1> - 0:dont draw own tracer,1:draw all tracers")
        register_concmd("amx_tracers_colors", "tracer_setcolor", ADMIN_LEVEL_B, "<0-255> <0-255> <0-255> - RGB color values")
        register_plugin("tracer_fire", CURR_VERSION, "jon")
        register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
        return PLUGIN_CONTINUE
}

public plugin_precache()
{
        spriteidx = precache_model("sprites/laserbeam.spr");
        return PLUGIN_CONTINUE
}
[/PHP]
回复

使用道具 举报

发表于 2006-9-10 10:57:05 | 显示全部楼层 来自 中国–广东–深圳–福田区

回复: 求:谁能发个随机彩色弹痕的插件

哦,学到了获取弹点位置 origin 方法,谢谢
回复

使用道具 举报

 楼主| 发表于 2006-9-16 09:29:17 | 显示全部楼层 来自 中国–广东–佛山

回复: 求:谁能发个随机彩色弹痕的插件

谢谢,辛苦了:burn:
回复

使用道具 举报

 楼主| 发表于 2006-9-16 09:30:18 | 显示全部楼层 来自 中国–广东–佛山

回复: 求:谁能发个随机彩色弹痕的插件

但是,请问怎么用啊:sweat:
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表