[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Мини скрипты/плагины
Мини скрипты/плагины
rootДата: Пятница, 01.03.2013, 14:44 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Если игрок жмет F1(автопокупка), в чате пишется "guns" от него. Хорошо для DeathMatch
PHP код:
#include <sourcemod>  

public OnPluginStart()  
{  
    
RegConsoleCmd("autobuy"autobuy);  
}  

public 
Action:autobuy(clientargs)  
{  
    
FakeClientCommand(client"say guns")  
}
 
rootДата: Пятница, 01.03.2013, 15:19 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Мониторинг оставшився в живых игроков
PHP код:
#include <sourcemod>

new Handle:GAP_Timer;
new 
x;
new 
xx;

public 
OnPluginStart()
{
    
ServerCommand("sv_hudhint_sound 0");
    
HookEvent("round_start"Event_RoundStart);
    
HookEvent("round_end"Event_RoundEnd);
}

public 
Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    
0;
    
xx 0;
    if (
GAP_Timer != INVALID_HANDLE)
    {
        
KillTimer(GAP_Timer);
        
GAP_Timer INVALID_HANDLE;
    }
    
GAP_Timer CreateTimer(1.0GAP_TimerTell_TIMER_REPEAT);
}

public 
Action:Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    
0;
    
xx 0;
    if (
GAP_Timer != INVALID_HANDLE)
    {
        
KillTimer(GAP_Timer);
        
GAP_Timer INVALID_HANDLE;
    }
}

public 
Action:GAP_TimerTell(Handle:timer)
{
    
0;
    
xx 0;
    for (new 
1<= MaxClientsi++)
    {
        if (
IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2)
        {
            
x++;
        }
    }
    for (new 
1<= MaxClientsi++)
    {
        if (
IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
        {
            
xx++;
        }
    }
    
PrintHintTextToAll("%d T:%d CT"xxx);
    return 
Plugin_Continue;
}
 
rootДата: Пятница, 01.03.2013, 15:22 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Для функции OnPlayerRunCmd
PHP код:
public Action:OnPlayerRunCmd(client, &buttons, &impulseFloat:vel[3], Float:angles[3], &weapon)
доступные кнопки, кнопки не только ксс, так что некоторые могут не работать
PHP код:
#define IN_ATTACK      (1 << 0)
#define IN_JUMP   (1 << 1)
#define IN_DUCK   (1 << 2)
#define IN_FORWARD    (1 << 3)
#define IN_BACK   (1 << 4)
#define IN_USE      (1 << 5)
#define IN_CANCEL      (1 << 6)
#define IN_LEFT   (1 << 7)
#define IN_RIGHT        (1 << 8)
#define IN_MOVELEFT  (1 << 9)
#define IN_MOVERIGHT        (1 << 10)
#define IN_ATTACK2    (1 << 11)
#define IN_RUN      (1 << 12)
#define IN_RELOAD      (1 << 13)
#define IN_ALT1   (1 << 14)
#define IN_ALT2   (1 << 15)
#define IN_SCORE        (1 << 16)       // Used by client.dll for when scoreboard is held down
#define IN_SPEED        (1 << 17)   // Player is holding the speed key
#define IN_WALK   (1 << 18)    // Player holding walk key
#define IN_ZOOM   (1 << 19)    // Zoom key for HUD zoom
#define IN_WEAPON1    (1 << 20) // weapon defines these bits
#define IN_WEAPON2    (1 << 21) // weapon defines these bits
#define IN_BULLRUSH  (1 << 22)
#define IN_GRENADE1  (1 << 23)    // grenade 1
#define IN_GRENADE2  (1 << 24)    // grenade 2
 
rootДата: Пятница, 01.03.2013, 16:45 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Не отображает в чате любой текст с !
Пример:
!rs
!rank
!admin

PHP код:
public OnPluginStart()  
{  
     
RegConsoleCmd("say"hidetrigger);  
     
RegConsoleCmd("say_team"hidetrigger);  
}  

public 
Action:hidetrigger(clientargs)  
{  
     if (
args 0)  
     {  
         
decl String:command[65]; GetCmdArg(1command65);  
         if (
command[0] == '!') return Plugin_Handled;  
     }  
     return 
Plugin_Continue;  
}
 
rootДата: Пятница, 01.03.2013, 16:48 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Запрет команды status всем, кроме админа с флагом z
PHP код:
#pragma semicolon 1 
#include <sourcemod> 

public OnPluginStart() RegConsoleCmd("status"Status); 

public 
Action:Status(clientargs

    if (
client != && !(GetUserFlagBits(client) & ADMFLAG_ROOT)) 
    { 
        
PrintToChat(client"\x01\x05[SM] \x03Нет доступа."); 
        return 
Plugin_Handled
    } 
    return 
Plugin_Continue
}
 
rootДата: Пятница, 01.03.2013, 16:52 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Запрет выброса оружия
PHP код:
#include  

#define PLUGIN_VERSION "1.0" 

public Plugin:myinfo 

    
name "Restrict weapon drop"
    
author "ilga80"
    
description "restrict weapons drop"
    
version PLUGIN_VERSION
    
url "/" 


public 
OnPluginStart() 

    
RegConsoleCmd("drop"drop); 


public 
Action:drop(clientargs

    
PrintToChat(client"\x01\x07%06XЗапрещено выкидывать оружие"0xFFFF00); 
    return 
Plugin_Handled
}
 
rootДата: Пятница, 01.03.2013, 16:53 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Запрет выброса оружия №2
PHP код:
#include  

#define PLUGIN_VERSION "1.0" 

public Plugin:myinfo 

    
name "Restrict weapon drop"
    
author "ilga80"
    
description "restrict weapons drop"
    
version PLUGIN_VERSION
    
url "/" 


public 
Action:CS_OnCSWeaponDrop(clientweaponIndex

    return 
Plugin_Handled
}
 
rootДата: Пятница, 01.03.2013, 19:09 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Быстрая смена команды
PHP код:
#pragma semicolon 1

#include <sourcemod>
#include <cstrike>

public OnPluginStart() 
{
    
AddCommandListener(say"say");  
    
AddCommandListener(say"say_team"); 
}

public 
Action:say(i, const String:command[], argc
{  
    
decl String:csay[8];
    
GetCmdArgString(csaysizeof(csay));
    
StripQuotes(csay);
    
TrimString(csay);
    new 
frags GetClientFrags(i);
    if (((
strcmp(csay"!sp"false) == 0) || (strcmp(csay"!spec"false) == 0)) && && GetClientTeam(i) != 1
        
CS_SwitchTeam(i1);        
    else if (((
strcmp(csay"!t"false) == 0) || (strcmp(csay"!ter"false) == 0)) && && GetClientTeam(i) != 2)
    {
        
SetEntProp(iProp_Data"m_iFrags"frags 1);
        
ChangeClientTeam(i2);
    }
    else if (((
strcmp(csay"!c"false) == 0) || (strcmp(csay"!ct"false) == 0)) && && GetClientTeam(i) != 3)
    {
        
SetEntProp(iProp_Data"m_iFrags"frags 1);
        
ChangeClientTeam(i3);
    }
}

Упрощенная версия перехода в наблюдатели
PHP код:
#pragma semicolon 1

#include <sourcemod>
#include <cstrike>

public OnPluginStart() 
{
    
AddCommandListener(say"say");  
    
AddCommandListener(say"say_team"); 
}

public 
Action:say(i, const String:command[], argc
{  
    
decl String:csay[8];
    
GetCmdArgString(csaysizeof(csay));
    
StripQuotes(csay);
    
TrimString(csay);    
    if (((
strcmp(csay"!sp"false) == 0) || (strcmp(csay"!spec"false) == 0)) && && GetClientTeam(i) != 1
        
CS_SwitchTeam(i1);
}
 
rootДата: Пятница, 01.03.2013, 22:02 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Переход в наблюдатели №2
PHP код:
#pragma semicolon 1 

#include  
#include  

#define PLUGIN_VERSION "1.0"  

public Plugin:myinfo =  
{  
    
name "fast spectator teamchange",  
    
author "ilga80",  
    
description "Быстрый переход в наблюдатели",  
    
version PLUGIN_VERSION,  
    
url "/"  
}  

public 
OnPluginStart()  

    
AddCommandListener(say"say");   
    
AddCommandListener(say"say_team");  


public 
Action:say(client, const String:command[], argc)  

    
decl String:sp[64]; 
    
GetCmdArgString(spsizeof(sp) - 1); 
    
StripQuotes(sp); 
    
TrimString(sp); 
    if ((
StrEqual(sp"!sp"false) || (StrEqual(sp"!ыз"false)) || (StrEqual(sp"!spec"false))) && client && GetClientTeam(client) != 1
    { 
        
ChangeClientTeam(client1); 
        
PrintToChat(client"\x01\x07%06XВы перешли в наблюдатели"0xFFFF00); 
    } 
}
 
rootДата: Воскресенье, 31.03.2013, 02:03 | Сообщение # 10
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Пример запрета скорострелок навсегда
PHP код:
#include <sourcemod> 
#include <sdktools_functions> 
#include <sdktools_entinput> 
#include <cstrike> 

#define scorostrelki    "sg550|g3sg1" 

new Handle:g_Enable

public 
OnPluginStart() 

    
HookEvent("item_pickup"item_pickup); 
    
g_Enable CreateConVar("sg_restrict""1""Restrict sg550 & g3sg1"FCVAR_NOTIFYtrue0.0true1.0); 


public 
Action:CS_OnBuyCommand(client, const String:item[])  

    if (
GetConVarBool(g_Enable)) 
    { 
         if (
strcmp(item"sg550"false) == || strcmp(item"g3sg1"false) == 0
         { 
            
ClientCommand(client"play buttons/weapon_cant_buy.wav"); 
            
PrintToChat(client"\x0700FFFF%N\07FF0000, \07F8F8FFэто оружие запрещено\07FFFF00!"client); 
            for (new 
1<= MaxClientsi++) 
            { 
                if(
IsClientInGame(i) && != client
                { 
                    
decl String:tag[5]; 
                    new 
team GetClientTeam(client); 
                    if(
team == 2
                    { 
                        
Format(tag5"[T]"); 
                    } 
                    else if(
team == 3
                    { 
                        
Format(tag5"[CT]"); 
                    } 
                    
PrintToChat(i"\x0700FFFFИгрок \07FFFF00%s \07F8F8FF%N \x0700FFFFпытается купить скорострелку."tagclient); 
                } 
            } 
            return 
Plugin_Handled
         } 
    } 
    return 
Plugin_Continue


public 
item_pickup(Handle:event, const String:name[], bool:dontBroadcast

    if (
GetConVarBool(g_Enable)) 
    { 
        
decl String:g_szWeapon[32]; 
        
GetEventString(event"item"g_szWeaponsizeof(g_szWeapon)); 
         
        if (
StrContains(scorostrelkig_szWeaponfalse) != -1
        { 
            new 
client GetClientOfUserId(GetEventInt(event"userid")); 
            
decl item;  
            for (new 
slot 0slot 5slot++) 
            {  
                if (
slot == && (item GetPlayerWeaponSlot(clientslot)) > && RemovePlayerItem(clientitem))  
                {  
                    
AcceptEntityInput(item"Kill");  
                } 
            } 
            
FakeClientCommand(client"use weapon_knife"); 
            
ClientCommand(client"play buttons/weapon_cant_buy.wav"); 
            
PrintToChat(client"\x0700FFFF%N\07FF0000, \07F8F8FFэто оружие запрещено\07FFFF00!"client); 
            for (new 
1<= MaxClientsi++) 
            { 
                if(
IsClientInGame(i) && != client
                { 
                    
decl String:tag[5]; 
                    new 
team GetClientTeam(client); 
                    if(
team == 2
                    { 
                        
Format(tag5"[T]"); 
                    } 
                    else if(
team == 3
                    { 
                        
Format(tag5"[CT]"); 
                    } 
                    
PrintToChat(i"\x0700FFFFИгрок \07FFFF00%s \07F8F8FF%N \x0700FFFFпытается поднять скорострелку."tagclient); 
                } 
            } 
        } 
    } 
}
 
rootДата: Пятница, 12.04.2013, 23:31 | Сообщение # 11
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Измененные сообщения о подключении игроков и смене команды
PHP код:
#include <sourcemod> 
new String:teams[3][] = {"CCCCCCSpectators","FF4040Terrorist \x01force","99CCFFCounter-Terrorist \x01force"

public 
Plugin:myinfo =   

    
name "[KDLP] Game Events",  
    
author "KorDen",  
    
description "",  
    
version "1.0",  
    
url "css32.ru"  

public 
OnPluginStart()  

    
HookEvent("player_disconnect"event_PlayerConnEventHookMode_Pre); 
    
HookEvent("player_connect"event_PlayerConnEventHookMode_Pre); 
    
HookEvent("player_team"event_PlayerTeamEventHookMode_Pre); 

//GameEvents Begin 
public Action:event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast

    new 
client=GetClientOfUserId(GetEventInt(event"userid")) 
    if (!
dontBroadcast && !GetEventBool(event,"disconnect") && !GetEventBool(event,"silent") && IsClientConnected(client)) 
    { 
        
SetEventBroadcast(eventtrue); 
        
PrintToChatAll("\x04%N \x01зашел за \x07%s",client,teams[GetEventInt(event,"team")-1]); 
    } 

public 
Action:event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast

    if (!
dontBroadcast
        
SetEventBroadcast(eventtrue); 
    
decl String:rawmsg[255]; 
    
decl String:rawadmmsg[255]; 
    
decl String:steam[24]; 
    
decl String:nick[48]; 
    
decl String:ip[16]; 
    
decl String:reason[192]; 
    
GetEventString(event"networkid"steamsizeof(steam)); 
    
GetEventString(event"name"nicksizeof(nick)); 
    if (
strcmp(name,"player_connect"))  
    { 
        new 
client=GetClientOfUserId(GetEventInt(event,"userid")) 
        if(
client<1) return; 
        
GetEventString(event"reason"reasonsizeof(reason)); 
        
GetClientIP(clientipsizeof(ip)); // В player_disconnect нет address 
        
ReplaceString(reasonsizeof(reason), "\n"" "); 
        
Format(rawadmmsg,sizeof(rawadmmsg),"\x01Игрок \x07FF0000%s \x01| \x07228B22%s \x01| \x03%s \x01 отключился - \x03%s"nicksteamipreason); 
        
Format(rawmsg,sizeof(rawmsg),"\x01Игрок \x04%s \x01отключился\x07FFFF00 - %s"nickreason); 
    } 
    else 
    {     
        
GetEventString(event"address"ipsizeof(ip)); 
        
SplitString(ip,":",ip,sizeof(ip)); 
        
Format(rawmsg,sizeof(rawmsg), "\x01Игрок \x04%s \x01вступает в игру"nick); 
        
Format(rawadmmsg,sizeof(rawadmmsg), "\x01Игрок \x070099FF%s \x01| \x07228B22%s \x01| \x03%s \x01подключается"nicksteamip); 
    } 
     
    for (new 
1<= MaxClientsi++) 
        if(
IsClientConnected(i) && IsClientInGame(i)) 
            if (
GetUserFlagBits(i)) 
                
PrintToChat(i"%s"rawadmmsg); 
            else 
                
PrintToChat(i"%s"rawmsg); 
}
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Мини скрипты/плагины
  • Страница 1 из 1
  • 1
Поиск: