|
|
|
Oskom Forums Добро пожаловать на Oskom Forums.
|
-
Grandmaster
Скрипты UOscript
Данный топик создан для обмена скриптами для программы UOscript.
Здесь Вы можете выкладывать свои собственные скрипты, а также просить других пользователей поделиться с Вами их творениями.
Требования по оформлению выкладываемых скриптов:
в сообщении, содержащем скрипт должны быть указаны:
1. скилл, на который направлен скрипт*;
2. вещь, производство которой заложено в скрипт (только для крафтовых скиллов);
3. подробное описание клавиш, используемых в скрипте.
4. Иные особенности необходимые для корректной работы скрипта
Любые сообщения, не связанные с тематикой топика будут приравнены к флуду и оффтопику. Их автор понесет наказание, в соответствие с правилами форума.
*в случае, если скрипт ориентирован на какое-либо действие, не направленное ни на развитие скилла, ни на производство какой-либо вещи необходимо дать полное описание этого действия.
__________________________________________________ __
Запрещено выкладывать любые полностью автоматические скрипты. В случае нарушения - сообщение, содержащее подобный скрипт будет удалено, а автору будет вынесено "устное предупреждение", в случае повтора - будет вынесено предупреждение, в дальнейших случаях - плюс.
-
Grandmaster
Официальный сайт программы UOscript:
http://uoscript.nm.ru/
Последнюю версию UOscript, в том числе Oskom Edition можно скачать:
http://uoscript.nm.ru/files.html
Некоторые готовые скрипты
http://uoscript.nm.ru/scripts.html
FAQ по ПвП настройке UOscript + основные ПвП скрипты:
http://uoo.ru/phpBB/viewtopic.php?t=182014&022647
-
Распитие Грейт Хелок :)
Program DrinkHeal;
{$include sysutils.uops}
const
HealType = 3852;
HealColor = 00;
var
HealId : LongInt;
begin
if _FindObjectByColor(HealType,HealColor,HealID) then begin
SetLastObject(HealType,HealID);
SendKey(kLo);
end else
WriteLn('Out of Heal');
end.
на F1 у мя пробинден ласт обжект,
вроде все,
-
У кого есть скрипт на мининг , выложите плз
и вообще, у кого есть какие КРАФТ скрипты- ВЫКЛАДЫВАЕМ!!!
-
Особый отдел
Никаких скриптов на мининг и лумбер шоп здесь не было =)
-
Grandmaster
Сообщение от Athrax
Никаких скриптов на мининг и лумбер шоп здесь не было =)
Я предупредил уже товарища.
-
Re: Распитие Грейт Хелок :)
Сообщение от R a m
Program DrinkHeal;
{$include sysutils.uops}
const
HealType = 3852;
HealColor = 00;
var
HealId : LongInt;
begin
if _FindObjectByColor(HealType,HealColor,HealID) then begin
SetLastObject(HealType,HealID);
SendKey(kLo);
end else
WriteLn('Out of Heal');
end.
на F1 у мя пробинден ласт обжект,
вроде все,
Крутой папь, а вот ты не в курсе что если ты свой модуль не подключешь, твой скрипт пахать не будет? потому что функции *_FindObjectByColor* не существует скрипт на ламбер простой:Repeat Sendkey(k_F1);Delay(10000); Until False; =)))
-
Snake!
я конечно в скриптах не оч разбираюсь, но у мя все работает
-
Для крафта чего угодно:
1) Создаем файл methods.uops в папке с uoscript.exe
2) Его содержимое:
Код:
Function FindType(aType:Word): LongInt;
var
GL,H,C,aID,i: LongInt;
S: String;
begin
GetGumpsList(GL);
GetListCount(GL,C);
for i:=0 to C-1 do
begin
GetListItem(GL,i,H,S);
if FindObject(H,aType,aID) then Break;
end;
Result:=aID;
end;
Procedure MenuChoice(S1, S2: String);
var
i,H: LongInt;
S: String;
begin
i:=0;
while (i<30) and not FindCraftMenu(S1,H) do
begin
i:=i+1;
Delay(100);
end;
i:=0;
GetMenuItemName(H,i,S);
while (pos(S2,S)=0) and (i<20) do
begin
i:=i+1;
GetMenuItemName(H,i,S);
end;
SetFirstItemIndex(H,i);
LeftDoubleClick(57,73);
end;
3) Пример использования - делаем стилскины
Код:
Program Steelskin;
{$include methods.uops}
var
id: LongInt;
const
aType = $0F84; // материал - гарлик
begin
id:=findtype(aType);
while (id<>0) do
begin
SetLastObject(aType,id);
SendKey(k_F1); // Last Object
MenuChoice('What sort of potion','Steelskin');//Выбор меню
Delay(15000);
id:=findtype(aType);
end;
end.
4) Переделать этот скрипт для своих потребностей нетрудно. Меняем тип материала, заголовок меню и выбор.
Если надо несколько раз выбирать в меню - дописываем строки
Код:
MenuChoice('заголовок','что выбираем');
-
Перекладывание Банок
Народ,
кому не лень, выложите пожалуйста скрипт для UOScript для складывания разбросанных банок в заданную точку.
Идея такая: Когда банки намешались, сложить их друг на друга чтоб удобно было пить например...
-
Grandmaster
Я понимаю, что в принципе полноценный FAQ по языку скриптов написать для UOscriptа сложно, но все-таки, хотелось бы увидеть конкретные примеры по некоторым циклам действиям, которые будут приведены ниже.
Часто находишь нужные скрипты на какое-либо действие, но все же есть нюансы, которые бы хотелось прописывать.
Для наглядности буду писать циклы и действия как для пилота.
1) Цикл делать до тех пор пока не будет: проверка по нескольким ластмесагам и показателям чара, таймеру (не знаю есть ли он в UOscriptе):
set timer
while_not (lastmsg 1) or (lastmsg 2) or (hits < str) or (timer > 5000)
wait 100 // или какое-то действие
end_while
Надесюь для while, if, If_not все идэинтично.
2)Перенос итемов c одной точки в другую.
2.1) Проcто перетягиваем если известно где находитмя итем:
drag 111,111 222,222 all
2.2) Найти итем по типу и перенести в заданную точку
в Пилоте это нереализовано.
3) Метки для переходов в самом скрипте или в какой-либо процедуре скрипта.
:start
goto start
gosub start
Интересует именно метка, а не процедура.
Относительно процедур, почему, если я делаю метку для отправки на процедуру до прописания самой процедуры, выдается ошибка. Это что так реально задумано, что отсылку на процедуру можно делать после написания самой процедуры? Очень не удобно. Это как-то обходится или исправляется.
-
Циклы с проверкой сообщений.
Как показала практика, реакцию на сообщения лучше реализовавать не по LastMsg, а путем просмотра всех сообщений, поступивших с момента последнего действия.
Для этого делаем пару конструкций.
Код:
//Константы событий (количество и значения по вкусу)
const CYouLoosen = 1;
CYouPut = 2;
CNone = 0;
CDisconnect = 100;
Реализуем функцию, которая будет просматривать журнал.
Код:
function ProcessMessages: LongInt;
var i, k: LongInt;
st: String;
begin
Result:=CNone;
GetJournalNew;
GetJournalCount(k);
If k<>0 Then
begin
For i:=1 to k do
begin
GetJournalString(0, j_LowerCase, st);
DeleteJournalString(0);
If Pos('you fail', st)<>0 Then Result:=CYouLoosen;
If Pos('you toss', st)<>0 Then Result:=CYouLoosen;
If Pos('you put', st)<>0 Then Result:=CYouPut;
If Pos('your skill', st)<>0 Then Result:=CYouPut;
If Pos('disconnect', st)<>0 Then Result:=CDisconnect;
If Pos('what do you want', st)<>0 Then Result:=CNone;
// и т.д.
end;
end;
end;
Далее сам цикл.
Код:
const
CDelay = 10000;
var
Res, k: LongInt;
...
Repeat // Делаем пока не произойдет дисконнект
{Тут производим какое-либо действие}
k:=0;
Repeat //Ждем пока действие не завершится или будет превышено время ожидания
k:=k+200;
Delay(200);
Res:=ProcessMessages;
Until (Res<>CNone) or (k>CDelay);
{тут делаем обработку значения Res, если надо}
Until (Res=CDisconnect)
Можно написать функцию ProcessMessages на все случаи жизни и далее просто использовать в различных скриптах через Include. Данная система позволяет исключить сбои скриптов из-за пропуска нужного LastMsg.
-
-
Срочно хелп, короче вот такой скрипт на обкладку
left_down 961, 568
end_script
возможно зделать так чтобы когда подвинул пек, серавно таргет оставался ? ну просто очень тупо каждый рас после того как подвинул пек выставлять кординаты... плиз хелп
-
• D-Tox •
Тут идёт обсуждение УОСкрипта, а не пилота =) А вообще, на пилоте это невозможно сделать =)
-
Подскажите скрипт на реколл по руне
-
Массив
Подскажите пожалуйста как в уоскрипте заполнять архив данными, я имею ввиду как в паскале -
arr:array[0..n] of integer = (1,2,3,4......);
метод arr[0]=1,arr[2]=2....не подойдет
И еще, как задать двумерный массив?
-
у меня немного попроще вопрос =)) как написать в уопилоте , что бы он одевал новый кортик после того как старый разломалься? скажите пожалуйста... я знаю 1 : нфдо набирать [msg] и что то ещё... а что я ненаю =(
-
Re: Массив
Сообщение от BaZz
Подскажите пожалуйста как в уоскрипте заполнять архив данными, я имею ввиду как в паскале -
arr:array[0..n] of integer = (1,2,3,4......);
метод arr[0]=1,arr[2]=2....не подойдет
И еще, как задать двумерный массив?
Код:
type
TPoint = record
X : longint;
Y : longint;
end;
TTile = record
TerrType : LongInt;
Status : LongInt;
value : Extended;
gval : Extended;
hval : Extended;
fval : Extended;
PrevX : LongInt;
PrevY : LongInt;
end;
const
CMaxBoundSize = 500;
CMaxMapSize = 122;
type
TMapString = array of TTile;
TMap = array of TMapString;
TBound = array of TPoint;
TPath = array of TPoint;
var
Map: TMap;
Bound: TBound;
Courses: TBound;
Path: TPath;
kk : Array of Extended;
Start,Finis, ctmp: TPoint;
Found: Boolean;
procedure InitArrays(aMaxSize, aMaxBound: LongInt);
var i, j: LongInt;
begin
SetArrayLength(Map, aMaxSize);
For i:=0 to aMaxSize-1 do SetArrayLength(Map[i], aMaxSize);
for i:=1 to aMaxSize-1 do
for j:=1 to aMaxSize-1 do
begin
Map[i][j].TerrType:=ttClear;
Map[i][j].Value:=1;
Map[i][j].Status:=tsUnvisited;
end;
for i:=0 to aMaxSize-1 do
begin
Map[i][0].TerrType:=ttWall;
Map[0][i].TerrType:=ttWall;
Map[i][aMaxSize-1].TerrType:=ttWall;
Map[aMaxSize-1][i].TerrType:=ttWall;
end;
SetArrayLength(Bound, aMaxBound);
SetArrayLength(kk, 2);
kk[0]:=1.42;
kk[1]:=1.0;
SetArrayLength(Courses, 4);
Courses[0].X:=0; Courses[0].Y:=-1;
Courses[1].X:=1; Courses[1].Y:=0;
Courses[2].X:=0; Courses[2].Y:=1;
Courses[3].X:=-1; Courses[3].Y:=0;
end;
-
Скрипти харашо ну лучше руками играть
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
Правила форума
|