Merhaba arkadaşlar. Bu sistemi forum.sa-mp.com'da gördüm. Sistemin işleyişini farkedince kafamda bir fikir uyandı. Sistemin son hâli ise bu...
Başlangıç için;
Modun en başına,
Pawn:
OnGameModeInit'e objeler,
Pawn:
Komutlarımız bu kadar, şimdi balonu hareket ettirmek için kullanacağımız tuşlarla ilgilenelim, OnPlayerKeyStateChange'e...
Pawn:
Komutlar bu kadar. Buna göre kullanım tuşları şöyle oluyor;
Pawn:
[/CODE]
Kullananlar yorum atıp cevaplandırırlarsa sevinirim. Eksik yazmış olabilirim, yazmışsam affola. Herkese iyi kullanımlar...
Başlangıç için;
Modun en başına,
Pawn:
Kod:
new UBalon, ZamanlayiciYukari, ZamanlayiciAsagi, ZamanlayiciIleri, ZamanlayiciGeri, ZamanlayiciSaga, ZamanlayiciSola, Balon_Birinci, Balon_Ikinci;
Enum olarak modun yine en başına...
Pawn: [Seç]
enum Oyuncu;
{
UBalonOyuncu
}
new OyuncuBilgi[MAX_PLAYERS][Oyuncu];
Ayrıca basılacak tuşlar içinde;
Pawn: [Seç]
#define BASINCA(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define BIRAKINCA(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
Pawn:
Kod:
//BALON OBJESİ
UBalon = CreateObject(19335, 836.08, -2000.51, 13.60, 0.00, 0.00, 0.00);
//ATEŞLER
Ates_Ikinci = CreateObject(18692, 0,0,0, 0.00, 0.00, 0.00);
Ates_Birinci = CreateObject(18692, 0,0,0, 0.00, 0.00, 0.00);
//EKLER
CreateObject(19087, 834.98, -1999.36, 13.88, 27.00, 31.00, 5.00);
CreateObject(19087, 837.26, -1999.36, 13.88, 27.00, -31.00, 5.00);
CreateObject(19087, 837.28, -2001.70, 13.88, -27.00, -31.00, 5.00);
CreateObject(19087, 834.90, -2001.70, 13.88, -27.00, 31.00, 5.00);
//DİĞERLERİ
CreateObject(1448, 833.81, -1998.54, 12.00, 0.00, 0.00, 0.00);
CreateObject(1448, 838.36, -1998.36, 12.00, 0.00, 0.00, 0.00);
CreateObject(1448, 838.34, -2002.53, 12.00, 0.00, 0.00, 0.00);
CreateObject(1448, 833.84, -2002.77, 12.00, 0.00, 0.00, 0.00);
CreateObject(1468, 836.25, -2003.40, 13.20, 0.00, 0.00, 0.00);
CreateObject(1468, 839.03, -2000.36, 13.20, 0.00, 0.00, 90.00);
CreateObject(1468, 833.14, -2000.68, 13.20, 0.00, 0.00, -90.00);
CreateObject(3361, 836.17, -1994.27, 12.40, 0.00, 0.00, 90.00);
AttachObjectToObject(Ates_Ikinci, UBalon, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1); // 2. Ateşi Yerleştirir.
AttachObjectToObject(Ates_Birinci, UBalon, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 1);// 1. Ateşi Yerleştirir.
Şimdiyse komutlar, OnPlayerCommandText bölümüne;
Pawn: [Seç]
if(strcmp(cmdtext, "/balonkontrolu", true, 10) == 0) //Balon Kontrolünü Bu Komutla Sağlarsınız.
{
OyuncuBilgi[playerid][UBalonOyuncu] = 1;
SendClientMessage(playerid, -1, "{a6a6a6}(( {ffffff}Balon kontrolüne {ff0000}başladınız{ffffff}! {a6a6a6}))");
return 1;
}
if(strcmp(cmdtext, "/kontrolbirak", true, 10) == 0) //Balon Kontrolü Bırakılır.
{
OyuncuBilgi[playerid][UBalonOyuncu] = 0;
SendClientMessage(playerid, -1, "{a6a6a6}(( {ffffff}Balon kontrolünü {ff0000}bıraktınız. {a6a6a6}))");
return 1;
}
if(strcmp(cmdtext, "/balonspawn", true, 10) == 0) // Balonun spawn olmasını sağlar.
{
DestroyObject(UBalon);
DestroyObject(Ates_Birinci);
DestroyObject(Ates_Ikinci);
UBalon = CreateObject(19335, 836.08, -2000.51, 13.60, 0.00, 0.00, 0.00);
Ates_Birinci = CreateObject(18692, 0,0,0, 0.00, 0.00, 0.00);
Ates_Ikinci = CreateObject(18692, 0,0,0, 0.00, 0.00, 0.00);
AttachObjectToObject(Ates_Birinci, UBalon, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1);
AttachObjectToObject(Ates_Ikinci, UBalon, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 1);
return 1;
}
Pawn:
Kod:
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(OyuncuBilgi[i][UBalonOyuncu] == 1) // Eğer oyuncu /balonkontrol komutunu kullanmamışsa, bu komutu uygulayamaz.
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(UBalon,X,Y,Z);
if(BASINCA(KEY_YES | KEY_WALK)) { ZamanlayiciYukari = SetTimer("BalonYukari",30,1); }
if(BIRAKINCA(KEY_YES | KEY_WALK)) { KillTimer(ZamanlayiciYukari); }
if(BASINCA(KEY_NO | KEY_WALK)) { ZamanlayiciAsagi = SetTimer("BalonAsagi",30,1); }
if(BIRAKINCA(KEY_NO | KEY_WALK)) { KillTimer(ZamanlayiciAsagi); }
if(BASINCA(KEY_SECONDARY_ATTACK | KEY_YES)) { ZamanlayiciIleri = SetTimer("BalonIleri",30,1); }
if(BIRAKINCA(KEY_SECONDARY_ATTACK | KEY_YES)) { KillTimer(ZamanlayiciIleri); }
if(BASINCA(KEY_SECONDARY_ATTACK | KEY_NO)) { ZamanlayiciGeri = SetTimer("BalonGeri",30,1); }
if(BIRAKINCA(KEY_SECONDARY_ATTACK | KEY_NO)) { KillTimer(ZamanlayiciGeri); }
if(BASINCA(KEY_CROUCH | KEY_YES)) { ZamanlayiciSaga = SetTimer("BalonSaga",30,1); }
if(BIRAKINCA(KEY_CROUCH | KEY_YES)) { KillTimer(ZamanlayiciSaga); }
if(BASINCA(KEY_CROUCH | KEY_NO)) { ZamanlayiciSola = SetTimer("BalonSola",30,1); }
if(BIRAKINCA(KEY_CROUCH | KEY_NO)) { KillTimer(ZamanlayiciSola); }
}
}
Public'ler ise şöyle,
Pawn: [Seç]
forward BalonYukari();
public BalonYukari()
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(UBalon,X,Y,Z);
MoveObject(UBalon,X,Y,Z+0.1,10.0);
return 1;
}
forward BalonAsagi();
public BalonAsagi()
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(UBalon,X,Y,Z);
MoveObject(UBalon,X,Y,Z-0.1,10.0);
return 1;
}
forward BalonIleri();
public BalonIleri()
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(UBalon,X,Y,Z);
MoveObject(UBalon,X,Y+0.5,Z,10.0);
return 1;
}
forward BalonGeri()
public BalonGeri()
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(UBalon,X,Y,Z);
MoveObject(UBalon,X,Y-0.5,Z,10.0);
return 1;
}
forward BalonSaga();
public BalonSaga()
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(UBalon,X,Y,Z);
MoveObject(UBalon,X+0.5,Y,Z,10.0);
return 1;
}
forward BalonSola();
public BalonSola()
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(UBalon,X,Y,Z);
MoveObject(UBalon,X-0.5,Y,Z,10.0);
return 1;
}
Pawn:
Kod:
[CODE]// Alt+Y ~ Balonu Yukarı Çıkarır
// Alt+N ~ Balonu Aşağı İndirir
// F+Y ~ Balonun İleri Gitmesini Sağlar
// F+N ~ Balonun Geri Gitmesini Sağlar
// C+Y ~ Balonun Sağa Gitmesini Sağlar
// C+N ~ Balonun Sola Gitmesini Sağlar.
// NOT: Komutlar Kuzey Yönüne Göre Çalımşaktadır.
Kullananlar yorum atıp cevaplandırırlarsa sevinirim. Eksik yazmış olabilirim, yazmışsam affola. Herkese iyi kullanımlar...

