1 mesaj
Membru Începător Membru Începător
  • Mesaje: 13
  • Reacții: 9
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Chunjo
  • Medalii

    *Descriere:
    METIN2 KILL BAR SISTEM BY Zeth - PREZENTARE COMPLETA (A-Z)
    ================================================================================
    Server: martysama 5.8
    Data: 2026-05-03
    Realizat: Zeth
    ================================================================================


    [1] DESCRIERE FUNCTIONALA
    ================================================================================

    Sistemul Kill Bar este o functie orientata PvP care arata tuturor jucatorilor
    de pe aceeasi harta cine pe cine a omorat. Contine:

    - Notificare Kill Bar: cine omoara pe cine (nume + iconita clasa + arma)
    - Contor K/D (Kills / Deaths) - salvat in DB, per personaj
    - Sistem cu 6 niveluri (tier) de efecte bazate pe numarul de kill-uri
    - Efect de notificare moarte: ecran gri-cenusiu slow-motion + "YOU DIED"
    - Efect Tier 5 (epic): se poate debloca DOAR cu itemul EPIC KILL BAR TOKEN
    - Limita 5000: peste 5000 kill-uri nu mai creste contorul
    - Suport pentru Wolfman (om-lup)


    [2] SISTEM DE TIER-URI
    ================================================================================

    Tier 0 (0-999 kill): Default - text alb, ThinBoard simplu
    Tier 1 (1000-1999 kill): Fundal smoke nuanta bronz, badge
    Tier 2 (2000-2999 kill): Fundal smoke nuanta argint, badge [II]
    Tier 3 (3000-3999 kill): Fundal smoke nuanta auriu, badge [III]
    Tier 4 (4000-4999 kill): Fundal smoke rosu-foc, badge [IV]
    Tier 5 (5000+ kill): LEGENDAR - glow mov pulsatoriu, nume alb vibrant,
    badge [V] - DOAR dupa activarea Epic Kill Bar Token!


    [3] NOTIFICARE DE MOARTE
    ================================================================================

    La moartea proprie (vede doar jucatorul mort):
    - Overlay gri-cenusiu (0x303030) pe tot ecranul
    - 0.7s fade-in -> 0.6s peak -> 2.7s fade-out (4 secunde total)
    - Text "YOU DIED" alb in centru
    - Doar efect vizual (NU incetineste jocul)


    [4] EPIC KILL BAR TOKEN (vnum 70000)
    ================================================================================

    ITEM_TYPE: ITEM_USE
    SUB_TYPE: USE_SPECIAL
    ANTI_FLAG: NONE (poate fi aruncat, vandut, dat, MyShop OK)
    SIZE: 1

    Efect:
    - Foloseste-l o data pe personaj -> deblocare permanenta in DB
    - Efectul Tier 5 epic (peste 5000 kill) SE ACTIVEAZA
    - Itemul se consuma
    - Daca este deja activ: mesaj "Epic Kill Bar este activ!"


    [5] STRUCTURA BAZEI DE DATE
    ================================================================================

    Tabel: kill_stats (in baza de date player)

    Coloane:
    pid INT UNSIGNED PRIMARY KEY - ID personaj (egal cu player.id)
    kills INT UNSIGNED DEFAULT 0 - numarul de kill-uri PvP
    deaths INT UNSIGNED DEFAULT 0 - numarul de morti
    epic_effect TINYINT DEFAULT 0 - 0/1, daca Token a fost activat

    Comenzi SQL:
    CREATE TABLE kill_stats (
    pid INT UNSIGNED NOT NULL PRIMARY KEY,
    kills INT UNSIGNED NOT NULL DEFAULT 0,
    deaths INT UNSIGNED NOT NULL DEFAULT 0,
    epic_effect TINYINT NOT NULL DEFAULT 0
    ) ENGINE=InnoDB;


    [6] FORMAT PACKET (HEADER_GC_KILLBAR = 218)
    ================================================================================

    typedef struct command_kill_bar {
    BYTE bHeader; // 218
    BYTE bKillerRace; // rasa/clasa killer
    BYTE bKillerWeaponType; // subtype arma killer
    BYTE bVictimRace; // rasa/clasa victima
    char szKiller[CHARACTER_NAME_MAX_LEN + 1]; // numele killer
    char szVictim[CHARACTER_NAME_MAX_LEN + 1]; // numele victimei
    DWORD dwKillerKills; // kill-uri killer
    DWORD dwKillerDeaths; // morti killer
    DWORD dwVictimKills; // kill-uri victima
    DWORD dwVictimDeaths; // morti victima
    BYTE bKillerEpicEffect; // 0/1 efect epic activ
    } TPacketGCKillBar;


    [7] LOGICA BROADCAST (server)
    ================================================================================

    Packetul kill bar ajunge la TOTI jucatorii de pe ACEEASI harta:

    const DESC_MANAGER::DESC_SET& c_set_desc = DESC_MANAGER::instance().GetClientSet();
    for each LPDESC d_c in c_set_desc:
    LPCHARACTER c_c = d_c->GetCharacter();
    if (pkKiller->GetMapIndex() != c_c->GetMapIndex())
    continue;
    d_c->Packet(&kb, sizeof(kb));

    -> Caseta K/D este vizibila DOAR daca killer SAU victim == jucator local
    -> Culorile tier-urilor le vad TOTI (efect public)


    [8] VERIFICARE NIVEL
    ================================================================================

    Nu exista prag explicit de nivel - ORICE kill PvP conteaza.
    DAR: standardul martysama -> sub PK_PROTECT_LEVEL (15) este activ PK-Protect,
    deci practic doar de la nivel 15+ se poate omori/muri.

    Daca este nevoie, se poate adauga un check explicit in char_battle.cpp:
    if (pkKiller->GetLevel() < 30) return; // exemplu


    [9] LISTA DEPLOYMENT
    ================================================================================

    [X] SQL: CREATE TABLE kill_stats executat
    [X] Server source: 6 fisiere modificate, recompilat (gmake clean && gmake -j)
    [X] Restart server
    [X] Client source: 6 fisiere modificate, Visual Studio Rebuild Solution
    [X] metin2client.exe nou in folderul de joc
    [X] Python: 3 fisiere copiate (game.py, interfacemodule.py, uiminimap.py)
    [X] item_proto.txt + item_names.txt actualizate (vnum 70000)
    [X] Iconite clase + arme copiate (pack/icon/kill_bar/)


    [10] CAI DE FISIERE LA UTILIZATOR
    ================================================================================

    Foldere de lucru PC:
    +- common\service.h
    +- src\char.h, char.cpp, char_item.cpp, char_battle.cpp, packet.h
    +- root\game.py, interfacemodule.py, uiminimap.py
    +- Client\UserInterface\(copii)
    +- item_proto.txt, item_names.txt

    C:\Client-Source\Srcs\Client\UserInterface\
    -> Source-ul real de build al clientului (VS compileaza acesta)


    [11] REPARATIE BUG - INCIDENT CP949
    ================================================================================

    PROBLEMA: Tool-ul Edit/Read al Claude Code citeste in UTF-8, deci caracterele
    coreene CP949 (string-uri LC_TEXT in cpp server, nume itemi in proto) au fost
    inlocuite cu U+FFFD replacement char la salvare.

    FISIERE AFECTATE: char.cpp, char_item.cpp, char_battle.cpp, item_proto.txt,
    item_names.txt

    SOLUTIE:
    - Restaurare fisiere clean din backup OneDrive ianuarie
    - Inserare cod Kill Bar cu operatii byte-safe perl/sed (LC_ALL=C)
    - Verificare: 0 replacement chars in toate fisierele

    PROTECTIE PE VIITOR:
    - Creat fisier memorie cp949_safety.md
    - Inainte de a edita orice fisier Metin2 cpp/proto/locale: verificare CP949
    - Daca exista bytes CP949: doar operatii byte-safe perl/sed


    [12] PROCEDURA DE TESTARE
    ================================================================================

    1. Verificare SQL:
    SELECT * FROM kill_stats LIMIT 10;

    2. Adauga item:
    /item 70000 (comanda GM)

    3. Foloseste Token-ul:
    Click dreapta din inventar -> mesaj "Epic Kill Bar activ!"

    4. Verificare DB:
    SELECT * FROM kill_stats WHERE pid = (SELECT id FROM player WHERE name='X');
    -> epic_effect = 1

    5. Test kill:
    Omoara alt personaj -> kill bar apare

    6. Test tier (5000+ kill):
    UPDATE kill_stats SET kills = 4999 WHERE pid = ...;
    -> Omoara pe cineva -> efect Tier 5 epic (puls mov)

    7. Test moarte:
    Mori -> ecran gri-cenusiu slow-motion + "YOU DIED"


    [13] URMATORII PASI / TODO
    ================================================================================

    [ ] Reglare fina efecte Tier 1-4 (acum doar Tier 0 default si Tier 5 epic):
    - Tier 1 bronz: glow slab + smoke
    - Tier 2 argint: glow mai clar
    - Tier 3 auriu: glow puternic
    - Tier 4 foc: pulsare lenta

    [ ] Alte functii dorite:
    - Clasament kill UI
    - Contor killing spree
    - Efecte sonore pentru Tier 5
    - Sistem achievement
    - K/D in echipa (party)


    ================================================================================
    SFARSIT - sistemul functioneaza!
    ================================================================================


    ****************************************************************************
    CONTACT / DISTRIBUIRE
    ****************************************************************************

    Daca esti interesat de acest sistem si vrei sa-l ai si tu pe serverul tau,
    te rog scrie-mi in PRIVAT.

    Pretul include implementarea completa pe serverul tau:
    - Toate modificarile de cod (server + client)
    - Configurare DB
    - Compilare client
    - Suport pentru integrare
    - Testare
    - Pret 60 Euro
    - Contact whatsapp 0726335989

    Detalii in privat sau pe whatsapp!

    ****************************************************************************


    *Poze / Video:

    *Preț (obligatoriu): 60 Euro

    *Modalități plată (obligatoriu): Transfer Bancar (Revolut / BRD)

    *Timp de livrare (obligatoriu): Maxim 2h

    *Alte condiții:

    *Date contact: Whatsapp 0726335989

    *Declar că voi livra produsul în termenii menționați mai sus și înțeleg că, în cazul nerespectării acestora, pot fi supus unei reclamații: Da!

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Sisteme de vânzare”

    Informații

    Utilizatori ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator

    Discord ID copiat: