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

Mining SA

Only working scripts
afibur
Neophyte
Neophyte
Posts: 16
Joined: 17.02.2014 17:29

Re: Mining SA

Post by afibur »

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

Code: Select all

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

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

Заранее спасибо за ответ!
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Mining SA

Post 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. Чтоб выкапывал до конца, нужно настроить месседжи системные чтоб они отвечали твоим серверным. То-есть посмотри какие месседжи в скрипте заканчивают выкопку тайла а какие "физлят". То-есть каким сообщение закончить а каким продолжать дальше.
afibur
Neophyte
Neophyte
Posts: 16
Joined: 17.02.2014 17:29

Re: Mining SA

Post by afibur »

drabadan wrote: 1. Вопрос про скалы - надо ,infotile поюзать по скалам собрать примерную базу от х до у какие тайлы там есть, чтоб потом засунуть в автопоиск тайлов. Shinma писал скрипт под скалы, поищи там ето все уже есть.
2. Чтоб выкапывал до конца, нужно настроить месседжи системные чтоб они отвечали твоим серверным. То-есть посмотри какие месседжи в скрипте заканчивают выкопку тайла а какие "физлят". То-есть каким сообщение закончить а каким продолжать дальше.
Спасибо за ответ!
1. Видел скрипт Shinma, не пробовал его запускать, но и он мне не очень подходит. Хочу менять шахты на скалы так как ПК терроризируют в шахтах.
2. Спасибо за подсказку, пороюсь в сообщениях.
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Mining SA

Post 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'

Где моя ошибка, что делаю неправильно?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Mining SA

Post by Vizit0r »

CloseSimpleGumps - последняя буква лишняя.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Mining SA

Post by Tune »

Vizit0r wrote:CloseSimpleGumps - последняя буква лишняя.
Убрал букву теперь: Duplicate identifier 'CLOSESIMPLEGUMP'
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Mining SA

Post by drabadan »

Tune wrote:
Vizit0r wrote:CloseSimpleGumps - последняя буква лишняя.
Убрал букву теперь: Duplicate identifier 'CLOSESIMPLEGUMP'
CloseSimpleGump ето встроенная процедура, нет необходимости ее описывать отдельной процедурой.
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Mining SA

Post by Tune »

и куда ее нужно встроить и как, я уже все перебрал он пишет ошибки...
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Mining SA

Post by drabadan »

Tune wrote:и куда ее нужно встроить и как, я уже все перебрал он пишет ошибки...
вообще удалить процедуру из скрипта procedure CloseSimpleGumps();
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Mining SA

Post 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;
реколы, выкапывания, выгрузки работают крафт лопат не хочет. Открывает гамп тулсов и ничего не делает, кнопки все проверил через гампинфо, все указанно правильно..

ЗЫ: беда наверное в незакрывающихся гампах, у нас их как минимум два..
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Mining SA

Post by Vizit0r »

ну блин, не закрывается через CloseSimpleGump - тогда нажимать на кнопку отмены в этих гампах. велика проблема.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
afibur
Neophyte
Neophyte
Posts: 16
Joined: 17.02.2014 17:29

Re: Mining SA

Post by afibur »

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

Re: Mining SA

Post by Tune »

Vizit0r wrote:ну блин, не закрывается через CloseSimpleGump - тогда нажимать на кнопку отмены в этих гампах. велика проблема.
та не, гамп закрыть нельзя, там нет кнопки ехит и правым кликом не закроешь, кстати на него иногда реагирует хв квестер Шинмы(открывает с этого гампа лк на сайте серва) и тулсом там такая же беда((
Half-Life
Novice
Novice
Posts: 86
Joined: 30.10.2012 12:06
Location: Одесса
Contact:

Re: Mining SA

Post by Half-Life »

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

Code: Select all

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

Re: Mining SA

Post 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;
я так понимаю бедный гампик был не причем))
ЗЫ: этот скрипт теперь бы под чопера переписать..
Post Reply