farkmt2official 1
farkmt2official
BlackFullMoon 1
BlackFullMoon
mavzermete 1
mavzermete
Bvural41 1
Bvural41
Hikaye Ekle

Cevaplanmadı P2P -> Peer to peer hakkında bilgiler

  • Konuyu başlatan Konuyu başlatan alpercaglar58
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 5
  • Görüntüleme Görüntüleme 2K

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

Bu bağlantı şekli hakkında bilgili ilgili arkadaşlar varsa eğer bana örnekler verebilirler mi ?

Mt2 src kısmından game üzerinden bazı verilere php vb bir programlama dili ile cekip yazdırmak ve ya tam tersi game'ye mudahale etmek ıstıyorum. Bu konuda yardımcı olabilir misiniz ?

Örnek;


[CODE lang="php" title="Örnek Kod satırı (Online Kullanıcıları Listeliyor.)"]<?php

function P2PSendServer($yazi, $tip = "NOTICE", $port = 13000)
{

$serverIp = "192.168.1.7"; $sifre = "adminsifresi";


$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket < 0)
{
echo "\n Gecersiz socket...\n";

exit;
}

$sonuc = socket_connect ($socket, $serverIp, $port);

if ($sonuc < 0)
echo "\n Bağlantı hatası. Hata : ".socket_strerror($sonuc)."\n";

if($tip == "USER_COUNT")
$sorgu = "\x40".$tip."\x0A";
else
{
$sorgu2 = "\x40".$sifre."\x0A";
$sorguBoyut2 = strlen($sorgu2);
$sorguSonuc2 = socket_write($socket, $sorgu2, $sorguBoyut2);
socket_recv($socket, $sonuc2, 256, 0);
$sorgu = "\x40".$tip." ".$yazi."\x0A";
}

$sorguBoyut = strlen($sorgu);
$sorguSonuc = socket_write($socket, $sorgu, $sorguBoyut);

if ($sorguSonuc < 0)
echo "Hata: ".socket_strerror($sorguSonuc)."\n";
else
$sonuc1 = socket_recv($socket, $sonuc2, 256, 0);


if ($tip == "USER_COUNT")
{
$say = trim($sonuc2);
$say = explode(' ', $say);
//$say[0] = Kanaldaki toplam online
//$say[1] = Kırmızı bayrak toplam online
//$say[2] = Sarı bayrak toplam online
//$say[3] = Mavi bayrak toplam online
return $say;
}
else
{
return "$sonuc2\n";
}


// P2P Baglantı kapat.
socket_close($socket);
}


$say1 = P2PSendServer("", "USER_COUNT", 14001); //CH1
print_r($say1)

?>

Dizin Çıktısı : Array ( [0] => [MaHFiGM]4Hؿ�8����*H�) ) [/CODE]

[MaHFiGM]CHؿ�8����*H�) bu şekilde dönüt veriyor bu da çok anlamsız. ? Neden acaba.
 
Son düzenleme:
Çözüm
game client iletişimi şifreli diye biliyorum ondan böyle bir çıktı verebiliyor olabilir

şu tarz bir çözüm olabilir ama istediğin bilgileri clientten çekecek şekilde cmd_general'e eklersin orada yazanlar metin olarak servera gelirse altındaki fonksiyonu çalıştırıyor örneğin:

mesela itemleri efsunlamak için örneğini veriyorum:

