注册 | 登录

游侠NETSHOW论坛





查看: 6865|回复: 12
打印 上一主题 下一主题

[推荐] [L4D2] 志玲姐的呼喊 (Crowned Horde ) 12/24更新 v1.0.5|很淫荡的插件 [复制链接]

帖子
33
精华
0
积分
17
金钱
273
荣誉
0
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2009-12-28 06:23:59 |只看该作者 |倒序浏览
12/23 更新1.04
新增一些参数
sm_l4d_ch_trigger_horde_size 0
(0 =一批 1 = 永久).
新增爆頭時女巫來不及招喚癡漢  
改成不同方式吵醒WITCH 顯示不同的狀態
檔案直接覆蓋到left4dead2裡面即可

left4dead2\cfg\sourcemod  CFG裡面修改

sm_l4d_ch_trigger_event 3
_插件執行方式:

0= WITCH憤怒時,1 = WITCH死亡時,2 = WITCH被爆頭時,3 =隨機
新增一個功能  地址http://www.kuyoudanji.cn/bbs/thread-4-1-1.html

使用道具 举报

帖子
596
精华
0
积分
298
金钱
3397
荣誉
0
人气
1
评议
0
沙发
发表于 2009-12-28 09:13:43 |只看该作者
别人听不到的就不好玩了。

使用道具 举报

帖子
748
精华
0
积分
385
金钱
890
荣誉
1
人气
0
评议
0
板凳
发表于 2009-12-28 09:52:28 |只看该作者
希望你有眼睛.能看到他们的插件是不允许转载的!

使用道具 举报

帖子
890
精华
0
积分
447
金钱
2353
荣誉
0
人气
0
评议
0
地板
发表于 2009-12-28 11:06:28 |只看该作者

回复 #3 s6xsophia 的帖子

那个是链接,谢谢!!!!!!!

使用道具 举报

帖子
6380
精华
0
积分
3361
金钱
33286
荣誉
17
人气
13
评议
0
5#
发表于 2009-12-28 11:18:40 |只看该作者
原帖由 19820715 于 2009-12-28 11:06 发表
那个是链接,谢谢!!!!!!!



LZ或转帖人是作者?


http://www.poheart.com/viewthread.php?tid=2877&extra=page%3D1

插件名稱         Crowned Horde
插件作者         bigbuck
插件版本         1.0.5
插件漢化         fgriasa
中文字體         繁體
插件方言         正統中文
插件說明         殺死/驚醒 WITCH會招來一次殭屍群
可否轉載?         不可以
Q6600[3.0]+Tt                         I7 3770
微星P45 NEO3-FR                      华硕P8Z77-V LM
威刚(万紫千红)DDR2800 2GX2     威刚(万紫千红)DDR31600 4GX2+8GX2(ddr31866)
影驰GTX670四星大将4G              影驰GTX970名人堂4G
希捷1T+1.5T                            希捷2T+2T+3T
三星2494HS
win10Pro 64bit                          win7旗舰版64bit

使用道具 举报

帖子
6380
精华
0
积分
3361
金钱
33286
荣誉
17
人气
13
评议
0
6#
发表于 2009-12-28 11:21:49 |只看该作者
不是作者不经同意不要转!

插件源文件!自己汉化以下内容!


/**
* [L4D] Crowned Horde
* Created by Bigbuck
*
*/

/**
    v1.0.0
    - Initial Release

    v1.0.1
    - Added translation support
    - Added option to set what event(s) trigger the horde

    v1.0.2
    - Added seperate CVAR's to control trigger events

    v1.0.3
    - Added option to randomly alert the horde

    v1.0.4
    - Added option to set delay between witches scream and the horde being alerted
    - Added option to set the size of the alerted horde
    - Added option to randomly set the size of the alerted horde
    - Added option to alert the horde when the witch has been killed but not crowned
    - Fixed potential bug in the random logic

    v1.0.5
    - Fixed bug with AlertHorde timers
*/

// Force strict semicolon mode
#pragma semicolon 1

/**
* Includes
*
*/
#include <sourcemod>
#include <sdktools>

/**
* Defines
*
*/
#define PLUGIN_VERSION    "1.0.5"
#define MAX_PLAYERS         256
#define CVAR_FLAGS        FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY
#define CVAR_FLAGS_NO    FCVAR_PLUGIN|FCVAR_SPONLY

/**
* Handles
*
*/
new Handle: Sound                                = INVALID_HANDLE;
new Handle: Sound_File                        = INVALID_HANDLE;
new Handle: Announcements                    = INVALID_HANDLE;
new Handle: Trigger_Annoyed                    = INVALID_HANDLE;
new Handle: Trigger_Annoyed_First            = INVALID_HANDLE;
new Handle: Trigger_Killed                    = INVALID_HANDLE;
new Handle: Trigger_Killed_Not_Crowned    = INVALID_HANDLE;
new Handle: Trigger_Crowned                    = INVALID_HANDLE;
new Handle: Trigger_Random                    = INVALID_HANDLE;
new Handle: Trigger_Random_Alert_Horde    = INVALID_HANDLE;
new Handle: Trigger_Random_Horde_Size        = INVALID_HANDLE;
new Handle: Trigger_Horde_Size                = INVALID_HANDLE;
new Handle:    Trigger_Delay                    = INVALID_HANDLE;
// Timer handles
new Handle: Timer_AlertHorde[MAX_PLAYERS + 1];

/**
* Global variables
*
*/
// Detects L4D2
new bool: game_l4d2 = false;
// Lets us know if we need to trigger the horde
new bool: alert_horde = true;
// Determines the size of the horde
new horde_size = 0;

/**
* Plugin information
*
*/
public Plugin: myinfo =
{
    name = "[L4D/2] Crowned Horde",
    author = "Bigbuck",
    description = "Sends out a horde when a witched has been killed.",
    version = PLUGIN_VERSION,
    url = "http://bigbuck-sm.assembla.com/spaces/dashboard/index/bigbuck-sm"
};

/**
* Setup plugins first run
*
*/
public OnPluginStart()
{
    // Require Left 4 Dead
    decl String: game_name[64];
    GetGameFolderName(game_name, sizeof(game_name));
    if (!StrEqual(game_name, "left4dead", false) && !StrEqual(game_name, "left4dead2", false))
    {
        SetFailState("Use this in Left 4 Dead or Left 4 Dead 2 only.");
    }
    // We need to know if L4D2 is running
    if (StrEqual(game_name, "left4dead2", false))
    {
        game_l4d2 = true;
    }

    // Create convars
    CreateConVar("sm_l4d_crowned_horde_version", PLUGIN_VERSION, "[L4D/2] Crowned Horde Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD);
    Sound                                = CreateConVar("sm_l4d_ch_sound", "1", "Play a sound when the trigger event has been activated?", CVAR_FLAGS, true, 0.0, true, 1.0);
    Sound_File                        = CreateConVar("sm_l4d_ch_sound_file", "npc/witch/voice/attack/Female_DistantScream2.wav", "If sound is enabled, the sound file to play relative to the sounds directory.", CVAR_FLAGS);
    Announcements                    = CreateConVar("sm_l4d_ch_announcements", "1", "Enable or disable announcements.", CVAR_FLAGS, true, 0.0, true, 1.0);
    Trigger_Annoyed                    = CreateConVar("sm_l4d_ch_trigger_annoyed", "0", "Alerts the horde when a witch is annoyed.", CVAR_FLAGS_NO, true, 0.0, true, 1.0);
    Trigger_Annoyed_First            = CreateConVar("sm_l4d_ch_trigger_annoyed_first", "0", "Alerts the horde when a witch is annoyed for the first time only (L4D2 only).", CVAR_FLAGS_NO, true, 0.0, true, 1.0);
    Trigger_Killed                    = CreateConVar("sm_l4d_ch_trigger_killed", "0", "Alerts the horde when a witch is killed (Includes the witch being crowned).", CVAR_FLAGS_NO, true, 0.0, true, 1.0);
    Trigger_Killed_Not_Crowned    = CreateConVar("sm_l4d_ch_trigger_killed_not_crowned", "0", "Alerts the horde when a witch is killed (Does not include the witch being crowned).", CVAR_FLAGS_NO, true, 0.0, true, 1.0);
    Trigger_Crowned                    = CreateConVar("sm_l4d_ch_trigger_crowned", "0", "Alerts the horde when a witch is crowned.", CVAR_FLAGS_NO, true, 0.0, true, 1.0);
    Trigger_Random                    = CreateConVar("sm_l4d_ch_trigger_random", "1", "Randomly picks which event alerts the horde.", CVAR_FLAGS, true, 0.0, true, 1.0);
    Trigger_Random_Alert_Horde    = CreateConVar("sm_l4d_ch_trigger_random_alert_horde", "0", "If random option is selected, randomly decide if a horde should be alerted.", CVAR_FLAGS, true, 0.0, true, 1.0);
    Trigger_Random_Horde_Size        = CreateConVar("sm_l4d_ch_trigger_random_horde_size", "0", "If random option is selected, randomly decide what size horde should be alerted.", CVAR_FLAGS, true, 0.0, true, 1.0);
    Trigger_Horde_Size                = CreateConVar("sm_l4d_ch_trigger_horde_size", "0", "Size of the alerted horde (0 = mob, 1 = forced panic).", CVAR_FLAGS, true, 0.0, true, 1.0);
    Trigger_Delay                    = CreateConVar("sm_l4d_ch_trigger_delay", "0", "The delay between the witches scream and the horde being alerted.", CVAR_FLAGS, true, 0.0);

    // Load config
    AutoExecConfig(true, "l4d_crowned_horde");
    // Load translations
    LoadTranslations("l4d_crowned_horde");

    // Hook events
    HookEvent("witch_harasser_set",    Event_WitchHarasserSet);
    HookEvent("witch_spawn",        Event_WitchSpawn);
    HookEvent("witch_killed",        Event_WitchKilled);
}

/**
* Called when all configs have been executed
*
*/
public OnConfigsExecuted()
{
    if (GetConVarInt(Sound))
    {
        // Get user defined sound
        decl String: sound_witch[128];
        GetConVarString(Sound_File, sound_witch, sizeof(sound_witch));

        // Precache sound if needed
        if (!IsSoundPrecached(sound_witch))
        {
            PrecacheSound(sound_witch, false);
        }
    }
}

/**
* Handles when a witch spawns
*
* @handle: event - The witch_spawn event
* @string: name - Name of the event
* @bool: dontBroadcast - Enable/disable broadcasting of event triggering
*
*/
public Event_WitchSpawn(Handle: event, const String: name[], bool: dontBroadcast)
{
    // Make sure we can continue
    if (!GetConVarInt(Trigger_Random))
    {
        horde_size = GetConVarInt(Trigger_Horde_Size);
    }

    // Set a random event to trigger the horde
    switch (game_l4d2)
    {
        case 0:
        {
            new trigger_event = GetRandomInt(0, 3);
            switch (trigger_event)
            {
                case 0:
                {
                    SetConVarInt(Trigger_Annoyed, 1);
                }
                case 1:
                {
                    SetConVarInt(Trigger_Killed, 1);
                }
                case 2:
                {
                    SetConVarInt(Trigger_Killed_Not_Crowned, 1);
                }
                case 3:
                {
                    SetConVarInt(Trigger_Crowned, 1);
                }
            }
        }
        case 1:
        {
            new trigger_event = GetRandomInt(0, 4);
            switch (trigger_event)
            {
                case 0:
                {
                    SetConVarInt(Trigger_Annoyed, 1);
                }
                case 1:
                {
                    SetConVarInt(Trigger_Annoyed_First, 1);
                }
                case 2:
                {
                    SetConVarInt(Trigger_Killed, 1);
                }
                case 3:
                {
                    SetConVarInt(Trigger_Killed_Not_Crowned, 1);
                }
                case 4:
                {
                    SetConVarInt(Trigger_Crowned, 1);
                }
            }
        }
    }

    // Randomly select if a horde should be alerted
    if (GetConVarInt(Trigger_Random_Alert_Horde))
    {
        new trigger_alert_horde = GetRandomInt(0, 1);
        if (!trigger_alert_horde)
        {
            alert_horde = false;
        }
    }

    // Randomly select the horde size
    if (GetConVarInt(Trigger_Random_Horde_Size))
    {
        new trigger_horde_size = GetRandomInt(0, 1);
        switch (trigger_horde_size)
        {
            case 0:
            {
                horde_size = 0;
            }
            case 1:
            {
                horde_size = 1;
            }
        }
    }
}

/**
* Handles when a witch becomes annoyed
*
* @handle: event - The witch_harasser_set event
* @string: name - Name of the event
* @bool: dontBroadcast - Enable/disable broadcasting of event triggering
*
*/
public Event_WitchHarasserSet(Handle: event, const String: name[], bool: dontBroadcast)
{
    // Make sure we can continue
    if (!GetConVarInt(Trigger_Annoyed) && !GetConVarInt(Trigger_Annoyed_First))
    {
        return;
    }

    // Get event information
    new attacker_id    = GetEventInt(event, "userid");
    new witch_id        = GetEventInt(event, "witchid");
    // Get the correct client id
    new attacker         = GetClientOfUserId(attacker_id);

    // If this is the first time the witch has been annoyed
    if (GetConVarInt(Trigger_Annoyed_First))
    {
        if (game_l4d2)
        {
            new bool: annoyed_first = GetEventBool(event, "first");
            if (annoyed_first)
            {
                WitchAnnoyedFirst(attacker, witch_id);
            }
        }
        return;
    }
    else if (!GetConVarInt(Trigger_Annoyed))
    {
        return;
    }

    // Play sound if needed
    if (GetConVarInt(Sound))
    {
        PlaySound(witch_id);
    }

    // Trigger the horde
    if (alert_horde)
    {
        Timer_AlertHorde[attacker] = CreateTimer(GetConVarFloat(Trigger_Delay), AlertHorde, attacker);
    }

    // Announce who woke up the witch if needed
    if (GetConVarInt(Announcements))
    {
        decl String: attacker_name[64];
        GetClientName(attacker, attacker_name, sizeof(attacker_name));

        PrintToChatAll("%t", "L_WITCH_ANNOYED", attacker_name);
    }
}

/**
* Handles when a witch is killed
*
* @handle: event - The witch_killed event
* @string: name - Name of the event
* @bool: dontBroadcast - Enable/disable broadcasting of event triggering
*
*/
public Event_WitchKilled(Handle: event, const String: name[], bool: dontBroadcast)
{
    // Make sure we can continue
    if (!GetConVarInt(Trigger_Killed) && !GetConVarInt(Trigger_Crowned) && !GetConVarInt(Trigger_Killed_Not_Crowned))
    {
        return;
    }

    // Get event information
    new attacker_id    = GetEventInt(event, "userid");
    new witch_id        = GetEventInt(event, "witchid");
    new bool: crowned    = GetEventBool(event, "oneshot");
    // Get the correct client id
    new attacker         = GetClientOfUserId(attacker_id);

    // If witch was crowned
    if (GetConVarInt(Trigger_Crowned))
    {
        if (crowned)
        {
            WitchCrowned(attacker, witch_id);
            return;
        }
    }
    else if (GetConVarInt(Trigger_Killed))
    {
        if (!crowned)
        {
            WitchNotCrowned(attacker, witch_id);
        }
    }
    else if (!GetConVarInt(Trigger_Killed))
    {
        return;
    }

    // Play sound if needed
    if (GetConVarInt(Sound))
    {
        PlaySound(witch_id);
    }

    // Trigger the horde
    if (alert_horde)
    {
        Timer_AlertHorde[attacker] = CreateTimer(GetConVarFloat(Trigger_Delay), AlertHorde, attacker);
    }

    // Announce who killed witch if needed
    if (GetConVarInt(Announcements))
    {
        decl String: attacker_name[64];
        GetClientName(attacker, attacker_name, sizeof(attacker_name));

        PrintToChatAll("%t", "L_WITCH_KILLED", attacker_name);
    }

    // We need to reset any changed convars
    if (GetConVarInt(Trigger_Random))
    {
        ResetConVars();
    }
}

/**
* Handles the witch being crowned
*
* @param: witch_id - ID of the witch
*
*/
WitchCrowned(any: attacker, any: witch_id)
{
    // Play sound if needed
    if (GetConVarInt(Sound))
    {
        PlaySound(witch_id);
    }

    // Trigger the horde
    if (alert_horde)
    {
        Timer_AlertHorde[attacker] = CreateTimer(GetConVarFloat(Trigger_Delay), AlertHorde, attacker);
    }

    // Announce who killed witch if needed
    if (GetConVarInt(Announcements))
    {
        decl String: attacker_name[64];
        GetClientName(attacker, attacker_name, sizeof(attacker_name));

        PrintToChatAll("%t", "L_WITCH_CROWNED", attacker_name);
    }

    // We need to reset any changed convars
    if (GetConVarInt(Trigger_Random))
    {
        ResetConVars();
    }
}

/**
* Handles the witch being kolled but not crowned
*
* @param: witch_id - ID of the witch
*
*/
WitchNotCrowned(any: attacker, any: witch_id)
{
    // Play sound if needed
    if (GetConVarInt(Sound))
    {
        PlaySound(witch_id);
    }

    // Trigger the horde
    if (alert_horde)
    {
        Timer_AlertHorde[attacker] = CreateTimer(GetConVarFloat(Trigger_Delay), AlertHorde, attacker);
    }

    // Announce who killed witch if needed
    if (GetConVarInt(Announcements))
    {
        decl String: attacker_name[64];
        GetClientName(attacker, attacker_name, sizeof(attacker_name));

        PrintToChatAll("%t", "L_WITCH_KILLED_NOT_CROWNED", attacker_name);
    }

    // We need to reset any changed convars
    if (GetConVarInt(Trigger_Random))
    {
        ResetConVars();
    }
}

/**
* Handles the witch being annoyed for the first time
*
* @param: attacker_id - ID of the attacker
* @param: witch_id - ID of the witch
*
*/
WitchAnnoyedFirst(any: attacker, any: witch_id)
{
    // Play sound if needed
    if (GetConVarInt(Sound))
    {
        PlaySound(witch_id);
    }

    // Trigger the horde
    if (alert_horde)
    {
        Timer_AlertHorde[attacker] = CreateTimer(GetConVarFloat(Trigger_Delay), AlertHorde, attacker);
    }

    // Announce who killed witch if needed
    if (GetConVarInt(Announcements))
    {
        decl String: attacker_name[64];
        GetClientName(attacker, attacker_name, sizeof(attacker_name));

        PrintToChatAll("%t", "L_WITCH_ANNOYED_FIRST", attacker_name);
    }
}

/**
* Plays the witches scream
*
* @param: witch - ID of the witch
*
*/
PlaySound(any: witch_id)
{
    // Get user defined sound
    decl String: sound_witch[128];
    GetConVarString(Sound_File, sound_witch, sizeof(sound_witch));

    // Play the sound to each client
    new i;
    for (i = 1; i <= GetMaxClients(); i++)
    {
        if (!IsClientConnected(i))
        {
            continue;
        }
        if (IsFakeClient(i))
        {
            continue;
        }

        EmitSoundToClient(i, sound_witch, witch_id, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, SNDVOL_NORMAL, SNDPITCH_NORMAL, -1, NULL_VECTOR, NULL_VECTOR, true, 0.0);
    }
}

/**
* Alerts the horde
*
* @handle: timer - Handle to the timer
* @param: attacker - The witches attacker id
*
*/
public Action: AlertHorde(Handle: timer, any: attacker)
{
    // Alert the correct size horde
    switch (horde_size)
    {
        case 0:
        {
            BypassAndExecuteCommand(attacker, "z_spawn", "mob");
        }
        case 1:
        {
            BypassAndExecuteCommand(attacker, "director_force_panic_event", "");
        }
    }

    KillTimer(Timer_AlertHorde[attacker]);
    Timer_AlertHorde[attacker] = INVALID_HANDLE;
}

/**
* Bypasses the sv_cheats to use command
* Thanks to Damizean
*
* @param: Client - The Client to execute the command on
* @string: strCommand - The command to execute
* @string: strParam1 - Parameter of the command
*
*/
BypassAndExecuteCommand(Client, String: strCommand[], String: strParam1[])
{
    new Flags = GetCommandFlags(strCommand);
    SetCommandFlags(strCommand, Flags & ~FCVAR_CHEAT);
    FakeClientCommand(Client, "%s %s", strCommand, strParam1);
    SetCommandFlags(strCommand, Flags);
}

/**
* Resets any changed convars
*
*/
ResetConVars()
{
    ResetConVar(Trigger_Annoyed);
    ResetConVar(Trigger_Annoyed_First);
    ResetConVar(Trigger_Killed);
    ResetConVar(Trigger_Killed_Not_Crowned);
    ResetConVar(Trigger_Crowned);
}
Q6600[3.0]+Tt                         I7 3770
微星P45 NEO3-FR                      华硕P8Z77-V LM
威刚(万紫千红)DDR2800 2GX2     威刚(万紫千红)DDR31600 4GX2+8GX2(ddr31866)
影驰GTX670四星大将4G              影驰GTX970名人堂4G
希捷1T+1.5T                            希捷2T+2T+3T
三星2494HS
win10Pro 64bit                          win7旗舰版64bit

使用道具 举报

帖子
992
精华
0
积分
506
金钱
1146
荣誉
1
人气
0
评议
0
7#
发表于 2009-12-28 11:22:44 |只看该作者
楼主找抽是吧?没看游侠上没多少人发插件吗,那些插件的来源都在http://www.poheart.com/forumdisplay.php?fid=10.不允许转载.

使用道具 举报

帖子
33
精华
0
积分
17
金钱
273
荣誉
0
人气
0
评议
0
8#
发表于 2009-12-29 06:39:15 |只看该作者
我看你们是疯了吧?  http://www.poheart.com 里面的插件  只要经过作者同意  即可转载   难道你们都不知道?

使用道具 举报

帖子
33
精华
0
积分
17
金钱
273
荣誉
0
人气
0
评议
0
9#
发表于 2009-12-29 06:39:37 |只看该作者
http://www.poheart.com论坛是不管这些的

使用道具 举报

帖子
748
精华
0
积分
385
金钱
890
荣誉
1
人气
0
评议
0
10#
发表于 2009-12-29 10:34:08 |只看该作者
你自己去看.这个插件是否允许转载!!!!

使用道具 举报

帖子
169
精华
0
积分
85
金钱
516
荣誉
0
人气
0
评议
0
11#
发表于 2009-12-29 12:42:37 |只看该作者
发现港台那边的人特别爱玩插件,真的搞不懂。

使用道具 举报

帖子
992
精华
0
积分
506
金钱
1146
荣誉
1
人气
0
评议
0
12#
发表于 2009-12-29 13:46:55 |只看该作者
这楼主吃了别人的东西还在这理直气壮的,那论坛不管转载为什么会出现相关的公告,还有,楼主转了也不注明作者.真不厚道

[ 本帖最后由 冷風 于 2009-12-29 13:47 编辑 ]

使用道具 举报

帖子
890
精华
0
积分
447
金钱
2353
荣誉
0
人气
0
评议
0
13#
发表于 2009-12-29 14:17:36 |只看该作者
LZ你个白痴!多余干这个费力不讨好的事!!!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-10-23 08:13 , Processed in 0.369570 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到