Pickup problem -
Similarty - 24.04.2018
Hi guys I have a problem. I made an event system based on pickups and did it all right but it interferes with my other pickups at my rent car and at my dealership, how can I prevent that? I will give you the oplace, removeoplace and the public OnPlayerPickUpPickup
Commands:
Код:
CMD:oplace(playerid, params[]) {
if(PlayerInfo[playerid][pLogged] == 0) return 1;
if(PlayerInfo[playerid][pAdmin] == 0) return SCM(playerid, COLOR_RED, AdminOnly);
new obj, money;
SetPVarInt(playerid, "objmodel", obj);
if(sscanf(params,"ii", obj, money)) return SCM(playerid, -1, "* (CmdBot) : Syntax : /oplace <obj> <money>");
if(obj < 1 || obj > 20000) return SCM(playerid, COLOR_EROARE, "* Invalid object!");
if(money < 1 || money > 10000000) return SCM(playerid, COLOR_EROARE, "* Invalid money.");
new id = CountObjects(), Float:Pos[3], string[128];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
ObjectID[id] = CreatePickup(obj, 23, Pos[0] + 5, Pos[1], Pos[2]);
ObjectMoney[id] = money;
format(string, sizeof(string), "AdmCmd: %s has placed a new object, model %d, money %d. Acum sunt %d obiecte.", GetName(playerid), obj, money, id+1);
SendAdminMessage(string);
AddStaffLog(playerid, "a plasat un obiect, model %d money %d.", obj, money);
return 1;
}
CMD:removeoplace(playerid, params[]) {
if(PlayerInfo[playerid][pLogged] == 0) return 1;
if(PlayerInfo[playerid][pAdmin] == 0) return SCM(playerid, COLOR_RED, AdminOnly);
new string[128];
for(new i = 0; i < MAX_OBJECTS; i++) {
if(ObjectID[i] != 0) {
DestroyObject(ObjectID[i]);
ObjectID[i] = 0;
ObjectMoney[i] = 0;
}
}
format(string, sizeof(string), "AdmCmd: %s a sters %d obiecte.", GetName(playerid), CountObjects());
SendAdminMessage(string);
AddStaffLog(playerid, "a sters %d obiecte.", CountObjects());
return 1;
}
My forward and public to count objects:
Код:
forward CountObjects();
public CountObjects() {
new x;
for(new i = 0; i < MAX_OBJECTS; i++) {
if(ObjectID[i] != 0) x++;
}
return x;
}
OnPlayerPickUpPickup:
Код:
new string[128];
for(new i = 0; i < MAX_OBJECTS; i++) {
if(pickupid == ObjectID[i] && ObjectID[i] != -1) {
if(PlayerInfo[playerid][pAdmin] < 6) return SCM(playerid, COLOR_EROARE, "* Adminii nu participa la eventuri!");
new id = CountObjects();
format(string, sizeof(string), "AdmBot: %s a gasit un obiect din event si a castigat $%d.", GetName(playerid), ObjectMoney[i]);
SCMTOALL(COLOR_ANNOUNCE2, string);
SendAdminMessage(string);
AddPlayerLog(playerid, "a gasit un obiect si a castigat $%d.", ObjectMoney[i]);
GivePlayerMoney(playerid, ObjectMoney[i]);
if(id-1 > 1) format(string, sizeof(string), "AdmBot: In acest moment mai sunt %d obiecte.", id-1);
else if(id-1 == 1) format(string, sizeof(string), "AdmBot: Mai este doar un obiect disponibil.");
else if(id-1 == 0) format(string, sizeof(string), "AdmBot: Evenimentul a luat sfarsit, multumim pentru participare.");
SCMTOALL(COLOR_ANNOUNCE2, string);
SendAdminMessage(string);
DestroyPickup(ObjectID[i]);
ObjectID[i] = 0;
ObjectMoney[i] = 0;
}
}
The pickups at my rentcar and dealership:
Код:
CreatePickup(1318, 1, 2162.3306,1407.3198,10.8203, -1);
CreatePickup(1277, 1, 2016.9685,1916.4336,12.3424, -1);
Any help is appreciated, thanks.
Re: Pickup problem -
Sew_Sumi - 25.04.2018
You didn't do it alright, as you haven't tracked the pickup...
new DealerPickup;
DealerPickup = CreatePickup(bla,de,bla)
if(pickupid==DealerPickup) You're at the dealership...
If you have multiple dealerships, you'll need to make an array, or make enums for the pickups, to give them a flag to state what business they are actually for.
Make an array.
Re: Pickup problem -
Similarty - 25.04.2018
Solved. Thanks buddy.