07.10.2012, 00:37
Hello, I need help with my /drag command, it doesn't drag the player..
Here is the timer..
Here are the /drag commands
Here is the timer..
Код:
SetTimerEx("ExecuteDrag", 1000, true); //It will run once a second public ExecuteDrag() { for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) { if(1 != GetPVarInt(playerid, "BeingDragged")) continue; else { new draggerid = GetPVarInt(playerid, "DraggingPlayer"), Float:dpos[3], Float:ppos[3]; GetPlayerPos(draggerid, dpos[0], dpos[1], dpos[2]); GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]); new Float:diff[3], Float:tmp, Float:newpos[3]; for(new i = 0; i < 3; i++) { tmp = dpos[i] - ppos[i]; diff[i] = ((tmp < 0) ? (-tmp) : (tmp)); if(diff[i] > DRAG_RANGE) { newpos[i] = (dpos[i] + (DRAG_RANGE - 3)); } } } } return 1; }
Код:
CMD:drag(playerid, params[]) { if(IsACop(playerid)) { new string[128], giveplayerid; if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /drag [playerid]"); if(IsPlayerConnected(giveplayerid)) { if(GetPVarInt(giveplayerid, "PlayerCuffed") == 2) { if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_WHITE, " You must be out of the vehicle to use this command."); if(GetPVarInt(giveplayerid, "BeingDragged") == 1) return SendClientMessage(playerid, COLOR_WHITE, " That player is already being dragged. "); new Float:dX, Float:dY, Float:dZ; GetPlayerPos(giveplayerid, dX, dY, dZ); if(!IsPlayerInRangeOfPoint(playerid, 5.0, dX, dY, dZ)) return SendClientMessage(playerid, COLOR_GRAD2, " That suspect is not near you."); format(string, sizeof(string), "* %s has is now dragging you.", GetPlayerNameEx(playerid)); SendClientMessage(giveplayerid, COLOR_WHITE, string); format(string, sizeof(string), "* You are now dragging %s, you may move them now.", GetPlayerNameEx(giveplayerid)); SetTimer("ExecuteDrag", 1000, true); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "* %s grabs ahold of %s and begins to move them.", GetPlayerNameEx(playerid), GetPlayerNameEx(giveplayerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); SetPVarInt(giveplayerid, "BeingDragged", 1); SetPVarInt(playerid, "DraggingPlayer", giveplayerid); return 1; } else return SendClientMessage(playerid, COLOR_WHITE, " The player is not cuffed !"); } else return SendClientMessage(playerid, COLOR_WHITE, " The player is not connected !"); } else return SendClientMessage(playerid, COLOR_GREY, " You are not a Cop ! "); } CMD:stopdrag(playerid, params[]) { if(IsACop(playerid)) { new string[128], giveplayerid; if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /stopdrag [playerid]"); if(IsPlayerConnected(giveplayerid)) { if(GetPVarInt(giveplayerid, "PlayerCuffed") == 2) { if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_WHITE, " You must be out of the vehicle to use this command."); new Float:dX, Float:dY, Float:dZ; GetPlayerPos(giveplayerid, dX, dY, dZ); if(!IsPlayerInRangeOfPoint(playerid, 5.0, dX, dY, dZ)) return SendClientMessage(playerid, COLOR_GRAD2, " That suspect is not near you."); SendClientMessage(giveplayerid, COLOR_WHITE, string); SetTimer("ExecuteDrag", 1000, false); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "* %s releases his drag on %s", GetPlayerNameEx(playerid), GetPlayerNameEx(giveplayerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); return 1; } else return SendClientMessage(playerid, COLOR_WHITE, " The player is not cuffed !"); } else return SendClientMessage(playerid, COLOR_WHITE, " The player is not connected !"); } else return SendClientMessage(playerid, COLOR_GREY, " You are not a Cop ! "); }