Hy6ac Опубликовано 12 сентября, 2021 Поделиться Опубликовано 12 сентября, 2021 Братва у кого то есть рабочий скрипт «повтор окнами за основой « а то этот ругается или кто то может этот исправить ,помогите ! const DialogRepeatEnable: boolean = true; // повтор диалогов, true(да) / false(нет) // список ников персонажей, которые должны повторять за основным окном DialogRepeatPlayerList: array of string = ['Krickt1338', 'Krickt1339', 'Vasya']; OpcodeStr = '23'; // для Interlude заменить на '21' OpcodeHex = $23; // для Interlude заменить на $21 procedure OnCliPacket(ID1, ID2: Cardinal; Data: Pointer; Size: Word); // обработчик исходящих пакетов (C->S) begin if (DialogRepeatEnable) and (ID1 = OpcodeHex) then // если повтор включен, и id пакета совпадает с выбором диалога, то DialogRepeat(MemToHex(Data^, Size)); // вызываем функцию, которая повторит выбор диалога указанным окнам end; procedure DialogRepeat(PacketData: string); var E: TL2Control; i: integer; begin for i:= 0 to Length(DialogRepeatPlayerList)-1 do begin // проходим по списку чаров, которыми нужно повторять диалоги E:= nil; E:= GetControl(DialogRepeatPlayerList[i]); // получаем Engine нужного окна if (E <> nil) then E.SendToServer(OpcodeStr + PacketData); // если Engine получен, то отправляем пакет выбора диалога end; end; procedure DialogOpen(E: TL2Control); // берет в таргет и открывает диалог с нужным NPC другим окном begin E.SetTarget(User.Target.ID); E.DlgOpen; end; procedure DialogOpenThread(); // основной поток, выполняющий всю логику var p1, p2: integer; i: integer; E: TL2Control; LastTargetID: cardinal; // тут мы храним ID последнего нашего таргета LastDlgText: string; // тут будет храниться текст последнего диалога begin Engine.SendActID(1); // активируем перехват C->S пакетов while (true) do begin // запускаем бесконечный цикл Engine.WaitAction([laDlg], p1, p2); // ждем события "открытие диалога" while (User.Target.ID = LastTargetID) and (Engine.DlgText <> LastDlgText) do delay(10); for i:= 0 to Length(DialogRepeatPlayerList)-1 do begin // для каждого ника из списка персонажей E:= nil; E:= GetControl(DialogRepeatPlayerList[i]); // получаем его Engine if (E <> nil) then // и если Engine получен, то Script.NewThread(@DialogOpen(E)); // запускаем для его поток, который откроет диалог с нужным NPC end; LastTargetID:= User.Target.ID; // перезаписываем ID последнего цели LastDlgText:= Engine.DlgText; // и текст последнего диалога end; end; begin if (DialogRepeatEnable) then // если повтор включен, то Script.NewThread(@DialogOpenThread); // запускаем поток, который будет делать все необходимое // code ... Delay(-1); end. 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
жук Опубликовано 12 сентября, 2021 Поделиться Опубликовано 12 сентября, 2021 я тоже скок искал запарился никто не выложит за так,щя зайдет очередной гуру с чсв оставит комент по тиму С-стабильность и на этом все 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
BuG Опубликовано 13 сентября, 2021 Поделиться Опубликовано 13 сентября, 2021 У меня был скрипт но я с ним на интерлюде бегал, на хайфае он мб не работает. Вечером вылажу и сам проверю 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
BuG Опубликовано 13 сентября, 2021 Поделиться Опубликовано 13 сентября, 2021 Как и обещал вот скрипт. На интерлюдии работал отлично на ХФ Тестите сами. Спойлер // Управление пати через пати-чат // ------------------------------------ // доступные команды: // tp X - где X номер пункта тп у гейткипера. Берем в таргет ГК, смотрим номер строки куда надо полететь, пишем например tp 3. работает так же на других нпц, нужно указать номер пункта в окне диалога. // gate - если скрипт запущен у варка - заюзает gate chant // start - Активирует чаров // stop - Дактивирует чаров. Если включены Arcane Power или Arcane Wisdom, то они будут отключены // follow - привяжутся за написавшим. желательно делать stop перед юзом этой команды // soe - все юзнут /unstuck // aa - кол-во старых аден в пч // df - кол-во дф в пч // ls - кол-во 76 топ лс в пч // stat - кол-во сосок, мп, спирта в пч // rec - рекомендуют того кто написал команду // as - возьмут ассист и откроют диалог с нпц // dance/bow/vic - веселуха uses sysutils,classes; var myChars: TStringList; var remoteControl: TL2Control; var remoteControlCheck: TL2Control; var UserCustom: TL2User; var UserCustomTemp: TL2Control; var Buff: TL2Buff; var obj:TL2Effect; i: integer; var soski: string; procedure Split(Delimiter: Char; Str: string; ListOfStrings: TStrings) ; begin ListOfStrings.Clear; ListOfStrings.Delimiter := Delimiter; ListOfStrings.StrictDelimiter := True; ListOfStrings.DelimitedText := Str; end; function ContainsBeforeEnd(const str, substr: string): Boolean; var P: Integer; begin P := Pos(substr, str); if P = 0 then Result := False else Result := P + Length(substr) - 1 <> Length(str); end; var List: TStrings; function CheckItemCount (const userID: string; const itemID: Integer) : Integer; var tempItem: TL2Item; begin if Assigned(remoteControl) then begin GetControl(userID).GetInventory.User.ByID(itemID, tempItem); Result := tempItem.Count; end; end; function CheckLoad (const userID: string) : Cardinal; var tempItem: TL2Item; begin if Assigned(remoteControl) then begin GetControl(userID).GetUser.Load(); Result := tempItem.Count; end; end; begin myChars := TStringList.Create; myChars.add('noname'); myChars.add('KKJ'); myChars.add('Мелстрей'); while Engine.Status = lsOnline do begin if (ChatMessage.ChatType = mtParty) and ChatMessage.Unread then begin // Телепорт по команде в пч. например: tp 1 отправит всех на первый пункт в списке телепортов if ContainsBeforeEnd(ChatMessage.Text, 'tp ') then begin List := TStringList.Create; Split(' ', ChatMessage.Text, List); if StrToInt(List[1]) > 0 then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin UserCustomTemp := GetControl(ChatMessage.sender); remoteControl.MoveTo(UserCustomTemp.GetUser.target); delay(300); remoteControl.SetTarget(UserCustomTemp.GetUser.target); delay(100); remoteControl.DlgOpen(); delay(100); remoteControl.DlgSel('Телепорт'); delay(300); remoteControl.DlgSel(StrToInt(List[1])); remoteControl.CancelTarget; end; end; end; end; // если этот скрипт запущен у варка, то он кастанет Gate Chant if (ChatMessage.Text = 'gate') then begin Engine.UseSkill(1429, false); end; // Деактивация всех чаров. Если включены Arcane Power или Arcane Wisdom, то они будут отключены if (ChatMessage.Text = 'stop') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.FaceControl(0,false); UserCustom:= remoteControl.GetUser; if UserCustom.Buffs.Byid(337,obj) then begin remoteControl.UseSkill(337, false); end; if UserCustom.Buffs.Byid(336,obj) then begin remoteControl.UseSkill(336, false); end; end; end; end; // Активация всех чаров if (ChatMessage.Text = 'start') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.FaceControl(0,true); end; end; end; // Все чары рекомендуют написавшего в пч if (ChatMessage.Text = 'rec') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.EnterText('/target ' + ChatMessage.sender); delay(100); remoteControl.EnterText('/evaluate'); end; end; end; // Чары возьмут ассист и откроют диалог с этим нпц if (ChatMessage.Text = 'as') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin UserCustomTemp := GetControl(ChatMessage.sender); remoteControl.MoveTo(UserCustomTemp.GetUser.target); delay(300); remoteControl.SetTarget(UserCustomTemp.GetUser.target); delay(100); remoteControl.DlgOpen(); end; end; end; // denza-faradenza if (ChatMessage.Text = 'dance') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.EnterText('/socialdance'); end; end; end; // челом бью if (ChatMessage.Text = 'bow') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.EnterText('/socialbow'); end; end; end; if (ChatMessage.Text = 'vic') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.EnterText('/socialvictory'); end; end; end; // привязка всех за написавшим. перед этим нужно делать stop if (ChatMessage.Text = 'follow') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.EnterText('/target ' + ChatMessage.sender); delay(100); remoteControl.EnterText('/target ' + ChatMessage.sender); end; end; end; // все сделают /unstuck if (ChatMessage.Text = 'soe') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin remoteControl.EnterText('/unstuck'); end; end; end; // счетчик старых аден в пч if (ChatMessage.Text = 'aa') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin if(CheckItemCount(myChars[i], 5575) > 0) then begin soski := soski + 'AA: ' + IntToStr(CheckItemCount(myChars[i], 5575)); end; if(CheckItemCount(myChars[i], 5575) < 1) then begin soski := '>>> NO AA!!! <<<'; end; remoteControl.Say('[ ' + soski + ' ]', 3, ''); soski := ''; end; end; end; // счетчик dimensional fragment if (ChatMessage.Text = 'df') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin // df if(CheckItemCount(myChars[i], 7079) > 0) then begin soski := soski + 'DF: ' + IntToStr(CheckItemCount(myChars[i], 7079)); end; // df if(CheckItemCount(myChars[i], 7079) < 1) then begin soski := '>>> NO DF!!! <<<'; end; remoteControl.Say('[ ' + soski + ' ]', 3, ''); soski := ''; end; end; end; // счетчик top ls 76 if (ChatMessage.Text = 'ls') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin // df if(CheckItemCount(myChars[i], 8762) > 0) then begin soski := soski + 'TOP LS 76: ' + IntToStr(CheckItemCount(myChars[i], 8762)); end; // df if(CheckItemCount(myChars[i], 8762) < 1) then begin soski := 'NO LS :('; end; remoteControl.Say('[ ' + soski + ' ]', 3, ''); soski := ''; end; end; end; // счетчик сосок, спирит оре, маны if (ChatMessage.Text = 'stat') then begin for i := 0 to myChars.Count - 1 do begin remoteControl := GetControl(myChars[i]); if Assigned(remoteControl) then begin // bssc if(CheckItemCount(myChars[i], 3949) > 0) then begin soski := soski + ' | BSSC: ' + IntToStr(CheckItemCount(myChars[i], 3949)); if(CheckItemCount(myChars[i], 3949) < 100) then soski := soski + ' <<<!!!'; end; // bssa if(CheckItemCount(myChars[i], 3951) > 0) then begin soski := soski + ' | BSSA: ' + IntToStr(CheckItemCount(myChars[i], 3951)); if(CheckItemCount(myChars[i], 3951) < 100) then soski := soski + ' <<<!!!'; end; // bsss if(CheckItemCount(myChars[i], 3952) > 0) then begin soski := soski + ' | BSSS: ' + IntToStr(CheckItemCount(myChars[i], 3952)); if(CheckItemCount(myChars[i], 3952) < 100) then soski := soski + ' <<<!!!'; end; // ssb if(CheckItemCount(myChars[i], 1465) > 0) then begin soski := soski + ' | SSB: ' + IntToStr(CheckItemCount(myChars[i], 1465)); if(CheckItemCount(myChars[i], 1465) < 100) then soski := soski + ' <<<!!!'; end; // ssa if(CheckItemCount(myChars[i], 1466) > 0) then begin soski := soski + ' | SSA: ' + IntToStr(CheckItemCount(myChars[i], 1466)); if(CheckItemCount(myChars[i], 1466) < 100) then soski := soski + ' <<<!!!'; end; // sss if(CheckItemCount(myChars[i], 1467) > 0) then begin soski := soski + ' | SSS: ' + IntToStr(CheckItemCount(myChars[i], 1467)); if(CheckItemCount(myChars[i], 1467) < 100) then soski := soski + ' <<<!!!'; end; // spirit ore if(CheckItemCount(myChars[i], 3031) > 0) then begin soski := soski + ' | St Ore: ' + IntToStr(CheckItemCount(myChars[i], 3031)); if(CheckItemCount(myChars[i], 3031) < 100) then soski := soski + ' <<<!!!'; end; remoteControl.Say('[ MP: ' + IntToStr(CheckItemCount(myChars[i], 728)) + soski + ' ]', 3, ''); soski := ''; end; end; end; end; delay(2000); end; end. 1 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
Eretik Опубликовано 22 ноября, 2021 Поделиться Опубликовано 22 ноября, 2021 Привет всем) а можете нубасу обьяснить как пользоватся приблудой *скрипт* чото у мня ничо не выходит) 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
hernesbird Опубликовано 23 ноября, 2021 Поделиться Опубликовано 23 ноября, 2021 (изменено) 23 часа назад, Eretik сказал: Привет всем) а можете нубасу обьяснить как пользоватся приблудой *скрипт* чото у мня ничо не выходит) Для того чтобы пользоваться и писать скрипты под себя на боте adrenaline, Вам понадобится: 1) Не быть кретином который считает что ему все чем-то обязаны, только потому что он попросил 2) Уметь гуглить 3) Базовые знания английского языка или\и Не быть кретинов и пользоваться банальным google translator. 4) Adrenaline bot APi (Что это? См. пункт 2) 5) Начальные знания в программировании на Delphi. ( Да, да да, наш излюбленный бот AK "адрик" написан на делфи, собственно и его скриптовый движок работает на нём же, использует некоторые библиотеки оного ЯП ( язык программирования). Перечень базовых аспектов языка для ознакомления: 1. Синтаксис 2. Функции и процедуры. 3. Массивы 4. ООП Этого будет достаточно чтобы начать писать маломальски юзабельные скрипты. О говне вроде while 1<>2 do begin с указанием неиспользуемых в скрипте классов и переменных в расчёт не берем... P\S : Для тех кто будет кукарекать, пункты выставлены по нарастающей спецом. Если на гуглил, но не в состоянии сам подкорректировать под себя скрипт. Или если выдернул с APi примеры и не знаешь что сделать, лезь в изучение основ делфи и паскаля, а не иди на форум просить чтобы для тебя "переделали". Ведь как показывает практика, это равноценно написанию скрипта. А кому это нужно за спасибо? Тут и возникает дилемма, либо плати людям которые пишут скрипты за заказ, либо учи основы и пиши сам, не завися ни от кого, не унижаясь и не попрошайничая по форумам. Опытные и "гуру", как выразился чел выше, охотнее подскажут тебе как правильно сделать ту или иную процедуру, направят и помогут. А чайки : - Дай дай скрипт, а как его запустить? А пацаны вот нашел скрипт но он не работает! ( Хотя тупо взял пример реализации повтора за окнами с апи, не понимая даже что в коде) будут игнорироваться любым адекватным челом. Не хочешь думать сам, плати тем кто умеет. Без труда, не выловишь и рыбки из пруда ;) Изменено 23 ноября, 2021 пользователем hernesbird 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
HouseMD Опубликовано 11 декабря, 2021 Поделиться Опубликовано 11 декабря, 2021 В 12.09.2021 в 23:12, Hy6ac сказал: Братва у кого то есть рабочий скрипт «повтор окнами за основой « а то этот ругается или кто то может этот исправить ,помогите ! Этот можно починить. Толку только от него ... Такое ощущение что этот кусок откуда то вырвали с мясом и представили как рабочийвариант. Допилить его можно. Но кроме него больше ничего работать толком не будет. 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
hernesbird Опубликовано 26 января, 2022 Поделиться Опубликовано 26 января, 2022 В 11.12.2021 в 16:55, HouseMD сказал: Этот можно починить. Толку только от него ... Такое ощущение что этот кусок откуда то вырвали с мясом и представили как рабочийвариант. Допилить его можно. Но кроме него больше ничего работать толком не будет. Вася, это пример скрипта с апи адрика, ПРИМЕР, починщик блин 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.