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

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

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

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

Вопрос про cvar

Статус пользователя DumoH4uk
сообщение 14.5.2013, 16:30
Сообщение #1


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Здравствуйте, форумчане!

Решил перебрать магазин и сделать все через cvar'ы.
Разобрался с самими кварами, но как его добавлять в такие "места":

Код:
new chto-to = menu_create("Что-то купить за CVAR ?", "chto");
- в название меню.

Код:
menu_additem(kakieto_menu, "Берем за  CVAR", "1", 0)
- в пункт меню.

Код:
get_pcvar_num(cvarShop[1])


Простите, за глупые вопросы. :-)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя mazdan
сообщение 14.5.2013, 16:35
Сообщение #2


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

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Код:
static menu_01[50]
get_cvar_string("cvar_takoi_to",menu_01,9)
format(menu_01,49, "Что-то купить за %s ?",menu_01)
new chto-to = menu_create(menu_01", "chto");

типа того что-то


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 14.5.2013, 16:42
Сообщение #3


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Цитата(mazdan @ 14.5.2013, 18:35) *
Код:
static menu_01[50]
get_cvar_string("cvar_takoi_to",menu_01,9)
format(menu_01,49, "Что-то купить за %s ?",menu_01)
new chto-to = menu_create(menu_01", "chto");

типа того что-то


С названием меню в принципе понял, а вот с пунктом в меню - нет. =/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 14.5.2013, 16:47
Сообщение #4


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

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

аналогично. Если квар один и тот же то считываем его в переменную сначала типа cvar_01, потом ей формируем далее.
Цитата
get_cvar_string("cvar_takoi_to",cvar_01,9)
formatex(menu_01, 49, "что то там %s", cvar_01)
...
formatex(punkt_menu_01, 49, "пункт что то там %s", cvar_01)

причем первую строку можно сделать 1 раз за карту где-то, а не каждый раз проверять квар


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 14.5.2013, 18:30
Сообщение #5


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

И последнее, каким символом в чате выводить cvar?

Код:
ColorChat(id,RED,"Ля-ля-ля CVAR", get_pcvar_num(speed[1]))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 15.5.2013, 17:08
Сообщение #6


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Сегодня добрался до меню thank_you2.gif
Решил сделать все через ланг:

Код:
formatex(szText, charsmax(szText), "%L", victim, "SPAWN_TITLE", get_pcvar_num(respawn[1]))
new respa = menu_create(szText, "resp")


В lang файле прописал:

Код:
[ru]
SPAWN_TITLE = TEST %s

[en]
SPAWN_TITLE = TEST %s


Но после TEST никакое значение не выводится.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 16.5.2013, 2:48
Сообщение #7
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

get_pcvar_num - целое число (integer), поэтому нужно использовать TEST %d.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 16.5.2013, 16:26
Сообщение #8


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Ещё один вопросик. Нашел в одном исходнике как прибавляют hp через квары, сделал такой же трюк с gravity, но работает только, если перед кваром стоит +/-, не имею понятия как сделать чтобы игроку просто заменялась гравитация, а не прибавлялась или уменьшалась.

Код:
new float_gravity_1
float_gravity_1 = get_pcvar_num(gravity[5])
set_user_gravity(id, get_user_gravity(id) float_gravity_1)


Отредактировал: DumoH4uk, - 16.5.2013, 18:41
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 17.5.2013, 11:55
Сообщение #9


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Сделал через функцию set_pev (include fakemeta)

Код:
new float_gravity_1
float_gravity_1 = get_pcvar_num(gravity[5])
set_pev(id, pev_gravity, float_gravity_1)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 10.6.2013, 19:47
Сообщение #10


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Запутался в двух местах.
Как лучше сделать?

Код:
new float_speed_1
float_speed_1 = get_pcvar_num(shop_cvar[18])
set_pev(id, pev_speed, float_speed_1)
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(shop_cvar[13]))


или

Код:
new Float:float_speed_1
float_speed_1 = get_pcvar_num(shop_cvar[18])
set_user_maxspeed(id, float_speed_1)
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(shop_cvar[13]))


