Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
11/03/2018, 10:41 AM
(Última modificación: 11/03/2018, 12:03 PM por C3rtw.)
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
Mensajes: 586
Temas: 15
Registro en: Jul 2017
Reputación:
6
(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
https://forums.alliedmods.net/showthread.php?t=287475
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
gracias, pero no es eso lo que busco, edite la petición ya que me explique mal. Gracias por tu respuesta igual
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
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(PLUGIN, VERSION, AUTHOR)
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 = 1; id <= g_maxplayers; id++) kLevel[id] = kExp[id] = 0 }
public fw_PlayerKilled(victim, attacker, shouldgib) { if (!is_user_connected(victim) || !is_user_connected(attacker) || !is_user_alive(victim) || !is_user_alive(attacker)) return;
static wpnName[24] get_killer_weapon(attacker, pev(victim, pev_dmg_inflictor), wpnName, 23)
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(victim, inflictor, attacker, Float:damage, damage_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(4, damage + (kLevel[attacker]*DMG_KNIFE))
return HAM_SUPERCEDE; }
stock ChatColor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!team", "^3"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } }
stock get_killer_weapon(killer, inflictor, retVar[], retLen) { static killer_weapon_name[32]; killer_weapon_name = "world";
if (pev_valid(killer) && (pev(killer, pev_flags) & FL_CLIENT)) { if (pev_valid(inflictor)) { if (inflictor == killer) { new weapon = get_user_weapon(killer); get_weaponname(weapon, killer_weapon_name, 31); } else pev(inflictor, pev_classname, killer_weapon_name, 31); } } else { if (pev_valid(killer)) pev(inflictor, pev_classname, killer_weapon_name, 31); else if (killer == 0) killer_weapon_name = "worldspawn"; } if (equal(killer_weapon_name, "weapon_", 7)) format(killer_weapon_name, 31, "%s", killer_weapon_name[7]); else if (equal(killer_weapon_name, "monster_", 8)) format(killer_weapon_name, 31, "%s", killer_weapon_name[8]); else if (equal(killer_weapon_name, "func_", 5)) format(killer_weapon_name, 31, "%s", killer_weapon_name[5]); formatex(retVar, retLen, "%s", killer_weapon_name); }
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
(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
https://forums.alliedmods.net/showthread.php?t=287475
No se hacen daño, puse un 35hp y no nos matabamos nunca.
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
Cámbiale el takedamage por éste.
Código PHP: public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_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(4, damage + (kLevel[attacker]*DMG_KNIFE))
return HAM_HANDLED; }
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
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
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
11/03/2018, 05:13 PM
(Última modificación: 11/03/2018, 05:15 PM por Dacs..)
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(PLUGIN, VERSION, AUTHOR)
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 = 1; id <= g_maxplayers; id++) kLevel[id] = kExp[id] = 0 }
public fw_PlayerKilled_Post(victim, attacker, shouldgib) { if (!is_user_connected(victim) || !is_user_connected(attacker)) return;
static wpnName[24] get_killer_weapon(attacker, pev(victim, pev_dmg_inflictor), wpnName, 23)
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(victim, inflictor, attacker, Float:damage, damage_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(4, damage + (kLevel[attacker]*DMG_KNIFE))
return HAM_HANDLED; }
public fw_Knife(knife) { new id; id = get_pdata_cbase(knife, 41, 4)
for (new i; i <= g_maxplayers; i++) { if (kLevel[i] <= 0) set_pev(id, pev_viewmodel2, knifedefault) else if (kLevel[i] == 1) set_pev(id, pev_viewmodel2, knife1) else if (kLevel[i] == 2) set_pev(id, pev_viewmodel2, knife2) else if (kLevel[i] == 3) set_pev(id, pev_viewmodel2, knife3) else set_pev(id, pev_viewmodel2, knife4) } }
stock ChatColor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!team", "^3"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } }
stock get_killer_weapon(killer, inflictor, retVar[], retLen) { static killer_weapon_name[32]; killer_weapon_name = "world";
if (pev_valid(killer) && (pev(killer, pev_flags) & FL_CLIENT)) { if (pev_valid(inflictor)) { if (inflictor == killer) { new weapon = get_user_weapon(killer); get_weaponname(weapon, killer_weapon_name, 31); } else pev(inflictor, pev_classname, killer_weapon_name, 31); } } else { if (pev_valid(killer)) pev(inflictor, pev_classname, killer_weapon_name, 31); else if (killer == 0) killer_weapon_name = "worldspawn"; } if (equal(killer_weapon_name, "weapon_", 7)) format(killer_weapon_name, 31, "%s", killer_weapon_name[7]); else if (equal(killer_weapon_name, "monster_", 8)) format(killer_weapon_name, 31, "%s", killer_weapon_name[8]); else if (equal(killer_weapon_name, "func_", 5)) format(killer_weapon_name, 31, "%s", killer_weapon_name[5]); formatex(retVar, retLen, "%s", killer_weapon_name); }
Mensajes: 41
Temas: 21
Registro en: Mar 2018
Reputación:
0
(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(PLUGIN, VERSION, AUTHOR)
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 = 1; id <= g_maxplayers; id++) kLevel[id] = kExp[id] = 0 }
public fw_PlayerKilled_Post(victim, attacker, shouldgib) { if (!is_user_connected(victim) || !is_user_connected(attacker)) return;
static wpnName[24] get_killer_weapon(attacker, pev(victim, pev_dmg_inflictor), wpnName, 23)
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(victim, inflictor, attacker, Float:damage, damage_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(4, damage + (kLevel[attacker]*DMG_KNIFE))
return HAM_HANDLED; }
public fw_Knife(knife) { new id; id = get_pdata_cbase(knife, 41, 4)
for (new i; i <= g_maxplayers; i++) { if (kLevel[i] <= 0) set_pev(id, pev_viewmodel2, knifedefault) else if (kLevel[i] == 1) set_pev(id, pev_viewmodel2, knife1) else if (kLevel[i] == 2) set_pev(id, pev_viewmodel2, knife2) else if (kLevel[i] == 3) set_pev(id, pev_viewmodel2, knife3) else set_pev(id, pev_viewmodel2, knife4) } }
stock ChatColor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!team", "^3"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } }
stock get_killer_weapon(killer, inflictor, retVar[], retLen) { static killer_weapon_name[32]; killer_weapon_name = "world";
if (pev_valid(killer) && (pev(killer, pev_flags) & FL_CLIENT)) { if (pev_valid(inflictor)) { if (inflictor == killer) { new weapon = get_user_weapon(killer); get_weaponname(weapon, killer_weapon_name, 31); } else pev(inflictor, pev_classname, killer_weapon_name, 31); } } else { if (pev_valid(killer)) pev(inflictor, pev_classname, killer_weapon_name, 31); else if (killer == 0) killer_weapon_name = "worldspawn"; } if (equal(killer_weapon_name, "weapon_", 7)) format(killer_weapon_name, 31, "%s", killer_weapon_name[7]); else if (equal(killer_weapon_name, "monster_", 8)) format(killer_weapon_name, 31, "%s", killer_weapon_name[8]); else if (equal(killer_weapon_name, "func_", 5)) format(killer_weapon_name, 31, "%s", killer_weapon_name[5]); formatex(retVar, retLen, "%s", killer_weapon_name); }
no funciona el tema de los niveles y no sale ningún mensaje ni nada
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
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(PLUGIN, VERSION, AUTHOR)
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 = 1; id <= g_maxplayers; id++) kLevel[id] = kExp[id] = 0 }
public fw_PlayerKilled_Post(victim, attacker, shouldgib) { if (!is_user_connected(victim) || !is_user_connected(attacker)) return;
static wpnName[24] get_killer_weapon(attacker, pev(victim, pev_dmg_inflictor), wpnName, 23)
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(victim, inflictor, attacker, Float:damage, damage_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(4, damage + (kLevel[attacker]*DMG_KNIFE))
return HAM_HANDLED; }
public fw_Knife(knife) { new id; id = get_pdata_cbase(knife, 41, 4)
for (new i; i <= g_maxplayers; i++) { if (kLevel[i] <= 0) set_pev(id, pev_viewmodel2, knifedefault) else if (kLevel[i] == 1) set_pev(id, pev_viewmodel2, knife1) else if (kLevel[i] == 2) set_pev(id, pev_viewmodel2, knife2) else if (kLevel[i] == 3) set_pev(id, pev_viewmodel2, knife3) else set_pev(id, pev_viewmodel2, knife4) } }
stock ChatColor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!team", "^3"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } }
stock get_killer_weapon(killer, inflictor, retVar[], retLen) { static killer_weapon_name[32]; killer_weapon_name = "world";
if (pev_valid(killer) && (pev(killer, pev_flags) & FL_CLIENT)) { if (pev_valid(inflictor)) { if (inflictor == killer) { new weapon = get_user_weapon(killer); get_weaponname(weapon, killer_weapon_name, 31); } else pev(inflictor, pev_classname, killer_weapon_name, 31); } } else { if (pev_valid(killer)) pev(inflictor, pev_classname, killer_weapon_name, 31); else if (killer == 0) killer_weapon_name = "worldspawn"; } if (equal(killer_weapon_name, "weapon_", 7)) format(killer_weapon_name, 31, "%s", killer_weapon_name[7]); else if (equal(killer_weapon_name, "monster_", 8)) format(killer_weapon_name, 31, "%s", killer_weapon_name[8]); else if (equal(killer_weapon_name, "func_", 5)) format(killer_weapon_name, 31, "%s", killer_weapon_name[5]); formatex(retVar, retLen, "%s", killer_weapon_name); }
Prueba ahora xd
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
marca la primera kill pero no las demás, queda 1/3 y no suma
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
Intenta eliminando
Código PHP: #define MAX_KILLS 3 #define DMG_KNIFE 20
Modifica esta línea:
Código PHP: SetHamParamFloat(4, damage + (kLevel[attacker]*DMG_KNIFE))
--->
Código PHP: SetHamParamFloat(4, damage + (kLevel[attacker]*20))
Y esta otra:
Código PHP: if (kExp[attacker] < MAX_KILLS)
--->
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
12/03/2018, 08:39 AM
(Última modificación: 12/03/2018, 10:17 AM por C3rtw.)
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
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
12/03/2018, 12:12 PM
(Última modificación: 12/03/2018, 12:13 PM por Dacs..)
(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
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(PLUGIN, VERSION, AUTHOR)
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(victim, attacker, shouldgib) { if (!is_user_connected(victim) || !is_user_connected(attacker)) return;
static wpnName[24] get_killer_weapon(attacker, pev(victim, pev_dmg_inflictor), wpnName, 23)
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(victim, inflictor, attacker, Float:damage, damage_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(4, damage + (kLevel[attacker]*20))
return HAM_HANDLED; }
public fw_Knife(knife) { new id; id = get_pdata_cbase(knife, 41, 4)
for (new i; i <= g_maxplayers; i++) { if (kLevel[i] <= 0) set_pev(id, pev_viewmodel2, knifedefault) else if (kLevel[i] == 1) set_pev(id, pev_viewmodel2, knife1) else if (kLevel[i] == 2) set_pev(id, pev_viewmodel2, knife2) else if (kLevel[i] == 3) set_pev(id, pev_viewmodel2, knife3) else set_pev(id, pev_viewmodel2, knife4) } }
stock ChatColor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!team", "^3"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } }
stock get_killer_weapon(killer, inflictor, retVar[], retLen) { static killer_weapon_name[32]; killer_weapon_name = "world";
if (pev_valid(killer) && (pev(killer, pev_flags) & FL_CLIENT)) { if (pev_valid(inflictor)) { if (inflictor == killer) { new weapon = get_user_weapon(killer); get_weaponname(weapon, killer_weapon_name, 31); } else pev(inflictor, pev_classname, killer_weapon_name, 31); } } else { if (pev_valid(killer)) pev(inflictor, pev_classname, killer_weapon_name, 31); else if (killer == 0) killer_weapon_name = "worldspawn"; } if (equal(killer_weapon_name, "weapon_", 7)) format(killer_weapon_name, 31, "%s", killer_weapon_name[7]); else if (equal(killer_weapon_name, "monster_", 8)) format(killer_weapon_name, 31, "%s", killer_weapon_name[8]); else if (equal(killer_weapon_name, "func_", 5)) format(killer_weapon_name, 31, "%s", killer_weapon_name[5]); formatex(retVar, retLen, "%s", killer_weapon_name); }
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
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
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
12/03/2018, 03:36 PM
(Última modificación: 12/03/2018, 03:42 PM por Dacs..)
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?
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
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
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
El error que habías mostrado era en la línea 80 no en la 66. Debiste cambiarlo solo en la 80
Mensajes: 21
Temas: 4
Registro en: Feb 2018
Reputación:
0
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(PLUGIN, VERSION, AUTHOR)
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(victim, attacker, shouldgib) { if (!is_user_connected(victim) || !is_user_connected(attacker)) return;
static wpnName[24] get_killer_weapon(attacker, pev(victim, pev_dmg_inflictor), wpnName, 23)
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(victim, inflictor, attacker, Float:damage, damage_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(4, damage + (kLevel[attacker]*20))
return HAM_HANDLED; }
public fw_Knife(knife) { new id; id = get_pdata_cbase(knife, 41, 4)
for (new i; i <= g_maxplayers; ++i) { if (kLevel[++i] <= 1) set_pev(id, pev_viewmodel2, knifedefault) else if (kLevel[i] == 1) set_pev(id, pev_viewmodel2, knife1) else if (kLevel[i] == 2) set_pev(id, pev_viewmodel2, knife2) else if (kLevel[i] == 3) set_pev(id, pev_viewmodel2, knife3) else set_pev(id, pev_viewmodel2, knife4) } }
stock ChatColor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!team", "^3"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; ++i) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } }
stock get_killer_weapon(killer, inflictor, retVar[], retLen) { static killer_weapon_name[32]; killer_weapon_name = "world";
if (pev_valid(killer) && (pev(killer, pev_flags) & FL_CLIENT)) { if (pev_valid(inflictor)) { if (inflictor == killer) { new weapon = get_user_weapon(killer); get_weaponname(weapon, killer_weapon_name, 31); } else pev(inflictor, pev_classname, killer_weapon_name, 31); } } else { if (pev_valid(killer)) pev(inflictor, pev_classname, killer_weapon_name, 31); else if (killer == 0) killer_weapon_name = "worldspawn"; } if (equal(killer_weapon_name, "weapon_", 7)) format(killer_weapon_name, 31, "%s", killer_weapon_name[7]); else if (equal(killer_weapon_name, "monster_", 8)) format(killer_weapon_name, 31, "%s", killer_weapon_name[8]); else if (equal(killer_weapon_name, "func_", 5)) format(killer_weapon_name, 31, "%s", killer_weapon_name[5]); formatex(retVar, retLen, "%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
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
13/03/2018, 02:10 PM
(Última modificación: 13/03/2018, 02:12 PM por Hinami.)
Código PHP: public fw_Knife(knife) { new id; id = get_pdata_cbase(knife, 41, 4); if( !is_user_alive(id) || !is_user_connected(id) ) return; switch(kLevel[id]){ case 1: set_pev(id, pev_viewmodel2, knifedefault); case 2: set_pev(id, pev_viewmodel2, knife2); case 3: set_pev(id, pev_viewmodel2, knife3); case 4: set_pev(id, pev_viewmodel2, knife4); default: set_pev(id, pev_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.
Mensajes: 17
Temas: 0
Registro en: Mar 2017
Reputación:
0
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.
|