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

https://discord.gg/43gGDQe6tS

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

Oyunda karşılaştığınız hatalar , oyun hakkında genel bilgiler

Moderatör: Moderatörler


Konu Sahibi
MawiLarq
Yasaklı Üye
Yasaklı Üye
Mesajlar: 155
Kayıt: Pzr Eki 16, 2016 9:50 am

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

Mesaj 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;
			}

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

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

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

Mesaj 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;
			}
		}
		

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MawiLarq
Yasaklı Üye
Yasaklı Üye
Mesajlar: 155
Kayıt: Pzr Eki 16, 2016 9:50 am

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

Mesaj gönderen MawiLarq »

Doğru tesiptler saol

Link:
Linklerini gizle
Linki Kopyala

PaZee
Mesajlar: 1761
Kayıt: Çrş Şub 22, 2017 11:28 pm
Konum: Istanbul
Server Ip/DNS: Cs.teknoklan.com
Clan İsmi: TeknoKlan
İletişim:

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

Mesaj 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.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MawiLarq
Yasaklı Üye
Yasaklı Üye
Mesajlar: 155
Kayıt: Pzr Eki 16, 2016 9:50 am

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

Mesaj 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.

Link:
Linklerini gizle
Linki Kopyala
Cevapla