Jump to content

Recommended Posts

Posted
On 06/10/2017 at 9:24 AM, eressea said:

Thank you for that CacheD it is what I was missing I think time to time at rare occasion I had non cached sell list error :)
 

Posted
1 hour ago, Jojo_ said:

Thank you for that CacheD it is what I was missing I think time to time at rare occasion I had non cached sell list error :)

That error has nothing to do with cached.

Also I currently do  almost nothing with cached https://bitbucket.org/l2shrine/extender-public/src/10b68191202e0796c0f447825420187efc124ee3/MyExt64/Cached/Cached.cpp?at=master&fileviewer=file-view-default

Posted (edited)
On 14/10/2017 at 8:53 PM, eressea said:

I do not want to seem stupid but really, since I have put your cacheD I do not have such errors.
At first each day I had to reboot NPC server to fix it, now after few days I still have no issues :)
So maybe that a coincidence and in theory it should but I like it.
Edit:
Also tiny question where the command .expon .expoff is store in your code?
Just telling the file that enough I want to learn on this first (debutting in code and I will try to understand these)
(I can read it "that clear" yet unsure if I would be able to change it without breaking it :P)

Edit2: Seem I have found it do not mind me then it was logic i was not looking carefully :D

Edited by Jojo_
  • 3 weeks later...
Posted
On 05/11/2017 at 9:41 AM, eressea said:

MyExt64 now supports Item Refund, if you find any bug, please let me know :)

Maybe that an error in my side.
Also unsure about it on Epilogue but when you sell, buy and refund it should close that window, to let the NPC speak.


Beisde it, it seem to work pretty fine.

Posted

That was true on Gracia Final, on Epilogue the buy/sell/refund window doesn't close and shows the message that transaction was done.

Posted (edited)

I have tiny big issue with splited AI 

11/13/2017 15:00:37.821, Loading Split AI: Can't load file aiai_adiantum_skilluse\adiantum_skilluse.txt


And this for all classes.
Yes I do have splited AI folder with txt etc.
I did it with make.py all you provided some post again in a .tar
what make me think there is something wrong is that "aiai_" after Loading Split AI: Can't load file ....
It seem to miss a back slash in to assume it as path (ai\ai_ )
Did I fail somewhere ?

Pfff do not mind me I am stupid really.
That in Classes.txt ... 
Now when do fix classes.txt it show that error and for all : 

11/13/2017 15:12:32.116, Fail to load. Reset the AI. Line[0]
11/13/2017 15:12:32.157, Cannot find AI class[farm_maker]
11/13/2017 15:12:32.158, Maker[oren15_azit_teleporter01] doesn't have ai handler. cannot set the ai parameter[CastleID]

I will try to find why :)

Edited by Jojo_
Posted
On 11/13/2017 at 3:04 PM, Jojo_ said:

Now when do fix classes.txt it show that error and for all : 


11/13/2017 15:12:32.116, Fail to load. Reset the AI. Line[0]
11/13/2017 15:12:32.157, Cannot find AI class[farm_maker]
11/13/2017 15:12:32.158, Maker[oren15_azit_teleporter01] doesn't have ai handler. cannot set the ai parameter[CastleID]

 

 

Do you have header there? Create header.txt in ai folder:

SizeofPointer 8
SharedFactoryVersion 69
NPCHVersion 79
NASCVersion 2
NPCEventHVersion 2
Debug 0

and add it as first file loaded in classes.txt

Posted

Ah yes seem my header.txt was present and listed in classes.txt but empty.
I might have skipped that part somehow.
Thank you :)

Posted (edited)

Hmm.

Where could be the problem?

 

1>Linking...
1>   Creating library ..\Server\MyExt64.lib and object ..\Server\MyExt64.exp
1>Beta.obj : error LNK2019: unresolved external symbol "public: void __cdecl CUser::SavePoint(int,int)" (?SavePoint@CUser@@QEAAXHH@Z) referenced in function "public: static void __cdecl Beta::Bypass(class CUser *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Bypass@Beta@@SAXPEAVCUser@@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z)
1>Beta.obj : error LNK2019: unresolved external symbol "public: void __cdecl CUser::SendUserInfo(class CUserSocket *)" (?SendUserInfo@CUser@@QEAAXPEAVCUserSocket@@@Z) referenced in function "public: static void __cdecl Beta::Bypass(class CUser *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Bypass@Beta@@SAXPEAVCUser@@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z)
1>Beta.obj : error LNK2019: unresolved external symbol "public: __int64 __cdecl CUser::ExpInc(__int64,bool)" (?ExpInc@CUser@@QEAA_J_J_N@Z) referenced in function "public: static void __cdecl Beta::Bypass(class CUser *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Bypass@Beta@@SAXPEAVCUser@@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z)
1>BuilderCmd2Handler.obj : error LNK2019: unresolved external symbol "public: bool __cdecl CUser::TakeItem(unsigned int,unsigned __int64)" (?TakeItem@CUser@@QEAA_NI_K@Z) referenced in function "public: static bool __cdecl BuilderCmd2Handler::Take(class CUserSocket *,class CUser *,class CCreature *,unsigned char const *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Take@BuilderCmd2Handler@@SA_NPEAVCUserSocket@@PEAVCUser@@PEAVCCreature@@PEBEAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z)
1>GraciaEpilogueSkillEnchant.obj : error LNK2001: unresolved external symbol "public: bool __cdecl CUser::TakeItem(unsigned int,unsigned __int64)" (?TakeItem@CUser@@QEAA_NI_K@Z)
1>CCreature.obj : error LNK2019: unresolved external symbol "public: bool __cdecl CUser::IsInOlympiad(void)const " (?IsInOlympiad@CUser@@QEBA_NXZ) referenced in function "public: bool __cdecl CCreature::UseItem(class CItem *,int)" (?UseItem@CCreature@@QEAA_NPEAVCItem@@H@Z)
1>CSkillInfo.obj : error LNK2001: unresolved external symbol "public: bool __cdecl CUser::IsInOlympiad(void)const " (?IsInOlympiad@CUser@@QEBA_NXZ)
1>OlympiadFixes.obj : error LNK2001: unresolved external symbol "public: bool __cdecl CUser::IsInOlympiad(void)const " (?IsInOlympiad@CUser@@QEBA_NXZ)
1>CInstantZone.obj : error LNK2019: unresolved external symbol "public: unsigned int __cdecl CUser::GetDbId(void)" (?GetDbId@CUser@@QEAAIXZ) referenced in function "public: void __cdecl CInstantZone::SetBinding(class CUser *,unsigned int)" (?SetBinding@CInstantZone@@QEAAXPEAVCUser@@I@Z)
1>GraciaEpilogueBuySell.obj : error LNK2001: unresolved external symbol "public: unsigned int __cdecl CUser::GetDbId(void)" (?GetDbId@CUser@@QEAAIXZ)
1>CInventory.obj : error LNK2019: unresolved external symbol "public: unsigned __int64 __cdecl CUser::GetItemCount(unsigned int)" (?GetItemCount@CUser@@QEAA_KI@Z) referenced in function "public: static class CItem * __cdecl CInventory::GetByServerIDIgnoreMoreStacks(class CInventory *,int)" (?GetByServerIDIgnoreMoreStacks@CInventory@@SAPEAVCItem@@PEAV1@H@Z)
1>GraciaEpilogueSkillEnchant.obj : error LNK2001: unresolved external symbol "public: unsigned __int64 __cdecl CUser::GetItemCount(unsigned int)" (?GetItemCount@CUser@@QEAA_KI@Z)
1>CMultiPartyCommandChannel.obj : error LNK2019: unresolved external symbol "public: void __cdecl CUser::SendRelationChanged(class CUserSocket *)" (?SendRelationChanged@CUser@@QEAAXPEAVCUserSocket@@@Z) referenced in function "public: void __cdecl CMultiPartyCommandChannel::SendRelationUpdates(void)" (?SendRelationUpdates@CMultiPartyCommandChannel@@QEAAXXZ)
1>CParty.obj : error LNK2001: unresolved external symbol "public: void __cdecl CUser::SendRelationChanged(class CUserSocket *)" (?SendRelationChanged@CUser@@QEAAXPEAVCUserSocket@@@Z)
1>CPet.obj : error LNK2019: unresolved external symbol "public: void __cdecl CUser::TradeCancel(void)" (?TradeCancel@CUser@@QEAAXXZ) referenced in function "public: void __cdecl CPet::GiveAllItemToMaster(bool)" (?GiveAllItemToMaster@CPet@@QEAAX_N@Z)
1>CSummon.obj : error LNK2019: unresolved external symbol "public: class CMultiPartyCommandChannel * __cdecl CUser::GetMPCC(void)" (?GetMPCC@CUser@@QEAAPEAVCMultiPartyCommandChannel@@XZ) referenced in function "public: bool __cdecl CSummon::IsEnemyTo(class CCreature *)" (?IsEnemyTo@CSummon@@QEAA_NPEAVCCreature@@@Z)
1>CUserSocket.obj : error LNK2001: unresolved external symbol "public: class CMultiPartyCommandChannel * __cdecl CUser::GetMPCC(void)" (?GetMPCC@CUser@@QEAAPEAVCMultiPartyCommandChannel@@XZ)
1>CSummon.obj : error LNK2019: unresolved external symbol "public: class CParty * __cdecl CUser::GetParty(void)" (?GetParty@CUser@@QEAAPEAVCParty@@XZ) referenced in function "public: bool __cdecl CSummon::IsEnemyTo(class CCreature *)" (?IsEnemyTo@CSummon@@QEAA_NPEAVCCreature@@@Z)
1>CUserSocket.obj : error LNK2001: unresolved external symbol "public: class CParty * __cdecl CUser::GetParty(void)" (?GetParty@CUser@@QEAAPEAVCParty@@XZ)
1>CUserSocket.obj : error LNK2019: unresolved external symbol "public: bool __cdecl CUser::IsNowTrade(void)const " (?IsNowTrade@CUser@@QEBA_NXZ) referenced in function "public: bool __cdecl CUserSocket::HtmlCmdObserver(class CUser *,wchar_t const *,wchar_t const *)" (?HtmlCmdObserver@CUserSocket@@QEAA_NPEAVCUser@@PEB_W1@Z)
1>GraciaEpilogueBuySell.obj : error LNK2001: unresolved external symbol "public: bool __cdecl CUser::IsNowTrade(void)const " (?IsNowTrade@CUser@@QEBA_NXZ)
1>NpcServer.obj : error LNK2001: unresolved external symbol "public: bool __cdecl CUser::IsNowTrade(void)const " (?IsNowTrade@CUser@@QEBA_NXZ)
1>CUserSocket.obj : error LNK2019: unresolved external symbol "public: bool __cdecl CUser::CanOpenPrivateShop(int)" (?CanOpenPrivateShop@CUser@@QEAA_NH@Z) referenced in function "public: bool __cdecl CUserSocket::InGamePacketHandler(unsigned char const *,unsigned char)" (?InGamePacketHandler@CUserSocket@@QEAA_NPEBEE@Z)
1>GraciaEpilogueBuySell.obj : error LNK2019: unresolved external symbol "public: void __cdecl CUser::AddRefundItem(class CItem *,__int64,__int64)" (?AddRefundItem@CUser@@QEAAXPEAVCItem@@_J1@Z) referenced in function "public: static unsigned char const * __cdecl GraciaEpilogue::DisassembleSoldItem(unsigned char const *,class CUser *,int *,__int64 *)" (?DisassembleSoldItem@GraciaEpilogue@@SAPEBEPEBEPEAVCUser@@PEAHPEA_J@Z)
1>GraciaEpilogueBuySell.obj : error LNK2019: unresolved external symbol "public: struct std::pair<int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > __cdecl CUser::GetRefundData(void)" (?GetRefundData@CUser@@QEAA?AU?$pair@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@XZ) referenced in function "public: static bool __cdecl GraciaEpilogue::NpcShowBuySellPagePacket(void *,unsigned char const *)" (?NpcShowBuySellPagePacket@GraciaEpilogue@@SA_NPEAXPEBE@Z)
1>NpcServer.obj : error LNK2001: unresolved external symbol "public: struct std::pair<int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > __cdecl CUser::GetRefundData(void)" (?GetRefundData@CUser@@QEAA?AU?$pair@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@XZ)
1>GraciaEpilogueBuySell.obj : error LNK2019: unresolved external symbol "public: bool __cdecl CUser::IsItemUsable(void)" (?IsItemUsable@CUser@@QEAA_NXZ) referenced in function "public: static bool __cdecl GraciaEpilogue::RequestRefundItem(class CUserSocket *,unsigned char const *,unsigned char)" (?RequestRefundItem@GraciaEpilogue@@SA_NPEAVCUserSocket@@PEBEE@Z)
1>NpcServer.obj : error LNK2001: unresolved external symbol "public: bool __cdecl CUser::IsItemUsable(void)" (?IsItemUsable@CUser@@QEAA_NXZ)
1>GraciaEpilogueBuySell.obj : error LNK2019: unresolved external symbol "public: class CTrade * __cdecl CUser::GetTrade(void)" (?GetTrade@CUser@@QEAAPEAVCTrade@@XZ) referenced in function "public: static bool __cdecl GraciaEpilogue::RequestRefundItem(class CUserSocket *,unsigned char const *,unsigned char)" (?RequestRefundItem@GraciaEpilogue@@SA_NPEAVCUserSocket@@PEBEE@Z)
1>NpcServer.obj : error LNK2019: unresolved external symbol "public: bool __cdecl CUser::RideForEvent(int,int,bool)" (?RideForEvent@CUser@@QEAA_NHH_N@Z) referenced in function "public: static bool __cdecl NpcServer::NpcRideWyvern2(void *,unsigned char const *)" (?NpcRideWyvern2@NpcServer@@SA_NPEAXPEBE@Z)
1>Server.obj : error LNK2019: unresolved external symbol "public: static void __cdecl CUser::Init(void)" (?Init@CUser@@SAXXZ) referenced in function "public: static void __cdecl Server::Init(void)" (?Init@Server@@SAXXZ)
1>..\Server\MyExt64.dll : fatal error LNK1120: 19 unresolved externals
1>Build log was saved at "file://c:\Users\Mindaugas\Desktop\L2\myext64\l2shrine-extender-public-adb0068f9c71\MyExt64\x64\Release\BuildLog.htm"
1>MyExt64 - 32 error(s), 0 warning(s)

 

Edited by DarthVader
Posted
19 hours ago, DarthVader said:

Hmm.

Where could be the problem?

 

My fault, there was conflict because of CUser.obj from Server and CUser.obj (newly added) from Cached. As I compile it in Visual Studio 2015, I haven't noticed. Fixed, just git pull and it should compile.

Posted
53 minutes ago, Rootware said:

Hello. What the L2OFF pack you uses for test? Your pack have scripts folder w/o editions?

 

We've used l2server_l2off_gracia_final_83, unfortunately I don't have it (we've made lot of fixes there, some quest rates etc), now we're using Epilogue data mixed from GF data, Freya leak and AdvExt Epilogue from year 2016 (found somewhere on net)

  • 3 weeks later...
Posted (edited)

Hi, 
I have seen you have made some change about mail system, do you accept suggestion about it ?

If yes check spoiler :


1. Do you think we could send item with mail from SQL? (similar to dimensional merchant)
2. The date a mail stay can be changed? (If I am right on official that 30 days) But here will you add a param in .ini to configure the delay before delete (like 0 = never and next that counted in day?)
3. Not a suggestion just a question, will you check if we can send item in mail with the params is tradable from itemdata.txt?
4. Really thank you for your extender I know I can seem intrusive but really you do something wonderful ! 

Edited by Jojo_

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • Posts

    • what pack you use  send me on discord for it
    • package custom.events.RandomZoneEvent; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ScheduledFuture; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.time.TimeUtil; import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.gameserver.managers.ZoneManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.quest.Event; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.model.zone.type.RandomZone; import org.l2jmobius.gameserver.util.Broadcast; /** * Random Zone Event - Activates one random PvP zone temporarily. No modifica la clase de la zona: usa flags PvP en runtime. * @author Juan */ public class RandomZoneEvent extends Event { private static final String CONFIG_FILE = "data/scripts/custom/events/RandomZoneEvent/config.xml"; private static int EVENT_DURATION_MINUTES = 15; private static boolean _isActive = false; private ScheduledFuture<?> _eventTask = null; private final List<ZoneType> _availableZones = new ArrayList<>(); private ZoneType _activeZone = null; public RandomZoneEvent() { loadConfig(); loadZones(); registerZoneListeners(); } /** * Registra listeners a TODAS LAS ZONAS random */ private void registerZoneListeners() { for (ZoneType zone : _availableZones) { addEnterZoneId(zone.getId()); addExitZoneId(zone.getId()); LOGGER.info("[RandomZoneEvent] Registered listener for zone: " + zone.getName()); } } private void loadConfig() { new IXmlReader() { @Override public void load() { parseDatapackFile(CONFIG_FILE); } @Override public void parseDocument(Document doc, File file) { forEach(doc, "event", eventNode -> { final StatSet att = new StatSet(parseAttributes(eventNode)); final String name = att.getString("name"); for (Node node = eventNode.getFirstChild(); node != null; node = node.getNextSibling()) { if ("schedule".equals(node.getNodeName())) { final StatSet attributes = new StatSet(parseAttributes(node)); final String pattern = attributes.getString("pattern"); final SchedulingPattern schedulingPattern = new SchedulingPattern(pattern); final StatSet params = new StatSet(); params.set("Name", name); params.set("SchedulingPattern", pattern); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer("Schedule_" + name, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Event " + name + " scheduled at " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } }); } }.load(); } private void loadZones() { for (ZoneType zone : ZoneManager.getInstance().getAllZones(RandomZone.class)) { if ((zone.getName() != null) && zone.getName().toLowerCase().startsWith("random_zone")) { _availableZones.add(zone); LOGGER.info("[RandomZoneEvent] Loaded zone: " + zone.getName() + " (id=" + zone.getId() + ")"); } } LOGGER.info("[RandomZoneEvent] Total random zones loaded: " + _availableZones.size()); } @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { if (event.startsWith("Schedule_")) { eventStart(null); final SchedulingPattern schedulingPattern = new SchedulingPattern(params.getString("SchedulingPattern")); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer(event, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Rescheduled for " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } @Override public boolean eventStart(Player eventMaker) { if (_isActive) { if (eventMaker != null) { eventMaker.sendMessage("RandomZoneEvent already active."); } return false; } if (_availableZones.isEmpty()) { Broadcast.toAllOnlinePlayers("[RandomZoneEvent] No zones configured."); return false; } _isActive = true; Broadcast.toAllOnlinePlayers("⚔️ Random Zone Event has started!"); _eventTask = ThreadPool.schedule(this::activateRandomZone, 5_000); return true; } private void activateRandomZone() { _activeZone = _availableZones.get(new Random().nextInt(_availableZones.size())); _activeZone.setEnabled(true); Broadcast.toAllOnlinePlayers("🔥 Random Zone Event: " + _activeZone.getName() + " is now PvP for " + EVENT_DURATION_MINUTES + " minutes!"); _eventTask = ThreadPool.schedule(this::eventStop, EVENT_DURATION_MINUTES * 60 * 1000L); } @Override public boolean eventStop() { if (!_isActive) { return false; } _isActive = false; if (_eventTask != null) { _eventTask.cancel(true); _eventTask = null; } if (_activeZone != null) { _activeZone.setEnabled(false); Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended. " + _activeZone.getName() + " is back to normal."); _activeZone = null; } else { Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended."); } return true; } @Override public void onEnterZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, true); if (creature.isPlayer()) { creature.sendMessage("Esta zona está en modo PvP temporalmente."); } } } @Override public void onExitZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, false); if (creature.isPlayer()) { creature.sendMessage("Abandonaste la zona PvP temporal."); } } } @Override public boolean eventBypass(Player player, String bypass) { return true; } @Override public String onEvent(String event, Npc npc, Player player) { return super.onEvent(event, npc, player); } @Override public String onFirstTalk(Npc npc, Player player) { return null; } public static void main(String[] args) { new RandomZoneEvent(); } } i have this but its not working
    • ZonePvPSpawnBossRadio=0 ZonePvPSpawnBossBarakiel=0 at the Customs.ini in L2Server folder. Im prety sure this is it because i had the same problem with you in cruma 1 floor for example and i couldn't fix it but i fixed it finally by changing these 2 lines
    • Siege Reward Start PM Msg Rework Config root BossDieAnnounce and BossDieSound in the L24Team.properties and Config.java files for global raid boss death notifications and sounds. Adds a new reward_list table to the DB.sql file to track castle rewards. Improves character creation logic for thread safety and validation. Adds extensive state checks to the RequestEnchantItem method to prevent enchantments during inappropriate player states. Fixed auto-attack animation bug (there was no attack animation, only damage animation) Clean Code Other fixes I forgot to list! Java 14 Fixed issue where deleting a character would prevent it from leaving the screen or being removed, or even after a delete CD (it would only exit when re-logging in or creating a new character). Added Premium System from the other C2 project (Needs testing and improvement). Added the "Improved" Community Board (incomplete).
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock