rullezz Posted July 31, 2016 Posted July 31, 2016 Hello, i using this TvT Event on aCis re 362. http://pastebin.com/GWcRXUXj When i press SHIFT button i can target another players which are not participated at event....and players which don't participated at event can target with SHIFT button players wich are participated at event. How i can fix it? :)
0 'Baggos' Posted July 31, 2016 Posted July 31, 2016 What you mean about this? Do you have a better way? http://imgur.com/a/jgLvX
0 AccessDenied Posted July 31, 2016 Posted July 31, 2016 What you mean about this? Do you have a better way? http://imgur.com/a/jgLvX awwwwwwwwww you the best best best bagoulini evarrrrrrrrrrrrr!!
0 Tessa Posted July 31, 2016 Posted July 31, 2016 What you mean about this? Do you have a better way? http://imgur.com/a/jgLvX Ok, the formatting probably confuses you, there is the formatted method: /** * Starts the TvTEvent fight<br> * 1. Set state EventState.STARTING<br> * 2. Close doors specified in configs<br> * 3. Abort if not enought participants(return false)<br> * 4. Set state EventState.STARTED<br> * 5. Teleport all participants to team spot<br><br> * * @return boolean<br> */ public static boolean startFight() { setState(EventState.STARTING); // not enought participants if (_teams[0].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS || _teams[1].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS) { setState(EventState.INACTIVE); _teams[0].cleanMe(); _teams[1].cleanMe(); return false; } closeDoors(); setState(EventState.STARTED); // set state to STARTED here, so TvTEventTeleporter know to teleport to team spot // teleport all participants to there team spot for (TvTEventTeam team : _teams) { for (String playerName : team.getParticipatedPlayerNames()) { L2PcInstance playerInstance = team.getParticipatedPlayers().get(playerName); if (playerInstance == null) continue; // implements Runnable and starts itself in constructor new TvTEventTeleporter(playerInstance, team.getCoordinates(), false, false); } } return true; } After applying your patch, the code should look something like this: /** * Starts the TvTEvent fight<br> * 1. Set state EventState.STARTING<br> * 2. Close doors specified in configs<br> * 3. Abort if not enought participants(return false)<br> * 4. Set state EventState.STARTED<br> * 5. Teleport all participants to team spot<br><br> * * @return boolean<br> */ public static boolean startFight() { setState(EventState.STARTING); // not enought participants if (_teams[0].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS || _teams[1].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS) { setState(EventState.INACTIVE); _teams[0].cleanMe(); _teams[1].cleanMe(); return false; } closeDoors(); setState(EventState.STARTED); // set state to STARTED here, so TvTEventTeleporter know to teleport to team spot // teleport all participants to there team spot for (TvTEventTeam team : _teams) { for (String playerName : team.getParticipatedPlayerNames()) { L2PcInstance playerInstance = team.getParticipatedPlayers().get(playerName); if (playerInstance == null) continue; // implements Runnable and starts itself in constructor new TvTEventTeleporter(playerInstance, team.getCoordinates(), false, false); } } // Remove player from his party for (TvTEventTeam team : _teams) { for (String playerName : team.getParticipatedPlayerNames()) { L2PcInstance playerInstance = team.getParticipatedPlayers().get(playerName); final L2Party party = playerInstance.getParty(); if (party != null) party.removePartyMember(playerInstance, MessageType.Expelled); } } return true; } Do you notice the problem here?
0 'Baggos' Posted July 31, 2016 Posted July 31, 2016 You mean that? /** * Starts the TvTEvent fight<br> * 1. Set state EventState.STARTING<br> * 2. Close doors specified in configs<br> * 3. Abort if not enought participants(return false)<br> * 4. Set state EventState.STARTED<br> * 5. Teleport all participants to team spot<br> * <br> * @return boolean<br> */ public static boolean startFight() { setState(EventState.STARTING); // not enought participants if (_teams[0].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS || _teams[1].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS) { setState(EventState.INACTIVE); _teams[0].cleanMe(); _teams[1].cleanMe(); return false; } closeDoors(); setState(EventState.STARTED); // set state to STARTED here, so TvTEventTeleporter know to teleport to team spot // teleport all participants to there team spot for (TvTEventTeam team : _teams) { for (String playerName : team.getParticipatedPlayerNames()) { L2PcInstance playerInstance = team.getParticipatedPlayers().get(playerName); if (playerInstance == null) continue; // implements Runnable and starts itself in constructor new TvTEventTeleporter(playerInstance, team.getCoordinates(), false, false); // remove party final L2Party party = playerInstance.getParty(); if (party != null) party.removePartyMember(playerInstance, MessageType.Expelled); } } return true; }
0 AccessDenied Posted July 31, 2016 Posted July 31, 2016 In other words tessa tell you that you placed your code in wrong position and loop 2 times when already have 1 loop
0 Tessa Posted July 31, 2016 Posted July 31, 2016 You mean that? /** * Starts the TvTEvent fight<br> * 1. Set state EventState.STARTING<br> * 2. Close doors specified in configs<br> * 3. Abort if not enought participants(return false)<br> * 4. Set state EventState.STARTED<br> * 5. Teleport all participants to team spot<br> * <br> * @return boolean<br> */ public static boolean startFight() { setState(EventState.STARTING); // not enought participants if (_teams[0].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS || _teams[1].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS) { setState(EventState.INACTIVE); _teams[0].cleanMe(); _teams[1].cleanMe(); return false; } closeDoors(); setState(EventState.STARTED); // set state to STARTED here, so TvTEventTeleporter know to teleport to team spot // teleport all participants to there team spot for (TvTEventTeam team : _teams) { for (String playerName : team.getParticipatedPlayerNames()) { L2PcInstance playerInstance = team.getParticipatedPlayers().get(playerName); if (playerInstance == null) continue; // implements Runnable and starts itself in constructor new TvTEventTeleporter(playerInstance, team.getCoordinates(), false, false); // remove party final L2Party party = playerInstance.getParty(); if (party != null) party.removePartyMember(playerInstance, MessageType.Expelled); } } return true; } Well, that is better. :P /** * Starts the TvTEvent fight<br> * 1. Set state EventState.STARTING<br> * 2. Close doors specified in configs<br> * 3. Abort if not enought participants(return false)<br> * 4. Set state EventState.STARTED<br> * 5. Teleport all participants to team spot<br><br> * * @return boolean<br> */ public static boolean startFight() { setState(EventState.STARTING); // not enought participants if (_teams[0].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS || _teams[1].getParticipatedPlayerCount() < Config.TVT_EVENT_MIN_PLAYERS_IN_TEAMS) { setState(EventState.INACTIVE); _teams[0].cleanMe(); _teams[1].cleanMe(); return false; } closeDoors(); setState(EventState.STARTED); // set state to STARTED here, so TvTEventTeleporter know to teleport to team spot // teleport all participants to there team spot for (TvTEventTeam team : _teams) { for (String playerName : team.getParticipatedPlayerNames()) { L2PcInstance playerInstance = team.getParticipatedPlayers().get(playerName); if (playerInstance == null) continue; // leave party playerInstance.leaveParty(); // implements Runnable and starts itself in constructor new TvTEventTeleporter(playerInstance, team.getCoordinates(), false, false); } } return true; }
0 SweeTs Posted July 31, 2016 Posted July 31, 2016 Bubu, you should use if (activeChar.isInParty()) activeChar.getParty().removePartyMember(activeChar, MessageType.Expelled);
0 Tessa Posted July 31, 2016 Posted July 31, 2016 (edited) Bubu, you should use if (activeChar.isInParty()) activeChar.getParty().removePartyMember(activeChar, MessageType.Expelled); Why? As I see, leaveParty() does exactly the same... :lol: Edited July 31, 2016 by Tessa
0 SweeTs Posted July 31, 2016 Posted July 31, 2016 Yes and no :D _party.removePartyMember(this, MessageType.Disconnected);
0 Tessa Posted July 31, 2016 Posted July 31, 2016 Yes and no :D _party.removePartyMember(this, MessageType.Disconnected); I'm considering it "leaving by own will", because you can't be expelled if you are the party leader. :D
0 Rootware Posted July 31, 2016 Posted July 31, 2016 This man uses leaked aCis sources. You all ready to help everyone the cheap user who don't respect a work of another people? :dat:
0 SweeTs Posted July 31, 2016 Posted July 31, 2016 you can't be expelled if you are the party leader. :D Ohh you can, in such cases :D Anyway, not big deal what message you will see, who cares ^_^
0 Tessa Posted July 31, 2016 Posted July 31, 2016 Ohh you can, in such cases :D Anyway, not big deal what message you will see, who cares ^_^ Technically you can, yes, of course. :D
0 rullezz Posted July 31, 2016 Author Posted July 31, 2016 This man uses leaked aCis sources. You all ready to help everyone the cheap user who don't respect a work of another people? :dat: one my friend give it to me bcuz of my problems with money... :( Anyway...that what i use is all ready shared at our russian forums :P so...
0 iSquid Posted July 31, 2016 Posted July 31, 2016 one my friend give it to me bcuz of my problems with money... :( Anyway...that what i use is all ready shared at our russian forums :P so... No money for food :(
Question
rullezz
Hello, i using this TvT Event on aCis re 362.
http://pastebin.com/GWcRXUXj
When i press SHIFT button i can target another players which are not participated at event....and players which don't participated at event can target with SHIFT button players wich are participated at event.
How i can fix it? :)
36 answers to this question
Recommended Posts