OnPlayerText Kullanımı ve Örnekleri

OnPlayerText Kullanımı ve Örnekleri

OnPlayerText, oyuncu yazı yazdığında olacakları ele alır. [GM], [RCON], [REHBER] veya [DJ] gibi şeyleri buradan ayarlayabiliriz. Ya da kabaca şunları da yapabiliriz:

  • Oyuncunun doğmadan yazı yazmasını engellemek.
  • Sohbet kapalı olduğunda yazının yazılmasını engellemek.
  • Susturulmuşken konuşmasını engellemek.
  • Belirli bir kişinin konuşmasını engellemek.
  • Bazı cevaplara otomatik cevap veren bot yapmak. (Örneğin oyuncu, selamun aleyküm yazdığında bot otomatik olarak, ve aleyküm selam diyebilir.)

Kabaca üstteki şeyleri yapabiliriz dedik. Tabii bu örnekler kafanızda bir şeylerin canlanması içindi. Bunların dışında oyuncu yazı yazarken olmasını istediğiniz herhangi bir şeyi yapabilirsiniz. En küçücük örneğinden oyuncu kick yiyebilir ya da ekrana mesaj yazdırabilirsiniz.

OnPlayerText Kullanımı:

OnPlayerText callbackine hiçbir şey yazılmadan önceki hali aşağıdaki gibidir:

public OnPlayerText(playerid, text[])
{
return 1;
}


Bunun içerisine olmasını istediklerimizi ise şöyle yazabiliriz:

public OnPlayerText(playerid, text[])
{

if(GetPlayerMoney(playerid) == 0)
{
SendClientMessage(playerid, 0xFF0000FF, "Konuşmak için para kasınız.");
return 0; // Dönüş değerini sıfır yaptık, oyuncunun mesajı gitmedi.
}
return 1;
}


OnPlayerText Örnekleri:

Aşağıdaki kod ile oyuncu mesaj yazdığında [Oyuncu] tagı ile yazar ve idsi görünür.

public OnPlayerText(playerid, text[])
{

new str[256], oyuncuN[24];
GetPlayerName(playerid, oyuncuN, 24);
format(str, sizeof(str), "{155C03}[Oyuncu] {%06x}%s{FFFFFF}(%d): %s", GetPlayerColor(playerid) >>> 8, oyuncuN, playerid, text);
SendClientMessageToAll(-1, str); // Herkese oyuncunun yazdığı mesajı gönderdik.
return 0; // Burasını sıfır yapmamızın sebebini altta verdim.
}


Yukarıda dönüş değerini 0 yapmamızın sebebi oyuncunun yazdığı mesajın gitmemesi. Yani şimdi bizim yaptığımız kod oyuncunun mesajına [Oyuncu] tagı eklemek. Eğer dönüş değerini 1 yapsaydık iki kere oyuncu mesaj gönderecekti. Hem bizim eklediğimiz kod ile [Oyuncu] tagı ile göndermiş olacak, hem de sa-mp taraflı mesajı göndermiş olacaktı. Örnek olarak aşağıdaki gibi:

Oyuncu: Mesaj işte bea.
[Oyuncu] Oyuncu(0): Mesaj işte bea.

Bir diğer örnek ile devam edelim. Aşağıdaki örnekte eğer sohbet ekranı kapatılmış ise konuşulmasını engelleyelim.

Aşağıdaki örnekte iki public kullanacağız. Bunlardan birisi OnPlayerText ve tabii ki komut yaratmak için OnPlayerCommandText ve onun dışında mod açıldığında mevcut sohbet durumunu ayarlamak için OnGameModeInit callbackini kullanacağız.

Her şeyden önce modun başında bir değişken atayalım:

new SohbetDurumu;

Hemen sonra OnPlayerText callbackine giderek sohbet kapalı olduğunda olacakları ayarlayalım.

public OnPlayerText(playerid, text[])
{

if(SohbetDurumu != 0)
{
SendClientMessage(playerid, 0x00FF00FF, "Şu an sohbet kapatılmış durumda.");
}
return 0;
}


Daha sonra ikinci callbacke uğrayalım.

public OnPlayerCommandText(playerid, cmdtext[])
{

if(!strcmp(cmdtext, "/sohbetdurumu", true)) // Oyuncu sohbet ekranını kapatıp açmak için /sohbetdurumu komutunu kullanacak.
{
if(SohbetDurumu == 0)
{
SohbetDurumu = 1; // Sohbet de-aktif oldu, sohbet edilemeyecek.
}
else if(SohbetDurumu == 1)
{
SohbetDurumu = 0; // Sohbet aktif oldu, sohbet edilebilecek.
}
return 0;
}

Şimdi birde mod açıldığında mevcut sohbet durumunu ayarlayalım. Onun için de OnGameModeInit callbackine uğrayacağız.

public OnGameModeInit()
{

SohbetDurumu = 0; // Sohbet aktif oldu, sohbet edilebilecek.
return 1;
}

Hepsi bu kadar. Zor değilmiş öyle değil mi? Hemen hemen kavradın sayılır mantığı. Oyuncunun konuşurken olacaklarını buradan ayarlamaya siz devam ederken ben de kaçayım hacı, hadi görüşürüz!

Yorum Gönder

0 Yorumlar