Dragging
#1

I'm still very new to the scripting thing so I need some help.
I'm working on a drag command where if but I'm at a loss, could I get a hand? Thanks in advance.

PHP код:
CMD:drag(playerid,params[])
{
    new 
idFloat:XFloat:YFloat:Z;
    if(!
PlayerInfo[playerid][pFaction] < 1) return SCM(playeridCOLOR_GREY,"You're not authorized to use this command.");
    else if(
isDragged[id] == true) return SCM(playeridCOLOR_LIGHTRED"That player is already being dragged.");
    else if(
sscanf(params,"ui"playerid)) return SCM(playeridCOLOR_GREY,"[Usage:] /drag, id.");
    if(!
IsPlayerConnected(id)) return SCM(playeridCOLOR_LIGHTRED,"That player is not connected.");
    if(
id == playerid) return SendClientMessage(playeridCOLOR_LIGHTRED"You can't drag yourself.");
    if(!
IsPlayerInRangeOfPoint(playerid5.0XYZ)) return SCM(playeridCOLOR_GREY,"That player is not near you.");
    
isDragged[id] = true;
    
isDragging[playerid] = true;
    return 
1;

Reply
#2

Okay, you will need a new command, and callback: here is command you can edit it for yourself:
PHP код:
CMD:dragplayeridparams[] ) {
    new 
idFloat:Pos];
    if( 
sscanfparams"u"id )) return usageplayerid,"/drag [ID]" );
    if( 
id == playerid ) return greskaplayerid,"You cannot drag yourself!");
    if( 
id == INVALID_PLAYER_ID ) return greskaplayerid,"Player Not Connected");
    
GetPlayerPosidPos], Pos], Pos] );
    if( !
IsPlayerInRangeOfPointplayerid5.0Pos], Pos], Pos] )) return greskaplayerid,"Player not near you");
    
DragPlayerIDplayerid ] = idDragTimerplayerid ] = SetTimerEx"Dragged"800true"i"playerid); Dragedid ] = playerid;
    return 
true;

at the top of script you will need a new variables:
PHP код:
new DragPlayerID[MAX_PLAYERS];
new 
Draged[MAX_PLAYERS];
new 
DragTimer[MAX_PLAYERS]; 
You will reset that variables when player is connected to default value witch you want, also you will need to check is draged player disconected then kill timer, did he died...

and here is callback witch will be called by timer every 0,8seconds
PHP код:
forward Draggedplayerid );
public 
Draggedplayerid ) {
    if( 
DragedDragPlayerIDplayerid ] ] != -) {
        if( 
IsPlayerConnectedplayerid ) ) {
            if( 
IsPlayerConnectedDragPlayerIDplayerid ] ) ) {
                if( !
IsPlayerInAnyVehicleplayerid ) && ( !IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) || IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) ) ) {
                    new 
Float:Pos];
                    
GetPlayerPosplayeridPos], Pos], Pos] );
                    
SetPlayerPosDragPlayerIDplayerid ], Pos],  Pos] + 0.4Pos] );
                    
SetPlayerInteriorDragPlayerIDplayerid ], GetPlayerInteriorplayerid ) );
                    
SetPlayerVirtualWorldDragPlayerIDplayerid ], GetPlayerVirtualWorldplayerid ) );
                }
                else if( 
IsPlayerInAnyVehicleplayerid ) && !IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) ) {
                    new 
vehicle GetPlayerVehicleID(playerid);
                    if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                    else if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                    else if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                }
            }
            else {
                
DragPlayerIDplayerid ] = -1Dragedplayerid ] = -1;
                   
SCMplayeridPLAVA2"* Player left a server!");
                
KillTimerDragTimerplayerid ] );
            }
        }
    }
    return 
true;

Reply
#3

Quote:
Originally Posted by Dusan01
Посмотреть сообщение
Okay, you will need a new command, and callback: here is command you can edit it for yourself:
PHP код:
CMD:dragplayeridparams[] ) {
    new 
idFloat:Pos];
    if( 
sscanfparams"u"id )) return usageplayerid,"/drag [ID]" );
    if( 
id == playerid ) return greskaplayerid,"You cannot drag yourself!");
    if( 
id == INVALID_PLAYER_ID ) return greskaplayerid,"Player Not Connected");
    
GetPlayerPosidPos], Pos], Pos] );
    if( !
IsPlayerInRangeOfPointplayerid5.0Pos], Pos], Pos] )) return greskaplayerid,"Player not near you");
    
DragPlayerIDplayerid ] = idDragTimerplayerid ] = SetTimerEx"Dragged"800true"i"playerid); Dragedid ] = playerid;
    return 
true;

at the top of script you will need a new variables:
PHP код:
new DragPlayerID[MAX_PLAYERS];
new 
Draged[MAX_PLAYERS];
new 
DragTimer[MAX_PLAYERS]; 
You will reset that variables when player is connected to default value witch you want, also you will need to check is draged player disconected then kill timer, did he died...

and here is callback witch will be called by timer every 0,8seconds
PHP код:
forward Draggedplayerid );
public 
Draggedplayerid ) {
    if( 
DragedDragPlayerIDplayerid ] ] != -) {
        if( 
IsPlayerConnectedplayerid ) ) {
            if( 
IsPlayerConnectedDragPlayerIDplayerid ] ) ) {
                if( !
IsPlayerInAnyVehicleplayerid ) && ( !IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) || IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) ) ) {
                    new 
Float:Pos];
                    
GetPlayerPosplayeridPos], Pos], Pos] );
                    
SetPlayerPosDragPlayerIDplayerid ], Pos],  Pos] + 0.4Pos] );
                    
SetPlayerInteriorDragPlayerIDplayerid ], GetPlayerInteriorplayerid ) );
                    
SetPlayerVirtualWorldDragPlayerIDplayerid ], GetPlayerVirtualWorldplayerid ) );
                }
                else if( 
IsPlayerInAnyVehicleplayerid ) && !IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) ) {
                    new 
vehicle GetPlayerVehicleID(playerid);
                    if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                    else if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                    else if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                }
            }
            else {
                
DragPlayerIDplayerid ] = -1Dragedplayerid ] = -1;
                   
SCMplayeridCOLOR_GREY"* Player left a server!");
                
KillTimerDragTimerplayerid ] );
            }
        }
    }
    return 
true;

Thanks but I could do with another little hand.

PHP код:
(1383) : error 017undefined symbol "IsSeatAvailable"
(1386) : error 017undefined symbol "IsSeatAvailable"
(1389) : error 017undefined symbol "IsSeatAvailable" 
PHP код:
public Draggedplayerid ) {
    if( 
DragedDragPlayerIDplayerid ] ] != -) {
        if( 
IsPlayerConnectedplayerid ) ) {
            if( 
IsPlayerConnectedDragPlayerIDplayerid ] ) ) {
                if( !
IsPlayerInAnyVehicleplayerid ) && ( !IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) || IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) ) ) {
                    new 
Float:Pos];
                    
GetPlayerPosplayeridPos], Pos], Pos] );
                    
SetPlayerPosDragPlayerIDplayerid ], Pos],  Pos] + 0.4Pos] );
                    
SetPlayerInteriorDragPlayerIDplayerid ], GetPlayerInteriorplayerid ) );
                    
SetPlayerVirtualWorldDragPlayerIDplayerid ], GetPlayerVirtualWorldplayerid ) );
                }
                else if( 
IsPlayerInAnyVehicleplayerid ) && !IsPlayerInAnyVehicleDragPlayerIDplayerid ] ) ) {
                    new 
vehicle GetPlayerVehicleID(playerid);
                    if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                    else if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                    else if( 
IsSeatAvailablevehicle) ) {
                        
PutPlayerInVehicleDragPlayerIDplayerid ], vehicle);
                    }
                }
            }
            else {
                
DragPlayerIDplayerid ] = -1Dragedplayerid ] = -1;
                
SCMplayerid"* Player left a server!");
                
KillTimerDragTimerplayerid ] );
            }
        }
    }
    return 
true;

Reply
#4

here is it:
PHP код:
new OneSeatVehicles38 ] = {
    
425430432441446448452453,
    
454464465472473476481484,
    
485486493501509510519520,
    
530531532539553564568571,
    
572574583592594595
};
stock IsSeatAvailablevehicleidseat ) {
    new 
carmodel GetVehicleModelvehicleid);
    for (new 
0sizeofOneSeatVehicles ); i++ ) {
        if( 
carmodel == OneSeatVehicles[i] ) return 0;
    }
    foreach(new 
Player) {
        if(
GetPlayerVehicleID(i) == vehicleid && GetPlayerVehicleSeat(i) == seat) return 0;
    }
    return 
true;

Reply
#5

Good Job copying from your script and sending him, @Dusan
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)