1. sayfa (Toplam 2 sayfa)

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

Gönderilme zamanı: Pzt Mar 22, 2021 3:20 am
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).

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

Gönderilme zamanı: Pzt Mar 22, 2021 3:43 am
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.

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

Gönderilme zamanı: Pzt Mar 22, 2021 4:10 am
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;

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

Gönderilme zamanı: Pzt Mar 22, 2021 4:14 am
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.

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

Gönderilme zamanı: Pzt Mar 22, 2021 11:25 pm
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

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

Gönderilme zamanı: Pzt Mar 22, 2021 11:31 pm
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");

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

Gönderilme zamanı: Pzt Mar 22, 2021 11:38 pm
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]" : ""));

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

Gönderilme zamanı: Pzt Mar 22, 2021 11:51 pm
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.

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

Gönderilme zamanı: Sal Mar 23, 2021 12:22 am
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 :(

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

Gönderilme zamanı: Sal Mar 23, 2021 2:34 am
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]" : ""));