[Tirant 6.5 Урок] Как да добавим random colors

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
Аватар
cstrikekappa
Извън линия
Потребител
Потребител
Мнения: 18
Регистриран на: 06 Ное 2016, 03:10
Обратна връзка:

[Tirant 6.5 Урок] Как да добавим random colors

Мнение от cstrikekappa » 08 Ное 2016, 15:10

Ако някой иска да добави Random Colors (с ADMIN FLAG)
Какво е Random Colors? Погледнете този клип: https://www.youtube.com/watch?v=UoQjNqfu16g


Търсиш тези кодове:

Код за потвърждение: Избери целия код

public cmdStopEnt(id)
{
    if (!g_iOwnedEnt[id])
        return PLUGIN_HANDLED;
        
    new ent = g_iOwnedEnt[id]
    
    ExecuteForward(g_fwDropEnt_Pre, g_fwDummyResult, id, ent);
    
    if (BlockLocker(ent))
    {
        switch(g_iLockBlocks)
        {
            case 0:
            {
                set_pev(ent,pev_rendermode,kRenderTransColor)
                set_pev(ent,pev_rendercolor, Float:{ LOCKED_COLOR })
                set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT })
            }
            case 1:
            {
                set_pev(ent,pev_rendermode,kRenderTransColor)
                set_pev(ent,pev_rendercolor, g_fColor[g_iColor[id]])
                set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT })
            }
        }
    }
    else
        set_pev(ent,pev_rendermode,kRenderNormal)    
    
    UnsetEntMover(ent);
    SetLastMover(ent,id);
    g_iOwnedEnt[id] = 0;
    UnmovingEnt(ent);
    
    client_cmd(id, "spk %s", GRAB_STOP);
    
    ExecuteForward(g_fwDropEnt_Post, g_fwDummyResult, id, ent);
    
    return PLUGIN_HANDLED;
}
>

Код за потвърждение: Избери целия код

public cmdStopEnt(id)
{
    if (!g_iOwnedEnt[id])
        return PLUGIN_HANDLED;
        
    new ent = g_iOwnedEnt[id]
    
    ExecuteForward(g_fwDropEnt_Pre, g_fwDummyResult, id, ent);
    
    if (BlockLocker(ent))
    {
        switch(g_iLockBlocks)
        {
            case 0:
            {
                set_pev(ent,pev_rendermode,kRenderTransColor)
                
                new Float:x1 = random_float(1.0, 255.0);
                new Float:y1 = random_float(1.0, 255.0);
                new Float:g1 = random_float(1.0, 255.0);
                
                set_pev(ent,pev_rendercolor, y1, x1, g1)
                set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT })
            }
            case 1:
            {
                set_pev(ent,pev_rendermode,kRenderTransColor)
                set_pev(ent,pev_rendercolor, g_fColor[g_iColor[id]])
                set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT })
            }
        }
    }
    else
        set_pev(ent,pev_rendermode,kRenderNormal)    
    
    UnsetEntMover(ent);
    SetLastMover(ent,id);
    g_iOwnedEnt[id] = 0;
    UnmovingEnt(ent);
    
    client_cmd(id, "spk %s", GRAB_STOP);
    
    ExecuteForward(g_fwDropEnt_Post, g_fwDummyResult, id, ent);
    
    return PLUGIN_HANDLED;
}
Търсиш тези кодове:

Код за потвърждение: Избери целия код

public cmdLockBlock(id)
{
    if (!g_boolCanBuild && g_iLockBlocks)
    {
        client_print(id, print_center, "%L", LANG_SERVER, "FAIL_LOCK");
        return PLUGIN_HANDLED;
    }
    
    if (!access(id, FLAGS_LOCK) || (g_isZombie[id] && !access(id, FLAGS_OVERRIDE)))
        return PLUGIN_HANDLED;
        
    new ent, bodypart
    get_user_aiming (id,ent,bodypart)
    
    new szTarget[7], szClass[10];
    entity_get_string(ent, EV_SZ_targetname, szTarget, 6);
    entity_get_string(ent, EV_SZ_classname, szClass, 9);
    if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent ==  g_iEntBarrier || !equal(szClass, "func_wall") || equal(szTarget,  "ignore"))
        return PLUGIN_HANDLED;
    
    ExecuteForward(g_fwLockEnt_Pre, g_fwDummyResult, id, ent);
    
    switch (g_iLockBlocks)
    {
        case 0:
        {
            if (!BlockLocker(ent) && !IsMovingEnt(ent))
            {
                LockBlock(ent, id);
                set_pev(ent,pev_rendermode,kRenderTransColor)
                set_pev(ent,pev_rendercolor,Float:{LOCKED_COLOR})
                set_pev(ent,pev_renderamt,Float:{LOCKED_RENDERAMT})
                client_cmd(id, "spk %s", LOCK_OBJECT);
            }
            else if (BlockLocker(ent))
            {
                UnlockBlock(ent)
                set_pev(ent,pev_rendermode,kRenderNormal)
                client_cmd(id, "spk %s", LOCK_OBJECT);
            }
        }
        case 1:
        {
            if (!BlockLocker(ent) && !IsMovingEnt(ent))
            {
                if (g_iOwnedEntities[id]<g_iLockMax || !g_iLockMax)
                {
                    LockBlock(ent, id)
                    g_iOwnedEntities[id]++
                    set_pev(ent,pev_rendermode,kRenderTransColor)
                    set_pev(ent,pev_rendercolor,g_fColor[g_iColor[id]])
                    set_pev(ent,pev_renderamt,Float:{LOCKED_RENDERAMT})
                    
                    client_print(id, print_center, "%L [ %d / %d ]",  LANG_SERVER, "BUILD_CLAIM_NEW", g_iOwnedEntities[id], g_iLockMax)
                    client_cmd(id, "spk %s", LOCK_OBJECT);
                }
                else if (g_iOwnedEntities[id]>=g_iLockMax)
                {
                    client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_MAX", g_iLockMax)
                    client_cmd(id, "spk %s", LOCK_FAIL);
                }
            }
            else if (BlockLocker(ent))
            {
                if (BlockLocker(ent) == id || access(id, FLAGS_OVERRIDE))
                {
                    g_iOwnedEntities[BlockLocker(ent)]--
                    set_pev(ent,pev_rendermode,kRenderNormal)
                    
                    client_print(BlockLocker(ent), print_center, "%L [  %d / %d ]", LANG_SERVER, "BUILD_CLAIM_LOST",  g_iOwnedEntities[BlockLocker(ent)], g_iLockMax)
                    
                    UnlockBlock(ent)
                    client_cmd(id, "spk %s", LOCK_OBJECT);
                }
                else
                {
                    client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_FAIL")
                    client_cmd(id, "spk %s", LOCK_FAIL);
                }
            }    
        }
    }
    
    ExecuteForward(g_fwLockEnt_Post, g_fwDummyResult, id, ent);
    
    return PLUGIN_HANDLED
}
>

Код за потвърждение: Избери целия код

public cmdLockBlock(id)
{
    if (!g_boolCanBuild && g_iLockBlocks)
    {
        client_print(id, print_center, "%L", LANG_SERVER, "FAIL_LOCK");
        return PLUGIN_HANDLED;
    }
    
    if (!access(id, FLAGS_LOCK) || (g_isZombie[id] && !access(id, FLAGS_OVERRIDE)))
        return PLUGIN_HANDLED;
        
    new ent, bodypart
    get_user_aiming (id,ent,bodypart)
    
    new szTarget[7], szClass[10];
    entity_get_string(ent, EV_SZ_targetname, szTarget, 6);
    entity_get_string(ent, EV_SZ_classname, szClass, 9);
    if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent ==  g_iEntBarrier || !equal(szClass, "func_wall") || equal(szTarget,  "ignore"))
        return PLUGIN_HANDLED;
    
    ExecuteForward(g_fwLockEnt_Pre, g_fwDummyResult, id, ent);
    
    switch (g_iLockBlocks)
    {
        case 0:
        {
            if (!BlockLocker(ent) && !IsMovingEnt(ent))
            {
                LockBlock(ent, id);
                set_pev(ent,pev_rendermode,kRenderTransColor)
                new Float:x1 = random_float(1.0, 255.0);
                new Float:y1 = random_float(1.0, 255.0);
                new Float:g1 = random_float(1.0, 255.0);
                
                set_pev(ent,pev_rendercolor,x1,y1,g1)
                set_pev(ent,pev_renderamt,Float:{LOCKED_RENDERAMT})
                client_cmd(id, "spk %s", LOCK_OBJECT);
            }
            else if (BlockLocker(ent))
            {
                UnlockBlock(ent)
                set_pev(ent,pev_rendermode,kRenderNormal)
                client_cmd(id, "spk %s", LOCK_OBJECT);
            }
        }
        case 1:
        {
            if (!BlockLocker(ent) && !IsMovingEnt(ent))
            {
                if (g_iOwnedEntities[id]<g_iLockMax || !g_iLockMax)
                {            
                    LockBlock(ent, id)
                    g_iOwnedEntities[id]++
                    set_pev(ent,pev_rendermode,kRenderTransColor)
                    set_pev(ent,pev_rendercolor,g_fColor[g_iColor[id]])
                    set_pev(ent,pev_renderamt,Float:{LOCKED_RENDERAMT})
                    
                    client_print(id, print_center, "%L [ %d / %d ]",  LANG_SERVER, "BUILD_CLAIM_NEW", g_iOwnedEntities[id], g_iLockMax)
                    client_cmd(id, "spk %s", LOCK_OBJECT);
                }
                else if (g_iOwnedEntities[id]>=g_iLockMax )
                {
                    client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_MAX", g_iLockMax)
                    client_cmd(id, "spk %s", LOCK_FAIL);
                }
            }
            else if (BlockLocker(ent))
            {
                if (BlockLocker(ent) == id || access(id, FLAGS_OVERRIDE))
                {
                    g_iOwnedEntities[BlockLocker(ent)]--
                    set_pev(ent,pev_rendermode,kRenderNormal)
                    client_print(BlockLocker(ent), print_center, "%L [  %d / %d ]", LANG_SERVER, "BUILD_CLAIM_LOST",  g_iOwnedEntities[BlockLocker(ent)], g_iLockMax)
                    
                    UnlockBlock(ent)
                    client_cmd(id, "spk %s", LOCK_OBJECT);
                }
                else
                {
                    client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_FAIL")
                    client_cmd(id, "spk %s", LOCK_FAIL);
                }
            }    
        }
    }
    
    ExecuteForward(g_fwLockEnt_Post, g_fwDummyResult, id, ent);
    
    return PLUGIN_HANDLED
}
Търсиш тези кодове:

Код за потвърждение: Избери целия код

public native_lock_block(entity)
{
    if (is_valid_ent(entity) && !is_user_alive(entity) && !BlockLocker(entity))
    {
        LockBlock(entity, 33);
        set_pev(entity,pev_rendermode,kRenderTransColor)
        set_pev(entity,pev_rendercolor,Float:{LOCKED_COLOR})
        set_pev(entity,pev_renderamt,Float:{LOCKED_RENDERAMT})
    }
}
>

Код за потвърждение: Избери целия код

public native_lock_block(entity)
{
    if (is_valid_ent(entity) && !is_user_alive(entity) && !BlockLocker(entity))
    {
        LockBlock(entity, 33);
        set_pev(entity,pev_rendermode,kRenderTransColor)
        new Float:x1 = random_float(1.0, 255.0);
        new Float:y1 = random_float(1.0, 255.0);
        new Float:g1 = random_float(1.0, 255.0);
        set_pev(entity,pev_rendercolor,x1,y1,g1)
        set_pev(entity,pev_renderamt,Float:{LOCKED_RENDERAMT})
    }
}
И сега за Admin Flag

Търсиш тези кодове:

Код за потвърждение: Избери целия код

public fw_PlayerPreThink(id)
{
    if (!is_user_connected(id))
    {
        cmdStopEnt(id)
        return PLUGIN_HANDLED
    }
    
    if (g_isZombie[id])
        set_pev(id, pev_maxspeed, g_fPlayerSpeed[id])
    
    if (!g_iOwnedEnt[id] || !is_valid_ent(g_iOwnedEnt[id]))
        return FMRES_HANDLED
        
    new buttons = pev(id, pev_button)
    if (buttons & IN_ATTACK)
    {
        g_fEntDist[id] += OBJECT_PUSHPULLRATE;
        
        if (g_fEntDist[id] > g_fEntMaxDist)
        {
            g_fEntDist[id] = g_fEntMaxDist
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MAX")
        }
        else
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PUSH")
            
        ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 1);
    }
    else if (buttons & IN_ATTACK2)
    {
        g_fEntDist[id] -= OBJECT_PUSHPULLRATE;
            
        if (g_fEntDist[id] < g_fEntSetDist)
        {
            g_fEntDist[id] = g_fEntSetDist
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MIN")
        }
        else
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PULL")
            
        ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 2);
    }
    
    new iOrigin[3], iLook[3], Float:fOrigin[3], Float:fLook[3], Float:vMoveTo[3], Float:fLength
        
    get_user_origin(id, iOrigin, 1);
    IVecFVec(iOrigin, fOrigin);
    get_user_origin(id, iLook, 3);
    IVecFVec(iLook, fLook);
        
    fLength = get_distance_f(fLook, fOrigin);
    if (fLength == 0.0) fLength = 1.0;

    vMoveTo[0] = (fOrigin[0] + (fLook[0] - fOrigin[0]) * g_fEntDist[id] / fLength) + g_fOffset1[id];
    vMoveTo[1] = (fOrigin[1] + (fLook[1] - fOrigin[1]) * g_fEntDist[id] / fLength) + g_fOffset2[id];
    vMoveTo[2] = (fOrigin[2] + (fLook[2] - fOrigin[2]) * g_fEntDist[id] / fLength) + g_fOffset3[id];
    vMoveTo[2] = float(floatround(vMoveTo[2], floatround_floor));

    entity_set_origin(g_iOwnedEnt[id], vMoveTo);
    
    return FMRES_HANDLED
}
>

Код за потвърждение: Избери целия код

public fw_PlayerPreThink(id)
{
    if (!is_user_connected(id))
    {
        cmdStopEnt(id)
        return PLUGIN_HANDLED
    }
    

    
    if (g_isZombie[id])
        set_pev(id, pev_maxspeed, g_fPlayerSpeed[id])
    
    if (!g_iOwnedEnt[id] || !is_valid_ent(g_iOwnedEnt[id]))
        return FMRES_HANDLED
    if(get_user_flags(id) & ADMIN_LEVEL_B) {    
    new i = random(MAX_COLORS)
    if (g_iColorMode)
    {
                    while (g_iColorOwner[i])
                    {
                        i = random(MAX_COLORS)
                    }
    }

    g_iColor[id] = i
    g_iColorOwner[i] = id

    if (g_iOwnedEnt[id])
    {
                    set_pev(g_iOwnedEnt[id],pev_rendercolor, g_fColor[g_iColor[id]] )
                    set_pev(g_iOwnedEnt[id],pev_renderamt, g_fRenderAmt[g_iColor[id]] )
    }
    }
        
    new buttons = pev(id, pev_button)
    if (buttons & IN_ATTACK)
    {
        g_fEntDist[id] += OBJECT_PUSHPULLRATE;
        
        if (g_fEntDist[id] > g_fEntMaxDist)
        {
            g_fEntDist[id] = g_fEntMaxDist
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MAX")
        }
        else
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PUSH")
            
        ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 1);
    }
    else if (buttons & IN_ATTACK2)
    {
        g_fEntDist[id] -= OBJECT_PUSHPULLRATE;
            
        if (g_fEntDist[id] < g_fEntSetDist)
        {
            g_fEntDist[id] = g_fEntSetDist
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MIN")
        }
        else
            client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PULL")
            
        ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 2);
    }
    
    new iOrigin[3], iLook[3], Float:fOrigin[3], Float:fLook[3], Float:vMoveTo[3], Float:fLength
        
    get_user_origin(id, iOrigin, 1);
    IVecFVec(iOrigin, fOrigin);
    get_user_origin(id, iLook, 3);
    IVecFVec(iLook, fLook);
        
    fLength = get_distance_f(fLook, fOrigin);
    if (fLength == 0.0) fLength = 1.0;

    vMoveTo[0] = (fOrigin[0] + (fLook[0] - fOrigin[0]) * g_fEntDist[id] / fLength) + g_fOffset1[id];
    vMoveTo[1] = (fOrigin[1] + (fLook[1] - fOrigin[1]) * g_fEntDist[id] / fLength) + g_fOffset2[id];
    vMoveTo[2] = (fOrigin[2] + (fLook[2] - fOrigin[2]) * g_fEntDist[id] / fLength) + g_fOffset3[id];
    vMoveTo[2] = float(floatround(vMoveTo[2], floatround_floor));

    entity_set_origin(g_iOwnedEnt[id], vMoveTo);
    
    return FMRES_HANDLED
}
Флаг е: ADMIN_LEVEL_B

  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Полезни кодове/уроци”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта