Преработка на Army System

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Alexandrow
Извън линия
Потребител
Потребител
Мнения: 157
Регистриран на: 22 Ное 2017, 16:05
Се отблагодари: 14 пъти
Получена благодарност: 9 пъти

Преработка на Army System

Мнение от Alexandrow » 02 Мар 2018, 00:53

Здравейте, може ли една малка /надявам се/ преработка на този плъгин?
Има старанно нещо, когато пиша в чата ми излиза по следния начин: s1: s2, а в тийм чата си излиза нормално съобщение / Ivan: kak e примерно /.
Когато напиша /rank е по същия начин s1: s2 и от горе съобщението за ранк, а не както обикновенно Ivan: /rank.
Другото нещо е, когато някой вдигне ранк, изписва в чата съобщение с префикс [Army System]. Преобърнах целия код и не мога да го намеря къде е префикса, за да го променя.
Прикачвам няколко снимки, за да се добие по-добра представа.
А и не на последно място, плъгина надежден ли е? Някой ползвал ли го е и има ли впечатления от него?
Случайно го намерих в руски сайт и не е като онзи, който се среща навсякъде и е масов.

https://imgur.com/a/uMxVa
https://imgur.com/a/pkPaw
https://imgur.com/a/skhPr
https://imgur.com/a/GrkG7

EDIT:
Мисля, че не запазва XP правилно. Понеже тествам друг плъгин /нищо общо с подобен/, след няколко рестарта или смяна на карта връща предишно запазен XP, а не този, който си стигнал.
Дори веднъж ме върна от 0.



as_main.sma
(11.7 KiB) Свалено 109 пъти
as_main.sma
(11.7 KiB) Свалено 109 пъти

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Преработка на Army System

Мнение от OciXCrom » 02 Мар 2018, 20:27

Показва това защото след последния ъпдейт на СS са прецакали едно нещо и доста плъгини ползващи цветни съобщения ще изписват неща от рода на "s1 s2". В плъгина който си дал има само едно чат съобщение, което лесно може да се оправи с ползване на cromchat библиотеката:

Код за потвърждение: Избери целия код

#include < amxmodx >
#include < amxmisc >

#define INI_READ
#include < army_system >

#include < fakemeta >
#include < nvault >
#include < sqlx >

#define CC_COLORS_TYPE CC_COLORS_SHORT
#include < cromchat >
#define ShowMsg CC_SendMessage

#pragma tabsize 0

enum _:udata
{
	steam [ 35 ], level, exp, bonus, target
};

new UserData [ 33 ][ udata ];
new SQL_Active, SQL_Player [ 33 ];

new g_ObjHud, g_MaxPlayers, g_Vault;

new Handle:MYSQL_Tuple
new Handle:MYSQL_Connect

public plugin_init ()
{
	register_plugin ( "Army System (EA)", "3.0", "OverGame" );
	_as_ini_read ( "/addons/amxmodx/configs/as/ini/ranks.ini" );
	
	g_ObjHud = CreateHudSyncObj ();
	g_MaxPlayers = get_maxplayers ();
	
	register_message ( get_user_msgid ( "SayText" ), "msg_send" );
	register_forward ( FM_PlayerPreThink, "fw_PlayerPreThink", 0 );
	register_event ( "DeathMsg", "event_killing", "a" );
	register_dictionary ( "as_lang.txt" );
	
	register_cvar ( "as_exp_stand", "1" );
	register_cvar ( "as_exp_head", "3" );
	register_cvar ( "as_save", "1" );
	register_cvar ( "as_prefix", "1" );
	plugin_cfg ();
	
	switch ( get_cvar_num ( "as_save" ) )
	{
		case 0:
		{
			register_cvar ( "as_vault_name", "army_system" );
			
			new nvault_name [ 128 ];
			get_cvar_string ( "as_vault_name", nvault_name, 63 );
			
			g_Vault = nvault_open ( nvault_name );
			if ( g_Vault == INVALID_HANDLE )
            	set_fail_state ( "Error opening nVault!" );
		}
		case 1:
		{
			register_cvar ( "as_mysql_host", "127.0.0.1" );
			register_cvar ( "as_mysql_user", "root" );
			register_cvar ( "as_mysql_pass", "" );
			register_cvar ( "as_mysql_db", "asystem" );
			
			set_task ( 1.0, "MYSQL_Load" );
		}
	}
	
	set_task ( 1.0, "show_info", _, _, _, "b" );
}

public plugin_cfg ()
{
	new szCfgDir [ 64 ], szFile [ 192 ];
	get_configsdir ( szCfgDir, charsmax ( szCfgDir ) );
	format ( szFile, charsmax ( szFile ), "%s/as/cfg/main.cfg", szCfgDir );
	
	if ( file_exists ( szFile ) )
		server_cmd ( "exec %s", szFile );
}

public MYSQL_Load ()
{
	new szHostname [ 30 ], szUsername [ 30 ], szPassword [ 30 ], szDatabase [ 30 ];
	new szError [ 512 ], szErr;

	get_cvar_string ( "as_mysql_host", szHostname, charsmax ( szHostname ) );
	get_cvar_string ( "as_mysql_user", szUsername, charsmax ( szUsername ) );
	get_cvar_string ( "as_mysql_pass", szPassword, charsmax ( szPassword ) );
	get_cvar_string ( "as_mysql_db", szDatabase, charsmax ( szDatabase ) );

	MYSQL_Tuple = SQL_MakeDbTuple ( szHostname, szUsername, szPassword, szDatabase );
	MYSQL_Connect= SQL_Connect ( MYSQL_Tuple, szErr, szError, charsmax ( szError ) );

	if ( MYSQL_Connect == Empty_Handle )
		set_fail_state ( szError );

	SQL_Active = true;
}

public client_authorized ( id )
    get_user_authid ( id, UserData [ id ][ steam ], 35 );
	
public client_putinserver ( id )
	cmdCheck ( id );

public client_disconnect ( id )
	cmdSave ( id );
	
public cmdCheck ( id )
{
	switch ( get_cvar_num ( "as_save") )
	{
		case 0:
		{
			new s_GetLvl [ 40 ], s_GetExp [ 40 ], s_GetBonus [ 40 ];
	
			formatex ( s_GetLvl, charsmax ( s_GetLvl ), "%sRANK", UserData [ id ][ steam ] );
			new s_Level = nvault_get ( g_Vault, s_GetLvl );
	
			formatex ( s_GetExp, charsmax ( s_GetExp ), "%sEXP", UserData [ id ][ steam ] );
			new s_Exp = nvault_get ( g_Vault, s_GetExp );
	
			formatex ( s_GetBonus, charsmax ( s_GetBonus ), "%sBONUS", UserData [ id ][ steam ] );
			new s_Bonus = nvault_get ( g_Vault, s_GetBonus );
	
			if ( s_Level )
			{
				UserData [ id ][ level ] = s_Level;
				UserData [ id ][ exp ] = s_Exp;
				UserData [ id ][ bonus ] = s_Bonus;
			} else {
				cmdSave ( id );
			}
		}
		case 1:
		{
			if ( !SQL_Active )
			{
				set_task ( 1.0, "MYSQL_Load", id );
				return PLUGIN_HANDLED;
			}

			new szError [ 512 ];
			new szMYSQLName [ 35 ];
			new Handle:szSelect;

			szSelect = SQL_PrepareQuery ( MYSQL_Connect, "SELECT * FROM asystem" );
			if ( !SQL_Execute ( szSelect ) )
			{
				SQL_QueryError ( szSelect, szError, charsmax ( szError ) );
				set_fail_state ( szError );
			}
			while ( SQL_MoreResults ( szSelect ) )
			{
				SQL_ReadResult ( szSelect, 1, szMYSQLName, charsmax ( szMYSQLName ) );
	
				if ( equal ( szMYSQLName, UserData [ id ][ steam ] ) )
				{
					UserData [ id ][ level ] = SQL_ReadResult ( szSelect, 3 );
					UserData [ id ][ exp ] = SQL_ReadResult ( szSelect, 4 );
					UserData [ id ][ bonus ] = SQL_ReadResult ( szSelect, 5 );
			
					SQL_Player [ id ] = true;
					
					check_level ( id );
					break;
				} else {
					SQL_NextRow ( szSelect );
				}
			}
	
			new szName [ 33 ];
			get_user_name ( id, szName, charsmax ( szName ) );
			
			if ( !SQL_Player [ id ] )
			{
				new Handle:szInsert;
				szInsert = SQL_PrepareQuery ( MYSQL_Connect, "INSERT INTO `asystem` (`steam`, `nick`, `level`, `exp`, `bonus` ) VALUES  ('%s', '%s', '0', '0', '0' );", UserData [ id ][ steam ], szName )

				if ( !SQL_Execute ( szInsert ) )
				{
					SQL_QueryError ( szInsert, szError, charsmax ( szError ) );
					set_fail_state ( szError );
				}
				SQL_Player [ id ] = true;
			}
		}
	}
	return PLUGIN_HANDLED;
}

public cmdSave ( id )
{
	switch ( get_cvar_num ( "as_save" ) )
	{
		case 0:
		{
			new s_SaveLvl [ 40 ], s_SaveExp [ 40 ], s_SaveBonus [ 40 ], s_Level [ 64 ], s_Exp [ 64 ], s_Bonus [ 64 ];

			format ( s_SaveLvl, charsmax ( s_SaveLvl ), "%sRANK", UserData [ id ][ steam ] );
			format ( s_Level, charsmax ( s_Level ), "%d", UserData [ id ][ level ] );
	
			format ( s_SaveExp, charsmax ( s_SaveExp ) , "%sEXP", UserData [ id ][ steam ] );
			format ( s_Exp, charsmax ( s_Exp ), "%d", UserData [ id ][ exp ] );
	
			format ( s_SaveBonus, charsmax ( s_SaveBonus ) , "%sBONUS", UserData [ id ][ steam ] );
			format ( s_Bonus, charsmax ( s_Bonus ), "%d", UserData [ id ][ bonus ] );
    
			nvault_set ( g_Vault, s_SaveLvl, s_Level );
			nvault_set ( g_Vault, s_SaveExp, s_Exp );
			nvault_set ( g_Vault, s_SaveBonus, s_Bonus );
		}
		case 1:
		{
			new szError [ 512 ];
			new Handle:szUpdate;

			szUpdate = SQL_PrepareQuery ( MYSQL_Connect, "UPDATE `asystem` SET `level` = '%i', `exp` = '%i', `bonus` = '%i' WHERE `asystem`.`steam` = '%s';", UserData [ id ][ level ], UserData [ id ][ exp ], UserData [ id ][ bonus ], UserData [ id ][ steam ] );

			if ( !SQL_Execute ( szUpdate ) )
			{
				SQL_QueryError ( szUpdate, szError, charsmax ( szError ) );
				set_fail_state ( szError );
			}
		}
	}
	return PLUGIN_HANDLED;
}

public fw_PlayerPreThink ( id )
{
	new itarget, body;
	get_user_aiming ( id, itarget, body, 9999 );
 
	if ( 0 < itarget <= g_MaxPlayers )
		UserData [ id ][ target ] = itarget;
	
	return PLUGIN_HANDLED;
}

public event_killing ()
{
	new attacker = read_data ( 1 ), victim = read_data ( 2 ), head = read_data ( 3 );
	if ( attacker == victim || !is_user_connected ( attacker ) ) return;
	if ( head )
		UserData [ attacker ][ exp ] += get_cvar_num ( "as_exp_head" );
	else
		UserData [ attacker ][ exp ] += get_cvar_num ( "as_exp_stand" );
		
	UserData [ attacker ][ bonus ]++;
		
	check_level ( attacker );
}

public check_level ( id )
{
	if ( UserData [ id ][ level ] <= 0 )
		UserData [ id ][ level ] = 1
		
	if ( UserData [ id ][ exp ] < 0 )
		UserData [ id ][ exp ] = 0

	while ( UserData [ id ][ exp ] >= str_to_num ( asExp [ UserData [ id ][ level ] ] ) ) 
	{
		UserData [ id ][ level ]++
		static buffer [ 192 ]
		
		new szName [ 33 ]
		get_user_name ( id, szName, 32 )
		
		format ( buffer, charsmax ( buffer ), "%L %L", LANG_SERVER, "AS_CHAT_PREFIX", LANG_SERVER, "AS_CHAT_LEVEL_UP", szName );
		ShowMsg ( 0, buffer )
	}
}

public show_info ( )
{
	for ( new id = 1; id <= g_MaxPlayers; id++ )
	{
		if ( !is_user_bot ( id ) && is_user_connected ( id ) )
		{
			static buffer [ 255 ], len;
			set_hudmessage ( 60, 60, 60, 0.01, 0.20, 0, 15.0, 1.0, _, _, -1 );
		    if ( !is_user_alive ( id ) )
			{
				new szName [ 33 ];
				get_user_name ( UserData [ id ][ target ], szName, charsmax ( szName ) );
				
				len = format ( buffer, charsmax ( buffer ), "%L", LANG_SERVER, "AS_HUD_NICK", szName );
				len += format ( buffer [ len ], charsmax ( buffer ) - len, "^n%L", LANG_SERVER, "AS_HUD_LEVEL", asName [ UserData [ UserData [ id ][ target ] ][ level ] ] );
				
				if ( UserData [ UserData [ id ][ target ] ][ level ] < asLines )
				{
					len += format ( buffer [ len ], charsmax ( buffer ) - len, "^n%L", id, "AS_HUD_EXP", UserData [ UserData [ id ][ target ] ][ exp ], str_to_num (asExp [ UserData [ UserData [ id ][ target ] ][ level ] ]) );
				} else {
					len += format ( buffer [ len ], charsmax ( buffer ) - len, "^n%L", id, "AS_HUD_LEVEL_MAX" );
				}
			} else {
				len = format ( buffer, charsmax ( buffer ), "%L", LANG_SERVER, "AS_HUD_LEVEL", asName [ UserData [ id ][ level ] ] );
				
				if ( UserData [ id ][ level ] < asLines )
				{
					len += format ( buffer [ len ], charsmax ( buffer ) - len, "^n%L", id, "AS_HUD_EXP", UserData [ id ][ exp ], str_to_num (asExp [ UserData [ id ][ level ] ]) );
				} else {
					len += format ( buffer [ len ], charsmax ( buffer ) - len, "^n%L", id, "AS_HUD_LEVEL_MAX" );
				}
			}
			ShowSyncHudMsg ( id, g_ObjHud, buffer );
		}
	}
	return PLUGIN_CONTINUE;
}

public msg_send ( msgId, msgDest, msgEnt )
{
	new id = get_msg_arg_int ( 1 )
	
	if ( !is_user_connected ( id ) ) 
		return PLUGIN_CONTINUE;
	
	if ( get_cvar_num ( "as_prefix" ) )
	{
		new szTmp [ 256 ], szTmp2 [ 256 ], asPrefix [ 64 ]; 
		get_msg_arg_string ( 2, szTmp, charsmax ( szTmp ) );
		format ( asPrefix, charsmax ( asPrefix ), "^x04[%s]", asName [ UserData [ id ][ level ] ] );
 
		if ( !equal ( szTmp, "#Cstrike_Chat_All" ) )
		{
			add ( szTmp2,charsmax ( szTmp2 ), asPrefix );
			add ( szTmp2,charsmax ( szTmp2 ), " " );
			add ( szTmp2,charsmax ( szTmp2 ), szTmp );
		} else {
			add ( szTmp2, charsmax ( szTmp2 ), asPrefix );
			add ( szTmp2, charsmax ( szTmp2 )," ^x03%s1^x01: %s2" );
		}
		set_msg_arg_string ( 2, szTmp2 );
	}
	return PLUGIN_CONTINUE;
}

public plugin_natives ()
{
	register_native ( "as_get_user_rankname", "native_get_user_rankname" );

	register_native ( "as_get_user_level", "native_get_user_level", 1 );
	register_native ( "as_set_user_level", "native_set_user_level", 1 );
	
	register_native ( "as_get_user_exp", "native_get_user_exp", 1 );
	register_native ( "as_set_user_exp", "native_set_user_exp", 1 );
	
	register_native ( "as_get_user_bonus", "native_get_user_bonus", 1 );
	register_native ( "as_set_user_bonus", "native_set_user_bonus", 1 );
}

native as_get_user_rankname ( rankname [], len, lvl );
public native_get_user_rankname ()
{
	new len = get_param ( 2 );
	new lvl = get_param ( 3 );
	set_string ( 1, asName [ lvl ], len );
	return 1;
}

public native_get_user_level ( id )
	return UserData [ id ][ level ];
	
public native_get_user_exp ( id )
	return UserData [ id ][ exp ];
	
public native_set_user_level ( id, num )
	UserData [ id ][ level ] = num;
	
public native_set_user_exp ( id, num )
	UserData [ id ][ exp ] = num;

public native_get_user_bonus ( id )
	return UserData [ id ][ bonus ];
	
public native_set_user_bonus ( id, num )
	UserData [ id ][ bonus ] = num;

Аватар
Alexandrow
Извън линия
Потребител
Потребител
Мнения: 157
Регистриран на: 22 Ное 2017, 16:05
Се отблагодари: 14 пъти
Получена благодарност: 9 пъти

Преработка на Army System

Мнение от Alexandrow » 02 Мар 2018, 23:14

Същата работа е, няма промяна. И запазването на XP си му е проблем явно. Даже за вдигнат ранк излиза !y /[Army System]!y Fighter Ivan!y has risen in rank! /
Както и да е. Мислех, че може да е по-читав спрямо другите, но уви. :D
За сега ще си върна стария временно.
Благодаря за отделенето внимание!
Хвърляй темата в коша, за да не се заблуждават хората. :)

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Преработка на Army System

Мнение от OciXCrom » 03 Мар 2018, 00:10

Както казах, в плъгина който си дал има само едно съобщение, и то е за вдигане на ранка. Показва !y защото библиотеката ползва !n, а не !y - смени го. Качи останалите плъгини ако искаш да се оправят съобщенията. За запазването не мога да помогна.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 6 госта