hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.03. 18:50



Jelenlévő felhasználók

Jelenleg 211 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 211 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Pont rendszer sqlről-->vault
HozzászólásElküldve: 2014.04.12. 12:50 
Offline
Jómunkásember

Csatlakozott: 2014.01.04. 18:31
Hozzászólások: 326
Megköszönt másnak: 79 alkalommal
Megköszönték neki: 7 alkalommal
Hello.Valaki megtudná csinálni ezt a plugint hogy ne sql-s legyen hanem vault os??

SMA Forráskód: [ Mindet kijelol ]
  1. #include < amxmodx >
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <csx>
  5. #include <hamsandwich>
  6. #include <sqlx>
  7.  
  8. new const PLUGIN[ ] = "xxxx"
  9. new const VERSION[ ] = "xxxx"
  10. new const AUTHOR[ ] = "xxxxx"
  11.  
  12. #define ADMIN ADMIN_RCON
  13. #define MAXCLASSES 1
  14. #define MAXLEVELS 1
  15. #define MAXPONTUATION 1090000000 // max skillpoints per player
  16.  
  17. new const CLASSES[ MAXCLASSES ][ ] = {
  18. "GAMER"
  19. }
  20.  
  21. new const LEVELS[ MAXLEVELS ] = {
  22. 1090000000 /* high value (not reachable) */
  23. }
  24.  
  25. new const SQL_TABLE[ ] = "skillpoints_v1"
  26. new const PREFIX[ ] = "[POINTS]"
  27.  
  28. new Trie:IgnoredAuthID // hltv, bots and non-steam users
  29.  
  30. new g_iMaxPlayers
  31. new g_szAuthID[ 32 ][ 32 ]
  32. new g_szName[ 32 ][ 32 ]
  33. new g_szKillerName[ 32 ]
  34. new g_szVictimName[ 32 ]
  35.  
  36. new Handle:g_SqlTuple
  37. new g_iCount
  38. new g_iRank
  39.  
  40. new g_Error[ 512 ]
  41.  
  42. new g_pcvarHost
  43. new g_pcvaruUser
  44. new g_pcvarPass
  45. new g_pcvarDB
  46.  
  47. new g_szPoints[ 32 ]
  48. new g_szLevels[ 32 ]
  49. new g_szClasses[ 32 ]
  50.  
  51. new g_TimeBetweenAds
  52.  
  53. new bool:is_user_ignored[ 33 ]
  54.  
  55. new g_iAdsOnChat
  56. new g_iEnableAnnounceOnChat
  57. new g_iEnableShowSkillPointsOnNick
  58. new g_iHideChangeNickNotification
  59. new g_iEnableSkillPointsCmd
  60. new g_iEnableSkillPointsCmdRank
  61. new g_iHideCmds
  62. new g_iEnableWonPointsHour
  63. new g_iWonPointsHour
  64. new g_iLostPointsTK
  65. new g_iLostPointsSuicide
  66. new g_iWonPointsKill
  67. new g_iLostPointsDeath
  68. new g_iWonPointsHeadshot
  69. new g_iLostPointsHeadshot
  70. new g_iWonPointsKnife
  71. new g_iLostPointsKnife
  72. new g_iWonPointsGrenade
  73. new g_iLostPointsGrenade
  74. new g_iWonPointsTerrorists
  75. new g_iWonPointsCounterTerrorists
  76. new g_iLostPointsTerrorists
  77. new g_iLostPointsCounterTerrorists
  78. new g_iWonPointsPlanter
  79. new g_iWonPointsPlanterExplode
  80. new g_iWonPointsDefuser
  81.  
  82. new g_iPugEnd
  83. new pcvarToggle1
  84. new pcvarToggle2
  85. new g_iConnectPug
  86. new g_iDisconnectPug
  87.  
  88. /////////////////////////////////////
  89. // ColorChat Stuff by ConnorMcLeod //
  90. /////////////////////////////////////
  91.  
  92. #define NORMAL DontChange
  93. #define GREEN DontChange
  94. #define TEAM_COLOR DontChange
  95. #define RED Red
  96. #define BLUE Blue
  97. #define GREY Grey
  98. #define ColorChat client_print_color
  99.  
  100. enum _:Colors {
  101. DontChange,
  102. Red,
  103. Blue,
  104. Grey
  105. }
  106.  
  107. stock const g_szTeamName[Colors][] = {
  108. "UNASSIGNED",
  109. "TERRORIST",
  110. "CT",
  111. "SPECTATOR"
  112. }
  113.  
  114. /////////////////////////////////////
  115.  
  116. public plugin_init( )
  117. {
  118. register_plugin( PLUGIN, VERSION, AUTHOR )
  119.  
  120. register_clcmd( "say .points", "GetSkillPoints" )
  121. register_clcmd( "say_team .points", "GetSkillPoints" )
  122.  
  123. register_clcmd( "say .rank", "SkillRank" )
  124. register_clcmd( "say_team .rank", "SkillRank" )
  125.  
  126. register_concmd("bps_give_pugend", "points_all_pugend", ADMIN, "_")
  127. // register_concmd("bps_give", "CmdGivePoints", ADMIN, "<target> <skillpoints to give>" )
  128. // register_concmd("bps_take", "CmdTakePoints", ADMIN, "<target> <skillpoints to take>" )
  129.  
  130. RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawnPost", 1 )
  131.  
  132. register_message( get_user_msgid( "SayText" ), "MessageSayText" )
  133.  
  134. register_event( "SendAudio", "TerroristsWin", "a", "2&%!MRAD_terwin" )
  135. register_event( "SendAudio", "CounterTerroristsWin", "a", "2&%!MRAD_ctwin" )
  136.  
  137. register_logevent( "RoundEnd", 2, "1=Round_End" )
  138.  
  139. g_iAdsOnChat = register_cvar( "bps_ads", "0" )
  140. g_TimeBetweenAds = register_cvar( "bps_time_between_ads", "300.0" )
  141. g_iEnableAnnounceOnChat = register_cvar( "bps_announce_on_chat", "0" )
  142. g_iEnableShowSkillPointsOnNick = register_cvar( "bps_skillpoints_on_nick", "0" )
  143. g_iHideChangeNickNotification = register_cvar( "bps_hide_change_nick_notification", "0" )
  144. g_iEnableSkillPointsCmd = register_cvar( "bps_skillpoints_cmd", "1" )
  145. g_iEnableSkillPointsCmdRank = register_cvar( "bps_skillpoints_cmd_rank", "1" )
  146. g_iHideCmds = register_cvar( "bps_hide_cmd", "0" )
  147. g_iEnableWonPointsHour = register_cvar( "bps_enable_win_per_hour", "0" )
  148. g_iWonPointsHour = register_cvar( "bps_won_points_hour", "0" )
  149. g_iLostPointsTK = register_cvar( "bps_lost_points_tk", "0" )
  150. g_iLostPointsSuicide = register_cvar( "bps_lost_points_suicide", "0" )
  151. g_iWonPointsKill = register_cvar( "bps_won_points_kill", "0" )
  152. g_iLostPointsDeath = register_cvar( "bps_lost_points_kill", "0" )
  153. g_iWonPointsHeadshot = register_cvar( "bps_won_points_headshot", "0" )
  154. g_iLostPointsHeadshot = register_cvar( "bps_lost_points_headshot", "0" )
  155. g_iWonPointsKnife = register_cvar( "bps_won_points_knife", "0" )
  156. g_iLostPointsKnife = register_cvar( "bps_lost_points_knife", "0" )
  157. g_iWonPointsGrenade = register_cvar( "bps_won_points_grenade", "0" )
  158. g_iLostPointsGrenade = register_cvar( "bps_lost_points_grenade", "0" )
  159. g_iWonPointsTerrorists = register_cvar( "bps_won_points_ts", "0" )
  160. g_iWonPointsCounterTerrorists = register_cvar( "bps_won_points_cts", "0" )
  161. g_iLostPointsTerrorists = register_cvar( "bps_lost_points_ts", "0" )
  162. g_iLostPointsCounterTerrorists = register_cvar( "bps_lost_points_cts", "0" )
  163. g_iWonPointsPlanter = register_cvar( "bps_won_points_planter", "0" )
  164. g_iWonPointsPlanterExplode = register_cvar( "bps_won_points_planter_explode", "0" )
  165. g_iWonPointsDefuser = register_cvar( "bps_won_points_defuser", "0" )
  166. g_pcvarHost = register_cvar( "bps_sql_host", "192.168.1.51" )
  167. g_pcvaruUser = register_cvar( "bps_sql_user", "xxxx" )
  168. g_pcvarPass = register_cvar( "bps_sql_pass", "xxxxxxxxxxx" )
  169. g_pcvarDB = register_cvar( "bps_sql_db", "SkillPoints" )
  170.  
  171. pcvarToggle1 = register_cvar("pug_leave_points", "1")
  172. pcvarToggle2 = register_cvar("round_save_points", "1")
  173. g_iPugEnd = register_cvar( "bps_won_points_pugend", "10" )
  174. g_iConnectPug = register_cvar( "bps_won_points_connect", "10" )
  175. g_iDisconnectPug = register_cvar( "bps_won_points_disconnect", "20" )
  176.  
  177. g_iMaxPlayers = get_maxplayers( )
  178.  
  179. IgnoredAuthID = TrieCreate( )
  180. TrieSetCell( IgnoredAuthID, "VALVE_ID_LAN", 1 )
  181. TrieSetCell( IgnoredAuthID, "VALVE_ID_PENDING", 1 )
  182. TrieSetCell( IgnoredAuthID, "STEAM_ID_LAN", 1 )
  183. TrieSetCell( IgnoredAuthID, "STEAM_ID_PENDING", 1 )
  184. TrieSetCell( IgnoredAuthID, "BOT", 1 )
  185. TrieSetCell( IgnoredAuthID, "HLTV", 1 )
  186.  
  187. set_task( 0.1, "SqlInit" )
  188. }
  189.  
  190. public plugin_natives( )
  191. {
  192. register_library( "skillpoints" )
  193.  
  194. register_native( "skillpoints", "_skillpoints" )
  195. }
  196.  
  197.  
  198. public _skillpoints( plugin, params )
  199. {
  200. if( params != 1 )
  201. return PLUGIN_CONTINUE
  202.  
  203. new id = get_param( 1 )
  204. if( !id )
  205. return PLUGIN_CONTINUE
  206.  
  207. return g_szPoints[ id ]
  208. }
  209.  
  210. public plugin_cfg( )
  211. {
  212. if( get_pcvar_num( g_iAdsOnChat ) > 0 )
  213. set_task( get_pcvar_float( g_TimeBetweenAds ), "AdvertisementCmdMySkill" )
  214. }
  215.  
  216. public SqlInit( )
  217. {
  218. new szHost[ 32 ]
  219. new szUser[ 32 ]
  220. new szPass[ 32 ]
  221. new szDB[ 32 ]
  222.  
  223. get_pcvar_string( g_pcvarHost, szHost, charsmax( szHost ) )
  224. get_pcvar_string( g_pcvaruUser, szUser, charsmax( szUser ) )
  225. get_pcvar_string( g_pcvarPass, szPass, charsmax( szPass ) )
  226. get_pcvar_string( g_pcvarDB, szDB, charsmax( szDB ) )
  227.  
  228. g_SqlTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB )
  229.  
  230. new ErrorCode
  231. new Handle:SqlConnection = SQL_Connect( g_SqlTuple, ErrorCode, g_Error, charsmax( g_Error ) )
  232.  
  233. if( SqlConnection == Empty_Handle )
  234. set_fail_state( g_Error )
  235.  
  236. new Handle:Queries
  237. Queries = SQL_PrepareQuery( SqlConnection, "CREATE TABLE IF NOT EXISTS %s ( authid VARCHAR( 32 ) PRIMARY KEY, nick VARCHAR( 32 ), skillpoints INT( 7 ), level INT( 2 ) )", SQL_TABLE )
  238.  
  239. if( !SQL_Execute( Queries ) )
  240. {
  241. SQL_QueryError( Queries, g_Error, charsmax( g_Error ) )
  242. set_fail_state( g_Error )
  243. }
  244.  
  245. SQL_FreeHandle( Queries )
  246. SQL_FreeHandle( SqlConnection )
  247. }
  248.  
  249. public plugin_end( )
  250. {
  251. SQL_FreeHandle( g_SqlTuple )
  252. }
  253.  
  254. public client_authorized( id )
  255. {
  256. get_user_authid( id , g_szAuthID[ id ], charsmax( g_szAuthID[ ] ) )
  257. get_user_name( id, g_szName[ id ], charsmax( g_szName[ ] ) )
  258.  
  259. replace_all( g_szName[ id ], charsmax( g_szName[ ] ), "'", "*" )
  260. replace_all( g_szName[ id ], charsmax( g_szName[ ] ), "^"", "*" )
  261. replace_all( g_szName[ id ], charsmax( g_szName[ ] ), "`", "*" )
  262. replace_all( g_szName[ id ], charsmax( g_szName[ ] ), "´", "*" )
  263.  
  264. if( TrieKeyExists( IgnoredAuthID, g_szAuthID[ id ] ) )
  265. is_user_ignored[ id ] = true
  266.  
  267. else
  268. is_user_ignored[ id ] = false
  269.  
  270. if( is_user_ignored[ id ] )
  271. return PLUGIN_HANDLED_MAIN
  272.  
  273. g_szPoints[ id ] = 0
  274. g_szLevels[ id ] = 0
  275. g_szClasses[ id ] = 0
  276.  
  277. LoadPoints( id )
  278.  
  279. if( get_pcvar_num( g_iEnableWonPointsHour ) > 0 && get_pcvar_num( g_iWonPointsHour ) > 0 )
  280. set_task( 3600.0, "GiveSkillPointsHour", id, _, _, "b" )
  281.  
  282. return PLUGIN_CONTINUE
  283. }
  284.  
  285. public client_putinserver(id)
  286. {
  287. if( get_pcvar_num( pcvarToggle1 ) > 0 )
  288. {
  289. g_szPoints[ id ] += get_pcvar_num( g_iConnectPug )
  290. }
  291. CheckLevelAndSave(id)
  292.  
  293. return PLUGIN_CONTINUE
  294. }
  295.  
  296. public client_disconnect(id)
  297. {
  298. if( get_pcvar_num( pcvarToggle1 ) > 0 )
  299. {
  300. g_szPoints[ id ] -= get_pcvar_num( g_iDisconnectPug )
  301. }
  302. CheckLevelAndSave(id)
  303.  
  304. return PLUGIN_CONTINUE
  305. }
  306.  
  307. public GiveSkillPointsHour( id )
  308. {
  309. g_szPoints[ id ] += get_pcvar_num( g_iWonPointsHour )
  310.  
  311. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  312. ColorChat( id, GREEN, "%s^1 You earned %i point%s for playing more one hour", PREFIX, get_pcvar_num( g_iWonPointsHour ), get_pcvar_num( g_iWonPointsHour ) > 1 ? "s" : "" )
  313. }
  314.  
  315. public client_death( killer, victim, wpnindex, hitplace, TK )
  316. {
  317. if( is_user_ignored[ killer ] )
  318. return PLUGIN_HANDLED_MAIN
  319.  
  320. get_user_name( killer, g_szKillerName, charsmax( g_szKillerName ) )
  321. get_user_name( victim, g_szVictimName, charsmax( g_szVictimName ) )
  322.  
  323. if( TK == 1 )
  324. {
  325. g_szPoints[ killer ] -= get_pcvar_num( g_iLostPointsTK )
  326.  
  327. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iLostPointsTK ) > 0 )
  328. ColorChat( killer, GREEN, "%s^1 You have lost^3 %i^1 point%s by killing a teammate", PREFIX, get_pcvar_num( g_iLostPointsTK ), get_pcvar_num( g_iLostPointsTK ) > 1 ? "s" : "" )
  329. }
  330.  
  331. if( killer == victim )
  332. {
  333. g_szPoints[ killer ] -= get_pcvar_num( g_iLostPointsSuicide )
  334.  
  335. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iLostPointsSuicide ) > 0 )
  336. ColorChat( killer, GREEN, "%s^1 You have lost^3 %i^1 point%s for committing suicide", PREFIX, get_pcvar_num( g_iLostPointsSuicide ), get_pcvar_num( g_iLostPointsSuicide ) > 1 ? "s" : "" )
  337. }
  338.  
  339. if( killer != victim && ( 1 <= killer <= g_iMaxPlayers ) && ( 1 <= victim <= g_iMaxPlayers ) && !( hitplace == HIT_HEAD ) && !( wpnindex == CSW_KNIFE ) && !( wpnindex == CSW_HEGRENADE ) && TK == 0 )
  340. {
  341. g_szPoints[ killer ] += get_pcvar_num( g_iWonPointsKill )
  342.  
  343. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iWonPointsKill ) > 0 )
  344. ColorChat( killer, GREEN, "%s^1 You earned^3 %i^1 point%s by killing %s", PREFIX, get_pcvar_num( g_iWonPointsKill ), get_pcvar_num( g_iWonPointsKill ) > 1 ? "s" : "", g_szVictimName )
  345.  
  346. if( !is_user_ignored[ victim ] )
  347. {
  348. g_szPoints[ victim ] -= get_pcvar_num( g_iLostPointsDeath )
  349.  
  350. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iLostPointsDeath ) > 0 )
  351. ColorChat( victim, GREEN, "%s^1 You have lost^3 %i^1 point%s for dying", PREFIX, get_pcvar_num( g_iLostPointsDeath ), get_pcvar_num( g_iLostPointsDeath ) > 1 ? "s" : "" )
  352. }
  353. }
  354.  
  355. if( hitplace == HIT_HEAD && wpnindex != CSW_KNIFE && TK == 0 )
  356. {
  357. g_szPoints[ killer ] += get_pcvar_num( g_iWonPointsHeadshot )
  358.  
  359. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iWonPointsHeadshot ) > 0 )
  360. ColorChat( killer, GREEN, "%s^1 You earned^3 %i^1 point%s by killing %s with a headshot", PREFIX, get_pcvar_num( g_iWonPointsHeadshot ), get_pcvar_num( g_iWonPointsHeadshot ) > 1 ? "s" : "" ,g_szVictimName )
  361.  
  362. if( !is_user_ignored[ victim ] )
  363. {
  364. g_szPoints[ victim ] -= get_pcvar_num( g_iLostPointsHeadshot )
  365.  
  366. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iLostPointsHeadshot ) > 0 )
  367. ColorChat( victim, GREEN, "%s^1 You have lost^3 %i^1 point%s for dying with a headshot", PREFIX, get_pcvar_num( g_iLostPointsHeadshot ), get_pcvar_num( g_iLostPointsHeadshot ) > 1 ? "s" : "" )
  368. }
  369. }
  370.  
  371. if( wpnindex == CSW_KNIFE && TK == 0 )
  372. {
  373. g_szPoints[ killer ] += get_pcvar_num( g_iWonPointsKnife )
  374.  
  375. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iWonPointsKnife ) > 0 )
  376. ColorChat( killer, GREEN, "%s^1 You earned^3 %i^1 point%s by killing %s with knife", PREFIX, get_pcvar_num( g_iWonPointsKnife ), get_pcvar_num( g_iWonPointsKnife ) > 1 ? "s" : "" ,g_szVictimName )
  377.  
  378. if( !is_user_ignored[ victim ] )
  379. {
  380. g_szPoints[ victim ] -= get_pcvar_num( g_iLostPointsKnife )
  381.  
  382. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iLostPointsKnife ) > 0 )
  383. ColorChat( victim, GREEN, "%s^1 You have lost^3 %i^1 point%s for dying with knife", PREFIX, get_pcvar_num( g_iLostPointsKnife ), get_pcvar_num( g_iLostPointsKnife ) > 1 ? "s" : "" )
  384. }
  385. }
  386.  
  387. if( wpnindex == CSW_HEGRENADE && killer != victim && TK == 0 )
  388. {
  389. g_szPoints[ killer ] += get_pcvar_num( g_iWonPointsGrenade )
  390.  
  391. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iWonPointsGrenade ) > 0 )
  392. ColorChat( killer, GREEN, "%s^1 You earned^3 %i^1 point%s by killing %s with a grenade", PREFIX, get_pcvar_num( g_iWonPointsGrenade ), get_pcvar_num( g_iWonPointsGrenade ) > 1 ? "s" : "" ,g_szVictimName )
  393.  
  394. if( !is_user_ignored[ victim ] )
  395. {
  396. g_szPoints[ victim ] -= get_pcvar_num( g_iLostPointsGrenade )
  397.  
  398. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 && get_pcvar_num( g_iLostPointsGrenade ) > 0 )
  399. ColorChat( victim, GREEN, "%s^1 You have lost^3 %i^1 point%s for dying with a grenade", PREFIX, get_pcvar_num( g_iLostPointsGrenade ), get_pcvar_num( g_iLostPointsGrenade ) > 1 ? "s" : "" )
  400. }
  401. }
  402.  
  403. return PLUGIN_CONTINUE
  404. }
  405.  
  406. public TerroristsWin( )
  407. {
  408. new players[ 32 ]
  409. new num
  410. new i
  411.  
  412. get_players( players, num, "ch" )
  413.  
  414. for( --num; num >= 0; num-- )
  415. {
  416. i = players[ num ]
  417.  
  418. if( !is_user_ignored[ i ] )
  419. {
  420. switch( cs_get_user_team( i ) )
  421. {
  422. case( CS_TEAM_T ):
  423. {
  424. if( get_pcvar_num( g_iWonPointsTerrorists ) > 0 )
  425. {
  426. g_szPoints[ i ] += get_pcvar_num( g_iWonPointsTerrorists )
  427.  
  428. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  429. ColorChat( i, GREEN, "%s^1 Your team^3 (T)^1 have won^3 %i^1 point%s for winning the round", PREFIX, get_pcvar_num( g_iWonPointsTerrorists ), get_pcvar_num( g_iWonPointsTerrorists ) > 1 ? "s" : "" )
  430. }
  431. }
  432.  
  433. case( CS_TEAM_CT ):
  434. {
  435. if( get_pcvar_num( g_iLostPointsCounterTerrorists ) > 0 )
  436. {
  437. g_szPoints[ i ] -= get_pcvar_num( g_iLostPointsCounterTerrorists )
  438.  
  439. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  440. ColorChat( i, GREEN, "%s^1 Your team^3 (CT)^1 have lost^3 %i^1 point%s for losing the round", PREFIX, get_pcvar_num( g_iLostPointsCounterTerrorists ), get_pcvar_num( g_iLostPointsCounterTerrorists ) > 1 ? "s" : "" )
  441. }
  442. }
  443. }
  444. }
  445. }
  446. }
  447.  
  448. public CounterTerroristsWin( )
  449. {
  450. new players[ 32 ]
  451. new num
  452. new i
  453.  
  454. get_players( players, num, "ch" )
  455.  
  456. for( --num; num >= 0; num-- )
  457. {
  458. i = players[ num ]
  459.  
  460. if( !is_user_ignored[ i ] )
  461. {
  462. switch( cs_get_user_team( i ) )
  463. {
  464. case( CS_TEAM_T ):
  465. {
  466. if( get_pcvar_num( g_iLostPointsTerrorists ) > 0 )
  467. {
  468. g_szPoints[ i ] -= get_pcvar_num( g_iLostPointsTerrorists )
  469.  
  470. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  471. ColorChat( i, GREEN, "%s^1 Your team^3 (T)^1 have lost^3 %i^1 point%s for losing the round", PREFIX, get_pcvar_num( g_iLostPointsTerrorists ), get_pcvar_num( g_iLostPointsTerrorists ) > 1 ? "s" : "" )
  472. }
  473. }
  474.  
  475. case( CS_TEAM_CT ):
  476. {
  477. if( get_pcvar_num( g_iWonPointsCounterTerrorists ) > 0 )
  478. {
  479. g_szPoints[ i ] += get_pcvar_num( g_iWonPointsCounterTerrorists )
  480.  
  481. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  482. ColorChat( i, GREEN, "%s^1 Your team^3 (CT)^1 have won^3 %i^1 point%s for winning the round", PREFIX, get_pcvar_num( g_iWonPointsCounterTerrorists ), get_pcvar_num( g_iWonPointsCounterTerrorists ) > 1 ? "s" : "" )
  483. }
  484. }
  485. }
  486. }
  487. }
  488. }
  489.  
  490. public points_all_pugend( id, level, cid )
  491. {
  492. if ( !cmd_access( id, level, cid, 1 ) ) return PLUGIN_HANDLED
  493.  
  494. new players[ 32 ]
  495. new num
  496. new i
  497.  
  498. get_players( players, num, "ch" )
  499.  
  500. for( --num; num >= 0; num-- )
  501. {
  502. i = players[ num ]
  503.  
  504. if( !is_user_ignored[ i ] )
  505. {
  506. switch( cs_get_user_team( i ) )
  507. {
  508. case( CS_TEAM_T ):
  509. {
  510. if( get_pcvar_num( g_iPugEnd ) > 0 )
  511. {
  512. g_szPoints[ i ] += get_pcvar_num( g_iPugEnd )
  513.  
  514. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  515. ColorChat( i, GREEN, "%s^1 Your team^3 (T)^1 have lost^3 %i^1 point%s for losing the round", PREFIX, get_pcvar_num( g_iLostPointsTerrorists ), get_pcvar_num( g_iLostPointsTerrorists ) > 1 ? "s" : "" )
  516. }
  517. }
  518.  
  519. case( CS_TEAM_CT ):
  520. {
  521. if( get_pcvar_num( g_iPugEnd ) > 0 )
  522. {
  523. g_szPoints[ i ] += get_pcvar_num( g_iPugEnd )
  524.  
  525. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  526. ColorChat( i, GREEN, "%s^1 Your team^3 (CT)^1 have won^3 %i^1 point%s for winning the round", PREFIX, get_pcvar_num( g_iWonPointsCounterTerrorists ), get_pcvar_num( g_iWonPointsCounterTerrorists ) > 1 ? "s" : "" )
  527. }
  528. }
  529. }
  530. }
  531. }
  532. SavePointsAtRoundEnd()
  533.  
  534. return PLUGIN_CONTINUE
  535. }
  536.  
  537. public bomb_planted( planter )
  538. {
  539. if( !is_user_ignored[ planter ] && get_pcvar_num( g_iWonPointsPlanter ) > 0 )
  540. {
  541. g_szPoints[ planter ] += get_pcvar_num( g_iWonPointsPlanter )
  542.  
  543. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  544. ColorChat( planter, GREEN, "%s^1 You earned^3 %i^1 point%s for planting the bomb", PREFIX, get_pcvar_num( g_iWonPointsPlanter ), get_pcvar_num( g_iWonPointsPlanter ) > 1 ? "s" : "" )
  545. }
  546. }
  547.  
  548. public bomb_explode( planter, defuser )
  549. {
  550. if( !is_user_ignored[ planter ] && get_pcvar_num( g_iWonPointsPlanterExplode ) > 0 )
  551. {
  552. g_szPoints[ planter ] += get_pcvar_num( g_iWonPointsPlanterExplode )
  553.  
  554. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  555. ColorChat( planter, GREEN, "%s^1 You earned^3 %i^1 point%s with the bomb explosion", PREFIX, get_pcvar_num( g_iWonPointsPlanterExplode ), get_pcvar_num( g_iWonPointsPlanterExplode ) > 1 ? "s" : "" )
  556. }
  557. }
  558.  
  559. public bomb_defused( defuser )
  560. {
  561. if( !is_user_ignored[ defuser ] && get_pcvar_num( g_iWonPointsDefuser ) > 0 )
  562. {
  563. g_szPoints[ defuser ] += get_pcvar_num( g_iWonPointsDefuser )
  564.  
  565. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  566. ColorChat( defuser, GREEN, "%s^1 You earned^3 %i^1 point%s for disarming the bomb", PREFIX, get_pcvar_num( g_iWonPointsDefuser ), get_pcvar_num( g_iWonPointsDefuser ) > 1 ? "s" : "" )
  567. }
  568. }
  569.  
  570. public RoundEnd( )
  571. {
  572. if( get_pcvar_num( pcvarToggle2 ) > 0 )
  573. {
  574. set_task( 0.5, "SavePointsAtRoundEnd" )
  575. }
  576. }
  577.  
  578. public SavePointsAtRoundEnd( )
  579. {
  580. new players[ 32 ]
  581. new num
  582. new i
  583.  
  584. get_players( players, num, "ch" )
  585.  
  586. for( --num; num >= 0; num-- )
  587. {
  588. i = players[ num ]
  589.  
  590. if( !is_user_ignored[ i ] )
  591. CheckLevelAndSave( i )
  592. }
  593. }
  594.  
  595. public CheckLevelAndSave( id )
  596. {
  597. while( g_szPoints[ id ] >= LEVELS[ g_szLevels[ id ] ] )
  598. {
  599. g_szLevels[ id ] += 1
  600. g_szClasses[ id ] += 1
  601.  
  602. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0 )
  603. {
  604. new szName[ 32 ]
  605. get_user_name( id, szName, charsmax( szName ) )
  606.  
  607. ColorChat( 0, GREEN, "%s^1 %s increased one level! Level:^3 %s^1 Total points:^3 %d", PREFIX, szName, CLASSES[ g_szLevels[ id ] ], g_szPoints[ id ] )
  608. }
  609. }
  610.  
  611. new szTemp[ 512 ]
  612. format( szTemp, charsmax( szTemp ), "UPDATE %s SET nick = '%s', skillpoints = '%i', level = '%i' WHERE authid = '%s'", SQL_TABLE, g_szName[ id ], g_szPoints[ id ], g_szLevels[ id ], g_szAuthID[ id ] )
  613.  
  614. SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", szTemp )
  615.  
  616. if( g_szPoints[ id ] >= MAXPONTUATION )
  617. {
  618. CheckLevelAndSave( id )
  619. }
  620. }
  621.  
  622. public LoadPoints( id )
  623. {
  624. new Data[ 1 ]
  625. Data[ 0 ] = id
  626.  
  627. new szTemp[ 512 ]
  628. format( szTemp, charsmax( szTemp ), "SELECT skillpoints, level FROM %s WHERE authid = '%s'", SQL_TABLE, g_szAuthID[ id ] )
  629.  
  630. SQL_ThreadQuery( g_SqlTuple, "RegisterClient", szTemp, Data, 1 )
  631. }
  632.  
  633. public RegisterClient( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
  634. {
  635. if( SQL_IsFail( FailState, Errcode, Error ) )
  636. return PLUGIN_HANDLED_MAIN
  637.  
  638. new id
  639. id = Data[ 0 ]
  640.  
  641. if( SQL_NumResults( Query ) < 1 )
  642. {
  643. new szTemp[ 512 ]
  644. format( szTemp, charsmax( szTemp ), "INSERT INTO %s ( authid, nick, skillpoints, level ) VALUES( '%s', '%s', '%i', '%i' )", SQL_TABLE, g_szAuthID[ id ], g_szName[ id ], g_szPoints[ id ], g_szLevels[ id ] )
  645.  
  646. SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", szTemp )
  647. }
  648.  
  649. else
  650. {
  651. g_szPoints[ id ] = SQL_ReadResult( Query, 0 )
  652. g_szLevels[ id ] = SQL_ReadResult( Query, 1 )
  653. }
  654.  
  655. return PLUGIN_CONTINUE
  656. }
  657.  
  658. public IgnoreHandle( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
  659. SQL_FreeHandle( Query )
  660.  
  661. public SkillRank( id )
  662. {
  663. if( get_pcvar_num( g_iEnableSkillPointsCmdRank ) == 0 )
  664. ColorChat( id, GREEN, "%s^1 Command disabled", PREFIX )
  665.  
  666. else if( get_pcvar_num( g_iEnableSkillPointsCmdRank ) > 0 )
  667. {
  668. if( is_user_ignored[ id ] )
  669. {
  670. ColorChat( id, GREEN, "%s^1 Only for Steam accounts ", PREFIX )
  671. return PLUGIN_HANDLED_MAIN
  672. }
  673.  
  674. new Data[ 1 ]
  675. Data[ 0 ] = id
  676.  
  677. new szTemp[ 512 ]
  678. format( szTemp, charsmax( szTemp ), "SELECT COUNT(*) FROM %s WHERE skillpoints >= %i", SQL_TABLE, g_szPoints[ id ] )
  679.  
  680. SQL_ThreadQuery( g_SqlTuple, "GetSkillRank", szTemp, Data, 1 )
  681. }
  682.  
  683. if( get_pcvar_num( g_iHideCmds ) == 0 )
  684. return PLUGIN_CONTINUE
  685.  
  686. else if( get_pcvar_num( g_iHideCmds ) > 0 )
  687. return PLUGIN_HANDLED_MAIN
  688.  
  689. return PLUGIN_CONTINUE
  690. }
  691.  
  692. public GetSkillRank( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
  693. {
  694. if( SQL_IsFail( FailState, Errcode, Error ) )
  695. return PLUGIN_HANDLED_MAIN
  696.  
  697. new id
  698. id = Data[ 0 ]
  699.  
  700. g_iRank = SQL_ReadResult( Query, 0 )
  701.  
  702. if( g_iRank == 0 )
  703. g_iRank = 1
  704.  
  705. TotalRows( id )
  706.  
  707. return PLUGIN_CONTINUE
  708. }
  709.  
  710. public TotalRows( id )
  711. {
  712. new Data[ 1 ]
  713. Data[ 0 ] = id
  714.  
  715. new szTemp[ 512 ]
  716. format( szTemp, charsmax( szTemp ), "SELECT COUNT(*) FROM %s", SQL_TABLE )
  717.  
  718. SQL_ThreadQuery( g_SqlTuple, "GetTotalRows", szTemp, Data, 1 )
  719. }
  720.  
  721. public GetTotalRows( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
  722. {
  723. if( SQL_IsFail( FailState, Errcode, Error ) )
  724. return PLUGIN_HANDLED_MAIN
  725.  
  726. new id
  727. id = Data[ 0 ]
  728.  
  729. g_iCount = SQL_ReadResult( Query, 0 )
  730.  
  731. ColorChat( id, GREEN, "%s^1 Your rank is^3 %i^1 of^3 %i^1 players with^3 %i^1 points ", PREFIX, g_iRank, g_iCount, g_szPoints[ id ] )
  732.  
  733. return PLUGIN_CONTINUE
  734. }
  735.  
  736. SQL_IsFail( const FailState, const Errcode, const Error[ ] )
  737. {
  738. if( FailState == TQUERY_CONNECT_FAILED )
  739. {
  740. log_amx( "[Error] Could not connect to SQL database: %s", Error )
  741. return true
  742. }
  743.  
  744. else if( FailState == TQUERY_QUERY_FAILED )
  745. {
  746. log_amx( "[Error] Query failed: %s", Error )
  747. return true
  748. }
  749.  
  750. else if( Errcode )
  751. {
  752. log_amx( "[Error] Error on query: %s", Error )
  753. return true
  754. }
  755.  
  756. return false
  757. }
  758.  
  759. public GetSkillPoints( id )
  760. {
  761. if( get_pcvar_num( g_iEnableSkillPointsCmd ) == 0 )
  762. ColorChat( id, GREEN, "%s^1 Command disabled", PREFIX )
  763.  
  764. else if( get_pcvar_num( g_iEnableSkillPointsCmd ) > 0 )
  765. {
  766. if( is_user_ignored[ id ] )
  767. {
  768. ColorChat( id, GREEN, "%s^1 Only for Steam accounts ", PREFIX )
  769. return PLUGIN_HANDLED_MAIN
  770. }
  771.  
  772. if( g_szLevels[ id ] < ( MAXLEVELS - 1 ) )
  773. {
  774. ColorChat( id, GREEN, "%s^1 Total points:^3 %d", PREFIX, g_szPoints[ id ] )
  775. }
  776.  
  777. else
  778. ColorChat( id, GREEN, "%s^1 Total points:^3 %d", PREFIX, g_szPoints[ id ] )
  779. }
  780.  
  781. if( get_pcvar_num( g_iHideCmds ) == 0 )
  782. return PLUGIN_CONTINUE
  783.  
  784. else if( get_pcvar_num( g_iHideCmds ) > 0 )
  785. return PLUGIN_HANDLED_MAIN
  786.  
  787. return PLUGIN_CONTINUE
  788. }
  789.  
  790. public AdvertisementCmdMySkill( )
  791. {
  792. for( new m = 1; m <= g_iMaxPlayers; m++ )
  793. {
  794. if( !is_user_ignored[ m ] )
  795. ColorChat( m, GREEN, "%s^1 Write^3 /myskill^1 to see your SkillPoints", PREFIX )
  796. }
  797.  
  798. set_task( get_pcvar_float( g_TimeBetweenAds ), "AdvertisementCmdRestartSkill" )
  799. }
  800.  
  801. public AdvertisementCmdRestartSkill( )
  802. {
  803. for( new n = 1; n <= g_iMaxPlayers; n++ )
  804. {
  805. if( !is_user_ignored[ n ] )
  806. ColorChat( n, GREEN, "%s^1 Write^3 /restartskill^1 to restart your SkillPoints and level", PREFIX )
  807. }
  808.  
  809. set_task( get_pcvar_float( g_TimeBetweenAds ), "AdvertisementCmdRank" )
  810. }
  811.  
  812. public AdvertisementCmdRank( )
  813. {
  814. for( new o = 1; o <= g_iMaxPlayers; o++ )
  815. {
  816. if( !is_user_ignored[ o ] )
  817. ColorChat( o, GREEN, "%s^1 Write^3 /rankskill^1 to see your rank", PREFIX )
  818. }
  819.  
  820. set_task( get_pcvar_float( g_TimeBetweenAds ), "AdvertisementCmdMySkill" )
  821. }
  822.  
  823. public CmdGivePoints( id, level, cid )
  824. {
  825. if ( !cmd_access( id, level, cid, 3 ) )
  826. return PLUGIN_HANDLED
  827.  
  828. new Arg1[ 32 ]
  829. new Arg2[ 6 ]
  830.  
  831. read_argv( 1, Arg1, charsmax( Arg1 ) )
  832. read_argv( 2, Arg2, charsmax( Arg2 ) )
  833.  
  834. new iPoints = str_to_num( Arg2 )
  835.  
  836. new iPlayer = cmd_target( id, Arg1, 1 )
  837.  
  838. if ( !iPlayer )
  839. {
  840. console_print( id, "Sorry, player %s could not be found or targetted!", Arg1 )
  841. return PLUGIN_HANDLED
  842. }
  843.  
  844. else if( iPoints > 0 )
  845. {
  846. g_szPoints[ iPlayer ] += iPoints
  847. CheckLevelAndSave( iPlayer )
  848.  
  849. new szAdminName[ 32 ]
  850. get_user_name( id, szAdminName, charsmax( szAdminName ) )
  851.  
  852. new szPlayerName[ 32 ]
  853. get_user_name( iPlayer, szPlayerName, charsmax( szPlayerName ) )
  854.  
  855. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0)
  856. ColorChat( 0, GREEN, "%s^1 %s gave^3 %i^1 SkillPoint%s to %s", PREFIX, szAdminName, iPoints, iPoints > 1 ? "s" : "", szPlayerName )
  857. }
  858.  
  859. return PLUGIN_HANDLED
  860. }
  861.  
  862. public CmdTakePoints( id, level, cid )
  863. {
  864. if ( !cmd_access( id, level, cid, 3 ) )
  865. return PLUGIN_HANDLED
  866.  
  867. new Arg1[ 32 ]
  868. new Arg2[ 6 ]
  869.  
  870. read_argv( 1, Arg1, charsmax( Arg1 ) )
  871. read_argv( 2, Arg2, charsmax( Arg2 ) )
  872.  
  873. new iPoints = str_to_num( Arg2 )
  874.  
  875. new iPlayer = cmd_target( id, Arg1, 1 )
  876.  
  877. if ( !iPlayer )
  878. {
  879. console_print( id, "Sorry, player %s could not be found or targetted!", Arg1 )
  880. return PLUGIN_HANDLED
  881. }
  882.  
  883. else if( iPoints > 0 )
  884. {
  885. g_szPoints[ iPlayer ] -= iPoints
  886. CheckLevelAndSave( iPlayer )
  887.  
  888. new szAdminName[ 32 ]
  889. get_user_name( id, szAdminName, charsmax( szAdminName ) )
  890.  
  891. new szPlayerName[ 32 ]
  892. get_user_name( iPlayer, szPlayerName, charsmax( szPlayerName ) )
  893.  
  894. if( get_pcvar_num( g_iEnableAnnounceOnChat ) > 0)
  895. ColorChat( 0, GREEN, "%s^1 %s take^3 %i^1 SkillPoint%s from %s", PREFIX, szAdminName, iPoints, iPoints > 1 ? "s" : "", szPlayerName )
  896. }
  897.  
  898. return PLUGIN_HANDLED
  899. }
  900.  
  901. public FwdPlayerSpawnPost( id )
  902. {
  903. if( is_user_ignored[ id ] || !is_user_alive( id ) )
  904. return HAM_SUPERCEDE
  905.  
  906. if( get_pcvar_num( g_iEnableShowSkillPointsOnNick ) > 0 )
  907. {
  908. new szName[ 32 ]
  909. get_user_info( id, "name", szName, charsmax( szName ) )
  910.  
  911. new iLen = strlen( szName )
  912.  
  913. new iPos = iLen - 1
  914.  
  915. if( szName[ iPos ] == '>' )
  916. {
  917. for( new i = 1; i < 7; i++)
  918. {
  919. if( szName[ iPos - i ] == '<' )
  920. {
  921. iLen = iPos - i
  922. szName[ iLen ] = '^0'
  923. break
  924. }
  925. }
  926. }
  927.  
  928. format( szName[ iLen ], charsmax( szName ) - iLen, szName[ iLen-1 ] == ' ' ? "<%d>" : " <%d>", g_szPoints[ id ] )
  929. set_user_info( id, "name", szName )
  930. }
  931.  
  932. return HAM_IGNORED
  933. }
  934.  
  935. public MessageSayText( iMsgID, iDest, iReceiver )
  936. {
  937. if( get_pcvar_num( g_iHideChangeNickNotification ) > 0 )
  938. {
  939. new const Cstrike_Name_Change[ ] = "#Cstrike_Name_Change"
  940.  
  941. new szMessage[ sizeof( Cstrike_Name_Change ) + 1 ]
  942. get_msg_arg_string( 2, szMessage, charsmax( szMessage ) )
  943.  
  944. return equal( szMessage, Cstrike_Name_Change ) ? PLUGIN_HANDLED : PLUGIN_CONTINUE
  945. }
  946.  
  947. return PLUGIN_CONTINUE
  948. }
  949.  
  950. /////////////////////////////////////
  951. // ColorChat Stuff by ConnorMcLeod //
  952. /////////////////////////////////////
  953.  
  954. stock client_print_color(id, iColor=DontChange, const szMsg[], any:...)
  955. {
  956. // check if id is different from 0
  957. if( id && !is_user_connected(id) )
  958. {
  959. return 0;
  960. }
  961.  
  962. if( iColor > Grey )
  963. {
  964. iColor = DontChange;
  965. }
  966.  
  967. new szMessage[192];
  968. if( iColor == DontChange )
  969. {
  970. szMessage[0] = 0x04;
  971. }
  972. else
  973. {
  974. szMessage[0] = 0x03;
  975. }
  976.  
  977. new iParams = numargs();
  978. // Specific player code
  979. if(id)
  980. {
  981. if( iParams == 3 )
  982. {
  983. copy(szMessage[1], charsmax(szMessage)-1, szMsg);
  984. }
  985. else
  986. {
  987. vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
  988. }
  989.  
  990. if( iColor )
  991. {
  992. new szTeam[11]; // store current team so we can restore it
  993. get_user_team(id, szTeam, charsmax(szTeam));
  994.  
  995. // set id TeamInfo in consequence
  996. // so SayText msg gonna show the right color
  997. Send_TeamInfo(id, id, g_szTeamName[iColor]);
  998.  
  999. // Send the message
  1000. Send_SayText(id, id, szMessage);
  1001.  
  1002. // restore TeamInfo
  1003. Send_TeamInfo(id, id, szTeam);
  1004. }
  1005. else
  1006. {
  1007. Send_SayText(id, id, szMessage);
  1008. }
  1009. }
  1010.  
  1011. // Send message to all players
  1012. else
  1013. {
  1014. // Figure out if at least 1 player is connected
  1015. // so we don't send useless message if not
  1016. // and we gonna use that player as team reference (aka SayText message sender) for color change
  1017. new iPlayers[32], iNum;
  1018. get_players(iPlayers, iNum, "ch");
  1019. if( !iNum )
  1020. {
  1021. return 0;
  1022. }
  1023.  
  1024. new iFool = iPlayers[0];
  1025.  
  1026. new iMlNumber, i, j;
  1027. new Array:aStoreML = ArrayCreate();
  1028. if( iParams >= 5 ) // ML can be used
  1029. {
  1030. for(j=4; j<iParams; j++)
  1031. {
  1032. // retrieve original param value and check if it's LANG_PLAYER value
  1033. if( getarg(j) == LANG_PLAYER )
  1034. {
  1035. i=0;
  1036. // as LANG_PLAYER == -1, check if next parm string is a registered language translation
  1037. while( ( szMessage[ i ] = getarg( j + 1, i++ ) ) ) {}
  1038. if( GetLangTransKey(szMessage) != TransKey_Bad )
  1039. {
  1040. // Store that arg as LANG_PLAYER so we can alter it later
  1041. ArrayPushCell(aStoreML, j++);
  1042.  
  1043. // Update ML array saire so we'll know 1st if ML is used,
  1044. // 2nd how many args we have to alterate
  1045. iMlNumber++;
  1046. }
  1047. }
  1048. }
  1049. }
  1050.  
  1051. // If arraysize == 0, ML is not used
  1052. // we can only send 1 MSG_BROADCAST message
  1053. if( !iMlNumber )
  1054. {
  1055. if( iParams == 3 )
  1056. {
  1057. copy(szMessage[1], charsmax(szMessage)-1, szMsg);
  1058. }
  1059. else
  1060. {
  1061. vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
  1062. }
  1063.  
  1064. if( iColor )
  1065. {
  1066. new szTeam[11];
  1067. get_user_team(iFool, szTeam, charsmax(szTeam));
  1068. Send_TeamInfo(0, iFool, g_szTeamName[iColor]);
  1069. Send_SayText(0, iFool, szMessage);
  1070. Send_TeamInfo(0, iFool, szTeam);
  1071. }
  1072. else
  1073. {
  1074. Send_SayText(0, iFool, szMessage);
  1075. }
  1076. }
  1077.  
  1078. // ML is used, we need to loop through all players,
  1079. // format text and send a MSG_ONE_UNRELIABLE SayText message
  1080. else
  1081. {
  1082. new szTeam[11], szFakeTeam[10];
  1083.  
  1084. if( iColor )
  1085. {
  1086. get_user_team(iFool, szTeam, charsmax(szTeam));
  1087. copy(szFakeTeam, charsmax(szFakeTeam), g_szTeamName[iColor]);
  1088. }
  1089.  
  1090. for( i = 0; i < iNum; i++ )
  1091. {
  1092. id = iPlayers[i];
  1093.  
  1094. for(j=0; j<iMlNumber; j++)
  1095. {
  1096. // Set all LANG_PLAYER args to player index ( = id )
  1097. // so we can format the text for that specific player
  1098. setarg(ArrayGetCell(aStoreML, j), _, id);
  1099. }
  1100.  
  1101. // format string for specific player
  1102. vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
  1103.  
  1104. if( iColor )
  1105. {
  1106. Send_TeamInfo(id, iFool, szFakeTeam);
  1107. Send_SayText(id, iFool, szMessage);
  1108. Send_TeamInfo(id, iFool, szTeam);
  1109. }
  1110. else
  1111. {
  1112. Send_SayText(id, iFool, szMessage);
  1113. }
  1114. }
  1115. ArrayDestroy(aStoreML);
  1116. }
  1117. }
  1118. return 1;
  1119. }
  1120.  
  1121. stock Send_TeamInfo(iReceiver, iPlayerId, szTeam[])
  1122. {
  1123. static iTeamInfo = 0;
  1124. if( !iTeamInfo )
  1125. {
  1126. iTeamInfo = get_user_msgid("TeamInfo");
  1127. }
  1128. message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iTeamInfo, .player=iReceiver);
  1129. write_byte(iPlayerId);
  1130. write_string(szTeam);
  1131. message_end();
  1132. }
  1133.  
  1134. stock Send_SayText(iReceiver, iPlayerId, szMessage[])
  1135. {
  1136. static iSayText = 0;
  1137. if( !iSayText )
  1138. {
  1139. iSayText = get_user_msgid("SayText");
  1140. }
  1141. message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, .player=iReceiver);
  1142. write_byte(iPlayerId);
  1143. write_string(szMessage);
  1144. message_end();
  1145. }
  1146.  
  1147. /////////////////////////////////////
  1148.  


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 17 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole