10.11.2018, 20:18
Код:
[18:26:00] [debug] #0 0074b9a8 in public cmd_editgate (playerid=0, params[]=@00d130c8 "create 980") at HIDDEN/.pwn:74867 [18:26:00] [debug] #1 native CallLocalFunction () from samp03svr [18:26:00] [debug] #2 00002d00 in public OnPlayerCommandText (playerid=0, cmdtext[]=@00d13074 "/editgate create 980") at HIDDEN/zcmd.inc:108
Код:
return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos])); //ERROR LINE IN zcmd.inc
Код:
CMD:editgate(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pDev] >= 2 || PlayerInfo[playerid][pMapper] == MAPPERRANK_MANAGER)
{
new action[24], optional;
if(!sscanf(params, "s[24]F(0.0)", action, optional))
{
if(!strcmp(action,"create",true)){
new objid, tempgid, bool:found = false;
if(!sscanf(params, "s[24]i", action, objid)){
if(IsAValidGateObject(objid)){
//for(new i=1;i<=MAX_GATES;i++){
for(new i=0;i <= MAX_GATES;i++){
if(Gates[i][GateCreated] == 0){ //ERROR LINE 74867
tempgid = i;
found = true;
break;
}
}
if(found){
new Float:x, Float:y, Float:z, vw, inter;
GetPlayerPos(playerid, x, y, z);
vw = GetPlayerVirtualWorld(playerid);
inter = GetPlayerInterior(playerid);
EditingGate[playerid] = tempgid;
strmid(sendername, PlayerOOCName(playerid), 0, MAX_PLAYER_NAME);
Gates[tempgid][GateBy] = sendername;
Gates[tempgid][GateObjectID] = objid;
Gates[tempgid][GateX] = x+1;
Gates[tempgid][GateY] = y+1;
Gates[tempgid][GateZ] = z;
Gates[tempgid][GateRotX] = 0;
Gates[tempgid][GateRotY] = 0;
Gates[tempgid][GateRotZ] = 0;
Gates[tempgid][GateVW] = vw;
Gates[tempgid][GateINT] = inter;
Gates[tempgid][GateStatus] = 0;
CreateGate(tempgid);
format(str, sizeof(str), " You have succesfully spawned gate(%d) at your current position.", tempgid);
SendClientMessage(playerid, COLOR_GRAD1, str);
format(str, sizeof(str), "{FF0000}AdmWarning{FFFFFF}: %s has spawned gate(%d) at their position.", PlayerOOCName(playerid), tempgid);
ABroadCast(COLOR_WHITE, str, 1);
}
else{
SendClientMessage(playerid, COLOR_DARKRED, "ERROR: Max gates reached !");
}
}
else {
SendClientMessage(playerid, COLOR_GRAD1, " Invalid object ID !");
}
}
else{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editgate create [OBJECTID]");
}
}
else if(!strcmp(action, "id", true))
{
new gateid;
if(!sscanf(params, "s[24]i", action, gateid))
{
if(gateid == 0 || gateid > MAX_GATES) return SendClientMessage(playerid, COLOR_GRAD1, "Invalid gate ID.");
if(Gates[gateid][GateCreated] == 1)
{
EditingGate[playerid] = gateid;
format(str, sizeof(str), "You are now editing gate(%d).", EditingGate[playerid]);
SendClientMessage(playerid, COLOR_GRAD1, str);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Invalid gate ID.");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate id [GATEID]");
}
}
else if(!strcmp(action, "faction", true))
{
if(EditingGate[playerid] != 0)
{
new
faction;
if(sscanf(params, "s[24]i", action, faction))
return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate [faction id]");
if(!(faction > -1))
return SendClientMessage(playerid, COLOR_GREY, "Invalid faction ID.");
Gates[EditingGate[playerid]][Faction] = faction;
format(str, sizeof(str), "You have successfully changed gate(%d)'s faction to %d.", EditingGate[playerid], faction);
SendClientMessage(playerid, COLOR_GREY, str);
}
}
else if(!strcmp(action, "group", true))
{
if(EditingGate[playerid] != 0)
{
new
group;
if(sscanf(params, "s[24]i", action, group))
return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate [faction id]");
if(!(group > -1))
return SendClientMessage(playerid, COLOR_GREY, "Invalid faction ID.");
Gates[EditingGate[playerid]][Group] = group;
format(str, sizeof(str), "You have successfully changed gate(%d)'s faction to %d.", EditingGate[playerid], group);
SendClientMessage(playerid, COLOR_GREY, str);
}
}
else if(!strcmp(action, "object", true))
{
if(EditingGate[playerid] != 0)
{
new objid;
if(!sscanf(params, "s[24]i", action, objid))
{
if(IsAValidGateObject(objid))
{
DestroyDynamicObject(Gates[EditingGate[playerid]][GateObject]);
Gates[EditingGate[playerid]][GateObject] = 0;
Gates[EditingGate[playerid]][GateObjectID] = objid;
CreateGate(EditingGate[playerid]);
format(str, sizeof(str), "You have succesfully changed gate(%d)'s object to %d.", EditingGate[playerid], objid);
SendClientMessage(playerid, COLOR_GRAD1, str);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Invalid object ID.");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate object [OBJECTID]");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "You are not editing any gate.");
}
}
else if(!strcmp(action, "position", true))
{
if(EditingGate[playerid] != 0)
{
GateAction[playerid] = EDITING_GATE_POSITION;
EditDynamicObject(playerid, Gates[EditingGate[playerid]][GateObject]);
format(str, sizeof(str), "You are now editing gate(%d)'s position.", EditingGate[playerid]);
SendClientMessage(playerid, COLOR_GRAD1, str);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else if(!strcmp(action, "oposition", true))
{
if(EditingGate[playerid] != 0)
{
GateAction[playerid] = EDITING_GATE_OPOSITION;
EditDynamicObject(playerid, Gates[EditingGate[playerid]][GateObject]);
format(str, sizeof(str), "You are now editing gate(%d)'s opened position.", EditingGate[playerid]);
SendClientMessage(playerid, COLOR_GRAD1, str);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else if(!strcmp(action, "speed", true))
{
if(EditingGate[playerid] != 0)
{
new Float:newspeed;
if(!sscanf(params, "s[24]f", action, newspeed))
{
if(newspeed < 0.001 || newspeed > 10) return SendClientMessage(playerid, COLOR_GRAD1, "Speed must be between 0.001 or 10 seconds per unit.");
Gates[EditingGate[playerid]][GateSpeed] = newspeed;
format(str, sizeof(str), "Gate(%d)'s Speed was succesfully adjust to %f seconds/unit.", EditingGate[playerid], newspeed);
SendClientMessage(playerid, COLOR_GRAD1, str);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate speed [NEWSPEED(Seconds/unit)]");
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else if(!strcmp(action, "radius", true))
{
if(EditingGate[playerid] != 0)
{
new Float:newradii;
if(!sscanf(params, "s[24]f", action, newradii))
{
if(newradii < 1 || newradii > 15) return SendClientMessage(playerid, COLOR_GRAD1, "Radius must be between 1 or 15 units.");
Gates[EditingGate[playerid]][GateRadius] = newradii;
format(str, sizeof(str), "Gate(%d)'s Radius was succesfully adjust to %f units.", EditingGate[playerid], newradii);
SendClientMessage(playerid, COLOR_GRAD1, str);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate radius [NEWRADIUS(in units)]");
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else if(!strcmp(action, "houseid", true))
{
if(EditingGate[playerid] != 0)
{
new hid;
if(!sscanf(params, "s[24]i", action, hid))
{
if(HouseInfo[hid][hCreated] == 1)
{
Gates[EditingGate[playerid]][GateHouseID] = HouseInfo[hid][hSQLID];
format(str, sizeof(str), "Gate(%d) was succesfully connected to house %i.", EditingGate[playerid], hid);
SendClientMessage(playerid, COLOR_GRAD1, str);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Invalid house ID.");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate houseid [HOUSEID(to connect the gate to)]");
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else if(!strcmp(action, "delete", true))
{
if(EditingGate[playerid] != 0)
{
DestroyDynamicObject(Gates[EditingGate[playerid]][GateObject]);
Gates[EditingGate[playerid]][GateObject] = 0;
strmid(Gates[EditingGate[playerid]][GateBy], "", 0, strlen("None"), 255);
Gates[EditingGate[playerid]][GateCreated] = 0;
Gates[EditingGate[playerid]][GateObjectID] = 0;
Gates[EditingGate[playerid]][GateX] = 0;
Gates[EditingGate[playerid]][GateY] = 0;
Gates[EditingGate[playerid]][GateZ] = 0;
Gates[EditingGate[playerid]][GateRotX] = 0;
Gates[EditingGate[playerid]][GateRotY] = 0;
Gates[EditingGate[playerid]][GateRotZ] = 0;
Gates[EditingGate[playerid]][GateVW] = 0;
Gates[EditingGate[playerid]][GateINT] = 0;
Gates[EditingGate[playerid]][MveGateX] = 0;
Gates[EditingGate[playerid]][MveGateX] = 0;
Gates[EditingGate[playerid]][MveGateX] = 0;
Gates[EditingGate[playerid]][GateSpeed] = 0;
Gates[EditingGate[playerid]][GateRadius] = 0;
Gates[EditingGate[playerid]][GateHouseID] = 0;
Gates[EditingGate[playerid]][GateStatus] = 0;
format(str, sizeof(str), "You have deleted gate(%d).", EditingGate[playerid]);
SendClientMessage(playerid, COLOR_GRAD1, str);
format(str, sizeof(str), "{FF0000}AdmWarning{FFFFFF}: %s has deleted gate(%d).", PlayerICName(playerid), EditingGate[playerid]);
ABroadCast(COLOR_WHITE, str, 1);
EditingGate[playerid] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else if(!strcmp(action, "reload", true))
{
if(EditingGate[playerid] != 0)
{
new gid = EditingGate[playerid];
DestroyDynamicObject(Gates[gid][GateObject]);
Gates[gid][GateObject] = CreateDynamicObject(Gates[gid][GateObjectID], Gates[gid][GateX], Gates[gid][GateY], Gates[gid][GateZ], Gates[gid][GateRotX], Gates[gid][GateRotY], Gates[gid][GateRotZ], Gates[gid][GateVW], Gates[gid][GateINT]);
format(str, sizeof(str), "You have reloaded gate(%d).", EditingGate[playerid]);
SendClientMessage(playerid, COLOR_GRAD1, str);
format(str, sizeof(str), "{FF0000}AdmWarning{FFFFFF}: %s has reloaded gate(%d).", PlayerICName(playerid), EditingGate[playerid]);
ABroadCast(COLOR_WHITE, str, 1);
EditingGate[playerid] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else if(!strcmp(action, "stop", true))
{
if(EditingGate[playerid] != 0)
{
SendClientMessage(playerid, COLOR_GRAD1, "Editing progress was ended.");
EditingGate[playerid] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not editing any gate.");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Invalid action.");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /editgate [action]");
SendClientMessage(playerid, COLOR_GREY, "Available actions: create, id, object, position, oposition, speed, houseid, radius, delete, stop, reload");
SendClientMessage(playerid, COLOR_GREY, "Available actions: faction");
}
}
else
{
AdmErrorMsg;
}
return 1;
}


