GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

Her Türlü Silah Hilesine Kesin Çare !

Başlatan Bliss, 23 Ağustos 2017, 16:22:58

« önceki - sonraki »

0 Üye ve 5 Ziyaretçi konuyu incelemekte.

Bliss

Merhaba arkadaşlar bugün sizlere TÜM silah hilelerini nasıl fixliyicez onu göstereceğim.

İlk Olarak Ben Enum pInfo Olarak koydum bende öyleydi kendi modunuza göre uyarlayın.

Modun Başlarında bir yere:

PAWN Kodu: Seç
new PlayerInfo[MAX_PLAYERS + 1][pInfo];

PAWN Kodu: Seç
Enum pInfo
pGuns[12]
};


Ne demek bu pGuns ?

Şimdi arkadaşlar bu bir PlayerInfo biz bunu silahı aldığı zaman server sided weapon yani silahı var anlamında göstermek amacıyla silah aldığında kişi bilgisi silah almış olarak göstermek için ekledik.

Eee tamamda niye 12 tane ekledin be adam diyorsanız

Biliyorsunuzki GTA:SA çok çeşit silah bulunmakta yani sniper dediğimiz tek tek sıkmakta fakat minigun taramalı grubuna girdiğinden dolayı bunu ekledik.

PAWN Kodu: Seç
stock GivePlayerValidWeapon(playerid, WeaponID, Ammo)
{
switch(WeaponID)
{
  case 0, 1:
{
PlayerInfo[playerid][pGuns][0] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 2, 3, 4, 5, 6, 7, 8, 9:
{
PlayerInfo[playerid][pGuns][1] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 22, 23, 24:
{
PlayerInfo[playerid][pGuns][2] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 25, 26, 27:
{
PlayerInfo[playerid][pGuns][3] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 28, 29, 32:
{
PlayerInfo[playerid][pGuns][4] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 30, 31:
{
PlayerInfo[playerid][pGuns][5] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 33, 34:
{
PlayerInfo[playerid][pGuns][6] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 35, 36, 37, 38:
{
PlayerInfo[playerid][pGuns][7] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 16, 17, 18, 39, 40:
{
PlayerInfo[playerid][pGuns][8] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 41, 42, 43:
{
PlayerInfo[playerid][pGuns][9] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 10, 11, 12, 13, 14, 15:
{
PlayerInfo[playerid][pGuns][10] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
case 44, 45, 46:
{
PlayerInfo[playerid][pGuns][11] = WeaponID;
GivePlayerValidWeapon(playerid, WeaponID, Ammo);
}
}
return 1;
}


Şimdi arkadaşlar biz burada ne yaptık ?

Normalde gta da max 5 yada 4 çeşit silah alabiliyoruz. Fakat biz burada tüm silahların çeşit çeşit kayıt olmasını sağladık. Yani diyelim biz bir kişiye Minigun verdik değil mi o pGuns[5]'e kayıt oluyor fakat diyelim MP5 Verdik o ise [pGuns][4]'e kayıt oluyor ve karışıklık ortadan kalkmış oluyor.

Tamam bunu ekledimde ne oldu şimdi ?

Artık GivePlayerWeapon Yerine GivePlayerValidWeapon kullanmak zorundayız yoksa birazdan ekliyeceğimiz bir değişken yüzünden durduk yere kicklenebiliriz !

PAWN Kodu: Seç
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
  if(weaponid == 22)
{
if (PlayerInfo[playerid][pGuns][2] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 23)
{
if (PlayerInfo[playerid][pGuns][2] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 24)
{
if (PlayerInfo[playerid][pGuns][2] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 25)
{
if (PlayerInfo[playerid][pGuns][3] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 26)
{
if (PlayerInfo[playerid][pGuns][3] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 27)
{
if (PlayerInfo[playerid][pGuns][3] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 28)
{
if (PlayerInfo[playerid][pGuns][4] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 29)
{
if (PlayerInfo[playerid][pGuns][4] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 32)
{
if (PlayerInfo[playerid][pGuns][4] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 30)
{
if (PlayerInfo[playerid][pGuns][5] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 31)
{
if (PlayerInfo[playerid][pGuns][5] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 33)
{
if (PlayerInfo[playerid][pGuns][6] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 34)
{
if (PlayerInfo[playerid][pGuns][6] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 38)
{
if (PlayerInfo[playerid][pGuns][7] <= 0)
{
Kick(playerid);
return 0;
}
  }

  if(weaponid == 24)
{
if (PlayerInfo[playerid][pGuns][2] <= 0)
{
Kick(playerid);
return 0;
}
  }
   return 1;
}


Şimdi biz burada ne yaptık ?

OnplayerWeaponShot'a bunu eklemekle beraber bir kişi silahı hileyle aldığı zaman silah sunucuya kayıt olmadığından dolayı direk olarak kicklenicek bizim eklediğimiz GivePlayerValidWeapon fonksiyonunu kullanmadığı için.

Biz bunu niye OnPlayerGivedamage'e koymadık ?

Bildiğiniz üzere SA:MP'ta bazı hileler mevcut bu hileler gelen giden paketleri engelliyor. Fakat OnplayerWeaponShot fonksiyonu hiçbir şekilde engellenemez !

Eğer oyuncu oyuna girdiği zaman tüm pGuns değerleri sıfırlansın istiyor iseniz bunu OnPlayerConnect'e ekleyin.

PAWN Kodu: Seç
PlayerInfo[playerid][pGuns][0] = 0;
PlayerInfo[playerid][pGuns][1] = 0;
PlayerInfo[playerid][pGuns][2] = 0;
PlayerInfo[playerid][pGuns][3] = 0;
PlayerInfo[playerid][pGuns][4] = 0;
PlayerInfo[playerid][pGuns][5] = 0;
PlayerInfo[playerid][pGuns][6] = 0;
PlayerInfo[playerid][pGuns][7] = 0;
PlayerInfo[playerid][pGuns][8] = 0;
PlayerInfo[playerid][pGuns][9] = 0;
PlayerInfo[playerid][pGuns][10] = 0;
PlayerInfo[playerid][pGuns][11] = 0;


     Evet arkadaşlar sistem bu kadardı. İstek gelirse pGuns'u MySQL veya Dini'ye kayıt etmeyi anlatırım.Bu şekilde oyuna girip çıktığında silahı gitmez.
Son düzenlenme: 23 Ağustos 2017, 16:24:31 lostmode

NexoR


Bliss

Alıntı yapılan: NexoR - 23 Ağustos 2017, 16:27:35

Kodlar çok uzun.

:helal: Normalde bazı kodları switch ile yazıp kısaltılabilir onplayerconnecteki misal fakat bilmiyorum :D


NexoR

Alıntı yapılan: lostmode - 23 Ağustos 2017, 16:28:28

Alıntı yapılan: NexoR - 23 Ağustos 2017, 16:27:35

Kodlar çok uzun.

:helal: Normalde bazı kodları switch ile yazıp kısaltılabilir onplayerconnecteki misal fakat bilmiyorum :D


Benim kullandığım Anti Silah;

new Weapons[MAX_PLAYERS][13];

public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if(GetPVarInt(playerid, "SilahDenetle") <= gettime())
{
new slot = GetWeaponSlot(weaponid);
if(Weapons[playerid][slot] != weaponid)
{
    Kick(playerid);
}
}
SetPVarInt(playerid, "SilahDenetle", gettime() + 1);
return 1;
}

stock Silahver(playerid, silah, mermi)
{
new slot = GetWeaponSlot(silah);
Weapons[playerid][slot] = silah;
GivePlayerWeapon(playerid, silah, mermi);
}

stock GetWeaponSlot(weaponid)
{
new slot;
switch(weaponid)
{
case 0, 1: slot = 0;
case 2..9: slot = 1;
case 10..15: slot = 10;
case 16..18, 39: slot = 8;
case 22..24: slot = 2;
case 25..27: slot = 3;
case 28, 29, 32: slot = 4;
case 30, 31: slot = 5;
case 33, 34: slot = 6;
case 35..38: slot = 7;
case 40: slot = 12;
case 41..43: slot = 9;
case 44..46: slot = 11;
}
return slot;
}


GivePlayerWeapon`ları da Silahver şeklinde değiştirirseniz tamamdır.


Bliss

Alıntı

Benim kullandığım Anti Silah;

new Weapons[MAX_PLAYERS][13];

public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if(GetPVarInt(playerid, "SilahDenetle") <= gettime())
{
new slot = GetWeaponSlot(weaponid);
if(Weapons[playerid][slot] != weaponid)
{
    Kick(playerid);
}
}
SetPVarInt(playerid, "SilahDenetle", gettime() + 1);
return 1;
}

stock Silahver(playerid, silah, mermi)
{
new slot = GetWeaponSlot(silah);
Weapons[playerid][slot] = silah;
GivePlayerWeapon(playerid, silah, mermi);
}

stock GetWeaponSlot(weaponid)
{
new slot;
switch(weaponid)
{
case 0, 1: slot = 0;
case 2..9: slot = 1;
case 10..15: slot = 10;
case 16..18, 39: slot = 8;
case 22..24: slot = 2;
case 25..27: slot = 3;
case 28, 29, 32: slot = 4;
case 30, 31: slot = 5;
case 33, 34: slot = 6;
case 35..38: slot = 7;
case 40: slot = 12;
case 41..43: slot = 9;
case 44..46: slot = 11;
}
return slot;
}


GivePlayerWeapon`ları da Silahver şeklinde değiştirirseniz tamamdır.


Algoritması aynı sayılır :helal:
Son düzenlenme: 23 Ağustos 2017, 17:06:15 lostmode

NexoR


Bliss


Kronos

Kodları kısaltabilirdin, yararlı ama teşekkürler.


Zeus


Jawié

Alıntı yapılan: Zeus - 24 Ağustos 2017, 15:03:43

Bence rp dışı gmler için yararlı.


Aynen aynen. Ne gerek var canım. Roleplayde dmcilerin silah alması gerekiyor zaten. Rolü havaya uçursun falan filan. Roket alsın fırlatsın. Silahlar uçuşsun. Oo, efsane oluyor yav.


Jizzy


Gogh

Kodlar çok uzun olmuş ama onun dışında güzel bir paylaşım.


Pablo

Anlatım İçin Teşekkürler Çok İşime Yarayacak :helal:

Alıntı




Pawnotürk Üyesi 2017-2020

enes020020


FelleR