Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

csdm_auto_team_balance

, надо исправить)
andreiwiz
сообщение 26.7.2014, 13:41
Сообщение #1
Стаж: 11 лет

Сообщений: 335
Благодарностей: 29
Полезность: 0

Код:
#include < amxmodx >
#include < cstrike >
#include < csdm >

#define BALANCE_IMMUNITY ADMIN_IMMUNITY

/*
csdm_auto_balance
- 0: Disabled
- 1: Enabled
- 2: Enabled, obey immunity
*/

new bool:g_bConnected[ 33 ], bool:g_bImmunity[ 33 ], CsTeams:g_iNewTeam[ 33 ];
new g_pCvar, g_iMaxPlayers, g_iMsgSayText, g_iMsgScreenFade, g_iPlayers;

public plugin_init( ) {
register_plugin( "CSDM Auto Balance", "1.0", "xPaw" );

g_pCvar = register_cvar( "csdm_auto_balance", "1" );

g_iMsgScreenFade = get_user_msgid( "ScreenFade" );
g_iMsgSayText = get_user_msgid( "SayText" );
g_iMaxPlayers = get_maxplayers( );
}

public client_authorized( id )
g_bImmunity[ id ] = bool:( get_user_flags( id ) & BALANCE_IMMUNITY );

public client_putinserver( id ) {
g_bConnected[ id ] = true; // bool:!is_user_bot( id );
g_iPlayers++;
}

public client_disconnect( id ) {
g_iNewTeam[ id ] = CS_TEAM_UNASSIGNED;
g_bImmunity[ id ] = false;
g_bConnected[ id ] = false;
g_iPlayers--;
}

public csdm_PostDeath( iKiller, id, bHeadShot, const szWeapon[ ] ) {
if( g_iPlayers < 4 || iKiller == id || !g_bConnected[ id ] )
return;

new iCvar = get_pcvar_num( g_pCvar );

if( iCvar <= 0 || iCvar == 2 && g_bImmunity[ id ] )
return;

new iPlayers[ 2 ];

for( new i = 1; i <= g_iMaxPlayers; i++ ) {
if( !g_bConnected[ i ] )
continue;

switch( cs_get_user_team( i ) ) {
case CS_TEAM_T: iPlayers[ 0 ]++;
case CS_TEAM_CT: iPlayers[ 1 ]++;
}
}

new CsTeams:iCheck, iDifference = iPlayers[ 1 ] - iPlayers[ 0 ];

if( iDifference > 0 )
iCheck = CS_TEAM_T;
else if( iDifference < 0 )
iCheck = CS_TEAM_CT;
else
return;

if( abs( iDifference ) < 2 || cs_get_user_team( id ) == iCheck )
return;

cs_set_user_team( id, iCheck );

new szName[ 32 ];
get_user_name( id, szName, 31 );

UTIL_GreenPrintAll( id, "^4[CSDM]^3 %s^1 has been transfered to^3 %s^1.", szName,
iCheck == CS_TEAM_T ? "Terrorists" : "Counter-Terrorists" );

g_iNewTeam[ id ] = iCheck;
}

public csdm_PostSpawn( id, bool:bFake ) {
new CsTeams:iNewTeam = g_iNewTeam[ id ];

if( iNewTeam > CS_TEAM_UNASSIGNED ) {
g_iNewTeam[ id ] = CS_TEAM_UNASSIGNED;

set_hudmessage( 0, 127, 255, 0.42, 0.53, 2, 6.0, 4.0, 0.1, 0.2, -1 );
show_hudmessage( id, "You have been transfered to %s!", iNewTeam == CS_TEAM_T ? "Terrorists" : "Counter-Terrorists" );

UTIL_ScreenFade( id, iNewTeam == CS_TEAM_T ? 175 : 0, 0, iNewTeam == CS_TEAM_CT ? 175 : 0 );
}
}

UTIL_GreenPrintAll( const iSender, const Message[ ], any:... ) {
new szMessage[ 192 ];
vformat( szMessage, 191, Message, 3 );

message_begin( MSG_BROADCAST, g_iMsgSayText );
write_byte( iSender );
write_string( szMessage );
message_end( );
}

UTIL_ScreenFade( const id, const iRed, const iGreen, const iBlue ) {
message_begin( MSG_ONE_UNRELIABLE, g_iMsgScreenFade, _, id );
write_short( 2000 );
write_short( 2000 );
write_short( 0 );
write_byte( iRed );
write_byte( iGreen );
write_byte( iBlue );
write_byte( 175 );
message_end( );
}

При убийстве игрока пишет постоянно что я убил своего , перед тем как его перекидывает за мою команду)
и вот насчёт этого не понял csdm_postDeath, говорят что надо убрать

*PS. нашёл замену
Код:
/*	
* CSDM Balancer V1.0 by Zer0CooL
* http://forum.alfa-strike.net
*/

#include <amxmodx>
#include <cstrike>

#define LAST_PLAYERS_COUNT 3

////////////////// √лобальные переменные//////////////////////
static Float:g_checkInterval, g_maxDisbalance, g_skillPlayer,
g_minPlayers, g_maxPlayers, skillPlayer, g_sound,
CsTeams:g_lessTeam, g_playerScore, g_worstScore,
g_bestScore, g_lastPlayers[LAST_PLAYERS_COUNT];
new g_num;
//////////////////////////////////////////////////////////////

public plugin_init()
{
register_plugin( "CSDM Balancer", "1.0", "Zer0CooL" )
register_dictionary( "csdmbalancer.txt" )

register_cvar ( "dmb_sound", "1" )
register_cvar ( "dmb_minplayers", "4" )
register_cvar ( "dmb_skillplayer", "2" )
register_cvar ( "dmb_enableplugin", "1" )
register_cvar ( "dmb_checkinterval", "40.0" )
register_cvar ( "dmb_maxdisbalance", "1" )
}

public plugin_precache()
{
precache_sound( "misc/massteleporttarget.wav" )
return PLUGIN_CONTINUE
}

public plugin_cfg()
{
g_sound = get_cvar_num ( "dmb_sound" )
g_maxPlayers = get_maxplayers ()
g_minPlayers = get_cvar_num ( "dmb_minplayers" )
skillPlayer =
g_skillPlayer = get_cvar_num ( "dmb_skillplayer" )
g_maxDisbalance = get_cvar_num ( "dmb_maxdisbalance" )
g_checkInterval = get_cvar_float ( "dmb_checkinterval" )

if( get_cvar_num("dmb_enableplugin") < 1 || g_maxPlayers < 4 )
return 0

if( g_maxDisbalance < 1 )
g_maxDisbalance = 1

if( g_minPlayers < 4 )
g_minPlayers = 4

if( g_checkInterval < 10 )
g_checkInterval = 10.0

server_cmd( "mp_autoteambalance 0;mp_limitteams %d", g_maxDisbalance )

set_task( g_checkInterval, "check", 0, _, _, "b" )
return 0
}

public check()
{
static players[32];
new playerCount = 0,
T_Count = 0, CT_Count = 0;

for( new i = 1; i <= g_maxPlayers; i++ )
{
if ( !is_user_connected(i) || is_user_hltv(i) )
continue

switch( cs_get_user_team(i) )
{
case CS_TEAM_CT: CT_Count++;
case CS_TEAM_T: T_Count++;
default: continue;
}

players[playerCount] = i
playerCount++
}

if( playerCount < g_minPlayers ) return PLUGIN_CONTINUE

else if( (CT_Count - T_Count) > g_maxDisbalance )
g_lessTeam = CS_TEAM_T

else if( (T_Count - CT_Count) > g_maxDisbalance )
g_lessTeam = CS_TEAM_CT

else return PLUGIN_CONTINUE

// Transfer Player
new id = GetPlayer( players, playerCount, g_lessTeam )

if( g_lessTeam == CS_TEAM_CT && user_has_weapon(id, CSW_C4) )
engclient_cmd( id, "drop", "weapon_c4" )

else if( g_lessTeam == CS_TEAM_T && cs_get_user_defuse(id) )
cs_set_user_defuse( id, 0 )

cs_set_user_team( id, g_lessTeam )
ShowMessage( id )

return PLUGIN_CONTINUE
}

ShowMessage( id )
{
static name[32], teamName[19];
get_user_name( id, name, charsmax(name) )

teamName = g_lessTeam == CS_TEAM_CT ? "Counter-Terrorists" : "Terrorists";

client_print ( 0, print_chat, "%L", LANG_PLAYER, "CHAT_MESSAGE", name, teamName )
console_print ( 0, "%s has been transfered to %s.", name, teamName )

if( !is_user_bot(id) )
{
set_hudmessage ( 255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2 )
show_hudmessage ( id, "%L", LANG_PLAYER, "HUD_MESSAGE", teamName )
if( g_sound > 0 ) client_cmd( id, "speak misc/massteleporttarget" )
}
else
user_kill( id )
}

GetPlayer( const players[], playerCount, CsTeams:g_lessTeam )
{
if( g_skillPlayer > 1 ) skillPlayer = random_num(0, 1)
g_bestScore = -9999, g_worstScore = 9999;

static id, player;
for( new i = 0; i < playerCount; i++ )
{
player = players[i]

if( cs_get_user_team(player) == g_lessTeam || IsLastPlayer(player) )
continue

else if( IsSatisfactoryPlayer(player) )
id = player
}

PutLastPlayer( id )
return id
}

bool:IsLastPlayer( id )
{
for( new i = 0; i < LAST_PLAYERS_COUNT; i++ )
if( g_lastPlayers[i] == id )
return true

return false
}

PutLastPlayer( id )
{
if( g_num > (LAST_PLAYERS_COUNT - 1) )
g_num = 0;

g_lastPlayers[g_num] = id
g_num++
}

bool:IsSatisfactoryPlayer( id )
{
g_playerScore = ( get_user_frags(id) - get_user_deaths(id) )

switch( skillPlayer )
{
case 0:
{
if( g_playerScore <= g_worstScore )
{
g_worstScore = g_playerScore
return true
}
}
case 1:
{
if( g_playerScore >= g_bestScore )
{
g_bestScore = g_playerScore
return true
}
}
}
return false
}


незнаю,стоит или нет)

Отредактировал: andreiwiz, - 26.7.2014, 14:04
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя miRror
сообщение 26.7.2014, 15:11
Сообщение #2


Стаж: 15 лет

Сообщений: 1151
Благодарностей: 1002
Полезность: 967

Меценат Меценат

https://www.dropbox.com/s/l69gr2e945vnnd0/c...uto_balance.sma
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
andreiwiz
сообщение 26.7.2014, 15:23
Сообщение #3
Стаж: 11 лет

Сообщений: 335
Благодарностей: 29
Полезность: 0

miRror,
на amx-ru видел твою версию, но там ссылка битая была)))

а как же Код:
public csdm_PostDeath
?
читал что якобы убрать надо)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя miRror
сообщение 26.7.2014, 15:44
Сообщение #4


Стаж: 15 лет

Сообщений: 1151
Благодарностей: 1002
Полезность: 967

Меценат Меценат

Сервер не лопнет, если она будет, пы.сы я не дома , сам решишь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
andreiwiz
сообщение 26.7.2014, 15:51
Сообщение #5
Стаж: 11 лет

Сообщений: 335
Благодарностей: 29
Полезность: 0

miRror,
ну ошибок и ничего подобного нет, но просто интересно, что это за csdm_PostDeath, что он делает, и зачем его убирать) объясните кто нибудь!?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя miRror
сообщение 26.7.2014, 16:01
Сообщение #6


Стаж: 15 лет

Сообщений: 1151
Благодарностей: 1002
Полезность: 967

Меценат Меценат

//del
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя freeone
сообщение 25.8.2014, 4:49
Сообщение #7
Стаж: 13 лет

Сообщений: 140
Благодарностей: 13
Полезность: 78

miRror,
пишет "Запрошенная вами страница не найдена."
не могли бы перезалить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя miRror
сообщение 25.8.2014, 11:56
Сообщение #8


Стаж: 15 лет

Сообщений: 1151
Благодарностей: 1002
Полезность: 967

Меценат Меценат

https://www.dropbox.com/s/mghdxoyyqzpebkv/c...uto_balance.sma
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: