[question]Не получается сделать сброс в Скрипте
Сборка: L2Emu Rev 1600
Краткое изложение СУТИ проблемы: Не получается сделать сброс !
Так вот этот скрипт я написал не полностью но должно быть понятно
Тут как бы реализовано последовательное убийство тоесть кил 1чела
2чела и так далее вот убиваешь подрят Но у меня проблемка как сделать если тебя кил то счет начинался за ного тоесть с нуля а не продолжал считать последовательно
тоесть если меня не убили я убиваю последовательно 1,2,3,4 когда меня кил должно начинается все заново весь счет с 1,2,3,4 а у меня продолжает 5,6
я думаю понятно?
Вопрос: Как мне Это реализовать
Мои соображения по этому поводу: Я плоху знаю Java
===================================================================
--- src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java (revision 1600)
+++ src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -688,6 +688,7 @@
private boolean _hero = false;
private boolean _noble = false;
+ private int ConsecutiveKillsCount = 0;
private boolean _inOlympiadMode = false;
private boolean _olympiadStart = false;
private int _olympiadGameId = -1;
@@ -4824,6 +4825,77 @@
}
}
}
+ {
+ if (тут не важно)
+ {
+ if (тут не важно)
+ {
+ String announcetext = "";
+ if (тут не важно)
+ {
+ if (тут не важно)
+ {
+ sendPacket(Тут не важно)
+ }
+ else if (тут не важно)
+ {
+ sendPacket(Тут не важно)
+ }
+ else
+ {
+ sendPacket(Тут не важно)
+ }
+ }
+ else if (тут не важно)
+ {
+ ConsecutiveKillsCount++;
+ if (ConsecutiveKillsCount == 1)
+ {
+ sendPacket(Тут не важно)
+ }
+ if (ConsecutiveKillsCount == 2)
+ {
+ sendPacket(Тут не важно)
+ }
+ if (ConsecutiveKillsCount == 3)
+ {
+ }
+ (тут не важно)
+ }
+ }
+ }
if (pk != null)
{
if (Config.ALT_ANNOUNCE_PK)
Уважаимый St1ng3r
Посоветовал мне
{
if (player.ConsecutiveKillsCount != 0)
{
player.ConsecutiveKillsCount = 0;
return true;
}
else return false;
}
Куда мне правельно вставить?
В L2PcInstance.java найди процедуру doDie (примерно 4200 строчка) и гденить там в конце припиши
{
player.ConsecutiveKillsCount = 0;
}
В L2PcInstance.java найди процедуру doDie (примерно 4200 строчка) и гденить там в конце припиши
{
player.ConsecutiveKillsCount = 0;
}
Теперь при смерти перса, переменной ConsecutiveKillsCount будет присваиваться значение 0, если оно было отличным от него.
блин сори, у мну лаги (
St1ng3r: В L2PcInstance.java найди процедуру doDie (примерно 4200 строчка) и гденить там в конце припишиКодif (player.ConsecutiveKillsCount != 0)
{
player.ConsecutiveKillsCount = 0;
}
Теперь при смерти перса, переменной ConsecutiveKillsCount будет присваиваться значение 0, если оно было отличным от него.
блин сори, у мну лаги (
Спасибо сделал так
{
/* Since L2Character.doDie() calls stopAllEffects(), which includes
* setting charm of curage and other blessings as false, this stores value
* before calling superclass method
*/
boolean charmOfCourage = getCharmOfCourage();
// Kill the L2PcInstance
if (!super.doDie(killer))
return false;
if (isMounted())
stopFeed();
synchronized (this)
{
if (isFakeDeath())
stopFakeDeath(null);
}
//////////////////////////////////////
if (player.ConsecutiveKillsCount != 0)
{
player.ConsecutiveKillsCount = 0;
}
//////////////////////////////////////
Но при компили ошибка
symbol : variable player
location: class net.l2emuproject.gameserver.model.actor.instance.L2PcInstance
C:\L2EmuGameServer\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\actor\instance\L2PcInstance.java:[4627,2] cannot find symbol
symbol : variable player
я думаю нужно убрать player
TosikZOL: Спасибо сделал такКодpublic boolean doDie(L2Character killer)
{
/* Since L2Character.doDie() calls stopAllEffects(), which includes
* setting charm of curage and other blessings as false, this stores value
* before calling superclass method
*/
boolean charmOfCourage = getCharmOfCourage();
// Kill the L2PcInstance
if (!super.doDie(killer))
return false;
if (isMounted())
stopFeed();
synchronized (this)
{
if (isFakeDeath())
stopFakeDeath(null);
}
//////////////////////////////////////
if (player.ConsecutiveKillsCount != 0)
{
player.ConsecutiveKillsCount = 0;
}
//////////////////////////////////////
Но при компили ошибкаКодC:\L2EmuGameServer\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\actor\instance\L2PcInstance.java:[4625,6] cannot find symbol
symbol : variable player
location: class net.l2emuproject.gameserver.model.actor.instance.L2PcInstance
C:\L2EmuGameServer\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\actor\instance\L2PcInstance.java:[4627,2] cannot find symbol
symbol : variable player
я думаю нужно убрать player
так точно :) забыл убрать
St1ng3r: так точно :) забыл убрать
Не получилось
ConsecutiveKillsCount стоит на 0
Это выполняет на всех киллах
{
sendPacket(Тут не важно)
}
А Это не выплняется
{
sendPacket(Тут не важно)
}
if (ConsecutiveKillsCount == 3)
{
В чем ошибка ?
а можно этот сброс сделать в этом скритпе а не лезть в doDie ???
Не очень понял, что конкретно необходимо сделать.
мб и можно, но я хз как )
Я так понимаю, есть счетчик, который должен при каждом убийстве повышаться на 1, а при смерти сбрасываться на 0.
При этом с каждым изменении счетчика должно выполняться условие ?
Ну сейчас попробую норм все расказать
else if (тут не важно)
{
ConsecutiveKillsCount++;
if (ConsecutiveKillsCount == 1)
{
sendPacket(Тут не важно)
}
if (ConsecutiveKillsCount == 2)
{
sendPacket(Тут не важно)
}
if (ConsecutiveKillsCount == 3)
{
Как бы есть счетчик пвп тоесть если Игрок А убил игрока Б это 1 пвп тоесть будет
(ConsecutiveKillsCount == 1) и выполнится выполнятеся SendPacket если игрок А убил последовательно (тоесть не умирая) игрока С то будет (ConsecutiveKillsCount == 2) Но если игрок А умирает то его счетчик ПвП (не сам пвп) ставновится равено =0 нулю и счет начинается заного тоесть 1 пвп (ConsecutiveKillsCount == 1) 2 пвп (ConsecutiveKillsCount == 2)
а у меня после смерти игрока А продолжает (не сбрасывается_) и идет дальше счет (ConsecutiveKillsCount == 3) а мне нужно чтобы сбросилось после смерти .
Думаю норм расказал?
Но я не знаю как это реализовать и желательно в Этом куске скрипта
или может я не правельно скрипт изночально написал ?
попробуй создать процедуру
{
if (isDead() && ConsecutiveKillsCount !=0)
{
ConsecutiveKillsCount = 0;
}
else return;
}
Потом вызвать ее, в UserInfo, каr это сделано в /ru/forum/kvesty/6696
Должно сработать )
спс
вот
правильно дабавил в UserInfo.java в вот в пкинстенси.java как правильно дабавить ?
===================================================================
--- net/l2emuproject/gameserver/network/serverpackets/UserInfo.java (revision 1600)
+++ net/l2emuproject/gameserver/network/serverpackets/UserInfo.java (working copy)
@@ -375,4 +375,12 @@
{
return _S__04_USERINFO;
}
+ public void EraseKillsCount()
+ {
+ if (isDead() && ConsecutiveKillsCount !=0)
+ {
+ ConsecutiveKillsCount = 0;
+ }
+ else return;
+ }
}
\ No newline at end of file
надо наоборот, код добавляешь в псинстанс, гденить в конце там, а вызываешь в юзеринфо.
{
_activeChar = character;
_moveMultiplier = _activeChar.getMovementSpeedMultiplier();
_runSpd = (int) (_activeChar.getRunSpeed() / _moveMultiplier);
_walkSpd = (int) (_activeChar.getWalkSpeed() / _moveMultiplier);
_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
_relation = _activeChar.isClanLeader() ? 0x40 : 0;
if (_activeChar.getSiegeState() == 1) _relation |= 0x180;
if (_activeChar.getSiegeState() == 2) _relation |= 0x80;
_activeChar.EraseKillsCount(); // <<<<----------
}
Разумеется добавить только последнюю строчку :)
Так немного не понел как её вызвать в юзеринфо?
в писистенс я дабавил вот так
Index: src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java (revision 1600)
+++ src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -688,6 +688,7 @@
private boolean _hero = false;
private boolean _noble = false;
+ private int ConsecutiveKillsCount = 0;
private boolean _inOlympiadMode = false;
private boolean _olympiadStart = false;
private int _olympiadGameId = -1;
@@ -4824,6 +4825,77 @@
}
}
}
public void EraseKillsCount()
}
if (isDead() && ConsecutiveKillsCount !=0)
{
ConsecutiveKillsCount = 0;
}
else return;
}
+ {
+ if (тут не важно)
+ {
+ if (тут не важно)
+ {
+ String announcetext = "";
+ if (тут не важно)
+ {
+ if (тут не важно)
+ {
+ sendPacket(Тут не важно)
+ }
+ else if (тут не важно)
+ {
+ sendPacket(Тут не важно)
+ }
+ else
+ {
+ sendPacket(Тут не важно)
+ }
+ }
+ else if (тут не важно)
+ {
+ ConsecutiveKillsCount++;
+ if (ConsecutiveKillsCount == 1)
+ {
+ sendPacket(Тут не важно)
+ }
+ if (ConsecutiveKillsCount == 2)
+ {
+ sendPacket(Тут не важно)
+ }
+ if (ConsecutiveKillsCount == 3)
+ {
+ }
+ (тут не важно)
+ }
+ }
+ }
if (pk != null)
{
if (Config.ALT_ANNOUNCE_PK)
А вот юзер инфо правильно ?
public UserInfo(L2PcInstance cha)
{
_activeChar = cha;
_appearance = cha.getAppearance();
_moveMultiplier = _activeChar.getStat().getMovementSpeedMultiplier();
_runSpd = (int) (_activeChar.getRunSpeed() / _moveMultiplier);
_walkSpd = (int) (_activeChar.getStat().getWalkSpeed() / _moveMultiplier);
_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
_relation = _activeChar.isClanLeader() ? 0x40 : 0;
if (_activeChar.getSiegeState() == 1)
_relation |= 0x180;
if (_activeChar.getSiegeState() == 2)
_relation |= 0x80;
_activeChar.EraseKillsCount();
}
Нет, тот который "public void EraseKillsCount..." вставляешь в псинстанс, не в твоем скрипте, а отдельно где-нибудь в конце.
А "_activeChar.EraseKillsCount();" добавляешь в конце юзеринфо, чтобы получлось примерно, как в предыдущем посте.
А если я даавил в начале скрипта то что не будет работать ?А куда нужно в кнец писистенца? или моего скрипта всего ?
Index: src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java (revision 1600)
+++ src/main/java/net/l2emuproject/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -688,6 +688,7 @@
private boolean _hero = false;
private boolean _noble = false;
+ private int ConsecutiveKillsCount = 0;
private boolean _inOlympiadMode = false;
private boolean _olympiadStart = false;
private int _olympiadGameId = -1;
@@ -4824,6 +4825,77 @@
}
}
}
public void EraseKillsCount()
}
if (isDead() && ConsecutiveKillsCount !=0)
{
ConsecutiveKillsCount = 0;
}
else return;
}
+ {
+ if (тут не важно)
+ {
+ if (тут не важно)
+ {
+ String announcetext = "";
+ if (тут не важно)
+ {
+ if (тут не важно)
+ {
+ sendPacket(Тут не важно)
+ }
+ else if (тут не важно)
+ {
+ sendPacket(Тут не важно)
+ }
+ else
+ {
+ sendPacket(Тут не важно)
+ }
+ }
+ else if (тут не важно)
+ {
+ ConsecutiveKillsCount++;
+ if (ConsecutiveKillsCount == 1)
+ {
+ sendPacket(Тут не важно)
+ }
+ if (ConsecutiveKillsCount == 2)
+ {
+ sendPacket(Тут не важно)
+ }
+ if (ConsecutiveKillsCount == 3)
+ {
+ }
+ (тут не важно)
+ }
+ }
+ }
if (pk != null)
{
if (Config.ALT_ANNOUNCE_PK)
А вот юзер инфо правильно ?
public UserInfo(L2PcInstance cha)
{
_activeChar = cha;
_appearance = cha.getAppearance();
_moveMultiplier = _activeChar.getStat().getMovementSpeedMultiplier();
_runSpd = (int) (_activeChar.getRunSpeed() / _moveMultiplier);
_walkSpd = (int) (_activeChar.getStat().getWalkSpeed() / _moveMultiplier);
_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
_relation = _activeChar.isClanLeader() ? 0x40 : 0;
if (_activeChar.getSiegeState() == 1)
_relation |= 0x180;
if (_activeChar.getSiegeState() == 2)
_relation |= 0x80;
_activeChar.EraseKillsCount();
}
Все вроде скомпилилось завтро проверю отпишу спс биг за помошь!СпС проставил!
Не важно где, главное чтобы не внутри другой функции :)
Просто в конец добавлять проще )
Вот у меня например в конце такие строчки:
/**
*
* @param state
*/
public void setGmStatusActive(boolean state)
{
_gmStatus = state;
}
public boolean hasGmStatusActive()
{
return _gmStatus;
}
}
Надо добавить функцию, чтобы получилось
/**
*
* @param state
*/
public void setGmStatusActive(boolean state)
{
_gmStatus = state;
}
public boolean hasGmStatusActive()
{
return _gmStatus;
}
public void EraseKillsCount()
}
if (isDead() && ConsecutiveKillsCount !=0)
{
ConsecutiveKillsCount = 0;
}
else return;
}
}
St1ng3r: Не важно где, главное чтобы не внутри другой функции :)
Просто в конец добавлять проще )
Вот у меня например в конце такие строчки:Кодboolean _gmStatus = true; //true by default sincce this is used by GMS
/**
*
* @param state
*/
public void setGmStatusActive(boolean state)
{
_gmStatus = state;
}
public boolean hasGmStatusActive()
{
return _gmStatus;
}
}
Надо добавить функцию, чтобы получилось
Спс все сделал все скомпилилось сейчас проверю!
А там есче кое чего нужно сделать )))
TosikZOL: Спс все сделал все скомпилилось сейчас проверю!
А там есче кое чего нужно сделать )))
Сори за новую посто прошу не удалять ?не мог отредактировать
Все скомпилилось супер но вот проблемка выполняется всегда при убийствах (ConsecutiveKillsCount == 1)
а следуйшие (ConsecutiveKillsCount == 2) (ConsecutiveKillsCount == 3) не выполняются в чем проблема ?
Вот тошто выполняется
{
sendPacket(Тут не важно)
}
Судя по всему при переменной не присваевается значение x+1.
Надо написать прибавление киллов по другому:
Вместо "ConsecutiveKillsCount++;" пишем "((L2PcInstance)killer).ConsecutiveKillsCount += 1;"
Вот теперь точно должно работать.
З.Ы: при смерти киллы обнуляются?
Кстати, лучше даже не "((L2PcInstance)killer).ConsecutiveKillsCount += 1;", а
{
((L2PcInstance)killer).ConsecutiveKillsCount += 1;
}
Чтобы киллы не начислялись мобам ))
St1ng3r: Судя по всему при переменной не присваевается значение x+1.
Надо написать прибавление киллов по другому:
Вместо "ConsecutiveKillsCount++;" пишем "((L2PcInstance)killer).ConsecutiveKillsCount += 1;"
Вот теперь точно должно работать.
З.Ы: при смерти киллы обнуляются?
Кстати, лучше даже не "((L2PcInstance)killer).ConsecutiveKillsCount += 1;", аКодif ((killer instanceof L2PcInstance)
{
((L2PcInstance)killer).ConsecutiveKillsCount += 1;
}
Чтобы киллы не начислялись мобам ))
Спасибо я сделал так поминел это
На Это
{
((L2PcInstance)killer).ConsecutiveKillsCount += 1;
}
При компиляции стал ругатся на эту строчьку
if ((killer instanceof L2PcInstance)
[INFO] Compilation failure
C:\L2EmuGameServer\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\actor\instance\L2PcInstance.java:[4852,44] ')' expected
C:\L2EmuGameServer\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\actor\instance\L2PcInstance.java:[4852,44] ')' expected
а если менять Вместо "ConsecutiveKillsCount++;" пишем "((L2PcInstance)killer).ConsecutiveKillsCount += 1;"
То компилится норм но есче не тестил работает ли !
TosikZOL: а если менять Вместо "ConsecutiveKillsCount++;" пишем "((L2PcInstance)killer).ConsecutiveKillsCount += 1;"
То компилится норм но есче не тестил работает ли !
Да а вот так не пашет компилится а не пашет
Я бы весь скрипт выложил сюда но баюсь патом на каждом пвп это видеть Жалко будет
((
{Offtop/}St1ng3r Черкани мне в асю плиз{/top}


