public override void OnTick() { if (!Manager.ObjectManager.IsInGame) { return; } switch (CurrentState) { case GRState.Search: Print("Starting a new search for level {0}", CurrentLevelSearch); LastSearch = DateTime.Now; WoWScript.ExecuteNoResults("SendWho(\"" + CurrentLevelSearch + "\")"); TotalSearches++; CurrentState = GRState.Searching; break; case GRState.Searching: var span = DateTime.Now - LastSearch; if (span.TotalSeconds > 5) { Print("Last search didn't give any match after 5 seconds, maybe there are no characters in this level?"); CurrentLevelSearch++; CurrentState = GRState.Search; } break; case GRState.Invite: var searchResult = WoWScript.Execute("GetNumWhoResults()"); var shownResults = int.Parse(searchResult[0]); var totalResults = int.Parse(searchResult[1]); Print("Search returned {0} visible matches out of a total {1}", shownResults, totalResults); for (int i = 1; i <= shownResults; i++) { var searchInfo = WoWScript.Execute("GetWhoInfo(" + i + ")"); var charInfo = new WhoCharacterInfo() { Name = searchInfo[0], Guild = searchInfo[1], Level = int.Parse(searchInfo[2]), Race = searchInfo[3], Class = searchInfo[4], Zone = searchInfo[5] }; if (string.IsNullOrEmpty(charInfo.Guild) && !InvitedCharacters.ContainsKey(charInfo.Name)) { Print("Inviting {0} (Level {1} {2} {3})", charInfo.Name, charInfo.Level, charInfo.Race, charInfo.Class); //WoWScript.ExecuteNoResults("SendChatMessage(\"" + RecruitMessage + "\", \"WHISPER\", nil, \"" + charInfo.Name + "\")"); WoWScript.ExecuteNoResults("GuildInvite(\"" + charInfo.Name + "\")"); InvitedCharacters.Add(charInfo.Name, charInfo); } } CurrentState = GRState.Search; Sleep(5000); break; case GRState.Completed: Print("Stopping after {0} searches and {1} invites", TotalSearches, InvitedCharacters.Count); Stop(); break; } Sleep(500); }
public override void OnTick() { if (!Manager.ObjectManager.IsInGame) return; switch (CurrentState) { case GRState.Search: Print("Starting a new search for level {0}", CurrentLevelSearch); LastSearch = DateTime.Now; WoWScript.ExecuteNoResults("SendWho(\"" + CurrentLevelSearch + "\")"); TotalSearches++; CurrentState = GRState.Searching; break; case GRState.Searching: TimeSpan span = DateTime.Now - LastSearch; if (span.TotalSeconds > 5) { Print( "Last search didn't give any match after 5 seconds, maybe there are no characters in this level?"); CurrentLevelSearch++; CurrentState = GRState.Search; } break; case GRState.Invite: List<string> searchResult = WoWScript.Execute("GetNumWhoResults()"); int shownResults = int.Parse(searchResult[0]); int totalResults = int.Parse(searchResult[1]); Print("Search returned {0} visible matches out of a total {1}", shownResults, totalResults); for (int i = 1; i <= shownResults; i++) { List<string> searchInfo = WoWScript.Execute("GetWhoInfo(" + i + ")"); var charInfo = new WhoCharacterInfo { Name = searchInfo[0], Guild = searchInfo[1], Level = int.Parse(searchInfo[2]), Race = searchInfo[3], Class = searchInfo[4], Zone = searchInfo[5] }; if (string.IsNullOrEmpty(charInfo.Guild) && !InvitedCharacters.ContainsKey(charInfo.Name)) { Print("Inviting {0} (Level {1} {2} {3})", charInfo.Name, charInfo.Level, charInfo.Race, charInfo.Class); if (SendMessage) WoWScript.ExecuteNoResults("SendChatMessage(\"" + RecruitMessage + "\", \"WHISPER\", nil, \"" + charInfo.Name + "\")"); WoWScript.ExecuteNoResults("GuildInvite(\"" + charInfo.Name + "\")"); InvitedCharacters.Add(charInfo.Name, charInfo); } } CurrentState = GRState.Search; Sleep(5000); break; case GRState.Completed: Print("Stopping after {0} searches and {1} invites", TotalSearches, InvitedCharacters.Count); Stop(); break; } Sleep(500); }