Перейти к содержанию
Авторизация  
Tinker

Найти Число Из Массива

Рекомендуемые сообщения

    int[] MOB_ID = new int[]{1, 2, 3, 4, 5};
    if(mob.getNpcId() == MOB_ID){
	    return false;
	 }

 

Пытался вот так, не компилит

 

с меня спасибки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

error: incomparable types: int and int[]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а вообще должно быть так

int[] MOB_ID = new int[]{1, 2, 3, 4, 5};
		    if(mob.getNpcId() == Rnd.get(MOB_ID)){
				    return false;
			 }

Изменено пользователем KillerProMW

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
[javac] D:\ft\sources\dist\gameserver\data\scripts\events\CustomDropItems\CustomDropItems.java:120: error: incomparable types: int and int[]
[javac]   if(mob.getNpcId() == FORBID_MOBS_ID)
[javac]                               ^

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[javac] D:\ft\sources\dist\gameserver\data\scripts\events\CustomDropItems\CustomDropItems.java:120: error: incomparable types: int and int[]
[javac] if(mob.getNpcId() == FORBID_MOBS_ID)
[javac] ^

 

ловите рабочий скрипт

 

 

package events.CustomDropItems;

import l2ft.commons.util.Rnd;
import l2ft.gameserver.Config;
import l2ft.gameserver.listener.actor.OnDeathListener;
import l2ft.gameserver.model.Creature;
import l2ft.gameserver.model.actor.listener.CharListenerList;
import l2ft.gameserver.model.instances.MonsterInstance;
import l2ft.gameserver.model.instances.NpcInstance;
import l2ft.gameserver.model.instances.RaidBossInstance;
import l2ft.gameserver.scripts.Functions;
import l2ft.gameserver.scripts.ScriptFile;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CustomDropItems extends Functions implements ScriptFile, OnDeathListener
{
private static final Logger _log = LoggerFactory.getLogger(CustomDropItems.class);

private static final int[] DROP = Config.CDItemsId;
private static final int[] CDItemsCountDropMin = Config.CDItemsCountDropMin;
private static final int[] CDItemsCountDropMax = Config.CDItemsCountDropMax;
private static final double[] CustomDropItemsChance = Config.CustomDropItemsChance;
private static boolean ALLOW_MIN_MAX_PLAYER_LVL = Config.CDItemsAllowMinMaxPlayerLvl;
private static final int MIN_PLAYER_LVL = Config.CDItemsMinPlayerLvl;
private static final int MAX_PLAYER_LVL = Config.CDItemsMaxPlayerLvl;
private static boolean ALLOW_MIN_MAX_MOB_LVL = Config.CDItemsAllowMinMaxMobLvl;
private static final int MIN_MOB_LVL = Config.CDItemsMinMobLvl;
private static final int MAX_MOB_LVL = Config.CDItemsMaxMobLvl;
private static boolean ALLOW_ONLY_RB_DROPS = Config.CDItemsAllowOnlyRbDrops;
private static boolean _active = false;

@Override
public void onLoad()
{
CharListenerList.addGlobal(this);
if(Config.AllowCustomDropItems)
{
_active = true;
_log.info("Loaded CustomDropItems: CustomDropItems [state: activated]");
}
else
_log.info("Loaded CustomDropItems: CustomDropItems [state: deactivated]");
}

@Override
public void onReload()
{

}

@Override
public void onShutdown()
{

}

@Override
public void onDeath(Creature cha, Creature killer)
{
if(!ALLOW_ONLY_RB_DROPS)
{
if((ALLOW_MIN_MAX_PLAYER_LVL && checkValidate(killer, cha, true, false)) && (ALLOW_MIN_MAX_MOB_LVL && checkValidate(killer, cha, false, true)))
{
dropItemMob(cha, killer);
}
else if((ALLOW_MIN_MAX_PLAYER_LVL && checkValidate(killer, cha, true, false)) && !ALLOW_MIN_MAX_MOB_LVL)
{
dropItemMob(cha, killer);
}
else if(!ALLOW_MIN_MAX_PLAYER_LVL && (ALLOW_MIN_MAX_MOB_LVL && checkValidate(killer, cha, false, true)))
{
dropItemMob(cha, killer);
}
else if(!ALLOW_MIN_MAX_PLAYER_LVL && !ALLOW_MIN_MAX_MOB_LVL)
{
dropItemMob(cha, killer);
}
else
return;
}
else if(ALLOW_ONLY_RB_DROPS && (cha.isRaid() || cha.isBoss()))
{
if((ALLOW_MIN_MAX_PLAYER_LVL && checkValidate(killer, cha, true, false)) && (ALLOW_MIN_MAX_MOB_LVL && checkValidate(killer, cha, false, true)))
{
dropItemRb(cha, killer);
}
else if((ALLOW_MIN_MAX_PLAYER_LVL && checkValidate(killer, cha, true, false)) && !ALLOW_MIN_MAX_MOB_LVL)
{
dropItemRb(cha, killer);
}
else if(!ALLOW_MIN_MAX_PLAYER_LVL && (ALLOW_MIN_MAX_MOB_LVL && checkValidate(killer, cha, false, true)))
{
dropItemRb(cha, killer);
}
else if(!ALLOW_MIN_MAX_PLAYER_LVL && !ALLOW_MIN_MAX_MOB_LVL)
{
dropItemRb(cha, killer);
}
else
return;
}
else
return;
}

private boolean checkValidate(Creature killer, Creature mob, boolean lvlPlayer, boolean lvlMob)
{
if(mob == null || killer == null)
return false;

if(lvlPlayer && (killer.getLevel() >= MIN_PLAYER_LVL && killer.getLevel() <= MAX_PLAYER_LVL))
return true;

if(lvlMob && (mob.getLevel() >= MIN_MOB_LVL && mob.getLevel() <= MAX_MOB_LVL))
return true;

return false;
}

private void dropItemMob(Creature cha, Creature killer)
{
if(_active && SimpleCheckDrop(cha, killer))
for(int i = 0; i < DROP.length; i++)
if(Rnd.chance(CustomDropItemsChance[i] * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp))
((MonsterInstance) cha).dropItem(killer.getPlayer(), DROP[i], Rnd.get(CDItemsCountDropMin[i], CDItemsCountDropMax[i]));
else
return;
}

private void dropItemRb(Creature cha, Creature killer)
{
if(_active)
for(int i = 0; i < DROP.length; i++)
if(Rnd.chance(CustomDropItemsChance[i] * killer.getPlayer().getRateItems() * ((NpcInstance) cha).getTemplate().rateHp))
((NpcInstance) cha).dropItem(killer.getPlayer(), DROP[i], Rnd.get(CDItemsCountDropMin[i], CDItemsCountDropMax[i]));
else
return;
}
}

 

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я его и редактирую, мне нужно написать запрет дропа из мобов по ID

 

Rnd.get(MOB_ID)

 

вроде работает

Изменено пользователем Tinker
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
int[] MOB_ID = {1, 2, 3, 4, 5};

Изменено пользователем Nelige
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.к это массив, а ты должег делать через цикл for, обозначить переменную и только в цикле делать рандомный выбор ))

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
int[] mob_id = new int[];
mob_id = {1,3,3,3};
if(ArrayUtils.contains(mob_id,mob.getNpcId())
   rerurn;

  • Upvote 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 int[] MOB_ID = new int[]{1, 2, 3, 4, 5};
 if(mob.getNpcId() == MOB_ID){
	 return false;
	 }

 

Пытался вот так, не компилит

 

с меня спасибки

 

Да блииин...

 

int Mob[] m = new Mob[]{1,2,3};

for(int m : Mob)

{

if(getNpcId() == m)

profit

}

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...