but i cant get it work ~-~ fxfighter maybe u could help again here is the sma file in attachment fot v3
Code:
//////////////////////////////////////////////////////////////////////////
// ' . '-. . .~-. . //
// =s (Bs. .zNNNh< 'D- -NN< .=NNNNs' (szNNs. //
// .-. <ND <NNN- =NNNNNND- hNs sNNB.hNNNNNNB hNNNNNB //
//-BNB. sNN .BNNN< BNNNNNNNh'NNB. BNNh+NNNNNNNh <NNNNNNNN //
//DNNN zNN <NNNND .NNN.sNNNB(NNN' (NNNs+NNNNNNh' -NNNNNNNNNN //
//NNNh BNB hNNNNN'.NNB~DNNND=NNN. =NNN~ =hNNND hNNNN<hNNNv //
//NNNN.'NNB 'NNNNNN(.NNNNNNNN+zNNN DNNB .NNNz 'NNNN+ .BNNv //
//NNNN<(NNN -DNN+NNN= BNNNNNNh.hNNN -NNNh 'NNN= +NNND =NNN //
//NNNNDsNNN =NNN'hNNs BNNNNNh. zNNN <NNN= 'NNN( DNNN( =NNN //
//NNNNNNNNB sNNNNNNNs'NNNNB+ sNNB .DNNN~ 'NNN( BNNN< BNNN //
//NNNNNNNNh BNNNNNNN==NNNN- sNNB.-NNNN. 'NNN- sNNN+ +NNN //
//NB=NNNNN+(NNNNDBNN(+NNNNz zNNNzzNNND 'NNN. zNNN+ -BNNN //
//N= BNNNN'zNNs. hNN'-NNNNNs. zNNNNNNNNh 'NNN zNNNz'DNNN //
//N~ +NNNs DNN( BND 'NNNNNND- +NNNNNNNND -NNB =NNNNBNNN+ //
//N. .BNB. BNN. NN< 'NN+BNNNB<.BNNNNNNNN. -NNN -NNNNNNN+ //
//D ~=- NNh sB. .NN'-BNNNNh+BNNhBNNh 'NNh +NNNNB~ //
//. ~z. -( .ND +NNNNN(-. (Ns. +D- (DB+. //
// '' 'sNNNN( ' //
// -hNNN< //
// (BN= //
// .~. //
// .- . --. //
// <zh. 'hN( (szNNs. .NNND( ///////////////
// <NNN< -BNN< hNNNNNB' ~NNNNN( //////////////////////
// <NNNz. DNNN< <NNNNNNND. 'NNNNNN( //////////////////
// .NNNND' +NNNB.-NNNNNNNNN< 'NNBNNNN- //
// .NNNNND<NNNNh hNNNN<hNNND -NNs'zNNB' //
// 'NNBNNNNNNNN='NNNN+ .BNNN. -NNs sNNz //
// ~NNs<NNNNNNN=+NNND =NNN- (NN+ .BNN- //
// <NN+ DNNB=NN=DNNN( =NNN. <NN( =NN< //
// =NN< =ND'=NN+BNNN< BNNh =NN- <NN< //
// zNN~ ~N~ zNN(sNNN+ +NNN< zNN' (NN~ //
// DNN- ( DNN'zNNN+ -BNND BNN =NN. //
// .NNN. NND zNNNz'DNNN~ NNNz'.+NNz //
// BNs BN+ =NNNNBNNN+ =NNNNNNNNN- //
// sN' 'NN. -NNNNNNN+ NNNNNNNNN< //
// <+ N= +NNNNB~ .NNNNNNNh~ //
// . h. (DB+. zDhs(~. //
// //
//////////////////////////////////////////////////////////////////////////
///////NN/////////////////////////////////////////////////////////////////
///////NN //////////////////////////////////////////////////
///////NN ///////////////////////////
// NN //////////////////////
// NN'sBNh- hN~ ~Nh ///////////////
// NNBNNNNB' <Ns sN< ///////////////////////
// NNs- 'hNs .NB BN. //////////////////////////////
// NN -ND zN~ ~Ns ////////////////////////////////////
// NN NN ~Ns =N~ /////////////////////////
// NN .NB BB BD //////////
// NN ~Nh =N+N+ ////////////
// NN~. ~DN< 'NNN' //////////////
// NNNNNNNh hNz ////////////////
// NB+DNB=. <N( //////////////////
////////// zB ////////////////////
////////////////////~N= //////////////////////
////////////////////hN- ////////////////////////////
///////////////////(Nh////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
////////NN/////////NN//////////////NN/////////////////////////////////////
////////NNNNND=. NN NN NN//////////////////////////
////////NNNNNNNz NN NN NN//////////////////////////
////////NN (NN NN NN NN//////////////////////////
////////NN ND NN NN NN NN'sBNh- NN'sBNh-////////////////////
////////NN .+N( NN NN NN NNBNNNNB' NNBNNNNB'///////////////////
////////NNNNNNh' NN NN NN NNs- 'hNs NNs- 'hNs///////////////////
////////NNNNNNNB- NN NN NN NN -ND NN -ND///////////////////
////////NN .sNz NN NN NN NN NN NN NN///////////////////
////////NN .NN NN NN NN///NN .NB NN .NB///////////////////
////////NN .NB NN NN. NN///NN ~Nh NN ~Nh///////////////////
////////NN 'zNz NN DN+ -zNN///NN~. ~DN< NN~. ~DN<///////////////////
////////NNNNNNNB' NN =NNNNBNN///NNNNNNNh NNNNNNNh////////////////////
////////NNNNNBs' NN sBBs'NN///NB+DNB=. NB+DNB=.////////////////////
//////////////////////////////////////////////////////////////////////////
//If u want report bugs or u have Ideas for the Mod post them in the //
//Naruto-Mod Thread in the www.amxmodx.org Forums. Thanks for all bug //
//reports. :) //
//////////////////////////////////////////////////////////////////////////
//History //
//////////////////////////////////////////////////////////////////////////
//Version 2: //
//I changed the model direction, because some of u couldnt use this, I //
//hope its working for all fine now. //
// //
//Version 1: //
//The mod is done. ;) //
//////////////////////////////////////////////////////////////////////////
// Copyright (C) <2008> <[b]lubb> //
//////////////////////////////////////////////////////////////////////////
// This program is free software: you can redistribute it and/or modify//
// it under the terms of the GNU General Public License as published by//
// the Free Software Foundation, either version 3 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>.//
//////////////////////////////////////////////////////////////////////////
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <nvault>
#define PLUGIN "Naruto Mod"
#define VERSION "1.0"
#define AUTHOR "[b]lubb"
#define TASK_INTERVAL 4.0
#define MAX_HEALTH 255
#define MAXCLASSES 10
#define MAXLEVELS 99
#define STANDARDTIMESTEPSOUND 400
new bool:g_silent[33]
new const CLASSES[MAXCLASSES][] = {
"None",
"Sasuke",
"Naruto",
"Sakura",
"Kakashi",
"Haku",
"Gaara",
"Neji",
"Rock Lee",
"Hinata"
}
new knife_model[33]
new g_Menu
new onlyknife = 1
new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE
new const LEVELS[MAXLEVELS] = {
200,
400,
600,
800,
1000,
1250,
1500,
1750,
2000,
2250,
2500,
2750,
3000,
3300,
3600,
3900,
4200,
4500,
5000,
5500,
6000,
7500,
8000,
8500,
9000,
9500,
10000,
10500,
11000,
11500,
12000,
12500,
13000,
13500,
14000,
14500,
15000,
15500,
16000,
16500,
17000,
17500,
18000,
18500,
19000,
19500,
20000,
20500,
21000,
21500,
22000,
22500,
23000,
23500,
24000,
25000,
26000,
27000,
28000,
29000,
30000,
31000,
32000,
33000,
34000,
35000,
36000,
37000,
38000,
39000,
40000,
41000,
42000,
43000,
44000,
45000,
46000,
47000,
48000,
49000,
50000,
51500,
53000,
54500,
56000,
57500,
59000,
60500,
62000,
65000,
68000,
71000,
74000,
77000,
80000,
85000,
90000,
95000,
100000
}
new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new NM_Kill,NM_Knife,NM_Hs,NM_Perfect,SaveXP,g_vault
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "eDeath", "a")
register_event( "Damage", "event_damage", "be" )
register_event("CurWeapon","CurWeapon","be","1=1")
register_event("CurWeapon","knife","b")
g_Menu = register_menuid("Knife Mod")
register_menucmd(g_Menu, 1023, "knifemenu")
register_clcmd("say /changeability", "display_knife")
register_clcmd("say_team /changeability", "display_knife")
register_clcmd("say /ca", "display_knife")
register_clcmd("say_team /ca", "display_knife")
register_clcmd("say /ability", "display_knife")
register_clcmd("say_team /ability", "display_knife")
register_clcmd("say /changeclass", "ChangeClass")
register_clcmd("say_team /changeclass", "ChangeClass")
register_clcmd("say /menu", "ChangeClass")
register_clcmd("say_team /menu", "ChangeClass")
register_clcmd("say /naruto", "ChangeClass")
register_clcmd("say_team /naruto", "ChangeClass")
register_clcmd("say /info", "ShowHud")
register_clcmd("say_team /info", "ShowHud")
register_clcmd("say /level", "ShowHud")
register_clcmd("say_team /level", "ShowHud")
register_clcmd("say /lvl", "ShowHud")
register_clcmd("say_team /lvl", "ShowHud")
register_clcmd("say /lv", "ShowHud")
register_clcmd("say_team /lv", "ShowHud")
SaveXP = register_cvar("SaveXP","1")
NM_Kill=register_cvar("nm_per_kill", "25")
NM_Hs=register_cvar("nm_hs_bonus","25")
NM_Knife=register_cvar("nm_knife_bonus","0")
//NM_Defuse=register_cvar("nm_defuse","25")
NM_Perfect=register_cvar("nm_perfect","50")
//NM_Plant=register_cvar("nm_plant","25")
g_vault = nvault_open("naruto_mod")
CVAR_HIGHSPEED = register_cvar("nm_highspeed","340")
CVAR_LOWSPEED = register_cvar("nm_lowspeed","170")
CVAR_HEALTH_ADD = register_cvar("nm_addhealth", "5")
CVAR_HEALTH_MAX = register_cvar("nm_maxhealth", "75")
CVAR_DAMAGE = register_cvar("nm_damage", "2")
CVAR_LOWGRAV = register_cvar("nm_lowgravity" , "400")
CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")
RegisterHam ( Ham_Touch, "func_buyzone", "Touch_Buyzone" );
set_task(480.0, "kmodmsg", 0, _, _, "b")
}
public eDeath( )
{
new headshot,attacker = read_data( 1 )
new weapon = get_user_weapon(attacker,headshot,headshot)
headshot = read_data( 3 )
new health = get_user_health(attacker)
if(PlayerClass[attacker] == 0)
return PLUGIN_CONTINUE
PlayerXP[attacker] += get_pcvar_num(NM_Kill)
if(headshot)
PlayerXP[attacker] += get_pcvar_num(NM_Hs)
if(health == 100)
PlayerXP[attacker] += get_pcvar_num(NM_Perfect)
if(weapon == CSW_KNIFE)
PlayerXP[attacker] += get_pcvar_num(NM_Knife)
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_print(attacker, print_chat, "[Naruto Mod] Congratulations! You are a level %i %s!",PlayerLevel[attacker],CLASSES[PlayerClass[attacker]])
PlayerLevel[attacker] += 1
}
ShowHud(attacker)
SaveData(attacker)
return PLUGIN_CONTINUE
}
public OnHealth(id)
{
if(PlayerLevel[id] == 90)
{
set_pev(id, pev_health, 255);
}
}
public ShowHud(id)
{
client_print(id, print_chat, "Level: %i",PlayerLevel[id])
client_print(id, print_chat, "Experience: %i",PlayerXP[id])
client_print(id, print_chat, "Ability: %s",CLASSES[PlayerClass[id]])
}
public ChangeClass(id)
{
new menu = menu_create("Naruto Mod - Character Menu" , "Class_Handle")
menu_additem(menu ,"Sasuke", "1" , 0);
menu_additem(menu ,"Naruto", "2" , 0);
menu_additem(menu ,"Sakura", "3" , 0);
menu_additem(menu ,"Kakashi", "4" , 0);
menu_additem(menu ,"Haku", "5" , 0);
menu_additem(menu ,"Gaara", "6" , 0);
menu_additem(menu ,"Neji", "7" , 0);
menu_additem(menu ,"Rock Lee", "8" , 0);
menu_additem(menu ,"Hinata", "9" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
return PLUGIN_CONTINUE;
}
public Class_Handle(id , menu , item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
}
new szCommand[6] , szName[64];
new access , callback;
menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
new i = str_to_num(szCommand)
if(PlayerClass[id] != i)
{
PlayerClass[id] = i
client_print(id,print_chat,"[Naruto Mod] You are now %s",CLASSES[i])
}
else
{
client_print(id,print_chat,"[Naruto Mod] You are already %s",CLASSES[i])
}
menu_destroy(menu);
return PLUGIN_CONTINUE
}
public knife(id){
if(onlyknife==1){
new clip, ammo
new usersweapon = get_user_weapon(id,clip,ammo)
if(usersweapon==CSW_FLASHBANG){
} else if(usersweapon==CSW_KNIFE) {
} else {
client_cmd(id,"drop")
}
}
return PLUGIN_CONTINUE
}
public plugin_precache() {
precache_model("models/naruto-mod/v_kunai.mdl")
}
public display_knife(id) {
new menuBody[512]
add(menuBody, 511, "\rNaruto Mod - Ability Menu\w^n^n")
add(menuBody, 511, "1. \rMore Damage/Low Speed\w^n")
add(menuBody, 511, "2. \rNo Footsteps\w^n")
add(menuBody, 511, "3. \rMore Speed\w^n")
add(menuBody, 511, "4. \rLow Gravity\w^n")
add(menuBody, 511, "5. \rHealth Regeneration\w^n^n")
add(menuBody, 511, "0. Exit^n")
new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
show_menu(id, keys, menuBody, -1, "Knife Mod")
}
public knifemenu(id, key) {
switch(key)
{
case 0: SetKnife(id , 4)
case 1: SetKnife(id , 2)
case 2: SetKnife(id , 3)
case 3: SetKnife(id , 1)
case 4: SetKnife(id , 0)
default: return PLUGIN_HANDLED
}
SaveData(id)
return PLUGIN_HANDLED
}
public SetKnife(id , Knife) {
knife_model[id] = Knife
new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
if ( Weapon != CSW_KNIFE )
return PLUGIN_HANDLED
new vModel[56]
switch(Knife)
{
case 0: {
format(vModel,55,"models/naruto-mod/v_kunai.mdl")
}
case 1: {
format(vModel,55,"models/naruto-mod/v_kunai.mdl")
}
case 2: {
format(vModel,55,"models/naruto-mod/v_kunai.mdl")
}
case 3: {
format(vModel,55,"models/naruto-mod/v_kunai.mdl")
}
case 4: {
format(vModel,55,"models/naruto-mod/v_kunai.mdl")
}
}
set_pev(id, pev_viewmodel, vModel)
return PLUGIN_HANDLED;
}
public event_damage( id ) {
new victim_id = id;
if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
new dmg_take = read_data( 2 );
new dmgtype = read_data( 3 );
new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
new Float:damage = dmg_take * multiplier;
new health = get_user_health( victim_id );
new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID );
if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
return PLUGIN_HANDLED
}
if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 ) {
if( floatround(damage) >= health ) {
if( victim_id == attacker_id ) {
return PLUGIN_CONTINUE
}else{
log_kill( attacker_id, victim_id, "knife", 0 );
}
return PLUGIN_CONTINUE
}else {
if( victim_id == attacker_id ) return PLUGIN_CONTINUE
fm_fakedamage( victim_id, "weapon_knife", damage, dmgtype );
}
}
return PLUGIN_CONTINUE
}
public CurWeapon(id)
{
new Weapon = read_data(2)
SetKnife(id, knife_model[id])
if(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
else if(task_exists(id))
remove_task(id)
fm_set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
set_pev(id, pev_gravity, Gravity)
new Float:Speed
if(Weapon != CSW_KNIFE || knife_model[id] < 3)
return PLUGIN_CONTINUE
else if(knife_model[id] == 3)
Speed = get_pcvar_float(CVAR_HIGHSPEED)
else if(knife_model[id] == 4)
Speed = get_pcvar_float(CVAR_LOWSPEED)
set_pev(id, pev_maxspeed, Speed)
return PLUGIN_HANDLED
}
stock log_kill(killer, victim, weapon[],headshot) {
user_silentkill( victim );
message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
write_byte( killer );
write_byte( victim );
write_byte( headshot );
write_string( weapon );
message_end();
new kfrags = get_user_frags(killer);
set_pev(killer, pev_frags, kfrags++);
new vfrags = get_user_frags(victim);
set_pev(victim, pev_frags, vfrags++ );
return PLUGIN_CONTINUE
}
public task_healing(id) {
new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)
if (!addhealth)
return
new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)
if (maxhealth > MAX_HEALTH) {
set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH)
maxhealth = MAX_HEALTH
}
new health = get_user_health(id)
if (is_user_alive(id) && (health < maxhealth)) {
set_pev(id, pev_health,health + addhealth)
set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
show_hudmessage(id,"<< !!HEAL IN PROGRESS!! >>")
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(200)
write_byte(0)
write_byte(75)
message_end()
}
else {
if (is_user_alive(id) && (health > maxhealth))
remove_task(id)
}
}
public client_disconnect(id) {
if(task_exists(id)) remove_task(id)
if(get_pcvar_num(SaveXP) == 1)
{
SaveData(id)
}
PlayerXP[id] = 0
PlayerLevel[id] = 0
PlayerClass[id] = 0
}
public kmodmsg() {
client_print(0,print_chat,"[Naruto Mod] Type /ability to change your ability")
}
public client_authorized(id)
{
LoadData(id)
if(get_pcvar_num(SaveXP) == 1)
{
LoadData(id)
}
}
SaveData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
LoadData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerxp[32], playerlevel[32]
parse(vaultdata, playerxp, 31, playerlevel, 31)
PlayerXP[id] = str_to_num(playerxp)
PlayerLevel[id] = str_to_num(playerlevel)
return PLUGIN_CONTINUE
}
fm_set_user_footsteps(index, set = 1)
{
if (set)
{
set_pev(index, pev_flTimeStepSound, 999)
g_silent[index] = true
}
else
{
set_pev(index, pev_flTimeStepSound, STANDARDTIMESTEPSOUND)
g_silent[index] = false
}
return 1
}