Reload Time.

Сообщения
850
Реакции
144
Помог
25 раз(а)
Здравствуйте.
Пытаюсь уменьшить время перезарядки в процентах от числа.

C++:
new gl_UserUpdateData[33][UpgradeCountReload] = 2;

public HamHook_Item_Reload_Post(WeaponId) {
    new UserId = get_member(WeaponId, m_pPlayer);
    new Float:flTimeReload;
    
    flTimeReload = float(gl_UserUpdateData[UserId][UpgradeCountReload]) / 100.0;
    client_print(UserId, print_chat, "Default: %f", get_member(UserId, m_flNextAttack));
    client_print(UserId, print_chat, "Divide: %f", flTimeReload);
    client_print(UserId, print_chat, "Custom: %f", get_member(UserId, m_flNextAttack) - flTimeReload);
}
Проблема в том, что деление у меня происходит нормально, то есть 2 / 100 и получаем 0.02
Но дальше, когда я от времени перезарядки (2.2) пытаюсь отнять 0.02, у меня попросту выводит 0.

1674267214317.png

Из-за чего оно может так делать? Что-то не так с формулой?
 
Сообщения
331
Реакции
172
Помог
11 раз(а)
Код:
new gl_UserUpdateData[33][UpgradeCountReload] = 2;

public HamHook_Item_Reload_Post(WeaponId) {
    new UserId = get_member(WeaponId, m_pPlayer);
    new Float:flTimeReload;
    
    flTimeReload = float(gl_UserUpdateData[UserId][UpgradeCountReload]) / 100.0;
-    client_print(UserId, print_chat, "Default: %f", get_member(UserId, m_flNextAttack));
+   client_print(UserId, print_chat, "Default: %f", Float:get_member(UserId, m_flNextAttack));
    client_print(UserId, print_chat, "Divide: %f", flTimeReload);
-    client_print(UserId, print_chat, "Custom: %f", get_member(UserId, m_flNextAttack) - flTimeReload);
+   client_print(UserId, print_chat, "Custom: %f", Float:get_member(UserId, m_flNextAttack) - flTimeReload);
}
 
Сообщения
850
Реакции
144
Помог
25 раз(а)
Такая тупая ошибка с моей стороны...
Спасибо, заработало.
 
Сообщения
331
Реакции
172
Помог
11 раз(а)
ImmortalAmxx,

Код:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>
public plugin_init() {
    register_plugin("s","s","b0t.");
    RegisterHam(Ham_Weapon_Reload,"weapon_usp","HamReload_Func",true);
}
public HamReload_Func(const iWeaponId) {
    new UserId = get_member(iWeaponId, m_pPlayer);
    new Float:flTimeReload;
    
    flTimeReload = ((Float:get_member(UserId,m_flNextAttack)/100.0) * 50.0);
    client_print(UserId, print_chat, "Default: %f",Float:get_member(UserId, m_flNextAttack));
    client_print(UserId, print_chat, "Divide: %f", flTimeReload);
    client_print(UserId, print_chat, "Custom: %f",Float:get_member(UserId, m_flNextAttack) - flTimeReload);
    set_member(UserId,m_flNextAttack,Float:get_member(UserId, m_flNextAttack)-flTimeReload);
    
    client_print(UserId, print_chat,"New recharge time: %f",Float:get_member(UserId,m_flNextAttack));
}

P.S.
Не относится к скорости воспроизведения анимации
 
Сообщения
331
Реакции
172
Помог
11 раз(а)
steelzzz, просто дизлайк и ни какого пояснения? Забавно даже...
 
Сообщения
282
Реакции
34
Помог
3 раз(а)
b0t.

I am using your code a bit different:
Код:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>

#define ADMIN_FLAG_Y (1<<24)

new bool:g_Flag[MAX_PLAYERS+1];

public plugin_init() {
    register_plugin("s","s","b0t.");
    RegisterHam(Ham_Weapon_Reload,"weapon_usp","HamReload_Func",true);
}

public client_putinserver(id){
    g_Flag[id] = (get_user_flags(id) & ADMIN_FLAG_Y) ? true : false;
}

public HamReload_Func(const iWeaponId) {
    
    new UserId = get_member(iWeaponId, m_pPlayer);
    new Float:flTimeReload;

    if (is_user_connected(UserId) && g_Flag[UserId]) {

        flTimeReload = ((Float:get_member(UserId,m_flNextAttack)/100.0) * 50.0);

        set_member(UserId,m_flNextAttack,Float:get_member(UserId, m_flNextAttack)-flTimeReload);
    }
}
Do you have idea why it doesn't remove function from player in-game who got removed flag (flag removed then typed amx_reloadadmins)?
 
Сообщения
3,256
Реакции
1,436
Помог
121 раз(а)
drag1c, у тебя флаг кешируется при входе на сервер.
 
Сообщения
282
Реакции
34
Помог
3 раз(а)
drag1c, your flag is cached when you enter the server.
How I should catch that change? Is that function client_infochanged?

hmmm I did something like this:
Код:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>

#pragma semicolon 1

#define ADMIN_FLAG_Y (1<<24)

new bool:g_ReloadFlag[MAX_PLAYERS+1];


public plugin_init() {
    register_plugin("s", "s", "b0t.");
    for (new i = CSW_P228, weapon_name[32]; i <= CSW_P90; i++)
    {
    if(get_weaponname(i, weapon_name, charsmax(weapon_name)))
    {
            RegisterHam(Ham_Weapon_Reload, weapon_name, "HamReload_Func",true);
    }
    }
RegisterHam(Ham_Spawn, "player", "FwdPlayerSpawnPost", 1);
}

public FwdPlayerSpawnPost(id) {
    g_ReloadFlag[id] = (is_user_alive(id) && (get_user_flags(id) & ADMIN_FLAG_Y)) ? true : false;
}

public HamReload_Func(const iWeaponId) {

    new UserId = get_member(iWeaponId, m_pPlayer);
    new Float:flTimeReload;

    if (g_ReloadFlag[UserId]) {
        flTimeReload = ((Float:get_member(UserId,m_flNextAttack)/100.0) * 80.0);
        set_member(UserId,m_flNextAttack,Float:get_member(UserId, m_flNextAttack)-flTimeReload);
    }
}
This seems to work as per I would like to (play get flag for 1 round (aes_flags connected to database give flag for time)) to use some kind of perk.
 
Последнее редактирование:

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

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