Raised This Month: $ Target: $400
 0% 

pro15 nvault


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Airkish
AlliedModders Donor
Join Date: Apr 2016
Location: Lithuania
Old 08-09-2016 , 16:02   pro15 nvault
Reply With Quote #1

Problems

1. Pro15 motd shows only 7 players
2. Pro15 motd points are 0 or incorrect
3. Pro15 only updates after map change

PHP Code:
                            /* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <colorchat>
#include <nvault_util>

#define PLUGIN "Pro Surfers"
#define VERSION "1.0"
#define AUTHOR "Kia"

#define TASK_ID_LEFT    6492

// Prefix for Messages
#define GAME_PREFIX "[ProSurfers]"

//Top number
#define TopNumber 15

// Points per Frame while Flying
#define FLY_POINTS_PER_FRAME 0.003

// Points per Frame while Surfing
#define SURF_POINTS_PER_FRAME 0.005

// Frequency of HUD being updated
#define HUD_FREQ 0.1

// Points for playing Impressive Sound
#define POINTS_IMPRESSIVE 10000

// Points for playing Perfect Sound
#define POINTS_PERFECT 30000

// Points for playing Holy Shit Sound
#define POINTS_HOLYSHIT 50000

// Points for playing Godlike Sound
#define POINTS_WICKEDSICK 70000

// Points for playing Godlike Sound
#define POINTS_GODLIKE 100000

// Comment if you don't want the points to be reseted after touching a teleport Entity
#define RESET_ON_TP



new Float:g_flTempFlyPoints[33]
new 
Float:g_flTempSurfPoints[33]
new 
Float:g_flTempTotalPoints[33]
new 
Float:g_flTempAngle[33]
new 
Float:g_flPreTempAngle[33]

new 
Float:g_flPoints[33]

new 
g_SyncObj2
new iPoints

new const SPECIAL_CHAR[2] = "-"
new g_iVault
new g_szTopMotd[1024]


new const 
szImpressive[] = "prosurfers/impressive.wav"
new const szPerfect[] = "prosurfers/perfect.wav"
new const szHolyShit[] = "prosurfers/holyshit.wav"
new const szWickedsick[] = "prosurfers/wickedsick.wav"
new const szGodlike[] = "prosurfers/godlike.wav"


public plugin_precache() 
{
    
    
precache_sound("ambience/particle_suck1.wav")
    
    
precache_sound(szImpressive)
    
precache_sound(szPerfect)
    
precache_sound(szHolyShit)
    
precache_sound(szWickedsick)
    
precache_sound(szGodlike)
}

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say""Cmd_Say")
    
register_clcmd("say_team""Cmd_Say")
    
    
g_SyncObj2 CreateHudSyncObj()
    
g_iVault nvault_open("prosurf")
    
FormatTop(TopNumber)

        
    
/* Events */
    
    
register_event("DeathMsg""Event_DeathMsg""a")
    
    
/* Hamsandwich */
    
    
RegisterHam(Ham_Spawn"player""func_HamSpawn"1)
    
    
#if defined RESET_ON_TP
    /* Touches */
    
RegisterHam(Ham_Touch"trigger_teleport""Touch_EntTouch")
    
#endif
}

public 
plugin_end() 
    
nvault_close(g_iVault)
    
public 
Cmd_Say(id)
{
    new 
args[101], arg1[10], arg2[64]
    
read_args(argscharsmax(args))
    
remove_quotes(args)
    
parse(argsarg1charsmax(args), arg2charsmax(arg2))
    
    
    if(
equali(arg1"/pro15")) 
    {
        
show_motdidg_szTopMotd"Top Points" )
    }
}

stock FormatTop(iNum)
{    
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
        
    
enum _:VaultData
    
{
        
VD_Key[33],
        
VD_Value,
        
VD_szName[33]
    };
    
    new 
Vault2 nvault_util_open("prosurf")
    new 
iSize nvault_util_count(Vault2)
    
    new Array:
entries ArrayCreate(VaultData);
    new 
sizeEntries
    
    
new data[VaultData], value[256], data2[VaultData]

    for(new 
0postimestampiSizei++)
    {
        
pos nvault_util_read(Vault2posdata[VD_Key], charsmax(data[VD_Key]), valuecharsmax(value), timestamp);
    
        if(
contain(data[VD_Key], SPECIAL_CHAR) != -1)
            continue;
        
        else
        {
            
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s%s"data[VD_Key], SPECIAL_CHAR)
            
nvault_get(g_iVaultdata[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
        }

        
data[VD_Value] = str_to_num(value);
        
        if(
sizeEntries == 0)
        {
            
ArrayPushArray(entriesdata);
            
sizeEntries++;
            continue;
        }
        
        else
        {
            for(
timestamp 0timestamp <= sizeEntriestimestamp++)
            {
                if(
timestamp == sizeEntries)
                {
                    if(
sizeEntries iNum)
                    {
                        
ArrayPushArray(entriesdata);
                        
sizeEntries++;
                    }
                    
                    break;
                }
          
                
ArrayGetArray(entriestimestampdata2);
                
                if(
data[VD_Value] >= data2[VD_Value])
                {
                    
ArrayInsertArrayBefore(entriestimestampdata);
                    
                    if(
sizeEntries iNum)
                    {
                        
sizeEntries++;
                    } 
                    else 
                    {
                        
ArrayDeleteItem(entriessizeEntries);
                    }
                    
                    break;
                }
            }
        }
    }
    
    new 
iLen
    
    
new len charsmax(g_szTopMotd)
    
    
iLen formatex(g_szTopMotdlen"<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:28px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
    
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s""#""Name""Points")

    new 
i
    
for(0sizeEntriesi++)
    {
        
ArrayGetArray(entriesidata);
        
        
data[VD_Key][32] = 0;
        
data[VD_szName][32] = 0
        
        replace_all
(data[VD_szName], charsmax(data[VD_szName]), "<""&lt;")
        
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">""&gt;")
        
        
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d"" bgcolor=#2b5b95", (i+1), data[VD_szName], data[VD_Value])
    }
    
    
ArrayDestroy(entries);
    
    
iLen += formatex(g_szTopMotd[iLen], len iLen"</table></body>")
}


public 
client_putinserver(id)
{

    if( 
is_user_hltv(id)  || is_user_bot(id) )
    return;

    
Load(id)
    
    
g_flPoints[id] = 0.0
    g_flTempFlyPoints
[id] = 0.0
    g_flTempSurfPoints
[id] = 0.0
    g_flTempTotalPoints
[id] = 0.0
    g_flTempAngle
[id] = 0.0
}

public 
client_disconnect(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
    return;
    
    
Save(id)
}

stock Save(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szAuthId[35]; 
    
get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szName[32]; 
    
get_user_name(idszName31)
    
    new 
szData[256];
    
formatex(szDatacharsmax(szData), "%i"iPoints);
    
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszData)
        
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszName)
}

stock Load(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
        
    new 
szSavedName[32]
    new 
szName[32]; get_user_name(idszNamecharsmax(szName))
    new 
szAuthId[33]; get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szData[256], iTimeStamp
    
if( !nvault_lookup(g_iVaultszAuthIdszDatacharsmax(szData), iTimeStamp) )
    {
        
nvault_set(g_iVaultszAuthId"0")
        
        
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
        
nvault_set(g_iVaultszAuthIdszName)
        
        return 
0
    
}
    
    
ParseLoadData(szData);
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_get(g_iVaultszAuthIdszSavedName)
    
    if(!
equal(szNameszSavedName))
    {
        
nvault_remove(g_iVaultszAuthId)
        
nvault_set(g_iVaultszAuthIdszName)
    }
    return 
0
}

