[ZP] Class: Assassin Zombie |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
[ZP] Class: Assassin Zombie |
Deimos7
|
16.1.2015, 19:35
Сообщение
|
|
|
[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
|
|
|
|
![]() ![]() |