Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Harita Oylamasi

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler


Konu Sahibi
OneTap
Mesajlar: 53
Kayıt: Çrş Haz 13, 2018 6:02 pm

Harita Oylamasi

Mesaj gönderen OneTap »

Merhabalar, basitçe kodlanmış bir harita değişim sisteminde şu dört adet sıkıntı çekmekteyiz.

1- Oylama menüsünde user haritayı seçince menünün kapanmasını istiyoruz. Tıpkı Default olan MapChooser gibi. Şuan oyuncu seçiyor, öyle ekranda kalıyor.
2- Oylama işlemi bir basitce set_task ile zamana bağlanmış. Harita oylamasi başladığında haritaoylamasi = true değerini alıyor ve oylama başlıyor. Yine harita oylamasini başlatan set_task'ın peşine hemen başka bir set_task eklenmiş ve 10 saniye sure eklenmiş. Bu timer başlayıncada haritaoylamasi = false oluyor ve oylama öyle bitiyor. Bunun yerine daha mantıklı çalışan bir sistem gerekiyor.
3- Haritaları new const olarak tanımlamışlar. Burada ki sorun şu harita ismini oylamanın sonunda yanlış yazıyor. Örneğin DE_MIRAGE'yi DE_MIR diye yazıyor ve dolayısıyla map değişmiyor.
4- new const ile değilde bir .ini dosyasına haritalar bağlansa daha güzel olur.

Kodlar aşağıda verilmiştir. Herhangi bir Warning veya error kesinlikle almıyoruz. Verdiğim kodlar oylama ile ilgili kodlardır.

Kod: Tümünü seç

Kütüphane ve define ve new:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fun>

#define VOTE_TIME	5.0 // Map suresi 1.75(1dk45sn) olarak hesaplanir.
#define VOTE_END_TIME	15.0 // Map suresi 1.75(1dk45sn) olarak hesaplanir.

/*=== Mapler ===*/ 
new const Maps[][][] = 
{
	{"HaritaIsmi",0},
	{"DE_DUST2",0},
	{"DE_MIRAGE"0},
	{"DE_CACHE"0},
	{"DE_INFERNO",0},
	{"DE_TRAIN",0}
}

new
round = 0,
secilenharita[200], 
bool:haritaoylamasi;
-----------------------------------------------------------------
Round bitiş ve başlangıcında yapması istenenler:

public RoundStart()
{
	if(round == 29 )
	{
		set_task(VOTE_TIME, "MapVote")
		set_task(VOTE_END_TIME, "EndVote")
	}
}

public RoundEnd()
{
	round ++
	
	if(round == 30 || round > 30)
	{
		server_cmd("amx_map %s",secilenharita)
	}
}
-----------------------------------------------
Buradan sonrasıda tamamen oylama sistemi ile alakalı kodlar:

public MapVote()
{
	static Uid;
	get_players(players, inum)
	for(new i; i < inum; i++) 
	{
		Uid = players[i];
		haritaoylamasi = true
		
		static Item[64]
		
		formatex(Item, sizeof(Item) - 1, "\rHarita Oylamasi")
		new menu = menu_create(Item, "MapVote_devam")
		
		new i;
		for(i=1;i<sizeof Maps;i++)
		{
			new szid[10]
			num_to_str(i,szid,9)
			formatex(Item, sizeof(Item) - 1, "%s", Maps[i][0])
			menu_additem(menu, Item, szid)
		}
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
		menu_display(Uid, menu, 0)
	}
}

public MapVote_devam(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], iName[64], Access, Callback
	menu_item_getinfo(menu, item, Access, data, sizeof(data), iName, sizeof(iName), Callback)
	new key = str_to_num(data)
	Maps[key][1][0]+=1
	MapVote_sonuc(id)
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public MapVote_sonuc(id)
{
	static Item[64]
	
	formatex(Item, sizeof(Item) - 1, "\rHarita Oylamasi")
	new menu = menu_create(Item, "MapVote_sonuc2")
	
	new i;
	for(i=1;i<sizeof Maps;i++)
	{
		formatex(Item, sizeof(Item) - 1, "%s \d[\r %d \d]", Maps[i][0], Maps[i][1][0])
		menu_additem(menu, Item, "1")
	}
	menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
	menu_display(id, menu, 0)
}

