hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.29. 00:17



Jelenlévő felhasználók

Jelenleg 227 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 227 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  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Force Shield
HozzászólásElküldve: 2013.10.11. 14:17 
Offline
Félisten

Csatlakozott: 2012.06.19. 15:12
Hozzászólások: 926
Megköszönt másnak: 109 alkalommal
Megköszönték neki: 31 alkalommal
Ebbe a pluginba valaki bele tudná írni hogy kör végén tűnjön el mert ha kör végén eldobom és elkezdődik a másik kör addig nem tűnik el amíg az ideje le nem jár.

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <cstrike>
  5. #include <zombieplague>
  6. #include <hamsandwich>
  7. #include <fakemeta_util>
  8. #include <fun>
  9.  
  10. #define PLUGIN "[ZP] Extra Item: Force Field Grenade"
  11. #define VERSION "v2.1"
  12. #define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.
  13.  
  14. #define CAMPO_ROUND_NAME "Force Shield (Complete Round)"
  15. #define CAMPO_TIME_NAME "Force Shield (Short-Time)"
  16. #define ValidTouch(%1) ( is_user_alive(%1) && ( zp_get_user_zombie(%1) || zp_get_user_nemesis(%1) ) )
  17.  
  18. /*=============================[Plugin Customization]=============================*/
  19. #define CAMPO_TASK
  20. //#define CAMPO_ROUND
  21.  
  22. //#define RANDOM_COLOR
  23. #define ONE_COLOR
  24.  
  25. new const NADE_TYPE_CAMPO = 3679
  26.  
  27. #if defined ONE_COLOR
  28. new Float:CampoColors[3] = {
  29. 255.0 , // r
  30. 0.0 , // g
  31. 0.0 // b
  32. }
  33. #endif
  34.  
  35. new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
  36. new const model[] = "models/zombie_plague/aura8.mdl"
  37. new const w_model[] = "models/zombie_plague/w_aura.mdl"
  38. new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
  39. new const entclas[] = "campo_grenade_forze"
  40.  
  41. new g_trailSpr, cvar_push, g_SayText, g_itemID
  42.  
  43. new bool:g_bomb[33]
  44.  
  45. const item_cost = 15
  46. /*=============================[End Customization]=============================*/
  47.  
  48. public plugin_init()
  49. {
  50. register_plugin(PLUGIN, VERSION, AUTHOR)
  51.  
  52. RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
  53.  
  54. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  55.  
  56. register_forward(FM_SetModel, "fw_SetModel")
  57.  
  58.  
  59. RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "shield_deploy", 1)
  60.  
  61. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  62.  
  63. register_forward(FM_Touch, "fw_touch")
  64.  
  65. g_SayText = get_user_msgid("SayText")
  66.  
  67. register_cvar("zp_shield_creator", "lucas_7_94", FCVAR_SERVER|FCVAR_PROTECTED)
  68.  
  69. #if defined CAMPO_ROUND
  70. g_itemID = zp_register_extra_item ( CAMPO_ROUND_NAME , item_cost * 2 , ZP_TEAM_HUMAN )
  71. #else
  72. g_itemID = zp_register_extra_item ( CAMPO_TIME_NAME , item_cost , ZP_TEAM_HUMAN )
  73. #endif
  74.  
  75. // Push cvar, (Only float's numbers)
  76. cvar_push = register_cvar("zp_forze_push", "7.5")
  77. }
  78.  
  79. public event_round_start() {
  80.  
  81. #if defined CAMPO_ROUND
  82. remove_entity_name(entclas)
  83. #endif
  84.  
  85. arrayset( g_bomb, false, 33 );
  86. }
  87.  
  88. public plugin_precache() {
  89.  
  90. g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
  91. engfunc(EngFunc_PrecacheModel, model_grenade)
  92. engfunc(EngFunc_PrecacheModel, model)
  93. engfunc(EngFunc_PrecacheModel, w_model)
  94. }
  95.  
  96. public client_disconnect(id)
  97. g_bomb[id] = false;
  98.  
  99. public zp_extra_item_selected(player, itemid) {
  100.  
  101. if(itemid == g_itemID)
  102. {
  103. if(g_bomb[player])
  104. Color(player, "!g[Shield]!y You already have a force field")
  105. else
  106. {
  107. g_bomb[player] = true;
  108.  
  109. give_item(player,"weapon_smokegrenade")
  110.  
  111.  
  112. #if defined CAMPO_ROUND
  113. Color(player, "!g[Shield]!y You Bought a force field!. This, lasts 1 round complete.")
  114. #else
  115. Color(player, "!g[Shield]!y You Bought a force field!. This, lasts very little!")
  116. #endif
  117. }
  118.  
  119.  
  120. }
  121.  
  122. }
  123. public fw_PlayerKilled(victim, attacker, shouldgib) g_bomb[victim] = false;
  124.  
  125. public fw_ThinkGrenade(entity) {
  126.  
  127. if(!pev_valid(entity)) return HAM_IGNORED
  128.  
  129. static Float:dmgtime
  130. pev(entity, pev_dmgtime, dmgtime)
  131.  
  132. if (dmgtime > get_gametime())
  133. return HAM_IGNORED
  134.  
  135. if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
  136. crear_ent(entity)
  137.  
  138. return HAM_SUPERCEDE
  139. }
  140.  
  141. public fw_SetModel(entity, const model[]) {
  142.  
  143. static Float:dmgtime
  144. pev(entity, pev_dmgtime, dmgtime)
  145.  
  146. if (dmgtime == 0.0)
  147. return FMRES_IGNORED;
  148.  
  149. if (equal(model[7], "w_sm", 4))
  150. {
  151. new owner = pev(entity, pev_owner)
  152.  
  153. if( is_user_alive(owner) && !zp_get_user_zombie(owner) && g_bomb[owner])
  154. {
  155. fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
  156.  
  157. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  158. write_byte(TE_BEAMFOLLOW) // TE id
  159. write_short(entity) // entity
  160. write_short(g_trailSpr) // sprite
  161. write_byte(10) // life
  162. write_byte(10) // width
  163. write_byte(000) // r
  164. write_byte(255) // g
  165. write_byte(255) // b
  166. write_byte(500) // brightness
  167. message_end()
  168.  
  169. set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
  170.  
  171. set_task(6.0, "DeleteEntityGrenade" ,entity)
  172. entity_set_model(entity, w_model)
  173.  
  174. g_bomb[owner] = false;
  175.  
  176. return FMRES_SUPERCEDE
  177. }
  178. }
  179. return FMRES_IGNORED
  180.  
  181. }
  182.  
  183. public DeleteEntityGrenade(entity) remove_entity(entity)
  184.  
  185. public crear_ent(id) {
  186.  
  187. // Create entitity
  188. new iEntity = create_entity("info_target")
  189.  
  190. if(!is_valid_ent(iEntity))
  191. return PLUGIN_HANDLED
  192.  
  193. new Float: Origin[3]
  194. entity_get_vector(id, EV_VEC_origin, Origin)
  195.  
  196. entity_set_string(iEntity, EV_SZ_classname, entclas)
  197.  
  198. entity_set_vector(iEntity,EV_VEC_origin, Origin)
  199. entity_set_model(iEntity,model)
  200. entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
  201. entity_set_size(iEntity, Float: {-100.0, -100.0, -100.0}, Float: {100.0, 100.0, 100.0})
  202. entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
  203. entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
  204. entity_set_float(iEntity, EV_FL_renderamt, 50.0)
  205.  
  206. #if defined RANDOM_COLOR
  207. if(is_valid_ent(iEntity))
  208. {
  209. new Float:vColor[3]
  210.  
  211. for(new i; i < 3; i++)
  212. vColor[i] = random_float(0.0, 255.0)
  213.  
  214. entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
  215. }
  216. #endif
  217.  
  218. #if defined ONE_COLOR
  219. entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
  220. #endif
  221.  
  222. #if defined CAMPO_TASK
  223. set_task(120.0, "DeleteEntity", iEntity)
  224. #endif
  225.  
  226.  
  227. return PLUGIN_CONTINUE;
  228. }
  229.  
  230. public zp_user_infected_post(infected, infector)
  231. if (g_bomb[infected])
  232. g_bomb[infected] = false;
  233.  
  234. public fw_touch(ent, touched)
  235. {
  236. if ( !pev_valid(ent) ) return FMRES_IGNORED;
  237. static entclass[32];
  238. pev(ent, pev_classname, entclass, 31);
  239.  
  240. if ( equali(entclass, entclas) )
  241. {
  242. if( ValidTouch(touched) )
  243. {
  244. new Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power = get_pcvar_float(cvar_push)
  245.  
  246. pev(ent, pev_origin, pos_ptr)
  247. pev(touched, pev_origin, pos_ptd)
  248.  
  249. for(new i = 0; i < 3; i++)
  250. {
  251. pos_ptd[i] -= pos_ptr[i]
  252. pos_ptd[i] *= push_power
  253. }
  254. set_pev(touched, pev_velocity, pos_ptd)
  255. set_pev(touched, pev_impulse, pos_ptd)
  256. }
  257. }
  258. return PLUGIN_HANDLED
  259. }
  260.  
  261. public remove_ent()
  262. {
  263. remove_entity_name(entclas)
  264. }
  265.  
  266. public DeleteEntity( entity ) // Thanks xPaw For The Code =D
  267. if( is_valid_ent( entity ) )
  268. remove_entity( entity );
  269.  
  270. stock Color(const id, const input[], any:...)
  271. {
  272. static msg[191]
  273. vformat(msg, 190, input, 3)
  274.  
  275. replace_all(msg, 190, "!g", "^4")
  276. replace_all(msg, 190, "!y", "^1")
  277. replace_all(msg, 190, "!t", "^3")
  278.  
  279. message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
  280. write_byte(id)
  281. write_string(msg)
  282. message_end()
  283. }
  284.  
  285. public shield_deploy( shield_ent )
  286. {
  287. if( pev_valid( shield_ent ) != 2 )
  288. return HAM_IGNORED;
  289.  
  290. new id = get_pdata_cbase( shield_ent, 41, 4 );
  291.  
  292. if( g_bomb[ id ] && !zp_get_user_zombie( id ) )
  293. set_pev( id, pev_viewmodel2, model_grenade );
  294.  
  295. return HAM_IGNORED;
  296. }
  297. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  298. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
  299. */
  300.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Force Shield
HozzászólásElküldve: 2013.10.12. 11:48 
Offline
Tud valamit
Avatar

Csatlakozott: 2013.07.01. 23:32
Hozzászólások: 122
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 23 alkalommal
vagyis ha el dobot a granyót akkor ottmarad minden körben? :D

De Talán Próbáld meg ezt mivel nekem is ez volt még régen és remekül ment!
http://forums.alliedmods.net/showthread.php?t=111102
Remélem segítettem :D

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Force Shield
HozzászólásElküldve: 2013.10.15. 19:37 
Offline
Félisten

Csatlakozott: 2012.06.19. 15:12
Hozzászólások: 926
Megköszönt másnak: 109 alkalommal
Megköszönték neki: 31 alkalommal
InFeCt írta:
vagyis ha el dobot a granyót akkor ottmarad minden körben? :D

De Talán Próbáld meg ezt mivel nekem is ez volt még régen és remekül ment!
http://forums.alliedmods.net/showthread.php?t=111102
Remélem segítettem :D


Ez van bent most is.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Force Shield
HozzászólásElküldve: 2013.10.15. 20:12 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.09.23. 20:29
Hozzászólások: 325
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 87 alkalommal
Próbáld így:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <cstrike>
  5. #include <zombieplague>
  6. #include <hamsandwich>
  7. #include <fakemeta_util>
  8. #include <fun>
  9.  
  10. #define PLUGIN "[ZP] Extra Item: Force Field Grenade"
  11. #define VERSION "v2.1"
  12. #define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.
  13.  
  14. #define CAMPO_ROUND_NAME "Force Shield (Complete Round)"
  15. #define CAMPO_TIME_NAME "Force Shield (Short-Time)"
  16. #define ValidTouch(%1) ( is_user_alive(%1) && ( zp_get_user_zombie(%1) || zp_get_user_nemesis(%1) ) )
  17.  
  18. /*=============================[Plugin Customization]=============================*/
  19. //#define CAMPO_TASK
  20. #define CAMPO_ROUND
  21.  
  22. //#define RANDOM_COLOR
  23. #define ONE_COLOR
  24.  
  25. new const NADE_TYPE_CAMPO = 3679
  26.  
  27. #if defined ONE_COLOR
  28. new Float:CampoColors[3] = {
  29. 255.0 , // r
  30. 0.0 , // g
  31. 0.0 // b
  32. }
  33. #endif
  34.  
  35. new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
  36. new const model[] = "models/zombie_plague/aura8.mdl"
  37. new const w_model[] = "models/zombie_plague/w_aura.mdl"
  38. new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
  39. new const entclas[] = "campo_grenade_forze"
  40.  
  41. new g_trailSpr, cvar_push, g_SayText, g_itemID
  42.  
  43. new bool:g_bomb[33]
  44.  
  45. const item_cost = 15
  46. /*=============================[End Customization]=============================*/
  47.  
  48. public plugin_init()
  49. {
  50. register_plugin(PLUGIN, VERSION, AUTHOR)
  51.  
  52. RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
  53.  
  54. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  55.  
  56. register_forward(FM_SetModel, "fw_SetModel")
  57.  
  58.  
  59. RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "shield_deploy", 1)
  60.  
  61. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  62.  
  63. register_forward(FM_Touch, "fw_touch")
  64.  
  65. g_SayText = get_user_msgid("SayText")
  66.  
  67. register_cvar("zp_shield_creator", "lucas_7_94", FCVAR_SERVER|FCVAR_PROTECTED)
  68.  
  69. #if defined CAMPO_ROUND
  70. g_itemID = zp_register_extra_item ( CAMPO_ROUND_NAME , item_cost * 2 , ZP_TEAM_HUMAN )
  71. #else
  72. g_itemID = zp_register_extra_item ( CAMPO_TIME_NAME , item_cost , ZP_TEAM_HUMAN )
  73. #endif
  74.  
  75. // Push cvar, (Only float's numbers)
  76. cvar_push = register_cvar("zp_forze_push", "7.5")
  77. }
  78.  
  79. public event_round_start() {
  80.  
  81. #if defined CAMPO_ROUND
  82. remove_entity_name(entclas)
  83. #endif
  84.  
  85. arrayset( g_bomb, false, 33 );
  86. }
  87.  
  88. public plugin_precache() {
  89.  
  90. g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
  91. engfunc(EngFunc_PrecacheModel, model_grenade)
  92. engfunc(EngFunc_PrecacheModel, model)
  93. engfunc(EngFunc_PrecacheModel, w_model)
  94. }
  95.  
  96. public client_disconnect(id)
  97. g_bomb[id] = false;
  98.  
  99. public zp_extra_item_selected(player, itemid) {
  100.  
  101. if(itemid == g_itemID)
  102. {
  103. if(g_bomb[player])
  104. Color(player, "!g[Shield]!y You already have a force field")
  105. else
  106. {
  107. g_bomb[player] = true;
  108.  
  109. give_item(player,"weapon_smokegrenade")
  110.  
  111.  
  112. #if defined CAMPO_ROUND
  113. Color(player, "!g[Shield]!y You Bought a force field!. This, lasts 1 round complete.")
  114. #else
  115. Color(player, "!g[Shield]!y You Bought a force field!. This, lasts very little!")
  116. #endif
  117. }
  118.  
  119.  
  120. }
  121.  
  122. }
  123. public fw_PlayerKilled(victim, attacker, shouldgib) g_bomb[victim] = false;
  124.  
  125. public fw_ThinkGrenade(entity) {
  126.  
  127. if(!pev_valid(entity)) return HAM_IGNORED
  128.  
  129. static Float:dmgtime
  130. pev(entity, pev_dmgtime, dmgtime)
  131.  
  132. if (dmgtime > get_gametime())
  133. return HAM_IGNORED
  134.  
  135. if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
  136. crear_ent(entity)
  137.  
  138. return HAM_SUPERCEDE
  139. }
  140.  
  141. public fw_SetModel(entity, const model[]) {
  142.  
  143. static Float:dmgtime
  144. pev(entity, pev_dmgtime, dmgtime)
  145.  
  146. if (dmgtime == 0.0)
  147. return FMRES_IGNORED;
  148.  
  149. if (equal(model[7], "w_sm", 4))
  150. {
  151. new owner = pev(entity, pev_owner)
  152.  
  153. if( is_user_alive(owner) && !zp_get_user_zombie(owner) && g_bomb[owner])
  154. {
  155. fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
  156.  
  157. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  158. write_byte(TE_BEAMFOLLOW) // TE id
  159. write_short(entity) // entity
  160. write_short(g_trailSpr) // sprite
  161. write_byte(10) // life
  162. write_byte(10) // width
  163. write_byte(000) // r
  164. write_byte(255) // g
  165. write_byte(255) // b
  166. write_byte(500) // brightness
  167. message_end()
  168.  
  169. set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
  170.  
  171. set_task(6.0, "DeleteEntityGrenade" ,entity)
  172. entity_set_model(entity, w_model)
  173.  
  174. g_bomb[owner] = false;
  175.  
  176. return FMRES_SUPERCEDE
  177. }
  178. }
  179. return FMRES_IGNORED
  180.  
  181. }
  182.  
  183. public DeleteEntityGrenade(entity) remove_entity(entity)
  184.  
  185. public crear_ent(id) {
  186.  
  187. // Create entitity
  188. new iEntity = create_entity("info_target")
  189.  
  190. if(!is_valid_ent(iEntity))
  191. return PLUGIN_HANDLED
  192.  
  193. new Float: Origin[3]
  194. entity_get_vector(id, EV_VEC_origin, Origin)
  195.  
  196. entity_set_string(iEntity, EV_SZ_classname, entclas)
  197.  
  198. entity_set_vector(iEntity,EV_VEC_origin, Origin)
  199. entity_set_model(iEntity,model)
  200. entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
  201. entity_set_size(iEntity, Float: {-100.0, -100.0, -100.0}, Float: {100.0, 100.0, 100.0})
  202. entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
  203. entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
  204. entity_set_float(iEntity, EV_FL_renderamt, 50.0)
  205.  
  206. #if defined RANDOM_COLOR
  207. if(is_valid_ent(iEntity))
  208. {
  209. new Float:vColor[3]
  210.  
  211. for(new i; i < 3; i++)
  212. vColor[i] = random_float(0.0, 255.0)
  213.  
  214. entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
  215. }
  216. #endif
  217.  
  218. #if defined ONE_COLOR
  219. entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
  220. #endif
  221.  
  222. #if defined CAMPO_TASK
  223. set_task(120.0, "DeleteEntity", iEntity)
  224. #endif
  225.  
  226.  
  227. return PLUGIN_CONTINUE;
  228. }
  229.  
  230. public zp_user_infected_post(infected, infector)
  231. if (g_bomb[infected])
  232. g_bomb[infected] = false;
  233.  
  234. public fw_touch(ent, touched)
  235. {
  236. if ( !pev_valid(ent) ) return FMRES_IGNORED;
  237. static entclass[32];
  238. pev(ent, pev_classname, entclass, 31);
  239.  
  240. if ( equali(entclass, entclas) )
  241. {
  242. if( ValidTouch(touched) )
  243. {
  244. new Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power = get_pcvar_float(cvar_push)
  245.  
  246. pev(ent, pev_origin, pos_ptr)
  247. pev(touched, pev_origin, pos_ptd)
  248.  
  249. for(new i = 0; i < 3; i++)
  250. {
  251. pos_ptd[i] -= pos_ptr[i]
  252. pos_ptd[i] *= push_power
  253. }
  254. set_pev(touched, pev_velocity, pos_ptd)
  255. set_pev(touched, pev_impulse, pos_ptd)
  256. }
  257. }
  258. return PLUGIN_HANDLED
  259. }
  260.  
  261. public remove_ent()
  262. {
  263. remove_entity_name(entclas)
  264. }
  265.  
  266. public DeleteEntity( entity ) // Thanks xPaw For The Code =D
  267. if( is_valid_ent( entity ) )
  268. remove_entity( entity );
  269.  
  270. stock Color(const id, const input[], any:...)
  271. {
  272. static msg[191]
  273. vformat(msg, 190, input, 3)
  274.  
  275. replace_all(msg, 190, "!g", "^4")
  276. replace_all(msg, 190, "!y", "^1")
  277. replace_all(msg, 190, "!t", "^3")
  278.  
  279. message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
  280. write_byte(id)
  281. write_string(msg)
  282. message_end()
  283. }
  284.  
  285. public shield_deploy( shield_ent )
  286. {
  287. if( pev_valid( shield_ent ) != 2 )
  288. return HAM_IGNORED;
  289.  
  290. new id = get_pdata_cbase( shield_ent, 41, 4 );
  291.  
  292. if( g_bomb[ id ] && !zp_get_user_zombie( id ) )
  293. set_pev( id, pev_viewmodel2, model_grenade );
  294.  
  295. return HAM_IGNORED;
  296. }

Ők köszönték meg Vinnice nek ezt a hozzászólást: Tomos (2013.10.15. 20:56)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Force Shield
HozzászólásElküldve: 2013.10.15. 20:56 
Offline
Félisten

Csatlakozott: 2012.06.19. 15:12
Hozzászólások: 926
Megköszönt másnak: 109 alkalommal
Megköszönték neki: 31 alkalommal
Vinnice írta:
Próbáld így:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <cstrike>
  5. #include <zombieplague>
  6. #include <hamsandwich>
  7. #include <fakemeta_util>
  8. #include <fun>
  9.  
  10. #define PLUGIN "[ZP] Extra Item: Force Field Grenade"
  11. #define VERSION "v2.1"
  12. #define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.
  13.  
  14. #define CAMPO_ROUND_NAME "Force Shield (Complete Round)"
  15. #define CAMPO_TIME_NAME "Force Shield (Short-Time)"
  16. #define ValidTouch(%1) ( is_user_alive(%1) && ( zp_get_user_zombie(%1) || zp_get_user_nemesis(%1) ) )
  17.  
  18. /*=============================[Plugin Customization]=============================*/
  19. //#define CAMPO_TASK
  20. #define CAMPO_ROUND
  21.  
  22. //#define RANDOM_COLOR
  23. #define ONE_COLOR
  24.  
  25. new const NADE_TYPE_CAMPO = 3679
  26.  
  27. #if defined ONE_COLOR
  28. new Float:CampoColors[3] = {
  29. 255.0 , // r
  30. 0.0 , // g
  31. 0.0 // b
  32. }
  33. #endif
  34.  
  35. new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
  36. new const model[] = "models/zombie_plague/aura8.mdl"
  37. new const w_model[] = "models/zombie_plague/w_aura.mdl"
  38. new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
  39. new const entclas[] = "campo_grenade_forze"
  40.  
  41. new g_trailSpr, cvar_push, g_SayText, g_itemID
  42.  
  43. new bool:g_bomb[33]
  44.  
  45. const item_cost = 15
  46. /*=============================[End Customization]=============================*/
  47.  
  48. public plugin_init()
  49. {
  50. register_plugin(PLUGIN, VERSION, AUTHOR)
  51.  
  52. RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
  53.  
  54. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  55.  
  56. register_forward(FM_SetModel, "fw_SetModel")
  57.  
  58.  
  59. RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "shield_deploy", 1)
  60.  
  61. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  62.  
  63. register_forward(FM_Touch, "fw_touch")
  64.  
  65. g_SayText = get_user_msgid("SayText")
  66.  
  67. register_cvar("zp_shield_creator", "lucas_7_94", FCVAR_SERVER|FCVAR_PROTECTED)
  68.  
  69. #if defined CAMPO_ROUND
  70. g_itemID = zp_register_extra_item ( CAMPO_ROUND_NAME , item_cost * 2 , ZP_TEAM_HUMAN )
  71. #else
  72. g_itemID = zp_register_extra_item ( CAMPO_TIME_NAME , item_cost , ZP_TEAM_HUMAN )
  73. #endif
  74.  
  75. // Push cvar, (Only float's numbers)
  76. cvar_push = register_cvar("zp_forze_push", "7.5")
  77. }
  78.  
  79. public event_round_start() {
  80.  
  81. #if defined CAMPO_ROUND
  82. remove_entity_name(entclas)
  83. #endif
  84.  
  85. arrayset( g_bomb, false, 33 );
  86. }
  87.  
  88. public plugin_precache() {
  89.  
  90. g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
  91. engfunc(EngFunc_PrecacheModel, model_grenade)
  92. engfunc(EngFunc_PrecacheModel, model)
  93. engfunc(EngFunc_PrecacheModel, w_model)
  94. }
  95.  
  96. public client_disconnect(id)
  97. g_bomb[id] = false;
  98.  
  99. public zp_extra_item_selected(player, itemid) {
  100.  
  101. if(itemid == g_itemID)
  102. {
  103. if(g_bomb[player])
  104. Color(player, "!g[Shield]!y You already have a force field")
  105. else
  106. {
  107. g_bomb[player] = true;
  108.  
  109. give_item(player,"weapon_smokegrenade")
  110.  
  111.  
  112. #if defined CAMPO_ROUND
  113. Color(player, "!g[Shield]!y You Bought a force field!. This, lasts 1 round complete.")
  114. #else
  115. Color(player, "!g[Shield]!y You Bought a force field!. This, lasts very little!")
  116. #endif
  117. }
  118.  
  119.  
  120. }
  121.  
  122. }
  123. public fw_PlayerKilled(victim, attacker, shouldgib) g_bomb[victim] = false;
  124.  
  125. public fw_ThinkGrenade(entity) {
  126.  
  127. if(!pev_valid(entity)) return HAM_IGNORED
  128.  
  129. static Float:dmgtime
  130. pev(entity, pev_dmgtime, dmgtime)
  131.  
  132. if (dmgtime > get_gametime())
  133. return HAM_IGNORED
  134.  
  135. if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
  136. crear_ent(entity)
  137.  
  138. return HAM_SUPERCEDE
  139. }
  140.  
  141. public fw_SetModel(entity, const model[]) {
  142.  
  143. static Float:dmgtime
  144. pev(entity, pev_dmgtime, dmgtime)
  145.  
  146. if (dmgtime == 0.0)
  147. return FMRES_IGNORED;
  148.  
  149. if (equal(model[7], "w_sm", 4))
  150. {
  151. new owner = pev(entity, pev_owner)
  152.  
  153. if( is_user_alive(owner) && !zp_get_user_zombie(owner) && g_bomb[owner])
  154. {
  155. fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
  156.  
  157. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  158. write_byte(TE_BEAMFOLLOW) // TE id
  159. write_short(entity) // entity
  160. write_short(g_trailSpr) // sprite
  161. write_byte(10) // life
  162. write_byte(10) // width
  163. write_byte(000) // r
  164. write_byte(255) // g
  165. write_byte(255) // b
  166. write_byte(500) // brightness
  167. message_end()
  168.  
  169. set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
  170.  
  171. set_task(6.0, "DeleteEntityGrenade" ,entity)
  172. entity_set_model(entity, w_model)
  173.  
  174. g_bomb[owner] = false;
  175.  
  176. return FMRES_SUPERCEDE
  177. }
  178. }
  179. return FMRES_IGNORED
  180.  
  181. }
  182.  
  183. public DeleteEntityGrenade(entity) remove_entity(entity)
  184.  
  185. public crear_ent(id) {
  186.  
  187. // Create entitity
  188. new iEntity = create_entity("info_target")
  189.  
  190. if(!is_valid_ent(iEntity))
  191. return PLUGIN_HANDLED
  192.  
  193. new Float: Origin[3]
  194. entity_get_vector(id, EV_VEC_origin, Origin)
  195.  
  196. entity_set_string(iEntity, EV_SZ_classname, entclas)
  197.  
  198. entity_set_vector(iEntity,EV_VEC_origin, Origin)
  199. entity_set_model(iEntity,model)
  200. entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
  201. entity_set_size(iEntity, Float: {-100.0, -100.0, -100.0}, Float: {100.0, 100.0, 100.0})
  202. entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
  203. entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
  204. entity_set_float(iEntity, EV_FL_renderamt, 50.0)
  205.  
  206. #if defined RANDOM_COLOR
  207. if(is_valid_ent(iEntity))
  208. {
  209. new Float:vColor[3]
  210.  
  211. for(new i; i < 3; i++)
  212. vColor[i] = random_float(0.0, 255.0)
  213.  
  214. entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
  215. }
  216. #endif
  217.  
  218. #if defined ONE_COLOR
  219. entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
  220. #endif
  221.  
  222. #if defined CAMPO_TASK
  223. set_task(120.0, "DeleteEntity", iEntity)
  224. #endif
  225.  
  226.  
  227. return PLUGIN_CONTINUE;
  228. }
  229.  
  230. public zp_user_infected_post(infected, infector)
  231. if (g_bomb[infected])
  232. g_bomb[infected] = false;
  233.  
  234. public fw_touch(ent, touched)
  235. {
  236. if ( !pev_valid(ent) ) return FMRES_IGNORED;
  237. static entclass[32];
  238. pev(ent, pev_classname, entclass, 31);
  239.  
  240. if ( equali(entclass, entclas) )
  241. {
  242. if( ValidTouch(touched) )
  243. {
  244. new Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power = get_pcvar_float(cvar_push)
  245.  
  246. pev(ent, pev_origin, pos_ptr)
  247. pev(touched, pev_origin, pos_ptd)
  248.  
  249. for(new i = 0; i < 3; i++)
  250. {
  251. pos_ptd[i] -= pos_ptr[i]
  252. pos_ptd[i] *= push_power
  253. }
  254. set_pev(touched, pev_velocity, pos_ptd)
  255. set_pev(touched, pev_impulse, pos_ptd)
  256. }
  257. }
  258. return PLUGIN_HANDLED
  259. }
  260.  
  261. public remove_ent()
  262. {
  263. remove_entity_name(entclas)
  264. }
  265.  
  266. public DeleteEntity( entity ) // Thanks xPaw For The Code =D
  267. if( is_valid_ent( entity ) )
  268. remove_entity( entity );
  269.  
  270. stock Color(const id, const input[], any:...)
  271. {
  272. static msg[191]
  273. vformat(msg, 190, input, 3)
  274.  
  275. replace_all(msg, 190, "!g", "^4")
  276. replace_all(msg, 190, "!y", "^1")
  277. replace_all(msg, 190, "!t", "^3")
  278.  
  279. message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
  280. write_byte(id)
  281. write_string(msg)
  282. message_end()
  283. }
  284.  
  285. public shield_deploy( shield_ent )
  286. {
  287. if( pev_valid( shield_ent ) != 2 )
  288. return HAM_IGNORED;
  289.  
  290. new id = get_pdata_cbase( shield_ent, 41, 4 );
  291.  
  292. if( g_bomb[ id ] && !zp_get_user_zombie( id ) )
  293. set_pev( id, pev_viewmodel2, model_grenade );
  294.  
  295. return HAM_IGNORED;
  296. }


Úgy tűnik hogy eddig jó azt hol lehet beállítani hogy hány másodpercig maradjon a földön.

_________________
Kép


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  [ 5 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