Eroare Zombie System Level

Discutii legate de instalarea, configurarea si modificarea unui server de Counter-Strike.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
rEpTiLa0o4
Membru, skill +2
Membru, skill +2
Posts: 819
Joined: 18 Jun 2009, 14:01
Detinator Steam: Da
CS Status: My life's riding on Autobahn !
Detinator server CS: Zombie-Land&Elz
Location: Lugoj
Has thanked: 89 times
Been thanked: 82 times
Contact:

31 Oct 2010, 16:19

Salutare tuturor.
Am si eu o problema la un plugin.
Run Time Error 4:index out of bounds
La linia 449
Automat pica serverul la eroare.
zp level system | Afiseaza codul
/*================================================================================
	
	-------------------------------------------
	-*- [ZP] Server Addon: LevelUp System XP 3.0 || New Version-*-
	-------------------------------------------
	
	~~~~~~~~~~~~~~~
	- Description -
	~~~~~~~~~~~~~~~
	Level System

	~~~~~~~~~~~~~~~
	- Changelog -
	~~~~~~~~~~~~~~~
	v. 1.0 - Plugin Released. Testing...
	v. 1.1 - Fixed Save Level.
	v. 1.2 - Added New cvars, fixed codes + Added plugin code Player Name
	v. 1.3 - Update version: added new cvars + system bonuses
	v. 1.4 - New modes for nemesis level & survivor level, added cvars
	v. 1.5 - Testing...
	v. 1.6 - Added cvars, Plugin Released.
	v. 1.7 - Added Multilangual, Update plugin
	v. 1.8 - v. 1.9 - Fixed Level Up bugs
	v. 2.0 - Added new cvars + XP Level Extended: Real Level System.
	v. 2.1 - Fixed bugs.
	--
	v. 2.8 - It is globally altered on a new kind of the version of this plugin
	v. 2.9 - Added New cvars. Ful fixed. 
	v. 3.0 - XP Mode Updated in EXP to level.
================================================================================*/

#include <amxmodx>
#include <nvault>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Server Addon: LevelUp System XP 3.0"
#define VERSION "3.0"
#define AUTHOR "Re.Act!ve"
#define ACCES ADMIN_CVAR
#pragma tabsize 0
new SayText
new g_level[32], g_level_data, g_frags_level, g_ScreenFade, g_level_del[33], g_level_bonus, g_ammo 
new g_level_max, g_give_ammo, g_give_ammopacks, g_level_num, g_level_info, g_player_name, g_levels[32], g_h_damage
new g_h_health, g_h_speed, g_z_damage, h_health[32], h_speed[32], h_damage[32], z_damage[32], g_Players, level_exp[32]
new g_level_exp[32], g_exp_data
new bool:g_play[32], g_bonus[32], g_trime[32]
new sound_level_up[] = { "misc/zp_level_up.wav"}
new sound_health[] = { "items/medshot4.wav"}
// Zombie Classes MUST be registered on plugin_precache

public plugin_precache()
{
        precache_sound( sound_level_up )
        precache_sound( sound_health )
}

