PDA

View Full Version : ARN's Sloptype



man slaughter
12-20-2007, 02:21 PM
it has been my dream for a while now to make a script that made human errors like "i love to run a around a lot!" to "i kove to tun around a lot1". a 3 year old might make so many mistakes per character. but real people make many mistakes. thats why i made this. im tired of seeing those auto talkers that type 20 sentences all exactly the same. even if you have 30 different sentences sometimes it will repeat the same sentence in public. and if thats on your main. you wont want that. people remember what was said, and if they see you typeing complex sentences with no mistakes FAST the will report you.
i made this to be used on a main. you can increase the sloppyness by adjusting the sloppiness value.

any suggestions or request please post.



const
Sloppyness = 35;

////////////////////////////////////////////////////////////////////////////
/////////WELCOME TO ARN'S Sloppytalk ///////////////////////////////////////
///////////////////////////Directions///////////////////////////////////////
// //
// use as typesend //
// by: Man Slaughter a.k.a The ARN //
////////////////////////////////////////////////////////////////////////////

Procedure ArnType(wha2type:String);
var
mychar:Char;
i,mylenght,luckychar:Integer;
Shift:Boolean;
begin
i:= 1;
mylenght:=Length(wha2type)+1;
repeat
mychar:= StrGet(wha2type,i);
writeln(mychar);
writeln(inttostr(i));
luckychar:= random(9);

//Mutant Squirrle
Shift := (mychar = ':') or (mychar = '!') or (mychar = '+') or
(mychar = '?') or (mychar = '<') or (mychar = '>') or
(mychar = '@') or (mychar = '#') or (mychar = '$') or
(mychar = '&') or (mychar = '%') or (mychar = '*') or
//Mutant Squirrle end;
(mychar = ')') or (mychar = '(');

if(random(Sloppyness)=0) then
begin
case mychar of
'a':
begin
if ((luckychar<7)) then
begin
TypeByte(GetKeyCode('s'));
end
else
begin
TypeByte(GetKeyCode('q'));
end;
end;
'b': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('v'));
end
else
begin
TypeByte(GetKeyCode('n'));
end;
end;
'c': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('x'));
end
else
begin
TypeByte(GetKeyCode('v'));
end;
end;
'd': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('s'));
end
else
begin
TypeByte(GetKeyCode('f'));
end;
end;
'e': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('w'));
end
else
begin
TypeByte(GetKeyCode('r'));
end;
end;
'f': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('d'));
end
else
begin
TypeByte(GetKeyCode('g'));
end;
end;
'g': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('f'));
end
else
begin
TypeByte(GetKeyCode('h'));
end;
end;
'h': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('g'));
end
else
begin
TypeByte(GetKeyCode('j'));
end;
end;
'i': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('u'));
end
else
begin
TypeByte(GetKeyCode('o'));
end;
end;
'j': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('h'));
end
else
begin
TypeByte(GetKeyCode('k'));
end;
end;
'k': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('j'));
end
else
begin
TypeByte(GetKeyCode('l'));
end;
end;
'l': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('k'));
end
else
begin
TypeByte(GetKeyCode('o'));
end;
end;
'm': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('n'));
end
else
begin
TypeByte(GetKeyCode('k'));
end;
end;
'n': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('m'));
end
else
begin
TypeByte(GetKeyCode('b'));
end;
end;
'o': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('i'));
end
else
begin
TypeByte(GetKeyCode('p'));
end;
end;
'p': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('o'));
end
else
begin
TypeByte(GetKeyCode('l'));
end;
end;
'q': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('w'));
end
else
begin
TypeByte(GetKeyCode('a'));
end;
end;
'r': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('e'));
end
else
begin
TypeByte(GetKeyCode('t'));
end;
end;
's': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('a'));
end
else
begin
TypeByte(GetKeyCode('d'));
end;
end;
't': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('r'));
end
else
begin
TypeByte(GetKeyCode('y'));
end;
end;
'u': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('i'));
end
else
begin
TypeByte(GetKeyCode('y'));
end;
end;
'v': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('c'));
end
else
begin
TypeByte(GetKeyCode('b'));
end;
end;
'w': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('q'));
end
else
begin
TypeByte(GetKeyCode('e'));
end;
end;
'x': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('z'));
end
else
begin
TypeByte(GetKeyCode('c'));
end;
end;
'y': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('u'));
end
else
begin
TypeByte(GetKeyCode('t'));
end;
end;
'z': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('x'));
end
else
begin
TypeByte(GetKeyCode('a'));
end;
end;
'A': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('S'));
end
else
begin
TypeByte(GetKeyCode('Q'));
end;
end;
'B': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('V'));
end
else
begin
TypeByte(GetKeyCode('N'));
end;
end;
'C': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('X'));
end
else
begin
TypeByte(GetKeyCode('V'));
end;
end;
'D': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('F'));
end
else
begin
TypeByte(GetKeyCode('S'));
end;
end;
'E': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('R'));
end
else
begin
TypeByte(GetKeyCode('W'));
end;
end;
'F': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('D'));
end
else
begin
TypeByte(GetKeyCode('G'));
end;
end;
'G': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('H'));
end
else
begin
TypeByte(GetKeyCode('F'));
end;
end;
'H': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('G'));
end
else
begin
TypeByte(GetKeyCode('J'));
end;
end;
'I': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('U'));
end
else
begin
TypeByte(GetKeyCode('O'));
end;
end;
'J': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('K'));
end
else
begin
TypeByte(GetKeyCode('H'));
end;
end;
'K': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('L'));
end
else
begin
TypeByte(GetKeyCode('J'));
end;
end;
'L': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('K'));
end
else
begin
TypeByte(GetKeyCode('P'));
end;
end;
'M': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('N'));
end
else
begin
TypeByte(GetKeyCode('K'));
end;
end;
'N': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('B'));
end
else
begin
TypeByte(GetKeyCode('M'));
end;
end;
'O': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('I'));
end
else
begin
TypeByte(GetKeyCode('P'));
end;
end;
'P': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('O'));
end
else
begin
TypeByte(GetKeyCode('L'));
end;
end;
'Q': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('W'));
end
else
begin
TypeByte(GetKeyCode('A'));
end;
end;
'R': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('E'));
end
else
begin
TypeByte(GetKeyCode('T'));
end;
end;
'S': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('A'));
end
else
begin
TypeByte(GetKeyCode('D'));
end;
end;
'T': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('R'));
end
else
begin
TypeByte(GetKeyCode('Y'));
end;
end;
'U': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('Y'));
end
else
begin
TypeByte(GetKeyCode('I'));
end;
end;
'V': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('C'));
end
else
begin
TypeByte(GetKeyCode('B'));
end;
end;
'W': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('Q'));
end
else
begin
TypeByte(GetKeyCode('E'));
end;
end;
'X': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('Z'));
end
else
begin
TypeByte(GetKeyCode('C'));
end;
end;
'Y': begin
if ((luckychar<5)) then
begin
TypeByte(GetKeyCode('T'));
end
else
begin
TypeByte(GetKeyCode('U'));
end;
end;
'Z': begin
if ((luckychar<8)) then
begin
TypeByte(GetKeyCode('X'));
end
else
begin
TypeByte(GetKeyCode('A'));
end;
end;
'!':TypeByte(GetKeyCode('1'));
':':TypeByte(GetKeyCode('.'));
Else
Begin
if (Shift) then
begin
KeyDown(VK_Shift);
Wait(5 + Random(20));
end;


TypeByte(GetKeyCode(mychar));


if (Shift) then
begin
KeyUp(VK_Shift);
Wait(5 + Random(20));
end;
End;
end;
end else
begin

if (Shift) then
begin
KeyDown(VK_Shift);
Wait(5 + Random(20));
end;


TypeByte(GetKeyCode(mychar));


if (Shift) then
begin
KeyUp(VK_Shift);
Wait(5 + Random(20));
end;

end;
i:=i+1;
Wait(50 + Random(120));
until (mylenght=i)
TypeByte(13);
end;


EDIT: increased the sloppiness.
EDIT: i find a sloppiness of 20 to be very realistic while fast tiping.

n3ss3s
12-20-2007, 02:56 PM
Many ways to make it a looot smaller.

Instead of having the LuckyChar > 5 thing for every letter in the case,

something like:


procedure A(Strin: String);
Var
B, C: String;
I, P: Integer;
Begin
B := 'abcdefghijklmnopqrstuvwxyz';
C := 'bcdefghijklmnopqrstuvqxyza'; // or however..
For I := 1 To Length(Strin) Do
Begin
If Random(5) = 1 Then
Begin
P := Pos(Strin[i], B);
TypeByte(C[p]);
End Else
TypeByte(Strin[i]);
End;
End;

King of Knives
12-20-2007, 04:19 PM
n3ss3s, you just made me want to make one to get the neighbour key. A fast and smart one :D

Here it is, should work flawlessly:

Function ReturnNeighbours2(Key: String): String;
var WK,KP: Integer;
var KeyBoard: array [0..4] of String;
begin
Key:= LowerCase(Key)
KeyBoard[0]:= '---1234567890---'
KeyBoard[1]:= '---qwertyuiop---'
KeyBoard[2]:= '---asdfghjkl---'
KeyBoard[3]:= '---zxcvbnm---'
KeyBoard[4]:= '------------------'
if (Length(Key)>1) or (Length(Key)=0) then Exit;
for WK:= 1 to 3 do
begin
if (Pos(Key,KeyBoard[WK])<>0) then Break;
end;
If (WK=0) then Exit;
KP:= Pos(Key,KeyBoard[WK])
Result:= Result + KeyBoard[WK-1][KP]
Result:= Result + KeyBoard[WK-1][KP+1]
Result:= Result + KeyBoard[WK][KP-1]
Result:= Result + KeyBoard[WK][KP+1]
Result:= Result + KeyBoard[WK+1][KP-1]
Result:= Result + KeyBoard[WK+1][KP]
Result:= Replace(Result,'-','')
end;

-Knives

n3ss3s
12-20-2007, 04:24 PM
Look at the power of teamwork :rolleyes:

EDIT: What are the '-' for ?

King of Knives
12-20-2007, 04:27 PM
Shut up, n3ss3s :p You gotta give an input to the SCRIPT in order to be a part of the team :p Currently the team is me.

-Knives

man slaughter
12-20-2007, 04:28 PM
king that is not bad at all. but i like power. and in the case of side keys like "a,q,z,p,l,m" you can only make one mistake witch is its only side key. thats better then what we have now but not great. in my script you have and 7 out of 10 chance of getting 'n' while typing 'm' but you also have a 2 out of 10 chance of typing 'k'. that goes with all side keys.

King of Knives
12-20-2007, 04:35 PM
Function ReturnNeighbours(Key: String): String;
var WK,KP: Integer;
var KeyBoard: array [0..4] of String;
begin
Key:= LowerCase(Key)
KeyBoard[0]:= '---1234567890---'
KeyBoard[1]:= '---qwertyuiop---'
KeyBoard[2]:= '---asdfghjkl---'
KeyBoard[3]:= '---zxcvbnm---'
KeyBoard[4]:= '------------------'
if (Length(Key)>1) or (Length(Key)=0) then Exit;
for WK:= 1 to 3 do
begin
if (Pos(Key,KeyBoard[WK])<>0) then Break;
end;
If (WK=0) then Exit;
KP:= Pos(Key,KeyBoard[WK])
Result:= Result + KeyBoard[WK-1][KP]
Result:= Result + KeyBoard[WK-1][KP+1]
Result:= Result + KeyBoard[WK][KP-1]
Result:= Result + KeyBoard[WK][KP+1]
Result:= Result + KeyBoard[WK+1][KP-1]
Result:= Result + KeyBoard[WK+1][KP]
Result:= Replace(Result,'-','')
end;

Function RandomNeighbourKey(RightKey: String): String;
begin
Result:= ReturnNeighbours(RightKey);
Result:= Result[1+random(Length(Result))]
end;
RandomNeighbourKey returns a random of the neighbour keys. If you want it to return special keys at specified rates, you'd have to modify it a bit.

-Knives

man slaughter
12-20-2007, 04:43 PM
im finding it very dificult to use your script to get 'i,o,n,m' for the key 'k'. and i might make my script even lager to get common english spelling mistakes included into the script. like bcause instead of because. or i could do the same thing by making luckychar bigger. and having it give a 6% chance of dropping the char completely.

i think we are going to far. my script or my procedure with your function work great enough. my script is just big, not inefficient since all it does is do a check on 54? chars and bend one of them. and this only happens oround once per every 20 chars.

n3ss3s
12-20-2007, 05:47 PM
Lol, what kind of a retard / sick pervert presses "n" when typing "k" ?

man slaughter
12-20-2007, 05:57 PM
well i type o when i mean to type a in oround. but thats more of my orthography failing then my typography.

mickaliscious
12-20-2007, 09:40 PM
Hey people, this has already been done just use the procedure humantext in your typesend...

Example:
TypeSend(HumanText('hey whats up', 30));

Thats got a 1/30 chance of messing up. Tada. Lol.

For all your members I use this in my respondwith procedure of the database.

Sorry for bursting your bubbles.

King of Knives
12-20-2007, 09:50 PM
As I recall, HumanText doesn't work with neighbour keys above or under the original keys. But my memory might be failing me again.

-Knives

man slaughter
12-21-2007, 01:03 AM
yes it does neighboring but it also does too much of this:

geyywhats up
heyywhats up

repeats are fine but cutting the spaces when repeating isn't.

mickaliscious
12-21-2007, 04:35 AM
Hmm, I haven't seen much humantext in action, I really just discovered it. I looked at the code but I have no idea how to solve the missing space error.

Heres the code if anyone wants to try:

{************************************************* ******************************
function HumanText(Text: String; Chance: Integer): String;
By: Pyro
Description: Returns A text humanly. DOES NOT TYPE. But will make ACTUAL human Mistakes
Chance is like well think of it as 1 out of ......
************************************************** *****************************}

function HumanText(Text: string; Chance: Integer): string;
var
Keyboard: array[1..8] of string;
Tempi, i, l, NewKey: Integer;
Temps, Newtext: string;
begin
keyboard[1] := '1234567890-=';
keyboard[2] := 'qwertyuiop[]\';
keyboard[3] := 'asdfghjkl;';
keyboard[4] := 'zxcvbnm,./';
keyboard[5] := '!@#$%^&*()_+';
keyboard[6] := 'QWERTYUIOP{}|';
keyboard[7] := 'ASDFGHJKL:"';
keyboard[8] := 'ZXCVBNM<>?';
for l := 1 to Length(Text) do
begin
Temps := Copy(Text, l, 1)
if (Random(Chance) = 0) then
begin
for i := 1 to 8 do
begin
Tempi := Pos(Temps, keyboard[i])
if (tempi <> 0) then
begin
if (Tempi = 1) then NewKey := 2
if (Tempi = Length(keyboard[i])) then Newkey := Tempi - 1
if (Tempi <> 1) and (Tempi <> 10) then
Newkey := Tempi + Random(2) - Random(2)
NewText := Copy(keyboard[i], NewKey, 1)
Break;
end;
end;
end else Newtext := Temps
Result := Result + Newtext;
end;
end;

Santa_Clause
12-21-2007, 07:56 AM
HumanText's errors are too weird...

One second, let me find Danrox and I's TypeMistake.

Here we go, it was made a long time ago, should probably be fixed up:

program New;
{.include SRL/SRL.scar}
var
i: integer;

procedure getPlaceOfLetter(letter: char; var x, y: integer; var shift: boolean);
var
keyboard: array of string;
begin
keyboard := ['`1234567890-=', 'qwertyuiop[]\', 'asdfghjkl;''', 'zxcvbnm,./', ' '];
for x := 0 to length(keyboard) - 1 do
for y := 1 to length(keyboard[x]) do
if(getKeyCode(keyboard[x][y]) = getKeyCode(letter)) then
begin
//writeln(letter + ', ' + keyboard[x][y]);
if(keyboard[x][y] <> letter) then
shift := true
else
shift := false;
exit;
end;
end;

function mistake(letter: char; chance: integer; var shift: boolean): char;
var
x, y: integer;
keyboard: array of string;
begin
keyboard := ['`1234567890-=', 'qwertyuiop[]\', 'asdfghjkl;''', 'zxcvbnm,./', ' '];
if(random(chance) <> 0) then
begin
getPlaceOfLetter(letter, x, y, shift);
result := letter;
exit;
end;
getPlaceOfLetter(letter, x, y, shift);
if(random(2) = 0) then
begin
if(x = 0) then
y := y - 1;
if(random(2) = 1) then
x := x + random(2)
else
x := x - random(2)
end else
if(random(2) = 1) then
y := y + random(2)
else
y := y - random(2)
if(x < 0) then
x := 0;
if(x > length(keyboard) - 1) then
x := length(keyboard) - 1;
if(y > length(keyboard[x])) then
y := length(keyboard[x]);
if(y < 1) then
y := 1;
result := keyboard[x][y];
end;
///////////////////////////////////////////////////////////
//Part of this was taken from TypeSend by Mutant Squirrle//
///////////////////////////////////////////////////////////
procedure typeMistake(s: string; chance: integer);
var
i: integer;
shift: boolean;
begin
for i := 1 to length(s) do
begin
s[i] := mistake(s[i], chance, shift);
if (Shift) then
begin
KeyDown(VK_Shift);
Wait(5 + Random(20));
end;
TypeByte(GetKeyCode(s[i]));
if (Shift) then
begin
KeyUp(VK_Shift);
Wait(5 + Random(20));
end;
Wait(50 + Random(120));
end;
Wait(200 + Random(500));
TypeByte(13);
end;

begin
setupSRL;
for i := 10 downto 0 do
typeMistake('Hey! I am writing mistakes!',i);
end.

Run that in SCAR and look at the errors it makes...very human. For example, for 'G', it'll type either G, H, T, F, B, Y, R, V, N.

King of Knives
12-22-2007, 03:58 PM
EDIT: What are the '-' for ?
It's so I don't have to do a shitload of "If (Something = 0)".

Basicly, it's just because I'm lazy, and it works just aswell.

-Knives

n3ss3s
12-22-2007, 06:14 PM
Blah, I don't understand?

Though I haven't read through it so carefully, but whats the difference if you take out the "---" in the string definitions and then leave out the replace?

King of Knives
12-22-2007, 09:06 PM
Blah, I don't understand?

Though I haven't read through it so carefully, but whats the difference if you take out the "---" in the string definitions and then leave out the replace?
Well, it isn't a TPA so what could I expect, lol :p :D

Tell me my friend, is there a key to the left of 'a' ? Replacing nothing with a few '-' simply cuts off a lot of work because I don't have to do:
if (KeyPlaceOnKeyBoard=0) then....
a lot of places. If you made another one without 'em, you'd get the same result, but in a longer piece of code.

-Knives