hlmod.hu

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



Jelenlévő felhasználók

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

A legtöbb felhasználó (2883 fő) 2025.07.30. 16:00-kor tartózkodott itt.

Regisztrált felhasználók: Baidu [Spider]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  [39333 hozzászólás ]  OldalElőző139303931393239333934
Szerző Üzenet
 Hozzászólás témája:
HozzászólásElküldve:Ma, 16:08 
Offline
Jómunkásember
Avatar

Csatlakozott:2019.11.03. 22:00
Hozzászólások:397
Megköszönt másnak: 37 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.
═══════════════════════════════════════════════════════════════════════

_________________
~Cs1.6 Webem
~Script Webem


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Ma, 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: 203 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:Ma, 20:19 
Offline
Jómunkásember
Avatar

Csatlakozott:2019.11.03. 22:00
Hozzászólások:397
Megköszönt másnak: 37 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. }

_________________
~Cs1.6 Webem
~Script Webem


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  [39333 hozzászólás ]  OldalElőző139303931393239333934


Ki van itt

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