if(strcmp(cmd, "/editgate", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] < 1339)
{
return SendClientMessage(playerid, COLOR_GREY," You're not authorized to use that command !");
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_GREY," USAGE: /editgate [gate id] [name]");
SendClientMessage(playerid,COLOR_GREY," Available names : location, family, faction");
return 1;
}
new gateid = strvalEx(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_GREY," USAGE: /editgate [gate id] [name]");
SendClientMessage(playerid,COLOR_GREY," Available names : location, family, faction");
return 1;
}
if(strcmp(tmp, "location", true) == 0)
{
if(gateid >= 0 && gateid < MAX_GATES)
{
new Float:playaX, Float:playaY, Float:playaZ, Float:playaA;
GetPlayerPos(playerid, playaX, playaY, playaZ);
GetPlayerFacingAngle(playerid, playaA);
GateInfo[gateid][gX] = playaX;
GateInfo[gateid][gY] = playaY;
GateInfo[gateid][gZ] = playaZ;
GateInfo[gateid][gRot] = playaA;
DestroyDynamicObject(GateInfo[gateid][gID]);
GateInfo[gateid][gID] = CreateDynamicObject(980, GateInfo[gateid][gX], GateInfo[gateid][gY], GateInfo[gateid][gZ]+1.75, 0.0,0.0, playaA);
new locstr[256];
format(locstr,sizeof(locstr)," Changed location for gate ID %d !", gateid);
SendClientMessage(playerid, COLOR_GREY, locstr);
SaveGates();
return 1;
}
else
{
return SendClientMessage(playerid, COLOR_GREY, "Invalid gate ID !");
}
}
else if(strcmp(tmp, "family", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strval(tmp))
{
return SendClientMessage(playerid, COLOR_GREY," USAGE: /editgate [gateid] family [familyid]");
}
new dingdingdong = strvalEx(tmp);
if(gateid >= 0 && gateid < MAX_GATES)
{
if(dingdingdong < 1 || dingdingdong > 14)
{
return SendClientMessage(playerid, COLOR_GREY," Valid family IDs : 1-14 ");
}
GateInfo[gateid][gFamily] = dingdingdong-1;
new famstr[256];
format(famstr,sizeof(famstr)," Gave family %d permissions to gate %d.", dingdingdong, gateid);
SendClientMessage(playerid, COLOR_GREY, famstr);
SaveGates();
return 1;
}
else
{
return SendClientMessage(playerid, COLOR_GREY, "Invalid gate ID !");
}
}
else if(strcmp(tmp, "faction", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strval(tmp))
{
return SendClientMessage(playerid, COLOR_GREY," USAGE: /editgate [gateid] faction [familyid]");
}
new dingdingdong = strvalEx(tmp);
if(gateid >= 0 && gateid < MAX_GATES)
{
if(dingdingdong < 1 || dingdingdong > 10)
{
return SendClientMessage(playerid, COLOR_GREY," Valid faction IDs : 1-10 ");
}
GateInfo[gateid][gFaction] = dingdingdong;
new facstr[256];
format(facstr,sizeof(facstr)," Gave faction %d permissions to gate %d.", dingdingdong, gateid);
SendClientMessage(playerid, COLOR_GREY, facstr);
SaveGates();
return 1;
}
else
{
return SendClientMessage(playerid, COLOR_GREY, "Invalid gate ID !");
}
}
return 1;
}
if(strcmp(cmd, "/creategate", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1339)
{
new Float:ppX,
Float:ppY,
Float:ppZ;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, "USAGE: /creategate [name] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: location, locationm(opened), complete");
return 1;
}
if(strcmp(tmp, "location", true) == 0)
{
GetPlayerPos(playerid, ppX, ppY, ppZ);
ggX[playerid] = ppX; ggY[playerid] = ppY; ggZ[playerid] = ppZ;
SendClientMessage(playerid, COLOR_GREY," Coordinates saved for gate location !");
return 1;
}
else if(strcmp(tmp, "complete", true) == 0)
{
for(new g=0;g<MAX_GATES;g++)
{
if(GateInfo[g][gPosX] == 0.0)
{
if(ggX[playerid] != 0.0)
{
if(ggXM[playerid] != 0.0)
{
GateInfo[g][gPosX] = ggX[playerid];
GateInfo[g][gPosY] = ggY[playerid];
GateInfo[g][gPosZ] = ggZ[playerid]+1.7;
GateInfo[g][gPosXM] = ggXM[playerid];
GateInfo[g][gPosYM] = ggYM[playerid];
GateInfo[g][gPosZM] = ggZM[playerid];
GateInfo[g][gModel] = 980;
GateInfo[g][gRange] = 10;
GateInfo[g][gSpeed] = 3;
strmid(GateInfo[g][gPass],"", 0, 0, 23);
GateInfo[g][gPassed] = 0;
CreateGate(g);
//GateInfo[g][gID] = CreateDynamicObject(980, ggX[playerid], ggY[playerid], ggZ[playerid]+1.75, 0.0,0.0, 0.0);
new gatestr[256];
format(gatestr,sizeof(gatestr)," Gate ID %d created successfully ! Use /editgate to personalise it.", g);
SendClientMessage(playerid, COLOR_GREY,gatestr);
SaveGates();
return 1;
}
else
{
return SendClientMessage(playerid, COLOR_GREY," You haven't defined the open gate position ! ( /creategate locationm )");
}
}
else
{
return SendClientMessage(playerid, COLOR_GREY," You haven't defined the gate position ! ( /creategate location )");
}
}
else
{
continue;
}
}
}
else if(strcmp(tmp, "locationm", true) == 0)
{
GetPlayerPos(playerid, ppX, ppY, ppZ);
ggXM[playerid] = ppX; ggYM[playerid] = ppY; ggZM[playerid] = ppZ;
SendClientMessage(playerid, COLOR_GREY," Coordinates saved for opened gate location !");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "USAGE: /creategate [name]");
SendClientMessage(playerid, COLOR_GREY, "Available names: location, complete");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, "You are not authorized to use that command!");
return 1;
}
return 1;
}
if(strcmp(cmd, "/editgate", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1339)
{
new gateid, Float:ofloat;
tmp = strtok(cmdtext, idx); // x_job, gateid, ofloat
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, gate");
return 1;
}
if(strcmp(tmp, "hid", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
ofloat = floatstr(tmp);
new value = floatround(ofloat, floatround_round);
if(value > MAX_HOUSES) return SendClientMessage(playerid, COLOR_WHITE, "* Invalid House ID!");
GateInfo[gateid][gHID] = value;
format(string, sizeof(string), "Gate HID assigned to %d", GateInfo[gateid][gHID]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "model", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new value = floatround(ofloat, floatround_round);
if(value == 0)
{
GateInfo[gateid][gPosX] = 0.0;
GateInfo[gateid][gPosY] = 0.0;
GateInfo[gateid][gPosZ] = 0.0;
GateInfo[gateid][gRotX] = 0.0;
GateInfo[gateid][gRotY] = 0.0;
GateInfo[gateid][gRotZ] = 0.0;
GateInfo[gateid][gPosXM] = 0.0;
GateInfo[gateid][gPosYM] = 0.0;
GateInfo[gateid][gPosZM] = 0.0;
GateInfo[gateid][gRotXM] = 0.0;
GateInfo[gateid][gRotYM] = 0.0;
GateInfo[gateid][gRotZM] = 0.0;
}
GateInfo[gateid][gModel] = value;
format(string, sizeof(string), "Gate Model assigned to %d", GateInfo[gateid][gModel]);
CreateGate(gateid);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "range", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new value = floatround(ofloat, floatround_round);
GateInfo[gateid][gRange] = value;
format(string, sizeof(string), "Gate Range assigned to %d", GateInfo[gateid][gRange]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "speed", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new value = floatround(ofloat, floatround_round);
GateInfo[gateid][gSpeed] = value;
format(string, sizeof(string), "Gate Speed assigned to %d", GateInfo[gateid][gSpeed]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "posx", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gPosX] = value;
format(string, sizeof(string), "Gate PosX assigned to %f", GateInfo[gateid][gPosX]);
SetDynamicObjectPos(GateInfo[gateid][gID], GateInfo[gateid][gPosX], GateInfo[gateid][gPosY], GateInfo[gateid][gPosZ]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "posy", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gPosY] = value;
format(string, sizeof(string), "Gate PosY assigned to %f", GateInfo[gateid][gPosY]);
SetDynamicObjectPos(GateInfo[gateid][gID], GateInfo[gateid][gPosX], GateInfo[gateid][gPosY], GateInfo[gateid][gPosZ]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "posz", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gPosZ] = value+1.7;
format(string, sizeof(string), "Gate PosZ assigned to %f", GateInfo[gateid][gPosZ]);
SetDynamicObjectPos(GateInfo[gateid][gID], GateInfo[gateid][gPosX], GateInfo[gateid][gPosY], GateInfo[gateid][gPosZ]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "posxm", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gPosXM] = value;
format(string, sizeof(string), "Gate PosXM assigned to %f", GateInfo[gateid][gPosXM]);
SendClientMessage(playerid, COLOR_WHITE, string);
CreateGate(gateid);
SaveGates();
}
else if(strcmp(tmp, "posym", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gPosYM] = value;
format(string, sizeof(string), "Gate PosYM assigned to %f", GateInfo[gateid][gPosYM]);
SendClientMessage(playerid, COLOR_WHITE, string);
CreateGate(gateid);
SaveGates();
}
else if(strcmp(tmp, "poszm", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gPosZM] = value;
format(string, sizeof(string), "Gate PosZM assigned to %f", GateInfo[gateid][gPosZM]);
SendClientMessage(playerid, COLOR_WHITE, string);
CreateGate(gateid);
SaveGates();
}
else if(strcmp(tmp, "rotx", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gRotX] = value;
format(string, sizeof(string), "Gate RotX assigned to %f", GateInfo[gateid][gRotX]);
SetDynamicObjectRot(GateInfo[gateid][gID], GateInfo[gateid][gRotX],GateInfo[gateid][gRotY],GateInfo[gateid][gRotZ]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "roty", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gRotY] = value;
format(string, sizeof(string), "Gate RotY assigned to %f", GateInfo[gateid][gRotY]);
SetDynamicObjectRot(GateInfo[gateid][gID], GateInfo[gateid][gRotX],GateInfo[gateid][gRotY],GateInfo[gateid][gRotZ]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "rotz", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gRotZ] = value;
format(string, sizeof(string), "Gate RotZ assigned to %f", GateInfo[gateid][gRotZ]);
SetDynamicObjectRot(GateInfo[gateid][gID], GateInfo[gateid][gRotX],GateInfo[gateid][gRotY],GateInfo[gateid][gRotZ]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "rotxm", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gRotXM] = value;
format(string, sizeof(string), "Gate RotXM assigned to %f", GateInfo[gateid][gRotXM]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "rotym", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gRotYM] = value;
format(string, sizeof(string), "Gate RotYM assigned to %f", GateInfo[gateid][gRotYM]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "rotzm", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
ofloat = floatstr(tmp);
new Float:value = ofloat;
GateInfo[gateid][gRotZM] = value;
format(string, sizeof(string), "Gate RotZM assigned to %f", GateInfo[gateid][gRotZM]);
SendClientMessage(playerid, COLOR_WHITE, string);
SaveGates();
}
else if(strcmp(tmp, "tome", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate tome [gateid]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
GetPlayerPos(playerid,GateInfo[gateid][gPosX],GateInfo[gateid][gPosY], GateInfo[gateid][gPosZ]);
GateInfo[gateid][gPosZ] += 1.7;
format(string, sizeof(string), "Gate Pos moved to %f %f %f", GateInfo[gateid][gPosX], GateInfo[gateid][gPosY], GateInfo[gateid][gPosZ]+1.7);
SendClientMessage(playerid, COLOR_WHITE, string);
if(GateInfo[gateid][gModel] == 0)
{
GateInfo[gateid][gModel] = 980;
GateInfo[gateid][gRange] = 10;
GateInfo[gateid][gSpeed] = 5;
}
//if(IsValidDynamicObject(GateInfo[gateid][gID])) DestroyDynamicObject(GateInfo[gateid][gID]);
CreateGate(gateid);
SaveGates();
}
else if(strcmp(tmp, "tomem", true) == 0)
{
tmp = strtok(cmdtext, idx);
gateid = strvalEx(tmp);
if(gateid < 0 || gateid >= MAX_GATES)
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate tomem [gateid]]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, VW, Int, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, status, gate, renderhq");
return 1;
}
GetPlayerPos(playerid,GateInfo[gateid][gPosXM],GateInfo[gateid][gPosYM], GateInfo[gateid][gPosZM]);
format(string, sizeof(string), "Gate PosM moved to %f %f %f", GateInfo[gateid][gPosXM], GateInfo[gateid][gPosYM], GateInfo[gateid][gPosZM]);
SendClientMessage(playerid, COLOR_WHITE, string);
CreateGate(gateid);
SaveGates();
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate [name] [gateid] [value]");
SendClientMessage(playerid, COLOR_GREY, "Available names: HID, Model, PosX(M), PosY(M), PosZ(M), RotX(M), RotZ(M)");
SendClientMessage(playerid, COLOR_GREY, "Available names: tome(m), range, speed, gate");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, "You are not authorized to use that command!");
return 1;
}
return 1;
}
CMD:creategate(playerid, params[])
{
new string[128], object;
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid, COLOR_GREY, "You are not authorized to use this command.");
if(!aDuty[playerid]) return SendClientMessage(playerid, COLOR_GREY, "You are not on admin duty.");
if(sscanf(params, "i", object)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /creategate [objectid]");
for(new idx=1; idx<MAX_GATES; idx++)
{
if(!GateInfo[idx][gModel])
{
GetPlayerPos(playerid, GateInfo[idx][gCX], GateInfo[idx][gCY], GateInfo[idx][gCZ]);
GateInfo[idx][gModel] = object;
GateInfo[idx][gCX] = GateInfo[idx][gCX] + 2;
GateInfo[idx][gCY] = GateInfo[idx][gCY] + 2;
GateInfo[idx][gCRX] = 0;
GateInfo[idx][gCRY] = 0;
GateInfo[idx][gCRZ] = 0;
GetPlayerPos(playerid, GateInfo[idx][gOX], GateInfo[idx][gOY], GateInfo[idx][gOZ]);
GateInfo[idx][gOX] = GateInfo[idx][gOX] + 2;
GateInfo[idx][gOY] = GateInfo[idx][gOY] + 2;
GateInfo[idx][gORX] = 0;
GateInfo[idx][gORY] = 0;
GateInfo[idx][gORZ] = 0;
GateInfo[idx][gStatus] = 0;
format(GateInfo[idx][gPassword], 256, "");
GateInfo[idx][gSpeed] = 2;
// Creating
format(string, sizeof(string), "Gate ID: %d", idx);
GateInfo[idx][gGate] = CreateDynamicObject(GateInfo[idx][gModel], GateInfo[idx][gCX], GateInfo[idx][gCY], GateInfo[idx][gCZ], GateInfo[idx][gCRX], GateInfo[idx][gCRY], GateInfo[idx][gCRZ]);
GateInfo[idx][gText] = CreateDynamic3DTextLabel(string, COLOR_WHITE, GateInfo[idx][gCX], GateInfo[idx][gCY], GateInfo[idx][gCZ], 10);
// Text
format(string, sizeof(string), "AdmWarn: %s has created gate ID %d. (Object: %d)", RPN(playerid), idx, object);
SendAdminMessage(COLOR_DARKRED, 1, string);
Log("logs/gates.log", string);
idx = MAX_GATES;
}
}
return 1;
}
CMD:gedit(playerid, params[])
{
new string[128], idx;
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid, COLOR_GREY, "You are not authorized to use this command.");
if(!aDuty[playerid]) return SendClientMessage(playerid, COLOR_GREY, "You are not on admin duty.");
if(sscanf(params, "s[128]", params))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gedit [option] [gateid]");
SendClientMessage(playerid, COLOR_GREY, "OPTIONS: object | close | open | speed | password");
return 1;
}
if(!strcmp(params, "object", true, 5))
{
new object;
if(sscanf(params, "s[128]ii", params, idx, object)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gedit object [gateid] [objectid]");
if(!GateInfo[idx][gModel]) return SendClientMessage(playerid, COLOR_GREY, "Invalid gate id.");
if(object == 0)
{
format(string, sizeof(string), "%d", object);
cmd_deletegate(playerid, string);
return 1;
}
GateInfo[idx][gModel] = object;
DestroyDynamicObject(GateInfo[idx][gGate]);
GateInfo[idx][gGate] = CreateDynamicObject(GateInfo[idx][gModel], GateInfo[idx][gCX], GateInfo[idx][gCY], GateInfo[idx][gCZ], GateInfo[idx][gCRX], GateInfo[idx][gCRY], GateInfo[idx][gCRZ]);
format(string, sizeof(string), " You have set gate ID %d's object ID to %d.", idx, object);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else if(!strcmp(params, "close", true, 5))
{
if(sscanf(params, "s[128]i", params, idx)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gedit position [gateid]");
if(!GateInfo[idx][gModel]) return SendClientMessage(playerid, COLOR_GREY, "Invalid gate id.");
gEdit[playerid] = 1;
gEditID[playerid] = idx;
GetDynamicObjectPos(GateInfo[idx][gGate], gPos[playerid][0], gPos[playerid][1], gPos[playerid][2]);
GetDynamicObjectRot(GateInfo[idx][gGate], gRot[playerid][0], gRot[playerid][1], gRot[playerid][2]);
EditDynamicObject(playerid, GateInfo[idx][gGate]);
format(string, sizeof(string), " You are now editing gate ID %d's closing position.", idx);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else if(!strcmp(params, "open", true, 4))
{
if(sscanf(params, "s[128]i", params, idx)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gedit open [gateid]");
if(!GateInfo[idx][gModel]) return SendClientMessage(playerid, COLOR_GREY, "Invalid gate id.");
gEdit[playerid] = 2;
gEditID[playerid] = idx;
GetDynamicObjectPos(GateInfo[idx][gGate], gPos[playerid][0], gPos[playerid][1], gPos[playerid][2]);
GetDynamicObjectRot(GateInfo[idx][gGate], gRot[playerid][0], gRot[playerid][1], gRot[playerid][2]);
EditDynamicObject(playerid, GateInfo[idx][gGate]);
format(string, sizeof(string), " You are now editing gate ID %d's opening position.", idx);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else if(!strcmp(params, "speed", true, 5))
{
new Float:speed;
if(sscanf(params, "s[128]if", params, idx, speed)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gedit open [gateid] [speed]");
if(!GateInfo[idx][gModel]) return SendClientMessage(playerid, COLOR_GREY, "Invalid gate id.");
GateInfo[idx][gSpeed] = speed;
format(string, sizeof(string), " You have set gate ID %d's moving speed to %f.", idx, speed);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else if(!strcmp(params, "password", true, 8))
{
new password[256];
if(sscanf(params, "s[128]is[256]", params, idx, password)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gedit open [gateid] [password]");
if(!GateInfo[idx][gModel]) return SendClientMessage(playerid, COLOR_GREY, "Invalid gate id.");
format(GateInfo[idx][gPassword], 256, "%s", password);
format(string, sizeof(string), " You have set gate ID %d's password to {FF6347}%s", idx, password);
SendClientMessage(playerid, COLOR_WHITE, string);
}
return 1;
}