RSSy MYGO.pl Opublikowano Kwiecień 17, 2022 o 10:28 RSSy Udostępnij Opublikowano Kwiecień 17, 2022 o 10:28 Hello everyone , hope all are well i have this sma code for nemesis mod and when i try compile it by the zombieplauge.inc ,, it give me some errors .. so .. i hope someone help me to fix it PHP Code: #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta> #include <hamsandwich> #include <xs> #include <levels> #include <dhudmessage> #include <engine> #include <fun> #include <cromchat> #include <xs> #include <zombieplague> // Definitions #define MODEL_MAX_LENGTH 64 #define Task_SetModel 1100 // Enums Colors enum any:COLORS { RED = 0, GREEN, BLUE }; // Setting file. new const ZE_SETTING_RESOURCES[] = {"zombie_escape.ini"}; // Default nemesis model. new const szNemesisModel[][MODEL_MAX_LENGTH] = { "ze_nemesis" }; // Default nemesis claw. new const szNemesisClaw[][MODEL_MAX_LENGTH] = { "models/zombie_escape/ze_knife_nemesis.mdl" }; // Default access flags. new g_szAccessFlags[] = {"d"}; // Cvars Variables new g_pCvarHealth, g_pCvarBaseHealth, g_pCvarSpeed, g_pCvarGravity, g_pCvarKnockback, g_pCvarGlow, g_pCvarGlowColors[COLORS], g_pCvarDamage, g_pCvarFrostNade, g_pCvarFireNade; // Global Variables new g_iMaxPlayers, g_iTaskIndex[MAX_CLIENTS+1], bool:g_bIsNemesis[MAX_CLIENTS+1], bool:g_bHasChosen; // Dynamic Arrays new Array:g_szNemesisModel, Array:g_szNemesisClaw; // Forward called after server activation. public plugin_init() { // Load plugin register_plugin("[ZE] Class: Nemesis", "1.3", "z0h1r-LK"); // Hook Chain RegisterHookChain(RG_CBasePlayer_TakeDamage, "TakeDamagePlayer_Post", 1); // Cvars g_pCvarHealth = register_cvar("ze_nemesis_health", "10000"); g_pCvarBaseHealth = register_cvar("ze_nemesis_base_hp", "1000"); g_pCvarSpeed = register_cvar("ze_nemesis_speed", "320"); g_pCvarGravity = register_cvar("ze_nemesis_gravity", "500"); g_pCvarKnockback = register_cvar("ze_nemesis_knockback", "160"); g_pCvarGlow = register_cvar("ze_nemesis_glow", "1"); g_pCvarGlowColors[RED] = register_cvar("ze_nemesis_glow_r", "255"); g_pCvarGlowColors[GREEN] = register_cvar("ze_nemesis_glow_g", "0"); g_pCvarGlowColors[BLUE] = register_cvar("ze_nemesis_glow_b", "0"); g_pCvarDamage = register_cvar("ze_nemesis_damage", "2"); g_pCvarFrostNade = register_cvar("ze_nemesis_frostnade", "1"); g_pCvarFireNade = register_cvar("ze_nemesis_firenade", "1"); // Console commands register_concmd("ze_nemesis", "concmd_SetNemesis", -1, "<Make player nemesis>"); // Default Values g_iMaxPlayers = get_member_game(m_nMaxPlayers); } // Forward allows register natives. public plugin_natives() { // New natives. register_native("ze_is_user_nemesis", "_native_ze_is_user_nemesis", 1); register_native("ze_set_user_nemesis", "_native_ze_set_user_nemesis", 1); register_native("ze_remove_user_nemesis", "_native_ze_remove_user_nemesis", 1); } // Forward allows precaching game files (models, sounds, generic files) public plugin_precache() { // Initialize arrays g_szNemesisModel = ArrayCreate(64); g_szNemesisClaw = ArrayCreate(64); // Load file path from externel file. amx_load_setting_string_arr(ZE_SETTING_RESOURCES, "Player Models", "NEMESIS", g_szNemesisModel); amx_load_setting_string_arr(ZE_SETTING_RESOURCES, "Weapon Models", "V_KNIFE NEMESIS", g_szNemesisClaw); // Save default resource's. new iIndex; if (ArraySize(g_szNemesisModel) == 0) { for (iIndex = 0; iIndex < sizeof (szNemesisModel); iIndex++) ArrayPushString(g_szNemesisModel, szNemesisModel[iIndex]); // Save model name in external file. amx_save_setting_string_arr(ZE_SETTING_RESOURCES, "Player Models", "NEMESIS", g_szNemesisModel); } if (ArraySize(g_szNemesisClaw) == 0) { for (iIndex = 0; iIndex < sizeof (g_szNemesisClaw); iIndex++) ArrayPushString(g_szNemesisClaw, szNemesisClaw[iIndex]); // Save model name in external file. amx_save_setting_string_arr(ZE_SETTING_RESOURCES, "Weapon Models", "V_KNIFE NEMESIS", g_szNemesisClaw); } // Precache models. new szModel[64], szPathModel[128]; for (iIndex = 0; iIndex < ArraySize(g_szNemesisModel); iIndex++) { // Get model name from dynamic array. ArrayGetString(g_szNemesisModel, iIndex, szModel, charsmax(szModel)); formatex(szPathModel, charsmax(szPathModel), "models/player/%s/%s.mdl", szModel, szModel) // Get model path. precache_model(szPathModel); // Precache model's. } for (iIndex = 0; iIndex < ArraySize(g_szNemesisClaw); iIndex++) { // Get model path from dynamic arrays. ArrayGetString(g_szNemesisClaw, iIndex, szModel, charsmax(szModel)); precache_model(szModel); // Precache model's. } // Load access flags from external file. if (amx_load_setting_string(ZE_SETTING_RESOURCES, "Access Flags", "Make Nemesis", g_szAccessFlags, charsmax(g_szAccessFlags))) amx_save_setting_string(ZE_SETTING_RESOURCES, "Access Flags", "Make Nemesis", g_szAccessFlags); } // Function called when execute command in console public concmd_SetNemesis(iIndex) { // Is don't have access. if (!(get_user_flags(iIndex) & read_flags(g_szAccessFlags))) { console_print(iIndex, "%L", LANG_PLAYER, "CMD_NOT_ACCESS"); return; } // Zombies has chosen. if (!g_bHasChosen) { console_print(iIndex, "%L", LANG_PLAYER, "ZOMBIE_NOT_CHOSEN"); return; } // Get target name. new szName[MAX_NAME_LENGTH], szAdminName[MAX_NAME_LENGTH], iTarget; read_argv(1, szName, charsmax(szName)); iTarget = cmd_target(iIndex, szName, (CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF)); // Is not found. if (!is_user_connected(iTarget)) { console_print(iIndex, "%L", LANG_PLAYER, "CMD_NOT_FOUND"); return; } // Him is already nemesis. if (g_bIsNemesis[iTarget]) { console_print(iIndex, "%L", LANG_PLAYER, "ALREADY_NEMESIS"); return; } // Don't make the last human to nemesis. if (ze_get_humans_number() == 1 && !ze_is_user_zombie(iTarget)) { console_print(iIndex, "%L", LANG_PLAYER, "CMD_LAST_HUMAN"); return; } // Set client nemesis. Set_User_Nemesis(iTarget); // Get admin name. get_user_name(iIndex, szAdminName, charsmax(szAdminName)); // Get target name. get_user_name(iTarget, szName, charsmax(szName)); // Sent message in chat. ze_colored_print(0, "%L", LANG_PLAYER, "CHAT_MAKE_NEMESIS", szAdminName, szName); } // Forward called when zombies chosen. public ze_zombie_appear() { // Zombies has chosen. g_bHasChosen = true; } // Forward called before frostnade freeze zombie. public ze_frost_pre(iVictim) { // Block freezing the nemesis. if (get_pcvar_num(g_pCvarFrostNade) && g_bIsNemesis[iVictim]) return PLUGIN_HANDLED; return PLUGIN_CONTINUE; } // Forward called before firenade burn zombie. public ze_fire_pre(iVictim) { // Block burning the nemesis. if (get_pcvar_num(g_pCvarFireNade) && g_bIsNemesis[iVictim]) return PLUGIN_HANDLED; return PLUGIN_CONTINUE; } // Forward called every round. public ze_game_started_pre() { // Remove tasks (Set model). new iIndex; for (iIndex = 1; iIndex <= g_iMaxPlayers; iIndex++) remove_task(g_iTaskIndex[iIndex]); // Remove all tasks (Set model). } // Forward called when set human. public ze_user_humanized(iIndex) { // Player is a nemesis if (g_bIsNemesis[iIndex]) Remove_User_Nemesis(iIndex) } // Forward called before infect player. public ze_user_infected_pre(iVictim, iInfector, iDamage) { // Is not a nemesis. if (!g_bIsNemesis[iInfector]) return PLUGIN_CONTINUE; // Damage Human. if (get_pcvar_float(g_pCvarDamage) > 0) rg_multidmg_add(iInfector, iVictim, float(iDamage) * get_pcvar_float(g_pCvarDamage), DMG_GENERIC); else rg_multidmg_add(iInfector, iVictim, float(iDamage), DMG_GENERIC); // Block infect human. return PLUGIN_HANDLED; } // Hook called when player damaged. public TakeDamagePlayer_Post(iVictim, iInflector, iAttacker, Float:flDamage, bitsDamageType) { // Invalid player. if (!is_user_connected(iVictim) || !is_user_connected(iAttacker)) return; // Attacker is not a nemesis. if (!g_bIsNemesis[iAttacker]) return; // Remove Pain Shock. set_member(iVictim, m_flVelocityModifier, 1.0); } public Set_User_Nemesis(iIndex) { // Set him zombie, If not. if (!ze_is_user_zombie(iIndex)) ze_set_user_zombie(iIndex); // Is already Nemesis. if (!g_bIsNemesis[iIndex]) g_bIsNemesis[iIndex] = true; // Set nemesis a some attributes. if (get_pcvar_num(g_pCvarHealth) > 0) { set_entvar(iIndex, var_health, get_pcvar_float(g_pCvarHealth)); } else { if (get_pcvar_num(g_pCvarBaseHealth) > 0 && GetAllAlivePlayersNum() > 5) { set_entvar(iIndex, var_health, (get_pcvar_float(g_pCvarBaseHealth) * GetAllAlivePlayersNum())); } else { set_entvar(iIndex, var_health, get_pcvar_float(g_pCvarHealth)); } } if (get_pcvar_num(g_pCvarSpeed) > 0) ze_set_zombie_speed(iIndex, get_pcvar_num(g_pCvarSpeed)); // Set nemesis custom speed. if (get_pcvar_num(g_pCvarGravity) > 0) ze_set_user_gravity(iIndex, get_pcvar_num(g_pCvarGravity)); // Set nemesis custom gravity. if (get_pcvar_num(g_pCvarKnockback) > 0) ze_set_user_knockback(iIndex, get_pcvar_float(g_pCvarKnockback)); // Set nemesis custom knockback. // Set nemesis rendering "Glow Shell" if (get_pcvar_num(g_pCvarGlow) > 0) Set_Rendering(iIndex, kRenderFxGlowShell, get_pcvar_num(g_pCvarGlowColors[RED]), get_pcvar_num(g_pCvarGlowColors[GREEN]), get_pcvar_num(g_pCvarGlowColors[BLUE]), kRenderNormal, 20); /* * New Task, Delay before set nemesis model and claw nemesis. * When ze_resource.amxx set zombies model, After 0.1s remove old zombie model and set nemesis model. */ g_iTaskIndex[iIndex] = iIndex+Task_SetModel; set_task(0.1, "Set_Nemesis_Model", g_iTaskIndex[iIndex]); } public Set_Nemesis_Model(iTask) { new szModel[64], szClawModel[64], iIndex; // Change task id to client index. iIndex = iTask-Task_SetModel; // Get model name and claw model path from dynamic arrays ArrayGetString(g_szNemesisModel, random_num(0, ArraySize(g_szNemesisModel) - 1), szModel, charsmax(szModel)); ArrayGetString(g_szNemesisClaw, random_num(0, ArraySize(g_szNemesisClaw) - 1), szClawModel, charsmax(szClawModel)); // Set a nemesis model. rg_set_user_model(iIndex, szModel); // Set a nemesis claw. cs_set_player_view_model(iIndex, CSW_KNIFE, szClawModel); cs_set_player_weap_model(iIndex, CSW_KNIFE, ""); } public Remove_User_Nemesis(iIndex) { // Is a Nemesis. if (g_bIsNemesis[iIndex]) g_bIsNemesis[iIndex] = false; // Remove nemesis. ze_reset_zombie_speed(iIndex) // Reset speed to zombie speed. ze_reset_user_gravity(iIndex) // Reset gravity to zombie gravity. ze_reset_user_knockback(iIndex) // Reset knockback to default knockback. Set_Rendering(iIndex) // Remove rendering (Glow Shell). } // Forward called when round end. public ze_roundend(iWinTeam) { g_bHasChosen = false; } /** * Functions of natives */ public _native_ze_is_user_nemesis(const id) { // Return true if client is nemesis, false otherwise. return g_bIsNemesis[id]; } public _native_ze_set_user_nemesis(const id) { // Is not found. if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid player (%d)", id); return 0; } // Set client nemesis. Set_User_Nemesis(id); return 1; } public _native_ze_remove_user_nemesis(const id) { // Is not found. if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid player (%d)", id); return 0; } // Set client nemesis. Remove_User_Nemesis(id); return 1; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ fbidis\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ ltrpar\\ lang1025\\ f0\\ fs16 \n\\ par } */ And Here the compile Error massage PHP Code: Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team Warning: Redefinition of constant/macro (symbol "CC_COLOR_RED") on line 22 Warning: Redefinition of constant/macro (symbol "CC_COLOR_TEAM") on line 22 Warning: Redefinition of constant/macro (symbol "CC_COLOR_BLUE") on line 23 Error: Undefined symbol "MAX_CLIENTS" on line 55 Error: Undefined symbol "RegisterHookChain" on line 69 Warning: Expression has no effect on line 69 Warning: Expression has no effect on line 69 Error: Expected token: ";", but found ")" on line 69 Error: Invalid expression, assumed zero on line 69 Error: Too many error messages on one line on line 69 Compilation aborted. 5 Errors. Could not locate output file C:\Users\Mohanad\Desktop\ze_class_nemesis.amx (compile failed). i will attach the zombieplague.inc which i use Attached Files zombieplague.inc (15.2 KB) Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi