HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <colorchat>
  4. #include <engine>
  5. #include <fakemeta>
  6. #include <fun>
  7. #include <cstrike>
  8.  
  9. #define UnlockBlock(%1) ( entity_set_int( %1, EV_INT_iuser1, 0 ) )
  10. #define UnsetEntMover(%1) ( entity_set_int( %1, EV_INT_iuser3, 0 ) )
  11. #define UnsetLastMover(%1) ( entity_set_int( %1, EV_INT_iuser4, 0 ) )
  12.  
  13. #define PLUGIN "BB Beepites Gatlo"
  14. #define VERSION "1.0"
  15. #define AUTHOR "IrOn"
  16.  
  17. #define ADMINLEVEL ADMIN_RCON
  18. #define MAXKOCKA 50
  19.  
  20. new kord1[MAXKOCKA+1][3];
  21. new kord2[MAXKOCKA+1][3];
  22. new osszeskocka=0;
  23.  
  24. new kockafajl[256];
  25.  
  26. public plugin_init() {
  27. register_plugin(PLUGIN, VERSION, AUTHOR)
  28.  
  29. register_clcmd("say /beepites", "BeepitesGatloMenu")
  30. register_touch("func_wall", "player", "FwdPlayerTouchWall");
  31. register_clcmd("say /noclipbe", "noclipbe")
  32. register_clcmd("say /noclipki", "noclipki")
  33. }
  34. public noclipbe(id)
  35. if(get_user_flags(id) & ADMINLEVEL)
  36. set_user_noclip(id,1)
  37. public noclipki(id)
  38. if(get_user_flags(id) & ADMINLEVEL)
  39. set_user_noclip(id,0)
  40.  
  41. public plugin_cfg()
  42. {
  43. get_configsdir(kockafajl,255)
  44. new mapname[51];
  45. get_mapname(mapname, 50)
  46. format(kockafajl,255,"%s/beepites/%s.ini",kockafajl, mapname)
  47. Kockafajlbeolvasas();
  48. }
  49.  
  50. public FwdPlayerTouchWall(ent, id) {
  51. if(is_user_alive(id))
  52. {
  53. static targetName[32];
  54. entity_get_string(ent, EV_SZ_targetname, targetName, charsmax(targetName));
  55. new porigin[3];
  56. get_user_origin(id, porigin, 0)
  57. if(equal(targetName, ""))
  58. {
  59. for(new i=1;i<=osszeskocka;i++)
  60. {
  61. if(kozott(porigin[0], kord1[i][0], kord2[i][0]) && kozott(porigin[1], kord1[i][1], kord2[i][1]) && kozott(porigin[2], kord1[i][2], kord2[i][2]))
  62. {
  63. UnlockBlock(ent)
  64. set_pev(ent,pev_rendermode,kRenderNormal)
  65. engfunc( EngFunc_SetOrigin, ent, Float:{ 0.0, 0.0, 0.0 } );
  66.  
  67. UnsetLastMover(ent);
  68. UnsetEntMover(ent);
  69. }
  70. }
  71. }
  72. }
  73. }
  74.  
  75. stock bool:kozott(value,this,this2)
  76. {
  77. if((this<this2&&value>=this&&value<=this2)||(this>this2&&value<=this&&value>=this2))
  78. return true
  79. return false
  80. }
  81.  
  82. public BeepitesGatloMenu(id)
  83. {
  84. if(get_user_flags(id) & ADMINLEVEL)
  85. {
  86. new menu = menu_create( "\rBeepites Gatlo Menu:", "BeepitesGatloMenu_handler" );
  87. menu_additem( menu, "\rUj kocka letrehozasa", "1", 0 );
  88. menu_additem( menu, "\rJelenlegi kockak(torleshez)", "2", 0 );
  89. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  90. menu_display(id, menu, 0);
  91. }
  92. else
  93. {
  94. ColorChat(id, RED, "Sajnalom, ezt a menut te nem nyithatod meg!")
  95. }
  96. }
  97.  
  98. public BeepitesGatloMenu_handler(id, menu, item)
  99. {
  100. if(item == MENU_EXIT)
  101. {
  102. menu_destroy(menu);
  103. return PLUGIN_HANDLED;
  104. }
  105.  
  106. new data[6], szName[64];
  107. new access, callback;
  108. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  109.  
  110. new key = str_to_num(data);
  111. switch(key)
  112. {
  113. case 1:
  114. {
  115. Ujkockamenu(id)
  116. }
  117. case 2:
  118. {
  119. Jelenlegikockakmenu(id)
  120. }
  121. }
  122. menu_destroy(menu);
  123. return PLUGIN_HANDLED;
  124. }
  125.  
  126. public Jelenlegikockakmenu(id)
  127. {
  128. if(get_user_flags(id) & ADMINLEVEL)
  129. {
  130. new szoveg[512], s[5];
  131. new menu = menu_create( "\rKocka torlese:", "Jelenlegikockakmenu_handler" );
  132. menu_additem( menu, "\wVissza a fomenube", "0", 0);
  133. for(new i=1;i<=osszeskocka;i++)
  134. {
  135. num_to_str(i, s, 4)
  136. format(szoveg, 511, "\r%d %d %d %d %d %d",kord1[i][0],kord1[i][1],kord1[i][2],kord2[i][0],kord2[i][1],kord2[i][2])
  137. menu_additem( menu, szoveg, s, 0 );
  138. }
  139. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  140. menu_display(id, menu, 0);
  141. }
  142. else
  143. {
  144. ColorChat(id, RED, "Sajnalom, ezt a menut te nem nyithatod meg!")
  145. }
  146. }
  147.  
  148. public Jelenlegikockakmenu_handler(id, menu, item)
  149. {
  150. if(item == MENU_EXIT)
  151. {
  152. menu_destroy(menu);
  153. return PLUGIN_HANDLED;
  154. }
  155.  
  156. new data[6], szName[64];
  157. new access, callback;
  158. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  159.  
  160. new key = str_to_num(data);
  161. if(key == 0)
  162. BeepitesGatloMenu(id)
  163. else
  164. Kockafajlmentes(key)
  165. menu_destroy(menu);
  166. return PLUGIN_HANDLED;
  167. }
  168.  
  169. public Ujkockamenu(id)
  170. {
  171. if(get_user_flags(id) & ADMINLEVEL)
  172. {
  173. if(osszeskocka >= MAXKOCKA)
  174. {
  175. ColorChat(id, RED, "Elerted a limitet!")
  176. BeepitesGatloMenu(id);
  177. }
  178. else
  179. {
  180. new szoveg[512];
  181. new menu = menu_create( "\rUj kocka letrehozasa:", "Ujkockamenu_handler" );
  182. format(szoveg, 511, "\r1. kordinata: %d %d %d",kord1[osszeskocka+1][0],kord1[osszeskocka+1][1],kord1[osszeskocka+1][2])
  183. menu_additem( menu, szoveg, "1", 0 );
  184. format(szoveg, 511, "\r2. kordinata: %d %d %d",kord2[osszeskocka+1][0],kord2[osszeskocka+1][1],kord2[osszeskocka+1][2])
  185. menu_additem( menu, szoveg, "2", 0 );
  186. menu_additem( menu, "\wMentes a fajlba", "3", 0 );
  187. menu_additem( menu, "\wVissza a fomenube", "4", 0);
  188. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  189. menu_display(id, menu, 0);
  190. }
  191. }
  192. else
  193. {
  194. ColorChat(id, RED, "Sajnalom, ezt a menut te nem nyithatod meg!")
  195. }
  196. }
  197.  
  198. public Ujkockamenu_handler(id, menu, item)
  199. {
  200. if(item == MENU_EXIT)
  201. {
  202. menu_destroy(menu);
  203. return PLUGIN_HANDLED;
  204. }
  205.  
  206. new data[6], szName[64];
  207. new access, callback;
  208. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  209.  
  210. new key = str_to_num(data);
  211. switch(key)
  212. {
  213. case 1:
  214. {
  215. get_user_origin(id, kord1[osszeskocka+1],0)
  216. }
  217. case 2:
  218. {
  219. get_user_origin(id, kord2[osszeskocka+1],0)
  220. }
  221. case 3:
  222. {
  223. if((kord1[osszeskocka+1][0] == 0 && kord1[osszeskocka+1][1] == 0 && kord1[osszeskocka+1][2] == 0) || (kord2[osszeskocka+1][0] == 0 && kord2[osszeskocka+1][1] == 0 && kord2[osszeskocka+1][2] == 0))
  224. {
  225. ColorChat(id, RED, "Az egyik kordinata meg nincs megadva!")
  226. }
  227. else
  228. {
  229. osszeskocka++;
  230. Kockafajlmentes(0);
  231. ColorChat(id, RED, "Hozzaadva!")
  232. }
  233. }
  234. }
  235. Ujkockamenu(id)
  236. if(key == 4)
  237. BeepitesGatloMenu(id)
  238. return PLUGIN_HANDLED;
  239. }
  240.  
  241. public Kockafajlmentes(torles)
  242. {
  243. new file = fopen(kockafajl,"w+")
  244. if(file)
  245. {
  246. for(new i = 1;i<=osszeskocka;i++)
  247. {
  248. if(i!=torles)
  249. {
  250. fprintf(file, "%d %d %d %d %d %d^n",kord1[i][0],kord1[i][1],kord1[i][2],kord2[i][0],kord2[i][1],kord2[i][2])
  251. }
  252. }
  253. fclose(file);
  254.  
  255. if(torles)
  256. {
  257. kord1[osszeskocka][0] = 0;
  258. kord1[osszeskocka][1] = 0;
  259. kord1[osszeskocka][2] = 0;
  260. kord2[osszeskocka][0] = 0;
  261. kord2[osszeskocka][1] = 0;
  262. kord2[osszeskocka][2] = 0;
  263. osszeskocka--;
  264. }
  265.  
  266. Kockafajlbeolvasas();
  267. }
  268. }
  269.  
  270. public Kockafajlbeolvasas()
  271. {
  272. new file = fopen(kockafajl,"r")
  273. if(file)
  274. {
  275. osszeskocka=0;
  276. new beolvasott[512];
  277. new parsedkord[6][32];
  278. while(fgets(file,beolvasott,511))
  279. {
  280. osszeskocka++;
  281. parse(beolvasott,parsedkord[0],31,parsedkord[1],31,parsedkord[2],31,parsedkord[3],31,parsedkord[4],31,parsedkord[5],31)
  282. kord1[osszeskocka][0] = str_to_num(parsedkord[0])
  283. kord1[osszeskocka][1] = str_to_num(parsedkord[1])
  284. kord1[osszeskocka][2] = str_to_num(parsedkord[2])
  285. kord2[osszeskocka][0] = str_to_num(parsedkord[3])
  286. kord2[osszeskocka][1] = str_to_num(parsedkord[4])
  287. kord2[osszeskocka][2] = str_to_num(parsedkord[5])
  288. }
  289. fclose(file);
  290. }
  291. }
  292.