aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Metin2

Metin2 Alchemie Systeem: Drakensteen Opzet en Bonussen

Het Metin2 alchemie systeem laat spelers drakenstenen (Dragon Soul Stones) plaatsen om extra bonussen op hun personages te krijgen, en het is een van de meest gevraagde eindgame-mechanieken op elke server. Officieel heet dit systeem Dragon Soul; in het spel verschijnt het als de "alchemie"-interface, en goed opgezet voedt het zowel de servereconomie als de spelersbinding aanzienlijk. In deze gids bouwen we het systeem stap voor stap, van de serverbron tot de clientkant, definiëren we drakenstenen in item_proto en stellen we hun bonussen af via dragon_soul_table.txt.

Hoe het systeem werkt

Het alchemie systeem bestaat uit drie lagen die allemaal gelijk moeten lopen:

  • Serverbron (game/db): deze moet Dragon Soul-ondersteuning bevatten. Officiële 2014+ en de meeste moderne bronnen (TMP4, Marty, enz.) leveren dit mee. Oudere bronnen vereisen dat de functieset handmatig wordt toegevoegd.
  • Database/proto: drakenstenen worden gedefinieerd met een speciaal itemtype (ITEM_DS) en bevinden zich in de alchemie-inventaris.
  • Configuratiebestand: dragon_soul_table.txt bepaalt de grade, step, sterkte van elke steen en welke bonussen hij geeft.

De speler opent de alchemie-NPC of de interface-snelkoppeling (standaard een aparte Dragon Soul-inventaris), plaatst een steen in een slot, en de bonus die past bij het type steen (bijvoorbeeld Oorlog-, Magie-, Ziel- of Mod-drakensteen) en de klasse van het personage wordt actief.

Vereiste bestanden en voorwaarden

Zorg er voordat je begint voor dat het volgende aanwezig is:

  • dragon_soul_table.txt aan serverkant (meestal onder share/locale/<taal>/ of de datamap die je bron leest).
  • dragon_soul.txt aan clientkant plus de Python-scripts van de alchemie-interface (uiDragonSoul.py en de aanroepen in game.py).
  • Het type ITEM_DS gedefinieerd in itemtypes.txt.
  • Databasetoegang: item_proto en een client-item_proto dumptool (bijv. een txt <-> proto converter).

Maak een back-up van elk bestand voordat je het bewerkt. De makkelijkste manier om het drakensteen-systeem te breken is een mismatch creëren tussen de bonusindexen en item_proto.

De drakensteen definiëren in item_proto

Anders dan gewone items worden drakenstenen gedefinieerd met het type ITEM_DS en een subtype voor de steenvariant. Conceptueel draagt een item_proto-regel deze velden:

vnum    name             type      subtype     value0  value1  value2  value3  value4  value5
45301   "Oorlog Drakensteen" ITEM_DS DS_SLOT...   0       1       1       0       0       0

Het cruciale deel zijn de value-velden: ze coderen de grade, step en sterkte van de steen. Deze waarden moeten exact overeenkomen met de definities in dragon_soul_table.txt. Zo niet, dan komt de steen in de inventaris maar geeft hij geen bonus, of laat hij de server crashen.

Vermijd niet-ASCII-tekens in namen; op de meeste bronnen verwacht de proto-lezer een niet-UTF-8-codering. Lever de gelokaliseerde naam via de client-item_names.txt.

De structuur van dragon_soul_table.txt

Dit bestand is het brein van het alchemie systeem. Het is opgedeeld in secties die elk het gedrag van de stenen bepalen:

  • BASIC: hoeveel typen drakensteen-slots er zijn en de algemene telling.
  • GRADE: de kansen en naamgewichten van elke grade (normaal, gezegend, draken, legendarisch, enz.).
  • STEP: de steps binnen dezelfde grade; een hogere step geeft een sterker bonusbereik.
  • STRENGTH / REFINE: de kansen voor het zuiveren/verbeteren (refinen) van een steen.
  • APPLY-tabellen: de bonussen die beschikbaar zijn voor elke combinatie van type + grade + step, met hun min–max waardebereiken.