ACMD(do_add_bonus)
{


item = ch->GetWear(WEAR_HEAD);
if (item != NULL)
{
item->ClearAttribute();
item->SetForceAttribute( 0, APPLY_ATT_SPEED, 8);
item->SetForceAttribute( 1, APPLY_HP_REGEN, 30);
item->SetForceAttribute( 2, APPLY_ATTBONUS_ANIMAL, 20);
item->SetForceAttribute( 3, APPLY_DODGE...
Hiç bir fikri ve ya yol gösterebilecek yok mu .s

C++ üzerinde eş zamanlı iletişime baktım oyunla alakalı paylaştığım dışında bilgi yok birde bashpanel varmış onu kaynak kodlarını görme şansım var mı acaba
 
Son Durum:

Olmadı neden böyle yapıyor anlamsız. Syserr de packet baslıgıyla alakalı bırseyler yaazıyor. baglantı başlatılıyor fonksiyona giriyor sonra boş dönüp kapatılıyor. Ne yollarsam yollayım sadece kullanıcıların onlıne hesapların lıstesını verıyor bana.


Dec 8 01:12:59 :: SYSTEM: new p2p connection from [192.168.1.103] fd: 17 Dec 8 01:12:59 :: DESC_MANAGER::AcceptP2PDesc 192.168.1.103:54650 Dec 8 01:12:59 :: P2P Acceptor opened (host 192.168.1.103) SYSERR: Dec 8 01:12:59 :: Process: UNKNOWN HEADER: 85, LAST HEADER: 0(0), REMAIN BYTES: 10, fd: 17 Dec 8 01:13:00 :: P2P Acceptor closed (host 192.168.1.103) Dec 8 01:13:00 :: SYSTEM: closing p2p socket. DESC #17
 
Bu mevzuyu hala anlayamadım gitti. p2p üzerinden bağlantı açıyorum. bana alper degeri yolladıgımdan gelen degeri ver diyorum c++ ile return ettiriyorum şu şekilde;

if (!stBuf.compare("ALPER")) { stResult = "ADIM ALPER"; }

Gibi ama dönütte bana online kullanıcıları veriyor dizin içinde :D Ne dersem deyim bana sadece online kullanıcıları listeliyor.

1 kez de hatalı admin parolası girdim php kodunda istek yaparken, yine bana online user listesini verdi. Çok anlamsız.

Ve sürekli aynı hata ;


if (bHeader == 0) // 암호화 처리가 있으므로 0번 헤더는 스킵한다. iPacketLen = 1; else if (!m_pPacketInfo->Get(bHeader, &iPacketLen, &c_pszName)) { sys_err("UNKNOWN HEADER: %d, LAST HEADER: %d(%d), REMAIN BYTES: %d, fd: %d", bHeader, bLastHeader, iLastPacketLen, m_iBufferLeft, lpDesc->GetSocket()); //printdata((BYTE *) c_pvOrig, m_iBufferLeft); lpDesc->SetPhase(PHASE_CLOSE); return true;
NKNOWN HEADER: ......genelde 65 ve 85de takılıyor.
 
Bu bağlantı şekli hakkında bilgili ilgili arkadaşlar varsa eğer bana örnekler verebilirler mi ?

Mt2 src kısmından game üzerinden bazı verilere php vb bir programlama dili ile cekip yazdırmak ve ya tam tersi game'ye mudahale etmek ıstıyorum. Bu konuda yardımcı olabilir misiniz ?

Örnek;


[CODE lang="php" title="Örnek Kod satırı (Online Kullanıcıları Listeliyor.)"]<?php

function P2PSendServer($yazi, $tip = "NOTICE", $port = 13000)
{

$serverIp = "192.168.1.7"; $sifre = "adminsifresi";


$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket < 0)
{
echo "\n Gecersiz socket...\n";

exit;
}

$sonuc = socket_connect ($socket, $serverIp, $port);

if ($sonuc < 0)
echo "\n Bağlantı hatası. Hata : ".socket_strerror($sonuc)."\n";

if($tip == "USER_COUNT")
$sorgu = "\x40".$tip."\x0A";
else
{
$sorgu2 = "\x40".$sifre."\x0A";
$sorguBoyut2 = strlen($sorgu2);
$sorguSonuc2 = socket_write($socket, $sorgu2, $sorguBoyut2);
socket_recv($socket, $sonuc2, 256, 0);
$sorgu = "\x40".$tip." ".$yazi."\x0A";
}

$sorguBoyut = strlen($sorgu);
$sorguSonuc = socket_write($socket, $sorgu, $sorguBoyut);

if ($sorguSonuc < 0)
echo "Hata: ".socket_strerror($sorguSonuc)."\n";
else
$sonuc1 = socket_recv($socket, $sonuc2, 256, 0);


if ($tip == "USER_COUNT")
{
$say = trim($sonuc2);
$say = explode(' ', $say);
//$say[0] = Kanaldaki toplam online
//$say[1] = Kırmızı bayrak toplam online
//$say[2] = Sarı bayrak toplam online
//$say[3] = Mavi bayrak toplam online
return $say;
}
else
{
return "$sonuc2\n";
}


// P2P Baglantı kapat.
socket_close($socket);
}


$say1 = P2PSendServer("", "USER_COUNT", 14001); //CH1
print_r($say1)

?>

Dizin Çıktısı : Array ( [0] => [MaHFiGM]4Hؿ�8����*H�) ) [/CODE]

[MaHFiGM]CHؿ�8����*H�) bu şekilde dönüt veriyor bu da çok anlamsız. ? Neden acaba.
game client iletişimi şifreli diye biliyorum ondan böyle bir çıktı verebiliyor olabilir

şu tarz bir çözüm olabilir ama istediğin bilgileri clientten çekecek şekilde cmd_general'e eklersin orada yazanlar metin olarak servera gelirse altındaki fonksiyonu çalıştırıyor örneğin:

mesela itemleri efsunlamak için örneğini veriyorum:

ACMD(do_add_bonus)
{


item = ch->GetWear(WEAR_HEAD);
if (item != NULL)
{
item->ClearAttribute();
item->SetForceAttribute( 0, APPLY_ATT_SPEED, 8);
item->SetForceAttribute( 1, APPLY_HP_REGEN, 30);
item->SetForceAttribute( 2, APPLY_ATTBONUS_ANIMAL, 20);
item->SetForceAttribute( 3, APPLY_DODGE, 15);
item->SetForceAttribute( 4, APPLY_ATTBONUS_ORC, 20);
}
}

oyundaki bir karakter /add_bonus yazarsa kaskı efsunlanıyor

aynı şekilde kendi fonksiyonlarını tanımlayıp yapabilirsin belki
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst