#1
Отправлено 31 декабря 2018 — 01:30
-
- Новичок
-
Хмм, не могу понять что не так что компилятор начал орать на данные функции
(899) : error 017: undefined symbol "FixHour" (1839) : error 017: undefined symbol "PlayerToPoint" (1868) : error 017: undefined symbol "PlayerToPoint" (1887) : error 017: undefined symbol "PlayerToPoint" (1953) : error 017: undefined symbol "RemoveFromVehicle" (2491) : error 017: undefined symbol "PlayerToKvadrat" (2579) : error 017: undefined symbol "SetString" (2588) : error 017: undefined symbol "LoadStaticTextDraw" (2593) : error 017: undefined symbol "xaxa" (2594) : error 017: undefined symbol "Colorsxaxa" (2604) : error 017: undefined symbol "GetGangZoneColor" (2952) : error 017: undefined symbol "SetPlayerArmourAC" (2972) : error 017: undefined symbol "KickEx" (3006) : error 017: undefined symbol "OnPlayerSuperKey" (3009) : error 017: undefined symbol "KickEx" (3011) : error 017: undefined symbol "KickEx" (3023) : error 017: undefined symbol "ShowPlayerRegister" (3032) : error 017: undefined symbol "ShowPlayerRegister" (3037) : error 017: undefined symbol "ShowPlayerRegister" (3063) : error 017: undefined symbol "ShowPlayerLogin" (3065) : error 017: undefined symbol "OnPlayerLogin" (3182) : error 017: undefined symbol "TuneDialog" (3250) : error 017: undefined symbol "TuneDialog" (3261) : error 017: undefined symbol "TuneDialog" (3271) : error 017: undefined symbol "TuneDialog" (3332) : error 004: function "SaveCarTuning" is not implemented
Строки где эти функции находятся:
1.
public TmphourTimer(playerid) { new tmphour; new tmpminute; new tmpsecond; gettime(tmphour, tmpminute, tmpsecond); 899: FixHour(tmphour); tmphour = shifthour; if ((tmphour > ghour) || (tmphour == 0 && ghour == 23)) ghour = tmphour; if (realtime) SetWorldTime(tmphour); }
2.
return ShowPlayerDialog(playerid,999,DIALOG_STYLE_MSGBOX,"Ошибка","{FF6347}Вы были кикнуты с сервераnПричина: "Не верный ключ безопасности"nВведите "/q", чтобы выйти","Ок",""),KickEx(playerid);
Скину только 2, а теперь и сами функции:
1.
stock FixHour(hour) { hour = timeshift+hour; if (hour < 0) { hour = hour+24; } else if (hour > 23) { hour = hour-24; } shifthour = hour; return true; }
2.
stock KickEx(playerid) return SetTimerEx("PlayerKick",100,false,"d", playerid);
0
#2
Отправлено 31 декабря 2018 — 11:22
-
- Прохожий
-
Ошибка 17- неизвестный символ (неопределённая переменная),у тебя не задефайнены переменные,если они относятся к информации об игроке занеси их в enum по игрокам,если к серверу в enum сервера(меня щас палками бить будут)
0
#3
Отправлено 31 декабря 2018 — 11:25
-
- С кем ты?
-
0
#4
Отправлено 31 декабря 2018 — 11:35
-
- Новичок
-
Sharkwd (31 декабря 2018 — 11:25) писал:
Не уверен, но мог пропустить
0
#5
Отправлено 31 декабря 2018 — 18:01
-
- Новичок
-
0
#6
Отправлено 01 января 2019 — 17:11
-
- Новичок
-
Подниму, я понял что отсутствует скобка. но не знаю как её найти и исправить
0
#7
Отправлено 03 января 2019 — 12:59
-
- Новичок
-
0
#8
Отправлено 04 января 2019 — 10:40
-
- Прохожий
-
Мне кажется… что ты где-то забыл «;»
stock FixHour(hour) { hour = timeshift+hour; if (hour < 0) { hour = hour+24; }; else if (hour > 23) { hour = hour-24 }; shifthour = hour; return true; }
попробуй так
0
- ← Предыдущая тема
- Проблемы с компилированием
- Следующая тема →
- Вы не можете создать новую тему
-
Тема закрыта
1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей
17 минут назад, Nekit_Krut18 сказал:
@x_SkYAs_x Покажите код этих строк, на которых ошибки. Используйте для этого, спойлер и тег ‘ Код ‘.
8452: SetVehicleData(GetPlayerVehicleID(playerid),V_BAGAGE_AMOUNT_GUN,0); 10475: if GetVehicleData(vehicleid, V_BAGAGE_AMOUNT_GUN)+500 > 3000 *then SendClientMessage(playerid,-1,"Матовоз переполнен!"); 10478: SetVehicleData(vehicleid,V_BAGAGE_AMOUNT_GUN,GetVehicleData(vehicleid, V_BAGAGE_AMOUNT_GUN)+500); 10479: format(l_string,26,"Матовоз загружен: 0/%d",GetVehicleData(vehicleid,V_BAGAGE_AMOUNT_GUN)); 10594: if GetVehicleData(vehicleid, V_BAGAGE_AMOUNT_GUN)+500 > 3000 *then SendClientMessage(playerid,-1,"Матовоз переполнен!"); 10597: SetVehicleData(vehicleid,V_BAGAGE_AMOUNT_GUN,GetVehicleData(vehicleid, V_BAGAGE_AMOUNT_GUN)+500); 10598: format(l_string,26,"Матовоз загружен: 0/%d",GetVehicleData(vehicleid,V_BAGAGE_AMOUNT_GUN));
new V_BAGAGE_AMOUNT_GUN
Я все правильно сделал с этим?
Ну и в конце » ; » забыл дописать тут
Отредактировано 15 января, 2021 пользователем x_SkYAs_x
В общем, исправлял опечатки в скрипте, в итоге не могу скомпилировать
Ошибки: Вы должны зарегистрироваться, чтобы видеть ссылки.
Все ошибки связаны с undefined symbol, смотрел строчки где вылезли эти ошибки, не могу понять что там не так, пожалуйста помогите, ну или хотябы покажите на примере 1 из этих ошибок, а дальше я сам как нибудь попробую
Сам код:
- Код: Выделить всё
#include AmxModX
#include JBE_core
#include FakeMeta
#include HamSandwich#define RegisterMenu(%1,%2,%3) register_menucmd(register_menuid(%1),%3,%2)
#define TaskId_Regen 12125
#define MAX_PLAYERS 32/* -> Бит суммы для игроков -> */
#define SetBit(%0,%1) ((%0) |= (1 << (%1)))
#define ClearBit(%0,%1) ((%0) &= ~(1 << (%1)))
#define IsSetBit(%0,%1) ((%0) & (1 << (%1)))
#define InvertBit(%0,%1) ((%0) ^= (1 << (%1)))
#define IsNotSetBit(%0,%1) (~(%0) & (1 << (%1)))/* -> Массивы для меню из игроков -> */
new g_iMenuPlayers[MAX_PLAYERS + 1][32], g_iMenuPosition[MAX_PLAYERS + 1];enum _: eBLOCK
{
REGEN,
MODE
};new g_iBitUserIsType[eBLOCK], g_iUserRespawnNum[MAX_PLAYERS], g_iGodModeType[MAX_PLAYERS + 1], g_iUserPoints[MAX_PLAYERS + 1],
g_iDayMode, g_iMaxPlayers, g_iSyncText;public plugin_natives()
{
register_native( "Open_KnyazMenu", "Show_KnyazMenu", 1 );
register_native( "Open_CreateMenu", "Show_CreatorMenu", 1 );
register_native( "Open_GodModeMenu", "Show_GodModeMenu", 1 );
register_native( "Open_Respawn_Menu", "Cmd_OpenResspawnMenu", 1 );
register_native( "Open_StrongMenu", "Show_StrongMenu", 1 );
}public plugin_init()
{
get_license();
register_plugin("[UJBL] Privileges Addon", "vk/krisiso", "ToJI9IHGaa"); new iBits = (1<<0|1<<1|1<<2|1<<9);
RegisterMenu("Show_KnyazMenu", "Handle_KnyazMenu", iBits);
iBits |= (1<<3|1<<4);
RegisterMenu("Show_CreatorMenu", "Handle_CreatorMenu", iBits);
RegisterMenu("Show_GodModeMenu", "Handle_GodModeMenu", iBits); iBits |= (1<<5|1<<6|1<<7|1<<8);
RegisterMenu("Show_RespawnMenu", "Handle_RespawnMenu", iBits);
RegisterMenu("Show_GodModeList", "Handle_GodModeList", iBits);
RegisterMenu("Show_StrongMenu", "Handle_Strong1Menu", iBits);
register_logevent("LogEvent_RoundStart",2,"1=Round_Start");
g_iMaxPlayers = get_maxplayers();
g_iSyncText = CreateHudSyncObj();
}
public LogEvent_RoundStart()
{
for( new pId = 1; pId <= g_iMaxPlayers; pId++ )
{
if( jbe_get_privileges_flags( pId ) & FLAGS_KNYAZ )
{
if( task_exists( pId + TaskId_Regen ) ) remove_task( pId + TaskId_Regen );
static iMode, iInvisible; jbe_get_user_rendering( pId, iMode, iMode, iMode, iMode, iMode, iInvisible );
if( iMode == kRenderTransAlpha && iInvisible == 70 ) jbe_set_user_rendering( pId, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100 );g_iBitUserIsType
[ REGEN ] = 0;
g_iUserRespawnNum[ pId ] = 3;
}
}
}#define TaskId_UpPoints 12421
public client_putinserver( pId )
{
if( jbe_get_privileges_flags( pId ) & FLAGS_STRONG )
{
set_task( 300.0, "fnUpPoints", pId + TaskId_UpPoints, _, _, "b" );
if( !is_linux_server() ) g_iUserPoints[ pId ] = 999;
}
}public client_disconnect( pId )
{
if( task_exists( pId + TaskId_UpPoints ) )
{
remove_task( pId + TaskId_UpPoints );
g_iUserPoints[ pId ] = 0;
}
}public fnUpPoints( pId )
{
pId -= TaskId_UpPoints;
new iNum = random_num( 1, 3 );
g_iUserPoints[ pId ] += iNum;
UTIL_SayText( pId, "Вы получили: !g%d !tPresent Points!y. Теперь их у Вас: !g%d", iNum, g_iUserPoints[ pId ] );
}
public Show_StrongMenu( pId )
{
#define PP[%1] g_iUserPoints[%1]
#define AddItem(%1) iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, %1 )
#define AddBit(%1) iKeys |= ( 1<<%1 )
jbe_informer_offset_up( pId );
new szMenu[ 512 ], iLen, iKeys = ( 1<<9 );
iLen = formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "yStrong Menu^nВаши rPresentPoints: w%d^n^n", PP[ pId ] );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
if( PP[ pId ] > 0 )
{
AddItem( "r(1)y | w250$Rr[ 1PP ]^n" );
AddBit( 0 );
}
else AddItem( "r(1)y | d250$Rr[ 1PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
if( pev( pId, pev_health ) >= 500.0 || pev( pId, pev_armorvalue ) >= 255.0 )
AddItem("r(2)y | dHealth & Armor Packr(У Вас много HP/AP)R[ 1PP ]^n");
else
{
if( PP[ pId ] > 0 )
{
AddItem("r(2)y | wHealth & Armor PackRr[ 1PP ]^n");
AddBit( 1 );
}
else AddItem("r(2)y | dHealth & Armor PackRr[ 1PP ]^n");
}
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
if( PP[ pId ] > 1 )
{
AddItem( "r(3)y | wСпец комплектRr[ 2PP ]^n" );
AddBit( 2 );
}
else AddItem( "r(3)y | dСпец комплектRr[ 2PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
if( PP[ pId ] > 0 )
{
AddItem( "r(4)y | wTeleport на spawnRr[ 1PP ]^n" );
AddBit( 3 );
}
else AddItem( "r(4)y | dTeleport на spawnRr[ 1PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
if( PP[ pId ] > 0 )
{
AddItem( "r(5)y | wOpen door (По прицелу)Rr[ 1PP ]^n" );
AddBit( 4 );
}
else AddItem( "r(5)y | dOpen door (По прицелу)Rr[ 1PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
if( PP[ pId ] > 1 )
{
AddItem( "r(6)y | wПодмена мест (Случайный игрок)Rr[ 2PP ]^n" );
AddBit( 5 );
}
else AddItem( "r(6)y | dПодмена мест (Случайный игрок)Rr[ 2PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
if( PP[ pId ] > 2 )
{
AddItem( "r(7)y | wСлучайное оружиеRr[ 3PP ]^n" );
AddBit( 6 );
}
else AddItem( "r(7)y | dСлуайное оружиеRr[ 3PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
static iMode, iInvisible; jbe_get_user_rendering( pId, iMode, iMode, iMode, iMode, iMode, iInvisible);
if( iMode == kRenderTransAlpha && iInvisible == 100 )
AddItem( "r(8)y | dПолная невидимость r(Активно)R[ 4PP ]^n" );
else
{
if( PP[ pId ] > 3 )
{
AddItem( "r(8)y | wПолная невидимостьRr[ 4PP ]^n" );
AddBit( 7 );
}
else AddItem( "r(8)y | dПолная невидимостьRr[ 4PP ]^n" );
}
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////////////////////////////////////
AddItem( "^nr(0)y | wВыход^n" );
return show_menu( pId, iKeys, szMenu, -1, "Show_StrongMenu" );
}public Handle_Strong1Menu( pId, iKey )
{
switch( iKey )
{
case 0:
{
jbe_set_user_money( pId, jbe_get_user_money( pId ) + 250, 1 );
g_iUserPoints[ pId ]--;
return Show_StrongMenu( pId );
}
case 1:
{
set_pev( pId, pev_health, 500.0 );
set_pev( pId, pev_armorvalue, 255.0 );
g_iUserPoints[ pId ]--;
}
case 2:
{
switch( jbe_get_user_team( pId ) )
{
case 1:
{
drop_user_weapons( pId, 0 ); jbe_set_user_rendering( pId, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 20 );
fm_give_item( pId, "item_kevlar" ); set_pev( pId, pev_armorvalue, pev( pId, pev_armorvalue ) + 70.0 );
new iItemId = fm_give_item( pId, "weapon_usp" ); fm_give_item( pId, "weapon_flashbang" );
if( iItemId ) set_pdata_int( iItemId, 51, 30, 4 );
}
case 2:
{
drop_user_weapons( pId, 1 ); set_pev( pId, pev_health, pev( pId, pev_health ) + 70.0 );
if( fm_give_item( pId, "weapon_hegrenade" ) )
{
client_cmd( pId, "weapon_hegrenade" );
set_pdata_int( pId, 388, 5, 5 );
}
if( fm_give_item( pId, "weapon_m4a1" ) )
{
client_cmd( pId, "weapon_m4a1" );
set_pdata_int( pId, 380, 200, 5 );
}
}
}
g_iUserPoints[ pId ] -= 2;
}
case 3:
{
new iEntity;
switch( jbe_get_user_team( pId ) )
{
case 1: iEntity = engfunc( EngFunc_FindEntityByString, iEntity, "classname", "info_player_deathmatch" );
case 2: iEntity = engfunc( EngFunc_FindEntityByString, iEntity, "classname", "info_player_start" );
}
if( !iEntity ) return Show_StrongMenu( pId );
new Float: vecOrigin[ 3 ]; pev( iEntity, pev_origin, vecOrigin );
set_pev( pId, pev_origin, vecOrigin );
g_iUserPoints[ pId ]--;
}
case 4:
{
new iEntity, iBody; get_user_aiming( pId, iEntity, iBody, 30 );
if( !pev_valid( iEntity ) ) return Show_StrongMenu( pId );
new szClassName[ 32 ]; pev( iEntity, pev_classname, szClassName, charsmax( szClassName ) );
if( szClassName[ 5 ] == 'd' && szClassName[ 6 ] == 'o' && szClassName[ 7 ] == 'o' && szClassName[ 8 ] == 'r' )
{
client_print( pId, print_center, "<<<< OPENED >>>>" );
dllfunc( DLLFunc_Use, iEntity, pId );
}
else return Show_StrongMenu( pId );
g_iUserPoints[ pId ]--;
}
case 5:
{
new iPlayers[ 32 ], iNum, pTarget;
for( pTarget = 1; pTarget <= g_iMaxPlayers; pTarget++ )
{
if( !jbe_is_user_alive( pTarget ) || pTarget == pId ) continue;
iPlayers[ iNum++ ] = pTarget;
}
if( !iNum )
{
client_print( pId, print_center, "<<<< No Players >>>>" );
return Show_StrongMenu( pId );
}
new Float: vecOriginTarget[ 3 ], Float: vecOrigin[ 3 ]; pTarget = iPlayers[ random_num( 1, iNum - 1 ) ];
pev( pTarget, pev_origin, vecOriginTarget ); pev( pId, pev_origin, vecOrigin );
set_pev( pId, pev_origin, vecOriginTarget ); set_pev( pTarget, pev_origin, vecOrigin );
client_print( pTarget, print_center, "<<<< Кто-то поменялся с вами позициями! >>>>" );
g_iUserPoints[ pId ] -= 2;
}
case 6:
{
drop_user_weapons( pId, 1 ); drop_user_weapons( pId, 0 );
new szWeapons[][] = { "weapon_m4a1", "weapon_usp", "weapon_ak47", "weapon_glock18", "weapon_m249" };
fm_give_item( pId, szWeapons[ random_num( 0, 4 ) ] );
g_iUserPoints[ pId ] -= 3;
}
case 7:
{
jbe_set_user_rendering( pId, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100 );
client_print( pId, print_center, "<<<< Вы невидимы! >>>>" );
g_iUserPoints[ pId ] -= 4;
}
}
return PLUGIN_HANDLED;
}public Show_KnyazMenu( id )
{
jbe_informer_offset_up(id);
static iMode, iInvisible; jbe_get_user_rendering(id, iMode, iMode, iMode, iMode, iMode, iInvisible);
new szMenu[340], iLen, iKeys = (1<<0|1<<1|1<<9);
iLen = formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y%L^n^n", id, "JBE_KNYAZ_TITLE");
FormatMenu("r(1) y| w%L^n", id, "JBE_KNYAZ_REGENERATION", IsSetBit(g_iBitUserIsType[REGEN], id) ? "Включено" : "Выключено");
FormatMenu("r(2) y| w%L^n", id, "JBE_KNYAZ_INVISIBLE", (iMode == kRenderTransAlpha && iInvisible == 70) ? "Включено" : "Выключено");
if(g_iUserRespawnNum[id] > 0)
{
FormatMenu("r(3) y| w %L r[%d]^n", id, "JBE_RESPAWN_MENU", g_iUserRespawnNum[id]);
iKeys |= (1<<2);
}
else FormatMenu("r(3) y| d %L r(0) y| ^n", id, "JBE_RESPAWN_MENU");
FormatMenu("^nr(0) y| w Выход");
return ShowMenu("Show_KnyazMenu");
}
public Handle_KnyazMenu(id, iKey)
{
switch(iKey)
{
case 0:
{
if(IsSetBit(g_iBitUserIsType[REGEN], id)) remove_task(id + TaskId_Regen);
else set_task(10.0, "Regenerations", id + TaskId_Regen, _, _, "b");
InvertBit(g_iBitUserIsType[REGEN], id);
}
case 1:
{
static iMode, iInvisible;
jbe_get_user_rendering(id, iMode, iMode, iMode, iMode, iMode, iInvisible);
if(iMode == kRenderTransAlpha && iInvisible == 70) jbe_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100);
else jbe_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 70);
}
case 2: return Show_RespawnMenu(id, g_iMenuPosition[id] = 0);
case 9: return PLUGIN_HANDLED;
}
return Show_KnyazMenu(id);
}
public Regenerations(id)
{
id -= TaskId_Regen;
if(jbe_get_status_duel() || jbe_get_day_mode() == 3 || !jbe_is_user_alive(id))
{
remove_task(id + TaskId_Regen);
return;
}
if(pev(id, pev_health) >= 100)
{
client_print(id, print_center, "[Князь Меню] Регенерация завершена.");
remove_task(id + TaskId_Regen);
return;
}
set_pev(id, pev_health, pev(id, pev_health) + 5.0);
}
public Show_CreatorMenu(id)
{
jbe_informer_offset_up(id);
new szMenu[516], iLen, iKeys = (1<<0|1<<1|1<<2|1<<3|1<<9), Float: fGravity;
pev(id, pev_gravity, fGravity);
iLen = formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y%L^n^n", id, "JBE_CREATOR_TITLE");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[1] w%L^n^n", id, "JBE_CREATER_TYPE", IsNotSetBit(g_iBitUserIsType[MODE], id) ? "Забрать" : "Дать");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[2] w%L^n", id, "JBE_CREATE_HEALTH", pev(id, pev_health));
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[3] w%L^n^n", id, "JBE_CREATE_ARMOR", pev(id, pev_armorvalue));
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[4] w%L^n^n", id, "JBE_CREATE_GRAVITY", fGravity);
if(!jbe_is_user_alive(id))
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[5] w%L^n^n",id, "JBE_RESPAWN_CREATE");
iKeys |= (1<<4);
}
else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[5] d%L^n^n",id, "JBE_RESPAWN_CREATE");
FormatMenu("^nr(0) y| w Выход");
return ShowMenu("Show_CreatorMenu");
}
public Handle_CreatorMenu(id, iKey)
{
switch(iKey)
{
case 0: InvertBit(g_iBitUserIsType[MODE], id);
case 1:
{
if(IsSetBit(g_iBitUserIsType[MODE], id))
{
if(pev(id, pev_health) >= 160) client_print(id, print_center, "У Вас много жизней!");
else set_pev(id, pev_health, pev(id, pev_health) + 5.0);
}
else
{
if(pev(id, pev_health) < 6) client_print(id, print_center, "У Вас мало жизней!");
else set_pev(id, pev_health, pev(id, pev_health) - 5.0);
}
}
case 2:
{
if(IsSetBit(g_iBitUserIsType[MODE], id))
{
if(pev(id, pev_armorvalue) >= 160) client_print(id, print_center, "У Вас много брони!");
else set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + 5.0);
}
else
{
if(pev(id, pev_armorvalue) < 6) client_print(id, print_center, "У Вас мало брони!");
else set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) - 5.0);
}
}
case 3:
{
new Float: fGravity;
pev(id, pev_gravity, fGravity);
if(IsSetBit(g_iBitUserIsType[MODE], id))
{
if(fGravity <= 0.5) client_print(id, print_center, "Слишком большая гравитация!");
else
{
fGravity -= 0.05;
set_pev(id, pev_gravity, fGravity);
}
}
else
{
if(fGravity >= 1.0) client_print(id, print_center, "Слишком маленькая гравитация!");
else
{
fGravity += 0.05;
set_pev(id, pev_gravity, fGravity);
}
}
}
case 4: ExecuteHam(Ham_CS_RoundRespawn, id);
case 9: return PLUGIN_HANDLED;
}
return Show_CreatorMenu(id);
}public Show_GodModeMenu(id)
{
jbe_informer_offset_up(id);
new szMenu[700], iLen;
iLen = formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y%L^n^n", id, "JBE_GODMODE_TITLE");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[1] w%L^n^n", id, "JBE_GODMODE_TYPE", IsNotSetBit(g_iBitUserIsType[MODE], id) ? "Забрать" : "Дать");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[2] w%L^n", id, "JBE_GODMODE_HEALTH");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[3] w%L^n^n", id, "JBE_GODMODE_ARMOR");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[4] w%L^n^n", id, "JBE_GODMODE_GRAVITY");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[5] w%sr%L^n^n", g_iDayMode ? "Ночь | ":"День | ", id, "JBE_GODMODE_DEYMODE");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^ny[0] w%L", id, "JBE_MENU_EXIT"); return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<9), szMenu, -1, "Show_GodModeMenu");
}
public Handle_GodModeMenu(id, iNum)
{
switch(iNum)
{
case 0:
{
InvertBit(g_iBitUserIsType[MODE], id);
return Show_GodModeMenu(id);
}
case 1:
{
g_iGodModeType[id] = 1;
return Show_GodModeList(id, g_iMenuPosition[id] = 0);
}
case 2:
{
g_iGodModeType[id] = 2;
return Show_GodModeList(id, g_iMenuPosition[id] = 0);
}
case 3:
{
g_iGodModeType[id] = 3;
return Show_GodModeList(id, g_iMenuPosition[id] = 0);
}
case 4:
{
DayMode_Setting();
return Show_GodModeMenu(id);
}
case 5: return Show_RespawnMenu(id, g_iMenuPosition[id] = 0);
}
return PLUGIN_HANDLED;
}
public Cmd_OpenResspawnMenu(id) Show_RespawnMenu(id, g_iMenuPosition[id] = 0);
public Show_RespawnMenu(id, iPos)
{
if(iPos < 0) return PLUGIN_HANDLED;
if(~jbe_get_privileges_flags(id) & FLAGS_GOD && !g_iUserRespawnNum[id])
{
client_print(0, print_center, "У Вас закончились попытки возрождения!");
return Show_KnyazMenu(id);
}jbe_informer_offset_up
(id);
new iPlayersNum;
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(!jbe_get_user_team(i) || jbe_get_user_team(i) >= 3 || jbe_is_user_alive(i)) continue;
g_iMenuPlayers[id][iPlayersNum++] = i;
}
new iStart = iPos * 8;
if(iStart > iPlayersNum) iStart = iPlayersNum;
iStart = iStart - (iStart % 8);
g_iMenuPosition[id] = iStart / 8;
new iEnd = iStart + 8;
if(iEnd > iPlayersNum) iEnd = iPlayersNum;
new szMenu[1024], iLen, iPagesNum = (iPlayersNum / 8 + ((iPlayersNum % 8) ? 1 : 0));
switch(iPagesNum)
{
case 0:
{
client_print(id, print_center, "%L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
return PLUGIN_HANDLED;
}
default: iLen = formatex(szMenu, charsmax(szMenu), "y%L w[%d|%d]^n^n", id, "JBE_RESPAWN_MENU", iPos + 1, iPagesNum);
}
new szName[32], i, iKeys = (1<<9), b;
for(new a = iStart; a < iEnd; a++)
{
i = g_iMenuPlayers[id][a];
get_user_name(i, szName, charsmax(szName));
iKeys |= (1<<b);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[%d] w%s^n", ++b, szName);
}
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, "^ny[9] w%L^ny[0] w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
}
else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^ny[0] w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
return show_menu(id, iKeys, szMenu, -1, "Show_RespawnMenu");
}
public Handle_RespawnMenu(id, iKey)
{
switch(iKey)
{
case 8: return Show_RespawnMenu(id, ++g_iMenuPosition[id]);
case 9: return Show_RespawnMenu(id, --g_iMenuPosition[id]);
default:
{
new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * 8 + iKey];
if(jbe_is_user_alive(iTarget))
{
client_print(id, print_center, "Игрок уже оживлён!");
return Show_RespawnMenu(id, g_iMenuPosition[id] = 0);
}
if(jbe_is_user_connected(iTarget))
{
g_iUserRespawnNum[id]--;
ExecuteHam(Ham_CS_RoundRespawn, iTarget);
new szName[2][32];
get_user_name(id, szName[0], charsmax(szName[]));
get_user_name(iTarget, szName[1], charsmax(szName[]));
set_hudmessage( 102, 69, 0, -1.0, 0.16, 0, 0.0, 0.9, 0.1, 3.0, -1 );
for(new pPlayer = 1; pPlayer <= g_iMaxPlayers; pPlayer++)
{
if(!jbe_is_user_connected(pPlayer)) continue;
ShowSyncHudMsg( pPlayer, g_iSyncText, "Администратор [ %s ] ^nвозродил игрока [ %s ]", szName[0], szName[1] );
}
}
return Show_RespawnMenu(id, g_iMenuPosition[id]);
}
}
return PLUGIN_HANDLED;
}Show_GodModeList(id, iPos)
{
if( iPos < 0 ) return PLUGIN_HANDLED;
jbe_informer_offset_up( id );
new iPlayersNum;
for(new i = 1; i <= get_maxplayers(); i++)
{
if(!jbe_is_user_alive(i) || jbe_get_user_team(i) >= 3 || !jbe_get_user_team(i)) continue;
g_iMenuPlayers[id][iPlayersNum++] = i;
}
new iStart = iPos * 8;
if(iStart > iPlayersNum) iStart = iPlayersNum;
iStart = iStart - (iStart % 8);
g_iMenuPosition[id] = iStart / 8;
new iEnd = iStart + 8;
if(iEnd > iPlayersNum) iEnd = iPlayersNum;
new szMenu[1024], iLen, iPagesNum = (iPlayersNum / 8 + ((iPlayersNum % 8) ? 1 : 0));
switch(iPagesNum)
{
case 0:
{
UTIL_SayText( id, "%L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID" );
return Show_GodModeMenu(id);
}
default: iLen = formatex(szMenu, charsmax(szMenu), "y%L w[%d|%d]^n^n", id, "JBE_GODMODE_BONUS_MENU", iPos + 1, iPagesNum);
}
new szName[32], i, iKeys = (1<<9), b;
for(new a = iStart; a < iEnd; a++)
{
i = g_iMenuPlayers[id][a];
get_user_name(i, szName, charsmax(szName));
iKeys |= (1<<b);
switch(g_iGodModeType[id])
{
case 1: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[%d] w%s d[r%dd]^n", ++b, szName, pev(i, pev_health));
case 2: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[%d] w%sd[r%dd]^n", ++b, szName, pev(i, pev_armorvalue));
case 3:
{
new Float: fGravity;
pev(i, pev_gravity, fGravity);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "y[%d] w%sd[r%fd]^n", ++b, szName, fGravity);
}
}
}
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, "^ny[9] w%L^ny[0] w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
}
else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^ny[0] w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
return show_menu(id, iKeys, szMenu, -1, "Show_GodModeList");
}public Handle_GodModeList(id, iKey)
{
switch(iKey)
{
case 8: return Show_GodModeList(id, ++g_iMenuPosition[id]);
case 9: return Show_GodModeList(id, --g_iMenuPosition[id]);
default:
{
new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * 8 + iKey];
if(!jbe_is_user_connected(iTarget))
{
client_print(id, print_center, "Игрок отключён!");
return Show_GodModeList(id, g_iMenuPosition[id] = 0);
}
if(!jbe_is_user_alive(iTarget))
{
client_print(id, print_center, "Игрок мёртв!");
return Show_GodModeList(id, g_iMenuPosition[id] = 0);
} switch(g_iGodModeType[id])
{
case 1:
{
if(IsSetBit(g_iBitUserIsType[MODE], id))
{
if(pev(iTarget, pev_health) >= 160) client_print(id, print_center, "У игрока много жизней!");
else set_pev(iTarget, pev_health, pev(iTarget, pev_health) + 5.0);
}
else
{
if(pev(iTarget, pev_health) < 6) client_print(id, print_center, "У игрока мало жизней!");
else set_pev(iTarget, pev_health, pev(iTarget, pev_health) - 5.0);
}
return Show_GodModeList(id, g_iMenuPosition[id]);
}
case 2:
{
if(IsSetBit(g_iBitUserIsType[MODE], id))
{
if(pev(iTarget, pev_armorvalue) >= 160) client_print(id, print_center, "У игрока много жизней!");
else set_pev(iTarget, pev_armorvalue, pev(iTarget, pev_armorvalue) + 5.0);
}
else
{
if(pev(iTarget, pev_armorvalue) < 6) client_print(id, print_center, "У игрока мало жизней!");
else set_pev(iTarget, pev_armorvalue, pev(iTarget, pev_armorvalue) - 5.0);
}
return Show_GodModeList(id, g_iMenuPosition[id]);
}
case 3:
{
new Float: fGravity;
pev(iTarget, pev_gravity, fGravity);
if(IsSetBit(g_iBitUserIsType[MODE], id))
{
if(fGravity <= 0.5) client_print(id, print_center, "Слишком большая гравитация!");
else
{
fGravity -= 0.05;
set_pev(iTarget, pev_gravity, fGravity);
}
}
else
{
if(fGravity >= 1.0) client_print(id, print_center, "Слишком маленькая гравитация!");
else
{
fGravity += 0.05;
set_pev(iTarget, pev_gravity, fGravity);
}
}
}
}
return Show_GodModeList(id, g_iMenuPosition[id]);
}
}
return PLUGIN_HANDLED;
}stock DayMode_Setting()
{
switch(g_iDayMode)
{
case false:
{
engfunc( EngFunc_MessageBegin, MSG_ALL, 143, { 0.0, 0.0, 0.0 }, 0 );
write_byte(20); // Red
write_byte(20); // Green
write_byte(20); // Blue
write_byte(10); // SD
write_byte(41); // ED
write_byte(95); // D1
write_byte(59); // D2
message_end();
g_iDayMode = true;
}
case true:
{
engfunc( EngFunc_MessageBegin, MSG_ALL, 143, { 0.0, 0.0, 0.0 }, 0 );
write_byte(0); // Red
write_byte(0); // Green
write_byte(0); // Blue
write_byte(0); // SD
write_byte(0); // ED
write_byte(0); // D1
write_byte(0); // D2
message_end();
g_iDayMode = false;
}
}
}stock UTIL_SayText(pPlayer, const szMessage[], any:...)
{
new szBuffer[ 190 ], iLen = format( szBuffer, charsmax( szBuffer ), "%L ", LANG_PLAYER, "JBE_CHAT_PREFIX" );
if( numargs() > 2 ) vformat( szBuffer[ iLen ], charsmax( szBuffer ), szMessage, 3 );
else copy( szBuffer[ iLen ], 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 <= g_iMaxPlayers; iPlayer++ )
{
if( !jbe_is_user_connected( iPlayer ) ) continue;
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();
}
}
}stock fm_give_item(pPlayer, const szItem[])
{
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
if(!pev_valid(iEntity)) return 0;
new Float:vecOrigin[3];
pev(pPlayer, pev_origin, vecOrigin);
set_pev(iEntity, pev_origin, vecOrigin);
set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, iEntity);
dllfunc(DLLFunc_Touch, iEntity, pPlayer);
if(pev(iEntity, pev_solid) != SOLID_NOT)
{
engfunc(EngFunc_RemoveEntity, iEntity);
return -1;
}
return iEntity;
}stock drop_user_weapons(pPlayer, iType)
{
new iWeaponsId[32], iNum;
get_user_weapons(pPlayer, iWeaponsId, iNum);
if(iType) iType = (1<<CSW_GLOCK18|1<<CSW_USP|1<<CSW_P228|1<<CSW_DEAGLE|1<<CSW_ELITE|1<<CSW_FIVESEVEN);
else iType = (1<<CSW_M3|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_TMP|1<<CSW_MP5NAVY|1<<CSW_UMP45|1<<CSW_P90|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AK47|1<<CSW_M4A1|1<<CSW_SCOUT|1<<CSW_SG552|1<<CSW_AUG|1<<CSW_AWP|1<<CSW_G3SG1|1<<CSW_SG550|1<<CSW_M249);
for(new i; i < iNum; i++)
{
if(iType & (1<<iWeaponsId[i]))
{
new szWeaponName[24];
get_weaponname(iWeaponsId[i], szWeaponName, charsmax(szWeaponName));
engclient_cmd(pPlayer, "drop", szWeaponName);
}
}
}
P.S. Не знаю зачем пишу, просто на всякий случай, советую искать строки в Notepad++, чтобы не запутаться, да и быстрее
Содержание
- Форум Pawn.Wiki — Воплоти мечту в реальность!: error 017: undefined symbol «to_player» — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Компилирования
- #1 azik215
- Прикрепленные файлы
- #2 The
- #3 azik215
- #4 FasT of boni
- #5 azik215
- #6 FasT of boni
- #7 azik215
- #8 FasT of boni
- Форум Pawn.Wiki — Воплоти мечту в реальность!: error 017 — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Форум Pawn.Wiki — Воплоти мечту в реальность!: error 017: undefined symbol «pc_cmd_gnews» — Форум Pawn.Wiki — Воплоти мечту в реальность!
Форум Pawn.Wiki — Воплоти мечту в реальность!: error 017: undefined symbol «to_player» — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Проблемы с компилированием
- Правила форума
- Просмотр новых публикаций
- Группа: Активные пользователи
- Сообщений: 76
- Регистрация: 15 февраля 22
суть такая, хотел усовершенствовать свой код, в итоге ничего не получилось, так как опыта мало.
Ошибка:
Сам код, на который ругается павно:
поправте, если в коде есть ошибка.
Сообщение отредактировал Kirill_Babkin: 06 июня 2022 — 17:31
- Группа: Активные пользователи
- Сообщений: 1 039
- Регистрация: 07 июня 21
Сообщение отредактировал Perdolinka: 06 июня 2022 — 17:55
Источник
Компилирования
#1 azik215
Помогите , что за ошибка??
Прикрепленные файлы
Безымянный.png152,94К 3 Количество загрузок:
#2 The
Помогите , что за ошибка??
error 017 : undefined symbol «%s» — неизвестный символ «%s» ;
warning 217: loose indentation — не выровненная строка
Сообщение отредактировал The: 12 Сентябрь 2014 — 18:56
#3 azik215
error 017 : undefined symbol «%s» — неизвестный символ «%s» ;
с ним то , что делать с 2 я разобрался
#4 FasT of boni
warning 217: loose indentation
Проблема с отступами. Внутри функции отступы должны быть сделаны или с помощью TAB, или с помощью пробелов — нельзя их смешивать, выберите что-то одно.
#5 azik215
warning 217: loose indentation
Проблема с отступами. Внутри функции отступы должны быть сделаны или с помощью TAB, или с помощью пробелов — нельзя их смешивать, выберите что-то одно
Я с этим разобрался мне нужно
error 017 : undefined symbol «%s» — неизвестный символ «%s» ;
Что с ним делать?
LogMgr_Print(g_moduleCore, LogType_Debug, «PurchaseUpgrade», «Client %d tried to buy interlocked upgrade %s», client, name);
#6 FasT of boni
Я с этим разобрался мне нужно
error 017 : undefined symbol «%s» — неизвестный символ «%s» ;
Что с ним делать?
LogMgr_Print(g_moduleCore, LogType_Debug, «PurchaseUpgrade», «Client %d tried to buy interlocked upgrade %s», client, name);
error 017 : undefined symbol «x»
Используемый символ не найден. Или забыли переменную объявить, или не подключили модуль. Если это какая-то SourceMod команда, например, CS_RespawnPlayer, то зайдите в API и введите её в поле «Search:». Выше над командой жирным шрифтом будет указано имя модуля, например, «cstrike», и чтобы его подключить, добавьте в самый верх кода #include
#7 azik215
Я с этим разобрался мне нужно
error 017 : undefined symbol «%s» — неизвестный символ «%s» ;
Что с ним делать?
LogMgr_Print(g_moduleCore, LogType_Debug, «PurchaseUpgrade», «Client %d tried to buy interlocked upgrade %s», client, name);
error 017 : undefined symbol «x»
Используемый символ не найден. Или забыли переменную объявить, или не подключили модуль. Если это какая-то SourceMod команда, например, CS_RespawnPlayer, то зайдите в API и введите её в поле «Search:». Выше над командой жирным шрифтом будет указано имя модуля, например, «cstrike», и чтобы его подключить, добавьте в самый верх кода #include
Можно я в лс файл кину. Ты сделаешь??
#8 FasT of boni
Можно я в лс файл кину. Ты сделаешь??
Источник
Форум Pawn.Wiki — Воплоти мечту в реальность!: error 017 — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Проблемы с компилированием
- Правила форума
- Просмотр новых публикаций
- Группа: Пользователи
- Сообщений: 11
- Регистрация: 15 мая 13
C:Users. 1DownloadsSNK RPGSNKgamemodesSNKland.pwn(6147) : error 017: undefined symbol «SNKland»
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
Как исправить?
Мод писал не с 0:D
- Группа: Активные пользователи
- Сообщений: 359
- Регистрация: 02 июня 12
Сообщение отредактировал VistigoN: 28 мая 2013 — 16:09
- Группа: Пользователи
- Сообщений: 11
- Регистрация: 15 мая 13
C:Users. 1DownloadsSNKlandSNKlandgamemodesSNKland. pwn(6148) : error 035: argument type mismatch (argument 1)
C:Users. 1DownloadsSNKlandSNKlandgamemodesSNKland. pwn(29486) : warning 203: symbol is never used: «SNKland»
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
29486 Вобще строчки нет такой О_о
Сообщение отредактировал weZZy: 28 мая 2013 — 16:37
Источник
Форум Pawn.Wiki — Воплоти мечту в реальность!: error 017: undefined symbol «pc_cmd_gnews» — Форум Pawn.Wiki — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Проблемы с компилированием
- Правила форума
- Просмотр новых публикаций
- Группа: Пользователи
- Сообщений: 3
- Регистрация: 17 ноября 19
всё уже пробовал, понятия не имею, что не так.
case 21:
<
if(response)
<
if(strlen(inputtextsave)==0) return callcmd::gnews(playerid,»»);
new/> new text1, text2, text3[32], time[32];
sscanf(inputtextsave,»p dds[32]»,text1,text2,text3);
format(time,sizeof(time),»%d:%d»,text1,text2);
SobesStatus[id]=1;
SetString(SobesTime[id],time);
SetString(SobesMesto[id],text3);
SobesTime1[id]=text1;
SobesTime2[id]=text2;
format(string,sizeof(string),»[D] %s %s[%d] — Íàçíà÷èë ñîáåñåäîâàíèå â ñâîþ îðãàíèçàöèþ íà %s!»,GetRankName(id,PlayerInfo[playerid][pRank]),PN(playerid),playerid,time);
SendGosMessage(COLOR_DEPAR,string);
// SobesMesto[0]=text3;
/*format(string,sizeof(string),»%d %d %s»,text1,text2,text3);
SendClientMessage(playerid,-1,string);*/
>
>
C:UsersDraiDenDesktopÎñíî& #226;à2gamemodesarbiterp.pwn(40420) : error 017: undefined symbol «pc_cmd_gnews»
Pawn compiler 3.2.3664 Copyright © 1997-2016, ITB CompuPhase
- Группа: Активные пользователи
- Сообщений: 827
- Регистрация: 25 июля 16
- Группа: Vip
- Сообщений: 4 729
- Регистрация: 14 марта 12
- Группа: Пользователи
- Сообщений: 3
- Регистрация: 17 ноября 19
McDowell (18 ноября 2019 — 16:46) писал:
if(strlen(inputtextsave)==0) return callcmd::gnews(playerid,»»);
DeimoS (18 ноября 2019 — 16:49) писал:
есть
CMD:gnews(playerid)
<
if(!IsAtFrakcia(playerid)) return false;
if(PlayerInfo[playerid][pRank] 0) return SendClientMessage(playerid, 0xAFAFAFFF, !»[Ошибка] У Вас бан чата!»);
ShowPlayerDialogEx(playerid,5000,1,»»,»
Укажите <98bc5e>время на которое хотите назначить собеседование!nn
Напишите часы, минуты и местоположение через запятую!nn
Пример:[ 19,20,Военкомат ]»,»Принять»,»Отмена»);
/* new mesto[64],vremya[16];
if(sscanf(params,»s[64]s[16]»,mesto,vremya))
<
if(strlen(mesto) == 0)
<
SendClientMessage(playerid, 0xAFAFAFFF, !»[Используй]: /gnews [место назначения] [время начала собеседования]»);
SendClientMessage(playerid, 0xAFAFAFFF, !»Если вы хотите начать собеседование прямо сейчас то оставьте строку времени пустой»);
return true;
>
>*/
/* new fracname[32];
switch(PlayerInfo[playerid][pMember])
<
case 1: fracname = «LSPD»;
case 23: fracname = «LVPD»;
case 6: fracname = «Правительство»;
case 4: fracname = «SFPD»;
case 5: fracname = «Больница LS»;
case 21: fracname = «Центральный банк»;
case 20: fracname = «Армия LS»;
case 9: fracname = «Лицензеры»;
case 10: fracname = «Radio LS»;
case 24: fracname = «Radio LV»;
case 26: fracname = «Radio SF»;
case 27: fracname = «Армия SF»;
case 22: fracname = «Больница LV»;
case 7: fracname = «Армия LV»;
>
new
string[56 — 2 + 26];
format(string, sizeof(string), «[ %s ] Уважаемые жители штата! Минотучку внимания.», fracname);
SendClientMessageToAll(COLOR_GOV, string);
format(string, sizeof(string), «В данный момент проходит собеседование в организацию %s!», fracname);
SendClientMessageToAll(COLOR_GOV, string);
format(string, sizeof(string), «Для вступления необходимо прибыть в %s», params);
SendClientMessageToAll(COLOR_GOV, string);
SendClientMessageToAll(-1, !» «);
SendClientMessageToAll(-1, !» «);*/
return 1;
>
Источник
@Саша55555, функция format записывает нужный Вам текст в переменную.
Например, Вы хотите вывести в чат свой nick-name и level. У функции вывода текста в чат всего 3 аргумента: ID игрока (которому отправляем), цвет, текст. Но аргументы здесь использовать нельзя. Поэтому используем format.
Структура такова: format(куда записываем, какой размер, что записываем, аргументы);
Например, format(string, 128, «Здесь ваш текст %d», a);
Таким образом, мы записали в переменную string текст, максимальная длина которого 128 символов, использовав аргумент a. Можно, чтобы длину подсчитывала система, использовать функцию sizeof. Результат будет следующий:
format(string, sizeof(string), «Здесь ваш текст %d», a);
Далее, переменная string у нас осталась не объявлена. То есть компилятору она неизвестна. Соответственно, нужно ее объявить.
new string[];
В квадратных скобках Вы должны указать количество символов, которое будете записывать в эту переменную. Можно считать вручную, а можно использовать тот же notepad++. У меня длина текста составляет 56 символов (при условии, что переменная a содержит не больше трех знаков (то есть двух- или однозначное число). Но стоит учесть еще запас, грубо говоря, прибавляйте всегда 5 символов и будет Вам радость. 56+5 = 51. В строке выше я указал 65, поскольку делал все на глаз (прикидывал длину).
From SA-MP Wiki
Jump to: navigation, search
Undefined symbol is a Pawn compiler error message. The Pawn Language Guide formally defines this error as error 017, and explains that the error means «The symbol (variable, constant or function) is not declared«.
The error will look roughly look like this: error 017: undefined symbol «WelcomePlayer»
Cause
The error occurs when a piece of code references a variable, constant or function that the compiler cannot find. Often, this error is encountered by scripters who recklessly copy and paste code from one script to another, not realizing that the code in question depends on other code in the original script. Another, more common mistake made by even the most experienced scripters, is misspelling symbols.
Example with a function
This is example where a function that does not exists is referenced. A reckless copy-paster is copying a piece for code from the original script (awesomeroleplay.pwn) to his or her own (supercoolrp.pwn). awesomeroleplay.pwn compiles without any warnings or errors.
The reckless copy-paster decides to copy this piece of code from the original script:
awesomeroleplay.pwn
public OnPlayerConnect(playerid) { WelcomePlayer(playerid); }
The reckless copy-paster replaces supercoolrp.pwn’s OnPlayerConnect callback with the one from awesomeroleplay.pwn and then attemps to compile it. The compiler will, however, throw an error: error 017: undefined symbol «WelcomePlayer». This is because the function WelcomePlayer does not exist the paster’s own script. In other words: the piece of code that the reckless copy-paster pasted, depends on other code in awesomeroleplay.pwn. The paster will need to copy the dependent script as well.
In the original script, the function WelcomePlayer is defined.
awesomeroleplay.pwn
WelcomePlayer(playerid) { SendClientMessage(playerid, "Welcome to Interactive Roleplay!", 0xFF0000AA); }
The reckless copy-paster will need to copy and paste this function into his own script as well to make the code compile correctly. If this function would also depend on other code, the paster will need to copy and paste that code as well. In fact, the paster would need to repeat this step until all dependencies are resolved.
Tips for resolving this error
- Use Ctrl + F to find the missing symbol (note that the compiler will tell you what symbol is missing after the words undefined symbol!) in the original script. If the symbol is a variable, you will have to copy all code that is relevant to its «ecosystem», that is to say, all code that modifies the variable. For beginning scripters and reckless copy-pasters, this may be hard, because it requires a deep understanding of the code and code paths.
- Look into the includes of the original script.
- Make sure you are adding the right includes.
- Make sure you are not misspelling the symbol.
I’ll look into it, but I’m unsure of what is supposed to be the correct output in such situations.
Should we suggest «var<state_a>» for the above example (which, IMHO, would be kind of misleading, because if the user types that instead of just «var», it will only cause a bunch of new errors), or rather don’t suggest anything?
@Y-Less @YashasSamaga ?
Maybe something like undefined symbol "var"; state symbol not in scope
?
Is the code in the example even valid? As far as I can recall, in Pawn only functions may have states, not variables.
Even if we do something similar with a function instead of a variable
func() <automaton_1:STATE_1> {} main() { func(); }
the compiler doesn’t print any warnings/errors (though the generated code raises AMX_ERR_INVSTATE
as function func()
isn’t implemented for the default state).
Maybe we should close this issue as invalid?
Yes, variables can have states as well. And two variables in different states may share a memory location, which is quite nice.
Yes, you’re right, I just haven’t seen this feature used in the wild. I’ll see what I can do about incorrect suggestions for state variables.
This issue has been automatically marked as stale because it has not had recent activity.
- Регистрация
- 7 Окт 2011
- Сообщения
- 227
- Лучшие ответы
- 0
- Репутация
- 9
-
#1
Ошибки при добавлении кликабельных тексдрайвов, мне не хватает какого то инклуда как я понимаю да?
PHP:
C:UsersDesktopgamemodesсtdraws.pwn(57) : error 017: undefined symbol "TextDrawSetSelectable"
C:UsersDesktopgamemodesсtdraws.pwn(58) : error 017: undefined symbol "TextDrawSetSelectable"
C:UsersDesktopgamemodesсtdraws.pwn(59) : error 017: undefined symbol "TextDrawSetSelectable"
C:UsersDesktopgamemodesсtdraws.pwn(60) : error 017: undefined symbol "TextDrawSetSelectable"
C:UsersDesktopgamemodesсtdraws.pwn(81) : error 017: undefined symbol "SelectTextDraw"
C:UsersDesktopgamemodesсtdraws.pwn(110) : error 017: undefined symbol "CancelSelectTextDraw"
/*====================================================================================================
[Offside Foul Hard System]
Purpose: $$
Comment: $$
====================================================================================================*/
#define MAX_PLAYER 33
new bool:is_user_foul[MAX_PLAYER + 1]
new user_foul_count[MAX_PLAYER + 1]
new bool:is_offside[MAX_PLAYER + 1]
new off_1
new offbeam
new Coord_Off_Z
new Coord_Off_Y
new Coord_Off_Z_active
new team_play
new dist_enable
/*====================================================================================================
[Keeper System]
Purpose: $$
Comment: $$
====================================================================================================*/
#define MAXZONES 100
#define TASK_BASIS_SHOWZONES 1000
new bool:T_keeper[MAX_PLAYER + 1]
new bool:CT_keeper[MAX_PLAYER + 1]
new bool:is_user_keeper[MAX_PLAYER + 1]
new gkct
new gktt
new zone[MAXZONES]
new maxzones
new timer[33]
new Float:soccerjamct[3]
new Float:soccerjamtt[3]
/*====================================================================================================
[Rank System]
Purpose: $$
Comment: $$
====================================================================================================*/
new g_pGoals
new g_pSteals
new g_pAssists
new g_pDisarm
new g_pBKills
new g_pOffside
new g_pFoul
new MaxPlayers
new stats_enable
enum _:PlData
{
gPoints, gGoals, gSteals, gStealsRv, gAssists, gDisarm, gDisarmRv, gBKills, gBKillsRv, gOffside, gFoul, gWarns
}
new UserData[33][PlData];
new Handle:g_SqlTuple;
new g_Cvar[5]
/*====================================================================================================
[Main Register]
Purpose: $$
Comment: $$
====================================================================================================*/
#pragma dynamic 131072 //I used to much memory =(
#define MAX_SOUNDS 10
#define TIME 10
// Disable knife disarm ? (Leaves only ball disarm)
// Comment this define to disable.
#define KNIFE_DISARM_ON
//When player reaches MAX level, they receive this many levels.
#define MAX_LVL_BONUS 1
//Max levels for each upgrade
#define MAX_LVL_STAMINA 5
#define MAX_LVL_STRENGTH 5
#define MAX_LVL_AGILITY 5
#define MAX_LVL_DEXTERITY 5
#define MAX_LVL_DISARM 5
#define MAX_LVL_POWERPLAY 5
//Prices for each upgrade.
//price = ((UpgradeLevel * UpgradePrice) / 2) + UpgradePrice
#define EXP_PRICE_STAMINA 220
#define EXP_PRICE_STRENGTH 200
#define EXP_PRICE_AGILITY 300
#define EXP_PRICE_DEXTERITY 200
#define EXP_PRICE_DISARM 200
//Experience per stat.
#define EXP_GOALY 100 //for goaly save and goaly points.
#define EXP_STEAL 100
#define EXP_KILL 100
#define EXP_ASSIST 200
#define EXP_GOAL 100
#define BASE_HP 100 //starting hp
#define BASE_SPEED 250.0 //starting run speed
#define BASE_DISARM 10 //starting disarm from lvl 1
#define COUNTDOWN_TIME 10 //Countdown time between rounds.
#define GOALY_DELAY 8.0 //Delay for goaly exp
//Curve Ball Defines
#define CURVE_ANGLE 15 //Angle for spin kick multipled by current direction.
#define CURVE_COUNT 6 //Curve this many times.
#define CURVE_TIME 0.2 //Time to curve again.
#define DIRECTIONS 2 //# of angles allowed.
#define ANGLEDIVIDE 6 //Divide angle this many times for curve.
//Misc. amounts
#define AMOUNT_LATEJOINEXP 100 //latejoinexp * each scored point.
#define AMOUNT_POWERPLAY 5 //added bonus to STR and AGI per powerplay lvl.
#define AMOUNT_GOALY 7 //Goaly camper exp
//Amount of points for each upgrade.
#define AMOUNT_STA 20 //Health per lvl
#define AMOUNT_STR 30 //Stronger kicking per lvl
#define AMOUNT_AGI 13 //Faster Speed per lvl
#define AMOUNT_DEX 10 //Better Catching
#define AMOUNT_DISARM 2 //Disarm ball chance (disarm lvl * this) if random num 1-100 < disarm
#define DISARM_MULTIPLIER 3
/* ------------------------------------------------------------------------- */
/* /---------------- TEAM NAMES ------------ TEAM NAMES ------------/ */
/* ------------------------------------------------------------------------- */
#define TEAMS 4 //Don't edit this.
//Names to be put on scoreboard.
static const TeamNames[TEAMS][] = {
"NULL",
"Красные", //Terrorist Team
"Синие", //CT Team
"NULL"
}
/* ------------------------------------------------------------------------- */
/* /---------------- MODELS ---------------- MODELS ----------------/ */
/* ------------------------------------------------------------------------- */
//You may change the ball model. Just give correct path of new model.
new ball[] = "models/kickball/ball2.mdl"
static const TeamMascots[2][] = {
"models/kingpin.mdl", //TERRORIST MASCOT
"models/garg.mdl" //CT MASCOT
}
/* ------------------------------------------------------------------------- */
/* /---------------- COLORS ---------------- COLORS ----------------/ */
/* ------------------------------------------------------------------------- */
//Format is RGB 0-255
//TEAM MODEL GLOW COLORS
#define TERR_GLOW_RED 250
#define TERR_GLOW_GREEN 10
#define TERR_GLOW_BLUE 10
#define CT_GLOW_RED 10
#define CT_GLOW_GREEN 10
#define CT_GLOW_BLUE 250
//TEAM HUD METER COLOR (Turbo/Curve Angle meters)
#define TERR_METER_RED 250
#define TERR_METER_GREEN 10
#define TERR_METER_BLUE 10
#define CT_METER_RED 10
#define CT_METER_GREEN 10
#define CT_METER_BLUE 250
//BALL GLOW COLOR (default: yellow) //it glows only one color
#define BALL_RED 255
#define BALL_GREEN 200
#define BALL_BLUE 100
//BALL BEAM
#define BALL_BEAM_WIDTH 3
#define BALL_BEAM_LIFE 15
#define BALL_BEAM_RED 145
#define BALL_BEAM_GREEN 30
#define BALL_BEAM_BLUE 66
#define BALL_BEAM_ALPHA 50
/* ------------------------------------------------------------------------- */
/* /---------------- SOUNDS ---------------- SOUNDS ----------------/ */
/* ------------------------------------------------------------------------- */
//-- NOTE: Sounds must be located in sound/kickball/ folder.
new BALL_BOUNCE_GROUND[] = "kickball/bounce.wav"
new BALL_RESPAWN[] = "kickball/returned.wav"
new BALL_KICKED[] = "kickball/kicked.wav"
new BALL_PICKED_UP[] = "kickball/gotball.wav"
new UPGRADED_MAX_LEVEL[] = "kickball/levelup.wav"
new ROUND_START[] = "kickball/prepare.wav"
new SCORED_GOAL[] = "kickball/vastaps.wav"
new STOLE_BALL_FAST[] = "kickball/pussy.wav"
new OFFSIDE[] = "kickball/whistle.wav"
new SCORED_SOUNDS[MAX_SOUNDS][] = {
"kickball/1.wav",
"kickball/2.wav",
"kickball/3.wav",
"kickball/4.wav",
"kickball/5.wav",
"kickball/6.wav",
"kickball/7.wav",
"kickball/8.wav",
"kickball/9.wav",
"kickball/10.wav"
}
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
/* /------------------------ END OF CUSTOMIZATION ------------------------/ */
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
/* ------------ DO NOT EDIT BELOW ---------------------------------------------------------- */
/* -------------------------- DO NOT EDIT BELOW -------------------------------------------- */
/* --------------------------------------- DO NOT EDIT BELOW ------------------------------- */
/* ---------------------------------------------------- DO NOT EDIT BELOW ------------------ */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <csx>
#include <sqlx>
#include <hamsandwich>
#include <dhudmessage>
#include <chatcolor>
#include <csstats>
static const AUTHOR[] = "OneEyed | Doondook | LL | proff_q"
static const VERSION[] = "3.2"
#define MAX_TEXT_BUFFER 2047
#define MAX_NAME_LENGTH 33
#define MAX_ASSISTERS 3
#define MAX_BALL_SPAWNS 5
#define POS_X -1.0
#define POS_Y 0.85
#define HUD_CHANNEL 4
#define MESSAGE_DELAY 4.0
#define MPROP_EXITNAME 4
enum {
UNASSIGNED = 0,
T,
CT,
SPECTATOR
}
#define RECORDS 6
enum {
GOAL = 1,
ASSIST,
STEAL,
KILL,
DISTANCE,
GOALY
}
#define UPGRADES 5
enum {
STA = 1, //stamina
STR, //strength
AGI, //agility
DEX, //dexterity
DISARM,
}
static const UpgradeTitles[UPGRADES+1][] = {
"NULL",
"Здоровье",
"Сила",
"Скорость",
"Ловкость",
"Дизарм"
}
new const UpgradeMax[UPGRADES+1] = {
0, //NULL
MAX_LVL_STAMINA, //STAMINA
MAX_LVL_STRENGTH, //STRENGTH
MAX_LVL_AGILITY, //AGILITY
MAX_LVL_DEXTERITY, //DEXTERITY
MAX_LVL_DISARM, //DISARM
}
new const UpgradePrice[UPGRADES+1] = {
0, //NULL
EXP_PRICE_STAMINA,
EXP_PRICE_STRENGTH,
EXP_PRICE_AGILITY,
EXP_PRICE_DEXTERITY,
EXP_PRICE_DISARM,
}
new TeamColors[TEAMS][3] =
{
{ 0, 0, 0 },
{ TERR_GLOW_RED, TERR_GLOW_GREEN, TERR_GLOW_BLUE } ,
{ CT_GLOW_RED, CT_GLOW_GREEN, CT_GLOW_BLUE },
{ 0, 0, 0 }
}
new TeamMeterColors[TEAMS][3] =
{
{ 0, 0, 0 },
{ TERR_METER_RED, TERR_METER_GREEN, TERR_METER_BLUE } ,
{ CT_METER_RED, CT_METER_GREEN, CT_METER_BLUE },
{ 0, 0, 0 }
}
new ballcolor[3] = { BALL_RED, BALL_GREEN, BALL_BLUE }
new PlayerUpgrades[MAX_PLAYER][UPGRADES+1]
new GoalEnt[TEAMS]
new PressedAction[MAX_PLAYER]
new seconds[MAX_PLAYER]
new g_sprint[MAX_PLAYER]
new SideJump[MAX_PLAYER]
new Float:SideJumpDelay[MAX_PLAYER]
new PlayerDeaths[MAX_PLAYER]
new PlayerKills[MAX_PLAYER]
new curvecount
new direction
new Float:BallSpinDirection[3]
new ballspawncount
new Float:TeamBallOrigins[TEAMS][3]
new Float:TEMP_TeamBallOrigins[3]
new Mascots[TEAMS]
new Float:MascotsOrigins[3]
new Float:MascotsAngles[3]
new menu_upgrade[MAX_PLAYER]
new Float:fire_delay
new winner
new Float:GoalyCheckDelay[MAX_PLAYER]
new GoalyCheck[MAX_PLAYER]
new GoalyPoints[MAX_PLAYER]
new Float:BallSpawnOrigin[MAX_BALL_SPAWNS][3]
new TopPlayer[2][RECORDS+1]
new MadeRecord[MAX_PLAYER][RECORDS+1]
new TopPlayerName[RECORDS+1][MAX_NAME_LENGTH]
new g_Experience[MAX_PLAYER]
new Float:testorigin[3]
new Float:velocity[3]
new score[TEAMS]
new scoreboard[1025]
new temp1[64], temp2[64]
new distorig[2][3] //distance recorder
new gmsgShake
new gmsgDeathMsg
new gmsgTextMsg
new gmsgScreenFade
new goaldied[MAX_PLAYER]
new bool:is_dead[MAX_PLAYER]
new PowerPlay, powerplay_list[MAX_LVL_POWERPLAY+1]
new assist[16]
new iassist[TEAMS]
new gamePlayerEquip
new CVAR_SCORE
new CVAR_RESET
new CVAR_GOALSAFETY
new CVAR_KICK
new Float:CVAR_RESPAWN
new CVAR_KILLNEARBALL
new CVAR_KILLNEARHOLDER
new CVAR_KILLNEARAREA
new fire
new smoke
new beamspr
new g_fxBeamSprite
new Burn_Sprite
new ballholder
new ballowner
new aball
new is_kickball
new bool:has_knife[MAX_PLAYER]
new maxplayers
new kick
new goalsafety
new gravity
new g_spr
new g_sprtime
new time_to_time[33]
new moveplr
new origin[3]
new HasView[33]
new health_add
new nKiller
new nKiller_hp
new nHp_add
new bplayer
new adm[33]
new bp[33]
new OFFSET_INTERNALMODEL;
/*====================================================================================================
[Precache]
Purpose: $$
Comment: $$
====================================================================================================*/
public plugin_precache(){
precache_model("models/rpgrocket.mdl")
precache_model("models/gib_skull.mdl")
}
PrecacheSounds() {
new x
for(x=0;x<MAX_SOUNDS;x++)
engfunc( EngFunc_PrecacheSound, SCORED_SOUNDS[x])
engfunc( EngFunc_PrecacheSound, STOLE_BALL_FAST)
engfunc( EngFunc_PrecacheSound, ROUND_START)
engfunc( EngFunc_PrecacheSound, BALL_BOUNCE_GROUND)
engfunc( EngFunc_PrecacheSound, BALL_PICKED_UP)
engfunc( EngFunc_PrecacheSound, BALL_RESPAWN)
engfunc( EngFunc_PrecacheSound, SCORED_GOAL)
engfunc( EngFunc_PrecacheSound, BALL_KICKED)
engfunc( EngFunc_PrecacheSound, UPGRADED_MAX_LEVEL)
engfunc( EngFunc_PrecacheSound, OFFSIDE)
}
PrecacheBall() {
engfunc( EngFunc_PrecacheModel, ball)
}
PrecacheMonsters(team) {
engfunc( EngFunc_PrecacheModel, TeamMascots[team-1])
}
PrecacheSprites() {
g_spr = engfunc( EngFunc_PrecacheModel,"sprites/pass.spr")
beamspr = engfunc( EngFunc_PrecacheModel,"sprites/laserbeam.spr")
fire = engfunc( EngFunc_PrecacheModel,"sprites/shockwave.spr")
smoke = engfunc( EngFunc_PrecacheModel,"sprites/steam1.spr")
Burn_Sprite = engfunc( EngFunc_PrecacheModel,"sprites/xfireball3.spr")
g_fxBeamSprite = engfunc( EngFunc_PrecacheModel,"sprites/lgtning.spr")
offbeam = engfunc( EngFunc_PrecacheModel, "sprites/offbeam.spr")
}
PrecacheOther() {
engfunc( EngFunc_PrecacheModel, "models/rpgrocket.mdl")
engfunc( EngFunc_PrecacheModel, "models/chick.mdl")
}
/*====================================================================================================
[Initialize]
Purpose: $$
Comment: $$
====================================================================================================*/
public plugin_init()
{
/*Warn System*/
register_clcmd("amx_warnmenu", "warnmenu", ADMIN_BAN, "Warnmenu")
/*Keeper System*/
register_clcmd("say /gk", "cmdKeeper")
register_clcmd("say_team /gk", "cmdKeeper")
register_clcmd("say /keeper", "cmdKeeper")
register_clcmd("say_team /keeper", "cmdKeeper")
register_clcmd("say /nogk", "cmdUnKeeper")
register_clcmd("say_team /nogk", "cmdUnKeeper")
register_clcmd("say /nokeeper", "cmdUnKeeper")
register_clcmd("say_team /nokeeper", "cmdUnKeeper")
register_forward(FM_Touch, "fw_touch")
set_task(1.0, "LoadWGZ")
new mapname[31]
get_mapname(mapname, 31)
if(equali(mapname, "soccerjam")) {
soccerjamct[0] = -2472.0
soccerjamct[1] = 0.0
soccerjamct[2] = 1604.0
soccerjamtt[0] = 2055.0
soccerjamtt[1] = 0.0
soccerjamtt[2] = 1604.0
}
if(equali(mapname, "sj_danger")) {
soccerjamct[0] = -2200.0
soccerjamct[1] = 0.0
soccerjamct[2] = 37.0
soccerjamtt[0] = 2200.0
soccerjamtt[1] = 0.0
soccerjamtt[2] = 37.0
}
if(equali(mapname, "sj_monumental")) {
soccerjamct[0] = -2200.0
soccerjamct[1] = 0.0
soccerjamct[2] = 37.0
soccerjamtt[0] = 2200.0
soccerjamtt[1] = 0.0
soccerjamtt[2] = 37.0
}
if(equali(mapname, "sj_ogl")) {
soccerjamct[0] = -2200.0
soccerjamct[1] = 0.0
soccerjamct[2] = 37.0
soccerjamtt[0] = 2200.0
soccerjamtt[1] = 0.0
soccerjamtt[2] = 37.0
}
if(equali(mapname, "sj_dust2")) {
soccerjamct[0] = -2200.0
soccerjamct[1] = 0.0
soccerjamct[2] = 37.0
soccerjamtt[0] = 2200.0
soccerjamtt[1] = 0.0
soccerjamtt[2] = 37.0
}
if(equali(mapname, "sj_sansiro")) {
soccerjamct[0] = -2200.0
soccerjamct[1] = -300.0
soccerjamct[2] = -813.0
soccerjamtt[0] = 2200.0
soccerjamtt[1] = -300.0
soccerjamtt[2] = -813.0
}
/*Offside Foul Hard System*/
register_forward(FM_PlayerPreThink, "go_player")
team_play = 0
dist_enable = 1
/*Rank System*/
g_Cvar[1] = register_cvar("amx_mysql_hostname", "127.0.0.1")
g_Cvar[2] = register_cvar("amx_mysql_username", "root")
g_Cvar[3] = register_cvar("amx_mysql_password", "asfqwf")
g_Cvar[4] = register_cvar("amx_mysql_database", "soccerjam")
register_forward(FM_Sys_Error, "fw_ServerDown")
register_forward(FM_GameShutdown, "fw_ServerDown")
register_forward(FM_ServerDeactivate, "fw_ServerDown")
register_clcmd("say /top10", "top_players")
register_clcmd("say_team /top10", "top_players")
register_clcmd("say /top", "top_players")
register_clcmd("say_team /top", "top_players")
register_clcmd("say /stats", "rankstats_players")
register_clcmd("say_team /stats", "rankstats_players")
register_clcmd("say /rankstats", "rankstats_players")
register_clcmd("say_team /rankstats", "rankstats_players")
register_clcmd("say /rank", "rank_players")
register_clcmd("say_team /rank", "rank_players")
stats_enable = 0
g_pGoals = register_cvar("points_goals", "5")
g_pSteals = register_cvar("points_steals", "2")
g_pAssists = register_cvar("points_assists", "4")
g_pDisarm = register_cvar("points_disarm", "3")
g_pBKills = register_cvar("points_bkills", "3")
g_pOffside = register_cvar("points_offside", "1")
g_pFoul = register_cvar("points_foul", "2")
/*Vimpire*/
health_add = register_cvar("amx_vampire_hp", "30")
register_event("DeathMsg", "hook_death", "a", "1>0")
/*Commentator*/
register_clcmd("say /spec", "spawn_spectators")
/*SoccerJam Experience*/
register_clcmd("amx_exp", "give_xp", ADMIN_KICK, "<nickname> <exp>")
/*Mod Menu*/
register_clcmd("amx_modmenu", "modmenu", ADMIN_KICK, _)
kick = register_cvar("sj_kick", "650")
goalsafety = register_cvar("sj_goalsafety", "650")
gravity = register_cvar("sv_gravity", "800")
/*No Clip*/
register_concmd("+noclip", "onclip")
register_concmd("-noclip", "offclip")
/*Give Me Pass*/
register_event("DeathMsg", "remove_spr", "b")
register_event("ResetHUD", "reset_hud", "be")
register_clcmd("radio3", "CreateSprite")
g_sprtime = register_cvar("amx_passtime", "15")
/*Push Player*/
moveplr = register_cvar("amx_moveplayer", "1")
register_touch("player", "player", "touchtouch")
/*Camera*/
register_clcmd("say /cam", "Camera")
/*SoccerJam*/
maxplayers = get_maxplayers()
register_cvar("soccer_jam_online", "0", FCVAR_SERVER)
register_cvar("soccer_jam_version", VERSION, FCVAR_SERVER)
set_cvar_string("soccer_jam_version", VERSION)
register_dictionary("soccerjam.txt")
if(is_kickball > 0)
{
PrecacheSprites()
register_plugin("Soccer Jam(ON)", VERSION, AUTHOR)
set_cvar_num("soccer_jam_online", 1)
gmsgTextMsg = get_user_msgid("TextMsg")
gmsgDeathMsg = get_user_msgid("DeathMsg")
gmsgShake = get_user_msgid("ScreenShake")
gmsgScreenFade = get_user_msgid("ScreenFade")
maxplayers = get_maxplayers()
if(equali(mapname, "soccerjam")) {
PrecacheOther()
CreateGoalNets()
create_wall()
}
register_clcmd("say /help", "soccerjam_help")
register_clcmd("say /rules", "soccerjam_rules")
register_event("ResetHUD", "Event_ResetHud", "be")
register_event("HLTV","Event_StartRound","a","1=0","2=0")
register_event("Damage", "Event_Damage", "b", "2!0", "3=0", "4!0" )
CVAR_SCORE = register_cvar("sj_score", "30")
CVAR_RESET = register_cvar("sj_reset", "30.0")
CVAR_GOALSAFETY = register_cvar("sj_goalsafety", "650")
CVAR_KICK = register_cvar("sj_kick", "650")
CVAR_RESPAWN = 2.0
CVAR_KILLNEARBALL = register_cvar("sj_kill_distance_ball", "500.0")
CVAR_KILLNEARHOLDER = register_cvar("sj_kill_distance_holder", "96.0")
CVAR_KILLNEARAREA = register_cvar("sj_areas", "700.0")
register_cvar("SCORE_CT", "0")
register_cvar("SCORE_T", "0")
register_menucmd(register_menuid("Team_Select",1), (1<<0)|(1<<1)|(1<<4)|(1<<5), "team_select")
register_touch("PwnBall", "player", "touchPlayer")
register_touch("PwnBall", "soccerjam_goalnet", "touchNet")
register_touch("PwnBall", "worldspawn", "touchWorld")
register_touch("PwnBall", "func_wall", "touchWorld")
register_touch("PwnBall", "func_door", "touchWorld")
register_touch("PwnBall", "func_door_rotating", "touchWorld")
register_touch("PwnBall", "func_wall_toggle", "touchWorld")
register_touch("PwnBall", "func_breakable", "touchWorld")
register_touch("PwnBall", "Blocker", "touchBlocker")
set_task(0.4,"meter",0,_,_,"b")
set_task(0.5,"statusDisplay",7654321,"",0,"b")
register_think("PwnBall","ball_think")
register_think("Mascot", "mascot_think")
register_clcmd("radio1", "LeftDirection", 0)
register_clcmd("radio2", "RightDirection", 0)
register_clcmd("drop", "Turbo")
register_clcmd("lastinv", "BuyUpgrade")
register_message(gmsgTextMsg, "editTextMsg")
register_event("ShowMenu", "menuclass", "b", "4&CT_Select", "4&Terrorist_Select");
register_event("VGUIMenu", "menuclass", "b", "1=26", "1=27");
OFFSET_INTERNALMODEL = is_amd64_server() ? 152 : 126;
}
else
{
register_plugin("Soccer Jam(OFF)", VERSION, AUTHOR)
set_cvar_num("soccer_jam_online",0)
}
return PLUGIN_HANDLED
}
/*====================================================================================================
[Vampire]
Purpose: $$
Comment: $$
====================================================================================================*/
public hook_death()
{
nKiller = read_data(1)
nHp_add = get_pcvar_num (health_add)
nKiller_hp = get_user_health(nKiller)
nKiller_hp += nHp_add
if (nKiller_hp > 220) nKiller_hp = 220
set_user_health(nKiller, nKiller_hp)
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(200)
write_byte(75)
message_end()
}
/*====================================================================================================
[Camera]
Purpose: $$
Comment: $$
====================================================================================================*/
public Camera(id) {
if( HasView[id] == 1) {
ResetFOV(id)
set_view(id, CAMERA_NONE)
HasView[id] = 2
}
else {
ResetFOV(id)
set_view(id, CAMERA_3RDPERSON)
HasView[id] = 1
}
return PLUGIN_CONTINUE
}
public ResetFOV(id) {
message_begin(MSG_ONE, get_user_msgid("SetFOV"), {0,0,0}, id)
write_byte(90)
message_end()
}
/*====================================================================================================
[Push Player]
Purpose: $$
Comment: $$
====================================================================================================*/
public touchtouch(player, player2)
{
if(get_pcvar_num(moveplr))
{
if((!(task_exists(player * 1000 + player2))) && (!(task_exists(player2 * 1000 + player))))
{
new Float:speed[2][3]
new Float:over_speed[3]
set_task(0.2, "empty_space", player * 1000 + player2)
set_task(0.2, "empty_space", player2 * 1000 + player)
entity_get_vector(player, EV_VEC_velocity, speed[0])
entity_get_vector(player2, EV_VEC_velocity, speed[1])
for(new i = 0; i < 3; i++)
{
over_speed[i] = speed[0][i] + speed[1][i]
speed[0][i] += over_speed[i] * 0.65
speed[1][i] -= over_speed[i] * 0.65
}
entity_set_vector(player, EV_VEC_velocity, speed[0])
entity_set_vector(player2, EV_VEC_velocity, speed[1])
}
}
}
public empty_space() {}
/*====================================================================================================
[Give Me Pass]
Purpose: $$
Comment: $$
====================================================================================================*/
public CreateSprite(id)
{
if(!is_user_alive(id) || is_user_bot(id) || !is_user_connected(id) || is_user_hltv(id))
return PLUGIN_HANDLED;
if(time_to_time[id] > get_systime(0))
return PLUGIN_HANDLED;
if(cs_get_user_team(id) == CS_TEAM_CT)
{
time_to_time[id] = get_systime(TIME)
message_begin(MSG_ALL, SVC_TEMPENTITY);
write_byte(TE_PLAYERATTACHMENT);
write_byte(id);
write_coord(60);
write_short(g_spr);
write_short(get_pcvar_num(g_sprtime));
message_end();
}
else if(cs_get_user_team(id) == CS_TEAM_T)
{
time_to_time[id] = get_systime(TIME)
message_begin(MSG_ALL, SVC_TEMPENTITY);
write_byte(TE_PLAYERATTACHMENT);
write_byte(id);
write_coord(60);
write_short(g_spr);
write_short(get_pcvar_num(g_sprtime));
message_end();
}
return PLUGIN_HANDLED;
}
public RemoveSprite(id)
{
if(is_user_bot(id) || !is_user_connected(id))
return PLUGIN_HANDLED;
message_begin(MSG_ALL, SVC_TEMPENTITY);
write_byte(TE_KILLPLAYERATTACHMENTS);
write_byte(id);
message_end();
return PLUGIN_CONTINUE;
}
public remove_spr()
{
new deadid = read_data(2);
message_begin(MSG_ALL, SVC_TEMPENTITY);
write_byte(TE_KILLPLAYERATTACHMENTS);
write_byte(deadid);
message_end();
return PLUGIN_CONTINUE;
}
public reset_hud()
{
new id;
for(id = 1; id <= get_maxplayers(); id++)
{
message_begin(MSG_ALL, SVC_TEMPENTITY);
write_byte(TE_KILLPLAYERATTACHMENTS);
write_byte(id);
message_end();
}
return PLUGIN_CONTINUE;
}
/*====================================================================================================
[No Clip]
Purpose: $$
Comment: $$
====================================================================================================*/
public onclip(id) {
if(!(get_user_flags(id) & ADMIN_LEVEL_A))
return PLUGIN_CONTINUE;
set_user_noclip(id, 1)
return PLUGIN_HANDLED;
}
public offclip(id) {
if(!(get_user_flags(id) & ADMIN_LEVEL_A))
return PLUGIN_CONTINUE;
set_user_noclip(id, 0)
return PLUGIN_HANDLED;
}
/*====================================================================================================
[Mod Menu]
Purpose: $$
Comment: $$
====================================================================================================*/
public modmenu(id) {
new i_Menu = menu_create("rРежим игры:", "menu_handler")
menu_additem(i_Menu, "yОбычная игра", "1", 0)
menu_additem(i_Menu, "yРакетный мяч", "2", 0)
menu_additem(i_Menu, "yЛетающий футбол", "3", 0)
menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED;
}
public menu_handler(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
ClearDHUDMessages();
set_dhudmessage(255, 255, 0, -1.0, 0.0, 2, 15.0, 15.0, 0.1, 1.0, false);
switch(i_Key) {
case 1:{
show_dhudmessage(0, "Включен обычный режим!");
set_pcvar_num(kick, 650);
set_pcvar_num(goalsafety, 650);
set_pcvar_num(gravity, 800);
dist_enable = 1;
stats_enable = 1;
}
case 2:{
show_dhudmessage(0, "Включен режим ракетный мяч!");
set_pcvar_num(kick, 2000);
set_pcvar_num(goalsafety, 2300);
set_pcvar_num(gravity, 800);
dist_enable = 0;
stats_enable = 0;
}
case 3:{
show_dhudmessage(0, "Включен режим летающий футбол!");
set_pcvar_num(kick, 650);
set_pcvar_num(goalsafety, 1000);
set_pcvar_num(gravity, 400);
dist_enable = 0;
stats_enable = 0;
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
/*====================================================================================================
[Commentator]
Purpose: $$
Comment: $$
====================================================================================================*/
public spawn_spectators(id) {
new mapname[31]
get_mapname(mapname, 31)
if(!is_user_keeper[id]) {
if(equali(mapname, "soccerjam")) {
if(is_user_alive(id) && id != ballholder) {
cs_set_user_team(id, CS_TEAM_SPECTATOR, CS_DONTCHANGE)
origin[0]=random_num(-2091,-1565)
origin[1]=random_num(2904,3261)
origin[2]=(1940)
spawn(id)
set_user_origin(id,origin)
}
}
else if(equali(mapname, "sj_danger")) {
if(is_user_alive(id) && id != ballholder) {
cs_set_user_team(id, CS_TEAM_SPECTATOR, CS_DONTCHANGE)
origin[0]=random_num(-479,590)
origin[1]=random_num(-1994,-1923)
origin[2]=(804)
spawn(id)
set_user_origin(id,origin)
}
}
else if(equali(mapname, "sj_monumental")) {
if(is_user_alive(id) && id != ballholder) {
cs_set_user_team(id, CS_TEAM_SPECTATOR, CS_DONTCHANGE)
origin[0]=random_num(1380,1689)
origin[1]=random_num(-1935,-1814)
origin[2]=(-91)
spawn(id)
set_user_origin(id,origin)
}
}
else {
cs_set_user_team(id, CS_TEAM_SPECTATOR, CS_DONTCHANGE)
if(is_user_alive(id))
user_kill(id)
}
}
return PLUGIN_CONTINUE
}
/*====================================================================================================
[SoccerJam Experience]
Purpose: $$
Comment: $$
====================================================================================================*/
public give_xp(id, level, cid){
if(!cmd_access(id, level, cid, 3)) {
return PLUGIN_HANDLED
}
new sz_nick[32], sz_xp[12]
read_argv(1, sz_nick, charsmax(sz_nick))
read_argv(2, sz_xp, charsmax(sz_xp))
new sz_player = cmd_target(id, sz_nick, 2 | 8)
new sz_name[32]
get_user_name(id, sz_name, 31)
if(sz_player) {
new sz_bname[32]
get_user_name(sz_player, sz_bname, 31)
g_Experience[sz_player] += str_to_num(sz_xp)
PrintChatColor(id, _, "%L", LANG_PLAYER, "SJ_EXP", sz_name, sz_bname, sz_xp)
console_print(id, "%s exp. has been added to %s", sz_xp, sz_bname)
}
else {
console_print(id, "Invalid player!")
}
return PLUGIN_HANDLED
}
/*====================================================================================================
[Initialize Entities]
Purpose: Handles our custom entities, created with Valve Hammer, and fixes for soccerjam.bsp.
Comment: $$
====================================================================================================*/
public pfn_keyvalue(entid) {
new classname[32], key[32], value[32]
copy_keyvalue(classname, 31, key, 31, value, 31)
new temp_origins[3][10], x, team
new temp_angles[3][10]
if(equal(key, "classname") && equal(value, "soccerjam_goalnet"))
DispatchKeyValue("classname", "func_wall")
if(equal(classname, "game_player_equip")){
if(!is_kickball || !gamePlayerEquip)
gamePlayerEquip = entid
else {
remove_entity(entid)
}
}
else if(equal(classname, "func_wall"))
{
if(equal(key, "team"))
{
team = str_to_num(value)
if(team == 1 || team == 2) {
GoalEnt[team] = entid
set_task(1.0, "FinalizeGoalNet", team)
}
}
}
else if(equal(classname, "soccerjam_mascot"))
{
if(equal(key, "team"))
{
team = str_to_num(value)
create_mascot(team)
}
else if(equal(key, "origin"))
{
parse(value, temp_origins[0], 9, temp_origins[1], 9, temp_origins[2], 9)
for(x=0; x<3; x++)
MascotsOrigins[x] = floatstr(temp_origins[x])
}
else if(equal(key, "angles"))
{
parse(value, temp_angles[0], 9, temp_angles[1], 9, temp_angles[2], 9)
for(x=0; x<3; x++)
MascotsAngles[x] = floatstr(temp_angles[x])
}
}
else if(equal(classname, "soccerjam_teamball"))
{
if(equal(key, "team"))
{
team = str_to_num(value)
for(x=0; x<3; x++)
TeamBallOrigins[team][x] = TEMP_TeamBallOrigins[x]
}
else if(equal(key, "origin"))
{
parse(value, temp_origins[0], 9, temp_origins[1], 9, temp_origins[2], 9)
for(x=0; x<3; x++)
TEMP_TeamBallOrigins[x] = floatstr(temp_origins[x])
}
}
else if(equal(classname, "soccerjam_ballspawn"))
{
if(equal(key, "origin")) {
is_kickball = 1
create_Game_Player_Equip()
PrecacheBall()
PrecacheSounds()
if(ballspawncount < MAX_BALL_SPAWNS) {
parse(value, temp_origins[0], 9, temp_origins[1], 9, temp_origins[2], 9)
BallSpawnOrigin[ballspawncount][0] = floatstr(temp_origins[0])
BallSpawnOrigin[ballspawncount][1] = floatstr(temp_origins[1])
BallSpawnOrigin[ballspawncount][2] = floatstr(temp_origins[2]) + 10.0
ballspawncount++
}
}
}
}
createball() {
new entity = create_entity("info_target")
if (entity) {
entity_set_string(entity,EV_SZ_classname,"PwnBall")
entity_set_model(entity, ball)
entity_set_int(entity, EV_INT_solid, SOLID_BBOX)
entity_set_int(entity, EV_INT_movetype, MOVETYPE_BOUNCE)
new Float:MinBox[3]
new Float:MaxBox[3]
MinBox[0] = -15.0
MinBox[1] = -15.0
MinBox[2] = 0.0
MaxBox[0] = 15.0
MaxBox[1] = 15.0
MaxBox[2] = 12.0
entity_set_vector(entity, EV_VEC_mins, MinBox)
entity_set_vector(entity, EV_VEC_maxs, MaxBox)
glow(entity,ballcolor[0],ballcolor[1],ballcolor[2],10)
entity_set_float(entity,EV_FL_framerate,0.0)
entity_set_int(entity,EV_INT_sequence,0)
}
//save our entity ID to aball variable
aball = entity
entity_set_float(entity,EV_FL_nextthink,halflife_time() + 0.05)
return PLUGIN_HANDLED
}
CreateGoalNets() {
new endzone, x
new Float:orig[3]
new Float:MinBox[3], Float:MaxBox[3]
for(x=1;x<3;x++) {
endzone = create_entity("info_target")
if (endzone) {
entity_set_string(endzone,EV_SZ_classname,"soccerjam_goalnet")
entity_set_model(endzone, "models/chick.mdl")
entity_set_int(endzone, EV_INT_solid, SOLID_BBOX)
entity_set_int(endzone, EV_INT_movetype, MOVETYPE_NONE)
MinBox[0] = -25.0; MinBox[1] = -145.0; MinBox[2] = -36.0
MaxBox[0] = 25.0; MaxBox[1] = 145.0; MaxBox[2] = 70.0
entity_set_vector(endzone, EV_VEC_mins, MinBox)
entity_set_vector(endzone, EV_VEC_maxs, MaxBox)
switch(x) {
case 1: {
orig[0] = 2110.0
orig[1] = 0.0
orig[2] = 1604.0
}
case 2: {
orig[0] = -2550.0
orig[1] = 0.0
orig[2] = 1604.0
}
}
entity_set_origin(endzone,orig)
entity_set_int(endzone, EV_INT_team, x)
set_entity_visibility(endzone, 0)
GoalEnt[x] = endzone
}
}
}
create_wall() {
new wall = create_entity("func_wall")
if(wall)
{
new Float:orig[3]
new Float:MinBox[3], Float:MaxBox[3]
entity_set_string(wall,EV_SZ_classname,"Blocker")
entity_set_model(wall, "models/chick.mdl")
entity_set_int(wall, EV_INT_solid, SOLID_BBOX)
entity_set_int(wall, EV_INT_movetype, MOVETYPE_NONE)
MinBox[0] = -72.0; MinBox[1] = -100.0; MinBox[2] = -72.0
MaxBox[0] = 72.0; MaxBox[1] = 100.0; MaxBox[2] = 72.0
entity_set_vector(wall, EV_VEC_mins, MinBox)
entity_set_vector(wall, EV_VEC_maxs, MaxBox)
orig[0] = 2355.0
orig[1] = 1696.0
orig[2] = 1604.0
entity_set_origin(wall,orig)
set_entity_visibility(wall, 0)
}
}
create_mascot(team)
{
new Float:MinBox[3], Float:MaxBox[3]
new mascot = create_entity("info_target")
if(mascot)
{
PrecacheMonsters(team)
entity_set_string(mascot,EV_SZ_classname,"Mascot")
entity_set_model(mascot, TeamMascots[team-1])
Mascots[team] = mascot
entity_set_int(mascot, EV_INT_solid, SOLID_NOT)
entity_set_int(mascot, EV_INT_movetype, MOVETYPE_NONE)
entity_set_int(mascot, EV_INT_team, team)
MinBox[0] = -16.0; MinBox[1] = -16.0; MinBox[2] = -72.0
MaxBox[0] = 16.0; MaxBox[1] = 16.0; MaxBox[2] = 72.0
entity_set_vector(mascot, EV_VEC_mins, MinBox)
entity_set_vector(mascot, EV_VEC_maxs, MaxBox)
entity_set_origin(mascot,MascotsOrigins)
entity_set_float(mascot,EV_FL_animtime,2.0)
entity_set_float(mascot,EV_FL_framerate,1.0)
entity_set_int(mascot,EV_INT_sequence,0)
if(team == 2)
entity_set_byte(mascot, EV_BYTE_controller1, 115)
entity_set_vector(mascot,EV_VEC_angles,MascotsAngles)
entity_set_float(mascot,EV_FL_nextthink,halflife_time() + 1.0)
}
}
create_Game_Player_Equip() {
gamePlayerEquip = create_entity("game_player_equip")
if(gamePlayerEquip) {
//DispatchKeyValue(entity, "weapon_scout", "1")
DispatchKeyValue(gamePlayerEquip, "targetname", "roundstart")
DispatchSpawn(gamePlayerEquip)
}
}
public FinalizeGoalNet(team)
{
new goalnet = GoalEnt[team]
entity_set_string(goalnet,EV_SZ_classname,"soccerjam_goalnet")
entity_set_int(goalnet, EV_INT_team, team)
set_entity_visibility(goalnet, 0)
}
public RightDirection(id) {
if(id == ballholder) {
direction--
if(direction < -(DIRECTIONS))
direction = -(DIRECTIONS)
new temp = direction * CURVE_ANGLE
SendCenterText( id, temp );
}
return PLUGIN_HANDLED
}
public LeftDirection(id) {
if(id == ballholder) {
direction++
if(direction > DIRECTIONS)
direction = DIRECTIONS
new temp = direction * CURVE_ANGLE
SendCenterText( id, temp );
}
return PLUGIN_HANDLED
}
SendCenterText( id, dir )
{
if(dir < 0)
client_print(id, print_center, "%L", id, "CURVING_RIGHT", (dir<0?-(dir):dir));
else if(dir == 0)
client_print(id, print_center, "0 degrees");
else if(dir > 0)
client_print(id, print_center, "%L", id, "CURVING_LEFT", (dir<0?-(dir):dir));
}
public plugin_cfg() {
if(is_kickball) {
server_cmd("sv_maxspeed 999")
server_cmd("sv_restart 1")
server_cmd("sv_airaccelerate 10")
}
else {
new failed[64];
format(failed,63,"%L", LANG_SERVER, "PLUGIN_FAILED");
set_fail_state(failed);
}
new szHostname[30], szUsername[30], szPassword[30], szDatabase[30]
new szError[512], szErr
get_pcvar_string(g_Cvar[1], szHostname, charsmax( szHostname ))
get_pcvar_string(g_Cvar[2], szUsername, charsmax( szUsername ))
get_pcvar_string(g_Cvar[3], szPassword, charsmax( szPassword ))
get_pcvar_string(g_Cvar[4], szDatabase, charsmax( szDatabase ))
g_SqlTuple = SQL_MakeDbTuple(szHostname, szUsername, szPassword, szDatabase)
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, szErr, szError, charsmax( szError ))
if(SqlConnection == Empty_Handle)
set_fail_state( szError )
new Handle:Queries = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS `stats`(`id` INTEGER NOT NULL PRIMARY KEY, `name` VARCHAR(32) NOT NULL, `points` INTEGER NOT NULL, `goals` INTEGER NOT NULL, `assists` INTEGER NOT NULL, `steals` INTEGER NOT NULL, `stealsrv` INTEGER NOT NULL, `disarm` INTEGER NOT NULL, `disarmrv` INTEGER NOT NULL, `bkills` INTEGER NOT NULL, `bkillsrv` INTEGER NOT NULL, `offside` INTEGER NOT NULL, `foul` INTEGER NOT NULL, `warns` INTEGER NOT NULL);")
if(!SQL_Execute(Queries))
{
SQL_QueryError(Queries,szError,charsmax(szError))
set_fail_state(szError);
}
SQL_FreeHandle(Queries)
SQL_FreeHandle(SqlConnection);
}
/*====================================================================================================
[Ball Brain]
Purpose: These functions help control the ball and its activities.
Comment: $$
====================================================================================================*/
public ball_think() {
new maxscore = get_pcvar_num(CVAR_SCORE)
if(score[1] >= maxscore || score[2] >= maxscore) {
entity_set_float(aball,EV_FL_nextthink,halflife_time() + 0.05)
return PLUGIN_HANDLED
}
if(is_valid_ent(aball))
{
new Float:gametime = get_gametime()
if(PowerPlay >= MAX_LVL_POWERPLAY && gametime - fire_delay >= 0.3)
on_fire()
if(ballholder > 0)
{
new team = get_user_team(ballholder)
entity_get_vector(ballholder, EV_VEC_origin,testorigin)
if(!is_user_alive(ballholder)) {
new tname[32]
get_user_name(ballholder,tname,31)
remove_task(55555)
set_task(get_pcvar_float(CVAR_RESET),"clearBall",55555)
if(!g_sprint[ballholder])
set_speedchange(ballholder)
format(temp1,63,"%L", LANG_PLAYER, "DROPPED_BALL", TeamNames[team], tname)
//remove glow of owner and set ball velocity really really low
glow(ballholder,0,0,0,0)
ballowner = ballholder
ballholder = 0
testorigin[2] += 5
entity_set_origin(aball, testorigin)
new Float:vel[3], x
for(x=0;x<3;x++)
vel[x] = 1.0
entity_set_vector(aball,EV_VEC_velocity,vel)
entity_set_float(aball,EV_FL_nextthink,halflife_time() + 0.05)
return PLUGIN_HANDLED
}
if(entity_get_int(aball,EV_INT_solid) != SOLID_NOT)
entity_set_int(aball, EV_INT_solid, SOLID_NOT)
//Put ball in front of player
ball_infront(ballholder, 55.0)
new i
for(i=0;i<3;i++)
velocity[i] = 0.0
//Add lift to z axis
new flags = entity_get_int(ballholder, EV_INT_flags)
if(flags & FL_DUCKING)
testorigin[2] -= 10
else
testorigin[2] -= 30
entity_set_vector(aball,EV_VEC_velocity,velocity)
entity_set_origin(aball,testorigin)
}
else {
if(entity_get_int(aball,EV_INT_solid) != SOLID_BBOX)
entity_set_int(aball, EV_INT_solid, SOLID_BBOX)
}
}
entity_set_float(aball,EV_FL_nextthink,halflife_time() + 0.05)
return PLUGIN_HANDLED
}
moveBall(where, team=0) {
if(is_valid_ent(aball)) {
if(team) {
new Float:bv[3]
bv[2] = 50.0
entity_set_origin(aball, TeamBallOrigins[team])
entity_set_vector(aball,EV_VEC_velocity,bv)
}
else {
switch(where) {
case 0: {
new Float:orig[3], x
for(x=0;x<3;x++)
orig[x] = -9999.9
entity_set_origin(aball,orig)
ballholder = -1
}
case 1: {
new Float:v[3], rand
v[2] = 400.0
if(ballspawncount > 1)
rand = random_num(0, ballspawncount-1)
else
rand = 0
entity_set_origin(aball, BallSpawnOrigin[rand])
entity_set_vector(aball, EV_VEC_velocity, v)
PowerPlay = 0
ballholder = 0
ballowner = 0
}
}
}
}
}
public ball_infront(id, Float:dist) {
new Float:nOrigin[3]
new Float:vAngles[3] // plug in the view angles of the entity
new Float:vReturn[3] // to get out an origin fDistance away
entity_get_vector(aball,EV_VEC_origin,testorigin)
entity_get_vector(id,EV_VEC_origin,nOrigin)
entity_get_vector(id,EV_VEC_v_angle,vAngles)
vReturn[0] = floatcos( vAngles[1], degrees ) * dist
vReturn[1] = floatsin( vAngles[1], degrees ) * dist
vReturn[0] += nOrigin[0]
vReturn[1] += nOrigin[1]
testorigin[0] = vReturn[0]
testorigin[1] = vReturn[1]
testorigin[2] = nOrigin[2]
}
public CurveBall(id) {
if(direction && get_speed(aball) > 5 && curvecount > 0) {
new Float:dAmt = float((direction * CURVE_ANGLE) / ANGLEDIVIDE);
new Float:v[3], Float:v_forward[3];
entity_get_vector(aball, EV_VEC_velocity, v);
vector_to_angle(v, BallSpinDirection);
BallSpinDirection[1] = normalize( BallSpinDirection[1] + dAmt );
BallSpinDirection[2] = 0.0;
angle_vector(BallSpinDirection, 1, v_forward);
new Float:speed = vector_length(v)// * 0.95;
v[0] = v_forward[0] * speed
v[1] = v_forward[1] * speed
entity_set_vector(aball, EV_VEC_velocity, v);
curvecount--;
set_task(CURVE_TIME, "CurveBall", id);
}
}
public clearBall() {
play_wav(0, BALL_RESPAWN);
format(temp1,63,"%L",LANG_PLAYER,"BALL_RESPAWNED")
moveBall(1)
}
/*====================================================================================================
[Mascot Think]
Purpose: $$
Comment: $$
====================================================================================================*/
public mascot_think(mascot)
{
new team = entity_get_int(mascot, EV_INT_team)
new indist[32], inNum, chosen
new id, playerteam, dist
for(id=1 ; id<=maxplayers ; id++)
{
if(is_user_alive(id) && !is_user_bot(id))
{
playerteam = get_user_team(id)
if(playerteam != team)
{
if(!chosen) {
dist = get_entity_distance(id, mascot)
if(dist < get_pcvar_num(CVAR_GOALSAFETY))
if(id == ballholder) {
chosen = id
break
}
else
indist[inNum++] = id
}
}
}
}
if(!chosen) {
new rnd = random_num(0, (inNum-1))
chosen = indist[rnd]
}
if(chosen)
TerminatePlayer(chosen, mascot, team, ( ballholder == chosen ? 230.0 : random_float(5.0, 15.0) ) )
entity_set_float(mascot,EV_FL_nextthink,halflife_time() + 1.0)
}
goaly_checker(id, Float:gametime, team) {
if(!is_user_alive(id) || (gametime - GoalyCheckDelay[id] < GOALY_DELAY) )
return PLUGIN_HANDLED
new dist, gcheck
new Float:pOrig[3]
entity_get_vector(id, EV_VEC_origin, pOrig)
dist = floatround(get_distance_f(pOrig, TeamBallOrigins[team]))
//--/* Goaly Exp System */--//
if(dist < 600 ) {
gcheck = GoalyCheck[id]
if(id == ballholder && gcheck >= 2)
kickBall(id, 1)
GoalyPoints[id]++
if(gcheck < 2)
g_Experience[id] += gcheck * AMOUNT_GOALY
else
g_Experience[id] += gcheck * (AMOUNT_GOALY / 2)
if(gcheck < 5)
GoalyCheck[id]++
GoalyCheckDelay[id] = gametime
}
else
GoalyCheck[id] = 0
return PLUGIN_HANDLED
}
/*====================================================================================================
[Status Display]
Purpose: Displays the Scoreboard information.
Comment: $$
====================================================================================================*/
public statusDisplay()
{
new id, team, bteam = get_user_team(ballholder>0?ballholder:ballowner)
new score_t = score[T], score_ct = score[CT]
set_hudmessage(20, 255, 20, 0.95, 0.20, 0, 1.0, 1.5, 0.1, 0.1, HUD_CHANNEL)
new Float:gametime = get_gametime()
new servername[150]
for(id=1; id<=maxplayers; id++) {
if(is_user_connected(id) && !is_user_bot(id))
{
team = get_user_team(id)
goaly_checker(id, gametime, team)
if(!is_user_alive(id) && !is_dead[id] && (team == 1 || team == 2) && GetPlayerModel(id) != 0xFF)
{
remove_task(id+1000)
has_knife[id] = false;
is_dead[id] = true
new Float:respawntime = CVAR_RESPAWN
set_task(respawntime,"AutoRespawn",id)
set_task((respawntime+0.2), "AutoRespawn2",id)
}
if(!winner) {
format(scoreboard,1024,"Статистика %s^n^n %i %L^n%s - %i | %s - %i ^n%L %i ^n^n%s^n^n^n%s", stats_enable ?"включена":"выключена",get_pcvar_num(CVAR_SCORE),id,"GOALS_WINS",TeamNames[T],score_t,TeamNames[CT],score_ct,id,"EXPERIENCE",g_Experience[id],temp1,team==bteam?temp2:"")
format(servername, 150, "[FIFA 14][SoccerJam][Red %d:%d Blue]", score_t, score_ct)
server_cmd("hostname ^"%s^"", servername)
show_hudmessage(id,"%s",scoreboard)
}
}
}
}
/*====================================================================================================
[Touched]
Purpose: All touching stuff takes place here.
Comment: $$
====================================================================================================*/
public touchWorld(ball, world) {
if(get_speed(ball) > 10)
{
new Float:v[3]
entity_get_vector(ball, EV_VEC_velocity, v)
v[0] = (v[0] * 0.85)
v[1] = (v[1] * 0.85)
v[2] = (v[2] * 0.85)
entity_set_vector(ball, EV_VEC_velocity, v)
emit_sound(ball, CHAN_ITEM, BALL_BOUNCE_GROUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
return PLUGIN_HANDLED
}
public touchPlayer(ball, player) {
if(is_user_bot(player))
return PLUGIN_HANDLED
if(is_offside[player]) {
return PLUGIN_HANDLED
}
if(is_user_foul[player])
return PLUGIN_HANDLED
new playerteam = get_user_team(player)
if((playerteam != 1 && playerteam != 2))
return PLUGIN_HANDLED
remove_task(55555)
new aname[64], stolen, x
get_user_name(player,aname,63)
new ballteam = get_user_team(ballowner)
if(ballowner > 0 && playerteam != ballteam )
{
new speed = get_speed(aball)
if(speed > 500)
{
//configure catching algorithm
new rnd = random_num(0,100)
new bstr = (PlayerUpgrades[ballowner][STR] * AMOUNT_STR) / 10
new dex = (PlayerUpgrades[player][DEX] * AMOUNT_DEX)
new pct = ( PressedAction[player] ? 40:20 ) + dex
pct += ( g_sprint[player] ? 5 : 0 ) //player turboing? give 5%
pct -= ( g_sprint[ballowner] ? 5 : 0 ) //ballowner turboing? lose 5%
pct -= bstr //ballowner has strength? remove bstr
//will player avoid damage?
if( rnd > pct ) {
new Float:dodmg = (float(speed) / 13.0) + bstr
PrintChatColor(0, _, "%L", LANG_PLAYER, "BALL_SMACKED", aname, floatround(dodmg))
set_msg_block(gmsgDeathMsg,BLOCK_ONCE)
fakedamage(player,"AssWhoopin",dodmg,1)
set_msg_block(gmsgDeathMsg,BLOCK_NOT)
if(!is_user_alive(player)) {
message_begin(MSG_ALL, gmsgDeathMsg)
write_byte(ballowner)
write_byte(player)
write_string("AssWhoopin")
message_end()
new frags = get_user_frags(ballowner)
entity_set_float(ballowner, EV_FL_frags, float(frags + 1))
setScoreInfo(ballowner)
Event_Record(ballowner, KILL, -1, EXP_KILL)
if(stats_enable == 1) {
UserData[ballowner][gPoints] += get_pcvar_num(g_pBKills)
UserData[player][gPoints] -= get_pcvar_num(g_pBKills)
UserData[ballowner][gBKills] += 1
UserData[player][gBKillsRv] += 1
}
PrintChatColor(player, _, "%L", LANG_PLAYER, "KILLED_BY_BALL")
PrintChatColor(ballowner, _, "%L", LANG_PLAYER, "EXP_FOR_BALLKILL")
}
else {
new Float:pushVel[3]
pushVel[0] = velocity[0]
pushVel[1] = velocity[1]
pushVel[2] = velocity[2] + ((velocity[2] < 0)?random_float(-200.0,-50.0):random_float(50.0,200.0))
entity_set_vector(player,EV_VEC_velocity,pushVel)
}
for(x=0;x<3;x++)
velocity[x] = (velocity[x] * random_float(0.1,0.9))
entity_set_vector(aball,EV_VEC_velocity,velocity)
direction = 0
return PLUGIN_HANDLED
}
}
if(speed > 950)
play_wav(0, STOLE_BALL_FAST)
new Float:pOrig[3]
entity_get_vector(player, EV_VEC_origin, pOrig)
new dist = floatround(get_distance_f(pOrig, TeamBallOrigins[playerteam]))
new gainedxp
if(dist < 550) {
gainedxp = EXP_STEAL + EXP_GOALY + (speed / 8)
Event_Record(player, STEAL, -1, EXP_STEAL + EXP_GOALY + (speed / 8))
GoalyPoints[player] += EXP_GOALY/2
if(stats_enable == 1) {
UserData[ballowner][gPoints] -= get_pcvar_num(g_pSteals)
UserData[player][gPoints] += get_pcvar_num(g_pSteals)
UserData[player][gSteals] += 1
UserData[ballowner][gStealsRv] += 1
}
}
else {
gainedxp = EXP_STEAL
Event_Record(player, STEAL, -1, EXP_STEAL)
if(stats_enable == 1) {
UserData[ballowner][gPoints] -= get_pcvar_num(g_pSteals)
UserData[player][gPoints] += get_pcvar_num(g_pSteals)
UserData[player][gSteals] += 1
UserData[ballowner][gStealsRv] += 1
}
}
format(temp1,63,"%L",LANG_PLAYER,"STOLE_BALL",TeamNames[playerteam],aname)
client_print(0,print_console,"%s",temp1)
stolen = 1
message_begin(MSG_ONE, gmsgShake, {0,0,0}, player)
write_short(255 << 12) //ammount
write_short(1 << 11) //lasts this long
write_short(255 << 10) //frequency
message_end()
PrintChatColor(player, _, "%L", LANG_PLAYER, "EXP_FOR_STEAL", gainedxp)
}
if(ballholder == 0) {
emit_sound(aball, CHAN_ITEM, BALL_PICKED_UP, 1.0, ATTN_NORM, 0, PITCH_NORM)
niOffSide()
new msg[64], check
if(!has_knife[player])
give_knife(player)
if(stolen)
PowerPlay = 0
else
format(temp1,63,"%L",LANG_PLAYER,"BALL_PICKUP",TeamNames[playerteam],aname)
if(((PowerPlay > 1 && powerplay_list[PowerPlay-2] == player) || (PowerPlay > 0 && powerplay_list[PowerPlay-1] == player)) && PowerPlay != MAX_LVL_POWERPLAY)
check = true
if(PowerPlay <= MAX_LVL_POWERPLAY && !check) {
g_Experience[player] += (PowerPlay==2?10:25)
powerplay_list[PowerPlay] = player
PowerPlay++
}
curvecount = 0
direction = 0
GoalyCheck[player] = 0
format(temp2, 63, "%L %i",LANG_PLAYER,"POWER_PLAY", PowerPlay>0?PowerPlay-1:0)
ballholder = player
ballowner = 0
if(!g_sprint[player])
set_speedchange(player)
set_hudmessage(255, 20, 20, POS_X, 0.4, 1, 1.0, 1.5, 0.1, 0.1, 2)
format(msg,63,"%L",player,"YOU_HAVE_BALL")
show_hudmessage(player,"%s",msg)
//Glow Player who has ball their team color
beam()
glow(player, TeamColors[playerteam][0], TeamColors[playerteam][1], TeamColors[playerteam][2], 1)
}
return PLUGIN_HANDLED
}
public touchNet(ball, goalpost)
{
remove_task(55555)
new team = get_user_team(ballowner)
if(!is_user_connected(ballowner)) return PLUGIN_HANDLED;
new goalent = GoalEnt[team]
if(PowerPlay <= 3 && goalpost != goalent && team_play == 1) {
set_dhudmessage(255, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, false);
show_dhudmessage(ballowner, "Чтобы забить гол, совершите серию передач!");
new oteam = (team == 1 ? 2 : 1)
moveBall(0, oteam)
return PLUGIN_HANDLED
}
if (goalpost != goalent && ballowner > 0) {
new aname[64]
new Float:netOrig[3]
new netOrig2[3]
entity_get_vector(ball, EV_VEC_origin,netOrig)
new l
for(l=0; l<3; l++)
distorig[1][l] = floatround(netOrig[l])
new distshot = (get_distance(distorig[0],distorig[1])/12)
if(distshot > 80 && goalpost != goalent && dist_enable == 1) {
set_dhudmessage(255, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, false);
show_dhudmessage(ballowner, "Минимальная дистанция 80 футов!");
new oteam = (team == 1 ? 2 : 1)
moveBall(0, oteam)
return PLUGIN_HANDLED
}
for(l=0;l<3;l++)
netOrig2[l] = floatround(netOrig[l])
flameWave(netOrig2)
get_user_name(ballowner,aname,63)
play_wav(0, SCORED_GOAL)
/////////////////////ASSIST CODE HERE///////////
new assisters[4] = { 0, 0, 0, 0 }
new iassisters = 0
new ilastplayer = iassist[ team ]
// We just need the last player to kick the ball
// 0 means it has passed 15 at least once
if ( ilastplayer == 0 )
ilastplayer = 15
else
ilastplayer--
if ( assist[ ilastplayer ] != 0 ) {
new i, x, bool:canadd, playerid
for(i=0; i<16; i++) {
// Stop if we've already found 4 assisters
if ( iassisters == MAX_ASSISTERS )
break
playerid = assist[ i ]
// Skip if player is invalid
if ( playerid == 0 )
continue
// Skip if kicker is counted as an assister
if ( playerid == assist[ ilastplayer ] )
continue
canadd = true
// Loop through each assister value
for(x=0; x<3; x++)
// make sure we can add them
if ( playerid == assisters[ x ] ) {
canadd = false
break
}
// Skip if they've already been added
if ( canadd == false )
continue
// They didn't kick the ball last, and they haven't been added, add them
assisters[ iassisters++ ] = playerid
}
// This gives each person an assist, xp, and prints that out to them
new c, pass
for(c=0; c<iassisters; c++) {
pass = assisters[ c ]
Event_Record(pass, ASSIST, -1, EXP_ASSIST)
if(stats_enable == 1) {
UserData[pass][gPoints] += get_pcvar_num(g_pAssists)
UserData[pass][gAssists] += 1
}
PrintChatColor(pass, _, "%L", LANG_PLAYER, "EXP_FOR_ASSIST", EXP_ASSIST)
}
}
iassist[ 0 ] = 0
/////////////////////ASSIST CODE HERE///////////
new gainedxp = distshot + EXP_GOAL
format(temp1,63,"%L",LANG_PLAYER,"SCORED_GOAL",TeamNames[team],aname,distshot)
client_print(0,print_console,"%s",temp1)
if(distshot > MadeRecord[ballowner][DISTANCE])
Event_Record(ballowner, DISTANCE, distshot, 0)// record distance, and make that distance exp
Event_Record(ballowner, GOAL, -1, gainedxp) //zero xp for goal cause distance is what gives it.
if(stats_enable == 1) {
UserData[ballowner][gPoints] += get_pcvar_num(g_pGoals)
UserData[ballowner][gGoals] += 1
}
//Increase Score, and update cvar score
score[team]++
switch(team) {
case 1: set_cvar_num("score_ct",score[team])
case 2: set_cvar_num("score_t",score[team])
}
PrintChatColor(ballowner, _, "%L", LANG_PLAYER, "EXP_FOR_GOAL", gainedxp, distshot)
new oteam = (team == 1 ? 2 : 1)
increaseTeamXP(team, 75)
increaseTeamXP(oteam, 50)
moveBall(0)
new x
for(x=1; x<=maxplayers; x++) {
if(is_user_connected(x))
{
Event_Record(x, GOALY, GoalyPoints[x], 0)
new kills = get_user_frags(x)
new deaths = cs_get_user_deaths(x)
setScoreInfo(x)
if( deaths > 0)
PlayerDeaths[x] = deaths
if( kills > 0)
PlayerKills[x] = kills
}
}
if(score[team] < get_pcvar_num(CVAR_SCORE)) {
new r = random_num(0, MAX_SOUNDS-1)
play_wav(0, SCORED_SOUNDS[r]);
}
else {
winner = team
format(scoreboard,1024,"%L",LANG_PLAYER,"TEAM_WINS",TeamNames[team])
set_task(1.0,"showhud_winner",0,"",0,"a",3)
}
server_cmd("sv_restart 4")
}
else if(goalpost == goalent) {
moveBall(0, team)
PrintChatColor(ballowner, _, "%L", LANG_PLAYER, "CANNOT_KICK_GOAL")
}
return PLUGIN_HANDLED
}
//This is for soccerjam.bsp to fix locker room.
public touchBlocker(pwnball, blocker) {
new Float:orig[3] = { 2234.0, 1614.0, 1604.0 }
entity_set_origin(pwnball, orig)
}
/*====================================================================================================
[Events]
Purpose: $$
Comment: $$
====================================================================================================*/
public Event_Damage()
{
new victim = read_data(0)
new attacker = get_user_attacker(victim)
if(is_user_alive(attacker)) {
IsFoul(attacker)
if(is_user_alive(victim) ) {
#if !defined KNIFE_DISARM_ON
if(victim == ballholder) {
#endif
new upgrade = PlayerUpgrades[attacker][DISARM]
if(upgrade) {
new disarm = upgrade * AMOUNT_DISARM
new disarmpct = BASE_DISARM + (victim==ballholder?(disarm*2):0)
new rand = random_num(1,100)
if(disarmpct >= rand)
{
new vname[MAX_PLAYER + 1], aname[MAX_PLAYER + 1]
get_user_name(victim,vname, MAX_PLAYER)
get_user_name(attacker,aname, MAX_PLAYER)
#if defined KNIFE_DISARM_ON
if(victim == ballholder) {
#endif
kickBall(victim, 1)
if(stats_enable == 1) {
UserData[attacker][gPoints] -= get_pcvar_num(g_pDisarm)
UserData[victim][gPoints] -= get_pcvar_num(g_pDisarm)
UserData[attacker][gDisarm] += 1
UserData[victim][gDisarmRv] += 1
}
PrintChatColor(attacker, _, "%L", LANG_PLAYER, "DISARM_BALL_ATTACKER", vname)
PrintChatColor(victim, _, "%L", LANG_PLAYER, "DISARM_BALL_VICTIM", aname)
#if defined KNIFE_DISARM_ON
}
else {
new weapon, clip, ammo
weapon = get_user_weapon(victim,clip,ammo)
if(weapon == CSW_KNIFE)
{
strip_user_weapons(victim);
has_knife[victim] = false;
set_task(float(disarm / DISARM_MULTIPLIER), "give_knife", victim+1000)
PrintChatColor(attacker, _, "%L", LANG_PLAYER, "DISARM_KNIFE_ATTACKER", vname)
PrintChatColor(victim, _, "%L", LANG_PLAYER, "DISARM_KNIFE_VICTIM", aname)
}
}
#endif
}
}
#if !defined KNIFE_DISARM_ON
}
#endif
}
else
g_Experience[attacker] += (EXP_KILL/2)
}
}
public Event_StartRound() {
if(winner) {
set_task(1.0, "displayWinnerAwards", 0)
set_task(20.0, "nextmap")
}
else
SetupRound()
}
public nextmap() {
new nextmap[64], map[64], len
get_mapname(map, 31)
read_file("mapcycle.txt", random_num(0,5), nextmap, 63, len)
if(equal(nextmap, map))
set_task(1.0, "nextmap")
else
server_cmd("changelevel %s", nextmap)
}
public SetupRound() {
iassist[ 0 ] = 0
if(!is_valid_ent(aball))
createball()
moveBall(1)
new id
for(id=1; id<=maxplayers; id++) {
if(is_user_connected(id) && !is_user_bot(id)) {
is_dead[id] = false
seconds[id] = 0
g_sprint[id] = 0
PressedAction[id] = 0
}
}
play_wav(0, ROUND_START)
set_task(0.5, "PostSetupRound", 0)
set_task(1.0, "PostPostSetupRound", 0)
return PLUGIN_HANDLED
}
public PostSetupRound() {
new id
for(id=1; id<=maxplayers; id++) {
if(is_user_alive(id) && !is_user_bot(id)){
give_knife(id)
if(is_user_keeper[id]) {
if(cs_get_user_team(id) == CS_TEAM_T)
set_pev(id, pev_origin, soccerjamtt)
if(cs_get_user_team(id) == CS_TEAM_CT)
set_pev(id, pev_origin, soccerjamct)
}
}
}
}
public PostPostSetupRound() {
new id, kills, deaths
for(id=1; id<=maxplayers; id++) {
if(is_user_connected(id) && !is_user_bot(id)) {
kills = PlayerKills[id]
deaths = PlayerDeaths[id]
if(kills)
entity_set_float(id, EV_FL_frags, float(kills))
if(deaths)
cs_set_user_deaths(id,deaths)
setScoreInfo(id)
}
}
}
public Event_ResetHud(id) {
goaldied[id] = 0
set_task(1.0,"PostResetHud",id)
is_user_foul[id] = false;
is_offside[id] = false;
user_foul_count[id] = 0;
}
public PostResetHud(id) {
if(is_user_alive(id) && !is_user_bot(id))
{
new stam = PlayerUpgrades[id][STA]
if(!has_knife[id]) {
give_knife(id)
}
//compensate for our turbo
if(!g_sprint[id])
set_speedchange(id)
if(stam > 0)
entity_set_float(id, EV_FL_health, float(BASE_HP + (stam * AMOUNT_STA)))
}
}
/*====================================================================================================
[Client Commands]
Purpose: $$
Comment: $$
====================================================================================================*/
public Turbo(id)
{
if(is_user_alive(id))
g_sprint[id] = 1
return PLUGIN_HANDLED
}
public client_PreThink(id)
{
if( is_kickball && is_valid_ent(aball) && is_user_connected(id))
{
new button = entity_get_int(id, EV_INT_button)
new usekey = (button & IN_USE)
new up = (button & IN_FORWARD)
new down = (button & IN_BACK)
new moveright = (button & IN_MOVERIGHT)
new moveleft = (button & IN_MOVELEFT)
new jump = (button & IN_JUMP)
new flags = entity_get_int(id, EV_INT_flags)
new onground = flags & FL_ONGROUND
if( (moveright || moveleft) && !up && !down && jump && onground && !g_sprint[id] && id != ballholder)
SideJump[id] = 1
if(!Coord_Off_Z_active)
{
if(onground)
{
new User_Origin[3]
get_user_origin(id, User_Origin)
Coord_Off_Z_active = 1
Coord_Off_Z = User_Origin[2] - 35
Coord_Off_Y = User_Origin[1]
}
}
if(g_sprint[id])
entity_set_float(id, EV_FL_fuser2, 0.0)
if( id != ballholder )
PressedAction[id] = usekey
else {
if( usekey && !PressedAction[id]) {
kickBall(ballholder, 0)
PreOffside(id)
}
else if( !usekey && PressedAction[id])
PressedAction[id] = 0
}
if(is_user_foul[id] || is_offside[id])
{
if((button & IN_ATTACK || button & IN_ATTACK2))
entity_set_int(id, EV_INT_button, (button & ~IN_ATTACK) & ~IN_ATTACK2)
}
if( id != ballholder && (button & IN_ATTACK || button & IN_ATTACK2) ) {
static Float:maxdistance
static reference
if(ballholder > 0) {
reference = ballholder
maxdistance = get_pcvar_float(CVAR_KILLNEARHOLDER)
}
else {
reference = aball
maxdistance = get_pcvar_float(CVAR_KILLNEARBALL)
}
if(!maxdistance)
return
if(entity_range(id, reference) > maxdistance)
entity_set_int(id, EV_INT_button, (button & ~IN_ATTACK) & ~IN_ATTACK2)
}
}
}
public client_PostThink(id) {
if(is_kickball && is_user_connected(id)) {
new Float:gametime = get_gametime()
new button = entity_get_int(id, EV_INT_button)
new up = (button & IN_FORWARD)
new down = (button & IN_BACK)
new moveright = (button & IN_MOVERIGHT)
new moveleft = (button & IN_MOVELEFT)
new jump = (button & IN_JUMP)
new Float:vel[3]
entity_get_vector(id,EV_VEC_velocity,vel)
if( (gametime - SideJumpDelay[id] > 5.0) && SideJump[id] && jump && (moveright || moveleft) && !up && !down) {
vel[0] *= 2.0
vel[1] *= 2.0
vel[2] = 300.0
entity_set_vector(id,EV_VEC_velocity,vel)
SideJump[id] = 0
SideJumpDelay[id] = gametime
}
else
SideJump[id] = 0
}
}
public kickBall(id, velType)
{
remove_task(55555)
set_task(get_pcvar_float(CVAR_RESET),"clearBall",55555)
new team = get_user_team(id)
new a,x
//Give it some lift
ball_infront(id, 55.0)
testorigin[2] += 10
new Float:tempO[3], Float:returned[3]
new Float:dist2
entity_get_vector(id, EV_VEC_origin, tempO)
new tempEnt = trace_line( id, tempO, testorigin, returned )
dist2 = get_distance_f(testorigin, returned)
if( point_contents(testorigin) != CONTENTS_EMPTY || (!is_user_connected(tempEnt) && dist2 ) )
return PLUGIN_HANDLED
else
{
//Check Make sure our ball isnt inside a wall before kicking
new Float:ballF[3], Float:ballR[3], Float:ballL[3]
new Float:ballB[3], Float:ballTR[3], Float:ballTL[3]
new Float:ballBL[3], Float:ballBR[3]
for(x=0; x<3; x++) {
ballF[x] = testorigin[x]; ballR[x] = testorigin[x];
ballL[x] = testorigin[x]; ballB[x] = testorigin[x];
ballTR[x] = testorigin[x]; ballTL[x] = testorigin[x];
ballBL[x] = testorigin[x]; ballBR[x] = testorigin[x];
}
for(a=1; a<=6; a++) {
ballF[1] += 3.0; ballB[1] -= 3.0;
ballR[0] += 3.0; ballL[0] -= 3.0;
ballTL[0] -= 3.0; ballTL[1] += 3.0;
ballTR[0] += 3.0; ballTR[1] += 3.0;
ballBL[0] -= 3.0; ballBL[1] -= 3.0;
ballBR[0] += 3.0; ballBR[1] -= 3.0;
if(point_contents(ballF) != CONTENTS_EMPTY || point_contents(ballR) != CONTENTS_EMPTY ||
point_contents(ballL) != CONTENTS_EMPTY || point_contents(ballB) != CONTENTS_EMPTY ||
point_contents(ballTR) != CONTENTS_EMPTY || point_contents(ballTL) != CONTENTS_EMPTY ||
point_contents(ballBL) != CONTENTS_EMPTY || point_contents(ballBR) != CONTENTS_EMPTY)
return PLUGIN_HANDLED
}
new ent = -1
testorigin[2] += 35.0
while((ent = find_ent_in_sphere(ent, testorigin, 35.0)) != 0) {
if(ent > maxplayers)
{
new classname[32]
entity_get_string(ent, EV_SZ_classname, classname, 31)
if((contain(classname, "goalnet") != -1 || contain(classname, "func_") != -1) &&
!equal(classname, "func_water") && !equal(classname, "func_illusionary"))
return PLUGIN_HANDLED
}
}
testorigin[2] -= 35.0
}
new kickVel
if(!velType)
{
new str = (PlayerUpgrades[id][STR] * AMOUNT_STR) + (AMOUNT_POWERPLAY*(PowerPlay*5))
kickVel = get_pcvar_num(CVAR_KICK) + str
kickVel += g_sprint[id] * 100
if(direction) {
entity_get_vector(id, EV_VEC_angles, BallSpinDirection)
curvecount = CURVE_COUNT
}
}
else {
curvecount = 0
direction = 0
kickVel = random_num(100, 600)
}
new Float:ballorig[3]
entity_get_vector(id,EV_VEC_origin,ballorig)
for(x=0; x<3; x++)
distorig[0][x] = floatround(ballorig[x])
velocity_by_aim(id, kickVel, velocity)
for(x=0; x<3; x++)
distorig[0][x] = floatround(ballorig[x])
/////////////////////WRITE ASSIST CODE HERE IF NEEDED///////////
if ( iassist[ 0 ] == team ) {
if ( iassist[ team ] == 15 )
iassist[ team ] = 0
}
else {
// clear the assist list
new ind
for(ind = 0; ind < 16; ind++ )
assist[ ind ] = 0
// clear the assist index
iassist[ team ] = 0
// set which team to track
iassist[ 0 ] = team
}
assist[ iassist[ team ]++ ] = id
/////////////////////WRITE ASSIST CODE HERE IF NEEDED///////////
ballowner = id
ballholder = 0
entity_set_origin(aball,testorigin)
entity_set_vector(aball,EV_VEC_velocity,velocity)
set_task(CURVE_TIME*2, "CurveBall", id)
emit_sound(aball, CHAN_ITEM, BALL_KICKED, 1.0, ATTN_NORM, 0, PITCH_NORM)
glow(id,0,0,0,0)
beam()
new aname[64]
get_user_name(id,aname,63)
if(!g_sprint[id])
set_speedchange(id)
format(temp1,63,"%L",LANG_PLAYER,"KICKED_BALL",TeamNames[team],aname)
client_print(0,print_console,"%s",temp1)
return PLUGIN_HANDLED
}
/*====================================================================================================
[Command Blocks]
Purpose: $$
Comment: $$
====================================================================================================*/
public client_kill(id) {
if(is_kickball)
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public client_command(id) {
if(!is_kickball) return PLUGIN_CONTINUE
new arg[13]
read_argv( 0, arg , 12 )
if ( equal("buy",arg) || equal("autobuy",arg) )
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
//fix for an exploit.
public menuclass(id) {
// They changed teams
SetPlayerModel(id, 0xFF);
}
GetPlayerModel(id)
{
if(!is_user_connected(id))
return 0;
return get_pdata_int(id, OFFSET_INTERNALMODEL, 5);
}
SetPlayerModel(id, int)
{
if(!is_user_connected(id))
return;
set_pdata_int(id, OFFSET_INTERNALMODEL, int, 5);
}
public team_select(id, key) {
if(is_kickball) {
new team = get_user_team(id)
//SetPlayerModel(id, 0xFF);
if( (team == 1 || team == 2) && (key == team-1) )
{
new message[64]
format(message, 63, "%L",id,"CANT_REJOIN_TEAM")
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("StatusText"), {0, 0, 0}, id)
write_byte(0)
write_string(message)
message_end()
engclient_cmd(id,"chooseteam")
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
/*====================================================================================================
[Upgrades]
Purpose: This handles the upgrade menu.
Comment: $$
====================================================================================================*/
public BuyUpgrade(id) {
new level[65], num[11], mTitle[101]
format(mTitle,100,"%L",id,"MENU_TITLE")
menu_upgrade[id] = menu_create(mTitle, "Upgrade_Handler")
new x
for(x=1; x<=UPGRADES; x++)
{
new price = ((PlayerUpgrades[id][x] * UpgradePrice[x]) / 2) + UpgradePrice[x]
if((PlayerUpgrades[id][x] + 1) > UpgradeMax[x]) {
format(level,64,"r%s %L",UpgradeTitles[x],id,"MENU_CHOICE_MAXED",UpgradeMax[x])
}
else {
format(level,64,"%s r%L y-- w%i XP",UpgradeTitles[x], id, "MENU_CHOICE_NEXT", PlayerUpgrades[id][x]+1, price)
}
format(num, 10,"%i",x)
menu_additem(menu_upgrade[id], level, num, 0)
}
menu_addblank(menu_upgrade[id], (UPGRADES+1))
menu_setprop(menu_upgrade[id], MPROP_EXIT, MEXIT_NORMAL)
menu_display(id, menu_upgrade[id], 0)
return PLUGIN_HANDLED
}
public Upgrade_Handler(id, menu, item) {
if(item == MENU_EXIT)
return PLUGIN_HANDLED
new cmd[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback)
new upgrade = str_to_num(cmd)
new playerupgrade = PlayerUpgrades[id][upgrade]
new price = ((playerupgrade * UpgradePrice[upgrade]) / 2) + UpgradePrice[upgrade]
new maxupgrade = UpgradeMax[upgrade]
if(playerupgrade != maxupgrade && playerupgrade != maxupgrade+MAX_LVL_BONUS)
{
new needed = g_Experience[id] - price
if( (needed >= 0) )
{
if(playerupgrade < maxupgrade-1)
playerupgrade += 1
else
playerupgrade += MAX_LVL_BONUS+1
g_Experience[id] -= price
if(playerupgrade < maxupgrade)
PrintChatColor(id, _, "%L", LANG_PLAYER, "MENU_UPGRADED", playerupgrade, UpgradeTitles[upgrade], price)
else {
PrintChatColor(id, _, "%L", LANG_PLAYER, "MENU_UPGRADED", maxupgrade, UpgradeTitles[upgrade], price)
#if(MAX_LVL_BONUS > 1)
PrintChatColor(id, _, "%L", LANG_PLAYER, "MENU_MAX_LVL_BONUS", maxupgrade, MAX_LVL_BONUS)
#else
PrintChatColor(id, _, "%L", LANG_PLAYER, "MENU_MAX_LVL", maxupgrade)
#endif
play_wav(id, UPGRADED_MAX_LEVEL)
}
switch(upgrade) {
case STA: {
new stam = playerupgrade * AMOUNT_STA
entity_set_float(id, EV_FL_health, float(BASE_HP + stam))
}
case AGI: {
if(!g_sprint[id])
set_speedchange(id)
}
}
PlayerUpgrades[id][upgrade] = playerupgrade
}
else
PrintChatColor(id, _, "%L", LANG_PLAYER, "MENU_MISSING_EXP", (needed * -1), (playerupgrade+1), UpgradeTitles[upgrade])
}
else {
PrintChatColor(id, _, "%L", LANG_PLAYER, "MENU_UPGRADE_MAXED", UpgradeTitles[upgrade], maxupgrade)
}
return PLUGIN_HANDLED
}
/*====================================================================================================
[Meters]
Purpose: This controls the turbo meter and curve angle meter.
Comment: $$
====================================================================================================*/
public meter()
{
new id
new turboTitle[32]
new sprintText[128], sec
new r, g, b, team
new len, x
new ndir = -(DIRECTIONS)
format(turboTitle,31,"%L",LANG_PLAYER,"TURBO_TITLE");
for(id=1; id<=maxplayers; id++)
{
if(!is_user_connected(id) || !is_user_alive(id) || is_user_bot(id))
continue
sec = seconds[id]
team = get_user_team(id)
r = TeamMeterColors[team][0]
g = TeamMeterColors[team][1]
b = TeamMeterColors[team][2]
if(id == ballholder) {
set_hudmessage(r, g, b, POS_X, 0.75, 0, 0.0, 0.6, 0.0, 0.0, 1)
len = format(sprintText, 127, " %L ^n[",id,"CURVE_TITLE")
for(x=DIRECTIONS; x>=ndir; x--)
if(x==0)
len += format(sprintText[len], 127-len, "%s%s",direction==x?"0":"+", x==ndir?"]":" ")
else
len += format(sprintText[len], 127-len, "%s%s",direction==x?"0":"=", x==ndir?"]":" ")
show_hudmessage(id, "%s", sprintText)
}
set_hudmessage(r, g, b, POS_X, POS_Y, 0, 0.0, 0.6, 0.0, 0.0, 3)
if(sec > 30) {
sec -= 2
format(sprintText, 127, " %s ^n[==============]",turboTitle)
set_speedchange(id)
g_sprint[id] = 0
}
else if(sec >= 0 && sec < 30 && g_sprint[id]) {
sec += 2
set_speedchange(id, 100.0)
}
switch(sec) {
case 0: format(sprintText, 127, " %s ^n[||||||||||||||]",turboTitle)
case 2: format(sprintText, 127, " %s ^n[|||||||||||||=]",turboTitle)
case 4: format(sprintText, 127, " %s ^n[||||||||||||==]",turboTitle)
case 6: format(sprintText, 127, " %s ^n[|||||||||||===]",turboTitle)
case 8: format(sprintText, 127, " %s ^n[||||||||||====]",turboTitle)
case 10: format(sprintText, 127, " %s ^n[|||||||||=====]",turboTitle)
case 12: format(sprintText, 127, " %s ^n[||||||||======]",turboTitle)
case 14: format(sprintText, 127, " %s ^n[|||||||=======]",turboTitle)
case 16: format(sprintText, 127, " %s ^n[||||||========]",turboTitle)
case 18: format(sprintText, 127, " %s ^n[|||||=========]",turboTitle)
case 20: format(sprintText, 127, " %s ^n[||||==========]",turboTitle)
case 22: format(sprintText, 127, " %s ^n[|||===========]",turboTitle)
case 24: format(sprintText, 127, " %s ^n[||============]",turboTitle)
case 26: format(sprintText, 127, " %s ^n[|=============]",turboTitle)
case 28: format(sprintText, 127, " %s ^n[==============]",turboTitle)
case 30: {
format(sprintText, 128, " %s ^n[==============]",turboTitle)
sec = 92
}
case 32: sec = 0
}
seconds[id] = sec
show_hudmessage(id,"%s",sprintText)
}
}
/*====================================================================================================
[Misc.]
Purpose: $$
Comment: $$
====================================================================================================*/
set_speedchange(id, Float:speed=0.0)
{
new Float:agi = float( (PlayerUpgrades[id][AGI] * AMOUNT_AGI) + (id==ballholder?(AMOUNT_POWERPLAY * (PowerPlay*2)):0) )
agi += (BASE_SPEED + speed)
entity_set_float(id,EV_FL_maxspeed, agi)
}
public give_knife(id) {
if(id > 1000)
id -= 1000
remove_task(id+1000)
if (is_user_alive(id))
{
give_item(id, "weapon_knife")
has_knife[id] = true;
}
}
Event_Record(id, recordtype, amt, exp) {
if(amt == -1)
MadeRecord[id][recordtype]++
else
MadeRecord[id][recordtype] = amt
new playerRecord = MadeRecord[id][recordtype]
if(playerRecord > TopPlayer[1][recordtype])
{
TopPlayer[0][recordtype] = id
TopPlayer[1][recordtype] = playerRecord
new name[MAX_NAME_LENGTH+1]
get_user_name(id,name,MAX_NAME_LENGTH)
format(TopPlayerName[recordtype],MAX_NAME_LENGTH,"%s",name)
}
g_Experience[id] += exp
}
Float:normalize(Float:nVel)
{
if(nVel > 360.0) {
nVel -= 360.0
}
else if(nVel < 0.0) {
nVel += 360.0
}
return nVel
}
public editTextMsg()
{
new string[64], radio[64]
get_msg_arg_string(2, string, 63)
if( get_msg_args() > 2 )
get_msg_arg_string(3, radio, 63)
if(containi(string, "#Game_will_restart") != -1 || containi(radio, "#Game_radio") != -1)
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public client_connect(id) {
if(is_kickball)
set_user_info(id,"_vgui_menus","0")
}
public AutoRespawn(id)
if(is_dead[id] && is_user_connected(id)) {
new team = get_user_team(id)
if(team == 1 || team == 2) {
spawn(id)
if(is_user_keeper[id])
cmdUnKeeper(id)
}
else
is_dead[id] = false
}
public AutoRespawn2(id)
if(is_dead[id] && is_user_connected(id)) {
new team = get_user_team(id)
if(team == 1 || team == 2) {
spawn(id)
if(!has_knife[id])
give_knife(id)
}
is_dead[id] = false
}
play_wav(id, wav[])
client_cmd(id,"spk %s",wav)
increaseTeamXP(team, amt) {
new id
for(id=1; id<=maxplayers; id++)
if(get_user_team(id) == team && is_user_connected(id))
g_Experience[id] += amt
}
setScoreInfo(id) {
message_begin(MSG_BROADCAST,get_user_msgid("ScoreInfo"));
write_byte(id);
write_short(get_user_frags(id));
write_short(cs_get_user_deaths(id));
write_short(0);
write_short(get_user_team(id));
message_end();
}
// Erase our current temps (used for ball events)
public eraser(num) {
if(num == 3333)
format(temp1,63,"")
if(num == 4444)
format(temp2,63,"")
return PLUGIN_HANDLED
}
/*====================================================================================================
[Cleanup]
Purpose: $$
Comment: $$
====================================================================================================*/
public client_disconnect(id) {
if(is_kickball) {
new x
for(x = 1; x<=RECORDS; x++)
MadeRecord[id][x] = 0
remove_task(id)
if(ballholder == id ) {
ballholder = 0
clearBall()
}
if(ballowner == id) {
ballowner = 0
}
GoalyPoints[id] = 0
PlayerKills[id] = 0
PlayerDeaths[id] = 0
is_dead[id] = false
seconds[id] = 0
g_sprint[id] = 0
PressedAction[id] = 0
has_knife[id] = false;
g_Experience[id] = 0
for(x=1; x<=UPGRADES; x++)
PlayerUpgrades[id][x] = 0
}
if(is_offside[id])
is_offside[id] = false;
is_user_foul[id] = false;
if(is_user_keeper[id])
cmdUnKeeper(id)
StatsEnable()
save_usr(id)
arrayset(UserData[id], 0, PlData)
}
/*====================================================================================================
[Help]
Purpose: $$
Comment: $$
====================================================================================================*/
public client_putinserver(id) {
if(is_kickball) {
set_task(20.0,"soccerjamHelp",id)
}
arrayset( UserData[id], 0, PlData )
load_data(id)
StatsEnable()
timer[id] = 10
HasView[id] = 2
}
public soccerjamHelp(id)
{
client_cmd(id, "cl_forwardspeed 1000")
client_cmd(id, "cl_backspeed 1000")
client_cmd(id, "cl_sidespeed 1000")
new name[32]
get_user_name(id,name,31)
PrintChatColor(id, _, "%L", LANG_PLAYER, "WELCOME_MSG", name)
PrintChatColor(id, _, "%L", LANG_PLAYER, "WELCOME_HELP_MSG")
LateJoinExp(id)
}
LateJoinExp(id)
{
new total = (score[T] + score[CT]) * AMOUNT_LATEJOINEXP
if(total) {
g_Experience[id] += total
PrintChatColor(id, _, "%L", LANG_PLAYER, "EXP_FOR_LATEJOIN", total)
}
}
public soccerjam_help(id) {
show_motd(id, "help1.txt")
}
public soccerjam_rules(id) {
show_motd(id, "rules.txt")
}
/*====================================================================================================
[Post Game]
Purpose: $$
Comment: $$
====================================================================================================*/
public showhud_winner() {
set_hudmessage(255, 0, 20, -1.0, 0.35, 1, 1.0, 1.5, 0.1, 0.1, HUD_CHANNEL)
show_hudmessage(0,"%s",scoreboard)
}
public displayWinnerAwards()
{
//If NO steal/assist was made, set name to Nobody
new x
for(x=1;x<=RECORDS;x++)
if(!TopPlayer[0][x])
format(TopPlayerName[x],MAX_NAME_LENGTH,"Nobody")
//Display our Winning Team, with Awards, and kill Comm Chair of opponent
new awards[513]
new len = 0
len += format(awards[len], 512-len, "%s %L^n", (winner == 1 ? "Terrorist" : "CT"), LANG_PLAYER, "AWARDS_HEADER" )
len += format(awards[len], 512-len, "%s - %i | %s - %i^n^n", TeamNames[T],score[T],TeamNames[CT],score[CT])
len += format(awards[len], 512-len, " %L^n",LANG_PLAYER,"AWARDS_TITLE")
len += format(awards[len], 512-len, "%i %L -- %s^n", TopPlayer[1][GOAL], LANG_PLAYER, "AWARDS_GOALS", TopPlayerName[GOAL])
len += format(awards[len], 512-len, "%i %L -- %s^n", TopPlayer[1][STEAL], LANG_PLAYER, "AWARDS_STEALS", TopPlayerName[STEAL])
len += format(awards[len], 512-len, "%i %L -- %s^n", TopPlayer[1][ASSIST], LANG_PLAYER, "AWARDS_ASSISTS", TopPlayerName[ASSIST])
len += format(awards[len], 512-len, "%i %L -- %s^n", TopPlayer[1][KILL], LANG_PLAYER, "AWARDS_BALLKILLS", TopPlayerName[KILL])
len += format(awards[len], 512-len, "%i %L -- %s^n", TopPlayer[1][DISTANCE], LANG_PLAYER, "AWARDS_LONGESTGOAL", TopPlayerName[DISTANCE])
set_hudmessage(250, 130, 20, 0.4, 0.35, 0, 1.0, 10.0, 0.1, 0.1, 2)
show_hudmessage(0, "%s", awards)
}
/*====================================================================================================
[Special FX]
Purpose: $$
Comment: $$
====================================================================================================*/
TerminatePlayer(id, mascot, team, Float:dmg) {
new orig[3], Float:morig[3], iMOrig[3]
get_user_origin(id, orig)
entity_get_vector(mascot,EV_VEC_origin,morig)
new x
for(x=0;x<3;x++)
iMOrig[x] = floatround(morig[x])
fakedamage(id,"Terminator",dmg,1)
new hp = get_user_health(id)
if(hp < 0)
increaseTeamXP(team, 25)
new loc = (team == 1 ? 100 : 140)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(0)
write_coord(iMOrig[0]) //(start positionx)
write_coord(iMOrig[1]) //(start positiony)
write_coord(iMOrig[2] + loc) //(start positionz)
write_coord(orig[0]) //(end positionx)
write_coord(orig[1]) //(end positiony)
write_coord(orig[2]) //(end positionz)
write_short(g_fxBeamSprite) //(sprite index)
write_byte(0) //(starting frame)
write_byte(0) //(frame rate in 0.1's)
write_byte(7) //(life in 0.1's)
write_byte(120) //(line width in 0.1's)
write_byte(25) //(noise amplitude in 0.01's)
write_byte(250) //r
write_byte(0) //g
write_byte(0) //b
write_byte(220) //brightness
write_byte(1) //(scroll speed in 0.1's)
message_end()
}
glow(id, r, g, b, on) {
if(on == 1) {
set_rendering(id, kRenderFxGlowShell, r, g, b, kRenderNormal, 255)
entity_set_float(id, EV_FL_renderamt, 1.0)
}
else if(!on) {
set_rendering(id, kRenderFxNone, r, g, b, kRenderNormal, 255)
entity_set_float(id, EV_FL_renderamt, 1.0)
}
else if(on == 10) {
set_rendering(id, kRenderFxGlowShell, r, g, b, kRenderNormal, 255)
entity_set_float(id, EV_FL_renderamt, 1.0)
}
}
on_fire()
{
new rx, ry, rz, Float:forig[3], forigin[3], x
fire_delay = get_gametime()
rx = random_num(-5, 5)
ry = random_num(-5, 5)
rz = random_num(-5, 5)
entity_get_vector(aball, EV_VEC_origin, forig)
for(x=0;x<3;x++)
forigin[x] = floatround(forig[x])
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(17)
write_coord(forigin[0] + rx)
write_coord(forigin[1] + ry)
write_coord(forigin[2] + 10 + rz)
write_short(Burn_Sprite)
write_byte(7)
write_byte(235)
message_end()
}
beam() {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(22) // TE_BEAMFOLLOW
write_short(aball) // ball
write_short(beamspr)// laserbeam
write_byte(BALL_BEAM_LIFE) // life
write_byte(BALL_BEAM_WIDTH) // width
write_byte(BALL_BEAM_RED) // R
write_byte(BALL_BEAM_GREEN) // G
write_byte(BALL_BEAM_BLUE) // B
write_byte(BALL_BEAM_ALPHA) // brightness
message_end()
}
flameWave(myorig[3]) {
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, myorig)
write_byte( 21 )
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2] + 16)
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2] + 500)
write_short( fire )
write_byte( 0 ) // startframe
write_byte( 0 ) // framerate
write_byte( 15 ) // life 2
write_byte( 50 ) // width 16
write_byte( 10 ) // noise
write_byte( 255 ) // r
write_byte( 0 ) // g
write_byte( 0 ) // b
write_byte( 255 ) //brightness
write_byte( 1 / 10 ) // speed
message_end()
message_begin(MSG_BROADCAST,SVC_TEMPENTITY,myorig)
write_byte( 21 )
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2] + 16)
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2] + 500)
write_short( fire )
write_byte( 0 ) // startframe
write_byte( 0 ) // framerate
write_byte( 10 ) // life 2
write_byte( 70 ) // width 16
write_byte( 10 ) // noise
write_byte( 255 ) // r
write_byte( 50 ) // g
write_byte( 0 ) // b
write_byte( 200 ) //brightness
write_byte( 1 / 9 ) // speed
message_end()
message_begin(MSG_BROADCAST,SVC_TEMPENTITY,myorig)
write_byte( 21 )
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2] + 16)
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2] + 500)
write_short( fire )
write_byte( 0 ) // startframe
write_byte( 0 ) // framerate
write_byte( 10 ) // life 2
write_byte( 90 ) // width 16
write_byte( 10 ) // noise
write_byte( 255 ) // r
write_byte( 100 ) // g
write_byte( 0 ) // b
write_byte( 200 ) //brightness
write_byte( 1 / 8 ) // speed
message_end()
//Explosion2
message_begin( MSG_BROADCAST, SVC_TEMPENTITY)
write_byte( 12 )
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2])
write_byte( 80 ) // byte (scale in 0.1's) 188
write_byte( 10 ) // byte (framerate)
message_end()
//TE_Explosion
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( 3 )
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2])
write_short( fire )
write_byte( 65 ) // byte (scale in 0.1's) 188
write_byte( 10 ) // byte (framerate)
write_byte( 0 ) // byte flags
message_end()
//Smoke
message_begin( MSG_BROADCAST,SVC_TEMPENTITY,myorig)
write_byte( 5 ) // 5
write_coord(myorig[0])
write_coord(myorig[1])
write_coord(myorig[2])
write_short( smoke )
write_byte( 50 ) // 2
write_byte( 10 ) // 10
message_end()
return PLUGIN_HANDLED
}
stock ClearDHUDMessages(iClear = 8)
for (new iDHUD = 0; iDHUD < iClear; iDHUD++)
show_dhudmessage(0, "");
/*====================================================================================================
[Rank System]
Purpose: $$
Comment: $$
====================================================================================================*/
public load_data(id)
{
new szError[512], ErrorCode
new szName[32]
get_user_name(id, szName, charsmax( szName ))
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,szError,511)
SQL_QuoteString(SqlConnection, szName, 32, szName);
new Handle:Query = SQL_PrepareQuery(SqlConnection, "SELECT `id` FROM `stats` WHERE `name`='%s';", szName)
if(!SQL_Execute(Query)) {
SQL_QueryError(Query,szError,511);
log_amx(szError);
return ;
}
if(SQL_NumResults(Query) > 0 ) {
next_load_data(id, "", 0);
}
else {
register_player(id,"");
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}
public next_load_data(id,data[],len)
{
new szName[33];
get_user_name(id, szName, charsmax( szName ));
new szError[512], ErrorCode;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,szError,511)
SQL_QuoteString(SqlConnection, szName, 32, szName);
if(SqlConnection == Empty_Handle)
{
log_amx(szError);
return ;
}
new Handle:Query = SQL_PrepareQuery(SqlConnection, "SELECT * FROM `stats` WHERE `name`='%s';", szName)
if(!SQL_Execute(Query))
{
SQL_QueryError(Query,szError,511)
log_amx(szError)
}
if( SQL_NumResults(Query) > 0)
{
UserData[id][gPoints]= SQL_ReadResult(Query, 2);
UserData[id][gGoals]= SQL_ReadResult(Query, 3);
UserData[id][gAssists]= SQL_ReadResult(Query, 4);
UserData[id][gSteals]= SQL_ReadResult(Query, 5);
UserData[id][gStealsRv]= SQL_ReadResult(Query, 6);
UserData[id][gDisarm]= SQL_ReadResult(Query, 7);
UserData[id][gDisarmRv]= SQL_ReadResult(Query, 8);
UserData[id][gBKills]= SQL_ReadResult(Query, 9);
UserData[id][gBKillsRv]= SQL_ReadResult(Query, 10);
UserData[id][gOffside]= SQL_ReadResult(Query, 11);
UserData[id][gFoul]= SQL_ReadResult(Query, 12);
UserData[id][gWarns]= SQL_ReadResult(Query, 13);
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}
public register_player(id, data[])
{
new szName[33];
get_user_name(id, szName, charsmax( szName ));
new szError[512], ErrorCode;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, szError,511)
SQL_QuoteString(SqlConnection, szName, 32, szName);
if(SqlConnection == Empty_Handle)
{
log_amx(szError);
return ;
}
new Handle:Query = SQL_PrepareQuery(SqlConnection, "INSERT INTO `stats` (`name`, `points`, `goals`, `assists`, `steals`, `stealsrv`, `disarm`, `disarmrv`, `bkills`, `bkillsrv`, `offside`, `foul`, `warns`) VALUES ('%s', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');", szName);
if(!SQL_Execute(Query))
{
SQL_QueryError(Query,szError,511)
log_amx(szError)
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
UserData[id][gPoints]= 0;
UserData[id][gGoals]= 0;
UserData[id][gSteals]= 0;
UserData[id][gStealsRv]= 0;
UserData[id][gAssists]= 0;
UserData[id][gDisarm]= 0;
UserData[id][gDisarmRv]= 0;
UserData[id][gBKills]= 0;
UserData[id][gBKillsRv]= 0;
UserData[id][gOffside]= 0;
UserData[id][gFoul]= 0;
UserData[id][gWarns]= 0;
}
public save_usr(id)
{
new szName[33];
get_user_name(id, szName, charsmax( szName ));
new szError[512], ErrorCode;
new Handle:szUpdate;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, szError, 511)
SQL_QuoteString(SqlConnection, szName, 32, szName)
if(SqlConnection == Empty_Handle)
{
log_amx(szError);
return ;
}
szUpdate = SQL_PrepareQuery(SqlConnection, "UPDATE `stats` SET `points`='%d', `goals`='%d', `assists`='%d', `steals`='%d', `stealsrv`='%d', `disarm`='%d', `disarmrv`='%d', `bkills`='%d', `bkillsrv`='%d', `offside`='%d', `foul`='%d', `warns`='%d' WHERE `stats`.`name`='%s';",
UserData[id][gPoints], UserData[id][gGoals], UserData[id][gAssists], UserData[id][gSteals], UserData[id][gStealsRv], UserData[id][gDisarm], UserData[id][gDisarmRv], UserData[id][gBKills], UserData[id][gBKillsRv], UserData[id][gOffside], UserData[id][gFoul], UserData[id][gWarns], szName)
if(!SQL_Execute(szUpdate))
{
SQL_QueryError(szUpdate, szError, charsmax( szError ))
set_fail_state( szError )
}
}
public top_players(id){
new szError[512], ErrorCode;
new num = 0;
new name[10][32], points[10][11], goals[10][11], assists[10][11], steals[10][11], stealsrv[10][11], disarm[10][11], disarmrv[10][11], bkills[10][11], bkillsrv[10][11], offside[10][11], foul[10][11];
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, szError, 511)
new Handle:Query = SQL_PrepareQuery(SqlConnection, "SELECT * FROM `stats` ORDER BY `points` DESC, `goals` DESC")
SQL_Execute(Query)
while(SQL_MoreResults(Query) && num <= 9){
SQL_ReadResult(Query, 1, name[num], 31);
SQL_ReadResult(Query, 2, points[num], 10);
SQL_ReadResult(Query, 3, goals[num], 10);
SQL_ReadResult(Query, 4, assists[num], 10);
SQL_ReadResult(Query, 5, steals[num], 10);
SQL_ReadResult(Query, 6, stealsrv[num], 10);
SQL_ReadResult(Query, 7, disarm[num], 10);
SQL_ReadResult(Query, 8, disarmrv[num], 10);
SQL_ReadResult(Query, 9, bkills[num], 10);
SQL_ReadResult(Query, 10, bkillsrv[num], 10);
SQL_ReadResult(Query, 11, offside[num], 10);
SQL_ReadResult(Query, 12, foul[num], 10);
num++
SQL_NextRow(Query)
}
new motd[2001], iLen;
iLen = format(motd, sizeof motd - 1, "<body bgcolor=#000000><font color=#98f5ff><pre>");
iLen += format(motd[iLen], (sizeof motd - 1) - iLen, "<center><h2>---- SoccerJam Top 10 ----</h2></center>^n^n");
iLen += format(motd[iLen], (sizeof motd - 1) - iLen, "<b><U>%2s %-22.22s %8s %6s %6s %6s %6s %6s %6s %6s %6s %6s %6s</U></b>^n", "#", "Nick", "Points", "Goals", "Assists", "Steals", "StealsRv", "Disarm", "DisarmRv", "BKills", "BKillsRv", "Offsides", "Fouls");
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"1 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[0], str_to_num(points[0]), str_to_num(goals[0]), str_to_num(assists[0]), str_to_num(steals[0]), str_to_num(stealsrv[0]), str_to_num(disarm[0]), str_to_num(disarmrv[0]), str_to_num(bkills[0]), str_to_num(bkillsrv[0]), str_to_num(offside[0]), str_to_num(foul[0]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"2 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[1], str_to_num(points[1]), str_to_num(goals[1]), str_to_num(assists[1]), str_to_num(steals[1]), str_to_num(stealsrv[1]), str_to_num(disarm[1]), str_to_num(disarmrv[1]), str_to_num(bkills[1]), str_to_num(bkillsrv[1]), str_to_num(offside[1]), str_to_num(foul[1]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"3 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[2], str_to_num(points[2]), str_to_num(goals[2]), str_to_num(assists[2]), str_to_num(steals[2]), str_to_num(stealsrv[2]), str_to_num(disarm[2]), str_to_num(disarmrv[2]), str_to_num(bkills[2]), str_to_num(bkillsrv[2]), str_to_num(offside[2]), str_to_num(foul[2]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"4 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[3], str_to_num(points[3]), str_to_num(goals[3]), str_to_num(assists[3]), str_to_num(steals[3]), str_to_num(stealsrv[3]), str_to_num(disarm[3]), str_to_num(disarmrv[3]), str_to_num(bkills[3]), str_to_num(bkillsrv[3]), str_to_num(offside[3]), str_to_num(foul[3]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"5 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[4], str_to_num(points[4]), str_to_num(goals[4]), str_to_num(assists[4]), str_to_num(steals[4]), str_to_num(stealsrv[4]), str_to_num(disarm[4]), str_to_num(disarmrv[4]), str_to_num(bkills[4]), str_to_num(bkillsrv[4]), str_to_num(offside[4]), str_to_num(foul[4]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"6 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[5], str_to_num(points[5]), str_to_num(goals[5]), str_to_num(assists[5]), str_to_num(steals[5]), str_to_num(stealsrv[5]), str_to_num(disarm[5]), str_to_num(disarmrv[5]), str_to_num(bkills[5]), str_to_num(bkillsrv[5]), str_to_num(offside[5]), str_to_num(foul[5]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"7 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[6], str_to_num(points[6]), str_to_num(goals[6]), str_to_num(assists[6]), str_to_num(steals[6]), str_to_num(stealsrv[6]), str_to_num(disarm[6]), str_to_num(disarmrv[6]), str_to_num(bkills[6]), str_to_num(bkillsrv[6]), str_to_num(offside[6]), str_to_num(foul[6]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"8 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[7], str_to_num(points[7]), str_to_num(goals[7]), str_to_num(assists[7]), str_to_num(steals[7]), str_to_num(stealsrv[7]), str_to_num(disarm[7]), str_to_num(disarmrv[7]), str_to_num(bkills[7]), str_to_num(bkillsrv[7]), str_to_num(offside[7]), str_to_num(foul[7]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"9 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[8], str_to_num(points[8]), str_to_num(goals[8]), str_to_num(assists[8]), str_to_num(steals[8]), str_to_num(stealsrv[8]), str_to_num(disarm[8]), str_to_num(disarmrv[8]), str_to_num(bkills[8]), str_to_num(bkillsrv[8]), str_to_num(offside[8]), str_to_num(foul[8]))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"10 %-22.22s %6i %7i %6i %7i %5i %8i %7i %7i %6i %6i %6i^n", name[9], str_to_num(points[9]), str_to_num(goals[9]), str_to_num(assists[9]), str_to_num(steals[9]), str_to_num(stealsrv[9]), str_to_num(disarm[9]), str_to_num(disarmrv[9]), str_to_num(bkills[9]), str_to_num(bkillsrv[9]), str_to_num(offside[9]), str_to_num(foul[9]))
show_motd(id, motd, "Top 10");
}
public rank_players(id){
new szError[512], ErrorCode;
new num = 1;
new name[32], points[11], notes;
new szName[32];
get_user_name(id, szName, 31);
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, szError, 511);
new Handle:Query = SQL_PrepareQuery(SqlConnection, "SELECT * FROM `stats` ORDER BY `points` DESC, `goals` DESC");
SQL_Execute(Query)
notes = SQL_NumResults(Query)
while(SQL_MoreResults(Query))
{
SQL_ReadResult(Query, 1, name, 31)
if(equal(name, szName))
{
SQL_ReadResult(Query, 2, points, 10)
break
}else{
num++
SQL_NextRow(Query)
}
}
PrintChatColor(id, _, "%L", LANG_PLAYER, "SJ_RANK", num, notes, str_to_num(points))
}
public rankstats_players(id){
new motd[1501],iLen;
new szName[33];
get_user_name(id,szName,32);
iLen = format(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>");
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<center><h2>---- SoccerJam Stats ----</h2></center>^n^n");
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<center><b>%s</b></center>^n", szName);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<font color=#fff000><b>%-22.22s</b>: %10i^n", "Points", UserData[id][gPoints]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "Goals", UserData[id][gGoals]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "Assists", UserData[id][gAssists]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "Steals", UserData[id][gSteals]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "StealsRv", UserData[id][gStealsRv]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "Disarm", UserData[id][gDisarm]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "DisarmRv", UserData[id][gDisarmRv]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "BKills", UserData[id][gBKills]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "BKillsRv", UserData[id][gBKillsRv]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n", "Offsides", UserData[id][gOffside]);
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"<b>%-22.22s</b>: %10i^n^n", "Fouls", UserData[id][gFoul]);
show_motd(id, motd, "Stats");
return PLUGIN_HANDLED
}
public plugin_end() {
if(g_SqlTuple != Empty_Handle)
SQL_FreeHandle(g_SqlTuple);
}
public fw_ServerDown()
{
for(new i = 0; i <= MaxPlayers; i++)
{
if(is_user_connected(i))
save_usr(i)
}
}
public StatsEnable() {
new suma_player = get_playersnum()
if(suma_player >= 6) {
stats_enable = 1
}
else {
stats_enable = 0
}
}
/*====================================================================================================
[Offside and Foul System]
Purpose: $$
Comment: $$
====================================================================================================*/
public PreOffside(id)
{
if(ballowner > 0)
{
new Float:angles[3]
new pateoteam = get_user_team(ballowner)
entity_get_vector(ballowner, EV_VEC_angles, angles)
if(angles[0] > float(-25) && angles[0] < float(25))
{
if(pateoteam == 1)
{
if(angles[1] > float(0))
{
if(angles[1] > float(130))
{
if(Offside(id))
log_amx("Offside!")
}
}
else
{
if(angles[1] < float(-130))
{
if(Offside(id))
log_amx("Offside!")
}
}
}
else if(pateoteam == 2)
{
if(angles[1] > float(0))
{
if(angles[1] < float(50))
{
if(Offside(id))
log_amx("Offside!")
}
}
else
{
if(angles[1] > float(-50))
{
if(Offside(id))
log_amx("Offside!")
}
}
}
}
}
return true
}
public AvisoFoul(id)
{
new msg[121]
set_hudmessage(255, 225, 128, POS_X, 0.4, 1, 1.0, 1.5, 0.1, 0.1, 2)
if((user_foul_count[id] > 0) && is_user_foul[id])
user_foul_count[id]--
else
{
format(msg,120," ")
show_hudmessage(id,"%s",msg)
is_user_foul[id] = false;
remove_offside(id)
return PLUGIN_HANDLED;
}
format(msg,120,"Нарушение правил!^nТы не сможешь двигаться %d секунд!", user_foul_count[id])
show_hudmessage(id, "%s",msg)
set_task(1.0,"AvisoFoul",id)
return PLUGIN_HANDLED;
}
public AvisoOffside(id) {
new msg[121]
set_hudmessage(255, 225, 128, POS_X, 0.4, 1, 1.0, 1.5, 0.1, 0.1, 2)
if(!is_offside[id])
{
new msg[121]
set_hudmessage(255, 225, 128, POS_X, 0.4, 1, 1.0, 1.5, 0.1, 0.1, 2)
format(msg,120," ")
show_hudmessage(id,"%s",msg)
return PLUGIN_CONTINUE;
}
format(msg,120,"Ты попал в оффсайд!^nКогда кто-нибудь каснется мяча, ты сможешь двигаться!")
show_hudmessage(id, "%s", msg)
set_task(1.0,"AvisoOffside", id)
return PLUGIN_CONTINUE
}
Paralize(id) {
if(is_user_foul[id])
{
set_user_godmode(id, 1);
play_wav(id, OFFSIDE);
message_begin(MSG_ONE, gmsgScreenFade, _, id);
write_short(~0); // duration
write_short(~0); // hold time
write_short(0x0004); // flags: FFADE_STAYOUT
write_byte(0); // red
write_byte(200); // green
write_byte(50); // blue
write_byte(100); // alpha
message_end();
if (pev(id, pev_flags) & FL_ONGROUND)
set_pev(id, pev_gravity, 999999.9) // set really high
else
set_pev(id, pev_gravity, 0.000001) // no gravity
}
else if(is_offside[id])
{
set_user_godmode(id, 1);
play_wav(id, OFFSIDE);
message_begin(MSG_ONE, gmsgScreenFade, _, id);
write_short(~0); // duration
write_short(~0); // hold time
write_short(0x0004); // flags: FFADE_STAYOUT
write_byte(0); // red
write_byte(200); // green
write_byte(50); // blue
write_byte(100); // alpha
message_end();
if (pev(id, pev_flags) & FL_ONGROUND)
set_pev(id, pev_gravity, 999999.9) // set really high
else
set_pev(id, pev_gravity, 0.000001) // no gravity
}
else {
if(!g_sprint[id])
set_speedchange(id)
}
}
public go_player(id) {
if (is_user_foul[id] || is_offside[id]) {
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) // stop motion
set_pev(id, pev_maxspeed, 1.0) // prevent from moving
}
else {
if(!g_sprint[id])
set_speedchange(id)
}
}
Offside(id) {
new RestUser = 0, alive = 0, teamoff
new origin_x[3], PossCancha[MAX_PLAYER + 1][3]
for(new x = 1; x <= MAX_PLAYER; x++)
{
if(is_user_alive(x) && !is_user_bot(x) && !is_user_hltv(x) && is_user_connected(x))
{
alive++
get_user_origin(x, origin_x)
teamoff = get_user_team(x)
PossCancha[x - RestUser][0] = x
PossCancha[x - RestUser][1] = origin_x[0]
PossCancha[x - RestUser][2] = teamoff
}
else
RestUser++
}
if(alive >= 3)
{
new pateoteam = get_user_team(ballowner)
new auxiliar0, auxiliar1, auxiliar2, finish
if(pateoteam == 1)
{
do
{
finish = 0
for(new x = 1; x <= alive; x++)
{
if(PossCancha[x][1] > PossCancha[x + 1][1])
{
auxiliar0 = PossCancha[x][0]
PossCancha[x][0] = PossCancha[x + 1][0]
PossCancha[x + 1][0] = auxiliar0
auxiliar1 = PossCancha[x][1]
PossCancha[x][1] = PossCancha[x + 1][1]
PossCancha[x + 1][1] = auxiliar1
auxiliar2 = PossCancha[x][2]
PossCancha[x][2] = PossCancha[x + 1][2]
PossCancha[x + 1][2] = auxiliar2
finish = 1
}
}
}
while(finish)
}
else if(pateoteam == 2)
{
do
{
finish = 0
for(new x = 1; x <= alive; x++)
{
if(PossCancha[x][1] < PossCancha[x + 1][1])
{
auxiliar0 = PossCancha[x][0]
PossCancha[x][0] = PossCancha[x + 1][0]
PossCancha[x + 1][0] = auxiliar0
auxiliar1 = PossCancha[x][1]
PossCancha[x][1] = PossCancha[x + 1][1]
PossCancha[x + 1][1] = auxiliar1
auxiliar2 = PossCancha[x][2]
PossCancha[x][2] = PossCancha[x + 1][2]
PossCancha[x + 1][2] = auxiliar2
finish = 1
}
}
}
while(finish)
}
if(pateoteam != PossCancha[1][2])
return false;
if(id == PossCancha[1][0])
return false;
if((pateoteam == PossCancha[1][2]) && (pateoteam != PossCancha[2][2]))
{
SentenceOffside(PossCancha[1][0], PossCancha[2][0], PossCancha[1][1], PossCancha[2][1])
}
else if((pateoteam == PossCancha[1][2]) && (pateoteam == PossCancha[2][2]) && (pateoteam != PossCancha[3][2]))
{
SentenceOffside(PossCancha[1][0], PossCancha[3][0], PossCancha[1][1], PossCancha[3][1])
}
else if((pateoteam == PossCancha[1][2]) && (pateoteam == PossCancha[2][2]) && (pateoteam == PossCancha[3][2]) && (pateoteam != PossCancha[4][2]))
{
SentenceOffside(PossCancha[1][0], PossCancha[4][0], PossCancha[1][1], PossCancha[4][1])
}
else
return false;
}
else
return false;
return true;
}
public SentenceOffside(idoff, idhabil, originoff, originhabil) {
if(stats_enable == 1) {
UserData[idoff][gPoints] -= get_pcvar_num(g_pOffside)
UserData[idoff][gOffside] += 1
}
off_1 = idoff
is_offside[idoff] = true
create_line_off_red(originoff)
create_line_off_green(originhabil)
PrintOffside(idoff)
AvisoOffside(idoff)
Paralize(idoff)
}
public PrintOffside(idoff) {
new name_off1[MAX_PLAYER + 1]
get_user_name(idoff,name_off1, MAX_PLAYER)
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_OFFSIDE", name_off1)
}
public niOffSide() {
if(off_1 > 0)
{
if(is_offside[off_1])
{
is_offside[off_1] = false
remove_offside(off_1)
}
}
}
remove_offside(id)
{
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
set_user_godmode(id, 0)
set_pev(id, pev_gravity, 1.0)
message_begin(MSG_ONE, gmsgScreenFade, _, id);
write_short(0); // duration
write_short(0); // hold time
write_short(0); // flags
write_byte(0); // red
write_byte(0); // green
write_byte(0); // blue
write_byte(0); // alpha
message_end();
return PLUGIN_CONTINUE;
}
public create_line_off_red(number)
{
if(is_offside[off_1])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(0) //TE_BEAMPOINTS
write_coord(number) //centerpoint
write_coord(Coord_Off_Y + 3000) //left top corner
write_coord(Coord_Off_Z) //horizontal height
write_coord(number) //centerpoint
write_coord(Coord_Off_Y - 3000) //left right corner
write_coord(Coord_Off_Z) //horizontal height
write_short(offbeam) //sprite to use
write_byte(1) // framestart
write_byte(1) // framerate
write_byte(10) // life in 0.1's 42
write_byte(15) // width
write_byte(0) // noise
write_byte(255) // red
write_byte(0) // green
write_byte(0) // blue
write_byte(210) // brightness
write_byte(0) // speed
message_end()
set_task(1.0,"create_line_off_red", number)
}
return PLUGIN_CONTINUE;
}
public create_line_off_green(number)
{
if(is_offside[off_1])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(0) //TE_BEAMPOINTS
write_coord(number) //centerpoint
write_coord(Coord_Off_Y + 3000) //left top corner
write_coord(Coord_Off_Z) //horizontal height
write_coord(number) //centerpoint
write_coord(Coord_Off_Y - 3000) //left right corner
write_coord(Coord_Off_Z) //horizontal height
write_short(offbeam) //sprite to use
write_byte(1) // framestart
write_byte(1) // framerate
write_byte(10) // life in 0.1's 42
write_byte(15) // width
write_byte(0) // noise
write_byte(0) // red
write_byte(255) // green
write_byte(0) // blue
write_byte(210) // brightness
write_byte(0) // speed
message_end()
set_task(1.0,"create_line_off_green", number)
}
}
public IsFoul(attacker)
{
new button = entity_get_int(attacker, EV_INT_button)
if( attacker != ballholder && (button & IN_ATTACK || button & IN_ATTACK2))
{
static Float:maxdistancia
static Float:maxdistancia2
static referencia
static referencia2
new team_at = get_user_team(attacker)
referencia2 = Mascots[team_at]
maxdistancia2 = get_pcvar_float(CVAR_KILLNEARAREA)
if(ballholder > 0)
{
referencia = ballholder
maxdistancia = 200.0
}
else
{
referencia = aball
maxdistancia = 400.0
}
if(entity_range(attacker, referencia2) > maxdistancia2 && is_user_connected(attacker) && is_user_connected(referencia2))
{
if(entity_range(attacker, referencia) > maxdistancia)
{
is_user_foul[attacker] = true;
user_foul_count[attacker] = 5;
AvisoFoul(attacker)
Paralize(attacker)
new name_foul[MAX_PLAYER + 1]
get_user_name(attacker, name_foul, MAX_PLAYER)
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_FOUL", name_foul)
if(stats_enable == 1) {
UserData[attacker][gPoints] -= get_pcvar_num(g_pFoul)
UserData[attacker][gFoul] += 1
}
}
}
}
return PLUGIN_CONTINUE;
}
/*====================================================================================================
[Keeper System]
Purpose: $$
Comment: $$
====================================================================================================*/
public cmdKeeper(id) {
if(!is_user_keeper[id]) {
static next_ct, next_tt
new systime = get_systime()
new remaining_ct = next_ct - systime
new remaining_tt = next_tt - systime
timer[id] = 10
if( cs_get_user_team(id) == CS_TEAM_CT && remaining_ct > 0 ) {
PrintChatColor(id, _, "%L", LANG_PLAYER, "SJ_BLOCK", remaining_ct)
return PLUGIN_HANDLED
}
if( cs_get_user_team(id) == CS_TEAM_T && remaining_tt > 0 ) {
PrintChatColor(id, _, "%L", LANG_PLAYER, "SJ_BLOCK", remaining_tt)
return PLUGIN_HANDLED
}
if(PlayerUpgrades[id][DEX] < 4) {
PrintChatColor(id, _, "%L", LANG_PLAYER, "SJ_DEX")
} else {
new name[MAX_PLAYER + 1]
get_user_name(id, name, MAX_PLAYER)
if(cs_get_user_team(id) == CS_TEAM_CT && gkct == 0) {
CT_keeper[id] = true
is_user_keeper[id] = true
gkct = 1
set_pev(id, pev_origin, soccerjamct)
next_ct = systime + 90
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_GKC", name)
}
else if(cs_get_user_team(id) == CS_TEAM_T && gktt == 0) {
T_keeper[id] = true
is_user_keeper[id] = true
gktt = 1
set_pev(id, pev_origin, soccerjamtt)
next_tt = systime + 90
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_GKT", name)
}
else {
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_JGK")
}
}
}
return PLUGIN_HANDLED
}
public cmdUnKeeper(id) {
if(is_user_keeper[id]) {
new name[MAX_PLAYER + 1]
get_user_name(id, name, MAX_PLAYER)
if(timer[id] > 0) {
nogkblock(id)
PrintChatColor(id, _, "%L", LANG_PLAYER, "SJ_NOBLOCK", timer[id])
return PLUGIN_HANDLED
}
if(cs_get_user_team(id) == CS_TEAM_CT) {
CT_keeper[id] = false
is_user_keeper[id] = false
gkct = 0
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_NOGK", name)
}
else if(cs_get_user_team(id) == CS_TEAM_T) {
T_keeper[id] = false
is_user_keeper[id] = false
gktt = 0
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_NOGK", name)
}
}
return PLUGIN_HANDLED
}
public nogkblock(id) {
if(timer[id] >= 0) {
timer[id] --
set_task(2.0, "nogkblock", id, _, _,"b")
}
else {
cmdUnKeeper(id)
remove_task(id)
}
}
public fw_touch(zone, player) {
if (!pev_valid(zone) || !is_user_connected(player))
return FMRES_IGNORED
static classname[33]
pev(player, pev_classname, classname, 32)
if (!equal(classname, "player"))
return FMRES_IGNORED
pev(zone, pev_classname, classname, 32)
if (!equal(classname, "gkzone"))
return FMRES_IGNORED
KeeperZone(player, zone)
return FMRES_IGNORED
}
public KeeperZone(player, zone) {
if(!pev_valid(zone))
return;
if(is_user_keeper[player]) {
if(cs_get_user_team(player) == CS_TEAM_T)
set_pev(player, pev_origin, soccerjamtt)
else if(cs_get_user_team(player) == CS_TEAM_CT)
set_pev(player, pev_origin, soccerjamct)
else
return;
}
}
public CreateZone(Float:position[3], Float:mins[3], Float:maxs[3]) {
new entity = fm_create_entity("info_target")
set_pev(entity, pev_classname, "gkzone")
fm_entity_set_model(entity, "models/gib_skull.mdl")
fm_entity_set_origin(entity, position)
set_pev(entity, pev_movetype, MOVETYPE_FLY)
set_pev(entity, pev_solid, SOLID_TRIGGER)
fm_entity_set_size(entity, mins, maxs)
fm_set_entity_visibility(entity, 0)
return entity
}
public LoadWGZ() {
new zonefile[200]
new mapname[50]
get_configsdir(zonefile, 199)
format(zonefile, 199, "%s/gkzone", zonefile)
get_mapname(mapname, 49)
format(zonefile, 199, "%s/%s.wgz", zonefile, mapname)
if (!file_exists(zonefile))
{
log_amx("no zone-file found")
return
}
new input[1000], line = 0, len
while( (line = read_file(zonefile , line , input , 127 , len) ) != 0 )
{
if (!strlen(input) || (input[0] == ';')) continue;
new data[20]
new Float:mins[3], Float:maxs[3], Float:pos[3]
strbreak(input, data, 20, input, 999); pos[0] = str_to_float(data);
strbreak(input, data, 20, input, 999); pos[1] = str_to_float(data);
strbreak(input, data, 20, input, 999); pos[2] = str_to_float(data);
strbreak(input, data, 20, input, 999); mins[0] = str_to_float(data);
strbreak(input, data, 20, input, 999); mins[1] = str_to_float(data);
strbreak(input, data, 20, input, 999); mins[2] = str_to_float(data);
strbreak(input, data, 20, input, 999); maxs[0] = str_to_float(data);
strbreak(input, data, 20, input, 999); maxs[1] = str_to_float(data);
strbreak(input, data, 20, input, 999); maxs[2] = str_to_float(data);
CreateZone(pos, mins, maxs);
}
FindAllZones()
HideAllZones()
}
public HideAllZones() {
for(new i = 0; i < maxzones; i++)
{
set_pev(zone[i], pev_solid, SOLID_TRIGGER)
remove_task(TASK_BASIS_SHOWZONES + zone[i])
}
}
public FindAllZones() {
new entity = -1
maxzones = 0
while( (entity = fm_find_ent_by_class(entity, "gkzone")) )
{
zone[maxzones] = entity
maxzones++
}
}
stock fm_find_ent_by_class(index, const classname[])
return engfunc(EngFunc_FindEntityByString, index, "classname", classname)
stock fm_entity_set_size(index, const Float:mins[3], const Float:maxs[3])
return engfunc(EngFunc_SetSize, index, mins, maxs)
stock fm_entity_set_model(index, const model[])
return engfunc(EngFunc_SetModel, index, model)
stock fm_create_entity(const classname[])
return engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname))
stock fm_entity_set_origin(index, const Float:origin[3]) {
new Float:mins[3], Float:maxs[3]
pev(index, pev_mins, mins)
pev(index, pev_maxs, maxs)
engfunc(EngFunc_SetSize, index, mins, maxs)
return engfunc(EngFunc_SetOrigin, index, origin)
}
stock fm_set_entity_visibility(index, visible = 1) {
set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)
return 1
}
/*====================================================================================================
[Warn System]
Purpose: $$
Comment: $$
====================================================================================================*/
public warnmenu(id) {
new i_Menu = menu_create("rВыдать варнинг:", "warnmenu_handler")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10]
new msg[128]
get_players(s_Players, i_Num)
for (new i; i < i_Num; i++) {
i_Player = s_Players[i]
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
format(msg, 127, "%sr[y%dr]", s_Name, UserData[i_Player][gWarns])
menu_additem(i_Menu, msg, s_Player, 0)
}
menu_setprop(i_Menu, MPROP_NEXTNAME, "Дальше")
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
menu_display(id, i_Menu, 0)
}
public warnmenu_handler(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
bplayer = str_to_num(s_Data)
get_user_name(id, adm, 32)
get_user_name(bplayer, bp, 32)
warn(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public warn(id) {
new menu = menu_create("rМеню предупреждений:", "g_menu_handler")
menu_additem(menu, "Играть в пас", "1")
menu_additem(menu, "Гол в пустые", "2")
menu_additem(menu, "Оскорбление", "3")
menu_additem(menu, "Реклама", "4")
menu_additem(menu, "Флуд", "5")
menu_setprop(menu, MPROP_NEXTNAME, "Дальше")
menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public g_menu_handler(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
set_dhudmessage(255, 255, 0, -1.0, -1.0, 2, 1.0, 5.0, 0.1, 1.0, false)
new Key = str_to_num(s_Data)
if(is_user_connected(bplayer)) {
switch(Key) {
case 1: show_dhudmessage(bplayer, "Убедительная просьба играть в пас!")
case 2: show_dhudmessage(bplayer, "Не забивайте в пустые ворота!")
case 3: show_dhudmessage(bplayer, "Прекратите оскорблять игроков!")
case 4: show_dhudmessage(bplayer, "Прекратите рассылать рекламу!")
case 5: show_dhudmessage(bplayer, "Прекратите флудить!")
}
client_cmd(bplayer, "spk buttons/bell1")
UserData[bplayer][gWarns] ++
PrintChatColor(0, _, "%L", LANG_PLAYER, "SJ_WARN", adm, bp, UserData[bplayer][gWarns])
}
if(UserData[bplayer][gWarns] == 3) {
if(is_user_keeper[bplayer])
cmdUnKeeper(id)
server_cmd("amx_ban ^"%s^" ^"30^" ^"Narushenie pravil^"", bp)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
#1
azik215
-
- Пользователь
-
- 32 сообщений
Новичок
Отправлено 12 Сентябрь 2014 — 18:29
Помогите , что за ошибка??
Упс. Компилирование
- Наверх
#2
The
Отправлено 12 Сентябрь 2014 — 18:56
-
Помогите , что за ошибка??
Упс. Компилирование
error 017: undefined symbol «%s» — неизвестный символ «%s»;
warning 217: loose indentation — не выровненная строка
Сообщение отредактировал The: 12 Сентябрь 2014 — 18:56
- Наверх
#3
azik215
azik215
-
- Пользователь
-
- 32 сообщений
Новичок
Отправлено 20 Сентябрь 2014 — 18:46
error 017: undefined symbol «%s» — неизвестный символ «%s»;
с ним то , что делать с 2 я разобрался
- Наверх
#4
FasT of boni
Отправлено 20 Сентябрь 2014 — 18:58
warning 217: loose indentation
Проблема с отступами. Внутри функции отступы должны быть сделаны или с помощью TAB, или с помощью пробелов — нельзя их смешивать, выберите что-то одно.
- Наверх
#5
azik215
azik215
-
- Пользователь
-
- 32 сообщений
Новичок
Отправлено 20 Сентябрь 2014 — 19:03
warning 217: loose indentation
Проблема с отступами. Внутри функции отступы должны быть сделаны или с помощью TAB, или с помощью пробелов — нельзя их смешивать, выберите что-то одно
Я с этим разобрался мне нужно
error 017: undefined symbol «%s» — неизвестный символ «%s»;
Что с ним делать?
Вот 93 строчка
LogMgr_Print(g_moduleCore, LogType_Debug, «PurchaseUpgrade», «Client %d tried to buy interlocked upgrade %s», client, name);
- Наверх
#6
FasT of boni
Отправлено 20 Сентябрь 2014 — 19:08
Я с этим разобрался мне нужно
error 017: undefined symbol «%s» — неизвестный символ «%s»;
Что с ним делать?
Вот 93 строчка
LogMgr_Print(g_moduleCore, LogType_Debug, «PurchaseUpgrade», «Client %d tried to buy interlocked upgrade %s», client, name);
error 017: undefined symbol «x»
Используемый символ не найден. Или забыли переменную объявить, или не подключили модуль. Если это какая-то SourceMod команда, например, CS_RespawnPlayer, то зайдите в API и введите её в поле «Search:». Выше над командой жирным шрифтом будет указано имя модуля, например, «cstrike», и чтобы его подключить, добавьте в самый верх кода #include <cstrike>
- Наверх
#7
azik215
azik215
-
- Пользователь
-
- 32 сообщений
Новичок
Отправлено 20 Сентябрь 2014 — 19:24
Я с этим разобрался мне нужно
error 017: undefined symbol «%s» — неизвестный символ «%s»;
Что с ним делать?
Вот 93 строчка
LogMgr_Print(g_moduleCore, LogType_Debug, «PurchaseUpgrade», «Client %d tried to buy interlocked upgrade %s», client, name);
error 017: undefined symbol «x»
Используемый символ не найден. Или забыли переменную объявить, или не подключили модуль. Если это какая-то SourceMod команда, например, CS_RespawnPlayer, то зайдите в API и введите её в поле «Search:». Выше над командой жирным шрифтом будет указано имя модуля, например, «cstrike», и чтобы его подключить, добавьте в самый верх кода #include <cstrike>
Можно я в лс файл кину. Ты сделаешь??
- Наверх
#8
FasT of boni
Отправлено 20 Сентябрь 2014 — 19:25
Можно я в лс файл кину. Ты сделаешь??
попробуй
- Наверх
#9
azik215
azik215
-
- Пользователь
-
- 32 сообщений
Новичок
Отправлено 20 Сентябрь 2014 — 19:28
- Наверх
#10
FasT of boni
Отправлено 20 Сентябрь 2014 — 20:26
Это инклюд.
Кидай все инклюды и исходник.
- Наверх
#11
Mattko
Отправлено 21 Сентябрь 2014 — 13:29
Нету переменной «name», объявите о ней в начале кода.
Используя вот-так: new name;
warning 217: loose indentation
Проблема с отступами. Внутри функции отступы должны быть сделаны или с помощью TAB, или с помощью пробелов — нельзя их смешивать, выберите что-то одно.
Не отступами, а с табуляции… Можно объявить #table, но проще соблюдать табуляцию, чтобы работа плагина была стабильна.
PS: Автору темы, кидай исходник мне в ЛС, или тут. Исправлю.
- Mr.Credo это нравится
- Наверх