Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a theme in the appropriate section
    No need to write everything in the chat!
  • Sell or buy?

    Use the services of a guarantor
    We will make your transaction safe
  • Don't want a BAN?

    Please read our rules
    Don't disturb the order
  • Visit the market

    There you can sell or buy
    Everything related to game servers
  • 0
BorizzK

Выполнить функцию с параметрами, не сразу, а с задержкой

В проверке где убит игрок

Если игрок убит в сейфзоне

Телепортим убивца на лобное место

Убираем ему весь лут

Публично казним!

 

ну это потом

 

пока просто p_Killer.SetHealth(0);

 

Все как бы почти хорошо, кроме одного момента

Функцию нужно вызвать не сразу, а с задержкой секунд 10

 

что-то типа

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.KaznFunction, 10000, true);

 

но это будет вызывать KaznFunction каждые 10 сек, а мне надо 1 раз

 

Вопрос - как?

 

Всем спасибо!))

 

P.S.

понятно что в своей функции я теоретически могу

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(p_Killer.KaznFunction);

 

 

Share this post


Link to post
Share on other sites

19 answers to this question

Recommended Posts

  • 0

BorizzK 

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.KaznFunction, 10000, true); 

через 10 секунд вызывать по циклу

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.KaznFunction, 10000, false); 

вызвать 1 раз через 10 секунд

Share this post


Link to post
Share on other sites





  • 0

123new 

Вот такое не срабатывает

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.SetHealth(0), 10000, false);

 

Ошибка

Cannot convert 'void' to 'func' for argument '0' to method 'CallLater'

 

А вот так прокатывает

 

	void KaznFunction()
	{
		this.SetHealth(0);
	}
GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.KaznFunction, 10000, false);

Но мне надо в KaznFunction еще параметров передать....

Share this post


Link to post
Share on other sites
  • 0

BorizzK а такое и не сработает. Там, если не ошибаюсь, должно быть что-то вроде

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.SetHealth, 10000, false,0); 

но это не точно. Где-то видел хороший пример на эту тему, но найти что-то не могу под рукой.

А вот второе что ты назвал и должно работать. Можно даже так по идее, если выше названное верно:

void KaznFunction(int num)
	{
		this.SetHealth(num);
	}
GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.KaznFunction, 10000, false,0);

 

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
  • 0

123new Кроме num мне надо передать еще неск разных параметров...

координаты лобного места в конкретной зоне

режим его казни (пусть да же цифрой)

 

например хочу реализовать казнь через шмяк об стену

в цикле ему полет замутить и ап стену его и ап стену

вобщем как-то поизвращаться на эту тему

 

еще бы понять как перса звфризить/рукиноги связать, что бы не убежал

ну эт для расстрела надо

 

ну и как бы опять же динамически изменяемые зараженные зоны и объекты

те заспавнил машину

все кто к ней подошел или в нее сел - резко заболели

но не сразу

а с задержкой например

 

алгоритмов в виде блоксхем накатал

осталось реализовать

 

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

BorizzK угу, я прям вот точ такой пример где-то видел, тока вспомнить не могу где, иначе б прям заскринил

Share this post


Link to post
Share on other sites
  • 0

BorizzK А возможно ли прервать отчёт если p_Killer в данном случае, помрёт раньше?

Share this post


Link to post
Share on other sites
  • 0

buka Не, ну можно написать и такое, но смысл, просто в функции проверим жив киллер или нет, и если мертв, просто ничего не делаем...

Share this post


Link to post
Share on other sites
  • 0

BorizzK хочу в пвп зоне захват здания сделать.. если захватывающего убивают то собственно ничего не делаем.. если нет то все в зоне дохнут присваевается победа захватившему, отсюда другой вопрос, для счётчика килов создана сохраняющаяся переменная, как сделать ещё одну такую?((хотелось бы победы тоже сохранять...

Share this post


Link to post
Share on other sites
  • 0

BorizzK а примерчик на проверку можно? раньше alive было или как-то так..

Share this post


Link to post
Share on other sites
  • 0

BorizzK хотя так не получится(( нужно именно прервать работу функции..  или наверное исправит ситуацию проверка типа убивали ли игрока за прошедшие 5 минут.. но ка кэто сделать(

Edited by buka (see edit history)

Share this post


Link to post
Share on other sites
  • 0

BorizzK не сработает, он может помереть и уже появиться, и даже прибежать в тоже место...( но за примерчик спасибо.

Share this post


Link to post
Share on other sites
  • 0

buka если даже он прибежит в то же место и живой, у него player будет с другим id в базе, как другой объект будет считаться

Share this post


Link to post
Share on other sites
  • 0

buka player будет другой

player не NULL пока он как обьект есть в мире

если он умрет IsAlive() вернет false

как пропадет станет NULL

 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By BorizzK
      Ситуация такая
      В функцию надо передать 27 разнашерстных параметров
      если указывать больше 19 при запуске сервер крашит без крашлога и тп
      Передавать через массивы? вариант, но хотелось бы сделать красиво-красиво
       
      Взялся за класс Param
      прикинул - Param'сы бывают от 1 до 5 параметровые
      Значит можно передать 5 шт Param5 и 1 Param2
       
      Взялся тестить
      void FormingAreas() { private ref Param5<string, int, vector, float, int> MainParams; MainParams = new Param5<string, int, vector, float, int>("", 0, vector.Zero, 0.0, 0); MainParams.param1 = "AREA 1"; MainParams.param2 = 1; MainParams.param3 = vector.Zero; MainParams.param4 = 1.1; MainParams.param5 = 2; AddAreaParams(MainParams); }  
      Собственно ошибка возникает тут
       
      void AddAreaParams(Param p) { ref Areas Area = new ref Areas; //AreaMainParams Param AreaMainParams = Param.Cast(p); Area.name = AreaMainParams.param1; //318 строка Area.id = AreaMainParams.param2; Area.center = AreaMainParams.param3; Area.center[1] = GetGame().SurfaceY(Area.center[0], Area.center[2]); Area.radius = AreaMainParams.param4; Area.maxplayers = AreaMainParams.param5; Тут про компиляции ошибочка
      $CurrentDir://mpmissions//dayzOffline.chernarusplus//_MOD//StrikeAreas//StrikeAreasClass.c(318): Can't find variable 'param1'
       
      Можно конечно определить MainParams в классе и передавать через него вызывая AddAreaParams без параметров
       
      Но хотелось бы разобраться именно с таким вариантом
       
      Спасибо!
    • By exploadead
      Мод Эпоч 0.3.7.0, но я думаю разницы не должно быть особой в том, как же убрать этот злосчастный Trade Request на ctrl+t. Подскажите пожалуйста, кто знает, как отключить эту функцию? Заранее спасибо!
    • By exploadead
      Почему-то не работают кики и баны из админки инфистара... в логах пишет "Не удалось выполнить команду #kick сервером" и тд.
      Что может быть не так? Все обновы с++ стоят, логи пишутся нормально. При попытке забанить - инфи даже записывает в файл ban.txt тот самый UID забаненого... но сам игрок при этом спокойно бегает на сервере... Помогает только дополнительное вписывание его UID в файлы банов BEC и Battleye... и команда Force Disconnect из админки инфи (она вот работает)... тогда он отсоединяется и баны в балтАе его уже не пускают.
×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.