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

lumber drw(guard zone)

Only working scripts
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Beren wrote:
Возможно на ДРВ реализована система, которая с большей строгостью следит за схлопотавшим хоть один дисконект, допустим, за последни 24 часа.
сейчас побегал двумя разными чарами голым клиентом, результаты такие:
чар получавший дисконект через стелс получил в течении 10 секунд и через голый клиент.
чар, которым сегодня ещё не заходил бегал без проблем.
перестраховываются. так что вероятно, проблема рождается в стелсе, а уж потом последствия ощущаешь и на голом клиенте.
последствия из-за защиты, которая скорее всего не обнуляет данные про частоту пакетов при дисконнекте.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
SnickersBrood
Posts: 1
Joined: 22.04.2011 16:42

Post by SnickersBrood »

а я то всё думал почему у тебя 3 чаров нубов забанили на етом скрипте.
дак в итоге что надо сделать то не как не могу понять что изминить надо для того что был нормальный простой ход чара? без дисконекта и бана
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

после каждого шага делай wait(300) - думаю должно хватить :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Beren
Novice
Novice
Posts: 108
Joined: 08.09.2008 1:07

Post by Beren »

Vizit0r wrote:после каждого шага делай wait(300) - думаю должно хватить :)
я даже написал после дисконнектов такую процедуру:

Code: Select all

procedure StepByStep(DestX,DestY: Word; Optimized: Boolean; Accuracy: Integer; Running: Boolean);
var
 steps,i:integer;
 PathArray: TPathArray;
begin
 steps:=GetPathArray(DestX,DestY,Optimized,Accuracy,PathArray);
 for i:=0 to steps-1 do
  begin
   MoveXY(DestX,DestY,Optimized,Accuracy,Running);
   wait(wait_without_steps);
  end;
end;
правда тогда мне она не помогла, из-за того, что уже были дисконекты в течении вечера) можно на свежем попробовать.
Beren
Novice
Novice
Posts: 108
Joined: 08.09.2008 1:07

Post by Beren »

для Дрв, от администрации:

Code: Select all

Нормальные задержки:
— для шага пешком 400ms
 — для бега пешком 200ms
 — для шага верхом 200ms
 — для бега верхом 100ms
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Beren wrote: steps:=GetPathArray(DestX,DestY,Optimized,Accuracy,PathArray);
for i:=0 to steps-1 do
begin
MoveXY(DestX,DestY,Optimized,Accuracy,Running);
wait(wait_without_steps);
end;
вместо MoveXY сделать Step(GetDir(...),Running);
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Beren wrote:для Дрв, от администрации:

Code: Select all

Нормальные задержки:
— для шага пешком 400ms
 — для бега пешком 200ms
 — для шага верхом 200ms
 — для бега верхом 100ms
я делал такие задержки - не помогает.возможно из-за того, что отправляются пакеты не по одному, а сразу кучей, хз.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Beren
Novice
Novice
Posts: 108
Joined: 08.09.2008 1:07

Post by Beren »

А одноразовый Step меняет направление чара и шагает или же просто меняет направление и уже потом надо дополнительно вызвать Step для шага?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

второе.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

SetArStatus(true);
//WalkUnmountTimer = 450;
//WalkMountTimer = 500;
init;
sum:=0;
MoveXY(start_p.X,start_p.Y,true,1,false);
// поиск деревьев и составление массива
arr_sum:=0;
for i:=0 to 9 do
begin
rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile,tfta);
if rs>0 then
for k:=0 to rs-1 do temp[arr_sum+k]:=tfta[k];
arr_sum:=arr_sum+rs;
end;
QuickSort(temp,arr_sum,start_p);
for k:=0 to arr_sum-1 do
res_arr[sum+k]:=temp[k];
sum:=sum+arr_sum;


Почему не работает WalkMountTimer = 500;
И этот скрипт встает на res_arr[sum+k]:=temp[k]; я незнаю почему

Compiled succesfully
сортируем 0 деревьев
Готово...
Out Of Range at 0.1435
Script lumber2.sc stopped successfuly
Compiling
Compiled succesfully

И еще можно расписать rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile,tfta); Что такое tfta и какой что именно записывается в rs

При пошаговой проверке скрипт всегда проскакивает if rs>0 then тоесть rs у меня всегда ноль . это нормально?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

shinma wrote: Почему не работает WalkMountTimer = 500;
потому что присвоение значения делается через :=

остальные вопросы в большинстве своем непонятны.
на тему "что возвращает" читать в http://stealth.od.ua/forum/viewtopic.php?t=1220
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

function GetStaticTilesArray(Xmin,Ymin,Xmax,Ymax: Word; WorldNum: Byte; TileType: Word; var FoundTilesArray: TFoundTilesArray): Word; // Получение массива статик тайлов по типу

TFoundTile = record
X : SmallInt;
Y : SmallInt;
Z : ShortInt;
Tile : Word;
end;
type TFoundTilesArray = array[0..999] of TFoundTile;

Пример 1:
Code:
b:= GetStaticTilesArray(1244, 1422, 1356, 1532, 1, 3296, a);
AddToSystemJournal('Tile Count : ' + IntToStr(b));
AddToSystemJournal('X ' + IntToStr(a[0].X) + ' Y ' + IntToStr(a[0].Y) + ' Z ' + IntToStr(a[0].Z) + ' Tile ' + IntToStr(a[0].Tile));

Результат::
20:36:12 [Local Admin - Asma2]: Compiled succesfully
20:36:12 [Local Admin - Asma2]: Tile Count : 39
20:36:12 [Local Admin - Asma2]: X 1244 Y 1428 Z 0 Tile 57344


Написано "Получение массива статик тайлов по типу" Но я не пойму почему с переменной b: работают как с переменной, а не массивом переменных. И в итоге я вижу Tile Count : 39 - одно число , а не массив. поэтому я не могу понять что же такое b:= точнее что туда записывает эта функция.



Image
Image
Вот тут скрипт постоянно проскакивает
for k:=0 to rs-1 do temp[arr_sum+k]:=tfta[k];
Так как rs у меня всегда ноль. Я думаю ошибка изза этого. но не уверен.
Image
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

В паскале чтоли не программировал. Тип возвращаемого функцией значения записывается в конце объявления функции через двоеточие от скобок с параметрами функции. В данном случае это Word (беззнаковое целое размером 2 байта, хранит значения от 9 до 65535). А сам массив помещается в подаваемую в массив переменную, которая помечена как возвращаемая (тобишь с ключевым словом var.
Так что у тебя всё логично. Функция напрямую возвращает количество элементов в массиве, сам же массив возвращается через параметр (это FoundTilesArray).
Насчет проскока цикла - проверяй сам. Если rs действительно всегда нулевой, то естественно, что цикл не отрабатывается.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

я нашел причину. у меня был указан путь до клиента и клиент запускался. Но путь до самой папки с игрой не был указан. изза этого, как я думаю, он просто не находил нужные тайлы и писал вообще ноль деревьев. а по скрипту вообще 0-1=-1 выходило. Сейчас указал папку и все заработало. Надо бы в программе при запуске клиента сделать проверку на соответствие присутствия правильного пути к папке с игрой. Это вроде не трудно, но не берусь утверждать. Тогда нубы вроде меня будут автоматически избавлены от пары глупых вопросов.

А вот что функция возвращает кол-во элементов массива этот ответ то я и искал. Спасибо.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

08:18:22:203 [ForestWars - test]: UO MUL-Files path incorrect, some functions disabled (move, map, clicocs etc.)
а это для кого пишется, когда путь не прописан?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply