hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.19. 15:42



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: nincs regisztrált felhasználó 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: knifezone spriteok nélkül
HozzászólásElküldve: 2014.02.25. 11:05 
Offline
Lelkes
Avatar

Csatlakozott: 2013.02.18. 01:28
Hozzászólások: 16
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 3 alkalommal
Hali!
Megoldható hogy eltüntessük ebből a spriteokat?
Röviden tömören nem szeretném ha a piros vonal és a kés látszódna.


Csatolmányok:
knifezone.sma [9.59 KiB]
Letöltve 83 alkalommal.

_________________
|The New Legend Servers |
http://www.thenewlegend.sunwell.hu
Üdv! L u' G e N
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: knifezone spriteok nélkül
HozzászólásElküldve: 2014.02.25. 11:29 
Offline
Felfüggesztve
Avatar

Csatlakozott: 2013.06.09. 18:47
Hozzászólások: 2004
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 220 alkalommal
Üdv lugen!

Remélem működik. :)

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


Kód:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team
Modified for www.freakz.ro

Header size:           1528 bytes
Code size:            13624 bytes
Data size:             4528 bytes
Stack/heap size:      16384 bytes; estimated max. usage=782 cells (3128 bytes)
Total requirements:   36064 bytes
Done.


Üdv.
Anonymous1337

lugen írta:
Hali!
Megoldható hogy eltüntessük ebből a spriteokat?
Röviden tömören nem szeretném ha a piros vonal és a kés látszódna.

Ők köszönték meg Anonymous1337 nek ezt a hozzászólást (összesen 2): lugen (2014.02.25. 13:54) • DecToR (2015.12.22. 08:30)
  Népszerűség: 4.55%


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 11 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