SHOW:
|
|
- or go back to the newest paste.
| 1 | Program ObjectDTMGenerationTool; | |
| 2 | - | {$DEFINE SMART}
|
| 2 | + | //{$DEFINE SMART}
|
| 3 | {$i SRL\SRL.simba}
| |
| 4 | {$i ObjectDTM\ObjDTMInclude.simba}
| |
| 5 | ||
| 6 | var | |
| 7 | CleanMap, CurrentMap, I, X, Y: Integer; | |
| 8 | ||
| 9 | SubPoints: TPointArray; | |
| 10 | Objects: MMObjArray; | |
| 11 | ObjectDTM: ObjDTM; | |
| 12 | ||
| 13 | PageControl: TPageControl; | |
| 14 | TabSheet: Array [0..3] of TTabSheet; | |
| 15 | ||
| 16 | PropertiesControl: TPageControl; | |
| 17 | PropertySheet: Array [0..2] of TTabSheet; | |
| 18 | PropertyPanel: TPanel; | |
| 19 | ||
| 20 | ToolForm: TForm; | |
| 21 | MMap: TImage; | |
| 22 | ObjectsList: TListBox; | |
| 23 | Instructions: TListBox; | |
| 24 | Output: TMemo; | |
| 25 | MainFormButtons: Array [0..1] of TButton; | |
| 26 | SubPointButtons: Array [0..3] of TButton; | |
| 27 | ||
| 28 | procedure DeclarePlayers; | |
| 29 | begin | |
| 30 | ||
| 31 | HowManyPlayers := 1; | |
| 32 | CurrentPlayer := 0; | |
| 33 | SetLength(Players, HowManyPlayers); | |
| 34 | ||
| 35 | - | Players[0].Name := 'Dragon100776'; |
| 35 | + | Players[0].Name := ''; |
| 36 | - | Players[0].Pass := '1NovDark7'; |
| 36 | + | Players[0].Pass := ''; |
| 37 | - | Players[0].Member := True; |
| 37 | + | Players[0].Member := False; |
| 38 | Players[0].Active := True; | |
| 39 | end; | |
| 40 | ||
| 41 | procedure DrawDotsEx(pixels: TPointArray; color: Integer); | |
| 42 | {:: Author: Sir R. Magician ::}
| |
| 43 | var | |
| 44 | i : integer; | |
| 45 | begin | |
| 46 | ||
| 47 | MMap.Canvas.Pen.Color := color; | |
| 48 | ||
| 49 | for i:= 0 to high(pixels) do | |
| 50 | begin | |
| 51 | ||
| 52 | MMap.canvas.moveto(pixels[i].x,pixels[i].y); | |
| 53 | MMap.canvas.LineTo(pixels[i].x+1,pixels[i].y); | |
| 54 | end; | |
| 55 | end; | |
| 56 | ||
| 57 | procedure DrawLine(TP1, TP2: TPoint; Color: TColor); | |
| 58 | {:: Author: mormonman ::}
| |
| 59 | begin | |
| 60 | ||
| 61 | MMap.canvas.Pen.Color := Color; | |
| 62 | ||
| 63 | MMap.canvas.moveto(TP1.x,TP1.y); | |
| 64 | MMap.canvas.LineTo(TP2.x,TP2.y); | |
| 65 | end; | |
| 66 | ||
| 67 | procedure DrawCircle(Center: TPoint; Radius: Integer; Fill: Boolean; Color: TColor); | |
| 68 | {:: Author: mormonman ::}
| |
| 69 | var | |
| 70 | TPA: TPointArray; | |
| 71 | begin | |
| 72 | TPA := TPAFromBox(IntToBox(Center.X - Radius, Center.Y - Radius, Center.X + Radius, Center.Y + Radius)); | |
| 73 | FilterPointsPie(TPA, 0, 360, -1, Radius, Center.X, Center.Y); | |
| 74 | ||
| 75 | if (not Fill) then | |
| 76 | FilterPointsDist(TPA, Radius-1, Radius, Center.X, Center.Y); | |
| 77 | ||
| 78 | if (Length(TPA) >= 1) then | |
| 79 | DrawDotsEx(TPA, Color); | |
| 80 | end; | |
| 81 | ||
| 82 | procedure DrawPolygons(Polygons: T2DPointArray; color: TColor); | |
| 83 | {:: Author: mormonman ::}
| |
| 84 | var | |
| 85 | i, h, Hi: Integer; | |
| 86 | begin | |
| 87 | ||
| 88 | if (Length(Polygons) < 1) then | |
| 89 | Exit; | |
| 90 | ||
| 91 | for h := 0 to High(Polygons) do | |
| 92 | begin | |
| 93 | Hi := High(Polygons[h]); | |
| 94 | if (Hi < 2) then Exit; | |
| 95 | ||
| 96 | for i := 0 to Hi - 1 do | |
| 97 | DrawLine(Polygons[h][i], Polygons[h][i+1], color); | |
| 98 | ||
| 99 | DrawLine(Polygons[h][Hi], Polygons[h][0], color); | |
| 100 | end; | |
| 101 | end; | |
| 102 | ||
| 103 | procedure GatherMiniMap; | |
| 104 | var | |
| 105 | I: Integer; | |
| 106 | TIA: TIntegerArray; | |
| 107 | TPA: TPointArray; | |
| 108 | begin | |
| 109 | ||
| 110 | TPA := TPAFromBox(IntToBox(548, 6, 708, 166)); | |
| 111 | FilterPointsPie(TPA, 0, 360, 0, 80, MMCX, MMCY); | |
| 112 | ||
| 113 | TIA := GetColors(TPA); | |
| 114 | OffsetTPA(TPA, IntToPoint(-548, -6)); | |
| 115 | ||
| 116 | FastSetPixels(CleanMap, TPA, TIA); | |
| 117 | FastSetPixels(CurrentMap, TPA, TIA); | |
| 118 | ||
| 119 | DrawBitmap(CleanMap, MMap.Canvas, 0, 0); | |
| 120 | ||
| 121 | for I := 0 to High(SubPoints) do | |
| 122 | DrawCircle(SubPoints[i], 7, False, clLime); | |
| 123 | end; | |
| 124 | ||
| 125 | procedure GatherObject; | |
| 126 | var | |
| 127 | I: Integer; | |
| 128 | Name: String; | |
| 129 | Points: String; | |
| 130 | ObjectsTPA: TPointArray; | |
| 131 | begin | |
| 132 | ||
| 133 | case ObjectsList.ItemIndex of | |
| 134 | ||
| 135 | -1: Name := 'invalid'; | |
| 136 | 0: Name := 'ladders'; | |
| 137 | 1: Name := 'trees'; | |
| 138 | 2: Name := 'dead trees'; | |
| 139 | 3: Name := 'plants'; | |
| 140 | 4: Name := 'flax'; | |
| 141 | 5: Name := 'boulders'; | |
| 142 | 6: Name := 'henges'; | |
| 143 | 7: Name := 'cacti'; | |
| 144 | 8: Name := 'maple trees'; | |
| 145 | 9: Name := 'rocks'; | |
| 146 | end; | |
| 147 | ||
| 148 | if (Name = 'invalid') then | |
| 149 | begin | |
| 150 | ||
| 151 | WriteLn('You have passed an ' + name + ' index to the finding function, please select an object first.');
| |
| 152 | Exit; | |
| 153 | end; | |
| 154 | ||
| 155 | ObjectsTPA := FindMiniMapObj(MMObjRecords[ObjectsList.ItemIndex]); | |
| 156 | ||
| 157 | SetLength(Objects, Length(ObjectsTPA)); | |
| 158 | OffsetTPA(ObjectsTPA, IntToPoint(-548, -6)); | |
| 159 | ||
| 160 | DrawBitmap(CleanMap, MMap.Canvas, 0, 0); | |
| 161 | ||
| 162 | for I := 0 to (Length(ObjectsTPA) - 1) do | |
| 163 | begin | |
| 164 | ||
| 165 | DrawCircle(ObjectsTPA[i], 7, False, clWhite); | |
| 166 | ||
| 167 | Points := Points + '(' + IntToStr(ObjectsTPA[i].x) + ', ' + IntToStr(ObjectsTPA[i].y) + '), ';
| |
| 168 | Objects[i].Center := ObjectsTPA[i]; | |
| 169 | Objects[i].ObjType := ObjectsList.ItemIndex; | |
| 170 | end; | |
| 171 | ||
| 172 | for I := 0 to High(SubPoints) do | |
| 173 | DrawCircle(SubPoints[i], 7, False, clLime); | |
| 174 | ||
| 175 | Output.Clear; | |
| 176 | Output.Lines.Add(Points); | |
| 177 | end; | |
| 178 | ||
| 179 | procedure SubPointManager; | |
| 180 | begin | |
| 181 | ||
| 182 | for I := 0 to High(Objects) do | |
| 183 | begin | |
| 184 | ||
| 185 | if InCircle(X, Y, Objects[i].Center.x, Objects[i].Center.y, 7) then | |
| 186 | begin | |
| 187 | ||
| 188 | if (not PointInTPA(Objects[i].Center, SubPoints)) then | |
| 189 | begin | |
| 190 | ||
| 191 | Inc(ObjectDTM.NumOfPoints); | |
| 192 | ||
| 193 | SetLength(ObjectDTM.SubPoints, ObjectDTM.NumOfPoints); | |
| 194 | SetLength(SubPoints, ObjectDTM.NumOfPoints); | |
| 195 | ||
| 196 | ObjectDTM.SubPoints[(ObjectDTM.NumOfPoints) - 1].Base := Objects[i].ObjType; | |
| 197 | ObjectDTM.SubPoints[(ObjectDTM.NumOfPoints) - 1].Point := Objects[i].Center; | |
| 198 | ObjectDTM.SubPoints[(ObjectDTM.NumOfPoints) - 1].Drift := 7; | |
| 199 | ||
| 200 | SubPoints[(ObjectDTM.NumOfPoints) - 1] := Objects[i].Center; | |
| 201 | ||
| 202 | DrawCircle(SubPoints[(ObjectDTM.NumOfPoints) - 1], 7, False, clLime); | |
| 203 | Exit; | |
| 204 | end else | |
| 205 | Continue; | |
| 206 | end; | |
| 207 | end; | |
| 208 | ||
| 209 | for I := 0 to (ObjectDTM.NumOfPoints - 1) do | |
| 210 | begin | |
| 211 | ||
| 212 | if (not InCircle(X, Y, SubPoints[i].x, SubPoints[i].y, 7)) then | |
| 213 | Continue; | |
| 214 | ||
| 215 | DrawCircle(SubPoints[i], 7, False, clRed); | |
| 216 | ||
| 217 | ObjectDTM.SubPoints[i].Base := ObjectDTM.SubPoints[(ObjectDTM.NumOfPoints) - 1].Base; | |
| 218 | ObjectDTM.SubPoints[i].Point := ObjectDTM.SubPoints[(ObjectDTM.NumOfPoints) - 1].Point; | |
| 219 | ObjectDTM.SubPoints[i].Drift := ObjectDTM.SubPoints[(ObjectDTM.NumOfPoints) - 1].Drift; | |
| 220 | ||
| 221 | ||
| 222 | SubPoints[i] := SubPoints[(ObjectDTM.NumOfPoints) - 1]; | |
| 223 | ||
| 224 | ObjectDTM.NumOfPoints := (ObjectDTM.NumOfPoints) - 1; | |
| 225 | ||
| 226 | SetLength(SubPoints, ObjectDTM.NumOfPoints); | |
| 227 | SetLength(ObjectDTM.SubPoints, ObjectDTM.NumOfPoints); | |
| 228 | - | ObjDTM_PrintToRec(ObjDTMToString(ObjectDTM)); |
| 228 | + | |
| 229 | end; | |
| 230 | ||
| 231 | procedure AreaManager; | |
| 232 | begin | |
| 233 | {
| |
| 234 | with Buttons[0] do | |
| 235 | begin | |
| 236 | ||
| 237 | Caption := 'grab minimap'; | |
| 238 | OnClick := @MouseClick; | |
| 239 | end; | |
| 240 | ||
| 241 | with Buttons[1] do | |
| 242 | begin | |
| 243 | ||
| 244 | Caption := 'gather object'; | |
| 245 | OnClick := @MouseClick; | |
| 246 | end; | |
| 247 | ||
| 248 | with Buttons[2] do | |
| 249 | begin | |
| 250 | ||
| 251 | Caption := 'add area polygon'; | |
| 252 | OnClick := @MouseClick; | |
| 253 | end; | |
| 254 | ||
| 255 | with Buttons[3] do | |
| 256 | begin | |
| 257 | ||
| 258 | Caption := 'print object dtm'; | |
| 259 | OnClick := @MouseClick; | |
| 260 | end; | |
| 261 | } | |
| 262 | end; | |
| 263 | ||
| 264 | procedure MainPointManager(Click: Boolean); | |
| 265 | begin | |
| 266 | ||
| 267 | DrawBitmap(CleanMap, MMap.Canvas, 0, 0); | |
| 268 | ||
| 269 | if Click then | |
| 270 | ObjectDTM.MainPoint := IntToPoint(X, Y); | |
| 271 | ||
| 272 | for I := 0 to High(SubPoints) do | |
| 273 | begin | |
| 274 | ||
| 275 | DrawCircle(SubPoints[i], 7, False, clLime); | |
| 276 | DrawLine(ObjectDTM.MainPoint, SubPoints[i], clWhite); | |
| 277 | end; | |
| 278 | ||
| 279 | for I := 0 to High(SubPoints) do | |
| 280 | DrawLine(IntToPoint(X, Y), SubPoints[i], clYellow); | |
| 281 | end; | |
| 282 | ||
| 283 | procedure PrintManager; | |
| 284 | var | |
| 285 | ObjectDTMString: String; | |
| 286 | begin | |
| 287 | ||
| 288 | ObjectDTMString := ObjDTMToString(ObjectDTM); | |
| 289 | ||
| 290 | OutPut.LINES.Clear; | |
| 291 | OutPut.LINES.Add(ObjectDTMString); | |
| 292 | ||
| 293 | ObjDTM_PrintToRec(ObjectDTMString); | |
| 294 | Writeln('');
| |
| 295 | WriteLn(ObjectDTMString); | |
| 296 | end; | |
| 297 | ||
| 298 | procedure MouseMove(Sender: TObject; S: TShiftState; mX, mY: Integer); | |
| 299 | begin | |
| 300 | ||
| 301 | X := mX; | |
| 302 | Y := mY; | |
| 303 | ||
| 304 | case Sender of | |
| 305 | ||
| 306 | MMap: | |
| 307 | begin | |
| 308 | ||
| 309 | if (PropertiesControl.ActivePageIndex = 1) then | |
| 310 | MainPointManager(False); | |
| 311 | end; | |
| 312 | end; | |
| 313 | end; | |
| 314 | ||
| 315 | procedure MouseClick(Sender: TObject); | |
| 316 | begin | |
| 317 | - | WriteLn('Bitch changed');
|
| 317 | + | |
| 318 | case Sender of | |
| 319 | ||
| 320 | MainFormButtons[0]: GatherMiniMap; | |
| 321 | MainFormButtons[1]: PrintManager; | |
| 322 | ||
| 323 | SubPointButtons[0]: GatherObject; | |
| 324 | - | Instructions.Items.Add('Instructions: Click ' + #39 + 'grab minimap' + #39 + ' to grab the current map view.');
|
| 324 | + | |
| 325 | - | Instructions.Items.Add('Select an object from the list and click ' + #39 + 'gather object' + #39 + ' to display');
|
| 325 | + | |
| 326 | begin | |
| 327 | ||
| 328 | case PropertiesControl.ActivePageIndex of | |
| 329 | ||
| 330 | 0: | |
| 331 | begin | |
| 332 | ||
| 333 | Instructions.Items.Clear; | |
| 334 | Instructions.Items.Add('Instructions: Select an object from the list and click ' + #39 + 'gather object' + #39 + ' to display');
| |
| 335 | Instructions.Items.Add('all instances of that object on the minimap.');
| |
| 336 | Instructions.Items.Add('click within circles to add or remove sub-points.');
| |
| 337 | end; | |
| 338 | ||
| 339 | 1: | |
| 340 | begin | |
| 341 | ||
| 342 | Instructions.Items.Clear; | |
| 343 | Instructions.Items.Add('Instructions: Displays current main-point of the Object DTM.');
| |
| 344 | Instructions.Items.Add('Mouse over a position and click to change the main-point.');
| |
| 345 | end; | |
| 346 | end; | |
| 347 | end; | |
| 348 | ||
| 349 | MMap: | |
| 350 | begin | |
| 351 | ||
| 352 | case PropertiesControl.ActivePageIndex of | |
| 353 | ||
| 354 | 0: SubPointManager; | |
| 355 | 1: MainPointManager(True); | |
| 356 | end; | |
| 357 | end; | |
| 358 | end; | |
| 359 | end; | |
| 360 | ||
| 361 | procedure ToolForm_Init; | |
| 362 | begin | |
| 363 | ||
| 364 | ToolForm := TForm.Create(nil); | |
| 365 | MMap := TImage.Create(TabSheet[0]); | |
| 366 | ObjectsList := TListBox.Create(TabSheet[0]); | |
| 367 | Instructions := TListBox.Create(TabSheet[0]); | |
| 368 | Output := TMemo.Create(TabSheet[0]); | |
| 369 | PropertyPanel := TPanel.Create(TabSheet[0]); | |
| 370 | ||
| 371 | PageControl := TPageControl.Create(ToolForm); | |
| 372 | - | PropertiesControl.OnChange := @MouseClick; |
| 372 | + | |
| 373 | PageControl.Width := 510; | |
| 374 | PageControl.Height := 330; | |
| 375 | PageControl.Caption := 'TabPageControl'; | |
| 376 | ||
| 377 | PropertiesControl := TPageControl.Create(ToolForm); | |
| 378 | PropertiesControl.Parent := PropertyPanel; | |
| 379 | PropertiesControl.Width := 210; | |
| 380 | PropertiesControl.Height := 160; | |
| 381 | PropertiesControl.Caption := 'PropertyPageControl'; | |
| 382 | //PropertiesControl.OnChange := @MouseClick; | |
| 383 | PropertiesControl.OnPageChanged := @MouseClick; | |
| 384 | ||
| 385 | for I := 0 to 3 do | |
| 386 | begin | |
| 387 | ||
| 388 | TabSheet[I] := TTabSheet.Create(PageControl); | |
| 389 | TabSheet[I].Parent := PageControl; | |
| 390 | TabSheet[I].PageControl := PageControl; | |
| 391 | end; | |
| 392 | ||
| 393 | TabSheet[0].Caption := 'single'; | |
| 394 | TabSheet[1].Caption := 'multi'; | |
| 395 | TabSheet[2].Caption := 'path'; | |
| 396 | TabSheet[3].Caption := 'multi-path'; | |
| 397 | ||
| 398 | for I := 0 to 2 do | |
| 399 | begin | |
| 400 | ||
| 401 | PropertySheet[I] := TTabSheet.Create(ToolForm); | |
| 402 | PropertySheet[I].Parent := PropertyPanel; | |
| 403 | PropertySheet[I].PageControl := PropertiesControl; | |
| 404 | end; | |
| 405 | ||
| 406 | PropertySheet[0].Caption := 'sub-points'; | |
| 407 | PropertySheet[1].Caption := 'main-point'; | |
| 408 | PropertySheet[2].Caption := 'area'; | |
| 409 | ||
| 410 | with PropertyPanel do | |
| 411 | begin | |
| 412 | Parent := TabSheet[0]; | |
| 413 | Left := 282; | |
| 414 | Top := 10; | |
| 415 | Caption := 'Object DTM Generation Tool - by euphemism'; | |
| 416 | Width := 210; | |
| 417 | Height := 160; | |
| 418 | end; | |
| 419 | ||
| 420 | for I := 0 to 1 do | |
| 421 | begin | |
| 422 | ||
| 423 | MainFormButtons[i] := TButton.Create(ToolForm); | |
| 424 | MainFormButtons[i].Parent := ToolForm; | |
| 425 | MainFormButtons[i].Width := 100; | |
| 426 | MainFormButtons[i].Height := 30; | |
| 427 | MainFormButtons[i].Top := 55 + (i * 34); | |
| 428 | MainFormButtons[i].Left := 176; | |
| 429 | end; | |
| 430 | ||
| 431 | with MainFormButtons[0] do | |
| 432 | begin | |
| 433 | ||
| 434 | Caption := 'grab minimap'; | |
| 435 | OnClick := @MouseClick; | |
| 436 | end; | |
| 437 | ||
| 438 | with MainFormButtons[1] do | |
| 439 | begin | |
| 440 | ||
| 441 | Caption := 'print object dtm'; | |
| 442 | OnClick := @MouseClick; | |
| 443 | end; | |
| 444 | ||
| 445 | with SubPointButtons[0] do | |
| 446 | begin | |
| 447 | ||
| 448 | SubPointButtons[0] := TButton.Create(ToolForm); | |
| 449 | Parent := PropertySheet[0]; | |
| 450 | Left := 102; | |
| 451 | Top := 4; | |
| 452 | Height := 30; | |
| 453 | Width := 100; | |
| 454 | ||
| 455 | Caption := 'gather object'; | |
| 456 | OnClick := @MouseClick; | |
| 457 | end; | |
| 458 | ||
| 459 | with ToolForm do | |
| 460 | begin | |
| 461 | Left := 430; | |
| 462 | Top := 174; | |
| 463 | Caption := 'Object DTM Generation Tool - by euphemism'; | |
| 464 | ClientWidth := 510; | |
| 465 | ClientHeight := 330; | |
| 466 | Color := 15790320; | |
| 467 | end; | |
| 468 | ||
| 469 | with MMap do | |
| 470 | begin | |
| 471 | Parent := TabSheet[0]; | |
| 472 | Left := 5; | |
| 473 | Top := 10; | |
| 474 | Width := 160; | |
| 475 | Height := 160; | |
| 476 | OnClick := @MouseClick; | |
| 477 | OnMouseMove := @MouseMove; | |
| 478 | end; | |
| 479 | ||
| 480 | with ObjectsList do | |
| 481 | begin | |
| 482 | Parent := PropertySheet[0]; | |
| 483 | Left := 0; | |
| 484 | Top := 4; | |
| 485 | Width := 100; | |
| 486 | Height := 127; | |
| 487 | ItemHeight := 13; | |
| 488 | Items.Add('Ladders');
| |
| 489 | Items.Add('Trees');
| |
| 490 | Items.Add('Dead Trees');
| |
| 491 | Items.Add('Plants');
| |
| 492 | Items.Add('Flax');
| |
| 493 | Items.Add('Boulders');
| |
| 494 | Items.Add('Henges');
| |
| 495 | Items.Add('Cacti');
| |
| 496 | Items.Add('Maple Trees');
| |
| 497 | Items.Add('Rocks');
| |
| 498 | end; | |
| 499 | ||
| 500 | with Instructions do | |
| 501 | begin | |
| 502 | Parent := TabSheet[0]; | |
| 503 | Left := 10; | |
| 504 | Top := 180; | |
| 505 | Width := 480; | |
| 506 | Height := 50; | |
| 507 | Items.Add('Instructions: Click ' + #39 + 'grab minimap' + #39 + ' to grab the current map view.');
| |
| 508 | Items.Add('Select an object from the list and click ' + #39 + 'gather object' + #39 + ' to display');
| |
| 509 | Items.Add('all instances of that object on the minimap.');
| |
| 510 | end; | |
| 511 | ||
| 512 | with Output do | |
| 513 | begin | |
| 514 | Parent := TabSheet[0]; | |
| 515 | Color := 16777215; | |
| 516 | Left := 10; | |
| 517 | Top := 235; | |
| 518 | Width := 480; | |
| 519 | Height := 55; | |
| 520 | end; | |
| 521 | ||
| 522 | CleanMap := BitmapFromString(160, 160, ''); | |
| 523 | CurrentMap := BitmapFromString(160, 160, ''); | |
| 524 | ||
| 525 | FloodFillBitmap(CleanMap, IntToPoint(0, 0), 0, 16777215); | |
| 526 | FloodFillBitmap(CurrentMap, IntToPoint(0, 0), 0, 16777215); | |
| 527 | ||
| 528 | SetBitmapName(CleanMap, 'Clean'); | |
| 529 | SetBitmapName(CurrentMap, 'Current'); | |
| 530 | ||
| 531 | DrawBitmap(CleanMap, MMap.Canvas, 0, 0); | |
| 532 | ||
| 533 | SubPoints := LoadTextTPA('Click ' + #39 + 'grab minimap' + #39, 'SmallChars', I);
| |
| 534 | OffSetTPA(SubPoints, IntToPoint(28, 62)); | |
| 535 | DrawDotsEx(SubPoints, 000000001); | |
| 536 | ||
| 537 | SubPoints := LoadTextTPA('to get client image', 'SmallChars', I);
| |
| 538 | OffSetTPA(SubPoints, IntToPoint(31, 79)); | |
| 539 | DrawDotsEx(SubPoints, 000000001); | |
| 540 | ||
| 541 | SetLength(SubPoints, 0); | |
| 542 | end; | |
| 543 | ||
| 544 | procedure ToolForm_SafeInit; | |
| 545 | var | |
| 546 | v: TVariantArray; | |
| 547 | begin | |
| 548 | SetLength(v, 0); | |
| 549 | ThreadSafeCall('ToolForm_Init', v);
| |
| 550 | end; | |
| 551 | ||
| 552 | function ToolForm_ShowModal: Boolean; | |
| 553 | begin | |
| 554 | Result := ToolForm.ShowModal = mrOk; | |
| 555 | end; | |
| 556 | - | SMART_Server := 10; |
| 556 | + | |
| 557 | - | SMART_Members := True; |
| 557 | + | |
| 558 | - | SMART_Signed := True; |
| 558 | + | |
| 559 | v: TVariantArray; | |
| 560 | begin | |
| 561 | SetLength(v, 0); | |
| 562 | Result := ThreadSafeCall('ToolForm_ShowModal', v);
| |
| 563 | end; | |
| 564 | ||
| 565 | begin | |
| 566 | ||
| 567 | {$IFDEF SMART}
| |
| 568 | SMART_Server := 10; | |
| 569 | SMART_Members := True; | |
| 570 | SMART_Signed := True; | |
| 571 | {$ENDIF}
| |
| 572 | ||
| 573 | SetupSRL; | |
| 574 | ObjDTM_Setup; | |
| 575 | ||
| 576 | ObjectDTM.MainPoint := IntToPoint(80, 80); | |
| 577 | ObjectDTM.NumOfPoints := 0; | |
| 578 | ObjectDTM.NumOfAreaPoints := 0; | |
| 579 | ||
| 580 | SetLength(ObjectDTM.SubPoints, ObjectDTM.NumOfPoints); | |
| 581 | SetLength(ObjectDTM.Area, ObjectDTM.NumOfAreaPoints); | |
| 582 | ||
| 583 | DeclarePlayers; | |
| 584 | ||
| 585 | if (not LoggedIn) then | |
| 586 | LoginPlayer; | |
| 587 | ||
| 588 | while (not RSReady) do | |
| 589 | Wait(500); | |
| 590 | ||
| 591 | ToolForm_SafeInit; | |
| 592 | ||
| 593 | if ToolForm_SafeShowModal then | |
| 594 | WriteLn('Form returned modalresult ok');
| |
| 595 | ||
| 596 | FreeBitmap(CleanMap); | |
| 597 | FreeBitmap(CurrentMap); | |
| 598 | end. |