hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2026.02.27. 09:36



Jelenlévő felhasználók

Jelenleg 294 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 292 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], Majestic-12 [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  [39347 hozzászólás ]  OldalElőző139313932393339343935Következő
Szerző Üzenet
 Hozzászólás témája:
HozzászólásElküldve:2026.02.12. 16:08 
Offline
Jómunkásember
Avatar

Csatlakozott:2019.11.03. 22:00
Hozzászólások:412
Megköszönt másnak: 38 alkalommal
Megköszönték neki: 32 alkalommal
═══════════════════════════════════════════════════════════════════════
FEJLŐDŐ FEGYVER RENDSZER (EZT ADNÁM)
═══════════════════════════════════════════════════════════════════════

A fegyverek nem csak skinek.
Minden fegyver külön fejlődik a használat során.

~ Fegyverenként külön kill számláló
~ StatTrak integráció
~ Szint alapú bónuszok
~ Egyedi vizuális effektek
~ Nem veszik el (nVault / SQL mentés)

═══════════════════════════════════════════════════════════════════════
SZINTEK ÉS JUTALMAK
═══════════════════════════════════════════════════════════════════════

LEVEL 1 – Rookie
• Alap állapot
• Normál skin megjelenítés

LEVEL 2 – Trained (100 ölés)
• +5 HP minden ölés után
• HUD szint kijelzés aktiválódik

LEVEL 3 – Elite (500 ölés)
• +5% coin bónusz ölésenként
• Kill chat effekt
• Fegyver név kiemelve

LEVEL 4 – Master (1000 ölés)
• Speciális kill effekt (villanás / glow)
• +10% XP bónusz
• Egyedi fegyver név szín

LEVEL 5 – Legendary (2000 ölés)
• Arany aura effekt
• +15% XP bónusz
• "Weapon Master" jelvény
• Globális üzenet eléréskor

═══════════════════════════════════════════════════════════════════════
Extra
═══════════════════════════════════════════════════════════════════════

• Weapon XP Progress Bar HUD-on
• Fegyver rang ikon
• Prestige reset lehetőség
• Skinhez kötött fejlődés
• Global Rare Announcement MAX szintnél

═══════════════════════════════════════════════════════════════════════
Ez csak egy kósza gondolat :D
UI: Ebbe tudok segíteni.
═══════════════════════════════════════════════════════════════════════

_________________
BiG BrotherZ AWP
IP >awp.bigbrotherz.hu:27075


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2026.02.12. 19:25 
Offline
Őstag
Avatar

Csatlakozott:2017.08.21. 15:51
Hozzászólások:1123
Megköszönt másnak: 36 alkalommal
Megköszönték neki: 204 alkalommal
Ez a minden fegyver külön fejlődik egy tök jó gondolat. Valamint pl lehetne ilyen kirakós darabokat szerezni. Ha pl ak47-el ölsz, van pl 0.08% esélyed, hogy droppol egy kirakót az AK47-hez. Ha összegyűlt 6 darab pl, akkor letudod kraftolni vagy automatikusan megkapsz rá egy skint. Akár lehetne többféle puzzle, és többféle skin megszerezhető így, és akkor nem ölésre, nem xp-re meg pontokra lenne, hanem jobban menne a szerencse felé. Nem lenne meg mindenkinek az első hét/hónap után, sokkal értékesebb lenne. Lehetnének különj mondjuk global kirakók, amiből tudsz skint kraftolni. pl 10 ilyen kirakóbol csinálhatsz 1 craftot, és a legbénább skinekből ami mondjuk 25DB, abból random kapsz egyet. Sok irányba el lehetne ezt vinni még.


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

Csatlakozott:2019.11.03. 22:00
Hozzászólások:412
Megköszönt másnak: 38 alkalommal
Megköszönték neki: 32 alkalommal
Pika írta:
Ez a minden fegyver külön fejlődik egy tök jó gondolat. Valamint pl lehetne ilyen kirakós darabokat szerezni. Ha pl ak47-el ölsz, van pl 0.08% esélyed, hogy droppol egy kirakót az AK47-hez. Ha összegyűlt 6 darab pl, akkor letudod kraftolni vagy automatikusan megkapsz rá egy skint. Akár lehetne többféle puzzle, és többféle skin megszerezhető így, és akkor nem ölésre, nem xp-re meg pontokra lenne, hanem jobban menne a szerencse felé. Nem lenne meg mindenkinek az első hét/hónap után, sokkal értékesebb lenne. Lehetnének különj mondjuk global kirakók, amiből tudsz skint kraftolni. pl 10 ilyen kirakóbol csinálhatsz 1 craftot, és a legbénább skinekből ami mondjuk 25DB, abból random kapsz egyet. Sok irányba el lehetne ezt vinni még.


Mivel gépnél vagyok, fejlesztem a weboldalam, közbe megpróbáltam írni egy példát, tesztelni nem teszteltem!

  1. /*
  2.    
  3.     Weapon Progression System + Puzzle Drop
  4.     CS 1.6 – AMXX
  5.  
  6.     Funkciók:
  7.     - Fegyverenként külön kill számláló
  8.     - Szintek: 1–5
  9.         L2: 100 kill
  10.         L3: 500 kill
  11.         L4: 1000 kill
  12.         L5: 2000 kill
  13.     - Szint bónuszok:
  14.         L2: +5 HP kill után, HUD aktiv
  15.         L3: +5% coin bónusz, kill chat effekt, fegyver név kiemelve
  16.         L4: Speciális kill effekt (képernyő villanás / glow), +10% XP
  17.         L5: Arany aura (glow), +15% XP, "Weapon Master" jelvény, globális üzenet
  18.     - Weapon XP progress bar HUD-on
  19.     - Puzzle drop rendszer:
  20.         - 0.08% esély killenként
  21.         - 6 puzzle = craft skin
  22.         - Global üzenet craftnál
  23.     - nVault mentés
  24.  
  25.     Ötlet: fórum leírás alapján!
  26. */
  27.  
  28. #include <amxmodx>
  29. #include <fakemeta>
  30. #include <hamsandwich>
  31. #include <nvault>
  32. #include <cstrike>
  33. #include <fun>
  34.  
  35. #define PLUGIN  "Weapon Progression System"
  36. #define VERSION "1.0"
  37. #define AUTHOR  "Csabika20034"
  38.  
  39. #define MAX_PLAYERS 32
  40. #define MAX_WEAPONS 32
  41.  
  42. // Puzzle drop esély (0.08% = 8 / 10000)
  43. #define PUZZLE_CHANCE_NUM   8
  44. #define PUZZLE_CHANCE_DEN   10000
  45.  
  46. // Puzzle darabok száma a craft-hoz
  47. #define PUZZLE_PIECES_NEED  6
  48.  
  49. // Szint küszöbök
  50. #define LEVEL2_KILLS 100
  51. #define LEVEL3_KILLS 500
  52. #define LEVEL4_KILLS 1000
  53. #define LEVEL5_KILLS 2000
  54.  
  55. // Glow színek
  56. #define GLOW_LEGENDARY_R 255
  57. #define GLOW_LEGENDARY_G 215
  58. #define GLOW_LEGENDARY_B 0
  59.  
  60. new g_vault;
  61.  
  62. // Per-player, per-weapon kill count
  63. new g_weaponKills[MAX_PLAYERS + 1][MAX_WEAPONS];
  64. // Per-player, per-weapon level
  65. new g_weaponLevel[MAX_PLAYERS + 1][MAX_WEAPONS];
  66.  
  67. // Puzzle darabok fegyverenként (egyszerűsítve: csak AK47-re mutatok példát, de struktúra általános)
  68. new g_puzzlePieces[MAX_PLAYERS + 1][MAX_WEAPONS];
  69.  
  70. // HUD sync
  71. new g_hudSync;
  72.  
  73. // Cvarok
  74. new cvar_puzzle_enable;
  75. new cvar_debug;
  76.  
  77. // Helper: weapon index mapping (CSW_*)
  78. new const g_weaponNames[MAX_WEAPONS][] = {
  79.     "",         // 0
  80.     "p228",     // 1 = CSW_P228
  81.     "",         // 2
  82.     "scout",    // 3
  83.     "hegrenade",// 4
  84.     "xm1014",   // 5
  85.     "",         // 6
  86.     "mac10",    // 7
  87.     "aug",      // 8
  88.     "",         // 9
  89.     "elite",    // 10
  90.     "fiveseven",// 11
  91.     "ump45",    // 12
  92.     "sg550",    // 13
  93.     "galil",    // 14
  94.     "famas",    // 15
  95.     "usp",      // 16
  96.     "glock18",  // 17
  97.     "awp",      // 18
  98.     "mp5navy",  // 19
  99.     "m249",     // 20
  100.     "m3",       // 21
  101.     "m4a1",     // 22
  102.     "tmp",      // 23
  103.     "g3sg1",    // 24
  104.     "",         // 25
  105.     "deagle",   // 26
  106.     "sg552",    // 27
  107.     "ak47",     // 28
  108.     "knife",    // 29
  109.     "p90"       // 30
  110.     // 31, 32 nem kell
  111. };
  112.  
  113. public plugin_init()
  114. {
  115.     register_plugin(PLUGIN, VERSION, AUTHOR);
  116.  
  117.     RegisterHam(Ham_Killed, "player", "fw_PlayerKilled", 1);
  118.  
  119.     register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
  120.  
  121.     g_hudSync = CreateHudSyncObj();
  122.  
  123.     cvar_puzzle_enable = register_cvar("wp_puzzle_enable", "1");
  124.     cvar_debug         = register_cvar("wp_debug", "0");
  125.  
  126.     g_vault = nvault_open("weapon_progression");
  127.     if (g_vault == INVALID_HANDLE)
  128.     {
  129.         log_amx("[WP] nVault open failed!");
  130.     }
  131.  
  132.     register_clcmd("say /wp", "cmd_ShowWeaponInfo");
  133.     register_clcmd("say_team /wp", "cmd_ShowWeaponInfo");
  134.     register_clcmd("say /prestige", "cmd_PrestigeReset");
  135. }
  136.  
  137. public plugin_end()
  138. {
  139.     if (g_vault != INVALID_HANDLE)
  140.         nvault_close(g_vault);
  141. }
  142.  
  143. public client_authorized(id)
  144. {
  145.     load_player_data(id);
  146. }
  147.  
  148. public client_disconnect(id)
  149. {
  150.     save_player_data(id);
  151. }
  152.  
  153. // Új kör: friss HUD
  154. public event_NewRound()
  155. {
  156.     for (new id = 1; id <= MAX_PLAYERS; id++)
  157.     {
  158.         if (is_user_connected(id))
  159.         {
  160.             show_weapon_hud(id);
  161.         }
  162.     }
  163. }
  164.  
  165. // Kill event
  166. public fw_PlayerKilled(victim, attacker, shouldgib)
  167. {
  168.     if (!is_user_connected(attacker) || attacker == victim)
  169.         return HAM_IGNORED;
  170.  
  171.     if (!is_user_alive(attacker))
  172.         return HAM_IGNORED;
  173.  
  174.     new weapon = get_user_weapon(attacker);
  175.     if (weapon <= 0 || weapon >= MAX_WEAPONS)
  176.         return HAM_IGNORED;
  177.  
  178.     // Kill számláló növelése
  179.     g_weaponKills[attacker][weapon]++;
  180.  
  181.     // Szint ellenőrzés
  182.     check_level_up(attacker, weapon);
  183.  
  184.     // Szint bónuszok alkalmazása
  185.     apply_kill_bonuses(attacker, weapon);
  186.  
  187.     // Puzzle drop
  188.     if (get_pcvar_num(cvar_puzzle_enable))
  189.     {
  190.         try_puzzle_drop(attacker, weapon);
  191.     }
  192.  
  193.     // HUD frissítés
  194.     show_weapon_hud(attacker);
  195.  
  196.     return HAM_IGNORED;
  197. }
  198.  
  199. // Szint meghatározása kill alapján
  200. stock get_level_from_kills(kills)
  201. {
  202.     if (kills >= LEVEL5_KILLS) return 5;
  203.     if (kills >= LEVEL4_KILLS) return 4;
  204.     if (kills >= LEVEL3_KILLS) return 3;
  205.     if (kills >= LEVEL2_KILLS) return 2;
  206.     return 1;
  207. }
  208.  
  209. // Szintlépés ellenőrzés
  210. stock check_level_up(id, weapon)
  211. {
  212.     new oldLevel = g_weaponLevel[id][weapon];
  213.     new newLevel = get_level_from_kills(g_weaponKills[id][weapon]);
  214.  
  215.     if (newLevel > oldLevel)
  216.     {
  217.         g_weaponLevel[id][weapon] = newLevel;
  218.  
  219.         new name[32];
  220.         get_user_name(id, name, charsmax(name));
  221.  
  222.         new wname[32];
  223.         get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  224.  
  225.         // Szintlépés üzenet
  226.         client_print_color(0, print_chat, "^4[WP]^1 %s fegyvere (^3%s^1) elérte a ^3%d. szintet!", name, wname, newLevel);
  227.  
  228.         // Legendary szint globális üzenet
  229.         if (newLevel == 5)
  230.         {
  231.             client_print_color(0, print_chat, "^4[WP]^1 %s elérte a ^3LEGENDARY^1 szintet a ^3%s^1 fegyverrel! ^4[Weapon Master]", name, wname);
  232.         }
  233.     }
  234. }
  235.  
  236. // Kill bónuszok alkalmazása szint alapján
  237. stock apply_kill_bonuses(id, weapon)
  238. {
  239.     new level = g_weaponLevel[id][weapon];
  240.  
  241.     // LEVEL 2 – Trained (100 ölés)
  242.     // • +5 HP minden ölés után
  243.     if (level >= 2)
  244.     {
  245.         new hp = get_user_health(id);
  246.         set_user_health(id, hp + 5);
  247.     }
  248.  
  249.     // LEVEL 3 – Elite (500 ölés)
  250.     // • +5% coin bónusz ölésenként
  251.     // • Kill chat effekt
  252.     // • Fegyver név kiemelve
  253.     if (level >= 3)
  254.     {
  255.         new name[32];
  256.         get_user_name(id, name, charsmax(name));
  257.  
  258.         new wname[32];
  259.         get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  260.  
  261.         client_print_color(0, print_chat, "^4[WP]^1 Elite kill: ^3%s^1 - ^4%s", name, wname);
  262.  
  263.         // Itt tudod hívni a saját coin rendszeredet, pl:
  264.         // wp_add_coins(id, damage * 0.05);
  265.     }
  266.  
  267.     // LEVEL 4 – Master (1000 ölés)
  268.     // • Speciális kill effekt (villanás / glow)
  269.     // • +10% XP bónusz
  270.     if (level >= 4)
  271.     {
  272.         // Képernyő villanás
  273.         screen_fade(id, 50, 50, 50, 0, 0, 255, 100);
  274.  
  275.         // Itt tudod hívni az XP rendszeredet, pl:
  276.         // wp_add_xp(id, base_xp * 0.10);
  277.     }
  278.  
  279.     // LEVEL 5 – Legendary (2000 ölés)
  280.     // • Arany aura effekt
  281.     // • +15% XP bónusz
  282.     // • "Weapon Master" jelvény
  283.     // • Globális üzenet eléréskor (szintlépésnél már küldtük)
  284.     if (level >= 5)
  285.     {
  286.         // Arany glow
  287.         set_user_rendering(id, kRenderFxGlowShell, GLOW_LEGENDARY_R, GLOW_LEGENDARY_G, GLOW_LEGENDARY_B, kRenderNormal, 16);
  288.  
  289.         // Itt plusz XP:
  290.         // wp_add_xp(id, base_xp * 0.15);
  291.     }
  292. }
  293.  
  294. // HUD megjelenítés: Weapon XP Progress Bar + szint
  295. stock show_weapon_hud(id)
  296. {
  297.     if (!is_user_connected(id))
  298.         return;
  299.  
  300.     new weapon = get_user_weapon(id);
  301.     if (weapon <= 0 || weapon >= MAX_WEAPONS)
  302.         return;
  303.  
  304.     new kills = g_weaponKills[id][weapon];
  305.     new level = g_weaponLevel[id][weapon];
  306.  
  307.     new nextLevelKills;
  308.     switch (level)
  309.     {
  310.         case 1: nextLevelKills = LEVEL2_KILLS;
  311.         case 2: nextLevelKills = LEVEL3_KILLS;
  312.         case 3: nextLevelKills = LEVEL4_KILLS;
  313.         case 4: nextLevelKills = LEVEL5_KILLS;
  314.         default: nextLevelKills = LEVEL5_KILLS;
  315.     }
  316.  
  317.     new currentLevelBaseKills;
  318.     switch (level)
  319.     {
  320.         case 1: currentLevelBaseKills = 0;
  321.         case 2: currentLevelBaseKills = LEVEL2_KILLS;
  322.         case 3: currentLevelBaseKills = LEVEL3_KILLS;
  323.         case 4: currentLevelBaseKills = LEVEL4_KILLS;
  324.         case 5: currentLevelBaseKills = LEVEL5_KILLS;
  325.     }
  326.  
  327.     new diff = nextLevelKills - currentLevelBaseKills;
  328.     new progress = kills - currentLevelBaseKills;
  329.     if (progress < 0) progress = 0;
  330.     if (progress > diff) progress = diff;
  331.  
  332.     new Float:percent = diff > 0 ? float(progress) / float(diff) : 1.0;
  333.  
  334.     new bar[32];
  335.     make_progress_bar(percent, bar, charsmax(bar));
  336.  
  337.     new wname[32];
  338.     get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  339.  
  340.     set_hudmessage(0, 255, 0, 0.02, 0.20, 0, 0.0, 1.0, 0.0, 0.0, -1);
  341.     ShowSyncHudMsg(id, g_hudSync, "Fegyver: %s^nSzint: %d^nXP: %d / %d^n%s",
  342.         wname, level, kills, nextLevelKills, bar);
  343. }
  344.  
  345. // Progress bar generálása
  346. stock make_progress_bar(Float:percent, bar[], len)
  347. {
  348.     new total = 20;
  349.     new filled = floatround(percent * total);
  350.  
  351.     if (filled > total) filled = total;
  352.     if (filled < 0) filled = 0;
  353.  
  354.     new i;
  355.     new pos = 0;
  356.     bar[pos++] = '[';
  357.  
  358.     for (i = 0; i < total; i++)
  359.     {
  360.         if (i < filled)
  361.             bar[pos++] = '#';
  362.         else
  363.             bar[pos++] = '-';
  364.     }
  365.  
  366.     bar[pos++] = ']';
  367.     bar[pos] = 0;
  368. }
  369.  
  370. // Puzzle drop rendszer
  371. stock try_puzzle_drop(id, weapon)
  372. {
  373.     // Példa: csak AK47-re legyen puzzle (CSW_AK47 = 28)
  374.     if (weapon != CSW_AK47)
  375.         return;
  376.  
  377.     new r = random_num(1, PUZZLE_CHANCE_DEN);
  378.     if (r <= PUZZLE_CHANCE_NUM)
  379.     {
  380.         g_puzzlePieces[id][weapon]++;
  381.  
  382.         new name[32];
  383.         get_user_name(id, name, charsmax(name));
  384.  
  385.         client_print_color(id, print_chat, "^4[WP]^1 Szerencsés vagy! Szereztél egy ^3AK47 Puzzle^1 darabot. (^3%d/%d^1)",
  386.             g_puzzlePieces[id][weapon], PUZZLE_PIECES_NEED);
  387.  
  388.         if (get_pcvar_num(cvar_debug))
  389.         {
  390.             log_amx("[WP] Puzzle drop: id=%d weapon=%d pieces=%d", id, weapon, g_puzzlePieces[id][weapon]);
  391.         }
  392.  
  393.         if (g_puzzlePieces[id][weapon] >= PUZZLE_PIECES_NEED)
  394.         {
  395.             g_puzzlePieces[id][weapon] -= PUZZLE_PIECES_NEED;
  396.  
  397.             // Itt adhatod a skint, vagy hívhatsz másik plugint
  398.             // pl: wp_give_skin(id, "ak47_rare_skin");
  399.  
  400.             new wname[32];
  401.             get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  402.  
  403.             client_print_color(0, print_chat, "^4[WP]^1 %s összegyűjtött ^3%d^1 darab ^3%s Puzzle^1-t és kraftolt egy skint!",
  404.                 name, PUZZLE_PIECES_NEED, wname);
  405.         }
  406.     }
  407. }
  408.  
  409. // Prestige reset – minden fegyver reset
  410. public cmd_PrestigeReset(id)
  411. {
  412.     if (!is_user_connected(id))
  413.         return PLUGIN_HANDLED;
  414.  
  415.     // Egyszerű példa: megerősítés nélkül
  416.     for (new w = 0; w < MAX_WEAPONS; w++)
  417.     {
  418.         g_weaponKills[id][w] = 0;
  419.         g_weaponLevel[id][w] = 1;
  420.     }
  421.  
  422.     client_print_color(id, print_chat, "^4[WP]^1 Prestige reset: minden fegyver fejlődése nullázva!");
  423.  
  424.     show_weapon_hud(id);
  425.  
  426.     return PLUGIN_HANDLED;
  427. }
  428.  
  429. // /wp – aktuális fegyver info
  430. public cmd_ShowWeaponInfo(id)
  431. {
  432.     if (!is_user_connected(id))
  433.         return PLUGIN_HANDLED;
  434.  
  435.     new weapon = get_user_weapon(id);
  436.     if (weapon <= 0 || weapon >= MAX_WEAPONS)
  437.     {
  438.         client_print_color(id, print_chat, "^4[WP]^1 Nincs aktív fegyvered.");
  439.         return PLUGIN_HANDLED;
  440.     }
  441.  
  442.     new kills = g_weaponKills[id][weapon];
  443.     new level = g_weaponLevel[id][weapon];
  444.  
  445.     new wname[32];
  446.     get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  447.  
  448.     client_print_color(id, print_chat, "^4[WP]^1 Fegyver: ^3%s^1 | Szint: ^3%d^1 | Ölések: ^3%d", wname, level, kills);
  449.  
  450.     show_weapon_hud(id);
  451.  
  452.     return PLUGIN_HANDLED;
  453. }
  454.  
  455. // Fegyver név CSW alapján
  456. stock get_weapon_name_by_csw(csw, name[], len)
  457. {
  458.     if (csw > 0 && csw < MAX_WEAPONS && g_weaponNames[csw][0])
  459.     {
  460.         copy(name, len, g_weaponNames[csw]);
  461.     }
  462.     else
  463.     {
  464.         copy(name, len, "Ismeretlen");
  465.     }
  466. }
  467.  
  468. // Screen fade effekt
  469. stock screen_fade(id, holdtime, fadetime, r, g, b, alpha)
  470. {
  471.     message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, id);
  472.     write_short((holdtime & 0xFFFF));
  473.     write_short((fadetime & 0xFFFF));
  474.     write_short(0x0000);
  475.     write_byte(r);
  476.     write_byte(g);
  477.     write_byte(b);
  478.     write_byte(alpha);
  479.     message_end();
  480. }
  481.  
  482. // nVault mentés / betöltés
  483. stock save_player_data(id)
  484. {
  485.     if (g_vault == INVALID_HANDLE || !is_user_connected(id))
  486.         return;
  487.  
  488.     new authid[35];
  489.     get_user_authid(id, authid, charsmax(authid));
  490.  
  491.     new key[64], value[256];
  492.  
  493.     // Összefűzzük az adatokat: kills;levels;puzzles
  494.     // Formátum: weapon:kill,weapon:kill,...|weapon:level,...|weapon:puzzle,...
  495.     new killsStr[128], levelsStr[128], puzzleStr[128];
  496.     killsStr[0] = 0;
  497.     levelsStr[0] = 0;
  498.     puzzleStr[0] = 0;
  499.  
  500.     new temp[32];
  501.     for (new w = 1; w < MAX_WEAPONS; w++)
  502.     {
  503.         if (!g_weaponNames[w][0])
  504.             continue;
  505.  
  506.         formatex(temp, charsmax(temp), "%d:%d;", w, g_weaponKills[id][w]);
  507.         add(killsStr, charsmax(killsStr), temp);
  508.  
  509.         formatex(temp, charsmax(temp), "%d:%d;", w, g_weaponLevel[id][w]);
  510.         add(levelsStr, charsmax(levelsStr), temp);
  511.  
  512.         formatex(temp, charsmax(temp), "%d:%d;", w, g_puzzlePieces[id][w]);
  513.         add(puzzleStr, charsmax(puzzleStr), temp);
  514.     }
  515.  
  516.     formatex(value, charsmax(value), "%s|%s|%s", killsStr, levelsStr, puzzleStr);
  517.     formatex(key, charsmax(key), "%s_wp", authid);
  518.  
  519.     nvault_set(g_vault, key, value);
  520. }
  521.  
  522. stock load_player_data(id)
  523. {
  524.     if (g_vault == INVALID_HANDLE || !is_user_connected(id))
  525.         return;
  526.  
  527.     new authid[35];
  528.     get_user_authid(id, authid, charsmax(authid));
  529.  
  530.     new key[64], value[256];
  531.     formatex(key, charsmax(key), "%s_wp", authid);
  532.  
  533.     if (!nvault_get(g_vault, key, value, charsmax(value)))
  534.     {
  535.         // Nincs adat, alapértékek
  536.         for (new w = 0; w < MAX_WEAPONS; w++)
  537.         {
  538.             g_weaponKills[id][w] = 0;
  539.             g_weaponLevel[id][w] = 1;
  540.             g_puzzlePieces[id][w] = 0;
  541.         }
  542.         return;
  543.     }
  544.  
  545.     // value: kills|levels|puzzles
  546.     new killsStr[128], levelsStr[128], puzzleStr[128];
  547.     parse3(value, killsStr, charsmax(killsStr), levelsStr, charsmax(levelsStr), puzzleStr, charsmax(puzzleStr));
  548.  
  549.     // Kills
  550.     new item[32], pos;
  551.     pos = 0;
  552.     while (strlen(killsStr) > 0 && strtok2(killsStr, item, charsmax(item), killsStr, charsmax(killsStr), ';', pos))
  553.     {
  554.         new w, k;
  555.         if (sscanf(item, "d:d", w, k))
  556.             continue;
  557.  
  558.         if (w > 0 && w < MAX_WEAPONS)
  559.             g_weaponKills[id][w] = k;
  560.     }
  561.  
  562.     // Levels
  563.     pos = 0;
  564.     while (strlen(levelsStr) > 0 && strtok2(levelsStr, item, charsmax(item), levelsStr, charsmax(levelsStr), ';', pos))
  565.     {
  566.         new w, l;
  567.         if (sscanf(item, "d:d", w, l))
  568.             continue;
  569.  
  570.         if (w > 0 && w < MAX_WEAPONS)
  571.             g_weaponLevel[id][w] = l;
  572.     }
  573.  
  574.     // Puzzles
  575.     pos = 0;
  576.     while (strlen(puzzleStr) > 0 && strtok2(puzzleStr, item, charsmax(item), puzzleStr, charsmax(puzzleStr), ';', pos))
  577.     {
  578.         new w, p;
  579.         if (sscanf(item, "d:d", w, p))
  580.             continue;
  581.  
  582.         if (w > 0 && w < MAX_WEAPONS)
  583.             g_puzzlePieces[id][w] = p;
  584.     }
  585. }
  586.  
  587. // Segéd: 3 részre bontás '|' alapján
  588. stock parse3(const input[], out1[], len1, out2[], len2, out3[], len3)
  589. {
  590.     new tmp[256];
  591.     copy(tmp, charsmax(tmp), input);
  592.  
  593.     new p1 = contain(tmp, "|");
  594.     if (p1 == -1)
  595.     {
  596.         copy(out1, len1, tmp);
  597.         out2[0] = 0;
  598.         out3[0] = 0;
  599.         return;
  600.     }
  601.  
  602.     tmp[p1] = 0;
  603.     copy(out1, len1, tmp);
  604.  
  605.     new p2 = contain(tmp[p1 + 1], "|");
  606.     if (p2 == -1)
  607.     {
  608.         copy(out2, len2, tmp[p1 + 1]);
  609.         out3[0] = 0;
  610.         return;
  611.     }
  612.  
  613.     tmp[p1 + 1 + p2] = 0;
  614.     copy(out2, len2, tmp[p1 + 1]);
  615.     copy(out3, len3, tmp[p1 + 1 + p2 + 1]);
  616. }

_________________
BiG BrotherZ AWP
IP >awp.bigbrotherz.hu:27075


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2026.02.15. 16:01 
Offline
Nagyúr
Avatar

Csatlakozott:2019.08.20. 18:19
Hozzászólások:515
Megköszönt másnak: 251 alkalommal
Megköszönték neki: 46 alkalommal
Sziasztok, akinek kell "Teszt szerver (játékszerver 1.6, css, minecraft stb) írjon PM"
És AdOk TeSzTrE :so_happy:

Teljes webadminfelület, Mysql-phpmyadminnal, ftp hozzáféréssel. gyorsfaszt letöltés :o :lol:

igényelni PÜ. és adom az oldalt ahol le birod adni a rendelés kérvényed :3
(Idő, nap.)
(Mit szeretnél, mi kell.)

CSÓK MINDENKINEK.

_________________
► Spoiler mutatása


Csabika20034 írta:
Hello, adsz nekem tesztre egy cs1.6 szervert?



Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2026.02.24. 17:50 
Offline
Nagyúr
Avatar

Csatlakozott:2019.08.20. 18:19
Hozzászólások:515
Megköszönt másnak: 251 alkalommal
Megköszönték neki: 46 alkalommal
Gyerekek, ennyire ki halt a cs közönség? :/ Hol vannak azok a régi nagy szerverek amiken felnőttem? :cry:
Gondolok, Eba, Rwt HWD D2/AWP és stb. Adnák megint valami komoly fun szervert, régi playerekkel.

_________________
► Spoiler mutatása


Csabika20034 írta:
Hello, adsz nekem tesztre egy cs1.6 szervert?



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

Csatlakozott:2020.05.14. 11:32
Hozzászólások:163
Megköszönt másnak: 14 alkalommal
Megköszönték neki: 60 alkalommal
Kiemelkedően gyorsan pörögnek az ujjaid. Kávé a titka? :tea:

Csabika20034 írta:
Pika írta:
Ez a minden fegyver külön fejlődik egy tök jó gondolat. Valamint pl lehetne ilyen kirakós darabokat szerezni. Ha pl ak47-el ölsz, van pl 0.08% esélyed, hogy droppol egy kirakót az AK47-hez. Ha összegyűlt 6 darab pl, akkor letudod kraftolni vagy automatikusan megkapsz rá egy skint. Akár lehetne többféle puzzle, és többféle skin megszerezhető így, és akkor nem ölésre, nem xp-re meg pontokra lenne, hanem jobban menne a szerencse felé. Nem lenne meg mindenkinek az első hét/hónap után, sokkal értékesebb lenne. Lehetnének különj mondjuk global kirakók, amiből tudsz skint kraftolni. pl 10 ilyen kirakóbol csinálhatsz 1 craftot, és a legbénább skinekből ami mondjuk 25DB, abból random kapsz egyet. Sok irányba el lehetne ezt vinni még.


Mivel gépnél vagyok, fejlesztem a weboldalam, közbe megpróbáltam írni egy példát, tesztelni nem teszteltem!

  1. /*
  2.    
  3.     Weapon Progression System + Puzzle Drop
  4.     CS 1.6 – AMXX
  5.  
  6.     Funkciók:
  7.     - Fegyverenként külön kill számláló
  8.     - Szintek: 1–5
  9.         L2: 100 kill
  10.         L3: 500 kill
  11.         L4: 1000 kill
  12.         L5: 2000 kill
  13.     - Szint bónuszok:
  14.         L2: +5 HP kill után, HUD aktiv
  15.         L3: +5% coin bónusz, kill chat effekt, fegyver név kiemelve
  16.         L4: Speciális kill effekt (képernyő villanás / glow), +10% XP
  17.         L5: Arany aura (glow), +15% XP, "Weapon Master" jelvény, globális üzenet
  18.     - Weapon XP progress bar HUD-on
  19.     - Puzzle drop rendszer:
  20.         - 0.08% esély killenként
  21.         - 6 puzzle = craft skin
  22.         - Global üzenet craftnál
  23.     - nVault mentés
  24.  
  25.     Ötlet: fórum leírás alapján!
  26. */
  27.  
  28. #include <amxmodx>
  29. #include <fakemeta>
  30. #include <hamsandwich>
  31. #include <nvault>
  32. #include <cstrike>
  33. #include <fun>
  34.  
  35. #define PLUGIN  "Weapon Progression System"
  36. #define VERSION "1.0"
  37. #define AUTHOR  "Csabika20034"
  38.  
  39. #define MAX_PLAYERS 32
  40. #define MAX_WEAPONS 32
  41.  
  42. // Puzzle drop esély (0.08% = 8 / 10000)
  43. #define PUZZLE_CHANCE_NUM   8
  44. #define PUZZLE_CHANCE_DEN   10000
  45.  
  46. // Puzzle darabok száma a craft-hoz
  47. #define PUZZLE_PIECES_NEED  6
  48.  
  49. // Szint küszöbök
  50. #define LEVEL2_KILLS 100
  51. #define LEVEL3_KILLS 500
  52. #define LEVEL4_KILLS 1000
  53. #define LEVEL5_KILLS 2000
  54.  
  55. // Glow színek
  56. #define GLOW_LEGENDARY_R 255
  57. #define GLOW_LEGENDARY_G 215
  58. #define GLOW_LEGENDARY_B 0
  59.  
  60. new g_vault;
  61.  
  62. // Per-player, per-weapon kill count
  63. new g_weaponKills[MAX_PLAYERS + 1][MAX_WEAPONS];
  64. // Per-player, per-weapon level
  65. new g_weaponLevel[MAX_PLAYERS + 1][MAX_WEAPONS];
  66.  
  67. // Puzzle darabok fegyverenként (egyszerűsítve: csak AK47-re mutatok példát, de struktúra általános)
  68. new g_puzzlePieces[MAX_PLAYERS + 1][MAX_WEAPONS];
  69.  
  70. // HUD sync
  71. new g_hudSync;
  72.  
  73. // Cvarok
  74. new cvar_puzzle_enable;
  75. new cvar_debug;
  76.  
  77. // Helper: weapon index mapping (CSW_*)
  78. new const g_weaponNames[MAX_WEAPONS][] = {
  79.     "",         // 0
  80.     "p228",     // 1 = CSW_P228
  81.     "",         // 2
  82.     "scout",    // 3
  83.     "hegrenade",// 4
  84.     "xm1014",   // 5
  85.     "",         // 6
  86.     "mac10",    // 7
  87.     "aug",      // 8
  88.     "",         // 9
  89.     "elite",    // 10
  90.     "fiveseven",// 11
  91.     "ump45",    // 12
  92.     "sg550",    // 13
  93.     "galil",    // 14
  94.     "famas",    // 15
  95.     "usp",      // 16
  96.     "glock18",  // 17
  97.     "awp",      // 18
  98.     "mp5navy",  // 19
  99.     "m249",     // 20
  100.     "m3",       // 21
  101.     "m4a1",     // 22
  102.     "tmp",      // 23
  103.     "g3sg1",    // 24
  104.     "",         // 25
  105.     "deagle",   // 26
  106.     "sg552",    // 27
  107.     "ak47",     // 28
  108.     "knife",    // 29
  109.     "p90"       // 30
  110.     // 31, 32 nem kell
  111. };
  112.  
  113. public plugin_init()
  114. {
  115.     register_plugin(PLUGIN, VERSION, AUTHOR);
  116.  
  117.     RegisterHam(Ham_Killed, "player", "fw_PlayerKilled", 1);
  118.  
  119.     register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
  120.  
  121.     g_hudSync = CreateHudSyncObj();
  122.  
  123.     cvar_puzzle_enable = register_cvar("wp_puzzle_enable", "1");
  124.     cvar_debug         = register_cvar("wp_debug", "0");
  125.  
  126.     g_vault = nvault_open("weapon_progression");
  127.     if (g_vault == INVALID_HANDLE)
  128.     {
  129.         log_amx("[WP] nVault open failed!");
  130.     }
  131.  
  132.     register_clcmd("say /wp", "cmd_ShowWeaponInfo");
  133.     register_clcmd("say_team /wp", "cmd_ShowWeaponInfo");
  134.     register_clcmd("say /prestige", "cmd_PrestigeReset");
  135. }
  136.  
  137. public plugin_end()
  138. {
  139.     if (g_vault != INVALID_HANDLE)
  140.         nvault_close(g_vault);
  141. }
  142.  
  143. public client_authorized(id)
  144. {
  145.     load_player_data(id);
  146. }
  147.  
  148. public client_disconnect(id)
  149. {
  150.     save_player_data(id);
  151. }
  152.  
  153. // Új kör: friss HUD
  154. public event_NewRound()
  155. {
  156.     for (new id = 1; id <= MAX_PLAYERS; id++)
  157.     {
  158.         if (is_user_connected(id))
  159.         {
  160.             show_weapon_hud(id);
  161.         }
  162.     }
  163. }
  164.  
  165. // Kill event
  166. public fw_PlayerKilled(victim, attacker, shouldgib)
  167. {
  168.     if (!is_user_connected(attacker) || attacker == victim)
  169.         return HAM_IGNORED;
  170.  
  171.     if (!is_user_alive(attacker))
  172.         return HAM_IGNORED;
  173.  
  174.     new weapon = get_user_weapon(attacker);
  175.     if (weapon <= 0 || weapon >= MAX_WEAPONS)
  176.         return HAM_IGNORED;
  177.  
  178.     // Kill számláló növelése
  179.     g_weaponKills[attacker][weapon]++;
  180.  
  181.     // Szint ellenőrzés
  182.     check_level_up(attacker, weapon);
  183.  
  184.     // Szint bónuszok alkalmazása
  185.     apply_kill_bonuses(attacker, weapon);
  186.  
  187.     // Puzzle drop
  188.     if (get_pcvar_num(cvar_puzzle_enable))
  189.     {
  190.         try_puzzle_drop(attacker, weapon);
  191.     }
  192.  
  193.     // HUD frissítés
  194.     show_weapon_hud(attacker);
  195.  
  196.     return HAM_IGNORED;
  197. }
  198.  
  199. // Szint meghatározása kill alapján
  200. stock get_level_from_kills(kills)
  201. {
  202.     if (kills >= LEVEL5_KILLS) return 5;
  203.     if (kills >= LEVEL4_KILLS) return 4;
  204.     if (kills >= LEVEL3_KILLS) return 3;
  205.     if (kills >= LEVEL2_KILLS) return 2;
  206.     return 1;
  207. }
  208.  
  209. // Szintlépés ellenőrzés
  210. stock check_level_up(id, weapon)
  211. {
  212.     new oldLevel = g_weaponLevel[id][weapon];
  213.     new newLevel = get_level_from_kills(g_weaponKills[id][weapon]);
  214.  
  215.     if (newLevel > oldLevel)
  216.     {
  217.         g_weaponLevel[id][weapon] = newLevel;
  218.  
  219.         new name[32];
  220.         get_user_name(id, name, charsmax(name));
  221.  
  222.         new wname[32];
  223.         get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  224.  
  225.         // Szintlépés üzenet
  226.         client_print_color(0, print_chat, "^4[WP]^1 %s fegyvere (^3%s^1) elérte a ^3%d. szintet!", name, wname, newLevel);
  227.  
  228.         // Legendary szint globális üzenet
  229.         if (newLevel == 5)
  230.         {
  231.             client_print_color(0, print_chat, "^4[WP]^1 %s elérte a ^3LEGENDARY^1 szintet a ^3%s^1 fegyverrel! ^4[Weapon Master]", name, wname);
  232.         }
  233.     }
  234. }
  235.  
  236. // Kill bónuszok alkalmazása szint alapján
  237. stock apply_kill_bonuses(id, weapon)
  238. {
  239.     new level = g_weaponLevel[id][weapon];
  240.  
  241.     // LEVEL 2 – Trained (100 ölés)
  242.     // • +5 HP minden ölés után
  243.     if (level >= 2)
  244.     {
  245.         new hp = get_user_health(id);
  246.         set_user_health(id, hp + 5);
  247.     }
  248.  
  249.     // LEVEL 3 – Elite (500 ölés)
  250.     // • +5% coin bónusz ölésenként
  251.     // • Kill chat effekt
  252.     // • Fegyver név kiemelve
  253.     if (level >= 3)
  254.     {
  255.         new name[32];
  256.         get_user_name(id, name, charsmax(name));
  257.  
  258.         new wname[32];
  259.         get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  260.  
  261.         client_print_color(0, print_chat, "^4[WP]^1 Elite kill: ^3%s^1 - ^4%s", name, wname);
  262.  
  263.         // Itt tudod hívni a saját coin rendszeredet, pl:
  264.         // wp_add_coins(id, damage * 0.05);
  265.     }
  266.  
  267.     // LEVEL 4 – Master (1000 ölés)
  268.     // • Speciális kill effekt (villanás / glow)
  269.     // • +10% XP bónusz
  270.     if (level >= 4)
  271.     {
  272.         // Képernyő villanás
  273.         screen_fade(id, 50, 50, 50, 0, 0, 255, 100);
  274.  
  275.         // Itt tudod hívni az XP rendszeredet, pl:
  276.         // wp_add_xp(id, base_xp * 0.10);
  277.     }
  278.  
  279.     // LEVEL 5 – Legendary (2000 ölés)
  280.     // • Arany aura effekt
  281.     // • +15% XP bónusz
  282.     // • "Weapon Master" jelvény
  283.     // • Globális üzenet eléréskor (szintlépésnél már küldtük)
  284.     if (level >= 5)
  285.     {
  286.         // Arany glow
  287.         set_user_rendering(id, kRenderFxGlowShell, GLOW_LEGENDARY_R, GLOW_LEGENDARY_G, GLOW_LEGENDARY_B, kRenderNormal, 16);
  288.  
  289.         // Itt plusz XP:
  290.         // wp_add_xp(id, base_xp * 0.15);
  291.     }
  292. }
  293.  
  294. // HUD megjelenítés: Weapon XP Progress Bar + szint
  295. stock show_weapon_hud(id)
  296. {
  297.     if (!is_user_connected(id))
  298.         return;
  299.  
  300.     new weapon = get_user_weapon(id);
  301.     if (weapon <= 0 || weapon >= MAX_WEAPONS)
  302.         return;
  303.  
  304.     new kills = g_weaponKills[id][weapon];
  305.     new level = g_weaponLevel[id][weapon];
  306.  
  307.     new nextLevelKills;
  308.     switch (level)
  309.     {
  310.         case 1: nextLevelKills = LEVEL2_KILLS;
  311.         case 2: nextLevelKills = LEVEL3_KILLS;
  312.         case 3: nextLevelKills = LEVEL4_KILLS;
  313.         case 4: nextLevelKills = LEVEL5_KILLS;
  314.         default: nextLevelKills = LEVEL5_KILLS;
  315.     }
  316.  
  317.     new currentLevelBaseKills;
  318.     switch (level)
  319.     {
  320.         case 1: currentLevelBaseKills = 0;
  321.         case 2: currentLevelBaseKills = LEVEL2_KILLS;
  322.         case 3: currentLevelBaseKills = LEVEL3_KILLS;
  323.         case 4: currentLevelBaseKills = LEVEL4_KILLS;
  324.         case 5: currentLevelBaseKills = LEVEL5_KILLS;
  325.     }
  326.  
  327.     new diff = nextLevelKills - currentLevelBaseKills;
  328.     new progress = kills - currentLevelBaseKills;
  329.     if (progress < 0) progress = 0;
  330.     if (progress > diff) progress = diff;
  331.  
  332.     new Float:percent = diff > 0 ? float(progress) / float(diff) : 1.0;
  333.  
  334.     new bar[32];
  335.     make_progress_bar(percent, bar, charsmax(bar));
  336.  
  337.     new wname[32];
  338.     get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  339.  
  340.     set_hudmessage(0, 255, 0, 0.02, 0.20, 0, 0.0, 1.0, 0.0, 0.0, -1);
  341.     ShowSyncHudMsg(id, g_hudSync, "Fegyver: %s^nSzint: %d^nXP: %d / %d^n%s",
  342.         wname, level, kills, nextLevelKills, bar);
  343. }
  344.  
  345. // Progress bar generálása
  346. stock make_progress_bar(Float:percent, bar[], len)
  347. {
  348.     new total = 20;
  349.     new filled = floatround(percent * total);
  350.  
  351.     if (filled > total) filled = total;
  352.     if (filled < 0) filled = 0;
  353.  
  354.     new i;
  355.     new pos = 0;
  356.     bar[pos++] = '[';
  357.  
  358.     for (i = 0; i < total; i++)
  359.     {
  360.         if (i < filled)
  361.             bar[pos++] = '#';
  362.         else
  363.             bar[pos++] = '-';
  364.     }
  365.  
  366.     bar[pos++] = ']';
  367.     bar[pos] = 0;
  368. }
  369.  
  370. // Puzzle drop rendszer
  371. stock try_puzzle_drop(id, weapon)
  372. {
  373.     // Példa: csak AK47-re legyen puzzle (CSW_AK47 = 28)
  374.     if (weapon != CSW_AK47)
  375.         return;
  376.  
  377.     new r = random_num(1, PUZZLE_CHANCE_DEN);
  378.     if (r <= PUZZLE_CHANCE_NUM)
  379.     {
  380.         g_puzzlePieces[id][weapon]++;
  381.  
  382.         new name[32];
  383.         get_user_name(id, name, charsmax(name));
  384.  
  385.         client_print_color(id, print_chat, "^4[WP]^1 Szerencsés vagy! Szereztél egy ^3AK47 Puzzle^1 darabot. (^3%d/%d^1)",
  386.             g_puzzlePieces[id][weapon], PUZZLE_PIECES_NEED);
  387.  
  388.         if (get_pcvar_num(cvar_debug))
  389.         {
  390.             log_amx("[WP] Puzzle drop: id=%d weapon=%d pieces=%d", id, weapon, g_puzzlePieces[id][weapon]);
  391.         }
  392.  
  393.         if (g_puzzlePieces[id][weapon] >= PUZZLE_PIECES_NEED)
  394.         {
  395.             g_puzzlePieces[id][weapon] -= PUZZLE_PIECES_NEED;
  396.  
  397.             // Itt adhatod a skint, vagy hívhatsz másik plugint
  398.             // pl: wp_give_skin(id, "ak47_rare_skin");
  399.  
  400.             new wname[32];
  401.             get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  402.  
  403.             client_print_color(0, print_chat, "^4[WP]^1 %s összegyűjtött ^3%d^1 darab ^3%s Puzzle^1-t és kraftolt egy skint!",
  404.                 name, PUZZLE_PIECES_NEED, wname);
  405.         }
  406.     }
  407. }
  408.  
  409. // Prestige reset – minden fegyver reset
  410. public cmd_PrestigeReset(id)
  411. {
  412.     if (!is_user_connected(id))
  413.         return PLUGIN_HANDLED;
  414.  
  415.     // Egyszerű példa: megerősítés nélkül
  416.     for (new w = 0; w < MAX_WEAPONS; w++)
  417.     {
  418.         g_weaponKills[id][w] = 0;
  419.         g_weaponLevel[id][w] = 1;
  420.     }
  421.  
  422.     client_print_color(id, print_chat, "^4[WP]^1 Prestige reset: minden fegyver fejlődése nullázva!");
  423.  
  424.     show_weapon_hud(id);
  425.  
  426.     return PLUGIN_HANDLED;
  427. }
  428.  
  429. // /wp – aktuális fegyver info
  430. public cmd_ShowWeaponInfo(id)
  431. {
  432.     if (!is_user_connected(id))
  433.         return PLUGIN_HANDLED;
  434.  
  435.     new weapon = get_user_weapon(id);
  436.     if (weapon <= 0 || weapon >= MAX_WEAPONS)
  437.     {
  438.         client_print_color(id, print_chat, "^4[WP]^1 Nincs aktív fegyvered.");
  439.         return PLUGIN_HANDLED;
  440.     }
  441.  
  442.     new kills = g_weaponKills[id][weapon];
  443.     new level = g_weaponLevel[id][weapon];
  444.  
  445.     new wname[32];
  446.     get_weapon_name_by_csw(weapon, wname, charsmax(wname));
  447.  
  448.     client_print_color(id, print_chat, "^4[WP]^1 Fegyver: ^3%s^1 | Szint: ^3%d^1 | Ölések: ^3%d", wname, level, kills);
  449.  
  450.     show_weapon_hud(id);
  451.  
  452.     return PLUGIN_HANDLED;
  453. }
  454.  
  455. // Fegyver név CSW alapján
  456. stock get_weapon_name_by_csw(csw, name[], len)
  457. {
  458.     if (csw > 0 && csw < MAX_WEAPONS && g_weaponNames[csw][0])
  459.     {
  460.         copy(name, len, g_weaponNames[csw]);
  461.     }
  462.     else
  463.     {
  464.         copy(name, len, "Ismeretlen");
  465.     }
  466. }
  467.  
  468. // Screen fade effekt
  469. stock screen_fade(id, holdtime, fadetime, r, g, b, alpha)
  470. {
  471.     message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, id);
  472.     write_short((holdtime & 0xFFFF));
  473.     write_short((fadetime & 0xFFFF));
  474.     write_short(0x0000);
  475.     write_byte(r);
  476.     write_byte(g);
  477.     write_byte(b);
  478.     write_byte(alpha);
  479.     message_end();
  480. }
  481.  
  482. // nVault mentés / betöltés
  483. stock save_player_data(id)
  484. {
  485.     if (g_vault == INVALID_HANDLE || !is_user_connected(id))
  486.         return;
  487.  
  488.     new authid[35];
  489.     get_user_authid(id, authid, charsmax(authid));
  490.  
  491.     new key[64], value[256];
  492.  
  493.     // Összefűzzük az adatokat: kills;levels;puzzles
  494.     // Formátum: weapon:kill,weapon:kill,...|weapon:level,...|weapon:puzzle,...
  495.     new killsStr[128], levelsStr[128], puzzleStr[128];
  496.     killsStr[0] = 0;
  497.     levelsStr[0] = 0;
  498.     puzzleStr[0] = 0;
  499.  
  500.     new temp[32];
  501.     for (new w = 1; w < MAX_WEAPONS; w++)
  502.     {
  503.         if (!g_weaponNames[w][0])
  504.             continue;
  505.  
  506.         formatex(temp, charsmax(temp), "%d:%d;", w, g_weaponKills[id][w]);
  507.         add(killsStr, charsmax(killsStr), temp);
  508.  
  509.         formatex(temp, charsmax(temp), "%d:%d;", w, g_weaponLevel[id][w]);
  510.         add(levelsStr, charsmax(levelsStr), temp);
  511.  
  512.         formatex(temp, charsmax(temp), "%d:%d;", w, g_puzzlePieces[id][w]);
  513.         add(puzzleStr, charsmax(puzzleStr), temp);
  514.     }
  515.  
  516.     formatex(value, charsmax(value), "%s|%s|%s", killsStr, levelsStr, puzzleStr);
  517.     formatex(key, charsmax(key), "%s_wp", authid);
  518.  
  519.     nvault_set(g_vault, key, value);
  520. }
  521.  
  522. stock load_player_data(id)
  523. {
  524.     if (g_vault == INVALID_HANDLE || !is_user_connected(id))
  525.         return;
  526.  
  527.     new authid[35];
  528.     get_user_authid(id, authid, charsmax(authid));
  529.  
  530.     new key[64], value[256];
  531.     formatex(key, charsmax(key), "%s_wp", authid);
  532.  
  533.     if (!nvault_get(g_vault, key, value, charsmax(value)))
  534.     {
  535.         // Nincs adat, alapértékek
  536.         for (new w = 0; w < MAX_WEAPONS; w++)
  537.         {
  538.             g_weaponKills[id][w] = 0;
  539.             g_weaponLevel[id][w] = 1;
  540.             g_puzzlePieces[id][w] = 0;
  541.         }
  542.         return;
  543.     }
  544.  
  545.     // value: kills|levels|puzzles
  546.     new killsStr[128], levelsStr[128], puzzleStr[128];
  547.     parse3(value, killsStr, charsmax(killsStr), levelsStr, charsmax(levelsStr), puzzleStr, charsmax(puzzleStr));
  548.  
  549.     // Kills
  550.     new item[32], pos;
  551.     pos = 0;
  552.     while (strlen(killsStr) > 0 && strtok2(killsStr, item, charsmax(item), killsStr, charsmax(killsStr), ';', pos))
  553.     {
  554.         new w, k;
  555.         if (sscanf(item, "d:d", w, k))
  556.             continue;
  557.  
  558.         if (w > 0 && w < MAX_WEAPONS)
  559.             g_weaponKills[id][w] = k;
  560.     }
  561.  
  562.     // Levels
  563.     pos = 0;
  564.     while (strlen(levelsStr) > 0 && strtok2(levelsStr, item, charsmax(item), levelsStr, charsmax(levelsStr), ';', pos))
  565.     {
  566.         new w, l;
  567.         if (sscanf(item, "d:d", w, l))
  568.             continue;
  569.  
  570.         if (w > 0 && w < MAX_WEAPONS)
  571.             g_weaponLevel[id][w] = l;
  572.     }
  573.  
  574.     // Puzzles
  575.     pos = 0;
  576.     while (strlen(puzzleStr) > 0 && strtok2(puzzleStr, item, charsmax(item), puzzleStr, charsmax(puzzleStr), ';', pos))
  577.     {
  578.         new w, p;
  579.         if (sscanf(item, "d:d", w, p))
  580.             continue;
  581.  
  582.         if (w > 0 && w < MAX_WEAPONS)
  583.             g_puzzlePieces[id][w] = p;
  584.     }
  585. }
  586.  
  587. // Segéd: 3 részre bontás '|' alapján
  588. stock parse3(const input[], out1[], len1, out2[], len2, out3[], len3)
  589. {
  590.     new tmp[256];
  591.     copy(tmp, charsmax(tmp), input);
  592.  
  593.     new p1 = contain(tmp, "|");
  594.     if (p1 == -1)
  595.     {
  596.         copy(out1, len1, tmp);
  597.         out2[0] = 0;
  598.         out3[0] = 0;
  599.         return;
  600.     }
  601.  
  602.     tmp[p1] = 0;
  603.     copy(out1, len1, tmp);
  604.  
  605.     new p2 = contain(tmp[p1 + 1], "|");
  606.     if (p2 == -1)
  607.     {
  608.         copy(out2, len2, tmp[p1 + 1]);
  609.         out3[0] = 0;
  610.         return;
  611.     }
  612.  
  613.     tmp[p1 + 1 + p2] = 0;
  614.     copy(out2, len2, tmp[p1 + 1]);
  615.     copy(out3, len3, tmp[p1 + 1 + p2 + 1]);
  616. }

