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

https://discord.gg/43gGDQe6tS

2-3 Tane kod parçacığı hakkında soru.

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler

Kullanıcı avatarı

Konu Sahibi
bilalgecer47
Mesajlar: 729
Kayıt: Çrş Ağu 22, 2018 9:20 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen bilalgecer47 »

1.Kod silah modeli giydirme.Silah modellerini caseye ihtiyaç kalmadan elindeki silaha göre eşitleyip nasıl giydirebilirim?
Ekstradan örnek olarak verdiğim kodda ak için birden fazla skin olcak ona göre bi parça lazım.

Kod: Tümünü seç

		
		new sw = get_member(pEntity, m_iId);
		switch(sw) {
			case WEAPON_AK47: {
				SetHookChainArg(2, ATYPE_STRING, akmodelivsvs);
			}
			case WEAPON_M4A1: {
				SetHookChainArg(2, ATYPE_STRING, akmodelivsvs);
			}
			case WEAPON_AWP: {
				SetHookChainArg(2, ATYPE_STRING, akmodelivsvs);
			}
			case WEAPON_DEAGLE: {
				SetHookChainArg(2, ATYPE_STRING, akmodelivsvs);
			}
		}
2.soru Menülerle ilgili
viewtopic.php?p=315582#p315582
Bu konudaki menüye benzer bi menü çıkardım işe yararmi.Yoksa tamamen atmakmı gerekiyo fmt tarzı komutları.

Kod: Tümünü seç

@anamenu(const id){
	new menu = menu_create(fmt("\d%s \w| \yBoş Menu", tag), "@anamenu_devam");
	
	menu_additem(menu, fmt("\r%s \w| \ySari", tag), "0");
	menu_additem(menu, fmt("\r%s \w| \ySari", tag), "1");
	menu_additem(menu, fmt("\r%s \w| \ySari", tag), "2");
	menu_additem(menu, fmt("\r%s \w| \ySari", tag), "3");
	menu_additem(menu, fmt("\r%s \w| \ySari", tag), "4");
	menu_additem(menu, fmt("\r%s \w| \ySari", tag), "5");
	
	menu_setprop(menu, MPROP_EXITNAME, fmt("\d%s \w| \yCikis", tag));
	menu_display(id, menu);
}
@anamenu_devam(const id, const menu, const item) {
	switch(item) {
		case MENU_EXIT: {
			client_print_color(id,id,"ciktim");
			menu_destroy(menu);
			return PLUGIN_HANDLED;
		}
		case 0: {
			client_print_color(id,id,"birinci");
		}
		case 1: {
			client_print_color(id,id,"ikinci");
		}
		case 2: {
			client_print_color(id,id,"ucuncu");
		}
		case 3: {
			client_print_color(id,id,"dorduncu");
		}
		case 4: {
			client_print_color(id,id,"besinci");
		}
		case 5: {
			client_print_color(id,id,"altinci");
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
3.Soru ise reapide FM_EmitSound'un karşılığı yokmu?
Bununla ilgili RG_CBasePlayer_SetAnimation komutunu buldum ancak nasıl kullanılacağını bulamadım.
Böyle bi açıklama yapılmış.
Right now, SetAnimation (original function) will be called only from anything related to weapon (Reload/Fire), while SetAnimation_part2 will be called only from anything related to player (Duck/Jump/TakeDamage/Killed/PostThink).

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

Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen Colditz »

Elindeki silaha göre giydirme olayı en iyi deploy + case olayı ile oluyor. Örneğin AK-47 silahı için birden çok modeli giydirmek istiyorsan global bir değişken oluşturacaksın ve değere göre giydireceksin.

Kod: Tümünü seç

new const g_szWeaponModels[][] = {
	"models/v_blue_ak47.mdl",
	"models/v_dark_ak47.mdl",
	"models/v_gray_ak47.mdl"
};

new g_iPlayerAK47Model[MAX_CLIENTS + 1];


@CBasePlayerWeapon_DefaultDeploy_Pre(const iEntity, szViewModel[], szWeaponModel[], iAnim, szAnimExt[], skiplocal) {
	new pPlayer = get_member(iEntity, m_pPlayer);
	new iWeaponID = get_member(iEntity, m_iId);

	switch(iWeaponID) {
		case WEAPON_AK47: {
			SetHookChainArg(2, ATYPE_STRING, g_szWeaponModels[g_iPlayerAK47Model[pPlayer]]);
		}
	}
}
Menü olayında menu_additem komutunun sonuna sayı eklemene gerek yok, normal menülerde. Başka bir hata yok, fmt yerine değer de oluşturabilirsiniz eski tipte menüler gibi. Formatex ile menülere isim verebilirsiniz fakat fmt varken gerek görmüyorum. Case bölümüne, eğer menüden çıkınca bir şey olmayacaksa MENU_EXIT eklemenize gerek yok, diğer her şey güzel.

Kod: Tümünü seç

menu_additem(iMenu, "Menü 1");
menu_additem(iMenu, "Menü 2");
menu_additem(iMenu, "Menü 3");
Bildiğim kadarıyla FM_EmitSound komutunun reapi karşılığı yok. Animation komutu ile oyuncunun animasyonunu ayarlayabiliyorsun, ses değiştiremezsin. EmitSound komutu gayet güzel çalışmakta, onu kullanın.

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

Konu Sahibi
bilalgecer47
Mesajlar: 729
Kayıt: Çrş Ağu 22, 2018 9:20 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen bilalgecer47 »

Colditz yazdı: Pzt Mar 22, 2021 3:43 am Elindeki silaha göre giydirme olayı en iyi deploy + case olayı ile oluyor. Örneğin AK-47 silahı için birden çok modeli giydirmek istiyorsan global bir değişken oluşturacaksın ve değere göre giydireceksin.

Kod: Tümünü seç

new const g_szWeaponModels[][] = {
	"models/v_blue_ak47.mdl",
	"models/v_dark_ak47.mdl",
	"models/v_gray_ak47.mdl"
};

new g_iPlayerAK47Model[MAX_CLIENTS + 1];


@CBasePlayerWeapon_DefaultDeploy_Pre(const iEntity, szViewModel[], szWeaponModel[], iAnim, szAnimExt[], skiplocal) {
	new pPlayer = get_member(iEntity, m_pPlayer);
	new iWeaponID = get_member(iEntity, m_iId);

	switch(iWeaponID) {
		case WEAPON_AK47: {
			SetHookChainArg(2, ATYPE_STRING, g_szWeaponModels[g_iPlayerAK47Model[pPlayer]]);
		}
	}
}
Menü olayında menu_additem komutunun sonuna sayı eklemene gerek yok, normal menülerde. Başka bir hata yok, fmt yerine değer de oluşturabilirsiniz eski tipte menüler gibi. Formatex ile menülere isim verebilirsiniz fakat fmt varken gerek görmüyorum. Case bölümüne, eğer menüden çıkınca bir şey olmayacaksa MENU_EXIT eklemenize gerek yok, diğer her şey güzel.

Kod: Tümünü seç

menu_additem(iMenu, "Menü 1");
menu_additem(iMenu, "Menü 2");
menu_additem(iMenu, "Menü 3");
Bildiğim kadarıyla FM_EmitSound komutunun reapi karşılığı yok. Animation komutu ile oyuncunun animasyonunu ayarlayabiliyorsun, ses değiştiremezsin. EmitSound komutu gayet güzel çalışmakta, onu kullanın.
1.ci olayda bende aynı şekilde düşündüm ancak bütün silahları ayrı constlara yazmam gerekiyo sanırım.Ekstradan giydirme kısmında biçoğu silah olcağı için çok fazla case olcak.Bunu kısaltmanın bi yöntemi yokmu.

2.cisi ise

Kod: Tümünü seç

@anamenu(const id){
	new menu = menu_create(("\r%s \w| \yBos Menu", tag), "@anamenu_devam");
	
	menu_additem(menu, "\r%s \w| \ySari", tag);
	menu_additem(menu, "\r%s \w| \ySari", tag);
	menu_additem(menu, "\r%s \w| \ySari", tag);
	menu_additem(menu, "\r%s \w| \ySari", tag);
	menu_additem(menu, "\r%s \w| \ySari", tag);
	menu_additem(menu, "\r%s \w| \ySari", tag);
	
	menu_setprop(menu, MPROP_EXITNAME, "\d%s \w| \yCikis", tag);
	menu_display(id, menu);
}
@anamenu_devam(const id, const menu, const item) {
	switch(item) {
		case 0: {
			client_print_color(id,id,"birinci");
		}
		case 1: {
			client_print_color(id,id,"ikinci");
		}
		case 2: {
			client_print_color(id,id,"ucuncu");
		}
		case 3: {
			client_print_color(id,id,"dorduncu");
		}
		case 4: {
			client_print_color(id,id,"besinci");
		}
		case 5: {
			client_print_color(id,id,"altinci");
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
Bu şekilde çalışmasında bi sıkıntı yok .
Birinci seçenekte yoketmedeki mantık nedir?Niye diğer seçenekler değilde 1 yani case 0 da yok ediyoruz.

Kod: Tümünü seç

	case 0: {
			client_print_color(0, 0, "BİRİNCİ SEÇENEĞE BASTIM.");

			//Menüye devam ettirmek istemediğimiz zaman önce menüyü yok etmemiz gerekiyor. Basit bir örnek.
			menu_destroy(iMenu);
			return PLUGIN_HANDLED;

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

Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen Colditz »

Oluşturacağın global değerlere bağlı olarak case'leri kısaltabilirsin, tamamen düşünme, planlama ve yazma ile alakalı. Yok etmedeki mantık sadece bir örnek. Menüyü şu şekilde yok edebilirsiniz diye bir örnek, takılmaya gerek yok.

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

Konu Sahibi
bilalgecer47
Mesajlar: 729
Kayıt: Çrş Ağu 22, 2018 9:20 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen bilalgecer47 »

Colditz yazdı: Pzt Mar 22, 2021 4:14 am Oluşturacağın global değerlere bağlı olarak case'leri kısaltabilirsin, tamamen düşünme, planlama ve yazma ile alakalı. Yok etmedeki mantık sadece bir örnek. Menüyü şu şekilde yok edebilirsiniz diye bir örnek, takılmaya gerek yok.
Jbmenuyu guncellerken hata aldim.Sadece bu kisimda bi hata var çözemedim.
Önceki hali :

Kod: Tümünü seç

menu_additem(menu, fmt("\r%s \w- \y%s \d[%d TL]", tag,bicakmodel[gorunum[id]][0], g_cvars[1]), "1");
Hata veren kısmı :

Kod: Tümünü seç

menu_additem(menu, "\r%s \w| \y%s \d[%d TL]^n", tag,bicakmodel[gorunum[id]][0], g_cvars[1]);
Verdiği hata:

Kod: Tümünü seç

Error: Argument type mismatch (argument 4) on line 485

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

Konu Sahibi
bilalgecer47
Mesajlar: 729
Kayıt: Çrş Ağu 22, 2018 9:20 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen bilalgecer47 »

Aynı şekilde bunuda değişirken hata alıyorum

Kod: Tümünü seç

menu_additem(menu, fmt("\r%s \w- \yBonus Menu%s", tag, bonus[id] ? " \d[Kullandiniz]" : ""), "3");

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

Konu Sahibi
bilalgecer47
Mesajlar: 729
Kayıt: Çrş Ağu 22, 2018 9:20 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen bilalgecer47 »

Çözdüm parantez içine alınca hata vermedi.

Kod: Tümünü seç

menu_additem(menu, ("\r%s \w| \yBicak Menu%s", tag, marketsinir[id] ? " \d[Kullandiniz]" : ""));

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

bestcore
Mesajlar: 1625
Kayıt: Cmt Eyl 30, 2017 12:44 pm
Konum: Samsun

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen bestcore »

bilalgecer47 yazdı: Pzt Mar 22, 2021 11:38 pm Çözdüm parantez içine alınca hata vermedi.

Kod: Tümünü seç

menu_additem(menu, ("\r%s \w| \yBicak Menu%s", tag, marketsinir[id] ? " \d[Kullandiniz]" : ""));
O satır çalışmaz büyük ihtimal, bir yerde %s, %d vs. kullanacaksan kodu formatlaman gerekiyor, fmt yada formatex kullanarak.

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

Konu Sahibi
bilalgecer47
Mesajlar: 729
Kayıt: Çrş Ağu 22, 2018 9:20 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen bilalgecer47 »

bestcore yazdı: Pzt Mar 22, 2021 11:51 pm
bilalgecer47 yazdı: Pzt Mar 22, 2021 11:38 pm Çözdüm parantez içine alınca hata vermedi.

Kod: Tümünü seç

menu_additem(menu, ("\r%s \w| \yBicak Menu%s", tag, marketsinir[id] ? " \d[Kullandiniz]" : ""));
O satır çalışmaz büyük ihtimal, bir yerde %s, %d vs. kullanacaksan kodu formatlaman gerekiyor, fmt yada formatex kullanarak.
Gerek yok test ettim dün sıkıntı yoktu ufak tefek hatalar alıyorum.

Kod: Tümünü seç

	menu_additem(menu, ("\d%s \w| \dOyundaki Oyuncular : %d", tag,get_playersnum()));
Burası hata veriyor.
Birden fazla %s %d girince olmuyor sanırım :(

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

Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

2-3 Tane kod parçacığı hakkında soru.

Mesaj gönderen Colditz »

bilalgecer47 yazdı: Sal Mar 23, 2021 12:22 am

Kod: Tümünü seç

menu_additem(menu, ("\r%s \w| \yBicak Menu%s", tag, marketsinir[id] ? " \d[Kullandiniz]" : ""));
fmt nerede? :roll:

Kod: Tümünü seç

menu_additem(menu, fmt("\r%s \w| \yBicak Menu%s", tag, marketsinir[id] ? " \d[Kullandiniz]" : ""));

Link:
Linklerini gizle
Linki Kopyala
Cevapla