GameMaker Studio MultiPlayer Dersleri - 9 Karakter Yürütme
UstaDerslik Soru-Cevap Yararlı Araçlar
arama ikon
Diller
Türkçe Türkçe

bilgi UstaDerslik
Bu uyari kutusudur.
Tamam
Anasayfa
İletişim
Üyeler

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

profil
cArleone
BEĞEN(1)
BEĞENME(0)
GÖRÜNTÜLENME(2059)
RAPOR ET
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;
}




denemeturu
denemeturu 3 Yıl Önce Cevaplandı
ban atma ve mermi atma anlatirsaniz sevnirim butun dersleriniz cok aciklayici
cArleone
cArleone 3 Yıl Önce Cevaplandı
Ban atma çet yapmaya başladığımızda yaparız.sıradaki ders ateş etme olur büyük ihtimal.
denemeturu
denemeturu 3 Yıl Önce Cevaplandı
yani baya devam edecek degilmi bu dersler en cok merak ettigimde zaten mermi : )



Kod
Kalın
Vurgu
Resim
Video
Url
CEVAPLA
Tüm Hakları Saklıdır. ©Arleone 2013-2014 UstaDerslik






Giriş
Şifremi Unuttum...
Şifre Talep
  Kuralları Kabul Ediyorum.
Kaydol