Gebruik bij het definiëren van bonussen de echte APPLY_*-constanten van het spel. Veelgebruikte:

APPLY_MAX_HP            +HP
APPLY_ATT_GRADE_BONUS  +Aanvalswaarde
APPLY_DEF_GRADE_BONUS  +Verdediging
APPLY_CRITICAL_PCT     +Kritiek %
APPLY_PENETRATE_PCT    +Doordringing %
APPLY_ATTBONUS_MONSTER +Schade tegen monsters

Een bonusregel geeft het APPLY-type en een waardebereik aan; wanneer een steen wordt gegenereerd kiest de server een waarde uit dat bereik (willekeurig of gewogen). Houd de bereiken gebalanceerd: 50% kritiek op één steen geven verwoest meteen de economie en de PvP-balans.

Bonussen gebalanceerd definiëren

Een praktische balansaanpak:

  • Stenen van lage grade geven alleen "veilige" bonussen zoals APPLY_MAX_HP of een kleine verdediging.
  • Sterke procentuele bonussen (kritiek, doordringing, gemiddelde schade) ontgrendelen alleen bij de hoogste grade + hoogste step, in een smal bereik.
  • Verdeel steentypen per klasse: Oorlog-steen voor melee, Magie-steen voor sura/sjamaan-spreuken, Ziel-/Mod-stenen voor ondersteuningsbonussen.

Sla na elke wijziging het bestand op en herstart het game-proces; op de meeste bronnen wordt dragon_soul_table.txt alleen bij het opstarten gelezen, zonder hot-reload.

Clientkant en testen

Zodra de server klaar is, synchroniseer je de client:

  • Houd de client-dragon_soul.txt met dezelfde type/grade/step-structuur als de server.
  • Pak de nieuwe item_proto- en iconbestanden (icon/item/) in de client.
  • Geef voor het testen de steen met een GM-account via /item <vnum>, plaats hem in de alchemie-inventaris en controleer of de bonus in het statuspaneel van het personage verschijnt.

De meest voorkomende fout is een verschil tussen client- en server-proto; de steen verschijnt dan als een "onbekend item" of de client crasht bij plaatsing. De tweede is een typefout in een APPLY-type in dragon_soul_table.txt — die laat de bonus stilletjes vallen, dus controleer altijd het opstartlogboek van de server.

Veelgestelde vragen

Wat als mijn oude serverbron geen Dragon Soul-ondersteuning heeft?

Sommige bronnen van voor 2013 missen de Dragon Soul-engine. In dat geval is overstappen naar een moderne bron (officieel 40k+, op TMP4 of Marty gebaseerd) veel veiliger dan het systeem handmatig backporten; een backport vereist diepe wijzigingen in de item- en personage-engines.

De bonuswaarden verschijnen nooit — wat kan het zijn?

Meestal een van drie oorzaken: de value-velden in item_proto komen niet overeen met dragon_soul_table.txt, een APPLY-constante is verkeerd gespeld, of de client-proto is niet bijgewerkt. Lees de "dragon soul"-regels in het opstartlogboek van de server om te vinden welke.

Hoe kan ik de stenen verfijnen (refinen)?

Verfijnen werkt via de kansen in de REFINE/STRENGTH-sectie van dragon_soul_table.txt. Je combineert een vast aantal stenen van hetzelfde type tot een steen van hogere grade; deze kansen laag houden geeft refine-materialen echte economische waarde.

Wil je het alchemie systeem netjes in je server integreren? Voor hulp bij Dragon Soul-opzet, gebalanceerde bonustabellen en client-packaging, neem contact met me op — laten we samen een crashvrij alchemie systeem bouwen dat past bij jouw bron.

Bu kategorideki tüm yazılar →

Devamı için