Raised This Month: $ Target: $400
 0% 

Deleted


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
B7PK
Member
Join Date: Apr 2016
Location: palestine
Old 05-06-2016 , 10:22   Deleted
Reply With Quote #1

Deleted

Last edited by B7PK; 10-15-2016 at 17:46.
B7PK is offline
wickedd
Veteran Member
Join Date: Nov 2009
Old 05-06-2016 , 16:22   Re: Help please
Reply With Quote #2

This is not the request forum. Stop posting here if you don't want to learn how to code.
__________________
Just buy the fucking game!!!!
I hate No-Steamers and lazy ass people.
wickedd is offline
Old 05-06-2016, 16:50
B7PK
This message has been deleted by B7PK.
wickedd
Veteran Member
Join Date: Nov 2009
Old 05-06-2016 , 17:35   Re: Help please
Reply With Quote #3

Go post in the request forum that's what it's for.
__________________
Just buy the fucking game!!!!
I hate No-Steamers and lazy ass people.
wickedd is offline
B7PK
Member
Join Date: Apr 2016
Location: palestine
Old 05-06-2016 , 18:15   Re: Help please
Reply With Quote #4

i think this is the beast forum...and i cant take help please guy i need it :/

and i want know what is what is meant by the (Открываем исходник и ищем такую строчку) in link
I've translated it did not understand :\
__________________
B7PK is offline
Drissdev1
Senior Member
Join Date: Jun 2014
Old 05-06-2016 , 18:41   Re: Help please
Reply With Quote #5

Post Your Sma mod
__________________
Drissdev1 is offline
B7PK
Member
Join Date: Apr 2016
Location: palestine
Old 05-07-2016 , 12:16   Re: Help please
Reply With Quote #6

Quote:
Originally Posted by Drissdev1 View Post
Post Your Sma mod
my mod is zp 5.0.8
__________________
B7PK is offline
abood alnjjar
Member
Join Date: Oct 2015
Location: palestine
Old 05-07-2016 , 18:08   Re: Help please
Reply With Quote #7

Lol make it for me give u steam accont cs 1.6 xD
__________________
abood alnjjar is offline
Drissdev1
Senior Member
Join Date: Jun 2014
Old 05-08-2016 , 12:01   Re: Help please
Reply With Quote #8

go test remplace zp50_class_zombie.amxx ...

PHP Code:
/*================================================================================
    
    --------------------------
    -*- [ZP] Class: Zombie -*-
    --------------------------
    
    This plugin is part of Zombie Plague Mod and is distributed under the
    terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
    
================================================================================*/

#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <amx_settings_api>
#include <cs_player_models_api>
#include <cs_weap_models_api>
#include <cs_maxspeed_api>
#include <cs_weap_restrict_api>
#include <zp50_core>
#include <zp50_colorchat>
#include <zp50_class_zombie_const>
#include <nvault>

// Zombie Classes file
new const ZP_ZOMBIECLASSES_FILE[] = "zp_zombieclasses.ini"

#define MAXPLAYERS 32

#define ZOMBIES_DEFAULT_NAME "Zombie"
#define ZOMBIES_DEFAULT_DESCRIPTION "Default"
#define ZOMBIES_DEFAULT_HEALTH 1800
#define ZOMBIES_DEFAULT_SPEED 0.75
#define ZOMBIES_DEFAULT_GRAVITY 1.0
#define ZOMBIES_DEFAULT_MODEL "zombie"
#define ZOMBIES_DEFAULT_CLAWMODEL "models/zombie_plague/v_knife_zombie.mdl"
#define ZOMBIES_DEFAULT_KNOCKBACK 1.0

// Allowed weapons for zombies
const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)
const 
ZOMBIE_DEFAULT_ALLOWED_WEAPON CSW_KNIFE

// CS Player PData Offsets (win32)
const OFFSET_CSMENUCODE 205

// For class list menu handlers
#define MENU_PAGE_CLASS g_menu_data[id]
new g_menu_data[MAXPLAYERS+1]

enum _:TOTAL_FORWARDS
{
    
FW_CLASS_SELECT_PRE 0
}
new 
g_Forwards[TOTAL_FORWARDS]
new 
g_ForwardResult

new g_ZombieClassCount
new Array:g_ZombieClassRealName
new Array:g_ZombieClassName
new Array:g_ZombieClassDesc
new Array:g_ZombieClassHealth
new Array:g_ZombieClassSpeed
new Array:g_ZombieClassGravity
new Array:g_ZombieClassKnockbackFile
new Array:g_ZombieClassKnockback
new Array:g_ZombieClassModelsFile
new Array:g_ZombieClassModelsHandle
new Array:g_ZombieClassClawsFile
new Array:g_ZombieClassClawsHandle
new g_ZombieClass[MAXPLAYERS+1]
new 
g_ZombieClassNext[MAXPLAYERS+1]
new 
g_AdditionalMenuText[32]

new 
g_steamid[32]
new 
value_steamid[64]
new 
value_amount[64]
new 
g_vault

public plugin_init()
{
    
register_plugin("[ZP] Class: Zombie"ZP_VERSION_STRING"ZP Dev Team")
    
    
register_clcmd("say /zclass""show_menu_zombieclass")
    
register_clcmd("say /class""show_class_menu")
        
    
g_Forwards[FW_CLASS_SELECT_PRE] = CreateMultiForward("zp_fw_class_zombie_select_pre"ET_CONTINUEFP_CELLFP_CELL)
}

public 
plugin_precache()
{
    new 
model_path[128]
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%s.mdl"ZOMBIES_DEFAULT_MODELZOMBIES_DEFAULT_MODEL)
    
precache_model(model_path)
    
// Support modelT.mdl files
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%sT.mdl"ZOMBIES_DEFAULT_MODELZOMBIES_DEFAULT_MODEL)
    if (
file_exists(model_path)) precache_model(model_path)
    
    
precache_model(ZOMBIES_DEFAULT_CLAWMODEL)
}

public 
plugin_cfg()
{
    
// No classes loaded, add default zombie class
    
if (g_ZombieClassCount 1)
    {
        
ArrayPushString(g_ZombieClassRealNameZOMBIES_DEFAULT_NAME)
        
ArrayPushString(g_ZombieClassNameZOMBIES_DEFAULT_NAME)
        
ArrayPushString(g_ZombieClassDescZOMBIES_DEFAULT_DESCRIPTION)
        
ArrayPushCell(g_ZombieClassHealthZOMBIES_DEFAULT_HEALTH)
        
ArrayPushCell(g_ZombieClassSpeedZOMBIES_DEFAULT_SPEED)
        
ArrayPushCell(g_ZombieClassGravityZOMBIES_DEFAULT_GRAVITY)
        
ArrayPushCell(g_ZombieClassKnockbackFilefalse)
        
ArrayPushCell(g_ZombieClassKnockbackZOMBIES_DEFAULT_KNOCKBACK)
        
ArrayPushCell(g_ZombieClassModelsFilefalse)
        
ArrayPushCell(g_ZombieClassModelsHandleInvalid_Array)
        
ArrayPushCell(g_ZombieClassClawsFilefalse)
        
ArrayPushCell(g_ZombieClassClawsHandleInvalid_Array)
        
g_ZombieClassCount++
    }
}

public 
plugin_natives()
{
    
register_library("zp50_class_zombie")
    
register_native("zp_class_zombie_get_current""native_class_zombie_get_current")
    
register_native("zp_class_zombie_get_next""native_class_zombie_get_next")
    
register_native("zp_class_zombie_set_next""native_class_zombie_set_next")
    
register_native("zp_class_zombie_get_max_health""_class_zombie_get_max_health")
    
register_native("zp_class_zombie_register""native_class_zombie_register")
    
register_native("zp_class_zombie_register_model""_class_zombie_register_model")
    
register_native("zp_class_zombie_register_claw""_class_zombie_register_claw")
    
register_native("zp_class_zombie_register_kb""native_class_zombie_register_kb")
    
register_native("zp_class_zombie_get_id""native_class_zombie_get_id")
    
register_native("zp_class_zombie_get_name""native_class_zombie_get_name")
    
register_native("zp_class_zombie_get_real_name""_class_zombie_get_real_name")
    
register_native("zp_class_zombie_get_desc""native_class_zombie_get_desc")
    
register_native("zp_class_zombie_get_kb""native_class_zombie_get_kb")
    
register_native("zp_class_zombie_get_count""native_class_zombie_get_count")
    
register_native("zp_class_zombie_show_menu""native_class_zombie_show_menu")
    
register_native("zp_class_zombie_menu_text_add""_class_zombie_menu_text_add")
    
    
// Initialize dynamic arrays
    
g_ZombieClassRealName ArrayCreate(321)
    
g_ZombieClassName ArrayCreate(321)
    
g_ZombieClassDesc ArrayCreate(321)
    
g_ZombieClassHealth ArrayCreate(11)
    
g_ZombieClassSpeed ArrayCreate(11)
    
g_ZombieClassGravity ArrayCreate(11)
    
g_ZombieClassKnockback ArrayCreate(11)
    
g_ZombieClassKnockbackFile ArrayCreate(11)
    
g_ZombieClassModelsHandle ArrayCreate(11)
    
g_ZombieClassModelsFile ArrayCreate(11)
    
g_ZombieClassClawsHandle ArrayCreate(11)
    
g_ZombieClassClawsFile ArrayCreate(11)
}

public 
client_putinserver(id)
{
    
g_ZombieClass[id] = ZP_INVALID_ZOMBIE_CLASS
    g_ZombieClassNext
[id] = ZP_INVALID_ZOMBIE_CLASS
    load_zombieclass
(id)
}

public 
client_disconnect(id)
{
    
// Reset remembered menu pages
    
MENU_PAGE_CLASS 0
    save_zombieclass
(id)
}

public 
show_class_menu(id)
{
    if (
zp_core_is_zombie(id))
        
show_menu_zombieclass(id)
}

public 
show_menu_zombieclass(id)
{
    static 
menu[128], name[32], description[32], transkey[64]
    new 
menuiditemdata[2], index
    
    formatex
(menucharsmax(menu), "%L\r"id"MENU_ZCLASS")
    
menuid menu_create(menu"menu_zombieclass")
    
    for (
index 0index g_ZombieClassCountindex++)
    {
        
// Additional text to display
        
g_AdditionalMenuText[0] = 0
        
        
// Execute class select attempt forward
        
ExecuteForward(g_Forwards[FW_CLASS_SELECT_PRE], g_ForwardResultidindex)
        
        
// Show class to player?
        
if (g_ForwardResult >= ZP_CLASS_DONT_SHOW)
            continue;
        
        
ArrayGetString(g_ZombieClassNameindexnamecharsmax(name))
        
ArrayGetString(g_ZombieClassDescindexdescriptioncharsmax(description))
        
        
// ML support for class name + description
        
formatex(transkeycharsmax(transkey), "ZOMBIEDESC %s"name)
        if (
GetLangTransKey(transkey) != TransKey_Badformatex(descriptioncharsmax(description), "%L"idtranskey)
        
formatex(transkeycharsmax(transkey), "ZOMBIENAME %s"name)
        if (
GetLangTransKey(transkey) != TransKey_Badformatex(namecharsmax(name), "%L"idtranskey)
        
        
// Class available to player?
        
if (g_ForwardResult >= ZP_CLASS_NOT_AVAILABLE)
            
formatex(menucharsmax(menu), "\d%s %s %s"namedescriptiong_AdditionalMenuText)
        
// Class is current class?
        
else if (index == g_ZombieClassNext[id])
            
formatex(menucharsmax(menu), "\r%s \y%s \w%s"namedescriptiong_AdditionalMenuText)
        else
            
formatex(menucharsmax(menu), "%s \y%s \w%s"namedescriptiong_AdditionalMenuText)
        
        
itemdata[0] = index
        itemdata
[1] = 0
        menu_additem
(menuidmenuitemdata)
    }
    
    
// No classes to display?
    
if (menu_items(menuid) <= 0)
    {
        
zp_colored_print(id"%L"id"NO_CLASSES")
        
menu_destroy(menuid)
        return;
    }
    
    
// Back - Next - Exit
    
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
    
menu_setprop(menuidMPROP_BACKNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
    
menu_setprop(menuidMPROP_NEXTNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
    
menu_setprop(menuidMPROP_EXITNAMEmenu)
    
    
// If remembered page is greater than number of pages, clamp down the value
    
MENU_PAGE_CLASS min(MENU_PAGE_CLASSmenu_pages(menuid)-1)
    
    
// Fix for AMXX custom menus
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
menu_display(idmenuidMENU_PAGE_CLASS)
}

public 
menu_zombieclass(idmenuiditem)
{
    
// Menu was closed
    
if (item == MENU_EXIT)
    {
        
MENU_PAGE_CLASS 0
        menu_destroy
(menuid)
        return 
PLUGIN_HANDLED;
    }
    
    
// Remember class menu page
    
MENU_PAGE_CLASS item 7
    
    
// Retrieve class index
    
new itemdata[2], dummyindex
    menu_item_getinfo
(menuiditemdummyitemdatacharsmax(itemdata), __dummy)
    
index itemdata[0]
    
    
// Execute class select attempt forward
    
ExecuteForward(g_Forwards[FW_CLASS_SELECT_PRE], g_ForwardResultidindex)
    
    
// Class available to player?
    
if (g_ForwardResult >= ZP_CLASS_NOT_AVAILABLE)
    {
        
menu_destroy(menuid)
        return 
PLUGIN_HANDLED;
    }
    
    
// Make selected class next class for player
    
g_ZombieClassNext[id] = index
    
    g_vault 
nvault_open("zclass")

    
get_user_authid(idg_steamidcharsmax(g_steamid))

    
formatex(value_steamidcharsmaxvalue_steamid ), "%sZCLASS"g_steamid)
    
formatex(value_amountcharsmaxvalue_amount ), "%d"g_ZombieClassNext[id])

    
nvault_set(g_vaultvalue_steamidvalue_amount)

    
nvault_close(g_vault)
    
    new 
name[32], transkey[64]
    new 
Float:maxspeed Float:ArrayGetCell(g_ZombieClassSpeedg_ZombieClassNext[id])
    
ArrayGetString(g_ZombieClassNameg_ZombieClassNext[id], namecharsmax(name))
    
// ML support for class name
    
formatex(transkeycharsmax(transkey), "ZOMBIENAME %s"name)
    if (
GetLangTransKey(transkey) != TransKey_Badformatex(namecharsmax(name), "%L"idtranskey)
    
    
// Show selected zombie class
    
zp_colored_print(id"%L: %s"id"ZOMBIE_SELECT"name)
    
zp_colored_print(id"%L: %d %L: %d %L: %.2fx %L %.2fx"id"ZOMBIE_ATTRIB1"ArrayGetCell(g_ZombieClassHealthg_ZombieClassNext[id]), id"ZOMBIE_ATTRIB2"cs_maxspeed_display_value(maxspeed), id"ZOMBIE_ATTRIB3"Float:ArrayGetCell(g_ZombieClassGravityg_ZombieClassNext[id]), id"ZOMBIE_ATTRIB4"Float:ArrayGetCell(g_ZombieClassKnockbackg_ZombieClassNext[id]))
    
    
menu_destroy(menuid)
    return 
PLUGIN_HANDLED;
}

save_zombieclass(id)
{
    
g_vault nvault_open("zclass")

    
get_user_authid(idg_steamidcharsmax(g_steamid))

    
formatex(value_steamidcharsmax(value_steamid), "%s_"g_steamid)
    
formatex(value_amountcharsmax(value_amount), "%d"g_ZombieClassNext[id])

    
nvault_set(g_vaultvalue_steamidvalue_amount)

    
nvault_close(g_vault)
}

load_zombieclass(id)
{
    
g_vault nvault_open("zclass")

    
get_user_authid(idg_steamidcharsmax(g_steamid))
    
formatex(value_steamidcharsmax(value_steamid), "%s_"g_steamid)

    if(
nvault_get(g_vaultvalue_steamid))
    {
        
g_ZombieClass[id] = nvault_get(g_vaultvalue_steamid)
        
g_ZombieClassNext[id] = nvault_get(g_vaultvalue_steamid)
    }

    
nvault_close(g_vault)
}

public 
zp_fw_core_infect_post(idattacker)
{
    
// Show zombie class menu if they haven't chosen any (e.g. just connected)
    
if (g_ZombieClassNext[id] == ZP_INVALID_ZOMBIE_CLASS)
    {
        if (
g_ZombieClassCount 1)
            
show_menu_zombieclass(id)
        else 
// If only one class is registered, choose it automatically
            
g_ZombieClassNext[id] = 0
    
}
    
    
// Bots pick class automatically
    
if (is_user_bot(id))
    {
        
// Try choosing class
        
new indexstart_index random_num(0g_ZombieClassCount 1)
        for (
index start_index 1/* no condition */index++)
        {
            
// Start over when we reach the end
            
if (index >= g_ZombieClassCount)
                
index 0
            
            
// Execute class select attempt forward
            
ExecuteForward(g_Forwards[FW_CLASS_SELECT_PRE], g_ForwardResultidindex)
            
            
// Class available to player?
            
if (g_ForwardResult ZP_CLASS_NOT_AVAILABLE)
            {
                
g_ZombieClassNext[id] = index
                
break;
            }
            
            
// Loop completed, no class could be chosen
            
if (index == start_index)
                break;
        }
    }
    
    
// Set selected zombie class. If none selected yet, use the first one
    
g_ZombieClass[id] = g_ZombieClassNext[id]
    if (
g_ZombieClass[id] == ZP_INVALID_ZOMBIE_CLASSg_ZombieClass[id] = 0
    
    
// Apply zombie attributes
    
set_user_health(idArrayGetCell(g_ZombieClassHealthg_ZombieClass[id]))
    
set_user_gravity(idFloat:ArrayGetCell(g_ZombieClassGravityg_ZombieClass[id]))
    
cs_set_player_maxspeed_auto(idFloat:ArrayGetCell(g_ZombieClassSpeedg_ZombieClass[id]))
    
    
// Apply zombie player model
    
new Array:class_models ArrayGetCell(g_ZombieClassModelsHandleg_ZombieClass[id])
    if (
class_models != Invalid_Array)
    {
        new 
index random_num(0ArraySize(class_models) - 1)
        new 
player_model[32]
        
ArrayGetString(class_modelsindexplayer_modelcharsmax(player_model))
        
cs_set_player_model(idplayer_model)
    }
    else
    {
        
// No models registered for current class, use default model
        
cs_set_player_model(idZOMBIES_DEFAULT_MODEL)
    }
    
    
// Apply zombie claw model
    
new claw_model[64], Array:class_claws ArrayGetCell(g_ZombieClassClawsHandleg_ZombieClass[id])
    if (
class_claws != Invalid_Array)
    {
        new 
index random_num(0ArraySize(class_claws) - 1)
        
ArrayGetString(class_clawsindexclaw_modelcharsmax(claw_model))
        
cs_set_player_view_model(idCSW_KNIFEclaw_model)
    }
    else
    {
        
// No models registered for current class, use default model
        
cs_set_player_view_model(idCSW_KNIFEZOMBIES_DEFAULT_CLAWMODEL)
    }
    
cs_set_player_weap_model(idCSW_KNIFE"")
    
    
// Apply weapon restrictions for zombies
    
cs_set_player_weap_restrict(idtrueZOMBIE_ALLOWED_WEAPONS_BITSUMZOMBIE_DEFAULT_ALLOWED_WEAPON)
}

public 
zp_fw_core_cure(idattacker)
{
    
// Remove zombie claw models
    
cs_reset_player_view_model(idCSW_KNIFE)
    
cs_reset_player_weap_model(idCSW_KNIFE)
    
    
// Remove zombie weapon restrictions
    
cs_set_player_weap_restrict(idfalse)
}

public 
native_class_zombie_get_current(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
ZP_INVALID_ZOMBIE_CLASS;
    }
    
    return 
g_ZombieClass[id];
}

public 
native_class_zombie_get_next(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
ZP_INVALID_ZOMBIE_CLASS;
    }
    
    return 
g_ZombieClassNext[id];
}

public 
native_class_zombie_set_next(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
false;
    }
    
    new 
classid get_param(2)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
g_ZombieClassNext[id] = classid
    
return true;
}

public 
_class_zombie_get_max_health(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return -
1;
    }
    
    new 
classid get_param(2)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return -
1;
    }
    
    return 
ArrayGetCell(g_ZombieClassHealthclassid);
}

public 
native_class_zombie_register(plugin_idnum_params)
{
    new 
name[32]
    
get_string(1namecharsmax(name))
    
    if (
strlen(name) < 1)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Can't register zombie class with an empty name")
        return 
ZP_INVALID_ZOMBIE_CLASS;
    }
    
    new 
indexzombieclass_name[32]
    for (
index 0index g_ZombieClassCountindex++)
    {
        
ArrayGetString(g_ZombieClassRealNameindexzombieclass_namecharsmax(zombieclass_name))
        if (
equali(namezombieclass_name))
        {
            
log_error(AMX_ERR_NATIVE"[ZP] Zombie class already registered (%s)"name)
            return 
ZP_INVALID_ZOMBIE_CLASS;
        }
    }
    
    new 
description[32]
    
get_string(2descriptioncharsmax(description))
    new 
health get_param(3)
    new 
Float:speed get_param_f(4)
    new 
Float:gravity get_param_f(5)
    
    
// Load settings from zombie classes file
    
new real_name[32]
    
copy(real_namecharsmax(real_name), name)
    
ArrayPushString(g_ZombieClassRealNamereal_name)
    
    
// Name
    
if (!amx_load_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"NAME"namecharsmax(name)))
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"NAME"name)
    
ArrayPushString(g_ZombieClassNamename)
    
    
// Description
    
if (!amx_load_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"INFO"descriptioncharsmax(description)))
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"INFO"description)
    
ArrayPushString(g_ZombieClassDescdescription)
    
    
// Models
    
new Array:class_models ArrayCreate(321)
    
amx_load_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"MODELS"class_models)
    if (
ArraySize(class_models) > 0)
    {
        
ArrayPushCell(g_ZombieClassModelsFiletrue)
        
        
// Precache player models
        
new indexplayer_model[32], model_path[128]
        for (
index 0index ArraySize(class_models); index++)
        {
            
ArrayGetString(class_modelsindexplayer_modelcharsmax(player_model))
            
formatex(model_pathcharsmax(model_path), "models/player/%s/%s.mdl"player_modelplayer_model)
            
precache_model(model_path)
            
// Support modelT.mdl files
            
formatex(model_pathcharsmax(model_path), "models/player/%s/%sT.mdl"player_modelplayer_model)
            if (
file_exists(model_path)) precache_model(model_path)
        }
    }
    else
    {
        
ArrayPushCell(g_ZombieClassModelsFilefalse)
        
ArrayDestroy(class_models)
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"MODELS"ZOMBIES_DEFAULT_MODEL)
    }
    
ArrayPushCell(g_ZombieClassModelsHandleclass_models)
    
    
// Claw models
    
new Array:class_claws ArrayCreate(641)
    
amx_load_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"CLAWMODEL"class_claws)
    if (
ArraySize(class_claws) > 0)
    {
        
ArrayPushCell(g_ZombieClassClawsFiletrue)
        
        
// Precache claw models
        
new indexclaw_model[64]
        for (
index 0index ArraySize(class_claws); index++)
        {
            
ArrayGetString(class_clawsindexclaw_modelcharsmax(claw_model))
            
precache_model(claw_model)
        }
    }
    else
    {
        
ArrayPushCell(g_ZombieClassClawsFilefalse)
        
ArrayDestroy(class_claws)
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"CLAWMODEL"ZOMBIES_DEFAULT_CLAWMODEL)
    }
    
ArrayPushCell(g_ZombieClassClawsHandleclass_claws)
    
    
// Health
    
if (!amx_load_setting_int(ZP_ZOMBIECLASSES_FILEreal_name"HEALTH"health))
        
amx_save_setting_int(ZP_ZOMBIECLASSES_FILEreal_name"HEALTH"health)
    
ArrayPushCell(g_ZombieClassHealthhealth)
    
    
// Speed
    
if (!amx_load_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"SPEED"speed))
        
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"SPEED"speed)
    
ArrayPushCell(g_ZombieClassSpeedspeed)
    
    
// Gravity
    
if (!amx_load_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"GRAVITY"gravity))
        
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"GRAVITY"gravity)
    
ArrayPushCell(g_ZombieClassGravitygravity)
    
    
// Knockback
    
new Float:knockback ZOMBIES_DEFAULT_KNOCKBACK
    
if (!amx_load_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"KNOCKBACK"knockback))
    {
        
ArrayPushCell(g_ZombieClassKnockbackFilefalse)
        
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"KNOCKBACK"knockback)
    }
    else
        
ArrayPushCell(g_ZombieClassKnockbackFiletrue)
    
ArrayPushCell(g_ZombieClassKnockbackknockback)
    
    
g_ZombieClassCount++
    return 
g_ZombieClassCount 1;
}

public 
_class_zombie_register_model(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
// Player models already loaded from file
    
if (ArrayGetCell(g_ZombieClassModelsFileclassid))
        return 
true;
    
    new 
player_model[32]
    
get_string(2player_modelcharsmax(player_model))
    
    new 
model_path[128]
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%s.mdl"player_modelplayer_model)
    
    
precache_model(model_path)
    
    
// Support modelT.mdl files
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%sT.mdl"player_modelplayer_model)
    if (
file_exists(model_path)) precache_model(model_path)
    
    new Array:
class_models ArrayGetCell(g_ZombieClassModelsHandleclassid)
    
    
// No models registered yet?
    
if (class_models == Invalid_Array)
    {
        
class_models ArrayCreate(321)
        
ArraySetCell(g_ZombieClassModelsHandleclassidclass_models)
    }
    
ArrayPushString(class_modelsplayer_model)
    
    
// Save models to file
    
new real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
amx_save_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"MODELS"class_models)
    
    return 
true;
}

public 
_class_zombie_register_claw(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
// Claw models already loaded from file
    
if (ArrayGetCell(g_ZombieClassClawsFileclassid))
        return 
true;
    
    new 
claw_model[64]
    
get_string(2claw_modelcharsmax(claw_model))
    
    
precache_model(claw_model)
    
    new Array:
class_claws ArrayGetCell(g_ZombieClassClawsHandleclassid)
    
    
// No models registered yet?
    
if (class_claws == Invalid_Array)
    {
        
class_claws ArrayCreate(641)
        
ArraySetCell(g_ZombieClassClawsHandleclassidclass_claws)
    }
    
ArrayPushString(class_clawsclaw_model)
    
    
// Save models to file
    
new real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
amx_save_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"CLAWMODEL"class_claws)
    
    return 
true;
}

public 
native_class_zombie_register_kb(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
// Knockback already loaded from file
    
if (ArrayGetCell(g_ZombieClassKnockbackFileclassid))
        return 
true;
    
    new 
Float:knockback get_param_f(2)
    
    
// Set zombie class knockback
    
ArraySetCell(g_ZombieClassKnockbackclassidknockback)
    
    
// Save to file
    
new real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"KNOCKBACK"knockback)
    
    return 
true;
}

public 
native_class_zombie_get_id(plugin_idnum_params)
{
    new 
real_name[32]
    
get_string(1real_namecharsmax(real_name))
    
    
// Loop through every class
    
new indexzombieclass_name[32]
    for (
index 0index g_ZombieClassCountindex++)
    {
        
ArrayGetString(g_ZombieClassRealNameindexzombieclass_namecharsmax(zombieclass_name))
        if (
equali(real_namezombieclass_name))
            return 
index;
    }
    
    return 
ZP_INVALID_ZOMBIE_CLASS;
}

public 
native_class_zombie_get_name(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    new 
name[32]
    
ArrayGetString(g_ZombieClassNameclassidnamecharsmax(name))
    
    new 
len get_param(3)
    
set_string(2namelen)
    return 
true;
}


public 
_class_zombie_get_real_name(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    new 
real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
    new 
len get_param(3)
    
set_string(2real_namelen)
    return 
true;
}

public 
native_class_zombie_get_desc(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    new 
description[32]
    
ArrayGetString(g_ZombieClassDescclassiddescriptioncharsmax(description))
    
    new 
len get_param(3)
    
set_string(2descriptionlen)
    return 
true;
}

public 
Float:native_class_zombie_get_kb(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
ZOMBIES_DEFAULT_KNOCKBACK;
    }
    
    
// Return zombie class knockback)
    
return ArrayGetCell(g_ZombieClassKnockbackclassid);
}

public 
native_class_zombie_get_count(plugin_idnum_params)
{
    return 
g_ZombieClassCount;
}

public 
native_class_zombie_show_menu(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
false;
    }
    
    
show_menu_zombieclass(id)
    return 
true;
}

public 
_class_zombie_menu_text_add(plugin_idnum_params)
{
    static 
text[32]
    
get_string(1textcharsmax(text))
    
format(g_AdditionalMenuTextcharsmax(g_AdditionalMenuText), "%s%s"g_AdditionalMenuTexttext)

__________________

Last edited by Drissdev1; 05-08-2016 at 12:02.
Drissdev1 is offline
B7PK
Member
Join Date: Apr 2016
Location: palestine
Old 05-08-2016 , 16:12   Re: Help please
Reply With Quote #9

oky i will try thx
__________________
B7PK is offline
B7PK
Member
Join Date: Apr 2016
Location: palestine
Old 05-08-2016 , 16:29   Re: Help please
Reply With Quote #10

13 Error o.O
please help me pleaseeeee

Full Code:
PHP Code:
/*================================================================================
    
    --------------------------
    -*- [ZoZ] Class: Zombie -*-
    --------------------------
    
    This plugin is part of Zombie Plague Mod and is distributed under the
    terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
    
================================================================================*/

#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <amx_settings_api>
#include <cs_player_models_api>
#include <cs_weap_models_api>
#include <cs_maxspeed_api>
#include <cs_weap_restrict_api>
#include <zp50_core>
#include <zp50_colorchat>
#include <zp50_class_zombie_const>

// Zombie Classes file
new const ZP_ZOMBIECLASSES_FILE[] = "zp_zombieclasses.ini"

#define MAXPLAYERS 32

#define ZOMBIES_DEFAULT_NAME "Zombie"
#define ZOMBIES_DEFAULT_DESCRIPTION "Default"
#define ZOMBIES_DEFAULT_HEALTH 1800
#define ZOMBIES_DEFAULT_SPEED 0.75
#define ZOMBIES_DEFAULT_GRAVITY 1.0
#define ZOMBIES_DEFAULT_MODEL "zombie"
#define ZOMBIES_DEFAULT_CLAWMODEL "models/zombie_plague/v_knife_zombie.mdl"
#define ZOMBIES_DEFAULT_KNOCKBACK 1.0

// Allowed weapons for zombies
const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)
const 
ZOMBIE_DEFAULT_ALLOWED_WEAPON CSW_KNIFE

// CS Player PData Offsets (win32)
const OFFSET_CSMENUCODE 205

// For class list menu handlers
#define MENU_PAGE_CLASS g_menu_data[id]
new g_menu_data[MAXPLAYERS+1]

enum _:TOTAL_FORWARDS
{
    
FW_CLASS_SELECT_PRE 0,
    
FW_CLASS_SELECT_POST
}
new 
g_Forwards[TOTAL_FORWARDS]
new 
g_ForwardResult

new g_ZombieClassCount
new Array:g_ZombieClassRealName
new Array:g_ZombieClassName
new Array:g_ZombieClassDesc
new Array:g_ZombieClassHealth
new Array:g_ZombieClassSpeed
new Array:g_ZombieClassGravity
new Array:g_ZombieClassKnockbackFile
new Array:g_ZombieClassKnockback
new Array:g_ZombieClassModelsFile
new Array:g_ZombieClassModelsHandle
new Array:g_ZombieClassClawsFile
new Array:g_ZombieClassClawsHandle
new g_ZombieClass[MAXPLAYERS+1]
new 
g_ZombieClassNext[MAXPLAYERS+1]
new 
g_AdditionalMenuText[32]

public 
plugin_init()
{
    
register_plugin("[ZoZ] Class: Zombie"ZP_VERSION_STRING"ZP Dev Team")
    
    
register_clcmd("say /zclass""show_menu_zombieclass")
    
register_clcmd("say /class""show_class_menu")
    
    
g_Forwards[FW_CLASS_SELECT_PRE] = CreateMultiForward("zp_fw_class_zombie_select_pre"ET_CONTINUEFP_CELLFP_CELL)
    
g_Forwards[FW_CLASS_SELECT_POST] = CreateMultiForward("zp_fw_class_zombie_select_post"ET_CONTINUEFP_CELLFP_CELL)
}

public 
plugin_precache()
{
    new 
model_path[128]
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%s.mdl"ZOMBIES_DEFAULT_MODELZOMBIES_DEFAULT_MODEL)
    
precache_model(model_path)
    
// Support modelT.mdl files
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%sT.mdl"ZOMBIES_DEFAULT_MODELZOMBIES_DEFAULT_MODEL)
    if (
file_exists(model_path)) precache_model(model_path)
    
    
precache_model(ZOMBIES_DEFAULT_CLAWMODEL)
}

public 
plugin_cfg()
{
    
// No classes loaded, add default zombie class
    
if (g_ZombieClassCount 1)
    {
        
ArrayPushString(g_ZombieClassRealNameZOMBIES_DEFAULT_NAME)
        
ArrayPushString(g_ZombieClassNameZOMBIES_DEFAULT_NAME)
        
ArrayPushString(g_ZombieClassDescZOMBIES_DEFAULT_DESCRIPTION)
        
ArrayPushCell(g_ZombieClassHealthZOMBIES_DEFAULT_HEALTH)
        
ArrayPushCell(g_ZombieClassSpeedZOMBIES_DEFAULT_SPEED)
        
ArrayPushCell(g_ZombieClassGravityZOMBIES_DEFAULT_GRAVITY)
        
ArrayPushCell(g_ZombieClassKnockbackFilefalse)
        
ArrayPushCell(g_ZombieClassKnockbackZOMBIES_DEFAULT_KNOCKBACK)
        
ArrayPushCell(g_ZombieClassModelsFilefalse)
        
ArrayPushCell(g_ZombieClassModelsHandleInvalid_Array)
        
ArrayPushCell(g_ZombieClassClawsFilefalse)
        
ArrayPushCell(g_ZombieClassClawsHandleInvalid_Array)
        
g_ZombieClassCount++
    }
}

public 
plugin_natives()
{
    
register_library("zp50_class_zombie")
    
register_native("zp_class_zombie_get_current""native_class_zombie_get_current")
    
register_native("zp_class_zombie_get_next""native_class_zombie_get_next")
    
register_native("zp_class_zombie_set_next""native_class_zombie_set_next")
    
register_native("zp_class_zombie_get_max_health""_class_zombie_get_max_health")
    
register_native("zp_class_zombie_register""native_class_zombie_register")
    
register_native("zp_class_zombie_register_model""_class_zombie_register_model")
    
register_native("zp_class_zombie_register_claw""_class_zombie_register_claw")
    
register_native("zp_class_zombie_register_kb""native_class_zombie_register_kb")
    
register_native("zp_class_zombie_get_id""native_class_zombie_get_id")
    
register_native("zp_class_zombie_get_name""native_class_zombie_get_name")
    
register_native("zp_class_zombie_get_real_name""_class_zombie_get_real_name")
    
register_native("zp_class_zombie_get_desc""native_class_zombie_get_desc")
    
register_native("zp_class_zombie_get_kb""native_class_zombie_get_kb")
    
register_native("zp_class_zombie_get_count""native_class_zombie_get_count")
    
register_native("zp_class_zombie_show_menu""native_class_zombie_show_menu")
    
register_native("zp_class_zombie_menu_text_add""_class_zombie_menu_text_add")
    
    
// Initialize dynamic arrays
    
g_ZombieClassRealName ArrayCreate(321)
    
g_ZombieClassName ArrayCreate(321)
    
g_ZombieClassDesc ArrayCreate(321)
    
g_ZombieClassHealth ArrayCreate(11)
    
g_ZombieClassSpeed ArrayCreate(11)
    
g_ZombieClassGravity ArrayCreate(11)
    
g_ZombieClassKnockback ArrayCreate(11)
    
g_ZombieClassKnockbackFile ArrayCreate(11)
    
g_ZombieClassModelsHandle ArrayCreate(11)
    
g_ZombieClassModelsFile ArrayCreate(11)
    
g_ZombieClassClawsHandle ArrayCreate(11)
    
g_ZombieClassClawsFile ArrayCreate(11)
}

public 
client_putinserver(id)
{
    
g_ZombieClass[id] = ZP_INVALID_ZOMBIE_CLASS
    g_ZombieClassNext
[id] = ZP_INVALID_ZOMBIE_CLASS
}

public 
client_disconnect(id)
save_zombieclass(id)
public 
client_putinserver(id)
{
    
// Reset remembered menu pages
    
MENU_PAGE_CLASS 0
}

public 
show_class_menu(id)
{
    if (
zp_core_is_zombie(id))
        
show_menu_zombieclass(id)
}

public 
show_menu_zombieclass(id)
{
    static 
menu[128], name[32], description[32], transkey[64]
    new 
menuiditemdata[2], index
    
    formatex
(menucharsmax(menu), "%L\r"id"MENU_ZCLASS")
    
menuid menu_create(menu"menu_zombieclass")
    
    for (
index 0index g_ZombieClassCountindex++)
    {
        
// Additional text to display
        
g_AdditionalMenuText[0] = 0
        
        
// Execute class select attempt forward
        
ExecuteForward(g_Forwards[FW_CLASS_SELECT_PRE], g_ForwardResultidindex)
        
        
// Show class to player?
        
if (g_ForwardResult >= ZP_CLASS_DONT_SHOW)
            continue;
        
        
ArrayGetString(g_ZombieClassNameindexnamecharsmax(name))
        
ArrayGetString(g_ZombieClassDescindexdescriptioncharsmax(description))
        
        
// ML support for class name + description
        
formatex(transkeycharsmax(transkey), "ZOMBIEDESC %s"name)
        if (
GetLangTransKey(transkey) != TransKey_Badformatex(descriptioncharsmax(description), "%L"idtranskey)
        
formatex(transkeycharsmax(transkey), "ZOMBIENAME %s"name)
        if (
GetLangTransKey(transkey) != TransKey_Badformatex(namecharsmax(name), "%L"idtranskey)
        
        
// Class available to player?
        
if (g_ForwardResult >= ZP_CLASS_NOT_AVAILABLE)
            
formatex(menucharsmax(menu), "\d%s %s %s"namedescriptiong_AdditionalMenuText)
        
// Class is current class?
        
else if (index == g_ZombieClassNext[id])
            
formatex(menucharsmax(menu), "\r%s \y%s \w%s"namedescriptiong_AdditionalMenuText)
        else
            
formatex(menucharsmax(menu), "%s \y%s \w%s"namedescriptiong_AdditionalMenuText)
        
        
itemdata[0] = index
        itemdata
[1] = 0
        menu_additem
(menuidmenuitemdata)
    }
    
    
// No classes to display?
    
if (menu_items(menuid) <= 0)
    {
        
zp_colored_print(id"%L"id"NO_CLASSES")
        
menu_destroy(menuid)
        return;
    }
    
    
// Back - Next - Exit
    
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
    
menu_setprop(menuidMPROP_BACKNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
    
menu_setprop(menuidMPROP_NEXTNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
    
menu_setprop(menuidMPROP_EXITNAMEmenu)
    
    
// If remembered page is greater than number of pages, clamp down the value
    
MENU_PAGE_CLASS min(MENU_PAGE_CLASSmenu_pages(menuid)-1)
    
    
// Fix for AMXX custom menus
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
menu_display(idmenuidMENU_PAGE_CLASS)
}

public 
menu_zombieclass(idmenuiditem)
{
    
// Menu was closed
    
if (item == MENU_EXIT)
    {
        
MENU_PAGE_CLASS 0
        menu_destroy
(menuid)
        return 
PLUGIN_HANDLED;
    }
    
    
// Remember class menu page
    
MENU_PAGE_CLASS item 7
    
    
// Retrieve class index
    
new itemdata[2], dummyindex
    menu_item_getinfo
(menuiditemdummyitemdatacharsmax(itemdata), __dummy)
    
index itemdata[0]
    
    
// Execute class select attempt forward
    
ExecuteForward(g_Forwards[FW_CLASS_SELECT_PRE], g_ForwardResultidindex)
    
    
// Class available to player?
    
if (g_ForwardResult >= ZP_CLASS_NOT_AVAILABLE)
    {
        
menu_destroy(menuid)
        return 
PLUGIN_HANDLED;
    }
    
    
// Make selected class next class for player
    
g_ZombieClassNext[id] = index
    
    
new name[32], transkey[64]
    new 
Float:maxspeed Float:ArrayGetCell(g_ZombieClassSpeedg_ZombieClassNext[id])
    
ArrayGetString(g_ZombieClassNameg_ZombieClassNext[id], namecharsmax(name))
    
// ML support for class name
    
formatex(transkeycharsmax(transkey), "ZOMBIENAME %s"name)
    if (
GetLangTransKey(transkey) != TransKey_Badformatex(namecharsmax(name), "%L"idtranskey)
    
    
// Show selected zombie class
    
zp_colored_print(id"%L: %s"id"ZOMBIE_SELECT"name)
    
zp_colored_print(id"%L: %d %L: %d %L: %.2fx %L %.2fx"id"ZOMBIE_ATTRIB1"ArrayGetCell(g_ZombieClassHealthg_ZombieClassNext[id]), id"ZOMBIE_ATTRIB2"cs_maxspeed_display_value(maxspeed), id"ZOMBIE_ATTRIB3"Float:ArrayGetCell(g_ZombieClassGravityg_ZombieClassNext[id]), id"ZOMBIE_ATTRIB4"Float:ArrayGetCell(g_ZombieClassKnockbackg_ZombieClassNext[id]))
    
    
// Execute class select post forward
    
ExecuteForward(g_Forwards[FW_CLASS_SELECT_POST], g_ForwardResultidindex)
    
    
menu_destroy(menuid)
    return 
PLUGIN_HANDLED;
}

public 
zp_fw_core_infect_post(idattacker)
{
    
// Show zombie class menu if they haven't chosen any (e.g. just connected)
    
if (g_ZombieClassNext[id] == ZP_INVALID_ZOMBIE_CLASS)
    {
        if (
g_ZombieClassCount 1)
            
show_menu_zombieclass(id)
        else 
// If only one class is registered, choose it automatically
            
g_ZombieClassNext[id] = 0
    
}
    
    
// Bots pick class automatically
    
if (is_user_bot(id))
    {
        
// Try choosing class
        
new indexstart_index random_num(0g_ZombieClassCount 1)
        for (
index start_index 1/* no condition */index++)
        {
            
// Start over when we reach the end
            
if (index >= g_ZombieClassCount)
                
index 0
            
            
// Execute class select attempt forward
            
ExecuteForward(g_Forwards[FW_CLASS_SELECT_PRE], g_ForwardResultidindex)
            
            
// Class available to player?
            
if (g_ForwardResult ZP_CLASS_NOT_AVAILABLE)
            {
                
g_ZombieClassNext[id] = index
                
break;
            }
            
            
// Loop completed, no class could be chosen
            
if (index == start_index)
                break;
        }
    }
    
    
// Set selected zombie class. If none selected yet, use the first one
    
g_ZombieClass[id] = g_ZombieClassNext[id]
    if (
g_ZombieClass[id] == ZP_INVALID_ZOMBIE_CLASSg_ZombieClass[id] = 0
    
    
// Apply zombie attributes
    
set_user_health(idArrayGetCell(g_ZombieClassHealthg_ZombieClass[id]))
    
set_user_gravity(idFloat:ArrayGetCell(g_ZombieClassGravityg_ZombieClass[id]))
    
cs_set_player_maxspeed_auto(idFloat:ArrayGetCell(g_ZombieClassSpeedg_ZombieClass[id]))
    
    
// Apply zombie player model
    
new Array:class_models ArrayGetCell(g_ZombieClassModelsHandleg_ZombieClass[id])
    if (
class_models != Invalid_Array)
    {
        new 
index random_num(0ArraySize(class_models) - 1)
        new 
player_model[32]
        
ArrayGetString(class_modelsindexplayer_modelcharsmax(player_model))
        
cs_set_player_model(idplayer_model)
    }
    else
    {
        
// No models registered for current class, use default model
        
cs_set_player_model(idZOMBIES_DEFAULT_MODEL)
    }
    
    
// Apply zombie claw model
    
new claw_model[64], Array:class_claws ArrayGetCell(g_ZombieClassClawsHandleg_ZombieClass[id])
    if (
class_claws != Invalid_Array)
    {
        new 
index random_num(0ArraySize(class_claws) - 1)
        
ArrayGetString(class_clawsindexclaw_modelcharsmax(claw_model))
        
cs_set_player_view_model(idCSW_KNIFEclaw_model)
    }
    else
    {
        
// No models registered for current class, use default model
        
cs_set_player_view_model(idCSW_KNIFEZOMBIES_DEFAULT_CLAWMODEL)
    }
    
cs_set_player_weap_model(idCSW_KNIFE"")
    
    
// Apply weapon restrictions for zombies
    
cs_set_player_weap_restrict(idtrueZOMBIE_ALLOWED_WEAPONS_BITSUMZOMBIE_DEFAULT_ALLOWED_WEAPON)
}

public 
zp_fw_core_cure(idattacker)
{
    
// Remove zombie claw models
    
cs_reset_player_view_model(idCSW_KNIFE)
    
cs_reset_player_weap_model(idCSW_KNIFE)
    
    
// Remove zombie weapon restrictions
    
cs_set_player_weap_restrict(idfalse)
}

public 
native_class_zombie_get_current(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid Player (%d)"id)
        return 
ZP_INVALID_ZOMBIE_CLASS;
    }
    
    return 
g_ZombieClass[id];
}

public 
native_class_zombie_get_next(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid Player (%d)"id)
        return 
ZP_INVALID_ZOMBIE_CLASS;
    }
    
    return 
g_ZombieClassNext[id];
}

public 
native_class_zombie_set_next(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid Player (%d)"id)
        return 
false;
    }
    
    new 
classid get_param(2)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
g_ZombieClassNext[id] = classid
    
return true;
}

public 
_class_zombie_get_max_health(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid Player (%d)"id)
        return -
1;
    }
    
    new 
classid get_param(2)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid zombie class id (%d)"classid)
        return -
1;
    }
    
    return 
ArrayGetCell(g_ZombieClassHealthclassid);
}

public 
native_class_zombie_register(plugin_idnum_params)
{
    new 
name[32]
    
get_string(1namecharsmax(name))
    
    if (
strlen(name) < 1)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Can't register zombie class with an empty name")
        return 
ZP_INVALID_ZOMBIE_CLASS;
    }
    
    new 
indexzombieclass_name[32]
    for (
index 0index g_ZombieClassCountindex++)
    {
        
ArrayGetString(g_ZombieClassRealNameindexzombieclass_namecharsmax(zombieclass_name))
        if (
equali(namezombieclass_name))
        {
            
log_error(AMX_ERR_NATIVE"[ZoZ] Zombie class already registered (%s)"name)
            return 
ZP_INVALID_ZOMBIE_CLASS;
        }
    }
    
    new 
description[32]
    
get_string(2descriptioncharsmax(description))
    new 
health get_param(3)
    new 
Float:speed get_param_f(4)
    new 
Float:gravity get_param_f(5)
    
    
// Load settings from zombie classes file
    
new real_name[32]
    
copy(real_namecharsmax(real_name), name)
    
ArrayPushString(g_ZombieClassRealNamereal_name)
    
    
// Name
    
if (!amx_load_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"NAME"namecharsmax(name)))
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"NAME"name)
    
ArrayPushString(g_ZombieClassNamename)
    
    
// Description
    
if (!amx_load_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"INFO"descriptioncharsmax(description)))
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"INFO"description)
    
ArrayPushString(g_ZombieClassDescdescription)
    
    
// Models
    
new Array:class_models ArrayCreate(321)
    
amx_load_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"MODELS"class_models)
    if (
ArraySize(class_models) > 0)
    {
        
ArrayPushCell(g_ZombieClassModelsFiletrue)
        
        
// Precache player models
        
new indexplayer_model[32], model_path[128]
        for (
index 0index ArraySize(class_models); index++)
        {
            
ArrayGetString(class_modelsindexplayer_modelcharsmax(player_model))
            
formatex(model_pathcharsmax(model_path), "models/player/%s/%s.mdl"player_modelplayer_model)
            
precache_model(model_path)
            
// Support modelT.mdl files
            
formatex(model_pathcharsmax(model_path), "models/player/%s/%sT.mdl"player_modelplayer_model)
            if (
file_exists(model_path)) precache_model(model_path)
        }
    }
    else
    {
        
ArrayPushCell(g_ZombieClassModelsFilefalse)
        
ArrayDestroy(class_models)
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"MODELS"ZOMBIES_DEFAULT_MODEL)
    }
    
ArrayPushCell(g_ZombieClassModelsHandleclass_models)
    
    
// Claw models
    
new Array:class_claws ArrayCreate(641)
    
amx_load_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"CLAWMODEL"class_claws)
    if (
ArraySize(class_claws) > 0)
    {
        
ArrayPushCell(g_ZombieClassClawsFiletrue)
        
        
// Precache claw models
        
new indexclaw_model[64]
        for (
index 0index ArraySize(class_claws); index++)
        {
            
ArrayGetString(class_clawsindexclaw_modelcharsmax(claw_model))
            
precache_model(claw_model)
        }
    }
    else
    {
        
ArrayPushCell(g_ZombieClassClawsFilefalse)
        
ArrayDestroy(class_claws)
        
amx_save_setting_string(ZP_ZOMBIECLASSES_FILEreal_name"CLAWMODEL"ZOMBIES_DEFAULT_CLAWMODEL)
    }
    
ArrayPushCell(g_ZombieClassClawsHandleclass_claws)
    
    
// Health
    
if (!amx_load_setting_int(ZP_ZOMBIECLASSES_FILEreal_name"HEALTH"health))
        
amx_save_setting_int(ZP_ZOMBIECLASSES_FILEreal_name"HEALTH"health)
    
ArrayPushCell(g_ZombieClassHealthhealth)
    
    
// Speed
    
if (!amx_load_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"SPEED"speed))
        
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"SPEED"speed)
    
ArrayPushCell(g_ZombieClassSpeedspeed)
    
    
// Gravity
    
if (!amx_load_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"GRAVITY"gravity))
        
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"GRAVITY"gravity)
    
ArrayPushCell(g_ZombieClassGravitygravity)
    
    
// Knockback
    
new Float:knockback ZOMBIES_DEFAULT_KNOCKBACK
    
if (!amx_load_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"KNOCKBACK"knockback))
    {
        
ArrayPushCell(g_ZombieClassKnockbackFilefalse)
        
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"KNOCKBACK"knockback)
    }
    else
        
ArrayPushCell(g_ZombieClassKnockbackFiletrue)
    
ArrayPushCell(g_ZombieClassKnockbackknockback)
    
    
g_ZombieClassCount++
    return 
g_ZombieClassCount 1;
}

public 
_class_zombie_register_model(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
// Player models already loaded from file
    
if (ArrayGetCell(g_ZombieClassModelsFileclassid))
        return 
true;
    
    new 
player_model[32]
    
get_string(2player_modelcharsmax(player_model))
    
    new 
model_path[128]
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%s.mdl"player_modelplayer_model)
    
    
precache_model(model_path)
    
    
// Support modelT.mdl files
    
formatex(model_pathcharsmax(model_path), "models/player/%s/%sT.mdl"player_modelplayer_model)
    if (
file_exists(model_path)) precache_model(model_path)
    
    new Array:
class_models ArrayGetCell(g_ZombieClassModelsHandleclassid)
    
    
// No models registered yet?
    
if (class_models == Invalid_Array)
    {
        
class_models ArrayCreate(321)
        
ArraySetCell(g_ZombieClassModelsHandleclassidclass_models)
    }
    
ArrayPushString(class_modelsplayer_model)
    
    
// Save models to file
    
new real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
amx_save_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"MODELS"class_models)
    
    return 
true;
}

public 
_class_zombie_register_claw(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
// Claw models already loaded from file
    
if (ArrayGetCell(g_ZombieClassClawsFileclassid))
        return 
true;
    
    new 
claw_model[64]
    
get_string(2claw_modelcharsmax(claw_model))
    
    
precache_model(claw_model)
    
    new Array:
class_claws ArrayGetCell(g_ZombieClassClawsHandleclassid)
    
    
// No models registered yet?
    
if (class_claws == Invalid_Array)
    {
        
class_claws ArrayCreate(641)
        
ArraySetCell(g_ZombieClassClawsHandleclassidclass_claws)
    }
    
ArrayPushString(class_clawsclaw_model)
    
    
// Save models to file
    
new real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
amx_save_setting_string_arr(ZP_ZOMBIECLASSES_FILEreal_name"CLAWMODEL"class_claws)
    
    return 
true;
}

public 
native_class_zombie_register_kb(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    
// Knockback already loaded from file
    
if (ArrayGetCell(g_ZombieClassKnockbackFileclassid))
        return 
true;
    
    new 
Float:knockback get_param_f(2)
    
    
// Set zombie class knockback
    
ArraySetCell(g_ZombieClassKnockbackclassidknockback)
    
    
// Save to file
    
new real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
amx_save_setting_float(ZP_ZOMBIECLASSES_FILEreal_name"KNOCKBACK"knockback)
    
    return 
true;
}

public 
native_class_zombie_get_id(plugin_idnum_params)
{
    new 
real_name[32]
    
get_string(1real_namecharsmax(real_name))
    
    
// Loop through every class
    
new indexzombieclass_name[32]
    for (
index 0index g_ZombieClassCountindex++)
    {
        
ArrayGetString(g_ZombieClassRealNameindexzombieclass_namecharsmax(zombieclass_name))
        if (
equali(real_namezombieclass_name))
            return 
index;
    }
    
    return 
ZP_INVALID_ZOMBIE_CLASS;
}

public 
native_class_zombie_get_name(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    new 
name[32]
    
ArrayGetString(g_ZombieClassNameclassidnamecharsmax(name))
    
    new 
len get_param(3)
    
set_string(2namelen)
    return 
true;
}


public 
_class_zombie_get_real_name(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    new 
real_name[32]
    
ArrayGetString(g_ZombieClassRealNameclassidreal_namecharsmax(real_name))
    
    new 
len get_param(3)
    
set_string(2real_namelen)
    return 
true;
}

public 
native_class_zombie_get_desc(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid zombie class id (%d)"classid)
        return 
false;
    }
    
    new 
description[32]
    
ArrayGetString(g_ZombieClassDescclassiddescriptioncharsmax(description))
    
    new 
len get_param(3)
    
set_string(2descriptionlen)
    return 
true;
}

public 
Float:native_class_zombie_get_kb(plugin_idnum_params)
{
    new 
classid get_param(1)
    
    if (
classid || classid >= g_ZombieClassCount)
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid zombie class id (%d)"classid)
        return 
ZOMBIES_DEFAULT_KNOCKBACK;
    }
    
    
// Return zombie class knockback)
    
return ArrayGetCell(g_ZombieClassKnockbackclassid);
}

public 
native_class_zombie_get_count(plugin_idnum_params)
{
    return 
g_ZombieClassCount;
}

public 
native_class_zombie_show_menu(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZoZ] Invalid Player (%d)"id)
        return 
false;
    }
    
    
show_menu_zombieclass(id)
    return 
true;
}

public 
_class_zombie_menu_text_add(plugin_idnum_params)
{
    static 
text[32]
    
get_string(1textcharsmax(text))
    
format(g_AdditionalMenuTextcharsmax(g_AdditionalMenuText), "%s%s"g_AdditionalMenuTexttext)
}
load_zombieclass(id)
public 
menu_zclass(idmenuiditemg_zombieclassnext[id] = classid
save_zombieclass
(id)

g_vault nvault_open("zclass")

get_user_authid(idg_steamidcharsmax(g_steamid))

formatex(value_steamidcharsmaxvalue_steamid ), "%sZCLASS"g_steamid)
formatex(value_amountcharsmaxvalue_amount ), "%d"g_zombieclassnext[id])

nvault_set(g_vaultvalue_steamidvalue_amount)

nvault_close(g_vault)    
{

save_zombieclass(id)
{
g_vault nvault_open("zclass")

get_user_authid(idg_steamidcharsmax(g_steamid))

formatex(value_steamidcharsmax(value_steamid), "%s_"g_steamid)
formatex(value_amountcharsmax(value_amount), "%d"g_zombieclassnext[id])

nvault_set(g_vaultvalue_steamidvalue_amount)

nvault_close(g_vault)
}

load_zombieclass(id)
{
g_vault nvault_open("zclass")

get_user_authid(idg_steamidcharsmax(g_steamid))
formatex(value_steamidcharsmax(value_steamid), "%s_"g_steamid)

if(
nvault_get(g_vaultvalue_steamid))
{
g_zombieclass[id] = nvault_get(g_vaultvalue_steamid)
g_zombieclassnext[id] = nvault_get(g_vaultvalue_steamid)
}

nvault_close(g_vault)

Error massage :-
Code:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

Error: Symbol already defined: "client_putinserver" on line 162
Error: Invalid function or declaration on line 792
Error: Undefined symbol "g_vault" on line 795
Error: Undefined symbol "id" on line 797
Error: Symbol already defined: "formatex" on line 799
Error: Undefined symbol "nvault_close" on line 804
Error: Symbol already defined: "save_zombieclass" on line 808
Error: Undefined symbol "g_vault" on line 809
Error: Number of arguments does not match definition on line 809
Error: Undefined symbol "g_steamid" on line 811
Error: "sizeof" operator is invalid on "function" symbols on line 811
Error: Invalid expression, assumed zero on line 811
Error: Too many error messages on one line on line 811

Compilation aborted.
13 Errors.
Could not locate output file C:\Users\abood\Desktop\zoz_saveclass.amx (compile failed).
__________________
B7PK is offline
Reply


Thread Tools
Display Modes

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 18:36.


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