SA-MP Forums Archive
Fishing : Make Player Wait - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Fishing : Make Player Wait (/showthread.php?tid=598017)



Fishing : Make Player Wait - Mikeydoo - 07.01.2016

Hey guys ! Im still working on a Fishing script and I just cant make the player wait and make an animation while fishing. The idea is pretty simple, it lets the player fish, and I want to make him wait and not being able to fish again for like 10 seconds.(which doesnt works ) Then, when he has 5 fishes, he can't fish anymore for 300 secs. (which works...)


So here is the script.

Код:
CMD:seafish(playerid, params[])
{
	new string[128], done, fish;
   	if(!IsPlayerLoggedIn(playerid) || PlayerInfo[playerid][pAsshole] == 1) return SendClientMessage(playerid, COLOR_GREY, "You are not allowed to use command.");
 	if(!IsAtFishingSpot2(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You are on a boat standing near blue algae");
	if(FishTime[playerid])
	{
	    format(string, sizeof(string), "You need to wait %d more seconds before fishing again.", FishTime[playerid]);
		SendClientMessage(playerid, COLOR_GREY, string);

	    return 1;
	}
	for(new i=0; i<5; i++) // Fish
	{
	    if(!done)
	    {
		    if(!PlayerInfo[playerid][pFish][i]) done = i+1;
	    }
	}
	if(!done) return SendClientMessage(playerid, COLOR_GREY, "You can't carry anymore fishes.");
	done = done-1;
	// Catching
	if(strval(RPJL(playerid, JOB_FISHER)) == 1) fish = random(30)+5;
	else if(strval(RPJL(playerid, JOB_FISHER)) == 2) fish = random(60)+10;
	else if(strval(RPJL(playerid, JOB_FISHER)) == 3) fish = random(90)+15;
	else if(strval(RPJL(playerid, JOB_FISHER)) == 4) fish = random(120)+20;
	else if(strval(RPJL(playerid, JOB_FISHER)) == 5) fish = random(150)+30;
	PlayerInfo[playerid][pFish][done] = fish;
	format(string, sizeof(string), "* %s attempts to catch a fish using the fishing rod.", RPN(playerid));
 	SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
	format(string, sizeof(string), " You have caught a %d lbs fish.", fish);
	SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
	// Leveling
    new oldj = strval(RPJL(playerid, JOB_FISHER));
    PlayerInfo[playerid][pJobSkill][JOB_FISHER] ++;
	new newj = strval(RPJL(playerid, JOB_FISHER));
    if(oldj < newj)
	{
	    format(string, sizeof(string), "** Your Fisher level is now %d, you can now catch heavier fishes. **", newj);
		SendClientMessage(playerid, COLOR_YELLOW, string);
	}
	Fished[playerid] ++;
	if(Fished[playerid] >= 5)
	{
		Fished[playerid] = 0;
		FishTime[playerid] = 60*5;
		SetTimerEx("FishingTime", 1000, false, "i", playerid);
	}
	return 1;
}



Re: Fishing : Make Player Wait - Lucky13 - 07.01.2016

Change this:

Код:
        if(Fished[playerid] >= 5)
	{
		Fished[playerid] = 0;
		FishTime[playerid] = 60*5;
		SetTimerEx("FishingTime", 1000, false, "i", playerid);
	}
To this:

Код:
        if(Fished[playerid] >= 5)
	{
		Fished[playerid] = 0;
		FishTime[playerid] = 5;
		SetTimerEx("FishingTime", 1000, true, "i", playerid);
	}
This will give a 5 seconds cooldown. You don't need to add *60 because SetTimerEx and SetTimer are in milliseconds ( 1000 milliseconds = 1 second ). You also want to have it on true, because if it's on false, the timer will be set only once and FishingTime callback will be called only once. If we make it True, it will call it until FishTime[playerid] = 0;

Also, public FishingTime(playerid) or whatever you got should include this:

Код:
if(FishTime[playerid] > 0) { FishTime[playerid]--; }



Re: Fishing : Make Player Wait - Mikeydoo - 07.01.2016

Oh well let me try then hahah :')

Edit : It doesnt work :/ It changed the 300 second timer to 5 second

Edit : I'd like to make the player wait 5 second everytime he use the command /seafish ^^

Edit : Ok it should work i'll try this


Re: Fishing : Make Player Wait - Lucky13 - 07.01.2016

Sure thing ^^. Tell me if something occurs though.


Re: Fishing : Make Player Wait - Mikeydoo - 07.01.2016

Код:
forward FishingTime(playerid);
public FishingTime(playerid)
{
    FishTime[playerid] --;
    if(FishTime[playerid] < 0)
    {
        FishTime[playerid] = 0;
    }
	if(FishTime[playerid] > 0)
	{
		SetTimerEx("FishingTime", 1000, false, "i", playerid);
	}

	return 1;
}
This is what i have


Re: Fishing : Make Player Wait - Lucky13 - 07.01.2016

Make it like this:

Код:
forward FishingTime(playerid);
public FishingTime(playerid)
{
    if(FishTime[playerid] > 0) { FishTime[playerid] --; }
    return 1;
}



Re: Fishing : Make Player Wait - Mikeydoo - 07.01.2016

Doesnt work I can keep fishing like crazy every time i type the command


Re: Fishing : Make Player Wait - Lucky13 - 07.01.2016

Change this

Код:
if(FishTime[playerid])
	{
	    format(string, sizeof(string), "You need to wait %d more seconds before fishing again.", FishTime[playerid]);
		SendClientMessage(playerid, COLOR_GREY, string);

	    return 1;
	}
To this:

Код:
if(FishTime[playerid] > 0)
	{
	    format(string, sizeof(string), "You need to wait %d more seconds before fishing again.", FishTime[playerid]);
		SendClientMessage(playerid, COLOR_GREY, string);

	    return 1;
	}



Re: Fishing : Make Player Wait - Mikeydoo - 07.01.2016

Tried it but it's the same result. Thanks for your quick answers btw ^^


Re: Fishing : Make Player Wait - Lucky13 - 07.01.2016

Can you make it like this:

On top of your script: new FishCooldown[MAX_PLAYERS];

Код:
if(Fished[playerid] >= 5)
	{
                print("Works");
		Fished[playerid] = 0;
		FishTime[playerid] = 5;
		FishCooldown[playerid] = SetTimerEx("FishingTime", 1000, true, "i", playerid);
	}
Then change the forward to this:

Код:
forward FishingTime(playerid);
public FishingTime(playerid)
{
    if(FishTime[playerid] > 0) 
    { 
          FishTime[playerid] --;
          if(FishTime[playerid] == 0) { KillTimer(FishCooldown[playerid]); } 
    }
    return 1;
}
Tell me if it prints the "Work" text on the samp-server.exe when Fished[playerid] is 5 or above.