Поиск разницы в Hp

Сообщения
142
Реакции
23
Помог
1 раз(а)


перенесено из https://dev-cs.ru/threads/1462/page-15#post-34695


GrafkO, па пробуй у меня прописано так работает нормально
<call>
plugin = aes_bonus_cstrike.amxx
name = 120 HP
function = GiveHP
value = 20
points = 10
flag = ~t
round = 2
time = 25
 
Последнее редактирование модератором:
Сообщения
152
Реакции
17
Помог
2 раз(а)
GrafkO, па пробуй у меня прописано так работает нормально
<call>
plugin = aes_bonus_cstrike.amxx
name = 120 HP
function = GiveHP
value = 20
points = 10
flag = ~t
round = 2
time = 25
прописал только вот так:

<call>
plugin = aes_bonus_cstrike.amxx
name = 120 HP
function = GiveHP
value = 20
points = 10
;flag = ~t
round = 2

Дает сразу 120 хп,а потом еще по 20 накидывает. Можно брать сколько хочешь)
Мне вот нужно чтоб больше 120 брать нельзя было.
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
GrafkO, aes_bonus_cstrike.sma редачь:
Код:
set_entvar(id, var_health, (Float:get_entvar(id, var_health) + float(cnt)));
->
Код:
new Float:health = Float:get_entvar(id, var_health);

if(health >= 120.0)
    return false;

set_entvar(id, var_health, health + float(cnt));
8 Июл 2018
а можно усложнить...
в первом варианте если у чела 119хп, он сможет взять +20 и будет 139...

а вот вариант, который строго залочит количество хп на 120 (возьмем в пример все те же 119хп. юзеру, по факту, добавит всего 1хп):
Код:
new Float:health = Float:get_entvar(id, var_health);
new Float:new_health = health + float(cnt);

if(health >= 120.0)
    return false;
if(new_health > 120.0)
    new_health = 120.0;
   
set_entvar(id, var_health, new_health);
 
Сообщения
0
Реакции
0
а вот вариант, который строго залочит количество хп на 120 (возьмем в пример все те же 119хп. юзеру, по факту, добавит всего 1хп):
C++:
new Float:health = Float:get_entvar(id, var_health);
new Float:new_health = health + float(cnt);

if(health >= 120.0)
return false;
if(new_health > 120.0)
new_health = 120.0;

set_entvar(id, var_health, new_health);
Сам то хоть понял че написал? хД
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
pUzzlik, я то понял, а ты видимо нет.
 
Сообщения
0
Реакции
0
neygomon, Логика в коде отсутствует не в обиду, на практике проверь... хД
Я даже ради этого зарегался на форуме.
aes_bonus_cstrike.sma редачь:
C++:
set_entvar(id, var_health, (Float:get_entvar(id, var_health) + float(cnt)));
->
мб кому то пригодиться.
C++:
    new Float:iHpMax = 105.0, Float:iHp = Float:get_entvar(id, var_health);
  
    iHp += float(cnt);
    if(iHp >= iHpMax)
    {
        set_entvar(id, var_health, iHpMax);
        return false;
    }
    else
    {
        set_entvar(id, var_health, iHp);
        return true;
    }
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
pUzzlik, что же там отсутствует?
может ты просто читать особо не умеешь? или, например. не видишь разницы между health(текущее здоровье) и new_health(то, которые будет)?
я все понимаю, конечно, но ты предлагаешь код, в котором изначально не будет корректной работы, при этом обвиняешь меня...

ты же в курсе, да, что если ты вернешь false в функцию AES, бонусы не спишутся?
хотя чего это я, не знаешь же.

ps Если ты переменную с плавающей точкой называешь iHp и тд.. мои соболезнования
 
Сообщения
0
Реакции
0
Ненормативная лексика
neygomon, Не хочу спорить или сориться на дурной почве, "Но delete отнимать в игрока бонусы если у него уже есть нужное хп? Там все предельно ясно..." Я сюда не delete меряться пришел, а просто поправил ошибку, мне человек скинул код, попросил помочь с табуляцией т.к. сам не осознан, я мельком не мог разобраться что ты написал ему, он дал ссылку на твой ответ и я понял что он хотел, но это не то что ты написал, поэтому я зарегался чтобы поправить, не кипятись, я уже ушел -_-
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
pUzzlik, глупый
iHpMax = 105.0
iHp = 99.0
а выставляем мы ему, скажем, 20.0
iHp + 20.0 = 119.0

iHp больше iHpMax. мы ставим ему iHpMax и тупо подарили 6 процентов жизни, потому что у него было не 105, а 99. а после твоего кода станет 105 на халяву
 
Последнее редактирование модератором:
Сообщения
0
Реакции
0
neygomon, Ну пардон, ошибся, представь себе и такое бывает я плагины не писал уже свыше полу года и то мб больше помалеха могу ошибиться, главное есть кому поправить, спасибо, а ты обычно на рога сразу лезишь, но воспринимаешь инных мнений... :)
Так будет самый раз.
C++:
    new Float:iHpMax = 105.0, Float:iHp = Float:get_entvar(id, var_health); 
    
    if(iHp==iHpMax)
        return false;
    
    iHp += float(cnt);
    set_entvar(id, var_health, iHp >= iHpMax ? iHpMax : iHp);
    return true;
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
pUzzlik, собственно снова неверно
Мой код будет правильнее.
Универсальные, как хочешь называй
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу