*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.
Autentifică-te
-
Subiecte similare
Informații
Utilizatori ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator
Discord ID copiat:

