Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Пока ковырялся с передвижениями с клавиатуры, случайно нашел интересный пакет CannotMoveAnymore.
Я так понимаю он вызывается когда мы держим delete. На птс правда можно остановить движение(даже в фире).
Но вот такую его реализацию лучше прикрыть: Посмотреть вложение 25504
Я не знаю по поводу delete зажатом, знаю что он отправляется автоматически если ты упраешься в борт забора (ExColosseumFenceInfo)
Лично у меня дальше идет определенная логика с результатом в нотифи аи
upd: Чекнул на оффе, при нажатии delete если фира нету, то чар стопается, если фир есть, то чар визуально стопается только в своем клиенте и после окончания эффекта телепортируешься, а для остальных игроков ты бежишь дальше .
Вот именно, setloc там вообще не нужен.
А проверки от Фира и по. для stopmove там и так есть, а логика остановки должна быть в notify(который там и так есть) потому что локация клиентом отправляется чтобы ее с чем то сравнить и что то сделать.
Вот именно, setloc там вообще не нужен.
А проверки от Фира и по. для stopmove там и так есть, а логика остановки должна быть в notify(который там и так есть) потому что локация клиентом отправляется чтобы ее с чем то сравнить и что то сделать.
Я без сетлок у меня да и на большинстве если не на всех овероподобных мувконтроллерах чар покликивается через фенсы и как итог пробегает сквозь него как результат.
Я без сетлок у меня да и на большинстве если не на всех овероподобных мувконтроллерах чар покликивается через фенсы и как итог пробегает сквозь него как результат.
Переписываем геодвиг или ставим костыль по типу проверки может ли персонаж в теории при текущем мувспиде переместиться в полученный локейшн и только тогда ставим сетлок (или просто плюс минус по координатам x/y). Просто так оставлять его без проверок не очень красиво.
Переписываем геодвиг или ставим костыль по типу проверки может ли персонаж в теории при текущем мувспиде переместиться в полученный локейшн и только тогда ставим сетлок (или просто плюс минус по координатам x/y). Просто так оставлять его без проверок не очень красиво.
Геодвиг и мувконтроллер это две разные но связанные вещи. Вы в праве делать что хотите и что в ваших силах, хоть всю сборку костылей по вашему вкусу можете сделать. И вообще, с чего вы взяли, что у меня не переписанный мувконтроллер? Или с чего вы взяли, что проверок позиции игрока нету? Проверка уже давно присутствует в большинстве сборок в виде ValidatePosition (c2s), примерно в районе 2к16 года все активно начали фиксить эту дрянь у кого она не работала или её не было. А так наверное если бы не нужно было делать setLoc или какое-то другое действие с позицией которую передает CannotMoveAnymore, то наверное оный не передавал бы эти параметры в своем теле.
Решил я реализовать МВ сеты, в теории все было просто, в armor_sets.xml скопировал нужное и переписал сеты с новыми ID,состоящие только из МВ частей, получилось 233 сета. загружаю ГС и ловлю ошибку:
00:29:42 [main] ERROR ArmorSetsParser - ArmorSetsParser: File: armor_sets.xml:258 fatal: The element type "set" must be terminated by the matching end-tag "</set>".
00:29:42 [main] WARN ArmorSetsParser - ArmorSetsParser: Exception: org.jdom2.input.JDOMParseException: Error on line 258: The element type "set" must be terminated by the matching end-tag "</set>".
org.jdom2.input.JDOMParseException: Error on line 258: The element type "set" must be terminated by the matching end-tag "</set>".
at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:232)
at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:253)
at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1091)
at org.mmocore.commons.data.AbstractParser.parseDocument(AbstractParser.java:38)
at org.mmocore.commons.data.xml.AbstractFileParser.parse(AbstractFileParser.java:42)
at org.mmocore.commons.data.AbstractParser.load(AbstractParser.java:56)
at org.mmocore.gameserver.data.xml.Parsers.parseAll(Parsers.java:75)
at org.mmocore.gameserver.GameServer.<init>(GameServer.java:155)
at org.mmocore.gameserver.GameServer.main(GameServer.java:324)
Caused by: org.xml.sax.SAXParseException; lineNumber: 258; columnNumber: 3; The element type "set" must be terminated by the matching end-tag "</set>".
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:217)
... 8 more
00:29:42 [main] INFO ArmorSetsHolder - ArmorSetsHolder: loaded 0 armor sets(s) count.
ну хорошо, допустим, только в armor_sets.xml на 258 строке у меня заканчивается список сетов:
Я же наркоман, прописываю перед </list> закрывающий тэг </set> перезапускаю все и в ГС ловлю ошибку что теперь на 258 строке тэг закрывает сет равный null (это логично) и загружает мне всего 206 сетов.
Вопрос к знатокам, при правильном оформлении xml файла что у меня могло сломаться, или где в исходах можно поправить чтобы грузилось больше 206 сетов, на что еще нужно обратить внимание?
Решил я реализовать МВ сеты, в теории все было просто, в armor_sets.xml скопировал нужное и переписал сеты с новыми ID,состоящие только из МВ частей, получилось 233 сета. загружаю ГС и ловлю ошибку:
00:29:42 [main] ERROR ArmorSetsParser - ArmorSetsParser: File: armor_sets.xml:258 fatal: The element type "set" must be terminated by the matching end-tag "</set>".
00:29:42 [main] WARN ArmorSetsParser - ArmorSetsParser: Exception: org.jdom2.input.JDOMParseException: Error on line 258: The element type "set" must be terminated by the matching end-tag "</set>".
org.jdom2.input.JDOMParseException: Error on line 258: The element type "set" must be terminated by the matching end-tag "</set>".
at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:232)
at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:253)
at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1091)
at org.mmocore.commons.data.AbstractParser.parseDocument(AbstractParser.java:38)
at org.mmocore.commons.data.xml.AbstractFileParser.parse(AbstractFileParser.java:42)
at org.mmocore.commons.data.AbstractParser.load(AbstractParser.java:56)
at org.mmocore.gameserver.data.xml.Parsers.parseAll(Parsers.java:75)
at org.mmocore.gameserver.GameServer.<init>(GameServer.java:155)
at org.mmocore.gameserver.GameServer.main(GameServer.java:324)
Caused by: org.xml.sax.SAXParseException; lineNumber: 258; columnNumber: 3; The element type "set" must be terminated by the matching end-tag "</set>".
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:217)
... 8 more
00:29:42 [main] INFO ArmorSetsHolder - ArmorSetsHolder: loaded 0 armor sets(s) count.
ну хорошо, допустим, только в armor_sets.xml на 258 строке у меня заканчивается список сетов:
Я же наркоман, прописываю перед </list> закрывающий тэг </set> перезапускаю все и в ГС ловлю ошибку что теперь на 258 строке тэг закрывает сет равный null (это логично) и загружает мне всего 206 сетов.
Вопрос к знатокам, при правильном оформлении xml файла что у меня могло сломаться, или где в исходах можно поправить чтобы грузилось больше 206 сетов, на что еще нужно обратить внимание?
Я реализовал и протестил перед этим данные скилы на энчант, у меня все сеты так выглядят, на это ошибка не вылезала. Где еще покопаться, нельзя брать последовательные ID после 206, нужны как во всех примерах 90000+? или же в ядре по типу данных переполнение получил хотя там тип int указан, а это 2ккк значений, еще как вариант думаю что где-то не заменил id тушки на МВ, или ссылаюсь на несуществующий итем, и как вариант получил два одинаковых сета с разными set id, в этом тоже может быть проблема?
Если я вам скину пофикшеные файлы ядра и armor sets вы сможете посмотреть??
вобще-то в любой строчке выше ты сделал ошибку в синтаксисе, а парсер скорее всего руганулся на последнюю строку потому что так и не нашел до нее нужного закрывающего тэга.
и вобще, подключи в хмлке armor_sets.dtd, только не забудь в него добавить свои новые атрибуты. и будет тебе более детально писать о том где ты там ошибку сделал - конечно если парсер сетов в сервере учитывает наличие dtd для хмлки.
а вобще ты не очень удобный подход к структуре описаний сетов взял. захочется еще для каких-то уровней энчанта добавить скиллы - еще придется новые атрибуты добавлять и их обработку в сервере. лучше уж сделать более универсальное описание и хранение этого в сервере, чтобы если захочется еще добавить бонусов от уровней энчанта сета - достаточно было бы просто этот бонус добавить в нужный сет и все.
вот для примера у меня типичное описание сета - могу не дополняя уже больше сам код парсера/листенеров и т.д. сетов в ядре, добавлять бонусы для любых уровней заточки сета или скажем бонусы для частичных наборов от сета (когда одета только часть сетовых вещей) простым добавлением новой строчки в описании сета в хмлке.
compile.module.commons.production:
[mkdir] Created dir: D:\server\ISXOD\out\production\commons
[javac] Compiling 190 source files to D:\server\ISXOD\out\production\commons
[javac] warning: [options] bootstrap class path not set in conjunction with -source 8
[javac] D:\server\ISXOD\commons\src\main\java\org\mmocore\commons\crypt\PBKDF2Hash.java:4: error: package javax.xml.bind does not exist
[javac] import javax.xml.bind.DatatypeConverter;
[javac] ^
[javac] 1 error
[javac] 1 warning
BUILD FAILED
D:\server\ISXOD\commons\src\main\module_commons.xml:56: Compile failed; see the compiler error output for details.
compile.module.commons.production:
[mkdir] Created dir: D:\server\ISXOD\out\production\commons
[javac] Compiling 190 source files to D:\server\ISXOD\out\production\commons
[javac] warning: [options] bootstrap class path not set in conjunction with -source 8
[javac] D:\server\ISXOD\commons\src\main\java\org\mmocore\commons\crypt\PBKDF2Hash.java:4: error: package javax.xml.bind does not exist
[javac] import javax.xml.bind.DatatypeConverter;
[javac] ^
[javac] 1 error
[javac] 1 warning
BUILD FAILED
D:\server\ISXOD\commons\src\main\module_commons.xml:56: Compile failed; see the compiler error output for details.
Total time: 3 seconds
На данном сайте используются файлы cookie, чтобы персонализировать содержимое и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.