Advertisement
Guest User

Double-O-Seven

a guest
Dec 4th, 2009
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.91 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define MAX_LINES 10
  4. #define MAX_LENGTH 96
  5. #define TD_OFFSET 8.5
  6. #define LETTER_SIZE_X 0.25
  7. #define LETTER_SIZE_Y 0.90
  8.  
  9. new DOC_Message[MAX_PLAYERS][MAX_LINES][MAX_LENGTH];
  10. new DOC_MessageColor[MAX_PLAYERS][MAX_LINES];
  11. new Text:DOC_MessageTextDraw[MAX_PLAYERS][MAX_LINES];
  12.  
  13. forward DOC_OnPlayerConnect(playerid);
  14. forward DOC_OnPlayerDisconnect(playerid,reason);
  15. forward DOC_OnPlayerText(playerid,text[]);
  16.  
  17. public OnPlayerConnect(playerid)
  18. {
  19.     for(new i=0;i<40;i++)
  20.         SendClientMessage(playerid,0,"\n");
  21.        
  22.     for(new i=0;i<MAX_LINES;i++)
  23.     {
  24.         DOC_Message[playerid][i][0]='_';
  25.         DOC_MessageTextDraw[playerid][i] = TextDrawCreate(19.000000,(MAX_LINES*TD_OFFSET)-(i*MAX_LINES)+11.000000,"_");
  26.         TextDrawAlignment(DOC_MessageTextDraw[playerid][i],0);
  27.         TextDrawFont(DOC_MessageTextDraw[playerid][i],1);
  28.         TextDrawLetterSize(DOC_MessageTextDraw[playerid][i],LETTER_SIZE_X,LETTER_SIZE_Y);
  29.         TextDrawSetOutline(DOC_MessageTextDraw[playerid][i],1);
  30.         TextDrawSetProportional(DOC_MessageTextDraw[playerid][i],1);
  31.         TextDrawSetShadow(DOC_MessageTextDraw[playerid][i],1);
  32.         TextDrawShowForPlayer(playerid,DOC_MessageTextDraw[playerid][i]);
  33.     }
  34.    
  35.     return CallLocalFunction("DOC_OnPlayerConnect","i",playerid);
  36. }
  37.  
  38. public OnPlayerDisconnect(playerid,reason)
  39. {
  40.     for(new i=0;i<MAX_LINES;i++)
  41.         TextDrawDestroy(DOC_MessageTextDraw[playerid][i]);
  42.        
  43.     return CallLocalFunction("DOC_OnPlayerDisconnect","ii",playerid,reason);
  44. }
  45.  
  46. public OnPlayerText(playerid,text[])
  47. {
  48.     if(CallLocalFunction("DOC_OnPlayerText","is",playerid,text))
  49.         DOC_SendPlayerMessageToAll(playerid,text);
  50.        
  51.     for(new i=0;i<10;i++)
  52.         SendClientMessage(playerid,0,"\n");
  53.     return 0;
  54. }
  55.  
  56. forward DOC_SendClientMessage(playerid,color,message[]);
  57. public DOC_SendClientMessage(playerid,color,message[])
  58. {
  59.     if(IsPlayerConnected(playerid) && message[0])
  60.     {
  61.         for(new i=MAX_LINES-1;i>0;i--)
  62.         {
  63.             DOC_Message[playerid][i]=DOC_Message[playerid][i-1];
  64.             DOC_MessageColor[playerid][i]=DOC_MessageColor[playerid][i-1];
  65.            
  66.             TextDrawHideForPlayer(playerid,DOC_MessageTextDraw[playerid][i]);
  67.             TextDrawSetString(DOC_MessageTextDraw[playerid][i],DOC_Message[playerid][i]);
  68.             TextDrawColor(DOC_MessageTextDraw[playerid][i],DOC_MessageColor[playerid][i]);
  69.             TextDrawShowForPlayer(playerid,DOC_MessageTextDraw[playerid][i]);
  70.         }
  71.        
  72.         format(DOC_Message[playerid][0],MAX_LENGTH,message);
  73.         DOC_MessageColor[playerid][0]=color;
  74.        
  75.         TextDrawHideForPlayer(playerid,DOC_MessageTextDraw[playerid][0]);
  76.         TextDrawSetString(DOC_MessageTextDraw[playerid][0],DOC_Message[playerid][0]);
  77.         TextDrawColor(DOC_MessageTextDraw[playerid][0],DOC_MessageColor[playerid][0]);
  78.         TextDrawShowForPlayer(playerid,DOC_MessageTextDraw[playerid][0]);
  79.         return 1;
  80.     }
  81.     return 0;
  82. }
  83.  
  84. forward DOC_SendClientMessageToAll(color,message[]);
  85. public DOC_SendClientMessageToAll(color,message[])
  86. {
  87.     if(message[0])
  88.     {
  89.         for(new i=0;i<MAX_PLAYERS;i++)
  90.             DOC_SendClientMessage(i,color,message);
  91.         return 1;
  92.     }
  93.     return 0;
  94. }
  95.  
  96. forward DOC_SendPlayerMessageToPlayer(playerid,senderid,message[]);
  97. public DOC_SendPlayerMessageToPlayer(playerid,senderid,message[])
  98. {
  99.     if(IsPlayerConnected(playerid) && IsPlayerConnected(senderid) && message[0])
  100.     {
  101.         for(new i=0;i<strlen(message);i++)
  102.             if(message[i]=='~')
  103.                 message[i]='_';
  104.                
  105.         new string[MAX_LENGTH];
  106.         GetPlayerName(senderid,string,sizeof(string));
  107.         format(string,sizeof(string),"%s:~w~ %s",string,message);
  108.        
  109.         new r,g,b,a;
  110.         DOC_HexToRGBA(GetPlayerColor(senderid),r,g,b,a);
  111.         DOC_SendClientMessage(playerid,DOC_RGBAToHex(r,g,b,255),string);
  112.         return 1;
  113.     }
  114.     return 0;
  115. }
  116.  
  117. forward DOC_SendPlayerMessageToAll(senderid,message[]);
  118. public DOC_SendPlayerMessageToAll(senderid,message[])
  119. {
  120.     if(IsPlayerConnected(senderid) && message[0])
  121.     {
  122.         for(new i=0;i<strlen(message);i++)
  123.             if(message[i]=='~')
  124.                 message[i]='_';
  125.  
  126.         new string[MAX_LENGTH];
  127.         GetPlayerName(senderid,string,sizeof(string));
  128.         format(string,sizeof(string),"%s:~w~ %s",string,message);
  129.  
  130.         new r,g,b,a;
  131.         DOC_HexToRGBA(GetPlayerColor(senderid),r,g,b,a);
  132.         DOC_SendClientMessageToAll(DOC_RGBAToHex(r,g,b,255),string);
  133.         return 1;
  134.     }
  135.     return 0;
  136. }
  137.  
  138. stock DOC_RGBAToHex(red, green, blue, a) //By Betamaster
  139. {
  140.     return (red<<24 | green<<16 | blue<<8 | a);
  141. }
  142.  
  143. stock DOC_HexToRGBA(colour, &red, &green, &blue, &a) //By Betamaster
  144. {
  145.     red   = (colour >> 24) & 0xFF;
  146.     green = (colour >> 16) & 0xFF;
  147.     blue  = (colour >> 8) & 0xFF;
  148.     a = colour & 0xFF;
  149. }
  150.  
  151. #define OnPlayerConnect DOC_OnPlayerConnect
  152. #define OnPlayerDisconnect DOC_OnPlayerDisconnect
  153. #define OnPlayerText DOC_OnPlayerText
  154. #define SendClientMessage DOC_SendClientMessage
  155. #define SendClientMessageToAll DOC_SendClientMessageToAll
  156. #define SendPlayerMessageToPlayer DOC_SendPlayerMessageToPlayer
  157. #define SendPlayerMessageToAll DOC_SendPlayerMessageToAll
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement