View difference between Paste ID: VihQRE9n and EG2b5Xjn
SHOW: | | - or go back to the newest paste.
1
using System;
2
using System.Drawing;
3
using System.Threading;
4
using System.Collections.Generic;
5
using System.Linq;
6
using ArcheBuddy.Bot.Classes;
7
using System.Windows.Forms;
8
using System.Threading.Tasks;
9
using System.Net;
10
using System.IO;
11
using System.Text;
12
using System.ComponentModel;
13
14
namespace DefaultNameSpace{
15
   public class DefaultClass : Core
16
   {
17
       public static string GetPluginAuthor()
18
       {
19
           return "Gajda";
20
       }
21
22
       public static string GetPluginVersion()
23
       {
24
           return "1.3.0";
25
       }
26
27
       public static string GetPluginDescription()
28
       {
29
           return "mining bot";
30
       }
31
       private Gps gps; 
32
       //Call on plugin start
33
       public void PluginRun()
34
       {
35
           ClearLogs();
36
           Log(DateTime.Now.ToLongTimeString() + " : Start");
37
           gps = new Gps(this); 
38
           gps.LoadDataBase(Application.StartupPath + "\\Plugins\\Mining\\mine.db3");
39
           DoMineRun();
40
           
41
       }            
42
       
43
       public List<DoodadObject> Sort(List<DoodadObject> tempitems)
44
       {    
45
           Log(DateTime.Now.ToLongTimeString() + " : I see " + tempitems.Count + " items");   
46
           List<DoodadObject> items = new List<DoodadObject>();
47
           for(int i=0;i<tempitems.Count;i++)
48
           {
49-
               if(tempitems[i].name.Contains("Iron") && (tempitems[i].dist(me)<20) &! tempitems[i].name.Contains("Remnant") )
49+
               if(tempitems[i].name.EndsWith(" Vein") && (tempitems[i].dist(me)<20) && !tempitems[i].name.Contains("Remnant") )
50
                    items.Add(tempitems[i]);
51
           }
52
            Log(DateTime.Now.ToLongTimeString() + " : I see " + items.Count + " usable  item(s)");   
53
           bool needSort = true;
54
           if(items.Count<2)
55
               needSort = false;
56
           int loop      = 1;
57
           while(needSort)
58
           {   
59
               Log(DateTime.Now.ToLongTimeString() + " : sorting run " + loop);
60
               bool changed = false;
61
               for(int i=0;i<items.Count-1;i++)
62
               {                         
63
                   
64
                   if(items[i].dist(me)>items[i+1].dist(me))
65
                   {                          
66
                       var tempItem = items[i]; 
67
                       items[i]=items[i+1];
68
                       items[i+1]=tempItem;
69
                       changed = true;
70
                   }                   
71
               }
72
               if(changed==false)
73
               {
74
                   needSort = false;
75
               }
76
               loop++ ;
77
           }   
78
           return   items;
79
       }
80
       
81
       public void DoMineRun()
82
      {         
83
          // i<11 is for route with 10 mining spots
84
          for(int i=1;i<14;i++)
85
           {                   
86
                CheckAggro();
87
                Log(DateTime.Now.ToLongTimeString() + " : movint to point " + i.ToString()); 
88
                UseSkill("Dash");    
89
                while(!gps.GpsMove(i.ToString()))
90
                {
91
                    Thread.Sleep(100);
92
                }
93
                Log(DateTime.Now.ToLongTimeString() + " : at point " + i.ToString());     
94
                CheckAggro();
95
                while(Mine())
96
                {
97
                    Thread.Sleep(100);
98
                }
99
		while(Mine())
100
                {
101
                    Thread.Sleep(100);
102
                }
103
           }                    
104
           CheckAggro();
105
           Log(DateTime.Now.ToLongTimeString() + " : moving to start");
106
           gps.GpsMove("1");                                      
107
           CheckAggro();            
108
           Random rnd = new Random();
109
           int wait   = rnd.Next(15,21);  
110
           wait       = wait*1000;
111
           Log(DateTime.Now.ToLongTimeString() + " : wait " + wait.ToString());
112
           Thread.Sleep(wait);           
113
           CheckAggro();
114
           DoMineRun();
115
      }
116
       public bool Mine()
117
       {            
118
           Log(DateTime.Now.ToLongTimeString() + " : looking for Iron Vein ; Fortune Vein");
119
           bool mined = false;
120
           List<DoodadObject> items = Sort(getDoodads());
121
           Log(DateTime.Now.ToLongTimeString() + " : founded " + items.Count);
122
           foreach(var doodad in items)
123
           {
124-
               if(doodad.name.Contains("ein") && (doodad.dist(me)<20) &! doodad.name.Contains("Remnant") )
124+
125
           }
126
           foreach(var doodad in items)
127
           {               
128
               if(doodad.name.EndsWith(" Vein") && (doodad.dist(me)<20) &! doodad.name.Contains("Remnant") )
129
               {             
130
                   mined = true;
131
                   Log(DateTime.Now.ToLongTimeString() +  " : " + doodad.name + " " + doodad.id.ToString() + "  " + doodad.dist(me));     
132
                   var skills            = doodad.getUseSkills(); 
133
                   double doodadCastDist = 0;
134
                    if (skills.Count > 0)
135
                    {
136
                        if (doodadCastDist == 0)  
137
                        {
138
                            Thread.Sleep(500);
139
                            Log(DateTime.Now.ToLongTimeString() + " : mining");
140
                            TurnDirectly(doodad);
141
                            UseDoodadSkill(skills[0].id, doodad, true);
142
                        }
143
                        Thread.Sleep(1000);
144
                    }
145
                }     
146
            }
147
            return mined;
148
       }
149
  
150
        public void CheckAggro()
151
        {                     
152
            Log(DateTime.Now.ToLongTimeString() + " : CheckAggro");
153
            if(getAggroMobs().Count > 0)
154
            {         
155
                Log(DateTime.Now.ToLongTimeString() + " : " + getAggroMobs().Count.ToString());
156
                foreach(var obj in  getAggroMobs())
157
                {   
158
                    Log(DateTime.Now.ToLongTimeString() + " : " + obj.name);    
159
                    SetTarget(obj);
160
                    TurnDirectly(me.target);
161
                    Log(DateTime.Now.ToLongTimeString() + " : fighting");
162
                    while(obj.isAlive())
163
                    {        
164
                        TurnDirectly(me.target);
165
                        if(skillCooldown("Freezing Arrow")==0)
166
                        {
167
                            Log(DateTime.Now.ToLongTimeString() + " Freezing arrow"); 
168
                            UseSkill("Freezing Arrow", false);
169
                            Thread.Sleep(100);
170
                        }
171
                        else
172
                        {
173
                            if(skillCooldown("Crippling Mire")==0)
174
                            {
175
                                    Log(DateTime.Now.ToLongTimeString() + " Crippling Mire"); 
176
                                    UseSkill("Crippling Mire",false);
177
                                    Thread.Sleep(100);
178
                            }
179
                            else
180
                            { 
181
                                if(skillCooldown("Flamebolt")==0)  
182
                                {    
183
                                    Log(DateTime.Now.ToLongTimeString() + " Flame Bolt"); 
184
                                    UseSkill("Flamebolt",false);
185
                                    Thread.Sleep(100);
186
                                }
187
                            }
188
                        }
189
                        if(!obj.inFight)
190
                            return;
191
                    }
192
                    Log(DateTime.Now.ToLongTimeString() + " : fight is over");
193
                }
194
            } 
195
        }        
196
       
197
       public void PluginStop()
198
       {
199
       }
200
   }
201
}