Acest plugin a fost inceput dupa versiunea lui cyby .
Acest plugin nu va putea functiona fara modulul SpecialGeoIp !
Nu mai pun poze , hudu este exact ca la Zombie OutStanding si cum era fostu fury.csout aka furien.kzh !
Si in ultimu meu rand vreau sa le multumesc celor ce m-au ajutat si sustinut in tot acest timp , bafta in tot ce veti mai face.
Descarcare: Aveti mai jos sursa.
Nume: System Credits MYSQL - ^OutStanding Production's^ -
Versiune: 2.3beta ( final version )
Autor: Cyby , Sprit3x , Fantasy & hattrick
Instalare:
1. Fisierul nume_plugin.sma il puneti in addons/amxmodx/scripting
2. Fisierul nume_plugin.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
Code: Select all
nume_plugin.amxx
Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):
- amx_comanda VALOARE - descrierea comenzii respective
amx_comanda 20 - descrierea comenzii respective
amx_comanda X - orice alta comanda de care dispune pluginul respectiv
- amx_comanda nume/parte_din_nume - descrierea comenzii respective
amx_credits valoare - poti da credite jucatorului X
- /rules - afiseaza regulile
/depozit
/retrage
/points - aceasta comanda va ducea pe o pagina web (script) care datea la jucatori points direct dupa site [ Nu mai stau sa o scot , modificati voi in ce vreti ]
- CStrike
- Fun
- fakemeta
- hamsandwich
- sqlx
- csx
- SpecialGeoip
- | Afiseaza codul
#include amxmodx #include amxmisc #include cstrike #include fakemeta #include hamsandwich #include sqlx #include csx #include SpecialGeoip #define TASK_PRESENTS 1337 #define TASK_SHOWHUD 2674 #define ID_PRESENTS (TaskIndex - TASK_PRESENTS) #define ID_SHOWHUD (TaskIndex - TASK_SHOWHUD) // Variabile new credite[33], killuri[33], MesajSync, MesajSync2 new Handle:g_Tuple = Empty_Handle, g_Error[512], g_Errcd = 0; // Cvaruri new cvar_bplant, cvar_bexp, cvar_bdef, cvar_crdammount, cvar_bonus, cvar_killneed, cvar_how_much, cvar_donate, cvar_hudenable, cvar_firstkill // Constante new const cfgfile[] = "fm_credits.cfg" new const TAG[] = "[ CSOutStanding ]" new const logcommand[] = "fmcredits_command.log" new const logfile[] = "fmcredits_donate.log" new bool:g_bFirstKillWasMade = false, g_iMaxPlayers public plugin_init() { register_plugin("Depozit Nou Bani", "2.3beta", "Sprit3x") // Register Commands register_clcmd("say /retrage", "retrage") register_clcmd("say /depozit", "depoziteaza") register_clcmd("say /credite", "credits") register_clcmd("say /points", "motdcredite"); register_concmd("amx_credits", "cmdGive", ADMIN_IMMUNITY, "<nume sau #userid> [credite]") // Hook Commands register_clcmd("say", "donare_say") register_clcmd("say_team", "donare_say") // Register Ham RegisterHam(Ham_Killed, "player", "player_killed") register_event("HLTV", "ev_NewRound", "a", "1=0", "2=0") // Register Cvars cvar_bplant = register_cvar("credits_bplant_reward", "5") cvar_bexp = register_cvar("credits_bexp_reward", "5") cvar_bdef = register_cvar("credits_bdef_reward", "5") cvar_crdammount = register_cvar("credits_event_reward", "3") cvar_bonus = register_cvar("credits_bonuskills", "25") cvar_killneed = register_cvar("credits_killsneed", "10") cvar_how_much = register_cvar("credits_excvalue", "16000") cvar_donate = register_cvar("credits_donate", "1") cvar_hudenable = register_cvar("credits_hudstats", "1") cvar_firstkill = register_cvar("credits_firstkill", "1") // Register Messages MesajSync = CreateHudSyncObj() MesajSync2 = CreateHudSyncObj() g_iMaxPlayers = get_maxplayers() register_message(get_user_msgid("SayText"), "message") g_Tuple = SQL_MakeDbTuple("127.0.0.1:3306", "vuser104", "imiplacecucurigu", "vuser104"); if (g_Tuple != Empty_Handle) { SQL_ThreadQuery(g_Tuple, "IgnoreHandle", "CREATE TABLE IF NOT EXISTS points (name TEXT, pts NUMERIC)"); } set_task(59.0, "Task_Autosave", 0xAC, .flags = "b"); } public plugin_cfg() { new cfgdir[32] get_configsdir(cfgdir, charsmax(cfgdir)) server_cmd("exec %s/%s", cfgdir, cfgfile) } public motdcredite(Client) show_motd(Client, "http://csoutstanding...ver/fury/points", "Points Motd"); public ev_NewRound() g_bFirstKillWasMade = false; public plugin_end() { SQL_FreeHandle(g_Tuple) } public plugin_natives() { register_native("fm_get_credits", "get_credits", 1) register_native("fm_set_credits", "set_credits", 1) } public client_putinserver(id) { static szName[32], szTemp[512]; get_user_name(id, szName, 31); replace_all(szName, sizeof(szName) - 1, "'", "*"); replace_all(szName, sizeof(szName) - 1, "`", "*"); replace_all(szName, sizeof(szName) - 1, "^"", "*"); if (is_user_bot(id) || is_user_hltv(id)) { credite[id] = killuri[id] = 0; return -1; } credite[id] = killuri[id] = 0; set_task(1.0, "MesajHUD", id+TASK_SHOWHUD, .flags = "b") set_task(60.0, "da_credite", id+TASK_PRESENTS, .flags = "b") new Data[1] Data[0] = id formatex(szTemp, 511, "SELECT * FROM points WHERE name = '%s' LIMIT 1", szName) SQL_ThreadQuery(g_Tuple, "register_clpoints", szTemp, Data, 1); return 1; } public Task_Autosave() { for (new i = 1; i <= g_iMaxPlayers; i++) { if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i)) { static szName[32], szTemp[512]; get_user_name(i, szName, 31); replace_all(szName, sizeof(szName) - 1, "'", "*"); replace_all(szName, sizeof(szName) - 1, "`", "*"); replace_all(szName, sizeof(szName) - 1, "^"", "*"); formatex(szTemp, 511, "UPDATE points SET pts = %d WHERE name = '%s'", credite, szName); SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp); } } } public client_disconnect(id) { remove_task(id+TASK_SHOWHUD); remove_task(id+TASK_PRESENTS); static szName[32], szTemp[512], Handle:c, Handle:q; get_user_name(id, szName, 31); replace_all(szName, sizeof(szName) - 1, "'", "*"); replace_all(szName, sizeof(szName) - 1, "`", "*"); replace_all(szName, sizeof(szName) - 1, "^"", "*"); c = SQL_Connect(g_Tuple, g_Errcd, g_Error, 511); formatex(szTemp, 511, "UPDATE points SET pts = %d WHERE name = '%s'", credite[id], szName); q = SQL_PrepareQuery(c, szTemp); SQL_Execute(q); SQL_FreeHandle(q); SQL_FreeHandle©; killuri[id] = credite[id] = 0; } public register_clpoints(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if(FailState == TQUERY_CONNECT_FAILED) log_amx("Load - Nu ma pot conecta la baza de date. [%d] %s", Errcode, Error); else if(FailState == TQUERY_QUERY_FAILED) log_amx("Nu pot face Query-ul in baza de date. [%d] %s", Errcode, Error); new id; id = Data[0]; if(SQL_NumResults(Query) < 1) { new szName[32], szTemp[512]; get_user_name(id, szName, 31); replace_all(szName, sizeof(szName) - 1, "'", "*"); replace_all(szName, sizeof(szName) - 1, "`", "*"); replace_all(szName, sizeof(szName) - 1, "^"", "*"); formatex(szTemp, 511, "INSERT INTO points VALUES ('%s', 0)", szName); SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp); credite[id]=0; } else credite[id] = SQL_ReadResult(Query, 1); } public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { SQL_FreeHandle(Query) return PLUGIN_HANDLED; } public message() { new arg[32] get_msg_arg_string(2, arg, 31) if(containi(arg,"name")!=-1) { return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public client_infochanged(id) { new newname[32],oldname[32] get_user_info(id, "name", newname,31) get_user_name(id,oldname,31) if(!is_user_connected(id) || is_user_bot(id)) return PLUGIN_CONTINUE if(!equali(newname, oldname)) { set_user_info(id,"name",oldname) client_print(id , print_console , "[CSOutStanding] Prohibition of nick change!") return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public bomb_planted(id) { new nume[32]; get_user_name(id, nume, 31) credite[id] += get_pcvar_num(cvar_bplant) color(0, ".v%s.e %s.g a primit.e %d.g credite pentru plantarea bombei.", TAG, nume, get_pcvar_num(cvar_bplant)) } public bomb_explode(id) { new nume[32]; get_user_name(id, nume, 31) credite[id] += get_pcvar_num(cvar_bexp) color(0, ".v%s.e %s.g a primit.e %d.g credite pentru ca a explodat bomba.", TAG, nume, get_pcvar_num(cvar_bexp)) } public bomb_defused(id) { new nume[32]; get_user_name(id, nume, 31) credite[id] += get_pcvar_num(cvar_bdef) color(0, ".v%s.e %s.g a primit.e %d.g credite pentru ca a dezamorsat bomba.", TAG, nume, get_pcvar_num(cvar_bdef)) } public da_credite(TaskIndex) { color(ID_PRESENTS, ".v%s.g Ai primit.e %d credite.g pentru ca ai jucat.e 1 .gminut.", TAG, get_pcvar_num(cvar_crdammount)) color(ID_PRESENTS, ".v%s.g Continua sa joci si primesti .e credite .gcontinuu.", TAG) credite[ID_PRESENTS] += get_pcvar_num(cvar_crdammount) } public donare_say(id) { new citim_mesaj[64] read_args(citim_mesaj, charsmax(citim_mesaj)) remove_quotes(citim_mesaj) new comanda[16] new nume[32] strbreak(citim_mesaj, comanda, charsmax(comanda), nume, charsmax(nume)) if(equal(comanda, "/donate", 7)) if (get_pcvar_num(cvar_donate)) donate(id, nume) else color(id, ".v%s.g Functia de donate este indisponibila.", TAG) } public donate(id, arg[]) { new cui[32], count[10] strbreak(arg, cui, 31, count, 9) if (!(get_user_flags(id) & ADMIN_RESERVATION)) { color(id, ".v%s.g Comanda poate fi folosita de catre cei cu grad .v slot+", TAG) return } if (!cui[0] || !count[0]) { color(id, ".v%s.g Comanda se foloseste sub forma urmatoare:.e /donate nume credite.g.", TAG) return } new credite_trimise = credite[id] new credite2 if (equal(count, "all")) credite2 = credite_trimise else credite2 = str_to_num(count) if (credite2 <= 0) { color(id, ".v%s.g Valoarea introdusa de tine este invalida.", TAG) return } credite_trimise -= credite2 if (credite_trimise < 0) { credite2 += credite_trimise credite_trimise = 0 } new primitor = cmd_target(id, cui, (CMDTARGET_ALLOW_SELF)) if (!primitor || primitor == id) { color(id, ".v%s.g %s.g nu exista pe server.", TAG, cui) return } credite[primitor] += credite2 credite[id] = credite_trimise new tNume[32], pNume[32] get_user_name(id, tNume, 31) get_user_name(primitor, pNume, 31) color(0, ".v%s.g %s.g ii trimite lui.e %s %d.g credite", TAG, tNume, pNume, credite2) log_to_file(logfile, "Playerul %s ii trimite %d credite lui %s", tNume, credite2, pNume) } public retrage(id) { if(credite[id] > 0) { new bani = get_pcvar_num(cvar_how_much); if(cs_get_user_money(id) >= 16000) { color(id, ".v[%s].g Ai deja.e 16000$.g si nu poti retrage.", TAG) } else if(cs_get_user_money(id) + bani < 16000) { cs_set_user_money(id, cs_get_user_money(id) + bani) credite[id]-- color(id, ".v[%s].g Ai retras 1 credit, adica.e %d$.g . Acum ai.e %d$.g", TAG, bani, cs_get_user_money(id)) } else if(cs_get_user_money(id) + bani >= 16000) { cs_set_user_money(id, 16000) credite[id]-- color(id, ".v[%s].g Ai retras 1 credit, adica.e %d$.g. Acum ai.e %d$.g", TAG, bani, cs_get_user_money(id)) } } else { color(id, ".v[%s].g Nu ai deloc credite.", TAG) } return PLUGIN_HANDLED; } public depoziteaza(id) { if(cs_get_user_money(id) >= get_pcvar_num(cvar_how_much)) { credite[id]++ cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(cvar_how_much)) color(id, ".v[%s].g Ai depozitat un credit. Ai.e %d.g credite.", TAG, credite[id]) } else { color(id, ".v[%s].g Iti trebuie %d$ pentru a putea depozita un credit.", TAG, get_pcvar_num(cvar_how_much)) } return PLUGIN_HANDLED; } public credits(id) { color(id, ".v[%s].g Ai.e %d.g credite.", TAG, credite[id]) return PLUGIN_HANDLED; } public cmdGive(id, level, cid) { if(!cmd_access(id, level, cid, 3)) { return PLUGIN_HANDLED; } new arg[32], name[32]; read_argv(1, arg, 31) get_user_name(id, name, 31) new jucator = cmd_target(id, arg, 31) if(!jucator) { return PLUGIN_HANDLED } if(!is_user_connected(id) || !is_user_connected(jucator)) { return PLUGIN_HANDLED } new cant[4], name2[32]; get_user_name(jucator, name2, 31) read_argv(2, cant, 3) new creditss = str_to_num(cant) credite[jucator] += creditss color(0, ".v%s.g Adminul.e %s.g ii daruie lui.e %s %d.g credite.", TAG, name, name2, creditss) log_to_file(logcommand, "Adminul %s ii da lui %s %d credite.", name, name2, creditss) return PLUGIN_HANDLED; } public get_credits(id) return is_user_connected(id) ? credite[id] : -1; public set_credits(id, cantitate) return is_user_connected(id) ? (credite[id] = cantitate) : -1; public player_killed(victima, atacator) { if(victima == atacator || !is_user_connected(atacator) || !is_user_connected(victima)) return 1; if(killuri[atacator] > 9) { killuri[atacator] = 0 credite[atacator] += get_pcvar_num(cvar_bonus) color(atacator, ".v%s.g Ai primit.e %d credite.g pentru acumularea a.e 10 ucideri.g. Joaca bine.", TAG, get_pcvar_num(cvar_bonus)) } if (get_pcvar_num(cvar_firstkill)) { if( ( 1 <= atacator <= g_iMaxPlayers ) && atacator != victima ) { if( cs_get_user_team( atacator ) == CS_TEAM_T && !g_bFirstKillWasMade ) { g_bFirstKillWasMade = true; credite[atacator] += 5; static szKillerName[ 32 ], szVictimName[ 32 ]; get_user_name( atacator, szKillerName, sizeof ( szKillerName ) -1 ); get_user_name( victima, szVictimName, sizeof ( szVictimName ) -1 ); set_hudmessage( 0, 255, 255, -1.0, 0.30, 0, 0.0, 4.5, 0.0, 0.0, -1 ); ShowSyncHudMsg( 0, MesajSync2, "[T] %s made first frag on %s^n and recived 5 credits !", szKillerName, szVictimName ); } else if( cs_get_user_team( atacator ) == CS_TEAM_CT && !g_bFirstKillWasMade ) { g_bFirstKillWasMade = true; credite[atacator] += 5; static szKillerName[ 32 ], szVictimName[ 32 ]; get_user_name( atacator, szKillerName, sizeof ( szKillerName ) -1 ); get_user_name( victima, szVictimName, sizeof ( szVictimName ) -1 ); set_hudmessage( 0, 255, 255, -1.0, 0.30, 0, 0.0, 4.5, 0.0, 0.0, -1 ); ShowSyncHudMsg( 0, MesajSync2, "[CT] %s made first frag on %s^n and recived 5 credits !", szKillerName, szVictimName ); } } } killuri[atacator]++ return 1; } public MesajHUD(TaskIndex) { static id id = ID_SHOWHUD; if (!is_user_alive(id)) { id = pev(id, pev_iuser2) if(!is_user_alive(id)) return; } if (get_pcvar_num(cvar_hudenable)) { if(id != ID_SHOWHUD) { new nume[32], szcountry[128], szcity[128]; get_user_name(id, nume, 31) GetClientGeoData(id, CountryName, szcountry, 127) GetClientGeoData(id, City, szcity, 127) set_hudmessage(0, 100, 250, -1.0, 0.85, 0, 6.0, 1.1, 0.0, 0.0, -1) ShowSyncHudMsg(ID_SHOWHUD, MesajSync, "Spectating %s^nHP: %d - Credits: %d - Kill for bonus: [%d/%d]^nFrom: %s , %s", nume, pev(id, pev_health), credite[id], killuri[id], get_pcvar_num(cvar_killneed), szcountry, szcity) } else { set_hudmessage(0, 100, 250, 0.01, 0.92, 0, 6.0, 1.1, 0.0, 0.0, -1) ShowSyncHudMsg(ID_SHOWHUD, MesajSync, "HP: %d | Credits: %d | Kill for bonus: [%d/%d]", pev(ID_SHOWHUD, pev_health), credite[ID_SHOWHUD], killuri[ID_SHOWHUD], get_pcvar_num(cvar_killneed)) } } } color(const id, const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, 190, input, 3) replace_all(msg, 190, ".v", "^4") replace_all(msg, 190, ".g", "^1") replace_all(msg, 190, ".e", "^3") if (id) players[0] = id; else get_players(players, count, "ch") { for (new i = 0; i < count; i++) { if (is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players) write_byte(players); write_string(msg); message_end(); } } } }