command(lockhouse, playerid, params[]) { #pragma unused params new string[128]; if(!IsPlayerInRangeOfPoint(playerid, 5, Houses[Player[playerid][House]][hExteriorX], Houses[Player[playerid][House]][hExteriorY], Houses[Player[playerid][House]][hExteriorZ])) { return SendClientMessage(playerid, WHITE, "You are not near a house that you own!"); } if(Player[playerid][House] > 0) { if(Houses[Player[playerid][House]][LockStatus] == 1) { Houses[Player[playerid][House]][LockStatus] = 0; format(string, sizeof(string), "** %s has unlocked their house door.", GetName(playerid)); NearByMessage(playerid, SCRIPTPURPLE, string); } else { Houses[Player[playerid][House]][LockStatus] = 1; format(string, sizeof(string), "** %s has locked their house door.", GetName(playerid)); NearByMessage(playerid, SCRIPTPURPLE, string); } } return 1; }
command(lockbusiness, playerid, params[]) { #pragma unused params new string[128]; if(!IsPlayerInRangeOfPoint(playerid, 5, Businesses[Player[playerid][Business]][bExteriorX], Businesses[Player[playerid][Business]][bExteriorY], Businesses[Player[playerid][Business]][bExteriorZ])) { return SendClientMessage(playerid, WHITE, "You are not near a business that you own!"); } if(Player[playerid][Business] > 0) { if(Businesses[Player[playerid][Business]][bLockStatus] == 1) { Businesses[Player[playerid][Business]][bLockStatus] = 0; format(string, sizeof(string), "** %s has unlocked their business doors.", GetName(playerid)); NearByMessage(playerid, SCRIPTPURPLE, string); } else { Businesses[Player[playerid][Business]][bLockStatus] = 1; format(string, sizeof(string), "** %s has locked their business doors.", GetName(playerid)); NearByMessage(playerid, SCRIPTPURPLE, string); } } return 1;
getStandingExit(playerid, Float:radius = 15.0) {
for(new i=0;i<sizeof(Houses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Houses[Player[i][House]][hExteriorX], Houses[Player[i][House]][hExteriorY], Houses[Player[i][House]][hExteriorZ])) {
return i;
}
}
return -1;
}
Simply put...
Make a stock function which loops through ALL your houses getting each EXIT X Y Z ( The position they stand on to EXIT the house ) Then In your "lockhouse" Put an if statement example PHP код:
|
getStandingExit(playerid, Float:radius = 15.0) {
for(new i=0;i<sizeof(Businesses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Businesses[Player[i][Business]][bExteriorX], Businesses[Player[i][Business]][bExteriorY], Businesses[Player[i][Business]][bExteriorZ])) {
return i;
}
}
return -1;
}
Houses and businesses usually work the same way so most likely it will work if you apply the above code for businesses, like this :
PHP код:
|
getStandingExit(playerid, Float:radius = 15.0) {
for(new i=0;i<sizeof(Houses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Houses[Player[playerid][i]][hExteriorX], Houses[Player[playerid][i]][hExteriorY], Houses[Player[playerid][i]][hExteriorZ])) { // <--- EDIT THIS TO BE YOUR HOUSE EXIT COORDS
return i;
}
}
return -1;
}
getStandingHouse(playerid, Float:radi = 2.0) {
for(new i=0;i<sizeof(Houses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Houses[Player[playerid][i]][hExteriorX], Houses[Player[playerid][i]][hExteriorY], Houses[Player[playerid][i]][hExteriorZ])) {
return i;
}
}
return -1;
}
command(lockhouse, playerid, params[]) {
#pragma unused params
new string[128];
new houseid = getStandingHouse(playerid);
if(houseid == -1) {
new insidehouse = getStandingExit(playerid);
if(insidehouse == -1) {
SendClientMessage(playerid, WHITE, "You're not near your near your house door!");
return 1;
}
}
if(Player[playerid][House] == houseid) {
if(Houses[Player[playerid][House]][LockStatus] == 1) {
Houses[Player[playerid][House]][LockStatus] = 0;
format(string, sizeof(string), "** %s has unlocked their house door.", GetName(playerid));
NearByMessage(playerid, SCRIPTPURPLE, string);
} else {
Houses[Player[playerid][House]][LockStatus] = 1;
format(string, sizeof(string), "** %s has locked their house door.", GetName(playerid));
NearByMessage(playerid, SCRIPTPURPLE, string);
}
}
return 1;
}
And how do i add these codes to the one i posted above i dont want to screw it up
|
function getBStandingExit(playerid, Float:radius = 15.0) {
for(new i=0;i<sizeof(Businesses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Businesses[Player[i][Business]][bExteriorX], Businesses[Player[i][Business]][bExteriorY], Businesses[Player[i][Business]][bExteriorZ])) {
return i;
}
}
return -1;
}
function getHStandingExit(playerid, Float:radius = 15.0) {
for(new i=0;i<sizeof(Houses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Houses[Player[i][House]][hExteriorX], Houses[Player[i][House]][hExteriorY], Houses[Player[i][House]][hExteriorZ])) {
return i;
}
}
return -1;
}
getStandingExit(playerid, Float:radius = 15.0) {
for(new i=0;i<sizeof(Houses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Houses[Player[playerid][i]][hExteriorX], Houses[Player[playerid][i]][hExteriorY], Houses[Player[playerid][i]][hExteriorZ])) { // <--- EDIT THIS TO BE YOUR HOUSE EXIT COORDS
return i;
}
}
return -1;
}
getStandingHouse(playerid, Float:radi = 2.0) {
for(new i=0;i<sizeof(Houses);i++) {
if(IsPlayerInRangeOfPoint(playerid, radius, Houses[Player[playerid][i]][hExteriorX], Houses[Player[playerid][i]][hExteriorY], Houses[Player[playerid][i]][hExteriorZ])) {
return i;
}
}
return -1;
}
command(lockhouse, playerid, params[]) {
#pragma unused params
new string[128];
new houseid = getStandingHouse(playerid);
new insidehouse = getStandingExit(playerid);
if(houseid == -1) {
if(insidehouse == -1) {
SendClientMessage(playerid, WHITE, "You're not near your near your house door!");
return 1;
} else {
houseid = insidehouse;
}
}
if(Player[playerid][House] == houseid) {
if(Houses[Player[playerid][House]][LockStatus] == 1) {
Houses[Player[playerid][House]][LockStatus] = 0;
format(string, sizeof(string), "** %s has unlocked their house door.", GetName(playerid));
NearByMessage(playerid, SCRIPTPURPLE, string);
} else {
Houses[Player[playerid][House]][LockStatus] = 1;
format(string, sizeof(string), "** %s has locked their house door.", GetName(playerid));
NearByMessage(playerid, SCRIPTPURPLE, string);
}
}
return 1;
}