268 |
#include <cstrike> |
#include <cstrike> |
269 |
#include <cstrike2> |
#include <cstrike2> |
270 |
|
|
271 |
new const VERSION[ ] = "a3.7.1 Nov 18 06:22 MST" |
new const VERSION[ ] = "a3.7.2 Nov 18 10:31 MST" |
272 |
new const TRKCVAR[ ] = "climb_version" |
new const TRKCVAR[ ] = "climb_version" |
273 |
new const DONOTHING[ ] = "donothing" |
new const DONOTHING[ ] = "donothing" |
274 |
new const NULLSTR[ ] = "" |
new const NULLSTR[ ] = "" |
311 |
#define TS_CPGC 3 //This one holds a flag, not a timestamp so it can be < 1 second |
#define TS_CPGC 3 //This one holds a flag, not a timestamp so it can be < 1 second |
312 |
#define TS_KNIFE 4 |
#define TS_KNIFE 4 |
313 |
|
|
314 |
#define TIMER_SIZE 16 |
#define TIMER_SIZE 15 |
315 |
new timer[33][TIMER_SIZE]//timer[id][x]: |
new timer[33][TIMER_SIZE]//timer[id][x]: |
316 |
#define TMR_CFLAGS 0 //Status |
#define TMR_CFLAGS 0 //Status |
317 |
#define TMR_STARTD 1 //Start Time |
#define TMR_CNTTME 1 //Time / in deciseconds |
318 |
#define TMR_FINISH 2 //Finish Time |
#define TMR_CNTCPS 2 //CP Count |
319 |
#define TMR_CNTCPS 3 //CP Count |
#define TMR_CNTGCS 3 //GC Count |
320 |
#define TMR_CNTGCS 4 //GC Count |
#define TMR_CNTBST 4 //Boosts |
321 |
#define TMR_CNTBST 5 //Boosts |
#define TMR_BSTTME 5 //Best Time / in deciseconds |
322 |
#define TMR_BSTTME 6 //Best Time |
#define TMR_BSTCPS 6 //Best CP |
323 |
#define TMR_BSTCPS 7 //Best CP |
#define TMR_BSTGCS 7 //Best GC |
324 |
#define TMR_BSTGCS 8 //Best GC |
#define TMR_BSTBST 8 //Number of boosts used |
325 |
#define TMR_BSTBST 9 //Number of boosts used |
#define TMR_SESFIN 9 //Finished this session |
326 |
#define TMR_SESFIN 10 //Finished this session |
#define TMR_MAPFIN 10 //Total times finished this map |
327 |
#define TMR_MAPFIN 11 //Total times finished this map |
#define TMR_DBUSER 11 //Database player ID; 0=not registered; -1=not registered & shared steam id |
328 |
#define TMR_DBUSER 12 //Database player ID; 0=not registered; -1=not registered & shared steam id |
#define TMR_CPPOS 12 //Current CP offset, for cycling back and forward through cps |
329 |
#define TMR_CPPOS 13 //Current CP offset, for cycling back and forward through cps |
#define TMR_CNTWPN 13 //Current weapon rank modifier |
330 |
#define TMR_CNTWPN 14 //Current weapon rank modifier |
#define TMR_BSTWPN 14 //Best score weapon rank modifier |
|
#define TMR_BSTWPN 15 //Best score weapon rank modifier |
|
331 |
|
|
332 |
//Temp save vars |
//Temp save vars |
333 |
new savepos = 0, steamid[32][32], Float:originssave[32][ORIGINS_SIZE], timersave[32][TIMER_SIZE] |
new savepos = 0, steamid[32][32], Float:originssave[32][ORIGINS_SIZE], timersave[32][TIMER_SIZE] |
391 |
#define CF_COUNTDOWN (1<<11) |
#define CF_COUNTDOWN (1<<11) |
392 |
#define CF_SUNGLASSES (1<<12) |
#define CF_SUNGLASSES (1<<12) |
393 |
|
|
394 |
|
#define SILENT 1 |
395 |
|
|
396 |
new SVC_STATUSICON, SVC_TEAMINFO, SVC_ROUNDTIME, SVC_FLASHLIGHT, SVC_SCREENFADE |
new SVC_STATUSICON, SVC_TEAMINFO, SVC_ROUNDTIME, SVC_FLASHLIGHT, SVC_SCREENFADE |
397 |
|
|
398 |
new SCORES_PATH[100], HSCORES_PATH[100] |
new SCORES_PATH[100], HSCORES_PATH[100] |
526 |
set_task( 0.5, "hudtime", _, _, _, "b" ) //Task to update time on clients HUD; Task set for half second to minimize flickering of the timer. |
set_task( 0.5, "hudtime", _, _, _, "b" ) //Task to update time on clients HUD; Task set for half second to minimize flickering of the timer. |
527 |
set_task( 1.0, "spec_update", _, _, _, "b" ) //Task to update spectator array |
set_task( 1.0, "spec_update", _, _, _, "b" ) //Task to update spectator array |
528 |
set_task( 5.0, "run_tasks", _, _, _, "b" ) |
set_task( 5.0, "run_tasks", _, _, _, "b" ) |
529 |
|
set_task( 0.1, "timer_tick", _, _, _, "b" ) |
530 |
|
|
531 |
register_message( get_user_msgid( "CurWeapon" ), "CurWeapon" ) |
register_message( get_user_msgid( "CurWeapon" ), "CurWeapon" ) |
532 |
|
|
1146 |
if( cflags_old & CF_PAUSE ) //unpause |
if( cflags_old & CF_PAUSE ) //unpause |
1147 |
{ |
{ |
1148 |
cflags_new += CF_START |
cflags_new += CF_START |
|
timer[id][TMR_STARTD] = get_systime() - timer[id][TMR_STARTD] |
|
1149 |
set_entity_flags( id, FL_FROZEN, 0 ) |
set_entity_flags( id, FL_FROZEN, 0 ) |
1150 |
unsolid( id ) |
unsolid( id ) |
1151 |
entity_set_float( id, EV_FL_gravity, origins[id][ORIG_PAUS + ORIG_GRAV] ) |
entity_set_float( id, EV_FL_gravity, origins[id][ORIG_PAUS + ORIG_GRAV] ) |
1154 |
} |
} |
1155 |
else if( cflags_old & CF_START ) //pause |
else if( cflags_old & CF_START ) //pause |
1156 |
{ |
{ |
|
timer[id][TMR_STARTD] = get_systime() - timer[id][TMR_STARTD] |
|
1157 |
cl_pause( id ) |
cl_pause( id ) |
1158 |
cflags_new += CF_PAUSE |
cflags_new += CF_PAUSE |
1159 |
} |
} |
1180 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
1181 |
} |
} |
1182 |
|
|
1183 |
|
public timer_tick( ) |
1184 |
|
{ |
1185 |
|
new players[32], num, id |
1186 |
|
get_players( players, num, "ach" ) |
1187 |
|
|
1188 |
|
for( new i = 0; i < num; i++ ) |
1189 |
|
{ |
1190 |
|
id = players[i] |
1191 |
|
if( timer[id][TMR_CFLAGS] & CF_START ) |
1192 |
|
timer[id][TMR_CNTTME]++ |
1193 |
|
} |
1194 |
|
} |
1195 |
|
|
1196 |
public stop( id ) |
public stop( id ) |
1197 |
{ |
{ |
1198 |
if( get_pcvar_num( p_climb ) && timer[id][TMR_CFLAGS] & CF_START ) |
if( get_pcvar_num( p_climb ) && timer[id][TMR_CFLAGS] & CF_START ) |
1200 |
change_status( id, CF_STOP ) |
change_status( id, CF_STOP ) |
1201 |
heal(id) |
heal(id) |
1202 |
//Erase start/finish time stamps, prevents crazy number on scoreboard |
//Erase start/finish time stamps, prevents crazy number on scoreboard |
1203 |
timer[id][TMR_STARTD]=0 |
timer[id][TMR_CNTTME] = 0 |
|
timer[id][TMR_FINISH]=0 |
|
1204 |
|
|
1205 |
sfexec(id,4) //Execute commands from start/finish config |
sfexec(id,4) //Execute commands from start/finish config |
1206 |
} |
} |
1559 |
return dif |
return dif |
1560 |
} |
} |
1561 |
|
|
1562 |
public change_boost( id, newboost ) |
stock change_boost( id, newboost, silent = 0 ) |
1563 |
{//Change Boost flags |
{//Change Boost flags |
1564 |
if( !( cvar_enabled( id, p_boost ) && isalive( id ) ) && notpaused( id ) ) return PLUGIN_HANDLED |
if( !( cvar_enabled( id, p_boost, silent ) && isalive( id ) ) && notpaused( id ) ) return PLUGIN_HANDLED |
1565 |
|
|
1566 |
new msg[151], rmflag, cflags = timer[ id - 1 ][ TMR_CFLAGS ] |
new msg[151], rmflag, cflags = timer[ id - 1 ][ TMR_CFLAGS ] |
1567 |
if( cflags & CF_SOLID ) |
if( cflags & CF_SOLID ) |
1582 |
} |
} |
1583 |
if( rmflag > 0 ) timer[ id - 1 ][ TMR_CFLAGS ] -= rmflag |
if( rmflag > 0 ) timer[ id - 1 ][ TMR_CFLAGS ] -= rmflag |
1584 |
if( !( rmflag & newboost ) && \ |
if( !( rmflag & newboost ) && \ |
1585 |
!check_timeout( id, time_stamps[id][TS_BOOST], BOOST_TIMEOUT, ( cflags & CF_START ? get_climber_time( id ) : get_systime() ) ) ) |
!check_timeout( id, time_stamps[id][TS_BOOST], BOOST_TIMEOUT, ( cflags & CF_START ? timer[id][TMR_CNTTME] / 10 : get_systime() ) ) ) |
1586 |
{ |
{ |
1587 |
if( newboost == CF_SOLID ) |
if( newboost == CF_SOLID ) |
1588 |
{ |
{ |
1868 |
for( new i = 0; i < 48; i++ ) origins[id][i] = 0.0 //Erase checkpoints |
for( new i = 0; i < 48; i++ ) origins[id][i] = 0.0 //Erase checkpoints |
1869 |
|
|
1870 |
//Set all associated variables |
//Set all associated variables |
1871 |
timer[id][TMR_STARTD] = get_systime() |
timer[id][TMR_CNTTME] = 0 |
|
change_status(id,CF_START) |
|
1872 |
timer[id][TMR_CNTCPS] = 0 |
timer[id][TMR_CNTCPS] = 0 |
1873 |
timer[id][TMR_CNTGCS] = 0 |
timer[id][TMR_CNTGCS] = 0 |
1874 |
timer[id][TMR_CNTBST] = 0 |
timer[id][TMR_CNTBST] = 0 |
1875 |
timer[id][TMR_CPPOS] = 0 |
timer[id][TMR_CPPOS] = 0 |
1876 |
timer[id][TMR_CNTWPN] = 0 |
timer[id][TMR_CNTWPN] = 0 |
1877 |
time_stamps[id][TS_BOOST] = BOOST_TIMEOUT |
time_stamps[id][TS_BOOST] = BOOST_TIMEOUT |
1878 |
|
change_status(id,CF_START) |
1879 |
|
|
1880 |
if( timer[id][TMR_CFLAGS] & CF_COUNTDOWN ) set_countdown_time( id ) |
if( timer[id][TMR_CFLAGS] & CF_COUNTDOWN ) set_countdown_time( id ) |
1881 |
|
|
1904 |
case 2:client_cmd( id, "spk barney/c1a2_ba_climb" ) |
case 2:client_cmd( id, "spk barney/c1a2_ba_climb" ) |
1905 |
} |
} |
1906 |
|
|
1907 |
change_boost( id, CF_NULL ) //Disable Boosts |
change_boost( id, CF_NULL, SILENT ) //Disable Boosts |
1908 |
//time_stamps[id][TS_BOOST]=0 |
//time_stamps[id][TS_BOOST]=0 |
1909 |
clmsg(id,"Timer started. Go Go Go!!!") |
clmsg(id,"Timer started. Go Go Go!!!") |
1910 |
//client_print(id,print_chat,"Timer started. Go Go Go!!!") |
//client_print(id,print_chat,"Timer started. Go Go Go!!!") |
1917 |
{ |
{ |
1918 |
if( timer[id][TMR_CFLAGS] & CF_START) |
if( timer[id][TMR_CFLAGS] & CF_START) |
1919 |
{ |
{ |
1920 |
|
new cnttme = timer[id][TMR_CNTTME] / 10 |
1921 |
|
new cntbst = timer[id][TMR_CNTBST] |
1922 |
|
new cntcps = timer[id][TMR_CNTCPS] |
1923 |
|
new cntgcs = timer[id][TMR_CNTGCS] |
1924 |
|
new cntwpn = timer[id][TMR_CNTWPN] |
1925 |
|
|
1926 |
//Set client variables |
//Set client variables |
|
timer[id][TMR_FINISH] = get_systime( ) |
|
1927 |
change_status( id, CF_STOP ) |
change_status( id, CF_STOP ) |
1928 |
timer[id][TMR_SESFIN]++ |
timer[id][TMR_SESFIN]++ |
1929 |
timer[id][TMR_MAPFIN]++ |
timer[id][TMR_MAPFIN]++ |
1932 |
if( get_pcvar_num( p_sounds ) ) client_cmd( 0, "spk woop" ) |
if( get_pcvar_num( p_sounds ) ) client_cmd( 0, "spk woop" ) |
1933 |
clmsg( id, "Congratulations 1337 climber." ) |
clmsg( id, "Congratulations 1337 climber." ) |
1934 |
//client_print(id,print_chat,"Congratulations 1337 climber.") |
//client_print(id,print_chat,"Congratulations 1337 climber.") |
1935 |
new name[32], msg[21] |
new name[32], msg[23] |
1936 |
formatex( msg, sizeof( msg ) - 1, "%s^t%s", getuserstatus( id ), parsetime( get_climber_time( id ) ) ) |
formatex( msg, 22, "%s^t%s", getuserstatus( id ), parsetime( timer[id][TMR_CNTTME] ) ) |
1937 |
//clmsg(id,msg) |
//clmsg(id,msg) |
1938 |
//client_print(id,print_chat,msg) |
//client_print(id,print_chat,msg) |
1939 |
|
|
1940 |
new wpn[11] |
new wpn[11] |
1941 |
get_weapon_name( timer[id][TMR_CNTWPN], wpn, 10 ) |
get_weapon_name( cntwpn, wpn, 10 ) |
1942 |
|
|
1943 |
//Announce to all |
//Announce to all |
1944 |
get_user_name( id, name, 32 ) |
get_user_name( id, name, 32 ) |
1945 |
client_print( 0, print_chat, "%s^t%s^t(%s/ %d CPS/ %d GCS/ %d Boosts)^tCompleted (%d, %d)", |
client_print( 0, print_chat, |
1946 |
name, msg, |
"%s^t%s^t(%s/ %d CPS/ %d GCS/ %d Boosts)^tCompleted (%d, %d)", |
1947 |
wpn, timer[id][TMR_CNTCPS], timer[id][TMR_CNTGCS], timer[id][TMR_CNTBST], |
name, msg, wpn, cntcps, cntgcs, cntbst, |
1948 |
timer[id][TMR_SESFIN], timer[id][TMR_MAPFIN] ) |
timer[id][TMR_SESFIN], timer[id][TMR_MAPFIN] |
1949 |
|
) |
1950 |
new cnt_score = ( ( ( timer[id][TMR_CNTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
|
1951 |
( ( timer[id][TMR_CNTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
new cntscore = ( ( ( cntbst > 0 ? 1 : 0 ) * 1000000 ) + |
1952 |
( timer[id][TMR_CNTWPN] * 10000 ) + |
( ( cntcps > 0 ? 1 : 0 ) * 100000 ) + |
1953 |
get_climber_time( id ) ) |
( cntwpn * 10000 ) + |
1954 |
|
cnttme ) |
1955 |
|
|
1956 |
new bst_score = ( ( ( timer[id][TMR_BSTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
new bstscore = ( ( ( timer[id][TMR_BSTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
1957 |
( ( timer[id][TMR_BSTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
( ( timer[id][TMR_BSTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
1958 |
( timer[id][TMR_BSTWPN] * 10000 ) + |
( timer[id][TMR_BSTWPN] * 10000 ) + |
1959 |
timer[id][TMR_BSTTME] ) |
timer[id][TMR_BSTTME] / 10 ) |
1960 |
|
|
1961 |
if( cnt_score < bst_score || bst_score == 0 ) |
if( cntscore < bstscore || bstscore == 0 ) |
1962 |
{ |
{ |
1963 |
timer[id][TMR_BSTTME] = get_climber_time( id ) |
timer[id][TMR_BSTTME] = cnttme |
1964 |
timer[id][TMR_BSTCPS] = timer[id][TMR_CNTCPS] |
timer[id][TMR_BSTCPS] = cntcps |
1965 |
timer[id][TMR_BSTGCS] = timer[id][TMR_CNTGCS] |
timer[id][TMR_BSTGCS] = cntgcs |
1966 |
timer[id][TMR_BSTBST] = timer[id][TMR_CNTBST] |
timer[id][TMR_BSTBST] = cntbst |
1967 |
timer[id][TMR_BSTWPN] = timer[id][TMR_CNTWPN] |
timer[id][TMR_BSTWPN] = cntwpn |
1968 |
} |
} |
1969 |
|
|
1970 |
sfexec( id, 2 )//Execute commands from start/finish config |
sfexec( id, 2 )//Execute commands from start/finish config |
2067 |
pdata[i][1] = ( ( ( timer[id][TMR_BSTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
pdata[i][1] = ( ( ( timer[id][TMR_BSTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
2068 |
( ( timer[id][TMR_BSTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
( ( timer[id][TMR_BSTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
2069 |
( timer[id][TMR_BSTWPN] * 10000 ) + |
( timer[id][TMR_BSTWPN] * 10000 ) + |
2070 |
timer[id][TMR_BSTTME] ) |
timer[id][TMR_BSTTME] / 10 ) |
2071 |
} |
} |
2072 |
else if( timer[id][TMR_CFLAGS] & CF_START || timer[id][TMR_CFLAGS] & CF_PAUSE ) |
else if( timer[id][TMR_CFLAGS] & CF_START || timer[id][TMR_CFLAGS] & CF_PAUSE ) |
2073 |
{//Has time but no high score |
{//Has time but no high score |
2075 |
pdata[i][1] = ( ( ( timer[id][TMR_CNTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
pdata[i][1] = ( ( ( timer[id][TMR_CNTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
2076 |
( ( timer[id][TMR_CNTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
( ( timer[id][TMR_CNTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
2077 |
( timer[id][TMR_CNTWPN] * 10000 ) + |
( timer[id][TMR_CNTWPN] * 10000 ) + |
2078 |
get_climber_time( id ) ) |
timer[id][TMR_CNTTME] / 10 ) |
2079 |
} |
} |
2080 |
else pdata[i][0] = 2 //No time or high score |
else pdata[i][0] = 2 //No time or high score |
2081 |
} |
} |
2121 |
|
|
2122 |
public climbscores( id ) |
public climbscores( id ) |
2123 |
{//Show scoreboard |
{//Show scoreboard |
2124 |
if( get_pcvar_num( p_climb ) ) |
if( !get_pcvar_num( p_climb ) ) return PLUGIN_HANDLED |
2125 |
{ |
|
2126 |
if( get_systime() - ts_score > 2 ) |
if( get_systime() - ts_score > 2 ) |
2127 |
{ |
{ |
2128 |
new fh = fopen( SCORES_PATH, "w" ) |
new fh = fopen( SCORES_PATH, "w" ) |
2146 |
get_user_name( tid, name, NAMELEN) |
get_user_name( tid, name, NAMELEN) |
2147 |
sb_add_tabs( name, NAMELEN+2 ) |
sb_add_tabs( name, NAMELEN+2 ) |
2148 |
|
|
2149 |
ctime = get_climber_time(tid) |
ctime = timer[tid][TMR_CNTTME] |
2150 |
cwpn = timer[tid][TMR_CNTWPN] |
cwpn = timer[tid][TMR_CNTWPN] |
2151 |
ccp = timer[tid][TMR_CNTCPS] |
ccp = timer[tid][TMR_CNTCPS] |
2152 |
cgc = timer[tid][TMR_CNTGCS] |
cgc = timer[tid][TMR_CNTGCS] |
2187 |
} |
} |
2188 |
|
|
2189 |
show_motd( id, SCORES_PATH, "Current Scores" ) |
show_motd( id, SCORES_PATH, "Current Scores" ) |
2190 |
} |
|
2191 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
2192 |
} |
} |
2193 |
|
|
2194 |
public parsetime(sec){//Convert seconds to time string with zero padded seconds field |
//Convert seconds to time string with zero padded seconds field |
2195 |
new timestr[9],mins |
public parsetime( decisec ) |
2196 |
|
{ |
2197 |
|
new timestr[11], mins, sec, dec, decstr[3] |
2198 |
|
|
2199 |
|
sec = decisec / 10 |
2200 |
|
dec = decisec % 10 |
2201 |
mins=sec/60 |
mins=sec/60 |
2202 |
sec=sec%60 |
sec=sec%60 |
2203 |
formatex(timestr,8,"%d:%s%d",mins,sec<10?"0":"",sec) |
if( dec ) formatex( decstr, 2, ".%d", dec ) |
2204 |
|
formatex( timestr, 10, "%d:%s%d%s", mins, sec < 10 ? "0" : NULLSTR , sec, decstr ) |
2205 |
return timestr |
return timestr |
2206 |
} |
} |
2207 |
|
|
|
public get_climber_time( id ) |
|
|
{//Calculate client climb time in seconds |
|
|
/*new ptime,cflags=timer[id][TMR_CFLAGS] |
|
|
ptime=timer[id][TMR_FINISH]-timer[id][TMR_STARTD] |
|
|
if(cflags&CF_STOP&&timer[id=1][TMR_SESFIN]>0)ptime=timer[id][TMR_FINISH]-timer[id][TMR_STARTD] |
|
|
else if(cflags&CF_STOP)ptime=0 |
|
|
else if(cflags&CF_START)ptime=get_systime()-timer[id][TMR_STARTD] |
|
|
else if(cflags&CF_PAUSE)ptime=timer[id][TMR_STARTD]*/ |
|
|
new cflags = timer[id][TMR_CFLAGS] |
|
|
if( cflags & CF_START ) return get_systime()-timer[id][TMR_STARTD] |
|
|
else if( cflags & CF_PAUSE ) return timer[id][TMR_STARTD] |
|
|
return timer[id][TMR_FINISH]-timer[id][TMR_STARTD] |
|
|
} |
|
|
|
|
2208 |
public hudtime( ) |
public hudtime( ) |
2209 |
{//Set clock on HUD to current climb time |
{//Set clock on HUD to current climb time |
2210 |
if( !get_pcvar_num( p_climb ) ) return |
if( !get_pcvar_num( p_climb ) ) return |
2215 |
{ |
{ |
2216 |
id = players[i] |
id = players[i] |
2217 |
cflags = timer[id][TMR_CFLAGS] |
cflags = timer[id][TMR_CFLAGS] |
2218 |
cltime = get_climber_time(id) + 1 |
cltime = timer[id][TMR_CNTTME] / 10 + 1 |
2219 |
if( cflags & CF_PAUSE ) |
if( cflags & CF_PAUSE ) |
2220 |
{ |
{ |
2221 |
clmsg( id, "PAUSED - say '/unpause' to resume." ) |
clmsg( id, "PAUSED - say '/unpause' to resume." ) |
2222 |
cl_pause( id ) |
cl_pause( id ) |
2223 |
} |
} |
2224 |
|
|
2225 |
if( !( cflags & CF_COUNTDOWN ) || ( timer[id][TMR_BSTTME] - get_climber_time( id ) < 0 ) ) |
if( !( cflags & CF_COUNTDOWN ) || ( timer[id][TMR_BSTTME] >= timer[id][TMR_CNTTME] ) ) |
2226 |
hudtime_msg( id, cltime ) |
hudtime_msg( id, cltime ) |
2227 |
else if( cflags & CF_PAUSE ) |
else if( cflags & CF_PAUSE ) |
2228 |
hudtime_msg( id, timer[id][TMR_BSTTME] - cltime + 1 ) |
hudtime_msg( id, timer[id][TMR_BSTTME] / 10 - cltime + 1 ) |
2229 |
|
|
2230 |
for( new j = 1; j <= spec_ids[id][0]; j++ ) |
for( new j = 1; j <= spec_ids[id][0]; j++ ) |
2231 |
hudtime_msg( spec_ids[id][j], cltime ) |
hudtime_msg( spec_ids[id][j], cltime ) |
2247 |
|
|
2248 |
public bool:set_countdown_time( id ) |
public bool:set_countdown_time( id ) |
2249 |
{ |
{ |
2250 |
new bsttime = timer[id][TMR_BSTTME] |
new bsttme = timer[id][TMR_BSTTME] / 10 |
2251 |
if( bsttime > 0 ) |
if( bsttme > 0 ) |
2252 |
{ |
{ |
2253 |
new cflags = timer[id][TMR_CFLAGS] |
new cflags = timer[id][TMR_CFLAGS] |
2254 |
if( cflags & CF_START || cflags & CF_PAUSE ) |
if( cflags & CF_START || cflags & CF_PAUSE ) |
2255 |
hudtime_msg( id, timer[id][TMR_BSTTME] - get_climber_time( id ) ) |
hudtime_msg( id, bsttme - timer[id][TMR_CNTTME] / 10 ) |
2256 |
return true |
return true |
2257 |
} |
} |
2258 |
clmsg( id, "Countdown disabled: No high score available." ) |
clmsg( id, "Countdown disabled: No high score available." ) |
2657 |
set_entity_flags(ida[0],FL_DUCKING,1) |
set_entity_flags(ida[0],FL_DUCKING,1) |
2658 |
} |
} |
2659 |
|
|
2660 |
public cvar_enabled(id,p_cvar){//Used in IF statements to automatically print error if false |
//Used in IF statements to automatically print error if false |
2661 |
if(get_pcvar_num(p_cvar)==0){ |
stock cvar_enabled( id, p_cvar, silent = 0 ) |
2662 |
|
{ |
2663 |
|
if( get_pcvar_num(p_cvar) == 0 ) |
2664 |
|
{ |
2665 |
|
if( !silent ) |
2666 |
|
{ |
2667 |
clmsg(id,"This command is disabled.") |
clmsg(id,"This command is disabled.") |
2668 |
client_print(id,print_chat,"This command has been disabled by the server administrator.") |
client_print(id,print_chat,"This command has been disabled by the server administrator.") |
2669 |
|
} |
2670 |
return 0 |
return 0 |
2671 |
} |
} |
2672 |
return 1 |
return 1 |
3287 |
server_ip char(15),\ |
server_ip char(15),\ |
3288 |
user_id integer,\ |
user_id integer,\ |
3289 |
map_name varchar(32),\ |
map_name varchar(32),\ |
3290 |
fin_time integer,\ |
fin_time float,\ |
3291 |
cps integer,\ |
cps integer,\ |
3292 |
gcs integer,\ |
gcs integer,\ |
3293 |
boosts integer,\ |
boosts integer,\ |
3471 |
msg="^x04No stats available for this account on the current map." |
msg="^x04No stats available for this account on the current map." |
3472 |
else |
else |
3473 |
{ |
{ |
3474 |
new mapname[33],timestr[9] |
new mapname[33] |
3475 |
get_mapname(mapname,32) |
get_mapname(mapname,32) |
3476 |
timer[id][TMR_BSTTME] = SQL_ReadResult( query, 0 ) |
SQL_ReadResult( query, 0, timer[id][TMR_BSTTME] ) |
3477 |
|
timer[id][TMR_BSTTME] *= 10 |
3478 |
timer[id][TMR_BSTCPS] = SQL_ReadResult( query, 1 ) |
timer[id][TMR_BSTCPS] = SQL_ReadResult( query, 1 ) |
3479 |
timer[id][TMR_BSTGCS] = SQL_ReadResult( query, 2 ) |
timer[id][TMR_BSTGCS] = SQL_ReadResult( query, 2 ) |
3480 |
timer[id][TMR_MAPFIN] = SQL_ReadResult( query, 3 ) |
timer[id][TMR_MAPFIN] = SQL_ReadResult( query, 3 ) |
3482 |
timer[id][TMR_BSTWPN] = SQL_ReadResult( query, 5 ) |
timer[id][TMR_BSTWPN] = SQL_ReadResult( query, 5 ) |
3483 |
//timer[id][TMR_CFLAGS]+=SQL_ReadResult(query,5)?CF_BSTSCT:0 |
//timer[id][TMR_CFLAGS]+=SQL_ReadResult(query,5)?CF_BSTSCT:0 |
3484 |
|
|
|
timestr = parsetime(timer[id][TMR_BSTTME]) |
|
3485 |
formatex( msg, 99, |
formatex( msg, 99, |
3486 |
"^x04Stats loaded for %s - %s^t(%d/ %d CP/%d GC/%d Boost)^tCompleted %d", |
"^x04Stats loaded for %s - %s^t(%d/ %d CP/%d GC/%d Boost)^tCompleted %d", |
3487 |
mapname, timestr, timer[id][TMR_BSTWPN], timer[id][TMR_BSTCPS], |
mapname, parsetime( timer[id][TMR_BSTTME] ), timer[id][TMR_BSTWPN], timer[id][TMR_BSTCPS], |
3488 |
timer[id][TMR_BSTGCS], timer[id][TMR_BSTBST], timer[id][TMR_MAPFIN] ) |
timer[id][TMR_BSTGCS], timer[id][TMR_BSTBST], timer[id][TMR_MAPFIN] ) |
3489 |
} |
} |
3490 |
saytext( id, id, msg ) |
saytext( id, id, msg ) |
3495 |
|
|
3496 |
public db_save( id ) |
public db_save( id ) |
3497 |
{ |
{ |
3498 |
if( timer[id][TMR_DBUSER] < 1 ) |
new user_id = timer[id][TMR_DBUSER] |
3499 |
|
|
3500 |
|
if( user_id < 1 ) |
3501 |
{ |
{ |
3502 |
auto_reg( id ) |
auto_reg( id ) |
3503 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
3504 |
} |
} |
3505 |
|
|
3506 |
new query[351], name[33], data[2] |
new query[351], name[33], data[2] |
3507 |
data[0] = id |
data[0] = id |
3508 |
get_mapname( name, 32 ) |
get_mapname( name, 32 ) |
3509 |
strtolower( name ) |
strtolower( name ) |
3510 |
|
|
3511 |
new user_id = timer[id][TMR_DBUSER] |
new cntbst = timer[id][TMR_CNTBST] |
3512 |
new fin_time = get_climber_time( id ) |
new cntcps = timer[id][TMR_CNTCPS] |
3513 |
|
new cntwpn = timer[id][TMR_CNTWPN] |
3514 |
new wpn_rank = timer[id][TMR_CNTWPN] |
|
3515 |
|
new score = ( ( ( cntbst > 0 ? 1 : 0 ) * 1000000 ) + |
3516 |
new score = ( ( ( timer[id][TMR_CNTBST] > 0 ? 1 : 0 ) * 1000000 ) + |
( ( cntcps > 0 ? 1 : 0 ) * 100000 ) + |
3517 |
( ( timer[id][TMR_CNTCPS] > 0 ? 1 : 0 ) * 100000 ) + |
( cntwpn * 10000 ) + |
3518 |
( wpn_rank * 10000 ) + |
timer[id][TMR_CNTTME] / 10 ) |
|
fin_time ) |
|
3519 |
|
|
|
/*if( timer[id][TMR_MAPFIN] == 1 ) |
|
|
formatex( query, 350, |
|
|
"insert into %sscores (user_id, map_name, fin_time, cps, gcs, fin_cnt, boosts, wpns, score, server_time_stamp) values (%d, ^"%s^", %d, %d, %d, %d, %d, %d, %d, %d);",\ |
|
|
DB_PREFIX, user_id, name, fin_time, timer[id][TMR_BSTCPS], timer[id][TMR_BSTGCS], timer[id][TMR_MAPFIN], timer[id][TMR_BSTBST], sctd, sort, get_systime() ) |
|
|
else*/ |
|
3520 |
formatex( query, 350, |
formatex( query, 350, |
3521 |
"insert into %sscores (server_ip, user_id, map_name, fin_time, cps, gcs, boosts, wpns, score, server_time_stamp) values (^"%s^", %d, ^"%s^", %d, %d, %d, %d, %d, %d, %d)",\ |
"insert into %sscores (server_ip, user_id, map_name, fin_time, cps, gcs, boosts, wpns, score, server_time_stamp) values (^"%s^", %d, ^"%s^", %f, %d, %d, %d, %d, %d, %d)",\ |
3522 |
DB_PREFIX, DB_SERVER_ID, user_id, name, fin_time, timer[id][TMR_CNTCPS], timer[id][TMR_CNTGCS], timer[id][TMR_CNTBST], wpn_rank, score, get_systime() ) |
DB_PREFIX, DB_SERVER_ID, user_id, name, timer[id][TMR_CNTTME] * 0.1, cntcps, timer[id][TMR_CNTGCS], cntbst, cntwpn, score, get_systime() ) |
3523 |
SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query,data,2) |
SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query,data,2) |
3524 |
|
|
3525 |
data[1] = 0 |
data[1] = 0 |
3526 |
get_user_name( id, name, 32 ) |
get_user_name( id, name, 32 ) |
3527 |
formatex( query, 350, "update %splayers set alias=^"%s^" where user_id=%d;", DB_PREFIX, name, timer[id][TMR_DBUSER] ) |
formatex( query, 350, "update %splayers set alias=^"%s^" where user_id=%d;", DB_PREFIX, name, user_id ) |
3528 |
SQL_ThreadQuery( DB_TUPLE, "db_name_update_handler", query, data, 2 ) |
SQL_ThreadQuery( DB_TUPLE, "db_name_update_handler", query, data, 2 ) |
3529 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
3530 |
} |
} |
3607 |
formatex(query,99,"insert into %splayers (user_name,password,alias) values (^"%s^",^"%s^",^"%s^")",DB_PREFIX,user,pass,name) |
formatex(query,99,"insert into %splayers (user_name,password,alias) values (^"%s^",^"%s^",^"%s^")",DB_PREFIX,user,pass,name) |
3608 |
SQL_ThreadQuery(DB_TUPLE,"reg_handler",query,data,43) |
SQL_ThreadQuery(DB_TUPLE,"reg_handler",query,data,43) |
3609 |
} |
} |
|
//Else register SteamID |
|
|
/*else if(timer[id][TMR_DBUSER]<1){ |
|
|
data[1]=2 |
|
|
formatex(query,99,"insert into %splayers (steam_id,alias) values (^"%s^",^"%s^")",DB_PREFIX,sid,name) |
|
|
SQL_ThreadQuery(DB_TUPLE,"reg_handler",query,data,43) |
|
|
}*/ |
|
3610 |
} |
} |
3611 |
else client_print(id,print_console,"[Climb] Registration Error: Can't Register; Stats not enabled.") |
else client_print(id,print_console,"[Climb] Registration Error: Can't Register; Stats not enabled.") |
3612 |
} |
} |
3652 |
} |
} |
3653 |
|
|
3654 |
public highscores(id) |
public highscores(id) |
3655 |
{//Show High Scores |
{ |
3656 |
if( !CLIMB_SAVE ) return clmsg( id, "Stats not enabled.") |
if( !CLIMB_SAVE ) return clmsg( id, "Stats not enabled.") |
3657 |
|
|
3658 |
new hsurl[150], mapname[33] |
new hsurl[150], mapname[33] |
3668 |
{ |
{ |
3669 |
new query[501], data[1] |
new query[501], data[1] |
3670 |
data[0] = id |
data[0] = id |
3671 |
/*formatex( query, 249,\ |
|
|
"select p.alias, s.fin_time, s.cps, s.gcs, s.fin_cnt, s.boosts, s.wpns from %sscores s, %splayers p where s.map_name=^"%s^" and p.user_id=s.user_id order by s.score, s.fin_time limit 20;",\ |
|
|
DB_PREFIX, DB_PREFIX, mapname )*/ |
|
3672 |
formatex( query, 500, |
formatex( query, 500, |
3673 |
"select distinct p.alias, s.fin_time, s.cps, s.gcs, g.fin_cnt, s.boosts, s.wpns, s.score from %sscores s join %splayers p on s.user_id = p.user_id join (select user_id, min(score) minscore, count(*) fin_cnt from %sscores where map_name=^"%s^" group by user_id, wpns) g on p.user_id=g.user_id where map_name=^"%s^" and s.score=g.minscore order by s.score limit 20", |
"select distinct p.alias, s.fin_time, s.cps, s.gcs, g.fin_cnt, s.boosts, s.wpns, s.score from %sscores s join %splayers p on s.user_id = p.user_id join (select user_id, min(score) minscore, count(*) fin_cnt from %sscores where map_name=^"%s^" group by user_id, wpns) g on p.user_id=g.user_id where map_name=^"%s^" and s.score=g.minscore order by s.score limit 20", |
3674 |
DB_PREFIX, DB_PREFIX, DB_PREFIX, mapname, mapname ) |
DB_PREFIX, DB_PREFIX, DB_PREFIX, mapname, mapname ) |
3715 |
sb_add_tabs( name, NAMELEN+2 ) |
sb_add_tabs( name, NAMELEN+2 ) |
3716 |
|
|
3717 |
|
|
3718 |
format( btime_str, 19, "%d/%d/%d/%d",\ |
format( btime_str, 19, "%d/%d/%d/%d", |
3719 |
SQL_ReadResult( query, 6 ),\ |
SQL_ReadResult( query, 6 ), |
3720 |
SQL_ReadResult( query, 2 ),\ |
SQL_ReadResult( query, 2 ), |
3721 |
SQL_ReadResult( query, 3 ),\ |
SQL_ReadResult( query, 3 ), |
3722 |
SQL_ReadResult( query, 5 ) ) |
SQL_ReadResult( query, 5 ) |
3723 |
|
) |
3724 |
sb_add_tabs( btime_str, 19 ) |
sb_add_tabs( btime_str, 19 ) |
3725 |
|
|
3726 |
formatex( line, 150,\ |
formatex( line, 150,\ |
3727 |
"%s%d %s%s %s %d%s", |
"%s%d %s%s %s %d%s", |
3728 |
i % 2 ? NULLSTR : "<div>", |
i % 2 ? NULLSTR : "<div>", |
3729 |
i, htmlspecialchars( name ), |
i, htmlspecialchars( name ), |
3730 |
parsetime( SQL_ReadResult( query, 1 ) ), |
parsetime( SQL_ReadResult( query, 1 ) * 10 ), |
3731 |
btime_str, |
btime_str, |
3732 |
SQL_ReadResult( query, 4 ), |
SQL_ReadResult( query, 4 ), |
3733 |
i % 2 ? NULLSTR : "</div>" ) |
i % 2 ? NULLSTR : "</div>" ) |
3780 |
new query[501], data[1] |
new query[501], data[1] |
3781 |
data[0]=id |
data[0]=id |
3782 |
|
|
|
/*formatex( query, 500, |
|
|
"select p.alias, s.score_id, s.fin_time, s.cps, s.gcs, s.boosts, s.wpns from %sscores s, %splayers p where s.map_name=^"%s^" and p.user_id=s.user_id order by s.score, s.fin_time limit 20;", |
|
|
DB_PREFIX, DB_PREFIX, mapname)*/ |
|
3783 |
formatex( query, 500, |
formatex( query, 500, |
3784 |
"select distinct p.alias, s.score_id, s.fin_time, s.cps, s.gcs, s.boosts, s.wpns from %sscores s join %splayers p on s.user_id = p.user_id join (select user_id, min(score) minscore, count(*) fin_cnt from %sscores where map_name=^"%s^" group by user_id, wpns) g on p.user_id=g.user_id where map_name=^"%s^" and s.score=g.minscore order by s.score limit 20", |
"select distinct p.alias, s.score_id, s.fin_time, s.cps, s.gcs, s.boosts, s.wpns from %sscores s join %splayers p on s.user_id = p.user_id join (select user_id, min(score) minscore, count(*) fin_cnt from %sscores where map_name=^"%s^" group by user_id, wpns) g on p.user_id=g.user_id where map_name=^"%s^" and s.score=g.minscore order by s.score limit 20", |
3785 |
DB_PREFIX, DB_PREFIX, DB_PREFIX, mapname, mapname ) |
DB_PREFIX, DB_PREFIX, DB_PREFIX, mapname, mapname ) |