hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Google [Bot] 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  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Több kés zóna mint 5.
HozzászólásElküldve: 2014.01.22. 17:26 
Offline
Tag

Csatlakozott: 2013.11.08. 14:56
Hozzászólások: 52
Megköszönt másnak: 50 alkalommal
Sziasztok!
Én át írtam a max kés zónák számát 5-ről 40-re , utána át konvertáltam .amxx-re , utána be raktam a szerverre , de amikor a zóna létrehozására megyek akkor semmi sem történik... be zárja az egészet... ha az összes zóna törlésére megyek akkor is csak be zárja... Szóval valaki meg tudná csinálni azt , hogy 5-ről át írja nekem 40-re a max kés zónák számát , és ne záródjon be , hanem ugyan úgy működjön mint amikor maximum 5 zónát lehetett létre hozni!
#define MAX_ZONES 5 <---- ezt állítottam 40-re
A rossz fogalmazásért bocsánat!


SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <engine>
  5.  
  6. #define MAX_ZONES 5
  7. #define TASK_ID 1234
  8.  
  9. #define OriginX 0
  10. #define OriginY 1
  11. #define OriginZ 2
  12.  
  13. new cvar_delay
  14. new cvar_kzsize
  15. new cvar_kzsizez
  16. new cvar_height
  17. new cvar_nadepro
  18.  
  19. new g_ConfigsDir[64]
  20. new g_KnifeZoneDir[64]
  21.  
  22. new Float:g_fDelay[33]
  23. new g_ProtectionTime[33]
  24. new bool:g_InTheZone[33]
  25.  
  26. new zoneID
  27. new sprite_zbeam
  28. new g_KnifeZoneOrgins[MAX_ZONES][3]
  29. new bool:g_KnifeZoneLogos[MAX_ZONES]
  30.  
  31.  
  32.  
  33. static const PLUGIN_NAME[] = "Knife Zone"
  34. static const PLUGIN_AUTHOR[] = "Cheap_Suit"
  35. static const PLUGIN_VERSION[] = "1.6"
  36.  
  37. public plugin_init()
  38. {
  39. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  40. register_cvar(PLUGIN_NAME, PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER)
  41. register_clcmd("amx_kzmenu", "open_KnifeZone", ADMIN_LEVEL_A, "Knife Zone Menu")
  42. register_menucmd(register_menuid("Knife Zone Menu"), 1023, "action_KnifeZone")
  43.  
  44. cvar_delay = register_cvar("amx_kzdelay", "0") //menyi ido alat legyel halhatatlan
  45. cvar_height = register_cvar("amx_kzheight", "140") //zona Magasaga
  46. cvar_kzsize = register_cvar("amx_kzsize", "140") // Zona NAgysaga
  47. cvar_kzsizez = register_cvar("amx_kzsizez", "50") //Zona Szelesege
  48. cvar_nadepro = register_cvar("amx_kznadepro", "1") // Ezt Nemtudom :S
  49.  
  50. register_forward(FM_TraceLine, "fwd_TraceLine")
  51. register_directory()
  52. }
  53.  
  54. public plugin_precache()
  55. {
  56. precache_model("sprites/knifezone.spr")
  57. sprite_zbeam = precache_model("sprites/zbeam4.spr")
  58. }
  59.  
  60. register_directory()
  61. {
  62. get_configsdir(g_ConfigsDir, 63)
  63. format(g_KnifeZoneDir, 63, "%s/knifezone", g_ConfigsDir)
  64.  
  65. if(!dir_exists(g_KnifeZoneDir)) mkdir(g_KnifeZoneDir)
  66.  
  67.  
  68. new curMap[32]
  69. get_mapname(curMap, 31)
  70. load_origins(curMap)
  71.  
  72. set_task(1.0, "task_visuals", TASK_ID, _, _, "b")
  73. }
  74.  
  75. public open_KnifeZone(id, level, cid)
  76. {
  77. if(!cmd_access(id, level, cid, 1))
  78. return PLUGIN_HANDLED
  79.  
  80. display_KnifeZone(id)
  81.  
  82. return PLUGIN_HANDLED
  83. }
  84.  
  85. public display_KnifeZone(id)
  86. {
  87. new menuBody[512]
  88. new len = format(menuBody, 511, "\yKes Zona Menu^n")
  89. len += format(menuBody[len], 511-len, "^n\w1. Zona letrehozasa")
  90. len += format(menuBody[len], 511-len, "^n\r2. Toroli Az Osszes Zonat")
  91. len += format(menuBody[len], 511-len, "^n\d3. Kilepes")
  92.  
  93. new keys = (1<<0|1<<1|1<<2)
  94. show_menu(id, keys, menuBody, -1, "Kes Zona Menu")
  95. }
  96.  
  97. public action_KnifeZone(id, key)
  98. {
  99. switch(key)
  100. {
  101. case 0:
  102. {
  103. if(zoneID >= MAX_ZONES)
  104. {
  105. client_print(id, print_chat, "Elerted a Max Kes Zonak Szamat")
  106. return PLUGIN_HANDLED
  107. }
  108.  
  109. if(!is_user_alive(id))
  110. {
  111. client_print(id, print_chat, "Maradj eletben a Kes Zona Kesziteshez")
  112. return PLUGIN_HANDLED
  113. }
  114.  
  115. _makeZone(id)
  116. display_KnifeZone(id)
  117. client_print(id, print_chat, "Letrehoztal Egy kes Zonat")
  118. }
  119. case 1:
  120. {
  121. _removeZones()
  122. display_KnifeZone(id)
  123. client_print(id, print_chat, "Osszes Kes Zona Torolve")
  124. }
  125. }
  126. return PLUGIN_HANDLED
  127. }
  128.  
  129. public fwd_TraceLine(Float:v1[3], Float:v2[3], noMonsters, id)
  130. {
  131. if(!is_user_alive(id))
  132. return FMRES_IGNORED
  133.  
  134. new victim = get_tr(TR_pHit)
  135. if(!is_user_alive(victim))
  136. return FMRES_IGNORED
  137.  
  138. new tmp[2], weapon = get_user_weapon(victim, tmp[0], tmp[1])
  139. if(weapon == CSW_KNIFE && g_InTheZone[victim])
  140. set_tr(TR_flFraction, 1.0)
  141.  
  142. return FMRES_IGNORED
  143. }
  144.  
  145. public client_PreThink(id)
  146. {
  147. if(!task_exists(TASK_ID) || !is_user_alive(id))
  148. {
  149. g_ProtectionTime[id] = -1
  150. g_InTheZone[id] = false
  151.  
  152. return PLUGIN_CONTINUE
  153. }
  154.  
  155. if(!check_origin(id))
  156. {
  157. g_InTheZone[id] = false
  158. g_ProtectionTime[id] = -1
  159.  
  160. return PLUGIN_CONTINUE
  161. }
  162.  
  163. new protectionDelay = get_pcvar_num(cvar_delay)
  164. if(g_ProtectionTime[id] < protectionDelay)
  165. {
  166. if(g_fDelay[id] + 1.0 < get_gametime())
  167. {
  168. g_ProtectionTime[id] += 1
  169. g_fDelay[id] = get_gametime()
  170. }
  171.  
  172. set_hudmessage(255, 0, 0, -1.0, -1.0, _, _, 0.5, _, _, 4)
  173. show_hudmessage(id, "Protection in %d...", (protectionDelay - g_ProtectionTime[id]))
  174. }
  175. else if(g_ProtectionTime[id] >= protectionDelay)
  176. g_InTheZone[id] = true
  177.  
  178. new tmp[2], weap = get_user_weapon(id, tmp[0], tmp[1])
  179. if(weap != CSW_KNIFE) client_cmd(id, "weapon_knife")
  180.  
  181. return PLUGIN_CONTINUE
  182. }
  183.  
  184. stock check_origin(id)
  185. {
  186. new iOrigin[3]
  187. get_user_origin(id, iOrigin, 0)
  188.  
  189. for(new i = 0; i < MAX_ZONES; ++i)
  190. {
  191. if((g_KnifeZoneOrgins[i][OriginX] == 0)
  192. && (g_KnifeZoneOrgins[i][OriginY] == 0)
  193. && g_KnifeZoneOrgins[i][OriginZ] == 0)
  194. continue
  195.  
  196. new ZoneSizeX = get_pcvar_num(cvar_kzsize)
  197. new ZoneSizeY = get_pcvar_num(cvar_kzsize)
  198. new ZoneSizeZ = get_pcvar_num(cvar_kzsizez)
  199.  
  200. if((g_KnifeZoneOrgins[i][OriginX] - iOrigin[0] > ZoneSizeX) || (g_KnifeZoneOrgins[i][OriginX] - iOrigin[0] < -ZoneSizeX)
  201. || (g_KnifeZoneOrgins[i][OriginY] - iOrigin[1] > ZoneSizeY) || (g_KnifeZoneOrgins[i][OriginY] - iOrigin[1] < -ZoneSizeY)
  202. || (g_KnifeZoneOrgins[i][OriginZ] - iOrigin[2] > ZoneSizeZ) || (g_KnifeZoneOrgins[i][OriginZ] - iOrigin[2] < -ZoneSizeZ))
  203. continue
  204.  
  205. return true
  206. }
  207. return false
  208. }
  209.  
  210. stock check_GrenadeOrigin(Origin[3])
  211. {
  212. new Ent = -1
  213. while((Ent = find_ent_by_class(Ent, "grenade")))
  214. {
  215. new szModel[32]
  216. entity_get_string(Ent, EV_SZ_model, szModel, 31)
  217. if(equal(szModel, "models/w_smokegrenade.mdl")
  218. || equal(szModel, "models/w_hegrenade.mdl")
  219. || equal(szModel, "models/w_flashbang.mdl"))
  220. {
  221. new Float:vOrigin[3], iOrigin[3]
  222. entity_get_vector(Ent, EV_VEC_origin, vOrigin)
  223. FVecIVec(vOrigin, iOrigin)
  224.  
  225. if(get_distance(iOrigin, Origin) <= get_pcvar_num(cvar_kzsize))
  226. remove_entity(Ent)
  227. }
  228. }
  229. }
  230.  
  231. load_origins(mapname[])
  232. {
  233. new mapFile[64]
  234. format(mapFile, 63, "%s/%s.cfg", g_KnifeZoneDir, mapname)
  235.  
  236. if(!file_exists(mapFile))
  237. {
  238. server_print("There are no Knife Zone(s) for %s", mapname)
  239. return PLUGIN_CONTINUE
  240. }
  241.  
  242. new Text[64], Line = 0, Len = 0
  243. while(read_file(mapFile, Line++, Text, 63, Len))
  244. {
  245. if((Text[0]==';') || !Len)
  246. continue
  247.  
  248. if(zoneID >= MAX_ZONES)
  249. {
  250. log_amx("Max Knife Zones reached, increase MAX_ZONES")
  251. break
  252. }
  253.  
  254. new iOrigin[3][16]
  255. parse(Text, iOrigin[OriginX], 15, iOrigin[OriginY], 15, iOrigin[OriginZ], 15)
  256.  
  257. g_KnifeZoneOrgins[zoneID][OriginX] = str_to_num(iOrigin[OriginX])
  258. g_KnifeZoneOrgins[zoneID][OriginY] = str_to_num(iOrigin[OriginY])
  259. g_KnifeZoneOrgins[zoneID][OriginZ] = str_to_num(iOrigin[OriginZ])
  260.  
  261. zoneID += 1
  262. }
  263. return PLUGIN_CONTINUE
  264. }
  265.  
  266. save_origin(mapname[], Origin[3])
  267. {
  268. new mapFile[64], Text[64]
  269. format(mapFile, 63, "%s/%s.cfg", g_KnifeZoneDir, mapname)
  270. if(!file_exists(mapFile))
  271. {
  272. new Comments[64]
  273. format(Comments, 63, "; Knife Zone origins for %s", mapname)
  274. write_file(mapFile, Comments, -1)
  275. }
  276.  
  277. format(Text, 64, "%i %i %i", Origin[OriginX], Origin[OriginY], Origin[OriginZ])
  278. write_file(mapFile, Text, -1)
  279. }
  280.  
  281. public task_visuals()
  282. {
  283. for(new i = 0; i < MAX_ZONES; ++i)
  284. {
  285. if((g_KnifeZoneOrgins[i][OriginX] == 0)
  286. && (g_KnifeZoneOrgins[i][OriginY] == 0)
  287. && g_KnifeZoneOrgins[i][OriginZ] == 0)
  288. continue
  289.  
  290. create_kzring(g_KnifeZoneOrgins[i])
  291.  
  292. if(get_pcvar_num(cvar_nadepro))
  293. check_GrenadeOrigin(g_KnifeZoneOrgins[i])
  294.  
  295. if(!g_KnifeZoneLogos[i])
  296. {
  297. g_KnifeZoneLogos[i] = true
  298. create_logo(g_KnifeZoneOrgins[i])
  299. }
  300. }
  301. }
  302.  
  303. stock create_kzring(Origin[3])
  304. {
  305. new shape[4][2] = {{1,1}, {-1,1}, {-1,-1}, {1,-1}}
  306. new x1, y1, x2, y2, height, i, j
  307. new ZoneSize = get_cvar_num("amx_kzsize")
  308.  
  309. for(j = 0; j < 2; j++)
  310. {
  311. height = (30 * j - 30)
  312. for(i = 0; i < 4; i++)
  313. {
  314. x1 = (shape[i][0] * ZoneSize)
  315. y1 = (shape[i][1] * ZoneSize)
  316. if(i < 3)
  317. {
  318. x2 = (shape[i+1][0] * ZoneSize)
  319. y2 = (shape[i+1][1] * ZoneSize)
  320. }
  321. else
  322. {
  323. x2 = (shape[0][0] * ZoneSize)
  324. y2 = (shape[0][1] * ZoneSize)
  325. }
  326.  
  327. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  328. write_byte(0)
  329. write_coord(Origin[OriginX] + x1)
  330. write_coord(Origin[OriginY] + y1)
  331. write_coord(Origin[OriginZ] + height)
  332. write_coord(Origin[OriginX] + x2)
  333. write_coord(Origin[OriginY] + y2)
  334. write_coord(Origin[OriginZ] + height)
  335. write_short(sprite_zbeam)
  336. write_byte(0)
  337. write_byte(0)
  338. write_byte(30)
  339. write_byte(15)
  340. write_byte(0)
  341. write_byte(255)
  342. write_byte(0)
  343. write_byte(0)
  344. write_byte(100)
  345. write_byte(0)
  346. message_end()
  347. }
  348. }
  349. }
  350.  
  351. stock create_logo(Origin[3])
  352. {
  353. new Float:flOrigin[3]
  354. IVecFVec(Origin, flOrigin)
  355.  
  356. new sprite = create_entity("info_target")
  357. if(is_valid_ent(sprite))
  358. {
  359. entity_set_string(sprite, EV_SZ_classname, "kzlogo")
  360. entity_set_model(sprite, "sprites/knifezone.spr")
  361.  
  362. flOrigin[2] += get_pcvar_num(cvar_height)
  363. entity_set_origin(sprite, flOrigin)
  364. }
  365. }
  366.  
  367. _makeZone(id)
  368. {
  369. new iOrigin[3], CurMap[32]
  370. get_user_origin(id, iOrigin, 0)
  371. get_mapname(CurMap, 31)
  372.  
  373. zoneID = 0
  374. save_origin(CurMap, iOrigin)
  375. load_origins(CurMap)
  376.  
  377. if(task_exists(TASK_ID))
  378. remove_task(TASK_ID)
  379.  
  380. set_task(1.0, "task_visuals", TASK_ID, _, _, "b")
  381. }
  382.  
  383. _removeZones()
  384. {
  385. new MapFile[64], CurMap[32]
  386. get_mapname(CurMap, 31)
  387. format(MapFile, 63, "%s/%s.cfg", g_KnifeZoneDir, CurMap)
  388. if(file_exists(MapFile))
  389. delete_file(MapFile)
  390.  
  391. if(task_exists(TASK_ID))
  392. remove_task(TASK_ID)
  393.  
  394. zoneID = 0
  395.  
  396. for(new i = 0; i < MAX_ZONES; ++i)
  397. {
  398. g_KnifeZoneLogos[i] = false
  399. g_KnifeZoneOrgins[i][OriginX] = 0
  400. g_KnifeZoneOrgins[i][OriginY] = 0
  401. g_KnifeZoneOrgins[i][OriginZ] = 0
  402. }
  403.  
  404. new logo = -1
  405. while((logo = find_ent_by_class(logo, "kzlogo")))
  406. remove_entity(logo)
  407. }
  408.  
  409.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Több kés zóna mint 5.
