Jump to content

Question

Posted (edited)

Hello! The only problem that i am facing is the bold line i cant find the SetVar! Need to adapt it for Acis 398.If anyone can help! Thanks

 

 

private void rewardPlayers()
    {
        // First Add Fixed Reward
        for (Player player : players)
        {
            
            PlayerMemo.setVar(player, "dungeon_atleast1time", "true", -1);
            for (Entry<Integer, Integer> itemId : template.getRewards().entrySet())
            {
                player.addItem("dungeon reward", itemId.getKey(), itemId.getValue(), null, true);
            }
        }
        
        if (!template.getRewardHtm().equals("NULL"))
        {
            NpcHtmlMessage htm = new NpcHtmlMessage(0);
            htm.setFile(template.getRewardHtm());
            for (Player player : players)
                player.sendPacket(htm);
        }
        else
        {
            for (Player player : players)
            {
                player.setInstance(InstanceManager.getInstance().getInstance(0), true);
                player.teleportTo(82635, 148798, -3464, 25);
            }
        }
    }

 

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

 

Here is PlayerMemo

 

package net.sf.l2j.gameserver.model.memo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import net.sf.l2j.commons.data.MemoSet;
import net.sf.l2j.commons.logging.CLogger;
import net.sf.l2j.commons.pool.ConnectionPool;

/**
 * An implementation of {@link MemoSet} used for Player. There is a restore/save system.
 */
public class PlayerMemo extends MemoSet
{
    private static final long serialVersionUID = 1L;
    
    private static final CLogger LOGGER = new CLogger(PlayerMemo.class.getName());
    
    private static final String SELECT_MEMOS = "SELECT * FROM character_memo WHERE charId = ?";
    private static final String DELETE_MEMO = "DELETE FROM character_memo WHERE charId = ? AND var = ?";
    private static final String INSERT_OR_UPDATE_MEMO = "INSERT INTO character_memo (charId, var, val) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE val = VALUES(val)";
    
    private final int _objectId;
    
    public PlayerMemo(int objectId)
    {
        _objectId = objectId;
        
        // Restore memos.
        try (Connection con = ConnectionPool.getConnection();
            PreparedStatement ps = con.prepareStatement(SELECT_MEMOS))
        {
            ps.setInt(1, _objectId);
            
            try (ResultSet rs = ps.executeQuery())
            {
                while (rs.next())
                    put(rs.getString("var"), rs.getString("val"));
            }
        }
        catch (Exception e)
        {
            LOGGER.error("Couldn't restore memos for player id {}.", e, _objectId);
        }
    }
    
    @Override
    protected void onSet(String key, String value)
    {
        // Insert memo, on duplicate update it.
        try (Connection con = ConnectionPool.getConnection();
            PreparedStatement ps = con.prepareStatement(INSERT_OR_UPDATE_MEMO))
        {
            ps.setInt(1, _objectId);
            ps.setString(2, key);
            ps.setString(3, value);
            ps.execute();
        }
        catch (Exception e)
        {
            LOGGER.error("Couldn't set {} memo for player id {}.", e, key, _objectId);
        }
    }
    
    @Override
    protected void onUnset(String key)
    {
        // Clear memo.
        try (Connection con = ConnectionPool.getConnection();
            PreparedStatement ps = con.prepareStatement(DELETE_MEMO))
        {
            ps.setInt(1, _objectId);
            ps.setString(2, key);
            ps.execute();
        }
        catch (Exception e)
        {
            LOGGER.error("Couldn't unset {} memo for player id {}.", e, key, _objectId);
        }
    }
}

Edited by addx20

3 answers to this question

Recommended Posts

  • 0
Posted
37 minutes ago, addx20 said:

Hello! The only problem that i am facing is the bold line i cant find the SetVar! Need to adapt it for Acis 398.If anyone can help! Thanks

 

 

private void rewardPlayers()
    {
        // First Add Fixed Reward
        for (Player player : players)
        {
            
            PlayerMemo.setVar(player, "dungeon_atleast1time", "true", -1);
            for (Entry<Integer, Integer> itemId : template.getRewards().entrySet())
            {
                player.addItem("dungeon reward", itemId.getKey(), itemId.getValue(), null, true);
            }
        }
        
        if (!template.getRewardHtm().equals("NULL"))
        {
            NpcHtmlMessage htm = new NpcHtmlMessage(0);
            htm.setFile(template.getRewardHtm());
            for (Player player : players)
                player.sendPacket(htm);
        }
        else
        {
            for (Player player : players)
            {
                player.setInstance(InstanceManager.getInstance().getInstance(0), true);
                player.teleportTo(82635, 148798, -3464, 25);

            }
        }
    }

 

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

 

Here is PlayerMemo

 

package net.sf.l2j.gameserver.model.memo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import net.sf.l2j.commons.data.MemoSet;
import net.sf.l2j.commons.logging.CLogger;
import net.sf.l2j.commons.pool.ConnectionPool;

/**
 * An implementation of {@link MemoSet} used for Player. There is a restore/save system.
 */
public class PlayerMemo extends MemoSet
{
    private static final long serialVersionUID = 1L;
    
    private static final CLogger LOGGER = new CLogger(PlayerMemo.class.getName());
    
    private static final String SELECT_MEMOS = "SELECT * FROM character_memo WHERE charId = ?";
    private static final String DELETE_MEMO = "DELETE FROM character_memo WHERE charId = ? AND var = ?";
    private static final String INSERT_OR_UPDATE_MEMO = "INSERT INTO character_memo (charId, var, val) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE val = VALUES(val)";
    
    private final int _objectId;
    
    public PlayerMemo(int objectId)
    {
        _objectId = objectId;
        
        // Restore memos.
        try (Connection con = ConnectionPool.getConnection();
            PreparedStatement ps = con.prepareStatement(SELECT_MEMOS))
        {
            ps.setInt(1, _objectId);
            
            try (ResultSet rs = ps.executeQuery())
            {
                while (rs.next())
                    put(rs.getString("var"), rs.getString("val"));
            }
        }
        catch (Exception e)
        {
            LOGGER.error("Couldn't restore memos for player id {}.", e, _objectId);
        }
    }
    
    @Override
    protected void onSet(String key, String value)
    {
        // Insert memo, on duplicate update it.
        try (Connection con = ConnectionPool.getConnection();
            PreparedStatement ps = con.prepareStatement(INSERT_OR_UPDATE_MEMO))
        {
            ps.setInt(1, _objectId);
            ps.setString(2, key);
            ps.setString(3, value);
            ps.execute();
        }
        catch (Exception e)
        {
            LOGGER.error("Couldn't set {} memo for player id {}.", e, key, _objectId);
        }
    }
    
    @Override
    protected void onUnset(String key)
    {
        // Clear memo.
        try (Connection con = ConnectionPool.getConnection();
            PreparedStatement ps = con.prepareStatement(DELETE_MEMO))
        {
            ps.setInt(1, _objectId);
            ps.setString(2, key);
            ps.execute();
        }
        catch (Exception e)
        {
            LOGGER.error("Couldn't unset {} memo for player id {}.", e, key, _objectId);

        }
    }
}

PlayerMemo.setVar(player, "dungeon_atleast1time", "true", -1);

 

use

 

player.getMemos().set("dungeon_atleast1time", -1);

Guest
This topic is now closed to further replies.


  • Posts

    • 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$ 
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt
  • Topics

×
×
  • Create New...