plugins knife con niveles
#1
Hola chicos, saben de algún plugin knife que tenga niveles como por ejemplo cada 5 kills pasa al otro cuchillo automáticamente, que no tenga guardado que dure solo esa partida. que no tenga exp solo que cuente las kills por ejemplo, mato a 5 player, y paso al otro cuchillo, y así sucesivamente.

y gracias que me han ayudado bastante chic@s Corazón
Responder
#2
(11/03/2018, 10:41 AM)C3rtw escribió: Hola chicos, saben de algún plugin knife que tenga niveles como por ejemplo cada 5 kills pasa al otro cuchillo automaticamente, pero que la exp o niveles no se guarde solo dure esa partida, y que sea modificable en el ambito de agregar mas knife.

y gracias que me han ayudado bastante chic@s Corazón

https://forums.alliedmods.net/showthread.php?t=287475
Steam
Responder
#3
gracias, pero no es eso lo que busco, edite la petición ya que me explique mal. Gracias por tu respuesta igual Corazón
Responder
#4
No lo probé pero si me compiló. Pruébalo tú y me avisas

Código PHP:
/* Sublime AMXX Editor v2.2 */

#include <amxmodx>
#include <hamsandwich>
#include <amxconst>
#include <fakemeta>
// #include <cstrike>
// #include <amxmisc>
// #include <engine>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "Knife levels"
#define VERSION "1.0"
#define AUTHOR  "-Dacs"

#define MAX_KILLS 3 // Kills necesarias para subir de nivel.
#define DMG_KNIFE 20 // Daño que se le aumenta al cuchillo por cada nivel.

new kLevel[33], kExp[33]
new 
g_maxplayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
register_logevent("logevent_round_start",2"1=Round_Start")

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")

    
g_maxplayers get_maxplayers()
}

public 
plugin_cfg()    set_task(0.5"logevent_round_start")

public 
client_putinserver(id)    kLevel[id] = kExp[id] = 0

public logevent_round_start()
{
    static 
id
    
for (id 1id <= g_maxplayersid++)    kLevel[id] = kExp[id] = 0
}

public 
fw_PlayerKilled(victimattackershouldgib)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return;

    static 
wpnName[24]
    
get_killer_weapon(attackerpev(victimpev_dmg_inflictor), wpnName23)

    if (
equal(wpnName"knife"))
    {
        if (
kExp[attacker] < MAX_KILLS)
        {
            
kExp[attacker]++
            
ChatColor(attacker"!g+1 KNIFE EXP!y, Exp restante para subir de nivel: [!g%d!y/!g%d!y]"kExp[attacker], MAX_KILLS)
        }
        else 
        {
            
kLevel[attacker]++
            
ChatColor(attacker"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[attacker])
        }
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return 
HAM_IGNORED;

    if (
get_user_weapon(attacker) == CSW_KNIFE)
        
SetHamParamFloat(4damage + (kLevel[attacker]*DMG_KNIFE))

    return 
HAM_SUPERCEDE;
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4"); // Green Color
    
replace_all(msg190"!y""^1"); // Default Color
    
replace_all(msg190"!team""^3"); // Team Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}

stock get_killer_weapon(killerinflictorretVar[], retLen)
{
    static 
killer_weapon_name[32];
    
killer_weapon_name "world";

    if (
pev_valid(killer) && (pev(killerpev_flags) & FL_CLIENT))
    {
        if (
pev_valid(inflictor))
        {
            if (
inflictor == killer)
            {
                new 
weapon get_user_weapon(killer);
                
get_weaponname(weaponkiller_weapon_name31);
            }
            else 
pev(inflictorpev_classnamekiller_weapon_name31);
        }
    }
    else
    {
        if (
pev_valid(killer)) pev(inflictorpev_classnamekiller_weapon_name31);
        else if (
killer == 0killer_weapon_name "worldspawn";
    }
    
    if (
equal(killer_weapon_name"weapon_"7))
        
format(killer_weapon_name31"%s"killer_weapon_name[7]);
    else if (
equal(killer_weapon_name"monster_"8))
        
format(killer_weapon_name31"%s"killer_weapon_name[8]);
    else if (
equal(killer_weapon_name"func_"5))
        
format(killer_weapon_name31"%s"killer_weapon_name[5]);
    
    
formatex(retVarretLen"%s"killer_weapon_name);

Responder
#5
(11/03/2018, 11:24 AM)Pablo_1998 escribió:
(11/03/2018, 10:41 AM)C3rtw escribió: Hola chicos, saben de algún plugin knife que tenga niveles como por ejemplo cada 5 kills pasa al otro cuchillo automaticamente, pero que la exp o niveles no se guarde solo dure esa partida, y que sea modificable en el ambito de agregar mas knife.

y gracias que me han ayudado bastante chic@s Corazón

https://forums.alliedmods.net/showthread.php?t=287475

No se hacen daño, puse un 35hp y no nos matabamos nunca.
Responder
#6
Cámbiale el takedamage por éste.

Código PHP:
public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return 
HAM_IGNORED;

    if (
get_user_weapon(attacker) == CSW_KNIFE)
        
SetHamParamFloat(4damage + (kLevel[attacker]*DMG_KNIFE))

    return 
HAM_HANDLED;

Responder
#7
ahora si funciona, pero lo demas de exp y todo eso no funciona, y ahi donde pondria las skin y sonidos de los models de los knife
Responder
#8
Prueba ahora y me avisas.

Código PHP:
/* Sublime AMXX Editor v2.2 */

#include <amxmodx>
#include <hamsandwich>
#include <amxconst>
#include <fakemeta>
// #include <cstrike>
// #include <amxmisc>
// #include <engine>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "Knife levels"
#define VERSION "1.0"
#define AUTHOR  "-Dacs"

#define MAX_KILLS 3 // Kills necesarias para subir de nivel.
#define DMG_KNIFE 20 // Daño que se le aumenta al cuchillo por cada nivel.

new const knifedefault[] = "models/v_knife.mdl"
new const knife1[] = "models/v_knife.mdl"
new const knife2[] = "models/v_knife.mdl"
new const knife3[] = "models/v_knife.mdl"
new const knife4[] = "models/v_knife.mdl"

new kLevel[33], kExp[33]
new 
g_maxplayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
register_logevent("logevent_round_start",2"1=Round_Start");

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1);
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Item_Deploy"weapon_knife""fw_Knife"true);

    
g_maxplayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(knifedefault)
    
precache_model(knife1)
    
precache_model(knife2)
    
precache_model(knife3)
    
precache_model(knife4)
}

public 
plugin_cfg()    set_task(0.5"logevent_round_start")

public 
client_putinserver(id)    kLevel[id] = kExp[id] = 0

public logevent_round_start()
{
    static 
id
    
for (id 1id <= g_maxplayersid++)    kLevel[id] = kExp[id] = 0
}

public 
fw_PlayerKilled_Post(victimattackershouldgib)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker))
        return;

    static 
wpnName[24]
    
get_killer_weapon(attackerpev(victimpev_dmg_inflictor), wpnName23)

    if (
is_user_alive(attacker) && is_user_alive(victim))
    {
        if (
equal(wpnName"knife"))
        {
            if (
kExp[attacker] < MAX_KILLS)
            {
                
kExp[attacker]++
                
ChatColor(attacker"!g+1 KNIFE EXP!y, Exp restante para subir de nivel: [!g%d!y/!g%d!y]"kExp[attacker], MAX_KILLS)
            }
            else 
            {
                
kLevel[attacker]++
                
ChatColor(attacker"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[attacker])
            }
        }
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return 
HAM_IGNORED;

    if (
get_user_weapon(attacker) == CSW_KNIFE)
        
SetHamParamFloat(4damage + (kLevel[attacker]*DMG_KNIFE))

    return 
HAM_HANDLED;
}

public 
fw_Knife(knife)
{
    new 
idid get_pdata_cbase(knife414)

    for (new 
i<= g_maxplayersi++)
    {
        if (
kLevel[i] <= 0)
            
set_pev(idpev_viewmodel2knifedefault)
        else if (
kLevel[i] == 1)
            
set_pev(idpev_viewmodel2knife1)
        else if (
kLevel[i] == 2)
            
set_pev(idpev_viewmodel2knife2)
        else if (
kLevel[i] == 3)
            
set_pev(idpev_viewmodel2knife3)
        else 
            
set_pev(idpev_viewmodel2knife4)
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4"); // Green Color
    
replace_all(msg190"!y""^1"); // Default Color
    
replace_all(msg190"!team""^3"); // Team Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}

stock get_killer_weapon(killerinflictorretVar[], retLen)
{
    static 
killer_weapon_name[32];
    
killer_weapon_name "world";

    if (
pev_valid(killer) && (pev(killerpev_flags) & FL_CLIENT))
    {
        if (
pev_valid(inflictor))
        {
            if (
inflictor == killer)
            {
                new 
weapon get_user_weapon(killer);
                
get_weaponname(weaponkiller_weapon_name31);
            }
            else 
pev(inflictorpev_classnamekiller_weapon_name31);
        }
    }
    else
    {
        if (
pev_valid(killer)) pev(inflictorpev_classnamekiller_weapon_name31);
        else if (
killer == 0killer_weapon_name "worldspawn";
    }
    
    if (
equal(killer_weapon_name"weapon_"7))
        
format(killer_weapon_name31"%s"killer_weapon_name[7]);
    else if (
equal(killer_weapon_name"monster_"8))
        
format(killer_weapon_name31"%s"killer_weapon_name[8]);
    else if (
equal(killer_weapon_name"func_"5))
        
format(killer_weapon_name31"%s"killer_weapon_name[5]);
    
    
formatex(retVarretLen"%s"killer_weapon_name);

Responder
#9
(11/03/2018, 05:13 PM)Dacs. escribió: Prueba ahora y me avisas.

Código PHP:
/* Sublime AMXX Editor v2.2 */

#include <amxmodx>
#include <hamsandwich>
#include <amxconst>
#include <fakemeta>
// #include <cstrike>
// #include <amxmisc>
// #include <engine>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "Knife levels"
#define VERSION "1.0"
#define AUTHOR  "-Dacs"

#define MAX_KILLS 3 // Kills necesarias para subir de nivel.
#define DMG_KNIFE 20 // Daño que se le aumenta al cuchillo por cada nivel.

new const knifedefault[] = "models/v_knife.mdl"
new const knife1[] = "models/v_knife.mdl"
new const knife2[] = "models/v_knife.mdl"
new const knife3[] = "models/v_knife.mdl"
new const knife4[] = "models/v_knife.mdl"

new kLevel[33], kExp[33]
new 
g_maxplayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
register_logevent("logevent_round_start",2"1=Round_Start");

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1);
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Item_Deploy"weapon_knife""fw_Knife"true);

    
g_maxplayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(knifedefault)
    
precache_model(knife1)
    
precache_model(knife2)
    
precache_model(knife3)
    
precache_model(knife4)
}

public 
plugin_cfg()    set_task(0.5"logevent_round_start")

public 
client_putinserver(id)    kLevel[id] = kExp[id] = 0

public logevent_round_start()
{
    static 
id
    
for (id 1id <= g_maxplayersid++)    kLevel[id] = kExp[id] = 0
}

public 
fw_PlayerKilled_Post(victimattackershouldgib)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker))
        return;

    static 
wpnName[24]
    
get_killer_weapon(attackerpev(victimpev_dmg_inflictor), wpnName23)

    if (
is_user_alive(attacker) && is_user_alive(victim))
    {
        if (
equal(wpnName"knife"))
        {
            if (
kExp[attacker] < MAX_KILLS)
            {
                
kExp[attacker]++
                
ChatColor(attacker"!g+1 KNIFE EXP!y, Exp restante para subir de nivel: [!g%d!y/!g%d!y]"kExp[attacker], MAX_KILLS)
            }
            else 
            {
                
kLevel[attacker]++
                
ChatColor(attacker"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[attacker])
            }
        }
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return 
HAM_IGNORED;

    if (
get_user_weapon(attacker) == CSW_KNIFE)
        
SetHamParamFloat(4damage + (kLevel[attacker]*DMG_KNIFE))

    return 
HAM_HANDLED;
}

public 
fw_Knife(knife)
{
    new 
idid get_pdata_cbase(knife414)

    for (new 
i<= g_maxplayersi++)
    {
        if (
kLevel[i] <= 0)
            
set_pev(idpev_viewmodel2knifedefault)
        else if (
kLevel[i] == 1)
            
set_pev(idpev_viewmodel2knife1)
        else if (
kLevel[i] == 2)
            
set_pev(idpev_viewmodel2knife2)
        else if (
kLevel[i] == 3)
            
set_pev(idpev_viewmodel2knife3)
        else 
            
set_pev(idpev_viewmodel2knife4)
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4"); // Green Color
    
replace_all(msg190"!y""^1"); // Default Color
    
replace_all(msg190"!team""^3"); // Team Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}

stock get_killer_weapon(killerinflictorretVar[], retLen)
{
    static 
killer_weapon_name[32];
    
killer_weapon_name "world";

    if (
pev_valid(killer) && (pev(killerpev_flags) & FL_CLIENT))
    {
        if (
pev_valid(inflictor))
        {
            if (
inflictor == killer)
            {
                new 
weapon get_user_weapon(killer);
                
get_weaponname(weaponkiller_weapon_name31);
            }
            else 
pev(inflictorpev_classnamekiller_weapon_name31);
        }
    }
    else
    {
        if (
pev_valid(killer)) pev(inflictorpev_classnamekiller_weapon_name31);
        else if (
killer == 0killer_weapon_name "worldspawn";
    }
    
    if (
equal(killer_weapon_name"weapon_"7))
        
format(killer_weapon_name31"%s"killer_weapon_name[7]);
    else if (
equal(killer_weapon_name"monster_"8))
        
format(killer_weapon_name31"%s"killer_weapon_name[8]);
    else if (
equal(killer_weapon_name"func_"5))
        
format(killer_weapon_name31"%s"killer_weapon_name[5]);
    
    
formatex(retVarretLen"%s"killer_weapon_name);


no funciona el tema de los niveles y no sale ningún mensaje ni nada
Responder
#10
Código PHP:
/* Sublime AMXX Editor v2.2 */

#include <amxmodx>
#include <hamsandwich>
#include <amxconst>
#include <fakemeta>
// #include <cstrike>
// #include <amxmisc>
// #include <engine>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "Knife levels"
#define VERSION "1.0"
#define AUTHOR  "-Dacs"

#define MAX_KILLS 3 // Kills necesarias para subir de nivel.
#define DMG_KNIFE 20 // Daño que se le aumenta al cuchillo por cada nivel.

new const knifedefault[] = "models/v_knife.mdl"
new const knife1[] = "models/v_knife.mdl"
new const knife2[] = "models/v_knife.mdl"
new const knife3[] = "models/v_knife.mdl"
new const knife4[] = "models/v_knife.mdl"

new kLevel[33], kExp[33]
new 
g_maxplayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
register_logevent("logevent_round_start",2"1=Round_Start");

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1);
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Item_Deploy"weapon_knife""fw_Knife"true);

    
g_maxplayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(knifedefault)
    
precache_model(knife1)
    
precache_model(knife2)
    
precache_model(knife3)
    
precache_model(knife4)
}

public 
plugin_cfg()    set_task(0.5"logevent_round_start")

public 
client_putinserver(id)    kLevel[id] = kExp[id] = 0

public logevent_round_start()
{
    static 
id
    
for (id 1id <= g_maxplayersid++)    kLevel[id] = kExp[id] = 0
}

public 
fw_PlayerKilled_Post(victimattackershouldgib)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker))
        return;

    static 
wpnName[24]
    
get_killer_weapon(attackerpev(victimpev_dmg_inflictor), wpnName23)

    if (
is_user_alive(attacker))
    {
        if (
equal(wpnName"knife"))
        {
            if (
kExp[attacker] < MAX_KILLS)
            {
                
kExp[attacker]++
                
ChatColor(attacker"!g+1 KNIFE EXP!y, Exp restante para subir de nivel: [!g%d!y/!g%d!y]"kExp[attacker], MAX_KILLS)
            }
            else 
            {
                
kLevel[attacker]++
                
ChatColor(attacker"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[attacker])
            }
        }
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return 
HAM_IGNORED;

    if (
get_user_weapon(attacker) == CSW_KNIFE)
        
SetHamParamFloat(4damage + (kLevel[attacker]*DMG_KNIFE))

    return 
HAM_HANDLED;
}

public 
fw_Knife(knife)
{
    new 
idid get_pdata_cbase(knife414)

    for (new 
i<= g_maxplayersi++)
    {
        if (
kLevel[i] <= 0)
            
set_pev(idpev_viewmodel2knifedefault)
        else if (
kLevel[i] == 1)
            
set_pev(idpev_viewmodel2knife1)
        else if (
kLevel[i] == 2)
            
set_pev(idpev_viewmodel2knife2)
        else if (
kLevel[i] == 3)
            
set_pev(idpev_viewmodel2knife3)
        else 
            
set_pev(idpev_viewmodel2knife4)
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4"); // Green Color
    
replace_all(msg190"!y""^1"); // Default Color
    
replace_all(msg190"!team""^3"); // Team Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}

stock get_killer_weapon(killerinflictorretVar[], retLen)
{
    static 
killer_weapon_name[32];
    
killer_weapon_name "world";

    if (
pev_valid(killer) && (pev(killerpev_flags) & FL_CLIENT))
    {
        if (
pev_valid(inflictor))
        {
            if (
inflictor == killer)
            {
                new 
weapon get_user_weapon(killer);
                
get_weaponname(weaponkiller_weapon_name31);
            }
            else 
pev(inflictorpev_classnamekiller_weapon_name31);
        }
    }
    else
    {
        if (
pev_valid(killer)) pev(inflictorpev_classnamekiller_weapon_name31);
        else if (
killer == 0killer_weapon_name "worldspawn";
    }
    
    if (
equal(killer_weapon_name"weapon_"7))
        
format(killer_weapon_name31"%s"killer_weapon_name[7]);
    else if (
equal(killer_weapon_name"monster_"8))
        
format(killer_weapon_name31"%s"killer_weapon_name[8]);
    else if (
equal(killer_weapon_name"func_"5))
        
format(killer_weapon_name31"%s"killer_weapon_name[5]);
    
    
formatex(retVarretLen"%s"killer_weapon_name);


Prueba ahora xd
Responder
#11
marca la primera kill pero no las demás, queda 1/3 y no suma
Responder
#12
Intenta eliminando

Código PHP:
#define MAX_KILLS 3
#define DMG_KNIFE 20 

Modifica esta línea:
Código PHP:
SetHamParamFloat(4damage + (kLevel[attacker]*DMG_KNIFE)) 
--->
Código PHP:
SetHamParamFloat(4damage + (kLevel[attacker]*20)) 
Y esta otra:
Código PHP:
if (kExp[attacker] < MAX_KILLS
--->
Código PHP:
if (kExp[attacker] < 3
Responder
#13
sigue igual no suma las kills :c

suma las kill pero no hace el cambio de nivel ni nada.
por ejemplo si mato a 2 personas en la ronda ahi cuenta 2 de 3, pero si no mato no sale nada
y no guarda las kill ya hechas para la siguiente ronda
Responder
#14
(11/03/2018, 10:41 AM)C3rtw escribió: Hola chicos, saben de algún plugin knife que tenga niveles como por ejemplo cada 5 kills pasa al otro cuchillo automáticamente, que no tenga guardado que dure solo esa partida. que no tenga exp solo que cuente las kills por ejemplo, mato a 5 player, y paso al otro cuchillo, y así sucesivamente.

y gracias que me han ayudado bastante chic@s Corazón

Código PHP:
/* Sublime AMXX Editor v2.2 */

#include <amxmodx>
#include <hamsandwich>
#include <amxconst>
#include <fakemeta>
// #include <cstrike>
// #include <amxmisc>
// #include <engine>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "Knife levels"
#define VERSION "1.0"
#define AUTHOR  "-Dacs"

new const knifedefault[] = "models/v_knife.mdl"
new const knife1[] = "models/v_knife.mdl"
new const knife2[] = "models/v_knife.mdl"
new const knife3[] = "models/v_knife.mdl"
new const knife4[] = "models/v_knife.mdl"

new kLevel[33], kExp[33]
new 
g_maxplayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1);
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Item_Deploy"weapon_knife""fw_Knife"true);

    
g_maxplayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(knifedefault)
    
precache_model(knife1)
    
precache_model(knife2)
    
precache_model(knife3)
    
precache_model(knife4)
}

public 
client_putinserver(id)    kLevel[id] = kExp[id] = 0

public client_disconnect(id)    kLevel[id] = kExp[id] = 0

public fw_PlayerKilled_Post(victimattackershouldgib)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker))
        return;

    static 
wpnName[24]
    
get_killer_weapon(attackerpev(victimpev_dmg_inflictor), wpnName23)

    if (
is_user_alive(attacker))
    {
        if (
equal(wpnName"knife"))
        {
            if (
kExp[attacker] < 3)
            {
                
kExp[attacker]++
                
ChatColor(attacker"!g+1 KNIFE EXP!y, Exp restante para subir de nivel: [!g%d!y/!g3!y]"kExp[attacker])
            }

            
Check_Level(attacker)
        }
    }
}

public 
Check_Level(id)
{
    if (
kExp[id] >= 3)
    {
        
kLevel[id]++
        
kExp[id] = 0
        ChatColor
(attacker"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[attacker])
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return 
HAM_IGNORED;

    if (
get_user_weapon(attacker) == CSW_KNIFE)
        
SetHamParamFloat(4damage + (kLevel[attacker]*20))

    return 
HAM_HANDLED;
}

public 
fw_Knife(knife)
{
    new 
idid get_pdata_cbase(knife414)

    for (new 
i<= g_maxplayersi++)
    {
        if (
kLevel[i] <= 0)
            
set_pev(idpev_viewmodel2knifedefault)
        else if (
kLevel[i] == 1)
            
set_pev(idpev_viewmodel2knife1)
        else if (
kLevel[i] == 2)
            
set_pev(idpev_viewmodel2knife2)
        else if (
kLevel[i] == 3)
            
set_pev(idpev_viewmodel2knife3)
        else 
            
set_pev(idpev_viewmodel2knife4)
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4"); // Green Color
    
replace_all(msg190"!y""^1"); // Default Color
    
replace_all(msg190"!team""^3"); // Team Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}

stock get_killer_weapon(killerinflictorretVar[], retLen)
{
    static 
killer_weapon_name[32];
    
killer_weapon_name "world";

    if (
pev_valid(killer) && (pev(killerpev_flags) & FL_CLIENT))
    {
        if (
pev_valid(inflictor))
        {
            if (
inflictor == killer)
            {
                new 
weapon get_user_weapon(killer);
                
get_weaponname(weaponkiller_weapon_name31);
            }
            else 
pev(inflictorpev_classnamekiller_weapon_name31);
        }
    }
    else
    {
        if (
pev_valid(killer)) pev(inflictorpev_classnamekiller_weapon_name31);
        else if (
killer == 0killer_weapon_name "worldspawn";
    }
    
    if (
equal(killer_weapon_name"weapon_"7))
        
format(killer_weapon_name31"%s"killer_weapon_name[7]);
    else if (
equal(killer_weapon_name"monster_"8))
        
format(killer_weapon_name31"%s"killer_weapon_name[8]);
    else if (
equal(killer_weapon_name"func_"5))
        
format(killer_weapon_name31"%s"killer_weapon_name[5]);
    
    
formatex(retVarretLen"%s"killer_weapon_name);

Responder
#15
Warning: Expression has no effect on line 80

tira error muchos errores en esa linea

la partida para mi es durante el mapa actual no mas y que despues se borre.

ejemplo juego en un 35hp el modo, subo niveles y pasa el rato y luego cambio ele mapa a un dd2 y ahi se borra la exp y cuando vuelva a colocar el mapa 35hp tenga que subir todos los niveles de nuevo

no se si se entiende :c
Responder
#16
Código PHP:
ChatColor(attacker"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[attacker]) 
--->
Código PHP:
ChatColor(id"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[id]) 

PD: ¿Qué sentido tendría usarlo para un 35hp si ya de un navajazo los matas?
Responder
#17
Error: Undefined symbol "id" on line 66
Warning: Expression has no effect on line 66
Error: Undefined symbol "id" on line 66
Error: Invalid expression, assumed zero on line 66
Error: Too many error messages on one line on line 66

Compilation aborted.
4 Errors.

salen esos errores.

es que es mas rapido en 35h el tiempo de las partidas
Responder
#18
El error que habías mostrado era en la línea 80 no en la 66. Debiste cambiarlo solo en la 80
Responder
#19
Código PHP:
/* Sublime AMXX Editor v2.2 */

#include <amxmodx>
#include <hamsandwich>
#include <amxconst>
#include <fakemeta>
// #include <cstrike>
// #include <amxmisc>
// #include <engine>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "Knife levels"
#define VERSION "1.0"
#define AUTHOR  "-Dacs"

new const knifedefault[] = "models/v_knife.mdl"
new const knife1[] = "models/bk/v_karambit.mdl"
new const knife2[] = "models/v_knife.mdl"
new const knife3[] = "models/v_knife.mdl"
new const knife4[] = "models/v_knife.mdl"

new kLevel[33], kExp[33]
new 
g_maxplayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1);
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Item_Deploy"weapon_knife""fw_Knife"true);

    
g_maxplayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(knifedefault)
    
precache_model(knife1)
    
precache_model(knife2)
    
precache_model(knife3)
    
precache_model(knife4)
}

public 
client_putinserver(id)    kLevel[id] = kExp[id] = 0

public client_disconnect(id)    kLevel[id] = kExp[id] = 0

public fw_PlayerKilled_Post(victimattackershouldgib)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker))
        return;

    static 
wpnName[24]
    
get_killer_weapon(attackerpev(victimpev_dmg_inflictor), wpnName23)

    if (
is_user_alive(attacker))
    {
        if (
equal(wpnName"knife"))
        {
            if (
kExp[attacker] < 3)
            {
                
kExp[attacker]++
                
ChatColor(attacker"!g+1 KNIFE EXP!y, Exp restante para subir de nivel: [!g%d!y/!g3!y]"kExp[attacker])
            }

            
Check_Level(attacker)
        }
    }
}

public 
Check_Level(id)
{
    if (
kExp[id] >= 3)
    {
        
kLevel[id]++
        
kExp[id] = 0
        ChatColor
(id"!gTu cuchillo ha alcanzado un nuevo nivel. !yNivel Actual: !g%d"kLevel[id]) 
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if (!
is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker))
        return 
HAM_IGNORED;

    if (
get_user_weapon(attacker) == CSW_KNIFE)
        
SetHamParamFloat(4damage + (kLevel[attacker]*20))

    return 
HAM_HANDLED;
}

public 
fw_Knife(knife)
{
    new 
idid get_pdata_cbase(knife414)

    for (new 
i<= g_maxplayers; ++i)
    {
        if (
kLevel[++i] <= 1)
            
set_pev(idpev_viewmodel2knifedefault)
        else if (
kLevel[i] == 1)
            
set_pev(idpev_viewmodel2knife1)
        else if (
kLevel[i] == 2)
            
set_pev(idpev_viewmodel2knife2)
        else if (
kLevel[i] == 3)
            
set_pev(idpev_viewmodel2knife3)
        else 
            
set_pev(idpev_viewmodel2knife4)
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4"); // Green Color
    
replace_all(msg190"!y""^1"); // Default Color
    
replace_all(msg190"!team""^3"); // Team Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0count; ++i)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}

stock get_killer_weapon(killerinflictorretVar[], retLen)
{
    static 
killer_weapon_name[32];
    
killer_weapon_name "world";

    if (
pev_valid(killer) && (pev(killerpev_flags) & FL_CLIENT))
    {
        if (
pev_valid(inflictor))
        {
            if (
inflictor == killer)
            {
                new 
weapon get_user_weapon(killer);
                
get_weaponname(weaponkiller_weapon_name31);
            }
            else 
pev(inflictorpev_classnamekiller_weapon_name31);
        }
    }
    else
    {
        if (
pev_valid(killer)) pev(inflictorpev_classnamekiller_weapon_name31);
        else if (
killer == 0killer_weapon_name "worldspawn";
    }
    
    if (
equal(killer_weapon_name"weapon_"7))
        
format(killer_weapon_name31"%s"killer_weapon_name[7]);
    else if (
equal(killer_weapon_name"monster_"8))
        
format(killer_weapon_name31"%s"killer_weapon_name[8]);
    else if (
equal(killer_weapon_name"func_"5))
        
format(killer_weapon_name31"%s"killer_weapon_name[5]);
    
    
formatex(retVarretLen"%s"killer_weapon_name);


cambie la linea 99 for (new i; i <= g_maxplayers; ++i) y le puse el ++ antes de i

y me comenzo a sumar y tambien subio de nivel pero no cambio el cuchillo y eso que le puse un models de cuchillo
Responder
#20
Código PHP:
public fw_Knife(knife)
{
    new 
idid get_pdata_cbase(knife414);
    
    if( !
is_user_alive(id) || !is_user_connected(id) ) return;
    
    switch(
kLevel[id]){
        case 
1set_pev(idpev_viewmodel2knifedefault);
        case 
2set_pev(idpev_viewmodel2knife2);
        case 
3set_pev(idpev_viewmodel2knife3);
        case 
4set_pev(idpev_viewmodel2knife4);
        default: 
set_pev(idpev_viewmodel2"models/v_knife.mdl");
    }


creo que ahí queda, puedes usar un arreglo y queda mejor.

pd; no me leí el code entero, pueda que tenga muchos fallos.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#21
El model se cambia cuando sacas el cuchillo, para que se cambie debes sacar otra arma y volver a sacar el cuchillo. Si usas mapas donde solo se puede usar cuchillos tendrías que usar un strip_user_weapons y volverle a dar el cuchillo pero eso afectaría en otros mapas porque le quitaría todas las armas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)