Kod: Tümünü seç
#include <amxmodx>
//#include <colorchat>
#include <fakemeta>
#include <engine>
#include <xs>
#include <nvault>
#include <cstrike>
#define VERSION "1.0.1"
#define MaxPlayers 33
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,_}:...)
{
if( !get_playersnum() ) return;
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;
}
new TotalAchievements[33]
new iTotalAchievements = 13
new gVault
new const szAchievementSound[] = "Achievements/AchievementReach.wav"
enum _:iAchCount {
DIES, // Olum Ustasi
SPRAYS, // Sprey Ustasi
KILLS, // Hapishane Kirici
CONNECT, // Cevrim İci
HEADSHOT, // HeadShot Ustasi
KNIFE, // Bicak Ustasi
DISTANCE, // Kosucu
SURVIVE, // Hayatta Kal
GRENADE, // Bomba Ustasi
USP, // USP Ustasi
GLOCK, // Glock Ustasi
SNEAKY, // Sinsilik Ustasi
DEAGLE // Deagle Ustasi
}
new const iAchPoints[iAchCount] = {
250, // Olum Belirleme
100, // Sprey Belirleme
600, // Hapishane Belirleme
1, // Çevrimiçi Belirleme
500, // Headshot Belirleme
500, // AWP Belirleme
3, // Kosu Belirleme
100, // Hayatta Kal Belirleme
30, // Bomba Ustasi
1000, // USP Belirleme
1000, // Glock Belirleme
100, // Sinsilik Belirleme
200 // Deagle Belirleme
}
new iAchLevel[MaxPlayers][iAchCount]
new const Float:vecNullOrigin[3]
new Float:flDistance[MaxPlayers]
new Float:vecOldOrigin[MaxPlayers][3]
new Float:g_iFeet = 35.0
public plugin_init() {
register_plugin("CS ~ GO | Basarim Sistemi", VERSION, "NapoleoN#+comolokko + JustWatch")
// Commands
register_clcmd("say /bs", "Cmd_ShowAchievements")
register_clcmd("say /basarimlar", "Cmd_ShowAchievements")
// Events
register_event("DeathMsg", "eDeath", "a")
register_event("23", "player_spray", "a", "1=112")
register_event("SendAudio", "TerrorWins", "a", "2=%!MRAD_terwin")
// Fakemeta
register_forward(FM_CmdStart, "CmdStart")
// nVault
}
public plugin_cfg()
{
// Vault plugin_cfg() publicinde açılır.
gVault = nvault_open("AchievementSystem")
if ( gVault == INVALID_HANDLE )
set_fail_state( "Vault Dosyasi Acilamadi !" );
}
public plugin_end()
{
nvault_close( gVault );
}
public plugin_natives()
{
register_library("AchievementsNatives")
register_native("get_user_achievements", "_get_achievements")
register_native("set_user_achievements", "_set_achievements")
}
public _get_achievements(id) {
return TotalAchievements[get_param(1)]
}
public _set_achievements(id, Achievements) {
new iPlayer = get_param(1)
TotalAchievements[iPlayer] = max(0, get_param(2))
if(TotalAchievements[iPlayer] > 13) {
return PLUGIN_HANDLED
}
return TotalAchievements[iPlayer]
}
public plugin_precache() {
precache_sound(szAchievementSound)
}
public TerrorWins() {
new players[32], count
get_players(players, count, "ae", "TERRORIST")
if(count == 1) {
new id = players[0]
iAchLevel[id][SURVIVE]++
if(iAchLevel[id][SURVIVE] == 100) {
TotalAchievements[id]++
ColorChat(id, GREEN, "-")
SaveData(id)
}
}
}
public client_putinserver(id) {
iAchLevel[id][CONNECT]++
switch(iAchLevel[id][CONNECT]) {
case 500: {
set_task(2.0, "ReachAddict", id) // Avoid playing the sound and printing the message to early.
}
}
LoadData(id)
}
public ReachAddict(id) {
TotalAchievements[id]++
ColorChat(id, GREEN, "-")
emit_sound(id, CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
public eDeath() {
new iClip, iAmmo, iWeapon = get_user_weapon(read_data(1), iClip, iAmmo)
static weapon[8]
read_data(4, weapon, charsmax(weapon))
if(is_user_alive(read_data(1))) {
iAchLevel[read_data(1)][KILLS]++
}
if(read_data(3)) {
iAchLevel[read_data(1)][HEADSHOT]++ // 1.SİLAH
}
if(iWeapon == CSW_AWP) {
iAchLevel[read_data(1)][KNIFE]++ // 2.SİLAH
}
if(iWeapon == CSW_KNIFE) {
iAchLevel[read_data(1)][GRENADE]++ // 7.SİLAH
}
if(iWeapon == CSW_AK47) {
iAchLevel[read_data(1)][USP]++ // 3.SİLAH
}
if(iWeapon == CSW_M4A1) {
iAchLevel[read_data(1)][GLOCK]++ // 4.SİLAH
}
if(iWeapon == CSW_DEAGLE) {
iAchLevel[read_data(1)][DEAGLE]++ // 5.SİLAH
}
if(get_user_weapon(read_data(2)) == CSW_AWP && iWeapon == CSW_KNIFE) {
iAchLevel[read_data(1)][SNEAKY]++
}
iAchLevel[read_data(2)][DIES]++
switch(iAchLevel[read_data(2)][DIES]) {
case 500: {
TotalAchievements[read_data(2)]++
ColorChat(read_data(2), GREEN, "-")
emit_sound(read_data(2), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(2))
}
}
switch(iAchLevel[read_data(1)][KILLS]) {
case 1000: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "-")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
switch(iAchLevel[read_data(1)][HEADSHOT]) {
case 20: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "[Basarimlar]^1 Tebrikler! Bir basarinin kilidini actin:^4 HeadShot ~ Ustasi")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
switch(iAchLevel[read_data(1)][KNIFE]) {
case 100: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "[Basarimlar]^1 Tebrikler! Bir basarinin kilidini actin:^4 AWP ~ Ustasi")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
switch(iAchLevel[read_data(1)][GRENADE]) {
case 50: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "[Basarimlar]^1 Tebrikler! Bir basarinin kilidini actin:^4 Bicak ~ Ustasi")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
switch(iAchLevel[read_data(1)][USP]) {
case 250: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "[Basarimlar]^1 Tebrikler! Bir basarinin kilidini actin:^4 AK47 ~ Ustasi")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
switch(iAchLevel[read_data(1)][GLOCK]) {
case 250: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "[Basarimlar]^1 Tebrikler! Bir basarinin kilidini actin:^4 M4A1 ~ Ustasi")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
switch(iAchLevel[read_data(1)][SNEAKY]) {
case 100: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "-")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
switch(iAchLevel[read_data(1)][DEAGLE]) {
case 250: {
TotalAchievements[read_data(1)]++
ColorChat(read_data(1), GREEN, "[Basarimlar]^1 Tebrikler! Bir basarinin kilidini actin:^4 DEAGLE ~ Ustasi")
emit_sound(read_data(1), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(1))
}
}
}
public player_spray() {
iAchLevel[read_data(2)][SPRAYS]++
switch(iAchLevel[read_data(2)][SPRAYS]) {
case 1000: {
TotalAchievements[read_data(2)]++
ColorChat(read_data(2), GREEN, "-")
emit_sound(read_data(2), CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
SaveData(read_data(2))
}
}
}
public Cmd_ShowAchievements(id) {
new szTemp[500 char]
formatex(szTemp, charsmax(szTemp), "CS ~ GO | Basarim Menusu ^nUpdate : Just ` Watch ~ Bilal", TotalAchievements[id], iTotalAchievements)
new menu = menu_create(szTemp, "Ach_Handler")
if ( iAchLevel[id][HEADSHOT] >= iAchPoints[HEADSHOT] ) {
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wHeadShot Ustasi \y[\r GOREV TAMAMLANDI \y]")
}
else
{
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wHeadShot Ustasi \y[\r %i \w/ \r%i \y]", iAchLevel[id][HEADSHOT], iAchPoints[HEADSHOT])
}
menu_additem(menu, szTemp, "1")
if ( iAchLevel[id][KNIFE] >= iAchPoints[KNIFE] ) {
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wAWP Ustasi \y[\r GOREV TAMAMLANDI \y]")
}
else
{
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wAWP Ustasi \y[\r %i \w/ \r%i \y]", iAchLevel[id][KNIFE], iAchPoints[KNIFE])
}
menu_additem(menu, szTemp, "2")
if ( iAchLevel[id][USP] >= iAchPoints[USP] ) {
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wAK47 Ustasi \y[\r GOREV TAMAMLANDI \y]")
}
else
{
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wAK47 Ustasi \y[\r %i \w/ \r%i \y]", iAchLevel[id][USP], iAchPoints[USP])
}
menu_additem(menu, szTemp, "3")
if ( iAchLevel[id][GLOCK] >= iAchPoints[GLOCK] ) {
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wM4A1 Ustasi \y[\r GOREV TAMAMLANDI \y]")
}
else
{
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wM4A1 Ustasi \y[\r %i \w/ \r%i \y]", iAchLevel[id][GLOCK], iAchPoints[GLOCK])
}
menu_additem(menu, szTemp, "4")
if ( iAchLevel[id][DEAGLE] >= iAchPoints[DEAGLE] ) {
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wDeagle Ustasi \y[\r GOREV TAMAMLANDI \y]")
}
else
{
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wDeagle Ustasi \y[\r %i \w/ \r%i \y]", iAchLevel[id][DEAGLE], iAchPoints[DEAGLE])
}
menu_additem(menu, szTemp, "5")
if ( iAchLevel[id][GRENADE] >= iAchPoints[GRENADE] ) {
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wBicak Ustasi \y[\r GOREV TAMAMLANDI \y]")
}
else
{
formatex(szTemp, charsmax(szTemp), "\y[\r D ~ T \y] \r- \wBicak Ustasi \y[\r %i \w/ \r%i \y]", iAchLevel[id][GRENADE], iAchPoints[GRENADE])
}
menu_additem(menu, szTemp, "6")
menu_display(id, menu)
}
public Ach_Handler(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item) {
case 0: {
ColorChat(id, GREEN, "[Basarimlar]^1 Ulasmak icin^3 %i^1 kez kafadan vur ve^4 kilidi ac!", iAchPoints[HEADSHOT])
ColorChat(id, GREEN, "[Basarimlar]^3 %i/%i.", iAchLevel[id][HEADSHOT], iAchPoints[HEADSHOT])
}
case 1: {
ColorChat(id, GREEN, "[Basarimlar]^1 Ulasmak icin^3 %i^1 kez AWP ile vur ve^4 kilidi ac!", iAchPoints[KNIFE])
ColorChat(id, GREEN, "[Basarimlar]^3 %i/%i.", iAchLevel[id][KNIFE], iAchPoints[KNIFE])
}
case 2: {
ColorChat(id, GREEN, "[Basarimlar]^1 Ulasmak icin^3 %i^1 kez AK47 ile vur ve^4 kilidi ac!", iAchPoints[USP])
ColorChat(id, GREEN, "[Basarimlar]^3 %i/%i.", iAchLevel[id][USP], iAchPoints[USP])
}
case 3: {
ColorChat(id, GREEN, "[Basarimlar]^1 Ulasmak icin^3 %i^1 kez M4A1 ile vur ve^4 kilidi ac!", iAchPoints[GLOCK])
ColorChat(id, GREEN, "[Basarimlar]^3 %i/%i.", iAchLevel[id][GLOCK], iAchPoints[GLOCK])
}
case 4: {
ColorChat(id, GREEN, "[Basarimlar]^1 Ulasmak icin^3 %i^1 kez Deagle ile vur ve^4 kilidi ac!", iAchPoints[DEAGLE])
ColorChat(id, GREEN, "[Basarimlar]^3 %i/%i.", iAchLevel[id][DEAGLE], iAchPoints[DEAGLE])
}
case 5: {
ColorChat(id, GREEN, "[Basarimlar]^1 Ulasmak icin^3 %i^1 kez bicakla oldur ve^4 kilidi ac!", iAchPoints[GRENADE])
ColorChat(id, GREEN, "[Basarimlar]^3 %i/%i.", iAchLevel[id][GRENADE], iAchPoints[GRENADE])
}
}
return PLUGIN_HANDLED
}
public CmdStart(id) {
if(!is_user_alive(id)) {
return FMRES_IGNORED
}
if(iAchLevel[id][DISTANCE] <= 2) {
new Float:vecOrigin[ 3 ]
entity_get_vector( id, EV_VEC_origin, vecOrigin )
if(!xs_vec_equal(vecOldOrigin[id], vecNullOrigin)) {
flDistance[id] += get_distance_f(vecOrigin, vecOldOrigin[id])
}
xs_vec_copy(vecOrigin, vecOldOrigin[id])
switch(iAchLevel[id][DISTANCE]) {
case 0: {
if(flDistance[id] / g_iFeet >= 1)
{
iAchLevel[id][DISTANCE]++
ColorChat(id, GREEN, "Tum Basarimlari Tamamlayana Adminlik Hediyemizdir.")
emit_sound(id, CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM )
SaveData(id)
}
}
case 1: {
if(flDistance[id] / g_iFeet >= 5280) {
iAchLevel[id][DISTANCE]++
ColorChat(id, GREEN, "Tum Basarimlari Tamamlayana Adminlik Hediyemizdir.")
emit_sound(id, CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM )
SaveData(id)
}
}
case 2: {
if(flDistance[id] / g_iFeet >= 52800) {
iAchLevel[id][DISTANCE]++
TotalAchievements[id]++
ColorChat(id, GREEN, "Tum Basarimlari Tamamlayana Adminlik Hediyemizdir.")
emit_sound(id, CHAN_STATIC, szAchievementSound, 1.0, ATTN_NORM, 0, PITCH_NORM )
SaveData(id)
}
}
}
}
return FMRES_IGNORED
}
stock bool:is_user_steam(id)
{
static dp_pointer;
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}
new szAuthid[34];
get_user_authid(id, szAuthid, charsmax(szAuthid));
return (containi(szAuthid, "LAN") < 0);
}
public client_disconnected(id)
{
SaveData(id)
}
public client_connected(id)
{
LoadData(id)
}
public SaveData(id)
{
if(is_user_steam(id))
{
new SteamID[32];
new vaultdata[256] , iPos
get_user_authid(id, SteamID, charsmax(SteamID))
iPos = num_to_str(TotalAchievements[id], vaultdata, charsmax(vaultdata))
vaultdata[iPos++] = ' '
for(new i; i < iAchCount; i++) {
iPos += formatex(vaultdata[iPos], charsmax(vaultdata) - iPos, "%i ", iAchLevel[id][i])
}
nvault_set(gVault, SteamID, vaultdata)
}
else
{
new szName[32]
get_user_name(id, szName, 31)
new vaultdata[256] , iPos
iPos = num_to_str(TotalAchievements[id], vaultdata, charsmax(vaultdata))
vaultdata[iPos++] = ' '
for(new i; i < iAchCount; i++) {
iPos += formatex(vaultdata[iPos], charsmax(vaultdata) - iPos, "%i ", iAchLevel[id][i])
}
nvault_set(gVault, szName, vaultdata)
}
}
public LoadData(id)
{
if(is_user_steam(id))
{
new SteamID[35];
new vaultdata[256], szVal[6]
get_user_authid(id, SteamID, charsmax(SteamID))
nvault_get(gVault, SteamID, vaultdata, charsmax(vaultdata))
argbreak(vaultdata, szVal, charsmax(szVal), vaultdata, charsmax(vaultdata ))
TotalAchievements[id] = str_to_num(szVal)
for(new i; i < iAchCount; i++) {
argbreak(vaultdata, szVal , charsmax(szVal) , vaultdata , charsmax(vaultdata))
iAchLevel[id][i] = str_to_num(szVal)
}
}
else
{
new szName[32]
get_user_name(id, szName, 31)
new vaultdata[256], szVal[6]
nvault_get(gVault, szName, vaultdata, charsmax(vaultdata))
argbreak(vaultdata, szVal, charsmax(szVal), vaultdata, charsmax(vaultdata ))
TotalAchievements[id] = str_to_num(szVal)
for(new i; i < iAchCount; i++)
{
argbreak(vaultdata, szVal , charsmax(szVal) , vaultdata , charsmax(vaultdata))
iAchLevel[id][i] = str_to_num(szVal)
}
}
}
bir dene . eger olmassa bos bir zamanimda sadelestirip plugini temizleyecegim.
cunki kayit islemlerinde sorun yok.