public plugin_init()
{
	g_frags_level = 		register_cvar("zp_level_frags", "20")		// Сколько добавится экспы для получения след. уровня
	g_level_max  = 		register_cvar("zp_level_max", "70")			// Максимальный левел
	g_give_ammo = 		register_cvar("zp_level_give_ammo", "1")	// Давать аммо паки при каждом полученном левле?
	g_give_ammopacks = register_cvar("zp_level_ammo", "10")		// Сколько давать аммопаков? (если выше установлено 1)

	g_h_damage = 		register_cvar("zp_level_h_damage", "2")		// Увеличивать с каждым уровнем урон на Х у людей
	g_h_health = 		register_cvar("zp_level_h_health", "10")		// Люди получают за каждый левел дополнительные Х хп
	g_h_speed = 		register_cvar("zp_level_h_speed", "1.0")		// На сколько величивать скорость людей с каждым уровнем?
	g_z_damage = 		register_cvar("zp_level_z_damage", "5")		// Увеличивать с каждым уровнем урон на Х у зомби

	g_level_info = 		register_cvar("zp_level_info", "1")				// Показывать инфу о игроке, когда вы вводите в чат info <nick>
	g_player_name = 	register_cvar("zp_player_name", "1")		// Показывать инфу, при наведении курсором на игрока?
	g_level_bonus = 		register_cvar("zp_level_bonus_on", "1")		// Можно ли будет снимать мегабонус? (за получение опр. левла)
	g_level_num = 		register_cvar("zp_level_number", "5")	// Каждые Х левлов будет возможность снять  мегабонус (если выше 1)
	g_ammo = 			register_cvar("zp_level_bonus", "500")			// Сколько аммо паков этот мегабонус?

	g_level_data = nvault_open("Leveling_Save")
	g_exp_data = nvault_open("Exp_Save")
	register_clcmd("say","say_info");
	register_clcmd("say_team","say_info");
	SayText = get_user_msgid("SayText")
	g_Players = get_maxplayers();
	RegisterHam(Ham_Killed,"player","Frags_Manager"); 
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_dictionary("zp_level_system_xp.txt")
	register_event("StatusValue","show_status","be","1=2","2!0")
       	register_event("StatusValue","hide_status","be","1=1","2=0")
	g_ScreenFade = get_user_msgid( "ScreenFade" )	
	register_plugin(PLUGIN, VERSION, AUTHOR)		
}

public event_round_start()
{
	set_task(5.0, "Gives_players")
}

public Gives_players()
{
	for(new id=1;id<=g_Players;id++)
	{
		if( !zp_get_user_zombie(id) && is_user_alive(id) && g_trime[id])
		{
			g_bonus[id] = true;
			g_trime[id] = false;
			new n = 1;
			while( n != g_level[id] )
			{
			h_health[id] = n * get_pcvar_num(g_h_health);
			h_speed[id] = n * get_pcvar_num(g_h_speed);
			h_damage[id] = n * get_pcvar_num(g_h_damage);
			n = n + 1;
			}
			new Float:speed[32];
			speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
			fm_set_user_health( id, get_user_health(id) + h_health[id] )
			set_pev(id, pev_maxspeed, speed[id] )
			emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
		}
	}
}

public client_putinserver(id)
{
	Level_Load(id)
	g_trime[id] = true;
	if( !zp_get_user_zombie(id) && is_user_alive(id) && g_trime[id])
	{
		g_trime[id] = false;
		new n = 1;
		while( n != g_level[id] )
		{
		h_health[id] = n * get_pcvar_num(g_h_health);
		h_speed[id] = n * get_pcvar_num(g_h_speed);
		h_damage[id] = n * get_pcvar_num(g_h_damage);
		n = n + 1;
		}
		new Float:speed[32];
		speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
		fm_set_user_health( id, get_user_health(id) + h_health[id] )
		set_pev(id, pev_maxspeed, speed[id] )
		emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
	}

	if( (g_level[id] < 1) || (g_level[id] == 0) ) g_level[id] = 1;
	if( level_exp[id] == g_level[id] ) level_exp[id] = 0;
	if( g_level_exp[id] == 0 ) g_level_exp[id] = g_level[id] * get_pcvar_num(g_frags_level);
	if(g_level[id] < get_pcvar_num(g_level_num))
	g_levels[id] = get_pcvar_num(g_level_num);
	else
	{
		if(g_level[id] == g_levels[id])
		g_bonus[id] = true;
		else
		{
			new x = 1;
			while( g_level[id] > ( x * get_pcvar_num(g_level_num)) )
			{
			g_levels[id] = x * get_pcvar_num(g_level_num);
			x = x + 1;
			}
		}
	}
	new y = 1;
	if( g_level_exp[id] == 0 )
	{
		while( g_level[id] != y )
		{
		g_level_exp[id] = y * get_pcvar_num(g_frags_level);
		y = y + 1;
		}
	}
	g_play[id] = true;
	g_level_del[id] = 0;
}

public client_disconnect(id)
{
	g_play[id] = false; 
	g_trime[id] = false;
	Level_Save(id)
}

public hide_status(id)
{
    	set_hudmessage(0,0,0,0.0,0.0,0, 0.0, 0.01, 0.0, 0.0, 4)
    	show_hudmessage(id,"")
}

public show_status(id)
{
    	new name[32],pid = read_data(2)
    	get_user_name(pid,name,31)
   	if (!zp_get_user_zombie(pid) && !zp_get_user_zombie(id) && (get_pcvar_num(g_player_name) == 1) )
	{
       		set_hudmessage(0,0,255,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
       		show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_H", name, g_level[pid], 								get_user_health(pid),get_user_armor(pid),zp_get_user_ammo_packs(pid))    
	}	
 	if(zp_get_user_zombie(id) && zp_get_user_zombie(pid) && (get_pcvar_num(g_player_name) == 1) )
	{
        set_hudmessage(255,0,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
        show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_Z", name, g_level[pid], get_user_health(pid), zp_get_user_ammo_packs(pid))    
	}	 
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{
	if ( !zp_get_user_zombie(attacker) && is_user_alive(attacker) ) 
	{ 
		SetHamParamFloat(4, damage + h_damage[attacker]);
	}
	else
	{
		if ( zp_get_user_zombie(attacker) && is_user_alive(attacker) ) 
		{ 
			new i = 1;
			while( i < g_level[attacker] )
			{
			z_damage[attacker] = i * get_pcvar_num(g_z_damage);
			i = i + 1;
			}
			SetHamParamFloat(4, damage + z_damage[attacker]);
		}
	}
}

public say_info(id)
{
	new text[70], arg1[32], target[32], count[32]
	read_args(text, sizeof(text)-1);
	remove_quotes(text);
	arg1[0] = '^0';
	target[0] = '^0';
	count[0] = '^0';
	parse(text, arg1, sizeof(arg1)-1, target, sizeof(target)-1, count, sizeof(count)-1);
	if ( equali(arg1, "info", 4) )
	{
		info_player(id, target);
	}
	if ( equali(arg1, "bonusme", 7) && (get_pcvar_num(g_level_info) == 1))
	{
		bonus_player(id);
	}
	if ( equali(arg1, "levelexp", 7) && (get_pcvar_num(g_level_info) == 1))
	{
		expa_player(id);
	}
	if ( equali(arg1, "/exp", 4) )
	{
		expa_level(id, target, count);
	}
	return PLUGIN_CONTINUE;
}

expa_level(id, target[], count[])
{
	new target_id, expa; expa = str_to_num(count);
	target_id = find_player("bl", target)
	static nameid[32], name[32];
	get_user_name(target_id, name, sizeof name - 1)
	get_user_name(id, nameid, sizeof nameid - 1)
	if(!target_id) 
	{
		ChatColor(id, "!g[ZP] !y%L", LANG_PLAYER, "LEVEL_INFO_NONAME")
		return PLUGIN_HANDLED
	}
	if( (get_user_flags(id) & ACCES) && (expa < g_level_exp[id]) )
	{
		if(expa == 0)
		return PLUGIN_HANDLED
		level_exp[target_id] = expa;
		set_hudmessage(0,200,10,0.4,0.55,1, 0.01, 3.0, 0.01, 0.01, 4)
       		show_hudmessage(target_id,"%L", LANG_PLAYER, "LEVEL_HUD_EXP", expa)    
		ChatColor(id, "!g[ZP] !y%L", LANG_PLAYER, "LEVEL_GET_EXP", expa, nameid)		
		ChatColor(target_id, "!g[ZP] !y%L", LANG_PLAYER, "LEVEL_GIVE_EXP", name, expa)	
		Level_Save(target_id)	
	}
	else
		ChatColor(target_id, "!g[ZP] !y This invalid operation")	
	return PLUGIN_HANDLED
}

public zp_extra_item_selected(id, itemid)
{
	Level_Save(id)
}

public zp_user_infected_post(id, infector)
{
	level_exp[infector] = level_exp[infector] + 1;
	Level_Save(id);
	Level_Save(infector);
}

public info_player(id, target[])
{
	new target_2;
	target_2 = find_player("bl", target)
	static name[32], nameid[32];
	get_user_name(target_2, name, sizeof name - 1)
	get_user_name(id, nameid, sizeof nameid - 1)
	if(!target_2) 
	{
		ChatColor(id, "!g[ZP] !y%L", LANG_PLAYER, "LEVEL_INFO_NONAME")
		return PLUGIN_HANDLED
	}
	if(id != target_2) 
	{
		ChatColor(id, "!g[INFO]!t %L", LANG_PLAYER, "LEVEL_INFO", name, g_level[target_2], h_damage[target_2], h_speed[target_2], h_health[target_2], zp_get_user_ammo_packs(target_2) )
		ChatColor(target_2, "!g[INFO]!t%L ", LANG_PLAYER, "LEVEL_INFO_YOU", nameid)	
	}
	else
	{
		ChatColor(id, "!g[INFOME]!t%L", LANG_PLAYER, "LEVEL_INFOME", h_damage[target_2], h_speed[target_2], h_health[target_2] )
	}
	return PLUGIN_HANDLED
}

public bonus_player(id)
{
	if( (g_level[id] == g_levels[id]) && (get_pcvar_num(g_level_bonus) == 1) && g_bonus[id])
	{
	g_levels[id] = g_levels[id] * 2;
	g_level_del[id] = g_level[id];
	g_bonus[id] = false; 
	ChatColor(id, "!g[BONUS]%L", LANG_PLAYER, "LEVEL_MEGABONUS", g_level[id], get_pcvar_num(g_ammo) )
	zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + get_pcvar_num(g_ammo) )
	Level_Save(id)
	}
	else 
	{
		if(g_level[id] < g_levels[id])
		{
			g_levels[id] = get_pcvar_num(g_level_num);
			ChatColor(id, "!g[BONUS]!y%L", LANG_PLAYER, "LEVEL_NOMEGABONUS", g_levels[id], get_pcvar_num(g_ammo) )
		}
		else
		{
			g_levels[id] = get_pcvar_num(g_level_num) * 2;
			ChatColor(id, "!g[BONUS]!y%L", LANG_PLAYER, "LEVEL_NOMEGABONUS", g_levels[id], get_pcvar_num(g_ammo) )
		}

		Level_Save(id)
	}
	return PLUGIN_HANDLED
}

public expa_player(id)
{
	ChatColor(id, "!g[EXPA] %L", LANG_PLAYER, "LEVEL_EXP", level_exp[id], g_level_exp[id])
	Level_Save(id)
	return PLUGIN_HANDLED
}

public level_status(id)
{
	if( is_user_alive(id) && g_play[id])
	{
		set_hudmessage(255, 200, 3, 0.02, 0.868, 0, 1.0, 1.1, 0.0, 0.0, -1)
		show_hudmessage(id,"%L", LANG_PLAYER, "LEVEL_STATUS", g_level[id], level_exp[id])
	}
}

public Level_Save(id)
{
	new key[64], data[256], data_exp[256], key_exp[64]
	new name[33];
	get_user_name(id,name,32)
			
	format(key, 63, "%s-/", name)
	format(data, 255, "%i#", g_level[id])

	format(key_exp, 63, "%s-/", name)
	format(data_exp, 255, "%i#", level_exp[id])
	
	nvault_set(g_level_data, key, data)
	nvault_set(g_exp_data, key_exp, data_exp)
	return PLUGIN_CONTINUE;
}

public Level_Load(id)
{
	new key[64], data[256], data_exp[256], key_exp[64]
	new name[33];
	get_user_name(id,name,32)
			
	format(key, 63, "%s-/", name)
	format(data, 255, "%i#", g_level[id])

	format(key_exp, 63, "%s-/", name)
	format(data_exp, 255, "%i#", level_exp[id])
	
	nvault_get(g_level_data, key, data, 255)
	nvault_get(g_exp_data, key_exp, data_exp, 255)
	replace_all(data, 255, "#", " ")
	replace_all(data_exp, 255, "#", " ")
	
	new givelevel[32], give_exp[32]
	parse(data, givelevel, 31)
	parse(data_exp, give_exp, 31)
	g_level[id] = str_to_num(givelevel)
	level_exp[id] = str_to_num(give_exp)
	
	set_task(1.0, "level_status", id, _, _, "b")
}

public Frags_Manager(victim,attacker,corpse) 
{
	new aname[32]
	get_user_name(attacker, aname, sizeof aname - 1)
	if( (level_exp[attacker] >= g_level_exp[attacker]) && (g_level[attacker] <= get_pcvar_num(g_level_max)) ) 
	{
		g_bonus[attacker] = true;
		g_level[attacker] = g_level[attacker] + 1;
		level_exp[attacker] = 0;
		g_level_exp[attacker] = g_level_exp[attacker] + get_pcvar_num(g_frags_level);
		message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker) 
	       	write_short(1<<12) // duration 
	        write_short(1) // hold time 
		write_short(0x0000) // fade type 
		write_byte(0) // red 
		write_byte(200) // green 
		write_byte(0) // blue 
		write_byte(160) // alpha 
		message_end() 
		emit_sound(attacker, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
		set_hudmessage(0, 200, 0, 0.65, 0.5, 0, 0.0, 3.0, 2.0, 1.0, -1)
		show_hudmessage(0, "%L", LANG_PLAYER, "LEVEL_UP", aname, g_level[attacker])
		if(get_pcvar_num(g_give_ammo) == 1)
		{
			ChatColor(attacker, "!g[LEVEL] !y %L", LANG_PLAYER, "BONUS_LEVEL", get_pcvar_num(g_give_ammopacks) )
			zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_give_ammopacks) )
		}
		Level_Save(attacker);
	}
	else
	{

		if(g_level[attacker] == get_pcvar_num(g_level_max))
		ChatColor(attacker, "!g[LEVEL]!y %L", LANG_PLAYER, "LEVEL_MAX", g_level[attacker] )
		level_exp[attacker] = level_exp[attacker] + 1;
		Level_Save(attacker);
	}
}

public zp_round_ended(winteam)
{
	for(new id=1;id<=g_Players;id++)
	g_trime[id] = true;
}

stock ChatColor(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4") // Green Color
	replace_all(msg, 190, "!y", "^1") // Default Color
	replace_all(msg, 190, "!t", "^3") // Team Color
	replace_all(msg, 190, "!t2", "^0") // Team2 Color
	
	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players))
			{
				message_begin(MSG_ONE_UNRELIABLE, SayText, _, players)
				write_byte(players);
				write_string(msg);
				message_end();
			}
		}
	}
}

Eroare este la

Code: Select all

public zp_round_ended(winteam)
{
	for(new id=1;id<=g_Players;id++)
	g_trime[id] = true;
}
Daca poate sa ma ajute si pe mine cineva , dau un multumesc.
Image
RoyalServer
rEpTiLa0o4
Membru, skill +2
Membru, skill +2
Posts: 819
Joined: 18 Jun 2009, 14:01
Detinator Steam: Da
CS Status: My life's riding on Autobahn !
Detinator server CS: Zombie-Land&Elz
Location: Lugoj
Has thanked: 89 times
Been thanked: 82 times
Contact:

01 Nov 2010, 15:42

Up !..
Image
Post Reply

Return to “Probleme la servere dedicate de Counter-Strike”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 38 guests