Jump to content

Question

Posted

i have this error and i dont have any idea how i can fix it  can some one help 

error : https://ibb.co/qdLj1L4

 

code :   

---------------------------------------------------------------------------------------------------------------------------------------------------------
package zones;

import java.util.concurrent.ScheduledFuture;

import l2f.commons.threading.RunnableImpl;
import l2f.gameserver.ThreadPoolManager;
import l2f.gameserver.listener.zone.OnZoneEnterLeaveListener;
import l2f.gameserver.model.Creature;
import l2f.gameserver.model.Player;
import l2f.gameserver.model.Zone;
import l2f.gameserver.scripts.ScriptFile;
import l2f.gameserver.utils.ReflectionUtils;

/**
 * @author L2Mythras
 */

public class PvPZone implements ScriptFile
{
    private static ZoneListener _zoneListener;

    @Override
    public void onLoad()
    {
        _zoneListener = new ZoneListener();
        Zone zone = ReflectionUtils.getZone("[pvp_zone_toi]");
        zone.addListener(_zoneListener);
    }

    @Override
    public void onReload()
    {
         on reload
    }

    @Override
    public void onShutdown()
    {
         on shutdown
    }

    public class ZoneListener implements OnZoneEnterLeaveListener
    {
        @Override
        public void onZoneEnter(Zone zone, Creature cha)
        {
            ScheduledFuture<?> _checkTask = null;
            if (zone.getParams() == null || !cha.isPlayable()) 
                return;
            
            if (!cha.isPlayer()) 
                return;

            cha.getPlayer().sendMessage("You have entered in a PvP Zone!");
            cha.startPvPFlag(null);
            cha.getPlayer().sendMessage("You are now flagged!");

            _checkTask = ThreadPoolManager.getInstance().scheduleAtFixedRate(new checkZone((Player)cha, zone, _checkTask), 60000, 60000);
        }

        
        public class checkZone extends RunnableImpl
        {
            Player _cha;
            Zone _zone;
            ScheduledFuture<?> _checkTask;
            
            public checkZone(Player cha, Zone zone, ScheduledFuture<?> checkTask)
            {
                _cha = cha;
                _zone = zone;
                _checkTask = checkTask;
            }

            @Override
            public void runImpl() throws Exception
            {
                if(_cha.isInZone(_zone))
                {
                    _cha.startPvPFlag(null);
                }
                else
                {
                    _checkTask.cancel(true);
                    _checkTask = null;
                }
            }
            
        }
        
        @Override
        public void onZoneLeave(Zone zone, Creature cha)
        {
            if (cha == null) 
                return;
            cha.getPlayer().sendMessage("You have left the PvP Zone !");
            cha.getPlayer().stopPvPFlag();
        }

    }
}

---------------------------------------------------------------------------------------------------------------------------------------------------------

 

5 answers to this question

Recommended Posts

  • 0
Posted

Wrong section my friend.

 

As far as i can understand u want to make players flag whenever enter the zone. So ur first mistake starts here

  

27 minutes ago, ISAM_MISTRO said:

 

public class PvPZone implements ScriptFile

 

 

Wrong implementation

 

See other zones for reference, because this code is just wrong to begin with.

  • 0
Posted

Your problem is here:

 

if (_cha.isInZone(_zone)) {
  _cha.startPvPFlag(null);
} else {
  _checkTask.cancel(true);
  _checkTask = null;
}

 

Either the _cha is null which i doubt or the _checkTask future task is null.

Do a debug in those 2 variables.

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
Answer this question...

×   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.

×
×
  • Create New...