public MapVote_sonuc2(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], iName[64], Access, Callback
	menu_item_getinfo(menu, item, Access, data, sizeof(data), iName, sizeof(iName), Callback)
	new key = str_to_num(data)
	switch(key)
	{
		case 1:
		{
			if(haritaoylamasi)
			{
				MapVote_sonuc(id)
			}
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public EndVote()
{
	haritaoylamasi = false
	new i,j;
	for(i=1;i<sizeof Maps;i++)
	{
		for(j=1;j<sizeof (Maps) - 1;j++)
		{
			new gecici,gecici2[300];
			if(Maps[j][1][0] < Maps[j+1][1][0])
			{
				gecici = Maps[j][1][0]
				Maps[j][1][0] = Maps[j+1][1][0]
				Maps[j+1][1][0] = gecici
				formatex(gecici2,charsmax(gecici2),"%s",Maps[j][0])
				formatex(Maps[j][0],charsmax(Maps),"%s",Maps[j+1][0])
				formatex(Maps[j+1][0],charsmax(Maps),"%s",gecici2)
			}
		}
	}
	ChatColor(0, "!g[%s Rekabetci !t(Oylama)!g]: !nOylama Sonucu: !g%s",SERVER,Maps[1][0])
	ChatColor(0, "!g[%s Rekabetci !t(Oylama)!g]: !nOylama tamamlandi. Bir sonraki el harita degisecek.",SERVER)
	formatex(secilenharita,charsmax(secilenharita),"%s",Maps[1][0])
}
İlgilenen arkadaşlar yukardaki sorunları çözülmüş yukardaki şablon benzeri kodlar veya direkt sma atarsa çok sevinirim
Şimdiden teşekkürler :)

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Taha Demirbaş
Mesajlar: 10427
Kayıt: Cum Tem 08, 2016 10:05 pm
Konum: Türkiye
İletişim:

Harita Oylamasi

Mesaj gönderen Taha Demirbaş »

Bunu adam etmek zor olacak Çünkü herşey çok basitçe yazılmış. Sıfırdan toparlanırsa daha iyi olabilir. Piyasada Mapchooserler var forumumuzda da mevcut deneyebilirsiniz.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
OneTap
Mesajlar: 53
Kayıt: Çrş Haz 13, 2018 6:02 pm

Harita Oylamasi

Mesaj gönderen OneTap »

@Taha Demirbaş

Kardeşim benim için bunun adam edilmesi önemli değil bana dediğin gibi sıfırdan yazılmış bir mapchooser lazım ama sadece oylama işlemi olacak. Yani Fatih arkadaşın ki varda parçalayamadım açıkçası bir el atabilir misin?

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Taha Demirbaş
Mesajlar: 10427
Kayıt: Cum Tem 08, 2016 10:05 pm
Konum: Türkiye
İletişim:

Harita Oylamasi

Mesaj gönderen Taha Demirbaş »

csm süreli sistem diye aratabilirsiniz. O daha sade bir mapchooser.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

JustR1x
Mesajlar: 234
Kayıt: Prş Kas 30, 2017 11:36 am
Konum: TS2.CSDuragi.Club
Server Ip/DNS: CS7.CSDuragi.Com
Clan İsmi: Leader Gaming
İletişim:

Harita Oylamasi

Mesaj gönderen JustR1x »

Deneyiniz; http://www.csplugin.com/2016/05/csm-map ... 2.html?m=1

Yorumlar kısmında v3.2 sürümünün linki var, onu kullanınız.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
OneTap
Mesajlar: 53
Kayıt: Çrş Haz 13, 2018 6:02 pm

Harita Oylamasi

Mesaj gönderen OneTap »

JustR1x yazdı: Pzr Eyl 16, 2018 11:52 pm Deneyiniz; http://www.csplugin.com/2016/05/csm-map ... 2.html?m=1

Yorumlar kısmında v3.2 sürümünün linki var, onu kullanınız.
Teşekkürler.

Konu çözümlenmiştir.

Link:
Linklerini gizle
Linki Kopyala
Cevapla