Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 70e5665633 | |||
| f9d96dbbd4 | |||
| 071cb87015 |
@@ -0,0 +1,139 @@
|
|||||||
|
package engine;
|
||||||
|
|
||||||
|
import engine.InterestManagement.WorldGrid;
|
||||||
|
import engine.gameManager.BuildingManager;
|
||||||
|
import engine.gameManager.ChatManager;
|
||||||
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.objects.*;
|
||||||
|
import engine.server.MBServerStatics;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
public class PlayerAi {
|
||||||
|
public static ArrayList<PlayerCharacter> ai_players = new ArrayList<>();
|
||||||
|
|
||||||
|
public static void addPlayer(PlayerCharacter pc){
|
||||||
|
ai_players.add(pc);
|
||||||
|
int index = ai_players.indexOf(pc);
|
||||||
|
pc.setObjectUUID(MBServerStatics.NO_DB_ROW_ASSIGNED_YET - (1 + index));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void populate_world(){
|
||||||
|
for(Mine mine : Mine.getMines()){
|
||||||
|
Building tower = BuildingManager.getBuildingFromCache(mine.getBuildingID());
|
||||||
|
if(tower != null){
|
||||||
|
for(int i = 0; i < mine.capSize; i++){
|
||||||
|
addPlayer(createPlayer(tower));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PlayerCharacter createPlayer(Building tower){
|
||||||
|
|
||||||
|
Vector3fImmutable loc = Vector3fImmutable.getRandomPointOnCircle(tower.loc,40f);
|
||||||
|
|
||||||
|
//get random race
|
||||||
|
Race race = null;
|
||||||
|
while(race == null) {
|
||||||
|
int raceId = ThreadLocalRandom.current().nextInt(1999, 2030);
|
||||||
|
while (raceId == 2021 || raceId == 2020 || raceId == 2019 || raceId == 2018) {
|
||||||
|
raceId = ThreadLocalRandom.current().nextInt(1999, 2030);
|
||||||
|
}
|
||||||
|
race = Race.getRace(raceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//get random baseClass
|
||||||
|
BaseClass baseClass = null;
|
||||||
|
while(baseClass == null) {
|
||||||
|
int baseId = ThreadLocalRandom.current().nextInt(2499, 2505);
|
||||||
|
BaseClass temp = BaseClass.getBaseClass(baseId);
|
||||||
|
if (temp == null || !race.getValidBaseClasses().contains(temp)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
baseClass = BaseClass.getBaseClass(baseId);
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerCharacter newPLayer = new PlayerCharacter("", "AI POWERED", (short) 5, (short) 5, (short) 5, (short) 5,
|
||||||
|
(short) 5, Guild.getGuild(5), (byte) 0, (Account) null, race, baseClass
|
||||||
|
, (byte) 1, (byte) 1,
|
||||||
|
(byte) 1, (byte) 1, (byte) 1);
|
||||||
|
|
||||||
|
newPLayer.runAfterLoad();
|
||||||
|
|
||||||
|
if(newPLayer.isMale()) {
|
||||||
|
newPLayer.setFirstName(getMaleName());
|
||||||
|
}else {
|
||||||
|
newPLayer.setFirstName(getFemaleName());
|
||||||
|
}
|
||||||
|
|
||||||
|
newPLayer.setLevel((short)10);
|
||||||
|
|
||||||
|
PromotionClass promo = null;
|
||||||
|
while(promo == null){
|
||||||
|
int promoId = ThreadLocalRandom.current().nextInt(2508,2526);
|
||||||
|
PromotionClass temp = PromotionClass.GetPromtionClassFromCache(promoId);
|
||||||
|
if(temp == null)
|
||||||
|
continue;
|
||||||
|
if(!temp.isAllowedRune(race.getToken()))
|
||||||
|
continue;
|
||||||
|
if(!temp.isAllowedRune(baseClass.getToken()))
|
||||||
|
continue;
|
||||||
|
promo = PromotionClass.GetPromtionClassFromCache(promoId);
|
||||||
|
}
|
||||||
|
newPLayer.setPromotionClass(promo.getObjectUUID());
|
||||||
|
newPLayer.setLevel((short)75);
|
||||||
|
|
||||||
|
newPLayer.setLoc(loc);
|
||||||
|
|
||||||
|
newPLayer.setObjectTypeMask(MBServerStatics.MASK_PLAYER);
|
||||||
|
WorldGrid.addObject(newPLayer,loc.x,loc.z);
|
||||||
|
|
||||||
|
return newPLayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void run_ai_players() {
|
||||||
|
for (PlayerCharacter pc : ai_players) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMaleName(){
|
||||||
|
String[] maleNames = {
|
||||||
|
"James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph", "Thomas", "Charles",
|
||||||
|
"Christopher", "Daniel", "Matthew", "Anthony", "Mark", "Donald", "Steven", "Paul", "Andrew", "Joshua",
|
||||||
|
"Kenneth", "Kevin", "Brian", "George", "Edward", "Ronald", "Timothy", "Jason", "Jeffrey", "Ryan",
|
||||||
|
"Jacob", "Gary", "Nicholas", "Eric", "Jonathan", "Stephen", "Larry", "Justin", "Scott", "Brandon",
|
||||||
|
"Benjamin", "Samuel", "Gregory", "Alexander", "Patrick", "Frank", "Raymond", "Jack", "Dennis", "Jerry",
|
||||||
|
"Tyler", "Aaron", "Jose", "Adam", "Nathan", "Henry", "Douglas", "Zachary", "Peter", "Kyle",
|
||||||
|
"Walter", "Ethan", "Jeremy", "Harold", "Keith", "Christian", "Roger", "Noah", "Gerald", "Carl",
|
||||||
|
"Terry", "Sean", "Austin", "Arthur", "Lawrence", "Jesse", "Dylan", "Bryan", "Joe", "Jordan",
|
||||||
|
"Billy", "Bruce", "Albert", "Willie", "Gabriel", "Logan", "Alan", "Juan", "Wayne", "Roy",
|
||||||
|
"Ralph", "Randy", "Eugene", "Vincent", "Russell", "Louis", "Philip", "Bobby", "Johnny", "Bradley"
|
||||||
|
};
|
||||||
|
|
||||||
|
Random random = new Random();
|
||||||
|
return maleNames[random.nextInt(maleNames.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getFemaleName(){
|
||||||
|
String[] femaleNames = {
|
||||||
|
"Mary", "Patricia", "Jennifer", "Linda", "Elizabeth", "Barbara", "Susan", "Jessica", "Sarah", "Karen",
|
||||||
|
"Nancy", "Lisa", "Betty", "Margaret", "Sandra", "Ashley", "Kimberly", "Emily", "Donna", "Michelle",
|
||||||
|
"Carol", "Amanda", "Melissa", "Deborah", "Stephanie", "Rebecca", "Laura", "Sharon", "Cynthia", "Kathleen",
|
||||||
|
"Amy", "Shirley", "Angela", "Helen", "Anna", "Brenda", "Pamela", "Nicole", "Samantha", "Katherine",
|
||||||
|
"Christine", "Debra", "Rachel", "Catherine", "Carolyn", "Janet", "Ruth", "Maria", "Heather", "Diane",
|
||||||
|
"Virginia", "Julie", "Joyce", "Victoria", "Kelly", "Christina", "Lauren", "Joan", "Evelyn", "Judith",
|
||||||
|
"Olivia", "Frances", "Martha", "Cheryl", "Megan", "Andrea", "Hannah", "Jacqueline", "Ann", "Gloria",
|
||||||
|
"Jean", "Kathryn", "Alice", "Teresa", "Sara", "Janice", "Doris", "Madison", "Julia", "Grace",
|
||||||
|
"Judy", "Abigail", "Marie", "Denise", "Beverly", "Amber", "Theresa", "Marilyn", "Danielle", "Diana",
|
||||||
|
"Brittany", "Natalie", "Sophia", "Rose", "Isabella", "Alexis", "Kayla", "Charlotte", "Faith", "Alyssa"
|
||||||
|
};
|
||||||
|
|
||||||
|
Random random = new Random();
|
||||||
|
return femaleNames[random.nextInt(femaleNames.length)];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,12 @@
|
|||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
|
import engine.Enum;
|
||||||
|
import engine.InterestManagement.WorldGrid;
|
||||||
|
import engine.PlayerAi;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.math.Vector3fImmutable;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.*;
|
||||||
|
import engine.server.MBServerStatics;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,12 +28,25 @@ public class RebootCmd extends AbstractDevCmd {
|
|||||||
protected void _doCmd(PlayerCharacter pc, String[] args,
|
protected void _doCmd(PlayerCharacter pc, String[] args,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
|
|
||||||
try {
|
//try {
|
||||||
Runtime rt = Runtime.getRuntime();
|
// Runtime rt = Runtime.getRuntime();
|
||||||
rt.exec("./mbrestart.sh");
|
// rt.exec("./mbrestart.sh");
|
||||||
} catch (java.io.IOException err) {
|
//} catch (java.io.IOException err) {
|
||||||
Logger.info(err.getMessage());
|
// Logger.info(err.getMessage());
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
PlayerCharacter newPLayer = new PlayerCharacter("AiPlayer", "AI POWERED", (short) 5, (short) 5, (short) 5, (short) 5,
|
||||||
|
(short) 5, Guild.getErrantGuild(), (byte) 0, (Account) null, Race.getRace(1999), BaseClass.getBaseClass(2500)
|
||||||
|
, (byte) 1, (byte) 1,
|
||||||
|
(byte) 1, (byte) 1, (byte) 1);
|
||||||
|
|
||||||
|
newPLayer.runAfterLoad();
|
||||||
|
newPLayer.setLoc(pc.loc);
|
||||||
|
|
||||||
|
newPLayer.setObjectTypeMask(MBServerStatics.MASK_PLAYER);
|
||||||
|
WorldGrid.addObject(newPLayer,pc.loc.x,pc.loc.z);
|
||||||
|
//WorldGrid.updateObject(newPLayer);
|
||||||
|
PlayerAi.addPlayer(newPLayer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ public abstract class AbstractGameObject {
|
|||||||
return this.objectUUID;
|
return this.objectUUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setObjectUUID(int objectUUID) {
|
public void setObjectUUID(int objectUUID) {
|
||||||
this.objectUUID = objectUUID;
|
this.objectUUID = objectUUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -618,6 +618,8 @@ public abstract class AbstractWorldObject extends AbstractGameObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public GridObjectType getGridObjectType() {
|
public GridObjectType getGridObjectType() {
|
||||||
|
if(gridObjectType == null)
|
||||||
|
gridObjectType = GridObjectType.DYNAMIC;
|
||||||
return gridObjectType;
|
return gridObjectType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import engine.Enum.SupportMsgType;
|
|||||||
import engine.InterestManagement.HeightMap;
|
import engine.InterestManagement.HeightMap;
|
||||||
import engine.InterestManagement.RealmMap;
|
import engine.InterestManagement.RealmMap;
|
||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
|
import engine.PlayerAi;
|
||||||
import engine.db.archive.DataWarehouse;
|
import engine.db.archive.DataWarehouse;
|
||||||
import engine.exception.MsgSendException;
|
import engine.exception.MsgSendException;
|
||||||
import engine.gameManager.*;
|
import engine.gameManager.*;
|
||||||
@@ -530,6 +531,8 @@ public class WorldServer {
|
|||||||
Logger.info("Starting Player Update Thread");
|
Logger.info("Starting Player Update Thread");
|
||||||
UpdateThread.startUpdateThread();
|
UpdateThread.startUpdateThread();
|
||||||
|
|
||||||
|
Logger.info("Spawnign AI Players");
|
||||||
|
PlayerAi.populate_world();
|
||||||
|
|
||||||
printThreads();
|
printThreads();
|
||||||
Logger.info("Threads Running:");
|
Logger.info("Threads Running:");
|
||||||
|
|||||||
Reference in New Issue
Block a user