Просмотр полной версии : Крипт манора в Gardens of EVA tyrantom 47лвла
Вообщем выкладываю свой первый скрипт. Прошу не кидать в меня помидорами. Гуру прошу отписать замечания :)
//Скрипт для манора в Садах Евы турантом 47 лвла. Включаем скрипт и потом социальное YES для начала работы
// убиваем пару Стакато и дальше он сам сражается.
const
MOB=1000794; // имя моба Blade Stakato 41x2
Seed=5221; //Chilly Cobol
Harvester=5125; //Harvester
MaxMobCount=2;
SpiritofOgre='2F 6D 00 00 00 00 00 00 00 00';
HealingPotion=1061;
var
MobID: array [1..MaxMobCount] of integer;
i,count:integer;
CurHP,MaxHP:integer;
MobName, MobX, MobY, MobZ:integer;
MobInWarID, MobInWarName: integer; // ИД моба и Имя моба(номер моба)
SocialID:integer; // ИД соц действия
status : boolean; // Начинать работать или нет
SeedID:Integer;
HarvesterID: integer;
HealingPotionID:integer;
procedure Init; //Вызывается при включении скрипта
begin
MobID[1]:=0;
MobID[2]:=0;
MobInWarID:=0;
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;
procedure SendMsg(Msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(1);
WriteS('ПОМОШНИК ПВП');
WriteS(Msg);
SendToClient;
end;
function ItemSearch(ItemName:integer):Cardinal;
var i,y:integer;
TempName:Cardinal;
begin
result:=0;
i:=1;
while i<Length(pck)-4 do begin
y:=i;
TempName:=ReadD(y);
Inc(i);
if TempName=ItemName then begin
result:=ReadD(y-8);
end;
end;
end;
procedure Target(ObjectID: Integer);
begin
buf:=#$04;
WriteD(ObjectID);
WriteD(0);
WriteD(0);
WriteD(0);
WriteC(1);
SendToServer;
end;
procedure UseItem(ItemID:integer);
begin
buf:=#$14;
WriteD(ItemID);
WriteD(0);
SendToServer;
end;
procedure Attack(TargetID,TargetX,TargetY,TargetZ:integer);
begin
buf:=#$04;
WriteD(TargetID);
WriteD(TargetX);
WriteD(TargetY);
WriteD(TargetZ);
WriteD(0);
SendToServer;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$1B) then
begin
SocialID:=ReadD(2);
case SocialID of
//социальное действие Yes для начала манора
6:begin
Status:=true;
buf:=#$0f;
SendToServer;
end;
//социальное действие No для окончания
5:begin
Status:=false;
end;
end;
end;
//пакет просмотра инвентаря. Находим ИД семян, харвестера и бутылок для дальнейшего использования.
if FromServer and (pck[1] = #$1B) then begin
SeedID:=ItemSearch(Seed);
HarvesterID:=ItemSearch(Harvester);
HealingPotionID:=ItemSearch(HealingPotion);
end;
//Пакет InventoryUpdate - не вписывал пока. Как только разберусь с самим пакетом, так сразу и сделаю
if FromServer and (pck[1] = #$27) then begin
// temp:=ItemSearch(GreaterCPP);
// if temp <> 0 then GreaterCPID:=temp;
// temp:= ItemSearch(GreaterHP);
// if temp <> 0 then GreaterHPID:=temp;
// temp:= ItemSearch(QuickHP);
// if temp <> 0 then QuickHPID:= temp;
// ShowHTML(IntToStr(GreaterCPID)+' '+IntToStr(GreaterHPID)+' '
// +IntToStr(QuickHPID))
end;
//Если приходит пакет NPCInfo от сервера, то проверяем чтобы это был нужный нам моб и находился в нужной области
//координат, то запоминаем ИД моба в массив.
if FromServer and (pck[1]=#$16) then begin
//Думаю тут надо пояснить что и как. Параметр -7750 и -8184 это координаты по оси Z.
//Сделано это для того чтобы персонаж не отвлекался на других мобов в округи, а занимался только этими двумя :)
if (ReadD(6)=MOB) and (ReadD(22)<-7750) and (ReadD(22)>-8184) then begin
count:=0;
for i:=1 to MaxMobCount do begin
if (MobID[i]=ReadD(2)) then count:=i;
end;
if (count = 0) then begin
for i:=1 to MaxMobCount do begin
if (MobID[i]=0) then begin
MobID[i]:=ReadD(2);
break;
end;
end;
end;
// MobID:=ReadD(2);
// MobName:=ReadD(6);
// MobX:=ReadD(14);
// MobY:=ReadD(18);
// MobZ:=ReadD(22);
// Sendmsg(IntToStr(MobID[1]));
// Sendmsg(IntToStr(MobID[2]));
// SendMsg(IntToStr(MobInWarID));
// Attack(MobID,MobX,MobY,MobZ);
end;
end;
//Если приходит пакет удаления объекта и ИД объекта равен мобу в массиве, то удаляем ИД с массива
if FromServer and (pck[1]=#$12) then begin
for i:=1 to MaxMobCount do begin
if (MobID[i]=ReadD(2)) then MobID[i]:=0;
end;
end;
//Тут я под пакет MoveToLocation спрятал выборку следующего моба для атаки. Спрятал в этот пакет, потому что
//двигаются часто кто нить рядом, а ставить при обработке при любом пакете - слишком нагружать скрипт
if FromServer and (pck[1]=#$01) then begin
For i:=1 to MaxMobCount do begin
if MobID[i]<>0 then begin
MobInWarID:=MobID[i];
Attack(MobInWarID,0,0,0);
end;
end;
end;
// ПРиходит побтверждение что цель выбрана и атакуем цель
if FromServer and (pck[1]=#$A6) then begin
if (ReadD(2)=MobInWarID) then Attack(MobInWarID,0,0,0);
end;
//Пока у моба не 0 ХП забрасываем семечку. Если данные о своих ХП то смотрим и выпиваем бутылку
if FromServer and (pck[1]=#$0E) then begin
if (ReadD(2)=MobInWarID) then begin
if (ReadD(14)<>0) and (SeedID<>0) then UseItem(SeedID);
end;
if (pck[6]=#$04) then begin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
if (CurHP<2000) then UseItem(HealingPotionID);
end;
end;
if FromServer and (pck[1]=#$16) then begin
if (ReadD(2)=MobInWarID) and (HarvesterID<>0) then UseItem(HarvesterID);
end;
//Тут проверяем закончилось ли действие Баффа и если закончилось то еще раз используем
if FromServer and (pck[1]=#$7F) then begin
buf:=Hstr(SpiritofOgre);
SendToServer;
Attack(MobInWarID,0,0,0);
end;
// SendMsg(IntToStr(MobID));
// SendMsg(IntToStr(MobName));
end.
Вообщем выкладываю свой первый скрипт. Прошу не кидать в меня помидорами. Гуру прошу отписать замечания :)
//Скрипт для манора в Садах Евы турантом 47 лвла. Включаем скрипт и потом социальное YES для начала работы
// убиваем пару Стакато и дальше он сам сражается.
const
MOB=1000794; // имя моба Blade Stakato 41x2
Seed=5221; //Chilly Cobol
Harvester=5125; //Harvester
MaxMobCount=2;
SpiritofOgre='2F 6D 00 00 00 00 00 00 00 00';
HealingPotion=1061;
var
MobID: array [1..MaxMobCount] of integer;
i,count:integer;
CurHP,MaxHP:integer;
MobName, MobX, MobY, MobZ:integer;
MobInWarID, MobInWarName: integer; // ИД моба и Имя моба(номер моба)
SocialID:integer; // ИД соц действия
status : boolean; // Начинать работать или нет
SeedID:Integer;
HarvesterID: integer;
HealingPotionID:integer;
procedure Init; //Вызывается при включении скрипта
begin
MobID[1]:=0;
MobID[2]:=0;
MobInWarID:=0;
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;
procedure SendMsg(Msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(1);
WriteS('ПОМОШНИК ПВП');
WriteS(Msg);
SendToClient;
end;
function ItemSearch(ItemName:integer):Cardinal;
var i,y:integer;
TempName:Cardinal;
begin
result:=0;
i:=1;
while i<Length(pck)-4 do begin
y:=i;
TempName:=ReadD(y);
Inc(i);
if TempName=ItemName then begin
result:=ReadD(y-8);
end;
end;
end;
procedure Target(ObjectID: Integer);
begin
buf:=#$04;
WriteD(ObjectID);
WriteD(0);
WriteD(0);
WriteD(0);
WriteC(1);
SendToServer;
end;
procedure UseItem(ItemID:integer);
begin
buf:=#$14;
WriteD(ItemID);
WriteD(0);
SendToServer;
end;
procedure Attack(TargetID,TargetX,TargetY,TargetZ:integer);
begin
buf:=#$04;
WriteD(TargetID);
WriteD(TargetX);
WriteD(TargetY);
WriteD(TargetZ);
WriteD(0);
SendToServer;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$1B) then
begin
SocialID:=ReadD(2);
case SocialID of
//социальное действие Yes для начала манора
6:begin
Status:=true;
buf:=#$0f;
SendToServer;
end;
//социальное действие No для окончания
5:begin
Status:=false;
end;
end;
end;
//пакет просмотра инвентаря. Находим ИД семян, харвестера и бутылок для дальнейшего использования.
if FromServer and (pck[1] = #$1B) then begin
SeedID:=ItemSearch(Seed);
HarvesterID:=ItemSearch(Harvester);
HealingPotionID:=ItemSearch(HealingPotion);
end;
//Пакет InventoryUpdate - не вписывал пока. Как только разберусь с самим пакетом, так сразу и сделаю
if FromServer and (pck[1] = #$27) then begin
// temp:=ItemSearch(GreaterCPP);
// if temp <> 0 then GreaterCPID:=temp;
// temp:= ItemSearch(GreaterHP);
// if temp <> 0 then GreaterHPID:=temp;
// temp:= ItemSearch(QuickHP);
// if temp <> 0 then QuickHPID:= temp;
// ShowHTML(IntToStr(GreaterCPID)+' '+IntToStr(GreaterHPID)+' '
// +IntToStr(QuickHPID))
end;
//Если приходит пакет NPCInfo от сервера, то проверяем чтобы это был нужный нам моб и находился в нужной области
//координат, то запоминаем ИД моба в массив.
if FromServer and (pck[1]=#$16) then begin
//Думаю тут надо пояснить что и как. Параметр -7750 и -8184 это координаты по оси Z.
//Сделано это для того чтобы персонаж не отвлекался на других мобов в округи, а занимался только этими двумя :)
if (ReadD(6)=MOB) and (ReadD(22)<-7750) and (ReadD(22)>-8184) then begin
count:=0;
for i:=1 to MaxMobCount do begin
if (MobID[i]=ReadD(2)) then count:=i;
end;
if (count = 0) then begin
for i:=1 to MaxMobCount do begin
if (MobID[i]=0) then begin
MobID[i]:=ReadD(2);
break;
end;
end;
end;
// MobID:=ReadD(2);
// MobName:=ReadD(6);
// MobX:=ReadD(14);
// MobY:=ReadD(18);
// MobZ:=ReadD(22);
// Sendmsg(IntToStr(MobID[1]));
// Sendmsg(IntToStr(MobID[2]));
// SendMsg(IntToStr(MobInWarID));
// Attack(MobID,MobX,MobY,MobZ);
end;
end;
//Если приходит пакет удаления объекта и ИД объекта равен мобу в массиве, то удаляем ИД с массива
if FromServer and (pck[1]=#$12) then begin
for i:=1 to MaxMobCount do begin
if (MobID[i]=ReadD(2)) then MobID[i]:=0;
end;
end;
//Тут я под пакет MoveToLocation спрятал выборку следующего моба для атаки. Спрятал в этот пакет, потому что
//двигаются часто кто нить рядом, а ставить при обработке при любом пакете - слишком нагружать скрипт
if FromServer and (pck[1]=#$01) then begin
For i:=1 to MaxMobCount do begin
if MobID[i]<>0 then begin
MobInWarID:=MobID[i];
Attack(MobInWarID,0,0,0);
end;
end;
end;
// ПРиходит побтверждение что цель выбрана и атакуем цель
if FromServer and (pck[1]=#$A6) then begin
if (ReadD(2)=MobInWarID) then Attack(MobInWarID,0,0,0);
end;
//Пока у моба не 0 ХП забрасываем семечку. Если данные о своих ХП то смотрим и выпиваем бутылку
if FromServer and (pck[1]=#$0E) then begin
if (ReadD(2)=MobInWarID) then begin
if (ReadD(14)<>0) and (SeedID<>0) then UseItem(SeedID);
end;
if (pck[6]=#$04) then begin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
if (CurHP<2000) then UseItem(HealingPotionID);
end;
end;
if FromServer and (pck[1]=#$16) then begin
if (ReadD(2)=MobInWarID) and (HarvesterID<>0) then UseItem(HarvesterID);
end;
//Тут проверяем закончилось ли действие Баффа и если закончилось то еще раз используем
if FromServer and (pck[1]=#$7F) then begin
buf:=Hstr(SpiritofOgre);
SendToServer;
Attack(MobInWarID,0,0,0);
end;
// SendMsg(IntToStr(MobID));
// SendMsg(IntToStr(MobName));
end.
Прокоментируй нормально скрипт, а то влом искать смотреть какие пакеты ты обрабатываешь, и какие действия совершаешь. Весьма страная процедура по поиску ОбджектИД вещей - но, тем не менее - рабочая. Пока все, а вообще для этого существует топик "Да будет бот".
Прокоментируй нормально скрипт, а то влом искать смотреть какие пакеты ты обрабатываешь, и какие действия совершаешь. Весьма страная процедура по поиску ОбджектИД вещей - но, тем не менее - рабочая. Пока все, а вообще для этого существует топик "Да будет бот".
ChiterEPT
11.02.2008, 15:01
а вообще для этого существует топик "Да будет бот".
Тема "Да будет бот" превратилась в огромную кучу скриптов и офтопа... Надо сделать отдельную тему со скриптами и кратким описанием и тему с обсуждением ( желательно с ответвлениями для каждого скрипта) на данный момент тема Да будет БОТ не читабельная... (сори за офтоп)
ChiterEPT
11.02.2008, 15:01
а вообще для этого существует топик "Да будет бот".
Тема "Да будет бот" превратилась в огромную кучу скриптов и офтопа... Надо сделать отдельную тему со скриптами и кратким описанием и тему с обсуждением ( желательно с ответвлениями для каждого скрипта) на данный момент тема Да будет БОТ не читабельная... (сори за офтоп)
Привет АрхиНуб, =) Возможно ты и прав (про то, что надо отдельно тему с разветвлениями) но в "Да будет бот" - намана читабельно, просто там никто давно не модерил ... вот и нкаопилось ...
Привет АрхиНуб, =) Возможно ты и прав (про то, что надо отдельно тему с разветвлениями) но в "Да будет бот" - намана читабельно, просто там никто давно не модерил ... вот и нкаопилось ...
я ворону давно говорил что темку надо разнести на несколько а лучше даже подраздел сделать с готовыми скриптами чтоб первый пост в каждой теме был скриптом и описанием а дальше шло его обсуждение, но ворон яросно защищает текущий вид...
я ворону давно говорил что темку надо разнести на несколько а лучше даже подраздел сделать с готовыми скриптами чтоб первый пост в каждой теме был скриптом и описанием а дальше шло его обсуждение, но ворон яросно защищает текущий вид...
я ворону давно говорил что темку надо разнести на несколько а лучше даже подраздел сделать с готовыми скриптами чтоб первый пост в каждой теме был скриптом и описанием а дальше шло его обсуждение, но ворон яросно защищает текущий вид...
КОР, неправда. я тока за модернизацию и улучшение поиска и простоты нахождения нужного раздела и топа.. но при етом то что уже сделано- не должно потеряться.. при переходе на новый движок: топ "ДА БУДЕТ БОТ" похудел на 12 листов сообщений.. в которых подробнейшим образом описывалось процесс создания всех скриптов которые сейчас там представлены.. разбив етот топ щас на кучу разных топов- снова потеряем кучу инфы.. если создать подраздел с топами-скриптами- узково профиля и вкаждом топе обсуждать конкретный скрипт.. но от обилия топов- глаза разбегутся у людей.. основные вопросы возникают не узково профиля а вопросы касающиеся всех скриптов разом.. типа: как коректней захватить ИД чаров.. считать ХП и МП.. в каждом топе (10-20 топов) объяснять людям одно и тожэ- трудоёмко.. оптимально пока оставить топ как есть "ДА БУДЕТ БОТ" не делить его.. но в тожэ время в полне возможна наша поддержка таких топов как "СДАЧА МАНОРА" и еще типа етого.. топ "ДА БУДЕТ БОТ" дает почти любые решения для новичка- показывает как ваще скрипты пишутся и что они могут а чего нет.. специфичные вопросы вполне можно решать и в его приделах.. но часто бывает так что человек написал скрипт свой, хочет им поделиться, и чтоб его заметили создает новый топ.. мне кажется ето можно исправить (хотя стоит ли?) можно просто более активне топ "ДА БУТ БОТ" модерить и переносить скрипты в начало с коментами.. но пока я там ниче не вижу нового что можно было бы переместить в первый пост (готовое решение).. поетому возможно что если нужных топов с обсуждением каких то конкретных скриптов станет много- то стоит создать подраздел и туда их переместить и закрепить.. но приетом нестоит ломать то что уже сделано.. я про топ свой..
я ворону давно говорил что темку надо разнести на несколько а лучше даже подраздел сделать с готовыми скриптами чтоб первый пост в каждой теме был скриптом и описанием а дальше шло его обсуждение, но ворон яросно защищает текущий вид...
КОР, неправда. я тока за модернизацию и улучшение поиска и простоты нахождения нужного раздела и топа.. но при етом то что уже сделано- не должно потеряться.. при переходе на новый движок: топ "ДА БУДЕТ БОТ" похудел на 12 листов сообщений.. в которых подробнейшим образом описывалось процесс создания всех скриптов которые сейчас там представлены.. разбив етот топ щас на кучу разных топов- снова потеряем кучу инфы.. если создать подраздел с топами-скриптами- узково профиля и вкаждом топе обсуждать конкретный скрипт.. но от обилия топов- глаза разбегутся у людей.. основные вопросы возникают не узково профиля а вопросы касающиеся всех скриптов разом.. типа: как коректней захватить ИД чаров.. считать ХП и МП.. в каждом топе (10-20 топов) объяснять людям одно и тожэ- трудоёмко.. оптимально пока оставить топ как есть "ДА БУДЕТ БОТ" не делить его.. но в тожэ время в полне возможна наша поддержка таких топов как "СДАЧА МАНОРА" и еще типа етого.. топ "ДА БУДЕТ БОТ" дает почти любые решения для новичка- показывает как ваще скрипты пишутся и что они могут а чего нет.. специфичные вопросы вполне можно решать и в его приделах.. но часто бывает так что человек написал скрипт свой, хочет им поделиться, и чтоб его заметили создает новый топ.. мне кажется ето можно исправить (хотя стоит ли?) можно просто более активне топ "ДА БУТ БОТ" модерить и переносить скрипты в начало с коментами.. но пока я там ниче не вижу нового что можно было бы переместить в первый пост (готовое решение).. поетому возможно что если нужных топов с обсуждением каких то конкретных скриптов станет много- то стоит создать подраздел и туда их переместить и закрепить.. но приетом нестоит ломать то что уже сделано.. я про топ свой..
Вообщем выкладываю свой первый скрипт. Прошу не кидать в меня помидорами. Гуру прошу отписать замечания :)
//Скрипт для манора в Садах Евы турантом 47 лвла. Включаем скрипт и потом социальное YES для начала работы
procedure Target(ObjectID: Integer);
begin
buf:=#$04;
WriteD(ObjectID);
WriteD(0);
WriteD(0);
WriteD(0);
WriteC(1);
SendToServer;
end;
как я понимаю ты делаешь пакет 04 ObjectID Х(00 00 00 00) Y(00 00 00 00)Z(00 00 00 00) хз что(01) типа выделил моба с определёным ID, а не боязно что забанят просто т.к. вроде серваку шлёшь пакет с 0 по координатам а моба реально там нет. самому серверу пофиг н0 если надо определять бота то после конекта пакеты на 2-3 месте, после поведения бота и т.д., если не прав и пакет волшебным образом заполняется правельными координатами? сори если не прав... но ты просил замечания пока это самое существенное, а идея кульая респект
Добавлено спустя 1 минуту 47 секунд:
ЗЫ я не гуру я ток учусь :)
Добавлено спустя 6 минут 36 секунд:
ЗЫ и закоментированые строки бы удалил так проще было бы смотреть реально закоментированы идеи интересные, но хз почему не реализованые, пишу так часто просто не могу в голову забить весь скрипт а проверять влом тем более пакетхак не мониторит пакеты который отправляет сам поэтому проверить трудно чем он от клиента отличается.
Вообщем выкладываю свой первый скрипт. Прошу не кидать в меня помидорами. Гуру прошу отписать замечания :)
//Скрипт для манора в Садах Евы турантом 47 лвла. Включаем скрипт и потом социальное YES для начала работы
procedure Target(ObjectID: Integer);
begin
buf:=#$04;
WriteD(ObjectID);
WriteD(0);
WriteD(0);
WriteD(0);
WriteC(1);
SendToServer;
end;
как я понимаю ты делаешь пакет 04 ObjectID Х(00 00 00 00) Y(00 00 00 00)Z(00 00 00 00) хз что(01) типа выделил моба с определёным ID, а не боязно что забанят просто т.к. вроде серваку шлёшь пакет с 0 по координатам а моба реально там нет. самому серверу пофиг н0 если надо определять бота то после конекта пакеты на 2-3 месте, после поведения бота и т.д., если не прав и пакет волшебным образом заполняется правельными координатами? сори если не прав... но ты просил замечания пока это самое существенное, а идея кульая респект
Добавлено спустя 1 минуту 47 секунд:
ЗЫ я не гуру я ток учусь :)
Добавлено спустя 6 минут 36 секунд:
ЗЫ и закоментированые строки бы удалил так проще было бы смотреть реально закоментированы идеи интересные, но хз почему не реализованые, пишу так часто просто не могу в голову забить весь скрипт а проверять влом тем более пакетхак не мониторит пакеты который отправляет сам поэтому проверить трудно чем он от клиента отличается.
тем более пакетхак не мониторит пакеты который отправляет сам поэтому проверить трудно чем он от клиента отличается.
Версия 3.20 уже мониторит.
тем более пакетхак не мониторит пакеты который отправляет сам поэтому проверить трудно чем он от клиента отличается.
Версия 3.20 уже мониторит.
Версия 3.20 уже мониторит.
хм, последний раз когда я ее запустил она вылетела :( 3.18 пользуюсь, но если 3.20 мониторит попробую подружиться с ней :Yahoo!:
Версия 3.20 уже мониторит.
хм, последний раз когда я ее запустил она вылетела :( 3.18 пользуюсь, но если 3.20 мониторит попробую подружиться с ней :Yahoo!:
Версия 3.20 уже мониторит.
хм, последний раз когда я ее запустил она вылетела :( 3.18 пользуюсь, но если 3.20 мониторит попробую подружиться с ней :Yahoo!:
Вылетает когда? У меня траблы при выборе чара. Приспособился делать, по совету людей, так: запускаю ПКХ, снимаю галочку ПЕРЕХВАТ, запускаю Ла2, ввожу логин/пароль, выбираю сервер, ставлю галочку ПЕРЕХВАТ, выбираю чара, выбираю скрипт и запускаю его. Так у меня практически всегда работает.
Версия 3.20 уже мониторит.
хм, последний раз когда я ее запустил она вылетела :( 3.18 пользуюсь, но если 3.20 мониторит попробую подружиться с ней :Yahoo!:
Вылетает когда? У меня траблы при выборе чара. Приспособился делать, по совету людей, так: запускаю ПКХ, снимаю галочку ПЕРЕХВАТ, запускаю Ла2, ввожу логин/пароль, выбираю сервер, ставлю галочку ПЕРЕХВАТ, выбираю чара, выбираю скрипт и запускаю его. Так у меня практически всегда работает.
ылетает когда? У меня траблы при выборе чара. Приспособился делать, по совету людей, так: запускаю ПКХ, снимаю галочку ПЕРЕХВАТ, запускаю Ла2, ввожу логин/пароль, выбираю сервер, ставлю галочку ПЕРЕХВАТ, выбираю чара, выбираю скрипт и запускаю его. Так у меня практически всегда работает.
хм ну стакой методикой проще додумывать что там л2пнх шлёт клиенту :)
b]Lafine[/b],
Хочется узнать как изменить его под себя....
Тоесть - что заменить чтоб манорить другого моба и другими семенами? (пример - голденсода и еуесерчер под дионом)
И еще если я не туран мне надо бы бафы закоментировать...какую именно часть чтоб ниче лишнего незадеть?
Очень прошу кто знает помогите :)
Хочется узнать как изменить его под себя....
Тоесть - что заменить чтоб манорить другого моба и другими семенами? (пример - голденсода и еуесерчер под дионом). И еще если я не туран мне надо бы бафы закоментировать...какую именно часть чтоб ниче лишнего незадеть?
Изменяй константы.
const
MOB=1000794; // имя моба Blade Stakato 41x2 - ID моба+1000000, берем в npcs.ini
Seed=5221; //Chilly Cobol - семечки, берем в itemsid.ini
Harvester=5125; //Harvester
MaxMobCount=2;
SpiritofOgre='2F 6D 00 00 00 00 00 00 00 00'; //баф
HealingPotion=1061; //ID бутылки лечения
Измени значения координаты Z при каче на других мобах (не знаю правда почему Z)
//Если приходит пакет NPCInfo от сервера, то проверяем чтобы это был нужный нам моб и находился в нужной области
//координат, то запоминаем ИД моба в массив.
if FromServer and (pck[1]=#$16) then begin
//Думаю тут надо пояснить что и как. Параметр -7750 и -8184 это координаты по оси Z.
//Сделано это для того чтобы персонаж не отвлекался на других мобов в округи, а занимался только этими двумя :)
if (ReadD(6)=MOB) and (ReadD(22)<-7750) and (ReadD(22)>-8184) then begin
count:=0;
for i:=1 to MaxMobCount do begin
if (MobID[i]=ReadD(2)) then count:=i;
end;
if (count = 0) then begin
for i:=1 to MaxMobCount do begin
if (MobID[i]=0) then begin
MobID[i]:=ReadD(2);
break;
end;
end;
end;
Закоменти этот кусок, чтобы не бафаться
//Тут проверяем закончилось ли действие Баффа и если закончилось то еще раз используем
if FromServer and (pck[1]=#$7F) then begin
buf:=Hstr(SpiritofOgre);
SendToServer;
Attack(MobInWarID,0,0,0);
end;
а банки чтоб непил какой кусок коментить?
Добавлено спустя 39 минут 47 секунд:
Захожу на полянку недалеко от верхнего выхода Диона.
Запускаю скрипт, запускаю в клиенте соц действие YES
Открывается рюкзак, навожу на моба и жму на семечку....
Убивается моб и все ниче непроисходит...
Пробовал заманорить так 2моба и дальше сам он не действовал...
--------
Собственно вот срипт с моими правками...
Банки уменьшил под свое ХП (хоя вообще никчему, мобы почти некоцают меня)
Координаты Z изменил конечно но подозреваю что немного нетак...
//Скрипт для манора в Садах Евы турантом 47 лвла. Включаем скрипт и потом социальное YES для начала работы
// убиваем пару Стакато и дальше он сам сражается.
const
MOB=1000265; // Monster Eye Searcher 265
Seed=5020; //golden coda
Harvester=5125; //Harvester
MaxMobCount=2;
SpiritofOgre='2F 6D 00 00 00 00 00 00 00 00';
HealingPotion=1061;
var
MobID: array [1..MaxMobCount] of integer;
i,count:integer;
CurHP,MaxHP:integer;
MobName, MobX, MobY, MobZ:integer;
MobInWarID, MobInWarName: integer; // ИД моба и Имя моба(номер моба)
SocialID:integer; // ИД соц действия
status : boolean; // Начинать работать или нет
SeedID:Integer;
HarvesterID: integer;
HealingPotionID:integer;
procedure Init; //Вызывается при включении скрипта
begin
MobID[1]:=0;
MobID[2]:=0;
MobInWarID:=0;
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;
procedure SendMsg(Msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(1);
WriteS('ПОМОШНИК ПВП');
WriteS(Msg);
SendToClient;
end;
function ItemSearch(ItemName:integer):Cardinal;
var i,y:integer;
TempName:Cardinal;
begin
result:=0;
i:=1;
while i<Length(pck)-4 do begin
y:=i;
TempName:=ReadD(y);
Inc(i);
if TempName=ItemName then begin
result:=ReadD(y-8);
end;
end;
end;
procedure Target(ObjectID: Integer);
begin
buf:=#$04;
WriteD(ObjectID);
WriteD(0);
WriteD(0);
WriteD(0);
WriteC(1);
SendToServer;
end;
procedure UseItem(ItemID:integer);
begin
buf:=#$14;
WriteD(ItemID);
WriteD(0);
SendToServer;
end;
procedure Attack(TargetID,TargetX,TargetY,TargetZ:integer);
begin
buf:=#$04;
WriteD(TargetID);
WriteD(TargetX);
WriteD(TargetY);
WriteD(TargetZ);
WriteD(0);
SendToServer;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$1B) then
begin
SocialID:=ReadD(2);
case SocialID of
//социальное действие Yes для начала манора
6:begin
Status:=true;
buf:=#$0f;
SendToServer;
end;
//социальное действие No для окончания
5:begin
Status:=false;
end;
end;
end;
//пакет просмотра инвентаря. Находим ИД семян, харвестера и бутылок для дальнейшего использования.
if FromServer and (pck[1] = #$1B) then begin
SeedID:=ItemSearch(Seed);
HarvesterID:=ItemSearch(Harvester);
HealingPotionID:=ItemSearch(HealingPotion);
end;
//Пакет InventoryUpdate - не вписывал пока. Как только разберусь с самим пакетом, так сразу и сделаю
if FromServer and (pck[1] = #$27) then begin
// temp:=ItemSearch(GreaterCPP);
// if temp <> 0 then GreaterCPID:=temp;
// temp:= ItemSearch(GreaterHP);
// if temp <> 0 then GreaterHPID:=temp;
// temp:= ItemSearch(QuickHP);
// if temp <> 0 then QuickHPID:= temp;
// ShowHTML(IntToStr(GreaterCPID)+' '+IntToStr(GreaterHPID)+' '
// +IntToStr(QuickHPID))
end;
//Если приходит пакет NPCInfo от сервера, то проверяем чтобы это был нужный нам моб и находился в нужной области
//координат, то запоминаем ИД моба в массив.
if FromServer and (pck[1]=#$16) then begin
//Думаю тут надо пояснить что и как. Параметр -7750 и -8184 это координаты по оси Z.
//Сделано это для того чтобы персонаж не отвлекался на других мобов в округи, а занимался только этими двумя :)
if (ReadD(6)=MOB) and (ReadD(22)<-3300) and (ReadD(22)>-3632) then begin
count:=0;
for i:=1 to MaxMobCount do begin
if (MobID[i]=ReadD(2)) then count:=i;
end;
if (count = 0) then begin
for i:=1 to MaxMobCount do begin
if (MobID[i]=0) then begin
MobID[i]:=ReadD(2);
break;
end;
end;
end;
// MobID:=ReadD(2);
// MobName:=ReadD(6);
// MobX:=ReadD(14);
// MobY:=ReadD(18);
// MobZ:=ReadD(22);
// Sendmsg(IntToStr(MobID[1]));
// Sendmsg(IntToStr(MobID[2]));
// SendMsg(IntToStr(MobInWarID));
// Attack(MobID,MobX,MobY,MobZ);
end;
end;
//Если приходит пакет удаления объекта и ИД объекта равен мобу в массиве, то удаляем ИД с массива
if FromServer and (pck[1]=#$12) then begin
for i:=1 to MaxMobCount do begin
if (MobID[i]=ReadD(2)) then MobID[i]:=0;
end;
end;
//Тут я под пакет MoveToLocation спрятал выборку следующего моба для атаки. Спрятал в этот пакет, потому что
//двигаются часто кто нить рядом, а ставить при обработке при любом пакете - слишком нагружать скрипт
if FromServer and (pck[1]=#$01) then begin
For i:=1 to MaxMobCount do begin
if MobID[i]<>0 then begin
MobInWarID:=MobID[i];
Attack(MobInWarID,0,0,0);
end;
end;
end;
// ПРиходит побтверждение что цель выбрана и атакуем цель
if FromServer and (pck[1]=#$A6) then begin
if (ReadD(2)=MobInWarID) then Attack(MobInWarID,0,0,0);
end;
//Пока у моба не 0 ХП забрасываем семечку. Если данные о своих ХП то смотрим и выпиваем бутылку
if FromServer and (pck[1]=#$0E) then begin
if (ReadD(2)=MobInWarID) then begin
if (ReadD(14)<>0) and (SeedID<>0) then UseItem(SeedID);
end;
if (pck[6]=#$04) then begin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
if (CurHP<500) then UseItem(HealingPotionID);
end;
end;
if FromServer and (pck[1]=#$16) then begin
if (ReadD(2)=MobInWarID) and (HarvesterID<>0) then UseItem(HarvesterID);
end;
// Тут проверяем закончилось ли действие Баффа и если закончилось то еще раз используем
// if FromServer and (pck[1]=#$7F) then begin
// buf:=Hstr(SpiritofOgre);
// SendToServer;
// Attack(MobInWarID,0,0,0);
// end;
// SendMsg(IntToStr(MobID));
// SendMsg(IntToStr(MobName));
end.
Настройте плиз скрипт на этих мобов что я указал на эти семечки и на это место ПОЖАЛУСТА!!
Я уж сравнивая - погляжу что и как там исправлять если что...
Люди, ну помогите плизз :(
Люди вот у меня вопрос у мня воше l2phx непашыт что делать (у меня виста ппц дибильная ) ета какато можно исправить ??? плиссс
нефиг в каждом посте искать вопрос исчи тему или создавай новую, и пости там нефиг захломлять флудо темы месагами не в тему, ппц чё я ща написал модер снеси флуд :) что б неповадно было
Люди, неужели я так многого прошу... Вы же скриптеры вам что так помочь трудно?
Люди, неужели я так многого прошу... Вы же скриптеры вам что так помочь трудно?
Вечерком гляну, потерпи.
//Скрипт для манора by Lafine
//modified by NLObP
//Включаем скрипт и потом социальное YES для начала работы
{
Скрипт распространяется как есть, и я не несу ответственности
за то, что ВЫ натворили у себя, его используя.
}
//************************************************** *************
const
Name='Mathilda'; //имя чара для которого включаем скрипт
MobID=1000265; //ID моба Monster Eye Searcher 265 + 1000000
SeedID=5025; //Golden Coda
HarvesterID=5125;
HPotionID=1060;
MaxMobCount=20;
PercentHP=70; //% HP при котором начинать пить бутылки
MEsit=55; //при каком количестве хп в % надо сесть и подкопить хп
MEup=90; //при каком количестве хп в % надо встать после отдыха
//установить константу в зависимости от типа игры (С4 или Интерлюд)
IL=true; //true - IL, false - C4
//************************************************** *************
var
MobsObjectID: array [1..MaxMobCount] of integer;
offs1, i, count:integer;
//мои
CurHP, MaxHP, MyID, x, y, z, but, sidim, vstaem : integer;
//МОбов
MobX, MobY, MobZ : integer;
status, sit : boolean; //Начинать работать или нет
SeedObjectID, HarvesterObjectID, HPotionObjectID : integer;
timer1: TTimer;
//************************************************** *************
procedure Init; //Вызывается при включении скрипта
begin
if il then begin
//CharInfo
offs1:=48; //44 для С4, 48 для IL
end else begin
offs1:=44;
end;
count:=1;
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1;
timer1.enabled:=true; //таймер по умолчанию включен
timer1.interval:=5000; //через каждые 5сек будем обновлять
sit:=false;
status:=false;
end;
//************************************************** *************
procedure Free; //Вызывается при выключении скрипта
begin
for i:=1 to MaxMobCount do begin
MobsObjectID[i]:=0;
end;
timer1.free;
end;
//************************************************** *************
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
//************************************************** *************
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;
//************************************************** ****************************
//сообщения в приват, на сервер не отправляются
procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
//************************************************** *************
procedure OnTimer1(Sender: TObject);
begin
if (CurHP<but) and (HPotionObjectID<>0) then begin
UseItem(HPotionObjectID);
end;
if (CurHP<sidim) and (sit=false) then begin
buf:=HStr('45 00 00 00 00 00 00 00 00 00 '); //сесть
SendToServerEx(Name);
sit:=true;
end;
if (CurHP>vstaem) and (sit=true) then begin
buf:=HStr('45 00 00 00 00 00 00 00 00 00 '); //встать
SendToServerEx(Name);
sit:=false;
end;
end;
//************************************************** *************
function ItemSearch(ItemName:integer):Cardinal;
var i,y:integer;
TempName:Cardinal;
begin
result:=0;
i:=1;
while i<Length(pck)-4 do begin
y:=i;
TempName:=ReadD(y);
Inc(i);
if TempName=ItemName then begin
result:=ReadD(y-8);
end;
end;
end;
//************************************************** *************
procedure Target(ObjectID : Integer);
begin
buf:=#$04;
WriteD(ObjectID);
WriteD(x);
WriteD(y);
WriteD(z);
WriteC(0);
SendToServerEx(Name);
end;
//************************************************** *************
procedure UseItem(ObjectID : integer);
begin
buf:=#$14;
WriteD(ObjectID);
WriteD(0);
SendToServerEx(Name);
end;
//************************************************** *************
//2F=RequestMagicSkillUse:dMagicID)d(CtrlPressed)b(S hiftPressed)
procedure MagicSkillUse(MagicID:integer);
begin
buf:=#$2F;
WriteD(MagicID);
WriteD(0);
WriteC(0);
SendToServerEx(Name);
end;
//************************************************** *************
procedure StatsUpdate;
var
i: integer;
begin
for i:=0 to ReadD(6)-1 do begin
case pck[i*8+10] of
#$09: CurHP:=ReadD(i*8+14);
#$0A: MaxHP:=ReadD(i*8+14);
end;
end;
if (MaxHP<>0) then begin // вычисляем процентное соотношение хп
but:=Round((MaxHP/100)*PercentHP); // при каком количестве хп юзать бутылку лечения
sidim:=Round((MaxHP/100)*MEsit); // при каком количестве хп надо сесть и подкопить хп
vstaem:=Round((MaxHP/100)*MEup); // при каком количестве хп надо встать после отдыха
end;
end;
//************************************************** ****************************
// вызывается при приходе каждого пакета, если скрипт включен
//************************************************** ****************************
begin
//************************************************** **************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//************************************************** **************************
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//Тут я под пакет MoveToLocation спрятал выборку следующего моба для атаки. Спрятал в этот пакет, потому что
//двигаются часто кто нить рядом, а ставить при обработке при любом пакете - слишком нагружать скрипт
#$01: begin
For i:=1 to MaxMobCount do begin
if MobsObjectID[i]<>0 then begin
Say('Target...');
Target(MobsObjectID[i]);
// if (SeedObjectID<>0) then UseItem(SeedObjectID);
// say('Use Seed');
// count:=i;
end;
end;
end;
#$04: begin
Say('Запомнил координаты и ID');
//пакет с инфой о моём чаре
i:=2;
X:=ReadD(i); //получаю координату х моего чара
Y:=ReadD(i); //получаю координату у моего чара
Z:=ReadD(i); //получаю координату z моего чара
//Запоминаем ИД
i:=18;
MyID:=ReadD(i); //получаю ид моего чара
//смещение переменное, зависит от имени (LenName*2+2)
i:=i+(Length(Name)*2+2)+offs1; //44 для С4, 48 для IL
MaxHP:=ReadD(i);
CurHP:=ReadD(i);
end;
//принят пакет Die
#$06: begin
if (MobsObjectID[count]=ReadD(2)) and (HarvesterObjectID<>0) then begin
UseItem(HarvesterObjectID);
say('Use Harvester');
end;
end;
//StatsUpdate
#$0E: begin
//Пока у моба не 0 ХП забрасываем семечку. Если данные о своих ХП то смотрим и выпиваем бутылку
if (MyID=ReadD(2)) then StatsUpdate; //обновление информации о хп
if (MobsObjectID[count]=ReadD(2)) then
if (ReadD(14)<>0) and (SeedObjectID<>0) then begin
UseItem(SeedObjectID);
say('Use Seed');
end;
end;
//принят пакет DeleteObject
#$12: begin
for i:=1 to MaxMobCount do begin
if (MobsObjectID[i]=ReadD(2)) then MobsObjectID[i]:=0;
end;
end;
//Если приходит пакет NPCInfo от сервера, то проверяем чтобы это был нужный нам моб
//и находился в нужной области координат, то запоминаем ИД моба в массив.
//16=NpcInfo:h(ObjectID)d(NpcTypeID)d(IsAttackable)d (X)d(Y)d(Z)d(Heading)d(d)
//d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd)d(sw imWSpd)d(flRSpd)d(flWSpd)
//d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f(CollisRa dius)f(CollisHeight)d(RHand)
//d(d)d(LHand)b(nameabove)b(isRun)b(isInFight)b(isAl ikeDead)b(isSummoned)s(Name)
//s(Title)d(d)d(d)d(karma?)d(abnEffect)d(d)d(d)d(d)d (d)b(c)b(Team)f(collisRadius)
//f(collisHeight)d(d)
#$16: begin
say('NPCInfo...');
//если можно атаковать
if (MobID=ReadD(6)) and (ReadD(10)=1) and (pck[120]=#$00) then begin
//перебираем базу и ищем свободную ячейку в ней
for i:=1 to MaxMobCount do begin
//запоминаем моба в свободную ячейку
if (MobsObjectID[i]=0) or (MobsObjectID[i]<>ReadD(2)) then begin
MobsObjectID[i]:=ReadD(2);
count:=i;
Say('count='+inttostr(count)+' i='+inttostr(i));
break;
end;
end;
end;
end;
//Если приходит пакет удаления объекта и ИД объекта равен мобу в массиве, то удаляем ИД с массива
//пакет просмотра инвентаря. Находим ИД семян, харвестера и бутылок для дальнейшего использования
#$1B: begin
SeedObjectID:=ItemSearch(SeedID);
HarvesterObjectID:=ItemSearch(HarvesterID);
HPotionObjectID:=ItemSearch(HPotionID);
end;
//InventoryUpdate
#$27: begin
case ReadD(12) of
1060,1061: begin //Healing Potion, Lesser Healing Potion
if HPotionObjectID=0 then begin
HPotionObjectID:=ReadD(8);
Say('Запомнили ID HPotion...');
end;
end;
5125: begin //Harvester
if HarvesterObjectID=0 then begin
HarvesterObjectID:=ReadD(8);
Say('Запомнили ID Harvester...');
end;
end;
5025: begin //Golden Coda
if SeedObjectID=0 then begin
SeedObjectID:=ReadD(8);
Say('Запомнили ID Seed...');
end;
end;
end;
end;
{ //Тут проверяем закончилось ли действие Баффа и если закончилось то еще раз используем
#$7F: begin
end;
} //приходит побтверждение что цель выбрана и атакуем цель
{ #$A6: begin
if (MobsObjectID[count]=ReadD(2)) then begin
Target(MobsObjectID[count]);
say('Attack...');
end;
end;
} end;
end;
//************************************************** **************************
if (ConnectName=Name) and FromClient then begin
case pck[1] of
#$1B: begin
case ReadD(2) of
//социальное действие Yes для начала манора
$06: begin
//не передаем серверу
pck:='';
Status:=true;
//RequestItemList
buf:=#$0F;
SendToServerEx(Name);
end;
//социальное действие No для окончания
$05: begin
//не передаем серверу
pck:='';
Status:=false;
end;
end;
end;
//ValidatePosition пакет от клиента с моими кординатами
#$48: begin
X:=ReadD(2); //получаю координату х
Y:=ReadD(6); //получаю координату у
Z:=ReadD(10); //получаю координату z
end;
end;
end;
end.
Спасибо нубл, очень буду признателен :)
Спасибо нубл, очень буду признателен :)
Меня звать NLObP, а не нубл. :evil:
Вечерком гляну, потерпи.
//Скрипт для манора by Lafine
//Включаем скрипт и потом социальное YES для начала работы
Итак, что делается у меня...
Прихожу возле диона на поляну с этими мобами (в сумке харвестер и 1000семян)
Врубаю скрипт - он начинает писать в приват "NPCInfo..." (пологаю что при респе мобов)
Жму YES - открывает инвентарь и пишет в приват "запомнил координаты и ID"
(при этом продолжает писать "NPCInfo...") и все - ничего не происходит больше...
пробовал вручную засеять и убить и снять урожай с 3-4 мобов...
при ручной атаке - он убивает моба и стоит (тоесть не сеет)
при ручном засеве - он сеет,убивает и тоже стоит (тоесть не снимает урожай)
Как сделать чтоб он сам их начинал бить-сеять-собирать урожай- переходить к следующему?
Может ты стукнеш в асю - 6337373 ?
я те просто ак свой дам на абисе х3 - провериш может чето нето делаю..
Вечерком гляну, потерпи.
//Скрипт для манора by Lafine
//Включаем скрипт и потом социальное YES для начала работы
Итак, что делается у меня...
Прихожу возле диона на поляну с этими мобами (в сумке харвестер и 1000семян)
Врубаю скрипт - он начинает писать в приват "NPCInfo..." (пологаю что при респе мобов)
Жму YES - открывает инвентарь и пишет в приват "запомнил координаты и ID"
(при этом продолжает писать "NPCInfo...") и все - ничего не происходит больше...
пробовал вручную засеять и убить и снять урожай с 3-4 мобов...
при ручной атаке - он убивает моба и стоит (тоесть не сеет)
при ручном засеве - он сеет,убивает и тоже стоит (тоесть не снимает урожай)
Как сделать чтоб он сам их начинал бить-сеять-собирать урожай- переходить к следующему?
Может ты стукнеш в асю - 6337373 ?
я те просто ак свой дам на абисе х3 - провериш может чето нето делаю..
Сообщение "NPCInfo..." показывает что пришел этот пакет. Под нужным нам пакетом пишется count=X i=X. После этого он пытается атаковать этого моба. Скрипт нужно инициализировать. Жмем Yes, выпиваем бутылку HP, бросаем и поднимаем Харвестер и используем один раз семечко на мобе. Это нужно, чтобы узнать ObjID предметов. Функцию самостоятельно это делающую еще не поправил (и не знаю буду ли править).
Плохо в этом скрипте то, что чар ломится за первым подходящим мобом, даже если рядом стоит такой же.
Все команды Say(''); можно закомментировать, чтобы не мешали. Можно добавить по вкусу.
Скрипт надо много доделывать. Проще добавить, необходимое в скрипт бота в другой теме (очень может быть что добавлю).
Ок. поищу свой номерок аськи.
Ок. поищу свой номерок аськи.
Ничего невыходит, плиз - сделай доброе дело, загляни всетаки в аську ко мне 6337373 ник там такойже Begon
PunkRediska
17.03.2008, 00:50
я ворону давно говорил что темку надо разнести на несколько а лучше даже подраздел сделать с готовыми скриптами чтоб первый пост в каждой теме был скриптом и описанием а дальше шло его обсуждение, но ворон яросно защищает текущий вид...
КОР, неправда. я тока за модернизацию и улучшение поиска и простоты нахождения нужного раздела и топа.. но при етом то что уже сделано- не должно потеряться.. при переходе на новый движок: топ "ДА БУДЕТ БОТ" похудел на 12 листов сообщений.. в которых подробнейшим образом описывалось процесс создания всех скриптов которые сейчас там представлены.. разбив етот топ щас на кучу разных топов- снова потеряем кучу инфы.. если создать подраздел с топами-скриптами- узково профиля и вкаждом топе обсуждать конкретный скрипт.. но от обилия топов- глаза разбегутся у людей.. основные вопросы возникают не узково профиля а вопросы касающиеся всех скриптов разом.. типа: как коректней захватить ИД чаров.. считать ХП и МП.. в каждом топе (10-20 топов) объяснять людям одно и тожэ- трудоёмко.. оптимально пока оставить топ как есть "ДА БУДЕТ БОТ" не делить его.. но в тожэ время в полне возможна наша поддержка таких топов как "СДАЧА МАНОРА" и еще типа етого.. топ "ДА БУДЕТ БОТ" дает почти любые решения для новичка- показывает как ваще скрипты пишутся и что они могут а чего нет.. специфичные вопросы вполне можно решать и в его приделах.. но часто бывает так что человек написал скрипт свой, хочет им поделиться, и чтоб его заметили создает новый топ.. мне кажется ето можно исправить (хотя стоит ли?) можно просто более активне топ "ДА БУТ БОТ" модерить и переносить скрипты в начало с коментами.. но пока я там ниче не вижу нового что можно было бы переместить в первый пост (готовое решение).. поетому возможно что если нужных топов с обсуждением каких то конкретных скриптов станет много- то стоит создать подраздел и туда их переместить и закрепить.. но приетом нестоит ломать то что уже сделано.. я про топ свой..
А можно зделать с лева калонку где будут ссылки на "ТоПоВыЕ" темы и вапросы,ну шото был столбик с ссылками типо таких:"сдать манор","бутылки","полноценные боты","гатовые процедуры","приятные мелочи(ну типа радарав,анекдотерав..)" и др. [?]
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot