Help with a few commands
#1

Hello,

I've been trying to make a few commands for my server but it seems to not been working. The first command allows admins to lock/unlock vehicles by their IDs.

Код:
CMD:alock(playerid, params[])
{
    if( pInfo[playerid][pAdmin] < 1 )
		return 0;
		
	new vehicleid;
	
	if( sscanf(params, "u", vehicleid ))
		return SendUsageError( playerid, "/alock [Vehicle ID]" );

    SendClientMessage(playerid, 0xBF60FFFF, "You have locked the doors on this vehicle");
    
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    	if(i == playerid) continue;
		SetVehicleParamsForPlayer(vehicleid, i, 0, 1);
	}
	return 1;
}
Problem with it is that it doesn't work.


Problem 2

This command restricts administrators from deleting server cars but only allowing them to delete spawned cars. Also, I've been trying to implement a similar thing into a respawn car command (Respawns server cars but deletes spawned cars).

Код:
new spawnedcar;
Код:
stock CreateVehicleEx(playerid, modelid)
{
	new
		world = GetPlayerVirtualWorld(playerid),
		interior = GetPlayerInterior(playerid),
		Float:x, Float:y, Float:z, Float:a;

	GetPlayerPos(playerid, x,y,z);
  	GetPlayerFacingAngle(playerid, a);
  	
	spawnedcar = CreateVehicle(modelid, x+3,y,z, a, -1, -1, -1);
	LinkVehicleToInterior(spawnedcar, interior);
	SetVehicleVirtualWorld(spawnedcar, world);
	PutPlayerInVehicle(playerid, spawnedcar, 0);
	SetPlayerInterior(playerid, interior);
	return 1;
}
This is in my delete car command

Код:
if( GetPlayerVehicleID( playerid ) != spawnedcar )
		return Error(playerid, "You can only delete spawned vehicles");
This is in my respawn cars command.

Код:
DestroyVehicle(spawnedcar);
Help would be appreciated.

Thanks
Reply
#2

Problem 1 :

PHP код:
CMD:alock(playeridparams[])
{
    if( 
pInfo[playerid][pAdmin] < )
        return 
0;
    new 
vehicleid;
    if( 
sscanf(params"u"vehicleid ))
        return 
SendUsageErrorplayerid"/alock [Vehicle ID]" );
        
    if(!
IsValidVehicle(vehicleid)) return 1// Check if the veh exist
    
SendClientMessage(playerid0xBF60FFFF"You have locked the doors on this vehicle");
    
    static
        
engine,
        
lights,
        
alarm,
        
doors,
        
bonnet,
        
boot,
        
objective;
    
GetVehicleParamsEx(vehicleidenginelightsalarmdoorsbonnetbootobjective);
    
SetVehicleParamsEx(vehicleidenginelightsalarm1bonnetbootobjective);
    
    return 
1;

Problem 2 :
PHP код:
new
    
spawnedcar[MAX_VEHICLES];
stock CreateVehicleEx(playeridmodelid)
{
    new
        
world GetPlayerVirtualWorld(playerid),
        
interior GetPlayerInterior(playerid),
        
Float:xFloat:yFloat:zFloat:a,
        
vehicleid;
    
GetPlayerPos(playeridx,y,z);
      
GetPlayerFacingAngle(playerida);
    
vehicleid CreateVehicle(modelidx+3,y,za, -1, -1, -1);
    
spawnedcar[vehicleid] = 1;
    
    
LinkVehicleToInterior(spawnedcarinterior);
    
SetVehicleVirtualWorld(spawnedcarworld);
    
PutPlayerInVehicle(playeridspawnedcar0);
    
SetPlayerInterior(playeridinterior);
    return 
1;
}
if(
spawnedcar[GetPlayerVehicleID(playerid)] != 1)
    return 
Error(playerid"You can only delete spawned vehicles"); 
Reply
#3

The /alock command is not working. Also, I was trying to make a /respawncars command.

Код:
CMD:respawncars(playerid, params[])
{
    if( pInfo[playerid][pAdmin] < 3 )
		return 0;

	for(new i = 0; i < MAX_VEHICLES; i++)
	{
		if( spawnedcar[i] == 1)
		{
        	DestroyVehicle(spawnedcar[i]);
			spawnedcar[i] = 0;
		}
		
		SetVehicleToRespawn(i);
	}
	
	return 1;
}
All the cars respawn fine but it doesn't delete the spawned cars.
Reply
#4

What is problem with /alock ? Try debug.

If he doesn't delete spawned cars it's because you don't have initialized your variable "spawnedcar" to value "1". Try debug, your script is correct.
Reply
#5

1. Use the following as a reference:
pawn Код:
// ** INCLUDES

#include <a_samp>
#include <sscanf>
#include <zcmd>

