Pitanje/savet*: Pitanje.
Opis*: Potrebna mi je pomoc oko IC Chata kada idem na /adminduty, da mi se promjeni i boja IC Chata u koji pisem. A kada skinem /adminduty da se vrati normalna bijela boja IC Chata.
Dodatne informacije: ///
Koliko sam te skontao
Kod provjere kad palis duty dodaj SetPlayerColor(playerid, 0xFF0000FF);
Kad sam na Duty i kad napisem nesto da mi pise ovako IC Chat: https://imgur.com/a/Mo0ktvG
A kad nisam na Duty da pise ovako samo bijelo: https://imgur.com/a/ecMh4R3
Nadam se da je sada jasnije sta zelim :D
public OnPlayerText(playerid, text[]) {
if(adminDuty[playerid]) { //proveravamo da li ne duty
new str[128]; //deklrisemo promenljivu koja ce da cuva kompletan tekst
format(str, sizeof(str), "(( Admin %s: {FFFFFF}%s {1C76FC}))", ImeIgraca(playerid), text); //formatiramo tekst onako kako hocemo
//funkcija ImeIgraca je da izvuce ime igraca na osnovu ID-a, ostavicu dole primer
PorukaRadius(25.0, playerid, str, 0x1C76FCFF); //Funkcija koja salje poruku svim igracima koji su u range-u, isto kao ProxDetector
//U nju unosimo sledece argumente ( range, ime igraca koji salje poruku, poruku koju salje, boja teksta)
return 0; //vracamo 0 da ne bi poslalo jos jednu poruku
}
return 1;
}
PorukaRadius( Float:radi, playerid, string[ ], col1) //ovo je sama funkcija, izvucena iz SM moda
{
if(IsPlayerConnected( playerid ) ) //proveravamo da li je playerid(onaj koji salje poruku) connect-ovan
{
foreach( Player, i ) { //ove koristimo loop kroz sve igrace koristeci y_iterate, mada mozes i klasican for(new i = 0; i < MAX_PLAYERS; i++)...
if( IsPlayerNearPlayer( 25.0, playerid, i ) ) { //ostavicu dole ovu funkciju, proverava da li se igrac nalazi u odredjenom range-u drugog igraca
SendClientMessage( i, col1, string ); //posalje poruku
}
}
}
return 1;
}
ImeIgraca( id ) { //funkcija koja vraca string ime igraca na osnovu id-a
new ime[ 32 ];
GetPlayerName( id, ime, sizeof ime);
return ime;
}
IsPlayerNearPlayer(Float:radi, playerid, targetid) //ukradena funkcija koja proverava da li je neki igrac u range-u drugog igraca ( range navodimo mi )
{
if( IsPlayerConnected( playerid ) && IsPlayerConnected( targetid ) ) {
if( GetPlayerVirtualWorld( playerid ) == GetPlayerVirtualWorld( targetid ) ) {
new Float:posx,
Float:posy,
Float:posz,
Float:oldposx,
Float:oldposy,
Float:oldposz,
Float:tempposx,
Float:tempposy,
Float:tempposz;
GetPlayerPos( playerid, oldposx, oldposy, oldposz);
GetPlayerPos(targetid, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if(((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
}
return 0;
}
ovo je neki primer kako bi trebalo da radi, nije najbolje ali klasicno nesto
Uradi proveru ako admin salje poruku da izadje sa bojom koji zelis, prosto i jednostavno.
Hvala na pomoci fixo sam.