Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

спарринг

тут можно задать вопрос по скриптингу
wane5
Posts: 6
Joined: 19.11.2016 17:50

спарринг

Post by wane5 »

Всем доброго времени суток.

Прошу подсказать как реализовать следующие операции. Играю на zuluhotel, есть тривиальный скрипт на спарринг двух чаров в доме около сундука, хочу добавить туда процедуру взятия и одевание армора из сундука, а также проверку на прочность этого армора.

Пока процедура выглядит вот так:

Code: Select all

procedure equip_all;

begin
if (ObjAtLayer(HatLayer) = 0) and (GetQuantity(FindType($1412,sunduk)) > 0) then  // helmet
    begin
        UseObject(sunduk);
        Wait(100);
        MoveItem(FindItem,-1,Backpack,0,0,0);
        UnEquip(HatLayer);
        Wait(100);
        Equip(HatLayer,FindItem);
        Wait(100);
    end;
...
И такая есть для каждого слоя армора, который хочу надевать.

Так как армор в спарринге со временем разбивается, падает прочность и показатель защиты, есть задача в эту процедуру добавить проверку прочности, к примеру, если (прочность < 10) то снимать вещь, выкидывать в рядом стоящий треш и одевать новую.

Еще хотел бы каждую часть армора изначально класть в отдельную конкретную сумку(шкатулку) в главном сундуке и не знаю как сделать, чтобы скрипт искал и брал определённую часть армора в определённой шкатулке в главном сундуке.

Заранее благодарен за помощь.
wane5
Posts: 6
Joined: 19.11.2016 17:50

Re: спарринг

Post by wane5 »

Нашёл дискуссию на тему проверки прочности армора, один из как мне кажется адекватных методв это через использование скилла armslore. Ссылка на тему:

http://www.stealth.od.ua/forum/viewtopic.php?f=2&t=703

Но, так как у нас на шарде, армслор не классовый скилл у война, поэтому вариант не подходит, да и тема старая, подскажите кто знает, на данный момент появились ещё какие то способы получить значение прочности армора?
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: спарринг

Post by Oasis »

щелчек по армору, берешь данные с экрана, и пишешь алгоритм действия.

С какого ты зулу?
wane5
Posts: 6
Joined: 19.11.2016 17:50

Re: спарринг

Post by wane5 »

Oasis wrote:щелчек по армору, берешь данные с экрана, и пишешь алгоритм действия.

С какого ты зулу?
Думаю мне не под силу будет такое реализовать) Надеялся что есть какая нибудь функция кот возвращает значение прочности)

Если не сложно, покажи какой нибудь пример, как вообще выглядит такой алгоритм, когда какие то данные берутся с экрана? а то я чет даже не представляю как это работает.

я с зулухотел.нет
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: спарринг

Post by Oasis »

Я беру пример с чеклага, где чар щелкая по паку считывает инфу.
Я примерно подсказал в какую сторону рыть, сам щас этим занимаюсь, про функцию пока не знаю. Хотя в вики есть информация по слоям вещей, просмотри все функции

http://stealth.od.ua/Doc:RU/Api/GetName
Что-то нашел=)

Для меня эти функции очень сложные, я не разобрался.
Альтернативный вариант:
Понадобится 1 крафт с армс лором, 2 судука и треш. Сундук №1 для армора, сундук №2 для сброса всего комплекта и проверки такового крафтом.

Считываем общее количество армора, если значение падает ниже заданного, то скинуть весь армор в сундук №2 (можно сделать задержку и скидывать по 1 части брони в заданное время)Крафт сканирует армор, тот который слишком убитый по значению, крафт бросает в треш, хороший или нормальный - возвращает в сундук №1 :cry:
Вариант для аутсайдеров :lol:
Last edited by Oasis on 21.11.2016 16:50, edited 1 time in total.
wane5
Posts: 6
Joined: 19.11.2016 17:50

Re: спарринг

Post by wane5 »

Oasis wrote:Я беру пример с чеклага, где чар щелкая по паку считывает инфу.
Я примерно подсказал в какую сторону рыть, сам щас этим занимаюсь, про функцию пока не знаю. Хотя в вики есть информация по слоям вещей, просмотри все функции

http://stealth.od.ua/Doc:RU/Api/GetName
Что-то нашел=)
Функции по слоям видел, по ним же и пишу процедуры чтобы чар одевал каждую часть армора, они возвращают только номер слоя:
http://stealth.od.ua/Category:%D0%9E%D0 ... 0%BE%D0%B8
А вот как вытащить оттуда показатель прочности, что не пойму.

Попробую потестить getname, что он там вернёт...
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: спарринг

Post by drabadan »

wane5 wrote:
Oasis wrote:Я беру пример с чеклага, где чар щелкая по паку считывает инфу.
Я примерно подсказал в какую сторону рыть, сам щас этим занимаюсь, про функцию пока не знаю. Хотя в вики есть информация по слоям вещей, просмотри все функции

http://stealth.od.ua/Doc:RU/Api/GetName
Что-то нашел=)
Функции по слоям видел, по ним же и пишу процедуры чтобы чар одевал каждую часть армора, они возвращают только номер слоя:
http://stealth.od.ua/Category:%D0%9E%D0 ... 0%BE%D0%B8
А вот как вытащить оттуда показатель прочности, что не пойму.

Попробую потестить getname, что он там вернёт...
GetTooltip
GetClilocItemRec
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: спарринг

Post by Oasis »

Я в вике находил это, пример бы использования.
Без примера или кратким объяснением - это лес.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: спарринг

Post by drabadan »

Oasis wrote:Я в вике находил это, пример бы использования.
Без примера или кратким объяснением - это лес.

Code: Select all

function CheckItemProps(Item : Cardinal) : Boolean;
var
 Props : Array of String;
 i : Integer;
begin
 Result:= False;
 Props := ['recovery 3',
           'casting 3',
           'cost 10%',
           'cost 11%',
           'cost 12%',
           'cost 13%',
           'cost 14%',
           'cost 15%',
           'cost 16%',
           'cost 17%',
           'cost 18%',
           'cost 19%',
           'cost 20%',
           'repond',
           'regeneration',
           'chance increase'           
          ];
          
 for i := 0 to Length(Props)-1 do
  if (BmSearch(1,AnsiLowerCase(GetToolTip(Item)), Props[i]) > 0) then
   Result := True; 
end;
з.ы. Тут конечно бред в скрипте, что инициализируется каждый раз список, который может быть статическим. Но разобратся можно...
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: спарринг

Post by Oasis »

Спасибо. К сожалению я ничего не понял.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: спарринг

Post by drabadan »

Oasis wrote:Спасибо. К сожалению я ничего не понял.
ну поищи в тултипе Durability вычлени из него значение и парси к инту StrToInt
wane5
Posts: 6
Joined: 19.11.2016 17:50

Re: спарринг

Post by wane5 »

drabadan wrote:
wane5 wrote:
Oasis wrote:Я беру пример с чеклага, где чар щелкая по паку считывает инфу.
Я примерно подсказал в какую сторону рыть, сам щас этим занимаюсь, про функцию пока не знаю. Хотя в вики есть информация по слоям вещей, просмотри все функции

http://stealth.od.ua/Doc:RU/Api/GetName
Что-то нашел=)
Функции по слоям видел, по ним же и пишу процедуры чтобы чар одевал каждую часть армора, они возвращают только номер слоя:
http://stealth.od.ua/Category:%D0%9E%D0 ... 0%BE%D0%B8
А вот как вытащить оттуда показатель прочности, что не пойму.

Попробую потестить getname, что он там вернёт...
GetTooltip
GetClilocItemRec[/quote]

О спасибо, поискал на форуме примеры, нашёл тему:
http://stealth.od.ua/forum/viewtopic.php?f=1&t=2440

Там скрипт который выводит все параметры в журнал. Вот собственно сам скрипт:

Code: Select all

Program New;
var
aa : TClilocRec;
bb : TClilocItemRec;
i,k : Integer;
begin
aa := GetToolTipRec(ObjAtLayer(rhandLayer));
AddToSystemJournal('Total lines in Toolptip: ' + IntToStr(aa.Count));
for i := 0 to aa.Count - 1 do
  begin
    AddToSystemJournal('Line ' + IntToStr(i) + ': ');
    bb := aa.Items[i];   
    AddToSystemJournal('Cliloc: $' + IntToHex(bb.ClilocID,8));
    AddToSystemJournal('Cliloc text: ' + GetClilocByID(bb.ClilocID));
    for k := 0 to Length(bb.Params) - 1 do
     AddToSystemJournal('Param' + IntToStr(k) + ': "'
                        + bb.Params[k] + '"');
  end; 
end.
Теперь стало понятнее, как это работает.
Last edited by wane5 on 21.11.2016 23:27, edited 1 time in total.
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: спарринг

Post by Oasis »

ооо, спасибо. я было думал забить уже. :D

а у меня наводя на айтем, параметры как в дьябло :lol:
и скрипт соответственно дает информацию о прочности, повреждениях, весе... кароче под одним названием 3 параметра, надеюсь у тебя получше с этим=)

Code: Select all

21:18:42:890 [Warrior]: Compiling
21:18:42:917 [Warrior]: Compiled succesfully
21:18:42:919 [Warrior]: Total lines in Toolptip: 7
21:18:42:921 [Warrior]: Line 0: 
21:18:42:923 [Warrior]: Cliloc: $000FEA1B
21:18:42:925 [Warrior]: Cliloc text: ~1_NOTHING~
21:18:42:927 [Warrior]: Param-0: "a Wood Butcher Knife"
21:18:42:929 [Warrior]: Line 1: 
21:18:42:931 [Warrior]: Cliloc: $00105C61
21:18:42:934 [Warrior]: Cliloc text: Вес: ~1_WEIGHT~ камней
21:18:42:938 [Warrior]: Param-0: "1"
21:18:42:942 [Warrior]: Line 2: 
21:18:42:945 [Warrior]: Cliloc: $00103130
21:18:42:948 [Warrior]: Cliloc text: повреждение оружия ~1_val~ - ~2_val~
21:18:42:952 [Warrior]: Param-0: "1"
21:18:42:955 [Warrior]: Param-1: "8"
21:18:42:958 [Warrior]: Line 3: 
21:18:42:960 [Warrior]: Cliloc: $0010312F
21:18:42:963 [Warrior]: Cliloc text: скорость оружия ~1_val~
21:18:42:966 [Warrior]: Param-0: "30"
21:18:42:968 [Warrior]: Line 4: 
21:18:42:971 [Warrior]: Cliloc: $001033C0
21:18:42:973 [Warrior]: Cliloc text: одноручное оружие
21:18:42:975 [Warrior]: Param-0: "error{ errortext = "Array index out of bounds" }"
21:18:42:978 [Warrior]: Line 5: 
21:18:42:981 [Warrior]: Cliloc: $00103134
21:18:42:984 [Warrior]: Cliloc text: требуемый навык: меченосец
21:18:42:986 [Warrior]: Param-0: "error{ errortext = "Array index out of bounds" }"
21:18:42:989 [Warrior]: Line 6: 
21:18:42:991 [Warrior]: Cliloc: $00102F1F
21:18:42:994 [Warrior]: Cliloc text: прочность ~1_val~ / ~2_val~
21:18:42:996 [Warrior]: Param-0: "45"
21:18:42:998 [Warrior]: Param-1: "45" 
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: спарринг

Post by Oasis »

Разобрался с своей проблемой.
Если у кого-то такая же беда с кучей инфы, и парам-0, парм-1 сыпять много информации, шаманить нужно тут:

Code: Select all

for i := 0 to aa.Count - 1 do
я изменил 0 на 6, и сразу получаю шестую строку информации, о прочности=)
wane5
Posts: 6
Joined: 19.11.2016 17:50

Re: спарринг

Post by wane5 »

Я пока не пробовал прикрутить эту штуку.
Там в той же теме, чел пример написал как можно проверять параметр прочности. Примерно так:

Code: Select all

AddToSystemJournal('Прямой способ достать значение параметра'+aa.Items[2].Params[0]); 

if StrToInt(aa.Items[2].Params[0]) = 0 then
AddToSystemJournal('Оружие убито в НОЛЬ');
end.
Post Reply