// ** NATIVES

// *** DEFAULT

native IsValidVehicle(vehicleid);

// ** VARIABLES

// *** GLOBAL VARIABLES

// **** VEHICLES

new bool:gvhLocked[MAX_VEHICLES] = false;

// ** MAIN

main()
{
    print("Loaded \"lock_unlock_vehicle_doors.amx\".");
}

// ** CALLBACKS

public OnGameModeInit()
{
    return 1;
}

public OnGameModeExit()
{
    return 1;
}

// ** COMMANDS

CMD:lock(playerid, params[])
{
    new vehicle_id;
    if(sscanf(params, "i", vehicle_id))
    {
        SendClientMessage(playerid, -1, "Usage: /lock (vehicle id)");
    }
    else if(!IsValidVehicle(vehicle_id))
    {
        SendClientMessage(playerid, -1, "You have entered an invalid existent vehicle id.");
    }
    else if(gvhLocked[vehicle_id])
    {
        SendClientMessage(playerid, -1, "That vehicle's doors are already locked.");
    }
    else
    {
        new engine, lights, alarm, doors, bonnet, boot, objective;
        GetVehicleParamsEx(vehicle_id, engine, lights, alarm, doors, bonnet, boot, objective);
        SetVehicleParamsEx(vehicle_id, engine, lights, alarm, VEHICLE_PARAMS_ON, bonnet, boot, objective);

        gvhLocked[vehicle_id] = true;

        SendClientMessage(playerid, -1, "You have locked that vehicle's doors.");
    }
    return 1;
}

CMD:unlock(playerid, params[])
{
    new vehicle_id;
    if(sscanf(params, "i", vehicle_id))
    {
        SendClientMessage(playerid, -1, "Usage: /unlock (vehicle id)");
    }
    else if(!IsValidVehicle(vehicle_id))
    {
        SendClientMessage(playerid, -1, "You have entered an invalid existent vehicle id.");
    }
    else if(!gvhLocked[vehicle_id])
    {
        SendClientMessage(playerid, -1, "That vehicle's doors aren't locked.");
    }
    else
    {
        new engine, lights, alarm, doors, bonnet, boot, objective;
        GetVehicleParamsEx(vehicle_id, engine, lights, alarm, doors, bonnet, boot, objective);
        SetVehicleParamsEx(vehicle_id, engine, lights, alarm, VEHICLE_PARAMS_OFF, bonnet, boot, objective);

        gvhLocked[vehicle_id] = false;

        SendClientMessage(playerid, -1, "You have unlocked that vehicle's doors.");
    }
    return 1;
}
2.
pawn Код:
native IsValidVehicle(vehicleid);

CMD:respawncars(playerid, params[])
{
    if(pInfo[playerid][pAdmin] < 3)
    {
        return 0;
    }

    for(new i = 1, j = GetVehiclePoolSize(); i <= j; i ++)
    {
        if(!IsValidVehicle(i))
        {
            continue;
        }

        if(spawnedcar[i])
        {
            DestroyVehicle(spawnedcar[i]);
           
            spawnedcar[i] = 0;
        }
        else
        {
            SetVehicleToRespawn(i);
        }
    }
    return 1;
}
Reply
#6

You're checking for a playerid/playername with sscanf. Use integer variable instead, "i" or "d".

pawn Код:
CMD:alock(playerid, params[])
{
    if( pInfo[playerid][pAdmin] < 1 )
        return 0;
       
    new vehicleid;
   
    if( sscanf(params, "i", vehicleid ))
        return SendUsageError( playerid, "/alock [Vehicle ID]" );

    SendClientMessage(playerid, 0xBF60FFFF, "You have locked the doors on this vehicle");
   
    for(new i=0; i < MAX_PLAYERS; i++)
    {
        if(i == playerid) continue;
        SetVehicleParamsForPlayer(vehicleid, i, 0, 1);
    }
    return 1;
}
Reply
#7

@SickAttack

For some reason, it doesn't delete the spawned vehicle but it only resets the variable back to 0.
Reply
#8

Quote:
Originally Posted by FunnyBear
Посмотреть сообщение
@SickAttack

For some reason, it doesn't delete the spawned vehicle but it only resets the variable back to 0.
A simple mistake, sorry.
pawn Код:
native IsValidVehicle(vehicleid);

CMD:respawncars(playerid, params[])
{
    if(pInfo[playerid][pAdmin] < 3)
    {
        return 0;
    }

    for(new i = 1, j = GetVehiclePoolSize(); i <= j; i ++)
    {
        if(!IsValidVehicle(i))
        {
            continue;
        }

        if(spawnedcar[i])
        {
            DestroyVehicle(i);
           
            spawnedcar[i] = 0;
        }
        else
        {
            SetVehicleToRespawn(i);
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)