החלטתי להכין מדריך ליצירת צ'אט אדמינים כי ראיתי כל מיני אנשים שהסתבכו עם זה...
אז בואו נתחיל.
במדריך זה אעשה בעצם צ'אט אדמינים, אך ניתן לשנות את הקוד בפשטות לכל צ'אט לקבוצה מסוימת אחרת של אנשים...
קודם כל, חשוב לציין כי את הקוד שנלמד יש לשים בפאבליק OnPlayerText - פאבליק שבו אתה בוחר מה קורה כששחקן כותב משהו בצ'אט...
נתחיל בכך שנבחר סימן שיהיה זה ש"מפעיל" את הצ'אט אדמינים. למדריך זה אני אשתמש בסימן סולמית - #
לאחר שבחרנו את הסימן אנחנו צריכים לבדוק האם השחקן כתב את הסימן שבחרנו בתחילת הטקסט שלו והאם הוא אדמין. את הדבר הזה ניתן לבדוק כך:
PHP Code:
if(text[0] == '#' && IsPlayerAdmin(playerid)) 
מה בעצם עשינו פה? בדקנו האם האות הדבר הראשון שכתב השחקן הוא # בעזרת text[0]... למה 0 אתם שואלים? בגלל שאנחנו צריכים לבדוק את האות הראשונה ובתכנות הדברים אינם מתחילים ב1 אלא ב0... דוגמא נוספת של דבר המתחיל ב0 ולא ב1 הוא בקייסים... מתחילים ב case 0 ולא ב - case 1: כמובן שיש עוד דוגמאות כמו random וכו'... אבל זה לא חשוב למדריך שלנו.
לאחר מכן בדקנו האם השחקן אדמין בעזרת הפונקצייה IsPlayerAdmin...
אחרי שגילינו שהשחקן כתב את הטקסט הזה והוא אדמין, אנחנו צריכים לשלוח את ההודעה שהוא כתב לאחר הסימן שלנו. אז קודם כל נגלה מה שמו של השחקן בעזרת הפונקצייה GetPlayerName... וגם ניצור משתנה של string על מנת להשתמש בו בפורמט לאחר מכן.
PHP Code:
new name[MAX_PLAYER_NAME], string[128];
GetPlayerName(playeridnamesizeof(name)); 
אני מניח שכולם מכירים את הפונקציה GetPlayerName וגם זהו לא נושא המדריך ולכן לא אסביר עליה.
עכשיו הגיע השלב להכין את הפורמט...
PHP Code:
format(string ,sizeof(string), "[AdminChat] %s: %s [ID: %d]"nametext[1], playerid); 
עכשיו, יצרנו פורמט שבו יהיה כתוב את שם השחקן, הטקסט שהוא כתב לאחר הסולמית ואת האיידי שלו.
עכשיו חלקכם בטח שואלים: למה הפעם כתבנו text[1] ולא text[0] כמו פעם קודמת? זה מכיוון שאנחנו רוצים להסתיר את הסימן שלנו ולכן אנחנו בעצם אמרו לזה לשלוח את ההודעה שלנו מהאות השנייה ואילך... זאת אומרת, שזה לא ישלח את האות הראשונה שבמקרה שלנו היא סולמית...
אחרי שכיסינו את החלק הזה כל מה שנשאר זה לשלוח הודעה לכל שאר האדמינים בשרת... כיצד נעשה זאת?
ניצור לולאה שתעבור את כל השחקנים בשרת, ולאחר מכן תבדוק מי מהם אדמין, במידה והשחקן אדמין ההודעה תישלח אליו:
PHP Code:
for(new 0MAX_PLAYERSi++)
  {
      if(
IsPlayerAdmin(playerid))
      {
          
SendClientMessage(i0xFF9900AAstring);
   }
  } 
דבר חשוב שאסור לשכוח הוא להוסיף בסוף return 0; על מנת שהודעת הטקסט לא תישלח לשרת אלא רק לאדמינים / לקבוצה המיועדת...
עכשיו כל שנשאר הוא לסגור את הכל בעזרת הסוגריים המסולסלות...
כך הקוד השלם ייראה:
PHP Code:
if(text[0] == '#' && IsPlayerAdmin(playerid))
 {
    new 
string[128], name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(stringsizeof(string), "[AdminChat]%s: %s [ID:%d]"nametext[1], playerid);
  for(new 
0MAX_PLAYERSi++)
  {
      if(
IsPlayerAdmin(playerid))
      {
          
SendClientMessage(i0xFF9900AAstring);
   }
  }
return 
0;

*****בונוס******
למי שיש אדמין מוד ורוצה להוסיף גם את רמת האדמין בפורמט, עושה את זה בצורה הבאה:
PHP Code:
format(string ,sizeof(string), "[AdminChat]%s: %s [ID:%d | Level: %d]"nametext[1], playeridAdminLevel[playerid]); 
כמובן שתצטרכו לשנות את המשתנה AdminLevel[playerid] למשתנה של האדמין מוד שלכם...
***************************************************************************
טוב!!! כאן נגמר המדריך שלי מקווה שעזרתי לכם!