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

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

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

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

5 страниц V   1 2 ... 3 4 »

вызвать функцию после возрождения

[РЕШЕНО]
Статус пользователя MrLegiongame
сообщение 18.10.2016, 16:14
Сообщение #1
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

Всем привет, возник такой вопрос , y меня есть сервер KnifeDM ,я хочу чтобы писало в чат сообщение при каждом возрождение игрока(смерть и последующие автоматическая воскрешение) , подскажите пожалуйста как можно это устроить thank_you2.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 16:15
Сообщение #2
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Нужно с отсечкой после респа писать ? Или сразу же ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 16:18
Сообщение #3
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

Цитата(SISA @ 18.10.2016, 17:15) *
Нужно с отсечкой после респа писать ? Или сразу же ?

желательно c отсечкой smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 16:22
Сообщение #4
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

С отсечкой без жопных костылей ничего нет, кроме TextArgs, но я не уверен, сработает ли оно без байзоны.

Попробуй:

register_event("HudTextArgs", "Event_HudTextArgs", "be", "1=#Hint_press_buy_to_purchase");

public Event_HudTextArgs(id)
{
сюда код суй

return PLUGIN_CONTINUE;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 16:25
Сообщение #5
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, а можно это осуществить с помощью if ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 16:26
Сообщение #6
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(MrLegiongame @ 18.10.2016, 18:25) *
SISA, а можно это осуществить с помощью if ?


Чтооо ? Подробнее.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 16:31
Сообщение #7
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, Я хочу чтобы функция запускалась при определенных условиях(после воскрешения игрока) при этом я не могу использовать public ,мне нужно воплотить это с помощью if так как это будет намного легче и удобней .
scripte

Код:

new players[32], team[32], num, player;

get_players(players, num, "ah")

for(new i = 0; i < num; i++)
{
player = players[i];

if((!is_user_alive(player)))
{
set_task(1.0, "allrespawn",_,_,_, "a", 299)
get_user_team(player,team,32);
strip_user_weapons(player);
set_task(0.1, "RandGlow"); // Glow
}
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 16:32
Сообщение #8
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Если нужно надежно, тогда:

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);


public fw_PlayerSpawn_Post(id)
{
if (!is_user_alive(id))
return HAM_IGNORED;

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

return HAM_IGNORED;
}

Если нужна отсечка, тогда set_task запускай из PlayerSpawn_Post
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 16:38
Сообщение #9
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, Все ,работает, cпасибо за помощь ok.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 16:39
Сообщение #10
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Ну во первых:

Код
new players[32], team[32], num, player;

      get_players(players, num, "ah")

      for(new i = 0; i < num; i++)
      {
         player = players[i];

         if((!is_user_alive(player)))
         {
             set_task(1.0, "allrespawn",_,_,_, "a", 299)
            get_user_team(player,team,32);
            strip_user_weapons(player);
            set_task(0.1, "RandGlow"); // Glow
      }
}


Уже не корректно.

if((!is_user_alive(player)))

зачем тут столько скобок ?

Если ты ставишь в функции get_players флаг "a" зачем ещё раз проверяешь на is_user_alive внутри цикла ? У тебя и так, все живые в цикле будут.

Код
set_task(1.0, "allrespawn",_,_,_, "a", 299)


Что такое 299 ?

Код
get_user_team(player,team,32);


А это зачем ?

Цитата
при этом я не могу использовать public


Почему ? Тогда как ты собираешься перехватывать функции без их глобального хука ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 16:40
Сообщение #11
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, Я уже разобрался с помощью вашего предыдущего ответа good.gif smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 16:48
Сообщение #12
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, возникла проблема , эта функция запускается постоянно но мне надо контролировать ее , допустим при нажатии пункта в меню она будет запускаться .
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 17:07
Сообщение #13
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(MrLegiongame @ 18.10.2016, 18:48) *
SISA, возникла проблема , эта функция запускается постоянно но мне надо контролировать ее , допустим при нажатии пункта в меню она будет запускаться .


Ham_Spawn перехватывает любой респ. В данном случае, игрока "player"

Если вызываете респ игрока при нажатии какой-то кнопки, то вполне логично при нажатии и выводить сообщение, а не перехватывать функции.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 17:20
Сообщение #14
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, мне надо чтобы после каждого возрождения игрока , ему давали гранаты,hp... но к сожалению ему не выдается гранаты и hp а только свечение ( "RandGlow")

tipa scripte

Код
public fw_PlayerSpawn_Post(id)
{
  if(vibri_event == 1)
  {
   if (!is_user_alive(id))
   return HAM_IGNORED;
        
   if((is_user_alive(id)))
    {
    strip_user_weapons(id);
    set_task(0.1, "RandGlow"); // Glow
    give_item(id, "weapon_hegrenade");
    cs_set_user_bpammo(id, CSW_HEGRENADE, 100)
    set_user_health(id, 100);
    }
   }
     return HAM_IGNORED;
}



Отредактировал: MrLegiongame, - 18.10.2016, 17:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 17:25
Сообщение #15
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994


Код
public fw_PlayerSpawn_Post(id)
{
console_print(0, "test1")

   if (!is_user_alive(id))
   return HAM_IGNORED;

console_print(0, "test2")

  if(vibri_event == 1)
  {        
console_print(0, "test3")
    strip_user_weapons(id);
    set_task(0.1, "RandGlow"); // Glow
    give_item(id, "weapon_hegrenade");
    cs_set_user_bpammo(id, CSW_HEGRENADE, 100)
    set_user_health(id, 100);
   }

     return HAM_IGNORED;
}



Какие test% выводит в консоль сервера при необходимом респе ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 18.10.2016, 17:28
Сообщение #16


Стаж: 12 лет

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

Вроде как выдачу оружия нужно делать через таск..

Код:

public Ham_PlayerSpawn_Post(id)
{
set_task(0.59, "VIP", id + 6910)
return PLUGIN_CONTINUE
}

public VIP(id)
{
id -= 6910

if(!is_user_alive(id))
return PLUGIN_HANDLED

give_item(id,"ammo_45acp")
}






[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 17:28
Сообщение #17
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, будет выдавать тест 3 так как я уже говорил строка "set_task(0.1, "RandGlow")" полностью функционирует .
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 17:30
Сообщение #18
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

ssx,

Почему-то я делаю без тасков и у меня всё работает.

2MrLegiongame

оружие удаляется при этом ? Т.е. функция strip_user_weapons отрабатывает ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 17:36
Сообщение #19
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Код
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>

public plugin_init()
{
    RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
}

public fw_PlayerSpawn_Post(id)
{
    if (!is_user_alive(id))
        return HAM_IGNORED;

    strip_user_weapons(id);
    give_item(id, "weapon_hegrenade");
    cs_set_user_bpammo(id, CSW_HEGRENADE, 100)
    set_user_health(id, 150);

    return HAM_IGNORED;
}


Всё работает. Что я делаю не так ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 17:38
Сообщение #20
Стаж: 11 лет

Сообщений: 110
Благодарностей: 3
Полезность: < 0

SISA, очень странно но оружие не удаляется , но при этом все светится cbf1b2bfde1a.gif

Отредактировал: MrLegiongame, - 18.10.2016, 17:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
5 страниц V   1 2 ... 3 4 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: