hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.08.12. 16:25



Jelenlévő felhasználók

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

A legtöbb felhasználó (2883 fő) 2025.07.30. 16:00-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  [6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Plugin
HozzászólásElküldve:2025.05.11. 21:53 
Offline
Jómunkásember
Avatar

Csatlakozott:2019.11.03. 22:00
Hozzászólások:381
Megköszönt másnak: 37 alkalommal
Megköszönték neki: 28 alkalommal
Sziasztok tudom hülyén hangzik, de próbára szeretném magam tenni (Akár lehetetlen is jöhet)

tudom elég furán hangzik de fogadás-t tettem ezért a ti segítségeteket kérem, írjátok meg milyen plugint írják meg

Ha sikerül ide ki posztolom.


UI: Ne mondjatok olyat ami már fent van.

_________________
Általam készített Szerverek


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin
HozzászólásElküldve:2025.05.12. 10:42 
Offline
Félisten
Avatar

Csatlakozott:2016.03.06. 14:20
Hozzászólások:982
Megköszönt másnak: 115 alkalommal
Megköszönték neki: 140 alkalommal
Csabika20034 írta:
Sziasztok tudom hülyén hangzik, de próbára szeretném magam tenni (Akár lehetetlen is jöhet)

tudom elég furán hangzik de fogadás-t tettem ezért a ti segítségeteket kérem, írjátok meg milyen plugint írják meg

Ha sikerül ide ki posztolom.


UI: Ne mondjatok olyat ami már fent van.


XD irigylem az idődet :D

_________________
 ! Moderátori megjegyzés (kiki):
Kérlek csekkold az aláírásra vonatkozó szabályokat!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2025.05.12. 10:59 
Offline
Jómunkásember
Avatar

Csatlakozott:2019.11.03. 22:00
Hozzászólások:381
Megköszönt másnak: 37 alkalommal
Megköszönték neki: 28 alkalommal
The Peace írta:
Csabika20034 írta:
Sziasztok tudom hülyén hangzik, de próbára szeretném magam tenni (Akár lehetetlen is jöhet)

tudom elég furán hangzik de fogadás-t tettem ezért a ti segítségeteket kérem, írjátok meg milyen plugint írják meg

Ha sikerül ide ki posztolom.


UI: Ne mondjatok olyat ami már fent van.


XD irigylem az idődet :D


1 hét szabim van :xicon_e_biggrin:

_________________
Általam készített Szerverek


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin
HozzászólásElküldve:2025.05.13. 18:03 
Offline
Őstag
Avatar

Csatlakozott:2017.08.21. 15:51
Hozzászólások:1119
Megköszönt másnak: 36 alkalommal
Megköszönték neki: 201 alkalommal
Csabika20034 írta:
Sziasztok tudom hülyén hangzik, de próbára szeretném magam tenni (Akár lehetetlen is jöhet)

tudom elég furán hangzik de fogadás-t tettem ezért a ti segítségeteket kérem, írjátok meg milyen plugint írják meg

Ha sikerül ide ki posztolom.


UI: Ne mondjatok olyat ami már fent van.


Gombnyomásra aktiválod, és mondjuk 5mp-ig tart. Aztán rákerül egy cooldown, hogy ne tudd folyton használni.
A lényeg, hogy ha ez a cucc aktiválva van, akkor a támadód is sebződik miközben téged támad, kb az őt sebző érték 20%-a, és ilyenkor legyen a játékoson vagy körülötte valami glow, vagy jelzés, hogy a játékosok tudják kinek mikor van aktiválva.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2025.05.13. 20:59 
Offline
Jómunkásember
Avatar

Csatlakozott:2019.11.03. 22:00
Hozzászólások:381
Megköszönt másnak: 37 alkalommal
Megköszönték neki: 28 alkalommal
Pika írta:
Csabika20034 írta:
Sziasztok tudom hülyén hangzik, de próbára szeretném magam tenni (Akár lehetetlen is jöhet)

tudom elég furán hangzik de fogadás-t tettem ezért a ti segítségeteket kérem, írjátok meg milyen plugint írják meg

Ha sikerül ide ki posztolom.


UI: Ne mondjatok olyat ami már fent van.


Gombnyomásra aktiválod, és mondjuk 5mp-ig tart. Aztán rákerül egy cooldown, hogy ne tudd folyton használni.
A lényeg, hogy ha ez a cucc aktiválva van, akkor a támadód is sebződik miközben téged támad, kb az őt sebző érték 20%-a, és ilyenkor legyen a játékoson vagy körülötte valami glow, vagy jelzés, hogy a játékosok tudják kinek mikor van aktiválva.[/quote

  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4. #include <fun>
  5.  
  6. #define SHIELD_DURATION 5.0
  7. #define COOLDOWN_TIME 20.0
  8. #define REFLECT_PERCENT 0.2
  9.  
  10. new bool:g_bShieldActive[33]
  11. new Float:g_fCooldownEnd[33]
  12.  
  13. public plugin_init()
  14. {
  15.     register_plugin("Reflect Shield", "1.0", "Csabika20034")
  16.     register_clcmd("+use", "cmd_use_pressed")
  17.     RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  18. }
  19.  
  20. public client_connect(id)
  21. {
  22.     g_bShieldActive[id] = false
  23.     g_fCooldownEnd[id] = 0.0
  24. }
  25.  
  26. public cmd_use_pressed(id)
  27. {
  28.     if (!is_user_alive(id))
  29.         return PLUGIN_CONTINUE
  30.  
  31.     new Float:currentTime = get_gametime()
  32.     if (g_bShieldActive[id] || currentTime < g_fCooldownEnd[id])
  33.         return PLUGIN_CONTINUE
  34.  
  35.     activate_shield(id)
  36.     return PLUGIN_CONTINUE
  37. }
  38.  
  39. public activate_shield(id)
  40. {
  41.     g_bShieldActive[id] = true
  42.     g_fCooldownEnd[id] = get_gametime() + SHIELD_DURATION + COOLDOWN_TIME
  43.  
  44.     // Glow effekt (piros szín)
  45.     set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16)
  46.  
  47.     set_task(SHIELD_DURATION, "deactivate_shield", id)
  48.  
  49.     client_print(id, print_center, "Visszasebző pajzs AKTÍV!")
  50. }
  51.  
  52. public deactivate_shield(id)
  53. {
  54.     g_bShieldActive[id] = false
  55.     set_user_rendering(id) // Eltávolítjuk a glow-t
  56.  
  57.     client_print(id, print_center, "Visszasebző pajzs LEJÁRT!")
  58. }
  59.  
  60. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
  61. {
  62.     if (!is_user_connected(attacker) || !is_user_connected(victim))
  63.         return HAM_IGNORED
  64.  
  65.     if (victim == attacker)
  66.         return HAM_IGNORED
  67.  
  68.     if (g_bShieldActive[victim])
  69.     {
  70.         new Float:reflectDamage = damage * REFLECT_PERCENT
  71.         set_user_health(attacker, get_user_health(attacker) - floatround(reflectDamage))
  72.  
  73.         client_print(attacker, print_center, "Sebződtél a visszaverődés miatt!")
  74.     }
  75.  
  76.     return HAM_IGNORED
  77. }


fun modul kell a set_user_health és set_user_rendering miatt.

fakemeta + hamsandwich kell a glow és damage hookhoz.

_________________
Általam készített Szerverek


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2025.08.04. 19:30 
Offline
Fanatikus
Avatar

Csatlakozott:2018.11.02. 12:23
Hozzászólások:152
Megköszönt másnak: 2 alkalommal
Megköszönték neki: 19 alkalommal
Picit belenyúltam ha nem baj :D

Hiba: +use parancs használata
Hiba: A register_clcmd("+use", ...) felülírja a játék alapvető "Használat" gombját. Ez azt jelenti, hogy a játékosok nem tudnának ajtót nyitni, bombát hatástalanítani, túszt felvenni stb., mert a gomb lenyomásakor a te pluginod aktiválódna.
Javítás: A parancsot lecseréltem egy chat-paranccsra (say /pajzs). Ez a legelterjedtebb és legbiztonságosabb módszer, nem zavarja a játékmenetet.
Hiba: Közvetlen életerő-állítás (set_user_health)
Hiba: A set_user_health() egy nagyon rossz gyakorlat a sebzés kiosztására. Teljesen figyelmen kívül hagyja a páncélt, és ha a sebzés halálos, a játék motorja nem biztos, hogy helyesen kezeli a halált (pl. nincs halálhang, a killfeed üres marad).
Javítás: A sebzést a ExecuteHam(Ham_TakeDamage, ...) funkcióval osztjuk ki. Ez a helyes módszer, mert a játék saját sebzési logikáját hívja meg, ami helyesen kalkulál a páncéllal és kezeli a haláleseteket.
Logikai Hiba: Cooldown számítása
Hiba: g_fCooldownEnd[id] = get_gametime() + SHIELD_DURATION + COOLDOWN_TIME. Ez a logika azt eredményezi, hogy a cooldown valójában 5 + 20 = 25 másodperc lesz az aktiválás pillanatától. A játékosok általában azt várják, hogy a cooldown az aktiváláskor induljon, és a feltüntetett ideig tartson (tehát 20 másodpercig).
Javítás: A cooldownt az aktiváláskor beállítjuk a kívánt értékre: g_fCooldownEnd[id] = get_gametime() + COOLDOWN_TIME. A pajzs időtartama ettől teljesen független.
Hiba: Glow effekt eltávolítása
Hiba: A set_user_rendering(id) önmagában nem állítja vissza az alapértelmezett renderelést. A játékoson rajta marad egy hibás effekt.
Javítás: Az alapértelmezett rendereléshez meg kell adni a normál paramétereket: set_user_rendering(id, kRenderNormal, 0, 0, 0, kRenderNormal, 0).

  1. #include <amxmodx>
  2. #include <hamsandwich>
  3. #include <fun>
  4.  
  5. #define PLUGIN_NAME "Reflect Shield"
  6. #define PLUGIN_VERSION "1.1"
  7. #define PLUGIN_AUTHOR "Csabika20034 & *tOrNaDo"
  8.  
  9. // Globális változók a pajzs állapotának és a cooldownnak a tárolására
  10. new bool:g_bShieldActive[33];
  11. new Float:g_fCooldownEnd[33];
  12.  
  13. // CVAR pointerek a konfigurálhatósághoz
  14. new g_pcvar_duration;
  15. new g_pcvar_cooldown;
  16. new g_pcvar_damage_ratio;
  17.  
  18. public plugin_init() {
  19.     register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
  20.  
  21.     // Chat parancs regisztrálása, ez a helyes módja, nem a "+use" felülírása
  22.     register_clcmd("say /pajzs", "cmd_activate_shield");
  23.     register_clcmd("say_team /pajzs", "cmd_activate_shield");
  24.  
  25.     // Ham_TakeDamage esemény regisztrálása POST módban a nagyobb stabilitásért
  26.     RegisterHam(Ham_TakeDamage, "player", "fw_post_TakeDamage", .Post = 1);
  27.  
  28.     // CVAR-ok létrehozása a rugalmas konfigurációért
  29.     g_pcvar_duration = register_cvar("shield_duration", "5.0"); // A pajzs aktív időtartama
  30.     g_pcvar_cooldown = register_cvar("shield_cooldown", "20.0"); // A képesség cooldownja
  31.     g_pcvar_damage_ratio = register_cvar("shield_reflect_ratio", "0.2"); // A visszavert sebzés aránya (0.2 = 20%)
  32. }
  33.  
  34. // Ha a játékos kilép, nullázzuk az adatait
  35. public client_disconnect(id) {
  36.     g_bShieldActive[id] = false;
  37.     g_fCooldownEnd[id] = 0.0;
  38. }
  39.  
  40. // A /pajzs parancsot lekezelő függvény
  41. public cmd_activate_shield(id) {
  42.     // Csak élő játékosok használhatják
  43.     if (!is_user_alive(id)) {
  44.         return;
  45.     }
  46.  
  47.     // Ha a pajzs már aktív
  48.     if (g_bShieldActive[id]) {
  49.         client_print(id, print_chat, "[Pajzs] A képességed már aktív!");
  50.         return;
  51.     }
  52.  
  53.     // Ha a képesség cooldownon van, visszajelzést adunk a játékosnak
  54.     if (get_gametime() < g_fCooldownEnd[id]) {
  55.         new Float:fTimeLeft = g_fCooldownEnd[id] - get_gametime();
  56.         client_print(id, print_chat, "[Pajzs] A képesség még %d másodpercig nem elérhető.", floatround(fTimeLeft));
  57.         return;
  58.     }
  59.  
  60.     // Ha minden feltétel teljesül, aktiváljuk a pajzsot
  61.     activate_shield(id);
  62. }
  63.  
  64. public activate_shield(id) {
  65.     // Kiolvassuk az értékeket a CVAR-okból
  66.     new Float:fDuration = get_pcvar_float(g_pcvar_duration);
  67.     new Float:fCooldown = get_pcvar_float(g_pcvar_cooldown);
  68.  
  69.     g_bShieldActive[id] = true;
  70.     // A cooldown az aktiválás pillanatában elindul
  71.     g_fCooldownEnd[id] = get_gametime() + fCooldown;
  72.  
  73.     // Glow effekt beállítása (piros)
  74.     set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16);
  75.  
  76.     // Időzítő beállítása a pajzs kikapcsolásához
  77.     set_task(fDuration, "deactivate_shield", id);
  78.  
  79.     client_print(id, print_center, "Visszasebző pajzs AKTÍV!");
  80. }
  81.  
  82. public deactivate_shield(id) {
  83.     // Ellenőrizzük, hogy a játékos még a szerveren van-e
  84.     if (!is_user_connected(id)) {
  85.         return;
  86.     }
  87.    
  88.     g_bShieldActive[id] = false;
  89.     // A renderelés helyes visszaállítása az alapértelmezett értékekkel
  90.     set_user_rendering(id, kRenderNormal, 0, 0, 0, kRenderNormal, 0);
  91.  
  92.     client_print(id, print_center, "Visszasebző pajzs LEJÁRT!");
  93. }
  94.  
  95. // A sebzési eseményt lekezelő függvény
  96. public fw_post_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits) {
  97.     // Csak akkor foglalkozunk vele, ha a támadó és az áldozat is érvényes játékos
  98.     if (attacker <= 0 || attacker > 32 || victim == attacker) {
  99.         return;
  100.     }
  101.  
  102.     // Ha az áldozat pajzsa aktív, és nem csapattársak
  103.     if (g_bShieldActive[victim] && get_user_team(victim) != get_user_team(attacker)) {
  104.         // Kiszámoljuk a visszavert sebzést
  105.         new Float:fReflectDamage = damage * get_pcvar_float(g_pcvar_damage_ratio);
  106.  
  107.         // A sebzést a helyes módszerrel (ExecuteHam) adjuk a támadónak
  108.         // A sebzés forrása az áldozat (victim) lesz
  109.         ExecuteHam(Ham_TakeDamage, attacker, victim, fReflectDamage, damagebits | DMG_GENERIC);
  110.  
  111.         // Opcionális visszajelzés a támadónak
  112.         client_print(attacker, print_center, "Megsebzett a visszaverő pajzs!");
  113.     }
  114. }

_________________
****


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