ParseLoadData(szData[256])
{
    static 
szNum[11];
    
strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
    
iPoints str_to_num(szNum);    
}
public 
client_PreThink(id)
{
    
/* Angle */
    
new Float:flAngle[3]
    
    
pev(idpev_anglesflAngle)
    
g_flPreTempAngle[id] = flAngle[1]
    
    
/* Speed */
    
new Float:flVelocity[3]
    new 
Float:flSpeed
    
    pev
(idpev_velocityflVelocity)
    
flSpeed vector_length(flVelocity)
    
    
/* Origin */
    
new Float:origin[3], Float:dest[3];
    
entity_get_vector(idEV_VEC_originorigin);
    
    
dest[0] = origin[0];
    
dest[1] = origin[1];
    
dest[2] = origin[2] - 1.0;
    
    
/* TR */
    
new flags entity_get_int(idEV_INT_flags);
    new 
ptr create_tr2();
    
    
engfunc(EngFunc_TraceHullorigindest0flags FL_DUCKING HULL_HEAD HULL_HUMANidptr);
    
    new 
Float:flFraction;
    
get_tr2(ptrTR_flFractionflFraction);
    
    if( 
flFraction >= 1.0 )
    {
        
        
g_flTempFlyPoints[id] += FLY_POINTS_PER_FRAME flSpeed
        free_tr2
(ptr);
    }
    
}
public 
client_PostThink(id)
{    
    if(
is_user_alive(id))
    {
        new 
szMessage[256]
    
        
/* Ground */
        
new flags entity_get_int(idEV_INT_flags);
        if( 
flags FL_ONGROUND )
        {
            if(
g_flTempFlyPoints[id] > 0.0)
                
g_flPoints[id] += g_flTempFlyPoints[id]
            
            if(
g_flTempSurfPoints[id] > 0.0)
                
g_flPoints[id] += g_flTempSurfPoints[id]

            if(
g_flTempTotalPoints[id] > 0.0)
                
g_flPoints[id] += (g_flTempFlyPoints[id] + g_flTempSurfPoints[id])
                
            
iPoints floatround(g_flTempFlyPoints[id] + g_flTempSurfPoints[id])
            
            if(
iPoints)
                
check_for_sound(idiPoints)
            
            
g_flTempAngle[id] = 0.0
            
            
        
}
        
        
/* Velocity */
        
        
new Float:flVelocity[3]
        new 
Float:flSpeed
        
        pev
(idpev_velocityflVelocity)
        
flSpeed vector_length(flVelocity)
        
        
/* HUD */
        
        
set_hudmessage(2552552550.450.80_HUD_FREQ0.00.0, -1)

        if(
IsUserSurfing(id))
        {            
            
g_flTempSurfPoints[id] += SURF_POINTS_PER_FRAME flSpeed
        
}
        
        new 
szFlyHUD[64]
        
formatex(szFlyHUDcharsmax(szFlyHUD), "^n^tFly points: +%i"floatround(g_flTempFlyPoints[id]))
        
add(szMessagecharsmax(szMessage), szFlyHUD)
        
        new 
szSurfHUD[64]
        
formatex(szSurfHUDcharsmax(szSurfHUD), "^n^tSurf points: +%i"floatround(g_flTempSurfPoints[id]))
        
add(szMessagecharsmax(szMessage), szSurfHUD)

        new 
szTotalHUD[64]
        
formatex(szTotalHUDcharsmax(szTotalHUD), "^n^tTotal points: +%i"floatround(g_flTempSurfPoints[id] + g_flTempFlyPoints[id]))
        
add(szMessagecharsmax(szMessage), szTotalHUD)
        
        
ShowSyncHudMsg(idg_SyncObj2szMessage)
    }
}

public 
check_for_sound(idiPoints)
{
    new 
szName[33]
    
get_user_name(idszNamecharsmax(szName))
    
    if(
iPoints POINTS_GODLIKE)
    {
        
PlaySound(0szGodlike)
        
        
ColorChat(0RED,"%s Godlike! %s collected %i points!"GAME_PREFIXszNameiPoints)
    }
    else if(
iPoints POINTS_WICKEDSICK)
    {
        
PlaySound(0szWickedsick)
        
        
ColorChat(0RED,"%s Wicked Sick! %s collected %i points!"GAME_PREFIXszNameiPoints)
    }
    else if(
iPoints POINTS_HOLYSHIT)
    {
        
PlaySound(0szHolyShit)
        
        
ColorChat(0BLUE,"%s Holy Shit! %s collected %i points!"GAME_PREFIXszNameiPoints)
    }
    else if(
iPoints POINTS_PERFECT)
    {
        
PlaySound(0szPerfect)
        
        
ColorChat(0GREEN,"%s Perfect! %s collected %i points!"GAME_PREFIXszNameiPoints)
    }
    else if(
iPoints POINTS_IMPRESSIVE)
    {
        
PlaySound(0szImpressive)
        
        
ColorChat(0GREY,"%s Impressive! %s collected %i points!"GAME_PREFIXszNameiPoints)
    }
    
    
g_flTempFlyPoints[id] = 0.0
    g_flTempSurfPoints
[id] = 0.0
    g_flTempTotalPoints
[id] = 0.0
}
public 
Touch_EntTouch(iEntid)
{
    if(
is_user_alive(id))
    {    
        
g_flTempFlyPoints[id] = 0.0
        g_flTempSurfPoints
[id] = 0.0
        g_flTempTotalPoints
[id] = 0.0
    
}


public 
IsUserSurfing(id)
{
    if( 
is_user_alive(id) )
    {
        new 
flags entity_get_int(idEV_INT_flags);
        if( 
flags FL_ONGROUND )
        {
            return 
0;
        }
        
        new 
Float:origin[3], Float:dest[3];
        
entity_get_vector(idEV_VEC_originorigin);
        
        
dest[0] = origin[0];
        
dest[1] = origin[1];
        
dest[2] = origin[2] - 1.0;
        
        new 
ptr create_tr2();
        
engfunc(EngFunc_TraceHullorigindest0flags FL_DUCKING HULL_HEAD HULL_HUMANidptr);
        new 
Float:flFraction;
        
get_tr2(ptrTR_flFractionflFraction);
        if( 
flFraction >= 1.0 )
        {
            
free_tr2(ptr);
            return 
0;
        }
        
        
get_tr2(ptrTR_vecPlaneNormaldest);
        
free_tr2(ptr);
        return 
dest[2] <= 0.7;
        
    }
    return 
0
}  
stock PlaySound(id, const sound[])
{
    if (
equal(sound[strlen(sound)-4], ".mp3"))
        
client_cmd(id"mp3 play ^"%s^""sound)
    else
        
client_cmd(id"spk ^"%s^""sound)
}
public 
print_color(idcidcolor, const message[], any:...)
{
    new 
msg[192]
    
vformat(msgcharsmax(msg), message5)
    
    
/*      //if you want to use ML, enable
    replace_all(msg, charsmax(msg), "!g", "^x04")
    replace_all(msg, charsmax(msg), "!n", "^x01")
    replace_all(msg, charsmax(msg), "!t", "^x03")*/
    
    
new param
    
if (!cid
        return
    else 
        
param cid
        
    
new team[32]
    
get_user_team(paramteam31)
    
    switch (
color)
    {
        case 
0msg_teaminfo(paramteam)
        case 
1msg_teaminfo(param"TERRORIST")
        case 
2msg_teaminfo(param"CT")
        case 
3msg_teaminfo(param"SPECTATOR")
    }
    if (
id
        
msg_saytext(idparammsg)
    else 
        
msg_saytext(0parammsg)
        
    if (
color != 0
        
msg_teaminfo(paramteam)
}

msg_saytext(idcidmsg[])
{
    
message_begin(id?MSG_ONE:MSG_ALLget_user_msgid("SayText"), {0,0,0}, id)
    
write_byte(cid)
    
write_string(msg)
    
message_end()
}

msg_teaminfo(idteam[])
{
    
message_begin(MSG_ONEget_user_msgid("TeamInfo"), {0,0,0}, id)
    
write_byte(id)
    
write_string(team)
    
message_end()

__________________

Last edited by Airkish; 08-09-2016 at 16:03.
Airkish is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:14.


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