Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

[ZP] Class: Assassin Zombie

Статус пользователя Deimos7
сообщение 16.1.2015, 19:35
Сообщение #1
Стаж: 13 лет
Город: Киев

Сообщений: 93
Благодарностей: 5
Полезность: 47

[ZP] Class: Assassin Zombie by Fry!
Плагин на forums.alliedmods.net


Описание:
Эта классификация зомби позволяет игрокам делать выбор между заражением и убийством игрока с помощью правой клавиши мыши (+attack2)

Нужна помощь! Как вы знаете, на Zombie Plague заражение не засчитываются в статистику.
Но так как у этого зомби есть возможность убивать людей, то возникло желания, чтоб эти убийства числились как фраги.
Если это не трудно реализовать, дайте наводку как подправить исходник.

zp_zclass_assassin_zombie.sma
Код
/*
                [ZP] Class : Assassin Zombie
                  (Powerful zombie class)
                       by Fry!
                    
                    
    Description :
    
            This is one of powerful zombies. Cuz now you can chose between infect and kill humans.
            Press +Attack2 to kill people.
                
    Changelog :
    
            28/12/2009 - v1.0 - Public release            
*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Class : Assassin Zombie"
#define VERSION "1.0"
#define AUTHOR "Fry!"

new const zclass_name[] = "Assassin Zombie"
new const zclass_info[] = "HP+++ Speed++ Knockback++"
new const zclass_model[] = "zombie_source"
new const zclass_clawmodel[] = "v_knife_zombie.mdl"
const zclass_health = 2430
const zclass_speed = 220
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.55

new g_msgScoreAttrib
new g_zclass_assassin

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("zp_zclass_assassin_zombie",VERSION,FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
    
    g_msgScoreAttrib = get_user_msgid("ScoreAttrib")
    
    RegisterHam(Ham_TakeDamage, "player", "fw_PlayerTakeDamage")
}

public plugin_precache()
{
    g_zclass_assassin = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public zp_user_infected_post(player, infector)
{
    if (zp_get_user_zombie_class(player) == g_zclass_assassin)
    {
        client_print(player, print_chat, "[ZP] You are now Assassin Zombie")
        client_print(player, print_chat, "[ZP] You can chose between infect and kill people")
    }
}

public zp_user_infect_attempt(victim, infector, nemesis)
{
    if (zp_get_user_zombie_class(infector) == g_zclass_assassin)
    {
        new button = pev(infector, pev_button)
        
        if (button & IN_ATTACK2)
        {
            ExecuteHamB(Ham_Killed, victim, infector, 0)
        }
        else
            return PLUGIN_CONTINUE
        
        return ZP_PLUGIN_HANDLED
    }
    
    return PLUGIN_CONTINUE
}

public fw_PlayerTakeDamage(id, inflictor, attacker, Float:damage, damage_type)
{
    if (!is_user_alive(id) || !is_user_bot(id) || !zp_get_user_zombie(id))
        return HAM_IGNORED
    
    if (zp_get_user_zombie_class(id) != g_zclass_assassin)
        return HAM_IGNORED

    new attacker_name[32]
    new button = pev(attacker, pev_button)
    new GetMaxPlayers = get_maxplayers()
    new GetHumanCount = zp_get_human_count()
    
    get_user_name(attacker, attacker_name, 31)
    
    if (!zp_is_swarm_round() || !zp_is_plague_round() || !zp_is_survivor_round() || !zp_is_nemesis_round() || GetHumanCount == GetMaxPlayers)
    {
        if (button & IN_ATTACK2)
        {    
            if (zp_get_user_zombie_class(attacker) == g_zclass_assassin)
            {
                FixDeadAttrib(id)
                UpdateScoreBoard(id, attacker)
                client_print(id, print_chat, "[ZP] Hmm looks like %s didn't like you and decided to kill You!", attacker_name)
            
                return HAM_SUPERCEDE
            }
        }
    }
        
    return HAM_SUPERCEDE
}
    
public FixDeadAttrib(id)
{
    message_begin(MSG_BROADCAST, g_msgScoreAttrib)
    write_byte(id)
    write_byte(DEAD_DYING)
    message_end()
}

public UpdateScoreBoard(victim, attacker)
{
    new victim_frags = get_user_frags(victim) + 0
    new attacker_frags = get_user_frags(attacker) + 1
    new attacker_money = cs_get_user_money(attacker) + 0
    
    set_pev(victim, pev_frags, float(victim_frags))
    set_pev(attacker, pev_frags, float(attacker_frags))
    cs_set_user_money(attacker, attacker_money, 1)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/

zombieplague.inc
Код
/*===============================================================================
=
    
    ---------------------------------------
    -*- Zombie Plague 4.3 Includes File -*-
    ---------------------------------------
    
    ~~~~~~~~~~
    - How To -
    ~~~~~~~~~~
    
    To make use of the Zombie Plague API features in your plugin, just
    add the following line at the beginning of your script:
    
    #include <zombieplague>
    
    ~~~~~~~~~~~
    - Natives -
    ~~~~~~~~~~~
    
    These work just like any other functions: you may have to pass
    parameters and they usually return values.
    
    Example:
    
    if ( is_user_alive( id ) && zp_get_user_zombie( id ) )
    {
        server_print( "Player %d is alive and a zombie", id )
    }
    
    ~~~~~~~~~~~~
    - Forwards -
    ~~~~~~~~~~~~
    
    Forwards get called whenever an event happens during the game.
    You need to make a public callback somewhere on your script,
    and it will automatically be triggered when the event occurs.
    
    Example:
    
    public zp_user_infected_post( id, infector, nemesis )
    {
        if ( !infector || nemesis )
            return;
        
        server_print( "Player %d just got infected by %d!", id, infector )
    }
    
    Also, take note of cases when there's a suffix:
    
    * _pre  : means the forward will be called BEFORE the event happens
    * _post : means it will be called AFTER the event takes place
    
================================================================================
=*/

#if defined _zombieplague_included
  #endinput
#endif
#define _zombieplague_included

/* Teams for zp_register_extra_item() */
#define ZP_TEAM_ZOMBIE (1<<0)
#define ZP_TEAM_HUMAN (1<<1)
#define ZP_TEAM_NEMESIS (1<<2)
#define ZP_TEAM_SURVIVOR (1<<3)

/* Game modes for zp_round_started() */
enum
{
    MODE_INFECTION = 1,
    MODE_NEMESIS,
    MODE_SURVIVOR,
    MODE_SWARM,
    MODE_MULTI,
    MODE_PLAGUE
}

/* Winner teams for zp_round_ended() */
enum
{
    WIN_NO_ONE = 0,
    WIN_ZOMBIES,
    WIN_HUMANS
}

/* Custom forward return values */
#define ZP_PLUGIN_HANDLED 97

/**
* Returns whether a player is a zombie.
*
* @param id        Player index.
* @return        True if it is, false otherwise.
*/
native zp_get_user_zombie(id)

/**
* Returns whether a player is a nemesis.
*
* @param id        Player index.
* @return        True if it is, false otherwise.
*/
native zp_get_user_nemesis(id)

/**
* Returns whether a player is a survivor.
*
* @param id        Player index.
* @return        True if it is, false otherwise.
*/
native zp_get_user_survivor(id)

/**
* Returns whether a player is the first zombie.
*
* @param id        Player index.
* @return        True if it is, false otherwise.
*/
native zp_get_user_first_zombie(id)

/**
* Returns whether a player is the last zombie.
*
* @param id        Player index.
* @return        True if it is, false otherwise.
*/
native zp_get_user_last_zombie(id)

/**
* Returns whether a player is the last human.
*
* @param id        Player index.
* @return        True if it is, false otherwise.
*/
native zp_get_user_last_human(id)

/**
* Returns a player's current zombie class ID.
*
* @param id        Player index.
* @return        Internal zombie class ID, or -1 if not yet chosen.
*/
native zp_get_user_zombie_class(id)

/**
* Returns a player's next zombie class ID (for the next infection).
*
* @param id        Player index.
* @return        Internal zombie class ID, or -1 if not yet chosen.
*/
native zp_get_user_next_class(id)

/**
* Sets a player's next zombie class ID (for the next infection).
*
* @param id        Player index.
* @param classid    A valid zombie class ID.
* @return        True on success, false otherwise.
*/
native zp_set_user_zombie_class(id, classid)

/**
* Returns a player's ammo pack count.
*
* @param id        Player index.
* @return        Number of ammo packs owned.
*/
native zp_get_user_ammo_packs(id)

/**
* Sets a player's ammo pack count.
*
* @param id        Player index.
* @param amount    New quantity of ammo packs owned.
*/
native zp_set_user_ammo_packs(id, amount)

/**
* Returns the default maximum health of a zombie.
*
* Note: Takes into account first zombie's HP multiplier.
*
* @param id        Player index.
* @return        Maximum amount of health points, or -1 if not a normal zombie.
*/
native zp_get_zombie_maxhealth(id)

/**
* Returns a player's custom flashlight batteries charge.
*
* @param id        Player index.
* @return        Charge percent (0 to 100).
*/
native zp_get_user_batteries(id)

/**
* Sets a player's custom flashlight batteries charge.
*
* @param id        Player index.
* @param value        New charge percent (0 to 100).
*/
native zp_set_user_batteries(id, charge)

/**
* Returns whether a player has night vision.
*
* @param id        Player index.
* @return        True if it has, false otherwise.
*/
native zp_get_user_nightvision(id)

/**
* Sets whether a player has night vision.
*
* @param id        Player index.
* @param set        True to give, false for removing it.
*/
native zp_set_user_nightvision(id, set)

/**
* Forces a player to become a zombie.
*
* Note: Unavailable for last human/survivor.
*
* @param id        Player index to be infected.
* @param infector    Player index who infected him (optional).
* @param silent    If set, there will be no HUD messages or infection sounds.
* @param rewards    Whether to show DeathMsg and reward frags, hp, and ammo packs to infector.
* @return        True on success, false otherwise.
*/
native zp_infect_user(id, infector = 0, silent = 0, rewards = 0)

/**
* Forces a player to become a human.
*
* Note: Unavailable for last zombie/nemesis.
*
* @param id        Player index to be cured.
* @param silent    If set, there will be no HUD messages or antidote sounds.
* @return        True on success, false otherwise.
*/
native zp_disinfect_user(id, silent = 0)

/**
* Forces a player to become a nemesis.
*
* Note: Unavailable for last human/survivor.
*
* @param id        Player index to turn into nemesis.
* @return        True on success, false otherwise.
*/
native zp_make_user_nemesis(id)

/**
* Forces a player to become a survivor.
*
* Note: Unavailable for last zombie/nemesis.
*
* @param id        Player index to turn into survivor.
* @return        True on success, false otherwise.
*/
native zp_make_user_survivor(id)

/**
* Respawns a player into a specific team.
*
* @param id        Player index to be respawned.
* @param team        Team to respawn the player into (ZP_TEAM_ZOMBIE or ZP_TEAM_HUMAN).
* @return        True on success, false otherwise.
*/
native zp_respawn_user(id, team)

/**
* Forces a player to buy an extra item.
*
* @param id        Player index.
* @param itemid    A valid extra item ID.
* @param ignorecost    If set, item's cost won't be deduced from player.
* @return        True on success, false otherwise.
*/
native zp_force_buy_extra_item(id, itemid, ignorecost = 0)

/**
* Returns whether the ZP round has started, i.e. first zombie
* has been chosen or a game mode has begun.
*
* @return        0 - Round not started
*            1 - Round started
*            2 - Round starting
*/
native zp_has_round_started()

/**
* Returns whether the current round is a nemesis round.
*
* @return        True if it is, false otherwise.
*/
native zp_is_nemesis_round()

/**
* Returns whether the current round is a survivor round.
*
* @return        True if it is, false otherwise.
*/
native zp_is_survivor_round()

/**
* Returns whether the current round is a swarm round.
*
* @return        True if it is, false otherwise.
*/
native zp_is_swarm_round()

/**
* Returns whether the current round is a plague round.
*
* @return        True if it is, false otherwise.
*/
native zp_is_plague_round()

/**
* Returns number of alive zombies.
*
* @return        Zombie count.
*/
native zp_get_zombie_count()

/**
* Returns number of alive humans.
*
* @return        Human count.
*/
native zp_get_human_count()

/**
* Returns number of alive nemesis.
*
* @return        Nemesis count.
*/
native zp_get_nemesis_count()

/**
* Returns number of alive survivors.
*
* @return        Survivor count.
*/
native zp_get_survivor_count()

/**
* Registers a custom item which will be added to the extra items menu of ZP.
*
* Note: The returned extra item ID can be later used to catch item
* purchase events for the zp_extra_item_selected() forward.
*
* Note: ZP_TEAM_NEMESIS and ZP_TEAM_SURVIVOR can be used to make
* an item available to Nemesis and Survivors respectively.
*
* @param name        Caption to display on the menu.
* @param cost        Ammo packs to be deducted on purchase.
* @param teams        Bitsum of teams it should be available for.
* @return        An internal extra item ID, or -1 on failure.
*/
native zp_register_extra_item(const name[], cost, teams)

/**
* Registers a custom class which will be added to the zombie classes menu of ZP.
*
* Note: The returned zombie class ID can be later used to identify
* the class when calling the zp_get_user_zombie_class() natives.
*
* @param name        Caption to display on the menu.
* @param info        Brief description of the class.
* @param model        Player model to be used.
* @param clawmodel    Claws model to be used.
* @param hp        Initial health points.
* @param speed        Maximum speed.
* @param gravity    Gravity multiplier.
* @param knockback    Knockback multiplier.
* @return        An internal zombie class ID, or -1 on failure.
*/
native zp_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback)

/**
* Returns an extra item's ID.
*
* @param name        Item name to look for.
* @return        Internal extra item ID, or -1 if not found.
*/
native zp_get_extra_item_id(const name[])

/**
* Returns a zombie class' ID.
*
* @param name        Class name to look for.
* @return        Internal zombie class ID, or -1 if not found.
*/
native zp_get_zombie_class_id(const name[])

/**
* Called when the ZP round starts, i.e. first zombie
* is chosen or a game mode begins.
*
* @param gamemode    Mode which has started.
* @param id        Affected player's index (if applicable).
*/
forward zp_round_started(gamemode, id)

/**
* Called when the round ends.
*
* @param winteam    Team which has won the round.
*/
forward zp_round_ended(winteam)

/**
* Called when a player gets infected.
*
* @param id        Player index who was infected.
* @param infector    Player index who infected him (if applicable).
* @param nemesis    Whether the player was turned into a nemesis.
*/
forward zp_user_infected_pre(id, infector, nemesis)
forward zp_user_infected_post(id, infector, nemesis)

/**
* Called when a player turns back to human.
*
* @param id        Player index who was cured.
* @param survivor    Whether the player was turned into a survivor.
*/
forward zp_user_humanized_pre(id, survivor)
forward zp_user_humanized_post(id, survivor)

/**
* Called on a player infect/cure attempt. You can use this to block
* an infection/humanization by returning ZP_PLUGIN_HANDLED in your plugin.
*
* Note: Right now this is only available after the ZP round starts, since some
* situations (like blocking a first zombie's infection) are not yet handled.
*/
forward zp_user_infect_attempt(id, infector, nemesis)
forward zp_user_humanize_attempt(id, survivor)

/**
* Called when a player buys an extra item from the ZP menu.
*
* Note: You can now return ZP_PLUGIN_HANDLED in your plugin to block
* the purchase and the player will be automatically refunded.
*
* @param id        Player index of purchaser.
* @param itemid    Internal extra item ID.
*/
forward zp_extra_item_selected(id, itemid)

/**
* Called when a player gets unfrozen (frostnades).
*
* @param id        Player index.
*/
forward zp_user_unfrozen(id)

/**
* Called when a player becomes the last zombie.
*
* Note: This is called for the first zombie too.
*
* @param id        Player index.
*/
forward zp_user_last_zombie(id)

/**
* Called when a player becomes the last human.
*
* @param id        Player index.
*/
forward zp_user_last_human(id)


/**
* @deprecated - Do not use!
* For backwards compatibility only.
*/
#define ZP_TEAM_ANY 0

Прикрепленный файл  zp_zclass_assassin_zombie.sma ( 3,6 килобайт ) Кол-во скачиваний: 61



Отредактировал: Deimos7, - 16.1.2015, 19:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: