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
    911
    Thanks given
    22
    Thanks received
    15
    Rep Power
    37
    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("@[email protected]" + 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
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    MSN: [email protected]
    Reply With Quote  
     

  2. #2  
    Registered Member

    Join Date
    Oct 2009
    Posts
    1,595
    Thanks given
    100
    Thanks received
    50
    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("@[email protected]" + 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:
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  3. #3  
    Banned

    Join Date
    Oct 2009
    Age
    26
    Posts
    1,579
    Thanks given
    4
    Thanks received
    23
    Rep Power
    0
    Amg no wai cool.
    Reply With Quote  
     

  4. #4  
    Registered Member Akeid's Avatar
    Join Date
    May 2009
    Posts
    911
    Thanks given
    22
    Thanks received
    15
    Rep Power
    37
    Lol thanks guys
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    MSN: [email protected]
    Reply With Quote  
     

  5. #5  
    Banned

    Join Date
    Oct 2009
    Age
    26
    Posts
    1,579
    Thanks given
    4
    Thanks received
    23
    Rep Power
    0
    what did you change btw?
    Reply With Quote  
     

  6. #6  
    Registered Member Akeid's Avatar
    Join Date
    May 2009
    Posts
    911
    Thanks given
    22
    Thanks received
    15
    Rep Power
    37
    lol a small line for you and pedobear to find :coolface:
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    MSN: [email protected]
    Reply With Quote  
     

  7. #7  
    Registered Member
    FuckThePolice's Avatar
    Join Date
    Feb 2009
    Age
    27
    Posts
    846
    Thanks given
    29
    Thanks received
    57
    Rep Power
    87
    rep Thx alot lol
    Reply With Quote  
     

  8. #8  
    Registered Member
    Join Date
    Aug 2010
    Posts
    41
    Thanks given
    2
    Thanks received
    1
    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
    911
    Thanks given
    22
    Thanks received
    15
    Rep Power
    37
    God i fixed that
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    MSN: [email protected]
    Reply With Quote  
     

  10. #10  
    Registered Member
    Division's Avatar
    Join Date
    Dec 2009
    Age
    26
    Posts
    2,208
    Thanks given
    41
    Thanks received
    78
    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)


User Tag List

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •