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

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

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

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

3 страниц V   1 2 3

amx_kick заменить на перевод в наблюдатели

Статус пользователя TarikYuzkiv
сообщение 12.3.2014, 22:42
Сообщение #21
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(Legenda @ 13.3.2014, 0:41) *
хз как там скобки правильно ставить
сделай так
Код:
public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])
if (cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) {
is_user_alive(Pid) ? kill_and_transfer(Pid) : cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}

}

public kill_and_transfer(Pid)
{
user_silentkill(Pid)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}

В итоге вывалится та же ошибка если игрока не будет на сервере, нет?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя usercn
сообщение 12.3.2014, 22:44
Сообщение #22


Стаж: 12 лет

Сообщений: 341
Благодарностей: 140
Полезность: 495

Цитата(Legenda @ 12.3.2014, 23:41) *
хз как там скобки правильно ставить
сделай так
Код:
public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])
if (cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) {
is_user_alive(Pid) ? kill_and_transfer(Pid) : cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}

}

public kill_and_transfer(Pid)
{
user_silentkill(Pid)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}



Чем твой код принципиально отличается от моего, кроме того что ты накрутил там много.

Код:
public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])

if (is_user_alive(Pid))
user_silentkill(Pid)

cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}


Просунутий сервер з максимумом зброї, можливо старійший в Україні
[UA] DNET CS Public Server #1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 12.3.2014, 22:45
Сообщение #23
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690


Код:
public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])
if (cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) {
if(is_user_alive(Pid) ? kill_and_transfer(Pid) : cs_set_user_team(Pid,CS_TEAM_SPECTATOR))
}

}

public kill_and_transfer(Pid)
{
user_silentkill(Pid)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}



go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 12.3.2014, 22:45
Сообщение #24


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

тем, что тут твоего кода вообще нет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя csnet
сообщение 12.3.2014, 22:47
Сообщение #25
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

выложил бы весь код, а то вообще не понятно было что делать.
посмотри через пост выше


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 12.3.2014, 22:48
Сообщение #26
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Короче, ТС, пробуйте. Надеюсь, что я Вас правильно понял.

Код
public ActualKick(Selected)
{
    new Pid = get_user_index(sp_PlayerName[Selected])
  
    if(is_user_connected(Pid)){
        if(cs_get_user_team(Pid) != CS_TEAM_SPECTATOR){
            if (is_user_alive(Pid)){
                user_silentkill(Pid)
            }
  
                cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
        }
    }
}


UDP Немного подправил, кое о чем не подумал.
UDP2 Подправил, вроде учёл все варианты.

Отредактировал: TarikYuzkiv, - 12.3.2014, 23:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя usercn
сообщение 12.3.2014, 22:52
Сообщение #27


Стаж: 12 лет

Сообщений: 341
Благодарностей: 140
Полезность: 495

Так проще, если не хватало проверки на спектаторы. ведь в остальном алгоритм одинаковый
Никто не сказал причину по которой могут выпадать ошибки

Скорее всего ошибка вываливалась, когда игрока начинали переводить в спектаторы, но за секунду раньше
он сам вышел с сервера


Отредактировал: usercn, - 12.3.2014, 22:54


Просунутий сервер з максимумом зброї, можливо старійший в Україні
[UA] DNET CS Public Server #1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 12.3.2014, 22:55
Сообщение #28


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(TarikYuzkiv @ 13.3.2014, 0:48) *
Короче, ТС, пробуйте. Надеюсь, что я Вас правильно понял.

Код
public ActualKick(Selected)
{
    new Pid = get_user_index(sp_PlayerName[Selected])
  
    if((cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) && is_user_connected(Pid)){
        if (is_user_alive(Pid)){
            user_silentkill(Pid)
        }
  
        cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
    }
}


UDP Немного подправил, кое о чем не подумал.

не правильно так делать в принципе
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 12.3.2014, 22:57
Сообщение #29
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(Legenda @ 13.3.2014, 0:55) *
не правильно так делать в принципе

Неправ я, проверку на коннект не туда впихнул.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 12.3.2014, 23:02
Сообщение #30
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

Код:


// fakemeta needed



new const team = 114
#define Team(%0) get_pdata_int(%0, team , 5)
#define alive(%0) (is_user_alive(%0))

public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])

switch(Team(Pid))
{
case 3: return // игнорируем спектатор
case 1,2: if(alive(Pid) ? kill_and_transfer(Pid) : cs_set_user_team(Pid, CS_TEAM_SPECTATOR))
// если игрок в какой то команде, если жив килл и трансфер, если нет только трансфер
// set_pdata не обновит Tab
}
}

public kill_and_transfer(Pid)
{
user_silentkill(Pid)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}



Отредактировал: csnet, - 12.3.2014, 23:05


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя usercn
сообщение 12.3.2014, 23:06
Сообщение #31


Стаж: 12 лет

Сообщений: 341
Благодарностей: 140
Полезность: 495

Ну так впихни куда правильно. Я уже не пойму что и как.

Почему код приведёный ниже является не правильным??
Код:
public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])

if((cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) && is_user_connected(Pid)){
if (is_user_alive(Pid)){
user_silentkill(Pid)
}

cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}
}


