Advertisement
Guest User

Untitled

a guest
Sep 29th, 2010
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.06 KB | None | 0 0
  1. #include maps\mp\_utility;
  2.  
  3. init()
  4. {
  5. level.persistentDataInfo = [];
  6.  
  7. maps\mp\gametypes\_class::init();
  8. maps\mp\gametypes\_rank::init();
  9. maps\mp\gametypes\_missions::init();
  10. maps\mp\gametypes\_playercards::init();
  11.  
  12. level thread updateBufferedStats();
  13. }
  14.  
  15.  
  16. initBufferedStats()
  17. {
  18. self.bufferedStats = [];
  19. self.bufferedStats[ "totalShots" ] = self getPlayerData( "totalShots" );
  20. self.bufferedStats[ "accuracy" ] = self getPlayerData( "accuracy" );
  21. self.bufferedStats[ "misses" ] = self getPlayerData( "misses" );
  22. self.bufferedStats[ "hits" ] = self getPlayerData( "hits" );
  23. self.bufferedStats[ "timePlayedAllies" ] = self getPlayerData( "timePlayedAllies" );
  24. self.bufferedStats[ "timePlayedOpfor" ] = self getPlayerData( "timePlayedOpfor" );
  25. self.bufferedStats[ "timePlayedOther" ] = self getPlayerData( "timePlayedOther" );
  26. self.bufferedStats[ "timePlayedTotal" ] = self getPlayerData( "timePlayedTotal" );
  27.  
  28. self.bufferedChildStats = [];
  29. self.bufferedChildStats[ "round" ] = [];
  30. self.bufferedChildStats[ "round" ][ "timePlayed" ] = self getPlayerData( "round", "timePlayed" );
  31. }
  32.  
  33.  
  34.  
  35. // ==========================================
  36. // Script persistent data functions
  37. // These are made for convenience, so persistent data can be tracked by strings.
  38. // They make use of code functions which are prototyped below.
  39.  
  40. /*
  41. =============
  42. statGet
  43.  
  44. Returns the value of the named stat
  45. =============
  46. */
  47. statGet( dataName )
  48. {
  49. assert( !isDefined( self.bufferedStats[ dataName ] ) ); // should use statGetBuffered consistently with statSetBuffered
  50. return self GetPlayerData( dataName );
  51. }
  52.  
  53. /*
  54. =============
  55. statSet
  56.  
  57. Sets the value of the named stat
  58. =============
  59. */
  60. statSet( dataName, value )
  61. {
  62. assert( !isDefined( self.bufferedStats[ dataName ] ) ); // should use statGetBuffered consistently with statSetBuffered
  63.  
  64. if ( !self rankingEnabled() )
  65. return;
  66.  
  67. self SetPlayerData( dataName, value );
  68. }
  69.  
  70. /*
  71. =============
  72. statAdd
  73.  
  74. Adds the passed value to the value of the named stat
  75. =============
  76. */
  77. statAdd( dataName, value )
  78. {
  79. assert( !isDefined( self.bufferedStats[ dataName ] ) ); // should use statGetBuffered consistently with statSetBuffered
  80.  
  81. if ( !self rankingEnabled() )
  82. return;
  83.  
  84. curValue = self GetPlayerData( dataName );
  85. self SetPlayerData( dataName, value + curValue );
  86. }
  87.  
  88.  
  89. statGetChild( parent, child )
  90. {
  91. return self GetPlayerData( parent, child );
  92. }
  93.  
  94.  
  95. statSetChild( parent, child, value )
  96. {
  97. if ( !self rankingEnabled() )
  98. return;
  99.  
  100. self SetPlayerData( parent, child, value );
  101. }
  102.  
  103.  
  104. statAddChild( parent, child, value )
  105. {
  106. assert( isDefined( self.bufferedChildStats[ parent ][ child ] ) );
  107.  
  108. if ( !self rankingEnabled() )
  109. return;
  110.  
  111. curValue = self GetPlayerData( parent, child );
  112. self SetPlayerData( parent, child, curValue + value );
  113. }
  114.  
  115.  
  116. statGetChildBuffered( parent, child )
  117. {
  118. assert( isDefined( self.bufferedChildStats[ parent ][ child ] ) );
  119.  
  120. return self.bufferedChildStats[ parent ][ child ];
  121. }
  122.  
  123.  
  124. statSetChildBuffered( parent, child, value )
  125. {
  126. assert( isDefined( self.bufferedChildStats[ parent ][ child ] ) );
  127.  
  128. if ( !self rankingEnabled() )
  129. return;
  130.  
  131. self.bufferedChildStats[ parent ][ child ] = value;
  132. }
  133.  
  134.  
  135. statAddChildBuffered( parent, child, value )
  136. {
  137. assert( isDefined( self.bufferedChildStats[ parent ][ child ] ) );
  138.  
  139. if ( !self rankingEnabled() )
  140. return;
  141.  
  142. curValue = statGetChildBuffered( parent, child );
  143. statSetChildBuffered( parent, child, curValue + value );
  144. }
  145.  
  146.  
  147. /*
  148. =============
  149. statGetBuffered
  150.  
  151. Returns the value of the named stat
  152. =============
  153. */
  154. statGetBuffered( dataName )
  155. {
  156. assert( isDefined( self.bufferedStats[ dataName ] ) );
  157.  
  158. return self.bufferedStats[ dataName ];
  159. }
  160.  
  161. /*
  162. =============
  163. statSet
  164.  
  165. Sets the value of the named stat
  166. =============
  167. */
  168. statSetBuffered( dataName, value )
  169. {
  170. assert( isDefined( self.bufferedStats[ dataName ] ) );
  171.  
  172. if ( !self rankingEnabled() )
  173. return;
  174.  
  175. self.bufferedStats[ dataName ] = value;
  176. }
  177.  
  178. /*
  179. =============
  180. statAdd
  181.  
  182. Adds the passed value to the value of the named stat
  183. =============
  184. */
  185. statAddBuffered( dataName, value )
  186. {
  187. assert( isDefined( self.bufferedStats[ dataName ] ) );
  188.  
  189. if ( !self rankingEnabled() )
  190. return;
  191.  
  192. curValue = statGetBuffered( dataName );
  193. statSetBuffered( dataName, curValue + value );
  194. }
  195.  
  196.  
  197. updateBufferedStats()
  198. {
  199. // give the first player time to connect
  200. wait ( 0.15 );
  201.  
  202. nextToUpdate = 0;
  203. while ( !level.gameEnded )
  204. {
  205. nextToUpdate++;
  206. if ( nextToUpdate >= level.players.size )
  207. nextToUpdate = 0;
  208.  
  209. if ( isDefined( level.players[nextToUpdate] ) )
  210. level.players[nextToUpdate] writeBufferedStats();
  211.  
  212. wait ( 2.0 );
  213. }
  214.  
  215. foreach ( player in level.players )
  216. player writeBufferedStats();
  217. }
  218.  
  219.  
  220. writeBufferedStats()
  221. {
  222. foreach ( statName, statVal in self.bufferedStats )
  223. {
  224. self setPlayerData( statName, statVal );
  225. }
  226.  
  227. foreach ( statName, statVal in self.bufferedChildStats )
  228. {
  229. foreach ( childStatName, childStatVal in statVal )
  230. self setPlayerData( statName, childStatName, childStatVal );
  231. }
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement