Raised This Month: $ Target: $400
 0% 

My blockmaker...


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
suffer
Member
Join Date: Jan 2010
Old 07-20-2010 , 23:17   My blockmaker...
Reply With Quote #1

I added more menus (Light/Admin, etc), more blocks, etc. and I just noticed how now a regular player without bm flag or admin can make a Light... All they have to do is go to the light menu and create it... How do I make it so people with the admin flag 'u' (BM) can create the lights and not random players?

Thanks for helping.
__________________
Quote:
Originally Posted by t*stylez View Post
r4ndomz, why is your skull so fugly looking?
i wonder if your head is oddly shaped...
suffer is offline
infek
Senior Member
Join Date: May 2009
Location: Behind you
Old 07-21-2010 , 00:34   Re: My blockmaker...
Reply With Quote #2

You need to put this in your function to create the light
PHP Code:
if (get_user_flags(id) & BM_ADMIN_LEVEL
Heres an example & A part of the cmdGrab on blockmaker 4.01
PHP Code:
public cmdGrab(id)
{
 
//make sure player has access to use this command
 
if (get_user_flags(id) & BM_ADMIN_LEVEL)
 { 
__________________
"Domo Arigato, Mr. Roboto!"
PM me if you want to know a secret

Last edited by infek; 07-21-2010 at 00:41.
infek is offline
suffer
Member
Join Date: Jan 2010
Old 07-21-2010 , 00:48   Re: My blockmaker...
Reply With Quote #3

showLightMenu
public handleLightMenu
lightCreate
lightCreate2
Heres where most of the light info starts
Code:
showLightMenu(id)
{
    new col[3];
    new szMenu[256];
    new szGodmode[6];
    new szNoclip[6];
    col = (get_user_flags(id) & BM_ADMIN_LEVEL ? "\w" : "\d");
    szNoclip = (get_user_noclip(id) ? "\yOn" : "\rOff");
    szGodmode = (get_user_godmode(id) ? "\yOn" : "\rOff");
    
    //format the long jump menu
    format(szMenu, sizeof(szMenu), gszLightMenu, gLightRadius[id], col, col, col, floatround(gLightR[id]), floatround(gLightG[id]), floatround(gLightB[id]), col, szNoclip, col, szGodmode);
    
    //show the long jump menu to the player
    show_menu(id, gKeysLightMenu, szMenu, -1, "bmLightMenu");
}


showColorMenu(id)
{
    new col[3];
    new szMenu[256];
    new szGodmode[6];
    new szNoclip[6];

    col = (get_user_flags(id) & BM_ADMIN_LEVEL ? "\w" : "\d");
    szNoclip = (get_user_noclip(id) ? "\yOn" : "\rOff");
    szGodmode = (get_user_godmode(id) ? "\yOn" : "\rOff");
    
    //format the long jump menu
    format(szMenu, sizeof(szMenu), gszColorMenu, floatround(gLightR[id]), floatround(gLightG[id]), floatround(gLightB[id]), col, szNoclip, col, szGodmode);

    //show the long jump menu to the player
    show_menu(id, gKeysColorMenu, szMenu, -1, "bmColorMenu");
}

showOptionsMenu(id, oldMenu)
{
    //set the oldmenu global variable so when the back key is pressed it goes back to the previous menu
    gMenuBeforeOptions[id] = oldMenu;
    
    new col[3];
    new szSnapping[6];
    new szMenu[256];
    col = (get_user_flags(id) & BM_ADMIN_LEVEL ? "\w" : "\d");
    szSnapping = (gbSnapping[id] ? "\yOn" : "\rOff");
    
    //format the options menu
    format(szMenu, sizeof(szMenu), gszOptionsMenu, col, szSnapping, col, gfSnappingGap[id], col, col, col, col, col, col, col);
    
    //show the options menu to the player
    show_menu(id, gKeysOptionsMenu, szMenu, -1, "bmOptionsMenu");
}

showChoiceMenu(id, gChoice, const szTitle[96])
{
    gChoiceOption[id] = gChoice;
    
    //format choice menu using given title
    new szMenu[128];
    format(szMenu, sizeof(szMenu), gszChoiceMenu, szTitle);
    
    //show the choice menu to the player
    show_menu(id, gKeysChoiceMenu, szMenu, -1, "bmChoiceMenu");
}

public handleMainMenu(id, num)
{
    switch (num)
    {
        case N1: { showBlockMenu(id); }
        case N2: { showTeleportMenu(id); }
        case N3: { showLightMenu(id); }
        case N4: { toggleNoclip(id); }
        case N5: { toggleGodmode(id); }
        case N6: { showOptionsMenu(id, 1); }
        case N0: { return; }
    }
    
    //selections 1, 2, 3, 4, 5 and 9 show different menus
    if (num != N1 && num != N2 && num != N3 && num != N4 && num != N5 && num !=N6)
    {
        //display menu again
        showMainMenu(id);
    }
}

public handleBlockMenu(id, num)
{
    switch (num)
    {
        case N1: { showBlockSelectionMenu(id); }
        case N2: { createBlockAiming(id, gSelectedBlockType[id]); }
        case N3: { convertBlockAiming(id, gSelectedBlockType[id]); }
        case N4: { deleteBlockAiming(id); }
        case N5: { rotateBlockAiming(id); }
        case N6: { toggleNoclip(id); }
        case N7: { toggleGodmode(id); }
        case N8: { changeBlockSize(id); }
        case N9: { showOptionsMenu(id, 2); }
        case N0: { showMainMenu(id); }
    }
    
    //selections 1, 9 and 0 show different menus
    if (num != N1 && num != N9 && num != N0)
    {
        //display menu again
        showBlockMenu(id);
    }
}

public handleBlockSelectionMenu(id, num)
{
    switch (num)
    {
        case N9:
        {
            //goto next block selection menu page
            ++gBlockMenuPage[id];
            
            //make sure the player can't go above the maximum block selection page
            if (gBlockMenuPage[id] > gBlockMenuPagesMax)
            {
                gBlockMenuPage[id] = gBlockMenuPagesMax;
            }
            
            //show block selection menu again
            showBlockSelectionMenu(id);
        }
        
        case N0:
        {
            //goto previous block selection menu page
            --gBlockMenuPage[id];
            
            //show block menu if player goes back too far
            if (gBlockMenuPage[id] < 1)
            {
                showBlockMenu(id);
                gBlockMenuPage[id] = 1;
            }
            else
            {
                //show block selection menu again
                showBlockSelectionMenu(id);
            }
        }
        
        default:
        {
            //offset the num value using the players block selection page number
            num += (gBlockMenuPage[id] - 1) * 8;
            
            //if block number is within range
            if (num < gBlockMax)
            {
                gSelectedBlockType[id] = num;
                showBlockMenu(id);
            }
            else
            {
                showBlockSelectionMenu(id);
            }
        }
    }
}

public handleTeleportMenu(id, num)
{
    switch (num)
    {
        case N1: { createTeleportAiming(id, TELEPORT_START); }
        case N2: { createTeleportAiming(id, TELEPORT_END); }
        case N3: { swapTeleportAiming(id); }
        case N4: { deleteTeleportAiming(id); }
        case N5: { showTeleportPath(id); }
        case N6: { toggleNoclip(id); }
        case N7: { toggleGodmode(id); }
        case N9: { showOptionsMenu(id, 3); }
        case N0: { showMainMenu(id); }
    }
    
    //selections 9 and 0 show different menus
    if (num != N9 && num != N0)
    {
        showTeleportMenu(id);
    }
}

lightRadius(id, num)
{
    switch (num)
    {
        case 1:
        {
            if (gLightRadius[id] < 100) gLightRadius[id]++;
        }
        
        case 2:
        {
            if (gLightRadius[id] > 5) gLightRadius[id]--;
        }
        
        default:
        {
            log_amx("%sInvalid number in lightRadius()", gszPrefix);
        }
    }
}

lightCreate(const id)
{
    new origin[3], Float:vOrigin[3];
    //get the origin of the player and add Z offset
    get_user_origin(id, origin, 3);
    IVecFVec(origin, vOrigin);
    vOrigin[2] += floatabs(gfLightSizeMin[2]);

    new Float:RenderColor[3];
    RenderColor[0] = gLightR[id];
    RenderColor[1] = gLightG[id];
    RenderColor[2] = gLightB[id];
    lightCreate2(vOrigin, RenderColor, gLightRadius[id] );
}

lightCreate2(Float:vOrigin[3], Float:RenderColor[3], radius )
{
    new ent = create_entity(gszInfoTarget);
    
    if (is_valid_ent(ent))
    {
        //set teleport properties
        entity_set_string(ent, EV_SZ_classname, gszLightClassname);
        entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
        entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE);
        entity_set_model(ent, gszLightModel);
        entity_set_size(ent, gfLightSizeMin, gfLightSizeMax);
        entity_set_origin(ent, vOrigin);

        //save the colors
        entity_set_vector(ent, EV_VEC_vuser2, RenderColor);

        //save the radius
        entity_set_int(ent, EV_INT_body, radius);

        //set task for light
        new parm[5];
        parm[0] = ent;
        parm[1] = floatround(RenderColor[0]);
        parm[2] = floatround(RenderColor[1]);
        parm[3] = floatround(RenderColor[2]);
        parm[4] = radius;
        set_task(1.0, "taskLight", TASK_SPRITE + ent, parm, 5, "b");
    }
    else
    {
        log_amx("%sCouldn't create light entity", gszPrefix);
    }
}

public handleLightMenu(id, num)
{
    switch (num)
    {
        case N1: { lightRadius(id, 1); }
        case N2: { lightCreate(id); }
        case N3: { lightRadius(id, 2); }
        case N4: { deleteLightAiming(id); }
        case N5: { showColorMenu(id); }
        case N6: { toggleNoclip(id); }
        case N7: { toggleGodmode(id); }
        case N9: { showOptionsMenu(id, 7); }
        case N0: { showMainMenu(id); }
    }
    
    //selections 9 and 0 show different menus
    if (num != N5 && num != N9 && num != N0)
    {
        showLightMenu(id);
    }
}

public handleColorMenu(id, num)
{
    switch (num)
    {
        case N1: { gLightR[id] = floatclamp( gLightR[id]+25.5, 0.0, 255.0 ); }
        case N2: { gLightR[id] = floatclamp( gLightR[id]-25.5, 0.0, 255.0 ); }
        case N3: { gLightG[id] = floatclamp( gLightG[id]+25.5, 0.0, 255.0 ); }
        case N4: { gLightG[id] = floatclamp( gLightG[id]-25.5, 0.0, 255.0 ); }
        case N5: { gLightB[id] = floatclamp( gLightB[id]+25.5, 0.0, 255.0 ); }
        case N6: { gLightB[id] = floatclamp( gLightB[id]-25.5, 0.0, 255.0 ); }
        case N7: { toggleNoclip(id); }
        case N8: { toggleGodmode(id); }
        case N9: { showOptionsMenu(id, 8); }
        case N0: { showLightMenu(id); }
    }
    
    //selections 9 and 0 show different menus
    if (num != N9 && num != N0)
    {
        showColorMenu(id);
    }
}

public handleOptionsMenu(id, num)
{
    switch (num)
    {
        case N1: { toggleSnapping(id); }
        case N2: { toggleSnappingGap(id); }
        case N3: { groupBlockAiming(id); }
        case N4: { groupClear(id); }
        case N5: { showChoiceMenu(id, CHOICE_DEL_BLOCKS, "Are you sure you want to erase all blocks on the map?"); }
        case N6: { showChoiceMenu(id, CHOICE_DEL_TELEPORTS, "Are you sure you want to erase all teleports on the map?"); }
        case N7: { saveBlocks(id); }
        case N8: { showChoiceMenu(id, CHOICE_LOAD, "Loading will erase all blocks and teleports, do you want to continue?"); }
        case N9: { showChoiceMenu(id, CHOICE_DEL_LIGHTS, "Are you sure you want to erase all lights on the map?"); }
        
        case N0:  //back to previous menu
        {
            switch (gMenuBeforeOptions[id])
            {
                case 1: showMainMenu(id);
                case 2: showBlockMenu(id);
                case 3: showTeleportMenu(id);
                case 4: showLightMenu(id);
                case 5: showColorMenu(id);

                //for some reason the players 'gMenuBeforeOptions' number is invalid
                default: log_amx("%sPlayer ID: %d has an invalid gMenuBeforeOptions: %d", gszPrefix, id, gMenuBeforeOptions[id]);
            }
        }
    }
    
    //these selections show a different menu
    if (num != N5 && num != N6 && num != N8 && num != N9 && num != N0)
    {
        //display menu again
        showOptionsMenu(id, gMenuBeforeOptions[id]);
    }
}

public handleChoiceMenu(id, num)
{
    switch (num)
    {
        case N1:    //YES
        {
            switch (gChoiceOption[id])
            {
                case CHOICE_LOAD: loadBlocks(id);
                case CHOICE_DEL_BLOCKS: deleteAllBlocks(id, true);
                case CHOICE_DEL_TELEPORTS: deleteAllTeleports(id, true);
                case CHOICE_DEL_LIGHTS: deleteAllLights(id, true);
                
                default:
                {
                    log_amx("%sInvalid choice in handleChoiceMenu()", gszPrefix);
                }
            }
        }
    }
    
    //show options menu again
    showOptionsMenu(id, gMenuBeforeOptions[id]);
__________________
Quote:
Originally Posted by t*stylez View Post
r4ndomz, why is your skull so fugly looking?
i wonder if your head is oddly shaped...
suffer is offline
Kreation
Veteran Member
Join Date: Jan 2010
Location: Illinois
Old 07-21-2010 , 03:54   Re: My blockmaker...
Reply With Quote #4

So do it. If it's your blockmaker you hypocritical shithead.
__________________
Hi.
Kreation is offline
suffer
Member
Join Date: Jan 2010
Old 07-21-2010 , 10:52   Re: My blockmaker...
Reply With Quote #5

Cute.
__________________
Quote:
Originally Posted by t*stylez View Post
r4ndomz, why is your skull so fugly looking?
i wonder if your head is oddly shaped...
suffer is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:16.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode