Hello community!
I wanted to add anti feed for my interlude project but all the shares i found was about that when the fight is started, it checkes the ips of players and if ips are the same, the fight result was tie!
So the new code...
First, checks all the olympiad participant ips
Then, matches the participants so all the fights have different ips (no dual boxes)
Finaly, if all the participants have the same ip, the current round of fighting is passed and the participation list is cleared
otherwhise the olympiad fights begin (only for the players that could be matched)!
The code is tested at Interlude project.
Let me know if any bugs are found....
All credits go to me!
The patch must be added @ gameserver/olympiad.java
_type = type;
_stadiumPort = stadiumPort;
_spectators = new FastList<L2PcInstance>();
if (list != null)
{
_players = list;
_playerOne = list.get(0);
_playerTwo = list.get(1);
+ String playerOneIp = _playerOne.getClient().getConnection().getInetAddress().getHostAddress();
+ String playerTwoIp = _playerTwo.getClient().getConnection().getInetAddress().getHostAddress();
+
+ int i=1;
+ int playerCount = list.size();
+ while (playerCount > (i+1) && !(Config.ALT_OLY_SAME_IP) && playerOneIp.equals(playerTwoIp))
+ {
+ i++;
+ _playerTwo = list.get(i);
+ playerTwoIp = _playerTwo.getClient().getConnection().getInetAddress().getHostAddress();
+ }
+
+ if(!playerOneIp.equals(playerTwoIp) || (Config.ALT_OLY_SAME_IP))
+ {
try {
_playerOneName = _playerOne.getName();
_playerTwoName = _playerTwo.getName();
_playerOne.setOlympiadGameId(id);
_playerTwo.setOlympiadGameId(id);
_playerOneID = _playerOne.getObjectId();
_playerTwoID = _playerTwo.getObjectId();
}
catch (Exception e) {
_aborted = true;
clearPlayers();
}
_log.info("Olympiad System: Game - " + id + ": "
+ _playerOne.getName() + " Vs " + _playerTwo.getName());
+ }
+ else
+ {
+ _aborted = true;
+ _compStarted = false;
+ clearPlayers();
+ _log.info("All olympiad participants are bots!");
+ return;
+ }
}
else
{
_aborted = true;
clearPlayers();
return;
}
}
protected void removals()
{
if (_aborted) return;
@config.java
public static boolean LOG_CHAT;
/** Logging Item Window */
public static boolean LOG_ITEMS;
/** Refresh Skills on Olympiad enter */
public static boolean REFRESH_SKILLS_ON_OLYMPIAD_ENTER;
+ /** Olympiad Allow Botting */
+ public static boolean ALT_OLY_SAME_IP;
ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = Integer.parseInt(altSettings.getProperty("DaysBeforeCreateNewAllyWhenDissolved", "10"));
REFRESH_SKILLS_ON_OLYMPIAD_ENTER = Boolean.parseBoolean(altSettings.getProperty("AltRefreshSkillsOnOlyEnter", "true"));
+ ALT_OLY_SAME_IP = Boolean.parseBoolean(altSettings.getProperty("AltOlySameIp", "true"));