herkeste aynı spray pluginde hata
PHP- Kodu:
/*
///////////////////////////////////////////////////////////////////////
//-------------------- CUSTOM SPRAY MANAGEMENT ----------------------//
///////////////////////////////////////////////////////////////////////
//------------------------- BY -=_|R0CK|_=- -------------------------//
///////////////////////////////////////////////////////////////////////
cspray_customtype <0, 1 ,2, 3, 4>
0 = Block All Sprays for Everyone
1 = Custom Sprays Enabled For Everyone
2 = Custom Sprays Enabled For Admins Disabled for others
3 = Custom Sprays Enabled For Chosen Ones Disabled for others(amx_allowspray <name>)
4 = Custom Sprays Disabled For Everyone (Same Logo)
cspray_distannouce <0, 1>
0 = Distance Checker + AnnounceType Disabled
1 = Distance Checker + AnnounceType Enabled
cspray_distannoucetype <0, 1>
0 = All Will able to see distance between spray and ground if any one sprays
1 = Only sprayer will be able to see distance of its own spray
cspray_timeinterval <time>
time = Will set time interval between two sprays by a user
cspray_disallowtype <1, 0> (when amx_disallowspray has been used on a user)
0 = the users custom spray is blocked only
1 = the users spray is fully blocked
Admin Commands :-
amx_allowspray <name> <time> (will allow the person to use his own spray When Spray_CustomType = 2, 3, 4)
amx_disallowspray <name> (will block the person's spray When Spray_CustomType = 1, 3)
*/
////////////////////////////////////////////////////////
//-------------------- INCLUDES ----------------------//
////////////////////////////////////////////////////////
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <colorchat>
#include <xs>
///////////////////////////////////////////////////////
//-------------------- DEFINES ----------------------//
///////////////////////////////////////////////////////
#define PLUGIN "Custom Spray Management"
#define VERSION "1.7"
#define AUTHOR "-=_|R0CK|_=-"
#define PREFIX "^x03[CS Management]^x04"
#define FLAGS_SPRAY ADMIN_RCON
#define SetCustomSpray(%1) (set_pdata_int(%1, 485, 1)) //m_nCustomFrames = 485
#define ClearCustomSpray(%1) (set_pdata_int(%1, 485, -1)) //m_nCustomFrames = 485
#define CustomSprayTime(%1,%2) (set_pdata_int(%1, 486, %2)) // m_flNextDecalTime (time interval for a single user) = 486
///////////////////////////////////////////////////////
//--------------------CONSTANTS----------------------//
///////////////////////////////////////////////////////
new bool: gp_IsSprayAllowed[33]
new bool: gp_IsSprayBlocked[33]
new gp_LastSpray[33]
new gp_SprayTime[33]
new gp_ConfigFile[128]
new gp_CustomSpray
new gp_SprayDistType
new gp_SprayDist
new gp_SprayInterval
new gp_BlockType
new Trie:gp_SprayBanned
///////////////////////////////////////////////////////
//--------------------- BRAIN -----------------------//
///////////////////////////////////////////////////////
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary_colored("spraymanagement.txt")
gp_CustomSpray = register_cvar("cspray_customtype","1")
gp_SprayDist = register_cvar("cspray_distannouce","0")
gp_SprayDistType = register_cvar("cspray_distannouceType","0")
gp_SprayInterval = register_cvar("cspray_timeinterval", "30")
gp_BlockType = register_cvar("cspray_disallowtype", "0")
register_clcmd("amx_allowspray", "Admin_AllowSpray", FLAGS_SPRAY)
register_clcmd("amx_disallowspray", "Admin_DisallowSpray", FLAGS_SPRAY)
register_logevent("FirstRound", 2, "0=World triggered", "1&Restart_Round_")
register_logevent("FirstRound", 2, "0=World triggered", "1=Game_Commencing")
RegisterHam(Ham_Spawn, "player", "Ham_Playerspawn", 1)
register_event("23", "Event_Spray", "a", "1=112" )
register_impulse(201, "impulse_201")
}
////////////////////////////////////////////////////////
//------------------ FIRST ROUND ---------------------//
////////////////////////////////////////////////////////
public FirstRound()
{
server_cmd("sv_allowupload 1")
server_cmd("sv_allowdownload 1")
}
////////////////////////////////////////////////////////
//----------------- CLIENT CONNECT -------------------//
////////////////////////////////////////////////////////
public client_authorized(id)
{
new gp_AuthId[35]
get_user_authid(id, gp_AuthId, charsmax(gp_AuthId))
if(TrieKeyExists(gp_SprayBanned, gp_AuthId))
gp_IsSprayBlocked[id] = true
}
////////////////////////////////////////////////////////
//------------------ CLIENT SPAWN --------------------//
////////////////////////////////////////////////////////
public Ham_Playerspawn(id)
{
if(!is_user_connected(id))
return HAM_IGNORED
if(gp_IsSprayBlocked[id])
{
ClearCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_DIS_ONE")
}
else
{
switch(get_pcvar_num(gp_CustomSpray))
{
case 0:
{
SetCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_BLOCKED")
}
case 2:
{
if(access(id, FLAGS_SPRAY))
{
SetCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_ENABLED_ADMIN")
}
else
{
ClearCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_DIS_ONE")
}
}
case 3:
{
if(gp_IsSprayAllowed[id])
{
SetCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_ENABLED_ONE")
}
else
{
ClearCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_DIS_ONE")
}
}
case 4:
{
ClearCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_DISABLED")
}
default:
{
SetCustomSpray(id)
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_ENABLED")
}
}
}
if(!gp_IsSprayAllowed[id])
gp_SprayTime[id] = get_pcvar_num(gp_SprayInterval)
return HAM_IGNORED
}
////////////////////////////////////////////////////////
//----------------- ADMIN COMMANDS -------------------//
////////////////////////////////////////////////////////
public Admin_AllowSpray(id)
{
static player, user[32], Utime[21], TotalTime
if(!access(id, FLAGS_SPRAY))
return PLUGIN_HANDLED
read_argv(1, user, charsmax(user))
read_argv(2, Utime, charsmax(Utime))
player = cmd_target(id, user, 2)
TotalTime = str_to_num(Utime)
if(!is_user_connected(player))
return PLUGIN_HANDLED
if(!access(player, FLAGS_SPRAY) || id == player)
{
SetCustomSpray(player)
gp_IsSprayAllowed[player] = true
gp_IsSprayBlocked[player] = false
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_ENABLED_ONE")
Remove_SprayBan(player)
if(TotalTime > 0)
gp_SprayTime[player] = TotalTime
}
return PLUGIN_HANDLED
}
public Admin_DisallowSpray(id)
{
static player, user[32]
if(!access(id, FLAGS_SPRAY))
return PLUGIN_HANDLED
read_argv(1, user, charsmax(user))
player = cmd_target(id, user, 2)
if(!is_user_connected(player))
return PLUGIN_HANDLED
if(!access(player, FLAGS_SPRAY) || id == player)
{
ClearCustomSpray(player)
gp_IsSprayAllowed[player] = false
gp_IsSprayBlocked[player] = true
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_DIS_ONE")
Save_SprayBan(player)
gp_SprayTime[player] = get_pcvar_num(gp_SprayInterval)
}
return PLUGIN_HANDLED
}
///////////////////////////////////////////////////////
//----------------- SPRAY CONTROL -------------------//
///////////////////////////////////////////////////////
public impulse_201(id)
{
if(!get_pcvar_num(gp_CustomSpray) || (get_pcvar_num(gp_BlockType) && gp_IsSprayBlocked[id]))
{
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_BLOCKED")
return PLUGIN_HANDLED
}
else
{
if(get_systime() - gp_LastSpray[id] < gp_SprayTime[id])
{
ColorChat(id, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_RECHARGE", (gp_SprayTime[id] - (get_systime() - gp_LastSpray[id])))
return PLUGIN_HANDLED
}
gp_LastSpray[id] = get_systime()
CustomSprayTime(id, gp_SprayTime[id])
}
return PLUGIN_CONTINUE
}
////////////////////////////////////////////////////////
//----------------- SPRAY DISTANCE -------------------//
////////////////////////////////////////////////////////
//------------------ BY:- Exolent --------------------//
////////////////////////////////////////////////////////
public Event_Spray()
{
if(!get_pcvar_num(gp_SprayDist))
return PLUGIN_CONTINUE
new iOrigin[3]
iOrigin[0] = read_data(3)
iOrigin[1] = read_data(4)
iOrigin[2] = read_data(5)
new Float:vecSprayOrigin[3]
IVecFVec(iOrigin, vecSprayOrigin)
new iPlayer = read_data(2)
new Float:vecPlayerOrigin[3]
get_user_origin( iPlayer, iOrigin, 1)
IVecFVec( iOrigin, vecPlayerOrigin )
new Float:vecDirection[3]
xs_vec_sub( vecSprayOrigin, vecPlayerOrigin, vecDirection)
xs_vec_mul_scalar( vecDirection, 10.0 / vector_length(vecDirection), vecDirection)
new Float:vecStop[3]
xs_vec_add( vecSprayOrigin, vecDirection, vecStop )
xs_vec_mul_scalar( vecDirection, -1.0, vecDirection )
new Float:vecStart[3]
xs_vec_add( vecSprayOrigin, vecDirection, vecStart )
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 )
get_tr2( 0, TR_vecPlaneNormal, vecDirection )
vecDirection[2] = 0.0
xs_vec_mul_scalar( vecDirection, 5.0 / vector_length(vecDirection), vecDirection)
xs_vec_add( vecSprayOrigin, vecDirection, vecStart )
xs_vec_copy( vecStart, vecStop )
vecStop[2] -= 9999.0
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 )
get_tr2( 0, TR_vecEndPos, vecStop )
new Float: spray_dist = vecStart[2] - vecStop[2]
new szName[32]
get_user_name( iPlayer, szName, charsmax(szName))
if(get_pcvar_num(gp_SprayDistType))
ColorChat(iPlayer, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_DIST_UNITS", szName, spray_dist)
else
ColorChat(0, RED, "%s %L", PREFIX, LANG_SERVER,"SPRAY_DIST_UNITS", szName, spray_dist)
return PLUGIN_CONTINUE
}
/////////////////////////////////////////////////////////
//----------------- SAVING BAN FILE -------------------//
/////////////////////////////////////////////////////////
public Save_SprayBan(id)
{
new gp_BannedName[33], gp_BannedId[35], gp_Saveline[128], iFile = fopen(gp_ConfigFile, "a+")
if(!iFile) return
get_user_name(id, gp_BannedName, charsmax(gp_BannedName))
get_user_authid(id, gp_BannedId, charsmax(gp_BannedId))
formatex(gp_Saveline, charsmax(gp_Saveline), "^"%s^" ^"%s^"^n", gp_BannedId, gp_BannedName)
fprintf(iFile, gp_Saveline)
fclose(iFile)
}
public Remove_SprayBan(id)
{
new gp_BannedId[35], iFile = fopen(gp_ConfigFile, "a+")
if(!iFile) return
new szData[128], line
get_user_authid(id, gp_BannedId, charsmax(gp_BannedId))
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
parse(szData, szData, charsmax(szData))
if(equal(szData, gp_BannedId))
{
write_file(gp_ConfigFile, "", line)
}
line++
}
fclose(iFile)
}
///////////////////////////////////////////////////////
//----------------- LOAD BAN FILE -------------------//
///////////////////////////////////////////////////////
public plugin_precache()
{
new gp_Config[128]
get_localinfo("amxx_configsdir", gp_Config, charsmax(gp_Config))
formatex(gp_ConfigFile, charsmax(gp_ConfigFile), "%s/CS_BannedUsers.ini", gp_Config)
if(!file_exists(gp_ConfigFile))
{
write_file(gp_ConfigFile, ";Custom Spray Management", 0)
write_file(gp_ConfigFile, ";Credits to -=_|R0CK|_=- ^n", 1)
return
}
new iFile = fopen(gp_ConfigFile, "rt")
if(!iFile) return
new szData[128], szKey[35]
gp_SprayBanned = TrieCreate()
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
trim(szData)
if(!szData[0] || szData[0] == ';' || szData[0] == ' ' ) continue
parse(szData, szKey, charsmax(szKey))
TrieSetCell(gp_SprayBanned, szKey, 1)
}
fclose(iFile)
}
////////////////////////////////////////////////////////
//------------------- PLUGIN END ---------------------//
////////////////////////////////////////////////////////
public plugin_end()
{
TrieDestroy(gp_SprayBanned)
}
arkadaşlar bu plugini herkeste aynı spray çıkması icin kullanıyorum. yani herkes spray yaptıgı zaman eski valve logosu cıkıyo ufak olan. oyuzden kullanyıorum fakat bi bug var. Normalde serverda "decalfrequency 60" ve spray 1 kere bastıgım zaman 60 saniye sonra yenisini basabılıyoruz yada adam vurdugumuzda yeni spray basabiliyoruz. yada her el başı yeni spray basabiliyoruz fakat bu plugini kullandıgımda orada "cspray_timeinterval "23" yazıyo mesela. 23 saniyede bir spray basabilecegimi gösteriyo bu. ve adam vursamda yeni round başlasada 23 saniye dolmadan yeni spray basamıyoruz. Bunu nasıl fixlerim ? orjinal haline cevirirm yardım ederseniz sevinirim.
Cevap: herkeste aynı spray pluginde hata
PHP- Kodu:
/*
///////////////////////////////////////////////////////////////////////
//-------------------- CUSTOM SPRAY MANAGEMENT ----------------------//
///////////////////////////////////////////////////////////////////////
//------------------------- BY -=_|R0CK|_=- -------------------------//
///////////////////////////////////////////////////////////////////////
cspray_customtype <0, 1 ,2, 3, 4>
0 = Block All Sprays for Everyone
1 = Custom Sprays Enabled For Everyone
2 = Custom Sprays Enabled For Admins Disabled for others
3 = Custom Sprays Enabled For Chosen Ones Disabled for others(amx_allowspray <name>)
4 = Custom Sprays Disabled For Everyone (Same Logo)
cspray_distannouce <0, 1>
0 = Distance Checker + AnnounceType Disabled
1 = Distance Checker + AnnounceType Enabled
cspray_distannoucetype <0, 1>
0 = All Will able to see distance between spray and ground if any one sprays
1 = Only sprayer will be able to see distance of its own spray
cspray_timeinterval <time>
time = Will set time interval between two sprays by a user
cspray_disallowtype <1, 0> (when amx_disallowspray has been used on a user)
0 = the users custom spray is blocked only
1 = the users spray is fully blocked
Admin Commands :-
amx_allowspray <name> <time> (will allow the person to use his own spray When Spray_CustomType = 2, 3, 4)
amx_disallowspray <name> (will block the person's spray When Spray_CustomType = 1, 3)
*/
////////////////////////////////////////////////////////
//-------------------- INCLUDES ----------------------//
////////////////////////////////////////////////////////
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
///////////////////////////////////////////////////////
//-------------------- DEFINES ----------------------//
///////////////////////////////////////////////////////
#define PLUGIN "Custom Spray Management"
#define VERSION "1.7"
#define AUTHOR "-=_|R0CK|_=-"
#define PREFIX "^x03[CS Management]^x04"
#define FLAGS_SPRAY ADMIN_RCON
#define SetCustomSpray(%1) (set_pdata_int(%1, 485, 1)) //m_nCustomFrames = 485
#define ClearCustomSpray(%1) (set_pdata_int(%1, 485, -1)) //m_nCustomFrames = 485
#define CustomSprayTime(%1,%2) (set_pdata_int(%1, 486, %2)) // m_flNextDecalTime (time interval for a single user) = 486
///////////////////////////////////////////////////////
//--------------------CONSTANTS----------------------//
///////////////////////////////////////////////////////
new bool: gp_IsSprayAllowed[33]
new bool: gp_IsSprayBlocked[33]
new gp_LastSpray[33]
new gp_SprayTime[33]
new gp_ConfigFile[128]
new gp_CustomSpray
new gp_SprayDistType
new gp_SprayDist
new gp_SprayInterval
new gp_BlockType
new Trie:gp_SprayBanned
///////////////////////////////////////////////////////
//--------------------- BRAIN -----------------------//
///////////////////////////////////////////////////////
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
gp_CustomSpray = register_cvar("cspray_customtype","1")
gp_SprayDist = register_cvar("cspray_distannouce","0")
gp_SprayDistType = register_cvar("cspray_distannouceType","0")
gp_SprayInterval = register_cvar("cspray_timeinterval", "30")
gp_BlockType = register_cvar("cspray_disallowtype", "0")
register_clcmd("amx_allowspray", "Admin_AllowSpray", FLAGS_SPRAY)
register_clcmd("amx_disallowspray", "Admin_DisallowSpray", FLAGS_SPRAY)
register_logevent("FirstRound", 2, "0=World triggered", "1&Restart_Round_")
register_logevent("FirstRound", 2, "0=World triggered", "1=Game_Commencing")
register_logevent("RoundStart", 2, "0=World triggered", "1=Round_Start")
RegisterHam(Ham_Spawn, "player", "Ham_Playerspawn", 1)
RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled", 1)
register_event("23", "Event_Spray", "a", "1=112" )
register_impulse(201, "impulse_201")
}
public FirstRound()
{
server_cmd("sv_allowupload 1")
server_cmd("sv_allowdownload 1")
}
public RoundStart() {
new players[32],inum;
get_players(players,inum)
for(new i = 0;i < inum; i++) {
gp_LastSpray[i] = get_systime() - get_pcvar_num(gp_SprayInterval);
CustomSprayTime(i, gp_SprayTime[i])
}
}
public client_authorized(id)
{
new gp_AuthId[35]
get_user_authid(id, gp_AuthId, charsmax(gp_AuthId))
if(TrieKeyExists(gp_SprayBanned, gp_AuthId))
gp_IsSprayBlocked[id] = true
}
public Ham_Playerspawn(id)
{
if(!is_user_connected(id))
return HAM_IGNORED
gp_SprayTime[id] = get_pcvar_num(gp_SprayInterval) ;
if(gp_IsSprayBlocked[id])
{
ClearCustomSpray(id)
}
else
{
switch(get_pcvar_num(gp_CustomSpray))
{
case 0:
{
SetCustomSpray(id)
}
case 2:
{
if(access(id, FLAGS_SPRAY))
{
SetCustomSpray(id)
}
else
{
ClearCustomSpray(id)
}
}
case 3:
{
if(gp_IsSprayAllowed[id])
{
SetCustomSpray(id)
}
else
{
ClearCustomSpray(id)
}
}
case 4:
{
ClearCustomSpray(id)
}
default:
{
SetCustomSpray(id)
}
}
}
if(!gp_IsSprayAllowed[id]) {
gp_LastSpray[id] = get_systime() - get_pcvar_num(gp_SprayInterval);
CustomSprayTime(id, gp_SprayTime[id])
}
return HAM_IGNORED
}
public Ham_PlayerKilled(victim, attacker, shouldgib) {
if(is_user_connected(attacker)) {
gp_LastSpray[attacker] = get_systime() - get_pcvar_num(gp_SprayInterval);
CustomSprayTime(attacker, gp_SprayTime[attacker])
}
}
public Admin_AllowSpray(id)
{
static player, user[32], Utime[21], TotalTime
if(!access(id, FLAGS_SPRAY))
return PLUGIN_HANDLED
read_argv(1, user, charsmax(user))
read_argv(2, Utime, charsmax(Utime))
player = cmd_target(id, user, 2)
TotalTime = str_to_num(Utime)
if(!is_user_connected(player))
return PLUGIN_HANDLED
if(!access(player, FLAGS_SPRAY) || id == player)
{
SetCustomSpray(player)
gp_IsSprayAllowed[player] = true
gp_IsSprayBlocked[player] = false
Remove_SprayBan(player)
if(TotalTime > 0)
gp_SprayTime[player] = TotalTime
}
return PLUGIN_HANDLED
}
public Admin_DisallowSpray(id)
{
static player, user[32]
if(!access(id, FLAGS_SPRAY))
return PLUGIN_HANDLED
read_argv(1, user, charsmax(user))
player = cmd_target(id, user, 2)
if(!is_user_connected(player))
return PLUGIN_HANDLED
if(!access(player, FLAGS_SPRAY) || id == player)
{
ClearCustomSpray(player)
gp_IsSprayAllowed[player] = false
gp_IsSprayBlocked[player] = true
Save_SprayBan(player)
gp_SprayTime[player] = get_pcvar_num(gp_SprayInterval)
}
return PLUGIN_HANDLED
}
public impulse_201(id)
{
if(!get_pcvar_num(gp_CustomSpray) || (get_pcvar_num(gp_BlockType) && gp_IsSprayBlocked[id]))
{
return PLUGIN_HANDLED
}
else
{
if(get_systime() - gp_LastSpray[id] < gp_SprayTime[id])
{
return PLUGIN_HANDLED
}
gp_LastSpray[id] = get_systime()
CustomSprayTime(id, gp_SprayTime[id])
}
return PLUGIN_CONTINUE
}
public Event_Spray()
{
if(!get_pcvar_num(gp_SprayDist))
return PLUGIN_CONTINUE
new iOrigin[3]
iOrigin[0] = read_data(3)
iOrigin[1] = read_data(4)
iOrigin[2] = read_data(5)
new Float:vecSprayOrigin[3]
IVecFVec(iOrigin, vecSprayOrigin)
new iPlayer = read_data(2)
new Float:vecPlayerOrigin[3]
get_user_origin( iPlayer, iOrigin, 1)
IVecFVec( iOrigin, vecPlayerOrigin )
new Float:vecDirection[3]
xs_vec_sub( vecSprayOrigin, vecPlayerOrigin, vecDirection)
xs_vec_mul_scalar( vecDirection, 10.0 / vector_length(vecDirection), vecDirection)
new Float:vecStop[3]
xs_vec_add( vecSprayOrigin, vecDirection, vecStop )
xs_vec_mul_scalar( vecDirection, -1.0, vecDirection )
new Float:vecStart[3]
xs_vec_add( vecSprayOrigin, vecDirection, vecStart )
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 )
get_tr2( 0, TR_vecPlaneNormal, vecDirection )
vecDirection[2] = 0.0
xs_vec_mul_scalar( vecDirection, 5.0 / vector_length(vecDirection), vecDirection)
xs_vec_add( vecSprayOrigin, vecDirection, vecStart )
xs_vec_copy( vecStart, vecStop )
vecStop[2] -= 9999.0
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 )
get_tr2( 0, TR_vecEndPos, vecStop )
return PLUGIN_CONTINUE
}
public Save_SprayBan(id)
{
new gp_BannedName[33], gp_BannedId[35], gp_Saveline[128], iFile = fopen(gp_ConfigFile, "a+")
if(!iFile) return
get_user_name(id, gp_BannedName, charsmax(gp_BannedName))
get_user_authid(id, gp_BannedId, charsmax(gp_BannedId))
formatex(gp_Saveline, charsmax(gp_Saveline), "^"%s^" ^"%s^"^n", gp_BannedId, gp_BannedName)
fprintf(iFile, gp_Saveline)
fclose(iFile)
}
public Remove_SprayBan(id)
{
new gp_BannedId[35], iFile = fopen(gp_ConfigFile, "a+")
if(!iFile) return
new szData[128], line
get_user_authid(id, gp_BannedId, charsmax(gp_BannedId))
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
parse(szData, szData, charsmax(szData))
if(equal(szData, gp_BannedId))
{
write_file(gp_ConfigFile, "", line)
}
line++
}
fclose(iFile)
}
public plugin_precache()
{
new gp_Config[128]
get_localinfo("amxx_configsdir", gp_Config, charsmax(gp_Config))
formatex(gp_ConfigFile, charsmax(gp_ConfigFile), "%s/CS_BannedUsers.ini", gp_Config)
if(!file_exists(gp_ConfigFile))
{
write_file(gp_ConfigFile, ";Custom Spray Management", 0)
write_file(gp_ConfigFile, ";Credits to Shakespeare ^n", 1)
return
}
new iFile = fopen(gp_ConfigFile, "rt")
if(!iFile) return
new szData[128], szKey[35]
gp_SprayBanned = TrieCreate()
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
trim(szData)
if(!szData[0] || szData[0] == ';' || szData[0] == ' ' ) continue
parse(szData, szKey, charsmax(szKey))
TrieSetCell(gp_SprayBanned, szKey, 1)
}
fclose(iFile)
}
Cevap: herkeste aynı spray pluginde hata
acaba ne kısmını düzelttin tek bi kod ise buradan yazma imkanın varmı ? maç botunun içinde düzelteyim bende direk canberkcim
Cevap: herkeste aynı spray pluginde hata
Roundstart ve Ham_Killed eventlerini ekledim.
Roundstart, Ham_Killed ve Ham_Spawn eventlerine ;
en son ne zaman spreye basıldıgını içinde unix-time(tarihin saniyeye çevrilmiş hali) olarak barındırılan degiskenden, cvardaki interval süresini çıkarttım. Örneğin interval ayarı 23 diyelim. Ve en son spreye 567823892. zamanda basıldı. Bu zamandan 23 saniyeyi eksilttim. Böylece sayaç 0 lanmış oldu :) Biraz karmaşık. Direk ekleyebileceğini sanmam. Tek bir kod değil gördüğün gibi
Cevap: herkeste aynı spray pluginde hata
anladım ben tümden değiştirdim emeğine eline sağlık kardeşim hakkını ödeyemem.
---------- Alttaki Mesaj Zamani 22:30 ---------- Önceki Mesaj Zamani 22:26 ----------
birde bu az önce get_user_authid ile ilgili bişeyler sormuştum. Ben amx_banteam T ve amx_banteam Ct gibi komutlar kullanıyorum. onun altına o verdigin komutları ekledim fakat bu sefer de mesela ben CT takımındayım. /bant komutu uyguluyorum terör takımına ban atsın diye. kimseye ban atmıyor direk bana ban atıyo. yada Terördeyim diyelim /banct diyorum ct yi banlayacagına direk bana ban atıyo. yani ekledigim bi kodda yanlışlık var sanırsam benim steamid mi alıp banliste ekliyo ban atılacak oyuncularınkini değil. kodu yazıyorum acaba nerde yanlışım var gösterirmisin.
PHP- Kodu:
public CmdBanCT (id, level, cid) {
if( !cmd_access( id, level, cid, 1 ) )
return PLUGIN_HANDLED;
client_cmd(id,"amx_banteam CT 0 1")
new authid[32]
get_user_authid(id, authid, 31)
new surem[32]
read_argv( 1, surem, 31 );
new sure = str_to_num(surem);
server_cmd("banid %d %s kick;writeid",sure, authid)
new ipa[32]
get_user_ip(id, ipa, 31, 1)
server_cmd("addip %d %s;writeip",sure,ipa)
server_cmd("writeid;writeip")
return PLUGIN_HANDLED;
}
Cevap: herkeste aynı spray pluginde hata
get_user_authid(id, authid, 31)
Komutu kullanan kişi = id
Steamid sini aldığın kişi = id
dolayısıyla komutu kullanan banlanır :)
Ayrıca bu publicin registeri ni de at. cmd_access de de hata yapıyorsun galiba.
Cevap: herkeste aynı spray pluginde hata
PHP- Kodu:
register_concmd("sch_bant","CmdBanT", ADMIN_CVAR)
register_concmd("sch_banct","CmdBanCT", ADMIN_CVAR)
register_concmd("sch_banspec","CmdBanS", ADMIN_CVAR)
register_concmd("sch_banall","CmdBanAll", ADMIN_CVAR)
bunlar register yerleri fakat ben buralarda hata oldugunu sanmıyorum çünkü dedigin gibi
get_user_authid(id, authid, 31) de id kısmında komutu ben kullandıgım icin id beni göruyo bana ban atıyo :)) o yuzden ona playerları tanıtmamız gerektigi kanısındayım ama sen daha iyi bilirsin tabi :)
Cevap: herkeste aynı spray pluginde hata
PHP- Kodu:
if( !cmd_access( id, level, cid, 1 ) )
return PLUGIN_HANDLED;
Son parametreye 1 yazmışsın. Oyleyse sure tanıtmamalıydın. Sureyi sabitlemeliydin. Süreyi konsoldan girebileyim dersen buraya 2 yazmalısın çünkü komutla birlikte bir de süre parametresi olduğundan 2 olmalı.
PHP- Kodu:
client_cmd(id,"amx_banteam CT 0 1")
Bu ne için anlam veremedim :)
PHP- Kodu:
public CmdBanCT (id, level, cid) {
if( !cmd_access( id, level, cid, 1 ) )
return PLUGIN_HANDLED;
new
authid[32],
players[32],
ip[32],
inum;
get_players(players,inum,"e","CT") // CT deki Oyunculari Bul.
for(new i=0;i<inum;i++) { // Tum CT Oyunculari Icin Döngü başlat.
get_user_authid(players[i],authid,31)
get_user_ip(players[i], ip, 31, 1)
server_cmd("banid 0 %s kick;writeid", authid)
server_cmd("addip 0 %s;writeip",ip)
}
server_cmd("writeid;writeip")
return PLUGIN_HANDLED;
}
Bu da en doğru yöntem :)
Cevap: herkeste aynı spray pluginde hata
açıkcası o 1 diye tanımlamışın dedigini ben tanımlamadım, netten ban team plugini buldum onu editlemiştim :) hemen plugini yapıp deniyorum haber vericem
---------- Alttaki Mesaj Zamani 23:09 ---------- Önceki Mesaj Zamani 22:52 ----------
kodlarda bi sıkıntı yok fakat steamid leri bu sefer hiç yazmıyo :) listip.cfg ye oyuncularin ip lerini yazıyo fakat banned.cfg de steamid ler yazılmıyo ? oyuncuların steamid lerini cekmiyo demekki ne yapmalı
Cevap: herkeste aynı spray pluginde hata
Ne diyeyim çok ilginç :) Writeip çalışıyorsa writeid de çalışmalı. O zaman sadece amx_banteam CT kodunu dene, öyle yaptığında çalışıyorsa ?