Yardım Metin2 Çevrimiçi Oyuncu Verisi Nasıl Çekilir

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

CrownOfStone

Üye
Üye
Mesaj
66
Çözümler
1
Beğeni
5
Puan
439
Ticaret Puanı
0
Metin2 Geliştiriciliğinde oldukça yeni ve tecrübesizim, aşağıda AI yardımı ile hazırladığım metinde bahsettiğim gibi Laravel altyapılı bir panel projesine sunucudaki "Total Now" verisini çekmeyi planlıyordum ancak ne denersem deneyeyim sonuç başarısız oldu. Bazen sunucuya giriş yapan hesap sayısını doğru okudu ancak logout verilerini okuyamadı ve sayı hep takılı kaldı, bazen hiç giriş yapan kullanıcıyı görmedi, bazen ise çıkış yapan kullanıcıyı okuyup sayıyı eksiltti ancak geri giriş yaptıklarında onları tekrar okumadı.

Bu metin AI tarafından denenen yöntemlerin kısa bir özeti mahiyetindedir:

""Laravel 12 (XAMPP, PHP 8.2) panelinden FreeBSD VM’deki MySQL 8’e bağlanıp “Total Online Now” üretmeye çalışıyoruz. Üç yol denedik: sockets/kanal (CH1..CH4’ye fsockopen ile kısa “PING” gönderip integer bekledik; çekirdeğin resmî port/protokol yanıt formatı belirsiz kaldı), log.loginlog2 (MySQL 8 window ile “son oturum açık mı?”; bizde birçok satırda login_time == logout_time, açık oturum 0 görünüyor), log.loginlog (son event = LOGIN; LOGOUT yazılmadığı/geç geldiği için sayaç azalmıyor ve şişiyor); player.last_play heartbeat fallback’i de pencereye (180–3600 sn) göre sahte online üretebiliyor.""

İnternetten bulduğum hazır bir panel var elimde, elimden geldiğince onun "Total Now" verilerini tuttuğu dosyaları bulup AI' ın hafızasına yükledim, oradaki yöntemleri uyarlamaya çalıştım lakin %100 başarılı bir sonuç elde edemedim.

Sorum kısaca; Bu oyunun "Total Player Now" , "Is XXX player Active right now?" gibi verilerini hangi yöntemlerle çekmemiz gerekiyor en doğru sonuç için?

Not: Whistle'ın Udemy serisinde kullandığı AltyapiFiles' ı kullanmaktayım. Sunucum localhost üzerinde çalışmaktadır. MySQL sürümüm
8.0.27
 

Dosya Eklentileri

  • 02.webp
    02.webp
    35,8 KB · Gösterim: 48
  • 01.webp
    01.webp
    15,2 KB · Gösterim: 46
  • 1762176927635.webp
    1762176927635.webp
    23,2 KB · Gösterim: 43
Şimdi müsait değilim ama şöyle bir yol göstereyim size yardımcı olacaktır.
Herhangi bir online göstergesi olan panel indirin ve gerekli kodlama satırından hangi fonksiyon ile çektiğine bakabilirsiniz.
 
p2p komutuyla anlık oyuncu sayısını çekebilirsiniz, input.cpp inceleyin.
USER_COUNT olması lazım
 
Dediğiniz dosyaları ve onunla ilgili olanları inceledim, yapay zekaya da incelettim. Ehveniser'in dediği gibi hazır kurulu olan panelden de fikir sahibi olmak adına birçok kodu inceledim ancak tam olarak nokta atışı nereyi görmem gerektiğini bilmediğim için havada kalan şeyler var. Bu toplam oyuncu sayısı verisini Metin2 Admin Panelleri nasıl yapıyor hala anlamadım;
-Login ve Logout time larına bakarak diyeceğim, Workbench'ten kontrol ediyorum Login time ne ise Logout time ona eşit değerde bir sebepten ötürü
-Soket bağlantısı dedi GPT CH'lere ping göndermek dedi o da düzgün çalışmadı

yani yöntemi bile bilmiyorum hala, hangi yöntem kullanılmalı.

