Plugini Kişiye Özel Çalıştırma.

KaanGunlu

Işık Taşı Madencisi
En iyi cevaplar
0
// Burada da sayıyı 1 miktar arttırıyoruz, sebebi de bir sonraki oyuncuya aynı sayıyı değil, bir üst sayıyı vermesi. // Bu sayı en üstteki "sayi" değişkenini etkileyecektir.
Kısmı <-< 1. oyuncuya 2 2. oyuncuya 3 gelir her şekilde bu böyle olur :(
Ama 2. oyuncu girince 1. oyuncunun sayısıda değişmez mi ?
 

IRFN

Sonoyuncu.Network
En iyi cevaplar
0
Ama 2. oyuncu girince 1. oyuncunun sayısıda değişmez mi ?
Değişmez, oyuncunun sayısını bir değişkende barıntırmıyoruz çünkü, direkt HashMap'te tutuyoruz. Bu HashMap her oyuncu girdiğinde biraz daha büyüyecektir. Ancak bu kodlarda oyuncunun ikinci kez girdiğinde yeni sayı atamaması yok, 2. kez giren kişinin sayısı, o anki sayı kaç ise o olur. Bunu engellemek için bir kod daha eklemek gerekiyor.
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.


Yeni kod şu şekilde;
if (!oyuncuSayi.containsKey(e.getPlayer().getName) {
// YENİ: Oyuncunun HashMap'te daha önceden kayıtlı olup olmadığını kontrol ediyoruz. Yoksa sayı veriyoruz, varsa es geçiyoruz.
 

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
herkes
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
sorusu çözer gibi uğraşıyor :)
Değişmez, oyuncunun sayısını bir değişkende barıntırmıyoruz çünkü, direkt HashMap'te tutuyoruz. Bu HashMap her oyuncu girdiğinde biraz daha büyüyecektir. Ancak bu kodlarda oyuncunun ikinci kez girdiğinde yeni sayı atamaması yok, 2. kez giren kişinin sayısı, o anki sayı kaç ise o olur. Bunu engellemek için bir kod daha eklemek gerekiyor.
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.


Yeni kod şu şekilde;
if (!oyuncuSayi.containsKey(e.getPlayer().getName) {
// YENİ: Oyuncunun HashMap'te daha önceden kayıtlı olup olmadığını kontrol ediyoruz. Yoksa sayı veriyoruz, varsa es geçiyoruz.
Bakıyorum işime yarıcak büyük ihtimal
 

IRFN

Sonoyuncu.Network
En iyi cevaplar
0
Arkadaş rastgele bir sayı istiyor sanırım.Anladığım kadarıyla bu 1 sayısını veriyor ilk giren oyuncuya 2.'ye 2 100.'ye 100 1002.'ye 1002 diye.
Bu arada HashMap ne tam olarak bir açıklasa biri <-<
Random sayı ekleme kodu;
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.


Sırayla her oyuncuya teker teker sayı vermek yerine, 0-10000 arası rastgele bir sayı veriyor her oyuncuya.
 

GodofMilker

Nether Yerlisi
En iyi cevaplar
0
Değişmez, oyuncunun sayısını bir değişkende barıntırmıyoruz çünkü, direkt HashMap'te tutuyoruz. Bu HashMap her oyuncu girdiğinde biraz daha büyüyecektir. Ancak bu kodlarda oyuncunun ikinci kez girdiğinde yeni sayı atamaması yok, 2. kez giren kişinin sayısı, o anki sayı kaç ise o olur. Bunu engellemek için bir kod daha eklemek gerekiyor.
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.


Yeni kod şu şekilde;
if (!oyuncuSayi.containsKey(e.getPlayer().getName) {
// YENİ: Oyuncunun HashMap'te daha önceden kayıtlı olup olmadığını kontrol ediyoruz. Yoksa sayı veriyoruz, varsa es geçiyoruz.
Sanırım bunu imzasındaki FireWall olayında kullanacak o yüzden farklı sayılar vermeli ^_^ (bana hashmap'i açıklayın <-<)
 

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
En üstte bir HashMap oluşturduk, bu hashmap ile ikili değerleri birbiriyle eşleştirebiliyoruz.
HashMap'lerde key - value (anahtar - değer) ilişkisi vardır, bunu bir araştırın. Yani her şey için config'e gerek yok, ancak HashMap bir oturum içerisinde geçerlidir, siz sunucuyu kapatıp açtığınızda yeniden herkese 1'den başlayarak sayı verip, ram'de tutacaktır. HashMap'i ara ara config'e kaydetmek de mümkün illa ki bu sayılar sonsuza kadar bende kalsın diyorsan.
Ha benim tavsiyem, Config yerine mysql'e kaydetmek eğer yılbaşı çekilişi falan düşünüyorsan sunucunda.

Şimdi kodları baştan yazacağım, bu sefer yanına yorum da ekleyeceğim anlayabilmen için.

Evet, düzenledim, ancak burada düzensiz dururdu diye pastebin'e yapıştırdım.
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

Link açılmazsa;
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.



Yeni kodda o kısmı düzelttim, string ve java kodu arasına + koymayı unutmuşum.
HasMapda sadece 1 liste yeter ve IRFN çok sağol tamda istediğim gibi çözdü ayriyetten açıklama yapmak için uğraşmışssın emeğin için bile teşkekür ederim ayriyetten hatamı çözdü onun içinde çok teşekkür ederim :)[DOUBLEPOST=1418504852,1418504676][/DOUBLEPOST]Vede servere her giriş eventinde random kodu listeye kayıt ettiriyorum belli bir oyuncu adına sadece ona ait olsun diye sonra serverden ayrılma eventinde ise sildiriyorum listeden yeniden girişte random kodu alsın diye.
 

Maruf61

Lapis Toplayıcısı
En iyi cevaplar
0
Sanırım bunu imzasındaki FireWall olayında kullanacak o yüzden farklı sayılar vermeli ^_^ (bana hashmap'i açıklayın <-<)
Hashmap bi liste turu diyebiliriz. Su sekilde bi kayit yapar

Key , Deger

Ornegin

Keyimiz oyuncu adi, degerimizde oyuncunun ipsi olsun.

Maruf61, 127.0.0.1
GodofMilker, 127.0.0.2
.
.
.

Seklinde bi listedir hashmap. Umarim anlatabilmisimdir.

Burdaki asil olay key i kullanarak degeri cekmekdir yani ben getvalue yapip ismimi girersem bana donus olarak valuemi yani ip mi verir.

Edit: Hashmap in tek degerli olanina yani sadece deger li olanina ArrayList diyebiliriz arraylistte yazdiginiz hersey bir satir olarak kaydedilir tek deger duz liste seklinde :)

Peki her kullanıcı için bir veritabanı oluşması gerekmez mi ?
tabii ki gerekmez. Bir veri tabaninda sayisiz kullanicinin sayisiz verisini tutabilirsiniz.
 

SFKY

Kızıltaş Madencisi
En iyi cevaplar
0
Hashmap key string değilde uuid ile yapsak daha iyi olmaz mıydı @IRFN ?
yani böyle;
PHP:
// hashmap oluşturduk;
private HashMap<UUID, Integer> oyuncuSayi = new HashMap <UUID, Integer>();
// hashmap kullandık;
oyuncuSayi.put(e.getPlayer().getUniqueId(), sayi);
// hashmap çağırdık;
oyuncu.sendMessage("§3Sizin sayınız: §6" + oyuncuSayi.get(oyuncu.getUniqueId()));
 

Maruf61

Lapis Toplayıcısı
En iyi cevaplar
0
Hashmap key string değilde uuid ile yapsak daha iyi olmaz mıydı @IRFN ?
yani böyle;
PHP:
// hashmap oluşturduk;
private HashMap<UUID, Integer> oyuncuSayi = new HashMap <UUID, Integer>();
// hashmap kullandık;
oyuncuSayi.put(e.getPlayer().getUniqueId(), sayi);
// hashmap çağırdık;
oyuncu.sendMessage("§3Sizin sayınız: §6" + oyuncuSayi.get(oyuncu.getUniqueId()));
Pluginin kullanim amacina gore gerekli degil herhangi bir kayit tutulmuyor zaten :)
 

IRFN

Sonoyuncu.Network
En iyi cevaplar
0
Hashmap key string değilde uuid ile yapsak daha iyi olmaz mıydı @IRFN ?
yani böyle;
PHP:
// hashmap oluşturduk;
private HashMap<UUID, Integer> oyuncuSayi = new HashMap <UUID, Integer>();
// hashmap kullandık;
oyuncuSayi.put(e.getPlayer().getUniqueId(), sayi);
// hashmap çağırdık;
oyuncu.sendMessage("§3Sizin sayınız: §6" + oyuncuSayi.get(oyuncu.getUniqueId()));
Gerek olduğunu sanmıyorum. Nick değiştirme sistemi gelmeden bu plugin amacına ulaşacak zaten.
 

GodofMilker

Nether Yerlisi
En iyi cevaplar
0
Zaten nick deissede bise deismez cunku oyundan cikinca ztn silonio kayit. Oyun icindeykende nick deisemez ztn en azindan cikip girmesi gerek :)
@IRFN yılbaşı çekilişi gibi şeyler hakkında yaptım dedi, değişmemeli yani.
Ona göre söyledi o <-<
ve telefondan mı giriyorsun Türkçe'yi tamamıyla katletmişsin de :(
 
Üst