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

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

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

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

Выполнение события при определенном get_user_time

Статус пользователя ThisIsSparta
сообщение 19.5.2015, 14:50
Сообщение #1
Стаж: 11 лет

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

Здравствуйте.

Снова нужна помощь.

Что хочу сделать: При определенных get_user_time начислять игроку бонусы.

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

Код:

for (new i = 0; i < 5; i++)
{
new gTime = UserData[id][TIME_IN_GAME] + get_user_time(id)
if (gTime == TIME_lvl[i])
{
UserData[id][BONUS]++
}
}


ps.gif Знаю что можно через set_task, но может еще есть способы? Желательно с примерами thank_you2.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ssx
сообщение 19.5.2015, 15:06
Сообщение #2


Стаж: 12 лет

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

get_user_time = в секундах

Делай таск с флагом b каждые 10 сек
циклом проверяй у кого get_user_time больше чем время к выдаче бонуса
Выдавай бонус и записывай в массив что бонус был выдан игроку.


[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 раз
   + Цитировать сообщение
Статус пользователя admir
сообщение 19.5.2015, 15:46
Сообщение #3
Стаж: 13 лет

Сообщений: 192
Благодарностей: 31
Полезность: 138

Цитата(ssx @ 19.5.2015, 16:06) *
get_user_time = в секундах

Делай таск с флагом b каждые 10 сек
циклом проверяй у кого get_user_time больше чем время к выдаче бонуса
Выдавай бонус и записывай в массив что бонус был выдан игроку.

что-то мне подсказывает, что нужно вешать просто set_Task на игрока с задержкой равной выдаче бонуса и удалять при выходе с сервера. а каждые 10 секунд прогонять всех игроков - нагрузка выше.

Цитата
Знаю что можно через set_task, но может еще есть способы?

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

Отредактировал: admir, - 19.5.2015, 15:50
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 19.5.2015, 15:54
Сообщение #4
Стаж: 11 лет

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

Цитата(admir @ 19.5.2015, 16:46) *
каждый новый раунд проверять игроков циклом и давать бонус.


забыл уточнить, сервер csdm, без раундов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 19.5.2015, 16:28
Сообщение #5
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

без таска можно в эвентах, ham_spawn к примеру
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 19.5.2015, 16:53
Сообщение #6


Стаж: 12 лет

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

Цитата(voed @ 19.5.2015, 17:28) *
без таска можно в эвентах, ham_spawn к примеру

Тогда проще такском каждые 60 сек проверять циклом, меньше проверок будет.


[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 раз
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 19.5.2015, 17:47
Сообщение #7


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Код:
#include <hamsandwich>
#include <fun>

Код:
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", true);

Код:
public fw_PlayerSpawn_Post(id)
{
if(is_user_alive(id))
{
switch(get_user_time(id))
{
/* От 5-ти до 10-ти минут */ case 300..599: give_item(id, "weapon_hegrenade");
/* От 10-ти до 15-ти минут */ case 600..899: give_item(id, "weapon_flashbang");
/* От 15-ти до 20-ти минут */ case 900..1199: give_item(id, "weapon_smokegrenade");
// И т.д.
}
}
}


Отредактировал: Stimul1, - 19.5.2015, 17:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 19.5.2015, 19:47
Сообщение #8
Стаж: 11 лет

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

Цитата(Stimul1 @ 19.5.2015, 18:47) *
Скрытый текст
Код:
#include <hamsandwich>
#include <fun>

Код:
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", true);

Код:
public fw_PlayerSpawn_Post(id)
{
if(is_user_alive(id))
{
switch(get_user_time(id))
{
/* От 5-ти до 10-ти минут */ case 300..599: give_item(id, "weapon_hegrenade");
/* От 10-ти до 15-ти минут */ case 600..899: give_item(id, "weapon_flashbang");
/* От 15-ти до 20-ти минут */ case 900..1199: give_item(id, "weapon_smokegrenade");
// И т.д.
}
}
}



спс, но допустим если игрок не умирает?) Раундов то нет.

Всем спасибо за советы, решил сделать таск на каждого игрока и через его считать время, а не через get_user_time. Так даже проще оказалось
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 20.5.2015, 12:50
Сообщение #9


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

Стаж: 13 лет

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

ThisIsSparta, событие спавна не только в новом раунде происходит
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 20.5.2015, 13:01
Сообщение #10
Стаж: 11 лет

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

Цитата(GOOD FELLOW @ 20.5.2015, 13:50) *
событие спавна не только в новом раунде происходит



ну так для того чтобы произошло событие спавна нужно чтобы игрок умер, бывает так что за все время карты (30 мин) игрок ни разу не умирает, и следовательно не респаунится
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: