Lucrăm la îmbunătățirea site-ului! Este posibil ca unele module să nu funcționeze corect!
6 mesaje

Autor subiect

  • Mesaje: 4
  • Reacții: 1
  • Mesaje utile: 0
  • Status: Metin2Unirea
  • Regat: Shinsoo
  • Contact:

    Medalii

    De curând, am început să lucrez la un server de Metin2 și am setat buffurile permanente să expire în anul 2050, dar din pacate acestea nu funcționau corect. După mai multe încercări, am executat comanda:
    Code:
    SELECT UNIX_TIMESTAMP('2050-01-01');
    și am observat că îmi returna 0. Abia atunci am realizat că există o problemă. Căutând mai multe informații, am descoperit problema anului 2038 pe Wikipedia.


    [C++] Problema Year 2038 si Buffurile Permanente in Metin2 - Mesaj 1 - Imagine 1

    Ce este Year 2038 Problem?
    Problema anului 2038 (Year 2038 Problem) este o limitare a funcției UNIX_TIMESTAMP, care stochează timpul ca un număr întreg pe 4 bytes (32-bit). Deoarece acest timestamp este măsurat în secunde de la 1 ianuarie 1970, valoarea maximă pe care o poate reține un număr întreg semnat pe 4 bytes este 2147483647, care corespunde datei 03:14:08 UTC pe 19 ianuarie 2038.

    După această dată, timestamp-ul va depăși limita maximă și va cauza erori, deoarece va reveni la o valoare negativă, generând un comportament imprevizibil în baze de date și sisteme care se bazează pe această metodă de stocare a timpului.

    Impactul asupra Buffurilor Permanente în Metin2

    În Metin2, diverse buffuri și permisiuni sunt gestionate prin UNIX_TIMESTAMP, chiar dacă coloanele în baza de date sunt deja de tip DATETIME. Funcția UNIX_TIMESTAMP este utilizată pentru a calcula numărul de secunde rămase până la o anumită dată, însă, din cauza limitării la 32 de biți, orice dată mai mare decât 19 ianuarie 2038 va returna 0 sau o valoare incorectă.

    Printre buffurile afectate se numără:
    • UNIX_TIMESTAMP(silver_expire),
    • UNIX_TIMESTAMP(gold_expire),
    • UNIX_TIMESTAMP(safebox_expire),
    • UNIX_TIMESTAMP(autoloot_expire),
    • UNIX_TIMESTAMP(fish_mind_expire),
    • UNIX_TIMESTAMP(marriage_fast_expire),
    • UNIX_TIMESTAMP(money_drop_rate_expire),
    Această problemă poate duce la expirarea imediată a buffurilor sau la erori neașteptate în funcționarea serverului.

    Soluții posibile
    Pentru a evita această problemă, există câteva soluții viabile:
    • Utilizarea unei date care nu depășește limita
    • Schimba funcția UNIX_TIMESTAMP cu TO_SECONDS (nu am testato)

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    Anunț
  • Mesaje: 53
  • Reacții: 9
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Shinsoo
  • Medalii

    De curând, am început să lucrez la un server de Metin2 și am setat buffurile permanente să expire în anul 2050,


    Care e logica de aici? Ori sunt permanente ori expira, nu faci un buff permanent prin metoda extinderi timpului cu 30 de ani, il faci permanent scotand timpul. Metoda ta de a face bufful permanent e proasta in primul rand. Metinul nu o sa ajunga in 2038 anyway.

    Autor subiect

  • Mesaje: 4
  • Reacții: 1
  • Mesaje utile: 0
  • Status: Metin2Unirea
  • Regat: Shinsoo
  • Contact:

    Medalii

    DEVE scrie: De curând, am început să lucrez la un server de Metin2 și am setat buffurile permanente să expire în anul 2050,


    Care e logica de aici? Ori sunt permanente ori expira, nu faci un buff permanent prin metoda extinderi timpului cu 30 de ani, il faci permanent scotand timpul. Metoda ta de a face bufful permanent e proasta in primul rand. Metinul nu o sa ajunga in 2038 anyway.
    Când vorbesc despre buffurile permanente, mă refer la acele bonusuri care apar în colțul din stânga sus, precum depozitul cu 3 sloturi, etc. Din câte știu eu, trebuie setată o dată mai mare decât TODAY în tabela account pentru a le activa.

    Dacă ai o altă metodă de implementare, te rog să o împărtășești cu ceilalți, în loc să critici doar metoda mea. :x
    Avatar utilizator
    Administrator
  • Administrator
  • Mesaje: 2,607
  • Reacții: 29020
  • Mesaje utile: 17
  • Status: Pierd vremea ^.^
  • Server: Saga2 - Soon
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:
    in 2038 nu o sa mai funcționeze multe chestii.

    trebuie trecut din unix time 32 bit pe 64.

    Sunt multe părți din sursa care depind de unix time 32 bit.. exemplu timpul la costume, mounturi, peturi, etc.

    Pana atunci trebuie un tutorial full de trecere la 64 bits.
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/Kr9nUpWa4X

    Suntem aproape 1000 membri! - Avem chat activ zilnic, support, cereri, resurse.



    See full signature

    Autor subiect

  • Mesaje: 4
  • Reacții: 1
  • Mesaje utile: 0
  • Status: Metin2Unirea
  • Regat: Shinsoo
  • Contact:

    Medalii

    [HF]White scrie: in 2038 nu o sa mai funcționeze multe chestii.

    trebuie trecut din unix time 32 bit pe 64.

    Sunt multe părți din sursa care depind de unix time 32 bit.. exemplu timpul la costume, mounturi, peturi, etc.

    Pana atunci trebuie un tutorial full de trecere la 64 bits.
    Din câte știu, modul cel mai ok de a rezolva această problemă este să folosesc MySQL 8, dar, momentan, nu am vrut să mă complic cu upgrade-ul. Este mult mai simplu așa pentru acum și îmi permite să lucrez mai rapid. :D Dacă însă proiectul se extinde, cu siguranță mă voi uita și la opțiuni mai avansate.
  • Mesaje: 17
  • Reacții: 119
  • Mesaje utile: 0
  • Status: THE WORLD IS YOURS
  • Server: SAPPHIRE
  • Regat: Chunjo
  • Discord: [Vezi ID]
  • Contact:

    Medalii

    Cosmin Irimescu scrie:
    DEVE scrie: De curând, am început să lucrez la un server de Metin2 și am setat buffurile permanente să expire în anul 2050,


    Care e logica de aici? Ori sunt permanente ori expira, nu faci un buff permanent prin metoda extinderi timpului cu 30 de ani, il faci permanent scotand timpul. Metoda ta de a face bufful permanent e proasta in primul rand. Metinul nu o sa ajunga in 2038 anyway.
    Când vorbesc despre buffurile permanente, mă refer la acele bonusuri care apar în colțul din stânga sus, precum depozitul cu 3 sloturi, etc. Din câte știu eu, trebuie setată o dată mai mare decât TODAY în tabela account pentru a le activa.

    Dacă ai o altă metodă de implementare, te rog să o împărtășești cu ceilalți, în loc să critici doar metoda mea. :x
    DEVE scrie: 12 Feb 2025, 23:25scotand timpul.
    nuj zic sio
    See full signature
    Moved from Tutoriale to Tech on 27 Feb 2025, 23:51 by [HF]White

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Scrie răspuns

    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

    Înregistrează-te și alătură-te comunității noastre

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


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

    Înregistrare

    Autentifică-te

    • Subiecte similare

      • de mrpower8098 » » în Arhivă cereri
        2
        Răspunsuri
        130
        Vizualizări
        de mrpower8098
      • de [HF]White » » în Tutoriale
        0
        Răspunsuri
        63
        Vizualizări
        de [HF]White
      • de 3lteror » » în Probleme rezolvate
        7
        Răspunsuri
        420
        Vizualizări
        de [HF]White
      • de TheResource » » în Arhivă probleme
        4
        Răspunsuri
        428
        Vizualizări
        de TheResource
      • de mrpower8098 » » în Arhivă probleme
        1
        Răspunsuri
        87
        Vizualizări
        de [HF]White

    Înapoi la “Tech”

    Informații

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