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

гампы

тут можно задать вопрос по скриптингу
Post Reply
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

гампы

Post by roma777 »

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

Code: Select all

Program New;
begin
while not dead do 
begin
UseObject(квестгивер)
wait(1000)
если в гампе написано Stop Harping on Me то жмем NumGumpButton(GetGumpsCount-1,1)
end;
end.
вот инфогамп нужного квеста

Code: Select all

Serial: CAAE3
GumpID: 4C4C6DB0
X: 004B
Y: 004B
Pages: 1
Gump Options: NoClose NoResize

GumpPicTiled: X Y   Width   Height   Gump_ID   ElemNum
GumpPicTiled: 50  20  400  400  5124  3
GumpPicTiled: 50  29  30  390  10460  4
GumpPicTiled: 34  140  17  279  9263  5
GumpPicTiled: 83  15  350  15  10250  10
GumpPicTiled: 51  419  392  17  10101  13
GumpPicTiled: 415  29  44  390  2605  14
GumpPicTiled: 415  29  30  390  10460  15
GumpPicTiled: 130  65  175  1  9101  20

GumpPics: X  Y  ID  Hue  Page  ElemNum
GumpPic: 48  135  10411  0  0  6
GumpPic: -16  285  10402  0  0  7
GumpPic: 0  10  10421  0  0  8
GumpPic: 25  0  10420  0  0  9
GumpPic: 34  419  10306  0  0  11
GumpPic: 442  419  10304  0  0  12
GumpPic: 370  50  1417  0  0  16
GumpPic: 379  60  5545  0  0  17
GumpPic: 425  0  10441  0  0  18
GumpPic: 90  33  9005  0  0  19

XmfHTMLGumpColor: X   Y   Width   Height   ClilocID   Background   scrollbar   Hue   ElemNum   ClilocText
0   XmfHTMLGumpColor: 130  45  270  16  1049010  0  0  16777215  21  Quest Offer
1   XmfHTMLGumpColor: 160  108  250  16  1073881  0  0  10000  22  Stop Harping on Me
2   XmfHTMLGumpColor: 98  140  312  16  1072202  0  0  10000  23  Description
3   XmfHTMLGumpColor: 98  156  312  180  1074071  0  1  24464  24  Humans artistry can be a remarkable thing. For instance, I have heard of a wonderful instrument which creates the most melodious of music. A lap harp. I would be ever so grateful if I could examine one in person. 

GumpButtons: X   Y   Released_ID  Pressed_ID   Quit   Page_ID   Return_value   Page   ElemNum
0   GumpButton: 95  395  12000  12002  1  0  4  0  25
1   GumpButton: 313  395  12018  12020  1  0  2  0  26
2   GumpButton: 275  370  12009  12011  1  0  7  0  27

CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: гампы

Post by CFA »

получаешь информацию о гампе в скрипте с помощью GetGumpInfo или GetGumpFullLines
Строка "Stop Harping on Me" это клилок 1073881.
Вобщем примерно так.

Code: Select all

GetGumpInfo(gi);
for i := 0 to GetArrayLength(gi.XmfHTMLGumpColor)-1 do
 if gi.XmfHTMLGumpColor[i].Cliloc_id = 1073881 then
 begin
  NumGumpButton(GetGumpsCount-1,1);
  break;
 end;
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: гампы

Post by roma777 »

CFA wrote:получаешь информацию о гампе в скрипте с помощью GetGumpInfo или GetGumpFullLines
Строка "Stop Harping on Me" это клилок 1073881.
Вобщем примерно так.

Code: Select all

GetGumpInfo(gi);
for i := 0 to GetArrayLength(gi.XmfHTMLGumpColor)-1 do
 if gi.XmfHTMLGumpColor[i].Cliloc_id = 1073881 then
 begin
  NumGumpButton(GetGumpsCount-1,1);
  break;
 end;
как правильно вставить это в скрипт?
я сделал так:

Code: Select all

Program New;
var gi : Cardinal
gi := 4C4C6DB0
begin
while not dead do 
begin
UseObject(квестгивер)
wait(1000)
GetGumpInfo(gi);
for i := 0 to GetArrayLength(gi.XmfHTMLGumpColor)-1 do
 if gi.XmfHTMLGumpColor[i].Cliloc_id = 1073881 then
 begin
  NumGumpButton(GetGumpsCount-1,1);
  break;
 end;
end;
end.
когда я пытаюсь присвоить значение через := , то всегда выдает ошибку в это строчке. причем даже если беру любой скрипт с форума.
P.S. только не орите на меня. может и полный абсурд написаны мною код, просто туго мне даеться паскаль с нуля, не имея даже понятия о програмировании.
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: гампы

Post by CFA »

roma777 wrote: как правильно вставить это в скрипт?
я сделал так:

Code: Select all

Program New;
var gi : Cardinal
gi := 4C4C6DB0
begin
while not dead do 
begin
UseObject(квестгивер)
wait(1000)
GetGumpInfo(gi);
for i := 0 to GetArrayLength(gi.XmfHTMLGumpColor)-1 do
 if gi.XmfHTMLGumpColor[i].Cliloc_id = 1073881 then
 begin
  NumGumpButton(GetGumpsCount-1,1);
  break;
 end;
end;
end.
когда я пытаюсь присвоить значение через := , то всегда выдает ошибку в это строчке. причем даже если беру любой скрипт с форума.
P.S. только не орите на меня. может и полный абсурд написаны мною код, просто туго мне даеться паскаль с нуля, не имея даже понятия о програмировании.
1) gi должен быть типа TGumpInfo, те var gi : TGumpInfo;
2) Пропущена куча ";"
3) gi := 4C4C6DB0 - что это?
3.1) это hex число, оно должно начинаться со знака "$"
3.2) gi у нас сейчас TGumpInfo, а не Cardinal, значить числом быть не может
3.3) присваивать значение можно только после begin

Вердикт - учить паскаль.
Post Reply