1. sayfa (Toplam 1 sayfa)

Nasıl kısaltılabilir fikirlere açığım ; CSGO Mod

Gönderilme zamanı: Pzt Haz 25, 2018 10:23 pm
gönderen MawiLarq
Merhaba arkadaşlar CS:GO modum için takas sistemi yapıyordum her şey bitti localde & serverde denedim çalışıyor ancak
Takası kabul et seçeneği çok uzun oldu gereksiz kod kullandım farkındayım sizce nasıl bir kısaltmalar yapabilirim ancak tüm iflerin nedenlerini yazdırmamız lazım direk return veya olabilir gibi cevaplar olmaz : /

Kod: Tümünü seç

	
}
		case 4:{
			new wd;
			if( g_TAKAS[ adamsec[ id ] ][ istedigim_skin_key ] > 0 && g_TAKAS[ adamsec[ id ] ][ sectigim_skin_key ] > 0 )
			{
				if( g_weapon[ karsiya_beni_Tanit[ id ] ][ g_TAKAS[ id ] [ sectigim_skin_keyy  ] ] > 0)
				{
					if( g_weapon[ id ][ g_TAKAS[ id ][ istedigim_skin_keyy  ] ] > 0 )
					{
						if(g_uidcek[id] != 0  )
						{
							if( g_TAKAS[ adamsec[ id ] ][ ak_uidsibitmedi ] == g_uidcek[ karsiya_beni_Tanit[ id ] ])
							{
								new sifirlayiac;
								if( g_TAKAS[ id ][ zaman_asimi ] <= 0 )
								{
									sifirlayiac=1;
									renkli_yazi( karsiya_beni_Tanit[ id ] , "!gZaman asimin doldu yolladigin davet silindi");
									renkli_yazi( id , "!gKarsi tarafin takas suresi doldu");
								}
								if( tdurumumetot [ karsiya_beni_Tanit[ id ] ] == 1 )
								{
									sifirlayiac=1;
									renkli_yazi( id , "!gKarsi taraf takasi an itibari ila engellemis");
									renkli_yazi( karsiya_beni_Tanit[ id ] , "!gTakasini engelledigin icin islem basaris");
								}
								if( sifirlayiac== 1)
								{
									for( new i; i < ***_Berk; i++ )
									{
										g_TAKAS[ karsiya_beni_Tanit[ id ] ][ i ] = 0;
									}
									for( new i; i < ***_Berk; i++ )
									{
										g_TAKAS[ id ][ i ] = 0;
									}
									takasigoster[ id ] = 0;
									renkli_yazi( karsiya_beni_Tanit[ id ] , "!gTakasini bug oldugu icin engelledik");
									renkli_yazi( id , "!gTakasini bug oldugu icin engelledik");
									karsiya_beni_Tanit[ id ] = 0;
									return PLUGIN_HANDLED;
								}
								if( !is_user_connected( karsiya_beni_Tanit[ id ] ) )
									return PLUGIN_HANDLED;
								
								g_weapon[ id ][ g_TAKAS[ id ][ sectigim_skin_keyy ] ] += 1;
								g_weapon[ id ][ g_TAKAS[ id ][ istedigim_skin_keyy ] ] -= 1;
								g_weapon[ karsiya_beni_Tanit[ id ] ][ g_TAKAS[ id ][ sectigim_skin_keyy ] ] -= 1;
								g_weapon[ karsiya_beni_Tanit[ id ] ][ g_TAKAS[ id ][ istedigim_skin_keyy ] ] += 1;
								wd=1;
								for( new i; i < ***_Berk; i++ )
								{
									g_TAKAS[ karsiya_beni_Tanit[ id ] ][ i ] = 0;
								}
								for( new i; i < ***_Berk; i++ )
								{
									g_TAKAS[ id ][ i ] = 0;
								}
								takasigoster[ id ] = 0;
								renkli_yazi( karsiya_beni_Tanit[ id ] , "!gTakasini kabul etti");
								renkli_yazi( id , "!gTakas kabul edildi");
								karsiya_beni_Tanit[ id ] = 0;
							}
							else
							{
								renkli_yazi( id , "!gOlasi bug fixed");
							}
						}
						else
						{
							renkli_yazi( id , "!gUID Bulunmadi");
						}
					}
					else
					{
						renkli_yazi( id , "!gHata 1");
					}
				}
				else
				{
					renkli_yazi( id , "!gHata 2");
				}
			}
			else
			{
				renkli_yazi( id , "!gSen takas esyasi seciyordun icerigini sifirladik tekrar bas");
			}
			if( wd == 1 )
			{
				for( new i; i < ***_Berk; i++ )
				{
					g_TAKAS[ id ][ i ] = 0;
				}
				takasigoster[ id ] = 0;
				wd=0;
			}

Nasıl kısaltılabilir fikirlere açığım ; CSGO Mod

Gönderilme zamanı: Pzt Haz 25, 2018 10:38 pm
gönderen Colditz
Öncelikle komutların uzun olması yanlış veya fazladan kodlandığı anlamına gelmez. Yani uzun ama birçok eklentiden daha iyi çalışan bir eklenti de yapılabilir. Ben birbir bulduğum hataları yazdım.

Bir şeyi iki kere tanıtmışsın burayı tek komut ile yapabilirsin.

Kod: Tümünü seç

for( new i; i < ***_Berk; i++ )
{
	g_TAKAS[ karsiya_beni_Tanit[ id ] ][ i ] = 0;
	g_TAKAS[ id ][ i ] = 0;
}
/*
for( new i; i < ***_Berk; i++ )
{
	g_TAKAS[ id ][ i ] = 0;
}
*/
Is_user_connected komutunu iflerden sonra yapman hatalı bir davranış olabilir. Daha öncesinde tanıtırsan adam oyunda değilse boş yere if komutlarını tarayıp hata yaratmasını engellersin.

Kod: Tümünü seç

if( !is_user_connected( karsiya_beni_Tanit[ id ] ) )
	return PLUGIN_HANDLED;
Hem biraz meşgul olduğum için hem de komutların tamamının ne işleve yaradığını bilemediğim için bu kadar sorun bulabildim muhtemelen yapılabilecek fazla durum yoktur.

Kod: Tümünü seç

		case 4:{
			if( !is_user_connected( karsiya_beni_Tanit[ id ] ) )
				return PLUGIN_HANDLED;

			new wd;
			if( g_TAKAS[ adamsec[ id ] ][ istedigim_skin_key ] > 0 && g_TAKAS[ adamsec[ id ] ][ sectigim_skin_key ] > 0 )
			{
				if( g_weapon[ karsiya_beni_Tanit[ id ] ][ g_TAKAS[ id ] [ sectigim_skin_keyy  ] ] > 0)
				{
					if( g_weapon[ id ][ g_TAKAS[ id ][ istedigim_skin_keyy  ] ] > 0 )
					{
						if(g_uidcek[id] != 0  )
						{
							if( g_TAKAS[ adamsec[ id ] ][ ak_uidsibitmedi ] == g_uidcek[ karsiya_beni_Tanit[ id ] ])
							{
								new sifirlayiac;
								if( g_TAKAS[ id ][ zaman_asimi ] <= 0 )
								{
									sifirlayiac=1;
									renkli_yazi( karsiya_beni_Tanit[ id ] , "!gZaman asimin doldu yolladigin davet silindi");
									renkli_yazi( id , "!gKarsi tarafin takas suresi doldu");
								}
								if( tdurumumetot [ karsiya_beni_Tanit[ id ] ] == 1 )
								{
									sifirlayiac=1;
									renkli_yazi( id , "!gKarsi taraf takasi an itibari ila engellemis");
									renkli_yazi( karsiya_beni_Tanit[ id ] , "!gTakasini engelledigin icin islem basaris");
								}
								if( sifirlayiac== 1)
								{
									for( new i; i < ***_Berk; i++ )
									{
										g_TAKAS[ karsiya_beni_Tanit[ id ] ][ i ] = 0;
										g_TAKAS[ id ][ i ] = 0;
									}
									takasigoster[ id ] = 0;
									renkli_yazi( karsiya_beni_Tanit[ id ] , "!gTakasini bug oldugu icin engelledik");
									renkli_yazi( id , "!gTakasini bug oldugu icin engelledik");
									karsiya_beni_Tanit[ id ] = 0;
									return PLUGIN_HANDLED;
								}
								
								g_weapon[ id ][ g_TAKAS[ id ][ sectigim_skin_keyy ] ] += 1;
								g_weapon[ id ][ g_TAKAS[ id ][ istedigim_skin_keyy ] ] -= 1;
								g_weapon[ karsiya_beni_Tanit[ id ] ][ g_TAKAS[ id ][ sectigim_skin_keyy ] ] -= 1;
								g_weapon[ karsiya_beni_Tanit[ id ] ][ g_TAKAS[ id ][ istedigim_skin_keyy ] ] += 1;
								wd=1;
								for( new i; i < ***_Berk; i++ )
								{
									g_TAKAS[ karsiya_beni_Tanit[ id ] ][ i ] = 0;
									g_TAKAS[ id ][ i ] = 0;
								}
								takasigoster[ id ] = 0;
								renkli_yazi( karsiya_beni_Tanit[ id ] , "!gTakasini kabul etti");
								renkli_yazi( id , "!gTakas kabul edildi");
								karsiya_beni_Tanit[ id ] = 0;
							}
							else
							{
								renkli_yazi( id , "!gOlasi bug fixed");
							}
						}
						else
						{
							renkli_yazi( id , "!gUID Bulunmadi");
						}
					}
					else
					{
						renkli_yazi( id , "!gHata 1");
					}
				}
				else
				{
					renkli_yazi( id , "!gHata 2");
				}
			}
			else
			{
				renkli_yazi( id , "!gSen takas esyasi seciyordun icerigini sifirladik tekrar bas");
			}
			if( wd == 1 )
			{
				for( new i; i < ***_Berk; i++ )
				{
					g_TAKAS[ id ][ i ] = 0;
				}
				takasigoster[ id ] = 0;
				wd=0;
			}
		}
		

Nasıl kısaltılabilir fikirlere açığım ; CSGO Mod

Gönderilme zamanı: Pzt Haz 25, 2018 10:41 pm
gönderen MawiLarq
Doğru tesiptler saol

Nasıl kısaltılabilir fikirlere açığım ; CSGO Mod

Gönderilme zamanı: Sal Haz 26, 2018 4:23 am
gönderen PaZee
aslinda cok karmaşık degil, g_TAKAS[ adamsec[ id ] ][ istedigim_skin_key ]

constlar çok karmaşık gösteriyor sadece , elselerdeki mesajlar işine yaramiyorsa ifleri birleştirebilirsin
kodlarin çok fazla olmaması için fonksiyonlarla kısaltmalar halinde yapabilirsin örnek vereyim

takim sistemimde

Kod: Tümünü seç

	new yolla[512];
	new takimadi[33],takimidn[14]
	
	if(takimidkale(id))
	{
		ArrayGetArray(g_SiralamaArray,0,yolla)
		parse(yolla,takimidn,13,takimadi,32)
		
		if(takimidkale(id) == str_to_num(takimidn))
		{
			return true
		}
		else
		{
		return false
		}
	}
	else
	{
	return false
	}

bu kod ile takimin birinci olup olmadigini sorguluyor , direk cevabımı takimbirincimi(id) bu fonksiyon ile aliyordum sende fonksiyonlarla kısaltmalar yapabilirsin, hatta bu sayede native atayip başka eklentiden bile çekersin

sende constlari itemidlerini felan bu şekilde kısaltmalisin derim.

Nasıl kısaltılabilir fikirlere açığım ; CSGO Mod

Gönderilme zamanı: Sal Haz 26, 2018 12:50 pm
gönderen MawiLarq
PaZee yazdı: Sal Haz 26, 2018 4:23 am aslinda cok karmaşık degil, g_TAKAS[ adamsec[ id ] ][ istedigim_skin_key ]

constlar çok karmaşık gösteriyor sadece , elselerdeki mesajlar işine yaramiyorsa ifleri birleştirebilirsin
kodlarin çok fazla olmaması için fonksiyonlarla kısaltmalar halinde yapabilirsin örnek vereyim

takim sistemimde

Kod: Tümünü seç

	new yolla[512];
	new takimadi[33],takimidn[14]
	
	if(takimidkale(id))
	{
		ArrayGetArray(g_SiralamaArray,0,yolla)
		parse(yolla,takimidn,13,takimadi,32)
		
		if(takimidkale(id) == str_to_num(takimidn))
		{
			return true
		}
		else
		{
		return false
		}
	}
	else
	{
	return false
	}

bu kod ile takimin birinci olup olmadigini sorguluyor , direk cevabımı takimbirincimi(id) bu fonksiyon ile aliyordum sende fonksiyonlarla kısaltmalar yapabilirsin, hatta bu sayede native atayip başka eklentiden bile çekersin

sende constlari itemidlerini felan bu şekilde kısaltmalisin derim.
Saol genel kontrollerin hepsini fonksiyon biçimine geçirceğim.