Hlds serverimde deniyorum eklentiyi clor chat hatası veriyor eklenti.
Konu
Denermisin,
PHP Kod:
/*
Jailbreak Gang System
H3avY Ra1n
Description
-----------
This plugin allows prisoners to create gangs and upgrade specific skills that apply to everybody in the gang.
Gang Menu
---------
Create a Gang - Allows a user to create a gang by paying money.
Invite to Gang - Only the leader of the gang can invite people to the gang.
Skills - Opens the skills menu, where any member of the gang can pay money to upgrade their skills.
Top-10 - Shows a MOTD with the top10 gangs, SORTED BY KILLS. (If you have a good way to sort it, please post it below)
Leave Gang - Allows a player to leave the gang. The leader cannot leave the gang until he transfers leadership to somebody else (explained later).
Gang Leader Menu - Shows a menu with options to disband the gang, kick a player from the gang, or transfer leadership to somebody else in the gang.
Online Members - Shows a list of gang members that are currently in the server.
Skills
------
HP - Increased health
Stealing - Increased money earnings.
Gravity - Lower Gravity
Damage - Increased damage
Stamina - Gives higher speed to players.
Weapon Drop - Chance of making the guard drop the weapon when you knife them. (%1 chance increase per level)
CVARS
-----
jb_gang_cost - The cost to create a gang.
jb_health_cost - The cost to upgrade gang health.
jb_stealing_cost - The cost to upgrade gang money earning.
jb_gravity_cost - The cost to upgrade gang gravity.
jb_damage_cost - The cost to upgrade gang damage.
jb_stamina_cost - The cost to upgrade gang stamina (speed).
jb_weapondrop_cost - The cost to upgrade gang weapon drop percentage.
Additionally there are CVars for the max level for each type of upgrade, so replace _cost above with _max.
Also there are CVars for the amount per level, so replace _cost above with _per.
jb_points_per_kill - The amount of points you get for a kill
jb_headshot_bonus - The amount of points you get for a headshot
jb_max_members - The max amount of members a gang can hold
jb_admin_create - Whether or not an admin can create gangs without using points
Credits
-------
F0RCE - Original Plugin Idea
Exolent - SQLVault Include
Drekes - Freezetime Fix (I was too lazy) :)
Changelog
---------
September 26, 2011 - v1.0 - Initial Release
September 27, 2011 - v1.01 - Added more cvars, fixed a few bugs.
September 28, 2011 - v1.1 - Added gang admins, jb points instead of money, and a few other things I can't remember :)
January 21, 2011 - v1.1.1 - Added a cvar for whether an admin can create a gang without using points.
January 23, 2011 - v1.1.2 - Fixed freezetime problem
http://forums.alliedmods.net/showthread.php?p=1563919
*/
/* Includes */
#include < amxmodx >
#include < amxmisc >
#include < sqlvault_ex >
#include < cstrike >
#include < hamsandwich >
#include < fun >
/* Defines */
#define ADMIN_CREATE ADMIN_LEVEL_B
/* Constants */
new const g_szVersion[ ] = "1.1.2";
enum _:GangInfo
{
Trie:GangMembers,
GangName[ 64 ],
GangHP,
GangStealing,
GangGravity,
GangDamage,
GangStamina,
GangWeaponDrop,
GangKills,
NumMembers
};
enum
{
VALUE_HP,
VALUE_STEALING,
VALUE_GRAVITY,
VALUE_DAMAGE,
VALUE_STAMINA,
VALUE_WEAPONDROP,
VALUE_KILLS
}
enum
{
STATUS_NONE,
STATUS_MEMBER,
STATUS_ADMIN,
STATUS_LEADER
};
new const g_szGangValues[ ][ ] =
{
"HP",
"Stealing",
"Gravity",
"Damage",
"Stamina",
"WeaponDrop",
"Kills"
};
new const g_szPrefix[ ] = "^04[Gang System]^01";
/* Tries */
new Trie:g_tGangNames;
new Trie:g_tGangValues;
/* Vault */
new SQLVault:g_hVault;
new SQLVault:g_hPointsVault;
/* Arrays */
new Array:g_aGangs;
/* Pcvars */
new g_pCreateCost;
new g_pHealthCost;
new g_pStealingCost;
new g_pGravityCost;
new g_pDamageCost;
new g_pStaminaCost;
new g_pWeaponDropCost;
new g_pHealthMax;
new g_pStealingMax;
new g_pGravityMax;
new g_pDamageMax;
new g_pStaminaMax;
new g_pWeaponDropMax;
new g_pHealthPerLevel;
new g_pStealingPerLevel;
new g_pGravityPerLevel;
new g_pDamagePerLevel;
new g_pStaminaPerLevel;
new g_pWeaponDropPerLevel;
new g_pPointsPerKill;
new g_pHeadshotBonus;
new g_pMaxMembers;
new g_pAdminCreate;
/* Integers */
new g_iGang[ 33 ];
new g_iPoints[ 33 ];
public plugin_init()
{
register_plugin( "Jailbreak Gang System", g_szVersion, "H3avY Ra1n" );
g_aGangs = ArrayCreate( GangInfo );
g_tGangValues = TrieCreate();
g_tGangNames = TrieCreate();
g_hVault = sqlv_open_local( "jb_gangs", false );
sqlv_init_ex( g_hVault );
g_hPointsVault = sqlv_open_local( "jb_points", true );
g_pCreateCost = register_cvar( "jb_gang_cost", "50" );
g_pHealthCost = register_cvar( "jb_health_cost", "20" );
g_pStealingCost = register_cvar( "jb_stealing_cost", "20" );
g_pGravityCost = register_cvar( "jb_gravity_cost", "20" );
g_pDamageCost = register_cvar( "jb_damage_cost", "20" );
g_pStaminaCost = register_cvar( "jb_stamina_cost", "20" );
g_pWeaponDropCost = register_cvar( "jb_weapondrop_cost", "20" );
g_pHealthMax = register_cvar( "jb_health_max", "10" );
g_pStealingMax = register_cvar( "jb_stealing_max", "10" );
g_pGravityMax = register_cvar( "jb_gravity_max", "10" ); // Max * Gravity Per Level must be LESS than 800
g_pDamageMax = register_cvar( "jb_damage_max", "10" );
g_pStaminaMax = register_cvar( "jb_stamina_max", "10" );
g_pWeaponDropMax = register_cvar( "jb_weapondrop_max", "10" );
g_pHealthPerLevel = register_cvar( "jb_health_per", "10" );
g_pStealingPerLevel = register_cvar( "jb_stealing_per", "0.05" );
g_pGravityPerLevel = register_cvar( "jb_gravity_per", "50" );
g_pDamagePerLevel = register_cvar( "jb_damage_per", "3" );
g_pStaminaPerLevel = register_cvar( "jb_stamina_per", "3" );
g_pWeaponDropPerLevel = register_cvar( "jb_weapondrop_per", "1" );
g_pPointsPerKill = register_cvar( "jb_points_per_kill", "3" );
g_pHeadshotBonus = register_cvar( "jb_headshot_bonus", "2" );
g_pMaxMembers = register_cvar( "jb_max_members", "10" );
g_pAdminCreate = register_cvar( "jb_admin_create", "0" ); // Admins can create gangs without points
register_cvar( "jb_gang_version", g_szVersion, FCVAR_SPONLY | FCVAR_SERVER );
register_menu( "Gang Menu", 1023, "GangMenu_Handler" );
register_menu( "Skills Menu", 1023, "SkillsMenu_Handler" );
for( new i = 0; i < sizeof g_szGangValues; i++ )
{
TrieSetCell( g_tGangValues, g_szGangValues[ i ], i );
}
RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1 );
RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 );
RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Post", 1 );
RegisterHam( Ham_Item_PreFrame, "player", "Ham_PlayerResetSpeedPost", 1);
register_event( "DeathMsg", "Event_DeathMsg", "a" );
register_clcmd( "say /cete", "Cmd_Gang" );
register_clcmd( "gang_name", "Cmd_CreateGang" );
LoadGangs();
}
public client_disconnect( id )
{
g_iGang[ id ] = -1;
new szAuthID[ 35 ];
get_user_authid( id, szAuthID, charsmax( szAuthID ) );
sqlv_set_num( g_hPointsVault, szAuthID, g_iPoints[ id ] );
}
public client_putinserver( id )
{
g_iGang[ id ] = get_user_gang( id );
new szAuthID[ 35 ];
get_user_authid( id, szAuthID, charsmax( szAuthID ) );
g_iPoints[ id ] = sqlv_get_num( g_hPointsVault, szAuthID );
}
public plugin_end()
{
SaveGangs();
sqlv_close( g_hVault );
}
public Ham_PlayerSpawn_Post( id )
{
if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
return HAM_IGNORED;
if( g_iGang[ id ] == -1 )
{
return HAM_IGNORED;
}
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
new iHealth = 100 + aData[ GangHP ] * get_pcvar_num( g_pHealthPerLevel );
set_user_health( id, iHealth );
new iGravity = 800 - ( get_pcvar_num( g_pGravityPerLevel ) * aData[ GangGravity ] );
set_user_gravity( id, float( iGravity ) / 800.0 );
return HAM_IGNORED;
}
public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )
{
if( !is_user_alive( iAttacker ) || cs_get_user_team( iAttacker ) != CS_TEAM_T )
return HAM_IGNORED;
if( g_iGang[ iAttacker ] == -1 )
return HAM_IGNORED;
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData );
SetHamParamFloat( 4, flDamage + ( get_pcvar_num( g_pDamagePerLevel ) * ( aData[ GangDamage ] ) ) );
return HAM_IGNORED;
}
public Ham_TakeDamage_Post( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )
{
if( !is_user_alive( iAttacker ) || g_iGang[ iAttacker ] == -1 || get_user_weapon( iAttacker ) != CSW_KNIFE || cs_get_user_team( iAttacker ) != CS_TEAM_T )
{
return HAM_IGNORED;
}
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData );
new iChance = aData[ GangWeaponDrop ] * get_pcvar_num( g_pWeaponDropPerLevel );
if( iChance == 0 )
return HAM_IGNORED;
new bool:bDrop = ( random_num( 1, 100 ) <= iChance );
if( bDrop )
client_cmd( iVictim, "drop" );
return HAM_IGNORED;
}
public Ham_PlayerResetSpeedPost( id )
{
if( g_iGang[ id ] == -1 || !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
{
return HAM_IGNORED;
}
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
if( aData[ GangStamina ] > 0 && get_user_maxspeed( id ) > 1.0 )
set_user_maxspeed( id, 250.0 + ( aData[ GangStamina ] * get_pcvar_num( g_pStaminaPerLevel ) ) );
return HAM_IGNORED;
}
public Event_DeathMsg()
{
new iKiller = read_data( 1 );
new iVictim = read_data( 2 );
if( !is_user_alive( iKiller ) || cs_get_user_team( iVictim ) != CS_TEAM_CT || cs_get_user_team( iKiller ) != CS_TEAM_T )
return PLUGIN_CONTINUE;
new iTotal = get_pcvar_num( g_pPointsPerKill ) + ( bool:read_data( 3 ) ? get_pcvar_num( g_pHeadshotBonus ) : 0 );
if( g_iGang[ iKiller ] > -1 )
{
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, g_iGang[ iKiller ], aData );
aData[ GangKills ]++;
ArraySetArray( g_aGangs, g_iGang[ iKiller ], aData );
iTotal += iTotal * ( aData[ GangStealing ] * get_pcvar_num( g_pStealingPerLevel ) );
}
g_iPoints[ iKiller ] += iTotal;
return PLUGIN_CONTINUE;
}
public Cmd_Gang( id )
{
if( !is_user_connected( id ) || cs_get_user_team( id ) != CS_TEAM_T )
{
ColorChat( id, NORMAL, "%s Sadece ^03mahkumlar ^01erisebilir.", g_szPrefix );
return PLUGIN_HANDLED;
}
static szMenu[ 512 ], iLen, aData[ GangInfo ], iKeys, iStatus;
iKeys = MENU_KEY_0 | MENU_KEY_4;
iStatus = getStatus( id, g_iGang[ id ] );
if( g_iGang[ id ] > -1 )
{
ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
iLen = formatex( szMenu, charsmax( szMenu ), "\yCete Menu^n\wMevcut Cete:\y %s^n", aData[ GangName ] );
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yJB Miktari: \w%i^n^n", g_iPoints[ id ] );
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \dCete Olustur [%i CSMCoins]^n", get_pcvar_num( g_pCreateCost ) );
}
else
{
iLen = formatex( szMenu, charsmax( szMenu ), "\yCete Menu^n\wMevcut Cete:\r Yok^n" );
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yCSMCoins Miktari: \w%i^n^n", g_iPoints[ id ] );
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \wCete Olustur [%i CSMCoins]^n", get_pcvar_num( g_pCreateCost ) );
iKeys |= MENU_KEY_1;
}
if( iStatus > STATUS_MEMBER && g_iGang[ id ] > -1 && get_pcvar_num( g_pMaxMembers ) > aData[ NumMembers ] )
{
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \wCetene Oyuncu Davet Et^n" );
iKeys |= MENU_KEY_2;
}
else
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \dCetene Oyuncu Davet Et^n" );
if( g_iGang[ id ] > -1 )
{
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \wBeceriler^n" );
iKeys |= MENU_KEY_3;
}
else
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \dBeceriler^n" );
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r4. \wTop-10^n" );
if( g_iGang[ id ] > -1 )
{
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \wCeteden Ayril^n" );
iKeys |= MENU_KEY_5;
}
else
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \dCeteden Ayril^n" );
if( iStatus > STATUS_MEMBER )
{
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \wCete Admin Menu^n" );
iKeys |= MENU_KEY_6;
}
else
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \dCete Admin Menu^n" );
if( g_iGang[ id ] > -1 )
{
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \wAktif Uyeler^n" );
iKeys |= MENU_KEY_7;
}
else
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \dAktif Uyeler^n" );
iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "^n\r0. \wMenuyu Kapat" );
show_menu( id, iKeys, szMenu, -1, "Gang Menu" );
return PLUGIN_CONTINUE;
}
public GangMenu_Handler( id, iKey )
{
switch( ( iKey + 1 ) % 10 )
{
case 0: return PLUGIN_HANDLED;
case 1:
{
if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE )
{
client_cmd( id, "messagemode gang_name" );
}
else if( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )
{
ColorChat( id, NORMAL, "%s Bir çete oluþturmak için yeterli CSMCoins yok!", g_szPrefix );
return PLUGIN_HANDLED;
}
else
client_cmd( id, "messagemode gang_name" );
}
case 2:
{
ShowInviteMenu( id );
}
case 3:
{
ShowSkillsMenu( id );
}
case 4:
{
Cmd_Top10( id );
}
case 5:
{
ShowLeaveConfirmMenu( id );
}
case 6:
{
ShowLeaderMenu( id );
}
case 7:
{
ShowMembersMenu( id );
}
}
return PLUGIN_HANDLED;
}
public Cmd_CreateGang( id )
{
new bool:bAdmin = false;
if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE )
{
bAdmin = true;
}
else if( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )
{
ColorChat( id, NORMAL, "%s Bir çete oluþturmak için yeterli CSMCoins yok!", g_szPrefix );
return PLUGIN_HANDLED;
}
else if( g_iGang[ id ] > -1 )
{
ColorChat( id, NORMAL, "%s Zaten bir cetedesin.", g_szPrefix );
return PLUGIN_HANDLED;
}
else if( cs_get_user_team( id ) != CS_TEAM_T )
{
ColorChat( id, NORMAL, "[GAREZ]%s Sadece ^03mahkumlarla ^01cete olusturabilirsiniz.", g_szPrefix );
return PLUGIN_HANDLED;
}
new szArgs[ 60 ];
read_args( szArgs, charsmax( szArgs ) );
remove_quotes( szArgs );
if( TrieKeyExists( g_tGangNames, szArgs ) )
{
ColorChat( id, NORMAL, "[GAREZ]%s Bu cete ismi zaten kullanimda lutfen baska bi isim deneyin.", g_szPrefix );
Cmd_Gang( id );
return PLUGIN_HANDLED;
}
new aData[ GangInfo ];
aData[ GangName ] = szArgs;
aData[ GangHP ] = 0;
aData[ GangStealing ] = 0;
aData[ GangGravity ] = 0;
aData[ GangStamina ] = 0;
aData[ GangWeaponDrop ] = 0;
aData[ GangDamage ] = 0;
aData[ NumMembers ] = 0;
aData[ GangMembers ] = _:TrieCreate();
ArrayPushArray( g_aGangs, aData );
if( !bAdmin )
g_iPoints[ id ] -= get_pcvar_num( g_pCreateCost );
set_user_gang( id, ArraySize( g_aGangs ) - 1, STATUS_LEADER );
ColorChat( id, NORMAL, "%s Tebrikler.Basariyla cete olusturuldu. '^03%s^01'.", g_szPrefix, szArgs );
return PLUGIN_HANDLED;
}
public ShowInviteMenu( id )
{
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new szInfo[ 6 ], hMenu;
hMenu = menu_create( "Bir Oyuncu Davet etmek için seçin:", "InviteMenu_Handler" );
new szName[ 32 ];
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( iPlayer == id || g_iGang[ iPlayer ] == g_iGang[ id ] || cs_get_user_team( iPlayer ) != CS_TEAM_T )
continue;
get_user_name( iPlayer, szName, charsmax( szName ) );
num_to_str( iPlayer, szInfo, charsmax( szInfo ) );
menu_additem( hMenu, szName, szInfo );
}
menu_display( id, hMenu, 0 );
}
public InviteMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
Cmd_Gang( id );
return PLUGIN_HANDLED;
}
new szData[ 6 ], iAccess, hCallback, szName[ 32 ];
menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, 31, hCallback );
new iPlayer = str_to_num( szData );
if( !is_user_connected( iPlayer ) )
return PLUGIN_HANDLED;
ShowInviteConfirmMenu( id, iPlayer );
ColorChat( id, NORMAL, "%s Ceteye katilma istegivar %s ", g_szPrefix, szName );
Cmd_Gang( id );
return PLUGIN_HANDLED;
}
public ShowInviteConfirmMenu( id, iPlayer )
{
new szName[ 32 ];
get_user_name( id, szName, charsmax( szName ) );
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
new szMenuTitle[ 128 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%s Size katilmak icin davet var %s", szName, aData[ GangName ] );
new hMenu = menu_create( szMenuTitle, "InviteConfirmMenu_Handler" );
new szInfo[ 6 ];
num_to_str( g_iGang[ id ], szInfo, 5 );
menu_additem( hMenu, "Daveti kabul et.", szInfo );
menu_additem( hMenu, "Reddet", "-1" );
menu_display( iPlayer, hMenu, 0 );
}
public InviteConfirmMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
return PLUGIN_HANDLED;
new szData[ 6 ], iAccess, hCallback;
menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
new iGang = str_to_num( szData );
if( iGang == -1 )
return PLUGIN_HANDLED;
if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER )
{
ColorChat( id, NORMAL, "%s Lider iken çete býrakamazsýnýz.", g_szPrefix );
return PLUGIN_HANDLED;
}
set_user_gang( id, iGang );
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, iGang, aData );
ColorChat( id, NORMAL, "%s Basariyla ceteye uye olundu. ^03%s^01.", g_szPrefix, aData[ GangName ] );
return PLUGIN_HANDLED;
}
public ShowSkillsMenu( id )
{
static szMenu[ 512 ], iLen, iKeys, aData[ GangInfo ];
if( !iKeys )
{
iKeys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0;
}
ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
iLen = formatex( szMenu, charsmax( szMenu ), "\ySkills Menu^n^n" );
iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r1. \wHP Yukselt [\rMaliyet: \y%i CSMCoins\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pHealthCost ), aData[ GangHP ], get_pcvar_num( g_pHealthMax ) );
iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r2. \wHirsizlik Yukselt [\rMaliyet: \y%i CSMCoins\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pStealingCost ), aData[ GangStealing ], get_pcvar_num( g_pStealingMax ) );
iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r3. \wYercekimi Yukselt [\rMaliyet: \y%i CSMCoins\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pGravityCost ), aData[ GangGravity ], get_pcvar_num( g_pGravityMax ) );
iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r4. \wHasar Yukselt [\rMaliyet: \y%i CSMCoins\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pDamageCost ), aData[ GangDamage ], get_pcvar_num( g_pDamageMax ) );
iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r5. \wSilah Birakma Yukselt [\rMaliyet: \y%i CSMCoins\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pWeaponDropCost ), aData[ GangWeaponDrop ], get_pcvar_num( g_pWeaponDropMax ) );
iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r6. \wHiz Yukselt [\rMaliyet: \y%i CSMCoins\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pStaminaCost ), aData[ GangStamina ], get_pcvar_num( g_pStaminaMax ) );
iLen += formatex( szMenu[ iLen ], 511 - iLen, "^n\r0. \wMenuyu Kapat" );
show_menu( id, iKeys, szMenu, -1, "Skills Menu" );
}
public SkillsMenu_Handler( id, iKey )
{
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
switch( ( iKey + 1 ) % 10 )
{
case 0:
{
Cmd_Gang( id );
return PLUGIN_HANDLED;
}
case 1:
{
if( aData[ GangHP ] == get_pcvar_num( g_pHealthMax ) )
{
ColorChat( id, NORMAL, "%s Cete icin bu beceri en yuksek seviyede.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pHealthCost );
if( iRemaining < 0 )
{
ColorChat( id, NORMAL, "%s Bunun icin yeterli CSMCoins yok.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
aData[ GangHP ]++;
g_iPoints[ id ] = iRemaining;
}
case 2:
{
if( aData[ GangStealing ] == get_pcvar_num( g_pStealingMax ) )
{
ColorChat( id, NORMAL, "%s Cetede bu beceri en yuksek seviyede", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStealingCost );
if( iRemaining < 0 )
{
ColorChat( id, NORMAL, "%s Bunun icin yeterli CSMCoins Yok.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
aData[ GangStealing ]++;
g_iPoints[ id ] = iRemaining;
}
case 3:
{
if( aData[ GangGravity ] == get_pcvar_num( g_pGravityMax ) )
{
ColorChat( id, NORMAL, "%s Cetede bu beceri en yuksek seviyede.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pGravityCost );
if( iRemaining < 0 )
{
ColorChat( id, NORMAL, "%s Bunun icin yeterli CSMCoins Yok.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
aData[ GangGravity ]++;
g_iPoints[ id ] = iRemaining;
}
case 4:
{
if( aData[ GangDamage ] == get_pcvar_num( g_pDamageMax ) )
{
ColorChat( id, NORMAL, "%s Cetede bu beceri en yuksek seviyede.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pDamageCost );
if( iRemaining < 0 )
{
ColorChat( id, NORMAL, "%s Bunun icin yeterli CSMCoins Yok..", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
aData[ GangDamage ]++;
g_iPoints[ id ] = iRemaining;
}
case 5:
{
if( aData[ GangWeaponDrop ] == get_pcvar_num( g_pWeaponDropMax ) )
{
ColorChat( id, NORMAL, "%s Cetede bu beceri en yuksek seviyede.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pWeaponDropCost );
if( iRemaining < 0 )
{
ColorChat( id, NORMAL, "%s Bunun icin yeterli CSMCoins Yok.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
aData[ GangWeaponDrop ]++;
g_iPoints[ id ] = iRemaining;
}
case 6:
{
if( aData[ GangStamina ] == get_pcvar_num( g_pStaminaMax ) )
{
ColorChat( id, NORMAL, "%s Cetede bu beceri en yuksek seviyede.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStaminaCost );
if( iRemaining < 0 )
{
ColorChat( id, NORMAL, "%s Bunun icin yeterli CSMCoins Yok..", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
aData[ GangStamina ]++;
g_iPoints[ id ] = iRemaining;
}
}
ArraySetArray( g_aGangs, g_iGang[ id ], aData );
new iPlayers[ 32 ], iNum, iPlayer;
new szName[ 32 ];
get_players( iPlayers, iNum );
for( new i = 0; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( iPlayer == id || g_iGang[ iPlayer ] != g_iGang[ id ] )
continue;
ColorChat( iPlayer, NORMAL, "%s ^03%s ^01Yetenek bir seviye yukseltildi.", g_szPrefix, szName );
}
ColorChat( id, NORMAL, "%s Basariyla cetenin seviyesini yukselttiniz.", g_szPrefix );
ShowSkillsMenu( id );
return PLUGIN_HANDLED;
}
public Cmd_Top10( id )
{
new iSize = ArraySize( g_aGangs );
new iOrder[ 100 ][ 2 ];
new aData[ GangInfo ];
for( new i = 0; i < iSize; i++ )
{
ArrayGetArray( g_aGangs, i, aData );
iOrder[ i ][ 0 ] = i;
iOrder[ i ][ 1 ] = aData[ GangKills ];
}
SortCustom2D( iOrder, iSize, "Top10_Sort" );
new szMessage[ 2048 ];
formatex( szMessage, charsmax( szMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" );
format( szMessage, charsmax( szMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n", szMessage, "#", "Isim", "Oldurmeler", "HP", "Calma",
"Yercekimi", "Dayaniklilik", "Silah Dusurme", "Hasar" );
for( new i = 0; i < min( 10, iSize ); i++ )
{
ArrayGetArray( g_aGangs, iOrder[ i ][ 0 ], aData );
format( szMessage, charsmax( szMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n", szMessage, i + 1, aData[ GangName ],
aData[ GangKills ], aData[ GangHP ], aData[ GangStealing ], aData[ GangGravity ], aData[ GangStamina], aData[ GangWeaponDrop ], aData[ GangDamage ] );
}
show_motd( id, szMessage, "GAREZ | Cete Top 10" );
}
public Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize )
{
if( iElement1[ 1 ] > iElement2[ 1 ] )
return -1;
else if( iElement1[ 1 ] < iElement2[ 1 ] )
return 1;
return 0;
}
public ShowLeaveConfirmMenu( id )
{
new hMenu = menu_create( "Ceteden ayrilmak istediginize emin misiniz ?", "LeaveConfirmMenu_Handler" );
menu_additem( hMenu, "Evet,Ayril", "0" );
menu_additem( hMenu, "Hayir,Kal", "1" );
menu_display( id, hMenu, 0 );
}
public LeaveConfirmMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
return PLUGIN_HANDLED;
new szData[ 6 ], iAccess, hCallback;
menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
switch( str_to_num( szData ) )
{
case 0:
{
if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER )
{
ColorChat( id, NORMAL, "%s Bu ceteden ayrilmadan once liderligi baskasina aktarmaniz gerekir!", g_szPrefix );
Cmd_Gang( id );
return PLUGIN_HANDLED;
}
ColorChat( id, NORMAL, "%s Basariyla cete kaldi.", g_szPrefix );
set_user_gang( id, -1 );
Cmd_Gang( id );
}
case 1: Cmd_Gang( id );
}
return PLUGIN_HANDLED;
}
public ShowLeaderMenu( id )
{
new hMenu = menu_create( "Cete Yonetici Menu", "LeaderMenu_Handler" );
new iStatus = getStatus( id, g_iGang[ id ] );
if( iStatus == STATUS_LEADER )
{
menu_additem( hMenu, "Ceteyi Dagit", "0" );
menu_additem( hMenu, "Liderligi Devret", "1" );
menu_additem( hMenu, "Yetkili Ekle", "4" );
menu_additem( hMenu, "Yetkili Kaldir", "5" );
}
menu_additem( hMenu, "Ceteden At", "2" );
menu_additem( hMenu, "Cete Adini Degistir", "3" );
menu_display( id, hMenu, 0 );
}
public LeaderMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
Cmd_Gang( id );
return PLUGIN_HANDLED;
}
new iAccess, hCallback, szData[ 6 ];
menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
switch( str_to_num( szData ) )
{
case 0:
{
ShowDisbandConfirmMenu( id );
}
case 1:
{
ShowTransferMenu( id );
}
case 2:
{
ShowKickMenu( id );
}
case 3:
{
client_cmd( id, "messagemode New_Name" );
}
case 4:
{
ShowAddAdminMenu( id );
}
case 5:
{
ShowRemoveAdminMenu( id );
}
}
return PLUGIN_HANDLED;
}
public ShowDisbandConfirmMenu( id )
{
new hMenu = menu_create( "Ceteyi dagitmak istediginizden emin misiniz ?", "DisbandConfirmMenu_Handler" );
menu_additem( hMenu, "Evet,Simdi Dagit", "0" );
menu_additem( hMenu, "Hayir", "1" );
menu_display( id, hMenu, 0 );
}
public DisbandConfirmMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
return PLUGIN_HANDLED;
new szData[ 6 ], iAccess, hCallback;
menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
switch( str_to_num( szData ) )
{
case 0:
{
ColorChat( id, NORMAL, "%s Basariyla cete dagitildi.", g_szPrefix );
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new iPlayer;
for( new i = 0; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( iPlayer == id )
continue;
if( g_iGang[ id ] != g_iGang[ iPlayer ] )
continue;
ColorChat( iPlayer, NORMAL, "%s Cete lider tarafindan dagitildi..", g_szPrefix );
set_user_gang( iPlayer, -1 );
}
new iGang = g_iGang[ id ];
set_user_gang( id, -1 );
ArrayDeleteItem( g_aGangs, iGang );
Cmd_Gang( id );
}
case 1: Cmd_Gang( id );
}
return PLUGIN_HANDLED;
}
public ShowTransferMenu( id )
{
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum, "e", "TERRORIST" );
new hMenu = menu_create( "Liderligi transfer etmek istedigini sec:", "TransferMenu_Handler" );
new szName[ 32 ], szData[ 6 ];
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer )
continue;
get_user_name( iPlayer, szName, charsmax( szName ) );
num_to_str( iPlayer, szData, charsmax( szData ) );
menu_additem( hMenu, szName, szData );
}
menu_display( id, hMenu, 0 );
}
public TransferMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
ShowLeaderMenu( id );
return PLUGIN_HANDLED;
}
new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback );
new iPlayer = str_to_num( szData );
if( !is_user_connected( iPlayer ) )
{
ColorChat( id, NORMAL, "%s Bu oyuncu artik bagli.", g_szPrefix );
ShowTransferMenu( id );
return PLUGIN_HANDLED;
}
set_user_gang( iPlayer, g_iGang[ id ], STATUS_LEADER );
set_user_gang( id, g_iGang[ id ], STATUS_ADMIN );
Cmd_Gang( id );
new iPlayers[ 32 ], iNum, iTemp;
get_players( iPlayers, iNum );
for( new i = 0; i < iNum; i++ )
{
iTemp = iPlayers[ i ];
if( iTemp == iPlayer )
{
ColorChat( iTemp, NORMAL, "%s Cetenin yeni lideri sensin.", g_szPrefix );
continue;
}
else if( g_iGang[ iTemp ] != g_iGang[ id ] )
continue;
ColorChat( iTemp, NORMAL, "%s ^03%s^01 Cetenin yeni lideri oldu..", g_szPrefix, szName );
}
return PLUGIN_HANDLED;
}
public ShowKickMenu( id )
{
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new hMenu = menu_create( "Cetenden Uye At:", "KickMenu_Handler" );
new szName[ 32 ], szData[ 6 ];
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer )
continue;
get_user_name( iPlayer, szName, charsmax( szName ) );
num_to_str( iPlayer, szData, charsmax( szData ) );
menu_additem( hMenu, szName, szData );
}
menu_display( id, hMenu, 0 );
}
public KickMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
ShowLeaderMenu( id );
return PLUGIN_HANDLED;
}
new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback );
new iPlayer = str_to_num( szData );
if( !is_user_connected( iPlayer ) )
{
ColorChat( id, NORMAL, "%s Bu oyuncu artik bagli", g_szPrefix );
ShowTransferMenu( id );
return PLUGIN_HANDLED;
}
set_user_gang( iPlayer, -1 );
Cmd_Gang( id );
new iPlayers[ 32 ], iNum, iTemp;
get_players( iPlayers, iNum );
for( new i = 0; i < iNum; i++ )
{
iTemp = iPlayers[ i ];
if( iTemp == iPlayer || g_iGang[ iTemp ] != g_iGang[ id ] )
continue;
ColorChat( iTemp, NORMAL, "%s ^03%s^01 Ceteden atildi.", g_szPrefix, szName );
}
ColorChat( iPlayer, NORMAL, "%s Ceteden atildiniz.", g_szPrefix, szName );
return PLUGIN_HANDLED;
}
public ChangeName_Handler( id )
{
if( g_iGang[ id ] == -1 || getStatus( id, g_iGang[ id ] ) == STATUS_MEMBER )
{
return;
}
new iGang = g_iGang[ id ];
new szArgs[ 64 ];
read_args( szArgs, charsmax( szArgs ) );
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new bool:bInGang[ 33 ];
new iStatus[ 33 ];
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ id ] != g_iGang[ iPlayer ] )
continue;
bInGang[ iPlayer ] = true;
iStatus[ iPlayer ] = getStatus( id, iGang );
set_user_gang( iPlayer, -1 );
}
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, iGang, aData );
aData[ GangName ] = szArgs;
ArraySetArray( g_aGangs, iGang, aData );
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( !bInGang[ iPlayer ] )
continue;
set_user_gang( iPlayer, iGang, iStatus[ id ] );
}
}
public ShowAddAdminMenu( id )
{
new iPlayers[ 32 ], iNum;
new szName[ 32 ], szData[ 6 ];
new hMenu = menu_create( "Oyuncuyu terfi et:", "AddAdminMenu_Handler" );
get_players( iPlayers, iNum );
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) > STATUS_MEMBER )
continue;
get_user_name( iPlayer, szName, charsmax( szName ) );
num_to_str( iPlayer, szData, charsmax( szData ) );
menu_additem( hMenu, szName, szData );
}
menu_display( id, hMenu, 0 );
}
public AddAdminMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( hMenu );
ShowLeaderMenu( id );
return PLUGIN_HANDLED;
}
new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback );
new iChosen = str_to_num( szData );
if( !is_user_connected( iChosen ) )
{
menu_destroy( hMenu );
ShowLeaderMenu( id );
return PLUGIN_HANDLED;
}
set_user_gang( iChosen, g_iGang[ id ], STATUS_LEADER );
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen )
continue;
ColorChat( iPlayer, NORMAL, "%s ^03%s ^01Cetenin yoneticisi atandi.", g_szPrefix, szName );
}
ColorChat( iChosen, NORMAL, "%s ^01Cetenin yoneticisi terfi edildi", g_szPrefix );
menu_destroy( hMenu );
return PLUGIN_HANDLED;
}
public ShowRemoveAdminMenu( id )
{
new iPlayers[ 32 ], iNum;
new szName[ 32 ], szData[ 6 ];
new hMenu = menu_create( "Alt sinifa indirmek istediginiz uyeyi secin:", "RemoveAdminMenu_Handler" );
get_players( iPlayers, iNum );
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) != STATUS_ADMIN )
continue;
get_user_name( iPlayer, szName, charsmax( szName ) );
num_to_str( iPlayer, szData, charsmax( szData ) );
menu_additem( hMenu, szName, szData );
}
menu_display( id, hMenu, 0 );
}
public RemoveAdminMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( hMenu );
ShowLeaderMenu( id );
return PLUGIN_HANDLED;
}
new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback );
new iChosen = str_to_num( szData );
if( !is_user_connected( iChosen ) )
{
menu_destroy( hMenu );
ShowLeaderMenu( id );
return PLUGIN_HANDLED;
}
set_user_gang( iChosen, g_iGang[ id ], STATUS_MEMBER );
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen )
continue;
ColorChat( iPlayer, NORMAL, "%s ^03%s ^01Cete yoneticiliginden dusuruldu.", g_szPrefix, szName );
}
ColorChat( iChosen, NORMAL, "%s ^01Cete yoneticiliginden dusuruldu.", g_szPrefix );
menu_destroy( hMenu );
return PLUGIN_HANDLED;
}
public ShowMembersMenu( id )
{
new szName[ 64 ], iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new hMenu = menu_create( "Online Uyeler:", "MemberMenu_Handler" );
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( g_iGang[ id ] != g_iGang[ iPlayer ] )
continue;
get_user_name( iPlayer, szName, charsmax( szName ) );
switch( getStatus( iPlayer, g_iGang[ id ] ) )
{
case STATUS_MEMBER:
{
add( szName, charsmax( szName ), " \r[Uye]" );
}
case STATUS_ADMIN:
{
add( szName, charsmax( szName ), " \r[Yetkili]" );
}
case STATUS_LEADER:
{
add( szName, charsmax( szName ), " \r[Yonetici]" );
}
}
menu_additem( hMenu, szName );
}
menu_display( id, hMenu, 0 );
}
public MemberMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( hMenu );
Cmd_Gang( id );
return PLUGIN_HANDLED;
}
menu_destroy( hMenu );
ShowMembersMenu( id )
return PLUGIN_HANDLED;
}
// Credits to Tirant from zombie mod and xOR from xRedirect
public LoadGangs()
{
new szConfigsDir[ 60 ];
get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );
add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" );
new iFile = fopen( szConfigsDir, "rt" );
new aData[ GangInfo ];
new szBuffer[ 512 ], szData[ 6 ], szValue[ 6 ], i, iCurGang;
while( !feof( iFile ) )
{
fgets( iFile, szBuffer, charsmax( szBuffer ) );
trim( szBuffer );
remove_quotes( szBuffer );
if( !szBuffer[ 0 ] || szBuffer[ 0 ] == ';' )
{
continue;
}
if( szBuffer[ 0 ] == '[' && szBuffer[ strlen( szBuffer ) - 1 ] == ']' )
{
copy( aData[ GangName ], strlen( szBuffer ) - 2, szBuffer[ 1 ] );
aData[ GangHP ] = 0;
aData[ GangStealing ] = 0;
aData[ GangGravity ] = 0;
aData[ GangStamina ] = 0;
aData[ GangWeaponDrop ] = 0;
aData[ GangDamage ] = 0;
aData[ GangKills ] = 0;
aData[ NumMembers ] = 0;
aData[ GangMembers ] = _:TrieCreate();
if( TrieKeyExists( g_tGangNames, aData[ GangName ] ) )
{
new szError[ 256 ];
formatex( szError, charsmax( szError ), "[GAREZ] Zaten bir cete var: %s", aData[ GangName ] );
set_fail_state( szError );
}
ArrayPushArray( g_aGangs, aData );
TrieSetCell( g_tGangNames, aData[ GangName ], iCurGang );
log_amx( "Gang Created: %s", aData[ GangName ] );
iCurGang++;
continue;
}
strtok( szBuffer, szData, 31, szValue, 511, '=' );
trim( szData );
trim( szValue );
if( TrieGetCell( g_tGangValues, szData, i ) )
{
ArrayGetArray( g_aGangs, iCurGang - 1, aData );
switch( i )
{
case VALUE_HP:
aData[ GangHP ] = str_to_num( szValue );
case VALUE_STEALING:
aData[ GangStealing ] = str_to_num( szValue );
case VALUE_GRAVITY:
aData[ GangGravity ] = str_to_num( szValue );
case VALUE_STAMINA:
aData[ GangStamina ] = str_to_num( szValue );
case VALUE_WEAPONDROP:
aData[ GangWeaponDrop ] = str_to_num( szValue );
case VALUE_DAMAGE:
aData[ GangDamage ] = str_to_num( szValue );
case VALUE_KILLS:
aData[ GangKills ] = str_to_num( szValue );
}
ArraySetArray( g_aGangs, iCurGang - 1, aData );
}
}
new Array:aSQL;
sqlv_read_all_ex( g_hVault, aSQL );
new aVaultData[ SQLVaultEntryEx ];
new iGang;
for( i = 0; i < ArraySize( aSQL ); i++ )
{
ArrayGetArray( aSQL, i, aVaultData );
if( TrieGetCell( g_tGangNames, aVaultData[ SQLVEx_Key2 ], iGang ) )
{
ArrayGetArray( g_aGangs, iGang, aData );
TrieSetCell( aData[ GangMembers ], aVaultData[ SQLVEx_Key1 ], str_to_num( aVaultData[ SQLVEx_Data ] ) );
aData[ NumMembers ]++;
ArraySetArray( g_aGangs, iGang, aData );
}
}
fclose( iFile );
}
public SaveGangs()
{
new szConfigsDir[ 64 ];
get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );
add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" );
if( file_exists( szConfigsDir ) )
delete_file( szConfigsDir );
new iFile = fopen( szConfigsDir, "wt" );
new aData[ GangInfo ];
new szBuffer[ 256 ];
for( new i = 0; i < ArraySize( g_aGangs ); i++ )
{
ArrayGetArray( g_aGangs, i, aData );
formatex( szBuffer, charsmax( szBuffer ), "[%s]^n", aData[ GangName ] );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "HP=%i^n", aData[ GangHP ] );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "Hirsizlik=%i^n", aData[ GangStealing ] );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "Yer Cekimi=%i^n", aData[ GangGravity ] );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "Dayaniklilik=%i^n", aData[ GangStamina ] );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "Silah Dusurme=%i^n", aData[ GangWeaponDrop ] );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "Hasar=%i^n", aData[ GangDamage ] );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "Oldurmeler=%i^n^n", aData[ GangKills ] );
fputs( iFile, szBuffer );
}
fclose( iFile );
}
set_user_gang( id, iGang, iStatus=STATUS_MEMBER )
{
new szAuthID[ 35 ];
get_user_authid( id, szAuthID, charsmax( szAuthID ) );
new aData[ GangInfo ];
if( g_iGang[ id ] > -1 )
{
ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
TrieDeleteKey( aData[ GangMembers ], szAuthID );
aData[ NumMembers ]--;
ArraySetArray( g_aGangs, g_iGang[ id ], aData );
sqlv_remove_ex( g_hVault, szAuthID, aData[ GangName ] );
}
if( iGang > -1 )
{
ArrayGetArray( g_aGangs, iGang, aData );
TrieSetCell( aData[ GangMembers ], szAuthID, iStatus );
aData[ NumMembers ]++;
ArraySetArray( g_aGangs, iGang, aData );
sqlv_set_num_ex( g_hVault, szAuthID, aData[ GangName ], iStatus );
}
g_iGang[ id ] = iGang;
return 1;
}
get_user_gang( id )
{
new szAuthID[ 35 ];
get_user_authid( id, szAuthID, charsmax( szAuthID ) );
new aData[ GangInfo ];
for( new i = 0; i < ArraySize( g_aGangs ); i++ )
{
ArrayGetArray( g_aGangs, i, aData );
if( TrieKeyExists( aData[ GangMembers ], szAuthID ) )
return i;
}
return -1;
}
getStatus( id, iGang )
{
if( !is_user_connected( id ) || iGang == -1 )
return STATUS_NONE;
new aData[ GangInfo ];
ArrayGetArray( g_aGangs, iGang, aData );
new szAuthID[ 35 ];
get_user_authid( id, szAuthID, charsmax( szAuthID ) );
new iStatus;
TrieGetCell( aData[ GangMembers ], szAuthID, iStatus );
return iStatus;
}
/* Fun functions
*
* by Numb
*
* This file is provided as is (no warranties).
*/
#if defined _colorchat_included
#endinput
#endif
#define _colorchat_included
enum Color
{
NORMAL = 1, // clients scr_concolor cvar color
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
new message[256];
switch(type)
{
case NORMAL: // clients scr_concolor cvar color
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
new team, ColorChange, index, MSG_Type;
if(id)
{
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}
ShowColorMessage(id, type, message[])
{
static bool:saytext_used;
static get_user_msgid_saytext;
if(!saytext_used)
{
get_user_msgid_saytext = get_user_msgid("SayText");
saytext_used = true;
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used)
{
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
message_begin(type, get_user_msgid_teaminfo, _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}
return 0;
}
FindPlayer()
{
new i = -1;
while(i <= get_maxplayers())
{
if(is_user_connected(++i))
return i;
}
return -1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
MawiŞ*
deniyorum
knk birde bunu jb modundan çıkartırmısınız acaba
Knk 5 tane hata çıktı.
hlds de deniyorum orda komut ekranında kopyala yapıştır yok denermisin acaba sen compile edip bakarmısın
knk birde bunu jb modundan çıkartırmısınız acaba
Knk 5 tane hata çıktı.
hlds de deniyorum orda komut ekranında kopyala yapıştır yok denermisin acaba sen compile edip bakarmısın
Son Düzenleme: 26-07-2020, 17:10, Düzenleyen: Muhammet Bulut.
(26-07-2020, 17:07)Muhammet Bulut Adlı Kullanıcıdan Alıntı: deniyorum
knk birde bunu jb modundan çıkartırmısınız acaba
Bu eklentiyi en son 2016 yılında kullanmışdı bi arkadaşım sanırım büyük eklenti aynı zamanda bu jb ye özel olmaması gerek fun bir eklenti isminde jb yazıyor yazmasına bakma özellikleri ona göredir ancak çok cvar vardı sanki çoğunu cvar eklemişlerdir uğraşırsan düzenlersin sadece cvardan ancak eklentide değişiklik yapacak zamanım yok üzgünüm
MawiŞ*
(26-07-2020, 17:07)Muhammet Bulut Adlı Kullanıcıdan Alıntı: deniyorumhttps://forums.alliedmods.net/showthread.php?t=169907
knk birde bunu jb modundan çıkartırmısınız acaba
Knk 5 tane hata çıktı.
hlds de deniyorum orda komut ekranında kopyala yapıştır yok denermisin acaba sen compile edip bakarmısın
buradaki .inc dosyalarını sunucuna kur
MawiŞ*
tamam kurup haber vericem
knk eklentide 26 tane hata var dediğim gibi komut ekranında oldugu için kopyalayamıyorum ne yapmam lazım
knk eklentide 26 tane hata var dediğim gibi komut ekranında oldugu için kopyalayamıyorum ne yapmam lazım
Son Düzenleme: 26-07-2020, 17:16, Düzenleyen: Muhammet Bulut.
)


