Page 1 of 2 12 LastLast
Results 1 to 25 of 38

Thread: [UTILITY] Auto-Generated Color Walking

  1. #1
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default [UTILITY] Auto-Generated Color Walking


    Introduction

    Hello!

    I managed to finish this up tonight, and I can honestly say I'm proud at how well it's worked so far. I've automatically generated paths from VE bank to the mine and VE bank to the trees, and so far, they work perfectly. If anyone can think of a cool name to call this utility, I will love you forever.

    Description

    This is a scripting utility that automatically generates color walking points based off of reflection tiles. It uses the type that was created from Camaro's TPA walking function. The user simply loads a reflection path (with both endpoints included) and calls the proper procedures.

    Specifics
    • It's very, very simple actually. The most complicated part is generating the RadialWalkTolerance parameters, which is done using cosine law to determine the radials.

    • Saves the points generated to a file (WalkPoints.txt) in your includes folder. File path can be changed by changing the constant at the top of the script. File is saved after both paths (to and from the location) have been generated.

    • Loads all walk points saved in the file on start up so they can be easily accessed. Newly generated paths will be added to the file (doesn't delete old ones, just continues to add).

    • Testing the generated points is easily available with the ColorWalk function.


    How to use
    1. This was written in the assumption that you know how to script, otherwise you may have some trouble with it; however, I still think it's pretty easy.

    2. Get a reflection path by whatever means available. Set the path in DeclareTilePath(); Make sure you include both end points of the path, other wise you will get an error! What I mean by this is if you're making a path from Varrock East Bank to Varrock East Mine, the first point in your global path will be a tile that's IN the bank, and the last point in your path will be a tile that's IN the mine.

    3. Call CompletePath(); in the mainloop to generate both the path and it's inverse (both directions). It will Writeln() and save the end result. Comment/uncomment the path/inverse if you only want to generate one way (you'll need to do this if you want the naming to be correct).

    4. Call ColorWalk(); in the mainloop to test out your generated points. It will walk both directions. The parameters are the start and ending indexes (i.e. the section in the INI file).


    Conclusion

    All forms of feedback is appreciated. If you have any issues, don't be afraid to ask. If you're unsure about something, read the comments, I did comment quite a bit. If you'd like to test the two paths I've generated, download the attached text file to your includes folder and run the commented ColorWalks in the mainloop.

    Enjoy,
    Coh3n

    Simba Code:
    program AutoGenColorWalking;
    {$i srl/srl/misc/smart.scar}
    {$i srl/srl.scar}
    {$i reflection/reflection.simba}

    const
      MOUSE_TOL_X = 0;
      MOUSE_TOL_Y = 0;

      PATH_RECORD_WALKPOINT = IncludePath + 'WalkPoints.txt';

      PATH_NAME = 'VE Trees to Bank ';

    type
      TWalkPoint = record
        Name        : string;
        Color       : Integer;
        Tolerance   : Integer;
        SortFrom    : TPoint;
        RWalkParams : TIntegerArray;
      end;

      TWalkPointArray = array of TWalkPoint;

    var
      gbl_WalkPoints: array of TWalkPoint;
      gbl_TilePath: TPointArray;

    procedure DeclareTilePath();
    begin
    {
      // VE Bank to Mine
      gbl_TilePath := [
                        Point(3254, 3421), Point(3265, 3429),
                        Point(3279, 3429), Point(3288, 3418),
                        Point(3292, 3406), Point(3292, 3393),
                        Point(3294, 3381), Point(3288, 3368)
                      ];
    }

      // VE Bank to Trees
      gbl_TilePath := [
                        Point(3253, 3421), Point(3265, 3428),
                        Point(3275, 3429), Point(3280, 3439),
                        Point(3276, 3450)
                      ];

    end;

    // Converts a string to an integer array; for example, StrToIntArr([1, 2, 3, 4]) will result [1, 2, 3, 4]
    function StrToIntArr(Str: string): TIntegerArray;
    var
      i: Integer;
      s: TStringArray;
    begin
      if (Str = '') then
        Exit;

      s := Explode(', ', Str);

      for i := 0 to High(s) do
        try
          SetLength(Result, Length(Result) + 1);
          Result[High(Result)] := StrToInt(s[i]);
        except
        end;
    end;

    function IntArrToStr(Int: TIntegerArray): string;
    var
      i: Integer;
    begin
      if (Length(Int) <= 0) then
      begin
        Result := '';
        Exit;
      end;

      for i := 0 to High(Int) do
        if (i = High(Int)) then
          Result := Result + IntToStr(Int[i])
        else
          Result := Result + IntToStr(Int[i]) + ', ';
    end;

    procedure ClearFile(FilePath: string);
    var
      f: Integer;
    begin
      try
        f := RewriteFile(FilePath, False);
        CloseFile(f);
      except
      end;
    end;

    // Loads all the walk points from the WalkPoints.txt file
    procedure LoadAllWalkPoints();
    var
      i: Integer;
    begin
      if (not FileExists(PATH_RECORD_WALKPOINT)) then
        Exit;

      SetLength(gbl_WalkPoints, StrToInt(ReadINI('POINT_COUNT', 'PointCount', PATH_RECORD_WALKPOINT)));

      for i := 0 to High(gbl_WalkPoints) do
        with gbl_WalkPoints[i] do
        begin
          Name := ReadINI(IntToStr(i), 'Name', PATH_RECORD_WALKPOINT);
          Color := StrToInt(ReadINI(IntToStr(i), 'Color', PATH_RECORD_WALKPOINT));
          Tolerance := StrToInt(ReadINI(IntToStr(i), 'Tolerance', PATH_RECORD_WALKPOINT));
          SortFrom.x := StrToInt(ReadINI(IntToStr(i), 'SortFrom.x', PATH_RECORD_WALKPOINT));
          SortFrom.y := StrToInt(ReadINI(IntToStr(i), 'SortFrom.y', PATH_RECORD_WALKPOINT));
          RWalkParams := StrToIntArr(ReadINI(IntToStr(i), 'RWalkParams', PATH_RECORD_WALKPOINT));
        end;
    end;

    // Saves all the points to a file
    procedure SaveAllWalkPoints();
    var
      i: Integer;
    begin
      ClearFile(PATH_RECORD_WALKPOINT);

      WriteINI('POINT_COUNT', 'PointCount', IntToStr(Length(gbl_WalkPoints)), PATH_RECORD_WALKPOINT);

      for i := 0 to High(gbl_WalkPoints) do
        with gbl_WalkPoints[i] do
        begin
          WriteINI(IntToStr(i), 'Name', Name, PATH_RECORD_WALKPOINT);
          WriteINI(IntToStr(i), 'Color', IntToStr(Color), PATH_RECORD_WALKPOINT);
          WriteINI(IntToStr(i), 'Tolerance', IntToStr(Tolerance), PATH_RECORD_WALKPOINT);
          WriteINI(IntToStr(i), 'SortFrom.x', IntToStr(SortFrom.x), PATH_RECORD_WALKPOINT);
          WriteINI(IntToStr(i), 'SortFrom.y', IntToStr(SortFrom.y), PATH_RECORD_WALKPOINT);
          WriteINI(IntToStr(i), 'RWalkParams', IntArrToStr(RWalkParams), PATH_RECORD_WALKPOINT);
        end;
    end;

    // Works like DeleteValueInIntArr, except for a TWalkPointArray
    // Used to delete the first point in a reflection path as that's where your player is
    procedure RemoveIndex(var Arr: TWalkPointArray; Index: Integer);
    var
      arrLen, i: Integer;
    begin
      arrLen := High(Arr);

      for i := Index to (arrLen - 1) do
        Swap(Arr[i], Arr[i + 1]);

      SetLength(Arr, arrLen);
    end;

    // Simple wait for the flag and yes it's supposed to wait until it's completely gone
    // it ensures the walk point data is colleted accurately
    procedure WaitFlag();
    begin
      while (WaitFunc(@CharacterMoving, 50, 1500)) do
      begin
        Wait(100 + Random(50));
        if (not FlagPresent) then
          Break;
      end;

      Wait(1000 + Random(500));
    end;

    // Returns the quadrant the point 'p' is in on the minimap
    function GetQuadrant(p: TPoint): Integer;
    var
      i : Integer;
      quadrants: array[1..4] of TBox;
    begin
      // Initiate the 4 differen quadrants
      quadrants[1] := IntToBox(MMCX, MMY1, MMX2, MMCY); // Top Right
      quadrants[2] := IntToBox(MMX1, MMY1, MMCX, MMCY); // Top Left
      quadrants[3] := IntToBox(MMX1, MMCY, MMCX, MMY2); // Bottom Left
      quadrants[4] := IntToBox(MMCX, MMCY, MMX2, MMY2); // Bottom Right

      // Get the quadrant the point 'p' is in; set it as 'quad'
      for i := 1 to 4 do
        if (PointInBox(p, quadrants[i])) then
        begin
          Result := i;
          Break;
        end;
    end;

    // Gets the radial for any point 'p' on the minimap using Cosine Law
    function GetRadial(p: TPoint): Integer;
    var
      sides: array[1..3] of Integer;
      radCos: Extended;
    begin
      sides[1] := 30;
      sides[2] := Distance(MMCX, MMCY, p.x, p.y);
      sides[3] := Distance(MMCX, MMCY - sides[1], p.x, p.y);

      radCos := (Sqr(sides[1]) + Sqr(sides[2]) - Sqr(sides[3])) / (2 * sides[1] * sides[2]);

      Result := Round(Degrees(ArcCos(radCos)));

      case GetQuadrant(p) of
        2, 3: Result := 360 - Result;
        1, 4: Result := Result;
      end;

      Writeln('Radial: ' + IntToStr(Result) + ' degrees');
    end;

    // Creates the actual TWalkPoint basied on the tile 'Tile'
    function GenerateWalkPoint(Tile: TPoint): TWalkPoint;
    var
      mm_Point: TPoint;
      mm_Radial: Integer;
    begin
      mm_Point := TileToMM(Tile);

      if (not rs_OnMinimap(mm_Point.x, mm_Point.y)) then
      begin
        Writeln('GenerateWalkPoint: Point not on minimap');
        Exit;
      end;

      mm_Radial := GetRadial(Point(mm_Point.x, mm_Point.y));

      with Result do
      begin
        Name := PATH_NAME;
        Color := GetColor(mm_Point.x, mm_Point.y);
        Tolerance := 20;
        SortFrom := Point(mm_Point.x, mm_Point.y);

        RWalkParams := [
            Color,                                             // Color
            mm_Radial - 10,                                    // Start Radial
            mm_Radial + 10,                                    // End Radial
            Distance(MMCX, MMCY, mm_Point.x, mm_Point.y) + 10, // Radius
            RandomRange(-2, 2),                                // Mod X
            RandomRange(-2, 2),                                // Mod Y
            10                                                 // Tolerance
        ];

        // If the start radial is less than 0
        if (RWalkParams[1] < 0) then
          RWalkParams[1] := 360 + RWalkParams[1];

        // If the end radial is greater than 360
        if (RWalkParams[2] > 360) then
          RWalkParams[2] := RWalkParams[2] - 360;
      end;

      Writeln('GenerateWalkPoint: Point Generated!');
    end;

    // Generates a TWalkPointArray based on the reflection path (Tiles)
    function GeneratePath(Tiles: TPointArray): TWalkPointArray;
    var
      i: Integer;
      mm_Point: TPoint;
    begin
      SetLength(Result, Length(Tiles));

      for i := 1 to High(Tiles) do
      begin
        Result[i] := GenerateWalkPoint(Tiles[i]);
        Result[i].Name := Result[i].Name + IntToStr(i);

        mm_Point := TileToMM(Tiles[i]);
        Mouse(mm_Point.x, mm_Point.y, MOUSE_TOL_X, MOUSE_TOL_Y, True);
        WaitFlag();
      end;

      RemoveIndex(Result, 0);
    end;

    // Prints the path to the debug box
    procedure PrintPath(WalkPoints: TWalkPointArray);
    var
      i: Integer;
    begin
      Writeln('case Index of');
      for i := 0 to High(WalkPoints) do
        with WalkPoints[i] do
        begin
          Writeln('  ' + IntToStr(i) + ':');
          Writeln('    with gbl_WalkPoints[Index] do');
          Writeln('    begin');
          Writeln('      Name := ' + Name + ''''';');
          Writeln('      Color := ' + IntToStr(Color) + ';');
          Writeln('      Tolerance := ' + IntToStr(Tolerance) + ';');
          Writeln('      SortFrom := Point(' + IntToStr(SortFrom.x) + ', ' + IntToStr(SortFrom.y) + ');');
          Writeln('      RWalkParams := ' + ToStr(RWalkParams) + ';');
          Writeln('    end;');
          Writeln('');
        end;
      Writeln('end;');
    end;

    // Camaro's TPA function
    function GetWalkCoords(WalkPoint: TWalkPoint): TPoint;
    var
      i, x, y: Integer;
      TPA: TPointArray;
    begin
      Result := Point(-1, -1);

      with WalkPoint do
      begin
        FindColorsSpiralTolerance(MMCX, MMCY, TPA, Color, MMX1, MMY1, MMX2, MMY2, Tolerance);
        SortTPAFrom(TPA, SortFrom);

        for i := 0 to High(TPA) do
        begin
          x := TPA[i].x;
          y := TPA[i].y;

          if (not rs_OnMinimap(x, y)) then
            Continue;

          Result := Point(x, y);
          Break;
        end;
      end;
    end;

    // Walks from StartIndex to EndIndex
    function ColorWalk(StartIndex, EndIndex: Integer): Boolean;
    var
      i: Integer;
      mm_Point: TPoint;
    begin
      for i := StartIndex to EndIndex do
      begin
        mm_Point := GetWalkCoords(gbl_WalkPoints[i]);

        if ((mm_Point.x <> -1) and (mm_Point.y <> -1)) then
        begin
          Mouse(mm_Point.x, mm_Point.y, 3, 3, True);
          WaitFlag;

          Result := (i = EndIndex);
        end else begin
          Writeln('Failed to walk to point: ' + IntToStr(i));

          if (RadialWalkTolerance(gbl_WalkPoints[i].RWalkParams[0],
                                  gbl_WalkPoints[i].RWalkParams[1],
                                  gbl_WalkPoints[i].RWalkParams[2],
                                  gbl_WalkPoints[i].RWalkParams[3],
                                  gbl_WalkPoints[i].RWalkParams[4],
                                  gbl_WalkPoints[i].RWalkParams[5],
                                  gbl_WalkPoints[i].RWalkParams[6])) then
            Result := (i = EndIndex);
        end;
      end;
    end;

    // Reverses the TPA so the same reflection path can be used to generate both color paths
    // Taken straight from MSI
    function MirrorTPA(TPA: TPointArray): TPointArray;
    var
      i, h: integer;
    begin
      h := 0;
      SetLength(Result, Length(TPA));
      for i:= High(TPA) DownTo 0 do
      begin
        Result[h] := TPA[i];
        Inc(h);
      end;
    end;

    // Adds 'Points' to the global array gbl_WalkPoints
    procedure AddToGlobal(Points: TWalkPointArray);
    var
      i: Integer;
    begin
      for i := 0 to High(Points) do
      begin
        SetLength(gbl_WalkPoints, Length(gbl_WalkPoints) + 1);
        gbl_WalkPoints[High(gbl_WalkPoints)] := Points[i];
      end;
    end;

    // Generates and prints the path/reverse path of the relfection tiles
    procedure CompletePath();
    begin
      AddToGlobal(GeneratePath(gbl_TilePath));
      AddToGlobal(GeneratePath(MirrorTPA(gbl_TilePath)));

      PrintPath(gbl_WalkPoints);
      SaveAllWalkPoints();
    end;

    begin
      Smart_Server := 152;
      Smart_Members := False;
      Smart_Signed := True;
      Smart_SuperDetail := False;
      ActivateClient;

      SetupSRL;
      SetupReflection;

      ClearDebug;
      DeclareTilePath();
      LoadAllWalkPoints();

      CompletePath();

      //ColorWalk(0, 3); // VE Bank to Trees
      //ColorWalk(4, 7); // VE Trees to Bank
    end.
    Last edited by Coh3n; 06-22-2011 at 12:04 PM.

  2. #2
    Join Date
    Aug 2007
    Location
    Hawaii
    Posts
    3,880
    Mentioned
    7 Post(s)
    Quoted
    152 Post(s)

    Default

    So basically we get the tile points using reflection. Then this auto color's everything flawlessly? If so AMAZING
    Faith is an oasis in the heart which will never be reached by the caravan of thinking.

  3. #3
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by kingarabian View Post
    So basically we get the tile points using reflection. Then this auto color's everything flawlessly? If so AMAZING
    That's the idea; although, I'm sure there are some flaws as I've only done two paths and I'm sure there are situations where something could go wrong.

  4. #4
    Join Date
    Jan 2007
    Posts
    8,876
    Mentioned
    123 Post(s)
    Quoted
    327 Post(s)

    Default

    Woah, great job Coh3n!
    Will spare people for A LOT of work! rep+

  5. #5
    Join Date
    May 2007
    Location
    Some where fun.
    Posts
    2,891
    Mentioned
    1 Post(s)
    Quoted
    5 Post(s)

    Default

    How come Simba keeps sending me access violations? I tried pausing and running when I was logged on which ended up debugging 'Generated Path' or something under those lines, but Simba gave that access violation and close. Where should I put the .simba file?

    Edit: The error it gives is it navigates to the animation file in the SRL include.

    Also, how cool would it be if it could use the world map
    Last edited by Camaro'; 01-18-2011 at 10:10 PM.

  6. #6
    Join Date
    Jul 2007
    Location
    Right now? Chair.
    Posts
    8,488
    Mentioned
    3 Post(s)
    Quoted
    12 Post(s)

    Default

    Add to Scripting Tools in SRL 5?

    ~RM

    I & I know Zion. It is in the spirit, body and mind of every one of us
    RMouse(obj: TMSIObject): boolean;

  7. #7
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by Camaro' View Post
    How come Simba keeps sending me access violations? I tried pausing and running when I was logged on which ended up debugging 'Generated Path' or something under those lines, but Simba gave that access violation and close. Where should I put the .simba file?

    Edit: The error it gives is it navigates to the animation file in the SRL include.

    Also, how cool would it be if it could use the world map
    Animation.scar throws the error? I honestly don't think I use any methods from there.

    I had the file in Simba/Scripts, but it shouldn't matter. Also, I thought about the world map, but I'm not sure if the colors would work as well since they do change every time you login and I'm assuming the world map colors remain constant.

    Quote Originally Posted by Sir R. Magician View Post
    Add to Scripting Tools in SRL 5?

    ~RM
    I suppose it could be, if people will actually use it.

  8. #8
    Join Date
    May 2007
    Location
    Some where fun.
    Posts
    2,891
    Mentioned
    1 Post(s)
    Quoted
    5 Post(s)

    Default

    Quote Originally Posted by Coh3n View Post
    Animation.scar throws the error? I honestly don't think I use any methods from there.

    I had the file in Simba/Scripts, but it shouldn't matter. Also, I thought about the world map, but I'm not sure if the colors would work as well since they do change every time you login and I'm assuming the world map colors remain constant.


    I suppose it could be, if people will actually use it.
    Yea, I set the path I got from the MSI Scripts file, (varrock east oaks). Put it in the scripts folder, paused simba until I logged in in the varrock bank, and played. It said 'Generated...' or something, and walked one click toward the oaks and simba opened up the animation file and froze
    Last edited by Camaro'; 01-18-2011 at 10:36 PM.

  9. #9
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by Camaro' View Post
    Yea, I set the path I got from the MSI Scripts file, (varrock east oaks). Put it in the scripts folder, paused simba until I logged in in the varrock bank, and played. It said 'Generated Path' or something, and simba opened up the animation file and froze
    Hmm try getting rid of the IsMoving in WaitFlag. I don't see why this would happen for you.
    Last edited by Coh3n; 01-18-2011 at 10:41 PM.

  10. #10
    Join Date
    May 2007
    Location
    Some where fun.
    Posts
    2,891
    Mentioned
    1 Post(s)
    Quoted
    5 Post(s)

    Default

    Quote Originally Posted by Coh3n View Post
    Hmm try getting rid of the IsMoving in WaitFlag. I don't see why this would happen for you.
    I haven't even opened simba in awhile before this. Frustrating

    Anyone else test this?

  11. #11
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by Camaro' View Post
    I haven't even opened simba in awhile before this. Frustrating

    Anyone else test this?
    Just try commenting out where it calls IsMoving.. That's the only thing in Animation.scar that's called. If that's not your problem then I have no idea.

  12. #12
    Join Date
    Sep 2006
    Location
    New Jersey, USA
    Posts
    5,347
    Mentioned
    1 Post(s)
    Quoted
    3 Post(s)

    Default

    Name it after yourself! This is a wonderful tool, repped
    Interested in C# and Electrical Engineering? This might interest you.

  13. #13
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by Smartzkid View Post
    Name it after yourself! This is a wonderful tool, repped
    I'm glad you like it!

    And I wanted an awesome, cleaver name. I'm terrible at coming up with something like that. I could always do Coh3n's something, but the problem is coming up with the "something".

  14. #14
    Join Date
    May 2007
    Location
    Some where fun.
    Posts
    2,891
    Mentioned
    1 Post(s)
    Quoted
    5 Post(s)

    Default

    Will try ( If I remember ) after school

    Edit:

    I edited IsMoving with CharacterMoving(reflection). Simba and smart did not freeze at all, but at the end of the path I get this error.
    Simba Code:
    GenerateWalkPoint: Point Generated!
    Radial: 98 degrees
    GenerateWalkPoint: Point Generated!
    Error: Out Of Range at line 363
    The following DTMs were not freed: [SRL - Lamp bitmap, 1]
    The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap]
    File[G:\Documents and Settings\Owner\Desktop\Simba\Simba\Includes\SRL/logs/SRL log 19-01-11 0.txt] has not been freed in the script, freeing it now.

    on the line

    Simba Code:
    // Adds 'Points' to the global array gbl_WalkPoints
    procedure AddToGlobal(Points: TWalkPointArray);
    var
      i: Integer;
    begin
      for i := 0 to High(Points) do
      begin
        SetLength(gbl_WalkPoints, Length(gbl_WalkPoints) + 1);
        gbl_WalkPoints[High(gbl_WalkPoints)] := Points[i];//here
      end;
    end;

    Last edited by Camaro'; 01-20-2011 at 03:51 AM.

  15. #15
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Found and fixed the error. Also fixed an issue with loading previously saved points. And I added a Name constant that will name each point. It will be NAME + the number of the point on the path. See the text file if you don't know what I mean.

  16. #16
    Join Date
    Mar 2007
    Posts
    1,700
    Mentioned
    0 Post(s)
    Quoted
    8 Post(s)

    Default

    Would like to see this implemented, good job!

  17. #17
    Join Date
    Dec 2010
    Posts
    808
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Cog3n
    Co = Color
    g3n = generator
    :P

    -Boom

  18. #18
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by lordsaturn View Post
    Would like to see this implemented, good job!
    Thanks.

    Quote Originally Posted by Dynamite View Post
    Cog3n
    Co = Color
    g3n = generator
    :P

    -Boom
    Hm, that's actually not too bad.

  19. #19
    Join Date
    Dec 2006
    Location
    Copy pastin to my C#
    Posts
    3,788
    Mentioned
    8 Post(s)
    Quoted
    29 Post(s)

    Default

    This is a scripting utility that automatically generates color walking points based off of reflection tiles.
    Generating color walking points based off reflection tiles is silly, if reflection is up and you use it, you might aswell use it for everything. Unless the reflection is just for the generator and the rest works with color only...

  20. #20
    Join Date
    Oct 2007
    Location
    #srl
    Posts
    6,102
    Mentioned
    39 Post(s)
    Quoted
    62 Post(s)

    Default

    Quote Originally Posted by n3ss3s View Post
    Generating color walking points based off reflection tiles is silly, if reflection is up and you use it, you might aswell use it for everything. Unless your using it to automatically update records for MSI's color paths.
    Fits better that way.

  21. #21
    Join Date
    Sep 2008
    Location
    Not here.
    Posts
    5,422
    Mentioned
    13 Post(s)
    Quoted
    242 Post(s)

    Default

    Quote Originally Posted by n3ss3s View Post
    Generating color walking points based off reflection tiles is silly, if reflection is up and you use it, you might aswell use it for everything. Unless the reflection is just for the generator and the rest works with color only...
    Its just the generator.

  22. #22
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Yeah, the idea was to create the color walking so it works on it's own.

  23. #23
    Join Date
    Mar 2009
    Location
    Ireland
    Posts
    111
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    How about:

    BUTTFACe Walking

    Bitches Use This Thing For Awesome ColourEd Walking

    heh, it was the first thing that came to mind, and i tweaked it to make some sense

    ~mc_teo

  24. #24
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by mc_teo View Post
    How about:

    BUTTFACe Walking

    Bitches Use This Thing For Awesome ColourEd Walking

    heh, it was the first thing that came to mind, and i tweaked it to make some sense

    ~mc_teo
    Lol.

    Just so everyone knows, this is now in MSI (not sure how much longer it will be there, but it's there now), if you were interested in testing some more paths.

  25. #25
    Join Date
    Feb 2011
    Location
    London
    Posts
    19
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    This is a bloody awesome idea
    I might have a mess around with this in a future script i'm making!

Page 1 of 2 12 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •