Teleport Zombie and Robot zombie (Z-Noid)
- DarkZombie
- Member
- Posts: 76
- Joined: 5 years ago
- Contact:
Teleport Zombie and Robot zombie (Z-Noid)
Hello, These zombie types come from "CSO" mode. it would be necessary to convert it to Escape Mode.
If any file is missing then write it!
Images and information about zombie types: http://cso.wikia.com/wiki/Z-Noid
If any file is missing then write it!
Images and information about zombie types: http://cso.wikia.com/wiki/Z-Noid
- Attachments
-
- sprites.rar
- (549.98 KiB) Downloaded 419 times
- sprites.rar
- (549.98 KiB) Downloaded 419 times
-
- zp_class_cso_lilith.sma
- (31.1 KiB) Downloaded 435 times
- zp_class_cso_lilith.sma
- (31.1 KiB) Downloaded 435 times
-
- zp_class_cso_metatronic.sma
- (18.75 KiB) Downloaded 406 times
- zp_class_cso_metatronic.sma
- (18.75 KiB) Downloaded 406 times
-
- models.rar
- (2.03 MiB) Downloaded 492 times
- models.rar
- (2.03 MiB) Downloaded 492 times
-
- sounds.rar
- (556.95 KiB) Downloaded 449 times
- sounds.rar
- (556.95 KiB) Downloaded 449 times
- DarkZombie
- Member
- Posts: 76
- Joined: 5 years ago
- Contact:
- Night Fury
- Mod Developer
- Posts: 677
- Joined: 7 years ago
- Contact:
Code: Select all
#include <zombie_escape>
#include <ze_zombie_class>
#include <fakemeta_util>
#include <engine>
#include <fun>
#define PLUGIN "[CSO] LILITH ZOMBIE (Z-NOID) || ZP CLASS"
#define VERSION "1.0"
#define AUTHOR "Asep Khairul Anam"
/*
***************************************
The Plugins Is Made By Asep KhairulAnam
***************************************
************ ZOMBIE-MOD.RU ************
***************************************
- Added Auto Unstuck At The Portal Teleport
*/
// Teleport Mark
#define TELEPORT_MARK_MODEL "models/asep/teleport_zombie_mark.mdl"
#define TELEPORT_MARK_CLASSNAME "lilith_mark_teleport"
// Teleport Portal
#define TELEPORT_PORTAL_MODEL "sprites/asep/ef_teleportzombie.spr"
#define TELEPORT_PORTAL_CLASSNAME "lilith_portal_teleport"
// Teleport Origin ++
#define TELEPORT_X 25.0
#define TELEPORT_Z 15.0
// Zombie Configuration (String)
#define ZOMBIE_NAME "Teleportator"
#define ZOMBIE_INFO "\r[Admin]"
#define ZOMBIE_MODEL "lilith_zombie"
#define ZOMBIE_CLAW_MDL "v_knife_lilith.mdl"
#define ZOMBIE_BOMB_MDL "models/zombie_plague/v_bomb_lilith_merah.mdl"
// Zombie Configuration (Value)
#define ZOMBIE_HEALTH 4500
#define ZOMBIE_SPEED 260
#define ZOMBIE_GRAVITY 780
#define ZOMBIE_KNOCKBACK 0.8
// Delay Skill Configuration
#define DELAY_SKILL_1 30
#define DELAY_SKILL_2 40
// Task
#define TASK_TELEPORT 10221
#define TASK_DELAY 10222
new const Float:UnstuckVector[][] =
{
{0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},
{0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},
{0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},
{0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},
{0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0},
{0.0, 0.0, 6.0}, {0.0, 0.0, -6.0}, {0.0, 6.0, 0.0}, {0.0, -6.0, 0.0}, {6.0, 0.0, 0.0}, {-6.0, 0.0, 0.0}, {-6.0, 6.0, 6.0}, {6.0, 6.0, 6.0}, {6.0, -6.0, 6.0}, {6.0, 6.0, -6.0}, {-6.0, -6.0, 6.0}, {6.0, -6.0, -6.0}, {-6.0, 6.0, -6.0}, {-6.0, -6.0, -6.0},
{0.0, 0.0, 7.0}, {0.0, 0.0, -7.0}, {0.0, 7.0, 0.0}, {0.0, -7.0, 0.0}, {7.0, 0.0, 0.0}, {-7.0, 0.0, 0.0}, {-7.0, 7.0, 7.0}, {7.0, 7.0, 7.0}, {7.0, -7.0, 7.0}, {7.0, 7.0, -7.0}, {-7.0, -7.0, 7.0}, {7.0, -7.0, -7.0}, {-7.0, 7.0, -7.0}, {-7.0, -7.0, -7.0},
{0.0, 0.0, 8.0}, {0.0, 0.0, -8.0}, {0.0, 8.0, 0.0}, {0.0, -8.0, 0.0}, {8.0, 0.0, 0.0}, {-8.0, 0.0, 0.0}, {-8.0, 8.0, 8.0}, {8.0, 8.0, 8.0}, {8.0, -8.0, 8.0}, {8.0, 8.0, -8.0}, {-8.0, -8.0, 8.0}, {8.0, -8.0, -8.0}, {-8.0, 8.0, -8.0}, {-8.0, -8.0, -8.0},
{0.0, 0.0, 9.0}, {0.0, 0.0, -9.0}, {0.0, 9.0, 0.0}, {0.0, -9.0, 0.0}, {9.0, 0.0, 0.0}, {-9.0, 0.0, 0.0}, {-9.0, 9.0, 9.0}, {9.0, 9.0, 9.0}, {9.0, -9.0, 9.0}, {9.0, 9.0, -9.0}, {-9.0, -9.0, 9.0}, {9.0, -9.0, -9.0}, {-9.0, 9.0, -9.0}, {-9.0, -9.0, -9.0},
{0.0, 0.0, 10.0}, {0.0, 0.0, -10.0}, {0.0, 10.0, 0.0}, {0.0, -10.0, 0.0}, {10.0, 0.0, 0.0}, {-10.0, 0.0, 0.0}, {-10.0, 10.0, 10.0}, {10.0, 10.0, 10.0}, {10.0, -10.0, 10.0}, {10.0, 10.0, -10.0}, {-10.0, -10.0, 10.0}, {10.0, -10.0, -10.0}, {-10.0, 10.0, -10.0}, {-10.0, -10.0, -10.0},
{0.0, 0.0, 11.0}, {0.0, 0.0, -11.0}, {0.0, 11.0, 0.0}, {0.0, -11.0, 0.0}, {11.0, 0.0, 0.0}, {-11.0, 0.0, 0.0}, {-11.0, 11.0, 11.0}, {11.0, 11.0, 11.0}, {11.0, -11.0, 11.0}, {11.0, 11.0, -11.0}, {-11.0, -11.0, 11.0}, {11.0, -11.0, -11.0}, {-11.0, 11.0, -11.0}, {-11.0, -11.0, -11.0},
{0.0, 0.0, 12.0}, {0.0, 0.0, -12.0}, {0.0, 12.0, 0.0}, {0.0, -12.0, 0.0}, {12.0, 0.0, 0.0}, {-12.0, 0.0, 0.0}, {-12.0, 12.0, 12.0}, {12.0, 12.0, 12.0}, {12.0, -12.0, 12.0}, {12.0, 12.0, -12.0}, {-12.0, -12.0, 12.0}, {12.0, -12.0, -12.0}, {-12.0, 12.0, -12.0}, {-12.0, -12.0, -12.0},
{0.0, 0.0, 13.0}, {0.0, 0.0, -13.0}, {0.0, 13.0, 0.0}, {0.0, -13.0, 0.0}, {13.0, 0.0, 0.0}, {-13.0, 0.0, 0.0}, {-13.0, 13.0, 13.0}, {13.0, 13.0, 13.0}, {13.0, -13.0, 13.0}, {13.0, 13.0, -13.0}, {-13.0, -13.0, 13.0}, {13.0, -13.0, -13.0}, {-13.0, 13.0, -13.0}, {-13.0, -13.0, -13.0},
{0.0, 0.0, 14.0}, {0.0, 0.0, -14.0}, {0.0, 14.0, 0.0}, {0.0, -14.0, 0.0}, {14.0, 0.0, 0.0}, {-14.0, 0.0, 0.0}, {-14.0, 14.0, 14.0}, {14.0, 14.0, 14.0}, {14.0, -14.0, 14.0}, {14.0, 14.0, -14.0}, {-14.0, -14.0, 14.0}, {14.0, -14.0, -14.0}, {-14.0, 14.0, -14.0}, {-14.0, -14.0, -14.0},
{0.0, 0.0, 15.0}, {0.0, 0.0, -15.0}, {0.0, 15.0, 0.0}, {0.0, -15.0, 0.0}, {15.0, 0.0, 0.0}, {-15.0, 0.0, 0.0}, {-15.0, 15.0, 15.0}, {15.0, 15.0, 15.0}, {15.0, -15.0, 15.0}, {15.0, 15.0, -15.0}, {-15.0, -15.0, 15.0}, {15.0, -15.0, -15.0}, {-15.0, 15.0, -15.0}, {-15.0, -15.0, -15.0},
{0.0, 0.0, 16.0}, {0.0, 0.0, -16.0}, {0.0, 16.0, 0.0}, {0.0, -16.0, 0.0}, {16.0, 0.0, 0.0}, {-16.0, 0.0, 0.0}, {-16.0, 16.0, 16.0}, {16.0, 16.0, 16.0}, {16.0, -16.0, 16.0}, {16.0, 16.0, -16.0}, {-16.0, -16.0, 16.0}, {16.0, -16.0, -16.0}, {-16.0, 16.0, -16.0}, {-16.0, -16.0, -16.0},
{0.0, 0.0, 17.0}, {0.0, 0.0, -17.0}, {0.0, 17.0, 0.0}, {0.0, -17.0, 0.0}, {17.0, 0.0, 0.0}, {-17.0, 0.0, 0.0}, {-17.0, 17.0, 17.0}, {17.0, 17.0, 17.0}, {17.0, -17.0, 17.0}, {17.0, 17.0, -17.0}, {-17.0, -17.0, 17.0}, {17.0, -17.0, -17.0}, {-17.0, 17.0, -17.0}, {-17.0, -17.0, -17.0},
{0.0, 0.0, 18.0}, {0.0, 0.0, -18.0}, {0.0, 18.0, 0.0}, {0.0, -18.0, 0.0}, {18.0, 0.0, 0.0}, {-18.0, 0.0, 0.0}, {-18.0, 18.0, 18.0}, {18.0, 18.0, 18.0}, {18.0, -18.0, 18.0}, {18.0, 18.0, -18.0}, {-18.0, -18.0, 18.0}, {18.0, -18.0, -18.0}, {-18.0, 18.0, -18.0}, {-18.0, -18.0, -18.0},
{0.0, 0.0, 19.0}, {0.0, 0.0, -19.0}, {0.0, 19.0, 0.0}, {0.0, -19.0, 0.0}, {19.0, 0.0, 0.0}, {-19.0, 0.0, 0.0}, {-19.0, 19.0, 19.0}, {19.0, 19.0, 19.0}, {19.0, -19.0, 19.0}, {19.0, 19.0, -19.0}, {-19.0, -19.0, 19.0}, {19.0, -19.0, -19.0}, {-19.0, 19.0, -19.0}, {-19.0, -19.0, -19.0},
{0.0, 0.0, 20.0}, {0.0, 0.0, -20.0}, {0.0, 20.0, 0.0}, {0.0, -20.0, 0.0}, {20.0, 0.0, 0.0}, {-20.0, 0.0, 0.0}, {-20.0, 20.0, 20.0}, {20.0, 20.0, 20.0}, {20.0, -20.0, 20.0}, {20.0, 20.0, -20.0}, {-20.0, -20.0, 20.0}, {20.0, -20.0, -20.0}, {-20.0, 20.0, -20.0}, {-20.0, -20.0, -20.0},
{0.0, 0.0, 21.0}, {0.0, 0.0, -21.0}, {0.0, 21.0, 0.0}, {0.0, -21.0, 0.0}, {21.0, 0.0, 0.0}, {-21.0, 0.0, 0.0}, {-21.0, 21.0, 21.0}, {21.0, 21.0, 21.0}, {21.0, -21.0, 21.0}, {21.0, 21.0, -21.0}, {-21.0, -21.0, 21.0}, {21.0, -21.0, -21.0}, {-21.0, 21.0, -21.0}, {-21.0, -21.0, -21.0},
{0.0, 0.0, 22.0}, {0.0, 0.0, -22.0}, {0.0, 22.0, 0.0}, {0.0, -22.0, 0.0}, {22.0, 0.0, 0.0}, {-22.0, 0.0, 0.0}, {-22.0, 22.0, 22.0}, {22.0, 22.0, 22.0}, {22.0, -22.0, 22.0}, {22.0, 22.0, -22.0}, {-22.0, -22.0, 22.0}, {22.0, -22.0, -22.0}, {-22.0, 22.0, -22.0}, {-22.0, -22.0, -22.0},
{0.0, 0.0, 23.0}, {0.0, 0.0, -23.0}, {0.0, 23.0, 0.0}, {0.0, -23.0, 0.0}, {23.0, 0.0, 0.0}, {-23.0, 0.0, 0.0}, {-23.0, 23.0, 23.0}, {23.0, 23.0, 23.0}, {23.0, -23.0, 23.0}, {23.0, 23.0, -23.0}, {-23.0, -23.0, 23.0}, {23.0, -23.0, -23.0}, {-23.0, 23.0, -23.0}, {-23.0, -23.0, -23.0},
{0.0, 0.0, 24.0}, {0.0, 0.0, -24.0}, {0.0, 24.0, 0.0}, {0.0, -24.0, 0.0}, {24.0, 0.0, 0.0}, {-24.0, 0.0, 0.0}, {-24.0, 24.0, 24.0}, {24.0, 24.0, 24.0}, {24.0, -24.0, 24.0}, {24.0, 24.0, -24.0}, {-24.0, -24.0, 24.0}, {24.0, -24.0, -24.0}, {-24.0, 24.0, -24.0}, {-24.0, -24.0, -24.0},
{0.0, 0.0, 25.0}, {0.0, 0.0, -25.0}, {0.0, 25.0, 0.0}, {0.0, -25.0, 0.0}, {25.0, 0.0, 0.0}, {-25.0, 0.0, 0.0}, {-25.0, 25.0, 25.0}, {25.0, 25.0, 25.0}, {25.0, -25.0, 25.0}, {25.0, 25.0, -25.0}, {-25.0, -25.0, 25.0}, {25.0, -25.0, -25.0}, {-25.0, 25.0, -25.0}, {-25.0, -25.0, -25.0},
{0.0, 0.0, 26.0}, {0.0, 0.0, -26.0}, {0.0, 26.0, 0.0}, {0.0, -26.0, 0.0}, {26.0, 0.0, 0.0}, {-26.0, 0.0, 0.0}, {-26.0, 26.0, 26.0}, {26.0, 26.0, 26.0}, {26.0, -26.0, 26.0}, {26.0, 26.0, -26.0}, {-26.0, -26.0, 26.0}, {26.0, -26.0, -26.0}, {-26.0, 26.0, -26.0}, {-26.0, -26.0, -26.0},
{0.0, 0.0, 27.0}, {0.0, 0.0, -27.0}, {0.0, 27.0, 0.0}, {0.0, -27.0, 0.0}, {27.0, 0.0, 0.0}, {-27.0, 0.0, 0.0}, {-27.0, 27.0, 27.0}, {27.0, 27.0, 27.0}, {27.0, -27.0, 27.0}, {27.0, 27.0, -27.0}, {-27.0, -27.0, 27.0}, {27.0, -27.0, -27.0}, {-27.0, 27.0, -27.0}, {-27.0, -27.0, -27.0},
{0.0, 0.0, 28.0}, {0.0, 0.0, -28.0}, {0.0, 28.0, 0.0}, {0.0, -28.0, 0.0}, {28.0, 0.0, 0.0}, {-28.0, 0.0, 0.0}, {-28.0, 28.0, 28.0}, {28.0, 28.0, 28.0}, {28.0, -28.0, 28.0}, {28.0, 28.0, -28.0}, {-28.0, -28.0, 28.0}, {28.0, -28.0, -28.0}, {-28.0, 28.0, -28.0}, {-28.0, -28.0, -28.0},
{0.0, 0.0, 29.0}, {0.0, 0.0, -29.0}, {0.0, 29.0, 0.0}, {0.0, -29.0, 0.0}, {29.0, 0.0, 0.0}, {-29.0, 0.0, 0.0}, {-29.0, 29.0, 29.0}, {29.0, 29.0, 29.0}, {29.0, -29.0, 29.0}, {29.0, 29.0, -29.0}, {-29.0, -29.0, 29.0}, {29.0, -29.0, -29.0}, {-29.0, 29.0, -29.0}, {-29.0, -29.0, -29.0},
{0.0, 0.0, 30.0}, {0.0, 0.0, -30.0}, {0.0, 30.0, 0.0}, {0.0, -30.0, 0.0}, {30.0, 0.0, 0.0}, {-30.0, 0.0, 0.0}, {-30.0, 30.0, 30.0}, {30.0, 30.0, 30.0}, {30.0, -30.0, 30.0}, {30.0, 30.0, -30.0}, {-30.0, -30.0, 30.0}, {30.0, -30.0, -30.0}, {-30.0, 30.0, -30.0}, {-30.0, -30.0, -30.0},
{0.0, 0.0, 31.0}, {0.0, 0.0, -31.0}, {0.0, 31.0, 0.0}, {0.0, -31.0, 0.0}, {31.0, 0.0, 0.0}, {-31.0, 0.0, 0.0}, {-31.0, 31.0, 31.0}, {31.0, 31.0, 31.0}, {31.0, -31.0, 31.0}, {31.0, 31.0, -31.0}, {-31.0, -31.0, 31.0}, {31.0, -31.0, -31.0}, {-31.0, 31.0, -31.0}, {-31.0, -31.0, -31.0},
{0.0, 0.0, 32.0}, {0.0, 0.0, -32.0}, {0.0, 32.0, 0.0}, {0.0, -32.0, 0.0}, {32.0, 0.0, 0.0}, {-32.0, 0.0, 0.0}, {-32.0, 32.0, 32.0}, {32.0, 32.0, 32.0}, {32.0, -32.0, 32.0}, {32.0, 32.0, -32.0}, {-32.0, -32.0, 32.0}, {32.0, -32.0, -32.0}, {-32.0, 32.0, -32.0}, {-32.0, -32.0, -32.0},
{0.0, 0.0, 33.0}, {0.0, 0.0, -33.0}, {0.0, 33.0, 0.0}, {0.0, -33.0, 0.0}, {33.0, 0.0, 0.0}, {-33.0, 0.0, 0.0}, {-33.0, 33.0, 33.0}, {33.0, 33.0, 33.0}, {33.0, -33.0, 33.0}, {33.0, 33.0, -33.0}, {-33.0, -33.0, 33.0}, {33.0, -33.0, -33.0}, {-33.0, 33.0, -33.0}, {-33.0, -33.0, -33.0},
{0.0, 0.0, 34.0}, {0.0, 0.0, -34.0}, {0.0, 34.0, 0.0}, {0.0, -34.0, 0.0}, {34.0, 0.0, 0.0}, {-34.0, 0.0, 0.0}, {-34.0, 34.0, 34.0}, {34.0, 34.0, 34.0}, {34.0, -34.0, 34.0}, {34.0, 34.0, -34.0}, {-34.0, -34.0, 34.0}, {34.0, -34.0, -34.0}, {-34.0, 34.0, -34.0}, {-34.0, -34.0, -34.0},
{0.0, 0.0, 35.0}, {0.0, 0.0, -35.0}, {0.0, 35.0, 0.0}, {0.0, -35.0, 0.0}, {35.0, 0.0, 0.0}, {-35.0, 0.0, 0.0}, {-35.0, 35.0, 35.0}, {35.0, 35.0, 35.0}, {35.0, -35.0, 35.0}, {35.0, 35.0, -35.0}, {-35.0, -35.0, 35.0}, {35.0, -35.0, -35.0}, {-35.0, 35.0, -35.0}, {-35.0, -35.0, -35.0},
{0.0, 0.0, 36.0}, {0.0, 0.0, -36.0}, {0.0, 36.0, 0.0}, {0.0, -36.0, 0.0}, {36.0, 0.0, 0.0}, {-36.0, 0.0, 0.0}, {-36.0, 36.0, 36.0}, {36.0, 36.0, 36.0}, {36.0, -36.0, 36.0}, {36.0, 36.0, -36.0}, {-36.0, -36.0, 36.0}, {36.0, -36.0, -36.0}, {-36.0, 36.0, -36.0}, {-36.0, -36.0, -36.0},
{0.0, 0.0, 37.0}, {0.0, 0.0, -37.0}, {0.0, 37.0, 0.0}, {0.0, -37.0, 0.0}, {37.0, 0.0, 0.0}, {-37.0, 0.0, 0.0}, {-37.0, 37.0, 37.0}, {37.0, 37.0, 37.0}, {37.0, -37.0, 37.0}, {37.0, 37.0, -37.0}, {-37.0, -37.0, 37.0}, {37.0, -37.0, -37.0}, {-37.0, 37.0, -37.0}, {-37.0, -37.0, -37.0},
{0.0, 0.0, 38.0}, {0.0, 0.0, -38.0}, {0.0, 38.0, 0.0}, {0.0, -38.0, 0.0}, {38.0, 0.0, 0.0}, {-38.0, 0.0, 0.0}, {-38.0, 38.0, 38.0}, {38.0, 38.0, 38.0}, {38.0, -38.0, 38.0}, {38.0, 38.0, -38.0}, {-38.0, -38.0, 38.0}, {38.0, -38.0, -38.0}, {-38.0, 38.0, -38.0}, {-38.0, -38.0, -38.0},
{0.0, 0.0, 39.0}, {0.0, 0.0, -39.0}, {0.0, 39.0, 0.0}, {0.0, -39.0, 0.0}, {39.0, 0.0, 0.0}, {-39.0, 0.0, 0.0}, {-39.0, 39.0, 39.0}, {39.0, 39.0, 39.0}, {39.0, -39.0, 39.0}, {39.0, 39.0, -39.0}, {-39.0, -39.0, 39.0}, {39.0, -39.0, -39.0}, {-39.0, 39.0, -39.0}, {-39.0, -39.0, -39.0},
{0.0, 0.0, 40.0}, {0.0, 0.0, -40.0}, {0.0, 40.0, 0.0}, {0.0, -40.0, 0.0}, {40.0, 0.0, 0.0}, {-40.0, 0.0, 0.0}, {-40.0, 40.0, 40.0}, {40.0, 40.0, 40.0}, {40.0, -40.0, 40.0}, {40.0, 40.0, -40.0}, {-40.0, -40.0, 40.0}, {40.0, -40.0, -40.0}, {-40.0, 40.0, -40.0}, {-40.0, -40.0, -40.0}
}
enum _:LILITH_SKILL
{
SKILL_READY = 0,
SKILL_USE,
SKILL_DELAY,
}
enum _:LILITH_ANIMATION
{
V_ANIM_SKILL_1 = 2,
V_ANIM_SKILL_2 = 8,
P_ANIM_SKILL_1 = 152,
P_ANIM_SKILL_2 = 153
}
enum _:LILITH_SOUND
{
SKILL_1 = 0,
SKILL_2_IN,
SKILL_2_OUT,
PAIN_HURT,
PAIN_GATE,
PAIN_DEATH
}
enum _:LILITH_ENT
{
ENT_MARK = 0,
ENT_PORTAL1,
ENT_PORTAL2
}
new const LilithSound[][] =
{
"asep/lilith_teleport_skill1.wav",
"asep/lilith_teleport_skill2_in.wav",
"asep/lilith_teleport_skill2_out.wav",
"asep/lilith_pain_hurt.wav",
"asep/lilith_pain_gate.wav",
"asep/lilith_pain_death.wav"
}
new g_teleport_ent[33][3]
new class_lilith[33]
new g_skill1[33]
new g_skill2[33]
new sync_hud[2]
new index_lilith
new g_HamBot
new g_lilith
public plugin_init()
{
// Register Plugins .....
register_plugin(PLUGIN, VERSION, AUTHOR)
// Forward Event
register_event("DeathMsg", "Event_Death", "a")
register_event("CurWeapon","Event_CurWeapon","be","1=1")
register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0")
// Forward Log Event
register_logevent("Event_RoundEnd", 2, "1=Round_End")
// Forward Fakemeta
register_forward(FM_CmdStart , "Forward_CmdStart")
// Forward Ham
RegisterHam(Ham_TakeDamage, "player", "Forward_TakeDamage")
// Forward Think Entity
register_think(TELEPORT_MARK_CLASSNAME, "Forward_Mark_Think")
register_think(TELEPORT_PORTAL_CLASSNAME, "Forward_Portal_Think")
register_touch(TELEPORT_MARK_CLASSNAME, "player", "Forward_Mark_Touch")
// Create Sync Hud
sync_hud[0] = CreateHudSyncObj(12)
sync_hud[1] = CreateHudSyncObj(13)
g_lilith = ze_register_zombie_class(ZOMBIE_NAME, ZOMBIE_INFO, ZOMBIE_HEALTH, ZOMBIE_SPEED, ZOMBIE_GRAVITY)
}
public plugin_precache()
{
for(new i = 0; i < sizeof(LilithSound); i++)
precache_sound(LilithSound[i])
new CLAW_MDL[101]
formatex(CLAW_MDL, charsmax(CLAW_MDL), "models/zombie_plague/%s", ZOMBIE_CLAW_MDL)
precache_model(CLAW_MDL)
precache_model(ZOMBIE_BOMB_MDL)
precache_viewmodel_sound(ZOMBIE_BOMB_MDL)
precache_model(TELEPORT_MARK_MODEL)
precache_model(TELEPORT_PORTAL_MODEL)
precache_sound("common/null.wav")
new player_models[101]
formatex(player_models, charsmax(player_models), "models/player/%s/%s.mdl", ZOMBIE_MODEL, ZOMBIE_MODEL)
index_lilith = precache_model(player_models)
}
public client_putinserver(id)
{
if(!g_HamBot && is_user_bot(id))
{
g_HamBot = 1
set_task(0.1, "Do_RegisterHam", id)
}
}
public Do_RegisterHam(id)
{
RegisterHamFromEntity(Ham_TakeDamage, id, "Forward_TakeDamage")
}
public Event_RoundEnd(id) lilith_reset_value(id)
public Event_RoundStart(id) lilith_reset_value(id)
public Event_Death()
{
new id = read_data(2)
if(ze_is_user_zombie(id) && class_lilith[id])
{
engfunc(EngFunc_EmitSound, id, CHAN_ITEM, LilithSound[PAIN_DEATH], 1.0, ATTN_NORM, 0, PITCH_NORM)
lilith_reset_value(id)
}
}
public Event_CurWeapon(id)
{
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_lilith[id])
return
if(g_skill1[id] != SKILL_USE) set_user_maxspeed(id, float(ZOMBIE_SPEED))
else if(g_skill2[id] != SKILL_USE) set_user_maxspeed(id, float(ZOMBIE_SPEED))
switch(read_data(2))
{
case CSW_KNIFE:
{
new CLAW_MDL[101]
formatex(CLAW_MDL, charsmax(CLAW_MDL), "models/zombie_plague/%s", ZOMBIE_CLAW_MDL)
set_pev(id, pev_viewmodel2, CLAW_MDL)
set_pev(id, pev_weaponmodel2, "")
}
case CSW_SMOKEGRENADE: set_pev(id, pev_viewmodel2, ZOMBIE_BOMB_MDL)
case CSW_HEGRENADE: set_pev(id, pev_viewmodel2, ZOMBIE_BOMB_MDL)
case CSW_FLASHBANG: set_pev(id, pev_viewmodel2, ZOMBIE_BOMB_MDL)
}
}
public Forward_TakeDamage(victim, inflictor, attacker, Float:damage, dmgtype)
{
if(!is_user_alive(attacker) || ze_is_user_zombie(attacker))
return
if(!is_user_alive(victim) || !is_user_connected(victim))
return
if(!ze_is_user_zombie(victim) || !class_lilith[victim])
return
engfunc(EngFunc_EmitSound, victim, CHAN_ITEM, LilithSound[PAIN_HURT], 1.0, ATTN_NORM, 0, PITCH_NORM)
}
public show_lilith_hud(id)
{
static Temp_Skill_1[128], Temp_Skill_2[128]
static Red[2], Blue[2], Green[2]
if(g_skill1[id] == SKILL_READY)
{
Red[0] = 0
Green[0] = 255
Blue[0] = 0
formatex(Temp_Skill_1, sizeof(Temp_Skill_1), "[ E ] -> Create Portal (Finish)")
}
else if(g_skill1[id] == SKILL_USE)
{
Red[0] = 200
Green[0] = 200
Blue[0] = 0
formatex(Temp_Skill_1, sizeof(Temp_Skill_1), "Creating a portal ....")
}
else if(g_skill1[id] == SKILL_DELAY)
{
Red[0] = 255
Green[0] = 0
Blue[0] = 0
formatex(Temp_Skill_1, sizeof(Temp_Skill_1), "[ E ] -> Create a Portal (Reload)")
}
if(g_skill2[id] == SKILL_READY)
{
if(!pev_valid(g_teleport_ent[id][ENT_MARK]))
{
Red[1] = 255
Green[1] = 0
Blue[1] = 0
}
else
{
Red[1] = 0
Green[1] = 255
Blue[1] = 0
}
formatex(Temp_Skill_2, sizeof(Temp_Skill_2), "^n[ R ] -> Teleport (Done)")
}
else if(g_skill2[id] == SKILL_USE)
{
Red[1] = 200
Green[1] = 200
Blue[1] = 0
formatex(Temp_Skill_2, sizeof(Temp_Skill_2), "^nTeleportation .....")
}
else if(g_skill2[id] == SKILL_DELAY)
{
Red[1] = 255
Green[1] = 0
Blue[1] = 0
formatex(Temp_Skill_2, sizeof(Temp_Skill_2), "^n[ R ] -> Teleport (Recharge)")
}
set_hudmessage(Red[0], Green[0], Blue[0], -1.0, -0.79, 0, 2.0, 10.0)
ShowSyncHudMsg(id, sync_hud[0], Temp_Skill_1)
set_hudmessage(Red[1], Green[1], Blue[1], -1.0, -0.76, 0, 2.0, 10.0)
ShowSyncHudMsg(id, sync_hud[1], Temp_Skill_2)
}
public Forward_CmdStart(id, UC_Handle, seed)
{
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_lilith[id])
return
static Float:CurrentTime, Float:g_hud_delay[33]
CurrentTime = get_gametime()
if(CurrentTime - 1.0 > g_hud_delay[id])
{
show_lilith_hud(id)
if(pev(id, pev_solid) == SOLID_NOT)
set_pev(id, pev_solid, SOLID_BBOX)
g_hud_delay[id] = CurrentTime
}
static PressedButton
PressedButton = get_uc(UC_Handle, UC_Buttons)
if(PressedButton & IN_RELOAD)
{
if(g_skill2[id] != SKILL_READY)
return
if(!pev_valid(g_teleport_ent[id][ENT_MARK]))
return
set_uc(UC_Handle, UC_Buttons, IN_ATTACK2)
set_task(0.001, "action_teleport", id)
}
else if(PressedButton & IN_USE)
{
if(pev(id, pev_flags) & FL_DUCKING)
{
client_print(id, print_center, "You Can't Create Teleport Portal If You Ducking ...")
return
}
if(g_skill1[id] != SKILL_READY)
return
set_uc(UC_Handle, UC_Buttons, IN_ATTACK2)
set_task(0.001, "action_create_teleport_mark", id)
}
auto_unstuck(id)
}
public auto_unstuck(id)
{
static Float:origin[3], Float:mins[3], hull, Float:vec[3], i
pev(id, pev_origin, origin)
hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
if(!is_hull_vacant(origin, hull, id))
{
pev(id, pev_mins, mins)
vec[2] = origin[2]
for (i = 0; i < sizeof UnstuckVector; ++i)
{
vec[0] = origin[0] - mins[0] * UnstuckVector[i][0]
vec[1] = origin[1] - mins[1] * UnstuckVector[i][1]
vec[2] = origin[2] - mins[2] * UnstuckVector[i][2]
if(is_hull_vacant(vec, hull, id))
{
engfunc(EngFunc_SetOrigin, id, vec)
set_pev(id,pev_velocity,{0.0,0.0,0.0})
i = sizeof UnstuckVector
}
}
}
}
public ze_user_infected(id)
{
if(ze_get_current_zombie_class(id) == g_lilith)
{
class_lilith[id] = true
show_lilith_hud(id)
lilith_reset_var_skill(id)
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_knife")
set_pdata_int(id, 491, index_lilith, 5)
}
}
public ze_user_infected_pre(id)
{
if(!(get_user_flags(id) & ADMIN_MAP))
{
if(ze_get_next_zombie_class(id) == g_lilith)
{
ze_set_next_zombie_class(id, 0)
client_print(id, print_chat, "Данный класс только для Админов")
}
}
}
public action_teleport(id)
{
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_lilith[id])
return
if(g_skill2[id] != SKILL_READY)
return
g_skill2[id] = SKILL_USE
set_weapon_anim(id, V_ANIM_SKILL_2)
set_pev(id, pev_sequence, P_ANIM_SKILL_2)
set_pev(id, pev_framerate, 0.3)
set_user_maxspeed(id, 0.1)
set_user_gravity(id, 2.0)
set_pdata_float(id, 83, 2.0, 5)
new Float:fOrigin[3]
pev(id, pev_origin, fOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, fOrigin[0])
engfunc(EngFunc_WriteCoord, fOrigin[1])
engfunc(EngFunc_WriteCoord, fOrigin[2])
write_byte(20) // radius
write_byte(200) // r
write_byte(200) // g
write_byte(255) // b
write_byte(40) // life in 10's
write_byte(1) // decay rate in 10's
message_end()
new Float:OriginPlayer[3]
get_position(id, 5.0, 0.0, 0.0, OriginPlayer)
create_teleport_portal(g_teleport_ent[id][ENT_PORTAL1], id, SKILL_2_IN, OriginPlayer)
if(pev_valid(g_teleport_ent[id][ENT_MARK]))
{
static Float:OriginTeleport[3]
pev(g_teleport_ent[id][ENT_MARK], pev_origin, OriginTeleport)
OriginTeleport[2] += 50.0
create_teleport_portal(g_teleport_ent[id][ENT_PORTAL2], id, SKILL_2_OUT, OriginTeleport)
}
set_task(2.0, "do_teleport", id+TASK_TELEPORT)
}
public do_teleport(id)
{
id -= TASK_TELEPORT
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_lilith[id])
{
remove_task(id+TASK_TELEPORT)
return
}
if(!pev_valid(g_teleport_ent[id][ENT_MARK]))
return
if(g_skill2[id] != SKILL_USE)
return
client_cmd(id, "+duck")
static Float:OriginTeleport[3]
pev(g_teleport_ent[id][ENT_MARK], pev_origin, OriginTeleport)
OriginTeleport[2] += 50.0
set_pev(id, pev_origin, OriginTeleport)
engfunc(EngFunc_EmitSound, g_teleport_ent[id][ENT_MARK], CHAN_ITEM, "common/null.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
remove_entity(g_teleport_ent[id][ENT_MARK])
g_teleport_ent[id][ENT_MARK] = 0
set_user_maxspeed(id, float(ZOMBIE_SPEED))
set_user_gravity(id, (float(ZOMBIE_GRAVITY)/800.0))
set_pev(id, pev_framerate, 1.0)
client_cmd(id, "-duck")
g_skill2[id] = SKILL_DELAY
set_task(float(DELAY_SKILL_2), "skill2_delay", id+TASK_DELAY)
}
public skill2_delay(id)
{
id -= TASK_DELAY
if(g_skill2[id] != SKILL_DELAY)
return
g_skill2[id] = SKILL_READY
}
public action_create_teleport_mark(id)
{
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_lilith[id])
return
if(g_skill1[id] != SKILL_READY)
return
g_skill1[id] = SKILL_USE
set_weapon_anim(id, V_ANIM_SKILL_1)
set_pev(id, pev_sequence, P_ANIM_SKILL_1)
set_pev(id, pev_framerate, 0.5)
set_user_maxspeed(id, 0.1)
set_user_gravity(id, 2.0)
new Float:fOrigin[3]
pev(id, pev_origin, fOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, fOrigin[0])
engfunc(EngFunc_WriteCoord, fOrigin[1])
engfunc(EngFunc_WriteCoord, fOrigin[2])
write_byte(20) // radius
write_byte(200) // r
write_byte(200) // g
write_byte(255) // b
write_byte(40) // life in 10's
write_byte(1) // decay rate in 10's
message_end()
engfunc(EngFunc_EmitSound, id, CHAN_ITEM, LilithSound[SKILL_1], 1.0, ATTN_NORM, 0, PITCH_NORM)
set_pdata_float(id, 83, 1.0, 5)
set_task(0.63, "create_teleport_mark", id+TASK_TELEPORT)
}
public create_teleport_mark(id)
{
id -= TASK_TELEPORT
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_lilith[id])
{
remove_task(id+TASK_TELEPORT)
return
}
if(g_skill1[id] != SKILL_USE)
return
if(pev_valid(g_teleport_ent[id][ENT_MARK]))
{
remove_entity(g_teleport_ent[id][ENT_MARK])
g_teleport_ent[id][ENT_MARK] = 0
}
set_user_maxspeed(id, float(ZOMBIE_SPEED))
set_user_gravity(id, (float(ZOMBIE_GRAVITY)/800.0))
set_pev(id, pev_framerate, 1.0)
static Float:fOrigin1[3], Float:fOrigin2[3]
g_teleport_ent[id][ENT_MARK] = create_entity("env_sprite")
set_pev(g_teleport_ent[id][ENT_MARK], pev_classname, TELEPORT_MARK_CLASSNAME)
engfunc(EngFunc_SetModel, g_teleport_ent[id][ENT_MARK], TELEPORT_MARK_MODEL)
pev(id, pev_origin, fOrigin1)
set_pev(g_teleport_ent[id][ENT_MARK], pev_origin, fOrigin1)
drop_to_floor(g_teleport_ent[id][ENT_MARK])
pev(g_teleport_ent[id][ENT_MARK], pev_origin, fOrigin2)
fOrigin2[0] += TELEPORT_X
set_pev(g_teleport_ent[id][ENT_MARK], pev_origin, fOrigin2)
set_pev(g_teleport_ent[id][ENT_MARK], pev_solid, SOLID_NOT)
set_pev(g_teleport_ent[id][ENT_MARK], pev_movetype, MOVETYPE_NOCLIP)
set_pev(g_teleport_ent[id][ENT_MARK], pev_animtime, get_gametime())
set_pev(g_teleport_ent[id][ENT_MARK], pev_framerate, 1.0)
set_pev(g_teleport_ent[id][ENT_MARK], pev_sequence, 0)
set_pev(g_teleport_ent[id][ENT_MARK], pev_owner, id)
set_pev(g_teleport_ent[id][ENT_MARK], pev_nextthink, get_gametime() + 2.0)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, fOrigin2[0])
engfunc(EngFunc_WriteCoord, fOrigin2[1])
engfunc(EngFunc_WriteCoord, fOrigin2[2])
write_byte(10) // radius
write_byte(200) // r
write_byte(200) // g
write_byte(255) // b
write_byte(40) // life in 10's
write_byte(1) // decay rate in 10's
message_end()
engfunc(EngFunc_EmitSound, g_teleport_ent[id][ENT_MARK], CHAN_ITEM, LilithSound[PAIN_GATE], 1.0, ATTN_NORM, 0, PITCH_NORM)
g_skill1[id] = SKILL_DELAY
set_task(float(DELAY_SKILL_1), "skill1_delay", id+TASK_DELAY)
}
public skill1_delay(id)
{
id -= TASK_DELAY
if(g_skill1[id] != SKILL_DELAY)
return
g_skill1[id] = SKILL_READY
}
public create_teleport_portal(ent, owner, const Sound, Float:Origin[3])
{
ent = create_entity("env_sprite")
Origin[0] += TELEPORT_X
Origin[2] += TELEPORT_Z
set_pev(ent, pev_classname, TELEPORT_PORTAL_CLASSNAME)
engfunc(EngFunc_SetModel, ent, TELEPORT_PORTAL_MODEL)
set_pev(ent, pev_origin, Origin)
set_pev(ent, pev_solid, SOLID_NOT)
set_pev(ent, pev_movetype, MOVETYPE_NOCLIP)
set_pev(ent, pev_rendermode, kRenderTransAdd)
set_pev(ent, pev_renderamt, 150.0)
set_pev(ent, pev_scale, 0.5)
set_pev(ent, pev_frame, 0.0)
set_pev(ent, pev_owner, owner)
set_pev(ent, pev_fuser1, get_gametime() + 3.0)
set_pev(ent, pev_nextthink, get_gametime() + 0.05)
engfunc(EngFunc_EmitSound, ent, CHAN_ITEM, LilithSound[Sound], 1.0, ATTN_NORM, 0, PITCH_NORM)
}
public Forward_Portal_Think(ent)
{
if(!pev_valid(ent))
return
static Float:fFrame, Float:Origin[3], owner
owner = pev(ent, pev_owner)
pev(ent, pev_frame, fFrame)
pev(ent, pev_origin, Origin)
if(ent == g_teleport_ent[owner][ENT_PORTAL2])
{
fFrame += 1.0
if(fFrame > 15.0) fFrame = 0.0
}
else if(ent == g_teleport_ent[owner][ENT_PORTAL1])
{
fFrame -= 1.0
if(fFrame == 0.0) fFrame = 15.0
}
set_pev(ent, pev_frame, fFrame)
set_pev(ent, pev_nextthink, get_gametime() + 0.05)
static Float:fTimeRemove
pev(ent, pev_fuser1, fTimeRemove)
if(get_gametime() >= pev(ent, pev_fuser1))
{
engfunc(EngFunc_RemoveEntity, ent)
return
}
}
public Forward_Mark_Think(ent)
{
if(!pev_valid(ent))
return
static Float:Origin[3]
pev(ent, pev_origin, Origin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_byte(10) // radius
write_byte(200) // r
write_byte(200) // g
write_byte(255) // b
write_byte(40) // life in 10's
write_byte(1) // decay rate in 10's
message_end()
engfunc(EngFunc_EmitSound, ent, CHAN_ITEM, LilithSound[PAIN_GATE], 1.0, ATTN_NORM, 0, PITCH_NORM)
set_pev(ent, pev_nextthink, get_gametime() + 2.0)
}
public Forward_Mark_Touch(ent, id)
{
if(!pev_valid(ent))
return
if(!is_user_alive(id))
return
if(pev(id, pev_solid) != SOLID_NOT)
set_pev(id, pev_solid, SOLID_NOT)
}
public lilith_reset_value(id)
{
class_lilith[id] = false
lilith_reset_var_skill(id)
}
public lilith_reset_var_skill(id)
{
remove_task(id+TASK_TELEPORT)
if(pev_valid(g_teleport_ent[id][ENT_MARK]))
{
remove_entity(g_teleport_ent[id][ENT_MARK])
g_teleport_ent[id][ENT_PORTAL2] = 0
}
if(pev_valid(g_teleport_ent[id][ENT_PORTAL1]))
{
remove_entity(g_teleport_ent[id][ENT_PORTAL1])
g_teleport_ent[id][ENT_PORTAL2] = 0
}
if(pev_valid(g_teleport_ent[id][ENT_PORTAL2]))
{
remove_entity(g_teleport_ent[id][ENT_PORTAL2])
g_teleport_ent[id][ENT_PORTAL2] = 0
}
g_skill1[id] = 0
g_skill2[id] = 0
g_teleport_ent[id][ENT_MARK] = 0
}
stock bool:is_hull_vacant(const Float:origin[3], hull,id)
{
static tr
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)
if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))
return true;
return false;
}
stock get_position(id, Float:forw, Float:right, Float:up, Float:vStart[])
{
new Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
pev(id, pev_origin, vOrigin)
pev(id, pev_view_ofs,vUp) //for player
xs_vec_add(vOrigin,vUp,vOrigin)
pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward) //or use EngFunc_AngleVectors
angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}
stock set_weapon_anim(id, anim)
{
set_pev(id, pev_weaponanim, anim)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = id)
write_byte(anim)
write_byte(pev(id, pev_body))
message_end()
}
stock precache_viewmodel_sound(const model[]) // I Get This From BTE
{
new file, i, k
if((file = fopen(model, "rt")))
{
new szsoundpath[64], NumSeq, SeqID, Event, NumEvents, EventID
fseek(file, 164, SEEK_SET)
fread(file, NumSeq, BLOCK_INT)
fread(file, SeqID, BLOCK_INT)
for(i = 0; i < NumSeq; i++)
{
fseek(file, SeqID + 48 + 176 * i, SEEK_SET)
fread(file, NumEvents, BLOCK_INT)
fread(file, EventID, BLOCK_INT)
fseek(file, EventID + 176 * i, SEEK_SET)
// The Output Is All Sound To Precache In ViewModels (GREAT :V)
for(k = 0; k < NumEvents; k++)
{
fseek(file, EventID + 4 + 76 * k, SEEK_SET)
fread(file, Event, BLOCK_INT)
fseek(file, 4, SEEK_CUR)
if(Event != 5004)
continue
fread_blocks(file, szsoundpath, 64, BLOCK_CHAR)
if(strlen(szsoundpath))
{
strtolower(szsoundpath)
engfunc(EngFunc_PrecacheSound, szsoundpath)
}
}
}
}
fclose(file)
}
Code: Select all
#include <zombie_escape>
#include <ze_zombie_class>
#include <fakemeta_util>
#include <engine>
#include <fun>
#define PLUGIN "[CSO] Metatronic Zombie (Z-NOID)"
#define VERSION "1.0"
#define AUTHOR "Asep Khairul Anam"
/*
***************************************
The Plugins Is Made By Asep KhairulAnam
***************************************
************ ZOMBIE-MOD.RU ************
***************************************
NOTE: Please To Don't Enabled Admin Knife
Zombie Or Admin Knife Player Models To Work
The Plugins ...
*/
// Player Model In The "cstrike/models/player/metatronic_zombie/metatronic_zombie.mdl"
#define PLAYER_MODEL "metatronic_zombie"
// Zombie Configuration (String)
#define ZOMBIE_NAME "Robot"
#define ZOMBIE_INFO "\r[Admin]"
#define ZOMBIE_MODEL "metatronic_zombie"
#define ZOMBIE_CLAW_MDL "v_knife_metatronic.mdl"
#define ZOMBIE_BOMB_MDL "models/zombie_plague/v_bomb_metatronic_merah.mdl"
// Buff Sprites
#define BUFFSPR_MODEL "sprites/zb_skill_hpbuff.spr"
#define BUFFSPR_CLASSNAME "buffspr_skill"
#define BUFFSPR_SCALE 1.0
#define BUFFSPR_ORIGIN_X 0.0
#define BUFFSPR_ORIGIN_Y 0.0
#define BUFFSPR_ORIGIN_Z 50.0
// Heal Sprites
#define SPR_MODEL "sprites/zb_skill_hp.spr"
#define SPR_CLASSNAME "buffspr_skill"
#define SPR_SCALE 1.0
#define SPR_ORIGIN_X 0.0
#define SPR_ORIGIN_Y 0.0
#define SPR_ORIGIN_Z 50.0
// Zombie Configuration
#define ZOMBIE_HEALTH 4500
#define ZOMBIE_SPEED 250
#define ZOMBIE_GRAVITY 790
// Zombie Configuration (Skill)
#define ZOMBIE_SKILL_1_TIME 5 // Time GodMode + Regeneration
#define ZOMBIE_SKILL_1_COUNT 5 // Count Regen
#define ZOMBIE_SKILL_1_REGEN 100 // Health Regen
#define ZOMBIE_SKILL_2_FAKE_HEALTH 1000 // Fake Health Count
#define DELAY_SKILL_1 50 // Delay To Use The Skill Again
#define DELAY_SKILL_2 30 // Delay To Use The Skill Again
// Task
#define TASK_SKILL 10221
#define TASK_DELAY 10222
enum _:METATRONIC_SKILL
{
SKILL_READY = 0,
SKILL_USE,
SKILL_DELAY,
SKILL_DO
}
enum _:METATRONIC_ANIMATION
{
V_ANIM_SKILL_1 = 2,
P_ANIM_SKILL_1 = 150
}
enum _:METATRONIC_SOUND
{
SKILL_1 = 0,
SKILL_2,
PAIN_HURT,
PAIN_DEATH_1,
PAIN_DEATH_2,
PAIN_HEAL
}
enum _:METATRONIC_ENT
{
ENT_HEAD_SPR_HP_BUFF = 0,
ENT_HEAD_SPR_HP
}
new const MetatronicSound[][] =
{
"asep/metatronic_skill.wav",
"asep/metatronic_revival.wav",
"asep/metatronic_pain_hurt.wav",
"asep/metatronic_pain_death1.wav",
"asep/metatronic_pain_death2.wav",
"asep/metatronic_heal.wav"
}
new g_head_spr_ent[33][2]
new class_metatronic[33]
new g_skill1[33]
new g_skill1_regen_count[33]
new g_skill2[33]
new g_skill2_fake_health[33]
new Float:g_speed_hud[33]
new sync_hud[2]
new g_godmode_temp[33]
new g_HamBot
new index_metatronic
new g_metatronic
public plugin_init()
{
// Register Plugins .....
register_plugin(PLUGIN, VERSION, AUTHOR)
// Forward Event
register_event("DeathMsg", "Event_Death", "a")
register_event("CurWeapon","Event_CurWeapon","be","1=1")
register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0")
// Forward Log Event
register_logevent("Event_RoundEnd", 2, "1=Round_End")
// Forward Fakemeta
register_forward(FM_CmdStart , "Forward_CmdStart")
// Forward Ham
RegisterHam(Ham_TakeDamage, "player", "Forward_TakeDamage")
// Forward Think Entity
register_think(BUFFSPR_CLASSNAME, "Forward_Buffspr_Think")
register_think(SPR_MODEL, "Forward_Spr_Think")
// Create Sync Hud
sync_hud[0] = CreateHudSyncObj(12)
sync_hud[1] = CreateHudSyncObj(13)
g_metatronic = ze_register_zombie_class(ZOMBIE_NAME, ZOMBIE_INFO, ZOMBIE_HEALTH, ZOMBIE_SPEED, ZOMBIE_GRAVITY)
}
public plugin_precache()
{
for(new i = 0; i < sizeof(MetatronicSound); i++)
precache_sound(MetatronicSound[i])
new CLAW_MDL[101]
formatex(CLAW_MDL, charsmax(CLAW_MDL), "models/zombie_plague/%s", ZOMBIE_CLAW_MDL)
precache_model(CLAW_MDL)
precache_model(ZOMBIE_BOMB_MDL)
precache_viewmodel_sound(ZOMBIE_BOMB_MDL)
precache_model(BUFFSPR_MODEL)
precache_model(SPR_MODEL)
new player_models[101]
formatex(player_models, charsmax(player_models), "models/player/%s/%s.mdl", PLAYER_MODEL, PLAYER_MODEL)
index_metatronic = precache_model(player_models)
}
public client_putinserver(id)
{
if(!g_HamBot && is_user_bot(id))
{
g_HamBot = 1
set_task(0.1, "Do_RegisterHam", id)
}
}
public Do_RegisterHam(id)
{
RegisterHamFromEntity(Ham_TakeDamage, id, "Forward_TakeDamage")
}
public ze_user_humanized(id) metatronic_reset_value(id)
public Event_RoundEnd(id) metatronic_reset_value(id)
public Event_RoundStart(id) metatronic_reset_value(id)
public Event_Death()
{
new id = read_data(2)
if(ze_is_user_zombie(id) && class_metatronic[id])
{
engfunc(EngFunc_EmitSound, id, CHAN_ITEM, MetatronicSound[random_num(PAIN_DEATH_1, PAIN_DEATH_2)], 1.0, ATTN_NORM, 0, PITCH_NORM)
metatronic_reset_value(id)
}
}
public Event_CurWeapon(id)
{
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
if(g_skill1[id] != SKILL_USE) set_user_maxspeed(id, float(ZOMBIE_SPEED))
else if(g_skill2[id] != SKILL_USE) set_user_maxspeed(id, float(ZOMBIE_SPEED))
switch(read_data(2))
{
case CSW_SMOKEGRENADE: set_pev(id, pev_viewmodel2, ZOMBIE_BOMB_MDL)
case CSW_HEGRENADE: set_pev(id, pev_viewmodel2, ZOMBIE_BOMB_MDL)
case CSW_FLASHBANG: set_pev(id, pev_viewmodel2, ZOMBIE_BOMB_MDL)
}
}
public Forward_TakeDamage(victim, inflictor, attacker, Float:damage, dmgtype)
{
if(!is_user_connected(victim) || !is_user_connected(attacker))
return HAM_IGNORED
if(!ze_is_user_zombie(victim) || ze_is_user_zombie(attacker))
return HAM_IGNORED
if(!class_metatronic[victim])
return HAM_IGNORED
engfunc(EngFunc_EmitSound, victim, CHAN_BODY, MetatronicSound[PAIN_HURT], 1.0, ATTN_NORM, 0, PITCH_NORM)
if(g_skill1[victim] == SKILL_USE)
return HAM_SUPERCEDE
if(g_skill1[victim] == SKILL_USE && damage >= get_user_health(victim) && !g_godmode_temp[victim])
{
g_skill1[victim] = SKILL_DO
g_godmode_temp[victim] = 2
return HAM_SUPERCEDE
}
if(g_skill1[victim] == SKILL_DO && damage >= get_user_health(victim) && g_godmode_temp[victim] > 0)
{
g_godmode_temp[victim]--
return HAM_SUPERCEDE
}
if(g_skill2[victim] == SKILL_USE)
{
if(g_skill2_fake_health[victim] > 0)
{
g_skill2_fake_health[victim] -= floatround(damage)
g_speed_hud[victim] = 0.05
ExecuteHam(Ham_TakeDamage, victim, attacker, attacker, 0.0, dmgtype)
}
else if(g_skill2_fake_health[victim] <= 0)
{
g_skill2[victim] = SKILL_DELAY
g_skill2_fake_health[victim] = 0
g_speed_hud[victim] = 1.0
metatronic_remove_headspr(victim, ENT_HEAD_SPR_HP_BUFF)
set_task(float(DELAY_SKILL_2), "action_skill2_delay", victim+TASK_DELAY)
}
return HAM_SUPERCEDE
}
return HAM_HANDLED
}
public show_metatronic_hud(id)
{
static Temp_Skill_1[128], Temp_Skill_2[128]
static Red[2], Blue[2], Green[2]
if(g_skill1[id] == SKILL_READY)
{
Red[0] = 200
Green[0] = 200
Blue[0] = 200
formatex(Temp_Skill_1, sizeof(Temp_Skill_1), "[ E ] - Revival || Not Avaible")
}
else if(g_skill1[id] == SKILL_USE)
{
Red[0] = 200
Green[0] = 200
Blue[0] = 0
formatex(Temp_Skill_1, sizeof(Temp_Skill_1), "[ E ] - Revival || Using")
}
else if(g_skill1[id] == SKILL_DELAY)
{
Red[0] = 255
Green[0] = 0
Blue[0] = 0
formatex(Temp_Skill_1, sizeof(Temp_Skill_1), "[ E ] - Revival || Delayed")
}
else if(g_skill1[id] == SKILL_DO)
{
Red[0] = 0
Green[0] = 255
Blue[0] = 0
formatex(Temp_Skill_1, sizeof(Temp_Skill_1), "[ E ] - Revival || Avaible !!")
}
if(g_skill2[id] == SKILL_READY)
{
Red[1] = 0
Green[1] = 255
Blue[1] = 0
formatex(Temp_Skill_2, sizeof(Temp_Skill_2), "[ R ] - Fake Health || Ready")
}
else if(g_skill2[id] == SKILL_USE)
{
Red[1] = 0
Green[1] = 180
Blue[1] = 200
formatex(Temp_Skill_2, sizeof(Temp_Skill_2), "---- FAKE HEALTH: %i ----", g_skill2_fake_health[id])
}
else if(g_skill2[id] == SKILL_DELAY)
{
Red[1] = 255
Green[1] = 0
Blue[1] = 0
formatex(Temp_Skill_2, sizeof(Temp_Skill_2), "[ R ] - Fake Health || Delay ...")
}
set_hudmessage(Red[0], Green[0], Blue[0], -1.0, -0.79, 0, 2.0, 10.0)
ShowSyncHudMsg(id, sync_hud[0], Temp_Skill_1)
set_hudmessage(Red[1], Green[1], Blue[1], -1.0, -0.76, 0, 2.0, 10.0)
ShowSyncHudMsg(id, sync_hud[1], Temp_Skill_2)
}
public Forward_CmdStart(id, UC_Handle, seed)
{
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
static Float:CurrentTime, Float:g_hud_delay[33]
CurrentTime = get_gametime()
if(CurrentTime - g_speed_hud[id] > g_hud_delay[id])
{
show_metatronic_hud(id)
if(pev(id, pev_solid) == SOLID_NOT)
set_pev(id, pev_solid, SOLID_BBOX)
if(g_skill1[id] == SKILL_USE && g_skill1_regen_count[id] > 0)
{
set_user_health(id, get_user_health(id) + ZOMBIE_SKILL_1_REGEN)
engfunc(EngFunc_EmitSound, id, CHAN_ITEM, MetatronicSound[SKILL_2], 1.0, ATTN_NORM, 0, PITCH_NORM)
g_skill1_regen_count[id]--
}
if(g_speed_hud[id] < 1.0)
g_speed_hud[id] = 1.0
g_hud_delay[id] = CurrentTime
}
if(g_skill1[id] == SKILL_READY && get_user_health(id) <= 100)
g_skill1[id] = SKILL_DO
static PressedButton
PressedButton = get_uc(UC_Handle, UC_Buttons)
if(PressedButton & IN_USE)
{
if(g_skill1[id] != SKILL_DO)
return
set_uc(UC_Handle, UC_Buttons, IN_ATTACK2)
set_task(0.001, "action_skill_1", id+TASK_SKILL)
}
else if(PressedButton & IN_RELOAD)
{
if(g_skill2[id] != SKILL_READY)
return
set_task(0.001, "action_skill_2", id+TASK_SKILL)
}
}
public ze_user_infected(id)
{
if(ze_get_current_zombie_class(id) == g_metatronic)
{
class_metatronic[id] = true
show_metatronic_hud(id)
metatronic_reset_var_skill(id)
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_knife")
set_pdata_int(id, 491, index_metatronic, 5)
set_user_maxspeed(id, float(ZOMBIE_SPEED))
set_user_gravity(id, (float(ZOMBIE_GRAVITY)/800.0))
remove_task(id)
remove_task(id+TASK_SKILL)
remove_task(id+TASK_DELAY)
}
}
public ze_user_infected_pre(id)
{
if(!(get_user_flags(id) & ADMIN_SLAY))
{
if(ze_get_next_zombie_class(id) == g_metatronic)
{
ze_set_next_zombie_class(id, 0)
client_print(id, print_chat, "Данный класс только для Админов")
}
}
}
public action_skill_1(id)
{
id -= TASK_SKILL
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
if(g_skill1[id] != SKILL_DO)
return
g_skill1[id] = SKILL_USE
g_skill1_regen_count[id] = ZOMBIE_SKILL_1_COUNT
set_pdata_float(id, 83, 1.03, 5)
set_weapon_anim(id, V_ANIM_SKILL_1)
set_pev(id, pev_sequence, P_ANIM_SKILL_1)
set_pev(id, pev_framerate, 0.5)
engfunc(EngFunc_EmitSound, id, CHAN_WEAPON, MetatronicSound[SKILL_1], 1.0, ATTN_NORM, 0, PITCH_NORM)
new Float:fOrigin[3]
pev(id, pev_origin, fOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, fOrigin[0])
engfunc(EngFunc_WriteCoord, fOrigin[1])
engfunc(EngFunc_WriteCoord, fOrigin[2])
write_byte(30) // radius
write_byte(150) // r
write_byte(150) // g
write_byte(255) // b
write_byte(40) // life in 10's
write_byte(40) // decay rate in 10's
message_end()
// Create Head SPR (By Dias)
Create_Head_Sprites(id, ENT_HEAD_SPR_HP, SPR_CLASSNAME, SPR_MODEL, 0.75, 20.0, 5.0, 255.0, SPR_ORIGIN_X, SPR_ORIGIN_Y, SPR_ORIGIN_Z, 1, 0, 180, 220)
set_task(1.0, "action_reset_ability", id+TASK_SKILL)
set_task(float(ZOMBIE_SKILL_1_TIME), "reset_action_skill_1", id+TASK_SKILL)
}
public action_reset_ability(id)
{
id -= TASK_SKILL
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
if(g_skill1[id] != SKILL_USE)
return
set_pev(id, pev_framerate, 1.0)
}
public reset_action_skill_1(id)
{
id -= TASK_SKILL
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
if(g_skill1[id] != SKILL_USE)
return
g_skill1[id] = SKILL_DELAY
metatronic_remove_headspr(id, ENT_HEAD_SPR_HP)
set_task(float(DELAY_SKILL_1), "action_skill1_delay", id+TASK_DELAY)
}
public action_skill1_delay(id)
{
id -= TASK_DELAY
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
if(g_skill1[id] != SKILL_DELAY)
{
remove_task(id+TASK_DELAY)
return
}
g_skill1[id] = SKILL_READY
}
public action_skill_2(id)
{
id -= TASK_SKILL
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
if(g_skill2[id] != SKILL_READY)
return
g_skill2[id] = SKILL_USE
g_skill2_fake_health[id] = ZOMBIE_SKILL_2_FAKE_HEALTH
engfunc(EngFunc_EmitSound, id, CHAN_WEAPON, MetatronicSound[PAIN_HEAL], 1.0, ATTN_NORM, 0, PITCH_NORM)
engfunc(EngFunc_EmitSound, id, CHAN_ITEM, MetatronicSound[SKILL_2], 1.0, ATTN_NORM, 0, PITCH_NORM)
Create_Head_Sprites(id, ENT_HEAD_SPR_HP_BUFF, BUFFSPR_CLASSNAME, BUFFSPR_MODEL, 0.5, 0.0, 0.0, 255.0, BUFFSPR_ORIGIN_X, BUFFSPR_ORIGIN_Y, BUFFSPR_ORIGIN_Z, 1, 0, 180, 220)
}
public action_skill2_delay(id)
{
id -= TASK_DELAY
if(!is_user_alive(id))
return
if(!ze_is_user_zombie(id) || !class_metatronic[id])
return
if(g_skill2[id] != SKILL_DELAY)
{
remove_task(id+TASK_DELAY)
return
}
g_skill2[id] = SKILL_READY
g_skill2_fake_health[id] = 0
}
public Create_Head_Sprites(id, num, const Classname[], const Sprite[], Float:Scale, Float:Frame, Float:Time, Float:Transparent, Float:Forward, Float:Right, Float:Up, ColorActivate, Red, Green, Blue)
{
// Thanks To Dias ...
static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
if(!pev_valid(Ent))
return
g_head_spr_ent[id][num] = Ent
static Float:Origin[3]
pev(id, pev_origin, Origin)
Origin[0] += Forward
Origin[2] += Up
set_pev(Ent, pev_origin, Origin)
set_pev(Ent, pev_takedamage, DAMAGE_NO)
set_pev(Ent, pev_solid, SOLID_NOT)
set_pev(Ent, pev_movetype, MOVETYPE_FOLLOW)
set_pev(Ent, pev_classname, Classname)
engfunc(EngFunc_SetModel, Ent, Sprite)
set_pev(Ent, pev_renderfx, kRenderFxNone)
set_pev(Ent, pev_rendermode, kRenderTransAdd)
set_pev(Ent, pev_renderamt, Transparent)
new Color[3]
Color[0] = Red
Color[1] = Green
Color[2] = Blue
if(ColorActivate)
set_pev(Ent, pev_rendercolor, Color)
set_pev(Ent, pev_owner, id)
set_pev(Ent, pev_scale, Scale)
if(Time > 0.0)
set_pev(Ent, pev_fuser1, get_gametime() + Time)
set_pev(Ent, pev_fuser2, Forward)
set_pev(Ent, pev_fuser3, Right)
set_pev(Ent, pev_fuser4, Up)
set_pev(Ent, pev_frame, 0.0)
set_pev(Ent, pev_iuser1, floatround(Frame))
set_pev(Ent, pev_nextthink, get_gametime() + 0.01)
}
public Forward_Buffspr_Think(ent)
{
if(!pev_valid(ent))
return
static Float:Origin[3], owner
owner = pev(ent, pev_owner)
pev(owner, pev_origin, Origin)
Origin[0] += pev(ent, pev_fuser2)
Origin[1] += pev(ent, pev_fuser3)
Origin[2] += pev(ent, pev_fuser4)
engfunc(EngFunc_SetOrigin, ent, Origin)
set_pev(ent, pev_nextthink, get_gametime() + 0.000001)
}
public Forward_Spr_Think(ent)
{
if(!pev_valid(ent))
return
static Float:Origin[3], owner
static Float:fFrame
owner = pev(ent, pev_owner)
pev(owner, pev_origin, Origin)
pev(ent, pev_frame, fFrame)
fFrame += 1.0
if(fFrame > 20.0) fFrame = 0.0
Origin[0] += pev(ent, pev_fuser2)
Origin[1] += pev(ent, pev_fuser3)
Origin[2] += pev(ent, pev_fuser4)
set_pev(ent, pev_frame, fFrame)
engfunc(EngFunc_SetOrigin, ent, Origin)
set_pev(ent, pev_nextthink, get_gametime() + 0.001)
static Float:fTimeRemove
pev(ent, pev_fuser1, fTimeRemove)
if(get_gametime() >= pev(ent, pev_fuser1) || g_skill1[owner] != SKILL_USE)
{
engfunc(EngFunc_RemoveEntity, ent)
return
}
}
public metatronic_reset_value(id)
{
class_metatronic[id] = false
metatronic_reset_var_skill(id)
}
public metatronic_reset_var_skill(id)
{
g_skill1[id] = 0
g_skill2[id] = 0
g_skill1_regen_count[id] = 0
g_skill2_fake_health[id] = 0
g_speed_hud[id] = 1.0
if(pev_valid(g_head_spr_ent[id][ENT_HEAD_SPR_HP]))
{
remove_entity(g_head_spr_ent[id][ENT_HEAD_SPR_HP])
g_head_spr_ent[id][ENT_HEAD_SPR_HP] = 0
}
if(pev_valid(g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF]))
{
remove_entity(g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF])
g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF] = 0
}
}
public metatronic_remove_headspr(id, num)
{
if(num == ENT_HEAD_SPR_HP)
{
if(pev_valid(g_head_spr_ent[id][ENT_HEAD_SPR_HP]))
{
remove_entity(g_head_spr_ent[id][ENT_HEAD_SPR_HP])
g_head_spr_ent[id][ENT_HEAD_SPR_HP] = 0
}
}
else if(num == ENT_HEAD_SPR_HP_BUFF)
{
if(pev_valid(g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF]))
{
remove_entity(g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF])
g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF] = 0
}
}
else if(num == 2)
{
if(pev_valid(g_head_spr_ent[id][ENT_HEAD_SPR_HP]))
{
remove_entity(g_head_spr_ent[id][ENT_HEAD_SPR_HP])
g_head_spr_ent[id][ENT_HEAD_SPR_HP] = 0
}
if(pev_valid(g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF]))
{
remove_entity(g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF])
g_head_spr_ent[id][ENT_HEAD_SPR_HP_BUFF] = 0
}
}
}
stock set_weapon_anim(id, anim)
{
set_pev(id, pev_weaponanim, anim)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = id)
write_byte(anim)
write_byte(pev(id, pev_body))
message_end()
}
stock precache_viewmodel_sound(const model[]) // I Get This From BTE
{
new file, i, k
if((file = fopen(model, "rt")))
{
new szsoundpath[64], NumSeq, SeqID, Event, NumEvents, EventID
fseek(file, 164, SEEK_SET)
fread(file, NumSeq, BLOCK_INT)
fread(file, SeqID, BLOCK_INT)
for(i = 0; i < NumSeq; i++)
{
fseek(file, SeqID + 48 + 176 * i, SEEK_SET)
fread(file, NumEvents, BLOCK_INT)
fread(file, EventID, BLOCK_INT)
fseek(file, EventID + 176 * i, SEEK_SET)
// The Output Is All Sound To Precache In ViewModels (GREAT :V)
for(k = 0; k < NumEvents; k++)
{
fseek(file, EventID + 4 + 76 * k, SEEK_SET)
fread(file, Event, BLOCK_INT)
fseek(file, 4, SEEK_CUR)
if(Event != 5004)
continue
fread_blocks(file, szsoundpath, 64, BLOCK_CHAR)
if(strlen(szsoundpath))
{
strtolower(szsoundpath)
engfunc(EngFunc_PrecacheSound, szsoundpath)
}
}
}
}
fclose(file)
}
- DarkZombie
- Member
- Posts: 76
- Joined: 5 years ago
- Contact:
L 10/03/2018 - 22:24:00: [AMXX] Plugin "zp_class_cso_lilith.amxx" failed to load: Plugin uses an unknown function (name "zp_set_user_zombie_class") - check your modules.ini.
L 10/03/2018 - 22:24:00: [AMXX] Plugin "zp_class_cso_metatronic.amxx" failed to load: Plugin uses an unknown function (name "zp_set_user_zombie_class") - check your
L 10/03/2018 - 22:24:00: [AMXX] Plugin "zp_class_cso_metatronic.amxx" failed to load: Plugin uses an unknown function (name "zp_set_user_zombie_class") - check your
- Night Fury
- Mod Developer
- Posts: 677
- Joined: 7 years ago
- Contact:
Make sure you used my codes because i have tried to compile & i got no errors.DarkZombie wrote: ↑5 years ago L 10/03/2018 - 22:24:00: [AMXX] Plugin "zp_class_cso_lilith.amxx" failed to load: Plugin uses an unknown function (name "zp_set_user_zombie_class") - check your modules.ini.
L 10/03/2018 - 22:24:00: [AMXX] Plugin "zp_class_cso_metatronic.amxx" failed to load: Plugin uses an unknown function (name "zp_set_user_zombie_class") - check your
- DarkZombie
- Member
- Posts: 76
- Joined: 5 years ago
- Contact:
It does not work for me.
- DarkZombie
- Member
- Posts: 76
- Joined: 5 years ago
- Contact:
can not be used, check it
- Night Fury
- Mod Developer
- Posts: 677
- Joined: 7 years ago
- Contact:
Compiled fine ( i call the file t.sma ).
-
- Member
- Posts: 27
- Joined: 5 years ago
- Contact:
the codes compile fine, the error is from the server console when you type amxx plugins. Or from server error logs.Jack GamePlay wrote: ↑5 years ago Compiled fine ( i call the file t.sma ).
Screenshot_2.jpg
Screenshot_3.jpg
Load fails: Plugin uses an unknown function (name "ze_set_next_zombie_class") - check your modules.ini.
- Night Fury
- Mod Developer
- Posts: 677
- Joined: 7 years ago
- Contact:
Then go to your code & find that native & replace it with this:shady101852 wrote: ↑5 years ago
the codes compile fine, the error is from the server console when you type amxx plugins. Or from server error logs.
Load fails: Plugin uses an unknown function (name "ze_set_next_zombie_class") - check your modules.ini.
Code: Select all
ze_set_next_zombie_class
-
- Member
- Posts: 27
- Joined: 5 years ago
- Contact:
it seems i was missing the zombie classes plugin lol. I have a request if you could for that first zombie. The teleportation seems to be limited to only the ground under the player, not able to teleport to walls or in the middle of the air. Can you make it possible, but still avoid getting the zombie stuck in the wall please? It would be a good change because the way it is now the teleportation is not much useful against running humans.Jack GamePlay wrote: ↑5 years agoThen go to your code & find that native & replace it with this:shady101852 wrote: ↑5 years ago
the codes compile fine, the error is from the server console when you type amxx plugins. Or from server error logs.
Load fails: Plugin uses an unknown function (name "ze_set_next_zombie_class") - check your modules.ini.Then recompile your code.Code: Select all
ze_set_next_zombie_class
- DarkZombie
- Member
- Posts: 76
- Joined: 5 years ago
- Contact:
still dont works for me when try compile write ze_set_next_zombie_class missing
Create an account or sign in to join the discussion
You need to be a member in order to post a reply
Create an account
Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute
Sign in
Who is online
Users browsing this forum: No registered users and 3 guests