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

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

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

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

Возврат значения

Статус пользователя HALBeC
сообщение 9.2.2016, 19:36
Сообщение #1
Стаж: 12 лет

Сообщений: 29
Благодарностей: 4
Полезность: 18

Хотел вернуть найденное значение в одной функции и передать его в другую.
Вот, что получилось:
Код
#include amxmodx
#include cstrike
#include amxmisc

#define PLUGIN "Check"
#define VERSION "1.0"
#define AUTHOR "Author"

new bool:get_userteam[33]
public plugin_init()
{
    register_plugin(PLUGIN,VERSION,AUTHOR)
    register_clcmd("say /team","function")
}
public check_team(id, bool:inf)
{
    if (!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED
    //client_print(id, print_chat, cs_get_user_team(id) == CS_TEAM_CT ? "Return 1":"Return 0")
    if (cs_get_user_team(id) == CS_TEAM_CT) inf = true
    else  inf = false
    return inf;
    //cs_get_user_team(id) == CS_TEAM_CT ? return 1: return 0
}

public function(id)
{
    get_userteam[id] = check_team(id)
    if (get_userteam[id])
    client_print(id, print_console, "Team: Counter Terrorist")
    else
    client_print(id, print_console, "Team: Terrorist")
}

Конечно, это не работает(иначе не писал бы), поэтому прошу помощи. Желаю понять: что к чему, и как правильно выполнить передачу, а также разобраться с тернарной условной операцией, т.к. у меня она не выполняется.
Буду благодарен за помощь.

Отредактировал: HALBeC, - 9.2.2016, 19:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 9.2.2016, 20:22
Сообщение #2
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

HALBeC,
Код:

#include <amxmodx>
#include <cstrike>

public plugin_init()
{
register_plugin( "test", "0.1", "test" )
register_clcmd("say /test", "f1") //команда /test в чат для проверки
}

public f1(id)
{
if (!is_user_connected(id)) return //прерываем выполнение

new bool:inf;
new CsTeams:my_team
my_team = cs_get_user_team(id) //чтобы не дергать постоянно нативу cs_get_user_team
switch (my_team){
case (CS_TEAM_CT):{
inf = true
f2(id, inf) //вызывам функцию f2 и передаем id игрока и inf
}
case (CS_TEAM_T):{
inf = false
f2(id, inf) //вызывам функцию f2 и передаем id игрока и inf
}
case (CS_TEAM_SPECTATOR):return //прерываем выполнение

case (CS_TEAM_UNASSIGNED): return //прерываем выполнение
}
}

public f2(id, inf)
{
if (inf) // если inf == true Значит CT
{
client_print(id, print_chat,"My team is CT")
}
else //иначе T
{
client_print(id, print_chat,"My team is T");
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя JIuXeP
сообщение 9.2.2016, 20:33
Сообщение #3


Стаж: 12 лет

Сообщений: 338
Благодарностей: 205
Полезность: 792

1) булевая (!) переменная (get_userteam) тут вообще не надо, проверяй сразу на check_team(id), т.к. он у тебя УЖЕ возвращает значение.
2) Ну и на будущее... !get_userteam[id] (отрицание) вернет террористов и спектаторов (по твоей проверке).
Да, я вижу проверку на is_user_alive, но тогда надо применять её и в других функциях... иначе check_team(id) не имеет смысла. Получится костыль.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя HALBeC
сообщение 9.2.2016, 21:25
Сообщение #4
Стаж: 12 лет

Сообщений: 29
Благодарностей: 4
Полезность: 18

Спасибо за ответы.
JIuXeP, мне нужно было отловить именно CT, поэтому я не стал описывать не CT.

То, что получилось
Код
#include amxmodx
#include cstrike
#include amxmisc

#define PLUGIN "Check"
#define VERSION "1.0"
#define AUTHOR "Author"

public plugin_init()
{
    register_plugin(PLUGIN,VERSION,AUTHOR)
    register_clcmd("say /team","function")
}
public check_team(id)
{
    if (!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED;
    //client_print(id, print_chat, cs_get_user_team(id) == CS_TEAM_CT ? "Return 1":"Return 0")
    if (cs_get_user_team(id) == CS_TEAM_CT) return 1;
        
    return 0;
}

public function(id)
{
    if (check_team(id))
    {
        client_print(id, print_chat, "Team: Counter-Terrorist")
    }
    else
    {
        client_print(id, print_chat, "Team: NOT Counter-Terrorist")
    }
}

Приму советы по поводу кода :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 9.2.2016, 22:19
Сообщение #5


Стаж: 12 лет

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

Проверка is_user_alive(id) в себе имеет проверку на is_user_connected(id)
Код
if (!is_user_connected(id) || !is_user_alive(id))
Заменить на
if (!is_user_alive(id))


[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 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: