lotos 0 Опубликовано 7 июля, 2013 Добрый день! У меня возникла проблема. Смысл скрипта, чтобы он кидал скил на противника, после того как игрок кинет первый скил, то есть я нажал скил КАРТЫ и после него на противника кинулся другой скил автоматически. Пытался сделать через СВИТЧ, но не фига не выходит. Заранее спасибо ) private static final int SKILL_UP = 11; public String onSkillSee(L2Npc npc, L2PcInstance player, L2PcInstance caster, L2Skill skill, L2Object[] targets, boolean isPet) { if (contains(targets,player) && (skill.getId() == SKILL_UP)) { switch(skill.getId() ) { case 1011: break; } } return super.onSkillSee(npc,caster,skill,targets,isPet); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BrainEater 217 Опубликовано 7 июля, 2013 Как бы тут case скила пустой. В case нужно заряжать действие происходящее при юзе скила 1011 причем смотреть, как в принципе используется данный метод. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lotos 0 Опубликовано 7 июля, 2013 В 07.07.2013 в 12:34, BrainEater сказал: Как бы тут case скила пустой. В case нужно заряжать действие происходящее при юзе скила 1011 причем смотреть, как в принципе используется данный метод. Можешь кинуть образец, пожалуйста ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BrainEater 217 Опубликовано 7 июля, 2013 В твоем конкретном случае нет, ибо не знаю, по какому принципу он используется. Но допустим, сделать эффект скилу на подобии: int[] skillIds = getTemplate().getParam().getIntegerArray("skillIds"); int[] skillLevels = getTemplate().getParam().getIntegerArray("skillLevels"); for(int i = 0; i < skillIds.length; i++) { Skill skill = SkillTable.getInstance().getInfo(skillIds[i], skillLevels[i]); if(skill == null) { continue; } for(Creature cha : skill.getTargets(getEffector(), getEffected(), false)) { getEffector().broadcastPacket(new MagicSkillUse(getEffector(), cha, skillIds[i], skillLevels[i], 0, 0)); } getEffector().callSkill(skill, skill.getTargets(getEffector(), getEffected(), false), false); } skillIds и skillLevels должны считываться из параметра скилов, либо с конкретным указанием в эффекте. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lotos 0 Опубликовано 7 июля, 2013 В 07.07.2013 в 13:06, BrainEater сказал: В твоем конкретном случае нет, ибо не знаю, по какому принципу он используется. Но допустим, сделать эффект скилу на подобии: int[] skillIds = getTemplate().getParam().getIntegerArray("skillIds"); int[] skillLevels = getTemplate().getParam().getIntegerArray("skillLevels"); for(int i = 0; i < skillIds.length; i++) { Skill skill = SkillTable.getInstance().getInfo(skillIds[i], skillLevels[i]); if(skill == null) { continue; } for(Creature cha : skill.getTargets(getEffector(), getEffected(), false)) { getEffector().broadcastPacket(new MagicSkillUse(getEffector(), cha, skillIds[i], skillLevels[i], 0, 0)); } getEffector().callSkill(skill, skill.getTargets(getEffector(), getEffected(), false), false); } skillIds и skillLevels должны считываться из параметра скилов, либо с конкретным указанием в эффекте. ого, спасибо )) только вот я нереально запутался ))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BrainEater 217 Опубликовано 7 июля, 2013 Как бы там ни было, это надо будет переделать под твою основу сборки. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lotos 0 Опубликовано 7 июля, 2013 Может у кого-то еще есть предложения как это реализовать ?? Я бы не отказался от помощи ))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 7 июля, 2013 Во-первых, я не понимаю зачем ты в условии сравниваешь скилл_ап (ид 11), а потом через case пытаешься найти 1011 ид? Во-вторых, скилл должен скатоваться или просто еффект накладываться? Опиши более конкретно все, а потом я тебе скажу как действовать дальше, можно и в личку. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lotos 0 Опубликовано 7 июля, 2013 В 07.07.2013 в 14:46, Naik сказал: Во-первых, я не понимаю зачем ты в условии сравниваешь скилл_ап (ид 11), а потом через case пытаешься найти 1011 ид? Во-вторых, скилл должен скатоваться или просто еффект накладываться? Опиши более конкретно все, а потом я тебе скажу как действовать дальше, можно и в личку. После того как игрок использовал скил (ид которого я указал в скрипте) сразу будет кастоваться другой скил (который будет указан в скрипте). Я просто новичок, вот поэтому в верхнем скрипте столько фигни ))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lotos 0 Опубликовано 7 июля, 2013 Может через XML можно как-то ?? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BrainEater 217 Опубликовано 7 июля, 2013 Если скилы в xml, то возможно в ядре реализован эффект вызова скила, соответственно его можно будет прикрутить, например: <for> <effect count="0x7fffffff" name="CallSkills" time="5" val="0"> <def name="skillIds" val="ID" /> <def name="skillLevels" val="LEVEL" /> </effect> </for> 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lotos 0 Опубликовано 7 июля, 2013 В 07.07.2013 в 16:28, BrainEater сказал: Если скилы в xml, то возможно в ядре реализован эффект вызова скила, соответственно его можно будет прикрутить, например: <for> <effect count="0x7fffffff" name="CallSkills" time="5" val="0"> <def name="skillIds" val="ID" /> <def name="skillLevels" val="LEVEL" /> </effect> </for> Спасибо )) НО я не уверен что там такое есть )) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BrainEater 217 Опубликовано 7 июля, 2013 А взять декомпилятор и глянуть эффекты в ядре кто не позволяет? 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты