Advertisement
fokse

Untitled

Mar 10th, 2012
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 48.91 KB | None | 0 0
  1. new PlVers:__version = 5;
  2. new Float:NULL_VECTOR[3];
  3. new String:NULL_STRING[1];
  4. new Extension:__ext_core = 64;
  5. new MaxClients;
  6. new Extension:__ext_sdktools = 204;
  7. new Extension:__ext_cprefs = 248;
  8. new g_iNumFlags;
  9. new g_iFlag[8];
  10. new g_iNumColors;
  11. new String:g_sColorSchemes[128][4];
  12. new String:g_sColorNames[128][16];
  13. new g_iColorFlags[128];
  14. new g_iNumLayouts;
  15. new String:g_sLayoutNames[128][16];
  16. new Float:g_fLayoutPositions[128][128][3];
  17. new g_iLayoutFlags[128];
  18. new g_iLayoutTotals[128];
  19. new g_iMaterials;
  20. new String:g_sMaterialPaths[128][64];
  21. new String:g_sMaterialNames[128][16];
  22. new g_iMaterialFlags[128];
  23. new g_iStartWidths;
  24. new g_iEndWidths;
  25. new g_iLifeTimes;
  26. new g_iRenderModes;
  27. new String:g_sStartingWidths[128][2];
  28. new String:g_sEndingWidths[128][2];
  29. new String:g_sLifeTimes[128][2];
  30. new bool:g_bRenderModes[6];
  31. new Handle:g_hEnabled;
  32. new Handle:g_hFlags;
  33. new Handle:g_hDefault;
  34. new Handle:g_hDefaultColor;
  35. new Handle:g_hDefaultLayout;
  36. new Handle:g_hDefaultLifeTime;
  37. new Handle:g_hDefaultStarting;
  38. new Handle:g_hDefaultEnding;
  39. new Handle:g_hDefaultRender;
  40. new Handle:g_hDefaultMaterial;
  41. new Handle:g_hConfigColor;
  42. new Handle:g_hConfigLayout;
  43. new Handle:g_hConfigLifeTime;
  44. new Handle:g_hConfigStarting;
  45. new Handle:g_hConfigEnding;
  46. new Handle:g_hConfigRender;
  47. new Handle:g_hConfigMaterial;
  48. new Handle:g_cEnabled;
  49. new Handle:g_cColor;
  50. new Handle:g_cStartingWidth;
  51. new Handle:g_cEndingWidth;
  52. new Handle:g_cLifeTime;
  53. new Handle:g_cRenderMode;
  54. new Handle:g_cLayout;
  55. new Handle:g_cMaterial;
  56. new Handle:g_hTrie;
  57. new g_iTeam[66];
  58. new bool:g_bAlive[66];
  59. new g_iCount[66];
  60. new bool:g_bLoaded[66];
  61. new bool:g_bAccess[66];
  62. new bool:g_bAppear[66];
  63. new bool:g_bFake[66];
  64. new g_iTrailData[66][7];
  65. new Handle:g_hEntities[66];
  66. new g_iDefaultColor;
  67. new g_iDefaultLayout;
  68. new g_iDefaultLifeTime;
  69. new g_iDefaultStarting;
  70. new g_iDefaultEnding;
  71. new g_iDefaultRender;
  72. new g_iDefaultMaterial;
  73. new bool:g_bEnabled;
  74. new bool:g_bLateLoad;
  75. new bool:g_bDefault;
  76. new bool:g_bEnding;
  77. new bool:g_bConfigColor;
  78. new bool:g_bConfigLayout;
  79. new bool:g_bConfigLifeTime;
  80. new bool:g_bConfigStarting;
  81. new bool:g_bConfigEnding;
  82. new bool:g_bConfigRender;
  83. new bool:g_bConfigMaterial;
  84. public Plugin:myinfo =
  85. {
  86. name = "Trails_VIP",
  87. description = "Trails pour les VIP",
  88. author = "@lex-92",
  89. version = "3.0.2",
  90. url = "http://soul-team.fr"
  91. };
  92. public __ext_core_SetNTVOptional()
  93. {
  94. MarkNativeAsOptional("GetFeatureStatus");
  95. MarkNativeAsOptional("RequireFeature");
  96. MarkNativeAsOptional("AddCommandListener");
  97. MarkNativeAsOptional("RemoveCommandListener");
  98. VerifyCoreVersion();
  99. return 0;
  100. }
  101.  
  102. Float:operator++(Float:)(Float:oper)
  103. {
  104. return FloatAdd(1, oper);
  105. }
  106.  
  107. bool:operator<=(Float:,Float:)(Float:oper1, Float:oper2)
  108. {
  109. return FloatCompare(oper1, oper2) <= 0;
  110. }
  111.  
  112. bool:operator!(Float:)(Float:oper)
  113. {
  114. return oper & -1 == 0;
  115. }
  116.  
  117. AddVectors(Float:vec1[3], Float:vec2[3], Float:result[3])
  118. {
  119. result[0] = FloatAdd(vec1[0], vec2[0]);
  120. result[4] = FloatAdd(vec1[4], vec2[4]);
  121. result[8] = FloatAdd(vec1[8], vec2[8]);
  122. return 0;
  123. }
  124.  
  125. bool:StrEqual(String:str1[], String:str2[], bool:caseSensitive)
  126. {
  127. return strcmp(str1, str2, caseSensitive) == 0;
  128. }
  129.  
  130. ExplodeString(String:text[], String:split[], String:buffers[][], maxStrings, maxStringLength)
  131. {
  132. new reloc_idx = 0;
  133. new idx = 0;
  134. new total = 0;
  135. new var1;
  136. if (maxStrings < 1) {
  137. return 0;
  138. }
  139. new var3 = SplitString(text[reloc_idx], split, buffers[total], maxStringLength);
  140. idx = var3;
  141. while (var3 != -1) {
  142. reloc_idx = idx + reloc_idx;
  143. if (text[reloc_idx]) {
  144. total++;
  145. if (total >= maxStrings) {
  146. return total;
  147. }
  148. }
  149. new var2;
  150. if (text[reloc_idx]) {
  151. total++;
  152. strcopy(buffers[total], maxStringLength, text[reloc_idx]);
  153. }
  154. return total;
  155. }
  156. new var2;
  157. if (text[reloc_idx]) {
  158. total++;
  159. strcopy(buffers[total], maxStringLength, text[reloc_idx]);
  160. }
  161. return total;
  162. }
  163.  
  164. AddFileToDownloadsTable(String:filename[])
  165. {
  166. static table = -1;
  167. if (table == -1) {
  168. table = FindStringTable("downloadables");
  169. }
  170. new bool:save = LockStringTables(false);
  171. AddToStringTable(table, filename, "", -1);
  172. LockStringTables(save);
  173. return 0;
  174. }
  175.  
  176. public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
  177. {
  178. g_bLateLoad = late;
  179. return APLRes:0;
  180. }
  181.  
  182. public OnPluginStart()
  183. {
  184. LoadTranslations("common.phrases");
  185. LoadTranslations("sm_trails.phrases");
  186. Void_LoadColors();
  187. Void_LoadLayouts();
  188. Void_LoadConfigs();
  189. Void_LoadMaterials();
  190. Void_Prepare();
  191. CreateConVar("sm_trails_version", "3.0.2", "Player Trails: Version", 401728, false, 0, false, 0);
  192. g_hEnabled = CreateConVar("sm_jailmod_trails_active", "1", "Active les Trails VIP", 0, true, 0, true, 1);
  193. g_hFlags = CreateConVar("sm_jailmod_trails_flags", "o", "Choix du Flag pour avoir accŠs aux trails", 0, false, 0, false, 0);
  194. g_hDefault = CreateConVar("sm_jailmod_trails_default", "1", "Quand un joueur est present , Activer trail par default ", 0, true, 0, true, 1);
  195. g_hDefaultColor = CreateConVar("sm_jailmod_trails_couleur", "-1", "Couleur de la Trail ( -1 Default )", 0, true, -1, false, 0);
  196. g_hDefaultLayout = CreateConVar("sm_jailmod_trails_taille", "0", "Taille par default de la Trail", 0, true, -1, false, 0);
  197. g_hDefaultLifeTime = CreateConVar("sm_jailmod_trails_duree", "-1", "Dur‚e par default de la trail", 0, true, -1, false, 0);
  198. g_hDefaultStarting = CreateConVar("sm_jailmod_trails_cfg_1", "37", "Epaisseur par default de la Trail", 0, true, -1, false, 0);
  199. g_hDefaultEnding = CreateConVar("sm_jailmod_trails_cfg_2", "0", "Dur‚e de Fin par default", 0, true, -1, false, 0);
  200. g_hDefaultRender = CreateConVar("sm_jailmod_trails_coloration", "2", "La coloration de la trail par default", 0, true, -1, false, 0);
  201. g_hDefaultMaterial = CreateConVar("sm_jailmod_trails_cfg_3", "-1", "La Trail par default ( au spawn )", 0, true, -1, false, 0);
  202. g_hConfigColor = CreateConVar("sm_jailmod_trails_config_couleur", "0", "Le VIP peut choisir la couleur de sa trail ?", 0, true, 0, true, 1);
  203. g_hConfigLayout = CreateConVar("sm_jailmod_trails_config_taille", "0", "Le VIP peut choisir la taille de sa trail ?", 0, true, 0, true, 1);
  204. g_hConfigLifeTime = CreateConVar("sm_jailmod_trails_config_duree", "0", "Le VIP peut choisir la dur‚e de sa trail ?", 0, true, 0, true, 1);
  205. g_hConfigStarting = CreateConVar("sm_jailmod_trails_config_timedepart", "0", "le VIP peut choisir le temps de d‚part ?", 0, true, 0, true, 1);
  206. g_hConfigEnding = CreateConVar("sm_jailmod_trails_config_endtime", "0", "Le VIP peut choisir la dur‚e de fin de sa trail ?", 0, true, 0, true, 1);
  207. g_hConfigRender = CreateConVar("sm_jailmod_trails_config_coloration", "0", "Le VIP peut choisir la coloration de sa trail ?", 0, true, 0, true, 1);
  208. g_hConfigMaterial = CreateConVar("sm_jailmod_trails_config_modeltrail", "1", "Le VIP peut choisir sa trail ?", 0, true, 0, true, 1);
  209. AutoExecConfig(true, "Trails_VIP", "sourcemod");
  210. HookConVarChange(g_hEnabled, ConVarChanged:1);
  211. HookConVarChange(g_hFlags, ConVarChanged:1);
  212. HookConVarChange(g_hDefault, ConVarChanged:1);
  213. HookConVarChange(g_hDefaultColor, ConVarChanged:1);
  214. HookConVarChange(g_hDefaultLayout, ConVarChanged:1);
  215. HookConVarChange(g_hDefaultLifeTime, ConVarChanged:1);
  216. HookConVarChange(g_hDefaultStarting, ConVarChanged:1);
  217. HookConVarChange(g_hDefaultEnding, ConVarChanged:1);
  218. HookConVarChange(g_hDefaultRender, ConVarChanged:1);
  219. HookConVarChange(g_hDefaultMaterial, ConVarChanged:1);
  220. HookConVarChange(g_hConfigColor, ConVarChanged:1);
  221. HookConVarChange(g_hConfigLayout, ConVarChanged:1);
  222. HookConVarChange(g_hConfigLifeTime, ConVarChanged:1);
  223. HookConVarChange(g_hConfigStarting, ConVarChanged:1);
  224. HookConVarChange(g_hConfigEnding, ConVarChanged:1);
  225. HookConVarChange(g_hConfigRender, ConVarChanged:1);
  226. HookConVarChange(g_hConfigMaterial, ConVarChanged:1);
  227. AddCommandListener(CommandListener:9, "say");
  228. AddCommandListener(CommandListener:9, "say_team");
  229. HookEvent("player_team", EventHook:15, EventHookMode:0);
  230. HookEvent("player_spawn", EventHook:13, EventHookMode:1);
  231. HookEvent("player_death", EventHook:11, EventHookMode:0);
  232. HookEvent("round_end", EventHook:17, EventHookMode:1);
  233. HookEvent("round_start", EventHook:19, EventHookMode:1);
  234. SetCookieMenuItem(CookieMenuHandler:37, any:0, "Trail Settings");
  235. g_cEnabled = RegClientCookie("PlayerTrails_Enabled", "Player Trails: The client's trail status.", CookieAccess:1);
  236. g_cColor = RegClientCookie("PlayerTrails_Color", "Player Trails: The client's selected trail color.", CookieAccess:1);
  237. g_cStartingWidth = RegClientCookie("PlayerTrails_Starting", "Player Trails: The client's selected starting trail width.", CookieAccess:1);
  238. g_cEndingWidth = RegClientCookie("PlayerTrails_Ending", "Player Trails: The client's selected ending trail width.", CookieAccess:1);
  239. g_cLifeTime = RegClientCookie("PlayerTrails_Life", "Player Trails: The client's selected LifeTime value.", CookieAccess:1);
  240. g_cRenderMode = RegClientCookie("PlayerTrails_Rendering", "Player Trails: The client's selected rendering mode.", CookieAccess:1);
  241. g_cLayout = RegClientCookie("PlayerTrails_Layout", "Player Trails: The client's selected layout.", CookieAccess:1);
  242. g_cMaterial = RegClientCookie("PlayerTrails_Material", "Player Trails: The client's selected material.", CookieAccess:1);
  243. RegAdminCmd("sm_trails_print", Command_Print, 16384, "Usage: sm_trails_print, prints indexes to be used with sm_trails_default_* cvars.", "", 0);
  244. RegAdminCmd("sm_trails_reload", Command_Reload, 16384, "Usage: sm_trails_reload, reloads all configuration files and issues changes in-game.", "", 0);
  245. g_hTrie = CreateTrie();
  246. SetTrieValue(g_hTrie, "!trails", any:1, true);
  247. SetTrieValue(g_hTrie, "/trails", any:1, true);
  248. SetTrieValue(g_hTrie, "!trail", any:1, true);
  249. SetTrieValue(g_hTrie, "/trail", any:1, true);
  250. return 0;
  251. }
  252.  
  253. public OnPluginEnd()
  254. {
  255. ClearTrie(g_hTrie);
  256. new i = 1;
  257. while (i <= MaxClients) {
  258. if (IsClientInGame(i)) {
  259. Void_KillTrails(i, true);
  260. i++;
  261. } else {
  262. Void_ClearTrails(i);
  263. i++;
  264. }
  265. i++;
  266. }
  267. return 0;
  268. }
  269.  
  270. public OnMapStart()
  271. {
  272. Void_SetDefaults();
  273. if (g_bEnabled) {
  274. Void_Prepare();
  275. }
  276. return 0;
  277. }
  278.  
  279. public OnMapEnd()
  280. {
  281. if (g_bEnabled) {
  282. new i = 1;
  283. while (i <= MaxClients) {
  284. if (IsClientInGame(i)) {
  285. Void_KillTrails(i, true);
  286. i++;
  287. } else {
  288. Void_ClearTrails(i);
  289. i++;
  290. }
  291. i++;
  292. }
  293. }
  294. return 0;
  295. }
  296.  
  297. public OnConfigsExecuted()
  298. {
  299. new var1;
  300. if (g_bEnabled) {
  301. new i = 1;
  302. while (i <= MaxClients) {
  303. if (IsClientInGame(i)) {
  304. g_iTeam[i] = GetClientTeam(i);
  305. new var2;
  306. if (IsPlayerAlive(i)) {
  307. var2 = 1;
  308. } else {
  309. var2 = 0;
  310. }
  311. g_bAlive[i] = var2;
  312. new var3;
  313. if (IsFakeClient(i)) {
  314. var3 = 1;
  315. } else {
  316. var3 = 0;
  317. }
  318. g_bFake[i] = var3;
  319. if (!g_iNumFlags) {
  320. g_bAccess[i] = 1;
  321. } else {
  322. new _iFlags = GetUserFlagBits(i);
  323. new j = 0;
  324. while (j < g_iNumFlags) {
  325. if (g_iFlag[j][0][0] & _iFlags) {
  326. g_bAccess[i] = 1;
  327. }
  328. j++;
  329. }
  330. }
  331. new var4;
  332. if (g_bAccess[i][0][0]) {
  333. var4 = CreateArray(i, 0);
  334. } else {
  335. var4 = 0;
  336. }
  337. g_hEntities[i] = var4;
  338. if (g_bAccess[i][0][0]) {
  339. if (!g_bFake[i][0][0]) {
  340. new var5;
  341. if (!g_bLoaded[i][0][0]) {
  342. Void_LoadCookies(i);
  343. }
  344. }
  345. g_bAppear[i] = g_bDefault;
  346. g_bLoaded[i] = 1;
  347. new var6;
  348. if (g_iDefaultColor == -1) {
  349. var6 = GetRandomInt(0, g_iNumColors + -1);
  350. } else {
  351. var6 = g_iDefaultColor;
  352. }
  353. g_iTrailData[i][0][0][0] = var6;
  354. new var7;
  355. if (g_iDefaultLayout == -1) {
  356. var7 = GetRandomInt(0, g_iNumLayouts + -1);
  357. } else {
  358. var7 = g_iDefaultLayout;
  359. }
  360. g_iTrailData[i][0][0][4] = var7;
  361. new var8;
  362. if (g_iDefaultStarting == -1) {
  363. var8 = GetRandomInt(0, g_iStartWidths + -1);
  364. } else {
  365. var8 = g_iDefaultStarting;
  366. }
  367. g_iTrailData[i][0][0][8] = var8;
  368. new var9;
  369. if (g_iDefaultEnding == -1) {
  370. var9 = GetRandomInt(0, g_iEndWidths + -1);
  371. } else {
  372. var9 = g_iDefaultEnding;
  373. }
  374. g_iTrailData[i][0][0][12] = var9;
  375. new var10;
  376. if (g_iDefaultLifeTime == -1) {
  377. var10 = GetRandomInt(0, g_iLifeTimes + -1);
  378. } else {
  379. var10 = g_iDefaultLifeTime;
  380. }
  381. g_iTrailData[i][0][0][16] = var10;
  382. new var11;
  383. if (g_iDefaultRender == -1) {
  384. var11 = GetRandomInt(0, 5);
  385. } else {
  386. var11 = g_iDefaultRender;
  387. }
  388. g_iTrailData[i][0][0][20] = var11;
  389. new var12;
  390. if (g_iDefaultMaterial == -1) {
  391. var12 = GetRandomInt(0, g_iMaterials + -1);
  392. } else {
  393. var12 = g_iDefaultMaterial;
  394. }
  395. g_iTrailData[i][0][0][24] = var12;
  396. }
  397. new var13;
  398. if (!g_bEnding) {
  399. Void_AttachTrails(i);
  400. i++;
  401. }
  402. i++;
  403. } else {
  404. g_iTeam[i] = 0;
  405. g_bAlive[i] = 0;
  406. new var14;
  407. if (g_hEntities[i][0][0]) {
  408. g_hEntities[i] = 0;
  409. i++;
  410. }
  411. i++;
  412. }
  413. i++;
  414. }
  415. g_bLateLoad = 0;
  416. }
  417. return 0;
  418. }
  419.  
  420. public OnClientPostAdminCheck(client)
  421. {
  422. new var1;
  423. if (g_bEnabled) {
  424. if (!g_iNumFlags) {
  425. g_bAccess[client] = 1;
  426. } else {
  427. new _iFlags = GetUserFlagBits(client);
  428. new i = 0;
  429. while (i < g_iNumFlags) {
  430. if (g_iFlag[i][0][0] & _iFlags) {
  431. g_bAccess[client] = 1;
  432. }
  433. i++;
  434. }
  435. }
  436. new var2;
  437. if (IsFakeClient(client)) {
  438. var2 = 1;
  439. } else {
  440. var2 = 0;
  441. }
  442. g_bFake[client] = var2;
  443. new var3;
  444. if (g_bAccess[client][0][0]) {
  445. var3 = CreateArray(client, 0);
  446. } else {
  447. var3 = 0;
  448. }
  449. g_hEntities[client] = var3;
  450. if (g_bAccess[client][0][0]) {
  451. if (!g_bFake[client][0][0]) {
  452. new var4;
  453. if (!g_bLoaded[client][0][0]) {
  454. Void_LoadCookies(client);
  455. }
  456. }
  457. g_bLoaded[client] = 1;
  458. g_bAppear[client] = g_bDefault;
  459. new var5;
  460. if (g_iDefaultColor == -1) {
  461. var5 = GetRandomInt(0, g_iNumColors + -1);
  462. } else {
  463. var5 = g_iDefaultColor;
  464. }
  465. g_iTrailData[client][0][0][0] = var5;
  466. new var6;
  467. if (g_iDefaultLayout == -1) {
  468. var6 = GetRandomInt(0, g_iNumLayouts + -1);
  469. } else {
  470. var6 = g_iDefaultLayout;
  471. }
  472. g_iTrailData[client][0][0][4] = var6;
  473. new var7;
  474. if (g_iDefaultStarting == -1) {
  475. var7 = GetRandomInt(0, g_iStartWidths + -1);
  476. } else {
  477. var7 = g_iDefaultStarting;
  478. }
  479. g_iTrailData[client][0][0][8] = var7;
  480. new var8;
  481. if (g_iDefaultEnding == -1) {
  482. var8 = GetRandomInt(0, g_iEndWidths + -1);
  483. } else {
  484. var8 = g_iDefaultEnding;
  485. }
  486. g_iTrailData[client][0][0][12] = var8;
  487. new var9;
  488. if (g_iDefaultLifeTime == -1) {
  489. var9 = GetRandomInt(0, g_iLifeTimes + -1);
  490. } else {
  491. var9 = g_iDefaultLifeTime;
  492. }
  493. g_iTrailData[client][0][0][16] = var9;
  494. new var10;
  495. if (g_iDefaultRender == -1) {
  496. var10 = GetRandomInt(0, 5);
  497. } else {
  498. var10 = g_iDefaultRender;
  499. }
  500. g_iTrailData[client][0][0][20] = var10;
  501. new var11;
  502. if (g_iDefaultMaterial == -1) {
  503. var11 = GetRandomInt(0, g_iMaterials + -1);
  504. } else {
  505. var11 = g_iDefaultMaterial;
  506. }
  507. g_iTrailData[client][0][0][24] = var11;
  508. }
  509. }
  510. return 0;
  511. }
  512.  
  513. public OnClientDisconnect(client)
  514. {
  515. if (g_bEnabled) {
  516. g_iTeam[client] = 0;
  517. g_bAlive[client] = 0;
  518. g_bLoaded[client] = 0;
  519. g_bAccess[client] = 0;
  520. g_bAppear[client] = 0;
  521. Void_KillTrails(client, true);
  522. }
  523. return 0;
  524. }
  525.  
  526. public OnClientCookiesCached(client)
  527. {
  528. new var1;
  529. if (!g_bLoaded[client][0][0]) {
  530. Void_LoadCookies(client);
  531. new var2;
  532. if (!g_bEnding) {
  533. Void_AttachTrails(client);
  534. }
  535. }
  536. return 0;
  537. }
  538.  
  539. public Action:Event_OnPlayerTeam(Handle:event, String:name[], bool:dontBroadcast)
  540. {
  541. if (g_bEnabled) {
  542. new client = GetClientOfUserId(GetEventInt(event, "userid"));
  543. new var1;
  544. if (!client) {
  545. return Action:0;
  546. }
  547. g_iTeam[client] = GetEventInt(event, "team");
  548. if (g_iTeam[client][0][0] <= 1) {
  549. g_bAlive[client] = 0;
  550. if (g_bAccess[client][0][0]) {
  551. Void_KillTrails(client, false);
  552. }
  553. }
  554. }
  555. return Action:0;
  556. }
  557.  
  558. public Action:Event_OnPlayerSpawn(Handle:event, String:name[], bool:dontBroadcast)
  559. {
  560. if (g_bEnabled) {
  561. new client = GetClientOfUserId(GetEventInt(event, "userid"));
  562. new var1;
  563. if (!client) {
  564. return Action:0;
  565. }
  566. g_bAlive[client] = 1;
  567. new var2;
  568. if (!g_bEnding) {
  569. CreateTimer(0.1, Timer_Attach, GetClientUserId(client), 0);
  570. }
  571. }
  572. return Action:0;
  573. }
  574.  
  575. public Action:Event_OnPlayerDeath(Handle:event, String:name[], bool:dontBroadcast)
  576. {
  577. if (g_bEnabled) {
  578. new client = GetClientOfUserId(GetEventInt(event, "userid"));
  579. new var1;
  580. if (!client) {
  581. return Action:0;
  582. }
  583. g_bAlive[client] = 0;
  584. if (g_bAccess[client][0][0]) {
  585. Void_KillTrails(client, false);
  586. }
  587. }
  588. return Action:0;
  589. }
  590.  
  591. public Action:Event_OnRoundStart(Handle:event, String:name[], bool:dontBroadcast)
  592. {
  593. if (g_bEnabled) {
  594. g_bEnding = 0;
  595. new i = 1;
  596. while (i <= MaxClients) {
  597. new var1;
  598. if (g_bAlive[i][0][0]) {
  599. Void_AttachTrails(i);
  600. i++;
  601. }
  602. i++;
  603. }
  604. }
  605. return Action:0;
  606. }
  607.  
  608. public Action:Event_OnRoundEnd(Handle:event, String:name[], bool:dontBroadcast)
  609. {
  610. if (g_bEnabled) {
  611. g_bEnding = 1;
  612. new i = 1;
  613. while (i <= MaxClients) {
  614. new var1;
  615. if (g_bAlive[i][0][0]) {
  616. Void_KillTrails(i, false);
  617. i++;
  618. }
  619. i++;
  620. }
  621. }
  622. return Action:0;
  623. }
  624.  
  625. public Action:Command_Say(client, String:command[], argc)
  626. {
  627. if (g_bEnabled) {
  628. new var1;
  629. if (!client) {
  630. return Action:0;
  631. }
  632. decl _iIndex;
  633. decl String:_sText[192];
  634. GetCmdArgString(_sText, 192);
  635. StripQuotes(_sText);
  636. if (GetTrieValue(g_hTrie, _sText, _iIndex)) {
  637. if (!g_bAccess[client][0][0]) {
  638. PrintToChat(client, "%s%t", "[Trails_VIP] ", "Phrase_Restricted");
  639. } else {
  640. Menu_Trails(client);
  641. }
  642. return Action:4;
  643. }
  644. }
  645. return Action:0;
  646. }
  647.  
  648. public Action:Command_Print(client, args)
  649. {
  650. ReplyToCommand(client, "%sPlease check your console for index data.", "[Trails_VIP] ");
  651. decl _iArray[2];
  652. if (client) {
  653. _iArray[0] = GetClientUserId(client);
  654. } else {
  655. _iArray[0] = 0;
  656. }
  657. _iArray[4] = 1;
  658. while (_iArray[4] <= 7) {
  659. new Handle:_hPack = CreateDataPack();
  660. WritePackCell(_hPack, _iArray[0]);
  661. WritePackCell(_hPack, _iArray[4]);
  662. CreateTimer(FloatMul(0.1, float(_iArray[4])), Timer_Print, _hPack, 0);
  663. _iArray[4]++;
  664. }
  665. return Action:3;
  666. }
  667.  
  668. public Action:Command_Reload(client, args)
  669. {
  670. ReplyToCommand(client, "%sSettings have been reloaded!", "[Trails_VIP] ");
  671. Void_LoadColors();
  672. Void_LoadLayouts();
  673. Void_LoadConfigs();
  674. Void_LoadMaterials();
  675. Void_Prepare();
  676. new i = 1;
  677. while (i <= MaxClients) {
  678. g_bLoaded[i] = 0;
  679. g_bAccess[i] = 0;
  680. if (IsClientInGame(i)) {
  681. Void_KillTrails(i, true);
  682. g_iTeam[i] = GetClientTeam(i);
  683. new var1;
  684. if (IsPlayerAlive(i)) {
  685. var1 = 1;
  686. } else {
  687. var1 = 0;
  688. }
  689. g_bAlive[i] = var1;
  690. new var2;
  691. if (IsFakeClient(i)) {
  692. var2 = 1;
  693. } else {
  694. var2 = 0;
  695. }
  696. g_bFake[i] = var2;
  697. if (!g_iNumFlags) {
  698. g_bAccess[i] = 1;
  699. } else {
  700. new _iFlags = GetUserFlagBits(i);
  701. new j = 0;
  702. while (j < g_iNumFlags) {
  703. if (g_iFlag[j][0][0] & _iFlags) {
  704. g_bAccess[i] = 1;
  705. }
  706. j++;
  707. }
  708. }
  709. if (g_bAccess[i][0][0]) {
  710. g_hEntities[i] = CreateArray(1, 0);
  711. if (!g_bFake[i][0][0]) {
  712. new var3;
  713. if (!g_bLoaded[i][0][0]) {
  714. Void_LoadCookies(i);
  715. }
  716. } else {
  717. g_bLoaded[i] = 1;
  718. g_bAppear[i] = 1;
  719. new var4;
  720. if (g_iDefaultColor == -1) {
  721. var4 = GetRandomInt(0, g_iNumColors + -1);
  722. } else {
  723. var4 = g_iDefaultColor;
  724. }
  725. g_iTrailData[i][0][0][0] = var4;
  726. new var5;
  727. if (g_iDefaultLayout == -1) {
  728. var5 = GetRandomInt(0, g_iNumLayouts + -1);
  729. } else {
  730. var5 = g_iDefaultLayout;
  731. }
  732. g_iTrailData[i][0][0][4] = var5;
  733. new var6;
  734. if (g_iDefaultStarting == -1) {
  735. var6 = GetRandomInt(0, g_iStartWidths + -1);
  736. } else {
  737. var6 = g_iDefaultStarting;
  738. }
  739. g_iTrailData[i][0][0][8] = var6;
  740. new var7;
  741. if (g_iDefaultEnding == -1) {
  742. var7 = GetRandomInt(0, g_iEndWidths + -1);
  743. } else {
  744. var7 = g_iDefaultEnding;
  745. }
  746. g_iTrailData[i][0][0][12] = var7;
  747. new var8;
  748. if (g_iDefaultLifeTime == -1) {
  749. var8 = GetRandomInt(0, g_iLifeTimes + -1);
  750. } else {
  751. var8 = g_iDefaultLifeTime;
  752. }
  753. g_iTrailData[i][0][0][16] = var8;
  754. new var9;
  755. if (g_iDefaultRender == -1) {
  756. var9 = GetRandomInt(0, 5);
  757. } else {
  758. var9 = g_iDefaultRender;
  759. }
  760. g_iTrailData[i][0][0][20] = var9;
  761. new var10;
  762. if (g_iDefaultMaterial == -1) {
  763. var10 = GetRandomInt(0, g_iMaterials + -1);
  764. } else {
  765. var10 = g_iDefaultMaterial;
  766. }
  767. g_iTrailData[i][0][0][24] = var10;
  768. }
  769. new var11;
  770. if (!g_bEnding) {
  771. Void_AttachTrails(i);
  772. i++;
  773. }
  774. i++;
  775. }
  776. i++;
  777. } else {
  778. g_iTeam[i] = 0;
  779. g_bAlive[i] = 0;
  780. new var12;
  781. if (g_hEntities[i][0][0]) {
  782. g_hEntities[i] = 0;
  783. i++;
  784. }
  785. i++;
  786. }
  787. i++;
  788. }
  789. return Action:3;
  790. }
  791.  
  792. public Action:Timer_Attach(Handle:timer, userid)
  793. {
  794. new client = GetClientOfUserId(userid);
  795. new var1;
  796. if (client) {
  797. Void_AttachTrails(client);
  798. }
  799. return Action:0;
  800. }
  801.  
  802. public Action:Timer_Kill(Handle:timer, userid)
  803. {
  804. new client = GetClientOfUserId(userid);
  805. new var1;
  806. if (client) {
  807. Void_KillTrails(client, false);
  808. }
  809. return Action:0;
  810. }
  811.  
  812.  
  813. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  814. Parameter name: index */
  815. function "Timer_Print" (number 27)
  816. Void_AttachTrails(client)
  817. {
  818. new var1;
  819. if (g_bLoaded[client][0][0]) {
  820. decl String:_sTemp[64];
  821. g_iCount[client] = g_iLayoutTotals[g_iTrailData[client][0][0][4]][0][0];
  822. Format(_sTemp, 64, "PlayerTrails_%d", GetClientUserId(client));
  823. DispatchKeyValue(client, "targetname", _sTemp);
  824. decl Float:g_fAngle[3];
  825. decl Float:g_fOrigin[3];
  826. decl Float:_fTemp[3];
  827. GetEntPropVector(client, PropType:1, "m_angAbsRotation", g_fAngle, 0);
  828. SetEntPropVector(client, PropType:1, "m_angAbsRotation", _fTemp, 0);
  829. new i = 1;
  830. while (g_iCount[client][0][0] >= i) {
  831. new _iEntity = CreateEntityByName("env_spritetrail", -1);
  832. new var2;
  833. if (_iEntity > 0) {
  834. SetEntPropFloat(_iEntity, PropType:0, "m_flTextureRes", 0.05, 0);
  835. PushArrayCell(g_hEntities[client][0][0], _iEntity);
  836. DispatchKeyValue(_iEntity, "parentname", _sTemp);
  837. DispatchKeyValue(_iEntity, "renderamt", "255");
  838. DispatchKeyValue(_iEntity, "rendercolor", g_sColorSchemes[g_iTrailData[client][0][0][0]][0][0]);
  839. DispatchKeyValue(_iEntity, "spritename", g_sMaterialPaths[g_iTrailData[client][0][0][24]][0][0]);
  840. DispatchKeyValue(_iEntity, "lifetime", "1.0");
  841. DispatchKeyValue(_iEntity, "startwidth", "15.0");
  842. DispatchKeyValue(_iEntity, "endwidth", "5.0");
  843. DispatchKeyValue(_iEntity, "rendermode", "0");
  844. DispatchSpawn(_iEntity);
  845. GetClientAbsOrigin(client, g_fOrigin);
  846. AddVectors(g_fOrigin, g_fLayoutPositions[g_iTrailData[client][0][0][4]][0][0][i], g_fOrigin);
  847. TeleportEntity(_iEntity, g_fOrigin, _fTemp, NULL_VECTOR);
  848. SetVariantString(_sTemp);
  849. AcceptEntityInput(_iEntity, "SetParent", _iEntity, _iEntity, 0);
  850. i++;
  851. }
  852. i++;
  853. }
  854. SetEntPropVector(client, PropType:1, "m_angAbsRotation", g_fAngle, 0);
  855. }
  856. return 0;
  857. }
  858.  
  859. Void_KillTrails(client, bool:clear)
  860. {
  861. if (g_hEntities[client][0][0]) {
  862. new i = 0;
  863. while (g_iCount[client][0][0] > i) {
  864. new _iEntity = GetArrayCell(g_hEntities[client][0][0], i, 0, false);
  865. new var1;
  866. if (_iEntity > 0) {
  867. AcceptEntityInput(_iEntity, "Kill", -1, -1, 0);
  868. i++;
  869. }
  870. i++;
  871. }
  872. ClearArray(g_hEntities[client][0][0]);
  873. new var2;
  874. if (clear) {
  875. g_hEntities[client] = 0;
  876. }
  877. }
  878. g_iCount[client] = 0;
  879. return 0;
  880. }
  881.  
  882. Void_ClearTrails(index)
  883. {
  884. if (g_hEntities[index][0][0]) {
  885. ClearArray(g_hEntities[index][0][0]);
  886. if (CloseHandle(g_hEntities[index][0][0])) {
  887. g_hEntities[index] = 0;
  888. }
  889. }
  890. return 0;
  891. }
  892.  
  893.  
  894. /* ERROR! Unrecognized opcode: load_both */
  895. function "Void_SetDefaults" (number 31)
  896.  
  897. /* ERROR! Unrecognized opcode: load_both */
  898. function "Action_OnSettingsChange" (number 32)
  899. Void_LoadColors()
  900. {
  901. decl String:_sPath[256];
  902. new Handle:_hKV = CreateKeyValues("PlayerTrails_Colors", "", "");
  903. BuildPath(PathType:0, _sPath, 256, "configs/jailmod/trails/trails_couleurs.ini");
  904. if (FileToKeyValues(_hKV, _sPath)) {
  905. g_iNumColors = 0;
  906. KvGotoFirstSubKey(_hKV, true);
  907. do {
  908. KvGetSectionName(_hKV, g_sColorNames[g_iNumColors][0][0], 64);
  909. KvGetString(_hKV, "color", g_sColorSchemes[g_iNumColors][0][0], 16, "");
  910. KvGetString(_hKV, "flag", _sPath, 256, "");
  911. g_iColorFlags[g_iNumColors] = StringToInt(_sPath, 10);
  912. g_iNumColors += 1;
  913. } while (KvGotoNextKey(_hKV, true));
  914. if (!g_iNumColors) {
  915. CloseHandle(_hKV);
  916. SetFailState("Trails: There were no colors defined in configs/jailmod/trails/trails_couleurs.ini");
  917. return 0;
  918. }
  919. CloseHandle(_hKV);
  920. return 0;
  921. }
  922. CloseHandle(_hKV);
  923. SetFailState("Trails: Unable to locate the file configs/jailmod/trails/trails_couleurs.ini");
  924. return 0;
  925. }
  926.  
  927. Void_LoadLayouts()
  928. {
  929. decl String:_sPath[256];
  930. new Handle:_hKV = CreateKeyValues("PlayerTrails_Layouts", "", "");
  931. BuildPath(PathType:0, _sPath, 256, "configs/jailmod/trails/trails_tailles.ini");
  932. if (FileToKeyValues(_hKV, _sPath)) {
  933. g_iNumLayouts = 0;
  934. KvGotoFirstSubKey(_hKV, true);
  935. }
  936. CloseHandle(_hKV);
  937. SetFailState("Trails: Unable to locate the file configs/jailmod/trails/trails_tailles.ini");
  938. return 0;
  939. }
  940.  
  941.  
  942. /* ERROR! unknown operator */
  943. function "Void_LoadConfigs" (number 35)
  944. Void_LoadMaterials()
  945. {
  946. decl String:_sPath[256];
  947. new Handle:_hKV = CreateKeyValues("PlayerTrails_Materials", "", "");
  948. BuildPath(PathType:0, _sPath, 256, "configs/jailmod/trails/trails_liste.ini");
  949. if (FileToKeyValues(_hKV, _sPath)) {
  950. g_iMaterials = 0;
  951. decl String:_sBuffer[64];
  952. KvGotoFirstSubKey(_hKV, true);
  953. do {
  954. KvGetSectionName(_hKV, g_sMaterialNames[g_iMaterials][0][0], 64);
  955. KvGetString(_hKV, "path", g_sMaterialPaths[g_iMaterials][0][0], 256, "");
  956. KvGetString(_hKV, "flag", _sBuffer, 64, "");
  957. g_iMaterialFlags[g_iMaterials] = StringToInt(_sBuffer, 10);
  958. g_iMaterials += 1;
  959. } while (KvGotoNextKey(_hKV, true));
  960. if (!g_iMaterials) {
  961. CloseHandle(_hKV);
  962. SetFailState("Trails: There were no materials defined in sm_trails_materials.ini!");
  963. return 0;
  964. }
  965. CloseHandle(_hKV);
  966. return 0;
  967. }
  968. CloseHandle(_hKV);
  969. SetFailState("Trails: Unable to locate the file sourcemod/configs/trails/sm_trails_materials.ini!");
  970. return 0;
  971. }
  972.  
  973. Void_Prepare()
  974. {
  975. new i = 0;
  976. while (i < g_iMaterials) {
  977. decl String:_sBuffer[256];
  978. strcopy(_sBuffer, 256, g_sMaterialPaths[i][0][0]);
  979. PrecacheModel(_sBuffer, true);
  980. AddFileToDownloadsTable(_sBuffer);
  981. ReplaceString(_sBuffer, 256, ".vmt", ".vtf", false);
  982. AddFileToDownloadsTable(_sBuffer);
  983. i++;
  984. }
  985. return 0;
  986. }
  987.  
  988. Void_LoadCookies(client)
  989. {
  990. decl String:_sCookie[4];
  991. GetClientCookie(client, g_cEnabled, _sCookie, 4);
  992. if (StrEqual(_sCookie, "", false)) {
  993. new var1;
  994. if (g_bDefault) {
  995. var1 = 340584;
  996. } else {
  997. var1 = 340588;
  998. }
  999. new var2;
  1000. if (StringToInt(_sCookie, 10)) {
  1001. var2 = 1;
  1002. } else {
  1003. var2 = 0;
  1004. }
  1005. g_bAppear[client] = var2;
  1006. SetClientCookie(client, g_cEnabled, _sCookie);
  1007. new var3;
  1008. if (g_iDefaultColor == -1) {
  1009. var3 = GetRandomInt(0, g_iNumColors + -1);
  1010. } else {
  1011. var3 = g_iDefaultColor;
  1012. }
  1013. g_iTrailData[client][0][0][0] = var3;
  1014. IntToString(g_iTrailData[client][0][0][0], _sCookie, 4);
  1015. SetClientCookie(client, g_cColor, _sCookie);
  1016. new var4;
  1017. if (g_iDefaultLayout == -1) {
  1018. var4 = GetRandomInt(0, g_iNumLayouts + -1);
  1019. } else {
  1020. var4 = g_iDefaultLayout;
  1021. }
  1022. g_iTrailData[client][0][0][4] = var4;
  1023. IntToString(g_iTrailData[client][0][0][4], _sCookie, 4);
  1024. SetClientCookie(client, g_cLayout, _sCookie);
  1025. new var5;
  1026. if (g_iDefaultStarting == -1) {
  1027. var5 = GetRandomInt(0, g_iStartWidths + -1);
  1028. } else {
  1029. var5 = g_iDefaultStarting;
  1030. }
  1031. g_iTrailData[client][0][0][8] = var5;
  1032. IntToString(g_iTrailData[client][0][0][8], _sCookie, 4);
  1033. SetClientCookie(client, g_cStartingWidth, _sCookie);
  1034. new var6;
  1035. if (g_iDefaultEnding == -1) {
  1036. var6 = GetRandomInt(0, g_iEndWidths + -1);
  1037. } else {
  1038. var6 = g_iDefaultEnding;
  1039. }
  1040. g_iTrailData[client][0][0][12] = var6;
  1041. IntToString(g_iTrailData[client][0][0][12], _sCookie, 4);
  1042. SetClientCookie(client, g_cEndingWidth, _sCookie);
  1043. new var7;
  1044. if (g_iDefaultLifeTime == -1) {
  1045. var7 = GetRandomInt(0, g_iLifeTimes + -1);
  1046. } else {
  1047. var7 = g_iDefaultLifeTime;
  1048. }
  1049. g_iTrailData[client][0][0][16] = var7;
  1050. IntToString(g_iTrailData[client][0][0][16], _sCookie, 4);
  1051. SetClientCookie(client, g_cLifeTime, _sCookie);
  1052. new var8;
  1053. if (g_iDefaultRender == -1) {
  1054. var8 = GetRandomInt(0, 5);
  1055. } else {
  1056. var8 = g_iDefaultRender;
  1057. }
  1058. g_iTrailData[client][0][0][20] = var8;
  1059. IntToString(g_iTrailData[client][0][0][20], _sCookie, 4);
  1060. SetClientCookie(client, g_cRenderMode, _sCookie);
  1061. new var9;
  1062. if (g_iDefaultMaterial == -1) {
  1063. var9 = GetRandomInt(0, g_iMaterials + -1);
  1064. } else {
  1065. var9 = g_iDefaultMaterial;
  1066. }
  1067. g_iTrailData[client][0][0][24] = var9;
  1068. IntToString(g_iTrailData[client][0][0][24], _sCookie, 4);
  1069. SetClientCookie(client, g_cMaterial, _sCookie);
  1070. } else {
  1071. new var10;
  1072. if (StringToInt(_sCookie, 10)) {
  1073. var10 = 1;
  1074. } else {
  1075. var10 = 0;
  1076. }
  1077. g_bAppear[client] = var10;
  1078. if (g_bConfigColor) {
  1079. GetClientCookie(client, g_cColor, _sCookie, 4);
  1080. g_iTrailData[client][0][0][0] = StringToInt(_sCookie, 10);
  1081. if (g_iTrailData[client][0][0][0] >= g_iNumColors) {
  1082. g_iTrailData[client][0][0][0] = g_iNumColors + -1;
  1083. IntToString(g_iTrailData[client][0][0][0], _sCookie, 4);
  1084. SetClientCookie(client, g_cColor, _sCookie);
  1085. }
  1086. } else {
  1087. new var11;
  1088. if (g_iDefaultColor == -1) {
  1089. var11 = GetRandomInt(0, g_iNumColors + -1);
  1090. } else {
  1091. var11 = g_iDefaultColor;
  1092. }
  1093. g_iTrailData[client][0][0][0] = var11;
  1094. }
  1095. if (g_bConfigLayout) {
  1096. GetClientCookie(client, g_cLayout, _sCookie, 4);
  1097. g_iTrailData[client][0][0][4] = StringToInt(_sCookie, 10);
  1098. if (g_iTrailData[client][0][0][4] >= g_iNumLayouts) {
  1099. g_iTrailData[client][0][0][4] = g_iNumLayouts + -1;
  1100. IntToString(g_iTrailData[client][0][0][4], _sCookie, 4);
  1101. SetClientCookie(client, g_cLayout, _sCookie);
  1102. }
  1103. } else {
  1104. new var12;
  1105. if (g_iDefaultLayout == -1) {
  1106. var12 = GetRandomInt(0, g_iNumLayouts + -1);
  1107. } else {
  1108. var12 = g_iDefaultLayout;
  1109. }
  1110. g_iTrailData[client][0][0][4] = var12;
  1111. }
  1112. if (g_bConfigStarting) {
  1113. GetClientCookie(client, g_cStartingWidth, _sCookie, 4);
  1114. g_iTrailData[client][0][0][8] = StringToInt(_sCookie, 10);
  1115. if (g_iTrailData[client][0][0][8] >= g_iStartWidths) {
  1116. g_iTrailData[client][0][0][8] = g_iStartWidths + -1;
  1117. IntToString(g_iTrailData[client][0][0][8], _sCookie, 4);
  1118. SetClientCookie(client, g_cStartingWidth, _sCookie);
  1119. }
  1120. } else {
  1121. new var13;
  1122. if (g_iDefaultStarting == -1) {
  1123. var13 = GetRandomInt(0, g_iStartWidths + -1);
  1124. } else {
  1125. var13 = g_iDefaultStarting;
  1126. }
  1127. g_iTrailData[client][0][0][8] = var13;
  1128. }
  1129. if (g_bConfigEnding) {
  1130. GetClientCookie(client, g_cEndingWidth, _sCookie, 4);
  1131. g_iTrailData[client][0][0][12] = StringToInt(_sCookie, 10);
  1132. if (g_iTrailData[client][0][0][12] >= g_iEndWidths) {
  1133. g_iTrailData[client][0][0][12] = g_iEndWidths + -1;
  1134. IntToString(g_iTrailData[client][0][0][12], _sCookie, 4);
  1135. SetClientCookie(client, g_cEndingWidth, _sCookie);
  1136. }
  1137. } else {
  1138. new var14;
  1139. if (g_iDefaultEnding == -1) {
  1140. var14 = GetRandomInt(0, g_iEndWidths + -1);
  1141. } else {
  1142. var14 = g_iDefaultEnding;
  1143. }
  1144. g_iTrailData[client][0][0][12] = var14;
  1145. }
  1146. if (g_bConfigLifeTime) {
  1147. GetClientCookie(client, g_cLifeTime, _sCookie, 4);
  1148. g_iTrailData[client][0][0][16] = StringToInt(_sCookie, 10);
  1149. if (g_iTrailData[client][0][0][16] >= g_iLifeTimes) {
  1150. g_iTrailData[client][0][0][16] = g_iLifeTimes + -1;
  1151. IntToString(g_iTrailData[client][0][0][16], _sCookie, 4);
  1152. SetClientCookie(client, g_cLifeTime, _sCookie);
  1153. }
  1154. } else {
  1155. new var15;
  1156. if (g_iDefaultLifeTime == -1) {
  1157. var15 = GetRandomInt(0, g_iLifeTimes + -1);
  1158. } else {
  1159. var15 = g_iDefaultLifeTime;
  1160. }
  1161. g_iTrailData[client][0][0][16] = var15;
  1162. }
  1163. if (g_bConfigRender) {
  1164. GetClientCookie(client, g_cRenderMode, _sCookie, 4);
  1165. g_iTrailData[client][0][0][20] = StringToInt(_sCookie, 10);
  1166. if (g_iTrailData[client][0][0][20] >= g_iRenderModes) {
  1167. g_iTrailData[client][0][0][20] = g_iRenderModes + -1;
  1168. IntToString(g_iTrailData[client][0][0][20], _sCookie, 4);
  1169. SetClientCookie(client, g_cRenderMode, _sCookie);
  1170. }
  1171. } else {
  1172. new var16;
  1173. if (g_iDefaultRender == -1) {
  1174. var16 = GetRandomInt(0, 5);
  1175. } else {
  1176. var16 = g_iDefaultRender;
  1177. }
  1178. g_iTrailData[client][0][0][20] = var16;
  1179. }
  1180. if (g_bConfigMaterial) {
  1181. GetClientCookie(client, g_cMaterial, _sCookie, 4);
  1182. g_iTrailData[client][0][0][24] = StringToInt(_sCookie, 10);
  1183. if (g_iTrailData[client][0][0][24] >= g_iMaterials) {
  1184. g_iTrailData[client][0][0][24] = g_iMaterials + -1;
  1185. IntToString(g_iTrailData[client][0][0][24], _sCookie, 4);
  1186. SetClientCookie(client, g_cMaterial, _sCookie);
  1187. }
  1188. }
  1189. new var17;
  1190. if (g_iDefaultMaterial == -1) {
  1191. var17 = GetRandomInt(0, g_iMaterials + -1);
  1192. } else {
  1193. var17 = g_iDefaultMaterial;
  1194. }
  1195. g_iTrailData[client][0][0][24] = var17;
  1196. }
  1197. g_bLoaded[client] = 1;
  1198. return 0;
  1199. }
  1200.  
  1201.  
  1202. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1203. Parameter name: index */
  1204. function "Menu_Cookies" (number 39)
  1205. Menu_Trails(client)
  1206. {
  1207. decl String:_sBuffer[128];
  1208. new Handle:_hMenu = CreateMenu(MenuHandler:35, MenuAction:28);
  1209. Format(_sBuffer, 128, "%T", "Menu_Title_Main", client);
  1210. SetMenuTitle(_hMenu, _sBuffer);
  1211. SetMenuPagination(_hMenu, 0);
  1212. SetMenuExitButton(_hMenu, true);
  1213. if (g_bAppear[client][0][0]) {
  1214. Format(_sBuffer, 128, "%T", "Menu_Option_Disable", client);
  1215. } else {
  1216. Format(_sBuffer, 128, "%T", "Menu_Option_Enable", client);
  1217. }
  1218. AddMenuItem(_hMenu, "0", _sBuffer, 0);
  1219. new var1;
  1220. if (g_iNumColors > 1) {
  1221. Format(_sBuffer, 128, "%T", "Menu_Option_Color", client);
  1222. AddMenuItem(_hMenu, "1", _sBuffer, 0);
  1223. }
  1224. new var2;
  1225. if (g_iNumLayouts > 1) {
  1226. Format(_sBuffer, 128, "%T", "Menu_Option_Layout", client);
  1227. AddMenuItem(_hMenu, "2", _sBuffer, 0);
  1228. }
  1229. new var3;
  1230. if (g_iMaterials > 1) {
  1231. Format(_sBuffer, 128, "%T", "Menu_Option_Material", client);
  1232. AddMenuItem(_hMenu, "7", _sBuffer, 0);
  1233. }
  1234. new var4;
  1235. if (g_iStartWidths > 1) {
  1236. Format(_sBuffer, 128, "%T", "Menu_Option_Starting", client);
  1237. AddMenuItem(_hMenu, "3", _sBuffer, 0);
  1238. }
  1239. new var5;
  1240. if (g_iEndWidths > 1) {
  1241. Format(_sBuffer, 128, "%T", "Menu_Option_Ending", client);
  1242. AddMenuItem(_hMenu, "4", _sBuffer, 0);
  1243. }
  1244. new var6;
  1245. if (g_iLifeTimes > 1) {
  1246. Format(_sBuffer, 128, "%T", "Menu_Option_Life", client);
  1247. AddMenuItem(_hMenu, "5", _sBuffer, 0);
  1248. }
  1249. new var7;
  1250. if (g_iRenderModes > 1) {
  1251. Format(_sBuffer, 128, "%T", "Menu_Option_Render", client);
  1252. AddMenuItem(_hMenu, "6", _sBuffer, 0);
  1253. }
  1254. DisplayMenu(_hMenu, client, 0);
  1255. return 0;
  1256. }
  1257.  
  1258.  
  1259. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1260. Parameter name: index */
  1261. function "MenuHandler_MenuTrails" (number 41)
  1262. Menu_Layouts(client, index)
  1263. {
  1264. decl String:_sTemp[8];
  1265. decl String:_sBuffer[128];
  1266. new Handle:_hMenu = CreateMenu(MenuHandler:25, MenuAction:28);
  1267. Format(_sBuffer, 128, "%T", "Menu_Title_Layout", client);
  1268. SetMenuTitle(_hMenu, _sBuffer);
  1269. SetMenuExitButton(_hMenu, true);
  1270. SetMenuExitBackButton(_hMenu, true);
  1271. new _iTemp = GetUserFlagBits(client);
  1272. new i = 0;
  1273. while (i < g_iNumLayouts) {
  1274. new var1;
  1275. if (!g_iLayoutFlags[i][0][0]) {
  1276. IntToString(i, _sTemp, 8);
  1277. AddMenuItem(_hMenu, _sTemp, g_sLayoutNames[i][0][0], 0);
  1278. i++;
  1279. }
  1280. i++;
  1281. }
  1282. DisplayMenuAtItem(_hMenu, client, index, 0);
  1283. return 0;
  1284. }
  1285.  
  1286.  
  1287. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1288. Parameter name: index */
  1289. function "MenuHandler_MenuLayouts" (number 43)
  1290. Menu_Colors(client, index)
  1291. {
  1292. decl String:_sTemp[8];
  1293. decl String:_sBuffer[128];
  1294. new Handle:_hMenu = CreateMenu(MenuHandler:21, MenuAction:28);
  1295. Format(_sBuffer, 128, "%T", "Menu_Title_Color", client);
  1296. SetMenuTitle(_hMenu, _sBuffer);
  1297. SetMenuExitButton(_hMenu, true);
  1298. SetMenuExitBackButton(_hMenu, true);
  1299. new _iTemp = GetUserFlagBits(client);
  1300. new i = 0;
  1301. while (i < g_iNumColors) {
  1302. new var1;
  1303. if (!g_iColorFlags[i][0][0]) {
  1304. IntToString(i, _sTemp, 8);
  1305. AddMenuItem(_hMenu, _sTemp, g_sColorNames[i][0][0], 0);
  1306. i++;
  1307. }
  1308. i++;
  1309. }
  1310. DisplayMenuAtItem(_hMenu, client, index, 0);
  1311. return 0;
  1312. }
  1313.  
  1314.  
  1315. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1316. Parameter name: index */
  1317. function "MenuHandler_MenuColors" (number 45)
  1318. Menu_StartingWidths(client, index)
  1319. {
  1320. decl String:_sTemp[8];
  1321. decl String:_sBuffer[128];
  1322. new Handle:_hMenu = CreateMenu(MenuHandler:33, MenuAction:28);
  1323. Format(_sBuffer, 128, "%T", "Menu_Title_Starting", client);
  1324. SetMenuTitle(_hMenu, _sBuffer);
  1325. SetMenuExitButton(_hMenu, true);
  1326. SetMenuExitBackButton(_hMenu, true);
  1327. new i = 0;
  1328. while (i < g_iStartWidths) {
  1329. IntToString(i, _sTemp, 8);
  1330. AddMenuItem(_hMenu, _sTemp, g_sStartingWidths[i][0][0], 0);
  1331. i++;
  1332. }
  1333. DisplayMenuAtItem(_hMenu, client, index, 0);
  1334. return 0;
  1335. }
  1336.  
  1337.  
  1338. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1339. Parameter name: index */
  1340. function "MenuHandler_MenuStartingWidths" (number 47)
  1341. Menu_EndingWidths(client, index)
  1342. {
  1343. decl String:_sTemp[8];
  1344. decl String:_sBuffer[128];
  1345. new Handle:_hMenu = CreateMenu(MenuHandler:23, MenuAction:28);
  1346. Format(_sBuffer, 128, "%T", "Menu_Title_Ending", client);
  1347. SetMenuTitle(_hMenu, _sBuffer);
  1348. SetMenuExitButton(_hMenu, true);
  1349. SetMenuExitBackButton(_hMenu, true);
  1350. new i = 0;
  1351. while (i < g_iEndWidths) {
  1352. IntToString(i, _sTemp, 8);
  1353. AddMenuItem(_hMenu, _sTemp, g_sEndingWidths[i][0][0], 0);
  1354. i++;
  1355. }
  1356. DisplayMenuAtItem(_hMenu, client, index, 0);
  1357. return 0;
  1358. }
  1359.  
  1360.  
  1361. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1362. Parameter name: index */
  1363. function "MenuHandler_MenuEndingWidths" (number 49)
  1364. Menu_LifeTimes(client, index)
  1365. {
  1366. decl String:_sTemp[8];
  1367. decl String:_sBuffer[128];
  1368. new Handle:_hMenu = CreateMenu(MenuHandler:27, MenuAction:28);
  1369. Format(_sBuffer, 128, "%T", "Menu_Title_Life", client);
  1370. SetMenuTitle(_hMenu, _sBuffer);
  1371. SetMenuExitButton(_hMenu, true);
  1372. SetMenuExitBackButton(_hMenu, true);
  1373. new i = 0;
  1374. while (i < g_iLifeTimes) {
  1375. IntToString(i, _sTemp, 8);
  1376. AddMenuItem(_hMenu, _sTemp, g_sLifeTimes[i][0][0], 0);
  1377. i++;
  1378. }
  1379. DisplayMenuAtItem(_hMenu, client, index, 0);
  1380. return 0;
  1381. }
  1382.  
  1383.  
  1384. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1385. Parameter name: index */
  1386. function "MenuHandler_MenuLifeTimes" (number 51)
  1387. Menu_RenderModes(client, index)
  1388. {
  1389. decl String:_sDisplay[128];
  1390. decl String:_sTemp[8];
  1391. decl String:_sBuffer[128];
  1392. new Handle:_hMenu = CreateMenu(MenuHandler:31, MenuAction:28);
  1393. Format(_sBuffer, 128, "%T", "Menu_Title_Render", client);
  1394. SetMenuTitle(_hMenu, _sBuffer);
  1395. SetMenuExitButton(_hMenu, true);
  1396. SetMenuExitBackButton(_hMenu, true);
  1397. new i = 0;
  1398. while (i < 6) {
  1399. IntToString(i, _sTemp, 8);
  1400. Format(_sDisplay, 128, "Method %d", i);
  1401. AddMenuItem(_hMenu, _sTemp, _sDisplay, 0);
  1402. i++;
  1403. }
  1404. DisplayMenuAtItem(_hMenu, client, index, 0);
  1405. return 0;
  1406. }
  1407.  
  1408.  
  1409. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1410. Parameter name: index */
  1411. function "MenuHandler_MenuRenderModes" (number 53)
  1412. Menu_Materials(client, index)
  1413. {
  1414. decl String:_sTemp[8];
  1415. decl String:_sBuffer[128];
  1416. new Handle:_hMenu = CreateMenu(MenuHandler:29, MenuAction:28);
  1417. Format(_sBuffer, 128, "%T", "Menu_Title_Material", client);
  1418. SetMenuTitle(_hMenu, _sBuffer);
  1419. SetMenuExitButton(_hMenu, true);
  1420. SetMenuExitBackButton(_hMenu, true);
  1421. new _iTemp = GetUserFlagBits(client);
  1422. new i = 0;
  1423. while (i < g_iMaterials) {
  1424. new var1;
  1425. if (!g_iMaterialFlags[i][0][0]) {
  1426. IntToString(i, _sTemp, 8);
  1427. AddMenuItem(_hMenu, _sTemp, g_sMaterialNames[i][0][0], 0);
  1428. i++;
  1429. }
  1430. i++;
  1431. }
  1432. DisplayMenuAtItem(_hMenu, client, index, 0);
  1433. return 0;
  1434. }
  1435.  
  1436.  
  1437. /* ERROR! Index was out of range. Must be non-negative and less than the size of the collection.
  1438. Parameter name: index */
  1439. function "MenuHandler_MenuMaterials" (number 55)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement