You can change the range to whatever you want. Put 0 in it to disable certain range.
Put -1 in range1 to make global chat.

___________________

SmartChatAnim

pawn Code:

SmartChatAnim(playerid,stringtext[],length)

___________________

pawn Code:

playerid = Player who do anim (f.e: playerid,3,toplayerid,etc)stringtext[]= The chat string to get the string length (f.e: string,"This is the chat",chat,etc)length = The chat time (f.e 25,50,75,etc.)

___________________
1 character is counted as 1 ms.
Formula:

pawn Code:

stringtext[]* length

So if you have (I am handsome)13 character in your stringtext[] and you put 50 in your length, player will do anim in:

pawn Code:

13*50=650 ms

___________________

SmartChatBubble

pawn Code:

SmartChatBubble(playerid,string,1,1,Purple,Purple,10,5000);

___________________

pawn Code:

playerid = The player (f.e: playerid,3,toplayerid,etc)stringtext[]= The bubble string (f.e: string,"This is the bubble",bubble,etc)log =1 to save the log. 0 to do nothing with the log. (Chat log.ini is saved inside scriptfiles)selftext =1 to send stringtext[] to playerid. 0 To do nothing with itselftextcolor = The color of selftextrange = Draw distance of the bubbletime = Time of the bubble to destroyed

___________________

SmartChatLog

pawn Code:

SmartChatLog(string[])

___________________

pawn Code:

string = The string that will be writed to log

You can add this anywhere you want it. It will saved in same file as the other log (Chat log.ini)

Extra:
NameUnder(playerid) to get player's name without "_"
TimeDate() to get time and date.