Jump to content
SubSpace Forum Network

prozaker

Member
  • Posts

    16
  • Joined

  • Last visited

Everything posted by prozaker

  1. prozaker

    Notepad

    I use notepad++ too i use VIM and gvim too when i feel like remembering 1 letter commands
  2. America is a continent. get your shit right.
  3. i think the terrier just needs some textures.
  4. i recommend the novel's openoffice for more compatibility with office 2007
  5. prozaker

    signatures

    i stole them all kid.
  6. you could try mirroring half the warbird so it ends up simetrical, otherwise u will end up with quite a few problems.
  7. nice layout. the boxes that have rounded corners, could be improved may i suggest: http://www.htmlremix.com/css/curved-corner-border-radius-cross-browser. it degrades nicely to square corners.
  8. maybe I'm late, but hirens boot cd comes with acronis disk director, which is pretty good. hirens is a set of utilities to troubleshoot and fix windows computers and under 100 mb. I wouldnt use qparted or gparted it doesn't handle ntfs partitions very good, happend to me on 2 occasions trying to resize and move a winxp partition. everything got corrupted.
  9. I've only worked with wordpress and joomla. I didint used to like joomla, because it didn't use to validate, but now, it seems they acknowledged that. I think it's a good cms. lots of extensions and not a lot of sec issues.
  10. since the fusion site went down, and i cant edit my other post, im putting the source code here. its a functional bot, but needs adjustments. any help i can be contacted via a ?message proz good luck package twcore.bots.multibot.baseduel; import twcore.bots.MultiModule; import twcore.core.BotAction; import twcore.core.EventRequester; import twcore.core.events.FrequencyShipChange; import twcore.core.events.FrequencyChange; import twcore.core.events.Message; import twcore.core.events.PlayerEntered; import twcore.core.events.PlayerLeft; import twcore.core.events.PlayerDeath; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import twcore.core.game.Player; import twcore.core.util.ModuleEventRequester; import twcore.core.events.PlayerPosition; import java.util.Random; import java.util.TimerTask; //import java.util.Formatter; //import twcore.core.BotSettings; //import java.io.File; //import twcore.core.events.LoggedOn; //import java.util.Map; //import java.util.HashMap; //import twcore.core.*; //import java.util.Iterator; //import twcore.core.game.Arena; //import twcore.core.game.Ship; //import twcore.core.util.Tools; //import twcore.core.command.TWCoreException; //baseduel extension by Proz from SSCI FUSION, SSCU Redstar, and Extreme Games zones. public class baseduel extends MultiModule{ //playingFreqs contains the freqs challenged or in duel. public static HashSet <Short> playingFreqs = new HashSet<Short>(); //playingIds holds the name of the players challenged or currently dueling. public static HashSet <Short> playingIds = new HashSet<Short>(); //defines which bases are playing public static Set <Short> playingBases = Collections.synchronizedSet(new HashSet<Short>()); //has the freqs currently challenged public static HashSet <Short> chsFreqs = new HashSet<Short>(); //baseduel base object array BaseDuelBase base[] = new BaseDuelBase[13]; //challenge freqs control object chFreqs challenge[] = new chFreqs[13]; //bot frequency holder public Short botFreq; //TODO: should be changed to centerbase and generate a random position between the centerbase safe limits. public final int[] center = {512,416};//{500,510};//{514,398}; public final int[] graveyard={512,512};//{510,690};// public static HashSet <Short> idsAllowedToJoin = new HashSet<Short>(); //see int []center public final int[] centerBase={}; //center safe square, format is {x1,y1,x2,y2} public static final int[] centerSafe={503,505,520,520};//{503,682,520,697}; //{502,496,524,522}; /*all of the coordinates for the playing bases, if a new base needs to be added it should be done here. TODO:basecoord could be parameterized so it could be read from a file.*/ public static final int[][] basecoord={ /*{724,201,699,201}, {842,438,827,453}, {686,730,686,686}, {476,874,552,874}, {286,675,344,736}, {150,416,218,487}, {322,219,290,172}, {532,97,486,97} */ {482,127,543,127}, {650,154,709,212}, {769,277,850,262}, {841,403,841,488}, {818,656,863,656}, {725,800,752,800}, {492,855,531,855}, {303,820,271,774}, {191,647,144,610}, {94,446,195,446}, {140,297,245,243}, {342,157,357,191}, {570,736,454,736}}; public String botName; //total of bases available final int totalbases=(basecoord.length); public void requestEvents(ModuleEventRequester events) { events.request(this, EventRequester.PLAYER_DEATH); events.request(this, EventRequester.FREQUENCY_CHANGE); events.request(this, EventRequester.PLAYER_LEFT); events.request(this, EventRequester.FREQUENCY_SHIP_CHANGE); events.request(this, EventRequester.ARENA_JOINED); events.request(this, EventRequester.PLAYER_ENTERED); events.request(this, EventRequester.PLAYER_POSITION); events.request(this, EventRequester.PLAYER_LEFT); //events.request(this, EventRequester.MESSAGE); // req.request(EventRequester.PLAYER_LEFT); // req.request(EventRequester.PLAYER_DEATH); // req.request(EventRequester.PRIZE); // req.request(EventRequester.SCORE_UPDATE); // req.request(EventRequester.WEAPON_FIRED); // req.request(EventRequester.FREQUENCY_CHANGE); // req.request(EventRequester.FREQUENCY_SHIP_CHANGE); } public void init() { //m_botAction.setPlayerPositionUpdating( 100 ); m_botAction.sendArenaMessage("Base duel loaded with "+String.valueOf(totalbases)+" bases"); botName = m_botAction.getBotName(); /*TODO: read bot settings from a file. * Random generator = new Random(); int totalBases = m_botAction.getBotSettings().getInt("totalbases"); m_botAction.getBotSettings().getInt("base"+Integer.toString(baseNum)); String coreRoot = m_botAction.getGeneralSettings().getString( "Core Location"); BotSettings cfg = new BotSettings(coreRoot+"/twcore/bots/twbot/"+"baseduel.cfg"); int totalBases = cfg.getInt("totalbases"); **/ /* }*/ } /** * Handles players position information. */ public void handleEvent(PlayerPosition event){ // posX and posY stores the player's position. int posX=(event.getXLocation())/16; int posY=(event.getYLocation())/16; Short nameid=event.getPlayerID(); if(nameid!=null){ Short freq= m_botAction.getPlayer(nameid).getFrequency(); //this checks if player is in the graveyard. if ((posX>=centerSafe[0])&&(posX<=centerSafe[2])&& (posY>=centerSafe[1])&&(posY<=centerSafe[3])){ if (baseduel.playingIds.contains(nameid)==false){ m_botAction.warpTo(nameid, center[0], center[1]); } if (baseduel.playingIds.contains(nameid)==true){ checkOtherPositions(posX,posY,freq,nameid); } }else{ checkOtherPositions(posX,posY,freq,nameid); } } } /** * Handles messages. */ public void handleEvent( Message event ) { if(event.getMessageType() == Message.PUBLIC_MESSAGE) { String name = m_botAction.getPlayerName( event.getPlayerID() ); String message = event.getMessage(); if(name!=null){ handleCommand(name,message); } } if(event.getMessageType()==Message.PRIVATE_MESSAGE){ String name = m_botAction.getPlayerName( event.getPlayerID() ); String message = event.getMessage(); if(name!=null){ handlePrivateCommand(name,message); } } } /** * Triggered when a player enters the arena. */ public void handleEvent(PlayerEntered event) { Short nameid = event.getPlayerID(); if (baseduel.playingIds.contains(nameid)==false){ String name = m_botAction.getPlayerName(event.getPlayerID()); if(name!=null){ m_botAction.sendPrivateMessage(nameid,"Welcome to baseduel arena, for help, type !duelhelp"); } //m_botAction.sendPrivateMessage(nameid,"REMEMBER THIS IS STILL ON DEVELOPMENT FOR MORE INFO GO TO"); //m_botAction.sendPrivateMessage(nameid,"http://ss-fusion.com/phpBB3/viewtopic.php?f=3&t=1689 -Proz"); } } /** * This event is triggered when the player leaves the arena, in case the player left a duel, * his id is removed from the playing list. */ public void handleEvent(PlayerLeft event){ Short nameid = event.getPlayerID(); if (baseduel.playingIds.contains(nameid)){ if(nameid!=null){ baseduel.playingIds.remove(nameid); checkEmptyFreqs(nameid); removeIdFromDuel(nameid); } } } /** * This is triggered on a death, it might be the wrong way to handle it, i think im missing * handleling nulls when getting the player information. */ public void handleEvent(PlayerDeath event){ Short DeathId=event.getKilleeID(); Short killerId=event.getKillerID(); int i=0; for(i=0;i<totalbases;i++){ if(base[i]!=null){ if (base[i].hasId(DeathId)){ if(DeathId!=null&&killerId!=null){ base[i].addKill(killerId, DeathId); } break; } } } } /** * Triggered when the player changes ship and might change frequency. * in the event that the player might spec, it removes its name from the list, and * checks for empty frequencies. */ public void handleEvent(FrequencyShipChange event) { Short nameid = event.getPlayerID(); Short freq; int ship=m_botAction.getPlayer(Integer.valueOf(nameid)).getShipType(); freq = m_botAction.getPlayer(Integer.valueOf(nameid)).getFrequency(); if (baseduel.playingIds.contains(nameid)==false){ String name = m_botAction.getPlayerName(event.getPlayerID()); m_botAction.warpTo(name, center[0], center[1]); }else if(baseduel.playingIds.contains(nameid)==true&&ship==0){ playingIds.remove(nameid); if(nameid!=null){ checkEmptyFreqs(nameid); removeIdFromDuel(nameid); } } int j=0; for (j=0;j<challenge.length;j++){ if ((challenge[j]!=null)&&(ship==0)){ if(nameid!=null){ if (challenge[j].hasId(nameid)){ challenge[j].cancelDuel(nameid); break; } } } } } /** * If a player changes frequencies during a duel, it removes its name from the list, and checks for * empty frequencies. */ public void handleEvent(FrequencyChange event){ Short nameid = event.getPlayerID(); Short freq; freq = m_botAction.getPlayer(Integer.valueOf(nameid)).getFrequency(); if(playingFreqs.contains(freq)&&(idsAllowedToJoin.contains(nameid)==false)){ m_botAction.spec(nameid); m_botAction.spec(nameid); m_botAction.setFreq(nameid, botFreq); m_botAction.sendPrivateMessage(nameid, "Frequency is engaged in a duel and its currently locked"); }else{ if(playingIds.contains(nameid)){ playingIds.remove(nameid); m_botAction.warpTo(nameid, center[0], center[1]); } } //check if someone leaves a playing freq so playing bases and freqs are scrapped if(nameid!=null){ checkEmptyFreqs(nameid); removeIdFromDuel(nameid); } int j=0; for (j=0;j<challenge.length;j++){ if (challenge[j]!=null){ if (challenge[j].hasId(nameid)){ challenge[j].cancelDuel(nameid); break; } if(challenge[j].hasFreq(freq)){ challenge[j].cancelDuel3(); break; } } } } /** * when a player leaves a frequency, this verifies if the player's previous frequency is left empty. * if so, it will award the opposing freq a win. * @param nameid */ private void checkEmptyFreqs(Short nameid){ int x=0; for (x=0;x<totalbases;x++){ if (base[x]!=null){ base[x].emptyFreqCheck(nameid); } } } private void removeIdFromDuel(Short nameid){ int x=0; for (x=0;x<totalbases;x++){ if (base[x]!=null){ if(base[x].hasId(nameid)==true){ base[x].deleteid(nameid); } } } } /** * This is for smods and up, it makes the bot say something. (filters ! and * commands for security * reasons). * * @param name the player who initiated the message. * @param message the message that the bot will say. */ public void handlePrivateCommand( String name, String message){ if( (message.startsWith( "!say " )&& m_botAction.getOperatorList().isModerator(name))){ if((message.startsWith( "!say !" ))||(message.startsWith( "!say *" ))){ //m_botAction.warnPlayer(name, "No ! or * commands "); m_botAction.sendPrivateMessage(name, "command ignored"); }else{ message=message.substring(5, message.length()); m_botAction.sendPublicMessage(message); //m_botAction.sendSmartPrivateMessage("Proz", name+" " + message); } } if( (message.startsWith( "!j " )) || (message.startsWith( "!J " )) ){ Short nameId = (short)m_botAction.getPlayerID(name); Short joinFreq=null; try{ joinFreq = Short.valueOf(message.substring(3)); //m_botAction.sendPublicMessage(String.valueOf(joinFreq)); joinDuel(nameId, joinFreq); }catch (NumberFormatException e){ m_botAction.sendSmartPrivateMessage(name, "The command requires the number of a frequency to join ex: :"+ m_botAction.getBotName() +":!j 0"); } finally{ } } } public void joinDuel(Short id, Short freq){ int x=0; for (x=0;x<totalbases;x++){ if (base[x]!=null){ if(base[x].hasFreq(freq)==true){ base[x].addPlayer(id, freq); } } } } /** * * @param name the player who initiated the message * @param message */ public void handleCommand( String name, String message) { Short nameId = (short)m_botAction.getPlayerID(name); //this returns the scores for the current duels. if(message.toLowerCase().contentEquals("!s") || message.toLowerCase().contentEquals("!score")){ int x=0; boolean atLeastOneDuel=false; for (x=0;x<totalbases;x++){ if (base[x]!=null){ base[x].baseDuelInfo(nameId); atLeastOneDuel=true; } } if(atLeastOneDuel==false){ m_botAction.sendPrivateMessage(nameId, "No Current Duels"); } } //!r rejects a duel if(message.toLowerCase().contentEquals("!r")){ Short freq2=m_botAction.getPlayer(name).getFrequency(); int j=0; Short freq1; boolean freqFound=false; for (j=0;j<challenge.length;j++){ if (challenge[j]!=null){ if (challenge[j].hasFreq(freq2)){ freq1=challenge[j].otherFreq(freq2); challenge[j].cancelDuel2(); freqFound=true; m_botAction.sendOpposingTeamMessageByFrequency(freq1, "Duel rejected"); m_botAction.sendOpposingTeamMessageByFrequency(freq2, "Duel rejected"); break; } } } if(freqFound==false){ m_botAction.sendSmartPrivateMessage(name, "No pending Duels."); } } //accepts a duel and sends the frequency information to initbase method. if(message.toLowerCase().contentEquals("!a")){ Short freq2=m_botAction.getPlayer(name).getFrequency(); int j=0; Short freq1; boolean freqFound=false; for (j=0;j<challenge.length;j++){ if (challenge[j]!=null){ if (challenge[j].hasFreq2(freq2)){ freq1=challenge[j].acceptDuel(freq2); initBase(freq1,freq2); freqFound=true; m_botAction.sendOpposingTeamMessageByFrequency(freq1, "Duel Accepted"); m_botAction.sendOpposingTeamMessageByFrequency(freq2, "Duel Accepted"); break; } } } if(freqFound==false){ m_botAction.sendSmartPrivateMessage(name, "No pending Duels."); } } //Smods+ only, !clears, resets all of the duels data, this was for testing purposes, but may be used if someone gets stuck if( (message.startsWith( "!clear" )&& m_botAction.getOperatorList().isSmod(name))){ baseduel.playingIds.clear(); baseduel.playingFreqs.clear(); baseduel.playingBases.clear(); int x; for (x=0;x<totalbases;x++){ base[x]=null; } m_botAction.sendPrivateMessage(name, "all clear." ); m_botAction.sendPrivateMessage(name, name ); } //Sends messages with command and other information. if( message.startsWith( "!duelhelp" )){ String[] spam = {"!ch <name> - challenge someone to a duel", "!a - Used after your team is challenged to accept duel", "!r - Used after your team is challenged to reject duel", "!s - Shows current Duel scores", ":"+botName + ":!j <freq> - Joins an existing duel, where <freq> is the frequency to join", "(Baseduel Bot extension by Proz)"}; m_botAction.smartPrivateMessageSpam(name, spam); //Here is where challenges get handdled } else if( message.startsWith( "!ch")&&(message.length()>=5)) { String player2 = m_botAction.getFuzzyPlayerName(message.substring(4)); //get the challenged player name Short freq1=m_botAction.getPlayer(name).getFrequency();//get the first player's freq /* * TODO: i should get the bot's frequency in the beginning, */ botFreq = m_botAction.getPlayer(m_botAction.getBotName()).getFrequency(); Short nameId2 = (short)m_botAction.getPlayerID(player2);// gets the challenged players id if((player2!=null)){ //check that the player is present in the arena Short freq2=m_botAction.getPlayer(player2).getFrequency(); if ( (name!=player2)&& (freq1.equals(botFreq)==false)&& (m_botAction.getPlayer(name).getShipType() != 0)&& (baseduel.playingFreqs.contains(freq1)==false )&& (baseduel.playingIds.contains(nameId)==false)&& (player2!=null)&& (m_botAction.getPlayer(player2).getShipType() != 0)&& (baseduel.playingIds.contains(nameId2)==false)&& (freq2.equals(botFreq)==false)&& (player2.length()>0)&& (freq1.equals(freq2)==false)&& (baseduel.playingFreqs.contains(freq2)==false)&& (baseduel.chsFreqs.contains(freq1)==false)&& (baseduel.chsFreqs.contains(freq2)==false) ) { challenge(freq1,freq2); }else if ((m_botAction.getPlayer(name).getFrequency()==botFreq)|| (m_botAction.getPlayer(name).getShipType() == 0)){ m_botAction.sendSmartPrivateMessage(name, "Only non-speccing players may challenge."); }else if (baseduel.playingFreqs.contains(m_botAction.getPlayer(name).getFrequency())==true ){ m_botAction.sendSmartPrivateMessage(name, "You are already engaged in a duel."); }else if((baseduel.playingIds.contains((short)nameId2)==true) ||(playingIds.contains((short)nameId)==true)){ m_botAction.sendSmartPrivateMessage(name, "Only players not engaged in a duel may (be) challenged."); }else if (name==player2){ m_botAction.sendSmartPrivateMessage(name, "you cannot challenge yourself."); }else if(freq2.equals(botFreq)){ m_botAction.sendSmartPrivateMessage(name, "Cannot challenge speccing players."); }else if (baseduel.chsFreqs.contains(freq1)){ m_botAction.sendSmartPrivateMessage(name, "You already challenged someone else."); }else if (baseduel.chsFreqs.contains(freq2)){ m_botAction.sendSmartPrivateMessage(name, "Freq Already challenged."); }else if(freq1.equals(freq2)){ m_botAction.sendSmartPrivateMessage(name, "Cannot challenge players on your frequency."); }else { m_botAction.sendArenaMessage(botFreq.toString()+ " " + freq2.toString()); } } else { if (message.length()>=18){message=message.substring(0, 17)+"...";} m_botAction.sendSmartPrivateMessage(name, "Player "+(message.substring(4))+" not found."); } } } private void challenge (Short freq1, Short freq2){ String allF1PlayerNames=""; String allF2PlayerNames=""; String delimiter=""; chsFreqs.add(freq1); chsFreqs.add(freq2); Iterator<Player> i = BotAction.getBotAction().getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if( freq1.equals(p.getFrequency())){ if (allF1PlayerNames.length()!=0){ delimiter=", "; }else{ delimiter=""; } allF1PlayerNames=allF1PlayerNames+delimiter+ p.getPlayerName(); } if (freq2.equals(p.getFrequency())){ if (allF2PlayerNames.length()!=0){ delimiter=", "; }else{ delimiter=""; } allF2PlayerNames=allF2PlayerNames+delimiter+ p.getPlayerName(); } } m_botAction.sendOpposingTeamMessageByFrequency(freq1, "Your team: "+allF1PlayerNames+" have challenged "+allF2PlayerNames+" they have 20 secs to accept"); m_botAction.sendOpposingTeamMessageByFrequency(freq2, "Your team: "+allF2PlayerNames+" has been challenged by "+allF1PlayerNames+" type !a to accept or !r to reject, duel will time out in 20 seconds "); int j=0; for (j=0;j<challenge.length;j++){ if (challenge[j]==null){ challenge[j]= new chFreqs(); challenge[j].addfreqs(freq1, freq2, j); break; } } } public void initBase(Short freq1, Short freq2 ){ Random randomgen = new Random(); Short x = (short)randomgen.nextInt(totalbases); while (baseduel.playingBases.contains(x)==true){ if (x!=0){ x=0; } x++; } if(baseduel.playingBases.size()==totalbases){ m_botAction.sendOpposingTeamMessageByFrequency(freq1, "no" + " bases available" + "for duel - please try again when a base is available."); m_botAction.sendOpposingTeamMessageByFrequency(freq2, "no" + " bases available" + "for duel"); }else if(baseduel.playingBases.contains(x)==false){ base[x]= new BaseDuelBase(); baseduel.playingBases.add(x); base[x].matchStart(x,freq1,freq2); } } public void initBase(Short freq1, Short freq2, Short BaseNum ){ if (baseduel.playingBases.contains(BaseNum)==true){ m_botAction.sendOpposingTeamMessageByFrequency(freq1, "Base is already in use "); }else{ if(baseduel.playingBases.size()==totalbases){ m_botAction.sendOpposingTeamMessageByFrequency(freq1, "no" + " bases available" + "for duel - please try again when a base is available."); m_botAction.sendOpposingTeamMessageByFrequency(freq2, "no" + " bases available" + "for duel"); }else if(baseduel.playingBases.contains(BaseNum)==false){ base[BaseNum]= new BaseDuelBase(); baseduel.playingBases.add(BaseNum); base[BaseNum].matchStart(BaseNum,freq1,freq2); } } } public void checkOtherPositions(int posX,int posY, Short freq, Short nameid){ int num=playerIsBaseSafe(nameid,posX,posY); if(num>=0){ if (base[num]!=null){ base[num].baseSafe((short)freq, posX, posY); } } if(checkFreqIsSafe((short)freq)==true){ num=CheckForFreq(freq); if((num!=-1)){ if (base[num].playingStatus()==true){ base[num].centerSafe(freq); } return; } } } public boolean checkFreqIsSafe(Short freq){ Short freqTotal=(short)(m_botAction.getFrequencySize(freq)); Short playersInSafe=0; Iterator<Player> i = m_botAction.getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if(freq.equals(p.getFrequency())){ if ((p.getXTileLocation()>=centerSafe[0])&&(p.getXTileLocation()<=centerSafe[2])&& (p.getYTileLocation()>=centerSafe[1])&&(p.getYTileLocation()<=centerSafe[3])){ playersInSafe++; if (playersInSafe.equals(freqTotal)){ playersInSafe=0; return true; } } } } playersInSafe=0; return false; } /** * * @param playerId is the id of the player * @param x is the xtile position of the player * @param y is the ytile position of the player * @return */ public int playerIsBaseSafe(int playerId, int x, int y){ int i=0; for (i=0;i<totalbases;i++){ if (((x==basecoord[i][0])&&(y==basecoord[i][1]))|| ((x==basecoord[i][2])&&(y==basecoord[i][3]))) { return i; } } return -1; } /** * Returns the number of the base that contains the frequency. * If it returns -1 then no base has frequency * @param freq * @return */ public Short CheckForFreq(Short freq){ int x=0; for (x=0;x<totalbases;x++){ if (base[x]!=null){ if(base[x].hasFreq((short)freq)==true){ if (base[x].playingStatus()==true){ return (short)x; } else{ return -1; } } } } return -1; } /** * Removes the playing id's of the players in the duel. * removes both frequencies. * sets the baseduel base object to null. * and warps freqs to center. * @param num ( number of the base to kill.) * @param f1 * @param f2 */ public void killBase(int num, Short f1, Short f2){ base[num].deleteIds(); playingBases.remove((short)num); playingFreqs.remove(f1); playingFreqs.remove(f2); base[num]=null; m_botAction.warpFreqToLocation(Integer.valueOf(f1),center[0], center[1]); m_botAction.warpFreqToLocation(Integer.valueOf(f2),center[0], center[1]); } /** * * @param num Challenge number * @param f1 Frequency that initiated the challange * @param f2 Frequency that was challenged */ public void killchallenge(int num, Short f1, Short f2){ challenge[num]=null; chsFreqs.remove(f1); chsFreqs.remove(f2); } public String[] getHelpMessages() { String[] help = { "!duelhelp - this message.", "!help - same message as duel help", "!score - lists all current duels and their score", "!ch <name> - challenge someone to a baseduel for 5 rounds ", "BaseDuel extension version 0.9.1 - by Proz" }; return help; } public void cancel() { } public boolean isUnloadable(){ return true; } public String[] getModHelpMessage() { String[] help = { //"!manual - Toggles a few automatic hosting features on or off (default is on)", }; return help; } /** * Baseduelbase holds the information relative to a duel occurring in a base. * @author Proz * */ public class BaseDuelBase { //Num holds the base number private int Num; private int Round=1; private boolean playing=false; private boolean matchOver=false; private boolean matchStarted=false; private Short freq1; private Short freq2; private int freq1size; private int freq1InitSize; private int freq2size; private int freq2InitSize; private String allF1PlayerNames=""; private String allF2PlayerNames=""; private HashSet <Short> freq1Players = new HashSet<Short>(); private HashSet <Short> freq2Players = new HashSet<Short>(); private int freq1wins=0; private int freq2wins=0; private int freq1Losses; private int freq2Losses; private int safe[]={0,0,0,0}; private int f1x; private int f1y; private int f2x; private int f2y; private boolean freq1InSafe; private boolean freq2InSafe; playerData pdata[]= new playerData[30]; //TimerTask updateState; public class playerData{ private int id; private int kills; private int deaths; private int spree; private String name; public void initPlayerData(int newid){ id=newid; kills=0; deaths=0; spree=0; name = BotAction.getBotAction().getPlayerName(id); } public int getId(){ return id; } public int getKills(){ return kills; } public void addKill(){ kills++; spree++; checkSpree(); } public int getDeaths(){ return deaths; } public void addDeath(){ deaths++; spree=0; } public void checkSpree(){ if (spree%10==0&&spree!=0){ BotAction.getBotAction().sendArenaMessage( name + " is on a " + String.valueOf(spree)+" spree"); } } } public void baseDuelInfo(Short playerID){ getCurrentNames(); if(allF1PlayerNames.length()>19){ allF1PlayerNames=allF1PlayerNames.substring(0, 20)+"..."; } if(allF2PlayerNames.length()>19){ allF2PlayerNames=allF2PlayerNames.substring(0, 20)+"..."; } if(playerID!=null){ m_botAction.sendPrivateMessage(playerID,allF1PlayerNames+" ("+ String.valueOf(freq1wins)+" points) vs " + allF2PlayerNames+ " ("+ String.valueOf(freq2wins)+" points)"+ ", base "+ String.valueOf(Num+1) ); } //m_botAction.sendPrivateMessage(playerID,"-"); } public boolean playingStatus(){ return playing; } /** * will return if match has started. * @return true if match is started */ public boolean matchStarted(){ return matchStarted; } public void matchStart(int baseNum, Short f1, Short f2){ Num=baseNum; freq1=f1; freq2=f2; freq1size=m_botAction.getFrequencySize(freq1); freq2size=m_botAction.getFrequencySize(freq2); freq1InitSize=freq1size; freq2InitSize=freq2size; //pdata=new playerData[freq1size+freq2size]; int i=0; for(i=0;i<=3;i++){ safe[i]=baseduel.basecoord[Num][i]; } getIds(freq1,freq2); warpSetup(); matchStarted=true; //roundStart(); } private void warpSetup(){ f1x=safe[0]; f1y=safe[1]; f2x=safe[2]; f2y=safe[3]; BotAction.getBotAction().warpFreqToLocation(Integer.valueOf(freq1), f1x, f1y); BotAction.getBotAction().warpFreqToLocation(Integer.valueOf(freq2), f2x, f2y); playing=true; } final public void roundStart(){ //delay=false; playing=false; shipReset(); Round++; if(Round%2==1){ f1x=safe[0]; f1y=safe[1]; f2x=safe[2]; f2y=safe[3]; // TimerTask nextRound = new TimerTask() { // public void run() { m_botAction.warpFreqToLocation(Integer.valueOf(freq1), f1x, f1y); m_botAction.warpFreqToLocation(Integer.valueOf(freq2), f2x, f2y); // } //};BotAction.getBotAction().scheduleTask(nextRound, 4000); //BotAction.getBotAction().warpFreqToLocation(Integer.valueOf(freq1), f1x, f1y); //BotAction.getBotAction().warpFreqToLocation(Integer.valueOf(freq2), f2x, f2y); }else{ f2x=safe[0]; f2y=safe[1]; f1x=safe[2]; f1y=safe[3]; //TimerTask nextRound = new TimerTask() { //public void run() { m_botAction.warpFreqToLocation(Integer.valueOf(freq1), f1x, f1y); m_botAction.warpFreqToLocation(Integer.valueOf(freq2), f2x, f2y); // } //};BotAction.getBotAction().scheduleTask(nextRound, 4000); } centerCheck(); freq2InSafe=false; freq1InSafe=false; if(freq1wins==5||freq2wins==5){ matchEnd(); return; } setPlayingTrue(); //playing=true; } private void shipReset(){ Iterator<Player> i = BotAction.getBotAction().getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if( freq1.equals(p.getFrequency())||freq2.equals(p.getFrequency())){ BotAction.getBotAction().shipReset(p.getPlayerID()); } } } public boolean hasId(int id){ boolean has=false; if((freq1Players.contains((short)id))||(freq2Players.contains((short)id))){ has=true; } return has; } public boolean hasFreq(Short freq){ if ( (freq1.equals(freq)) || (freq2.equals(freq)) ){ return true; }else{ return false; } } public void centerSafe(Short freq){ if (this.playingStatus()==true){ if(freq1.equals(freq)){ freq1InSafe=true; } if(freq2.equals(freq)){ freq2InSafe=true; } roundStart(); //updateState= new updateState(this); //m_botAction.scheduleTask(updateState,3000); //BotAction.getBotAction().scheduleTask(updateState, 4000); //roundDelay(Num); //m_botAction.scheduleTask(roundDelay, delayms) //roundDelay(); } } private void setPlayingTrue(){ TimerTask nextRound = new TimerTask() { public void run() { playing=true; } };BotAction.getBotAction().scheduleTask(nextRound, 5000); } public void emptyFreqCheck(Short nameid){ Short freq=-1; if (freq1Players.contains(nameid)){ freq=freq1; freq1size=freq1size-1; if(freq1size==0){ matchEnd(freq); } } if (freq2Players.contains(nameid)){ freq=freq2; freq2size=freq2size-1; if(freq2size==0){ matchEnd(freq); } } } private void centerCheck(){ if (freq1InSafe==true&&freq2InSafe==true){ roundEnd("both"); } if (freq1InSafe==true&&freq2InSafe==false){ roundEnd(freq1); } if (freq2InSafe==true&&freq1InSafe==false){ roundEnd(freq2); } } public void baseSafe(Short freq, int posX, int posY){ if (this.playingStatus()==true){ if(freq1.equals(freq)&&posX==f2x&&posY==f2y){ BotAction.getBotAction().warpFreqToLocation(freq2,graveyard[0],graveyard[1]); } if(freq2.equals(freq)&&posX==f1x&&posY==f1y){ BotAction.getBotAction().warpFreqToLocation(freq1,graveyard[0],graveyard[1]); } } } public void addPlayer(Short id, Short freq){ if(id!=null){ if(freq.equals(freq1)){ if(freq1InitSize!=freq1size){ freq1size++; idsAllowedToJoin.add(id); m_botAction.setShip(id, 1); m_botAction.setFreq(id, freq1); playingIds.add(id); idsAllowedToJoin.remove(id); addPlayerData(id); //allF1PlayerNames = allF1PlayerNames + " " + m_botAction.getPlayerName(id); m_botAction.sendSmartPrivateMessage(m_botAction.getPlayerName(id), "You joined frequency"+String.valueOf(freq1) ); m_botAction.warpTo(id, graveyard[0], graveyard[1]); }else{ m_botAction.sendSmartPrivateMessage(m_botAction.getPlayerName(id), "No spots available."); } }else if(freq.equals(freq2)){ if(freq2InitSize!=freq2size){ freq2size++; idsAllowedToJoin.add(id); m_botAction.setShip(id, 1); m_botAction.setFreq(id, freq2); playingIds.add(id); idsAllowedToJoin.remove(id); addPlayerData(id); //allF2PlayerNames = allF2PlayerNames + " " + m_botAction.getPlayerName(id); m_botAction.sendSmartPrivateMessage(m_botAction.getPlayerName(id), "You joined frequency"+String.valueOf(freq2) ); m_botAction.warpTo(id, graveyard[0], graveyard[1]); }else{ m_botAction.sendSmartPrivateMessage(m_botAction.getPlayerName(id), "No spots available."); } } } } private void addPlayerData(int id){ int x=0; playerData tempData; for(x=0;x<pdata.length;x++){ if(pdata[x]==null){ pdata[x] = new playerData(); pdata[x].initPlayerData(id); break; } } } private void getCurrentNames(){ allF1PlayerNames=""; allF2PlayerNames=""; String delimiter; Iterator<Player> i = BotAction.getBotAction().getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if( freq1.equals(p.getFrequency())){ if (allF1PlayerNames.length()!=0){ delimiter=", "; }else{ delimiter=""; } allF1PlayerNames=allF1PlayerNames+delimiter+ p.getPlayerName(); } if (freq2.equals(p.getFrequency())){ if (allF2PlayerNames.length()!=0){ delimiter=", "; }else{ delimiter=""; } allF2PlayerNames=allF2PlayerNames+delimiter+ p.getPlayerName(); } } } private void getIds(Short freq1, Short freq2){ baseduel.playingFreqs.add(freq1); baseduel.playingFreqs.add(freq2); int j=0; String delimiter; Iterator<Player> i = BotAction.getBotAction().getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if( freq1.equals(p.getFrequency())){ freq1Players.add(p.getPlayerID()); baseduel.playingIds.add(p.getPlayerID()); pdata[j] = new playerData(); pdata[j].initPlayerData(p.getPlayerID()); j++; if (allF1PlayerNames.length()!=0){ delimiter=", "; }else{ delimiter=""; } allF1PlayerNames=allF1PlayerNames+delimiter+ p.getPlayerName(); } if (freq2.equals(p.getFrequency())){ freq2Players.add(p.getPlayerID()); baseduel.playingIds.add(p.getPlayerID()); pdata[j] = new playerData(); pdata[j].initPlayerData(p.getPlayerID()); j++; if (allF2PlayerNames.length()!=0){ delimiter=", "; }else{ delimiter=""; } allF2PlayerNames=allF2PlayerNames+delimiter+ p.getPlayerName(); } } } public void addKill(int killerId, int DeathId){ int pos1=getPlayerDataPosition(killerId); int pos2=getPlayerDataPosition(DeathId); pdata[pos1].addKill(); pdata[pos2].addDeath(); } public int getPlayerDataPosition(Integer id){ int pos=0; for(pos=0;pos<pdata.length;pos++){ if(pdata[pos].getId()==id&&pdata[pos]!=null&&id!=null){ return pos; } } return -1; } public void deleteid(Short id){ try{ if (freq1Players.contains(id)){ freq1Players.remove(id); } if (freq2Players.contains(id)){ freq2Players.remove(id); } } finally{ } } public void deleteIds(){ baseduel.playingFreqs.remove(freq1); baseduel.playingFreqs.remove(freq2); Iterator<Player> i = BotAction.getBotAction().getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if(freq1.equals(p.getFrequency())){ baseduel.playingIds.remove(p.getPlayerID()); } if (freq2.equals(p.getFrequency())){ baseduel.playingIds.remove(p.getPlayerID()); } } } /** * Tells the roundEnd() the frequency that lost, by adding a lost and adds the opposing team a win * @param freqLost */ public void roundEnd(String s){ if(s=="both"){ freq1wins++; freq2wins++; BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq1,"Both teams are tied with "+String.valueOf(freq1wins)); BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq2,"Both teams are tied with "+String.valueOf(freq2wins)); } } public void roundEnd(Short freqLost){ if (freqLost.equals(freq1)){ freq1Losses++; freq2wins++; }else if (freqLost.equals(freq2)){ freq2Losses++; freq1wins++; } if(freq1wins>freq2wins){ BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq1, "Your team is winning with: "+ String.valueOf(freq1wins)+" and your opponent is losing with: "+ String.valueOf(freq2wins)); BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq2, "Your team is losing with: "+ String.valueOf(freq2wins)+" and your opponent leads with: "+ String.valueOf(freq1wins)); }else if (freq2wins>freq1wins){ BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq2, "Your team is winning with: "+ String.valueOf(freq2wins)+" and your opponent is losing with: "+ String.valueOf(freq1wins)); BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq1, "Your team is losing with: "+ String.valueOf(freq1wins)+" and your opponent is winning with: "+ String.valueOf(freq2wins)); }else{ BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq1,"Both teams are tied with "+String.valueOf(freq1wins)); BotAction.getBotAction().sendOpposingTeamMessageByFrequency(freq2,"Both teams are tied with "+String.valueOf(freq2wins)); } //Round++; //roundStart(); } private String[] printStats(){ int pos; int j=0; Integer id; int k=0; Integer statsSize=freq1size+freq2size+20; Short[] freqsOrder= new Short[2]; //Short winningFreq; //Short losserFreq; if(freq1wins>freq2wins){ freqsOrder[0]=freq1; freqsOrder[1]=freq2; }else{ freqsOrder[0]=freq2; freqsOrder[1]=freq1; } if(freq1size==0){ freqsOrder[0]=freq2; freqsOrder[1]=freq1; }else if(freq2size==0){ freqsOrder[0]=freq1; freqsOrder[1]=freq2; } String playerStats[]= new String[statsSize]; for(k=0;k<2;k++){ if (k==0){ playerStats[j]="|------(-- Winners --)----- |"; j++; playerStats[j]="| Name K D |"; j++; playerStats[j]="|-------------------------- |"; j++; }else{ playerStats[j]="|------(-- Losers --)------ |"; j++; } Iterator<Player> i = BotAction.getBotAction().getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if( freqsOrder[k].equals(p.getFrequency())){ id=Integer.valueOf(p.getPlayerID()); pos=getPlayerDataPosition(id); if(id!=null){ playerStats[j]=String.format("| %1$-16s %2$3d %3$3d |", BotAction.getBotAction().getPlayerName(id), pdata[pos].getKills(), pdata[pos].getDeaths() ); } if (id!=null){ j++; } } } } playerStats[j]="|___________________________|"; int x=0; Integer statsSize2=statsSize; for (x=0;x<statsSize;x++){ if(playerStats[x]==null){ statsSize2--; } } x=0; String playerStats2[]= new String[statsSize2]; for (x=0;x<statsSize2;x++){ playerStats2[x]=playerStats[x]; } return playerStats2; } private void matchEnd(Short freq){ BotAction.getBotAction().arenaMessageSpam(printStats()); if(freq==freq1){ BotAction.getBotAction().sendArenaMessage(allF2PlayerNames+" ("+freq2wins+ " Points)" + " defeated "+ allF1PlayerNames+" ("+freq1wins+" Points)"); BotAction.getBotAction().sendArenaMessage("no players left on "+ allF1PlayerNames +"'s frequency" ); } if(freq==freq2){ BotAction.getBotAction().sendArenaMessage(allF1PlayerNames+" ("+freq1wins+ " Points)" + " defeated "+ allF2PlayerNames+" ("+freq2wins+" Points)"); BotAction.getBotAction().sendArenaMessage("no players left on "+ allF2PlayerNames +"'s frequency" ); } baseduel.this.killBase(Num, freq1, freq2); } private void matchEnd(){ matchOver=true; BotAction.getBotAction().arenaMessageSpam(printStats()); if(allF1PlayerNames.length()>19){ allF1PlayerNames=allF1PlayerNames.substring(0, 20)+"..."; } if(allF2PlayerNames.length()>19){ allF2PlayerNames=allF2PlayerNames.substring(0, 20)+"..."; } if(freq1wins>freq2wins){ BotAction.getBotAction().sendArenaMessage(allF1PlayerNames+" ("+freq1wins+ " Points)" + " defeated "+ allF2PlayerNames+" ("+freq2wins+" Points)"); } if(freq2wins>freq1wins){ BotAction.getBotAction().sendArenaMessage(allF2PlayerNames+" ("+freq2wins+ " Points)" + " defeated "+ allF1PlayerNames+" ("+freq1wins+" Points)"); } baseduel.this.killBase(Num, freq1, freq2); } public String[] getHelpMessages() { String[] help = { "!duelhelp - this message.", "!ch <name> - challenge someone to a baseduel for 5 rounds.", "!s or !score - Shows current duel scores." }; return help; } public void cancel() { } } public class chFreqs { public Short f1=0; public Short f2=0; private TimerTask removefrq; public int chNum; private HashSet <Short> freq1Players = new HashSet<Short>(); private HashSet <Short> freq2Players = new HashSet<Short>(); public void addfreqs(Short freq1,Short freq2, int num){ // String anf1, String anf2 f1=freq1; f2=freq2; chNum=num; Iterator<Player> i = BotAction.getBotAction().getPlayingPlayerIterator(); while( i.hasNext() ){ Player p = i.next(); if( freq1.equals(p.getFrequency())){ freq1Players.add(p.getPlayerID()); } if (freq2.equals(p.getFrequency())){ freq2Players.add(p.getPlayerID()); } } removefrq = new TimerTask() { public void run() { baseduel.chsFreqs.remove(f1); baseduel.chsFreqs.remove(f2); m_botAction.sendOpposingTeamMessageByFrequency(f1,"Duel timed out"); m_botAction.sendOpposingTeamMessageByFrequency(f2,"Duel timed out"); baseduel.this.killchallenge(chNum, f1, f2); } };BotAction.getBotAction().scheduleTask(removefrq, 20000); } public boolean hasId(Short id){ boolean has=false; if(freq1Players.contains(id)||freq2Players.contains(id)){ has=true; } return has; } public void deleteFreqs(Short f1){ } public boolean hasFreq(Short freq){ if ((f1.equals(freq))||(f2.equals(freq))){ return true; } return false; } public boolean hasFreq2(Short freq){ if (f2.equals(freq)){ return true; } return false; } public Short acceptDuel(Short freq){ if (f2.equals(freq)){ baseduel.this.killchallenge(chNum, f1, f2); removefrq.cancel(); return f1; } return -1; } public Short otherFreq(Short freq){ if (f2.equals(freq)){ return f1; } return -1; } public void cancelDuel(int id){ m_botAction.sendOpposingTeamMessageByFrequency(f1, "Duel cancelled "+ m_botAction.getPlayerName(id)+" Changed freq" ); m_botAction.sendOpposingTeamMessageByFrequency(f2, "Duel cancelled "+ m_botAction.getPlayerName(id)+" Changed freq" ); m_botAction.sendSmartPrivateMessage(m_botAction.getPlayerName(id), "Duel cancelled you changed freq."); removefrq.cancel(); baseduel.this.killchallenge(chNum, f1, f2); } public void cancelDuel2(){ removefrq.cancel(); baseduel.this.killchallenge(chNum, f1, f2); } public void cancelDuel3(){ m_botAction.sendOpposingTeamMessageByFrequency(f1,"Duel cancelled freqs changed"); m_botAction.sendOpposingTeamMessageByFrequency(f2, "Duel cancelled freqs changed"); removefrq.cancel(); baseduel.this.killchallenge(chNum, f1, f2); } } public class PlayerInfo{ private Short frequency; private int id; private String name; private int ship; private boolean playingStatus; } }
  11. yah that would be nice, because if you update gtk you break starlight. and lol god forbid you have multiple versions of gtk installed.
  12. it comes with an old version of gtk and if I update gtk because another program needs it, it says it doesn't work anymore. this application has failed to start because libgdk-win32-2.0-0.dll was not found. reinstalling the application ma fix this problem. what about a portable version? or something like that
  13. you can log into fusion and go? baseduel to see the map. in short here's what it consists of: you have a map with medium sized bases (lets say 10) with 1 warp point at each end. 2 teams of 1 and up to 5 players get warped into a random base. there are 2 ways to win a round; 1. killing off the entire opposing team 2. reach the warp point located at the opposing team's side. the idea is obviously from extreme games, but I added the ability to join on going duels if a player lags out.(instead of ending the duel altogether, like it does right now in eg). the open sourced cores, don't have a baseduel bot or plugin, so I decided to code it myself. I think the eg one is done in powercore? or something like that.
  14. didn't anyone else noticed that? rofl
  15. im releasing my twcore bot baseduel plugin source code at this location. http://ss-fusion.com/jm/phpBB3/viewtopic.p...;p=19820#p19820 have fun!
  16. i've been trying to go into www.minegoboom.com and looks like i just went offline . anyone else seeing this problem?
×
×
  • Create New...