AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Speed meter (https://forums.alliedmods.net/showthread.php?t=308926)

misiakool12 07-08-2018 07:45

Speed meter
 
Hi everyone. Could someone help me? The idea is to "split" the default HUD of this plugin into two separate HUDs - one at the bottom with information about speed and vmax, and the second at the right with information about the map record and the record holder. I apologize in advance for my English :)
The default HUD looks like this: https://zapodaj.net/c9ecd815c7ca9.jpg.html

I would like the part of the HUD marked with a black circle to be at the bottom and the part marked with a red circle to be in the place where it is currently. I tried to do it myself, but unfortunately I did not manage to do it, could anyone look at it? :)

I would like to get such a HUD effect: https://zapodaj.net/8065e6af26ef7.jpg.html

Program code:
Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <nvault>
#include <hamsandwich>
#include <amxmisc>


#define PLUGIN "SpeedMeter"
#define VERSION "2.1"
#define AUTHOR "Vertricus"


#define ACCESS_RESET        ADMIN_IMMUNITY
#define MAX_PLAYERS        32


//Zmienne
new Float:fPlayerMaxSpeed[MAX_PLAYERS+1], Float: fPlayerActualSpeed[MAX_PLAYERS+1], szPlayerName[MAX_PLAYERS+1][32]
new szKeySpeed[32], szKeyName[34]
new bool:NewRecord = false, szMapName[32];
new szChampionName[32], Float:fMapRecord
new nVault
new HudObj
new pcvarEnabled, pcvarUpadte, pcvarTerro
new HudBot
public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR)
        //Cvars
        pcvarEnabled = register_cvar("sm_enabled", "1")
        pcvarUpadte = register_cvar("sm_upadte", "0.1")
        pcvarTerro = register_cvar("sm_terro", "1")
        //FM Part
        register_forward(FM_PlayerPreThink, "Fw_PlayerPreThink")
        register_forward(FM_ClientUserInfoChanged, "Fw_ClientUserInfoChanged", 1)
        //Others
        get_mapname(szMapName, charsmax(szMapName))
        HudObj = CreateHudSyncObj()
        register_clcmd("sm_reset", "CmdSpeedReset", ACCESS_RESET)
        //nVaultPart
        formatex(szKeySpeed,63,"%s-Speed",szMapName)
        formatex(szKeyName,63,"%s-Name",szMapName)
}
public plugin_cfg()
{
        nVault = nvault_open("SpeedRecord")
        if (nVault == INVALID_HANDLE)
                set_fail_state( "Error opening nVault");
               
        fMapRecord = float(nvault_get(nVault,szKeySpeed))
        nvault_get(nVault, szKeyName, szChampionName, 31)
       
        CreateHudBot()
}
public plugin_end()
{
        if (!NewRecord)
                return
               
        new szNewRecord[32]
        float_to_str(fMapRecord, szNewRecord, 31)
       
        nvault_set(nVault,szKeySpeed, szNewRecord)
        nvault_set(nVault,szKeyName,szChampionName)
        nvault_close(nVault)
}
public client_authorized(id)
{
        if (!get_pcvar_num(pcvarEnabled))
                return
               
        get_user_name(id, szPlayerName[id], 31)
        fPlayerMaxSpeed[id] = 0.0
}
public Fw_ClientUserInfoChanged(id)
{
        get_user_name(id, szPlayerName[id], 31)
}
public Fw_PlayerPreThink(id)
{
        if (!is_user_alive(id)|| !get_pcvar_num(pcvarEnabled))
                return FMRES_IGNORED;
       
        if (get_pcvar_num(pcvarTerro) == 0 && get_user_team(id) == 1)
                return FMRES_IGNORED;
               
        fPlayerActualSpeed[id] = Player_Speed(id)

        if (fPlayerActualSpeed[id] > fPlayerMaxSpeed[id])
                fPlayerMaxSpeed[id] = fPlayerActualSpeed[id]               
       
        return FMRES_IGNORED;       
}
public CreateHudBot()
{
        HudBot = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"));
       
        if(!pev_valid(HudBot))
                return;
               
        set_pev(HudBot, pev_classname, "HudBot");
        set_pev(HudBot, pev_nextthink, get_gametime()+ get_pcvar_float(pcvarUpadte))
       
        RegisterHamFromEntity(Ham_Think, HudBot, "Think_HudBot")
}
public Think_HudBot(Bot)
{
        if (!pev_valid(Bot) || Bot != HudBot)
                return HAM_IGNORED;
               
        if (get_pcvar_num(pcvarEnabled))
        {
                new iPlayers[32], iNum, id
                get_players(iPlayers, iNum)
                for(new i= 0; i<iNum; i++)
                {
                        id = iPlayers[i];
                        if (!is_user_alive(id))
                                continue
                       
                        set_message(255, 170, 42, -1.0, 0.7, 1, 0.01, get_pcvar_float(pcvarUpadte), 0.01, 0.01, 3)
                       
                        if (get_pcvar_num(pcvarTerro) == 0 && get_user_team(id) == 1)
                                ShowSyncHudMsg(id, HudObj, "Rekord Mapy: %.2f^nRekordzista: %s", fMapRecord,szChampionName)
                        else
                                ShowSyncHudMsg(id, HudObj, "Twoja predkosc: %.2f^nTwoj vMax: %.2f^nRekord Mapy: %.2f^nRekordzista: %s", fPlayerActualSpeed[id], fPlayerMaxSpeed[id], fMapRecord,szChampionName)
                        if(is_user_alive(id))
{
        set_hudmessage(255, 170, 42, -1.0, 0.7, 1, 0.01, get_pcvar_float(pcvarUpadte), 0.01, 0.01, 3)
        show_hudmessage(id, "Forum: Creativ-CS.pl")
}
                        if (fPlayerMaxSpeed[id] > fMapRecord)
                                SetNewRecord(fPlayerMaxSpeed[id], szPlayerName[id])
                }
        }
       
        set_pev(Bot, pev_nextthink, get_gametime()+get_pcvar_float(pcvarUpadte))
       
        return HAM_IGNORED;
}
stock SetNewRecord(Float:Speed, Name[32])
{
        fMapRecord = Speed
        szChampionName = Name
        NewRecord = true
}
stock Float:Player_Speed(id)
{
        new Float:fVect[3]
        pev(id, pev_velocity,fVect)
        return floatsqroot(fVect[0]*fVect[0]+fVect[1]*fVect[1])
}
public CmdSpeedReset(id, level, cid)
{
        if(!cmd_access(id,level, cid, 1))
                return PLUGIN_HANDLED;
       
        new iPlayers[32], iNum
        get_players(iPlayers, iNum)
        for(new i=0; i<iNum; i++)
                fPlayerMaxSpeed[iPlayers[i]] = 0.0
               
        SetNewRecord(0.0, "Brak")
        client_print(id, print_console, "Rekord szybkosci na mapie zostal zresetowany")
        return PLUGIN_HANDLED
}


TheWhitesmith 07-08-2018 21:38

Re: Speed meter
 
Thats nothing more than a X Y stuff, try to edit it (set_hudmessage) until you find the best positions you need.

misiakool12 07-09-2018 02:32

Re: Speed meter
 
I know, I tried. However, when I moved the HUD part marked in black, the second part of HUD which was to stay in the same place (red color) did not display.

misiakool12 07-10-2018 05:02

Re: Speed meter
 
Can anyone help?


All times are GMT -4. The time now is 12:42.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.