A little bug
#1

Hello, I have a little bug with this system, any help would be appreciated.
Script:
#include <a_samp>
#include <zcmd>

new bool:Milestone1[MAX_PLAYERS];
new bool:Milestone2[MAX_PLAYERS];
new bool:Milestone3[MAX_PLAYERS];
new bool:Milestone4[MAX_PLAYERS];
new bool:Milestone5[MAX_PLAYERS];
new bool:Milestone6[MAX_PLAYERS];
new bool:Milestone7[MAX_PLAYERS];
new bool:Milestone8[MAX_PLAYERS];
new bool:Milestone9[MAX_PLAYERS];
new bool:Milestone10[MAX_PLAYERS];

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("Milestone Sistema");
print("--------------------------------------\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

givescore(playerid, ammount)
{
new currentscore;
currentscore = GetPlayerScore(playerid);
SetPlayerScore(playerid, currentscore+ammount);
Milestone1[playerid] = true;
Milestone2[playerid] = true;
Milestone3[playerid] = true;
Milestone4[playerid] = true;
Milestone5[playerid] = true;
Milestone6[playerid] = true;
Milestone7[playerid] = true;
Milestone8[playerid] = true;
Milestone9[playerid] = true;
Milestone10[playerid] = true;
}

public OnPlayerConnect(playerid)
{
Milestone1[playerid] = false;
Milestone2[playerid] = false;
Milestone3[playerid] = false;
Milestone4[playerid] = false;
Milestone5[playerid] = false;
Milestone6[playerid] = false;
Milestone7[playerid] = false;
Milestone8[playerid] = false;
Milestone9[playerid] = false;
Milestone10[playerid] = false;
return 1;
}

CMD:milestone1(playerid, params[])
{
if(Milestone1[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 10000)
{
givescore(playerid, 10);
SendClientMessage(playerid, -1, "Atsiemėte 10 score ir įvygdėte 1 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 10000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone2(playerid, params[])
{
if(Milestone2[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 50000)
{
givescore(playerid, 15);
SendClientMessage(playerid, -1, "Atsiemėte 15 score ir įvygdėte 2 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 50000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone3(playerid, params[])
{
if(Milestone3[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 100000)
{
givescore(playerid, 20);
SendClientMessage(playerid, -1, "Atsiemėte 20 score ir įvygdėte 3 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 100000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone4(playerid, params[])
{
if(Milestone4[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 200000)
{
givescore(playerid, 30);
SendClientMessage(playerid, -1, "Atsiemėte 30 score ir įvygdėte 4 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 200000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone5(playerid, params[])
{
if(Milestone5[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 500000)
{
givescore(playerid, 50);
SendClientMessage(playerid, -1, "Atsiemėte 50 score ir įvygdėte 5 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 500000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone6(playerid, params[])
{
if(Milestone6[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 1000000)
{
givescore(playerid, 75);
SendClientMessage(playerid, -1, "Atsiemėte 75 score ir įvygdėte 6 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 1000000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone7(playerid, params[])
{
if(Milestone7[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 2000000)
{
givescore(playerid, 100);
SendClientMessage(playerid, -1, "Atsiemėte 100 score ir įvygdėte 7 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 2000000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone8(playerid, params[])
{
if(Milestone8[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 5000000)
{
givescore(playerid, 125);
SendClientMessage(playerid, -1, "Atsiemėte 125 score ir įvygdėte 8 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 5000000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone9(playerid, params[])
{
if(Milestone9[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 10000000)
{
givescore(playerid, 200);
SendClientMessage(playerid, -1, "Atsiemėte 200 score ir įvygdėte 9 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 10000000 pinigų atsiimti љį milestone.");
return 1;
}

CMD:milestone10(playerid, params[])
{
if(Milestone10[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 50000000)
{
givescore(playerid, 500);
SendClientMessage(playerid, -1, "Atsiemėte 500 score ir įvygdėte 10 milestone! Daugiau milestone nėra!");
} else return SendClientMessage(playerid, -1, "Tau reikia 50000000 pinigų atsiimti љį milestone.");
return 1;
}

When I get any of milestone for e.x. /milestone5, i can't use it second time, but I can't use other milestone as well!
Reply
#2

Try this:

Код:
CMD:milestone1(playerid, params[])
{
	if(Milestone1[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemei ši milestone.");
	if(GetPlayerMoney(playerid) < 10000) return SendClientMessage(playerid, -1, "Tau reikia 10000 pinigu atsiimti ši milestone.");
	givescore(playerid, 10);
	SendClientMessage(playerid, -1, "Atsiemete 10 score ir ivygdete 1 milestone!");
	return 1;
}
Reply
#3

Nope. didn't work
Reply
#4

Try replacing:
if(Milestone1[playerid] >= true)

With:
if(Milestone1[playerid] == true)

PS: Also do this with other milestones, like Milestone2.3..etc..
Reply
#5

You are setting all milestones to true, set only the milestone you want to true and leave the rest.

Delete this part.

pawn Код:
Milestone1[playerid] = true;
Milestone2[playerid] = true;
Milestone3[playerid] = true;
Milestone4[playerid] = true;
Milestone5[playerid] = true;
Milestone6[playerid] = true;
Milestone7[playerid] = true;
Milestone8[playerid] = true;
Milestone9[playerid] = true;
Milestone10[playerid] = true;
And change all your commands to something like:

pawn Код:
CMD:milestone1(playerid, params[])
{
if(Milestone1[playerid] >= true) return SendClientMessage(playerid, -1, "Tu jau atsiemėi љį milestone.");

if(GetPlayerMoney(playerid) >= 10000)
{
Milestone1[playerid] = true;
givescore(playerid, 10);
SendClientMessage(playerid, -1, "Atsiemėte 10 score ir įvygdėte 1 milestone!");
} else return SendClientMessage(playerid, -1, "Tau reikia 10000 pinigų atsiimti љį milestone.");
return 1;
}
Reply
#6

Now it keeps writing Atsiemėte 10 score ir ivygdete 1 milestone and keeps adding 10 score with all /milestone commands. I do not even need the money for it
Reply
#7

That was just and example for the Milestone1 command. Change the Milestone var, the givescore and the message for every command.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)