Здравейте, може ли една малка /надявам се/ преработка на този плъгин?
Има старанно нещо, когато пиша в чата ми излиза по следния начин: 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.
Преработка на Army System
-
Alexandrow
Извън линия - Потребител
- Мнения: 157
- Регистриран на: 22 Ное 2017, 16:05
- Се отблагодари: 14 пъти
- Получена благодарност: 9 пъти
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Преработка на Army System
Показва това защото след последния ъпдейт на С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
Същата работа е, няма промяна. И запазването на XP си му е проблем явно. Даже за вдигнат ранк излиза !y /[Army System]!y Fighter Ivan!y has risen in rank! /
Както и да е. Мислех, че може да е по-читав спрямо другите, но уви.
За сега ще си върна стария временно.
Благодаря за отделенето внимание!
Хвърляй темата в коша, за да не се заблуждават хората.
Както и да е. Мислех, че може да е по-читав спрямо другите, но уви.
За сега ще си върна стария временно.
Благодаря за отделенето внимание!
Хвърляй темата в коша, за да не се заблуждават хората.
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Преработка на Army System
Както казах, в плъгина който си дал има само едно съобщение, и то е за вдигане на ранка. Показва !y защото библиотеката ползва !n, а не !y - смени го. Качи останалите плъгини ако искаш да се оправят съобщенията. За запазването не мога да помогна.
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 3 Отговори
- 818 Преглеждания
-
Последно мнение от OciXCrom
-
- 4 Отговори
- 914 Преглеждания
-
Последно мнение от Stilex
-
- 1 Отговори
- 901 Преглеждания
-
Последно мнение от ChrisBenoit
-
- 6 Отговори
- 2450 Преглеждания
-
Последно мнение от mi0
-
- 5 Отговори
- 2681 Преглеждания
-
Последно мнение от OciXCrom
-
- 9 Отговори
- 1562 Преглеждания
-
Последно мнение от LuXo
-
- 36 Отговори
- 7968 Преглеждания
-
Последно мнение от EFFEX
Кой е на линия
Потребители разглеждащи този форум: Bing [Bot] и 24 госта