/usay scriptinde bildigiminz gibi /usay <mesaj> yazinca sanki karsindaki adam yolluyormus gibi oluyor..
Ama yanliz, bunda yazi stili ayni olmuyor senin kendi yazi stilin gidiyor..
Acaba kodlamasini bilen birisi onuda ekleyebilir mi ?
Kod burda ;
Kod:
STATE_INACTIVE = 0;
STATE_RUNNING = 1;
STATE_FINISHING = 2;
CHANGE_NAME_LATENCY = 1000;
var cur_state = STATE_INACTIVE;
var original_name;
var contact_name;
var message_to_send;
var chat_window;
var retry_count;
var dll_name;
function OnGetScriptCommands()
{
var commands = '<ScriptCommands>';
commands+='<Command>';
commands+='<Name>usay</Name>';
commands+='<Description>Impresonate as the contact you are talking with</Description>';
commands+='<Parameters/>';
commands+='</Command>';
commands+='</ScriptCommands>';
return commands;
}
function OnEvent_Initialize( MessengerStart )
{
Debug.Trace("INIT");
dll_name = MsgPlus.ScriptFilesPath;
dll_name += "\\USay.dll";
Interop.Call( dll_name, "USay_Init" );
}
function OnEvent_Uninitialize( MessengerExit )
{
Interop.FreeDll( dll_name );
}
function ShowHelp()
{
var helpstr;
helpstr = "In normal chat, Use:\n\r"
+ " /usay <message>\n\r"
+ "\n\r"
+ "In group chat, Use:\n\r"
+ " /usay <contact email> <message>\n\r"
+ " - or -\n\r"
+ " /usay <contact name> <message>\n\r"
+ " - or -\n\r"
+ " /usay <contact number> <message>\n\r"
+ "\n\r"
+ "You can also:\n\r"
+ " Get a numerical list of contacts:\n\r"
+ " /usay /list\n\r"
+ " Show about screen:\n\r"
+ " /usay /about\n\r"
+ " Show help:\n\r"
+ " /usay /help\n\r"
+ " - or solely -\n\r"
+ " /usay";
Interop.Call( "User32.dll", "MessageBoxW", 0, helpstr, "USay - Help", 0 );
}
function ShowContacts( Contacts )
{
var helpstring = '';
//iterate through all contacts and create a list
var i = new Enumerator( Contacts );
var j = 0;
while( !i.atEnd() )
{
var Contact = i.item();
helpstring += j;
helpstring += " - ";
helpstring += Contact.Name;
helpstring += " ( "
helpstring += Contact.Email;
helpstring += " )\n\r";
j++;
i.moveNext();
}
Interop.Call("User32.dll", "MessageBoxW", 0, helpstring, "USay - List", 0);
}
function CheckArgs( Arg, ChatWnd )
{
var forceexit = false;
if( Arg == null ) Arg = "/help";
switch( Arg.toLowerCase() )
{
case "/help":
ShowHelp();
forceexit = true;
break;
case "/about":
Interop.Call( dll_name, "USay_About" );
forceexit = true;
break;
case "/list":
ShowContacts( ChatWnd.Contacts );
forceexit = true;
break;
default:
}
return forceexit;
}
function IsNumeric( str )
{
var legal = "0123456789";
var c;
for ( i = 0; i < str.length; i++ )
{
c = str.charAt( i );
if ( legal.indexOf( c ) == -1 )
{
return false;
}
}
return true;
}
function GetContactEmail( Arg, Contacts )
{
var i;
//1st priority = email
i = new Enumerator( Contacts );
while( !i.atEnd() )
{
var Contact = i.item();
if( Contact.Email == Arg )
{
return Contact.Email;
}
i.moveNext();
}
//2nd priority = name
i.moveFirst();
while( !i.atEnd() )
{
var Contact = i.item();
if( Contact.Name == Arg )
{
return Contact.Email;
}
i.moveNext();
}
//3rd priority = number
if( IsNumeric( Arg ) )
{
i.moveFirst();
for( j=0; j<Arg; j++ )
{
if( i.atEnd() )
{
return null;
}
i.moveNext();
}
return i.item().Email;
}
//no such contact
return null;
}
function OnEvent_ChatWndSendMessage( ChatWnd, Message )
{
chat_window = ChatWnd;
Command = Message.split(' ');
var j=0;
var abort = false;
switch ( Command[j].toLowerCase() )
{
case "/usay":
j++;
//if no text or system arg, just go do nothing
if( CheckArgs( Command[j], ChatWnd ) )
{
Message = '';
return Message;
}
var i = new Enumerator( ChatWnd.Contacts );
var thedude;
switch( ChatWnd.Contacts.Count )
{
case 1:
thedude = i.item();
break;
//we dont really get here in real life
case 0:
//talking to myself again?
helpstring = "It seems like nobody wants to talk to you\n\rAre you talking to yourself again?";
Interop.Call("User32.dll", "MessageBoxW", 0, helpstring, "USay - Error", 0);
abort = true;
break;
default:
//gangbang mode
var contact_email = GetContactEmail( Command[j], ChatWnd.Contacts );
if( contact_email == null )
{
//wtf?
helpstring = "Contact not found! type '/usay /help' for help, '/usay /list' for contact list";
Interop.Call("User32.dll", "MessageBoxW", 0, helpstring, "USay - Error", 0);
//make an exception :)
abort = true;
}
else
{
thedude = i.item();
while( !i.atEnd() && i.item().Email != contact_email )
{
i.moveNext();
}
j++;
}
}
// i got the contact, now go ahead
if( !abort )
{
Debug.Trace( "USING: " + contact_email );
//might do something with the contact fonr in the future
//like using it in MY window
contact_font = Interop.Call2( dll_name, "USay_SuggestContactFont", thedude.Email );
//go on craete the new message
message_to_send = '';
while( Command[j] != null )
{
message_to_send += Command[j];
j++
if( Command[j] != null ) message_to_send += ' ';
}
//get start the magic
original_name = Messenger.MyName;
contact_name = thedude.Name;
cur_state = STATE_RUNNING;
if( original_name == contact_name )
{
contact_name += ' ';
}
Messenger.MyName = contact_name;
Debug.Trace("CONTACT NAME SET");
}
Message = '';
break;
default:
}
return Message;
}
function OnEvent_MyNameChange( NewName )
{
switch( cur_state )
{
case STATE_RUNNING:
if( NewName == contact_name )
{
cur_state = STATE_FINISHING;
retry_count = 3
MsgPlus.AddTimer( 'sendmessage', CHANGE_NAME_LATENCY );
}
break;
case STATE_FINISHING:
if( NewName == original_name )
{
cur_state = STATE_INACTIVE;
Debug.Trace( "NAME RESTORED" );
MsgPlus.CancelTimer( 'restorename' );
}
break;
case STATE_INACTIVE:
//for some odd reason i get my contact name set again
if( NewName == contact_name )
{
Messenger.MyName = original_name;
MsgPlus.AddTimer( 'restorename', 500 );
}
break;
}
}
function OnEvent_Timer( TimerId )
{
switch( TimerId )
{
case 'restorename':
Messenger.MyName = original_name;
//do this until my name REALLY changes
if( Messenger.MyName != original_name )
{
MsgPlus.AddTimer( 'restorename', 500 );
}
break;
case 'sendmessage':
chat_window.SendMessage( message_to_send );
MsgPlus.AddTimer( 'restorename', 500 );
break;
default:
}
}