Page 5 of 6

Re: Mining SA

Posted: 17.02.2014 17:38
by afibur
Всем привет!
В программировании не сведущь, но иногда получается настроить скрипт методом тыка...
Это скрипт работает отлично! Были проблемы с реколом (настройкой ответа гампа рунбуки), но все ответы нашел здесь.
Не работал ответ на гамп при крафте лопат и тинкер тулзов, почему то не работала команда NumGumpButton, но я заменил ее на waitgump и все пошло как по маслу.
ВОПРОС:
Возможно ли переделать скрипт на копку СКАЛ?
Мое предположение, это заменить $200, т.к. это айди тайла в шахте, на айди скалы.

Code: Select all

if (GetTileFlags(2, StaticData.Statics[i].Tile) and $200) = $200 then begin
Выйдет ли что то из этого?
Или подскажите в какую сторону смотреть:)

И еще вопрос в догонку. Что изменить, что бы скрипт выкапывал кочку до конца, а не обкапывал тайлы вокруг и улетал на следуйщую точку?

Заранее спасибо за ответ!

Re: Mining SA

Posted: 17.02.2014 17:45
by drabadan
afibur wrote:Всем привет!
В программировании не сведущь, но иногда получается настроить скрипт методом тыка...
Это скрипт работает отлично! Были проблемы с реколом (настройкой ответа гампа рунбуки), но все ответы нашел здесь.
Не работал ответ на гамп при крафте лопат и тинкер тулзов, почему то не работала команда NumGumpButton, но я заменил ее на waitgump и все пошло как по маслу.
ВОПРОС:
Возможно ли переделать скрипт на копку СКАЛ?
Мое предположение, это заменить $200, т.к. это айди тайла в шахте, на айди скалы.

Code: Select all

if (GetTileFlags(2, StaticData.Statics[i].Tile) and $200) = $200 then begin
Выйдет ли что то из этого?
Или подскажите в какую сторону смотреть:)

И еще вопрос в догонку. Что изменить, что бы скрипт выкапывал кочку до конца, а не обкапывал тайлы вокруг и улетал на следуйщую точку?

Заранее спасибо за ответ!
1. Вопрос про скалы - надо ,infotile поюзать по скалам собрать примерную базу от х до у какие тайлы там есть, чтоб потом засунуть в автопоиск тайлов. Shinma писал скрипт под скалы, поищи там ето все уже есть.
2. Чтоб выкапывал до конца, нужно настроить месседжи системные чтоб они отвечали твоим серверным. То-есть посмотри какие месседжи в скрипте заканчивают выкопку тайла а какие "физлят". То-есть каким сообщение закончить а каким продолжать дальше.

Re: Mining SA

Posted: 17.02.2014 17:56
by afibur
drabadan wrote: 1. Вопрос про скалы - надо ,infotile поюзать по скалам собрать примерную базу от х до у какие тайлы там есть, чтоб потом засунуть в автопоиск тайлов. Shinma писал скрипт под скалы, поищи там ето все уже есть.
2. Чтоб выкапывал до конца, нужно настроить месседжи системные чтоб они отвечали твоим серверным. То-есть посмотри какие месседжи в скрипте заканчивают выкопку тайла а какие "физлят". То-есть каким сообщение закончить а каким продолжать дальше.
Спасибо за ответ!
1. Видел скрипт Shinma, не пробовал его запускать, но и он мне не очень подходит. Хочу менять шахты на скалы так как ПК терроризируют в шахтах.
2. Спасибо за подсказку, пороюсь в сообщениях.

Re: Mining SA

Posted: 18.02.2014 12:45
by Tune
По всей видимости, у какого-то гампа есть свойство NoClose, поэтому его нельзя закрыть с помощью CloseSimpleGump. Поэтому предлагаю воспользоваться таким вариантом:
Код:
Procedure CloseSimpleGumps();
Var
i: Integer;
Begin
if GetGumpsCount > 0 then
for i := GetGumpsCount - 1 downto 0 do
if IsGumpCanBeClosed(i) then CloseSimpleGump(i);
End;
Везде где втречаются
Код:
while Isgump do CloseSimpleGump(0);

заменить на
Код:
CloseSimpleGumps();
Запускаю скрипт, стелз пишет: Compiled succesfully, персонаж стоит.
Включаю дебаг, останавливается на:

Code: Select all

while Isgump do CloseSimpleGump(0);
Добавляю
процедуру
Image
как в указанном посте делаю замены
так
Image
этак
Image

Дебаг пишет: Unknown identifier 'CloseSimpleGumps'

Где моя ошибка, что делаю неправильно?

Re: Mining SA

Posted: 18.02.2014 13:37
by Vizit0r
CloseSimpleGumps - последняя буква лишняя.

Re: Mining SA

Posted: 18.02.2014 13:58
by Tune
Vizit0r wrote:CloseSimpleGumps - последняя буква лишняя.
Убрал букву теперь: Duplicate identifier 'CLOSESIMPLEGUMP'

Re: Mining SA

Posted: 18.02.2014 14:49
by drabadan
Tune wrote:
Vizit0r wrote:CloseSimpleGumps - последняя буква лишняя.
Убрал букву теперь: Duplicate identifier 'CLOSESIMPLEGUMP'
CloseSimpleGump ето встроенная процедура, нет необходимости ее описывать отдельной процедурой.

Re: Mining SA

Posted: 18.02.2014 15:03
by Tune
и куда ее нужно встроить и как, я уже все перебрал он пишет ошибки...

Re: Mining SA

Posted: 18.02.2014 17:25
by drabadan
Tune wrote:и куда ее нужно встроить и как, я уже все перебрал он пишет ошибки...
вообще удалить процедуру из скрипта procedure CloseSimpleGumps();

Re: Mining SA

Posted: 18.02.2014 17:47
by Tune
офигеть, срастил уже))

Code: Select all

function RecallRune(RuneBook: Cardinal; Rune: Byte):Boolean; //New
var
  Counter: Byte;
  X, Y: Word;
begin
  Result := False;
  X := GetX(Self);
  Y := GetY(Self);
  CheckLag(LagWait);
  CloseSimpleGump(0);
  if Dead or not Connected then Exit;
  UseObject(RuneBook);
  CheckLag(LagWait);
  Counter := WaitCycles;
  while Counter > 0 do begin
    if IsGump then Break;
    Wait(WaitTime);
    CheckLag(LagWait);
    Inc(Counter);
  end;
  if IsGump then begin
      if NumGumpButton(GetGumpsCount-1, RuneBookShift + Rune) then begin
      CheckLag(LagWait);
      Wait(RecalTime);
      CheckLag(LagWait);
      Result := (X <> GetX(Self)) or (Y <> GetY(Self));
    end else Result := False;
  end else Result := False;
end;
реколы, выкапывания, выгрузки работают крафт лопат не хочет. Открывает гамп тулсов и ничего не делает, кнопки все проверил через гампинфо, все указанно правильно..

ЗЫ: беда наверное в незакрывающихся гампах, у нас их как минимум два..

Re: Mining SA

Posted: 18.02.2014 19:50
by Vizit0r
ну блин, не закрывается через CloseSimpleGump - тогда нажимать на кнопку отмены в этих гампах. велика проблема.

Re: Mining SA

Posted: 19.02.2014 1:59
by afibur
afibur wrote:
drabadan wrote: 1. Вопрос про скалы - надо ,infotile поюзать по скалам собрать примерную базу от х до у какие тайлы там есть, чтоб потом засунуть в автопоиск тайлов. Shinma писал скрипт под скалы, поищи там ето все уже есть.
2. Чтоб выкапывал до конца, нужно настроить месседжи системные чтоб они отвечали твоим серверным. То-есть посмотри какие месседжи в скрипте заканчивают выкопку тайла а какие "физлят". То-есть каким сообщение закончить а каким продолжать дальше.
Спасибо за ответ!
1. Видел скрипт Shinma, не пробовал его запускать, но и он мне не очень подходит. Хочу менять шахты на скалы так как ПК терроризируют в шахтах.
2. Спасибо за подсказку, пороюсь в сообщениях.
Насчет второго вопроса. Сообщения у меня идентичные, копает по разу вокруг себя...
Есть еще идеи?)

Re: Mining SA

Posted: 19.02.2014 4:57
by Tune
Vizit0r wrote:ну блин, не закрывается через CloseSimpleGump - тогда нажимать на кнопку отмены в этих гампах. велика проблема.
та не, гамп закрыть нельзя, там нет кнопки ехит и правым кликом не закроешь, кстати на него иногда реагирует хв квестер Шинмы(открывает с этого гампа лк на сайте серва) и тулсом там такая же беда((

Re: Mining SA

Posted: 19.02.2014 11:15
by Half-Life
Можно сделать вот так. Заходишь в игру, закрываешь все гампы которые можно закрыть и юзаешь команду -infogump оттуда вытаскиваешь ID незакрываемого гампа и в скрипте после begin пишешь что то типа такого

Code: Select all

  AddGumpIgnoreByID(4063159494);
  while not Connected do begin
    Connect;
    Wait(10000);
  end;
Единственный минус в том, чар должен находится с оффлайне. Запускаешь скрипт, он конектит чара без незакрываемого гампа.

Re: Mining SA

Posted: 19.02.2014 15:08
by Tune
хз так не пробовал, но вот так заработало:

Code: Select all

function CreateMiningTools: Boolean;//New
var
  Counter: Cardinal;
begin
//  AddToSystemJournal('Делаем минер тузлы');
  SetEventProc(evIncomingGump, 'EventMinerGump');
  if not CheckTinkerTool then begin
    CreateTKTools;
  end;
  UseObject(TinkerTool);
  Counter := 0;
  NumGumpButton(GetGumpsCount-1,9003);
  wait(600);
  NumGumpButton(GetGumpsCount-1,18);
  while True do begin
    if (Dead)
      or (not Connected)
      or (CheckMiningTool) then Break;
    Inc(Counter);
    if Counter > WaitCycles then Break;
    Wait(1000);
  end;
  SetEventProc(evIncomingGump, 'EventMinerGump');
  Result := CheckMiningTool;
//  AddToSystemJournal('Сделали минер тузлы');
end;

Code: Select all

procedure CreateTKTools;//New
var
  Counter: Cardinal;
begin
  AddToSystemJournal('Делаем тинкер тузлы');
  SetEventProc(evIncomingGump, 'EventTinkerGump');
  UseObject(TinkerTool);
  NumGumpButton(GetGumpsCount-1,9003);
  wait(600);
  NumGumpButton(GetGumpsCount-1,11);
  Counter := 0;
  CloseSimpleGump(0);
  AddToSystemJournal('Сделали тинкер тузлы');
end;
я так понимаю бедный гампик был не причем))
ЗЫ: этот скрипт теперь бы под чопера переписать..