HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <hamsandwich>
  4. #include <fakemeta>
  5. #include <fakemeta_util>
  6. #include <engine>
  7.  
  8. #define PLUGIN "Dynamic sky"
  9. #define VERSION "1.0"
  10. #define AUTHOR "Sneaky.amxx | GlobalModders.net"
  11.  
  12. new const g_szSky[] = "models/sky.mdl";
  13. new g_iSkyEnt;
  14. new g_fwCheckVisibility, g_fwAddToFullPack;
  15.  
  16. //new map_light;
  17.  
  18. public plugin_init()
  19. {
  20. register_plugin(PLUGIN, VERSION, AUTHOR);
  21.  
  22. //fix 1
  23. set_cvar_num("sv_zmax", 50000)
  24. //fix 2
  25. Set_lights();
  26.  
  27. g_fwCheckVisibility = register_forward(FM_CheckVisibility, "fw_CheckVisibility");
  28. g_fwAddToFullPack = register_forward(FM_AddToFullPack, "fw_addToFullPackPost", 1);
  29.  
  30. if (!unloadlist())
  31. g_iSkyEnt = CreateSky();
  32. else
  33. {
  34. unregister_forward(FM_CheckVisibility, g_fwCheckVisibility);
  35. unregister_forward(FM_AddToFullPack, g_fwAddToFullPack);
  36. g_fwCheckVisibility = -1;
  37. g_fwAddToFullPack = -1;
  38. g_iSkyEnt = 0;
  39. }
  40. }
  41. //fix 2
  42. public Set_lights()
  43. {
  44. new light[2];
  45. set_lights("z")
  46. }
  47.  
  48. public unloadlist()
  49. {
  50. new bool: ismap;
  51. new customdir[64], mapfile[128], mapname[32]
  52.  
  53. get_customdir(customdir, charsmax(customdir));
  54. format(mapfile, charsmax(mapfile), "%s/unloadmaps.ini", customdir);
  55.  
  56. get_mapname(mapname, charsmax(mapname));
  57. strtolower(mapname);
  58.  
  59. ismap = false;
  60.  
  61. if (file_exists(mapfile))
  62. {
  63. new File = fopen(mapfile, "r")
  64. new text[256]
  65. new tempMap[32]
  66.  
  67. while(File && !feof(File))
  68. {
  69. fgets(File, text, charsmax(text))
  70.  
  71. if (text[0] == ';')
  72. continue
  73.  
  74. if (parse(text, tempMap, charsmax(tempMap)) < 1)
  75. continue
  76.  
  77. if(!is_map_valid(tempMap))
  78. continue
  79.  
  80. trim(tempMap)
  81.  
  82. strtolower(tempMap);
  83.  
  84. if (equal(mapname, tempMap))
  85. {
  86. ismap = true;
  87. break;
  88. }
  89. }
  90.  
  91. if (File)
  92. fclose(File)
  93. }
  94. else
  95. {
  96. write_file(mapfile, "; de_dust", -1);
  97. write_file(mapfile, "; de_mirage", -1);
  98. write_file(mapfile, "; de_dust2", -1);
  99. }
  100.  
  101. return ismap;
  102. }
  103.  
  104. public fw_CheckVisibility(iEnt, pset)
  105. {
  106. if (g_iSkyEnt)
  107. {
  108. if (iEnt == g_iSkyEnt)
  109. {
  110. forward_return(FMV_CELL, 1);
  111. return FMRES_SUPERCEDE;
  112. }
  113. }
  114. return FMRES_IGNORED;
  115. }
  116.  
  117. public fw_addToFullPackPost(es, e, ent, host, hostflags, player, pSet)
  118. {
  119. if (g_iSkyEnt)
  120. {
  121. if (ent == g_iSkyEnt)
  122. {
  123. new Float: fOrigin[3];
  124. pev(host, pev_origin, fOrigin);
  125. fOrigin[2] -= 1000.0;
  126. set_es(es, ES_Origin, fOrigin);
  127. }
  128. }
  129. }
  130.  
  131. public plugin_precache()
  132. {
  133. engfunc(EngFunc_PrecacheModel, g_szSky);
  134. }
  135.  
  136. public CreateSky()
  137. {
  138. set_cvar_num("sv_skycolor_r", 0);
  139. set_cvar_num("sv_skycolor_g", 0);
  140. set_cvar_num("sv_skycolor_b", 0);
  141. new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
  142. set_pev(iEnt, pev_classname, "dynamic_sky");
  143. set_pev(iEnt, pev_solid, SOLID_NOT);
  144. set_pev(iEnt, pev_sequence, 0);
  145. set_pev(iEnt, pev_framerate, 0.5);
  146. set_pev(iEnt, pev_effects, EF_BRIGHTLIGHT | EF_DIMLIGHT);
  147. set_pev(iEnt, pev_light_level, 10.0);
  148. set_pev(iEnt, pev_flags, FL_PARTIALGROUND);
  149. engfunc(EngFunc_SetModel, iEnt, g_szSky);
  150. engfunc(EngFunc_SetOrigin, iEnt, Float:{0.0, 0.0, 0.0});
  151. return iEnt;
  152. }