Т.к. запутался и ощущения, что скорость не работает или реально не работает =D
И как выводить цифры 0.5 (допустим) через ланг, так как я делаю (%d) выводит только цифры до нуля, гравитацию не могу сделать из-за этого =\
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
CaHeK86
сообщение 10.6.2013, 19:52
Сообщение #11
Стаж: 16 лет

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

Цитата(DumoH4uk @ 10.6.2013, 20:47) *
Запутался в двух местах.
Как лучше сделать?

Код:
new float_speed_1
float_speed_1 = get_pcvar_num(shop_cvar[18])
set_pev(id, pev_speed, float_speed_1)
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(shop_cvar[13]))


или

Код:
new Float:float_speed_1
float_speed_1 = get_pcvar_num(shop_cvar[18])
set_user_maxspeed(id, float_speed_1)
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(shop_cvar[13]))


Т.к. запутался и ощущения, что скорость не работает или реально не работает =D
И как выводить цифры 0.5 (допустим) через ланг, так как я делаю (%d) выводит только цифры до нуля, гравитацию не могу сделать из-за этого =\


http://amxxmodx.ru/lessons-on-pawn/187-uro...to-takoe-d.html
dirol.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 10.6.2013, 20:10
Сообщение #12
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Скорость ставь через set_user_maxspeed, если нет оснований делать это через fakemeta, но помни, что она сбрасывается при каждой смене оружия.

Тут нужна проверка, что число денег не станет отрицательным:
Код
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(shop_cvar[13]))
Используй нативу max.

А по числам тебе уже всё подсказали. Сначала в базовых понятиях надо разобраться, потом код писать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 10.6.2013, 20:20
Сообщение #13


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Цитата(Safety1st @ 10.6.2013, 22:10) *
Скорость ставь через set_user_maxspeed, если нет оснований делать это через fakemeta, но помни, что она сбрасывается при каждой смене оружия.

Тут нужна проверка, что число денег не станет отрицательным:
Код
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(shop_cvar[13]))
Используй нативу max.

А по числам тебе уже всё подсказали. Сначала в базовых понятиях надо разобраться, потом код писать.


А, вот со скорость я догнал (когда проверял оружия переключал).

Проверка есть:

Код:
if( is_user_alive( id ) && cs_get_user_money(id) >= get_pcvar_num(shop_cvar[14]) && is_user_connected(id))


Пример всего кода:

Код:
case 2:
if( is_user_alive( id ) && cs_get_user_money(id) >= get_pcvar_num(shop_cvar[14]) && is_user_connected(id))
{
new float_speed_2
float_speed_2 = get_pcvar_num(shop_cvar[19])
set_pev(id, pev_speed, float_speed_2)
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(shop_cvar[14]))
ChatColor(0, "%L", 0, "BOUGHT_SPEED", PREFIX)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 10.6.2013, 20:40
Сообщение #14


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

нужно запоминать игрока который купил "скорость" и выставлять ее при каждой смене оружия
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 11.6.2013, 10:27
Сообщение #15


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Сделал гравитацию через Float, все работает отлично, но выводит вместо 0.5 или 0.4, вообщем везде 0.00000 (стоит %f).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 11.6.2013, 12:31
Сообщение #16


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Цитата(DumoH4uk @ 11.6.2013, 12:27) *
Сделал гравитацию через Float, все работает отлично, но выводит вместо 0.5 или 0.4, вообщем везде 0.00000 (стоит %f).


Разобрался со всем :-)

Код:
get_pcvar_num
заменил на Код:
get_pcvar_float
т.к. дробное

%f выводит 0.500000 - заменил на Код:
%.1f
теперь выводит 0.5

Отредактировал: DumoH4uk, - 11.6.2013, 12:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: