Raised This Month: $ Target: $400
 0% 

Knives explosives


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
bobby3
Member
Join Date: Apr 2011
Old 05-08-2011 , 09:46   Knives explosives
Reply With Quote #1

Im trying to get the knives to make a explosion just like an HE. When it explodes should take dmg to every1 around it.
Code based on this plugin
PHP Code:
/* AMX Mod X script.
*
*   Throwing Knives (throwing_knives.sma)
*   Copyright (C) 2003-2004  -]ToC[-Bludy / jtp10181
*
*   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 2
*   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, write to the Free Software
*   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
*   In addition, as a special exception, the author gives permission to
*   link the code of this program with the Half-Life Game Engine ("HL
*   Engine") and Modified Game Libraries ("MODs") developed by Valve,
*   L.L.C ("Valve"). You must obey the GNU General Public License in all
*   respects for all of the code used other than the HL Engine and MODs
*   from Valve. If you modify this file, you may extend this exception
*   to your version of the file, but you are not obligated to do so. If
*   you do not wish to do so, delete this exception statement from your
*   version.
*
****************************************************************************
*
*   Version 1.0.2 - Date: 10/09/2004
*
*   Original by -]ToC[-Bludy
*
*   Upgraded to STEAM and ported to AMXx by: jtp10181 <[email protected]>
*   Homepage: http://www.jtpage.net
*
****************************************************************************
*
*   Admin Commands:
*
*     amx_tknives - Toggles Throwing Knives On and Off
*
*   Client Commands:
*
*     throw_knife  - This is the command for everyone to throw knives
*     say /knifehelp  - Brings up knifehelp menu to help players bind keys
*     say /throwingknives - Same as /knifehelp
*
*  CVARs: Paste the following into your amxx.cfg to change defaults.
*  must uncomment cvar lines for them to take effect
*
****************************************************************************
*  CVAR CONFIG BEGIN
****************************************************************************
// ******************  Throwing Knives Setup ******************
//Toggles Throwing Knives on and off (default 0) ( 1 or 0 )
//amx_throwknives 1
//The amount of ammo to be given at roundstart (default 5) ( 1 or higher )
//amx_knifeammo 5
//Force at which knives are thrown (default 1200) ( 200 or higher )
//amx_knifetossforce 1200
//Maximum amount of knives allowed at once (default 10) ( amx_knifeammo or higher )
//amx_maxknifeammo 10
//Damage dealt on a knife hit (default 25) ( 1 or higher )
//amx_knifedmg 25
//Toggles knife dropping on death on and off (default 1) ( 1 or 0 )
//amx_dropknives 1
//Toggles autoswitching to knife when bind is pressed (default 1) ( 1 or 0 )
//amx_knifeautoswitch 1
//Toggles logging kill as "throwing_knife" or "knife" (default 0) (1 = throwing_knife, 0 = knife)
//amx_tknifelog 1
****************************************************************************
*  CVAR CONFIG END
****************************************************************************
*
*  Additional info:
*
* - You must bind a key to throw_knife
* - You can no longer drop your knives on command, only when you die
* - Team Attack system dropped, but it will obey the server friendlyfire cvar
*
*  NEW FEATURES:
*
* - New knife model, more effecient, smaller file size, easier to download
* - New contact system, knife will stick to whatever they hit
* - New code which is less CPU intensive, less bugs, server crashing seems to be eliminated.
*
*  DESCRIPTION:
*
*     It was brought to my attention a few days ago that with the update to the 
*     AMX forums the file attached to the bottom of the forum topic had only an 
*     .amx file and no custom model.  This gave me the motivation to create a new 
*     model that was smaller and faster to download, and a brand new knife system 
*     to make the knives more realistic.  It took a few server crashes to get the 
*     code right, but it payed off in the end.  A few of my clan members and I 
*     played throwing knife darts on one of the 
*     players sprays to celebrate.
*             
*     The knives work a lot better than before, and they are a lot of fun to 
*     play with. So get your knives out and go Have Fun
*
*                 ******** Engine Module REQUIRED ********
*                   ******** FUN Module REQUIRED ********
*
*  Changelog:
*
*  v1.0.2 - JTP10181 - 10/09/04
* - Support for AMXModX 0.20
*
*  v1.0.1 - JTP10181 - 08/11/04
* - Some tweaks to make it work better on listenservers, changed engclient_cmd to client_cmd
*
*  v1.0 - JTP10181 - 07/05/04
* - Removed some unneeded return statements
* - Made it so the knives cannot be used before the round has started (freezetime)
* - Added some extra checks on variables to be safe
* - Redid the delay code so it did not use a task
* - Changed authid arrays to be 34 usable chars for future compatibility
*
*  v0.9.8 - JTP10181 - 06/08/04
* - Tweaked the help messages a little for the commands
* - Removed all \ line breaks, not supported anymore.
* - Somewhere I added the auto-switch feature but forgot to log it.
*
*  v0.9.7 - JTP10181 - 05/19/04
* - Upgraded MOTD box to STEAM compatibility
* - Fixed bugs that happened when amx_knifeammo is greater than amx_maxknifeammo
* - Made checks to keep amx_knifeammo from being set higher than amx_maxknifeammo
* - Started to reorganize code to make it easier to follow
* - Changed a lot of PLUGIN_HANDLED to PLUGIN_CONTINUE
* - Fixed bug with partial pickups not subtracting the correct ammount from the dropped ammo
* - Hopefully fixed bug that would sometimes kill all the knife entities in the middle of a round
* - Added logging to server logs for stats software
* - Fixed bugs with scores being updated wrong
*
*  Below v0.9.6 was maintained by -]ToC[-Bludy
*
**************************************************************************/
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>
new bool:knifeout[33]
new 
bool:roundfreeze
new Float:tossdelay[33]
new 
knifeammo[33]
new 
holdammo[33]
new 
fire
public player_death() {
 new 
id read_data(2)
 
knife_drop(id)
}
public 
HandleSay(id) {
 new 
Speech[192]
 
read_args(Speech,192)
 
remove_quotes(Speech)
 if(!
equal(Speech"vote",4) && ((containi(Speech"knife") != -1) || (containi(Speech"knives") != -1))) {
  if(
get_cvar_num("amx_throwknives") == 1){
   
client_print(id,print_chat"[AMX] Throwing Knives are ON - For help say /knifehelp")
  }
  else {
   
client_print(id,print_chat"[AMX] Throwing Knives are OFF")
  }
 }
}
public 
knife_drop(id) {
 
 if(!
get_cvar_num("amx_dropknives") || knifeammo[id] <= || !get_cvar_num("amx_throwknives")) return
 new 
FloatOrigin[3], FloatVelocity[3]
 
entity_get_vector(idEV_VEC_originOrigin)
 new 
knifedrop create_entity("info_target")
 if(!
knifedrop) return
 
entity_set_string(knifedropEV_SZ_classname"knife_pickup")
 
entity_set_model(knifedrop"models/w_knifepack.mdl")
 new 
Float:MinBox[3] = {-1.0, -1.0, -1.0}
 new 
Float:MaxBox[3] = {1.01.01.0}
 
entity_set_vector(knifedropEV_VEC_minsMinBox)
 
entity_set_vector(knifedropEV_VEC_maxsMaxBox)
 
entity_set_origin(knifedropOrigin)
 
entity_set_int(knifedropEV_INT_effects32)
 
entity_set_int(knifedropEV_INT_solid1)
 
entity_set_int(knifedropEV_INT_movetype6)
 
entity_set_edict(knifedropEV_ENT_ownerid)
 
VelocityByAim(id400 Velocity)
 
entity_set_vector(knifedropEV_VEC_velocity ,Velocity)
 
holdammo[id] = knifeammo[id]
 
knifeammo[id] = 0
}
public 
check_knife(id) {
 if(!
get_cvar_num("amx_throwknives")) return
 new 
weapon read_data(2)
 if(
weapon == CSW_KNIFE) {
  
knifeout[id] = true
  
/*if(knifeammo[id] > 1) {
   client_print(id, print_center,"You have %d knives",knifeammo[id])
  }
  else if(knifeammo[id] == 1) {
   client_print(id, print_center,"You have %d knife",knifeammo[id])
  }*/
  
client_print(idprint_center,"You have %d throwing %s",knifeammo[id], knifeammo[id] == "knife" "knives")
 }
 else {
  
knifeout[id] = false
 
}
}
public 
kill_all_entity(classname[]) {
 new 
iEnt find_ent_by_class(-1classname)
 new 
tEnt
 
while(iEnt 0) {
  
tEnt iEnt
  iEnt 
find_ent_by_class(iEntclassname)
  
remove_entity(tEnt)
 }
}
public 
new_spawn(id) {
 if(
knifeammo[id] < get_cvar_num("amx_knifeammo")) knifeammo[id] = get_cvar_num("amx_knifeammo")
 if(
knifeammo[id] > get_cvar_num("amx_maxknifeammo")) knifeammo[id] = get_cvar_num("amx_maxknifeammo")
 
tossdelay[id] = 0.0
}
public 
client_connect(id) {
 
knifeammo[id] = get_cvar_num("amx_knifeammo")
 
holdammo[id] = 0
 tossdelay
[id] = 0.0
 knifeout
[id] = false
}
public 
client_disconnect(id) {
 
knifeammo[id] = 0
 holdammo
[id] = 0
 tossdelay
[id] = 0.0
 knifeout
[id] = false
}
public 
round_start() {
 
roundfreeze false
}
public 
round_end() {
 
roundfreeze true
 kill_all_entity
("throwing_knife")
 
kill_all_entity("knife_pickup")
}
public 
vexd_pfntouch(pToucherpTouched) {
 if ( !
is_valid_ent(pToucher) ) return
 if (!
get_cvar_num("amx_throwknives")) return
 new 
Classname[32]
 
entity_get_string(pToucherEV_SZ_classnameClassname31)
 new 
owner entity_get_edict(pToucherEV_ENT_owner)
 new 
Float:kOrigin[3]
 
entity_get_vector(pToucherEV_VEC_originkOrigin)
 if(
equal(Classname,"knife_pickup")) {
  if ( !
is_valid_ent(pTouched) ) return
 
  
check_cvars()
  new 
Class2[32]     
  
entity_get_string(pTouchedEV_SZ_classnameClass231)
  if(!
equal(Class2,"player") || knifeammo[pTouched] >= get_cvar_num("amx_maxknifeammo")) return
  if((
knifeammo[pTouched] + holdammo[owner]) > get_cvar_num("amx_maxknifeammo")) {
   
holdammo[owner] -= get_cvar_num("amx_maxknifeammo") - knifeammo[pTouched]
   
knifeammo[pTouched] = get_cvar_num("amx_maxknifeammo")
   
emit_sound(pToucherCHAN_ITEM"weapons/knife_deploy1.wav"1.0ATTN_NORM0PITCH_NORM)
  }
  else {
   
knifeammo[pTouched] += holdammo[owner]
   
emit_sound(pToucherCHAN_ITEM"weapons/knife_deploy1.wav"1.0ATTN_NORM0PITCH_NORM)
   
remove_entity(pToucher)
  }
  
client_print(pTouchedprint_center,"You have %i knives",knifeammo[pTouched])
 }
 else if(
equal(Classname,"throwing_knife")) {
  
check_cvars()
  if(
is_user_alive(pTouched)) {
   new 
movetype entity_get_int(pToucherEV_INT_movetype)
   if(
movetype == && knifeammo[pTouched] < get_cvar_num("amx_maxknifeammo")) {
    if(
knifeammo[pTouched] < get_cvar_num("amx_maxknifeammo")) knifeammo[pTouched] += 1
    client_print
(pTouched,print_center,"You have %i knives",knifeammo[pTouched])
    
emit_sound(pToucherCHAN_ITEM"weapons/knife_deploy1.wav"1.0ATTN_NORM0PITCH_NORM)
    
remove_entity(pToucher)
   }
   else if (
movetype != 0) {
    if(
owner == pTouched) return
    
remove_entity(pToucher)
    if(
get_cvar_num("mp_friendlyfire") == && get_user_team(pTouched) == get_user_team(owner)) return
                                                    new  
iVec3[3]
    new 
pTdead[33]
    
get_user_origin(pToucheriVec33)
    
entity_set_float(pTouchedEV_FL_dmg_takeget_cvar_num("amx_knifedmg") * 1.0)
    if((
get_user_health(pTouched) - get_cvar_num("amx_knifedmg")) <= 0) {
     
pTdead[pTouched] = 1
    
}
    else {
     
set_user_health(pTouchedget_user_health(pTouched) - get_cvar_num("amx_knifedmg"))
    }
    if(
get_user_team(pTouched) == get_user_team(owner)) {
     new 
name[33]
     
get_user_name(owner,name,32)
     
client_print(0,print_chat,"%s attacked a teammate",name)
    }
    
emit_sound(pTouchedCHAN_ITEM"weapons/knife_hit4.wav"1.0ATTN_NORM0PITCH_NORM)
                                                     
create_explosion(iVec3)
    if(
pTdead[pTouched]) {
     if(
get_user_team(pTouched) == get_user_team(owner)) {
      
set_user_frags(ownerget_user_frags(owner) - 1)
      
client_print(owner,print_center,"You killed a teammate")
     }
     else {
      
set_user_frags(ownerget_user_frags(owner) + 1)
     }
     new 
gmsgScoreInfo get_user_msgid("ScoreInfo")
     new 
gmsgDeathMsg get_user_msgid("DeathMsg")
     
//Kill the victim and block the messages
     
set_msg_block(gmsgDeathMsg,BLOCK_ONCE)
     
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
     
user_kill(pTouched,1)
     
//Update killers scorboard with new info
     
message_begin(MSG_ALL,gmsgScoreInfo)
     
write_byte(owner)
     
write_short(get_user_frags(owner))
     
write_short(get_user_deaths(owner))
     
write_short(0)
     
write_short(get_user_team(owner))
     
message_end()
     
//Update victims scoreboard with correct info
     
message_begin(MSG_ALL,gmsgScoreInfo)
     
write_byte(pTouched)
     
write_short(get_user_frags(pTouched))
     
write_short(get_user_deaths(pTouched))
     
write_short(0)
     
write_short(get_user_team(pTouched))
     
message_end()
     
//Replaced HUD death message
     
message_begin(MSG_ALL,gmsgDeathMsg,{0,0,0},0)
     
write_byte(owner)
     
write_byte(pTouched)
     
write_byte(0)
     
write_string("knife")
     
message_end()
     new 
tknifelog[16]
     if (
get_cvar_num("amx_tknifelog")) tknifelog "throwing_knife"
     
else tknifelog "knife"
     
new namea[32], authida[35], teama[32]
     new 
namev[32], authidv[35], teamv[32]
     
get_user_name(owner,namea,31)
     
get_user_authid(owner,authida,34)
     
get_user_team(owner,teama,31)
     
get_user_name(pTouched,namev,31)
     
get_user_authid(pTouched,authidv,34)
     
get_user_team(pTouched,teamv,31)
     
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
     
namea,get_user_userid(owner),authida,teama,namev,get_user_userid(pTouched),authidv,teamv,tknifelog)
    }
   }
  }
  else {
   
entity_set_int(pToucherEV_INT_movetype0)
   
emit_sound(pToucherCHAN_ITEM"weapons/knife_hitwall1.wav"1.0ATTN_NORM0PITCH_NORM)
  }
 }
}
create_explosion(Origin[3])
{
 
message_begin(MSG_ALLSVC_TEMPENTITY
 
write_byte(3)
 
write_coord(Origin[0]) 
 
write_coord(Origin[1]) 
 
write_coord(Origin[2] + 22
 
write_short(fire)  
 
write_byte(10)   
 
write_byte(12)   
 
write_byte(0)   
 
message_end()
 
 
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
 
write_byte(116)
 
write_coord(Origin[0]) 
 
write_coord(Origin[1]) 
 
write_coord(Origin[2]) 
 
write_byte(47)
 
message_end()
}
public 
command_knife(id) {
 if(!
is_user_alive(id) || !get_cvar_num("amx_throwknives") || roundfreeze) return PLUGIN_HANDLED
 
if(get_cvar_num("amx_knifeautoswitch")) {
  
knifeout[id] = true
  
//engclient_cmd(id,"weapon_knife")
  
client_cmd(id,"weapon_knife")
 }
 if(!
knifeammo[id]) client_print(id,print_center,"You are out of knives",knifeammo[id])
 if(!
knifeout[id] || !knifeammo[id]) return PLUGIN_HANDLED
 
if(tossdelay[id] > get_gametime() - 0.5) return PLUGIN_HANDLED
 
else tossdelay[id] = get_gametime()
 
knifeammo[id]--
 if (
knifeammo[id] == 1) {
  
client_print(id,print_center,"You have %i knife",knifeammo[id])
 }
 else {
  
client_print(id,print_center,"You have %i knives",knifeammo[id])
 }
 new 
FloatOrigin[3], FloatVelocity[3], FloatvAngle[3], Ent
 entity_get_vector
(idEV_VEC_origin Origin)
 
entity_get_vector(idEV_VEC_v_anglevAngle)
 
Ent create_entity("info_target")
 if (!
Ent) return PLUGIN_HANDLED
 entity_set_string
(EntEV_SZ_classname"throwing_knife")
 
entity_set_model(Ent"models/w_throwingknife.mdl")
 new 
Float:MinBox[3] = {-1.0, -7.0, -1.0}
 new 
Float:MaxBox[3] = {1.07.01.0}
 
entity_set_vector(EntEV_VEC_minsMinBox)
 
entity_set_vector(EntEV_VEC_maxsMaxBox)
 
vAngle[0] -= 90
 entity_set_origin
(EntOrigin)
 
entity_set_vector(EntEV_VEC_anglesvAngle)
 
entity_set_int(EntEV_INT_effects2)
 
entity_set_int(EntEV_INT_solid1)
 
entity_set_int(EntEV_INT_movetype6)
 
entity_set_edict(EntEV_ENT_ownerid)
 
VelocityByAim(idget_cvar_num("amx_knifetossforce") , Velocity)
 
entity_set_vector(EntEV_VEC_velocity ,Velocity)
 
 return 
PLUGIN_HANDLED
}
public 
admin_tknife(id,level,cid){
 
 if (!
cmd_access(id,level,cid,1))
  return 
PLUGIN_HANDLED
 
new authid[35],name[32]
 
get_user_authid(id,authid,34)
 
get_user_name(id,name,31)
 if(
get_cvar_num("amx_throwknives") == 0){
  
set_cvar_num("amx_throwknives",1)
  
client_print(0,print_chat,"[AMXX] Admin has enabled throwing knives")
  
console_print(id,"[AMXX] You have enabled throwing knives")
  
log_amx("Admin: ^"%s<%d><%s><>^" enabled throwing knives",name,get_user_userid(id),authid)
 }
 else {
  
set_cvar_num("amx_throwknives",0)
  
client_print(0,print_chat,"[AMXX] Admin has disabled throwing knives")
  
console_print(id,"[AMXX] You have disabled throwing knives")
  
log_amx("Admin: ^"%s<%d><%s><>^" disabled throwing knives",name,get_user_userid(id),authid)
 }
 return 
PLUGIN_HANDLED
}
 
/************************************************************
* MOTD Popups
************************************************************/
public knife_help(id)
{
 new 
len 1024
 
new buffer[1025]
 new 
0
#if !defined NO_STEAM
 
+= copy(buffer[n],len-n,"<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><body><pre>")
#endif
 
+= copybuffer[n],len-n,"To use your knives have to bind a key to:^n^n throw_knife^n^n")
 
+= copybuffer[n],len-n,"In order to bind a key you must open your console and use the bind command: ^n^n")
 
+= copybuffer[n],len-n,"bind ^"key^" ^"command^" ^n^n")
 
+= copybuffer[n],len-n,"In this case the command is ^"throw_knife^".  Here are some examples:^n^n")
 
+= copybuffer[n],len-n,"    bind f throw_knife         bind MOUSE3 throw_knife^n^n")
 
+= copybuffer[n],len-n,"- If a knife is thrown, you may pick it up when it stops moving ^n")
 
+= copybuffer[n],len-n,"- Knives are FF sensitive, you can hurt your teammates if FF is on^n")
 
+= copybuffer[n],len-n,"- Your knife ammo will show in the center of your screen^n")
 
+= copybuffer[n],len-n,"- You will get credit for knife kills on the scoreboard^n^n")
 
+= copybuffer[n],len-n,"Start your knifing and Have fun!")
#if !defined NO_STEAM
 
+= copybuffer[n],len-n,"</pre></body></html>")
#endif
 
show_motd(id,buffer ,"Throwing Knife Help:")
 return 
PLUGIN_CONTINUE
}
/************************************************************
* CORE PLUGIN FUNCTIONS
************************************************************/
public plugin_init()
{
 
register_plugin("Throwing Knives","1.0.2","-]ToC[-Bludy/JTP10181")
 
register_event("ResetHUD","new_spawn","b")
 
register_event("CurWeapon","check_knife","b","1=1")
 
register_event("DeathMsg""player_death""a")
 
register_logevent("round_start"2"1=Round_Start"
 
register_logevent("round_end"2"1=Round_End")
 
//register_clcmd("j_knife","command_knife",0,"- throws a knife if the plugin is enabled")
 
register_clcmd("throw_knife","command_knife",0,"- throws a knife if the plugin is enabled")
 
register_concmd("amx_tknives","admin_tknife",ADMIN_LEVEL_A,"- toggles throwing knives on/off")
 
register_clcmd("say /knifehelp","knife_help")
 
register_clcmd("say /throwingknives","knife_help")
 
register_clcmd("say","HandleSay")
 
register_cvar("amx_throwknives","1",FCVAR_SERVER)
 
register_cvar("amx_knifeammo","5")
 
register_cvar("amx_knifetossforce","1200")
 
register_cvar("amx_maxknifeammo","10")
 
register_cvar("amx_knifedmg","25")
 
register_cvar("amx_dropknives","1")
 
register_cvar("amx_knifeautoswitch","1")
 
register_cvar("amx_tknifelog","0")
 
check_cvars()
}
public 
plugin_precache()
{
 
 
fire precache_model("sprites/c4.spr")
 
precache_sound("weapons/knife_hitwall1.wav")
 
precache_sound("weapons/knife_hit4.wav")
 
precache_sound("weapons/knife_deploy1.wav")
 
precache_model("models/w_knifepack.mdl")
 
precache_model("models/w_throwingknife.mdl")
}
public 
check_cvars() {
 if (
get_cvar_num("amx_knifeammo") > get_cvar_num("amx_maxknifeammo")) {
  
server_print("[AMXX] amx_knifeammo can not be greater than amx_maxknifeammo, adjusting amx_maxknifeammo")
  
set_cvar_num("amx_maxknifeammo",get_cvar_num("amx_knifeammo"))
 }
 if (
get_cvar_num("amx_knifedmg") < ) {
  
server_print("[AMXX] amx_knifedmg can not be set lower than 1, setting cvar to 1 now.")
  
set_cvar_num("amx_knifedmg",0)
 }
 if (
get_cvar_num("amx_knifetossforce") < 200 ) {
  
server_print("[AMXX] amx_knifetossforce can not be set lower than 200, setting cvar to 200 now.")
  
set_cvar_num("amx_knifetossforce",200)
 }
}
public 
plugin_modules() {
 
require_module("fun")
 
require_module("engine")

Plz help im justa beginner!! =O
bobby3 is offline
 



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

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

Forum Jump


All times are GMT -4. The time now is 04:18.


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