System C++ [Release] Real Time Affects

DocToRz1911

Utente Silver
16 Marzo 2012
5
1
4
59
Buona sera popolo di inforge.
Questa è la mia prima release che riguarda Metin, ho pensato che potesse tornare utile ad alcuni.
Il System in questione è molto piccolo, ed è stato pensato per ovviare ad un problema riguardate gli affect (o bonus, in un certo senso). Infatti, su metin, il tempo di un affect aggiunto ad un giocatore, viene scalato solamente quando questo è online ed effettivamente in gioco.
L'idea era quella di avere la possibilità di aggiungere alcuni di questi affect (a scelta) e far sì che questi avessero una durata effettiva di X secondi (ore, giorni o settimane).
Metin di per se, presenta la possibilità di aggiungere questi bonus, etichettati come PREMIUM e presenti nella tabella account del database account.

gwqn9l3.png


La mia idea, era quella di poter però aggiungere qualsiasi affect già presente in gioco e far si che questi scadano sempre (o solo quando il player è online) a scelta, senza aver la necessità di dover aggiungere infinite colonne alla tabella degli account.

Per fare ciò, ho optato per aggiungere un parametro opzionale alla funzione AddAffect e alla tabella Affect presente nel database Player, in modo da etichettare quali affect dovessero essere "Real time" e quali no.

Quindi, a cosa serve questo system?
Grazie a questo accorgimento, sarà più facile aggiungere dei bonus temporanei che durino solo X giorni, come ad esempio: Papiri con bonus che durino 7 giorni esatti, Battlepass, o simili.

Ipotizzando che alle ore 00:00 un player attivi un item per il quale verrà fatta la chiamata:

C++:
ch->AddAffect(AFFECT_BLEND_POTION_5, 95, 200, 0, 180, 0, true, false, true);  // The last "true" is bIsRealTime

Il bonus della Rugiada Blu (Bonus scelto a caso), verrà aggiunto per 3 minuti, per cui, se il player dovesse sloggare e riloggare alle ore 00:05, non avrà più il bonus a disposizione.

Vi lascio qui il link della repository dove potrete trovare la guida completa all'installazione del system:

https://gitlab.com/dbecode/realtime-affects