_________________
<<eb@>> Furien Hero
37.221.209.184:27004

<<eb@>> OnlyDust2
37.221.209.184:27002

--------------------------------

Zombie Mutation

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2026.02.24. 21:50 
Offline
Nagyúr
Avatar

Csatlakozott:2019.08.20. 18:19
Hozzászólások:515
Megköszönt másnak: 251 alkalommal
Megköszönték neki: 46 alkalommal
DexoN írta:
Kiemelkedően gyorsan pörögnek az ujjaid. Kávé a titka? :tea:

Csabika20034 írta:
Mivel gépnél vagyok, fejlesztem a weboldalam, közbe megpróbáltam írni egy példát, tesztelni nem teszteltem!


Az agyában és az ujjaiban van már a mesterséges (inteligencia) :lol:

_________________
► Spoiler mutatása


Csabika20034 írta:
Hello, adsz nekem tesztre egy cs1.6 szervert?



Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2026.02.25. 01:45 
Offline
Tiszteletbeli
Avatar

Csatlakozott:2011.09.18. 13:01
Hozzászólások:4277
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 518 alkalommal
8mTNNe írta:
Gyerekek, ennyire ki halt a cs közönség? :/ Hol vannak azok a régi nagy szerverek amiken felnőttem? :cry:
Gondolok, Eba, Rwt HWD D2/AWP és stb. Adnák megint valami komoly fun szervert, régi playerekkel.

Nagyon regi nagy szerverek lehettek ha a listabol csak kettut ismerek. Hunvan a tenyleg regi nagy szerver lista?: Death of legends? Afterlife? TheRockBottoM? Hyperkocka? WaterWave? Diwat? Meg volt meg egy rakat random szerver amik tobbnyire fullosak voltak :D es aktiv kozosseg volt 1 szerverrel.

Igazabol mar akkor szetkurodott sok kozosseg amikor bejott a ddos tamadasok napja. Mindenki kereste a hosztingot ami "ddos" vedett mert azelott semelyik se volt az konkretan. Sok IP-valtas miatt kihaltak mind.
A stabil hosztingok tobbsege is kihalt vele egyutt. Aztan jottek a 12 eves palik.
A regebbi 3 nagy hostbol csak 1 fut mai nap az a synhosting. (Bar azis atesett par kezen gondolom)
Amugy itt van az elso zombie szerver 15 evvel ezelottrol amelyiken aktivan nyomattam mint jatekos:
https://www.youtube.com/watch?v=ynMwZnCdvBE

_________________
Idk. Csak ugy funbooo.
Kép

Ők köszönték meg DeteCT0R nek ezt a hozzászólást: 8mTNNe (2026.02.25. 08:07)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Tegnap, 14:08 
Offline
Jómunkásember
Avatar

Csatlakozott:2016.02.27. 17:55
Hozzászólások:376
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 63 alkalommal
8mTNNe írta:
Gyerekek, ennyire ki halt a cs közönség? :/ Hol vannak azok a régi nagy szerverek amiken felnőttem? :cry:
Gondolok, Eba, Rwt HWD D2/AWP és stb. Adnák megint valami komoly fun szervert, régi playerekkel.


Nincs már játékosbázis 1.6ra. Szervert futtatok mai napig, de nem foglalkozok már vele napi szinten. Van 'oszt jóvanazúgy'.
HWD D2/AWP-t miután átraktam only steamre a sok csaló miatt, játékos nem maradt, így hát újra már nem is kezdtük non-steam formációban.

_________________
Kép
www.hunwhitedevil.hu

Ők köszönték meg koko.988 nek ezt a hozzászólást: 8mTNNe (Tegnap, 15:34)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Tegnap, 19:55 
Offline
Nagyúr
Avatar

Csatlakozott:2019.08.20. 18:19
Hozzászólások:515
Megköszönt másnak: 251 alkalommal
Megköszönték neki: 46 alkalommal
[hiba]8mTNNe írta:
csá

van eladó skin rendszerem érint?
900ft oda adom.
[/hiba]


Miért írsz ki olyant ami nem igaz? te szerencsétlen legalja? :lol: :lol:

Fbn könyörögtél minden pluginért weboldalért szerverért ne verd itt magad kisgyerek :lol: :lol:

_________________
► Spoiler mutatása


Csabika20034 írta:
Hello, adsz nekem tesztre egy cs1.6 szervert?



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  [39347 hozzászólás ]  OldalElőző139313932393339343935Következő


Ki van itt

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