Русское сообщество по скриптингу

Дополнительная стимуляция

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Дополнительная стимуляция

Сообщение vktRus » 16 сен 2009, 16:20

В игре UrbanTerror (в 4.1 нет античита. Жду 4.2) есть такая фича: если одна команда вынесла за раунд другую без потерь, то помимо голосового сообщения "CT (T) win" раздаётся ещё и смех. :-D
Смех в CS уже есть:
Код: Выделить всё
"spk \'hgrunt/c2a3_hg_laugh\'"
Осталось только включать его в нужный момент после сообщения о победе команды. Можно ли такое сделать для CS?
Аватара пользователя
vktRus
 
Сообщения: 46
Зарегистрирован: 24 авг 2009, 12:16
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.
Языки программирования: Counter-Strike 1.6

Re: Дополнительная стимуляция

Сообщение DJ_WEST » 17 сен 2009, 08:48

Код: Выделить всё
#include <amxmodx>

#define PLUGIN "Laugh Win"
#define VERSION "1.0"
#define AUTHOR "DJ_WEST"

#define TEAM_T 1
#define TEAM_CT 2
#define SOUND "hgrunt/c2a3_hg_laugh"

new bool:g_b_T_Loose = false, bool:g_b_CT_Loose = false

public plugin_init
() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("TextMsg", "Round_Win", "a", "2=#Terrorists_Win", "2=#CTs_Win")
    register_event("DeathMsg", "Player_Death", "a")
    register_event("HLTV", "New_Round", "a", "1=0", "2=0")
}

public Round_Win()
{
    new s_Reason[32]
    read_data(2, s_Reason, charsmax(s_Reason))
    
    if 
(equal(s_Reason, "#CTs_Win") && !g_b_CT_Loose || equal(s_Reason, "#Terrorists_Win") && !g_b_T_Loose)
        client_cmd(0, "spk %s", SOUND)
}

public Player_Death()
{
    if (g_b_T_Loose && g_b_CT_Loose)
        return PLUGIN_CONTINUE
        
    new id
, i_Team
    
    id 
= read_data(2)
    i_Team = get_user_team(id)
    
    switch
(i_Team)
    {
        case TEAM_T: g_b_T_Loose = true
        case TEAM_CT
: g_b_CT_Loose = true
    
}
    
    return PLUGIN_CONTINUE
}

public New_Round()
{
    g_b_T_Loose = false
    g_b_CT_Loose 
= false
}
 


Не тестировал. По идеи звук играется всем игрокам, если:
одна команда вынесла за раунд другую без потерь
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Дополнительная стимуляция

Сообщение vktRus » 22 сен 2009, 11:41

А можно добавить проверку того, что в проигравшей команде более одного человека?
Аватара пользователя
vktRus
 
Сообщения: 46
Зарегистрирован: 24 авг 2009, 12:16
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.
Языки программирования: Counter-Strike 1.6

Re: Дополнительная стимуляция

Сообщение DJ_WEST » 22 сен 2009, 12:07

Используй:
Код: Выделить всё
new s_Players[32], i_Count

// "TERRORIST" - для террористов
// "CT" - для контер-террористов
get_players(s_Playersi_Count"e""TERRORIST")
 

В i_Count будет храниться кол-во игроков по данной команде.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Дополнительная стимуляция

Сообщение vktRus » 22 сен 2009, 12:33

Вроде так?
Код: Выделить всё
public Round_Win()
    {
    new 
s_Players[32], i_Count_t
    
// "TERRORIST" - для террористов
    // "CT" - для контер-террористов
    
get_players(s_Playersi_Count_t"e""TERRORIST")

    new 
s_Players[32], i_Count_ct
    
// "TERRORIST" - для террористов
    // "CT" - для контер-террористов
    
get_players(s_Playersi_Count_ct"e""CT")
             
    new 
s_Reason[32]
        
read_data(2s_Reasoncharsmax(s_Reason))
        
        if (
equal(s_Reason"#CTs_Win") && !g_b_CT_Loose && (i_Count_t 1) || equal(s_Reason"#Terrorists_Win") && !g_b_T_Loose && (i_Count_ct 1))
            
client_cmd(0"spk %s"SOUND)
    } 
Аватара пользователя
vktRus
 
Сообщения: 46
Зарегистрирован: 24 авг 2009, 12:16
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.
Языки программирования: Counter-Strike 1.6

Re: Дополнительная стимуляция

Сообщение DJ_WEST » 22 сен 2009, 21:47

Вроде так?

Вроде, проверяй.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Дополнительная стимуляция

Сообщение vktRus » 23 сен 2009, 11:57

А как можно удобно текущее соостояние переменных получать?
Аватара пользователя
vktRus
 
Сообщения: 46
Зарегистрирован: 24 авг 2009, 12:16
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.
Языки программирования: Counter-Strike 1.6

Re: Дополнительная стимуляция

Сообщение Co6aka » 23 сен 2009, 12:37

get_cvar_float ??
Аватара пользователя
Co6aka
 
Сообщения: 226
Зарегистрирован: 30 авг 2009, 21:19
Благодарил (а): 54 раз.
Поблагодарили: 114 раз.
Языки программирования: Counter-Strike 1.6

Re: Дополнительная стимуляция

Сообщение vktRus » 23 сен 2009, 12:41

Это как? Можно подробнее?
Аватара пользователя
vktRus
 
Сообщения: 46
Зарегистрирован: 24 авг 2009, 12:16
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.
Языки программирования: Counter-Strike 1.6

Re: Дополнительная стимуляция

Сообщение DJ_WEST » 23 сен 2009, 17:03

А как можно удобно текущее соостояние переменных получать?

Каких?
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

След.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 17