Modun ilk başlarında tanımlanacak olan kütüphaneler :
#include <a_samp>
#include <Pawn.CMD>
Kullanacağımız değişken :
new serverBakim;
OnPlayerConnect publicine girilecekler
public OnPlayerConnect(playerid)
{
if(serverBakim == 1)
{
SendClientMessage(playerid,-1,"Sunucumuz bakımdadır.Buraya giremezsin !");
SetTimer("KickTimer",1000,false); //Bu timer sayesinde yazının görünüp kick atılması sağlandı.Aşağıdaki public i kullandık (KickTimer)
}
return 1;
}
Sunucunun bakımdadır yazısı devreye girmesini sağlamak için komutumuzu ekleyelim
CMD:bakimmodu(playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"[!] Yetkin yok adamım"); //Kişi RCON admin değil ise bu koşul çalışacaktır.
if(serverbakim == 0) // Server bakımı devrede değilse serverbakim değişkenini devreye sokarak kimseyi sunucuya sokamayacktır.
{
serverbakim = 1;
SendClientMessage(playerid,-1,"Sunucuyu bakım moduna aldın !");
}
else // Server Bakımı devredeyse serverbakim değişkenini devre dışı bıraktık.Böylece herkes girebilecek sunucunuza.
{
serverbakim = 0;
SendClientMessage(playerid,-1,"Sunucuyu bakım modundan çıkardın.Artık herkes sunucuya gelebilir !");
}
return 1;
}
Oyuncunun kicklenmesini sağlayacağımız timerı da ekliyoruz
forward KickTimer(playerid);
public KickTimer(playerid)
{
Kick(playerid);
}
Paylaşım için teşekkürler.
Başarılı fakat connect bölümüne bir admin değişkeni ile ayarla daha iyi olur
Örnek: if(AdminLevel(playerid) > 1337)
Gibi ekleyerek kurucu vb kişilerin girmesini sağla daha kullanışlı olur
Çünkü oyuna giremeden bakımı kapatamayız :)
Bunu kötü algılama başarılı
Paylaşım için teşekkürler.
timer kullanımı yanlış, settimerex kullanmalısınız.
böyle tek komutluk sistemlerde pawn.cmd kullanmak yerine daha yaygın olarak kullanılan zcmd yi kullanabilirsiniz.
sscanf kullanılmadığı halde tanıtmışsınız.
serverBakim değişkenini boolean olarak kullansanız daha sağlıklı olacaktır. nasıl olsa sadece true ve false değerlerini alacak değişken.
#include <a_samp>
#include <zcmd>
new bool:serverBakim = false;
public OnPlayerConnect(playerid)
{
if(serverBakim == true)
{
SendClientMessage(playerid, -1, "Sunucumuz bakımdadır.Buraya giremezsin !");
SetTimerEx("KickTimer", 1000, false, "i", playerid); //Bu timer sayesinde yazının görünüp kick atılması sağlandı.Aşağıdaki public i kullandık (KickTimer)
return 1;
}
return 1;
}
CMD:bakimmodu(playerid)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[!] Yetkin yok adamım"); //Kişi RCON admin değil ise bu koşul çalışacaktır.
switch(serverBakim)
{
case false: // Server bakımı devrede değilse serverbakim değişkenini devreye sokarak kimseyi sunucuya sokamayacktır.
{
serverBakim = true;
SendClientMessage(playerid, -1, "Sunucuyu bakım moduna aldın !");
}
case true: // Server Bakımı devredeyse serverbakim değişkenini devre dışı bıraktık.Böylece herkes girebilecek sunucunuza.
{
serverBakim = false;
SendClientMessage(playerid, -1, "Sunucuyu bakım modundan çıkardın.Artık herkes sunucuya gelebilir !");
}
}
return 1;
}
forward KickTimer(playerid);
public KickTimer(playerid) return Kick(playerid);
Alıntı yapılan: Excision - 07 Mayıs 2019, 21:04:22
timer kullanımı yanlış, settimerex kullanmalısınız.
böyle tek komutluk sistemlerde pawn.cmd kullanmak yerine daha yaygın olarak kullanılan zcmd yi kullanabilirsiniz.
sscanf kullanılmadığı halde tanıtmışsınız.
serverBakim değişkenini boolean olarak kullansanız daha sağlıklı olacaktır. nasıl olsa sadece true ve false değerlerini alacak değişken.
#include <a_samp>
#include <zcmd>
new bool:serverBakim = false;
public OnPlayerConnect(playerid)
{
if(serverBakim == true)
{
SendClientMessage(playerid, -1, "Sunucumuz bakımdadır.Buraya giremezsin !");
SetTimerEx("KickTimer", 1000, false, "i", playerid); //Bu timer sayesinde yazının görünüp kick atılması sağlandı.Aşağıdaki public i kullandık (KickTimer)
return 1;
}
return 1;
}
CMD:bakimmodu(playerid)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[!] Yetkin yok adamım"); //Kişi RCON admin değil ise bu koşul çalışacaktır.
switch(serverBakim)
{
case false: // Server bakımı devrede değilse serverbakim değişkenini devreye sokarak kimseyi sunucuya sokamayacktır.
{
serverBakim = true;
SendClientMessage(playerid, -1, "Sunucuyu bakım moduna aldın !");
}
case true: // Server Bakımı devredeyse serverbakim değişkenini devre dışı bıraktık.Böylece herkes girebilecek sunucunuza.
{
serverBakim = false;
SendClientMessage(playerid, -1, "Sunucuyu bakım modundan çıkardın.Artık herkes sunucuya gelebilir !");
}
}
return 1;
}
forward KickTimer(playerid);
public KickTimer(playerid) return Kick(playerid);
Teşekkür ederim sscanf kütüphanesini el alışkanlığı yazıvermişim.Yaptığın bilgilendirmeler için tekrar teşekkür ediyorum.
Paylaşım için Teşekkürler, Ellerine sağlık, Güzel paylaşım, Başarılar
Sunucu Otomatik İsimi Degismesi İcin Sw Basına [ BAKIM ] Yazdırabılırdın sunun gıbı
#define SERVER_NAME "Byrpo Roleplay"
#define BAKIM_NAME "Byrpo Roleplay "
bakimmode = 1;
new rcon[80];
format(rcon, sizeof(rcon), "hostname %s", BAKIM_NAME);
SendRconCommand(rcon);
foreach(new i : Player)
{
if(PlayerData[i][pAdmin] > 3)
{
SendErrorMessage(i, "+4 seviye admin olduğunuz için atılmadınız.");
}
else
{
SQL_SaveCharacter(i);
KickEx(i);
SendErrorMessage(i, "Yetkili %s sunucuyu bakım moduna aldığı için otomatik
olarak atıldınız.", ReturnName(playerid, 0));
[/i] AlıntıVersus Roleplay Alıntı Attım.
Başarılar. :helal:
Paylaşım için teşekkürler.
Eline sağlık
Yararlı