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

Help pls) Core.

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

Всем привет ! Проблема: После того как создал персонажа и нажал начать игру , проходит время ( сек так 10 ) И только потом заходит в МИР. Как убрать этот лимит ?

 

И Сразу хочу узнать , кто сумеет изменить время на открытие окна чата для Всех НПС На проекте? На сколько я помню файл называется FloodProtector . Мне нужно сделать задержку в 1-2 сек на открытие диалогов всех нпс (включая ГМ,Донат, ит.п шопы) 

*От меня +++

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

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


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

 

хочу узнать , кто сумеет изменить время на открытие окна чата для Всех НПС На проекте? На сколько я помню файл называется FloodProtector . Мне нужно сделать задержку в 1-2 сек на открытие диалогов всех нпс (включая ГМ,Донат, ит.п шопы) 

 

А зачем оно надо? o_O

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


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

FloodProtector от спама, т.е. ты говоришь с нпс и потом только начинается отсчет (к примеру 2 сек), когда ты нее можешь еще раз открыть диалог с нпс.

А если хочешь чтоб ты нажал мышкой по нпс и диалог открылся через 2 сек, то тебе надо лезть в исходник. Поправку надо делать как раз там, где задействован FloodProtector для диалогов нпс.

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


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

Знающие люди , подскажите пожалуйста. Festival sweeper работает не правильно . ( заспойля моба и убив его , остальные вокруг пропадают и спойл идет только с первого (1) моба.)

[spoiler=

Не работающий ( ядро крякнутое gvb 25,01,2017)]

package ru.catssoftware.gameserver.handler.skillhandlers;

 

import ru.catssoftware.gameserver.handler.ISkillHandler;
import ru.catssoftware.gameserver.model.*;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.itemcontainer.PcInventory;
import ru.catssoftware.gameserver.network.SystemMessageId;
import ru.catssoftware.gameserver.network.serverpackets.*;
import ru.catssoftware.gameserver.templates.skills.L2SkillType;

public class Sweep
implements ISkillHandler
{

public Sweep()
{
}

public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[])
{
if(!(l2character instanceof L2PcInstance))
return;
L2PcInstance l2pcinstance = (L2PcInstance)l2character;
InventoryUpdate inventoryupdate = new InventoryUpdate();
boolean flag = false;
L2Character al2character1[] = al2character;
int i = al2character1.length;
for(int j = 0; j < i; j++)
{
L2Character l2character1 = al2character1[j];
if(!(l2character1 instanceof L2Attackable))
continue;
L2Attackable l2attackable = (L2Attackable)l2character1;
ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem[] = null;
boolean flag1 = false;
synchronized(l2attackable)
{
if(l2attackable.isSweepActive())
{
arewarditem = l2attackable.takeSweep();
flag1 = true;
}
}
if(flag1)
{
if(arewarditem == null || arewarditem.length == 0)
continue;
ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem1[] = arewarditem;
int k = arewarditem1.length;
for(int l = 0; l < k; l++)
{
ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = arewarditem1[l];
if(l2pcinstance.isInParty())
{
l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable);
continue;
}
if(!l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId()))
continue;
L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable);
if(inventoryupdate != null)
inventoryupdate.addItem(l2iteminstance);
flag = true;
SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2);
systemmessage.addNumber(rewarditem.getCount());
systemmessage.addItemName(l2iteminstance);
l2pcinstance.sendPacket(systemmessage);
}

}
l2attackable.endDecayTask();
if(!flag)
continue;
if(inventoryupdate != null)
l2pcinstance.sendPacket(inventoryupdate);
else
l2pcinstance.sendPacket(new ItemList(l2pcinstance, false));
}

}

public L2SkillType[] getSkillIds()
{
return SKILL_IDS;
}

private static final L2SkillType SKILL_IDS[];

static
{
SKILL_IDS = (new L2SkillType[] {
L2SkillType.SWEEP
});
}
}

 

 

 

[spoiler=

Работающий ( Если не изменяет память 15reva от ловели )]package ru.catssoftware.gameserver.handler.skillhandlers;

import java.util.Iterator;
import java.util.List;
import ru.catssoftware.gameserver.handler.ISkillHandler;
import ru.catssoftware.gameserver.model.*;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.itemcontainer.PcInventory;
import ru.catssoftware.gameserver.network.SystemMessageId;
import ru.catssoftware.gameserver.network.serverpackets.*;
import ru.catssoftware.gameserver.templates.skills.L2SkillType;

public class Sweep
implements ISkillHandler
{

public Sweep()
{
}

public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[])
{
if(!(l2character instanceof L2PcInstance))
return;
L2PcInstance l2pcinstance = (L2PcInstance)l2character;
InventoryUpdate inventoryupdate = new InventoryUpdate();
boolean flag = false;
for(int i = 0; i < al2character.length; i++)
{
if(!(al2character instanceof L2Attackable))
continue;
L2Attackable l2attackable = (L2Attackable)al2character;
if(!l2attackable.isSpoil())
continue;
List list = l2attackable.takeSweep();
if(list.isEmpty())
continue;
Iterator iterator = list.iterator();
do
{
if(!iterator.hasNext())
break;
ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = (ru.catssoftware.gameserver.model.L2Attackable.RewardItem)iterator.next();
if(l2pcinstance.isInParty())
l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable);
else
if(l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId()))
{
L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable);
if(inventoryupdate != null)
inventoryupdate.addItem(l2iteminstance);
flag = true;
SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2);
systemmessage.addNumber(rewarditem.getCount());
systemmessage.addItemName(l2iteminstance);
l2pcinstance.sendPacket(systemmessage);
}
} while(true);
l2attackable.endDecayTask();
if(!flag)
continue;
if(inventoryupdate != null)
l2pcinstance.sendPacket(inventoryupdate);
else
l2pcinstance.sendPacket(new ItemList(l2pcinstance, false));
}

}

public L2SkillType[] getSkillIds()
{
return SKILL_IDS;
}

private static final L2SkillType SKILL_IDS[];

static
{
SKILL_IDS = (new L2SkillType[] {
L2SkillType.SWEEP
});
}
}

 

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

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


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

FloodProtector от спама, т.е. ты говоришь с нпс и потом только начинается отсчет (к примеру 2 сек), когда ты нее можешь еще раз открыть диалог с нпс.

А если хочешь чтоб ты нажал мышкой по нпс и диалог открылся через 2 сек, то тебе надо лезть в исходник. Поправку надо делать как раз там, где задействован FloodProtector для диалогов нпс.

Какую изменить , что бы была задержка в 1/1.30 сек Для НПС окон 

USEITEM = new Protected("USEITEM", 0, 100);

ROLLDICE = new Protected("ROLLDICE", 1, 4200);

CASTSKILL = new Protected("CASTSKILL", 2, Config.SKILL_DELAY);

FIREWORK = new Protected("FIREWORK", 3, 4200);

GLOBAL_CHAT = new Protected("GLOBAL_CHAT", 4, Config.GLOBAL_CHAT_TIME * 1000);

TRADE_CHAT = new Protected("TRADE_CHAT", 5, Config.TRADE_CHAT_TIME * 1000);

ITEMPETSUMMON = new Protected("ITEMPETSUMMON", 6, 1600);

HEROVOICE = new Protected("HEROVOICE", 7, Config.HERO_CHAT_TIME * 1000);

SOCIAL = new Protected("SOCIAL", 8, 4200);

SUBCLASS = new Protected("SUBCLASS", 9, 10000);

DROPITEM = new Protected("DROPITEM", 10, 1000);

CHAR_SELECT = new Protected("CHAR_SELECT", 11, 10000);

BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100);

UNKNOWNPACKET = new Protected("UNKNOWNPACKET", 13, 1000);

BOT_REPORT = new Protected("BOT_REPORT", 14, 15000);

VOICE_CMD = new Protected("VOICE_CMD", 15, 10000);

USER_CMD = new Protected("USER_CMD", 16, 5000);

CL_PACKET = new Protected("CL_PACKET", 17, 30000);

HTML_UPDATE = new Protected("HTML_UPDATE", 18, 5000);

USE_POTION = new Protected("USE_POTION", 19, 100);

ENCHANT = new Protected("ENCHANT", 20, Config.ENCHAT_TIME * 1000);

$VALUES = (new Protected[] {

 

 

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

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


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

Знающие люди , подскажите пожалуйста. Festival sweeper работает не правильно . ( заспойля моба и убив его , остальные вокруг пропадают и спойл идет только с первого (1) моба.)

 

[spoiler=

Не работающий ( ядро крякнутое gvb 25,01,2017)]

package ru.catssoftware.gameserver.handler.skillhandlers;

 

import ru.catssoftware.gameserver.handler.ISkillHandler;

import ru.catssoftware.gameserver.model.*;

import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;

import ru.catssoftware.gameserver.model.itemcontainer.PcInventory;

import ru.catssoftware.gameserver.network.SystemMessageId;

import ru.catssoftware.gameserver.network.serverpackets.*;

import ru.catssoftware.gameserver.templates.skills.L2SkillType;

 

public class Sweep

implements ISkillHandler

{

 

public Sweep()

{

}

 

public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[])

{

if(!(l2character instanceof L2PcInstance))

return;

L2PcInstance l2pcinstance = (L2PcInstance)l2character;

InventoryUpdate inventoryupdate = new InventoryUpdate();

boolean flag = false;

L2Character al2character1[] = al2character;

int i = al2character1.length;

for(int j = 0; j < i; j++)

{

L2Character l2character1 = al2character1[j];

if(!(l2character1 instanceof L2Attackable))

continue;

L2Attackable l2attackable = (L2Attackable)l2character1;

ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem[] = null;

boolean flag1 = false;

synchronized(l2attackable)

{

if(l2attackable.isSweepActive())

{

arewarditem = l2attackable.takeSweep();

flag1 = true;

}

}

if(flag1)

{

if(arewarditem == null || arewarditem.length == 0)

continue;

ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem1[] = arewarditem;

int k = arewarditem1.length;

for(int l = 0; l < k; l++)

{

ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = arewarditem1[l];

if(l2pcinstance.isInParty())

{

l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable);

continue;

}

if(!l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId()))

continue;

L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable);

if(inventoryupdate != null)

inventoryupdate.addItem(l2iteminstance);

flag = true;

SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2);

systemmessage.addNumber(rewarditem.getCount());

systemmessage.addItemName(l2iteminstance);

l2pcinstance.sendPacket(systemmessage);

}

 

}

l2attackable.endDecayTask();

if(!flag)

continue;

if(inventoryupdate != null)

l2pcinstance.sendPacket(inventoryupdate);

else

l2pcinstance.sendPacket(new ItemList(l2pcinstance, false));

}

 

}

 

public L2SkillType[] getSkillIds()

{

return SKILL_IDS;

}

 

private static final L2SkillType SKILL_IDS[];

 

static

{

SKILL_IDS = (new L2SkillType[] {

L2SkillType.SWEEP

});

}

}

 

 

 

 

[spoiler=

Работающий ( Если не изменяет память 15reva от ловели )]package ru.catssoftware.gameserver.handler.skillhandlers;

 

import java.util.Iterator;

import java.util.List;

import ru.catssoftware.gameserver.handler.ISkillHandler;

import ru.catssoftware.gameserver.model.*;

import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;

import ru.catssoftware.gameserver.model.itemcontainer.PcInventory;

import ru.catssoftware.gameserver.network.SystemMessageId;

import ru.catssoftware.gameserver.network.serverpackets.*;

import ru.catssoftware.gameserver.templates.skills.L2SkillType;

 

public class Sweep

implements ISkillHandler

{

 

public Sweep()

{

}

 

public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[])

{

if(!(l2character instanceof L2PcInstance))

return;

L2PcInstance l2pcinstance = (L2PcInstance)l2character;

InventoryUpdate inventoryupdate = new InventoryUpdate();

boolean flag = false;

for(int i = 0; i < al2character.length; i++)

{

if(!(al2character instanceof L2Attackable))

continue;

L2Attackable l2attackable = (L2Attackable)al2character;

if(!l2attackable.isSpoil())

continue;

List list = l2attackable.takeSweep();

if(list.isEmpty())

continue;

Iterator iterator = list.iterator();

do

{

if(!iterator.hasNext())

break;

ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = (ru.catssoftware.gameserver.model.L2Attackable.RewardItem)iterator.next();

if(l2pcinstance.isInParty())

l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable);

else

if(l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId()))

{

L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable);

if(inventoryupdate != null)

inventoryupdate.addItem(l2iteminstance);

flag = true;

SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2);

systemmessage.addNumber(rewarditem.getCount());

systemmessage.addItemName(l2iteminstance);

l2pcinstance.sendPacket(systemmessage);

}

} while(true);

l2attackable.endDecayTask();

if(!flag)

continue;

if(inventoryupdate != null)

l2pcinstance.sendPacket(inventoryupdate);

else

l2pcinstance.sendPacket(new ItemList(l2pcinstance, false));

}

 

}

 

public L2SkillType[] getSkillIds()

{

return SKILL_IDS;

}

 

private static final L2SkillType SKILL_IDS[];

 

static

{

SKILL_IDS = (new L2SkillType[] {

L2SkillType.SWEEP

});

}

}

 

 

Так замени на тот, что работает и всё. Если вылезут ошибки, подправь (их там не много должно быть) и всё.

 

Какую изменить , что бы была задержка в 1/1.30 сек Для НПС окон 

USEITEM = new Protected("USEITEM", 0, 100);

ROLLDICE = new Protected("ROLLDICE", 1, 4200);

CASTSKILL = new Protected("CASTSKILL", 2, Config.SKILL_DELAY);

FIREWORK = new Protected("FIREWORK", 3, 4200);

GLOBAL_CHAT = new Protected("GLOBAL_CHAT", 4, Config.GLOBAL_CHAT_TIME * 1000);

TRADE_CHAT = new Protected("TRADE_CHAT", 5, Config.TRADE_CHAT_TIME * 1000);

ITEMPETSUMMON = new Protected("ITEMPETSUMMON", 6, 1600);

HEROVOICE = new Protected("HEROVOICE", 7, Config.HERO_CHAT_TIME * 1000);

SOCIAL = new Protected("SOCIAL", 8, 4200);

SUBCLASS = new Protected("SUBCLASS", 9, 10000);

DROPITEM = new Protected("DROPITEM", 10, 1000);

CHAR_SELECT = new Protected("CHAR_SELECT", 11, 10000);

BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100);

UNKNOWNPACKET = new Protected("UNKNOWNPACKET", 13, 1000);

BOT_REPORT = new Protected("BOT_REPORT", 14, 15000);

VOICE_CMD = new Protected("VOICE_CMD", 15, 10000);

USER_CMD = new Protected("USER_CMD", 16, 5000);

CL_PACKET = new Protected("CL_PACKET", 17, 30000);

HTML_UPDATE = new Protected("HTML_UPDATE", 18, 5000);

USE_POTION = new Protected("USE_POTION", 19, 100);

ENCHANT = new Protected("ENCHANT", 20, Config.ENCHAT_TIME * 1000);

$VALUES = (new Protected[] {

 

 

Это антиспам. Он не дает задержку! Принцип работы: Открыл диалоговое окно (HTML) -> пошло время от протект -> если время не закончилось и ты еще раз нажмешь на диалоговое окно - ничего нее случится.

А Вы просите задержку. Это надо в коре внедрять (там же, где и протект на диалог стоит).

  • Upvote 1

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


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

Так замени на тот, что работает и всё. Если вылезут ошибки, подправь (их там не много должно быть) и всё.

 

Это антиспам. Он не дает задержку! Принцип работы: Открыл диалоговое окно (HTML) -> пошло время от протект -> если время не закончилось и ты еще раз нажмешь на диалоговое окно - ничего нее случится.

А Вы просите задержку. Это надо в коре внедрять (там же, где и протект на диалог стоит).

Так в какой строке делать антиспам на нпс? Что бы через две секунды открылось повторное окно с нпс 

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


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

Так в какой строке делать антиспам на нпс? Что бы через две секунды открылось повторное окно с нпс 

Вы опять всё путаете.

Антиспам ставиться тут:

BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100);

Если игрок будет открывать окна с npc чаще чем в 100 мсек, то окно просто не откроется (либо вас кикнет или забанит, в зависимости как настроены конфиги).

А что бы была просто задержка между разговором npc, то надо прописывать следующий код:

Ниже представлен пример реализации (задержка между передвижениями)

 

L2PcInstance.java

	private long _lastMovePacket = 0;

        public long getLastMovePacket() {
		return _lastMovePacket;
	}

	public void setLastMovePacket() {
		_lastMovePacket = System.currentTimeMillis();
	} 

MoveBackwardToLocation.java (В вашем случае это будет класс, отвечающий за открытие HTML окон)

		if ((System.currentTimeMillis() - activeChar.getLastMovePacket()) < Config.LAST_MOVE_PACKET) {
			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
			return;
		}

		activeChar.setLastMovePacket(); 

 

 

 

Естественно, что бы задержка была сразу (даже при 1 разговоре), то надо будет задавать нужное значение изначально. Если что, можете посмотреть другие примеры такой реализации (например обратный отсчет на олимпиаде и т.п.)

  • Upvote 1

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


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

Вы опять всё путаете.

Антиспам ставиться тут:

BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100);

Если игрок будет открывать окна с npc чаще чем в 100 мсек, то окно просто не откроется (либо вас кикнет или забанит, в зависимости как настроены конфиги).

А что бы была просто задержка между разговором npc, то надо прописывать следующий код:

Ниже представлен пример реализации (задержка между передвижениями)

 

L2PcInstance.java

	private long _lastMovePacket = 0;

        public long getLastMovePacket() {
		return _lastMovePacket;
	}

	public void setLastMovePacket() {
		_lastMovePacket = System.currentTimeMillis();
	} 

MoveBackwardToLocation.java (В вашем случае это будет класс, отвечающий за открытие HTML окон)

		if ((System.currentTimeMillis() - activeChar.getLastMovePacket()) < Config.LAST_MOVE_PACKET) {
			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
			return;
		}

		activeChar.setLastMovePacket(); 

 

 

 

Естественно, что бы задержка была сразу (даже при 1 разговоре), то надо будет задавать нужное значение изначально. Если что, можете посмотреть другие примеры такой реализации (например обратный отсчет на олимпиаде и т.п.)

 

Понимаю , что не по теме ... но помоги с ошибками , что я делаю не так??? 

 

79c734be10b5.png

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


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

Понимаю , что не по теме ... но помоги с ошибками , что я делаю не так??? 

 

79c734be10b5.png

1) https://help.javarush.ru/questions/24833/%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B

2+) Не найден метод\переменная (тут наверное всё ясно)

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


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

1) https://help.javarush.ru/questions/24833/%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B

2+) Не найден метод\переменная (тут наверное всё ясно)

Помоги за сотку этот файл обратно в класс скомпилярить . )))

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


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

Помоги за сотку этот файл обратно в класс скомпилярить . )))

только с исходниками (открытым кодом) работаю.

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


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

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

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

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

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

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

Войти

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

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

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

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

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