MegastoRM

pipe_bomb

Oct 11th, 2012
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.33 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4. #include <engine>
  5. #include <zombieplague>
  6. #include <fun>
  7. #include <cstrike>
  8.  
  9. #define VERSION "0.4b"
  10.  
  11. const m_pPlayer = 41;
  12. new const NADE_TYPE_PIPE = 4327;
  13. new const NADE_DURATION_PIPE = pev_flSwimTime;
  14. new const g_trailspr[] ="sprites/laserbeam.spr";
  15. new const g_ringspr[] = "sprites/shockwave.spr";
  16. new const g_firespr[] = "sprites/zerogxplode.spr";
  17. new const g_sound[] = "items/pipe_beep.wav";
  18. new const g_vmodel[] = "models/zombie_plague/v_pipe.mdl";
  19. new const g_pmodel[] = "models/zombie_plague/p_pipe.mdl";
  20. new const g_wmodel[] = "models/zombie_plague/w_pipe.mdl";
  21. new const g_vflare[] = "models/zombie_plague/v_grenade_flare.mdl"; // type here your custom flare model to prevent bug. now uses default model
  22. new const g_extra_pipe[] = { "Pipe Bomb" };
  23. new const g_extra_shield[] = { "Mental Shield" };
  24. new cvar_duration, cvar_radius, cvar_enabled, cvar_sound, cvar_cost, cvar_mode, cvar_hud, cvar_damage, cvar_speed, cvar_shake, cvar_Scost, cvar_Senabled, cvar_Shud, cvar_extraap; // some cvars
  25. new g_msgsync, g_trail, g_ring, g_fire, g_score, g_death, g_shake, g_pipe, bool: g_has_pipe[33], bool: g_has_shield[33], g_mshield; // some vars
  26.  
  27. public plugin_init() {
  28. register_plugin("[ZP] Extra: Pipe Bomb", VERSION, "4eRT");
  29. register_forward(FM_SetModel,"fw_SetModel", 1);
  30. register_dictionary("zp_extra_pipe.txt");
  31. RegisterHam(Ham_Think, "grenade", "fw_ThinkGren");
  32. RegisterHam(Ham_Spawn, "player", "fw_Spawn");
  33. RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "fw_smDeploy", 1);
  34.  
  35. // Cvars
  36. cvar_duration = register_cvar("zp_pipe_duration", "6");
  37. cvar_radius = register_cvar ( "zp_pipe_radius", "300");
  38. cvar_enabled = register_cvar("zp_pipe_enabled", "1");
  39. cvar_cost = register_cvar("zp_pipe_cost", "20");
  40. cvar_mode = register_cvar("zp_pipe_mode", "1");
  41. cvar_sound = register_cvar("zp_pipe_sound", "1");
  42. cvar_hud = register_cvar("zp_pipe_hud", "1");
  43. cvar_damage = register_cvar("zp_pipe_damage", "1100");
  44. cvar_speed = register_cvar("zp_pipe_speed", "90.0");
  45. cvar_shake = register_cvar("zp_pipe_shake", "1");
  46. cvar_extraap = register_cvar("zp_pipe_ap", "0");
  47. cvar_Scost = register_cvar("zp_mshield_cost", "7");
  48. cvar_Senabled = register_cvar("zp_mshield_enabled", "1");
  49. cvar_Shud = register_cvar("zp_mshield_hud", "1");
  50.  
  51. // Registering extra items
  52. if(get_pcvar_num(cvar_enabled))
  53. g_pipe = zp_register_extra_item(g_extra_pipe, get_pcvar_num(cvar_cost), ZP_TEAM_HUMAN);
  54.  
  55. if(get_pcvar_num(cvar_Senabled))
  56. g_mshield = zp_register_extra_item(g_extra_shield, get_pcvar_num(cvar_Scost), ZP_TEAM_ZOMBIE);
  57.  
  58. g_msgsync = CreateHudSyncObj();
  59. g_score = get_user_msgid("ScoreInfo");
  60. g_death = get_user_msgid("DeathMsg");
  61. g_shake = get_user_msgid("ScreenShake");
  62. }
  63.  
  64. public plugin_precache() {
  65. precache_model(g_vmodel);
  66. precache_model(g_pmodel);
  67. precache_model(g_wmodel);
  68. precache_model(g_vflare);
  69. precache_sound(g_sound);
  70. g_fire = precache_model(g_firespr);
  71. g_trail = precache_model(g_trailspr);
  72. g_ring = precache_model(g_ringspr);
  73. }
  74.  
  75. public replace_models(id)
  76. {
  77. if(get_user_weapon(id) == CSW_SMOKEGRENADE)
  78. {
  79. set_pev(id, pev_viewmodel2, g_vmodel);
  80. set_pev(id, pev_weaponmodel2, g_pmodel);
  81. }
  82. }
  83.  
  84. public replace_models2(id)
  85. if(get_user_weapon(id) == CSW_SMOKEGRENADE)
  86. set_pev(id, pev_viewmodel2, g_vflare);
  87.  
  88. public fw_smDeploy(const iEntity)
  89. {
  90. if(pev_valid(iEntity) != 2)
  91. return HAM_IGNORED;
  92.  
  93. new id = get_pdata_cbase(iEntity, m_pPlayer, 4);
  94.  
  95. if(g_has_pipe[id] && !zp_get_user_zombie(id) && is_user_alive(id))
  96. {
  97. set_pev(id, pev_viewmodel2, g_vmodel);
  98. set_pev(id, pev_weaponmodel2, g_pmodel);
  99. }
  100.  
  101. return HAM_IGNORED;
  102. }
  103.  
  104. public zp_extra_item_selected(id, item)
  105. {
  106. if(item == g_pipe)
  107. {
  108. if(!get_pcvar_num(cvar_enabled))
  109. {
  110. client_print(id, print_chat, "[ZP] %L", id, "DISABLED");
  111. return ZP_PLUGIN_HANDLED;
  112. }
  113.  
  114. if(g_has_pipe[id])
  115. {
  116. if(get_pcvar_num(cvar_hud) == 1)
  117. {
  118. set_hudmessage(255, 0, 0, -1.0, 0.55, 0, 0.0, 2.0, 2.0, 1.0, -1);
  119. ShowSyncHudMsg(id, g_msgsync, "%L", id, "ALREADY");
  120. }
  121. else
  122. client_print(id, print_chat, "[ZP] %L", id, "ALREADY");
  123.  
  124. return ZP_PLUGIN_HANDLED;
  125. }
  126.  
  127. g_has_pipe[id] = true;
  128. new was = cs_get_user_bpammo(id, CSW_SMOKEGRENADE);
  129.  
  130. if(was >= 1)
  131. {
  132. cs_set_user_bpammo(id, CSW_SMOKEGRENADE, was + 1);
  133. }
  134. else
  135. {
  136. give_item(id, "weapon_smokegrenade");
  137. client_print(id, print_chat, "Kupili ste Pipe bombu, da bi je iskoristili uzmite FLARE bombu!")
  138. }
  139.  
  140. replace_models(id);
  141.  
  142. if(get_pcvar_num(cvar_hud) == 1)
  143. {
  144. new msg[32], hud = random_num(0, 1);
  145.  
  146. if(hud == 0)
  147. formatex(msg, 31, "%L", id, "DANGEROUS");
  148. else
  149. formatex(msg, 31, "%L", id, "GO_EXPLOSIVE");
  150.  
  151. set_hudmessage(255, 0, 0, -1.0, 0.55, 0, 0.0, 3.0, 2.0, 1.0, -1);
  152. ShowSyncHudMsg(id, g_msgsync, "%s", msg);
  153. }
  154. }
  155.  
  156. if(item == g_mshield)
  157. {
  158. if(!get_pcvar_num(cvar_Senabled))
  159. {
  160. client_print(id, print_chat, "[ZP] %L", id, "MS_DISABLED");
  161. return ZP_PLUGIN_HANDLED;
  162. }
  163.  
  164. if(g_has_shield[id])
  165. {
  166. if(get_pcvar_num(cvar_Shud))
  167. {
  168. set_hudmessage(255, 0, 0, -1.0, 0.55, 0, 0.0, 2.0, 2.0, 1.0, -1);
  169. ShowSyncHudMsg(id, g_msgsync, "%L", id, "ALREADY");
  170. }
  171. else
  172. client_print(id, print_chat, "[ZP] %L", id, "ALREADY");
  173.  
  174. return ZP_PLUGIN_HANDLED;
  175. }
  176.  
  177. g_has_shield[id] = true;
  178.  
  179. if(get_pcvar_num(cvar_Shud))
  180. {
  181. set_hudmessage(255, 0, 0, -1.0, 0.55, 0, 0.0, 3.0, 2.0, 1.0, -1);
  182. ShowSyncHudMsg(id, g_msgsync, "%L", id, "PROTECTED");
  183. }
  184. else
  185. client_print(id, print_chat, "[ZP] %L", id, "PROTECTED");
  186. }
  187.  
  188. return PLUGIN_CONTINUE;
  189. }
  190.  
  191. public zp_user_infected_post(id)
  192. {
  193. g_has_pipe[id] = false;
  194. g_has_shield[id] = false;
  195. }
  196.  
  197. public fw_Spawn(id)
  198. {
  199. g_has_pipe[id] = false;
  200. g_has_shield[id] = false;
  201. }
  202.  
  203. public fw_SetModel(entity, const model[]) // Set smokegrenade pipes effects and type
  204. {
  205. static Float:dmgtime, owner;
  206. pev(entity, pev_dmgtime, dmgtime);
  207. owner = pev(entity, pev_owner);
  208.  
  209. if(!pev_valid(entity) || dmgtime == 0.0)
  210. return FMRES_IGNORED;
  211.  
  212. if (model[9] == 's' && model[10] == 'm' && g_has_pipe[owner])
  213. {
  214. g_has_pipe[owner] = false;
  215. entity_set_model(entity, g_wmodel);
  216. replace_models2(owner);
  217.  
  218. set_rendering(entity, kRenderFxGlowShell, 128, 0, 0, kRenderNormal, 16);
  219.  
  220. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  221. write_byte(TE_BEAMFOLLOW) // TE id
  222. write_short(entity) // entity
  223. write_short(g_trail) // sprite
  224. write_byte(10) // life
  225. write_byte(10) // width
  226. write_byte(128) // r
  227. write_byte(0) // g
  228. write_byte(0) // b
  229. write_byte(255) // brightness
  230. message_end()
  231.  
  232. set_pev(entity, pev_flTimeStepSound, NADE_TYPE_PIPE);
  233.  
  234. return FMRES_SUPERCEDE;
  235. }
  236.  
  237. return FMRES_IGNORED;
  238. }
  239.  
  240. public fw_ThinkGren(entity) // Grenade think event
  241. {
  242. if (!pev_valid(entity))
  243. return HAM_IGNORED;
  244.  
  245. static Float:dmgtime, Float: current_time, attacker;
  246. pev(entity, pev_dmgtime, dmgtime);
  247. current_time = get_gametime();
  248. attacker = pev(entity, pev_owner);
  249.  
  250. if(dmgtime > current_time)
  251. return HAM_IGNORED;
  252.  
  253. if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_PIPE)
  254. {
  255. static duration;
  256. duration = pev(entity, NADE_DURATION_PIPE);
  257.  
  258. if (duration > 0)
  259. {
  260. new Float:originF[3]
  261. pev(entity, pev_origin, originF);
  262.  
  263. if (duration == 1)
  264. {
  265. remove_task(entity);
  266. effect(originF);
  267.  
  268. if (get_pcvar_num(cvar_mode) == 1)
  269. kill(originF, attacker);
  270.  
  271. engfunc(EngFunc_RemoveEntity, entity);
  272. return HAM_SUPERCEDE;
  273. }
  274.  
  275. light(originF, duration);
  276. set_task(0.1, "hook", entity, _, _, "b");
  277.  
  278. if(get_pcvar_num(cvar_mode) == 2)
  279. set_task(1.0, "hurt", entity, _, _, "b");
  280.  
  281. if(get_pcvar_num(cvar_sound))
  282. {
  283. if(duration == 2)
  284. set_task(0.1, "beep", entity, _, _, "b");
  285. else
  286. emit_sound(entity, CHAN_WEAPON, g_sound, 1.0, ATTN_NORM, 0, PITCH_HIGH);
  287. }
  288.  
  289. set_pev(entity, NADE_DURATION_PIPE, --duration);
  290. set_pev(entity, pev_dmgtime, current_time + 3.0);
  291. } else if ((pev(entity, pev_flags) & FL_ONGROUND) && get_speed(entity) < 10)
  292. {
  293. set_pev(entity, NADE_DURATION_PIPE, 1 + get_pcvar_num(cvar_duration)/3);
  294. set_pev(entity, pev_dmgtime, current_time + 0.1);
  295. } else
  296. set_pev(entity, pev_dmgtime, current_time + 0.5);
  297. }
  298.  
  299. return HAM_IGNORED;
  300. }
  301.  
  302. public beep(entity) // Plays loop beep sound before explosion
  303. {
  304. //Bugfix
  305. if (!pev_valid(entity))
  306. {
  307. remove_task(entity);
  308. return;
  309. }
  310.  
  311. emit_sound(entity, CHAN_WEAPON, g_sound, 1.0, ATTN_NORM, 0, PITCH_HIGH);
  312. }
  313.  
  314. public hook(entity) // Magnet func. Hooks zombies to nade
  315. {
  316. //Bugfix
  317. if (!pev_valid(entity))
  318. {
  319. remove_task(entity);
  320. return;
  321. }
  322.  
  323. static Float:originF[3], Float:radius, victim = -1;
  324. radius = get_pcvar_float(cvar_radius);
  325. pev(entity, pev_origin, originF);
  326.  
  327. while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, radius)) != 0)
  328. {
  329. if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_has_shield[victim])
  330. continue;
  331.  
  332. new Float:fl_Velocity[3];
  333. new vicOrigin[3], originN[3];
  334.  
  335. get_user_origin(victim, vicOrigin);
  336. originN[0] = floatround(originF[0]);
  337. originN[1] = floatround(originF[1]);
  338. originN[2] = floatround(originF[2]);
  339.  
  340. new distance = get_distance(originN, vicOrigin);
  341.  
  342. if (distance > 1)
  343. {
  344. new Float:fl_Time = distance / get_pcvar_float(cvar_speed);
  345.  
  346. fl_Velocity[0] = (originN[0] - vicOrigin[0]) / fl_Time;
  347. fl_Velocity[1] = (originN[1] - vicOrigin[1]) / fl_Time;
  348. fl_Velocity[2] = (originN[2] - vicOrigin[2]) / fl_Time;
  349. } else
  350. {
  351. fl_Velocity[0] = 0.0
  352. fl_Velocity[1] = 0.0
  353. fl_Velocity[2] = 0.0
  354. }
  355.  
  356. entity_set_vector(victim, EV_VEC_velocity, fl_Velocity);
  357.  
  358. if(get_pcvar_num(cvar_shake))
  359. {
  360. message_begin(MSG_ONE_UNRELIABLE, g_shake, _, victim)
  361. write_short(1<<14) // amplitude
  362. write_short(1<<14) // duration
  363. write_short(1<<14) // frequency
  364. message_end()
  365. }
  366. }
  367. }
  368.  
  369. public hurt(entity) // Hurts zombies if mode = 2
  370. {
  371. //Bugfix
  372. if (!pev_valid(entity))
  373. {
  374. remove_task(entity);
  375. return;
  376. }
  377.  
  378. static Float:originF[3], Float:radius, victim = -1;
  379. radius = get_pcvar_float(cvar_radius)/2.0;
  380. pev(entity, pev_origin, originF);
  381.  
  382. while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, radius)) != 0)
  383. {
  384. if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_has_shield[victim])
  385. continue;
  386.  
  387. new Float:dam = get_pcvar_float(cvar_damage);
  388.  
  389. if(get_user_health(victim) - get_pcvar_float(cvar_damage) > 0)
  390. fakedamage(victim, "Pipe Bomb", dam, 256);
  391. }
  392. }
  393.  
  394. public kill(const Float:originF[3], attacker) // Kills zombies in radius / 2 if mode = 1
  395. {
  396. static Float:radius, victim = -1;
  397. radius = get_pcvar_float(cvar_radius) / 2.0;
  398.  
  399. while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, radius)) != 0)
  400. {
  401. if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_has_shield[victim])
  402. continue;
  403.  
  404. new Float:dam = get_pcvar_float(cvar_damage);
  405. set_msg_block(g_death, BLOCK_SET);
  406. fakedamage(victim, "Pipe Bomb", dam, 256);
  407. set_msg_block(g_death, BLOCK_NOT);
  408.  
  409. if(get_user_health(victim) <= 0)
  410. {
  411. SendDeathMsg(attacker, victim);
  412.  
  413. if(victim != attacker && !zp_get_user_zombie(attacker))
  414. UpdateFrags(attacker, 1, 1);
  415. else
  416. UpdateFrags(attacker, -1, 1);
  417. }
  418. }
  419. }
  420.  
  421. public light(const Float:originF[3], duration) // Blast ring and small red light around nade from zombie_plague40.sma. Great thx, MeRcyLeZZ!!! ;)
  422. {
  423. // Lighting
  424. engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, originF, 0);
  425. write_byte(TE_DLIGHT); // TE id
  426. engfunc(EngFunc_WriteCoord, originF[0]); // x
  427. engfunc(EngFunc_WriteCoord, originF[1]); // y
  428. engfunc(EngFunc_WriteCoord, originF[2]); // z
  429. write_byte(5); // radius
  430. write_byte(128); // r
  431. write_byte(0); // g
  432. write_byte(0); // b
  433. write_byte(51); //life
  434. write_byte((duration < 2) ? 3 : 0); //decay rate
  435. message_end();
  436.  
  437. // Smallest ring
  438. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
  439. write_byte(TE_BEAMCYLINDER) // TE id
  440. engfunc(EngFunc_WriteCoord, originF[0]) // x
  441. engfunc(EngFunc_WriteCoord, originF[1]) // y
  442. engfunc(EngFunc_WriteCoord, originF[2]) // z
  443. engfunc(EngFunc_WriteCoord, originF[0]) // x axis
  444. engfunc(EngFunc_WriteCoord, originF[1]) // y axis
  445. engfunc(EngFunc_WriteCoord, originF[2]+385.0) // z axis
  446. write_short(g_ring) // sprite
  447. write_byte(0) // startframe
  448. write_byte(0) // framerate
  449. write_byte(4) // life
  450. write_byte(60) // width
  451. write_byte(0) // noise
  452. write_byte(128) // red
  453. write_byte(0) // green
  454. write_byte(0) // blue
  455. write_byte(200) // brightness
  456. write_byte(0) // speed
  457. message_end()
  458.  
  459. // Medium ring
  460. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
  461. write_byte(TE_BEAMCYLINDER) // TE id
  462. engfunc(EngFunc_WriteCoord, originF[0]) // x
  463. engfunc(EngFunc_WriteCoord, originF[1]) // y
  464. engfunc(EngFunc_WriteCoord, originF[2]) // z
  465. engfunc(EngFunc_WriteCoord, originF[0]) // x axis
  466. engfunc(EngFunc_WriteCoord, originF[1]) // y axis
  467. engfunc(EngFunc_WriteCoord, originF[2]+470.0) // z axis
  468. write_short(g_ring) // sprite
  469. write_byte(0) // startframe
  470. write_byte(0) // framerate
  471. write_byte(4) // life
  472. write_byte(60) // width
  473. write_byte(0) // noise
  474. write_byte(128) // red
  475. write_byte(0) // green
  476. write_byte(0) // blue
  477. write_byte(200) // brightness
  478. write_byte(0) // speed
  479. message_end()
  480.  
  481. // Largest ring
  482. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
  483. write_byte(TE_BEAMCYLINDER) // TE id
  484. engfunc(EngFunc_WriteCoord, originF[0]) // x
  485. engfunc(EngFunc_WriteCoord, originF[1]) // y
  486. engfunc(EngFunc_WriteCoord, originF[2]) // z
  487. engfunc(EngFunc_WriteCoord, originF[0]) // x axis
  488. engfunc(EngFunc_WriteCoord, originF[1]) // y axis
  489. engfunc(EngFunc_WriteCoord, originF[2]+555.0) // z axis
  490. write_short(g_ring) // sprite
  491. write_byte(0) // startframe
  492. write_byte(0) // framerate
  493. write_byte(4) // life
  494. write_byte(60) // width
  495. write_byte(0) // noise
  496. write_byte(128) // red
  497. write_byte(0) // green
  498. write_byte(0) // blue
  499. write_byte(200) // brightness
  500. write_byte(0) // speed
  501. message_end()
  502. }
  503.  
  504. public effect(const Float:originF[3]) // Explosion effect
  505. {
  506. // Largest ring
  507. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
  508. write_byte(TE_BEAMCYLINDER) // TE id
  509. engfunc(EngFunc_WriteCoord, originF[0]) // x
  510. engfunc(EngFunc_WriteCoord, originF[1]) // y
  511. engfunc(EngFunc_WriteCoord, originF[2]) // z
  512. engfunc(EngFunc_WriteCoord, originF[0]) // x axis
  513. engfunc(EngFunc_WriteCoord, originF[1]) // y axis
  514. engfunc(EngFunc_WriteCoord, originF[2]+555.0) // z axis
  515. write_short(g_ring) // sprite
  516. write_byte(0) // startframe
  517. write_byte(0) // framerate
  518. write_byte(4) // life
  519. write_byte(60) // width
  520. write_byte(0) // noise
  521. write_byte(128) // red
  522. write_byte(0) // green
  523. write_byte(0) // blue
  524. write_byte(200) // brightness
  525. write_byte(0) // speed
  526. message_end()
  527.  
  528. // Explosion sprite
  529. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
  530. write_byte(TE_EXPLOSION)
  531. engfunc(EngFunc_WriteCoord, originF[0])
  532. engfunc(EngFunc_WriteCoord, originF[1])
  533. engfunc(EngFunc_WriteCoord, originF[2])
  534. write_short(g_fire) //sprite index
  535. write_byte(25) // scale in 0.1's
  536. write_byte(10) // framerate
  537. write_byte(0) // flags
  538. message_end()
  539. }
  540.  
  541. UpdateFrags(attacker, frags, scoreboard) // Updates attacker frags
  542. {
  543. // Set attacker frags
  544. set_pev(attacker, pev_frags, float(pev(attacker, pev_frags) + frags))
  545.  
  546. if(get_pcvar_num(cvar_extraap) > 0)
  547. zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_extraap));
  548.  
  549. // Update scoreboard with attacker and victim info
  550. if (scoreboard)
  551. {
  552. message_begin(MSG_BROADCAST, g_score)
  553. write_byte(attacker) // id
  554. write_short(pev(attacker, pev_frags)) // frags
  555. write_short(get_user_deaths(attacker)) // deaths
  556. write_short(0) // class?
  557. write_short(get_user_team(attacker)) // team
  558. message_end()
  559. }
  560. }
  561.  
  562. SendDeathMsg(attacker, victim) // Sends death message
  563. {
  564. message_begin(MSG_BROADCAST, g_death)
  565. write_byte(attacker) // killer
  566. write_byte(victim) // victim
  567. write_byte(0) // headshot flag
  568. write_string("Pipe Bomb") // killer's weapon
  569. message_end()
  570. }
  571. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  572. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
  573. */
Advertisement
Add Comment
Please, Sign In to add comment