Просунутий сервер з максимумом зброї, можливо старійший в Україні
[UA] DNET CS Public Server #1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 12.3.2014, 23:08
Сообщение #32
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(usercn @ 13.3.2014, 1:06) *
Ну так впихни куда правильно. Я уже не пойму что и как.

Почему код приведёный ниже является не правильным??
Код:
public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])

if((cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) && is_user_connected(Pid)){
if (is_user_alive(Pid)){
user_silentkill(Pid)
}

cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}
}

Потому что теперь выдаст ошибку проверка команды.

Вообще, попрошу не грубить, тут по сути и так все сделали за Вас. И были бы гораздо проще, если бы Вы предоставили исходник того, во что пытаетесь впихнуть это все. Например, не понятно, есть ли в вашем "AFK менеджере" проверка на команду игрока, или же нет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 12.3.2014, 23:11
Сообщение #33


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(usercn @ 13.3.2014, 1:02) *
Ну так впихни куда правильно. Я уже не пойму что и как.

сделай так и не парься


Код:

public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])

if (cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) {
is_user_alive(Pid) ? kill_and_transfer(Pid) : tranfer(Pid)
}

}

public kill_and_transfer(Pid)
{
user_silentkill(Pid)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}

public tranfer(Pid)
{
if(is_user_connected(player)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
else
server_print("dev:::player out")
}


с точки зрения логики - код выше делает два раза одно и то же
ибо is_user_alive включает в себя еще и is_user_connected
это извращение и не совсем не правильно
но можно так и использовать, большей проблемой не является

хотя по большой части можно и не парится
в любом случаи вызывать
user_silentkill
Код:

public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])

if (cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) {
user_silentkill(Pid)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}

}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 12.3.2014, 23:18
Сообщение #34
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(Legenda @ 13.3.2014, 1:11) *
сделай так и не парься


Код:

public ActualKick(Selected)
{
new Pid = get_user_index(sp_PlayerName[Selected])

if (cs_get_user_team(Pid) != CS_TEAM_SPECTATOR) {
is_user_alive(Pid) ? kill_and_transfer(Pid) : tranfer(Pid)
}

}

public kill_and_transfer(Pid)
{
user_silentkill(Pid)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
}

public tranfer(Pid)
{
if(is_user_connected(player)
cs_set_user_team(Pid,CS_TEAM_SPECTATOR)
else
server_print("dev:::player out")
}


с точки зрения логики - код выше делает два раза один и то же
ибо is_user_alive включает в себя еще и is_user_connected
это извращение и не совсем не правильно
но можно так и использовать, большей проблемой не является

Игрок подключен? Проверяем команду, если != спектаторам, то проверяем, жив игрок, или нет. Жив? Убиваем и переносим в спектаторы. Мертв? Переносим в спектаторы. В вашем случае "cs_get_user_team" не выдаст ошибку если игрока уже нет на сервере?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 12.3.2014, 23:47
Сообщение #35
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

вы оба пишете полнейший бред, оставляю вас лечится до утра

Отредактировал: csnet, - 12.3.2014, 23:47


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 12.3.2014, 23:59
Сообщение #36
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(csnet @ 13.3.2014, 1:47) *
вы оба пишете полнейший бред, оставляю вас лечится до утра

Можете сказать, в чем же заключается мой бред?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 13.3.2014, 0:25
Сообщение #37
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Больше ничего и не нужно :\
Код:
public ActualKick(Selected) {
new Pid = get_user_index(sp_PlayerName[Selected])

cs_set_user_team(Pid, CS_TEAM_SPECTATOR, CS_DONTCHANGE)
if(is_user_alive(Pid))
user_kill(Pid)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 13.3.2014, 0:29
Сообщение #38
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(proff_q @ 13.3.2014, 2:25) *
Больше ничего и не нужно :\
Код:
public ActualKick(Selected) {
new Pid = get_user_index(sp_PlayerName[Selected])

cs_set_user_team(Pid, CS_TEAM_SPECTATOR, CS_DONTCHANGE)
if(is_user_alive(Pid))
user_kill(Pid)
}

Цитата(usercn @ 12.3.2014, 2:44) *
Код:

L 03/11/2014 - 21:21:51: [CSTRIKE] Invalid player 10
L 03/11/2014 - 21:21:51: [AMXX] Run time error 10: native error (native "cs_set_user_team")

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 13.3.2014, 0:32
Сообщение #39
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

TarikYuzkiv,
Во первых, код разный, по крайней мере порядок выполнения функций разный.
Во вторых, пользуюсь этим куском 2 года, никаких эрроров не выдавало.

И скорее всего нужно проверять коннект к серверу, а не проверку на живность.
Если бы действие выполнялось мгновенно, то хватило бы и юзер элайв.
А тут сначала меню формируется из игроков, в этот момент он отключается, мы вызываем функцию, а его уже нет, имхо.

Отредактировал: proff_q, - 13.3.2014, 0:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 13.3.2014, 0:35
Сообщение #40
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(proff_q @ 13.3.2014, 2:32) *
TarikYuzkiv,
Во первых, код разный, по крайней мере порядок выполнения функций разный.
Во вторых, пользуюсь этим куском 2 года, никаких эрроров не выдавало.

Ну так может у Вас где-то в другом месте проверяется подключение игрока? :\
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
3 страниц V   1 2 3
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: