Глюк с item_add и inventory

 
+
-
edit
 

mrSteam

втянувшийся
Для прикола все сделал по примеру обычного квеста.
Собсна код такой.

: on-npc-426-die
'DIE' announce
100 57 item_add
;
После убийства Evil Eye выводится анонс но 100 аден мне никто недает. В серваке наблюдаю слещующее.

java.lang.ClassCastException: net.sf.l2j.gameserver.model.L2MonsterInstance
at net.sf.l2j.gameserver.lib.jbf.words.L2j_items$inventory_add.exec(L2j_
items.java:35)
at net.sf.l2j.gameserver.lib.jbf.JBData.exec(JBData.java:79)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:45)
at net.sf.l2j.gameserver.lib.jbf.JBData.exec(JBData.java:79)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:45)
at net.sf.l2j.gameserver.lib.jbf.JBCore.do_word(JBCore.java:147)
at net.sf.l2j.gameserver.lib.jbf.JBCore.exec(JBCore.java:190)
at net.sf.l2j.gameserver.lib.JBForth.exec(JBForth.java:43)
at net.sf.l2j.gameserver.lib.JBForth.execp(JBForth.java:56)
at net.sf.l2j.gameserver.lib.jbf.Events.onKill(Events.java:40)
at net.sf.l2j.gameserver.model.L2Character.doDie(L2Character.java:2809)
at net.sf.l2j.gameserver.model.L2NpcInstance.doDie(L2NpcInstance.java:13
04)
at net.sf.l2j.gameserver.model.L2Attackable.doDie(L2Attackable.java:447)

at net.sf.l2j.gameserver.model.L2Character.reduceCurrentHp(L2Character.j
ava:2758)
at net.sf.l2j.gameserver.model.L2Attackable.reduceCurrentHp(L2Attackable
.java:390)
at net.sf.l2j.gameserver.model.L2Attackable.reduceCurrentHp(L2Attackable
.java:357)
at net.sf.l2j.gameserver.model.L2Character.onHitTimer(L2Character.java:4
043)
at net.sf.l2j.gameserver.model.L2PcInstance.onHitTimer(L2PcInstance.java
:1990)
at net.sf.l2j.gameserver.model.L2Character$HitTask.run(L2Character.java:
245)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at net.sf.l2j.gameserver.lib.jbf.words.L2j_files._show(L2j_files.java:63
)
at net.sf.l2j.gameserver.lib.jbf.words.L2j_files$pshow.exec(L2j_files.ja
va:48)
at net.sf.l2j.gameserver.lib.jbf.JBData.exec(JBData.java:79)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:45)
at net.sf.l2j.gameserver.lib.jbf.JBCore.do_word(JBCore.java:147)
at net.sf.l2j.gameserver.lib.jbf.JBCore.exec(JBCore.java:190)
at net.sf.l2j.gameserver.lib.JBForth.exec(JBForth.java:43)
at net.sf.l2j.gameserver.lib.JBForth.execp(JBForth.java:56)
at net.sf.l2j.gameserver.lib.jbf.Events.onKill(Events.java:40)
at net.sf.l2j.gameserver.model.L2Character.doDie(L2Character.java:2809)
at net.sf.l2j.gameserver.model.L2NpcInstance.doDie(L2NpcInstance.java:13
04)
at net.sf.l2j.gameserver.model.L2Attackable.doDie(L2Attackable.java:447)

at net.sf.l2j.gameserver.model.L2Character.reduceCurrentHp(L2Character.j
ava:2758)
at net.sf.l2j.gameserver.model.L2Attackable.reduceCurrentHp(L2Attackable
.java:390)
at net.sf.l2j.gameserver.model.L2Attackable.reduceCurrentHp(L2Attackable
.java:357)
at net.sf.l2j.gameserver.model.L2Character.onHitTimer(L2Character.java:4
043)
at net.sf.l2j.gameserver.model.L2PcInstance.onHitTimer(L2PcInstance.java
:1990)
at net.sf.l2j.gameserver.model.L2Character$HitTask.run(L2Character.java:
245)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Баги для читера это средство выживания Баги для админа это веревка и мыло  
+
-
edit
 

Balancer

администратор
★★★★★

Попробуй добавлять по
: on-npc-426-die
'DIE' announce
57 100 killer inventory+!
;

item_add добавляет итем текущему L2Character, а в данном случае им является не игрок, а убитый моб :) В принципе, нужно будет сделать вызов этих слов в контексте пользователя, а не моба.
 
+
-
edit
 

Balancer

администратор
★★★★★

Да, точно, у меня в старом коде ошибка.

Но исправлять сейчас не буду, так как там довольно сильно переделывается всё :) Ещё на день-два при удачном стечении обстоятельств работы.
 
+
-
edit
 

mrSteam

втянувшийся
Да инвентарем тоже пробоал, писанина в серваке наблюдалась такая-же, щас еще раз попробую.
Спасибо за разъяснения.
Ну надеюсь на скорые исправления :D
Баги для читера это средство выживания Баги для админа это веревка и мыло  
+
-
edit
 

Balancer

администратор
★★★★★

С тем вариантом, как я записал, должно работать и без исправления :)
self - идентификатор NPC
killer - идентификатор убившего игрока.
player@ должен быть равным killer (работать практически, как alias), но из-за ошибки указывает на self :)
 
+
-
edit
 

mrSteam

втянувшийся
Пока мало что вообще понимаю в JBF но это помогло, спасибо ^^
И оффтопный вопрос на засыпку, в наше время на л2ж существует рабочий ипподром? )
Баги для читера это средство выживания Баги для админа это веревка и мыло  
+
-
edit
 
mrSteam:
Пока мало что вообще понимаю в JBF но это помогло, спасибо ^^
И оффтопный вопрос на засыпку, в наше время на л2ж существует рабочий ипподром? )
 

В смысле сервер на L2J Fortress?
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  
+
-
edit
 

Balancer

администратор
★★★★★

Рабочего ипподрома пока нигде нет. Есть полурабочий :) нужно доводить до ума...
 
+
-
edit
 

mrSteam

втянувшийся
Не по топику, но по разделу. Как начинающий в JBF запоролся на переменных.
Хотел-бы узнать точный ответ как определить и изменить значение переменной.
Например в справочных материалах здесь, по примеру квеста сделал все как надо.
Но меня лукос посылает сразу фтопку (jail-me)
Значит значение переменной не 0 и даже не 1 и не 2...
Помогите разобратся :)
Баги для читера это средство выживания Баги для админа это веревка и мыло  
+
-
edit
 

Balancer

администратор
★★★★★

Ждите раздел по переменным в Wiki :)

Но только после того, как закончу переделку Форта.
 
+
-
edit
 

mrSteam

втянувшийся
И так очередная проблема, код такой
: on-npc-671-die
690 player@ inventory? 0 = if
4035 1 player@ inventory+!
exit
then
'gggg' announce
;


При смерти Kadios'а IF непроходит и сразу выдается анонс "GGGG"
При этом в окне сервера опять вижу огромные надписи, либо тишина.
Может я делаю чего-то не так?
Баги для читера это средство выживания Баги для админа это веревка и мыло  
+
-
edit
 

Zzahar

втянувшийся
mrSteam:
И так очередная проблема, код такой
: on-npc-671-die
690 player@ inventory? 0 = if
4035 1 player@ inventory+!
exit
then
'gggg' announce
;


При смерти Kadios'а IF непроходит и сразу выдается анонс "GGGG"
При этом в окне сервера опять вижу огромные надписи, либо тишина.
Может я делаю чего-то не так?
 

По-моему надо использовать переменную killer вместо переменной player@ так-как код on-npc-671-die выполняется в рамках npc а не убившего его игрока.
L2JZsystem - система управления сервером.  
+
-
edit
 

mrSteam

втянувшийся
Да верно, разобрался наконецто )
Надо побольше наполнить Wiki :)
Баги для читера это средство выживания Баги для админа это веревка и мыло  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru