Raised This Month: $ Target: $400
 0% 

Invalid index -8 (count: 7)


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Carbonzxc
Member
Join Date: Sep 2015
Old 08-05-2021 , 14:36   Invalid index -8 (count: 7)
Reply With Quote #1

Hello,

i have a problem regarding a plugins array, i need help for fix that debug output ;

L 08/05/2021 - 2151: Invalid index -8 (count: 7)
L 08/05/2021 - 2151: [AMXX] Displaying debug trace (plugin "zp_addon_quests.amxx", version "29.05.2018")
L 08/05/2021 - 2151: [AMXX] Run time error 10: native error (native "ArrayGetArray")
L 08/05/2021 - 2151: [AMXX] [0] zp_addon_quests.sma::Show_MainMenu (line 152)
L 08/05/2021 - 2151: [AMXX] [1] zp_addon_quests.sma::Handle_MainMenu (line 173)

Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#include <zp_buymenu>

// -> Инфо о плагине <- //{
new g_Plugin[] = "[ZP] Quests";
new g_Version[] = "29.05.2018";
new g_Author[] = "vk.com/cs_jump";
// -> Инфо о плагине <- //}

//native zp_get_user_ptz(id, ptz)

const RIGHT_PER_PAGE = 8; // Игроков на одной странице (9 - далее | 0 - выход)
new g_iMenuPosition[33], Target[33];

enum _:DATA_LIST { Name[64], Description[64], Number[64], Type[64], Reward[64], Exp[64] }
new aDataLIST[DATA_LIST]
new Array:g_aList;
new g_iListSize;
new iKillerNum[33][15];

public plugin_init()
{
	register_plugin(g_Plugin, g_Version, g_Author);

	register_menucmd(register_menuid("Show_MainMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_MainMenu");

	register_clcmd("say /quests", "ClientCmd");
	register_clcmd("zp_quests", "ClientCmd");
	RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post");
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
}

public plugin_precache()
{
	new szCfgDir[64], szCfgFile[128];
	get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
// Получаем список Квестов
	formatex(szCfgFile, charsmax(szCfgFile), "%s/zp_quests.ini", szCfgDir);
	switch(file_exists(szCfgFile))
	{
		case 0:
		{
			write_file(szCfgFile, "; Файл добавления квестов");
			write_file(szCfgFile, "; ^"Название^" ^"Описание^" ^"Кол-во для награды^" ^"Тип^" ^"Награда Аммо^"");
			write_file(szCfgFile, "; Типы:");
			write_file(szCfgFile, "; 1 - Заражение");
			write_file(szCfgFile, "; 2 - Убийство Зомби");
			write_file(szCfgFile, "; 3 - Убийство первого Зомби");
			write_file(szCfgFile, "; 4 - Убийство последнего Зомби");
			write_file(szCfgFile, "; 5 - Убийство Дьявола");
			write_file(szCfgFile, "; 6 - Убийство Выжившего");
			write_file(szCfgFile, "; 7 - Нанесение Урона");
			write_file(szCfgFile, "");
			write_file(szCfgFile, "^"Убийца^" ^"Убить зомби^" ^"10^" ^"2^" ^"20^"");
			write_file(szCfgFile, "^"Киллер^" ^"Убить зомби^" ^"15^" ^"2^" ^"30^"");
			write_file(szCfgFile, "^"1-я Зараза^" ^"Убить первых зомби^" ^"5^" ^"3^" ^"40^"");
			write_file(szCfgFile, "^"Последняя Зараза^" ^"Убить последних зомби^" ^"5^" ^"4^" ^"50^"");
			write_file(szCfgFile, "^"Охотник^" ^"Убить выживших^" ^"5^" ^"6^" ^"70^"");
			write_file(szCfgFile, "^"Мясник^" ^"Убить дьяволов^" ^"5^" ^"5^" ^"70^"");
			write_file(szCfgFile, "^"Зараза^" ^"Заразить людей^" ^"15^" ^"1^" ^"20^"");
			write_file(szCfgFile, "^"Токсичный^" ^"Заразить людей^" ^"25^" ^"1^" ^"40^"");
			write_file(szCfgFile, "^"Ликвидатор^" ^"Нанести урона^" ^"100000^" ^"7^" ^"500^"");
		}
		case 1:
		{
			new szBuffer[128], iLine, iLen;
			g_aList = ArrayCreate(DATA_LIST);
			while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
			{
				if(!iLen || szBuffer[0] == ';') continue;
				parse
				(
					szBuffer, 
					aDataLIST[Name], charsmax(aDataLIST[Name]),
					aDataLIST[Description], charsmax(aDataLIST[Description]),
					aDataLIST[Number], charsmax(aDataLIST[Number]),
					aDataLIST[Type], charsmax(aDataLIST[Type]),
					aDataLIST[Reward], charsmax(aDataLIST[Reward]),
					aDataLIST[Exp], charsmax(aDataLIST[Exp])
				);
				ArrayPushArray(g_aList, aDataLIST);
			}
			g_iListSize = ArraySize(g_aList);
		}
	}
}

public plugin_natives()
{
	register_native("zp_open_quests", "ClientCmd", 1);
}

public zp_user_infected_pre(id, infector)
{
		iKillerNum[infector][1]++;
}

public Ham_PlayerKilled_Post(iVictim, iKiller)
{
	if(iVictim != iKiller)
	{
		if(zp_get_user_nemesis(iVictim)) iKillerNum[iKiller][5]++;
		else if(zp_get_user_survivor(iVictim)) iKillerNum[iKiller][6]++;
		else if(zp_get_user_first_zombie(iVictim)) iKillerNum[iKiller][3]++;
		else if(zp_get_user_last_zombie(iVictim)) iKillerNum[iKiller][4]++;
		else if(zp_get_user_zombie(iVictim)) iKillerNum[iKiller][2]++;
	}
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if (victim == attacker || zp_get_user_zombie(attacker))
		return HAM_IGNORED;

	iKillerNum[attacker][7] += floatround(damage)
	return HAM_IGNORED// HAM_SUPERCEDE;
}

public ClientCmd(id) return Show_MainMenu(id, g_iMenuPosition[id] = 0);
Show_MainMenu(id, iPos)
{

    //if(zp_get_user_ptz(id, 5)>=1) return PLUGIN_HANDLED;
	
	new iPlayersNum = g_iListSize;
	new iStart = iPos * RIGHT_PER_PAGE;
	if(iStart > iPlayersNum) iStart = iPlayersNum;
	iStart = iStart - (iStart % RIGHT_PER_PAGE);
	g_iMenuPosition[id] = iStart / RIGHT_PER_PAGE;
	new iEnd = iStart + RIGHT_PER_PAGE;
	if(iEnd > iPlayersNum) iEnd = iPlayersNum;
	new szMenu[512], iLen, iPagesNum = (iPlayersNum / RIGHT_PER_PAGE + ((iPlayersNum % RIGHT_PER_PAGE) ? 1 : 0));
	switch(iPagesNum)
	{
		case 0:
		{
			UTIL_SayText(id, "!g[CSO] !yNo quest!t.");
			return PLUGIN_HANDLED;
		}
		default: iLen = formatex(szMenu, charsmax(szMenu), "\r[CSO] \wQuests \r[%d|%d]^n^n", iPos + 1, iPagesNum);
	}
	new iKeys = (1<<9), b;
	for(new a = iStart; a < iEnd; a++)
	{
		ArrayGetArray(g_aList, a, aDataLIST);
		iKeys |= (1<<b);
		iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[%d]\w%s %s \r[%d\d|\r%s]^n", ++b, iKillerNum[id][str_to_num(aDataLIST[Type])] >= str_to_num(aDataLIST[Number]) ? "\w":"\d", aDataLIST[Name], iKillerNum[id][str_to_num(aDataLIST[Type])], aDataLIST[Number]);
	}
	for(new i = b; i < 8; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
	if(iEnd < iPlayersNum)
	{
		iKeys |= (1<<8);
		formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[9]\w Next^n\r[0]\w %s", iPos ? "Back" : "Exit");
	}
	else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[0]\w %s", iPos ? "Back" : "Exit");
	return show_menu(id, iKeys, szMenu, -1, "Show_MainMenu");
}

public Handle_MainMenu(id, iKey)
{
    //if(zp_get_user_ptz(id, 5)>=1) return PLUGIN_HANDLED;

	switch(iKey)
	{
		case 8: return Show_MainMenu(id, ++g_iMenuPosition[id]);
		case 9: return Show_MainMenu(id, --g_iMenuPosition[id]);
		default:
		{
			Target[id] = g_iMenuPosition[id] * RIGHT_PER_PAGE + iKey;
			ArrayGetArray(g_aList, Target[id], aDataLIST);
			if(iKillerNum[id][str_to_num(aDataLIST[Type])] >= str_to_num(aDataLIST[Number]))
			{
				iKillerNum[id][str_to_num(aDataLIST[Type])] -= str_to_num(aDataLIST[Number]);
				zp_cs_set_user_money(id, zp_cs_get_user_money(id) + str_to_num(aDataLIST[Reward]))
				zp_set_user_exp(id, zp_get_user_exp(id) + str_to_num(aDataLIST[Exp]))
				UTIL_SayText(id, "!g[CSO] !yYou completed the quest '!t%s!y' earned !g%d$ Money!y and !g%d Exp!y.", aDataLIST[Name], str_to_num(aDataLIST[Reward]), str_to_num(aDataLIST[Exp]));
			}
			else UTIL_SayText(id, "!g[CSO] !yYou must !t%s !g%d !ytime(s). You have left !t%d !ytime(s).", aDataLIST[Description], str_to_num(aDataLIST[Number]), str_to_num(aDataLIST[Number]) - iKillerNum[id][str_to_num(aDataLIST[Type])]);
		}
	}
	return Show_MainMenu(id, g_iMenuPosition[id]);
}

stock UTIL_SayText(pPlayer, const szMessage[], any:...)
{
	new szBuffer[190];
	if(numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
	else copy(szBuffer, charsmax(szBuffer), szMessage);
	while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
	while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
	while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
	switch(pPlayer)
	{
		case 0:
		{
			for(new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++)
			{
				engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, 76, {0.0, 0.0, 0.0}, iPlayer);
				write_byte(iPlayer);
				write_string(szBuffer);
				message_end();
			}
		}
		default:
		{
			engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, 76, {0.0, 0.0, 0.0}, pPlayer);
			write_byte(pPlayer);
			write_string(szBuffer);
			message_end();
		}
	}
}
Carbonzxc is offline
Reply



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 13:16.


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