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

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

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

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

Помощь с выдачей гранат

eckoecko
сообщение 9.8.2013, 14:44
Сообщение #1
Стаж: 14 лет

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

Всем привет. Около 1 недели назад решил заняться программированием на pawn.

Вообщем: есть функция, при вызове которой выдаются все гранаты в течение 10 секунд.

Идет вывод в чат сообщение: /g[VIP] /yГранаты не выданы! Подожди /t10 /yсекунд. Все хорошо.

Вопрос: как сделать так, чтобы при вызове время менялось. Пример:

Вызываем функцию, пишет: /g[VIP] /yГранаты не выданы! Подожди /t10 /yсекунд. чтобы 10 секунд через каждую секунду было -1. (9, 8, 7... 1, 0) и гранаты выдаются.

Пробывал я создавать новую переменную и производить над ней действия, все равно не получалось.

Заранее спасибо.

Вот код:

Код:

public GiveNades(id)
{
if(!canHe[id])
{
client_printcolor(id, "/g[VIP] /yГранаты не выданы! Подожди /t10 /yсекунд.")
return PLUGIN_HANDLED
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
canHe[id] = false
set_task(10.0, "set_nades_on", id)
}

public set_nades_on(id)
{
canHe[id] = true
}



Отредактировал: eckoecko, - 9.8.2013, 14:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 9.8.2013, 14:46
Сообщение #2


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Ты своем коде не минусуешь таймер, вот поэтому у тебя и не отнимает. Или это код , что бы засунуть отсчет?
И по моему в чате ты это не сделаешь, разве что вызывать каждую секунду сообщение. А такое можно сделать с помощью худ и\или дхуд

Отредактировал: vovan4ik1997, - 9.8.2013, 14:49


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 9.8.2013, 14:48
Сообщение #3
Стаж: 14 лет

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

Цитата(vovan4ik1997 @ 9.8.2013, 14:46) *
Ты своем коде не минусуешь таймер, вот поэтому у тебя и не отнимает. Или это код , что бы засунуть отсчет?

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

Если кто пошустрее шарит, накатайте по бырику)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 9.8.2013, 14:49
Сообщение #4


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Я подправил свое прочитай


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 9.8.2013, 14:51
Сообщение #5
Стаж: 14 лет

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

vovan4ik1997, мне не надо, чтобы сообщение все время висело в чате. Мне нужно чтобы подсчеты велись внутри системы, а в чате выдавалось тогда, когда вызовишь эту функцию (в данном случае у меня эта функция в /vipmenu)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 9.8.2013, 15:02
Сообщение #6


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Код:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <dhudmessage>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Роман"
new timer[33]
new rr_czas
new canHe[33]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

rr_czas = register_cvar("rr_czas","10")
register_event("TextMsg","ff","a","2&#Game_C")
}

public ff(id)
{
set_task(1.0, "Start")
}
public Start(id)
{

timer[id] = get_pcvar_num(rr_czas);

set_task( 1.0, "OFFN", id, _, _, "b" )

return PLUGIN_CONTINUE
}
public OFFN(id)
{

set_dhudmessage( random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.25, 0, 0.0, 1.1, 0.0, 0.0 )
show_dhudmessage( id, "Гранаты через %d секунд!", timer[id] )


timer[id] -= 1

set_task(10.0,"give", id)
}

public give(id)
{

if(!canHe[id])
{
client_print(print_center, id, "/g[VIP] /yГранаты не выданы! Подожди /t10 /yсекунд.")
return PLUGIN_HANDLED
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
canHe[id] = false
set_task(10.0, "set_nades_on", id)
}

public set_nades_on(id)
{
canHe[id] = true
}


Не понял сути, но смотри так. Сделал в дхуд. Или опиши точнее, что надо)


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 9.8.2013, 15:04
Сообщение #7
Стаж: 14 лет

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

Цитата(vovan4ik1997 @ 9.8.2013, 16:02) *
Код:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <dhudmessage>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Роман"
new timer[33]
new rr_czas
new canHe[33]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

rr_czas = register_cvar("rr_czas","10")
register_event("TextMsg","ff","a","2&#Game_C")
}

public ff(id)
{
set_task(1.0, "Start")
}
public Start(id)
{

timer[id] = get_pcvar_num(rr_czas);

set_task( 1.0, "OFFN", id, _, _, "b" )

return PLUGIN_CONTINUE
}
public OFFN(id)
{

set_dhudmessage( random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.25, 0, 0.0, 1.1, 0.0, 0.0 )
show_dhudmessage( id, "Гранаты через %d секунд!", timer[id] )


timer[id] -= 1

set_task(10.0,"give", id)
}

public give(id)
{

if(!canHe[id])
{
client_print(print_center, id, "/g[VIP] /yГранаты не выданы! Подожди /t10 /yсекунд.")
return PLUGIN_HANDLED
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
canHe[id] = false
set_task(10.0, "set_nades_on", id)
}

public set_nades_on(id)
{
canHe[id] = true
}


Не понял сути, но смотри так. Сделал в дхуд. Или опиши точнее, что надо)

Мне дхуд'e не нужно. Мне нужно чтобы было в чате. В дхуд'e я бы и сам сделал.

P.S Мне нужно, что бы при вызове функции писало сколько осталось секунд подождать.

Отредактировал: eckoecko, - 9.8.2013, 15:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя filip
сообщение 9.8.2013, 20:33
Сообщение #8


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

https://c-s.net.ua/forum/topic51920.html
Думаю поможет.

Код:
public GiveNades(id)
{
canHe[id] = get_systime()
if(canHe[id]+ 10 > get_systime())
{
client_printcolor(id, "/g[VIP] /yГранаты не выданы! Подожди /t%d /yсекунд.", 10 + canHe[id] - get_systime())
return PLUGIN_HANDLED
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}

}

Наверное так...

Отредактировал: filip, - 9.8.2013, 20:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя edge
сообщение 10.8.2013, 11:48
Сообщение #9


Стаж: 14 лет

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

eckoecko,
Можно ещё через get_gametime(), но нужно вводить две команды (или два события) как я понял: до и после.Иначе не получается...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 10.8.2013, 11:53
Сообщение #10
Стаж: 16 лет

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

посмотри мой код

там отчет от 60 секунд


Код:
public touchregen(ent_regen,id)
{
if(!is_valid_ent(ent_regen) || !is_user_alive(id)) return PLUGIN_HANDLED;

remove_entity(ent_regen)

client_cmd( id , "speak quad/regeneration.wav" )
set_task(1.0,"countdown", id, "", 0, "a", 60)

regenowner = id

return PLUGIN_HANDLED;
}

public countdown(id) {
count++
set_hudmessage( 255, 255, 255, 0.02, 0.64, 1.1 , 0.1 , 1.1, 0.1, 0.1, -1 )
ShowSyncHudMsg( id, g_MsgSync, "Regen^n%d^nsec",60-count)


new hp = get_user_health(id)
client_cmd( id , "speak quad/regen.wav" )
if(hp < 100)
set_user_health(id, hp + 15)
else if(hp > 100) {
new hp1 = min(200, hp + 5)
set_user_health(id,hp1)
}
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя edge
сообщение 10.8.2013, 12:01
Сообщение #11


Стаж: 14 лет

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

cs-portal,
Да не, ему видимо надо чтобы было как в плагине (если ты знаешь такой) для ЗМ сервера, там есть класс смокер: если ты один раз притянул кого-то или просто использовал "притягивалку", то возможность нового притягивания будет доступна через (например) 10 секунд.
Если время до нового притягивания не вышло,- то в чате будет написанно что-то типо этого:
[ZP]: Притягивать возможно через %f секунд (%f - сколько секунд осталось).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 10.8.2013, 20:16
Сообщение #12
Стаж: 16 лет

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

new bool:g_can[33]


public client_connect(id)
g_can[id] = false

дальше по аналогии где true и где false

count++

if(!g_can[id]) {
return
client_print(id,3,"your skill is not ready ")
}
else give_he(id)


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