Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Подскажите как сделать auto_join_spector через 20 сек.

Статус пользователя panda08
сообщение 10.5.2015, 19:14
Сообщение #1


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

Нужно так:
Чтобы игроков (которые заходит на сервер) кидало за спекторов через 20 сек. после того как начался раунд.

Код:
/* AMX Mod X
* Auto Join on Connect
*
* © Copyright 2007 by VEN
*
* This file is provided as is (no warranties)
*
* DESCRIPTION
* Plugin allow to players automatically join team/team&class on connect.
*
* CVARS
* ajc_team (0: OFF, N: team index, 5: auto team, default: 5) - controls team join
* ajc_class (0: OFF, N: class index, 5: auto class, default: 5) - controls class join
* ajc_imm (0: OFF, 1: ON, default: 1) - don't affect on immuned players (ON/OFF)
*
* CREDITS
* Major__ - inquiry
*/

#include <amxmodx>

#define PLUGIN_NAME "Auto Join on Connect"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

#define IMMUNITY_ACCESS_LEVEL ADMIN_IMMUNITY

#define AUTO_TEAM_JOIN_DELAY 0.1

#define TEAM_SELECT_VGUI_MENU_ID 2


new g_pcvar_team
new g_pcvar_class
new g_pcvar_imm

public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_message(get_user_msgid("ShowMenu"), "message_show_menu")
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")

g_pcvar_team = register_cvar("ajc_team", "6")
g_pcvar_class = register_cvar("ajc_class", "0")
g_pcvar_imm = register_cvar("ajc_imm", "0")
}

public message_show_menu(msgid, dest, id) {
if (!should_autojoin(id))
return PLUGIN_CONTINUE

static team_select[] = "#Team_Select"
static menu_text_code[sizeof team_select]
get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
if (!equal(menu_text_code, team_select))
return PLUGIN_CONTINUE

set_force_team_join_task(id, msgid)

return PLUGIN_HANDLED
}

public message_vgui_menu(msgid, dest, id) {
if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !should_autojoin(id))
return PLUGIN_CONTINUE

set_force_team_join_task(id, msgid)

return PLUGIN_HANDLED
}

bool:should_autojoin(id) {
return (get_pcvar_num(g_pcvar_team) && !get_user_team(id) && !task_exists(id) && (!get_pcvar_num(g_pcvar_imm) || !(get_user_flags(id) & IMMUNITY_ACCESS_LEVEL)))
}

set_force_team_join_task(id, menu_msgid) {
static param_menu_msgid[2]
param_menu_msgid[0] = menu_msgid
set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
}

public task_force_team_join(menu_msgid[], id) {
if (get_user_team(id))
return

static team[2], class[2]
get_pcvar_string(g_pcvar_team, team, sizeof team - 1)
get_pcvar_string(g_pcvar_class, class, sizeof class - 1)
force_team_join(id, menu_msgid[0], team, class)
}

stock force_team_join(id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0") {
static jointeam[] = "jointeam"
if (class[0] == '0') {
engclient_cmd(id, jointeam, team)
return
}

static msg_block, joinclass[] = "joinclass"
msg_block = get_msg_block(menu_msgid)
set_msg_block(menu_msgid, BLOCK_SET)
engclient_cmd(id, jointeam, team)
engclient_cmd(id, joinclass, class)
set_msg_block(menu_msgid, msg_block)
}


Отредактировал: panda08, - 11.5.2015, 21:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя panda08
сообщение 10.5.2015, 20:05
Сообщение #2


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

Что сложная задача?

UP
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 10.5.2015, 20:18
Сообщение #3
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

Задача не сложная, она бессмысленная. Зашел игрок,начал играть и через 20 секунд в спектры переводим, спрашивается зачем?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя panda08
сообщение 10.5.2015, 20:21
Сообщение #4


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

Цитата(Radius @ 10.5.2015, 21:18) *
Задача не сложная, она бессмысленная. Зашел игрок,начал играть и через 20 секунд в спектры переводим, спрашивается зачем?


Потому что мне так нужно. Без вопросов зачем.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 10.5.2015, 20:24
Сообщение #5
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

panda08, такой ответ меня не устроил. Не занимаюсь бессмысленными вещами и не поддерживаю начинания в этом.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя panda08
сообщение 10.5.2015, 20:26
Сообщение #6


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

Цитата(Radius @ 10.5.2015, 21:24) *
panda08, такой ответ меня не устроил. Не занимаюсь бессмысленными вещами и не поддерживаю начинания в этом.


Если хочешь на мороженку то так и скажи...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя panda08
сообщение 11.5.2015, 14:32
Сообщение #7


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

up

Отредактировал: GOOD FELLOW, - 11.5.2015, 14:51
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.5.2015, 15:04
Сообщение #8


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(panda08 @ 10.5.2015, 21:26) *
Если хочешь на мороженку то так и скажи...

Причем тут мороженко ?
Ты бы объяснил зачем тебе ...



[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя panda08
сообщение 11.5.2015, 15:24
Сообщение #9


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

Я не прошу сделать за меня, а подсказать. Хоть мануал подкинте...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 11.5.2015, 15:59
Сообщение #10


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

set_task
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя panda08
сообщение 11.5.2015, 19:05
Сообщение #11


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

Цитата(GOOD FELLOW @ 11.5.2015, 16:59) *
set_task


Проблема в том что я знаю только как вызвать функцию через время set_task
Типа так?:

#define TIME 20.0

public plugin_init()
{
register_logevent("RoundStart", 2, "1=Round_Start");
}

public RoundStart()
{
set_task(TIME, "message_show_menu")
}

или message_vgui_menu

Отредактировал: panda08, - 11.5.2015, 19:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя simba
сообщение 11.5.2015, 20:15
Сообщение #12
Стаж: 11 лет

Сообщений: 132
Благодарностей: 45
Полезность: 236

1. Ловим начало раунда
2. Сет_таск после начала раунда на 20 сек.
3. Функция, которая запускается через 20 сек. и переводит игроков в спектры.

Примерно, это будет вот так выглядеть:

Код
public plugin_init()
register_logevent "start_round",   2, "1=Round_Start"

public start_round()
set_task 20.0, "transfer", 0

public transfer(task)
{
remove_task task

    for (new i = 1; i < 33; i++)
    {
        if (!is_user_connected(i)) continue
    user_kill i // живых не переведешь
    cs_set_user_team i, CS_TEAM_SPECTATOR
    }
}


Отредактировал: simba, - 11.5.2015, 20:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.5.2015, 21:04
Сообщение #13


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Что-то мне кажется что не спасет одно лишь
user_kill(id)

посмотри такой плагин как unlimited choose team

P.S.
Цитата
public cmdChooseTeam(id)
{
if (is_user_alive(id))
{
message_begin(MSG_ONE, g_msgScoreAttrib, _, id) // Thx to pic0
write_byte(id)
write_byte((1<<0))
message_end()
}
if (is_user_connected(id))
set_pdata_int(id, 125, get_pdata_int(id, 125, 5) & ~(1<<8), 5) // Thx to ConnorMcLeod
}


А зачем вам вообще этот геморой если можно обойтись

сет_таксом и amx_transfer @all spec


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя panda08
сообщение 11.5.2015, 21:21
Сообщение #14


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

Сори народ, я не дописал что нужно переводить тех кто заходит на серв. give_rose.gif

Отредактировал: panda08, - 11.5.2015, 21:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.5.2015, 21:41
Сообщение #15


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Код:

public client_putinserver(id)
{
if(is_user_hltv(id))
return
set_task 20 сек ...
}




говорили же тебе что бы сразу описал подробней свою задумку...


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя panda08
сообщение 11.5.2015, 23:39
Сообщение #16


Стаж: 12 лет

Сообщений: 116
Благодарностей: 23
Полезность: 130

еще раз что нужно, по действиям:
народ зашел на серв, свободно выбирая за какую команду играть;
начался раунд;
прошло 20 секунд от начала раунда;
еще ктота заходит на сервер и его кидает за спекторов без возможности выбирать команду;
Конец.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 12.5.2015, 0:46
Сообщение #17
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(panda08 @ 12.5.2015, 0:39) *
еще раз что нужно, по действиям:
народ зашел на серв, свободно выбирая за какую команду играть;
начался раунд;
прошло 20 секунд от начала раунда;
еще ктота заходит на сервер и его кидает за спекторов без возможности выбирать команду;
Конец.

crazy.gif Block Reconnect Respawn
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: