Raised This Month: $51 Target: $400
 12% 

Brauche Hilfe mit Plugin


  
 
 
Thread Tools Display Modes
Author Message
Torge
Veteran Member
Join Date: Oct 2011
Old 11-23-2011 , 13:31   Brauche Hilfe mit Plugin
#1

Hallo,

Ich hab hier einen kleinen ausschnitt von einem Plugin. Nun zum problem, wie krieg ich jetzt hin dass wenn der player die Bazooka droppt dann zur knife switcht?

PHP Code:
public drop_call(id)
{
    if ( 
has_baz[id] && get_user_weapon(id) == CSW_KNIFE )
    {
        
drop_rpg_temp(id);
        return 
PLUGIN_HANDLED;    //attempt to block can't drop knife message
    
}
    return 
PLUGIN_CONTINUE;

Torge is offline
bibu
Veteran Member
Join Date: Sep 2010
Old 11-23-2011 , 15:42   Re: Brauche Hilfe mit Plugin
#2

Füg mal das nach der Funktion rein:

PHP Code:
engclient_cmd(id"weapon_knife"
__________________
Selling tons of my own private works.
Accepting paid work for clans and communities.
Don't hesitate to contact me.
bibu is offline
Torge
Veteran Member
Join Date: Oct 2011
Old 11-24-2011 , 02:22   Re: Brauche Hilfe mit Plugin
#3

Wo genau? ^^
Torge is offline
One
Veteran Member
Join Date: Oct 2008
Location: Hardstyle-eSports.de
Old 11-24-2011 , 12:06   Re: Brauche Hilfe mit Plugin
#4

nach drop_rpg_temp(id);
__________________
One is offline
Send a message via ICQ to One Send a message via AIM to One Send a message via MSN to One Send a message via Yahoo to One Send a message via Skype™ to One
Torge
Veteran Member
Join Date: Oct 2011
Old 11-24-2011 , 15:31   Re: Brauche Hilfe mit Plugin
#5

Funktioniert nicht
eigentlich sollte der automatisch switchen aber der hält immernoch die bazooka in der hand -.-
Torge is offline
One
Veteran Member
Join Date: Oct 2008
Location: Hardstyle-eSports.de
Old 11-25-2011 , 11:33   Re: Brauche Hilfe mit Plugin
#6

häh? ich dachte das ding soll den bazoooka dropen lassen?! wie kann dein spieler immernoch ne bazoooka inder hand haben?
da hast du 10000% was falsch gemacht. zeig den ganzen code und :
der spieler soll das messer bekommen wenn er bazooka dropt << stimmt?
__________________
One is offline
Send a message via ICQ to One Send a message via AIM to One Send a message via MSN to One Send a message via Yahoo to One Send a message via Skype™ to One
Torge
Veteran Member
Join Date: Oct 2011
Old 11-25-2011 , 12:15   Re: Brauche Hilfe mit Plugin
#7

Ja.
Wenn er gedroppt hatt soll er auto. zur knife switchen ^^

Bazooka Code:

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

static const plugin[] = "[ZP] Extra Item: Bazooka";

static const 
mrocket[] = "models/zm_bazooka_missile.mdl";
static const 
mrpg_w[] = "models/w_zm_bazooka.mdl";
static const 
mrpg_v[] = "models/v_zm_bazooka.mdl";
static const 
mrpg_p[] = "models/p_zm_bazooka.mdl";
static const 
sfire[] = "weapons/rocketfire1.wav";
static const 
sfly[] = "weapons/nuke_fly.wav";
static const 
shit[] = "weapons/mortarhit.wav";
static const 
spickup[] = "items/gunpickup2.wav";

static const 
g_item_name[] = "Bazooka";
const 
g_item_cost 30;
new 
g_itemid;

new 
gmsg_screenshakegmsg_deathgmsg_damagepcvar_delaypcvar_maxdmgpcvar_radiuspcvar_map;
new 
rocketsmokeexplosionbazsmokewhite
new 
bool:has_baz[33], bool:CanShoot[33];
new 
dmgcount[33], pcvar_dmgforpackspcvar_award;

public 
plugin_init()
{
    
register_plugin(plugin"0.6""Random1");
    
    
pcvar_delay register_cvar("zp_baz_delay""10.0");
    
pcvar_maxdmg register_cvar("zp_baz_dmg""500");
    
pcvar_radius register_cvar("zp_baz_radius""750");
    
pcvar_map register_cvar("zp_baz_map""1");
    
pcvar_dmgforpacks get_cvar_pointer("zp_human_damage_reward");
    
pcvar_award register_cvar("zp_baz_awardpacks""1");
    
    if ( 
pcvar_dmgforpacks == ) {
        
set_pcvar_num(pcvar_award0);    //if we couldn't read the dmg cvar from zp then set a stop state on dmg reward
        
log_amx("[%s] error reading zp_human_damage_reward cvar from zombie plague, turning award for damage off"plugin);
    }
    
    
g_itemid zp_register_extra_item(g_item_nameg_item_costZP_TEAM_HUMAN);
    
    
register_concmd("zp_bazooka""give_bazooka"ADMIN_IMMUNITY"<name/@all> gives a bazooka to the spcified target");
    
register_event("CurWeapon","switch_to_knife","be","1=1","2=29");
    
register_event("HLTV""event_HLTV""a""1=0""2=0")    // New Round
    
register_event("DeathMsg""player_die""a")
    
register_clcmd("drop""drop_call");
    
    
//supports 2 methods of firing, attacking while holding knife and a bind
    
register_clcmd("baz_fire""fire_call");
    
register_forward(FM_PlayerPreThink"fw_prethink");
    
    
register_forward(FM_Touch"fw_touch");
        
    
gmsg_screenshake get_user_msgid("ScreenShake");
    
gmsg_death get_user_msgid("DeathMsg");
    
gmsg_damage get_user_msgid("Damage");
}

public 
event_HLTV()
{
    
//remove entities regardless of cvar
    
new rpg_temp engfunc(EngFunc_FindEntityByString, -1"classname""rpg_temp");
    while( 
rpg_temp 0) {
        
engfunc(EngFunc_RemoveEntityrpg_temp);
        
rpg_temp engfunc(EngFunc_FindEntityByString, -1"classname""rpg_temp");
    }
    
    if ( 
get_pcvar_num(pcvar_map) ) return;
    
    for( new 
id 1id <= 32id++ )
        
has_baz[id] = false;
}

public 
player_die() 
{
    
    new 
id read_data(2)
    if(
has_baz[id]) {
        
has_baz[id] = false
    
}
    
    return 
PLUGIN_CONTINUE
}

public 
zp_extra_item_selected(playeritemid)
{
    if (
itemid == g_itemid)
    {
        if ( 
has_baz[player] )
        {
            
zp_set_user_ammo_packsplayerzp_get_user_ammo_packs(player) + g_item_cost );
            
client_print(playerprint_chat"");
        }
        else {
            
has_baz[player] = true;
            
CanShoot[player] = true;
            
client_print(playerprint_chat"[ZP] You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
        }
    }
}

public 
give_bazooka(id,level,cid)
{
    if (!
cmd_access(id,level,cid,1)) {
        
console_print(id,"You have no access to that command");
        return;
    }
    if (
read_argc() > 2) {
        
console_print(id,"Too many arguments supplied.");
        return;
    }
    new 
arg1[32];
    
read_argv(1arg1sizeof(arg1) - 1);
    new 
player cmd_target(idarg110);
    if ( !
player ) {
        if ( 
arg1[0] == '@' ) {
            for ( new 
1<= 32i++ ) {
                if ( 
is_user_connected(i) && !has_baz[i] && !zp_get_user_zombie(i) ) {
                    
has_baz[i] = true;
                    
CanShoot[i] = true;
                    
client_print(iprint_chat"[ZP] You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
                }
            }
        } else {
            
client_print(idprint_chat"No Such Player/Team");
            return;
        }
    } else if ( !
has_baz[player] && !zp_get_user_zombie(player) ) {
        
has_baz[player] = true;
        
CanShoot[player] = true;
        
client_print(playerprint_chat"[ZP] You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
    }
}

public 
zp_user_infected_post(idinfector)
    if ( 
has_baz[id] )
        
drop_rpg_temp(id);

public 
plugin_precache()
{
    
precache_model(mrocket);    

    
precache_model(mrpg_w);
    
precache_model(mrpg_v);
    
precache_model(mrpg_p);

    
precache_sound(sfire);
    
precache_sound(sfly);
    
precache_sound(shit);
    
precache_sound(spickup);
    
    
rocketsmoke precache_model("sprites/smoke.spr");
    
explosion precache_model("sprites/fexplo.spr");
    
bazsmoke  precache_model("sprites/steam1.spr");
    
white precache_model("sprites/white.spr");
}

public 
switch_to_knife(id)
{
    if ( !
is_user_alive(id) ) return;
    
    if ( 
has_baz[id] && CanShoot[id] )
    {
        
set_pev(idpev_viewmodel2mrpg_v);
        
set_pev(idpev_weaponmodel2mrpg_p);
    }
}

public 
fw_prethink(id)
{
    static 
button;
    
button pev(idpev_button);
    if ( 
button IN_ATTACK )
        
fire_call(id);
}
public 
fire_call(id)
{
    if ( !
is_user_alive(id) || !has_baz[id] || !CanShoot[id] ) return;
    
    new 
weapon get_user_weapon(id);
    if ( 
weapon == CSW_KNIFE fire_rocket(id);    
}

fire_rocket(id) {
    if ( !
CanShoot[id] ) return;
    
    
CanShoot[id] = false;
    
set_task(get_pcvar_float(pcvar_delay), "rpg_reload"id);

    new 
Float:StartOrigin[3], Float:Angle[3];
    
pev(idpev_originStartOrigin);
    
pev(idpev_anglesAngle);

    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
    
set_pev(entpev_classname"rpgrocket");
    
engfunc(EngFunc_SetModelentmrocket);
    
set_pev(entpev_mins, {-1.0, -1.0, -1.0});
    
set_pev(entpev_maxs, {1.01.01.0});
    
engfunc(EngFunc_SetOriginentStartOrigin);
    
set_pev(entpev_anglesAngle);


    
set_pev(entpev_solid2);
    
set_pev(entpev_movetype5);
    
set_pev(entpev_ownerid);

    new 
Float:nVelocity[3];
    
velocity_by_aim(id1500nVelocity);
    
set_pev(entpev_velocitynVelocity);

    
emit_sound(entCHAN_WEAPONsfireVOL_NORMATTN_NORM0PITCH_NORM);
    
emit_sound(entCHAN_VOICEsflyVOL_NORMATTN_NORM0PITCH_NORM);

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(22);
    
write_short(ent);
    
write_short(rocketsmoke);
    
write_byte(30);
    
write_byte(3);
    
write_byte(255);
    
write_byte(255);
    
write_byte(255);
    
write_byte(255);
    
message_end();
}
//---------------------------------------------------------------------------------------
public rpg_reload(id)
{
    
CanShoot[id] = true;
    if ( 
get_user_weapon(id) == CSW_KNIFE switch_to_knife(id);    //sets our model
    
{
        
client_print(idprint_center"[ZP] Bazooka reloaded.")
    }
}

//---------------------------------------------------------------------------------------
public fw_touch(enttouched)
{
    if ( !
pev_valid(ent) ) return FMRES_IGNORED;
    static 
entclass[32];
    
pev(entpev_classnameentclass31);
    if ( 
equali(entclass"rpg_temp") )
    {
        static 
touchclass[32];
        
pev(touchedpev_classnametouchclass31);
        if ( !
equali(touchclass"player") ) return FMRES_IGNORED;
        
        if( !
is_user_alive(touched) || zp_get_user_zombie(touched) ) return FMRES_IGNORED;
            
        
emit_sound(touchedCHAN_VOICEspickup1.0ATTN_NORM0PITCH_NORM);
        
has_baz[touched] = true;
        
        
engfunc(EngFunc_RemoveEntityent);
    
        return 
FMRES_HANDLED;
    }
    else if ( 
equali(entclass"rpgrocket") )
    {
        new 
Float:EndOrigin[3];
        
pev(entpev_originEndOrigin);
        new 
NonFloatEndOrigin[3];
        
NonFloatEndOrigin[0] = floatround(EndOrigin[0]);
        
NonFloatEndOrigin[1] = floatround(EndOrigin[1]);
        
NonFloatEndOrigin[2] = floatround(EndOrigin[2]);
    
        
emit_sound(entCHAN_WEAPONshitVOL_NORMATTN_NORM0PITCH_NORM);
        
emit_sound(entCHAN_VOICEshitVOL_NORMATTN_NORM0PITCH_NORM);
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(17);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 128);
        
write_short(explosion);
        
write_byte(60);
        
write_byte(255);
        
message_end();
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(5);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 256);
        
write_short(bazsmoke);
        
write_byte(125);
        
write_byte(5);
        
message_end();
    
        new 
maxdamage get_pcvar_num(pcvar_maxdmg);
        new 
damageradius get_pcvar_num(pcvar_radius);
    
        new 
PlayerPos[3], distancedamage;
        for (new 
1<= 32i++) {
            if ( 
is_user_alive(i)) 
                {    
                    new 
id pev(entpev_owner)
                    if  ((!
zp_get_user_zombie(id)) && (!zp_get_user_nemesis(id))) 
                        if ((!
zp_get_user_zombie(i)) && (!zp_get_user_nemesis(i))) continue;
                        
                    
get_user_origin(iPlayerPos);
        
                    
distance get_distance(PlayerPosNonFloatEndOrigin);
                    if (
distance <= damageradius) {    
                    
message_begin(MSG_ONEgmsg_screenshake, {0,0,0}, i);
                    
write_short(1<<14);
                    
write_short(1<<14);
                    
write_short(1<<14);
                    
message_end();
        
                    
damage maxdamage floatround(floatmul(float(maxdamage), floatdiv(float(distance), float(damageradius))));
                    new 
attacker pev(entpev_owner);
        
                    
baz_damage(iattackerdamage"bazooka");
                }
            }
        }
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(21);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2]);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 320);
        
write_short(white);
        
write_byte(0);
        
write_byte(0);
        
write_byte(16);
        
write_byte(128);
        
write_byte(0);
        
write_byte(255);
        
write_byte(255);
        
write_byte(192);
        
write_byte(128);
        
write_byte(0);
        
message_end();
    
        
engfunc(EngFunc_RemoveEntityent);
        
        return 
FMRES_HANDLED;
    }
    return 
FMRES_IGNORED;
}
//---------------------------------------------------------------------------------------
public drop_call(id)
{
    if ( 
has_baz[id] && get_user_weapon(id) == CSW_KNIFE )
    {
        
drop_rpg_temp(id);
        
engclient_cmd(id"weapon_knife");
        return 
PLUGIN_HANDLED;    //attempt to block can't drop knife message
    
}
    return 
PLUGIN_CONTINUE;
}

drop_rpg_temp(id) {
    new 
Float:fAim[3] , Float:fOrigin[3];
    
velocity_by_aim(id 64 fAim);
    
pev(id pev_origin fOrigin);

    
fOrigin[0] += fAim[0];
    
fOrigin[1] += fAim[1];

    new 
rpg engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));

    
set_pev(rpgpev_classname"rpg_temp");
    
engfunc(EngFunc_SetModelrpgmrpg_w);

    
set_pev(rpgpev_mins, { -16.0, -16.0, -16.0 } );
    
set_pev(rpgpev_maxs, { 16.016.016.0 } );

    
set_pev(rpg pev_solid 1);
    
set_pev(rpg pev_movetype 6);

    
engfunc(EngFunc_SetOriginrpgfOrigin);

    
has_baz[id] = false;
}
//---------------------------------------------------------------------------------------
baz_damage(idattackerdamageweaponDescription[])
{
    if ( 
pev(idpev_takedamage) == DAMAGE_NO ) return;
    if ( 
damage <= ) return;

    new 
userHealth get_user_health(id);
    if (
userHealth damage <= ) {
        
dmgcount[attacker] += userHealth damage;
        
set_msg_block(gmsg_deathBLOCK_SET);
        
ExecuteHamB(Ham_Killedidattacker2);
        
set_msg_block(gmsg_deathBLOCK_NOT);
    
        
        
message_begin(MSG_BROADCASTgmsg_death);
        
write_byte(attacker);
        
write_byte(id);
        
write_byte(0);
        
write_string(weaponDescription);
        
message_end();
        
        
set_pev(attackerpev_fragsfloat(get_user_frags(attacker) + 1));
            
        new 
kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
    
        
get_user_name(attackerkname31);
        
get_user_team(attackerkteam9);
        
get_user_authid(attackerkauthid31);
     
        
get_user_name(idvname31);
        
get_user_team(idvteam9);
        
get_user_authid(idvauthid31);
            
        
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^""
        
knameget_user_userid(attacker), kauthidkteam
         
vnameget_user_userid(id), vauthidvteamweaponDescription);
    }
    else {
        
dmgcount[attacker] += damage;
        new 
origin[3];
        
get_user_origin(idorigin);
        
        
message_begin(MSG_ONE,gmsg_damage,{0,0,0},id);
        
write_byte(21);
        
write_byte(20);
        
write_long(DMG_BLAST);
        
write_coord(origin[0]);
        
write_coord(origin[1]);
        
write_coord(origin[2]);
        
message_end();
        
        
set_pev(idpev_healthpev(idpev_health) - float(damage));
    }
    if ( !
get_pcvar_num(pcvar_award) ) return;
    
    new 
breaker get_pcvar_num(pcvar_dmgforpacks);
    if ( 
dmgcount[attacker] > breaker )
    {
        new 
temp dmgcount[attacker] / breaker
        
if ( temp breaker dmgcount[attacker] ) return; //should never be possible
        
dmgcount[attacker] -= temp breaker;
        
zp_set_user_ammo_packsattackerzp_get_user_ammo_packs(attacker) + temp );
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
EDIT: Wenn der Spieler die Bazooka droppt funktionierts, leider sieht man aber noch den Skin in seiner Hand

Last edited by Torge; 11-25-2011 at 12:37.
Torge is offline
Torge
Veteran Member
Join Date: Oct 2011
Old 12-02-2011 , 14:58   Re: Brauche Hilfe mit Plugin
#8

Bitte um Hilfe
Torge is offline
bibu
Veteran Member
Join Date: Sep 2010
Old 12-02-2011 , 15:06   Re: Brauche Hilfe mit Plugin
#9

Probier das mal:

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

static const plugin[] = "[ZP] Extra Item: Bazooka";

static const 
mrocket[] = "models/zm_bazooka_missile.mdl";
static const 
mrpg_w[] = "models/w_zm_bazooka.mdl";
static const 
mrpg_v[] = "models/v_zm_bazooka.mdl";
static const 
mrpg_p[] = "models/p_zm_bazooka.mdl";
static const 
sfire[] = "weapons/rocketfire1.wav";
static const 
sfly[] = "weapons/nuke_fly.wav";
static const 
shit[] = "weapons/mortarhit.wav";
static const 
spickup[] = "items/gunpickup2.wav";

static const 
g_item_name[] = "Bazooka";
const 
g_item_cost 30;
new 
g_itemid;

new 
gmsg_screenshakegmsg_deathgmsg_damagepcvar_delaypcvar_maxdmgpcvar_radiuspcvar_map;
new 
rocketsmokeexplosionbazsmokewhite
new 
bool:has_baz[33], bool:CanShoot[33];
new 
dmgcount[33], pcvar_dmgforpackspcvar_award;

public 
plugin_init()
{
    
register_plugin(plugin"0.6""Random1");
    
    
pcvar_delay register_cvar("zp_baz_delay""10.0");
    
pcvar_maxdmg register_cvar("zp_baz_dmg""500");
    
pcvar_radius register_cvar("zp_baz_radius""750");
    
pcvar_map register_cvar("zp_baz_map""1");
    
pcvar_dmgforpacks get_cvar_pointer("zp_human_damage_reward");
    
pcvar_award register_cvar("zp_baz_awardpacks""1");
    
    if ( 
pcvar_dmgforpacks == ) {
        
set_pcvar_num(pcvar_award0);    //if we couldn't read the dmg cvar from zp then set a stop state on dmg reward
        
log_amx("[%s] error reading zp_human_damage_reward cvar from zombie plague, turning award for damage off"plugin);
    }
    
    
g_itemid zp_register_extra_item(g_item_nameg_item_costZP_TEAM_HUMAN);
    
    
register_concmd("zp_bazooka""give_bazooka"ADMIN_IMMUNITY"<name/@all> gives a bazooka to the spcified target");
    
register_event("CurWeapon","switch_to_knife","be","1=1","2=29");
    
register_event("HLTV""event_HLTV""a""1=0""2=0")    // New Round
    
register_event("DeathMsg""player_die""a")
    
register_clcmd("drop""drop_call");
    
    
//supports 2 methods of firing, attacking while holding knife and a bind
    
register_clcmd("baz_fire""fire_call");
    
register_forward(FM_PlayerPreThink"fw_prethink");
    
    
register_forward(FM_Touch"fw_touch");
        
    
gmsg_screenshake get_user_msgid("ScreenShake");
    
gmsg_death get_user_msgid("DeathMsg");
    
gmsg_damage get_user_msgid("Damage");
}

public 
event_HLTV()
{
    
//remove entities regardless of cvar
    
new rpg_temp engfunc(EngFunc_FindEntityByString, -1"classname""rpg_temp");
    while( 
rpg_temp 0) {
        
engfunc(EngFunc_RemoveEntityrpg_temp);
        
rpg_temp engfunc(EngFunc_FindEntityByString, -1"classname""rpg_temp");
    }
    
    if ( 
get_pcvar_num(pcvar_map) ) return;
    
    for( new 
id 1id <= 32id++ )
        
has_baz[id] = false;
}

public 
player_die() 
{
    
    new 
id read_data(2)
    if(
has_baz[id]) {
        
has_baz[id] = false
    
}
    
    return 
PLUGIN_CONTINUE
}

public 
zp_extra_item_selected(playeritemid)
{
    if (
itemid == g_itemid)
    {
        if ( 
has_baz[player] )
        {
            
zp_set_user_ammo_packsplayerzp_get_user_ammo_packs(player) + g_item_cost );
            
client_print(playerprint_chat"");
        }
        else {
            
has_baz[player] = true;
            
CanShoot[player] = true;
            
client_print(playerprint_chat"[ZP] You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
        }
    }
}

public 
give_bazooka(id,level,cid)
{
    if (!
cmd_access(id,level,cid,1)) {
        
console_print(id,"You have no access to that command");
        return;
    }
    if (
read_argc() > 2) {
        
console_print(id,"Too many arguments supplied.");
        return;
    }
    new 
arg1[32];
    
read_argv(1arg1sizeof(arg1) - 1);
    new 
player cmd_target(idarg110);
    if ( !
player ) {
        if ( 
arg1[0] == '@' ) {
            for ( new 
1<= 32i++ ) {
                if ( 
is_user_connected(i) && !has_baz[i] && !zp_get_user_zombie(i) ) {
                    
has_baz[i] = true;
                    
CanShoot[i] = true;
                    
client_print(iprint_chat"[ZP] You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
                }
            }
        } else {
            
client_print(idprint_chat"No Such Player/Team");
            return;
        }
    } else if ( !
has_baz[player] && !zp_get_user_zombie(player) ) {
        
has_baz[player] = true;
        
CanShoot[player] = true;
        
client_print(playerprint_chat"[ZP] You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
    }
}

public 
zp_user_infected_post(idinfector)
{
    if ( 
has_baz[id] )
    {
     
drop_rpg_temp(id);
     
has_baz[id] = false;
    }
 }

public 
plugin_precache()
{
    
precache_model(mrocket);    

    
precache_model(mrpg_w);
    
precache_model(mrpg_v);
    
precache_model(mrpg_p);

    
precache_sound(sfire);
    
precache_sound(sfly);
    
precache_sound(shit);
    
precache_sound(spickup);
    
    
rocketsmoke precache_model("sprites/smoke.spr");
    
explosion precache_model("sprites/fexplo.spr");
    
bazsmoke  precache_model("sprites/steam1.spr");
    
white precache_model("sprites/white.spr");
}

public 
switch_to_knife(id)
{
    if ( !
is_user_alive(id) ) return;
    
    if ( 
has_baz[id] && CanShoot[id] )
    {
        
set_pev(idpev_viewmodel2mrpg_v);
        
set_pev(idpev_weaponmodel2mrpg_p);
    }
}

public 
fw_prethink(id)
{
    static 
button;
    
button pev(idpev_button);
    if ( 
button IN_ATTACK )
        
fire_call(id);
}
public 
fire_call(id)
{
    if ( !
is_user_alive(id) || !has_baz[id] || !CanShoot[id] ) return;
    
    new 
weapon get_user_weapon(id);
    if ( 
weapon == CSW_KNIFE fire_rocket(id);    
}

fire_rocket(id) {
    if ( !
CanShoot[id] ) return;
    
    
CanShoot[id] = false;
    
set_task(get_pcvar_float(pcvar_delay), "rpg_reload"id);

    new 
Float:StartOrigin[3], Float:Angle[3];
    
pev(idpev_originStartOrigin);
    
pev(idpev_anglesAngle);

    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
    
set_pev(entpev_classname"rpgrocket");
    
engfunc(EngFunc_SetModelentmrocket);
    
set_pev(entpev_mins, {-1.0, -1.0, -1.0});
    
set_pev(entpev_maxs, {1.01.01.0});
    
engfunc(EngFunc_SetOriginentStartOrigin);
    
set_pev(entpev_anglesAngle);


    
set_pev(entpev_solid2);
    
set_pev(entpev_movetype5);
    
set_pev(entpev_ownerid);

    new 
Float:nVelocity[3];
    
velocity_by_aim(id1500nVelocity);
    
set_pev(entpev_velocitynVelocity);

    
emit_sound(entCHAN_WEAPONsfireVOL_NORMATTN_NORM0PITCH_NORM);
    
emit_sound(entCHAN_VOICEsflyVOL_NORMATTN_NORM0PITCH_NORM);

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(22);
    
write_short(ent);
    
write_short(rocketsmoke);
    
write_byte(30);
    
write_byte(3);
    
write_byte(255);
    
write_byte(255);
    
write_byte(255);
    
write_byte(255);
    
message_end();
}
//---------------------------------------------------------------------------------------
public rpg_reload(id)
{
    
CanShoot[id] = true;
    if ( 
get_user_weapon(id) == CSW_KNIFE switch_to_knife(id);    //sets our model
    
{
        
client_print(idprint_center"[ZP] Bazooka reloaded.")
    }
}

//---------------------------------------------------------------------------------------
public fw_touch(enttouched)
{
    if ( !
pev_valid(ent) ) return FMRES_IGNORED;
    static 
entclass[32];
    
pev(entpev_classnameentclass31);
    if ( 
equali(entclass"rpg_temp") )
    {
        static 
touchclass[32];
        
pev(touchedpev_classnametouchclass31);
        if ( !
equali(touchclass"player") ) return FMRES_IGNORED;
        
        if( !
is_user_alive(touched) || zp_get_user_zombie(touched) ) return FMRES_IGNORED;
            
        
emit_sound(touchedCHAN_VOICEspickup1.0ATTN_NORM0PITCH_NORM);
        
has_baz[touched] = true;
        
        
engfunc(EngFunc_RemoveEntityent);
    
        return 
FMRES_HANDLED;
    }
    else if ( 
equali(entclass"rpgrocket") )
    {
        new 
Float:EndOrigin[3];
        
pev(entpev_originEndOrigin);
        new 
NonFloatEndOrigin[3];
        
NonFloatEndOrigin[0] = floatround(EndOrigin[0]);
        
NonFloatEndOrigin[1] = floatround(EndOrigin[1]);
        
NonFloatEndOrigin[2] = floatround(EndOrigin[2]);
    
        
emit_sound(entCHAN_WEAPONshitVOL_NORMATTN_NORM0PITCH_NORM);
        
emit_sound(entCHAN_VOICEshitVOL_NORMATTN_NORM0PITCH_NORM);
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(17);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 128);
        
write_short(explosion);
        
write_byte(60);
        
write_byte(255);
        
message_end();
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(5);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 256);
        
write_short(bazsmoke);
        
write_byte(125);
        
write_byte(5);
        
message_end();
    
        new 
maxdamage get_pcvar_num(pcvar_maxdmg);
        new 
damageradius get_pcvar_num(pcvar_radius);
    
        new 
PlayerPos[3], distancedamage;
        for (new 
1<= 32i++) {
            if ( 
is_user_alive(i)) 
                {    
                    new 
id pev(entpev_owner)
                    if  ((!
zp_get_user_zombie(id)) && (!zp_get_user_nemesis(id))) 
                        if ((!
zp_get_user_zombie(i)) && (!zp_get_user_nemesis(i))) continue;
                        
                    
get_user_origin(iPlayerPos);
        
                    
distance get_distance(PlayerPosNonFloatEndOrigin);
                    if (
distance <= damageradius) {    
                    
message_begin(MSG_ONEgmsg_screenshake, {0,0,0}, i);
                    
write_short(1<<14);
                    
write_short(1<<14);
                    
write_short(1<<14);
                    
message_end();
        
                    
damage maxdamage floatround(floatmul(float(maxdamage), floatdiv(float(distance), float(damageradius))));
                    new 
attacker pev(entpev_owner);
        
                    
baz_damage(iattackerdamage"bazooka");
                }
            }
        }
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(21);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2]);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 320);
        
write_short(white);
        
write_byte(0);
        
write_byte(0);
        
write_byte(16);
        
write_byte(128);
        
write_byte(0);
        
write_byte(255);
        
write_byte(255);
        
write_byte(192);
        
write_byte(128);
        
write_byte(0);
        
message_end();
    
        
engfunc(EngFunc_RemoveEntityent);
        
        return 
FMRES_HANDLED;
    }
    return 
FMRES_IGNORED;
}
//---------------------------------------------------------------------------------------
public drop_call(id)
{
    if ( 
has_baz[id] && get_user_weapon(id) == CSW_KNIFE )
    {
        
drop_rpg_temp(id);
        
has_baz[id] = false;
        
engclient_cmd(id"weapon_knife");
        return 
PLUGIN_HANDLED;    //attempt to block can't drop knife message
    
}
    return 
PLUGIN_CONTINUE;
}

drop_rpg_temp(id) {
    new 
Float:fAim[3] , Float:fOrigin[3];
    
velocity_by_aim(id 64 fAim);
    
pev(id pev_origin fOrigin);

    
fOrigin[0] += fAim[0];
    
fOrigin[1] += fAim[1];

    new 
rpg engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));

    
set_pev(rpgpev_classname"rpg_temp");
    
engfunc(EngFunc_SetModelrpgmrpg_w);

    
set_pev(rpgpev_mins, { -16.0, -16.0, -16.0 } );
    
set_pev(rpgpev_maxs, { 16.016.016.0 } );

    
set_pev(rpg pev_solid 1);
    
set_pev(rpg pev_movetype 6);

    
engfunc(EngFunc_SetOriginrpgfOrigin);
}
//---------------------------------------------------------------------------------------
baz_damage(idattackerdamageweaponDescription[])
{
    if ( 
pev(idpev_takedamage) == DAMAGE_NO ) return;
    if ( 
damage <= ) return;

    new 
userHealth get_user_health(id);
    if (
userHealth damage <= ) {
        
dmgcount[attacker] += userHealth damage;
        
set_msg_block(gmsg_deathBLOCK_SET);
        
ExecuteHamB(Ham_Killedidattacker2);
        
set_msg_block(gmsg_deathBLOCK_NOT);
    
        
        
message_begin(MSG_BROADCASTgmsg_death);
        
write_byte(attacker);
        
write_byte(id);
        
write_byte(0);
        
write_string(weaponDescription);
        
message_end();
        
        
set_pev(attackerpev_fragsfloat(get_user_frags(attacker) + 1));
            
        new 
kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
    
        
get_user_name(attackerkname31);
        
get_user_team(attackerkteam9);
        
get_user_authid(attackerkauthid31);
     
        
get_user_name(idvname31);
        
get_user_team(idvteam9);
        
get_user_authid(idvauthid31);
            
        
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^""
        
knameget_user_userid(attacker), kauthidkteam
         
vnameget_user_userid(id), vauthidvteamweaponDescription);
    }
    else {
        
dmgcount[attacker] += damage;
        new 
origin[3];
        
get_user_origin(idorigin);
        
        
message_begin(MSG_ONE,gmsg_damage,{0,0,0},id);
        
write_byte(21);
        
write_byte(20);
        
write_long(DMG_BLAST);
        
write_coord(origin[0]);
        
write_coord(origin[1]);
        
write_coord(origin[2]);
        
message_end();
        
        
set_pev(idpev_healthpev(idpev_health) - float(damage));
    }
    if ( !
get_pcvar_num(pcvar_award) ) return;
    
    new 
breaker get_pcvar_num(pcvar_dmgforpacks);
    if ( 
dmgcount[attacker] > breaker )
    {
        new 
temp dmgcount[attacker] / breaker
        
if ( temp breaker dmgcount[attacker] ) return; //should never be possible
        
dmgcount[attacker] -= temp breaker;
        
zp_set_user_ammo_packsattackerzp_get_user_ammo_packs(attacker) + temp );
    }

__________________
Selling tons of my own private works.
Accepting paid work for clans and communities.
Don't hesitate to contact me.
bibu is offline
Torge
Veteran Member
Join Date: Oct 2011
Old 12-03-2011 , 05:50   Re: Brauche Hilfe mit Plugin
#10

Klappt nicht

Last edited by Torge; 12-03-2011 at 05:58.
Torge 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 13:06.


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