Thread: [PI]Clan Chat Crash Fix - Stops Clan Chat Crashes : Akeid

Page 1 of 2 12 LastLast
Results 1 to 10 of 17
  1. #1 [PI]Clan Chat Crash Fix - Stops Clan Chat Crashes : Akeid 
    Registered Member Akeid's Avatar
    Join Date
    May 2009
    Posts
    913
    Thanks
    22
    Thanked 14 Times in 9 Posts
    Rep Power
    32
    Hey guys, well this is it, its the fix for when you join into your clan chat more than once and you talk which crashes and nulls the server without leaving a trace in the servers cmd. This is the fix Thanks guys, and repps appreciated , like all my stuff i wont remove so you dont have to quote. Reps is appreciated :trollface:

    This is the whole clan chat handler class:

    Code:
    package server.world;
    
    import server.model.players.Client;
    import server.util.Misc;
    import server.Server;
    
    import java.util.ArrayList;
    
    /**
     * @author Sanity
     * @author Akeid Fixed Clan Chat nulling
     */
    
    public class ClanChatHandler {
    
    	public ClanChatHandler() {
    	
    	}
    	
    	public Clan[] clans = new Clan[100];
    	
    	
    	public void handleClanChat(Client c, String name) {
    		for (int j = 0; j < clans.length; j++) {
    			if (clans[j] != null) {
    				if (clans[j].name.equalsIgnoreCase(name)) {
    					addToClan(c.playerId, j);
    					return;
    				}			
    			}
    		}
    		makeClan(c, name);
    	}
    	
    	
    	public void makeClan(Client c, String name) {
    		if (openClan() >= 0) {
    			if (c.clanId >= 0) {
    				c.sendMessage("You are already in a clan.");
    				return;
    			}
    			if (validName(name)) {
    				c.clanId = openClan();
    				clans[c.clanId] = new Clan (c,name);
    				addToClan(c.playerId, c.clanId);
    			} else {
    				c.sendMessage("A clan with this name already exists.");
    			}
    		} else {
    			c.sendMessage("Your clan chat request could not be completed.");
    		}
    	}
    	
    	public void updateClanChat(int clanId) {
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clans[clanId].members[j] <= 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				c.getPA().sendFrame126("Talking in: " + clans[clanId].name, 18139);
    				c.getPA().sendFrame126("Owner: " + clans[clanId].owner, 18140);
    				int slotToFill = 18144;
    				for (int i = 0; i < clans[clanId].members.length; i++) {
    					if (clans[clanId].members[i] > 0){
    						if (Server.playerHandler.players[clans[clanId].members[i]] != null) {
    							c.getPA().sendFrame126(Server.playerHandler.players[clans[clanId].members[i]].playerName, slotToFill);
    							slotToFill++;
    						}	
    					}
    				}
    				for (int k = slotToFill; k < 18244; k++)
    					c.getPA().sendFrame126("", k);
    			}		
    		}
    	}
    	
    	public int openClan() {	
    		for (int j = 0; j < clans.length; j++) {
    			if (clans[j] == null || clans[j].owner == "")
    				return j;
    		}
    		return -1;
    	}
    	
    	public boolean validName(String name) { 
    		for (int j = 0; j < clans.length; j++) {
    			if (clans[j] != null) {
    				if (clans[j].name.equalsIgnoreCase(name))
    					return false;
    			}		
    		}
    		return true;
    	}
    	
    	public void addToClan(int playerId, int clanId) {
    		if (clans[clanId] != null) {
    			for (int j = 0; j < clans[clanId].members.length; j++) {
    				if (clans[clanId].members[j] <= 0) {
    					clans[clanId].members[j] = playerId;
    					Server.playerHandler.players[playerId].clanId = clanId;
    					Client c = (Client)Server.playerHandler.players[playerId];
    					//c.sendMessage("You have joined the clan chat: " + clans[clanId].name);
    					messageToClan(Server.playerHandler.players[playerId].playerName + " has joined the channel.", clanId);
    					updateClanChat(clanId);
    					return;
    		} else {
    			Client c = (Client)Server.playerHandler.players[playerId];
    			Server.playerHandler.players[playerId].clanId = clanId;
    			c.sendMessage("You already have joined a clan!");
    				return;
    				}
    			}			
    		}	
    	}
    	
    	public void leaveClan(int playerId, int clanId) {
    		if (clanId < 0) {
    			Client c = (Client)Server.playerHandler.players[playerId];
    			c.sendMessage("You are not in a clan.");
    			return;		
    		}
    		if (clans[clanId] != null) {
    			if (Server.playerHandler.players[playerId].playerName.equalsIgnoreCase(clans[clanId].owner)) {
    				messageToClan("The clan has been deleted by the owner.", clanId);
    				destructClan(Server.playerHandler.players[playerId].clanId);
    				return;
    			}	
    			for (int j = 0; j < clans[clanId].members.length; j++) {
    				if (clans[clanId].members[j] == playerId) {
    					clans[clanId].members[j] = -1;
    				}
    			}
    			if (Server.playerHandler.players[playerId] != null) {
    				Client c = (Client)Server.playerHandler.players[playerId];
    				Server.playerHandler.players[playerId].clanId = -1;
    				c.sendMessage("You have left the clan.");
    				c.getPA().clearClanChat();
    			}
    			updateClanChat(clanId);
    		} else {
    			Client c = (Client)Server.playerHandler.players[playerId];
    			Server.playerHandler.players[playerId].clanId = -1;
    			c.sendMessage("You are not in a clan.");
    		}
    	}
    	
    	public void destructClan(int clanId) {
    		if (clanId < 0)
    			return;
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clanId < 0)
    				continue;
    			if (clans[clanId].members[j] <= 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				c.clanId = -1;
    				c.getPA().clearClanChat();
    			}	
    		}
    		clans[clanId].members = new int[50];
    		clans[clanId].owner = "";
    		clans[clanId].name = "";
    	}
    	
    	public void messageToClan(String message, int clanId) {
    		if (clanId < 0)
    			return;
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clans[clanId].members[j] < 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				c.sendMessage("@red@" + message);
    			}
    		}	
    	}
    	
    	public void playerMessageToClan(int playerId, String message, int clanId) {
    		if (clanId < 0)
    			return;
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clans[clanId].members[j] <= 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				//c.sendMessage("["+Server.playerHandler.players[playerId].playerName+"] - " + message");
    				//sendClan(String name, String message, String clan, int rights)
    				c.sendClan(Server.playerHandler.players[playerId].playerName, message, clans[clanId].name, Server.playerHandler.players[playerId].playerRights);
    			}
    		}	
    	}
    	
    	public void sendLootShareMessage(int clanId, String message) {
    		if (clanId >= 0) {
    			for (int j = 0; j < clans[clanId].members.length; j++) {
    				if (clans[clanId].members[j] <= 0)
    					continue;
    				if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    					Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    					c.sendClan("Lootshare", message, clans[clanId].name, 2);
    				}
    			}
    		}
    	}
    	
    	
    	public int[] unallowed = {592, 530, 526, 536, 1333, 995, 1247, 1089, 1047, 1319};
    	public void handleLootShare(Client c, int item, int amount) {
    		for(int i = 0; i < unallowed.length; i++) {
    			if(item == unallowed[i])
    				return;
    		}
    		if(c.getShops().getItemShopValue(item, 1, c.getItems().getItemSlot(item)) > 5000)
    		sendLootShareMessage(c.clanId, c.playerName + " has received " + amount + "x " + server.model.items.Item.getItemName(item) + ".");	
    	}
    	
    }
    W00t phr33 sTu0uff pL0x
    Reply With Quote  
     

  2. #2  
    Donator


    Join Date
    Oct 2009
    Posts
    1,600
    Thanks
    101
    Thanked 51 Times in 19 Posts
    Rep Power
    232
    Quote Originally Posted by akeid View Post
    Hey guys, well this is it, its the fix for when you join into your clan chat more than once and you talk which crashes and nulls the server without leaving a trace in the servers cmd. This is the fix Thanks guys, and repps appreciated , like all my stuff i wont remove so you dont have to quote. Reps is appreciated :trollface:

    This is the whole clan chat handler class:

    Code:
    package server.world;
    
    import server.model.players.Client;
    import server.util.Misc;
    import server.Server;
    
    import java.util.ArrayList;
    
    /**
     * @author Sanity
     * @author Akeid Fixed Clan Chat nulling
     */
    
    public class ClanChatHandler {
    
    	public ClanChatHandler() {
    	
    	}
    	
    	public Clan[] clans = new Clan[100];
    	
    	
    	public void handleClanChat(Client c, String name) {
    		for (int j = 0; j < clans.length; j++) {
    			if (clans[j] != null) {
    				if (clans[j].name.equalsIgnoreCase(name)) {
    					addToClan(c.playerId, j);
    					return;
    				}			
    			}
    		}
    		makeClan(c, name);
    	}
    	
    	
    	public void makeClan(Client c, String name) {
    		if (openClan() >= 0) {
    			if (c.clanId >= 0) {
    				c.sendMessage("You are already in a clan.");
    				return;
    			}
    			if (validName(name)) {
    				c.clanId = openClan();
    				clans[c.clanId] = new Clan (c,name);
    				addToClan(c.playerId, c.clanId);
    			} else {
    				c.sendMessage("A clan with this name already exists.");
    			}
    		} else {
    			c.sendMessage("Your clan chat request could not be completed.");
    		}
    	}
    	
    	public void updateClanChat(int clanId) {
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clans[clanId].members[j] <= 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				c.getPA().sendFrame126("Talking in: " + clans[clanId].name, 18139);
    				c.getPA().sendFrame126("Owner: " + clans[clanId].owner, 18140);
    				int slotToFill = 18144;
    				for (int i = 0; i < clans[clanId].members.length; i++) {
    					if (clans[clanId].members[i] > 0){
    						if (Server.playerHandler.players[clans[clanId].members[i]] != null) {
    							c.getPA().sendFrame126(Server.playerHandler.players[clans[clanId].members[i]].playerName, slotToFill);
    							slotToFill++;
    						}	
    					}
    				}
    				for (int k = slotToFill; k < 18244; k++)
    					c.getPA().sendFrame126("", k);
    			}		
    		}
    	}
    	
    	public int openClan() {	
    		for (int j = 0; j < clans.length; j++) {
    			if (clans[j] == null || clans[j].owner == "")
    				return j;
    		}
    		return -1;
    	}
    	
    	public boolean validName(String name) { 
    		for (int j = 0; j < clans.length; j++) {
    			if (clans[j] != null) {
    				if (clans[j].name.equalsIgnoreCase(name))
    					return false;
    			}		
    		}
    		return true;
    	}
    	
    	public void addToClan(int playerId, int clanId) {
    		if (clans[clanId] != null) {
    			for (int j = 0; j < clans[clanId].members.length; j++) {
    				if (clans[clanId].members[j] <= 0) {
    					clans[clanId].members[j] = playerId;
    					Server.playerHandler.players[playerId].clanId = clanId;
    					Client c = (Client)Server.playerHandler.players[playerId];
    					//c.sendMessage("You have joined the clan chat: " + clans[clanId].name);
    					messageToClan(Server.playerHandler.players[playerId].playerName + " has joined the channel.", clanId);
    					updateClanChat(clanId);
    					return;
    		} else {
    			Client c = (Client)Server.playerHandler.players[playerId];
    			Server.playerHandler.players[playerId].clanId = clanId;
    			c.sendMessage("You already have joined a clan!");
    				return;
    				}
    			}			
    		}	
    	}
    	
    	public void leaveClan(int playerId, int clanId) {
    		if (clanId < 0) {
    			Client c = (Client)Server.playerHandler.players[playerId];
    			c.sendMessage("You are not in a clan.");
    			return;		
    		}
    		if (clans[clanId] != null) {
    			if (Server.playerHandler.players[playerId].playerName.equalsIgnoreCase(clans[clanId].owner)) {
    				messageToClan("The clan has been deleted by the owner.", clanId);
    				destructClan(Server.playerHandler.players[playerId].clanId);
    				return;
    			}	
    			for (int j = 0; j < clans[clanId].members.length; j++) {
    				if (clans[clanId].members[j] == playerId) {
    					clans[clanId].members[j] = -1;
    				}
    			}
    			if (Server.playerHandler.players[playerId] != null) {
    				Client c = (Client)Server.playerHandler.players[playerId];
    				Server.playerHandler.players[playerId].clanId = -1;
    				c.sendMessage("You have left the clan.");
    				c.getPA().clearClanChat();
    			}
    			updateClanChat(clanId);
    		} else {
    			Client c = (Client)Server.playerHandler.players[playerId];
    			Server.playerHandler.players[playerId].clanId = -1;
    			c.sendMessage("You are not in a clan.");
    		}
    	}
    	
    	public void destructClan(int clanId) {
    		if (clanId < 0)
    			return;
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clanId < 0)
    				continue;
    			if (clans[clanId].members[j] <= 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				c.clanId = -1;
    				c.getPA().clearClanChat();
    			}	
    		}
    		clans[clanId].members = new int[50];
    		clans[clanId].owner = "";
    		clans[clanId].name = "";
    	}
    	
    	public void messageToClan(String message, int clanId) {
    		if (clanId < 0)
    			return;
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clans[clanId].members[j] < 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				c.sendMessage("@red@" + message);
    			}
    		}	
    	}
    	
    	public void playerMessageToClan(int playerId, String message, int clanId) {
    		if (clanId < 0)
    			return;
    		for (int j = 0; j < clans[clanId].members.length; j++) {
    			if (clans[clanId].members[j] <= 0)
    				continue;
    			if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    				Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    				//c.sendMessage("["+Server.playerHandler.players[playerId].playerName+"] - " + message");
    				//sendClan(String name, String message, String clan, int rights)
    				c.sendClan(Server.playerHandler.players[playerId].playerName, message, clans[clanId].name, Server.playerHandler.players[playerId].playerRights);
    			}
    		}	
    	}
    	
    	public void sendLootShareMessage(int clanId, String message) {
    		if (clanId >= 0) {
    			for (int j = 0; j < clans[clanId].members.length; j++) {
    				if (clans[clanId].members[j] <= 0)
    					continue;
    				if (Server.playerHandler.players[clans[clanId].members[j]] != null) {
    					Client c = (Client)Server.playerHandler.players[clans[clanId].members[j]];
    					c.sendClan("Lootshare", message, clans[clanId].name, 2);
    				}
    			}
    		}
    	}
    	
    	
    	public int[] unallowed = {592, 530, 526, 536, 1333, 995, 1247, 1089, 1047, 1319};
    	public void handleLootShare(Client c, int item, int amount) {
    		for(int i = 0; i < unallowed.length; i++) {
    			if(item == unallowed[i])
    				return;
    		}
    		if(c.getShops().getItemShopValue(item, 1, c.getItems().getItemSlot(item)) > 5000)
    		sendLootShareMessage(c.clanId, c.playerName + " has received " + amount + "x " + server.model.items.Item.getItemName(item) + ".");	
    	}
    	
    }
    W00t phr33 sTu0uff pL0x

    cookiessssss :cookie:

    Reply With Quote  
     

  3. #3  
    Respected Donator+

    Paul T's Avatar
    Join Date
    Oct 2009
    Age
    20
    Posts
    1,572
    Thanks
    4
    Thanked 22 Times in 16 Posts
    Rep Power
    465
    Amg no wai cool.
    Reply With Quote  
     

  4. #4  
    Registered Member Akeid's Avatar
    Join Date
    May 2009
    Posts
    913
    Thanks
    22
    Thanked 14 Times in 9 Posts
    Rep Power
    32
    Lol thanks guys
    Reply With Quote  
     

  5. #5  
    Respected Donator+

    Paul T's Avatar
    Join Date
    Oct 2009
    Age
    20
    Posts
    1,572
    Thanks
    4
    Thanked 22 Times in 16 Posts
    Rep Power
    465
    what did you change btw?
    Reply With Quote  
     

  6. #6  
    Registered Member Akeid's Avatar
    Join Date
    May 2009
    Posts
    913
    Thanks
    22
    Thanked 14 Times in 9 Posts
    Rep Power
    32
    lol a small line for you and ****bear to find :coolface:
    Reply With Quote  
     

  7. #7  
    Epic Donator <3

    FuckThePolice's Avatar
    Join Date
    Feb 2009
    Age
    19
    Posts
    802
    Thanks
    26
    Thanked 55 Times in 44 Posts
    Rep Power
    77
    rep Thx alot lol
    Reply With Quote  
     

  8. #8  
    Registered Member
    Join Date
    Aug 2010
    Posts
    41
    Thanks
    2
    Thanked 1 Time in 1 Post
    Rep Power
    7
    this actually dont work for my. Let me explain, the "joining multiply times" glitch has been fixed but now i can join a clan E.G. "bob" and some one else can join the clan "bob" and we both are owner and cant see each other in the clan but can still both talk to each other. I wont be using sorry but i will be fixing the bug my self.
    Reply With Quote  
     

  9. #9  
    Registered Member Akeid's Avatar
    Join Date
    May 2009
    Posts
    913
    Thanks
    22
    Thanked 14 Times in 9 Posts
    Rep Power
    32
    God i fixed that
    Reply With Quote  
     

  10. #10  
    Donator

    Division's Avatar
    Join Date
    Dec 2009
    Age
    18
    Posts
    2,211
    Thanks
    41
    Thanked 78 Times in 48 Posts
    Rep Power
    97
    That doesnt fix it, you cant even join a clan chat now.
    It says, you already joined!
    Reply With Quote  
     


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
  •