Jump to content

Recommended Posts

Posted (edited)

can you send me diff patch for aCis ? I mean Automatic potions.

 

Core is here...

 

### Eclipse Workspace Patch 1.0

#P aCis_gameserver

Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

===================================================================

--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 361)

+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)

@@ -325,6 +325,24 @@

/** The active_boxes_characters. */

public List active_boxes_characters = new ArrayList<>();

 

+ private Map> _autoPotTasks = new HashMap<>();

+

+ public boolean isAutoPot(int id)

+ {

+ return _autoPotTasks.keySet().contains(id);

+ }

+

+ public void setAutoPot(int id, Futuretask, boolean add)

+ {

+ if (add)

+ _autoPotTasks.put(id, task);

+ else

+ {

+ _autoPotTasks.get(id).cancel(true);

+ _autoPotTasks.remove(id);

+ }

+ }

+

public class AIAccessor extends L2Character.AIAccessor

{

protected AIAccessor()

@@ -11089,6 +11107,22 @@

if (isInBoat())

activeChar.sendPacket(new GetOnVehicle(getObjectId(), getBoat().getObjectId(), getInVehiclePosition()));

 

+ if (isAutoPot(728))

+ {

+ sendPacket(new ExAutoSoulShot(728, 0));

+ setAutoPot(728, null, false);

+ }

+ if (isAutoPot(1539))

+ {

+ sendPacket(new ExAutoSoulShot(1539, 0));

+ setAutoPot(1539, null, false);

+ }

+ if (isAutoPot(5592))

+ {

+ sendPacket(new ExAutoSoulShot(5592, 0));

+ setAutoPot(5592, null, false);

+ }

+

// No reason to try to broadcast shop message if player isn't in store mode

if (isInStoreMode())

{

Index: java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java

===================================================================

--- java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (revision 358)

+++ java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (working copy)

@@ -15,6 +15,7 @@

package net.sf.l2j.gameserver.handler.itemhandlers;

 

import net.sf.l2j.commons.random.Rnd;

+import net.sf.l2j.gameserver.ThreadPoolManager;

import net.sf.l2j.gameserver.handler.IItemHandler;

import net.sf.l2j.gameserver.model.ShotType;

import net.sf.l2j.gameserver.model.actor.L2Playable;

@@ -23,11 +24,18 @@

import net.sf.l2j.gameserver.model.item.instance.ItemInstance;

import net.sf.l2j.gameserver.model.item.kind.Weapon;

import net.sf.l2j.gameserver.network.SystemMessageId;

+import net.sf.l2j.gameserver.network.serverpackets.ExAutoSoulShot;

import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;

import net.sf.l2j.gameserver.util.Broadcast;

 

public class SoulShots implements IItemHandler

{

+

+ private static final int

+ MANA_POT_CD = 2,

+ HEALING_POT_CD = 11, // DO NOT PUT LESS THAN 10

+ CP_POT_CD = 2;

+

@Override

public void useItem(L2Playable playable, ItemInstance item, boolean forceUse)

{

@@ -39,6 +47,108 @@

final Weapon weaponItem = activeChar.getActiveWeaponItem();

final int itemId = item.getItemId();

 

+ if (itemId == 728 || itemId == 1539 || itemId == 5592)

+ {

+ switch (itemId)

+ {

+ case 728: // mana potion

+ {

+ if (activeChar.isAutoPot(728))

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(728, 0));

+ activeChar.sendMessage("Deactivated auto mana potions.");

+ activeChar.setAutoPot(728, null, false);

+ }

+ else

+ {

+ if (activeChar.getInventory().getItemByItemId(728) != null)

+ {

+ if (activeChar.getInventory().getItemByItemId(728).getCount() > 1)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(728, 1));

+ activeChar.sendMessage("Activated auto mana potions.");

+ activeChar.setAutoPot(728, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(728, activeChar), 1000, MANA_POT_CD*1000), true);

+ }

+ else

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true);

+ }

+ }

+ }

+

+ break;

+ }

+ case 1539: // greater healing potion

+ {

+ if (activeChar.isAutoPot(1539))

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(1539, 0));

+ activeChar.sendMessage("Deactivated auto healing potions.");

+ activeChar.setAutoPot(1539, null, false);

+ }

+ else

+ {

+ if (activeChar.getInventory().getItemByItemId(1539) != null)

+ {

+ if (activeChar.getInventory().getItemByItemId(1539).getCount() > 1)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(1539, 1));

+ activeChar.sendMessage("Activated auto healing potions.");

+ activeChar.setAutoPot(1539, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(1539, activeChar), 1000, HEALING_POT_CD*1000), true);

+ }

+ else

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true);

+ }

+ }

+ }

+

+ break;

+ }

+ case 5592: // greater cp potion

+ {

+ if (activeChar.isAutoPot(5592))

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(5592, 0));

+ activeChar.sendMessage("Deactivated auto cp potions.");

+ activeChar.setAutoPot(5592, null, false);

+ }

+ else

+ {

+ if (activeChar.getInventory().getItemByItemId(5592) != null)

+ {

+ if (activeChar.getInventory().getItemByItemId(5592).getCount() > 1)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(5592, 1));

+ activeChar.sendMessage("Activated auto cp potions.");

+ activeChar.setAutoPot(5592, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(5592, activeChar), 1000, CP_POT_CD*1000), true);

+ }

+ else

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true);

+ }

+ }

+ }

+

+ break;

+ }

+ }

+

+ return;

+ }

+

// Check if soulshot can be used

if (weaponInst == null || weaponItem.getSoulShotCount() == 0)

{

@@ -78,4 +188,76 @@

activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT);

Broadcast.toSelfAndKnownPlayersInRadiusSq(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getId(), 1, 0, 0), 360000);

}

+

+ private class AutoPot implements Runnable

+ {

+ private int id;

+ private L2PcInstance activeChar;

+

+ public AutoPot(int id, L2PcInstance activeChar)

+ {

+ this.id = id;

+ this.activeChar = activeChar;

+ }

+

+ @Override

+ public void run()

+ {

+ if (activeChar.getInventory().getItemByItemId(id) == null)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(id, 0));

+ activeChar.setAutoPot(id, null, false);

+ return;

+ }

+

+ switch (id)

+ {

+ case 728:

+ {

+ if (activeChar.getCurrentMp() < 0.70*activeChar.getMaxMp())

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true);

+ }

+

+ break;

+ }

+ case 1539:

+ {

+ if (activeChar.getCurrentHp() < 0.70*activeChar.getMaxHp())

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true);

+ }

+

+ break;

+ }

+ case 5592:

+ {

+ if (activeChar.getCurrentCp() < 0.70*activeChar.getMaxCp())

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true);

+ }

+

+ break;

+ }

+ }

+

+ if (activeChar.getInventory().getItemByItemId(id) == null)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(id, 0));

+ activeChar.setAutoPot(id, null, false);

+ }

+ }

+ }

}

\ No newline at end of file

 

 

Edited by Pedra
Posted

Core is here...

 

### Eclipse Workspace Patch 1.0

#P aCis_gameserver

Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

===================================================================

--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 361)

+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)

@@ -325,6 +325,24 @@

/** The active_boxes_characters. */

public List active_boxes_characters = new ArrayList<>();

 

+ private Map> _autoPotTasks = new HashMap<>();

+

+ public boolean isAutoPot(int id)

+ {

+ return _autoPotTasks.keySet().contains(id);

+ }

+

+ public void setAutoPot(int id, Futuretask, boolean add)

+ {

+ if (add)

+ _autoPotTasks.put(id, task);

+ else

+ {

+ _autoPotTasks.get(id).cancel(true);

+ _autoPotTasks.remove(id);

+ }

+ }

+

public class AIAccessor extends L2Character.AIAccessor

{

protected AIAccessor()

@@ -11089,6 +11107,22 @@

if (isInBoat())

activeChar.sendPacket(new GetOnVehicle(getObjectId(), getBoat().getObjectId(), getInVehiclePosition()));

 

+ if (isAutoPot(728))

+ {

+ sendPacket(new ExAutoSoulShot(728, 0));

+ setAutoPot(728, null, false);

+ }

+ if (isAutoPot(1539))

+ {

+ sendPacket(new ExAutoSoulShot(1539, 0));

+ setAutoPot(1539, null, false);

+ }

+ if (isAutoPot(5592))

+ {

+ sendPacket(new ExAutoSoulShot(5592, 0));

+ setAutoPot(5592, null, false);

+ }

+

// No reason to try to broadcast shop message if player isn't in store mode

if (isInStoreMode())

{

Index: java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java

===================================================================

--- java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (revision 358)

+++ java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (working copy)

@@ -15,6 +15,7 @@

package net.sf.l2j.gameserver.handler.itemhandlers;

 

import net.sf.l2j.commons.random.Rnd;

+import net.sf.l2j.gameserver.ThreadPoolManager;

import net.sf.l2j.gameserver.handler.IItemHandler;

import net.sf.l2j.gameserver.model.ShotType;

import net.sf.l2j.gameserver.model.actor.L2Playable;

@@ -23,11 +24,18 @@

import net.sf.l2j.gameserver.model.item.instance.ItemInstance;

import net.sf.l2j.gameserver.model.item.kind.Weapon;

import net.sf.l2j.gameserver.network.SystemMessageId;

+import net.sf.l2j.gameserver.network.serverpackets.ExAutoSoulShot;

import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;

import net.sf.l2j.gameserver.util.Broadcast;

 

public class SoulShots implements IItemHandler

{

+

+ private static final int

+ MANA_POT_CD = 2,

+ HEALING_POT_CD = 11, // DO NOT PUT LESS THAN 10

+ CP_POT_CD = 2;

+

@Override

public void useItem(L2Playable playable, ItemInstance item, boolean forceUse)

{

@@ -39,6 +47,108 @@

final Weapon weaponItem = activeChar.getActiveWeaponItem();

final int itemId = item.getItemId();

 

+ if (itemId == 728 || itemId == 1539 || itemId == 5592)

+ {

+ switch (itemId)

+ {

+ case 728: // mana potion

+ {

+ if (activeChar.isAutoPot(728))

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(728, 0));

+ activeChar.sendMessage("Deactivated auto mana potions.");

+ activeChar.setAutoPot(728, null, false);

+ }

+ else

+ {

+ if (activeChar.getInventory().getItemByItemId(728) != null)

+ {

+ if (activeChar.getInventory().getItemByItemId(728).getCount() > 1)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(728, 1));

+ activeChar.sendMessage("Activated auto mana potions.");

+ activeChar.setAutoPot(728, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(728, activeChar), 1000, MANA_POT_CD*1000), true);

+ }

+ else

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true);

+ }

+ }

+ }

+

+ break;

+ }

+ case 1539: // greater healing potion

+ {

+ if (activeChar.isAutoPot(1539))

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(1539, 0));

+ activeChar.sendMessage("Deactivated auto healing potions.");

+ activeChar.setAutoPot(1539, null, false);

+ }

+ else

+ {

+ if (activeChar.getInventory().getItemByItemId(1539) != null)

+ {

+ if (activeChar.getInventory().getItemByItemId(1539).getCount() > 1)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(1539, 1));

+ activeChar.sendMessage("Activated auto healing potions.");

+ activeChar.setAutoPot(1539, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(1539, activeChar), 1000, HEALING_POT_CD*1000), true);

+ }

+ else

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true);

+ }

+ }

+ }

+

+ break;

+ }

+ case 5592: // greater cp potion

+ {

+ if (activeChar.isAutoPot(5592))

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(5592, 0));

+ activeChar.sendMessage("Deactivated auto cp potions.");

+ activeChar.setAutoPot(5592, null, false);

+ }

+ else

+ {

+ if (activeChar.getInventory().getItemByItemId(5592) != null)

+ {

+ if (activeChar.getInventory().getItemByItemId(5592).getCount() > 1)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(5592, 1));

+ activeChar.sendMessage("Activated auto cp potions.");

+ activeChar.setAutoPot(5592, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(5592, activeChar), 1000, CP_POT_CD*1000), true);

+ }

+ else

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true);

+ }

+ }

+ }

+

+ break;

+ }

+ }

+

+ return;

+ }

+

// Check if soulshot can be used

if (weaponInst == null || weaponItem.getSoulShotCount() == 0)

{

@@ -78,4 +188,76 @@

activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT);

Broadcast.toSelfAndKnownPlayersInRadiusSq(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getId(), 1, 0, 0), 360000);

}

+

+ private class AutoPot implements Runnable

+ {

+ private int id;

+ private L2PcInstance activeChar;

+

+ public AutoPot(int id, L2PcInstance activeChar)

+ {

+ this.id = id;

+ this.activeChar = activeChar;

+ }

+

+ @Override

+ public void run()

+ {

+ if (activeChar.getInventory().getItemByItemId(id) == null)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(id, 0));

+ activeChar.setAutoPot(id, null, false);

+ return;

+ }

+

+ switch (id)

+ {

+ case 728:

+ {

+ if (activeChar.getCurrentMp() < 0.70*activeChar.getMaxMp())

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true);

+ }

+

+ break;

+ }

+ case 1539:

+ {

+ if (activeChar.getCurrentHp() < 0.70*activeChar.getMaxHp())

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true);

+ }

+

+ break;

+ }

+ case 5592:

+ {

+ if (activeChar.getCurrentCp() < 0.70*activeChar.getMaxCp())

+ {

+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100);

+ activeChar.broadcastPacket(msu);

+

+ ItemSkills is = new ItemSkills();

+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true);

+ }

+

+ break;

+ }

+ }

+

+ if (activeChar.getInventory().getItemByItemId(id) == null)

+ {

+ activeChar.sendPacket(new ExAutoSoulShot(id, 0));

+ activeChar.setAutoPot(id, null, false);

+ }

+ }

+ }

}

\ No newline at end of file

 

 

i dont have the same adapt..but if it works ok :P

  • 3 weeks later...
Posted

Hello to all. I have problem with my l2jfrozen because i dont have one class. Im trying to adapt from acis to frozen this code but without seccess. With what class i can change my code to go well. Thanks advance.

  • 3 weeks later...
  • 3 months later...
  • 1 month later...
Posted (edited)

what class are you missing?

ItemSkill class  ---->> ItemSkills is = new ItemSkills();

 

Any ideas how to fix it?? Frozen rev 1132

Edited by iitmtii
  • 2 months later...
  • 1 month later...
Posted

Where in L2PcInstance should i add this code? im using l2jfrozen.

@@ -4321,6 +4339,22 @@
 			teleToLocation(184351, 20318, -3174, 0);
 		}
 		
+		if (isAutoPot(728))
+		{
+			sendPacket(new ExAutoSoulShot(728, 0));
+			setAutoPot(728, null, false);
+		}
+		if (isAutoPot(1539))
+		{
+			sendPacket(new ExAutoSoulShot(1539, 0));
+			setAutoPot(1539, null, false);
+		}
+		if (isAutoPot(5592))
+		{
+			sendPacket(new ExAutoSoulShot(5592, 0));
+			setAutoPot(5592, null, false);
+		}
+		
 		return true;
 	}
 	

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Posts

    • From Salvation onwards I think you need a patched nwindow.dll that allows such modifications, try to see if you get what you need here: https://drive.google.com/drive/u/1/folders/1LLbQFGf8KlR-O0Iv5umfF-pwZgrDh9bd
    • hello everyone! I am wanting to save the files (Ini. - Data - ) of the EP5 Client: Salvation... But they generate the error "corrupt files"... I tried several versions of L2FileEditor without good results. I need help! Thank you!
    • Opening December 6th at 19:00 (GMT +3)! Open Beta Test from November 30th!   https://l2soe.com/   🌟 Introducing L2 Saga of Eternia: A Revolution in Lineage 2 High Five! 🌟   Dear Lineage 2 enthusiasts, Prepare to witness the future of private servers! L2 Saga of Eternia is not just another High Five project—it’s a game-changing experience designed to compete with the giants of the Lineage 2 private server scene. Built for the community, by the community, we’re here to raise the bar in quality, innovation, and longevity. What Sets Us Apart? 💎 No Wipes, Ever Say goodbye to the fear of losing your progress. Our server is built to last and will never close. Stability and consistency are our promises to you. ⚔️ Weekly New Content Our dedicated development team ensures fresh challenges, events, and updates every week. From custom quests to exclusive features, there will always be something exciting to explore. 💰 No Pay-to-Win Skill and strategy matter most here. Enjoy a balanced gameplay environment where your achievements come from effort, not your wallet. 🌍 A Massive Community With 2000+ players expected, join a vibrant and active community of like-minded adventurers ready to conquer the world of Aden. 🏆 Fair and Competitive Gameplay Our systems are designed to promote healthy competition while avoiding abusive mechanics and exploits. 🔧 Professional Development From advanced bug fixes to carefully curated content, we pride ourselves on smooth performance, no lag, and unparalleled server quality. Key Features Chronicle: High Five with unique interface Rate: Dynamic x10 rates Class Balance: Carefully fine-tuned for a fair experience PvP Focused: PvP Ranking & aura display effect for 3 Top PvPers every week Custom Events: Seasonal and permanent events to keep you engaged Additional Features:   Custom Endgame Content: Introduce unique dungeons, raids, or zones unavailable in other servers. Player-Driven Economy: Implement a strong market system and avoid overinflated drops or rewards. Epic Siege Battles: Announce special large-scale sieges and PvP events. Incentives for Streamers and Clans: Attract influencers and big clans to boost server publicity. Roadmap Transparency: Share a public roadmap of planned updates to build trust and excitemen   Here you can read all the features: https://l2soe.com/features   Video preview: Join the Revolution! This is your chance to be part of something legendary. L2 Saga of Eternia is not just a server; it’s a movement to redefine what Lineage 2 can be. Whether you’re a seasoned veteran or a newcomer to the world of Aden, we invite you to experience Lineage 2 at its finest.   Official Launch Date: December 6th 2024 Website: https://l2soe.com/ Facebook: https://www.facebook.com/l2soe Discord: https://discord.com/invite/l2eternia   Let’s build the ultimate Lineage 2 experience together. See you in-game! 🎮
    • That's like a tutorial on how to run l2 on MacOS Xd but good job for the investigation. 
    • small update: dc robe set sold   wts adena 1kk = 1.5$ 
  • Topics

×
×
  • Create New...