hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 23:40



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], 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  [1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: zp extra knife blink
HozzászólásElküldve:2013.03.08. 19:30 
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
Helló!

(ZP 4.3)
Valaki áttudná-e írni a plugint úgy, hogy ha a vásárlások száma eléri a megadott limitet, akkor az item ne legyen látható a menüben kör végéig? (Példa: Fertőző gránát)

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <fakemeta>
  4. #include <zombieplague>
  5. #include <chr_engine>
  6.  
  7. #define MIN_DISTANCE 50
  8.  
  9. /*================================================================================
  10.  [Plugin Customization]
  11. =================================================================================*/
  12.  
  13. new const g_item_name[] = { "\yKnife Blink" }
  14. const g_item_cost = 10
  15. const g_iMaxDistance = 300;
  16.  
  17. /*============================================================================*/
  18.  
  19. new Float:g_fSpeed = 1000.0;
  20. new Float:g_fDelay = 1.0;
  21.  
  22. new cvar_knifelimit;
  23. new g_iMaxPlayers;
  24. new g_iEnemy[33];
  25. new g_iInBlink[33];
  26. new Float:g_fLastSlash[33];
  27. new g_iCanceled[33];
  28. new g_iSlash[33];
  29. new g_iBlinks[33];
  30. new g_itemid_blink;
  31. new g_times[33]
  32.  
  33. public plugin_init(){
  34.  
  35. register_plugin("[ZP] Extra Item: Knife Blink", "1.2", "pharse & sexy2x7");
  36.  
  37. g_iMaxPlayers = get_maxplayers();
  38.  
  39. g_itemid_blink = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_ZOMBIE);
  40.  
  41. register_forward(FM_TraceLine, "FW_TraceLine_Post", 1);
  42. register_forward(FM_PlayerPreThink, "FW_PlayerPreThink");
  43.  
  44. register_event("HLTV", "EVENT_round_start", "a", "1=0", "2=0")
  45.  
  46. cvar_knifelimit = register_cvar("zp_extra_knifelimit", "3");
  47. }
  48.  
  49. // ================================================== //
  50. // FORWARDS / EVENTS
  51. // ================================================== //
  52.  
  53. public FW_TraceLine_Post(Float:start[3], Float:end[3], conditions, id, trace){
  54.  
  55. if (!CHECK_ValidPlayer(id))
  56. return FMRES_IGNORED;
  57.  
  58. new iWeaponID = get_user_weapon(id);
  59.  
  60. if ( iWeaponID != CSW_KNIFE ){
  61.  
  62. OP_Cancel(id);
  63. return FMRES_IGNORED;
  64. }
  65.  
  66. new enemy = g_iEnemy[id];
  67.  
  68. if (!enemy){
  69.  
  70. enemy = get_tr2(trace, TR_pHit);
  71.  
  72. if ( !CHECK_ValidPlayer(enemy) || zp_get_user_zombie(enemy) ){
  73.  
  74. OP_Cancel(id);
  75. return FMRES_IGNORED;
  76. }
  77.  
  78. g_iEnemy[id] = enemy;
  79. }
  80.  
  81. return FMRES_IGNORED;
  82. }
  83.  
  84. public FW_PlayerPreThink(id){
  85.  
  86. if (!CHECK_ValidPlayer(id))
  87. return FMRES_IGNORED;
  88.  
  89. new iWeaponID = get_user_weapon(id);
  90.  
  91. if ( iWeaponID != CSW_KNIFE || !zp_get_user_zombie(id) ){
  92.  
  93. OP_Cancel(id);
  94. return FMRES_IGNORED;
  95. }
  96.  
  97. if ( g_iBlinks[id] == 0 )
  98. return FMRES_IGNORED;
  99.  
  100. new button = pev(id,pev_button);
  101.  
  102. if ( !(button & IN_ATTACK) && !(button & IN_ATTACK2) ){
  103.  
  104. OP_Cancel(id)
  105. return FMRES_IGNORED;
  106. }
  107.  
  108. if (g_iSlash[id])
  109. g_iSlash[id] = 0;
  110.  
  111. OP_NearEnemy(id);
  112.  
  113. if( g_iInBlink[id] ){
  114.  
  115. OP_SetBlink(id);
  116. OP_Blink(id);
  117. g_iCanceled[id] = 0;
  118. }
  119.  
  120. return FMRES_IGNORED;
  121. }
  122.  
  123. // Player buys our upgrade, add one blink
  124. public zp_extra_item_selected(player, itemid)
  125. {
  126. if (itemid == g_itemid_blink)
  127. {
  128. if(g_times[player] == get_pcvar_num(cvar_knifelimit))
  129. {
  130. return;
  131. }
  132.  
  133. g_times[player]++
  134. g_iBlinks[player] += 1;
  135. client_print(player, print_chat, "[ZP] You have now %d Knife Blinks", g_iBlinks[player]);
  136.  
  137. }
  138. }
  139.  
  140. // Reset blinks for all players on newround
  141. public EVENT_round_start()
  142. {
  143.  
  144. for (new id; id <= 32; id++)
  145. {
  146. g_iBlinks[id] = 0;
  147. g_times[id] = 0
  148. }
  149. }
  150.  
  151. // ================================================== //
  152. // OPERATIONS
  153. // ================================================== //
  154.  
  155. public OP_NearEnemy(id){
  156.  
  157. new enemy = g_iEnemy[id];
  158. new Float:time = get_gametime();
  159.  
  160. if (!enemy || g_fLastSlash[id]+g_fDelay>time){
  161.  
  162. g_iInBlink[id] = 0;
  163. return;
  164. }
  165.  
  166. new origin[3], origin_enemy[3];
  167.  
  168. get_user_origin(id, origin, 0);
  169. get_user_origin(enemy, origin_enemy, 0);
  170.  
  171. new distance = get_distance(origin, origin_enemy);
  172.  
  173. if ( MIN_DISTANCE<=distance<=g_iMaxDistance){
  174.  
  175. g_iInBlink[id] = 1;
  176. return;
  177.  
  178. }else if (MIN_DISTANCE>distance && g_iInBlink[id])
  179. {
  180. OP_Slash(id);
  181. }
  182. OP_Cancel(id);
  183. }
  184.  
  185. public OP_Blink(id){
  186.  
  187. new Float:new_velocity[3];
  188. new enemy = g_iEnemy[id];
  189. new Float:origin_enemy[3];
  190.  
  191. pev(enemy, pev_origin, origin_enemy);
  192. entity_set_aim(id, origin_enemy);
  193.  
  194. get_speed_vector2(id, enemy, g_fSpeed, new_velocity)
  195. set_pev(id, pev_velocity, new_velocity);
  196. }
  197.  
  198. public OP_Cancel(id){
  199.  
  200. g_iInBlink[id] = 0;
  201. g_iEnemy[id] = 0;
  202. if (!g_iCanceled[id]){
  203.  
  204. OP_SetBlink(id);
  205. g_iCanceled[id] = 1;
  206. }
  207. }
  208.  
  209. public OP_Slash(id){
  210.  
  211. set_pev(id, pev_velocity, {0.0,0.0,0.0}); // stop player's blink
  212.  
  213. new weaponID = get_user_weapon(id, _, _);
  214.  
  215. if(weaponID == CSW_KNIFE){
  216.  
  217. new weapon[32]
  218.  
  219. get_weaponname(weaponID,weapon,31)
  220.  
  221. new ent = fm_find_ent_by_owner(-1,weapon,id)
  222.  
  223. if(ent){
  224.  
  225. set_pdata_float(ent,46, 0.0);
  226. set_pdata_float(ent,47, 0.0);
  227. g_iSlash[id] = 1;
  228. g_fLastSlash[id] = get_gametime();
  229. g_iBlinks[id] -= 1;
  230. new name[32];
  231. get_user_name(id,name,31)
  232. client_print(0, print_chat, "[ZP] %s just used a Knife Blink!", name);
  233. client_print(id, print_chat, "[ZP] %d Knife Blinks remaining", g_iBlinks[id]);
  234. }
  235. }
  236. }
  237.  
  238. public OP_SetBlink(id){
  239.  
  240. new blink = g_iInBlink[id];
  241.  
  242. if (blink>1)
  243. return;
  244.  
  245. if (blink)
  246. g_iInBlink[id] += 1;
  247. }
  248.  
  249. // ================================================== //
  250. // CHECKS
  251. // ================================================== //
  252.  
  253. public CHECK_ValidPlayer(id){
  254.  
  255. if (1<=id<=g_iMaxPlayers && is_user_alive(id))
  256. return 1;
  257.  
  258. return 0;
  259. }
  260.  
  261. // from fakemeta_util.inc
  262. stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) {
  263. new strtype[11] = "classname", ent = index;
  264. switch (jghgtype) {
  265. case 1: strtype = "target";
  266. case 2: strtype = "targetname";
  267. }
  268.  
  269. while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}
  270.  
  271. return ent;
  272. }
  273.  


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


Ki van itt

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