Admin 343 Опубликовано 11 марта, 2021 Жалоба Поделиться Опубликовано 11 марта, 2021 Скрипт объединен со скриптом "кол-во сосок в пати чат" и не только. Самое вкусное - телепорт за окнами без мозгодрочки как в других скриптах. Все команды пишутся в пати чат как и прежде. Дорабатывайте на свой вкус, буду рад увидеть ваши модификации Не забудьте указать всех необходимых персонажей в скрипте. Примерно на 70 строке найти myChars.add('Name1'); и заменить/дописать на ники ваших персов. tp X - где X номер пункта тп у гейткипера. Берем в таргет ГК, смотрим номер строки куда надо полететь, пишем например tp 3. работает так же на других нпц, нужно указать номер пункта в окне диалога.gate - если скрипт запущен у варка - заюзает gate chantstart - Активирует чаровstop - Дактивирует чаров. Если включены Arcane Power или Arcane Wisdom, то они будут отключеныfollow - привяжутся за написавшим. желательно делать stop перед юзом этой командыsoe - все юзнут /unstuckaa - кол-во старых аден в пчdf - кол-во дф в пчls - кол-во 76 топ лс в пчstat - кол-во сосок, мп, спирта в пчrec - рекомендуют того кто написал командуas - возьмут ассист и откроют диалог с нпцdance/bow/vic - веселуха // Управление пати через пати-чат // 26/09/2018 Existone // ------------------------------------ // доступные команды: // 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('Name1'); myChars.add('Name2'); myChars.add('Name3'); 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. Ссылка на сообщение Поделиться на другие сайты
Mifel 0 Опубликовано 22 сентября, 2021 Жалоба Поделиться Опубликовано 22 сентября, 2021 На команду stat в чате пишет [MP: 0] а по поводу сосок не пишет ... Ссылка на сообщение Поделиться на другие сайты
Smolniy 2 Опубликовано 6 июня, 2022 Жалоба Поделиться Опубликовано 6 июня, 2022 при команде SOE зависает все, помогает только перезагрузка персов, такое ощущение что на сервере unstuck сломан ) и очень нехватает что бы при команде боты выбирали нужную строчку в диалоге с нпс, отлично бы помогло для диалога с квестами, перехода на рифт, и прочими Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти