– VIP státusz a játékosoknak,
– VIP-hez kötött questek,
– VIP-only tárgyak és vizuális megkülönböztetés (emotikon/effekt).
Célja, hogy jutalmazd az aktív/támogató játékosokat, és extra tartalmat adj a közösségnek.
Letöltés:
[Please login or register to view this link]
- Biztonsági mentés a kliens és szerver fájlokról (root***, pack, quest, item_proto/mob_proto, adatbázis).
- A csomagban található vip_pack.eix/epk és a kapcsolódó fájlok kéznél legyenek.
- Szövegszerkesztő, ami mutatja a behúzásokat (TAB/space).
- Figyelem: A Python fájlok végén legyen 1 üres sor, és ügyelj a TAB-okra (keveredés Python-hibát okoz!).
🖥 KLIENS oldali telepítés
1) root*** kicsomagolása
Csomagold ki a kliens root.*** állományait szerkesztéshez.
2) VIP csomag feltétele
Másold a vip_pack.eix/epk fájlokat a kliensed pack mappájába, majd vedd fel a pack/index állományba a meglévő sorok mintájára (különben nem tölti be a kliens).
3) VIP emotikon/effekt regisztrálása – playersettingmodule.py
Nyisd meg: root/playersettingmodule.py és keresd meg:
Kód: Egész kijelölése
net.RegisterEmoticonString("(fish)")
Kód: Egész kijelölése
chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON + 18, "", EmoticonStr + "vip.mse")
net.RegisterEmoticonString("(vip)")
4) Kilépési parancs (opcionális) – game.py
Nyisd meg: root/game.py, keresd meg:
Kód: Egész kijelölése
def __ServerCommand_Build(self)
Kód: Egész kijelölése
"exit" : self.__exit,
Kód: Egész kijelölése
def __exit(self):
app.Exit()
Keresd:
Kód: Egész kijelölése
def __init__(self, stream):
Kód: Egész kijelölése
self.lastupdate = 0
self.lastupdatee = 0
Kód: Egész kijelölése
def OnUpdate(self):
Kód: Egész kijelölése
import player
findvip = player.GetName()
Kód: Egész kijelölése
self.interface.BUILD_OnUpdate()
Kód: Egész kijelölése
if app.GetGlobalTimeStamp() - self.lastupdate < 0:
self.lastupdate = app.GetGlobalTimeStamp()
if app.GetGlobalTimeStamp() - self.lastupdatee < 0:
self.lastupdatee = app.GetGlobalTimeStamp()
# VIP névtag figyelés + időzített effekt
if findvip.find("[VIP]") != -1:
if self.lastupdate == 0:
self.lastupdate = app.GetGlobalTimeStamp()
if app.GetGlobalTimeStamp() - self.lastupdate >= 5:
self.lastupdate = app.GetGlobalTimeStamp()
net.SendEmoticon(28) # <- IDE írd a VIP_EFFECT_NUM értékét!
6) Mentés és visszacsomagolás
Mentsd a módosításokat, ügyelj az 1 üres sorra a fájlok végén és a TAB-okra. Csomagold vissza a root.***-t, indítsd a klienst és tesztelj.
🗄 SZERVER oldali teendők (ajánlott keretrendszer)
1) Itemek – item_proto
- Vedd fel a VIP-hez tartozó tárgyakat (pl. VIP Card, VIP Chest stb.) a item_proto-ba (server + client oldal).
- Ütközést kerülj: ellenőrizd, hogy a felvett VNUM-ok nem foglaltak.
- Kliens oldalon frissítsd a item_list-et és a szükséges ikon/mesh bejegyzéseket (ha a csomag hozza, használd onnan).
- Tedd be a csomag VIP-hez tartozó questjeit a quest mappába.
- Fordítás: qc <questnev.quest> vagy tömbösen qc.
- reload q (vagy csatorna/servert restart) és ellenőrzés.
- Ha a VIP státuszt item aktiválja: a quest when use item triggerrel állítsa be a VIP flaget/időtartamot.
- Ha VIP NPC szükséges (pl. VIP shop/átalakítás), vedd fel a mob_proto-ba, és helyezd el regen-ben vagy npc.txt-ben.
- Kliens oldali mob_proto-t is frissítsd, ha új NPC-t hozol.
- Minden VIP-only funkciónál ellenőrizd a státuszt (pl. pc.getqf("vip") == 1 vagy időbélyeg alapú vizsgálat).
- VIP lejáratát kezeld (timestamp összevetés – ha lejárt, vedd el a jogot).
- Adj magadnak VIP itemet → használd/aktiváld → nézd, hogy a státusz és a vizuális jelzés is él-e.
- VIP-only quest elérhető-e VIP-ként, és tiltott-e nem VIP-nek?
- Szükség esetén logolj (syslog/syserr) – hibánál questből `syschat`/`say` segítséggel debuggolj.
- VIP effekt nem fut: rossz vagy foglalt VIP_EFFECT_NUM; a vip.mse útvonala hibás; a vip_pack nincs indexelve.
- Python hiba a kliensben: TAB/behúzás hiba vagy hiányzó üres sor a fájl végén. Nézd át editorral, ami mutatja a whitespace-t.
- Quest nem fut: nem fordítottad le (qc); nincs reload q; rossz feltétel (pl. item VNUM).
- Item nem látszik: item_proto (szerver és kliens) nincs szinkronban, hiányzik ikon/mesh, vagy VNUM ütközés.
- VIP státusz „bentragad”: gondold át a lejárati logikát (timestamp), és írd vissza a státuszt rendszeresen.
- VIP Shop – csak VIP-ek láthatják/nyithatják (npc.open_shop előtt VIP ellenőrzés).
- VIP Eventek – külön boss/raid/vadászat VIP-eknek.
- VIP bónuszok – kíméletes, de érezhető előnyök (pl. +kis drop/exp, külön „teleport menü” VIP-nek).
- VIP tag a névben – automatikus [VIP] prefix a névre (vizuális megkülönböztetés).
Ha elakadsz, írj a témába – szívesen segít a közösség!