Предыстория:
Я думаю все знают что выпуская 10 скилов в секунду, очень легко попасть в бан. Но если делать короткие микро-серии ударов по 2 удара, максимум 3 удара, то это становится менее паливным.
Ниже короткое видео, выложенное на форуме Ньюшки с жалобой на игрока:
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Я думаю опытные сины заметят разницу и всё поймут без лишних объяснений.
Но самое интересное, на ньюшке за это не банят. Не знаю как обстоят дела на других серверах, но это меня вдохновило и я решил сделать для Всех что-то типо такого как на видео.
Похожих скриптов полно тут на форуме, отличие этого скрипта лишь в том, что вы в одном скрипте сами можете задавать микро-серии из нескольких ударов.
Первым ударом будет идти стартовый скил.
Максимально можно добавить к нему будет 3-и скила в микро-серию.
Больше не стал делать, так как даже 3-и скила в скрипте - уже паливо и можно легко схлопотать бан.
//############################
//Micro Scripting
//class: Assassin
//Script Created by miskalin
//version #1.3
//All rights reserved
//############################
var
Timer:TTimer;
TargetID,TimerStep,i,CountSkills:integer;
StartSkill,NewSkill,SkillID:word;
NextSkill:array[1..3] of word;
Level:byte;
name:string;
procedure DoTheSkill(SkillID:word);
begin
buf := HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00');
WriteH(SkillID, 6);
WriteC(Level, 8);
WriteD(TargetID, 10);
SendToServerEx(name);
end;
procedure Init;
begin
TimerStep:=1; //Шаг
Timer:=TTimer.Create(nil);
Timer.OnTimer:=@OnTimer;
Timer.enabled:=false;
Timer.interval:=600; //интервал(в миллисекундах)//задержка скила.
Level:=9;
end;
procedure Free;
begin
Timer.free;
end;
procedure OnTimer(Sender: TObject);
begin
case TimerStep of
1:
begin
DoTheSkill(NextSkill[TimerStep]);
if TimerStep=CountSkills then
begin
Timer.enabled:=False;
TimerStep:=1;
end
else inc(TimerStep);
end;
2:
begin
DoTheSkill(NextSkill[TimerStep]);
if TimerStep=CountSkills then
begin
Timer.enabled:=False;
TimerStep:=1;
end
else inc(TimerStep);
end;
3:
begin
DoTheSkill(NextSkill[TimerStep]);
if TimerStep=CountSkills then
begin
Timer.enabled:=False;
TimerStep:=1;
end
else inc(TimerStep);
end;
end;
end;
begin
// ##################Тело Скрипта#################################
if (FromClient) and (ReadC(1) = $CE) and (ReadC(3) = $57) and (ReadC(4) = $6D) then
begin
name:=ConnectName;
TargetID := ReadD(6);
end;
if (FromClient) and (ReadC(1) = $D0) then
begin
StartSkill:=ReadH(6);
case StartSkill of
//Рёв зверя
875: //id Стартового скила, с которого продолжится серия.
begin
NextSkill[1]:=860; //Удар зверя
NextSkill[2]:=2110; //Бросок зверя
CountSkills:=2; //Кол-во дополнительный скилов в серии, после стартового.
Timer.interval:=300;
Timer.enabled:=True;
end;
//Стремительный удар
578:
begin
NextSkill[1]:=2124; //Рассекающая молния
CountSkills:=1;
Timer.interval:=500;
Timer.enabled:=True;
end;
//Внезапная атака
579: //id Стартового скила, с которого продолжится серия.
begin
NextSkill[1]:=873; //Подлый удар
CountSkills:=1; //Кол-во дополнительный скилов в серии, после стартового.
Timer.interval:=300;
Timer.enabled:=True;
end;
//Клык зверя
2280:
begin
NextSkill[1]:=853; //Небесный плен
CountSkills:=1;
Timer.interval:=600;
Timer.enabled:=True;
end;
//Контратака
581:
begin
NextSkill[1]:=856; //Ураганная мощь
CountSkills:=1;
Timer.interval:=400;
Timer.enabled:=True;
end;
//Засада
2126:
begin
NextSkill[1]:=867; //Нанесение клейма
CountSkills:=1;
Timer.interval:=300;
Timer.enabled:=True;
end;
end;
end;
end.
Немного о скрипте:
Timer.interval - задаёт задержку между скилами в микро-серии case StartSkill of - с помощью Кейса задаёте столько микро-серий, сколько вашей душе угодно. Тут необходимо указать id стартовых скилов для микро-серий. NextSkill[i] - Удары идущие после стартового скила, запускающего микро-серию. CountSkills - Кол-во дополнительный скилов в серии, после стартового.
---- В данном примере 6-ть микро-скриптов:
1. Рёв зверя - Удар зверя - Бросок Зверя
2. Стремительный удар - Рассекающая молния
3. Внезапная атака - подлый удар
4. Клык зверя - Небесный плен
5. Контратака - Ураганная мощь
6. Засада - Нанесение клейма
Т.е. нажав первый скил, последующие будут вылетать автоматически.
Все задержки подобраны чтобы не вызывать подозрения сильного, но вы можете уменьшить паузу между скилами в микро-сериях.
//############################
//Micro Scripting
//class: Archer
//Script Created by miskalin
//version #1.3
//All rights reserved
//############################
var
Timer:TTimer;
TargetID,TimerStep,i,CountSkills:integer;
StartSkill,NewSkill,SkillID:word;
NextSkill:array[1..3] of word;
Level:byte;
name:string;
procedure DoTheSkill(SkillID:word);
begin
buf := HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00');
WriteH(SkillID, 6);
WriteC(Level, 8);
WriteD(TargetID, 10);
SendToServerEx(name);
end;
procedure Init;
begin
TimerStep:=1; //Шаг
Timer:=TTimer.Create(nil);
Timer.OnTimer:=@OnTimer;
Timer.enabled:=false;
Timer.interval:=600; //интервал(в миллисекундах)//задержка скила.
Level:=9;
end;
procedure Free;
begin
Timer.free;
end;
procedure OnTimer(Sender: TObject);
begin
case TimerStep of
1:
begin
DoTheSkill(NextSkill[TimerStep]);
if TimerStep=CountSkills then
begin
Timer.enabled:=False;
TimerStep:=1;
end
else inc(TimerStep);
end;
2:
begin
DoTheSkill(NextSkill[TimerStep]);
if TimerStep=CountSkills then
begin
Timer.enabled:=False;
TimerStep:=1;
end
else inc(TimerStep);
end;
3:
begin
DoTheSkill(NextSkill[TimerStep]);
if TimerStep=CountSkills then
begin
Timer.enabled:=False;
TimerStep:=1;
end
else inc(TimerStep);
end;
end;
end;
begin
// ##################Тело Скрипта#################################
if (FromClient) and (ReadC(1) = $CE) and (ReadC(3) = $57) and (ReadC(4) = $6D) then
begin
name:=ConnectName;
TargetID := ReadD(6);
end;
if (FromClient) and (ReadC(1) = $D0) then
begin
StartSkill:=ReadH(6);
case StartSkill of
//Выстрел_721
721: //id Стартового скила, с которого продолжится серия.
begin
NextSkill[1]:=737; //Град стрел(737)
NextSkill[2]:=2074; //Спиральный выстрел(2074)
CountSkills:=2; //Кол-во дополнительный скилов в серии, после стартового.
Timer.interval:=300; // Задержка между скилами в мсек. (0,3сек)
Timer.enabled:=True;
end;
//Внезапный выстрел(736)
736:
begin
NextSkill[1]:=719; //Взрывной выстрел(719)
CountSkills:=1;
Timer.interval:=400; //Задержка между скилами
Timer.enabled:=True;
end;
//Сковывающая стрела(2090)
2090: //id Стартового скила, с которого продолжится серия.
begin
NextSkill[1]:=722; //Аркан(722)
CountSkills:=1; //Кол-во дополнительный скилов в серии, после стартового.
Timer.interval:=300;
Timer.enabled:=True;
end;
end;
end;
end.
--- P.S. Каким бы хорошим не был скрипт, опытный ГМ всегда его увидит...
Хотя таких очень мало
Миск не палитсо)А так ап теме,действительно с помощью микро-скриптов на скиллы играют большая часть синов =)
Ну если нельзя побороть и тебя называют параноиком, то приходится тогда перейти и возглавить другую сторону ))
---
Луки, глады...
Даже танку можно запросто.
Типо вместо макроса использовать но со 100% гарантией что скил сработает, а не так как в макросе.
Цитата:
Сообщение от gear47
а на лукаря есть что то подобное? думал уже об этом думаю самый полезный скрипт
Скажи Айди Начального скила, и Айди Последующих в каждой серии. Сделаю на лука.
В такой форме хотя бы:
1. Рёв зверя(id) - Удар зверя(id) - Бросок Зверя(id)
2. Стремительный удар(id) - Рассекающая молния(id)
________________ Мне хорошо известно то, что всем известно давно – тот кому зло причинили, злом ответит на зло.
Последний раз редактировалось x-miskalin-x; 02.04.2012 в 22:48.
Ну если нельзя побороть и тебя называют параноиком, то приходится тогда перейти и возглавить другую сторону ))
---
Луки, глады...
Даже танку можно запросто.
Типо вместо макроса использовать но со 100% гарантией что скил сработает, а не так как в макросе.
Скажи Айди Начального скила, и Айди Последующих в каждой серии. Сделаю на лука.
В такой форме хотя бы:
1. Рёв зверя(id) - Удар зверя(id) - Бросок Зверя(id)
2. Стремительный удар(id) - Рассекающая молния(id)
Не знаю,как насчет макросов,но с помощью того же скрипта,довольно просто настроить себе и скорость атаки,бега,длину прыжков - сегодня на танке бил булавой,что син мечами под скоростью)
Не знаю,как насчет макросов,но с помощью того же скрипта,довольно просто настроить себе и скорость атаки,бега,длину прыжков - сегодня на танке бил булавой,что син мечами под скоростью)
И очень быстро улететь в бан...
Этим же скриптом можно без палива играть, упрощая себе процесс тыканья по скилам
________________ Мне хорошо известно то, что всем известно давно – тот кому зло причинили, злом ответит на зло.
подскажи пожалуйста как зделать чтобы после активации вылетало не 1 ,а 2 скила например Засада , внезаный , подлый с меня спасибка =)
В скрипте в первом посте, поменяй часть кода где начинается с засады - На это:
Код:
//Засада
2126:
begin
NextSkill[1]:=579; //Внезапная атака
NextSkill[2]:=873; //Подлый удар
CountSkills:=2; //Кол-во дополнительный скилов в серии, после стартового.
Timer.interval:=300; //Задержка между скилами
Timer.enabled:=True;
end;
Timer.interval:=300; //Задержка между скилами
Тут можешь поменять задержку, но учти, что если пинг высокий слишком, то задержка в 50мсек не сможет обработаться...
________________ Мне хорошо известно то, что всем известно давно – тот кому зло причинили, злом ответит на зло.
В скрипте в первом посте, поменяй часть кода где начинается с засады - На это:
Код:
//Засада
2126:
begin
NextSkill[1]:=579; //Внезапная атака
NextSkill[2]:=873; //Подлый удар
CountSkills:=2; //Кол-во дополнительный скилов в серии, после стартового.
Timer.interval:=300; //Задержка между скилами
Timer.enabled:=True;
end;
Timer.interval:=300; //Задержка между скилами
Тут можешь поменять задержку, но учти, что если пинг высокий слишком, то задержка в 50мсек не сможет обработаться...