En son şu an bu sizin söyledikleriniz ve incelettiğim hazır panel dosyalarından sonra AI'ın güncel önerisi, player-log-account haricinde bir de active diye bir SQL tablosu açmak ve kendi scriptlerimiz ile bu verileri tutmak oldu. Ve ben de yanlış hatırlamıyor isem Hazır Panel ' i kurmaya çalıştığımda pypadmine ve workbenche birçok yeni query girişi yapmıştık, tablolar import etmiştik.

Durum yine böyle mi, toplam account verisi çekmek kadar basit bir şey değil mi yani bu toplam online oyuncu sayısı çekme mevzusu ? Bu tarz ek işlemlere mi ihtiyacım var ?

Not: p2p komutu demiştiniz, admin olarak giriş yaptığımda /p2p şeyler çalışmadı , /user yazdım ve bu bana sadece o CH deki oyuncuların çevrimiçi olma bilgisini verdi, tam olarak kast ettiğiniz ne idi anlamamış olabilirim.

 
 
P2P Bağlantısı ile ilgili olan konuyu okudum, şu an başarılı bir şekilde "Online Now" verisini çekebiliyorum.

Eğer panelimde "Last 1H , Last 7D ... online" gibi verilere de yer vermek istersem bunu yine P2P bağlantısı ile yapabilecek miyim, çünkü konunun başında bahsettiğim gibi loginlog2 verilerinde problemler vardı, login time ile logout time aynı görünüyordu, bu sebepten dolayı sağlıklı bir bilgi paylaşımı yapılamıyordu.

Eğer olmuyorsa bunu paneller nasıl yapıyor? Aklımdaki diğer fikir, sunucunun açılış tarihinden itibaren Metin2 den bağımsız kendi SQL lerim içerisinde giren çıkan oyuncunun veri trafiğini tutarak kendi yapay trafik tablomu tutmak var, ancak buna girişmeden önce başka bir yol olup olmadığını sormak istedim.
 
Oyunun kaynak kodlarına sahipsen istediğin veriyi alabilirsin ve oyuna gönderebilirsin sana kalmış
 
Tam olarak dediğinizi anlamadım, ancak p2p komutları içerisinde son 7 günün online logu , son 1 saatin online bilgisi logu gibi teferruatlı şeylerin kapsanmadığını düşünüyorum. Loginlog2 verileri kullanmayı denersem ise en başta bahsettiğim gibi, login time-logout time-play time ilginç bir şekilde bütün bu veriler birbiri ile aynı yazılıyor tabloya. Şimdi geriye en risksiz yol olarak kendi veri tablomu tutarak bir şeyler yapmak kalıyor ancak onun da localhost üstünde test denemeleri çok sağlıksız olacaktır, ileride hosting servisi alınca bir nebze daha dengeli hale gelecektir muhtemelen. Çünkü panelimin sürekli aktif olması gerekmekte bildiğim kadarıyla.

GPT'nin bir de şöyle bir önerisi var, p2p komutlarına kendi login-logout logs gibi tanımlamaları eklemeyi tavsiye ediyor ancak bu Metin2 gibi karmaşık ve eski kod yapısına sahip bir oyunda problemlere yol açar mı sizce?

Diğer bir sorum ise bu bütün her şeyin sebebi olan "Login Time - Logout Time - Play Time" gibi mysql üzerindeki tabloların düzgün çalışmamasının sebebini biliyor musunuz? Bütün hepsi aynı tarihi-saati veriyor.
 

Dosya Eklentileri

  • time.webp
    time.webp
    15 KB · Gösterim: 19
O logları ya kendin işleyeceksin ya da oyunun log tablosuna girdiği verileri alacaksın
 
M2AAC adlı geliştirmeye çalıştığım projeyi tamamen silmeseydim en azından javascript ile yaptığım scripti burada paylaşmak isterdim. P2P kullanabilirsin bu bir seçenek, diğer seçenek ise source codelarda bir cron job çalıştırıp istediğin bilgileri belli aralıklarla ayrı bir veritabanı tablosuna kayıt edip siteden ise request atarak bu verileri çekmek.
 
Geri
Üst