Jump to content

Detecting if another player has 'stolen' your ore from rock


Recommended Posts

Posted

Hello

 

So im writing a mining script and I need a way to work out if someone else has beaten me to the ore that I have also been mining. 

 

My script can recognise when new ore appears (and my character is not mining), but i would like my script to detect when my player has not gotten the ore, so that i can mine another rock (ie, I dont want to wait for my character animation to stop before triggering the next event in my script).

 

What i currently have - "if player is idle and rock is minable -> mine".

Entity clayRock1 = objects.closest(ID_CLAY1);

if(clayRock1 != null && !myPlayer().isAnimating()){
    clayRock1.interact("Mine");
    sleep(random(2000, 2200));
}

What i need - "if player was unsuccessful in attaining ore -> [do this]".

ie "if rock has turned empty and player is still mining ore (that no longer exists - hence is a waste of time) -> [do this]".

 

 

I've tried a few methods, but nothing works. 

Any help is much appreciated,

 

Cheers!

Posted (edited)

Hello

 

So im writing a mining script and I need a way to work out if someone else has beaten me to the ore that I have also been mining. 

 

My script can recognise when new ore appears (and my character is not mining), but i would like my script to detect when my player has not gotten the ore, so that i can mine another rock (ie, I dont want to wait for my character animation to stop before triggering the next event in my script).

 

What i currently have - "if player is idle and rock is minable -> mine".

Entity clayRock1 = objects.closest(ID_CLAY1);

if(clayRock1 != null && !myPlayer().isAnimating()){
    clayRock1.interact("Mine");
    sleep(random(2000, 2200));
}

What i need - "if player was unsuccessful in attaining ore -> [do this]".

ie "if rock has turned empty and player is still mining ore (that no longer exists - hence is a waste of time) -> [do this]".

 

 

I've tried a few methods, but nothing works. 

Any help is much appreciated,

 

Cheers!

 

Method 1) The rock will have a different ID when there is no ore

Method 2) If the rock no longer has the "Mine" action, when there is no ore (i cant remember if it does or not) then you could check that

Edited by Explv
  • Like 1
Posted

Method 1) The rock will have a different ID when there is no ore

Method 2) If the rock no longer has the "Mine" action, when there is no ore (i cant remember if it does or not) then you could check that

 

 

Can you please give me an example of Method 1? I've tried this but i cant get it to work.

 

Method 2 will not work because the mine option is always available. 

 

Cheers

Posted

Can you please give me an example of Method 1? I've tried this but i cant get it to work.

 

Method 2 will not work because the mine option is always available. 

 

Cheers

 

 

Entity clayRock1 = objects.closest(ID_CLAY1);

if(clayRock1 != null && !myPlayer().isAnimating()){
    clayRock1.interact("Mine");
    sleep(random(2000, 2200));
} else if(clayRock1 == null){  
    // Do something else
}
Posted

My bad. Cheers Explv!

 

Working code:

if(clayRock1 != null){
        if(!myPlayer().isAnimating()){
    		clayRock1.interact("Mine");
    		sleep(random(2000, 2200));
        }else if(missed == true){
        	clayRock1.interact("Mine");
        	missed = false;
    		sleep(random(2000, 2200));
        }
    		}else if(clayRock1 == null){
    				log("empty");
    				if(myPlayer().isAnimating()){
    					missed = true;
    				}
    			}
Posted

 

My bad. Cheers Explv!

 

Working code:

if(clayRock1 != null){
        if(!myPlayer().isAnimating()){
    		clayRock1.interact("Mine");
    		sleep(random(2000, 2200));
        }else if(missed == true){
        	clayRock1.interact("Mine");
        	missed = false;
    		sleep(random(2000, 2200));
        }
    		}else if(clayRock1 == null){
    				log("empty");
    				if(myPlayer().isAnimating()){
    					missed = true;
    				}
    			}

 

Couldn't that be simplified to:

boolean isMining = false;

if(clayRock1 != null && (!myPlayer().isAnimating() || !isMining)){
    clayRock1.interact("Mine");
    isMining = true;
    sleep(random(2000, 2200));
} else if (clayRock1 == null){
    isMining = false;
}

So that when isMining == false it ignores the fact that the player is animating, and tries to mine anyway?

 

 

 

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...