Написание плагинов

Troyanskaya

Участник
Сообщения
362
Реакции
22
Здравствуйте.Можно ли сделать покупку по одному скину. покупаешь один скин за кт и за т отдельно?Или может разделить как то за кт скины и за т.
 

donut1k

Участник
Сообщения
251
Реакции
146
Здравствуйте.Можно ли сделать покупку по одному скину. покупаешь один скин за кт и за т отдельно?Или может разделить как то за кт скины и за т.
В конфиге прописывайте путь к модели и для какой стороны.
 

NightHunter

Участник
Сообщения
11
Реакции
1
@Felton, проверяй

C-подобный:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION     "1.0"
#define PLUGIN_AUTHOR    "tuty & LegenD"

#define SOUND_FILE    "misc/medic.wav"

new Handle:gPluginEnabled = INVALID_HANDLE;
new Handle:gHealthAmount = INVALID_HANDLE;
new Handle:gMinHealth = INVALID_HANDLE;
new Handle:gMedicCost = INVALID_HANDLE;
new Handle:gShowInChat = INVALID_HANDLE;
new Handle:gMaxTimeUse = INVALID_HANDLE;

new gPlayerMoney;
new gUsedMedic[ 42 ];


public Plugin:myinfo =
{
    name = "CSS Medic",
    author = PLUGIN_AUTHOR,
    description = "You can call a medic.",
    version = PLUGIN_VERSION,
    url = "www.ligs.us"
};
public OnPluginStart()
{
    HookEvent( "player_spawn", Event_PlayerSpawn );
    RegConsoleCmd( "say", Command_Medic );
    RegConsoleCmd( "say_team", Command_Medic );

    CreateConVar( "cssmedic_version", PLUGIN_VERSION, "Версия Плагина Медик", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );

    gPluginEnabled = CreateConVar( "css_medic", "1", "Включение плагина" );
    gMinHealth = CreateConVar( "css_medic_minhealth", "70", "Минимальное хп, при котором будет лечение" );
    gHealthAmount = CreateConVar( "css_medic_healhealth", "100", "Сколько будет хп после лечения медика"  );
    gMedicCost = CreateConVar( "css_medic_cost", "1000", "Стоимость вызова Медика" );
    gShowInChat = CreateConVar( "css_medic_showcall", "1", "Показывать вызов Медика" );
    gMaxTimeUse = CreateConVar( "css_medic_maxuse", "3", "Сколько раз можно использовать Медика за раунд" );

    AutoExecConfig(true, "Medic");
    
    gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" );
    
}
public OnClientConnected( id )
{
    gUsedMedic[ id ] = 0;
}
public OnClientDisconnect( id )
{
    gUsedMedic[ id ] = 0;
}
public OnMapStart()
{
    decl String:MedicSound[ 100 ];
    FormatEx( MedicSound, sizeof( MedicSound ) - 1, "sound/%s", SOUND_FILE );
    
    if( FileExists( MedicSound )  )
    {
        AddFileToDownloadsTable( MedicSound );
        PrecacheSound( SOUND_FILE, true );
    }
}

public Action:Event_PlayerSpawn( Handle:event, const String:name[], bool:dontBroadcast )
{
    if( GetConVarInt( gPluginEnabled ) == 1 )
    {
        new id = GetClientOfUserId( GetEventInt( event, "userid" ) );

        gUsedMedic[ id ] = 0;
    }
}
public Action:Command_Medic( id, args )
{
    decl String:Said[ 128 ];

    GetCmdArgString( Said, sizeof( Said ) - 1 );
    StripQuotes( Said );
    TrimString( Said );
    
    
    if( StrEqual( Said, "!medic" ) || StrEqual( Said, "!doctor" ) || StrEqual( Said, "медик" ) || StrEqual( Said, "vtl" ) || StrEqual( Said, "мед" ) || StrEqual( Said, "VTL" ) || StrEqual( Said, "МЕД" ) )
    {
        if(GetUserFlagBits(id) & ADMFLAG_BAN == ADMFLAG_BAN)
        {
            PrintToChat( id, "\x03[Медик] \x01Извини, ты не можешь вызвать \x04Медика\x01 !" );
            
            return Plugin_Continue;
        }
        if( GetConVarInt( gPluginEnabled ) == 0 )
        {
            PrintToChat( id, "\x03[Медик] \x01Извини, ты не можешь вызвать \x04Медика\x01 !" );
            
            return Plugin_Continue;
        }
            
        if( !IsPlayerAlive( id ) )
        {
            PrintToChat( id, "\x03[Медик] \x01Ты не можешь вызвать \x04Медика \x01когда ты мертв!" );
        
            return Plugin_Continue;
        }
    
        new maxtime = GetConVarInt( gMaxTimeUse );

        if( gUsedMedic[ id ] >= maxtime )
        {
            PrintToChat( id, "\x03[Медик] \x01Ты не смог вызвать \x04Медика \x01,так как можно вызвать только \x03%d \x01раз(а)!", maxtime );
            
            return Plugin_Continue;
        }
        
        new money = GetClientMoney( id );
        new cost = GetConVarInt( gMedicCost );
        
        if( money < cost )
        {
            PrintToChat( id, "\x03[Медик] \x01У тебя нет денег на вызов \x04Медика\x01 ! Нужно %d$", cost );
            
            return Plugin_Continue;
        }
        
        if( GetClientHealth( id ) >= GetConVarInt( gMinHealth ) )
        
        {
            PrintToChat( id, "\x03[Медик] \x01Эй! У тебя много хп для вызова \x04Медика \x01!" );
            
            return Plugin_Continue;
        }
        
        gUsedMedic[ id ]++;

        SetEntProp( id, Prop_Data, "m_iHealth", GetConVarInt( gHealthAmount ) );
        SetClientMoney( id, money - cost );
        PrintToChat( id, "\x03[Медик] \x01 Тебя перевязал \x04Медик\x01 и дал немного таблеток! Теперь ты вылечен." );
    
        if( GetConVarInt( gShowInChat ) != 0 )
        {
            decl String:Name[ 32 ];
            GetClientName( id, Name, sizeof( Name ) - 1 );

            PrintToChatAll( "\x03%s \x01(ОРЕТ): \x04Медик!", Name );
        }
        
        new Float:fOrigin[ 3 ];
        GetClientAbsOrigin( id, Float:fOrigin );
        
        EmitAmbientSound( SOUND_FILE, fOrigin, id, SNDLEVEL_CONVO );
        AttachClientIcon( id );
    }
    
    return Plugin_Continue;
}   
stock SetClientMoney( index, money )
{
    if( gPlayerMoney != -1 )
    {
        SetEntData( index, gPlayerMoney, money );
    }
}
stock GetClientMoney( index )
{
    if( gPlayerMoney != -1 )
    {
        return GetEntData( index, gPlayerMoney );
    }
    
    return 0;
}
stock AttachClientIcon( index )
{
    TE_Start( "RadioIcon" );
    TE_WriteNum( "m_iAttachToClient", index );
    TE_SendToAll();
}
 

Felton

Участник
Сообщения
740
Реакции
56
NightHunter
Не работает.Мне уже скинули рабочий.Спасибо что откликнулся.
 

Colddy

Участник
Сообщения
13
Реакции
1
Можно как-то поправить код, чтобы не было сильного ускорения в баннихопе?
 

Вложения

  • VIP_BHOP_1.3.sp
    1.9 КБ · Просмотры: 6

Colddy

Участник
Сообщения
13
Реакции
1
Модуль плагина - [VIP] BunnyHop Используй этот плагин, там нету сильного ускорения
Мне хотелось бы использовать именно тот плагин, так как в нем есть возможность выставить таймер, после истечения которого, начнет работать баннихоп. Если такое несложно сделать и в этом плагине, который Вы мне скинули, тогда хотелось бы, чтобы помогли в правке кода :)
 

Colddy

Участник
Сообщения
13
Реакции
1
Так он и не ускоряет, смотри квары, плагин тут не причем
Хм, я специально сравнивал в одно и то же время два плагина, один ускоряет, другой - нет.
Быть может чего-то не заметил, какие квары могут влиять, подскажи?
 

Colddy

Участник
Сообщения
13
Реакции
1
Последнее редактирование:

iLoco

А печеньки будут :?
Сообщения
1,826
Реакции
766
Скиньте полный список команд для форматирования хинта (цвет, размер, align и тд)
Сообщения автоматически склеены:

Почему форвард OnPluginEnd не вызывается если сервер крашнуть через _restart?
 

xstage

yep yep
Сообщения
233
Реакции
125
Скиньте полный список команд для форматирования хинта (цвет, размер, align и тд)
Сообщения автоматически склеены:

Почему форвард OnPluginEnd не вызывается если сервер крашнуть через _restart?
Полный вряд ли кто-то скинет тем более вольво фиксили хинт некоторые теги перестали работать, можешь посмотреть хинт в таймерах.
 

Innomeni

Участник
Сообщения
304
Реакции
37
Кто-нибудь, сделайте, пожалуйста, фикс.
 

Nekro

Терра инкогнита
Сообщения
1,285
Реакции
423
Кто-нибудь, сделайте, пожалуйста, фикс.
Фикс отображения можно, а свечения места в 34 версии кто-то исправлял, скидывал.
 

Innomeni

Участник
Сообщения
304
Реакции
37
Фикс отображения можно, а свечения места в 34 версии кто-то исправлял, скидывал.
дак не свечения места, а то, что рандомным игрокам выдается, даже если не покупали. И если купить - отключить не получится, только перезаход и/или смена карты.
 

-=|УЧЕНИК|=-

Участник
Сообщения
213
Реакции
26
Привет народ
Возможно написать плагин,чтоб можно было админам,ограничить смену карт в админки? ну при этом,чтоб голосования в админки остались?
Или может какой то переписать плагин можно<либо как-то сделать это.
Пробовал убрать флаг,который отвечает за смену карты,ну его убираешь и пропадает голосования за карту.
А хотелось бы чтоб было,чтоб голосования только осталось в админке,а пункта смены карт не было.

Готов конпенсировать работы.

Заранее благодарю за ответ
Версия игры 34
 

SpeEdE BLR

Участник
Сообщения
30
Реакции
0
C-подобный:
#include <ESA>
Кто сможешь скинуть этот инклуд?
 

zmchel

Участник
Сообщения
51
Реакции
14
Привет народ
Возможно написать плагин,чтоб можно было админам,ограничить смену карт в админки? ну при этом,чтоб голосования в админки остались?
Или может какой то переписать плагин можно<либо как-то сделать это.
Пробовал убрать флаг,который отвечает за смену карты,ну его убираешь и пропадает голосования за карту.
А хотелось бы чтоб было,чтоб голосования только осталось в админке,а пункта смены карт не было.

Готов конпенсировать работы.

Заранее благодарю за ответ
Версия игры 34
1) сделать переопределение для команды "sm_map" не пробовали?

2) еще вариант в basecommands.sp убрать строку
hTopMenu.AddItem("sm_map", AdminMenu_Map, server_commands, "sm_map", ADMFLAG_CHANGEMAP);
ну и скомпилировать
+ в configs/adminmenu_sorting.txt убрать "item" "sm_map"
доступ к sm_map это не уберет у флага, но уберет из админменю
 
Сверху