PDA

Просмотр полной версии : Скрипт собирать Рекомендации


TAMBIK
13.05.2009, 13:00
Скрипт собирать Рекомендации.для ХБ
в башку стукнуло наверно над в туалет
СУТЬ переделать скрипты расказывающие анекдоты
на собирание РЕКов.
В титул пишу За РЕК скажу Анекдот
чел рекает и ему в пм анекдот.норм наверн будит
я туп могу ток поменять в скрипте чтото как писать незнаю неумею необучен
анекдоты два скрипта как основа для примера
//by VORON
//скрипт который рассказывает анекдоты без бана:
///////////////////////////////////////////////////////////////////////////
var
temp: array [1..20] of string;
timer1: TTimer;
x: integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=true; //
timer1.interval:=1000;



temp[1]:='" Водка в стиле IT: ';
temp[2]:='0.1л - demo ';
temp[3]:='0.25л - trial version ';
temp[4]:='0.5л - personal edition ';
temp[5]:='0.7л - professional edition ';
temp[6]:='1.0л - network edition ';
temp[7]:='1.75л - enterprise ';
temp[8]:='3л - for small business ';
temp[9]:='5л - corporate edition ';
temp[10]:='Бутыль самогона - home edition ';
temp[11]:='"На посошок" - Service pack ';
temp[12]:='Рассол с утра - Recovery tool ';
temp[13]:='Закуска - plugins ';
temp[14]:='Пиво - patch ';
temp[15]:='Coca-cola, Fanta, 7 UP - trojan viruses';
temp[16]:='';


x:=1;
end;

procedure OnTimer(Sender: TObject);
begin
///
if temp[x] <> '' then
begin
buf:=hstr('38');
writes(temp[x]);
buf:=buf + hstr('01 00 00 00'); ///9- али // 3-пати // 01 - общий
sendtoserverex('ник');
end;
x:=x+1;
if x>= 19 then x:=19; //ЭТА СТРОКА ДЛЯ ТОГО ЧТОБ XELAT заценил глубину мысли! незнаю я синтаксиса-) и учиться лень-) там какойто АНТИЛ надо применять-) а зачем? и так все пашет.
end;


procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin

end.
{ Юля Сегодня, 11:46
Помню этот небольшой скриптик принес мне просто бешеное богатсво на сервере
где я играла, но поскольку я больше не играю, то выкладываю в массы суть
проста, программа ведет учет всех персов в округе, когда по вашему
персу-торговцу кликают, она пишет в френдчат ему предложение купить стрелу
и обешание за это рассказать анекдотик. за покупку программа конечно же как
и обешала рассказывает анекдотик. как показывает практика, самая идеальная
цена чтобы клиенты купили как можно больше ваших стрел, для х1 - это не
более 3к, для х5 - 10к. а для привлечения внимания именно к вашему
торговцу, в титуле (для этого вам надо быть в клане) постоянно мигает
рожица и надпись "АНЕКДОТЫ". Все анекдоты грузяться с папки c:\l2jokes (в
аттаче уже готовый архив с 237 анекдотами), каждый анекдот в отдельном
файле, не более 255 символов. Пользуйтесь на здоровье
}
// copyright (c) 2006, 2007 Puella

var curpos: byte;
TITLE_DATA2: array [0..16] of string;

const
jokes_max = 237;

var
f: TStringList;
jokes: array [1..jokes_max] of string;
jokes_real: integer;
IDs: array [1..2000] of cardinal;
Names: array [1..2000] of String;
count: Integer;
MyID: Cardinal;
MyName: String;
m: TMemo;
t: TTimer;

InTimer: Boolean;

procedure OnTimerProc;
begin
InTimer := true;
buf := #$55;
WriteS(MyName);
WriteS(TITLE_DATA2[curpos]);
SendToServer;

curpos := curpos + 1;
if curpos > 16 then curpos := 0;

InTimer := false;
end;

procedure Init;
var i: byte;
begin
randomize;
count := 0;

f := TStringList.Create;
jokes_real := 0;
for i := 1 to jokes_max do
begin
try
f.LoadFromFile('C:\l2jokes\' + IntToStr(i) + '.txt');
jokes_real := jokes_real + 1;
except
end;
jokes[jokes_real] := f.Text;
end;
f.free;

TITLE_DATA2[0] := '@(o_O)@';
TITLE_DATA2[1] := '@(O_o)@';
TITLE_DATA2[2] := '@(o_O)@';
TITLE_DATA2[3] := '@(O_o)@';
TITLE_DATA2[4] := '';
TITLE_DATA2[5] := 'ANEKDOTI';
TITLE_DATA2[6] := '';
TITLE_DATA2[7] := 'ANEKDOTI';
TITLE_DATA2[8] := '';
TITLE_DATA2[9] := 'ANEKDOTI';
TITLE_DATA2[10] := '';
TITLE_DATA2[11] := '@(o_O)@';
TITLE_DATA2[12] := '@(O_o)@';
TITLE_DATA2[13] := '@(o_O)@';
TITLE_DATA2[14] := '@(O_o)@';
TITLE_DATA2[15] := '@(o_O)@';
TITLE_DATA2[16] := '@(O_o)@';

curpos := 0;

t := TTimer.Create(nil);
t.Enabled := false;
t.Interval := 2000;
t.OnTimer := @OnTimerProc;

ShowTab;

m:=TMemo.Create(UserTab);
m.parent:=UserTab;
m.align:=alClient;
m.ReadOnly:=true;
m.ScrollBars:=ssBoth;
m.lines.add('Анекдотов загружено: ' + inttostr(jokes_real));
end;

procedure Free;
begin
m.Free;
HideTab;

t.OnTimer := nil;
t.Enabled := false;
t.Interval := 0;
t.Free;
end;

function FindPlayer(ObjID: cardinal): integer;
var k: cardinal;
begin
result := -1;
if Count > 0 then
for k := 1 to Count do
if IDs[k] = ObjID then
begin
result := k;
break
end;
end;

var
i, k: integer;
objid: cardinal;
name: string;
begin
if FromServer then
case pck[1] of
#$64:
begin
i := 2;
if ReadD(i) = 380 then {S1_PURCHASED_S3_S2_s}
begin
i := i + 4*2;
name := ReadS(i);
if (name = '') then
begin
// внесем в лог (blacklist)
m.Lines.Add(TimeToStr(now)+': '+name+' purchased (BLACKLISTED)');
end
else
begin
while (InTimer = true) do i := i;

buf := #$CC;
i := int(random * jokes_real) + 1;
WriteS(jokes[i]);
WriteS(name);
SendToServer;

if (Length(m.Lines.Text) > 60000) then m.Lines.Text := '<cleared>';
// внесем в лог
m.Lines.Add(TimeToStr(now)+': '+name+' purchased');
m.Lines.Add('> ' + jokes[i]);
end;
end
end;

#$03: // CharInfo
begin
i := 4 + 4 * 4 - 2;
objid := ReadD(i);

i := FindPlayer(ObjID);

if i = -1 then
begin
i := 4 + 4 * 5 - 2;
name := ReadS(i);
// blacklist
if (name = '') then
begin
// (none)
end
else begin
// добавление
count := count + 1;
IDs[count] := ObjID;
Names[count] := name;
//m.Lines.Add(IntToStr(count) + ' - ' + Format('%x', [ObjId])+' = '+ Names[count]);
end;
end;
end;

#$04: //UserInfo
begin
i := 2 + 4*4;
MyID := ReadD(i);
MyName := ReadS(i);
t.Enabled := true;
end;

#$12: // ObjectDelete
begin
i := 2;
objid := ReadD(i);

i := FindPlayer(objid);

if i <> -1 then
begin
IDs[i] := IDs[count];
Names[i] := Names[count];
count := count - 1;
end
end;

#$29: //TargetSeleted
begin
i := 2;
objid := ReadD(i);

if ReadD(i) <> MyID then exit;

i := FindPlayer(objid);

if i <> -1 then
begin
while (InTimer = true) do i := i;

buf := #$CC;
WriteS('Привет, '+names[i]+'! Я бот! Купи у меня стрел и я, в благодарность за это, расскажу тебе анекдот или стишок на тему LineAge2! ;)');
WriteS(names[i]);
SendToServer;
// внесем в лог
m.Lines.Add(TimeToStr(now)+': '+names[i]);
end
end;
end;
end.

Grinch
13.05.2009, 14:20
и в бан через некоторое время :) а так неплохая идея

QaK
13.05.2009, 15:43
Практический смысл какой - синий ник?

TAMBIK
13.05.2009, 19:43
Практический смысл какой - синий ник?
УГУ

Добавлено через 2 минуты
и в бан через некоторое время :) а так неплохая идея
а за что я ручками в пм пишу анектод или мож частушку аль какой афоризм выдам
а в катах посадить ботов выдам инфу где мамон
за мамоном следить как за РБ по скрипту
и титул Узнай где мамон за рек
А моно продавца Купи соску узнай где мамон

KrazyKeNNy
13.05.2009, 20:18
Не, лучше цитаты с баша сразу.

TAMBIK
13.05.2009, 20:24
ток где ник брать приходт токо пакет
Tип: 0x62 (SystemMessage)
Pазмер: 23+2
Время прихода: 19:17:09:109
0002 d MsgID: Вы получили рекомендацию от $c1. ID:831 (0x033F)
0006 d typesCount: 1 (0x00000001)

62 3F 03 00 00 01 00 00 00 00 00 00 00 54 00 70 00 4F 00 54 00 00 00

Xa4ik
13.05.2009, 20:25
Проще возле ГК поставить и клняьчить как нубы %target дай рек.

TAMBIK
13.05.2009, 20:27
Проще возле ГК поставить и клняьчить как нубы %target дай рек.
а эт заработу рек

xkor
13.05.2009, 20:49
TAMBIK, ну вот 54 00 70 00 4F 00 54 00 00 00 и есть ник)

TAMBIK
14.05.2009, 00:13
0x49 (Say2) пакет
49 40 04 40 04 40 04 40 04 40 04 40 04 40 04 40 04 00 00 02 00 00 00 54 00 70 00 4F 00 54 00 00 00

Tип: 0x49 (Say2)
Pазмер: 33+2
Время прихода: 22:46:31:703
0002 s Text: рррррррр
0020 d Type: 2 (0x00000002)
0024 s Target: TpOT

вроде так
поправьте пожалуста нубу

// переделан из скрипта Анекдоты без бана автор by VORON
// скрипт за РЕК Анекдот автор TAMBIK
// опробован на ХБ
var
temp: array [1..20] of string;
Name: String;
i,x: integer;

procedure Init; //Вызывается при включении скрипта
begin
temp[1]:='Пиво без водки деньги на ветер ';
temp[2]:='Кто некурит и непьет тот до 100 лет живет';
temp[3]:='Учиться.Учиться.Учиться= говорил дед Ленин';
temp[4]:='0.5л - personal edition ';
temp[5]:='0.7л - professional edition ';
temp[6]:='1.0л - network edition ';
temp[7]:='1.75л - enterprise ';
temp[8]:='3л - for small business ';
temp[9]:='5л - corporate edition ';
temp[10]:='Бутыль самогона - home edition ';
temp[11]:='"На посошок" - Service pack ';
temp[12]:='Рассол с утра - Recovery tool ';
temp[13]:='Закуска - plugins ';
temp[14]:='Пиво - patch ';
temp[15]:='Coca-cola, Fanta, 7 UP - trojan viruses';
temp[16]:='';
x:=1;
end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer and (pck[1]=#$62)and (pck[2]=#$3F) then begin
i:=14;
Name:=ReadS(i);
if temp[x] <> '' then
buf := #$49;
WriteS(temp[x]);
WriteD(2);
WriteS(Name);
SendToServer;
x:=x+1;
if x>= 19 then x:=19;
end;
end.