• SiteAnalyzer, технический и SEO-анализ сайтов

Награда за убийства

  • Автор темы Автор темы novich
  • Дата начала Дата начала

novich

Рядовой
Есть в сборках функция наград за убийства, которая перестает работать, если изменить цифры требуемых убийств, вот строки из ядра, больше в сборке ничего связанного с убийствами и наградами не нашел, кроме конфига, там меняются только сообщения при получении награды.
Как такое может быть, что при одних цифрах всё работает, а при других перестаёт совсем?
Код:
if (this.getKillsFor(winner.getObjectId(), victim.getObjectId()) < CustomConfig.MAX_DAILY_PVP_KILLS) {
			winner.getAbyssRank().setAllKill();
			int kills = winner.getAbyssRank().getAllKill();
			// Pvp Kill Reward.
			if (CustomConfig.ENABLE_KILL_REWARD) {
				if (kills % CustomConfig.KILLS_NEEDED1 == 5) {
					ItemService.addItem(winner, CustomConfig.REWARD1, 1);
					PacketSendUtility.sendMessage(winner, "Congratulations, you have won " + "[item: " + CustomConfig.REWARD1
						+ "] for having killed " + CustomConfig.KILLS_NEEDED1 + " players !");
					log.info("[REWARD] Player [" + winner.getName()+ "] win 6 [" + CustomConfig.REWARD1 + "]");
				}
				if (kills % CustomConfig.KILLS_NEEDED2 == 15) {
					ItemService.addItem(winner, CustomConfig.REWARD2, 1);
					PacketSendUtility.sendMessage(winner, "Congratulations, you have won " + "[item: " + CustomConfig.REWARD2
						+ "] for having killed " + CustomConfig.KILLS_NEEDED2 + " players !");
					log.info("[REWARD] Player [" + winner.getName()+ "] win 16 [" + CustomConfig.REWARD2 + "]");
				}
				if (kills % CustomConfig.KILLS_NEEDED3 == 20) {
					ItemService.addItem(winner, CustomConfig.REWARD3, 1);
					PacketSendUtility.sendMessage(winner, "Congratulations, you have won " + "[item: " + CustomConfig.REWARD3
						+ "] for having killed " + CustomConfig.KILLS_NEEDED3 + " players !");
					log.info("[REWARD] Player [" + winner.getName()+ "] win 21 [" + CustomConfig.REWARD3 + "]");
				}
			}
		}
 
Вернее в конфиге меняется даже не сообщение о награде, а только сообщение в цифрах. То есть если в ядре при 5 убийствах, а в конфиге 15 награда, то при 5 убийствах выдается награда с надписью о награде за 15 убийств. Ладно эти надписи, но при любом изменении в ядре функция просто перестаёт работать.. И на новых персонажах и с чистыми базами...
Код:
# Enable the rewards for pvp kills
# Default: true
# (Reset all_kill from abyss_rank table before activate it)
gameserver.kill.reward.enable = true

# Set the kills needed to get a reward (do NOT set config to 0)
# Default: 5
gameserver.kills.needed1 = 1

# Default: 10
gameserver.kills.needed2 = 3
# Default: 15
gameserver.kills.needed3 = 5

# Select the item reward for pvp kills
# Default: 186000031 (Silver Medal)
gameserver.item.reward1 = 186000030

# Default: 186000030 (Golden Medal)
gameserver.item.reward2 = 186000096

# Default: 186000096 (Platinum Medal)
gameserver.item.reward3 = 188051103
 
Так нужно менять там и там цыфры, какой то дебил не удосужился все вынести в конфиг, выходит в любом случае если первый конфиг равен к примеру 5 и в ядре это проверяется как ==5 то тогда сработает.
 
Так нужно менять там и там цыфры, какой то дебил не удосужился все вынести в конфиг, выходит в любом случае если первый конфиг равен к примеру 5 и в ядре это проверяется как ==5 то тогда сработает.
ну так я так и делаю, однако не работает...
 
Так нужно менять там и там цыфры, какой то дебил не удосужился все вынести в конфиг, выходит в любом случае если первый конфиг равен к примеру 5 и в ядре это проверяется как ==5 то тогда сработает.
скажу больше, работает когда в ядре 1 3 5, а в конфиге 5 10 15 (дефолтно стояло)
то есть никакой закономерности даже нет, как теперь поступить?
 
Учитывай что там ещё берет
int kills = winner.getAbyssRank().getAllKill();
Все килы.
 
Учитывай что там ещё берет
int kills = winner.getAbyssRank().getAllKill();
Все килы.
ну что с этим столбцом что-то есть я понял, однако при чем тут он если работает 1 3 5, но не работают любые другие числа да и вообще, у нового персонажа же все чисто в ранге
 
Код:
if (kills % CustomConfig.KILLS_NEEDED1 == 1)
gameserver.kills.needed1 = 1
не работает
Код:
if (kills % CustomConfig.KILLS_NEEDED1 == 1)
gameserver.kills.needed1 = 5
работает.

Что нужно курить, чтобы понять как это работает?
 
еще в ядре есть конфиг, его тоже менял, всё безуспешно, работает только дефолтная чушь 1, 3, 5 = 5, 10, 15
Код:
	@Property(key = "gameserver.kills.needed1", defaultValue = "5")
	public static int KILLS_NEEDED1;
	@Property(key = "gameserver.kills.needed2", defaultValue = "15")
	public static int KILLS_NEEDED2;
	@Property(key = "gameserver.kills.needed3", defaultValue = "20")
	public static int KILLS_NEEDED3;
 
а ты после того как изменил в конфиге , в базе надеюсь количество убийств обнуляешь )?
 
ну а ты формулу посчитай )) оно и не будет работать ))
а что у меня не так? кажется вы невнимательно прочли, работает только при не соответствии формул, в конфиге 10, а в ядре 3, а при правильности формул работать перестает
 
Код:
if (CustomConfig.ENABLE_KILL_REWARD) {
				if (kills % CustomConfig.KILLS_NEEDED1 == 1) {
					ItemService.addItem(winner, CustomConfig.REWARD1, 1);
					PacketSendUtility.sendMessage(winner, "Congratulations, you have won " + "[item: " + CustomConfig.REWARD1
						+ "] for having killed " + CustomConfig.KILLS_NEEDED1 + " players !");
					log.info("[REWARD] Player [" + winner.getName()+ "] win 2 [" + CustomConfig.REWARD1 + "]");
				}
				if (kills % CustomConfig.KILLS_NEEDED2 == 3) {
					ItemService.addItem(winner, CustomConfig.REWARD2, 1);
					PacketSendUtility.sendMessage(winner, "Congratulations, you have won " + "[item: " + CustomConfig.REWARD2
						+ "] for having killed " + CustomConfig.KILLS_NEEDED2 + " players !");
					log.info("[REWARD] Player [" + winner.getName()+ "] win 4 [" + CustomConfig.REWARD2 + "]");
				}
				if (kills % CustomConfig.KILLS_NEEDED3 == 5) {
					ItemService.addItem(winner, CustomConfig.REWARD3, 1);
					PacketSendUtility.sendMessage(winner, "Congratulations, you have won " + "[item: " + CustomConfig.REWARD3
						+ "] for having killed " + CustomConfig.KILLS_NEEDED3 + " players !");
					log.info("[REWARD] Player [" + winner.getName()+ "] win 6 [" + CustomConfig.REWARD3 + "]");
				}
			}

Код:
if(CustomConfig.ENABLE_KILL_REWARD)
		{
			if (kills % CustomConfig.KILLS_NEEDED1 == 1)
			{
				ItemService.addItem(winner, CustomConfig.REWARD1, 2);
				PacketSendUtility.sendMessage(winner, "Felicitation Vous Avez Gagnez 2" + "[item: " + CustomConfig.REWARD1 + "] Pour " + CustomConfig.KILLS_NEEDED1 + " Avoir Tuer");
			}
			if (kills % CustomConfig.KILLS_NEEDED2 == 3)
			{
				ItemService.addItem(winner, CustomConfig.REWARD2, 4);
				PacketSendUtility.sendMessage(winner, "Felicitation Vous Avez Gagnez 4" + "[item: " + CustomConfig.REWARD2 + "] Pour " + CustomConfig.KILLS_NEEDED2 + " Avoir Tuer");
			}  
			if (kills % CustomConfig.KILLS_NEEDED3 == 5)
			{
				ItemService.addItem(winner, CustomConfig.REWARD3, 6);
				PacketSendUtility.sendMessage(winner, "Felicitation Vous Avez Gagnez 6" + "[item: " + CustomConfig.REWARD3 + "] Pour " + CustomConfig.KILLS_NEEDED3 + " Avoir Tuer");
			}
		}
Спасибо, но вроде они одинаковы
 
Назад
Сверху