Fitlerscript load but doesn't work
#1

Hello, i have the gl_property filterscript, i know it isn't a good one but i need it for something important, i loaded it and it worked correctly in the server log but when i join i try a command like /chouse it says unknown command !! anyway here is the FS
pawn Код:
//-------------------------------------------------------
//
// GRAND LARCENY Property creation and management script
//
// by damospiderman 2008
//
//-------------------------------------------------------

#include <a_samp>
#include "../include/gl_common.inc"

#define FILTERSCRIPT
//#define USE_SQLITE

#define PROP_VW         (10000)
#define MAX_INTERIORS   (146)
#define MAX_PROPERTIES  (1000)

#define PROPERTY_FOLDER "properties" // Location of properties file
#define PROPERTY_UNIQID_FILE    "properties/uniqId.txt" // Location of Uniq Interior Info
#define DB_PROPERTIES   "properties/dbProperties.db" // Location of the properties Database

#define MAX_TYPES       (5)
#define TYPE_EMPTY      (0)
#define TYPE_HOUSE      (1)
#define TYPE_BUSINESS   (2)
#define TYPE_BANK       (3)
#define TYPE_COP        (4)

enum // Property Type Enum
    E_P_TYPES {
        tIcon,
        tName[32]
    }

enum // Uniq Interiors Enum
    E_INTERIORS {
        inIntID,
        Float:inExitX,
        Float:inExitY,
        Float:inExitZ,
        Float:inExitA,
        inName[64]
    };

enum // Properties Enum
    E_PROPERTIES {
        eInterior,
        eType,
        Float:eEntX,
        Float:eEntY,
        Float:eEntZ,
        Float:eEntA,
        eUniqIntId,
        eOwner,
        ePrice,
        ePname[64]
    };

//  [ uniq property id ]
new unid;

//  [ Array of all the property interior info ]
new interiorInfo[MAX_INTERIORS][E_INTERIORS];

//  [ Pickup array with property id assigned via array slot ( pickupid ) ]
new propPickups[MAX_PROPERTIES] = {-1};

//  [ Handles for 3D text displayed at property entrances ]
new Text3D:propTextInfo[MAX_PROPERTIES];

//  [ Mass array of all the properties and info about them ]
new properties[MAX_PROPERTIES][E_PROPERTIES];

//  [ The last pickup the player went through so they can do /enter command ]
new lastPickup[MAX_PLAYERS] = {-1};

//  [ Current property Unique Interior the player is in.. defaults to -1 when not in any property ]
new currentInt[MAX_PLAYERS] = {-1};

//  [ Player Position array to store the last place the player was before /view command so they can be teleported back ]
new Float:plPos[MAX_PLAYERS][3];

//  [ Players actual interior id used for /view /return command ]
new plInt[MAX_PLAYERS];

//  [ Array of property type iconid's and strings for property type ]
new propIcons[MAX_TYPES][E_P_TYPES] =   {
                                            { 0, "" },                  // TYPE_EMPTY ( not used )
                                            { 1273, "House" },          // TYPE_HOUSE green house icon
                                            { 1272, "Business" },       // TYPE_BUSINESS blue house icon
                                            { 1274, "Bank" },           // TYPE_BANK dollar sign icon
                                            { 1247, "Police Station" }  // TYPE_COP Bribe Star 1247
                                        };
                                       
new propFile[MAX_TYPES][64] =   {
                                    { "blank" },
                                    { "properties/houses.txt" },
                                    { "properties/businesses.txt" },
                                    { "properties/banks.txt" },
                                    { "properties/police.txt" }
                                };
                               
//  Keep track of what properties we've sent an /enter notification for
new gLastPropertyEnterNotification[MAX_PLAYERS];


/********************************
*   Interior Info Functions     *
********************************/

stock Float:GetInteriorExit( id, &Float:x, &Float:y, &Float:z ){
    if( id > MAX_INTERIORS ) return 0.0;
    else {
        x = interiorInfo[id][inExitX];
        y = interiorInfo[id][inExitY];
        z = interiorInfo[id][inExitZ];
        return interiorInfo[id][inExitA];
    }
}

// Gets interior exit info from uniq Interior Id. Returns InteriorId or -1 if interior doesn't exist
stock GetInteriorExitInfo( uniqIntId, &Float:exitX, &Float:exitY, &Float:exitZ, &Float:exitA ){
    if( uniqIntId < MAX_INTERIORS ){
        exitX = interiorInfo[uniqIntId][inExitX];
        exitY = interiorInfo[uniqIntId][inExitY];
        exitZ = interiorInfo[uniqIntId][inExitZ];
        exitA = interiorInfo[uniqIntId][inExitA];
        return interiorInfo[uniqIntId][inIntID];
    }
    return -1;
}


stock GetInteriorIntID( id ){ // Gets the interior id of a uniq Interior Id :S
    if( id > MAX_INTERIORS ) return -1;
    else return interiorInfo[id][inIntID];
}

stock GetInteriorName( id )
{
    new tmp[64];
    if( id > MAX_PROPERTIES ) return tmp;

    else {
        format( tmp, 64, "%s", interiorInfo[id][inName] );
        return tmp;
    }
}

/********************************************************
********************************************************/



/********************************
*    Property Functions         *
********************************/


stock Float:GetPropertyEntrance( id, &Float:x, &Float:y, &Float:z ){
    if( id > MAX_PROPERTIES ) return 0.0;
    x = properties[id][eEntX];
    y = properties[id][eEntY];
    z = properties[id][eEntZ];
    return properties[id][eEntA];
}

stock Float:GetPropertyExit( id, &Float:x, &Float:y, &Float:z ){
    if( id > MAX_PROPERTIES ) return 0.0;
    return GetInteriorExit( properties[id][eUniqIntId], x, y, z );
}

stock GetPropertyInteriorFileId( id ){
    if( id > MAX_PROPERTIES ) return 0;
    else return properties[id][eUniqIntId];
}

stock GetPropertyInteriorId( id ){
    if( id > MAX_PROPERTIES ) return 0;
    else return GetInteriorIntID( properties[id][eUniqIntId] );
}

stock GetPropertyType( id ){
    if( id > MAX_PROPERTIES ) return 0;
    else return properties[id][eType];
}

stock GetPropertyOwner( id ){
    if( id > MAX_PROPERTIES ) return -1;
    else return properties[id][eOwner];
}

stock GetPropertyPrice( id ){
    if( id > MAX_PROPERTIES ) return -1;
    else return properties[id][ePrice];
}

stock GetPropertyName( id ){
    new tmp[64];
    if( id > MAX_PROPERTIES ) return tmp;
    else {
        format( tmp, 64, "%s", properties[id][ePname] );
        return tmp;
    }
}

/********************************************************
********************************************************/


/********************************
*       Database Functions      *
********************************/


stock Float:dbGetPropertyEntrance( database[], uniqId, &Float:x, &Float:y, &Float:z ){
    new
        DB:prop,
        DBResult:query_result,
        query[128],
        num;

    prop = db_open( database );
    format( query, 128,"SELECT entX, entY, enZ, entA FROM properties WHERE id = %d LIMIT 1", uniqId );

    query_result = db_query( prop, query );
    num = db_num_rows(query_result);
    if(!num) return -1.0;

    else {
        db_get_field_assoc( query_result, "entX", query, 128 );
        x = floatstr( query );
        db_get_field_assoc( query_result, "entY", query, 128 );
        y = floatstr( query );
        db_get_field_assoc( query_result, "entZ", query, 128 );
        z = floatstr( query );
        db_get_field_assoc( query_result, "entA", query, 128 );
        return floatstr( query );
    }
}

stock dbSetPropertyOwner( database[], uniqId, ownerId ){
}

stock dbSetPropertyPrice( database[], uniqId, price ){
}

stock dbDeleteProperty( database[], uniqId ){
}

stock dbCreateProperty( database[], uniqId, Float:entX, Float:entY, Float:entZ, Float:entA ){ // remember to add rest of params
}

stock dbLoadProperties( database[] )
{
    new
            DB:prop,
            DBResult:query_result,
            query[128],
            num,
            i;

    prop = db_open( database );
    format( query, 128,"SELECT * FROM properties", uniqId );

    query_result = db_query( prop, query );
    num = db_num_rows(query_result);
    if(!num) return 0;
    else {
        while( i < num ){
            db_get_field_assoc( query_result, "entX", query, 128 );
            x = floatstr( query );
            db_get_field_assoc( query_result, "entX", query, 128 );
            x = floatstr( query );
            db_get_field_assoc( query_result, "entY", query, 128 );
            y = floatstr( query );
            db_get_field_assoc( query_result, "entZ", query, 128 );
            z = floatstr( query );
            db_get_field_assoc( query_result, "entA", query, 128 );
            i++;
        }
    }

}
/********************************************************
********************************************************/


/*********************************
*   Property System Functions    *
*********************************/


ReadInteriorInfo( fileName[] )
{
    new
        File:file_ptr,
        buf[256],
        tmp[64],
        idx,
        uniqId;


    file_ptr = fopen( fileName, io_read );
    if( file_ptr ){
        while( fread( file_ptr, buf, 256 ) > 0){
            idx = 0;

            idx = token_by_delim( buf, tmp, ' ', idx );
            if(idx == (-1)) continue;
            uniqId = strval( tmp );

            if( uniqId >= MAX_INTERIORS ) return 0;

            idx = token_by_delim( buf, tmp, ' ', idx+1 );
            if(idx == (-1)) continue;
            interiorInfo[uniqId][inIntID] = strval( tmp );

            idx = token_by_delim( buf, tmp, ' ', idx+1 );
            if(idx == (-1)) continue;
            interiorInfo[uniqId][inExitX] = floatstr( tmp );

            idx = token_by_delim( buf, tmp, ' ', idx+1 );
            if(idx == (-1)) continue;
            interiorInfo[uniqId][inExitY] = floatstr( tmp );

            idx = token_by_delim( buf, tmp, ' ', idx+1);
            if(idx == (-1)) continue;
            interiorInfo[uniqId][inExitZ] = floatstr( tmp );

            idx = token_by_delim( buf, tmp, ' ', idx+1 );
            if(idx == (-1)) continue;
            interiorInfo[uniqId][inExitA] = floatstr( tmp );

            idx = token_by_delim( buf, interiorInfo[uniqId][inName], ';', idx+1 );
            if(idx == (-1)) continue;

            /*
            printf( "ReadInteriorInfo(%d, %d, %f, %f, %f, %f ( %s ))",
                    uniqId,
                    interiorInfo[uniqId][inIntID],
                    interiorInfo[uniqId][inExitX],
                    interiorInfo[uniqId][inExitY],
                    interiorInfo[uniqId][inExitZ],
                    interiorInfo[uniqId][inExitA],
                    interiorInfo[uniqId][inName] );*/


        }
        //printf( "Interiors File read successfully" );
        fclose( file_ptr );
        return 1;
    }
    printf( "Could Not Read Interiors file ( %s )", fileName );
    return 0;
}

ReadPropertyFile( fileName[] )
{
    new  File:file_ptr,
        tmp[128],
        buf[256],
        idx,
        Float:enX,
        Float:enY,
        Float:enZ,
        Float:enA,
        uniqIntId,
        p_type,
        pIcon;

    printf("Reading File: %s",fileName);

    file_ptr = fopen( fileName, io_read );

    if(!file_ptr )return 0;

    while( fread( file_ptr, buf, 256 ) > 0){
        idx = 0;

        idx = token_by_delim( buf, tmp, ',', idx );
        if(idx == (-1)) continue;
        pIcon = strval( tmp );

        idx = token_by_delim( buf, tmp, ',', idx+1 );
        if(idx == (-1)) continue;
        enX = floatstr( tmp );

        idx = token_by_delim( buf, tmp, ',', idx+1 );
        if(idx == (-1)) continue;
        enY = floatstr( tmp );

        idx = token_by_delim( buf, tmp, ',', idx+1 );
        if(idx == (-1)) continue;
        enZ = floatstr( tmp );

        idx = token_by_delim( buf, tmp, ',', idx+1 );
        if(idx == (-1)) continue;
        enA = floatstr( tmp );

        idx = token_by_delim( buf, tmp, ',', idx+1 );
        if(idx == (-1)) continue;
        uniqIntId = strval( tmp );

        idx = token_by_delim( buf, tmp, ';', idx+1 );
        if(idx == (-1)) continue;
        p_type = strval( tmp );

        CreateProperty( uniqIntId, pIcon, enX, enY, enZ, enA, p_type  );
    }
    fclose( file_ptr );
    return 1;
}

PutPlayerInProperty( playerid, propId, propVW = 0 )
{
    new Float:x, Float:y, Float:z, Float:a;
    new intFileId;
   
    a = GetPropertyExit( propId, x, y, z );
    SetPlayerPos( playerid, x, y, z );
    SetPlayerFacingAngle( playerid, a );
    SetPlayerInterior( playerid, GetPropertyInteriorId( propId ));
    SetPlayerVirtualWorld( playerid, (propVW==0)? propId+PROP_VW:propVW );
    intFileId = GetPropertyInteriorFileId(propId);
    currentInt[playerid] = propId;
   
    //new dbgstring[128];
    //format(dbgstring,sizeof(dbgstring),"PutPlayerInProperty(%d): FileInt=%d",propId,intFileId);
    //SendClientMessage(playerid,0xFFFFFFFF,dbgstring);
   
    // the following will make the client shop scripts run if we tell it
    // the name of the shop.
    if(intFileId == 22) {
        SetPlayerShopName(playerid,"FDPIZA");
    }
    else if(intFileId == 47) {
        SetPlayerShopName(playerid,"FDBURG");
    }
    else if(intFileId == 130) {
        SetPlayerShopName(playerid,"FDCHICK");
    }
    else if(intFileId == 32) {
        SetPlayerShopName(playerid,"AMMUN1");
    }
    else if(intFileId == 96) {
        SetPlayerShopName(playerid,"AMMUN2");
    }
    else if(intFileId == 122) {
        SetPlayerShopName(playerid,"AMMUN3");
    }
    else if(intFileId == 123) {
        SetPlayerShopName(playerid,"AMMUN5");
    }
   
}

// Adds new property to property file
AddProperty( uniqIntId, Float:entX, Float:entY, Float:entZ, Float:entA, p_type, comment[]="" )
{
    new
        Float:exitX,
        Float:exitY,
        Float:exitZ,
        Float:exitA,
        interiorId,
        File:file_ptr,
        tmp[128];

    interiorId = GetInteriorExitInfo( uniqIntId, exitX, exitY, exitZ, exitA );

    if( interiorId != -1 ){
        file_ptr = fopen( propFile[p_type], io_append );
        if(file_ptr){
            format( tmp, 128, "%d, %f, %f, %f, %f, %d, %d ; //%s\r\n", propIcons[p_type][tIcon],entX, entY, entZ, entA, uniqIntId, p_type, comment );

            fwrite( file_ptr, tmp );
            fclose( file_ptr );
            printf( "PropDB - %s", tmp );
            return CreateProperty( uniqIntId, propIcons[p_type][tIcon], entX, entY, entZ, entA,  p_type );
        }
    }
    return -1;
}

CreateProperty( uniqIntId, iconId,  Float:entX, Float:entY, Float:entZ, Float:entA, p_type, name[64]="", owner=-1, price=0 )
{
    if( (unid+1) < MAX_PROPERTIES ){
        new Id = CreatePickup( iconId ,23, entX, entY, entZ, 0 );
        //printf( "CreateProperty(%d, %d, %f, %f, %f, %f, %d)", uniqIntId, iconId, entX, entY, entZ, entA, p_type );
        propPickups[Id] = unid;
        properties[unid][eEntX]     = entX;
        properties[unid][eEntY]     = entY;
        properties[unid][eEntZ]     = entZ;
        properties[unid][eEntA]     = entA;
        properties[unid][eUniqIntId] = uniqIntId;
        properties[unid][eOwner]    = owner;
        properties[unid][ePrice]    = price;
        properties[unid][eType]     = p_type;
        format( properties[unid][ePname], 64, "%s", name );
       
        new text_info[256];
       
        propTextInfo[unid] = Text3D:INVALID_3DTEXT_ID;
       
        if(p_type == TYPE_HOUSE) {
            format(text_info,256,"{FFFFFF}[{88EE88}House{FFFFFF}]");
            propTextInfo[unid] = Create3DTextLabel(text_info,0x88EE88FF,entX,entY,entZ+0.75,20.0,0,1);
        }
        else if(p_type == TYPE_BUSINESS) {
            format(text_info,256,"{FFFFFF}[{AAAAFF}Business{FFFFFF}]");
            propTextInfo[unid] = Create3DTextLabel(text_info,0xAAAAFFFF,entX,entY,entZ+0.75,20.0,0,1);
        }
        else if(p_type == TYPE_BANK) {
            format(text_info,256,"{FFFFFF}[{EEEE88}Bank{FFFFFF}]");
            propTextInfo[unid] = Create3DTextLabel(text_info,0xEEEE88FF,entX,entY,entZ+0.75,20.0,0,1);
        }
        else if(p_type == TYPE_COP) {
            format(text_info,256,"{FFFFFF}[{EEEE88}Police Station{FFFFFF}]");
            propTextInfo[unid] = Create3DTextLabel(text_info,0xEEEE88FF,entX,entY,entZ+0.75,20.0,0,1);
        }

        return unid++;
    }
    else print( "Property Limit Reached" );
    return -1;
}

PropertyCommand( playerid, cmd[],cmdtext[],idx, p_type )
{
    new
            Float:x,
            Float:y,
            Float:z,
            Float:a,
            tmp[256],
            string[128],
            uniqId,
            id;

    if( GetPlayerInterior(playerid) != 0 || GetPlayerVirtualWorld(playerid)!= 0 ){
        SendClientMessage(playerid, 0x550000FF, "You can only create properties in Interior 0 and VW 0" );
        return 1;
    }

    GetPlayerPos( playerid, x, y, z );
    GetPlayerFacingAngle( playerid, a );

    tmp = strtok( cmdtext, idx );
    if(!strlen(tmp)){
        format( string, 128, "Usage: %s [uniqInteriorId] [optional-comment]", cmd );
        SendClientMessage( playerid, 0xFF00CC, string );
        return 1;
    }
    if(!isNumeric(tmp)){
        SendClientMessage(playerid, 0x550000, "Uniq Interior Id must be a number" );
        return 1;
    }
    uniqId = strval( tmp );

    if( uniqId > MAX_INTERIORS || uniqId < 0 ){
        SendClientMessage( playerid, 0xFFFFCC, "Invalid Uniq Interior Id" );
        return 1;
    }

    idx = token_by_delim( cmdtext, tmp, '\0', idx );
    if(idx){
        id = AddProperty( uniqId, x, y, z, a, p_type, tmp );
    }

    else {
        id = AddProperty( uniqId, x, y, z, a, p_type );
    }

    if( id != -1 ){
        format( tmp, 256, "Property Type ( %d ) Added Successfully: UniqId: %d Interior: %d IntName: %s",p_type, id, interiorInfo[uniqId][inIntID], interiorInfo[uniqId][inName] );
        SendClientMessage( playerid, 0xCC7700, tmp );
    }else{
        SendClientMessage( playerid, 0x00FF55, "Error: Something went wrong/Property Limit Reached" );
    }
    return 1;
}

LoadProperties()
{
    if( properties[0][eType] != TYPE_EMPTY ){
        UnloadProperties();
    }
    unid = 0;
    for( new i = 0; i < MAX_PROPERTIES; i++ ){
        properties[i][eType] = TYPE_EMPTY;
    }

    ReadInteriorInfo( "properties/interiors.txt" );

    for( new i = 0; i < MAX_TYPES; i++ ){
        ReadPropertyFile( propFile[i] );
    }
    return 1;
}

UnloadProperties()
{
    new
        p;
    for( new i = 0; i < MAX_PROPERTIES; i++ ){
        if( propPickups[i] != -1 ){
            DestroyPickup( i );
            p = propPickups[i];
            propPickups[i] = -1;
            properties[p][eInterior] = -1;
            properties[p][eType] = TYPE_EMPTY;
            properties[p][eOwner] = -1;
            properties[p][ePrice] = 0;
            properties[p][ePname][0] = '\0';
        }
    }
}

/********************************************************
********************************************************/



/************************************
*           Callbacks               *
************************************/



public OnFilterScriptInit()
{
    print("\n-----------------------------------");
    print("Grand Larceny Property Filterscript      ");
    print("-----------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    UnloadProperties();
    return 1;
}

public OnGameModeInit()
{
    LoadProperties();
    return 1;
}

public OnGameModeExit()
{
    UnloadProperties();
    return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    if( newinteriorid == 0 ){
        currentInt[playerid] = -1;
        SetPlayerVirtualWorld( playerid, 0 );
    }
    return 1;
}

public OnPlayerSpawn( playerid )
{
    gLastPropertyEnterNotification[playerid] = -1;
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    //printf( "DEBUG: Player %d pickedup Pickup %d Prop Id %d", playerid, pickupid );
    lastPickup[playerid] = pickupid;
    new id = propPickups[pickupid];
    new pmsg[256];

    if( properties[id][eType] > 0 ){
   
        if(gLastPropertyEnterNotification[playerid] != id){
            gLastPropertyEnterNotification[playerid] = id;
            switch( properties[id][eType] ){
                case TYPE_HOUSE:{
                    format(pmsg,256,"* House: type /enter to enter");
                    SendClientMessage( playerid, 0xFF55BBFF, pmsg );
                    return 1;
                }

                case TYPE_BUSINESS:{
                    format(pmsg,256,"* Business: type /enter to enter");
                    SendClientMessage( playerid, 0xFF55BBFF, pmsg );
                    return 1;
                }

                case TYPE_BANK:{
                    format(pmsg,256,"* Bank: type /enter to enter");
                    SendClientMessage( playerid, 0xFF55BBFF, pmsg );
                    return 1;
                }

                case TYPE_COP:{
                    format(pmsg,256,"* Police Station: type /enter to enter");
                    SendClientMessage( playerid, 0xFF55BBFF, pmsg );
                    return 1;
                }
            }
        }
    }
    else SendClientMessage( playerid, 0xFF9900FF, "This property doesn't exist :S" );

    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    new cmd[256];

    cmd = strtok(cmdtext, idx);
   
    // Public commands.
    if(strcmp("/enter", cmd, true) == 0) // enter property
    {
        if( lastPickup[playerid] != -1 || properties[lastPickup[playerid]][eType] > 0 ){
            new
                id = propPickups[lastPickup[playerid]],
                Float:x,
                Float:y,
                Float:z;

            GetPropertyEntrance( id, x, y, z );
            if( IsPlayerInRangeOfPoint( playerid, 3.0, x, y, z )){
                PutPlayerInProperty( playerid, id );
                SendClientMessage( playerid, 0x55AADDFF, "* You have entered a property.. type /exit to leave" );
                return 1;
            }
        }
        return 1;
    }
    else if(strcmp("/exit", cmd, true) == 0) // exit property
    {
        if( currentInt[playerid] > -1 && GetPlayerInterior(playerid) == GetPropertyInteriorId( currentInt[playerid] )){

            new id = currentInt[playerid];
            new Float:x;
            new Float:y;
            new Float:z;
            new Float:a;

            // make sure they're near the exit before allowing them to exit.
            GetPropertyExit( id, x, y, z );
            if(!IsPlayerInRangeOfPoint(playerid,4.5,x,y,z)) {
                SendClientMessage(playerid,0xDDAA55FF,"* You must be near the property exit to /exit");
                return 1;
            }

            a = GetPropertyEntrance( id, x, y, z );
            SetPlayerPos( playerid, x, y, z );
            SetPlayerFacingAngle( playerid, a );
            SetPlayerInterior( playerid, 0 );
            SetPlayerVirtualWorld( playerid, 0 );
        }
        currentInt[playerid] = -1;
        return 1;
    }
   
    // The rest of the commands here are for
    // property creation which is admin only.
   
    if(!IsPlayerAdmin(playerid)) return 0;

    if(strcmp("/chouse", cmd, true) == 0) // creates a house type property
    {
        PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_HOUSE );
        return 1;
    }
    else if(strcmp("/cbus", cmd, true) == 0) // creates a business type property
    {
        PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_BUSINESS );
        return 1;
    }
    else if(strcmp("/ccop", cmd, true) == 0) // creates a police station property
    {
        PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_COP );
        return 1;
    }
    else if(strcmp("/cbank", cmd, true) == 0) // creates a bank type property
    {
        PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_BANK );
        return 1;
    }
    else if(strcmp("/view", cmd, true) == 0) //Basically lets you view an interior from the interiors.txt file by id
    {

        new
            tmp[256],
            string[128],
            uniqId,
            Float:x,
            Float:y,
            Float:z,
            Float:a;
        tmp = strtok( cmdtext, idx );
        if(!strlen(tmp)){
            format( string, 128, "Usage: %s [uniqInteriorId]", cmd );
            SendClientMessage( playerid, 0xFF00CC, string );

            return 1;
        }
        if(!isNumeric(tmp)){
            SendClientMessage(playerid, 0x550000, "Uniq Interior Id must be a number" );
            return 1;
        }
        uniqId = strval( tmp );

        if( uniqId > MAX_INTERIORS || uniqId < 0 ){
            SendClientMessage( playerid, 0xFFFFCC, "Invalid Uniq Interior Id" );
            return 1;
        }
        if( GetPlayerInterior( playerid ) == 0 ){
            GetPlayerPos( playerid, plPos[playerid][0], plPos[playerid][1], plPos[playerid][2] );
            plInt[playerid] = GetPlayerInterior( playerid );
        }
        a = GetInteriorExit( uniqId, x, y, z );
        SetPlayerInterior( playerid, GetInteriorIntID( uniqId ) );
        SetPlayerPos( playerid, x, y, z );
        SetPlayerFacingAngle( playerid, a );
        format( string, 128, "UniqId: %d InteriorId: %d Name: %s | Use /return to go to last position", uniqId,GetInteriorIntID( uniqId ), GetInteriorName( uniqId ));
        SendClientMessage( playerid, 0x556600FF, string );
        return 1;
    }
    else if( strcmp( "/return", cmd, true ) == 0 ) // return from /view command to last position
    {
        SetPlayerPos( playerid, plPos[playerid][0], plPos[playerid][1], plPos[playerid][2] );
        SetPlayerInterior( playerid, plInt[playerid] );
        return 1;
    }

    return 0;
}

/***********************************************************************
***********************************************************************/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)