GameMaker Studio MultiPlayer Dersleri - 9 Karakter Yürütme
Geri Dön

GameMaker Studio MultiPlayer Dersleri - 9 Karakter Yürütme

Anasayfa
Gamemaker studio multiplayer derslerimize devam ediyoruz.Bu derste karakter yürütmeyi işleyeceğiz.Karakter yürütmeyi şu şekilde yapacağız.Öncelikle kullanıcı wasd ye basarsa tuşu ve isimi servera yollayacağız.Serverda tuşu aldıktan sonra isime göre x ve y verilerini bulacağız.Bu bulduğumuz verilerde değişimi yaptıktan sonra veriyi değiştireceğiz.Geçen derste karekter sürekli veri talebinde bulunduğu için bu yeni veriyi alcak bu şekilde hareket etmiş olacak.

Şimdi komutları inceleyelim.Bu derste diğer derslerden farklı tek kullandığımız komut ds_list_replace(liste,pozisyon,yeni değer) listedeki veriyi değiştirmemizi sağlayan komut.

İndir : http://ustaderslik.com/dosya/Gamemaker%20Multiplayer-5.zip

Video :


Client Step :


if(keyboard_check(ord("W"))){//W ye basılırsa
buffer_seek(depo,buffer_seek_start,0);
buffer_write(depo,buffer_u8,4);//işlem için 4 yolluyoruz.
buffer_write(depo,buffer_string,string(isim));//isimi yolluyoruz
buffer_write(depo,buffer_string,"W");//W harfini yolluyoruz.
network_send_packet(socket,depo,buffer_tell(depo));
}

if(keyboard_check(ord("A"))){//A ye basılırsa
buffer_seek(depo,buffer_seek_start,0);
buffer_write(depo,buffer_u8,4);//işlem için 4 yolluyoruz.
buffer_write(depo,buffer_string,string(isim));//isimi yolluyoruz
buffer_write(depo,buffer_string,"A");//A harfini yolluyoruz.
network_send_packet(socket,depo,buffer_tell(depo));
}

if(keyboard_check(ord("S"))){//S ye basılırsa
buffer_seek(depo,buffer_seek_start,0);
buffer_write(depo,buffer_u8,4);//işlem için 4 yolluyoruz.
buffer_write(depo,buffer_string,string(isim));//isimi yolluyoruz
buffer_write(depo,buffer_string,"S");//S harfini yolluyoruz.
network_send_packet(socket,depo,buffer_tell(depo));
}

if(keyboard_check(ord("D"))){//D ye basılırsa
buffer_seek(depo,buffer_seek_start,0);
buffer_write(depo,buffer_u8,4);//işlem için 4 yolluyoruz.
buffer_write(depo,buffer_string,string(isim));//isimi yolluyoruz
buffer_write(depo,buffer_string,"D");//D harfini yolluyoruz.
network_send_packet(socket,depo,buffer_tell(depo));
}


Server Networking :


var baglanti_tipi=ds_map_find_value(async_load,"type");
//bu network olaylarını yakalayan bir komut.eğer işem var ise aşağıda işlemi yakalayacağız.

switch(baglanti_tipi){
case network_type_connect:

var osocket=ds_map_find_value(async_load,"socket");//oyuncunun socket nosunu al
ds_list_add(oyuncu_sayisi,osocket);//listeye ekle

break;
case network_type_disconnect:

var osocket=ds_map_find_value(async_load,"socket");//oyuncunun socket nosunu al
var arama=ds_list_find_index(oyuncu_sayisi,osocket);//listede ara

if(arama>=0){//eğer var ise
ds_list_delete(oyuncu_sayisi,arama)//listeden sil.
}

break;
case network_type_data:

var veri_al=ds_map_find_value(async_load,"buffer");//tüm verileri paket şeklinde aldık.
buffer_seek(veri_al,buffer_seek_start,0);//verileri içini araştırdık.almaya hazırız.
var islem=buffer_read(veri_al,buffer_u8);//işlem için yolladığımız veri.

if(islem=1){
var isim=buffer_read(veri_al,buffer_string);//isimi aldık.

ds_list_add(oyuncu_isimleri,isim);//isimi listeye ekledik
ds_list_add(oyuncu_verileri,random_range(75,500));//oyuna giren kişiye rasgele bir x veriyoruz.
ds_list_add(oyuncu_verileri,250);//y olarada 250 veriyoruz.

}else if(islem=2){
var isim3=buffer_read(veri_al,buffer_string);//yollanan isimi alıyoruz.
var isim_ara=ds_list_find_index(oyuncu_isimleri,isim3);//listede isimi arıyoruz.
var sil_pos=isim_ara*2;//kullanıcı çıktığında isim listesindeki konumuna göre verilerini buluyoruz.

if(isim_ara>0){//isim varsa
ds_list_delete(oyuncu_isimleri,isim_ara);//isimi listeden siliyoruz.
ds_list_delete(oyuncu_verileri,sil_pos);//x değerini siliyoruz.
ds_list_delete(oyuncu_verileri,sil_pos+1);//y değerini siliyoruz.
}else{
ds_list_delete(oyuncu_isimleri,isim_ara);
ds_list_delete(oyuncu_verileri,isim_ara);
ds_list_delete(oyuncu_verileri,isim_ara+1);
}
}else if(islem=3){
var socket = ds_map_find_value( async_load , "id" );//veri isteği yollayan kişinin idsini alıyoruz
veri_yolla(socket);//verileri yollayacağımız scripte yolluyoruz.
}else if(islem=4){

var tus_isim=buffer_read(veri_al,buffer_string);//isimi aldık
var tus=buffer_read(veri_al,buffer_string);//tuşu aldık

var isim_ara=ds_list_find_index(oyuncu_isimleri,tus_isim);//ismi listede aradık.
var pozisyon=isim_ara*2;//kullanıcı ismine göre verinin listedeki yerini bulmak için.

if(isim_ara>0){
if(tus="W"){//Eğer tuş w ise
var y_pos=ds_list_find_value(oyuncu_verileri,pozisyon+1)-hiz;//verilerde y nün yerini bulduk aldık.daha sonra hızdan çıkardık.
ds_list_replace(oyuncu_verileri,pozisyon+1,y_pos);//veriyi yeni değeri ile değiştirdik
}else if(tus="S"){//Eğer tuş s ise
var y_pos=ds_list_find_value(oyuncu_verileri,pozisyon+1)+hiz;//verilerde y nün yerini bulduk aldık.daha sonra hıza ekledik.
ds_list_replace(oyuncu_verileri,pozisyon+1,y_pos);//veriyi yeni değeri ile değiştirdik
}else if(tus="A"){//Eğer tuş a ise
var x_pos=ds_list_find_value(oyuncu_verileri,pozisyon)-hiz;//verilerde x nün yerini bulduk aldık.daha sonra hızdan çıkardık.
ds_list_replace(oyuncu_verileri,pozisyon,x_pos);//veriyi yeni değeri ile değiştirdik
}else if(tus="D"){//Eğer tuş d ise
var x_pos=ds_list_find_value(oyuncu_verileri,pozisyon)+hiz;//verilerde x nün yerini bulduk aldık.daha sonra hıza ekledik.
ds_list_replace(oyuncu_verileri,pozisyon,x_pos);//veriyi yeni değeri ile değiştirdik
}
}else{
if(tus="W"){//Eğer tuş w ise
var y_pos=ds_list_find_value(oyuncu_verileri,isim_ara+1)-hiz;//verilerde y nün yerini bulduk aldık.daha sonra hızdan çıkardık.
ds_list_replace(oyuncu_verileri,isim_ara+1,y_pos);//veriyi yeni değeri ile değiştirdik
}else if(tus="S"){//Eğer tuş s ise
var y_pos=ds_list_find_value(oyuncu_verileri,isim_ara+1)+hiz;//verilerde y nün yerini bulduk aldık.daha sonra hıza ekledik.
ds_list_replace(oyuncu_verileri,isim_ara+1,y_pos);//veriyi yeni değeri ile değiştirdik
}else if(tus="A"){//Eğer tuş a ise
var x_pos=ds_list_find_value(oyuncu_verileri,isim_ara)-hiz;//verilerde x nün yerini bulduk aldık.daha sonra hızdan çıkardık.
ds_list_replace(oyuncu_verileri,isim_ara,x_pos);//veriyi yeni değeri ile değiştirdik
}else if(tus="D"){//Eğer tuş d ise
var x_pos=ds_list_find_value(oyuncu_verileri,isim_ara)+hiz;//verilerde x nün yerini bulduk aldık.daha sonra hıza ekledik.
ds_list_replace(oyuncu_verileri,isim_ara,x_pos);//veriyi yeni değeri ile değiştirdik
}

}
}
break;
}







Anasayfa

Tüm Hakları Saklıdır. ©Arleone 2013-UstaDerslik