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.