HozzászólásElküldve: 2014.01.22. 19:13 
Offline
Jómunkásember

Csatlakozott: 2012.01.29. 12:48
Hozzászólások: 408
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 126 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <engine>
  5.  
  6. #define MAX_ZONES 40
  7. #define TASK_ID 1234
  8.  
  9. #define OriginX 0
  10. #define OriginY 1
  11. #define OriginZ 2
  12.  
  13. new cvar_delay
  14. new cvar_kzsize
  15. new cvar_kzsizez
  16. new cvar_height
  17. new cvar_nadepro
  18.  
  19. new g_ConfigsDir[64]
  20. new g_KnifeZoneDir[64]
  21.  
  22. new Float:g_fDelay[33]
  23. new g_ProtectionTime[33]
  24. new bool:g_InTheZone[33]
  25.  
  26. new zoneID
  27. new sprite_zbeam
  28. new g_KnifeZoneOrgins[MAX_ZONES][3]
  29. new bool:g_KnifeZoneLogos[MAX_ZONES]
  30.  
  31.  
  32.  
  33. static const PLUGIN_NAME[] = "Knife Zone"
  34. static const PLUGIN_AUTHOR[] = "Cheap_Suit"
  35. static const PLUGIN_VERSION[] = "1.6"
  36.  
  37. public plugin_init()
  38. {
  39. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  40. register_cvar(PLUGIN_NAME, PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER)
  41. register_clcmd("amx_kzmenu", "open_KnifeZone", ADMIN_LEVEL_A, "Kes Zona Menu")
  42. register_menucmd(register_menuid("Kes Zona Menu"), 1023, "action_KnifeZone")
  43.  
  44. cvar_delay = register_cvar("amx_kzdelay", "0") //menyi ido alat legyel halhatatlan
  45. cvar_height = register_cvar("amx_kzheight", "140") //zona Magasaga
  46. cvar_kzsize = register_cvar("amx_kzsize", "140") // Zona NAgysaga
  47. cvar_kzsizez = register_cvar("amx_kzsizez", "50") //Zona Szelesege
  48. cvar_nadepro = register_cvar("amx_kznadepro", "1") // Ezt Nemtudom :S
  49.  
  50. register_forward(FM_TraceLine, "fwd_TraceLine")
  51. register_directory()
  52. }
  53.  
  54. public plugin_precache()
  55. {
  56. precache_model("sprites/knifezone.spr")
  57. sprite_zbeam = precache_model("sprites/zbeam4.spr")
  58. }
  59.  
  60. register_directory()
  61. {
  62. get_configsdir(g_ConfigsDir, 63)
  63. format(g_KnifeZoneDir, 63, "%s/knifezone", g_ConfigsDir)
  64.  
  65. if(!dir_exists(g_KnifeZoneDir)) mkdir(g_KnifeZoneDir)
  66.  
  67.  
  68. new curMap[32]
  69. get_mapname(curMap, 31)
  70. load_origins(curMap)
  71.  
  72. set_task(1.0, "task_visuals", TASK_ID, _, _, "b")
  73. }
  74.  
  75. public open_KnifeZone(id, level, cid)
  76. {
  77. if(!cmd_access(id, level, cid, 1))
  78. return PLUGIN_HANDLED
  79.  
  80. display_KnifeZone(id)
  81.  
  82. return PLUGIN_HANDLED
  83. }
  84.  
  85. public display_KnifeZone(id)
  86. {
  87. new menuBody[512]
  88. new len = format(menuBody, 511, "\yKes Zona Menu^n")
  89. len += format(menuBody[len], 511-len, "^n\w1. Zona letrehozasa")
  90. len += format(menuBody[len], 511-len, "^n\r2. Toroli Az Osszes Zonat")
  91. len += format(menuBody[len], 511-len, "^n\d3. Kilepes")
  92.  
  93. new keys = (1<<0|1<<1|1<<2)
  94. show_menu(id, keys, menuBody, -1, "Kes Zona Menu")
  95. }
  96.  
  97. public action_KnifeZone(id, key)
  98. {
  99. switch(key)
  100. {
  101. case 0:
  102. {
  103. if(zoneID >= MAX_ZONES)
  104. {
  105. client_print(id, print_chat, "Elerted a Max Kes Zonak Szamat")
  106. return PLUGIN_HANDLED
  107. }
  108.  
  109. if(!is_user_alive(id))
  110. {
  111. client_print(id, print_chat, "Maradj eletben a Kes Zona Kesziteshez")
  112. return PLUGIN_HANDLED
  113. }
  114.  
  115. _makeZone(id)
  116. display_KnifeZone(id)
  117. client_print(id, print_chat, "Letrehoztal Egy kes Zonat")
  118. }
  119. case 1:
  120. {
  121. _removeZones()
  122. display_KnifeZone(id)
  123. client_print(id, print_chat, "Osszes Kes Zona Torolve")
  124. }
  125. }
  126. return PLUGIN_HANDLED
  127. }
  128.  
  129. public fwd_TraceLine(Float:v1[3], Float:v2[3], noMonsters, id)
  130. {
  131. if(!is_user_alive(id))
  132. return FMRES_IGNORED
  133.  
  134. new victim = get_tr(TR_pHit)
  135. if(!is_user_alive(victim))
  136. return FMRES_IGNORED
  137.  
  138. new tmp[2], weapon = get_user_weapon(victim, tmp[0], tmp[1])
  139. if(weapon == CSW_KNIFE && g_InTheZone[victim])
  140. set_tr(TR_flFraction, 1.0)
  141.  
  142. return FMRES_IGNORED
  143. }
  144.  
  145. public client_PreThink(id)
  146. {
  147. if(!task_exists(TASK_ID) || !is_user_alive(id))
  148. {
  149. g_ProtectionTime[id] = -1
  150. g_InTheZone[id] = false
  151.  
  152. return PLUGIN_CONTINUE
  153. }
  154.  
  155. if(!check_origin(id))
  156. {
  157. g_InTheZone[id] = false
  158. g_ProtectionTime[id] = -1
  159.  
  160. return PLUGIN_CONTINUE
  161. }
  162.  
  163. new protectionDelay = get_pcvar_num(cvar_delay)
  164. if(g_ProtectionTime[id] < protectionDelay)
  165. {
  166. if(g_fDelay[id] + 1.0 < get_gametime())
  167. {
  168. g_ProtectionTime[id] += 1
  169. g_fDelay[id] = get_gametime()
  170. }
  171.  
  172. set_hudmessage(255, 0, 0, -1.0, -1.0, _, _, 0.5, _, _, 4)
  173. show_hudmessage(id, "Protection in %d...", (protectionDelay - g_ProtectionTime[id]))
  174. }
  175. else if(g_ProtectionTime[id] >= protectionDelay)
  176. g_InTheZone[id] = true
  177.  
  178. new tmp[2], weap = get_user_weapon(id, tmp[0], tmp[1])
  179. if(weap != CSW_KNIFE) client_cmd(id, "weapon_knife")
  180.  
  181. return PLUGIN_CONTINUE
  182. }
  183.  
  184. stock check_origin(id)
  185. {
  186. new iOrigin[3]
  187. get_user_origin(id, iOrigin, 0)
  188.  
  189. for(new i = 0; i < MAX_ZONES; ++i)
  190. {
  191. if((g_KnifeZoneOrgins[i][OriginX] == 0)
  192. && (g_KnifeZoneOrgins[i][OriginY] == 0)
  193. && g_KnifeZoneOrgins[i][OriginZ] == 0)
  194. continue
  195.  
  196. new ZoneSizeX = get_pcvar_num(cvar_kzsize)
  197. new ZoneSizeY = get_pcvar_num(cvar_kzsize)
  198. new ZoneSizeZ = get_pcvar_num(cvar_kzsizez)
  199.  
  200. if((g_KnifeZoneOrgins[i][OriginX] - iOrigin[0] > ZoneSizeX) || (g_KnifeZoneOrgins[i][OriginX] - iOrigin[0] < -ZoneSizeX)
  201. || (g_KnifeZoneOrgins[i][OriginY] - iOrigin[1] > ZoneSizeY) || (g_KnifeZoneOrgins[i][OriginY] - iOrigin[1] < -ZoneSizeY)
  202. || (g_KnifeZoneOrgins[i][OriginZ] - iOrigin[2] > ZoneSizeZ) || (g_KnifeZoneOrgins[i][OriginZ] - iOrigin[2] < -ZoneSizeZ))
  203. continue
  204.  
  205. return true
  206. }
  207. return false
  208. }
  209.  
  210. stock check_GrenadeOrigin(Origin[3])
  211. {
  212. new Ent = -1
  213. while((Ent = find_ent_by_class(Ent, "grenade")))
  214. {
  215. new szModel[32]
  216. entity_get_string(Ent, EV_SZ_model, szModel, 31)
  217. if(equal(szModel, "models/w_smokegrenade.mdl")
  218. || equal(szModel, "models/w_hegrenade.mdl")
  219. || equal(szModel, "models/w_flashbang.mdl"))
  220. {
  221. new Float:vOrigin[3], iOrigin[3]
  222. entity_get_vector(Ent, EV_VEC_origin, vOrigin)
  223. FVecIVec(vOrigin, iOrigin)
  224.  
  225. if(get_distance(iOrigin, Origin) <= get_pcvar_num(cvar_kzsize))
  226. remove_entity(Ent)
  227. }
  228. }
  229. }
  230.  
  231. load_origins(mapname[])
  232. {
  233. new mapFile[64]
  234. format(mapFile, 63, "%s/%s.cfg", g_KnifeZoneDir, mapname)
  235.  
  236. if(!file_exists(mapFile))
  237. {
  238. server_print("There are no Knife Zone(s) for %s", mapname)
  239. return PLUGIN_CONTINUE
  240. }
  241.  
  242. new Text[64], Line = 0, Len = 0
  243. while(read_file(mapFile, Line++, Text, 63, Len))
  244. {
  245. if((Text[0]==';') || !Len)
  246. continue
  247.  
  248. if(zoneID >= MAX_ZONES)
  249. {
  250. log_amx("Max Knife Zones reached, increase MAX_ZONES")
  251. break
  252. }
  253.  
  254. new iOrigin[3][16]
  255. parse(Text, iOrigin[OriginX], 15, iOrigin[OriginY], 15, iOrigin[OriginZ], 15)
  256.  
  257. g_KnifeZoneOrgins[zoneID][OriginX] = str_to_num(iOrigin[OriginX])
  258. g_KnifeZoneOrgins[zoneID][OriginY] = str_to_num(iOrigin[OriginY])
  259. g_KnifeZoneOrgins[zoneID][OriginZ] = str_to_num(iOrigin[OriginZ])
  260.  
  261. zoneID += 1
  262. }
  263. return PLUGIN_CONTINUE
  264. }
  265.  
  266. save_origin(mapname[], Origin[3])
  267. {
  268. new mapFile[64], Text[64]
  269. format(mapFile, 63, "%s/%s.cfg", g_KnifeZoneDir, mapname)
  270. if(!file_exists(mapFile))
  271. {
  272. new Comments[64]
  273. format(Comments, 63, "; Knife Zone origins for %s", mapname)
  274. write_file(mapFile, Comments, -1)
  275. }
  276.  
  277. format(Text, 64, "%i %i %i", Origin[OriginX], Origin[OriginY], Origin[OriginZ])
  278. write_file(mapFile, Text, -1)
  279. }
  280.  
  281. public task_visuals()
  282. {
  283. for(new i = 0; i < MAX_ZONES; ++i)
  284. {
  285. if((g_KnifeZoneOrgins[i][OriginX] == 0)
  286. && (g_KnifeZoneOrgins[i][OriginY] == 0)
  287. && g_KnifeZoneOrgins[i][OriginZ] == 0)
  288. continue
  289.  
  290. create_kzring(g_KnifeZoneOrgins[i])
  291.  
  292. if(get_pcvar_num(cvar_nadepro))
  293. check_GrenadeOrigin(g_KnifeZoneOrgins[i])
  294.  
  295. if(!g_KnifeZoneLogos[i])
  296. {
  297. g_KnifeZoneLogos[i] = true
  298. create_logo(g_KnifeZoneOrgins[i])
  299. }
  300. }
  301. }
  302.  
  303. stock create_kzring(Origin[3])
  304. {
  305. new shape[4][2] = {{1,1}, {-1,1}, {-1,-1}, {1,-1}}
  306. new x1, y1, x2, y2, height, i, j
  307. new ZoneSize = get_cvar_num("amx_kzsize")
  308.  
  309. for(j = 0; j < 2; j++)
  310. {
  311. height = (30 * j - 30)
  312. for(i = 0; i < 4; i++)
  313. {
  314. x1 = (shape[i][0] * ZoneSize)
  315. y1 = (shape[i][1] * ZoneSize)
  316. if(i < 3)
  317. {
  318. x2 = (shape[i+1][0] * ZoneSize)
  319. y2 = (shape[i+1][1] * ZoneSize)
  320. }
  321. else
  322. {
  323. x2 = (shape[0][0] * ZoneSize)
  324. y2 = (shape[0][1] * ZoneSize)
  325. }
  326.  
  327. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  328. write_byte(0)
  329. write_coord(Origin[OriginX] + x1)
  330. write_coord(Origin[OriginY] + y1)
  331. write_coord(Origin[OriginZ] + height)
  332. write_coord(Origin[OriginX] + x2)
  333. write_coord(Origin[OriginY] + y2)
  334. write_coord(Origin[OriginZ] + height)
  335. write_short(sprite_zbeam)
  336. write_byte(0)
  337. write_byte(0)
  338. write_byte(30)
  339. write_byte(15)
  340. write_byte(0)
  341. write_byte(255)
  342. write_byte(0)
  343. write_byte(0)
  344. write_byte(100)
  345. write_byte(0)
  346. message_end()
  347. }
  348. }
  349. }
  350.  
  351. stock create_logo(Origin[3])
  352. {
  353. new Float:flOrigin[3]
  354. IVecFVec(Origin, flOrigin)
  355.  
  356. new sprite = create_entity("info_target")
  357. if(is_valid_ent(sprite))
  358. {
  359. entity_set_string(sprite, EV_SZ_classname, "kzlogo")
  360. entity_set_model(sprite, "sprites/knifezone.spr")
  361.  
  362. flOrigin[2] += get_pcvar_num(cvar_height)
  363. entity_set_origin(sprite, flOrigin)
  364. }
  365. }
  366.  
  367. _makeZone(id)
  368. {
  369. new iOrigin[3], CurMap[32]
  370. get_user_origin(id, iOrigin, 0)
  371. get_mapname(CurMap, 31)
  372.  
  373. zoneID = 0
  374. save_origin(CurMap, iOrigin)
  375. load_origins(CurMap)
  376.  
  377. if(task_exists(TASK_ID))
  378. remove_task(TASK_ID)
  379.  
  380. set_task(1.0, "task_visuals", TASK_ID, _, _, "b")
  381. }
  382.  
  383. _removeZones()
  384. {
  385. new MapFile[64], CurMap[32]
  386. get_mapname(CurMap, 31)
  387. format(MapFile, 63, "%s/%s.cfg", g_KnifeZoneDir, CurMap)
  388. if(file_exists(MapFile))
  389. delete_file(MapFile)
  390.  
  391. if(task_exists(TASK_ID))
  392. remove_task(TASK_ID)
  393.  
  394. zoneID = 0
  395.  
  396. for(new i = 0; i < MAX_ZONES; ++i)
  397. {
  398. g_KnifeZoneLogos[i] = false
  399. g_KnifeZoneOrgins[i][OriginX] = 0
  400. g_KnifeZoneOrgins[i][OriginY] = 0
  401. g_KnifeZoneOrgins[i][OriginZ] = 0
  402. }
  403.  
  404. new logo = -1
  405. while((logo = find_ent_by_class(logo, "kzlogo")))
  406. remove_entity(logo)
  407. }
  408.  

Ők köszönték meg HuBaBuBa nek ezt a hozzászólást: sajtoskecske55 (2014.01.23. 09:33)
  Népszerűség: 2.27%


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  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 24 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