Сообщений: 59
Тем: 15
Зарегистрирован: Jan 2013
Репутация:
-4
Сборка: first-team
Хроники: High Five
Скачано
http://script-edit.ru/1056-high-five-poslednie-ishodniki-first-team-skompilenaya-sborka.html
Проблема в том что не спавнятся ёлки, не простая, не особая.. Подскажите плиз в чём проблема?
Сообщений: 607
Тем: 46
Зарегистрирован: Jan 2013
Репутация:
3,427
Jessy Написал:Сборка: first-team
Хроники: High Five
Скачано
http://script-edit.ru/1056-high-five-poslednie-ishodniki-first-team-skompilenaya-sborka.html
Проблема в том что не спавнятся ёлки, не простая, не особая.. Подскажите плиз в чём проблема?
Какой нах спавн? там итемы, юзаешь и ёлочка появляется или я не о тех подумал?)))
Сообщений: 242
Тем: 62
Зарегистрирован: Jun 2010
Репутация:
34
Russ1aStar Написал:Какой нах спавн? там итемы, юзаешь и ёлочка появляется или я не о тех подумал?)))
Если мне память не изменяет, то есть ещё и НПС "Ёлочка"... ID уже не помню, да в принципе и не запаменал... Помню только то, что были проблемы со спавном и удалением её... Вернее даже удалением =)
Ну а к автору вопрос - как пытаетесь заспавнить? Через обычный спавн или же айтемом?
Сообщений: 84
Тем: 3
Зарегистрирован: Jan 2013
Репутация:
-213
ID : 5560 ---------------------
:plus1::bananoblin:
Сообщений: 59
Тем: 15
Зарегистрирован: Jan 2013
Репутация:
-4
Через итем не спавнит! щёлкаю 2 раза и ноль эмоций(
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Jessy Написал:Через итем не спавнит! щёлкаю 2 раза и ноль эмоций(
Нужно смотреть хендлер итема.
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 794
Тем: 31
Зарегистрирован: Dec 2012
Репутация:
2,838
Ивент добавьте для начала
C:\!ServerHighFive\play\data\scripts\events\Christmas\Christmas.java
Код: package events.Christmas;
import java.util.ArrayList;
import java.util.List;
import l2ee.util.util.Rnd;
import l2ee.play.Announcements;
import l2ee.play.Config;
import l2ee.play.cache.Msg;
import l2ee.play.listener.actor.OnDeathListener;
import l2ee.play.listener.actor.player.OnPlayerEnterListener;
import l2ee.play.model.Creature;
import l2ee.play.model.Player;
import l2ee.play.model.SimpleSpawner;
import l2ee.play.model.actor.listener.CharListenerList;
import l2ee.play.model.instances.NpcInstance;
import l2ee.play.network.serverpackets.MagicSkillUse;
import l2ee.play.scripts.Functions;
import l2ee.play.scripts.ScriptFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Christmas extends Functions implements ScriptFile, OnDeathListener, OnPlayerEnterListener
{
private static int EVENT_MANAGER_ID = 31863;
private static int CTREE_ID = 13006;
private static final Logger _log = LoggerFactory.getLogger(Christmas.class);
private static int[][] _dropdata = {
{ 5556, 20 },
{ 5557, 20 },
{ 5558, 50 },
{ 5559, 5 },
};
private static List<SimpleSpawner> _spawns = new ArrayList<SimpleSpawner>();
private static boolean _active = false;
@Override
public void onLoad()
{
CharListenerList.addGlobal(this);
if(isActive() && Config.XMAS_EVENT)
{
_active = true;
spawnEventManagers();
_log.info("Loaded Event: Christmas [state: activated]");
}
else
_log.info("Loaded Event: Christmas [state: deactivated]");
}
private static boolean isActive()
{
return IsActive("Christmas");
}
public void startEvent()
{
Player player = getSelf();
if(!player.getPlayerAccess().IsEventGm)
return;
if(SetActive("Christmas", true))
{
spawnEventManagers();
System.out.println("Event 'Christmas' started.");
Announcements.getInstance().announceByCustomMessage("scripts.events.Christmas.AnnounceEventStarted", null);
}
else
player.sendMessage("Event 'Christmas' already started.");
_active = true;
show("admin/events/events.htm", player);
}
public void stopEvent()
{
Player player = getSelf();
if(!player.getPlayerAccess().IsEventGm)
return;
if(SetActive("Christmas", false))
{
unSpawnEventManagers();
System.out.println("Event 'Christmas' stopped.");
Announcements.getInstance().announceByCustomMessage("scripts.events.Christmas.AnnounceEventStoped", null);
}
else
player.sendMessage("Event 'Christmas' not started.");
_active = false;
show("admin/events/events.htm", player);
}
private void spawnEventManagers()
{
final int EVENT_MANAGERS[][] = {
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 }
};
final int CTREES[][] = {
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 }
};
SpawnNPCs(EVENT_MANAGER_ID, EVENT_MANAGERS, _spawns);
SpawnNPCs(CTREE_ID, CTREES, _spawns);
}
private void unSpawnEventManagers()
{
deSpawnNPCs(_spawns);
}
@Override
public void onReload()
{
unSpawnEventManagers();
}
@Override
public void onShutdown()
{
unSpawnEventManagers();
}
@Override
public void onDeath(Creature cha, Creature killer)
{
if(_active && SimpleCheckDrop(cha, killer))
{
int dropCounter = 0;
for(int[] drop : _dropdata)
if(Rnd.chance(drop[1] * killer.getPlayer().getRateItems() * Config.RATE_DROP_ITEMS * 0.1))
{
dropCounter++;
((NpcInstance) cha).dropItem(killer.getPlayer(), drop[0], 1);
if(dropCounter > 2)
break;
}
}
}
public void exchange(String[] var)
{
Player player = getSelf();
if(!player.isQuestContinuationPossible(true))
return;
if(player.isActionsDisabled() || player.isSitting() || player.getLastNpc() == null || player.getLastNpc().getDistance(player) > 300)
return;
if(var[0].equalsIgnoreCase("0"))
{
if(getItemCount(player, 5556) >= 4 && getItemCount(player, 5557) >= 4 && getItemCount(player, 5558) >= 10 && getItemCount(player, 5559) >= 1)
{
removeItem(player, 5556, 4);
removeItem(player, 5557, 4);
removeItem(player, 5558, 10);
removeItem(player, 5559, 1);
addItem(player, 5560, 1);
return;
}
player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
}
if(var[0].equalsIgnoreCase("1"))
{
if(getItemCount(player, 5560) >= 10)
{
removeItem(player, 5560, 10);
addItem(player, 5561, 1);
return;
}
player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
}
if(var[0].equalsIgnoreCase("2"))
{
if(getItemCount(player, 5560) >= 10)
{
removeItem(player, 5560, 10);
addItem(player, 7836, 1);
return;
}
player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
}
if(var[0].equalsIgnoreCase("3"))
{
if(getItemCount(player, 5560) >= 10)
{
removeItem(player, 5560, 10);
addItem(player, 8936, 1);
return;
}
player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
}
if(var[0].equalsIgnoreCase("4"))
{
if(getItemCount(player, 5560) >= 20)
{
removeItem(player, 5560, 20);
addItem(player, 10606, 1);
return;
}
player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
}
}
@Override
public void onPlayerEnter(Player player)
{
if(_active)
{
}
}
}
C:\!ServerHighFive\play\data\scripts\events\Christmas\Seed.java
Код: package events.Christmas;
import l2ee.util.threading.RunnableImpl;
import l2ee.play.ThreadPoolManager;
import l2ee.play.cache.Msg;
import l2ee.play.data.xml.holder.NpcHolder;
import l2ee.play.model.Playable;
import l2ee.play.model.Player;
import l2ee.play.model.SimpleSpawner;
import l2ee.play.model.World;
import l2ee.play.model.instances.NpcInstance;
import l2ee.play.model.items.ItemInstance;
import l2ee.play.network.serverpackets.components.SystemMsg;
import l2ee.play.network.serverpackets.SystemMessage2;
import l2ee.play.templates.npc.NpcTemplate;
import handler.items.ScriptItemHandler;
public class Seed extends ScriptItemHandler
{
public class DeSpawnScheduleTimerTask extends RunnableImpl
{
SimpleSpawner spawnedTree = null;
public DeSpawnScheduleTimerTask(SimpleSpawner spawn)
{
spawnedTree = spawn;
}
@Override
public void runImpl() throws Exception
{
spawnedTree.deleteAll();
}
}
private static int[] _itemIds = { 5560,
5561
};
private static int[] _npcIds = { 13006,
13007
};
private static final int DESPAWN_TIME = 600000;
@Override
public boolean useItem(Playable playable, ItemInstance item, boolean ctrl)
{
Player activeChar = (Player) playable;
NpcTemplate template = null;
int itemId = item.getItemId();
for(int i = 0; i < _itemIds.length; i++)
if(_itemIds[i] == itemId)
{
template = NpcHolder.getInstance().getTemplate(_npcIds[i]);
break;
}
for(NpcInstance npc : World.getAroundNpc(activeChar, 300, 200))
if(npc.getNpcId() == _npcIds[0] || npc.getNpcId() == _npcIds[1])
{
activeChar.sendPacket(new SystemMessage2(SystemMsg.SINCE_S1_ALREADY_EXISTS_NEARBY_YOU_CANNOT_SUMMON_IT_AGAIN).addName(npc));
return false;
}
if(World.getAroundNpc(activeChar, 100, 200).size() > 0)
{
activeChar.sendPacket(Msg.YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION);
return false;
}
if(template == null)
return false;
if (!activeChar.getInventory().destroyItem(item, 1L))
return false;
SimpleSpawner spawn = new SimpleSpawner(template);
spawn.setLoc(activeChar.getLoc());
NpcInstance npc = spawn.doSpawn(false);
npc.setTitle(activeChar.getName());
spawn.respawnNpc(npc);
if(itemId == 5561)
npc.setAI(new ctreeAI(npc));
ThreadPoolManager.getInstance().schedule(new DeSpawnScheduleTimerTask(spawn), (activeChar.isInPeaceZone() ? DESPAWN_TIME / 3 : DESPAWN_TIME));
return true;
}
@Override
public int[] getItemIds()
{
return _itemIds;
}
}
Импорты сами поправите.
![[Изображение: Z.png]](http://l2.ee/Z.png)
Сообщений: 7
Тем: 0
Зарегистрирован: Dec 2012
Репутация:
3
С эвентом там вроде порядок, попробуйте с этим файлом:
\dist\gameserver\data\scripts\handler\items\ScriptItemHandler.java
Код: package handler.items;
import l2ft.gameserver.handler.items.IItemHandler;
import l2ft.gameserver.handler.items.ItemHandler;
import l2ft.gameserver.model.Playable;
import l2ft.gameserver.model.Player;
import l2ft.gameserver.model.items.ItemInstance;
import l2ft.gameserver.scripts.ScriptFile;
import l2ft.gameserver.utils.Location;
import l2ft.gameserver.utils.Log;
public abstract class ScriptItemHandler implements ScriptFile, IItemHandler
{
@Override
public void dropItem(Player player, ItemInstance item, long count, Location loc)
{
if(item.isEquipped())
{
player.getInventory().unEquipItem(item);
player.sendUserInfo(true);
}
item = player.getInventory().removeItemByObjectId(item.getObjectId(), count);
if(item == null)
{
player.sendActionFailed();
return;
}
Log.LogItem(player, Log.Drop, item);
item.dropToTheGround(player, loc);
player.disableDrop(1000);
player.sendChanges();
}
@Override
public boolean pickupItem(Playable playable, ItemInstance item)
{
return true;
}
@Override
public void onLoad()
{
ItemHandler.getInstance().registerItemHandler(this);
}
@Override
public void onReload()
{
}
@Override
public void onShutdown()
{
}
}
Сообщений: 59
Тем: 15
Зарегистрирован: Jan 2013
Репутация:
-4
06-13-2013, 04:31 PM
(Сообщение последний раз редактировалось: 04-29-2014, 01:49 PM Jessy.)
marlin Написал:С эвентом там вроде порядок, попробуйте с этим файлом:
\dist\gameserver\data\scripts\handler\items\ScriptItemHandler.java
Код: package handler.items;
import l2ft.gameserver.handler.items.IItemHandler;
import l2ft.gameserver.handler.items.ItemHandler;
import l2ft.gameserver.model.Playable;
import l2ft.gameserver.model.Player;
import l2ft.gameserver.model.items.ItemInstance;
import l2ft.gameserver.scripts.ScriptFile;
import l2ft.gameserver.utils.Location;
import l2ft.gameserver.utils.Log;
public abstract class ScriptItemHandler implements ScriptFile, IItemHandler
{
@Override
public void dropItem(Player player, ItemInstance item, long count, Location loc)
{
if(item.isEquipped())
{
player.getInventory().unEquipItem(item);
player.sendUserInfo(true);
}
item = player.getInventory().removeItemByObjectId(item.getObjectId(), count);
if(item == null)
{
player.sendActionFailed();
return;
}
Log.LogItem(player, Log.Drop, item);
item.dropToTheGround(player, loc);
player.disableDrop(1000);
player.sendChanges();
}
@Override
public boolean pickupItem(Playable playable, ItemInstance item)
{
return true;
}
@Override
public void onLoad()
{
ItemHandler.getInstance().registerItemHandler(this);
}
@Override
public void onReload()
{
}
@Override
public void onShutdown()
{
}
}
Заработало спасибо))
|