Все вопросы по скриптингу для 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" раздаётся ещё и смех.
Смех в CS уже есть:
- Код: Выделить всё
"spk \'hgrunt/c2a3_hg_laugh\'"
Осталось только включать его в нужный момент после сообщения о победе команды. Можно ли такое сделать для CS?
-
vktRus
-
- Сообщения: 46
- Зарегистрирован: 24 авг 2009, 12:16
- Благодарил (а): 5 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Counter-Strike 1.6
DJ_WEST » 17 сен 2009, 08:48
- Код: Выделить всё
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
vktRus » 22 сен 2009, 11:41
А можно добавить проверку того, что в проигравшей команде более одного человека?
-
vktRus
-
- Сообщения: 46
- Зарегистрирован: 24 авг 2009, 12:16
- Благодарил (а): 5 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Counter-Strike 1.6
DJ_WEST » 22 сен 2009, 12:07
Используй:
- Код: Выделить всё
new s_Players[32], i_Count
get_players(s_Players, i_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
vktRus » 22 сен 2009, 12:33
Вроде так?
- Код: Выделить всё
public Round_Win()
{
new s_Players[32], i_Count_t
get_players(s_Players, i_Count_t, "e", "TERRORIST")
new s_Players[32], i_Count_ct
get_players(s_Players, i_Count_ct, "e", "CT")
new s_Reason[32]
read_data(2, s_Reason, charsmax(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
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
vktRus » 23 сен 2009, 11:57
А как можно удобно текущее соостояние переменных получать?
-
vktRus
-
- Сообщения: 46
- Зарегистрирован: 24 авг 2009, 12:16
- Благодарил (а): 5 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Counter-Strike 1.6
Co6aka » 23 сен 2009, 12:37
get_cvar_float ??
-
Co6aka
-
- Сообщения: 226
- Зарегистрирован: 30 авг 2009, 21:19
- Благодарил (а): 54 раз.
- Поблагодарили: 114 раз.
- Языки программирования: Counter-Strike 1.6
-
vktRus » 23 сен 2009, 12:41
Это как? Можно подробнее?
-
vktRus
-
- Сообщения: 46
- Зарегистрирован: 24 авг 2009, 12:16
- Благодарил (а): 5 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Counter-Strike 1.6
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