hlmod.hu

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



Jelenlévő felhasználók

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

A legtöbb felhasználó (2883 fő) 2025.07.30. 16:00-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  [5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Metamod Unprecacher
HozzászólásElküldve:2018.11.20. 10:24 
Offline
Őstag
Avatar

Csatlakozott:2015.07.27. 22:56
Hozzászólások:1367
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 351 alkalommal
Metamod Unprecacher

Készítője: In-line

A plugin lényege:
Az erőforrás használat csökkentése az előtöltött elemek számának redukálásával.
Továbbá az előtöltött elemek kicserélésére is alkalmas.

Jelenleg csak linuxra, egyaránt HLDS és reHLDS szerverekre elérhető.

Telepítés:
  1. Kicsomagolod és feltöltöd a fájlokat cstrike/addons/ mappába
  2. Az addons/metamod/plugins.ini fjlba beleírod linux szerint: addons/unprecacher/libunprecacher.so
  3. Újraindítod a szerver.

Fő konfig fájl beállítása (config.ini):
Kód:
// a - Debug
// b - Információ
// c - Figyelmeztetés
// d - Hiba
// e - Kritikus hiba
logger_verbosity = bcde

// 0 - Nincs naplózás
// 1 - Csak konzolba
// 2 - Csak fájlba
// 3 - Mindkettőbe
logger_output = 2

// a - Model beállítása
// b - Hang előtöltése
// c - Model előtöltése
// d - Hang lejátszása
// e - Környezeti hang lejátszása
// f - Model index (Figyelem: 100 alkalommal fut játékosoknént, erőforrás igényes!)
module_checks = abcde


Beállítás:
A list.ini fájlba írd bele azokat a fájl eléréseket amelyeket nem akarsz betöltetni vagy felül akarsz íratni. Egy sor formátuma:
Kód:
fájl_elérési_útvonala.kiterjesztés zászlók felülírási_útvonal

Használható zászlók: "a", "b" és "c"
  • a - entity törlése (a pályáról is)
  • b - játékos entityket ne törölje (csak akkor műdödik ha az "a" is aktív)
  • c - írja felül a fájlt (csere)

Példa a használatára (list.ini tartalma):
Kód:
// Path flags replace_file
// Example 1: models/w_usp.mdl c models/v_knife_custom.mdl
// Example 2: models/w_knife.mdl

// Precache tiltása:
"ambience/cow.wav"
"ambience/crow.wav"
"ambience/dog1.wav"
"ambience/dog2.wav"

// Csere:
models/w_smokegrenade.mdl c models/w_ujfust.mdl
models/w_hegrenade.mdl c models/w_ujheg.mdl
models/w_flashbang.mdl c models/w_ujflash.mdl


A pályánként és pálya prefixekenként is működik a dolog. A fenti tartalmat az adott pálya nevével (pl. de_dust.ini) vagy pálya típusával (pl. prefix-cs.ini) ellátott inibe írd be a metamod_unprecacher/maps könyvtárban.

Kivételek (whitelist):
Lehet kivételeket is hozzáadni avagy melyik pályán ne működjön a felülírás / tiltás.
Ezt a /whitelist_maps mappában létrehozott inikkel kezelheted ugyanúgy mint a tiltó listát.

Letöltés:
A legfrissebb unprecacher.tar.gz fájlt szedd le a projekt GitHub oldaláról.

Ők köszönték meg regener nek ezt a hozzászólást: jokypapa (2018.11.25. 05:49)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Metamod Unprecacher
HozzászólásElküldve:2018.11.20. 20:04 
Offline
Senior Tag

Csatlakozott:2017.04.30. 17:21
Hozzászólások:286
Megköszönt másnak: 49 alkalommal
Megköszönték neki: 66 alkalommal
Hangot is lecserél?:p


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Metamod Unprecacher
HozzászólásElküldve:2018.11.20. 22:26 
Offline
Őstag
Avatar

Csatlakozott:2015.07.27. 22:56
Hozzászólások:1367
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 351 alkalommal
Fegyverhangot a késen kívül nem.
Minden mást elvileg igen.
Model / hang / sprite.


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

Csatlakozott:2020.06.14. 17:59
Hozzászólások:429
Megköszönt másnak: 80 alkalommal
Megköszönték neki: 10 alkalommal
regener írta:
Fegyverhangot a késen kívül nem.
Minden mást elvileg igen.
Model / hang / sprite.


Pályánál hogyan lehet alkalmazni?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2025.12.05. 11:56 
Offline
Félisten
Avatar

Csatlakozott:2016.03.06. 14:20
Hozzászólások:986
Megköszönt másnak: 115 alkalommal
Megköszönték neki: 143 alkalommal
saxxo írta:
regener írta:
Fegyverhangot a késen kívül nem.
Minden mást elvileg igen.
Model / hang / sprite.


Pályánál hogyan lehet alkalmazni?


  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6.  
  7. #define PLUGIN "New Plug-In"
  8. #define VERSION "1.0"
  9. #define AUTHOR "author"
  10.  
  11. // Adattárolók
  12. new g_szVModel[33][64];
  13. new g_szPModel[33][64];
  14. new g_szWModel[33][64];
  15. new bool:g_bHasCustomModel[33];
  16.  
  17. // Kés hangok
  18. new g_szKnifeSoundSlash[64];
  19. new g_szKnifeSoundHit[64];
  20. new g_szKnifeSoundStab[64];
  21. new g_szKnifeSoundWall[64];
  22. new bool:g_bCustomKnifeSounds;
  23.  
  24. // Fegyver nevek a felismeréshez
  25. new const g_szWeaponNames[][] = {
  26.     "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4",
  27.     "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven",
  28.     "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18",
  29.     "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp",
  30.     "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47",
  31.     "weapon_knife", "weapon_p90"
  32. };
  33.  
  34. public plugin_init() {
  35.     register_plugin(PLUGIN, VERSION, AUTHOR);
  36.    
  37.     // Deploy (elővétel) eventek regisztrálása
  38.     for(new i = 1; i < sizeof(g_szWeaponNames); i++) {
  39.         if(g_szWeaponNames[i][0]) {
  40.             RegisterHam(Ham_Item_Deploy, g_szWeaponNames[i], "OnItemDeploy", 1);
  41.         }
  42.     }
  43.    
  44.     register_forward(FM_SetModel, "OnSetModel");
  45.     register_forward(FM_EmitSound, "OnEmitSound");
  46. }
  47.  
  48. public plugin_precache() {
  49.     LoadMapConfig();
  50. }
  51.  
  52. LoadMapConfig() {
  53.     new szMapName[32], szConfigFile[128], szConfigDir[64];
  54.     get_mapname(szMapName, charsmax(szMapName));
  55.     get_configsdir(szConfigDir, charsmax(szConfigDir));
  56.    
  57.     // Config fájl: configs/maps/PÁLYANÉV_weapons.ini
  58.     format(szConfigFile, charsmax(szConfigFile), "%s/maps/%s_weapons.ini", szConfigDir, szMapName);
  59.    
  60.     if(!file_exists(szConfigFile)) return;
  61.    
  62.     new iFile = fopen(szConfigFile, "rt");
  63.     if(!iFile) return;
  64.    
  65.     new szLine[512];
  66.     new szWeapon[32], szV[64], szP[64], szW[64];
  67.     new szS1[64], szS2[64], szS3[64], szS4[64];
  68.    
  69.     while(!feof(iFile)) {
  70.         fgets(iFile, szLine, charsmax(szLine));
  71.         trim(szLine);
  72.        
  73.         // Kommentek kihagyása
  74.         if(!szLine[0] || szLine[0] == ';' || (szLine[0] == '/' && szLine[1] == '/')) continue;
  75.        
  76.         // Adatok beolvasása
  77.         parse(szLine, szWeapon, charsmax(szWeapon), szV, charsmax(szV), szP, charsmax(szP), szW, charsmax(szW), szS1, charsmax(szS1), szS2, charsmax(szS2), szS3, charsmax(szS3), szS4, charsmax(szS4));
  78.        
  79.         new iWeaponID = GetWeaponID(szWeapon);
  80.        
  81.         if(iWeaponID > 0) {
  82.             // V Modell
  83.             if(szV[0] && file_exists(szV)) {
  84.                 copy(g_szVModel[iWeaponID], charsmax(g_szVModel[]), szV);
  85.                 precache_model(szV);
  86.                 g_bHasCustomModel[iWeaponID] = true;
  87.             }
  88.             // P Modell
  89.             if(szP[0] && file_exists(szP)) {
  90.                 copy(g_szPModel[iWeaponID], charsmax(g_szPModel[]), szP);
  91.                 precache_model(szP);
  92.                 g_bHasCustomModel[iWeaponID] = true;
  93.             }
  94.             // W Modell
  95.             if(szW[0] && file_exists(szW)) {
  96.                 copy(g_szWModel[iWeaponID], charsmax(g_szWModel[]), szW);
  97.                 precache_model(szW);
  98.                 g_bHasCustomModel[iWeaponID] = true;
  99.             }
  100.            
  101.             // Kés hangok
  102.             if(equal(szWeapon, "weapon_knife")) {
  103.                 if(szS1[0] && file_exists(szS1)) { copy(g_szKnifeSoundSlash, charsmax(g_szKnifeSoundSlash), szS1); precache_sound(szS1); g_bCustomKnifeSounds = true; }
  104.                 if(szS2[0] && file_exists(szS2)) { copy(g_szKnifeSoundHit, charsmax(g_szKnifeSoundHit), szS2); precache_sound(szS2); g_bCustomKnifeSounds = true; }
  105.                 if(szS3[0] && file_exists(szS3)) { copy(g_szKnifeSoundStab, charsmax(g_szKnifeSoundStab), szS3); precache_sound(szS3); g_bCustomKnifeSounds = true; }
  106.                 if(szS4[0] && file_exists(szS4)) { copy(g_szKnifeSoundWall, charsmax(g_szKnifeSoundWall), szS4); precache_sound(szS4); g_bCustomKnifeSounds = true; }
  107.             }
  108.         }
  109.     }
  110.     fclose(iFile);
  111. }
  112.  
  113. public OnItemDeploy(iEnt) {
  114.     if(!is_valid_ent(iEnt)) return;
  115.    
  116.     // Tulajdonos lekérése (offset 41 + 4 linux)
  117.     new id = get_pdata_cbase(iEnt, 41, 4);
  118.     if(!is_user_alive(id)) return;
  119.    
  120.     // Fegyver ID lekérése (offset 43 + 4 linux)
  121.     new iWeaponID = get_pdata_int(iEnt, 43, 4);
  122.    
  123.     if(g_bHasCustomModel[iWeaponID]) {
  124.         if(g_szVModel[iWeaponID][0]) set_pev(id, pev_viewmodel2, g_szVModel[iWeaponID]);
  125.         if(g_szPModel[iWeaponID][0]) set_pev(id, pev_weaponmodel2, g_szPModel[iWeaponID]);
  126.     }
  127. }
  128.  
  129. public OnSetModel(iEnt, const szModel[]) {
  130.     if(!is_valid_ent(iEnt)) return FMRES_IGNORED;
  131.    
  132.     // Ellenőrizzük, hogy w_ modellről van-e szó
  133.     if(szModel[7] != 'w' || szModel[8] != '_') return FMRES_IGNORED;
  134.  
  135.     // Ha van custom W modell mentve
  136.     for(new i = 1; i < 31; i++) {
  137.         if(g_bHasCustomModel[i] && g_szWModel[i][0]) {
  138.              // Itt egy egyszerűsített ellenőrzést végzünk
  139.              // Ha a betöltendő modell neve tartalmazza a fegyver típusát (pl. "ak47")
  140.              // Akkor kicseréljük a miénkre.
  141.              // Megjegyzés: Ez feltételezi, hogy az eredeti modellnévben benne van a fegyver neve.
  142.              // Pontosabb lenne entitás ellenőrzéssel, de setmodelkor az még korai.
  143.         }
  144.     }
  145.     return FMRES_IGNORED;
  146. }
  147.  
  148. public OnEmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch) {
  149.     if(!is_user_alive(id) || !g_bCustomKnifeSounds) return FMRES_IGNORED;
  150.  
  151.     // Ellenőrizzük, hogy kés hang-e (pl. weapons/knife_...)
  152.     // A sample string általában "weapons/knife_hit1.wav" formátumú
  153.     if(containi(sample, "knife") != -1) {
  154.         if(containi(sample, "slash") != -1 && g_szKnifeSoundSlash[0]) {
  155.             emit_sound(id, channel, g_szKnifeSoundSlash, volume, attn, flags, pitch);
  156.             return FMRES_SUPERCEDE;
  157.         }
  158.         if(containi(sample, "hit") != -1 && g_szKnifeSoundHit[0]) {
  159.             emit_sound(id, channel, g_szKnifeSoundHit, volume, attn, flags, pitch);
  160.             return FMRES_SUPERCEDE;
  161.         }
  162.         if(containi(sample, "stab") != -1 && g_szKnifeSoundStab[0]) {
  163.             emit_sound(id, channel, g_szKnifeSoundStab, volume, attn, flags, pitch);
  164.             return FMRES_SUPERCEDE;
  165.         }
  166.         if(containi(sample, "wall") != -1 && g_szKnifeSoundWall[0]) {
  167.             emit_sound(id, channel, g_szKnifeSoundWall, volume, attn, flags, pitch);
  168.             return FMRES_SUPERCEDE;
  169.         }
  170.     }
  171.     return FMRES_IGNORED;
  172. }
  173.  
  174. // Segédfüggvény a fegyver ID meghatározásához
  175. GetWeaponID(const szWeapon[]) {
  176.     for(new i = 1; i < sizeof(g_szWeaponNames); i++) {
  177.         if(equal(szWeapon, g_szWeaponNames[i])) return i;
  178.     }
  179.     return 0;
  180. }



Használat:

Config létrehozása:

Mappa: cstrike/addons/amxmodx/configs/maps/
Fájlnév: PÁLYANÉV_weapons.ini (pl. de_dust2_weapons.ini)

Config tartalom példa (hangokkal):

Az INI fájl formátuma a hangokkal
Mivel a kód most már figyeli a hangokat is a késnél (weapon_knife), a konfigurációs fájl (cstrike/addons/amxmodx/configs/maps/PÁLYANÉV_weapons.ini) sora így bővül:

Általános fegyvereknél (4 adat):
"weapon_neve" "v_model" "p_model" "w_model"
Késnél (4 adat + 4 hang):
"weapon_knife" "v_model" "p_model" "w_model" "SUHINTÁS.wav" "TALÁLAT.wav" "SZÚRÁS.wav" "FAL.wav"


de_dust2_weapons.ini:
  1. ; AK47 (csak modellek)
  2. "weapon_ak47" "models/d2/v_ak47.mdl" "models/d2/p_ak47.mdl" "models/d2/w_ak47.mdl"
  3.  
  4. ; KÉS (modellek + 4 hang)
  5. ; Sorrend: V, P, W, Slash, Hit, Stab, Wall
  6. "weapon_knife" "models/kard/v_kard.mdl" "models/kard/p_kard.mdl" "" "sound/kard/swing.wav" "sound/kard/hit.wav" "sound/kard/stab.wav" "sound/kard/wall.wav"


[*] Ha valamelyik hangot vagy modellt nem akarod cserélni, csak hagyd üresen az idézőjelek között: "".

_________________
 ! 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á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 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