Raised This Month: $51 Target: $400
 12% 

Please fix this plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
combocarte112
Senior Member
Join Date: Jun 2016
Location: Romania
Old 01-22-2017 , 02:19   Please fix this plugin
Reply With Quote #1

Hello, please fix this plugin.
Sometimes shuts server.
Code:
/*
	BASE BUILDER GAME MOD: FRAGS LEVEL MOD
			BY GHOST ***
				VERSION 0.0.8 BETA
				
	Credite
	
		Arion - Pentru chestia cu chatu (Am extras chestii pentru mesaju chat (LVL:) din pluginu ala Green admin chat :-@
		Askhanar - Asa salveaza el pe nVault (:-??)
*/

// Includes

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta_util>
#include <nvault>
#include <fun>

// Define

#define MAX_LEVELS	21

// Register Plugin & Tag & pragma

#pragma semicolon 1

new const
	PLUGIN_NAME[] = "Base Builder Game Mod: Frags Level Mod",
	PLUGIN_VERS[] = "0.0.8 BETA",
	PLUGIN_AUTH[] = "GhosT ***";
	
new const szTag[] = "[Base Builder]";

// Variabile

new PlayerFrags[33], PlayerLevel[33];
new PlayerWaitTime[33];
new bool:HasItems[33], bool:HaveDamage[33];
new nVault;

// Cvars

new GiveTime, GameNameOn;

// Levele

new const Levels[MAX_LEVELS + 2] =
{
	0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500,
	550, 600, 650, 700, 750, 800, 850, 900, 950, 1000,
	100000000000000000000000000000 // Nu modificati
};

// Flags

new const GiveFlags[] = "au";
new const TakeFlags[] = "au";

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH);
	
	register_event("DeathMsg", "DeathMsg", "a");
	
	RegisterHam(Ham_Spawn, "player", "PlayerSpawn", true);
	RegisterHam(Ham_TakeDamage, "player", "PlayerTakeDamage");
	
	register_logevent("RoundStart", 2, "1=Round_Start");
	
	register_clcmd("say /level", "LevelClCmd");
	register_clcmd("say /frags", "LevelClCmd");
	register_clcmd("say /lvl", "LevelClCmd");
	
	register_clcmd("say_team /level", "LevelClCmd");
	register_clcmd("say_team /frags", "LevelClCmd");
	register_clcmd("say_team /lvl", "LevelClCmd");
	
	register_concmd("amx_give_frags", "GiveFragsConCmd");
	register_concmd("amx_take_frags", "TakeFragsConCmd");
	
	register_forward(FM_GetGameDescription, "GameNameCmd");
	
	register_clcmd("say", "SayClCmd");
	
	GiveTime	= register_cvar("GiveTime", "0"); // Aici puneti in cate secunde de la spawnu playerulu sa dea itemele .
	GameNameOn	= register_cvar("GameNameOn", "1");			// adica cat timp de constructie este + 5/10 secunde
	nVault		= nvault_open("BaseBuilderFrags");
	
	register_cvar("bb_frags_mod", PLUGIN_VERS, FCVAR_SPONLY | FCVAR_SERVER);
	register_cvar("bb_frags_author", PLUGIN_AUTH, FCVAR_SERVER | FCVAR_SPONLY);
}
public plugin_natives( )
{
	register_native("bb_get_user_frags", "_get_user_frags", true);
	register_native("bb_set_user_frags", "_set_user_frags", true);
}
public _get_user_frags(iParams)
{
	return PlayerFrags[get_param(1)];
}
public _set_user_frags(iParams)
{
	PlayerFrags[get_param(1)] = max(0, get_param(2));
	return PlayerFrags[get_param(1)];
}
public DeathMsg( )
{
	new iAttacker	= read_data(1);
	new iVictim	= read_data(2);
	
	if(iAttacker == iVictim)
	{
		if(PlayerFrags[iAttacker] >= 1)
			PlayerFrags[iAttacker]--;
			
		else return PLUGIN_HANDLED;
	}
		
	else if(iAttacker != iVictim)
		PlayerFrags[iAttacker]++;
		
	if(PlayerLevel[iAttacker] < MAX_LEVELS - 1 && PlayerFrags[iAttacker] >= Levels[PlayerLevel[iAttacker]])
	{
		while(PlayerFrags[iAttacker] >= Levels[PlayerLevel[iAttacker]])
			PlayerLevel[iAttacker]++;
			
		ColorChat(iAttacker, "^x04%s^x01 Ai trecut la^x04 levelul^x03 %d^x01 !", szTag, PlayerLevel[iAttacker]);
		
		ShakeScreen(iAttacker, 2.0);
		FadeScreen(iAttacker, 2.0, 0, 15, 200, 200);
	}
	if(PlayerFrags[iVictim] < Levels[PlayerLevel[iVictim] - 1])
	{
		while(PlayerFrags[iVictim] < Levels[PlayerLevel[iVictim] - 1])
			PlayerLevel[iVictim]--;
			
		ColorChat(iVictim, "^x04%s^x01 Ai pierdut^x04 un level^x03 din lipsa de fraguri^x01 !", szTag);
		
		ShakeScreen(iVictim, 2.0);
		FadeScreen(iVictim, 2.0, 200, 15, 0, 200);
	}
	
	return PLUGIN_CONTINUE;
}
public PlayerSpawn(id)
{
	if(PlayerLevel[id] < MAX_LEVELS - 1)
	{
		if(PlayerFrags[id] >= Levels[PlayerLevel[id]])
		{
			while(PlayerFrags[id] >= Levels[PlayerLevel[id]])
				PlayerLevel[id]++;
		}
	}
	
	return PLUGIN_HANDLED;
}
public PlayerTakeDamage(iAttacker, iVictim, Float:fDamage, iDamageBits)
{
	if(HaveDamage[iAttacker])
	{
		fDamage = (fDamage + 2.0 * Float:PlayerLevel[iAttacker]);
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}
public RoundStart()
{	
	new Jucator[32], iNum;
	get_players(Jucator, iNum);
	
	for(new i = 0; i < iNum; i++)
	{
		HasItems[Jucator[i]] 		= false;
		HaveDamage[Jucator[i]] 		= false;
		
		PlayerWaitTime[Jucator[i]]	= get_pcvar_num(GiveTime);
		
		set_task(1.0, "HudAbility", Jucator[i], _, _, "b"); // Pentru a arata corect mesajul in hud ..
		set_task(get_pcvar_float(GiveTime) + 2.0, "PlayerAbility", Jucator[i]); // Timpul corect pentru taskul de iteme .
	}
}
public HudAbility(id)
{
	if(PlayerWaitTime[id] > 0)
	{	
		set_hudmessage(0, 255, 100, 0.70, 0.20, 0, 1.0, 2.0);
		show_hudmessage(id, "Iti vei primi abilitatile in %i secunde ...", PlayerWaitTime[id]);
		
		PlayerWaitTime[id] -= 1;
	}
	
	return PLUGIN_CONTINUE;
}
public PlayerAbility(id)
{
	if(HasItems[id] == false)
	{
		if(get_user_team(id) == 2)
		{
			set_user_health(id, get_user_health(id) + 5 * PlayerLevel[id]);
			set_user_armor(id, get_user_armor(id) + 20 * PlayerLevel[id]);
			
			ColorChat(id, "^x04%s^x01 Ai levelul %d !", szTag, PlayerLevel[id]);
			ColorChat(id, "^x04%s^x01 Abilitati:^x03 [^x04+%dHP^x03][^x04+%dAP^x03][^x04+%dDMG^x03]", szTag, 10 * PlayerLevel[id], 20 * PlayerLevel[id], 2* PlayerLevel[id]);
			HaveDamage[id] = true;
			
		}
		else if(get_user_team(id) == 1)
		{
			set_user_health(id, get_user_health(id) + 5 * PlayerLevel[id]);
			set_user_armor(id, get_user_armor(id) + 20 * PlayerLevel[id]);
			
			ColorChat(id, "^x04%s^x01 Ai levelul %d !", szTag, PlayerLevel[id]);
			ColorChat(id, "^x04%s^x01 Abilitati:^x03 [^x04+%dHP^x03][^x04+%dAP^x03][^x04+%dDMG^x03]", szTag, 10 * PlayerLevel[id], 20 * PlayerLevel[id], 2* PlayerLevel[id]);
			HaveDamage[id] = true;
		}
		
		HasItems[id] = true;
	}
	
	set_hudmessage(0, 255, 100, 0.70, 0.20);
	show_hudmessage(id, "Ti-ai primit abilitatile !");
	
	return PLUGIN_CONTINUE;
}
public LevelClCmd(id)
{	
	if(PlayerLevel[id] != MAX_LEVELS - 1)
		ColorChat(id, "^x04%s^x03 %s^x01, ai: |^x04 Level: %d / %d^x01 |^x04 Fraguri: %d / %d^x01 |^x04 %d Frag%s^x01 ramas%s pana la^x04 levelul %d^x01 |", szTag, get_name(id), PlayerLevel[id], MAX_LEVELS - 1, PlayerFrags[id], Levels[PlayerLevel[id]], Levels[PlayerLevel[id]] - PlayerFrags[id], Levels[PlayerLevel[id]] - PlayerFrags[id] == 1 ? "" : "uri", Levels[PlayerLevel[id]] - PlayerFrags[id] == 1 ? "" : "e", PlayerLevel[id] + 1);
	else if(PlayerLevel[id] == MAX_LEVELS - 1)
		ColorChat(id, "^x04%s^x03 %s^x01, ai: |^x04 Level: MAXIM^x01 & ^x04 Fraguri: %d^x01 !", szTag, get_name(id), PlayerFrags[id]);
	
	return PLUGIN_HANDLED;
}
public GiveFragsConCmd(id)
{
	if(get_user_flags(id) & read_flags(GiveFlags))
	{
		new szArg[32], szAmount[32];
		new Amount, iTarget;
		
		read_argv(1, szArg, sizeof(szArg) - 1);
		read_argv(2, szAmount, sizeof(szAmount) - 1);
		
		iTarget = cmd_target(id, szArg, CMDTARGET_NO_BOTS);
		Amount = str_to_num(szAmount);
		
		if(equal(szArg, "") || equal(szAmount, ""))
		{
			console_print(id, "amx_give_frags <NICK> <AMOUNT>");
			return PLUGIN_HANDLED;
		}
		
		if(!iTarget)
		{
			console_print(id, "Jucatorul %s nu exista sau nu este online !", iTarget);
			return PLUGIN_HANDLED;
		}
		
		if(Amount > 99999)
		{
			console_cmd(id, "Nu poti da mai mult de 99999 fraguri !");
			return PLUGIN_HANDLED;
		}
		
		ColorChat(0, "^x03%s^x04 (ADMIN): %s^x01 ii da^x03 %d Frag%s^x01 lui^x04 %s^x01 !", szTag, get_name(id), Amount, Amount == 1 ? "" : "uri", get_name(iTarget));
		log_amx("ADMIN: %s (#%s) gave to %s (#%s) %d Frag%s !", get_name(id), get_authid(id), get_name(iTarget), get_authid(iTarget), Amount, Amount == 1? "" : "s");
		
		PlayerFrags[iTarget] += Amount;
		
		if(PlayerLevel[iTarget] < MAX_LEVELS - 1)
		{
			while(PlayerFrags[iTarget] >= Levels[PlayerLevel[iTarget]])
				PlayerLevel[iTarget]++;
		}
		
		SaveFrags(iTarget);
	}
	else
	{
		console_print(id, "Nu ai acces la aceasta comanda !");
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_HANDLED;
}
public TakeFragsConCmd(id)
{
	if(get_user_flags(id) & read_flags(TakeFlags))
	{
		new szArg[32], szAmount[32];
		new Amount, iTarget;
		
		read_argv(1, szArg, sizeof(szArg) - 1);
		read_argv(2, szAmount, sizeof(szAmount) - 1);
		
		Amount = str_to_num(szAmount);
		iTarget = cmd_target(id, szArg, CMDTARGET_NO_BOTS);
		
		if(equal(szArg, "") || equal(szAmount, ""))
		{
			console_print(id, "amx_take_frags <NICK> <AMOUNT>");
			return PLUGIN_HANDLED;
		}
		
		if(!iTarget)
		{
			console_print(id, "Jucatorul %s nu exista sau nu este online !", iTarget);
			return PLUGIN_HANDLED;
		}
		
		if(Amount > PlayerFrags[id])
		{
			console_print(id, "Jucatorul %s are doar %d fraguri !", get_name(iTarget), PlayerFrags[iTarget]);
			return PLUGIN_HANDLED;
		}
		
		ColorChat(0, "^x03%s^x04 (ADMIN): %s^x01 ii ia^x03 %d Frag%s^x01 lui^x04 %s^x01 !", szTag, get_name(id), Amount, Amount == 1 ? "" : "uri", get_name(iTarget));
		log_amx("ADMIN: %s (#%s) take to %s (#%s) %d Frag%s !", get_name(id), get_authid(id), get_name(iTarget), get_authid(iTarget), Amount, Amount == 1 ? "" : "s");
		
		PlayerFrags[iTarget] -= Amount;
		
		if(PlayerFrags[iTarget] < Levels[PlayerLevel[iTarget] - 1])
		{
			while(PlayerFrags[iTarget] < Levels[PlayerLevel[iTarget] - 1])
				PlayerLevel[iTarget]--;
		}
		
		SaveFrags(iTarget);
	}
	else
	{
		console_print(id, "Nu ai acces la aceasta comanda !");
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_HANDLED;
}
public GameNameCmd()
{
	if(get_pcvar_num(GameNameOn))
		forward_return(FMV_STRING, "Base Builder Frags Mod");
		
	return FMRES_SUPERCEDE;
}
public client_putinserver(id)
{
	ColorChat(0, "^x04%s^x03 [%d]^x04 [Level: %d]^x01 se conecteaza pe server !", szTag, get_name(id), PlayerLevel[id]);
	
	LoadFrags(id);
	
	set_task(1.0, "ShowUserDetails", id, _, _, "b");
}
public client_disconnect(id)
{
	ColorChat(0, "^x04%s^x03 [%d]^x04 [Level: %d]^x01 sa deconectat de pe server !", szTag, get_name(id), PlayerLevel[id]);
	SaveFrags(id);
}
public SayClCmd(id)
{
	new iMessage[192];
	
	read_args(iMessage, sizeof(iMessage) - 1);
	remove_quotes(iMessage);
	
	if(!valid_message(iMessage))
		return PLUGIN_CONTINUE;
	
	if(is_user_alive(id) && PlayerLevel[id] != MAX_LEVELS - 1)
		format(iMessage, sizeof(iMessage) - 1, "^x04[LVL: %d]^x03 %s ^x01: %s", PlayerLevel[id], get_name(id), iMessage);
	
	else if(!is_user_alive(id) && PlayerLevel[id] != MAX_LEVELS - 1)
		format(iMessage, sizeof(iMessage) - 1, "^x03[DEAD]^x04 [LVL: %d]^x03 %s ^x01: %s", PlayerLevel[id], get_name(id), iMessage);
	
	if(is_user_alive(id) && PlayerLevel[id] == MAX_LEVELS - 1)
		format(iMessage, sizeof(iMessage) - 1, "^x04[LVL: %d]^x03 %s ^x01: %s", PlayerLevel[id], get_name(id), iMessage);
	
	else if(!is_user_alive(id) && PlayerLevel[id] == MAX_LEVELS - 1)
		format(iMessage, sizeof(iMessage) - 1, "^x03[DEAD]^x04 [LVL: %d]^x03 %s ^x01: %s", PlayerLevel[id], get_name(id), iMessage);
	
	for(new i = 1; i <= get_maxplayers(); i++)
	{
		if(!is_user_connected(i))
			continue;
		
		if((is_user_alive(id) && is_user_alive(i)) || !(is_user_alive(id) && is_user_alive(i)))
		{
			message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
			write_byte(id);
			write_string(iMessage);
			message_end( );
		}
	}
	
	return PLUGIN_HANDLED;
}
public ShowUserDetails(id)
{
	set_hudmessage(0, 255, 255, -1.0, 0.75);
	
	if(is_user_alive(id) && PlayerLevel[id] < MAX_LEVELS - 1)
		show_hudmessage(id, "[Frags: %d / %d | Level: %d / %d]", PlayerFrags[id], Levels[PlayerLevel[id]], PlayerLevel[id], MAX_LEVELS - 1);
	
	if(is_user_alive(id) && PlayerLevel[id] >= MAX_LEVELS - 1)
		show_hudmessage(id, "[Frags: %d | Level: MAXIM]", PlayerFrags[id]);
}
public LoadFrags(id)
{
	new szData[256], iTimestamp;
	
	formatex(szData, sizeof(szData) - 1, "%i ", PlayerFrags[id]);
	
	if(nvault_lookup(nVault, get_name(id), szData, sizeof(szData), iTimestamp))
	{
		static iFrags[15];
		parse(szData, iFrags, sizeof(iFrags) - 1);
		PlayerFrags[id] = str_to_num(iFrags);
		return PLUGIN_CONTINUE;
	}
	
	return PLUGIN_CONTINUE;
}
public SaveFrags(id)
{
	new szData[256];
	formatex(szData, sizeof(szData) - 1, "%i ", PlayerFrags[id]);
	
	nvault_set(nVault, get_name(id), szData);
}
stock get_name(id, len=31)
{
	new Name[32];
	get_user_name(id, Name, len);
	
	return Name;
}
stock get_authid(id, len=31)
{
	new AuthID[32];
	get_user_authid(id, AuthID, len);
	
	return AuthID;
}
stock ColorChat(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191];
	vformat(msg, 190, input, 3);
	
	replace_all(msg, 190, "^x04", "^4"); // Green Color
	replace_all(msg, 190, "^x01", "^1"); // Default Color
	replace_all(msg, 190, "^x03", "^3"); // Team Color
	replace_all(msg, 190, "^0", "^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[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}
stock ShakeScreen(id, const Float:seconds)
{
	message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0, 0, 0}, id);
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(1<<13);
	message_end( );
}

stock FadeScreen(id, const Float:seconds, const red, const green, const blue, const alpha)
{      
	message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, id);
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(0x0000);
	write_byte(red);
	write_byte(green);
	write_byte(blue);
	write_byte(alpha);
	message_end( );
}
stock valid_message(const iMessage[])
{
	if(iMessage[0] == '/' || iMessage[0] == '@' || iMessage[0] == '@' && iMessage[1] == '@' || iMessage[0] == '@' && iMessage[1] == '@' && iMessage[2] == '@' || !strlen(iMessage))
	{
		return false;
	}
	
	return true;
}
combocarte112 is offline
Send a message via Skype™ to combocarte112
Celena Luna
Veteran Member
Join Date: Aug 2013
Location: Nagazora
Old 01-22-2017 , 02:50   Re: Please fix this plugin
Reply With Quote #2

Code:
new const Levels[MAX_LEVELS + 2] =
{
	0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500,
	550, 600, 650, 700, 750, 800, 850, 900, 950, 1000,
	100000000000000000000000000000 // Nu modificati
};
Don't do this.
"100000000000000000000000000000" is the thing may crash the server (I think)
__________________
My plugin:
Celena Luna is offline
Craxor
Veteran Member
Join Date: Jan 2016
Location: Romania
Old 01-22-2017 , 04:27   Re: Please fix this plugin
Reply With Quote #3

good, can yu provide the errors from console?
RO: poti sa arati errorile din consola sau log-errorile? ?
__________________
Project: Among Us
Craxor is offline
Send a message via ICQ to Craxor
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 09:49.


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