Jump to content

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


lakikimeni

Recommended Posts

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!

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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
}
Link to comment
Share on other sites

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;
    				}
    			}
Link to comment
Share on other sites

 

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?

 

 

 

Link to comment
Share on other sites

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.

  • Recently Browsing   0 members

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