[Help] Planting weed function. -
Ace_Menace - 21.07.2010
Concept: Allow someone to /plant, this will allow a weed plant to grow until it has grown enough to /pickplant where you are rewarded drugs and the plants disappear.
My Issues:
1. The plant skips growth process and jumps out of the initial position into what should be the final
2. Cannot plant more then one plant, because it only registers the first. ( shows up, but doesn't grow and isn't pickable)
My include.
pawn Код:
#define MAX_WEEDPLANTS 250
enum plantInfo
{
wpCreated,
Float:wpX,
Float:wpY,
Float:wpZ,
wp,
grow,
done,
};
new WeedInfo[MAX_WEEDPLANTS][plantInfo];
stock CreateWeed(Float:X,Float:Y,Float:Z)
{
for(new i = 0; i < sizeof(WeedInfo); i++)
{
if(WeedInfo[i][wpCreated] == 0)
{
WeedInfo[i][wpCreated]=1;
WeedInfo[i][wpX]=X;
WeedInfo[i][wpY]=Y;
WeedInfo[i][wpZ]=Z;
WeedInfo[i][wp] = CreateDynamicObject(3409, X, Y, Z-2, 0, 0, 0);
return 1;
}
}
return 0;
}
stock DeleteAllWeed()
{
for(new i = 0; i <sizeof(WeedInfo); i++)
{
if(WeedInfo[i][wpCreated] == 1)
{
WeedInfo[i][wpCreated]=0;
WeedInfo[i][wpX]=0.0;
WeedInfo[i][wpY]=0.0;
WeedInfo[i][wpZ]=0.0;
DestroyDynamicObject(WeedInfo[i][wp]);
}
}
return 1;
}
stock DeleteWeed(playerid)
{
for(new i = 0; i < sizeof(WeedInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 4.0, WeedInfo[i][wpX],WeedInfo[i][wpY],WeedInfo[i][wpZ]))
{
if(WeedInfo[i][wpCreated] == 1)
{
DestroyDynamicObject(WeedInfo[i][wp]);
WeedInfo[i][wpCreated]=0;
WeedInfo[i][wpX]=0.0;
WeedInfo[i][wpY]=0.0;
WeedInfo[i][wpZ]=0.0;
DestroyDynamicObject(WeedInfo[i][wp]);
return 1;
}
}
}
return 0;
}
#define COLOR_WEED 0x42912BFF
stock GrowWeed(playerid)
{
new string[128];
for(new i = 0; i < sizeof(WeedInfo); i++)
{
//if(IsPlayerInRangeOfPoint(playerid, 3.0, WeedInfo[i][wpX], WeedInfo[i][wpY], WeedInfo[i][wpZ]))
//{
if(WeedInfo[i][wpCreated] == 1)
{
MoveDynamicObject(WeedInfo[i][wp],WeedInfo[i][wpX], WeedInfo[i][wpY], WeedInfo[i][wpZ]+0.2, 2);
//format(string,sizeof(string),"The Weed Has Grown.");
//ProxDetector(30.0, playerid, string, COLOR_WEED,COLOR_WEED,COLOR_WEED,COLOR_WEED,COLOR_WEED);
return 1;
}
//}
}
return 0;
}
The Commands/Timers
pawn Код:
new growtimer[MAX_WEEDPLANTS];
forward WeedTimer(playerid);
forward wpdrawhide(playerid);
forward wpdrawhide2(playerid);
if(strcmp(cmd, "/plant", true) == 0)
{
for(new i = 0; i < sizeof(WeedInfo); i++)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
//if(PlayerInfo[playerid][pWeed] >= 1)
//{
SendClientMessage(playerid, COLOR_CHAT1,"You begin to plant some weed.");
CreateWeed(X,Y,Z);
growtimer[i] = SetTimer("WeedTimer", 60000, 1);
return 1;
//}
}
}
if(strcmp(cmd, "/pickplant", true) == 0)
{
for(new i = 0; i < sizeof(WeedInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid,4.0,WeedInfo[i][wpX],WeedInfo[i][wpY],WeedInfo[i][wpZ]))
{
if(WeedInfo[i][done] == 1)
{
DeleteWeed(playerid);
KillTimer(growtimer[i]);
PlayerInfo[playerid][pDrugs] += 5;
SendClientMessage(playerid, COLOR_WEED,"Drugs picked.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_WEED,"Dude, you're not near any drugs.");
return 1;
}
}
}
}
public WeedTimer(playerid)
{
for(new i = 0; i < sizeof(WeedInfo); i++)
{
if(WeedInfo[i][grow] >= 4)
{
SendClientMessage(playerid, COLOR_WEED," Your weed is grown completely, /pickplant");
TextDrawShowForPlayer(playerid, Textdraw100);
WeedInfo[i][done] = 1;
SetTimer("wpdrawhide2", 15000, 0);
return 1;
}
else
{
TextDrawShowForPlayer(playerid, Textdraw99);
WeedInfo[i][grow] += 1;
GrowWeed(playerid);
SetTimer("wpdrawhide", 10000, 0);
}
}
return 1;
}
public wpdrawhide(playerid)
{
TextDrawHideForPlayer(playerid, Textdraw99);
return 1;
}
public wpdrawhide2(playerid)
{
TextDrawHideForPlayer(playerid, Textdraw100);
return 1;
}
It's an awesome idea, and I've worked pretty hard on this now, so if anyone knows how I can fix this up, or
guide me to how, I'd be a happy guy.
Re: [Help] Planting weed function. -
Kar - 21.07.2010
take a look at mine.
pawn Код:
CMD:plantseed(playerid,params[])
{
#pragma unused params
if(gTeam[playerid] != TEAM_CIVILIAN) return SendClientMessage(playerid,red,"You arent a drug dealer!");
if(PlayerInfo[playerid][Seeds] <= 0) return SendClientMessage(playerid,red,"You dont have any seeds!");
if(gTeam[playerid] == TEAM_COPS) return SendClientMessage(playerid,red,"Cops can't plant seed!");
if(IsPlayerInRangeOfPoint(playerid,50,2590.6021,-952.7857,81.3664))
{
PlayerInfo[playerid][Seeds] --;
GetPlayerPos(playerid,X,Y,Z);
DrugObject = CreateObject(701, X, Y, Z, 0, 0, 90);
SendClientMessage(playerid,COLOR_WHITE,"* Seeds planted! ** Wait till they have grown (1minute)");
PlayerInfo[playerid][SeedPlanted] ++;
SetTimerEx("SeedsPlanted", 60000, false, "i", playerid);
}
else
return SendClientMessage(playerid,red,"You aren't in drugarea!");
return 1;
}
forward SeedsPlanted(playerid);
public SeedsPlanted(playerid)
{
if(!IsPlayerConnected(playerid)) return false;
if(gTeam[playerid] != TEAM_CIVILIAN) return false;
else
{
PlayerInfo[playerid][PickupableDrugs] ++;
PlayerInfo[playerid][SeedPlanted] --;
SendClientMessage(playerid,red,"Your drugs are ready to pickup, /pickupseeds");
}
return true;
}
CMD:pickupseeds(playerid,params[])
{
#pragma unused params
if(gTeam[playerid] != TEAM_CIVILIAN) return SendClientMessage(playerid,red,"You arent a Civilian!");
if(PlayerInfo[playerid][PickupableDrugs] <= 0) return SendClientMessage(playerid,red,"You dont have any drugs!");
if(gTeam[playerid] == TEAM_COPS) return SendClientMessage(playerid,red,"Cops can't plant seed!");
if(IsPlayerInRangeOfPoint(playerid,50,2590.6021,-952.7857,81.3664))
{
DestroyObject(DrugObject);
new rand = random(5);
if(rand == 0)
{
PlayerInfo[playerid][WeedAmount] = PlayerInfo[playerid][WeedAmount] + 3;
SendClientMessage(playerid,COLOR_WHITE,"* Drugs Picked Up And You've Gained +3 Weed!");
PlayerInfo[playerid][PickupableDrugs] --;
}
if(rand == 1)
{
PlayerInfo[playerid][WeedAmount] = PlayerInfo[playerid][WeedAmount] + 1;
SendClientMessage(playerid,COLOR_WHITE,"* Drugs Picked Up And You've Gained +1 Weed!");
PlayerInfo[playerid][PickupableDrugs] --;
}
if(rand == 2)
{
PlayerInfo[playerid][WeedAmount] = PlayerInfo[playerid][WeedAmount] + 4;
SendClientMessage(playerid,COLOR_WHITE,"* Drugs Picked Up And You've Gained +4 Weed!");
PlayerInfo[playerid][PickupableDrugs] --;
}
if(rand == 3)
{
PlayerInfo[playerid][WeedAmount] = PlayerInfo[playerid][WeedAmount] + 0;
SendClientMessage(playerid,COLOR_WHITE,"* * Sorry CopHater Has Destroyed Your Weed Plant Try Again Later):");
PlayerInfo[playerid][PickupableDrugs] --;
}
if(rand == 4)
{
PlayerInfo[playerid][WeedAmount] = PlayerInfo[playerid][WeedAmount] + 2;
SendClientMessage(playerid,COLOR_WHITE,"* Drugs Picked Up And You've Gained +2 Weed!");
PlayerInfo[playerid][PickupableDrugs] --;
}
}
else
return SendClientMessage(playerid,red,"You aren't in drugarea!");
return 1;
}