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

Реализация S80 на хрониках Interlude [без изменений в ядре]

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

В общем такая ситуация:

Добавил на сервер Dynasty armor и weapon. Но хочется сделать так, чтобы они одевались без штрафов только с 80 уровня(ну или вообще не одевались до 80).

Думал в качестве примера использовать части Apella сета

<item id='7861' name="Apella Plate Armor">
  <cond msgId="1518">
    <player pledgeClass="5"/>
  </cond>
  <for>
    <add val='278' order='0x10' stat='pDef'/>
    <enchant val='0' order='0x0C' stat='pDef'/>
  </for>
</item>

но никакие изменения 3-ей строки кода не помогли. Вообще реально ли такое сделать без изменений ядра?

И конечно же я забыл указать о том что сборка Lucera

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

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


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

Да,перенести s грейд на 80 уровень,и сделать остальное А.

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


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

В общем такая ситуация:

Добавил на сервер Dynasty armor и weapon. Но хочется сделать так, чтобы они одевались без штрафов только с 80 уровня(ну или вообще не одевались до 80).

Думал в качестве примера использовать части Apella сета

<item id='7861' name="Apella Plate Armor">
  <cond msgId="1518">
    <player pledgeClass="5"/>
  </cond>
  <for>
    <add val='278' order='0x10' stat='pDef'/>
    <enchant val='0' order='0x0C' stat='pDef'/>
  </for>
</item>

но никакие изменения 3-ей строки кода не помогли. Вообще реально ли такое сделать без изменений ядра? 

попробуй это 

 

<skill id="2286" levels="6" name="Scroll: Recovery (No Grade)"> 
    <table name="#itemConsumeId">8594 8595 8596 8597 8598 8599</table>  
    <table name="#levelMin">1 20 40 52 61 76</table>  
    <table name="#levelMax">19 39 51 60 75 85</table>  
    <set name="magicType" val="SPECIAL"/>  
    <set name="icon" val="icon.skill0000"/>  
    <set name="magicLevel" val="1"/>  
    <set name="target" val="TARGET_SELF"/>  
    <set name="skillType" val="DEATH_PENALTY"/>  
    <set name="operateType" val="OP_ACTIVE"/>  
    <set name="itemConsumeId" val="#itemConsumeId"/>  
    <set name="itemConsumeCount" val="1"/>  
    <set name="isHandler" val="true"/>  
    <cond msgId="1902"> 
      <and> 
        <player minLevel="#levelMin"/>  
        <player maxLevel="#levelMax"/> 
      </and> 
    </cond> 
  </skill>  
 
в том плане что бонусы от сета будут даваться лишь на 80 в твоем случае.... но одевать можно будет как обычный к примеру.... грубо говоря если персонаж будет 79 лвл в династии = тоже самое что 76 в запечатанном ИК)))  думаю так будет проще всего
Изменено пользователем MrDozoR
  • Upvote 1

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


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

 

попробуй это 

 

<skill id="2286" levels="6" name="Scroll: Recovery (No Grade)"> 
    <table name="#itemConsumeId">8594 8595 8596 8597 8598 8599</table>  
    <table name="#levelMin">1 20 40 52 61 76</table>  
    <table name="#levelMax">19 39 51 60 75 85</table>  
    <set name="magicType" val="SPECIAL"/>  
    <set name="icon" val="icon.skill0000"/>  
    <set name="magicLevel" val="1"/>  
    <set name="target" val="TARGET_SELF"/>  
    <set name="skillType" val="DEATH_PENALTY"/>  
    <set name="operateType" val="OP_ACTIVE"/>  
    <set name="itemConsumeId" val="#itemConsumeId"/>  
    <set name="itemConsumeCount" val="1"/>  
    <set name="isHandler" val="true"/>  
    <cond msgId="1902"> 
      <and> 
        <player minLevel="#levelMin"/>  
        <player maxLevel="#levelMax"/> 
      </and> 
    </cond> 
  </skill>  
 
в том плане что бонусы от сета будут даваться лишь на 80 в твоем случае.... но одевать можно будет как обычный к примеру.... грубо говоря если персонаж будет 79 лвл в династии = тоже самое что 76 в запечатанном ИК)))  думаю так будет проще всего

 

Увы но я так понял это не то что он хотел.Он хочет сделать свой грейд чтобы давался пенальти и т.п.

Мой вариант был проще всего.

 

Открываешь базу,ищешь ИД экспертизы S грейд,исправляешь по базе в изучении скилов с какого уровня она будет даваться.Т.е. 80 в твоем случае.

И S грейд можно будет одеть на 80-м уровне.

  • Upvote 1

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


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

попробуй это 

 

<skill id="2286" levels="6" name="Scroll: Recovery (No Grade)"> 

    <table name="#itemConsumeId">8594 8595 8596 8597 8598 8599</table>  

    <table name="#levelMin">1 20 40 52 61 76</table>  

    <table name="#levelMax">19 39 51 60 75 85</table>  

    <set name="magicType" val="SPECIAL"/>  

    <set name="icon" val="icon.skill0000"/>  

    <set name="magicLevel" val="1"/>  

    <set name="target" val="TARGET_SELF"/>  

    <set name="skillType" val="DEATH_PENALTY"/>  

    <set name="operateType" val="OP_ACTIVE"/>  

    <set name="itemConsumeId" val="#itemConsumeId"/>  

    <set name="itemConsumeCount" val="1"/>  

    <set name="isHandler" val="true"/>  

    <cond msgId="1902"> 

      <and> 

        <player minLevel="#levelMin"/>  

        <player maxLevel="#levelMax"/> 

      </and> 

    </cond> 

  </skill>  

 

в том плане что бонусы от сета будут даваться лишь на 80 в твоем случае.... но одевать можно будет как обычный к примеру.... грубо говоря если персонаж будет 79 лвл в династии = тоже самое что 76 в запечатанном ИК)))  думаю так будет проще всего

 

Забыл изначально указать что использую Люцеру, а в ней скил который ты предложил выглядит так

	<skill id="2286" levels="6" name="Scroll: Recovery">
		<set name="target" val="TARGET_SELF"/>
		<set name="skillType" val="BUFF"/>
		<set name="operateType" val="OP_ACTIVE"/>
	</skill>

Короче взял кусок из скила что ты написал, получилось такое

 

    

<skill id="9998" levels="1" name="Dynasty Light set">
<set name="target" val="TARGET_SELF"/>
        <set name="skillType" val="BUFF"/>
        <set name="operateType" val="OP_PASSIVE"/>
        <set name="castRange" val="-1"/>
        <set name="effectRange" val="-1"/>
<table name="#levelMin">80</table>  
<table name="#levelMax">80</table> 
<cond msgId="2136"> 
<and> 
<player minLevel="#levelMin"/>  
<player maxLevel="#levelMax"/> 
</and> 
</cond> 
<for>
<mul order="0x30" stat="pAtkSpd" val="1.12"/>
<mul order="0x30" stat="pAtk" val="1.12"/>
<add order="0x40" stat="rEvas" val="7"/>
<add order="0x40" stat="accCombat" val="4"/>
<mul order="0x30" stat="rCrit" val="1.10"/>
<add order="0x40" stat="maxMp" val="900"/>
<add order="0x40" stat="maxHp" val="600"/>
<mul order="0x30" stat="sleepVuln" val="0.3"/> 
<mul order="0x30" stat="slowVuln" val="0.35"/>
<add order="0x40" stat="DEX" val="1"/>
        </for>

    </skill> 

 

 

 

Но в итоге при загрузке GS такая ошибка выскакивает

 

    

[WARN 15:10:54]: Error while parsing skill id 9998, level 1
java.lang.IllegalStateException: Invalid attribute at <player>: minLevel='80'
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parsePla
yerCondition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parsePla
yerCondition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseCon
dition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseExi
stingConditionInsideLogic(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseLog
icAnd(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseCon
dition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseExi
stingCondition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseCon
ditionWithMessage(Unknown Source)
        at ru.catssoftware.gameserver.skills.DocumentBase.parseConditionWithMess
age(Unknown Source)
        at ru.catssoftware.gameserver.skills.DocumentSkill.attach(Unknown Source
)
        at ru.catssoftware.gameserver.skills.DocumentSkill.parseSkill(Unknown So
urce)
        at ru.catssoftware.gameserver.skills.DocumentSkill.parseDefaultNode(Unkn
own Source)
        at ru.catssoftware.gameserver.skills.DocumentBase.parseDocument(Unknown
Source)
        at ru.catssoftware.gameserver.skills.DocumentBase.parse(Unknown Source)
        at ru.catssoftware.gameserver.skills.SkillsEngine.loadSkills(Unknown Sou
rce)
        at ru.catssoftware.gameserver.datatables.SkillTable.<init>(Unknown Sourc
e)
        at ru.catssoftware.gameserver.datatables.SkillTable.getInstance(Unknown
Source)
        at ru.catssoftware.gameserver.L2GameServer.<init>(Unknown Source)
        at ru.catssoftware.gameserver.util.BootManager.<init>(Unknown Source)
        at ru.catssoftware.gameserver.util.BootManager.main(Unknown Source)

 

 

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


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

а зачем лепить уровень туда же?

<skill id="9998" levels="1" name="Dynasty Light set">
<set name="target" val="TARGET_SELF"/>
        <set name="skillType" val="BUFF"/>
        <set name="operateType" val="OP_PASSIVE"/>
        <set name="castRange" val="-1"/>
        <set name="effectRange" val="-1"/>
  <cond msgId="1902">
   <and>
    <player minLevel="80"/>
   </and>
</cond>
<for>
<mul order="0x30" stat="pAtkSpd" val="1.12"/>
<mul order="0x30" stat="pAtk" val="1.12"/>
<add order="0x40" stat="rEvas" val="7"/>
<add order="0x40" stat="accCombat" val="4"/>
<mul order="0x30" stat="rCrit" val="1.10"/>
<add order="0x40" stat="maxMp" val="900"/>
<add order="0x40" stat="maxHp" val="600"/>
<mul order="0x30" stat="sleepVuln" val="0.3"/>
<mul order="0x30" stat="slowVuln" val="0.35"/>
<add order="0x40" stat="DEX" val="1"/>
</for>
<skill id="9998" levels="1" name="Dynasty Light set">
<set name="target" val="TARGET_SELF"/>
        <set name="skillType" val="BUFF"/>
		<table name="#minLevel">80</table>
        <set name="operateType" val="OP_PASSIVE"/>
        <set name="castRange" val="-1"/>
        <set name="effectRange" val="-1"/>
		<cond msgId="1902">
			<and>
				<player minLevel="#minLevel"/>
			</and>
 </cond>
<for>
<mul order="0x30" stat="pAtkSpd" val="1.12"/>
<mul order="0x30" stat="pAtk" val="1.12"/>
<add order="0x40" stat="rEvas" val="7"/>
<add order="0x40" stat="accCombat" val="4"/>
<mul order="0x30" stat="rCrit" val="1.10"/>
<add order="0x40" stat="maxMp" val="900"/>
<add order="0x40" stat="maxHp" val="600"/>
<mul order="0x30" stat="sleepVuln" val="0.3"/> 
<mul order="0x30" stat="slowVuln" val="0.35"/>
<add order="0x40" stat="DEX" val="1"/>
</for>

 

 

 

у апеллы плита id=7861 и скилл 7861

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

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


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

а, что  ограничение просто по лвл нельзя дать ?

типо что покамись ты 19 лвл ты не можешь  одеть шмотки 20 лвл,

 

ну 

 

а, в даном случае с 79 покамись не станешь 80 .

 

 

Я просто не знаю на lucera в настройках  конфига если такое , просто на не которых сборках есть такая хрень

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


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

 

Забыл изначально указать что использую Люцеру, а в ней скил который ты предложил выглядит так

	<skill id="2286" levels="6" name="Scroll: Recovery">
		<set name="target" val="TARGET_SELF"/>
		<set name="skillType" val="BUFF"/>
		<set name="operateType" val="OP_ACTIVE"/>
	</skill>

Короче взял кусок из скила что ты написал, получилось такое

 

    

<skill id="9998" levels="1" name="Dynasty Light set">
<set name="target" val="TARGET_SELF"/>
        <set name="skillType" val="BUFF"/>
        <set name="operateType" val="OP_PASSIVE"/>
        <set name="castRange" val="-1"/>
        <set name="effectRange" val="-1"/>
<table name="#levelMin">80</table>  
<table name="#levelMax">80</table> 
<cond msgId="2136"> 
<and> 
<player minLevel="#levelMin"/>  
<player maxLevel="#levelMax"/> 
</and> 
</cond> 
<for>
<mul order="0x30" stat="pAtkSpd" val="1.12"/>
<mul order="0x30" stat="pAtk" val="1.12"/>
<add order="0x40" stat="rEvas" val="7"/>
<add order="0x40" stat="accCombat" val="4"/>
<mul order="0x30" stat="rCrit" val="1.10"/>
<add order="0x40" stat="maxMp" val="900"/>
<add order="0x40" stat="maxHp" val="600"/>
<mul order="0x30" stat="sleepVuln" val="0.3"/> 
<mul order="0x30" stat="slowVuln" val="0.35"/>
<add order="0x40" stat="DEX" val="1"/>
        </for>

    </skill> 

 

 

 

Но в итоге при загрузке GS такая ошибка выскакивает

 

    

[WARN 15:10:54]: Error while parsing skill id 9998, level 1
java.lang.IllegalStateException: Invalid attribute at <player>: minLevel='80'
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parsePla
yerCondition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parsePla
yerCondition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseCon
dition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseExi
stingConditionInsideLogic(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseLog
icAnd(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseCon
dition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseExi
stingCondition(Unknown Source)
        at ru.catssoftware.gameserver.skills.conditions.ConditionParser.parseCon
ditionWithMessage(Unknown Source)
        at ru.catssoftware.gameserver.skills.DocumentBase.parseConditionWithMess
age(Unknown Source)
        at ru.catssoftware.gameserver.skills.DocumentSkill.attach(Unknown Source
)
        at ru.catssoftware.gameserver.skills.DocumentSkill.parseSkill(Unknown So
urce)
        at ru.catssoftware.gameserver.skills.DocumentSkill.parseDefaultNode(Unkn
own Source)
        at ru.catssoftware.gameserver.skills.DocumentBase.parseDocument(Unknown
Source)
        at ru.catssoftware.gameserver.skills.DocumentBase.parse(Unknown Source)
        at ru.catssoftware.gameserver.skills.SkillsEngine.loadSkills(Unknown Sou
rce)
        at ru.catssoftware.gameserver.datatables.SkillTable.<init>(Unknown Sourc
e)
        at ru.catssoftware.gameserver.datatables.SkillTable.getInstance(Unknown
Source)
        at ru.catssoftware.gameserver.L2GameServer.<init>(Unknown Source)
        at ru.catssoftware.gameserver.util.BootManager.<init>(Unknown Source)
        at ru.catssoftware.gameserver.util.BootManager.main(Unknown Source)

 

 

Либо поищи аналог 

<player minLevel="#levelMin"/>  

<player maxLevel="#levelMax"/>     в своей сборке - например эликсиры.... если нет такого условия тогда без ядра никак(((

  • Upvote 1

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


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

В общем нифига у меня не получилось сделать так как я хотел. Максимального эффекта достиг лишь добавив в  каждую часть сета строки(которые закомментированы):

<item id='23177' name="Dynasty Helm (Legendary)">
<!--   <cond msgId="1902">
    <or>
      <player grade="6"/>
    </or>
  </cond> -->
<for>
    <add val='92' order='0x10' stat='pDef'/>
    <enchant val='0' order='0x0C' stat='pDef'/>
</for>
</item>

Загрузка сервера проходит нормально, но вот простому чару 80-го уровня при попытке одеть часть армора вылетает системное сообщение

 

pre_1477662591__grade.jpg

 

идея откладывается в долгий ящик  :rofl:

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


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

Для того что бы шмот не одевался вобше

Ставьте подобные парамеиры в кажлую вещ

<cond msgId="1902"> <and> <player minLevel="80"/> </and> </cond>

. Если же чтобы одевался но не давал бонусов от сета то даный параметр нужно запихнуть в сам скил.

<cond msgId="1902"> <and> <player minLevel="80"/> </and> </cond>

Ну или пойти путем полезть в ядро.

Если у вас незнание по компилу то не страшно. Научетесь есть нужные мануалы на форуме. Вам нужно взять програмку поимковик. Которая ишет в папке слово которое вы напишите плюс ишет в самих вайлах. И искать значение ng d c b a s грейда

И копировать строчьку с s грейдом и изменить под себя.дописав там лвл не 76 а 80.. если нет исходников. То найдите нужный вам файл в сурсах от любой ревы вашей сборки. И по тому пути извлеките ее с помошю декомпилятора. Есть мануал.

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


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

Для того что бы шмот не одевался вобше

Ставьте подобные парамеиры в кажлую вещ

<cond msgId="1902"> <and> <player minLevel="80"/> </and> </cond>

. Если же чтобы одевался но не давал бонусов от сета то даный параметр нужно запихнуть в сам скил.

<cond msgId="1902"> <and> <player minLevel="80"/> </and> </cond>

Ну или пойти путем полезть в ядро.

Если у вас незнание по компилу то не страшно. Научетесь есть нужные мануалы на форуме. Вам нужно взять програмку поисковик. Которая ишет в папке слово которое вы напишите плюс ишет в самих вайлах. И искать значение ng d c b a s грейда

И копировать строчьку с s грейдом и изменить под себя.дописав там лвл не 76 а 80.. если нет исходников. То найдите нужный вам файл в сурсах от любой ревы вашей сборки. И по тому пути извлеките ее с помошю декомпилятора. Есть мануал. Отредактируйте и впитхните обратно

Извените за ошибки рус не учил та и с телефона пишу

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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