-
Posts
283 -
Joined
-
Last visited
CoSmiN is now Offline -
Days Won
7
CoSmiN last won the day on June 20 2019
CoSmiN had the most liked content!
Reputation
31 ExcellentAbout CoSmiN
-
Rank
Newbie
Personal Information
-
Sex
Male
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
.:: sNd ::. started following CoSmiN
-
SORIN.BORSEC started following CoSmiN
-
CoSmiN changed their profile photo
-
Pasul 1: Intra in consola, scrie status, muta click-ul pe numele player-ului pe care vrei sa-l dai afara/sa-l banezi. Langa numele lui este scris un numar: Pasul 2: Copiaza numarul respectiv si scrie in consola alaturi de "#" si numarul respectiv: Rezultat: *Acest tutorial ajuta mai mult adminii care vor sa dea afara un player pe care nu-l poti da afara scriind-ui numele in consola.
-
Salut. Astazi o sa va prezint toate cele 3 metode de a decompila un plugin care dau roade cu ultima versiune de AMX Mod X. O sa iau fiecare metoda pe rand, de la cea mai usoara, pana la cea mai dificila. Am pus diferite pluginuri pentru fiecare metoda pentru ca decompilerele nu sunt "universale" (exemplu: un plugin poate nu merge sa fie decompilat prin metoda 1, asa ca puteti folosi metoda 2 sau 3). Ca o paranteza, nu exista "metoda" care sa decompileze si sa arate 100% pluginul (poti doar sa-l editezi pana la un anumit punct cu metoda 2 si 3). Si bineinteles, pentru ca metoda de a decompila exista, exista si metoda de anti-decompilare, adica introducerea unui anumit cod in sursa care sa impiedice decompilarea pluginului. Hai sa incepem: 1. Lysis: Post original: Lysis Descarcare: MediaFire Pasi: 1. Intram in folderul "Lysis". 2. Avem fisierul compilat "target_info.amxx". Tinem apasat cu mouse-ul pe el si il ducem in fisierul "LysisDecompile.exe" (il deschidem cu LysisDecompile). 3. O sa va apara un fisier text cu acelasi nume al pluginului. Se va afisa o mare parte din codul sursa, dar repet, nu intreg codul sursa. Enjoy. NOTA: Nu am stat la aceasta metoda sa studiez care sunt codurile pentru anti-decompilare, dar exista coduri care blocheaza decompilarea si multe pluginuri care nu merg decompilate cu aceasta metoda. 2. AMXX UnCompress: Post original: [TOOL] AMXX UnCompress 1.0 Descarcare: MediaFire Pasi: 1. Deschidem folderul "AMXX UnCompress 1.1". 2. Avem fisierul compilat "SayBind_Blocker.amxx". Tinem apasat cu mouse-ul pe el si il ducem in fisierul "amxx_uncompress.exe" (il deschidem cu amxx_uncompress). Ne apare o fereastra in care se realizeaza procesul de decompilare care nu ar trebui sa dureze mai mult de 3 secunde. Ne vor aparea inca 2 fisiere. 3. Stergem fisierul "SayBind_Blocker.amxx". 4. Dupa ce am facut pasul anterior, vom avea doar 2 fisiere cu care vom lucra: SayBind_Blocker.memory SayBind_Blocker.raw In fisierul "SayBind_Blocker.memory" modificam ce dorim (practic este fisierul .amxx decompilat). Putem sa modificam textul de exemplu: Text original: [sursa=][/sursa] Text modificat: [sursa=][/sursa] 5. Salvam si dupa iesim. 6. Ca sa compilam noul fisier .amxx, ducem fisierul "SayBind_Blocker.raw" in "amxx_uncompress.exe". 7. Enjoy. NOTA: Pentru anti-decompilare, bagati in codul sursa urmatorul string: server_print("no_amxx_uncompress") NOTA 2: Aceasta metoda este recomandata pentru a scoate licenta dintr-un plugin (IP sau DNS). Asa multi copii de pe forum-ul asta au scos licentele din multe pluginuri pentru ca autorii pluginurilor nu au stiut de aceasta metoda. 3. amxxdump: Post original: amxxdump Descarcare: MediaFire Pasi: 1. Intram in folderul "amxxdump". 2. Mergem in folderul "bin" si vedem ca avem fisierele necesare programului si pluginul "target_info.amxx" (cel de la metoda 1). 3. Copiem tot folderul "amxxdump" in: My Computer\Local Disk (C:) Poate sa fie si alta partitie, nu este obligatoriu C:, dar eu am luat ca asa imi este mai usor. 4. Mergem in Start si deschidem programul "cmd.exe" (command.exe). 5. Mergand pe considerentul ca ati pus folderul "amxxdump" in partitia ? ca mine, tastam in felul urmator: cd "C:\amxxdump\bin" 6. Dupa aceea tastam comanda urmatoare care ne va arata o lista cu parametrii valabili: amxxdump -? 7. Editam pluginul. Exemplu de comanda conform parametrilor: amxxdump -x target_info.amxx 8. Enjoy. NOTA: Nu am stat la aceasta metoda sa studiez care sunt codurile pentru anti-decompilare, dar din cate am observat nu exista un cod pentru anti-decompilare in amxxdump. Update 11-03-2017: Treaba cu anti-decompilarea este lamurita in topicul lui SkillartzHD: diverse/proiect-impotriva-lysis-pentru-amxx-t331638.html
-
Bazele de date sunt folosite pentru stocarea informatiilor in vederea furnizarii ulterioare in functie de solicitarea primita. MySQL este un sistem de baze de date functional independent. In PHP exista functii pentru toate operatiile executate asupra bazelor de date MySQL. Administrarea MySQL se poate face din linie de comanda sau folosind browserul si accesand aplicatia numita PHPMyAdmin scrisa in PHP. Cele mai uzuale operatii cu bazele de date sunt: Comanda Semnificatie CREATE creaza o baza de date sau un tabel DROP sterge o baza de date sau un tabel INSERT adauga inregistrari intr-un tabel DELETE sterge inregistrari dintr-un tabel UPDATE updateaza inregistrarile dintr-un tabel SELECT selecteaza un tabel ALTER alterarea unui tabel In MySQL spatiul alocat pe discul serverului este functie de tipul de date. Cateva din tipurile de date folosite in bazele de date MySQL sunt: Tip Semnificatie int() numar intreg 32 biti bigint() numar intreg 64 biti tinyint() numar intreg (-128 la 127 sau 0 la 255) 8 biti mediumint() numar intreg 24 biti smallint() numar intreg 16 biti char() sectiune cu lungime fixa de la 0 la 255 caractere varchar() sectiune cu lungime variabila de la 0 la 255 caractere float() numar mic cu virgula flotanta double numar mare cu virgula flotanta text sir cu maximum 65535 caractere date() data in format YYYY-MM-DD date data in format YYYY-MM-DD HH:MM:SS time ora in format HH:MM:SS Pentru ca baza de date sa fuctioneze mai bine coloanelor li s-au adaugat modificatori de coloana. Tipul de date intregi incep de la valori negative la pozitive. Daca se adauga optiunea UNSIGNED, care este un modificator de coloana, nu vor mai fi valori negative ci vor incepe de la 0. Alti modificatori sunt: AUTO_INCREMENT functioneaza cu orice tip intreg. La fiecare rand nou adaugat in baza de date numarul asociat va fi incrementat. NULL inseamna fara valoare (diferit de spatiu sau zero). NOT NULL inseamna ca orice inregistrare va fi considerata ceva. PRIMARY KEY este rolul primei coloane din tabel, totodata reprezentand elementul de referinta pentru fiecare linie.
-
Pentru început ce ce asta FastDL (de la Fast Download) - este sistem cu ajutorul căruia are loc downloadarea rapidă a fișierelor de pe servere. Cei care hostează direct serverele, nu au nevoie de acest manual, firmele de host oferă FastDL absolut gratis. Dacă însă ai decis să deschizi unul sau mai multe servere pe un VPS/VDS, atunci acest manual îți va fi de folos. În acest tutorial voi încerca să explic cum să faci corect un FastDL cu ajutorul nginx. Pentru început, de ce nginx? - Este rapid, mai puțin sensibil la atacuri (http flood), și mult mai puțin ambițios la consumul de resurse, decât apache. Instalarea o voi explica pe baza sistemului de operare Debian, Ubuntu si Centos Deci ne logăm pe VDS și începem: Debian/Ubuntu apt-get update apt-get install -y nginx Centos
-
Descriere: Amxbans este un sistem care foloseste o baza de date mysql pentru a afisa pe un site web lista ban-urilor / adminilor. A fost tradus si in romana. Autori: kiduu & zyggy123 Download: https://files.fm/u/utyy477n Instalare Plugin: In arhiva amxbans6 se gasesc 2 foldere, Plugin si Web ! Pasul 1 Toate fisierele din folder-ul plugin le urcati pe host, in server-ul de cstrike. Ne ducem in fisierul plugins.ini din folderul configs si adaugam liniile: amxbans_core.amxx amxbans_main.amxx Important: Aceste 2 linii trebuiesc bagate deasupra liniei admin.amxx Pasul 2 In modules.ini trebuie sa aveti trecuta linia: mysql Pasul 3 Va duceti in Configs » sql.cfg si modificati: amx_sql_host "localhost" - Daca aveti forumul si server-ul de cs pe acelasi host, lasati asa... daca nu treceti ip-ul remote. amx_sql_user "Username" amx_sql_pass "Parola" amx_sql_db "Database name" amx_sql_table "admins" amx_sql_type "mysql" Instalare Web ps: Eu am redenumin folderul web in bans. Pasul 1 Urcati folderul bans pe host (la forum). Pasul 2 Dupa ce ati urcat pe host folderul, click dreapta pe el -> permisiunile fisierului si la valoare numerica setati 777. Bifati Inclusiv subdosarele, apoi dati ok. Pasul 3 Va creati o baza de date mysql. Dupa ce va creati baza de dati, selectati modify privileges. Setarile trebuie sa arate astfel: Pasul 4 Intra pe www.siteultau.ro/bans/index.php si iti v-a pornii automat instalul. Alegeti limba romana din coltul stanga, sus. Bifati Accept acordul de licenta si apoi dai Inainte. Pasul 5 Apoi dati click pe Inainte. Pasul 6 La fel, click pe Inainte. Pasul 7 Baza de date: Aici va treceti campurile care le-ati creat voi cand ati facut baza de date. In cazul meu, vezi poza. Dupa ce ati trecut datele, click pe Verific date de acces, apoi Inainte. Pasul 8 Acum va creati contul de administrator, completati campurile cum doriti apoi click pe Inainte. Pasul 9 Click pe Terminare. Pasul 10 Daca ati facut totul corect, v-a trebui sa va arate astfel: Daca va arata asa, click pe Mergi la AMXBans. In final ar trebui sa va arate astfel: Bafta! Daca aveti probleme, postati aici.
-
Cu acest tutorial veti scapa de 90% din codati in mod automat + anti xfakeplayers care chiar merge. Pe server-ul meu de numai 12 sloturi sunt banati in jur de 25-30 de codati zilnic, iar de vreo 2 luni de cand am implementat aceasta metoda am dat manual doar 2-3 banuri. Si pe langa asta folosind reHLDS sunteti protejati impotriva multor exploit-uri care merg pe HLDS. Ca dezavantaje ar trebuie sa mentionez ca este posibil ca unele pluginuri amxx sa nu mearga pe reHLDS, in special cele care folosesc orpheu. De ce aveti nevoie? 1. reHLDS (versiune modificata a HLDS) 2. reunion (alternativa dproto, fiidnca dproto nu merge pe rehlds) 3. rechecker (verifica daca resursele jucatorilor contin coduri, un fel de wargods scan) 4. reauthcheck (anti xfakeplayers) 5. reaimdetector (ce trece de rechecker este detectat de reaimdetector) Le-am pus pe toate in acest pack Download Cum se instaleaza: Pasul 1: Opriti serverul din GameCP Pasul 2: Face-ti back-up la aceste fisiere, in caz ca ceva nu va merge si trebuie sa reveniti la hlds original: core.so demoplayer.so engine_i486.so filesystem_stdio.so hlds_linux hltv proxy.so valve/dlls/director.so cstrike/dlls/cs.so Pasul 3: Copiati fisierele din arhiva pe server-ul vostru. Pasul 4: Editati urmatorul fisier: cstrike/addons/metamod/plugins.ini Sterge-ti urmatoarea linie: linux addons/dproto/dproto_i386.so Apoi adaugati aceste linii: linux addons/reunion/reunion_mm_i386.so linux addons/rechecker/rechecker_mm_i386.so linux addons/reauthcheck/reauthcheck_mm_i386.so Pasul 5: Adauga reaimdetector.amxx in amxmodx/config/plugins.ini Pasul 6: Poriniti server-ul din GameCP Alte mentiuni: 1. Pentru alte modificari editati reunion.cfg, reaimdetector.ini, resources.ini, reauthcheck.cfg. Nu o sa stau sa va zic ce face fiecare optiune, majoritatea sunt expicate in cfg, dar unele sunt in rusa ? 2. rechecker este setat sa dea ban 300 de min iar reaimdetector 360 min. Poti modifica din resources.ini si reaimdetector.ini, dar eu zic ca sunt suficiente 300 min. 3. Aceste pluginuri sunt actualizate periodic, daca vreti cele mai recente versiuni le gasiti aici: reHLDS Reunion Rechecker Reauthcheck Reaimdetector 4. Daca descarcati ultima versiune de Rechecker va recomand sa folositi resources.ini din arhiva mea, cel care vine default cu Rechecker are foarte putine "coduri" in el. 5. Daca intampinati probleme sau aveti nelamuriri lasa-ti un replay si o sa incerc sa va ajut.
-
Descarcare: Girlshare | FileShare | Mega /* Plugin Template generated by Pawn Studio */ #include <sourcemod> #include <cstrike> #include <csgocolors> public Plugin:myinfo = { name = "Simple ResetScore", author = "tre3fla", description = "", version = "1.0", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { RegConsoleCmd( "rs", Command_ResetScore ) RegConsoleCmd( "reset", Command_ResetScore ) RegConsoleCmd( "resetscore", Command_ResetScore ) } public Action: Command_ResetScore( client, args ) { if( GetClientDeaths( client ) == 0 && GetClientFrags( client ) == 0 && CS_GetMVPCount( client ) == 0 && CS_GetClientAssists( client ) == 0 ) { CPrintToChat( client, "{GREEN}[ResetScore]{BLUE} Scorul tau este deja resetat !" ) return Plugin_Handled } SetEntProp( client, Prop_Data, "m_iFrags", 0 ) SetEntProp( client, Prop_Data, "m_iDeaths", 0 ) CS_SetClientContributionScore( client, 0 ) CS_SetClientAssists( client, 0) CS_SetMVPCount( client, 0 ) CPrintToChat( client, "{GREEN}[ResetScore]{RED} Scorul tau a fost resetat cu succes !" ) return Plugin_Handled } Descriere: Cu ajutorul acestui plugin jucatorii isi pot reseta scorul la 0. Nu are reclame, mesaje de avertizare, nu se complica cu absolut nimic. Comenzi: say /resetscore say /rs say reset Comenzile pot fi folosite si in consola dar fara / sau ! ca prefix ! Cvar-uri (se adauga in server.cfg): Nu are ! Poze: Nu sunt necesare, va puteti, foarte usor, imagina cum functioneaza ! :)) Instalare: 1. Fisierul SimpleResetScore_CSGO.sp se adauga in addons/sourcemod/scripting 2. Fisierul csgocolors.inc se adauga in addons/sourcemod/scripting/include 3. Fisierul SimpleResetScore_CSGO.smx se adauga in addons/sourcemod/plugins Daca aveti nevoie de modificari lasati reply. Nu ofer modificari private prin PM !
-
Descarcare: Mega || Girlshare || Zippyshare [sursa=RestrictNames.sp]#include <sourcemod> #include <sdktools> new String: RestrictedNamesFile[ PLATFORM_MAX_PATH ] new Handle: RestrictedNames = INVALID_HANDLE Handle: HandleMethod Handle: BackupName Handle: KickReason Handle: MinNameLen public Plugin:myinfo = { name = "Restricted Names: Basic", author = "tre3fla", description = "Filtreaza numele jucatorilor", version = "1.0", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { HandleMethod = CreateConVar( "sm_restricted_names_action", "3", "0=dezactivat, 1=kick, 2=schimba numele, 3=sterge partea interzisa din nume" ) BackupName = CreateConVar( "sm_default_name", "CSGO Player", "Numele in care sa fie redenumiti jucatorii cu nume interzise" ) KickReason = CreateConVar( "sm_kick_reason", "Your name is not allowed", "Mesajul care sa ii apara daca primeste kick pentur ca are nume interzis" ) MinNameLen = CreateConVar( "sm_min_name_lenght", "3", "Minim cate caractere sa aiba numele pentru a putea fi folosit" ) HookUserMessage( GetUserMessageId( "SayText2" ), SayText2, true ) HookEvent( "player_changename", OnNameChange ) } public void OnMapStart( ) { LoadRestrictedNames( ) } public OnClientPutInServer( client ) { CheckClientName( client ) } public Action:OnNameChange( Handle:event, const String:name[ ], bool:dontBroadcast ) { new UserID = GetEventInt( event, "userid" ) new client = GetClientOfUserId( UserID ) if( IsClientInGame( client ) && !IsFakeClient( client ) ) { decl String:NewName[ MAX_NAME_LENGTH ] decl String:OldName[ MAX_NAME_LENGTH ] GetEventString( event, "oldname", OldName, sizeof( OldName ) ) GetEventString( event, "newname", NewName, sizeof( NewName ) ) decl String: LargeBuffer[ 1024 ] for( new i = 0; i < GetArraySize( RestrictedNames ); i++ ) { GetArrayString( RestrictedNames, i, LargeBuffer, sizeof( LargeBuffer ) ) if( StrContains( NewName, LargeBuffer ) != -1 ) { SetClientName( client, OldName ) PrintToChat( client, "* Name change attempt failed!\x02 Your choosen name is not allowed!" ) return Plugin_Changed } if( GetConVarInt( MinNameLen ) > 0 && strlen( NewName ) < GetConVarInt( MinNameLen ) ) { SetClientName( client, OldName ) PrintToChat( client, "*\x02 Name change attempt failed!" ) PrintToChat( client, "* Your\x04 name\x01 must have at least\x05 %d\x01 characters!", GetConVarInt( MinNameLen ) ) return Plugin_Stop } } } return Plugin_Continue } public CheckClientName( client ) { if( IsClientInGame( client ) && client > 0 && client < MaxClients ) { decl String: LargeBuffer[ 1024 ] decl String: Name[ 32 ] GetClientName( client, Name, sizeof( Name ) ) for( new i = 0; i < GetArraySize( RestrictedNames ); i++ ) { GetArrayString( RestrictedNames, i, LargeBuffer, sizeof( LargeBuffer ) ) if( StrContains( Name, LargeBuffer ) != -1 ) { switch( GetConVarInt( HandleMethod ) ) { case 1: { decl String: ReasonBuffer[ 128 ] GetConVarString( KickReason, ReasonBuffer, sizeof( ReasonBuffer ) ) KickClient( client, "%s", ReasonBuffer ) } case 2: { decl String: NameBuffer[ 32 ] GetConVarString( BackupName, NameBuffer, sizeof( NameBuffer ) ) SetClientName( client, NameBuffer ) } case 3: { ReplaceString( Name, sizeof( Name ), LargeBuffer, "" ) SetClientName( client, Name ) if( TrimString( Name ) && StrEqual( Name, "" ) ) { decl String: NameBuffer[ 32 ] GetConVarString( BackupName, NameBuffer, sizeof( NameBuffer ) ) SetClientName( client, NameBuffer ) } } } } if( GetConVarInt( MinNameLen ) > 0 && strlen( Name ) < GetConVarInt( MinNameLen ) ) { decl String: NameBuffer[ 32 ] GetConVarString( BackupName, NameBuffer, sizeof( NameBuffer ) ) SetClientName( client, NameBuffer ) } } } } public Action:SayText2( UserMsg:msg_id, Handle:bf, players[ ], playersNum, bool:reliable, bool:init ) { new String:buffer[ 25 ] if( GetUserMessageType( ) == UM_Protobuf ) { PbReadString( bf, "msg_name", buffer, sizeof( buffer ) ) if( StrEqual( buffer, "#Cstrike_Name_Change" ) ) { return Plugin_Handled } } return Plugin_Continue } public LoadRestrictedNames( ) { RestrictedNames = CreateArray( 1024 ) BuildPath( Path_SM, RestrictedNamesFile, sizeof( RestrictedNamesFile ), "configs/RestrictedNames.txt" ) new Handle: RestrictedNamesText = OpenFile( RestrictedNamesFile, "r" ) new String: ResultsBuffer[ 1024 ] while( !IsEndOfFile( RestrictedNamesText ) && ReadFileLine( RestrictedNamesText, ResultsBuffer, sizeof( ResultsBuffer ) ) ) { ReplaceString( ResultsBuffer, sizeof( ResultsBuffer ), "\n", "", false ) PushArrayString( RestrictedNames, ResultsBuffer ) } }[/sursa] Nume: Name Restrict Autor: tre3fla Versiune: free Descriere: Blocheaza, modifica, interzice sau schimba complet numele jucatorilor daca au un nume pe care nu doriti sa-l aiba pe serverul vostru. De asemenea nu permite jucatorilor sa aiba numele prea mic ( setabil prin cvar ). Blocheaza si mesajul ala in chat gen "X changed his name to Y" pentru a se evita spam-ul. Convar-uri (se adauga in server.cfg): sm_restricted_names_action 0 = Pluginul nu filtreaza numele de pe server, jucatorii isi pot pune ce nume vor 1 = Da kick jucatorilor cu nume interzise 2 = Schimba numele jucatorilor intr-un nume setat de voi 3 = Sterge partea nedorita din nume (de exemplu daca voi nu vreti sa aibe numele Marius iar pe jucator il cheama Ion Marius, va sterge Marius din nume si pe jucator il va chema doar Ion sm_default_name "Nume Dorit" - default "CSGO Player", numele default in care sa fie redenumiti jucatorii cu nume interzise sm_kick_reason "Motiv-ul kick-ului" - default "Your Name is not allowed", ce sa ii arate jucatorului daca primeste kick datorita numelui interzis sm_min_name_lenght - Cate caractere trebuie sa aiba minim un nume, default 3 caractere Instalare: 1. Fisierul RestrictedNames.sp se adauga in addons/sourcemod/scripting 2. Fisierul RestrictedNames.smx se adauga in addons/sourcemod/plugins 3. Fisierul RestrictedNames.txt se adauga in addons/sourcemod/configs Daca nu aveti fisierul RestrictedNames.txt in folderul configs pluginul NU VA FUNCTIONA! Este foarte important ca numele sa fie scris exact asa si sa aibe extensia .txt!
-
Descarcare: Mega || Girlshare || Fileshare #include <sourcemod> Handle: Style public Plugin:myinfo = { name = "Admins Online", author = "tre3fla", description = "Arata adminii online", version = "1.1", url = "https://www.extreamcs.com/forum/generalitati/admins-online-meniu-grade-t344209.html" } public OnPluginStart( ) { Style = CreateConVar( "sm_adminmenu_style", "0", "0=adminii pot fi selectati si meniul dispare, 1=adminii nu pot fi selectati" ) RegConsoleCmd( "admins", Command_ShowAdminsOnline ) } public Action: Command_ShowAdminsOnline( client, args ) { new Handle:AdminsOnline = CreateMenu( AdminsOnline_Handler ) SetMenuTitle( AdminsOnline, "Admin Name | Admin Group" ) int Admins = 0 for( new index = 1; index < MaxClients; index++ ) { if( IsClientInGame( index ) ) { new AdminId: ClientAccess = GetUserAdmin( index ) if( ClientAccess ) { new AdminGroupsCount = GetAdminGroupCount( ClientAccess ) for( new x = 0; x < AdminGroupsCount; x++ ) { decl String:GroupBuffer[ 32 ] if( ( GetAdminGroup( ClientAccess, x, GroupBuffer, sizeof( GroupBuffer ) ) != INVALID_GROUP_ID ) ) { Admins++ decl String: AdminNameAndGroup[ 64 ] Format( AdminNameAndGroup, sizeof( AdminNameAndGroup ), "%N | %s", index, GroupBuffer ) switch( GetConVarInt( Style ) ) { case 0: { AddMenuItem( AdminsOnline, "selected", AdminNameAndGroup ) } case 1: { AddMenuItem( AdminsOnline, "selected", AdminNameAndGroup, ITEMDRAW_DISABLED ) } } } } } } } if( Admins <= 0 ) { PrintToChat( client, "*\x02 Nu este nici un admin connectat!" ) } else { PrintToChat( client, "*\x05 In acest moment sunt\x04 %d\x05 admini online!", Admins ) } SetMenuExitButton( AdminsOnline, true ) DisplayMenu( AdminsOnline, client, 30 ) } public AdminsOnline_Handler( Handle:AdminsOnline, MenuAction:action, pos, neg ) { switch( action ) { case MenuAction_Select: { decl String: Info[ 32 ] GetMenuItem( AdminsOnline, neg, Info, sizeof( Info ) ) if( StrEqual( Info, "selected" ) ) { if( AdminsOnline != INVALID_HANDLE ) { CancelMenu( AdminsOnline ) } } } case MenuAction_End: { if( AdminsOnline != INVALID_HANDLE ) { CancelMenu( AdminsOnline ) } } } } Nume: Admins Online Versiune: 1.1 Autor: tre3fla Descriere: Cu ajutorul acestui plugin jucatorii pot vedea ce admini sunt online si ce grade au acestia daca scriu o comanda in chat. ConVar-uri (se adauga in autoexec.cfg) sm_adminmenu_style 0 = adminii din meniu vor putea fi selectati iar cand acest lucru se intampla meniul dispare, ca si cum ai da exit 1 = adminii nu pot fi selectati iar meniul trebuie inchis din buton de exit Comenzi: !admins - arata un meniu cu adminii online si gradele acestora Cerinte: - Va trebui sa dati adminele pe baza de grupuri, aveti aici un tutorial cum puteti face asta: tutoriale-csgo/cum-dai-admin-baza-grupuri-t344208.html Instalare: 1. Fisierul AdminsOnline.sp il puneti in addons/sourcemod/scripting 2. Fisierul AdminsOnline.smx il puneti in addons/sourcemod/plugins
-
Descarcare Versiunea 1.0: Mega.Co.Nz | GirlShare.Ro | SaberCatHost.Com Versiunea 1.1: Mega.Co.Nz | GirlShare.Ro | SaberCatHost.Com Versiunea 1.2: Mega.Co.Nz | GirlShare.Ro | SaberCatHost.Com Surse (.sp) #include <sourcemod> #include <sdktools> #include <cstrike> #include <clientprefs> #define VIP_FLAG ADMFLAG_CUSTOM1 Handle: Armor Handle: Helmet Handle: Bhop Handle: Defuser Handle: HE Handle: Flash Handle: Molotov Handle: Smoke Handle: PistolRoundRule Handle: HpNormalKill Handle: HpKnifeKill Handle: HpHeadShotKill Handle: MaxHP Handle: MoneyPerNormalKill Handle: MoneyPerKnifeKill Handle: MoneyPerHeadShotKill Handle: ExtraMoneyOnSpawn Handle: ShowBombsite Handle: HalfPlantTime Handle: HalfDefuseTimeNoKit Handle: HalfDefuseTimeKit Handle: Notify new Handle: BhopCookie = INVALID_HANDLE new MoneyOffset = -1 new RoundID = 0 bool: CanBhop[ MAXPLAYERS + 1 ] bool: IsPistolRound = false public Plugin:myinfo = { name = "CS:GO VIP", author = "tre3fla", description = "VIP pentru serverele de csgo", version = "1.0", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { Armor = CreateConVar( "vip_give_armor", "1", "VIP primeste 100 armura la spawn" ) Helmet = CreateConVar( "vip_give_helmet", "1", "VIP primeste helmet daca are armura" ) Bhop = CreateConVar( "vip_autobhop", "1", "VIP poate face bhop automat cand tine apasat space" ) Defuser = CreateConVar( "vip_give_ct_defuser", "1", "VIP primeste defuser atunci cand este CT" ) HE = CreateConVar( "vip_give_he", "1", "VIP primeste un HE la spawn, daca nu are deja unul" ) Flash = CreateConVar( "vip_give_flash", "1", "VIP primeste un flash la spawn, daca nu are deja unul" ) Molotov = CreateConVar( "vip_give_molotov", "1", "VIP primeste molotov la spawn daca nu are deja unul" ) Smoke = CreateConVar( "vip_give_smoke", "1", "VIP primeste smoke la spawn daca nu are deja unul" ) PistolRoundRule = CreateConVar( "vip_disabled_on_pistol_round", "1", "VIP nu va rula un in rundele de pistoale pe competitive" ) ExtraMoneyOnSpawn = CreateConVar( "vip_give_money_on_spawn", "500", "VIP va primi aceea suma de bani la spawn. 0=dezactivat" ) HpNormalKill = CreateConVar( "vip_normal_kill_hp", "10", "VIP va primi HP cand face frag" ) HpKnifeKill = CreateConVar( "vip_knife_kill_hp", "30", "VIP va primi HP cand face frag cu cutitul" ) HpHeadShotKill = CreateConVar( "vip_headshot_hp", "15", "VIP va primit HP cand face frag cu headshot" ) MaxHP = CreateConVar( "vip_max_hp", "100", "HP-ul maxim pe care il poate avea un VIP" ) MoneyPerNormalKill = CreateConVar( "vip_normal_kill_money", "100", "VIP va primi acea suma de bani cand face frag" ) MoneyPerKnifeKill = CreateConVar( "vip_knife_kill_money", "1000", "VIP va primi acea suma de bani cand face frag cu cutitul" ) MoneyPerHeadShotKill = CreateConVar( "vip_headshot_kill_money", "150", "VIP va primi acea suma de bani cand face frag cu headshot" ) ShowBombsite = CreateConVar( "vip_show_bombsite", "1", "VIP de la ct vor vedea in ce bombsite au plantat teroristii bomba" ) HalfPlantTime = CreateConVar( "vip_bomb_plant_time", "2", "Timp in secunde pentru plantarea bombei de catre VIP" ) HalfDefuseTimeNoKit = CreateConVar( "vip_defuse_time_nokit", "5", "Timp necesar pentru ca VIP sa dea defuse bombei cand nu are kit" ) HalfDefuseTimeKit = CreateConVar( "vip_defuse_time_kit", "2.5", "Timp necesar pentru ca VIP sa dea defuse bombei cand are kit" ) Notify = CreateConVar( "vip_notify_on_bonus", "1", "VIP vor vedea mesaje in chat cand primesc hp, bani, etc" ) MoneyOffset = FindSendPropInfo( "CCSPlayer", "m_iAccount" ) RegConsoleCmd( "bhop", Command_ToggleBhop ) BhopCookie = RegClientCookie( "AutoBhop", "Cookie AutoBhop", CookieAccess_Protected ) HookEvent( "player_spawn", Event_PlayerSpawn ) HookEvent( "player_death", Event_PlayerDeath ) HookEvent( "announce_phase_end", Event_PhaseEnd ) HookEvent( "bomb_planted", Event_BombPlanted ) HookEventEx( "bomb_begindefuse", Event_BeginDefuse ) HookEventEx( "bomb_beginplant", Event_BeginPlant ) HookEvent( "round_end", Event_RoundEnd, EventHookMode_PostNoCopy ) } public OnMapStart( ) { RoundID = 0 IsPistolRound = false } public OnClientCookiesCached( client ) { decl String: UserCookie[ 5 ] GetClientCookie( client, BhopCookie, UserCookie, sizeof( UserCookie ) ) if( StrEqual( UserCookie, "1" ) && IsClientVip( client ) ) { CanBhop[ client ] = true } else { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) } } public Action: Event_PlayerSpawn( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && !IsFakeClient( client ) ) { if( IsClientVip( client ) ) { RemoveClientGrenades( client ) RequestFrame( GiveSpawnItems, client ) } } return Plugin_Continue } public Action: Event_PlayerDeath( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new victim = GetClientOfUserId( GetEventInt( event, "userid" ) ) new attacker = GetClientOfUserId( GetEventInt( event, "attacker" ) ) if( attacker > 0 && attacker < MaxClients && IsClientInGame( attacker ) && victim > 0 && victim < MaxClients && IsClientInGame( victim ) && IsClientVip( attacker ) && attacker != victim ) { new bool:Headshot = GetEventBool( event, "headshot" ) char Arma[ 64 ] GetEventString( event, "weapon", Arma, sizeof( Arma ) ) if( Headshot ) { if( GetConVarInt( MoneyPerHeadShotKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerHeadShotKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerHeadShotKill ) ) } } if( GetConVarInt( HpHeadShotKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpHeadShotKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpHeadShotKill ) ) } } } else if( ( StrContains( Arma, "knife", false ) != -1 ) || ( StrContains( Arma, "bayonet", false ) != -1 ) ) { if( GetConVarInt( MoneyPerKnifeKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerKnifeKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerKnifeKill ) ) } } if( GetConVarInt( HpKnifeKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpKnifeKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpKnifeKill ) ) } } } else { if( GetConVarInt( MoneyPerNormalKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerNormalKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerNormalKill ) ) } } if( GetConVarInt( HpNormalKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpNormalKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpNormalKill ) ) } } } } return Plugin_Continue } public Event_PhaseEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { IsPistolRound = true } public Event_BeginDefuse( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event,"userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfDefuseTimeKit ) || GetConVarBool( HalfDefuseTimeNoKit ) ) { CreateTimer( 0.0, DefuseBugFix, client ) } } } public Event_BeginPlant( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfPlantTime ) ) { new Bomb = GetEntPropEnt( client, Prop_Send, "m_hActiveWeapon" ) decl String: EntityName[ 20 ] GetEntityClassname( Bomb, EntityName, sizeof( EntityName ) ) if( StrEqual( EntityName, "weapon_c4", false ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_fArmedTime", GetGameTime()+GetConVarFloat( HalfPlantTime ) ) } } } } public Event_BombPlanted( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { if( GetConVarBool( ShowBombsite ) ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) decl String: Bombsite[ 64 ] GetEntPropString( client, Prop_Send, "m_szLastPlaceName", Bombsite, sizeof( Bombsite ) ) decl String: BombsiteBuffer[ 32 ] if( StrContains( Bombsite, "BombsiteA" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite A" ) } else if( StrContains( Bombsite, "BombsiteB" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite B" ) } for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) && GetClientTeam( i ) == 3 && IsPlayerAlive( i ) ) { PrintToChat( i, " \x04[VIP]\x02 %N\x10 has planted the bomb in\x04 %s", client, BombsiteBuffer ) } } } } } public Event_RoundEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { RoundID++ if( RoundID == 1 ) { IsPistolRound = true } else { IsPistolRound = false } } public Action: OnPlayerRunCmd( client, &buttons, &impulse, Float: vel[ 3 ], Float: angles[ 3 ], &weapon ) { if( IsClientVip( client ) && GetConVarBool( Bhop ) && CanBhop[ client ] ) { if( buttons & IN_JUMP && IsPlayerAlive( client ) && !( GetEntityFlags( client ) & FL_ONGROUND ) && !( GetEntityMoveType( client ) & MOVETYPE_LADDER ) ) { buttons &= ~IN_JUMP } } } public Action: DefuseBugFix( Handle: timer, any: client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) ) { new Bomb = FindEntityByClassname( MaxClients+1, "planted_c4" ) if( Bomb != -1 ) { if( GetEntProp( client, Prop_Send, "m_bHasDefuser" ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeKit ) ) } else { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeNoKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeNoKit ) ) } } } } public GiveSpawnItems( client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && GetClientTeam( client ) > 1 ) { if( GetConVarBool( Armor ) ) { SetEntProp( client, Prop_Send, "m_ArmorValue", 100 ) } if( GetConVarBool( Helmet ) && GetEntProp( client, Prop_Send, "m_ArmorValue" ) >= 1 ) { SetEntProp( client, Prop_Send, "m_bHasHelmet", 1 ) } if( GetConVarBool( HE ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_hegrenade" ) } if( GetConVarBool( Flash ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_flashbang" ) } if( GetConVarBool( Smoke ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_smokegrenade" ) } if( GetConVarBool( Molotov ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { switch( GetClientTeam( client ) ) { case 2: { GivePlayerItem( client, "weapon_molotov" ) } case 3: { GivePlayerItem( client, "weapon_incgrenade" ) } } } if( GetConVarBool( ExtraMoneyOnSpawn ) && MoneyOffset != -1 ) { SetEntProp( client, Prop_Send, "m_iAccount", GetEntProp( client, Prop_Send, "m_iAccount" ) + GetConVarInt( ExtraMoneyOnSpawn ) ) } if( GetConVarBool( Defuser ) && GetClientTeam( client ) == 3 && GetEntProp( client, Prop_Send, "m_bHasDefuser" ) < 1 ) { SetEntProp( client, Prop_Send, "m_bHasDefuser", 1 ) } } } public Action: Command_ToggleBhop( client, args ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { PrintToChat( client, " \x04[VIP]\x10 Auto-bhop cannot be used in pistol rounds!" ) return Plugin_Handled } if( GetConVarBool( Bhop ) && IsClientVip( client ) ) { if( CanBhop[ client ] ) { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x02 disabled\x10!" ) } else { CanBhop[ client ] = true SetClientCookie( client, BhopCookie, "1" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x06 enabled\x10!" ) } } else { PrintToChat( client, " \x04[VIP]\x10 You need to be\x06 VIP\x10 to use this command!" ) } return Plugin_Continue } stock bool: IsClientVip( client ) { if( GetUserFlagBits( client ) & VIP_FLAG ) { return true } return false } stock GetClientGrenades( client ) { new Explosive = GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) new Flashbang = GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) new Smokegrenade = GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) new Incendiary = GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) new Decoy = GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) return Explosive + Flashbang + Smokegrenade + Incendiary + Decoy } stock RemoveClientGrenades( client ) { if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 14 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 15 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 16 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 17 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 18 ) } } #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <clientprefs> #define VIP_FLAG ADMFLAG_CUSTOM1 Handle: Armor Handle: Helmet Handle: Bhop Handle: Defuser Handle: VipSpeed Handle: SpeedAmmount Handle: HE Handle: Flash Handle: Molotov Handle: Smoke Handle: PistolRoundRule Handle: HpNormalKill Handle: HpKnifeKill Handle: HpHeadShotKill Handle: MaxHP Handle: MoneyPerNormalKill Handle: MoneyPerKnifeKill Handle: MoneyPerHeadShotKill Handle: ExtraMoneyOnSpawn Handle: ShowBombsite Handle: HalfPlantTime Handle: HalfDefuseTimeNoKit Handle: HalfDefuseTimeKit Handle: Notify new Handle: BhopCookie = INVALID_HANDLE new RoundID = 0 bool: CanBhop[ MAXPLAYERS + 1 ] bool: IsPistolRound = false public Plugin:myinfo = { name = "CS:GO VIP", author = "tre3fla", description = "VIP pentru serverele de csgo", version = "1.1", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { Armor = CreateConVar( "vip_give_armor", "1", "VIP primeste 100 armura la spawn" ) Helmet = CreateConVar( "vip_give_helmet", "1", "VIP primeste helmet daca are armura" ) Bhop = CreateConVar( "vip_autobhop", "1", "VIP poate face bhop automat cand tine apasat space" ) Defuser = CreateConVar( "vip_give_ct_defuser", "1", "VIP primeste defuser atunci cand este CT" ) VipSpeed = CreateConVar( "vip_fast_speed", "1", "VIP primeste viteza de miscare mai mare" ) SpeedAmmount = CreateConVar( "vip_speed_ammount", "1.2", "Cat de rapid sa se miste VIP" ) HE = CreateConVar( "vip_give_he", "1", "VIP primeste un HE la spawn, daca nu are deja unul" ) Flash = CreateConVar( "vip_give_flash", "1", "VIP primeste un flash la spawn, daca nu are deja unul" ) Molotov = CreateConVar( "vip_give_molotov", "1", "VIP primeste molotov la spawn daca nu are deja unul" ) Smoke = CreateConVar( "vip_give_smoke", "1", "VIP primeste smoke la spawn daca nu are deja unul" ) PistolRoundRule = CreateConVar( "vip_disabled_on_pistol_round", "1", "VIP nu va rula un in rundele de pistoale pe competitive" ) ExtraMoneyOnSpawn = CreateConVar( "vip_give_money_on_spawn", "500", "VIP va primi aceea suma de bani la spawn. 0=dezactivat" ) HpNormalKill = CreateConVar( "vip_normal_kill_hp", "10", "VIP va primi HP cand face frag" ) HpKnifeKill = CreateConVar( "vip_knife_kill_hp", "30", "VIP va primi HP cand face frag cu cutitul" ) HpHeadShotKill = CreateConVar( "vip_headshot_hp", "15", "VIP va primit HP cand face frag cu headshot" ) MaxHP = CreateConVar( "vip_max_hp", "100", "HP-ul maxim pe care il poate avea un VIP" ) MoneyPerNormalKill = CreateConVar( "vip_normal_kill_money", "100", "VIP va primi acea suma de bani cand face frag" ) MoneyPerKnifeKill = CreateConVar( "vip_knife_kill_money", "1000", "VIP va primi acea suma de bani cand face frag cu cutitul" ) MoneyPerHeadShotKill = CreateConVar( "vip_headshot_kill_money", "150", "VIP va primi acea suma de bani cand face frag cu headshot" ) ShowBombsite = CreateConVar( "vip_show_bombsite", "1", "VIP de la ct vor vedea in ce bombsite au plantat teroristii bomba" ) HalfPlantTime = CreateConVar( "vip_bomb_plant_time", "2", "Timp in secunde pentru plantarea bombei de catre VIP" ) HalfDefuseTimeNoKit = CreateConVar( "vip_defuse_time_nokit", "5", "Timp necesar pentru ca VIP sa dea defuse bombei cand nu are kit" ) HalfDefuseTimeKit = CreateConVar( "vip_defuse_time_kit", "2.5", "Timp necesar pentru ca VIP sa dea defuse bombei cand are kit" ) Notify = CreateConVar( "vip_notify_on_bonus", "1", "VIP vor vedea mesaje in chat cand primesc hp, bani, etc" ) RegConsoleCmd( "bhop", Command_ToggleBhop ) RegConsoleCmd( "vips", Command_ShowVips ) BhopCookie = RegClientCookie( "AutoBhop", "Cookie AutoBhop", CookieAccess_Protected ) HookEvent( "player_spawn", Event_PlayerSpawn ) HookEvent( "player_death", Event_PlayerDeath ) HookEvent( "announce_phase_end", Event_PhaseEnd ) HookEvent( "bomb_planted", Event_BombPlanted ) HookEventEx( "bomb_begindefuse", Event_BeginDefuse ) HookEventEx( "bomb_beginplant", Event_BeginPlant ) HookEvent( "round_end", Event_RoundEnd, EventHookMode_PostNoCopy ) } public OnMapStart( ) { RoundID = 0 IsPistolRound = false } public OnClientCookiesCached( client ) { decl String: UserCookie[ 5 ] GetClientCookie( client, BhopCookie, UserCookie, sizeof( UserCookie ) ) if( StrEqual( UserCookie, "1" ) && IsClientVip( client ) ) { CanBhop[ client ] = true } else { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) } } public OnClientPutInServer( client ) { SDKHook( client, SDKHook_WeaponSwitchPost, WeaponSwitchPost ) } public Action: Event_PlayerSpawn( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && !IsFakeClient( client ) ) { if( IsClientVip( client ) ) { RemoveClientGrenades( client ) RequestFrame( GiveSpawnItems, client ) } } return Plugin_Continue } public Action: Event_PlayerDeath( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new victim = GetClientOfUserId( GetEventInt( event, "userid" ) ) new attacker = GetClientOfUserId( GetEventInt( event, "attacker" ) ) if( attacker > 0 && attacker < MaxClients && IsClientInGame( attacker ) && victim > 0 && victim < MaxClients && IsClientInGame( victim ) && IsClientVip( attacker ) && attacker != victim ) { new bool:Headshot = GetEventBool( event, "headshot" ) char Arma[ 64 ] GetEventString( event, "weapon", Arma, sizeof( Arma ) ) if( Headshot ) { if( GetConVarInt( MoneyPerHeadShotKill ) > 0 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerHeadShotKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerHeadShotKill ) ) } } if( GetConVarInt( HpHeadShotKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpHeadShotKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpHeadShotKill ) ) } } } else if( ( StrContains( Arma, "knife", false ) != -1 ) || ( StrContains( Arma, "bayonet", false ) != -1 ) ) { if( GetConVarInt( MoneyPerKnifeKill ) > 0 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerKnifeKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerKnifeKill ) ) } } if( GetConVarInt( HpKnifeKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpKnifeKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpKnifeKill ) ) } } } else { if( GetConVarInt( MoneyPerNormalKill ) > 0 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerNormalKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerNormalKill ) ) } } if( GetConVarInt( HpNormalKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpNormalKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpNormalKill ) ) } } } } return Plugin_Continue } public Event_PhaseEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { IsPistolRound = true } public Event_BeginDefuse( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event,"userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfDefuseTimeKit ) || GetConVarBool( HalfDefuseTimeNoKit ) ) { CreateTimer( 0.0, DefuseBugFix, client ) } } } public Event_BeginPlant( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfPlantTime ) ) { new Bomb = GetEntPropEnt( client, Prop_Send, "m_hActiveWeapon" ) decl String: EntityName[ 20 ] GetEntityClassname( Bomb, EntityName, sizeof( EntityName ) ) if( StrEqual( EntityName, "weapon_c4", false ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_fArmedTime", GetGameTime()+GetConVarFloat( HalfPlantTime ) ) } } } } public Event_BombPlanted( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { if( GetConVarBool( ShowBombsite ) ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) decl String: Bombsite[ 64 ] GetEntPropString( client, Prop_Send, "m_szLastPlaceName", Bombsite, sizeof( Bombsite ) ) decl String: BombsiteBuffer[ 32 ] if( StrContains( Bombsite, "BombsiteA" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite A" ) } else if( StrContains( Bombsite, "BombsiteB" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite B" ) } for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) && GetClientTeam( i ) == 3 && IsPlayerAlive( i ) ) { PrintToChat( i, " \x04[VIP]\x02 %N\x10 has planted the bomb in\x04 %s", client, BombsiteBuffer ) } } } } } public Event_RoundEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { RoundID++ if( RoundID == 1 ) { IsPistolRound = true } else { IsPistolRound = false } } public Action: OnPlayerRunCmd( client, &buttons, &impulse, Float: vel[ 3 ], Float: angles[ 3 ], &weapon ) { if( IsClientVip( client ) && GetConVarBool( Bhop ) && CanBhop[ client ] ) { if( buttons & IN_JUMP && IsPlayerAlive( client ) && !( GetEntityFlags( client ) & FL_ONGROUND ) && !( GetEntityMoveType( client ) & MOVETYPE_LADDER ) ) { buttons &= ~IN_JUMP } } } public Action: DefuseBugFix( Handle: timer, any: client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) ) { new Bomb = FindEntityByClassname( MaxClients+1, "planted_c4" ) if( Bomb != -1 ) { if( GetEntProp( client, Prop_Send, "m_bHasDefuser" ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeKit ) ) } else { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeNoKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeNoKit ) ) } } } } public GiveSpawnItems( client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && GetClientTeam( client ) > 1 ) { if( GetConVarBool( Armor ) ) { SetEntProp( client, Prop_Send, "m_ArmorValue", 100 ) } if( GetConVarBool( Helmet ) && GetEntProp( client, Prop_Send, "m_ArmorValue" ) >= 1 ) { SetEntProp( client, Prop_Send, "m_bHasHelmet", 1 ) } if( GetConVarBool( HE ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_hegrenade" ) } if( GetConVarBool( Flash ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_flashbang" ) } if( GetConVarBool( Smoke ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_smokegrenade" ) } if( GetConVarBool( Molotov ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { switch( GetClientTeam( client ) ) { case 2: { GivePlayerItem( client, "weapon_molotov" ) } case 3: { GivePlayerItem( client, "weapon_incgrenade" ) } } } if( GetConVarBool( ExtraMoneyOnSpawn ) ) { SetEntProp( client, Prop_Send, "m_iAccount", GetEntProp( client, Prop_Send, "m_iAccount" ) + GetConVarInt( ExtraMoneyOnSpawn ) ) } if( GetConVarBool( Defuser ) && GetClientTeam( client ) == 3 && GetEntProp( client, Prop_Send, "m_bHasDefuser" ) < 1 ) { SetEntProp( client, Prop_Send, "m_bHasDefuser", 1 ) } } } public Action: Command_ToggleBhop( client, args ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { PrintToChat( client, " \x04[VIP]\x10 Auto-bhop cannot be used in pistol rounds!" ) return Plugin_Handled } if( GetConVarBool( Bhop ) && IsClientVip( client ) ) { if( CanBhop[ client ] ) { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x02 disabled\x10!" ) } else { CanBhop[ client ] = true SetClientCookie( client, BhopCookie, "1" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x06 enabled\x10!" ) } } else { PrintToChat( client, " \x04[VIP]\x10 You need to be\x06 VIP\x10 to use this command!" ) } return Plugin_Continue } public Action: Command_ShowVips( client, args ) { new Handle: OnlineVips = CreateMenu( OnlineVips_Handler ) SetMenuTitle( OnlineVips, "Online VIPS List" ) new OnlineVipsNum for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) ) { decl String: uNameBuffer[ 32 ] Format( uNameBuffer, sizeof( uNameBuffer ), "%N", i ) AddMenuItem( OnlineVips, "OnSelect", uNameBuffer, ITEMDRAW_DISABLED ) OnlineVipsNum++ } } if( OnlineVipsNum < 1 ) { if( OnlineVips != INVALID_HANDLE ) { CloseHandle( OnlineVips ) } PrintToChat( client, " \x04[VIP]\x10 There are no vips online!" ) } else { SetMenuExitButton( OnlineVips, true ) DisplayMenu( OnlineVips, client, 30 ) } } public Action: WeaponSwitchPost( client, weapon ) { if( IsClientVip( client ) && IsPlayerAlive( client ) && GetConVarBool( VipSpeed ) ) { SetEntPropFloat( client, Prop_Send, "m_flVelocityModifier", GetConVarFloat( SpeedAmmount ) ) } } public OnlineVips_Handler( Handle: OnlineVips, MenuAction: action, client, menu ) { switch( action ) { case MenuAction_End: { if( OnlineVips != INVALID_HANDLE ) { CancelMenu( OnlineVips ) } } } } stock bool: IsClientVip( client ) { if( GetUserFlagBits( client ) & VIP_FLAG ) { return true } return false } stock GetClientGrenades( client ) { new Explosive = GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) new Flashbang = GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) new Smokegrenade = GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) new Incendiary = GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) new Decoy = GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) return Explosive + Flashbang + Smokegrenade + Incendiary + Decoy } stock RemoveClientGrenades( client ) { if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 14 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 15 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 16 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 17 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 18 ) } } #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <clientprefs> #define VIP_FLAG ADMFLAG_CUSTOM1 Handle: Armor Handle: Helmet Handle: Bhop Handle: Defuser Handle: VipSpeed Handle: SpeedAmmount Handle: Damage Handle: DamageAmount Handle: HE Handle: Flash Handle: Molotov Handle: Smoke Handle: PistolRoundRule Handle: HpNormalKill Handle: HpKnifeKill Handle: HpHeadShotKill Handle: MaxHP Handle: MoneyPerNormalKill Handle: MoneyPerKnifeKill Handle: MoneyPerHeadShotKill Handle: ExtraMoneyOnSpawn Handle: ShowBombsite Handle: HalfPlantTime Handle: HalfDefuseTimeNoKit Handle: HalfDefuseTimeKit Handle: Notify new Handle: BhopCookie = INVALID_HANDLE new MoneyOffset = -1 new RoundID = 0 bool: CanBhop[ MAXPLAYERS + 1 ] bool: IsPistolRound = false public Plugin:myinfo = { name = "CS:GO VIP", author = "tre3fla", description = "VIP pentru serverele de csgo", version = "1.2", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { Armor = CreateConVar( "vip_give_armor", "1", "VIP primeste 100 armura la spawn" ) Helmet = CreateConVar( "vip_give_helmet", "1", "VIP primeste helmet daca are armura" ) Bhop = CreateConVar( "vip_autobhop", "1", "VIP poate face bhop automat cand tine apasat space" ) Defuser = CreateConVar( "vip_give_ct_defuser", "1", "VIP primeste defuser atunci cand este CT" ) VipSpeed = CreateConVar( "vip_fast_speed", "1", "VIP primeste viteza de miscare mai mare" ) SpeedAmmount = CreateConVar( "vip_speed_amount", "1.2", "Cat de rapid sa se miste VIP" ) Damage = CreateConVar( "vip_high_damage", "1", "VIP va avea damage mai mare" ) DamageAmount = CreateConVar( "vip_damage_amount", "2", "Cu cat sa fie multiplicat damage-ul vipului" ) HE = CreateConVar( "vip_give_he", "1", "VIP primeste un HE la spawn, daca nu are deja unul" ) Flash = CreateConVar( "vip_give_flash", "1", "VIP primeste un flash la spawn, daca nu are deja unul" ) Molotov = CreateConVar( "vip_give_molotov", "1", "VIP primeste molotov la spawn daca nu are deja unul" ) Smoke = CreateConVar( "vip_give_smoke", "1", "VIP primeste smoke la spawn daca nu are deja unul" ) PistolRoundRule = CreateConVar( "vip_disabled_on_pistol_round", "1", "VIP nu va rula un in rundele de pistoale pe competitive" ) ExtraMoneyOnSpawn = CreateConVar( "vip_give_money_on_spawn", "500", "VIP va primi aceea suma de bani la spawn. 0=dezactivat" ) HpNormalKill = CreateConVar( "vip_normal_kill_hp", "10", "VIP va primi HP cand face frag" ) HpKnifeKill = CreateConVar( "vip_knife_kill_hp", "30", "VIP va primi HP cand face frag cu cutitul" ) HpHeadShotKill = CreateConVar( "vip_headshot_hp", "15", "VIP va primit HP cand face frag cu headshot" ) MaxHP = CreateConVar( "vip_max_hp", "100", "HP-ul maxim pe care il poate avea un VIP" ) MoneyPerNormalKill = CreateConVar( "vip_normal_kill_money", "100", "VIP va primi acea suma de bani cand face frag" ) MoneyPerKnifeKill = CreateConVar( "vip_knife_kill_money", "1000", "VIP va primi acea suma de bani cand face frag cu cutitul" ) MoneyPerHeadShotKill = CreateConVar( "vip_headshot_kill_money", "150", "VIP va primi acea suma de bani cand face frag cu headshot" ) ShowBombsite = CreateConVar( "vip_show_bombsite", "1", "VIP de la ct vor vedea in ce bombsite au plantat teroristii bomba" ) HalfPlantTime = CreateConVar( "vip_bomb_plant_time", "2", "Timp in secunde pentru plantarea bombei de catre VIP" ) HalfDefuseTimeNoKit = CreateConVar( "vip_defuse_time_nokit", "5", "Timp necesar pentru ca VIP sa dea defuse bombei cand nu are kit" ) HalfDefuseTimeKit = CreateConVar( "vip_defuse_time_kit", "2.5", "Timp necesar pentru ca VIP sa dea defuse bombei cand are kit" ) Notify = CreateConVar( "vip_notify_on_bonus", "1", "VIP vor vedea mesaje in chat cand primesc hp, bani, etc" ) MoneyOffset = FindSendPropInfo( "CCSPlayer", "m_iAccount" ) RegConsoleCmd( "bhop", Command_ToggleBhop ) RegConsoleCmd( "vips", Command_ShowVips ) BhopCookie = RegClientCookie( "AutoBhop", "Cookie AutoBhop", CookieAccess_Protected ) HookEvent( "player_spawn", Event_PlayerSpawn ) HookEvent( "player_death", Event_PlayerDeath ) HookEvent( "announce_phase_end", Event_PhaseEnd ) HookEvent( "bomb_planted", Event_BombPlanted ) HookEventEx( "bomb_begindefuse", Event_BeginDefuse ) HookEventEx( "bomb_beginplant", Event_BeginPlant ) HookEvent( "round_end", Event_RoundEnd, EventHookMode_PostNoCopy ) } public OnMapStart( ) { RoundID = 0 IsPistolRound = false } public OnClientCookiesCached( client ) { decl String: UserCookie[ 5 ] GetClientCookie( client, BhopCookie, UserCookie, sizeof( UserCookie ) ) if( StrEqual( UserCookie, "1" ) && IsClientVip( client ) ) { CanBhop[ client ] = true } else { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) } } public OnClientPutInServer( client ) { SDKHook( client, SDKHook_WeaponSwitchPost, WeaponSwitchPost ) SDKHook( client, SDKHook_OnTakeDamage, OnTakeDamage ) } public Action: Event_PlayerSpawn( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && !IsFakeClient( client ) ) { if( IsClientVip( client ) ) { RemoveClientGrenades( client ) RequestFrame( GiveSpawnItems, client ) } } return Plugin_Continue } public Action: Event_PlayerDeath( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new victim = GetClientOfUserId( GetEventInt( event, "userid" ) ) new attacker = GetClientOfUserId( GetEventInt( event, "attacker" ) ) if( attacker > 0 && attacker < MaxClients && IsClientInGame( attacker ) && victim > 0 && victim < MaxClients && IsClientInGame( victim ) && IsClientVip( attacker ) && attacker != victim ) { new bool:Headshot = GetEventBool( event, "headshot" ) char Arma[ 64 ] GetEventString( event, "weapon", Arma, sizeof( Arma ) ) if( Headshot ) { if( GetConVarInt( MoneyPerHeadShotKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerHeadShotKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerHeadShotKill ) ) } } if( GetConVarInt( HpHeadShotKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpHeadShotKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpHeadShotKill ) ) } } } else if( ( StrContains( Arma, "knife", false ) != -1 ) || ( StrContains( Arma, "bayonet", false ) != -1 ) ) { if( GetConVarInt( MoneyPerKnifeKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerKnifeKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerKnifeKill ) ) } } if( GetConVarInt( HpKnifeKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpKnifeKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpKnifeKill ) ) } } } else { if( GetConVarInt( MoneyPerNormalKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerNormalKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerNormalKill ) ) } } if( GetConVarInt( HpNormalKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpNormalKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpNormalKill ) ) } } } } return Plugin_Continue } public Event_PhaseEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { IsPistolRound = true } public Event_BeginDefuse( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event,"userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfDefuseTimeKit ) || GetConVarBool( HalfDefuseTimeNoKit ) ) { CreateTimer( 0.0, DefuseBugFix, client ) } } } public Event_BeginPlant( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfPlantTime ) ) { new Bomb = GetEntPropEnt( client, Prop_Send, "m_hActiveWeapon" ) decl String: EntityName[ 20 ] GetEntityClassname( Bomb, EntityName, sizeof( EntityName ) ) if( StrEqual( EntityName, "weapon_c4", false ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_fArmedTime", GetGameTime()+GetConVarFloat( HalfPlantTime ) ) } } } } public Event_BombPlanted( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { if( GetConVarBool( ShowBombsite ) ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) decl String: Bombsite[ 64 ] GetEntPropString( client, Prop_Send, "m_szLastPlaceName", Bombsite, sizeof( Bombsite ) ) decl String: BombsiteBuffer[ 32 ] if( StrContains( Bombsite, "BombsiteA" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite A" ) } else if( StrContains( Bombsite, "BombsiteB" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite B" ) } for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) && GetClientTeam( i ) == 3 && IsPlayerAlive( i ) ) { PrintToChat( i, " \x04[VIP]\x02 %N\x10 has planted the bomb in\x04 %s", client, BombsiteBuffer ) } } } } } public Event_RoundEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { RoundID++ if( RoundID == 1 ) { IsPistolRound = true } else { IsPistolRound = false } } public Action: OnPlayerRunCmd( client, &buttons, &impulse, Float: vel[ 3 ], Float: angles[ 3 ], &weapon ) { if( IsClientVip( client ) && GetConVarBool( Bhop ) && CanBhop[ client ] ) { if( buttons & IN_JUMP && IsPlayerAlive( client ) && !( GetEntityFlags( client ) & FL_ONGROUND ) && !( GetEntityMoveType( client ) & MOVETYPE_LADDER ) ) { buttons &= ~IN_JUMP } } } public Action: DefuseBugFix( Handle: timer, any: client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) ) { new Bomb = FindEntityByClassname( MaxClients+1, "planted_c4" ) if( Bomb != -1 ) { if( GetEntProp( client, Prop_Send, "m_bHasDefuser" ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeKit ) ) } else { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeNoKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeNoKit ) ) } } } } public GiveSpawnItems( client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && GetClientTeam( client ) > 1 ) { if( GetConVarBool( Armor ) ) { SetEntProp( client, Prop_Send, "m_ArmorValue", 100 ) } if( GetConVarBool( Helmet ) && GetEntProp( client, Prop_Send, "m_ArmorValue" ) >= 1 ) { SetEntProp( client, Prop_Send, "m_bHasHelmet", 1 ) } if( GetConVarBool( HE ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_hegrenade" ) } if( GetConVarBool( Flash ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_flashbang" ) } if( GetConVarBool( Smoke ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_smokegrenade" ) } if( GetConVarBool( Molotov ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { switch( GetClientTeam( client ) ) { case 2: { GivePlayerItem( client, "weapon_molotov" ) } case 3: { GivePlayerItem( client, "weapon_incgrenade" ) } } } if( GetConVarBool( ExtraMoneyOnSpawn ) && MoneyOffset != -1 ) { SetEntProp( client, Prop_Send, "m_iAccount", GetEntProp( client, Prop_Send, "m_iAccount" ) + GetConVarInt( ExtraMoneyOnSpawn ) ) } if( GetConVarBool( Defuser ) && GetClientTeam( client ) == 3 && GetEntProp( client, Prop_Send, "m_bHasDefuser" ) < 1 ) { SetEntProp( client, Prop_Send, "m_bHasDefuser", 1 ) } } } public Action: Command_ToggleBhop( client, args ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { PrintToChat( client, " \x04[VIP]\x10 Auto-bhop cannot be used in pistol rounds!" ) return Plugin_Handled } if( GetConVarBool( Bhop ) && IsClientVip( client ) ) { if( CanBhop[ client ] ) { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x02 disabled\x10!" ) } else { CanBhop[ client ] = true SetClientCookie( client, BhopCookie, "1" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x06 enabled\x10!" ) } } else { PrintToChat( client, " \x04[VIP]\x10 You need to be\x06 VIP\x10 to use this command!" ) } return Plugin_Continue } public Action: Command_ShowVips( client, args ) { new Handle: OnlineVips = CreateMenu( OnlineVips_Handler ) SetMenuTitle( OnlineVips, "Online VIPS List" ) new OnlineVipsNum for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) ) { decl String: uNameBuffer[ 32 ] Format( uNameBuffer, sizeof( uNameBuffer ), "%N", i ) AddMenuItem( OnlineVips, "OnSelect", uNameBuffer, ITEMDRAW_DISABLED ) OnlineVipsNum++ } } if( OnlineVipsNum < 1 ) { if( OnlineVips != INVALID_HANDLE ) { CloseHandle( OnlineVips ) } PrintToChat( client, " \x04[VIP]\x10 There are no vips online!" ) } else { SetMenuExitButton( OnlineVips, true ) DisplayMenu( OnlineVips, client, 30 ) } } public OnlineVips_Handler( Handle: OnlineVips, MenuAction: action, client, menu ) { switch( action ) { case MenuAction_End: { if( OnlineVips != INVALID_HANDLE ) { CancelMenu( OnlineVips ) } } } } public Action: WeaponSwitchPost( client, weapon ) { if( IsClientVip( client ) && IsPlayerAlive( client ) && GetConVarBool( VipSpeed ) ) { SetEntPropFloat( client, Prop_Send, "m_flVelocityModifier", GetConVarFloat( SpeedAmmount ) ) } } public Action: OnTakeDamage( victim, &attacker, &inflictor, &Float:damage, &damagetype ) { if( inflictor > 0 && inflictor < MaxClients && IsClientInGame( inflictor ) && GetClientTeam( inflictor ) != GetClientTeam( victim ) ) { if( IsClientVip( inflictor ) && GetConVarBool( Damage ) ) { damage = ( damage * GetConVarInt( DamageAmount ) ) return Plugin_Changed } } return Plugin_Continue } stock bool: IsClientVip( client ) { if( GetUserFlagBits( client ) & VIP_FLAG ) { return true } return false } stock GetClientGrenades( client ) { new Explosive = GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) new Flashbang = GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) new Smokegrenade = GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) new Incendiary = GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) new Decoy = GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) return Explosive + Flashbang + Smokegrenade + Incendiary + Decoy } stock RemoveClientGrenades( client ) { if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 14 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 15 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 16 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 17 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 18 ) } } Informatii Plugin (beneficii) Cam tot ce contine acest VIP este controlabil cu ajutorul convar-urilor, fara sa fie necesare editari ale sursei! Are suport pentru rundele de pistoale, se poate seta ca pluginul sa nu ruleze in rundele de pistoale, Jucatorii VIP au auto-bhop care si-l pot dezactiva sau activa cu ajutorul unei comenzi (doar daca auto-bhop este permis prin convar), Jucatorii VIP pot primi armura mica la spawn, Jucatorii VIP pot primit casca la spawn, doar daca au deja armura pe ei, Jucatorii VIP de la CT pot primi defuse kit la spawn, Jucatorii VIP pot primit bani la spawn, Jucatorii VIP pot primi un set cu grenazi la fiecare spawn (1x HE, 1x Flash, 1x Molotov/Incendiary si 1x Smoke) Daca rulati un server casual nemodificat, unde poti avea maxim 3 grenazi jucatorii vor primi maximul de grenazi permise de server, iar surplusul nu va fi dropat pe jos, Jucatorii VIP pot primii HP atunci cand fac frag, in functie de frag-ul facut (HeadShot, kill cu lama, kill simplu), Jucatorii VIP pot primii bani in plus atunci cand fac frag, in functie de frag-ul facut (HeadShot, kill cu lama, kill simplu), Jucatorii VIP de la tero pot planta bomba mai repede decat un jucator normal, Jucatorii VIP de la CT pot da defuse bombei mai repede decat un jucator normal, Jucatorii VIP pot avea damage mai mare decat restul jucatorilor (disponibil de la versiunea 1.2), Jucatorii VIP pot avea viteza de miscare mai mare decat restul jucatorilor (disponibil de la versiunea 1.1) Jucatorii normali, cat si vipii, pot vedea ce vipi sunt online cu ajutorul comenzii !vips (disponibil de la versiunea 1.1), Jucatorii VIP de la CT pot vedea in chat in ce bombsite s-a plantat bomba, dupa ce o planteaza teroristul. Convar-uri (se adauga in autoexec.cfg) vip_give_armor - Daca este setat pe 1, jucatorii VIP vor primi 100 armura la fiecare spawn. Default: 1 vip_give_helmet - Daca este setat pe 1, jucatorii VIP vor primi casca la fiecare spawn, daca au deja armura. Default: 1 vip_autobhop - Daca este setat pe 1, jucatorii VIP pot avea auto-bhop. Default: 1 vip_give_ct_defuser - Daca este setat pe 1, jucatorii VIP de la CT vor primi defuser la fiecare spawn, daca nu au deja unul. Default: 1 vip_give_he - Daca este setat pe 1, jucatorii VIP vor primi cate un HE grenade la fiecare spawn. Default: 1 vip_give_flash - Daca este setat pe 1, jucatorii VIP vor primi cate un flash la fiecare spawn. Default: 1 vip_give_molotov - Daca este setat pe 1, jucatorii VIP vor primi cate un molotov/incendiary la fiecare spawn. Default: 1 vip_give_smoke - Daca este setat pe 1, jucatorii VIP vor primi cate un smoke la fiecare spawn. Default: 1 vip_give_money_on_spawn <suma> - Jucatorii VIP vor primi suma de bani respectiva la fiecare spawn. Default: 500 vip_normal_kill_hp - HP-ul primit de VIP atunci cand face un frag simplu. Default: 10 vip_knife_kill_hp - HP-ul primit de VIP atunci cand face un frag cu cutitul. Default: 30 vip_headshot_hp - HP-ul primit de VIP atunci cand face un frag cu headshot. Default: 15 vip_max_hp - HP-ul maxim pe care il poate avea un VIP. Default: 100 vip_normal_kill_money <suma> - Suma de bani pe care o primeste VIP cand face un frag simplu. Default: 100 vip_knife_kill_money <suma> - Suma de bani pe care o primeste VIP atunci cand face frag cu cutitul. Default: 1000 vip_headshot_kill_money <suma> - Suma de bani pe care o primeste VIP atunci cand face frag cu headshot. Default: 150 vip_bomb_plant_time <timp> - Cat timp (in secunde) sa dureze plantarea bombei la un VIP. Default: 2 (timp-ul default al jocului este 3.9 secunde) vip_defuse_time_nokit <timp> - Cat timp (in secunde) sa dureze dezamorsarea bombei de catre un VIP care nu are kit. Default 5 (timp-ul default al jocului este de 10 secunde) vip_defuse_time_kit <timp> - Cat timp (in secunde) sa dureze dezamorsarea bombei de catre un VIP care are kit. Default: 2.5 (timp-ul default al jocului este de 5 secunde) vip_disabled_on_pistol_round - Daca este setat pe 1, pluginul nu va rula in rundele de pistoale. Default: 1 vip_show_bombsite - Daca este setat pe 1, VIP in viata, de la CT, pot vedea in chat in ce bombsite au plantat teroristii bomba. Default: 1 vip_notify_on_bonus - Daca este setat pe 1, VIP va fie informat printr-un mesaj in chat atunci cand primeste un bonus specific VIP-ului (cum ar fi bani, hp). Default: 1 vip_fast_speed - Daca este setat pe 1, VIP vor avea viteza de miscare mai mare. Default: 1 vip_speed_amount - Valoarea multiplicatorului de viteza (vezi pagina 2 pentru detalii). Default 1.2 vip_high_damage - Daca este setat pe 1, VIP vor avea damage mai mare decat restul jucatorilor vip_damage_amount - Valoarea multiplicatorului de damage (vezi pagina 3 pentru detalii). Default 2 (damage dublu) Oricare dintre convar-urile de mai sus pot fi dezactivate daca sunt setate pe o valoare mai mica decat 1 (cum ar fi 0). La convar-urile de plantare si dezamorsare a bombei, daca sunt setate pe 1 va rezulta in plantarea/dezamorsarea instanta a bombei! Comenzi !bhop - poate fi folosita de catre VIP atunci cand vor sa-si activeze sau sa-si dezactiveze auto-bhop-ul, !vips - poate fi folosita de oricine. Cu ajutorul acestei comenzi poti vedea vipii online intr-un meniu. Changelog Versiunea 1.1: A fost adaugata comanda !vips ce arata vipii online intru-un meniu A fost adaugata viteza ce poate fi controlata prin convar-uri A fost adaugat convar-ul vip_fast_speed ce activeaza sau dezactiveaza viteza la vipilor A fost adaugat convar-ul vip_speed_ammount ce controleaza multiplicatorul de viteza al vipilor Versiunea 1.2 A fost adaugat damage ce poate fi controlat prin convar-uri A fost adaugat convar-ul vip_high_damage ce activeaza sau dezactiveaza damage-ul marit al vipilor A fost adaugat convar-ul vip_damage_amount ce controleaza multiplicatorul de damage al vipilor Convarul vip_speed_ammount a fost modificat in vip_speed_amount. Face acelasi lucru, doar numele a fost schimbat. Cei care faceti update, nu uitati sa modificati si numele acestui convar in autoexec.cfg Rezolvare spam din consola In cazul in care sunteti spamati in consola cu mesaje de genul: DataTable warning: player: Out-of-range value (1.20000000) in SendPropFloat 'm_flVelocityModifier', clamping. Acele mesaje nu va afecteaza cu nimic, nu sunt erori, sunt warning-uri, ceea ce inseamna ca este un simplu text si nu iti afecteaza serverul cu nimic. Daca totusi te enerveaza acel spam, pentru a scapa de el trebuie sa instalezi extensia Cleaner pe care o puteti descarca de aici: https://forums.alliedmods.net/showthread.php?t=195008 Instalare 1. Fisierul csgo_vip.sp se adauga in addons/sourcemod/scripting 2. Fisierul csgo_vip.smx se adauga in addons/sourcemod/plugins Orice modificare se cere si se ofera in acest topic, nu in PM. Raportarile de buguri se fac tot in acest topic. De preferat sa fie insotite de erorile din log-uri sau o poza / video daca nu sunt erori.
-
- 1
-
-
Descriere: Acest jucator printeaza in chat de unde se conecteaza jucatorul. Download: #include < sourcemod > #include < geoip > #pragma tabsize 0 public Plugin:myinfo = { name = "Join Message", author = "LondoN eXtream", description = "Arata tara de unde se conecteaza", version = "0.1", url = "http://www.extreamcs.com/forum" }; public OnClientPutInServer(Player) { new String:szName[32], String:szIP[32], String:szCountry[32]; GetClientName(Player, szName, sizeof(szName)); GetClientIP(Player, szIP, sizeof(szIP), true); GeoipCountry(szIP, szCountry, sizeof(szCountry)); PrintToChatAll("\x04[eXtreamCS.Com]\x03 Player\x04 %s\x03 joined from [\x04%s\x03]", szName, StrEqual(szCountry, "error") ? "N/A": szCountry); } [/sursa] Sunt incepator ? [/quote]
-
Nume plugin: New Admin Info Descriere: Pluginul de vipinfo e cam vechi, acum cateva saptmanii am incercat sa fac altu, dar am abandonat sursa prin foldere(pentru ca mi-a venit o idee mai buna pentru acest plugin) Il puteti folosii si modifica dupa bunul plac, dar va rog sa nu il vindeti/ sa va insusiti pluginul Autor: TheOne1812 Versiune: - Link oficial: - Instalare: 1. Fisierul "new_admin_info.sp" se adauga in "addons/sourcemod/scripting" 2. Fisierul "new_admin_info.smx" se adauga in "addons/sourcemod/plugins"Download: [sursa= ]#pragma semicolon 1 #define DEBUG #define PLUGIN_AUTHOR "kRatoss" #define PLUGIN_VERSION "0.1" #define OWNER "OWNER" #define CO "CO" #define MOD "MOD" #define ADMIN "ADMIN" #define VIP "VIP" #include <sourcemod> #include <sdktools> #pragma newdecls required public Plugin myinfo = { name = "NEW VIP INFO", author = PLUGIN_AUTHOR, description = "New VIP Info", version = PLUGIN_VERSION, url = "kround.ro" }; public void OnPluginStart() { RegConsoleCmd("sm_info", Command_info, "Opens the menu!"); RegConsoleCmd("sm_vipinfo", Command_info, "Opens the menu!"); //COMMANDS PENTRU GRAE & VIP RegConsoleCmd("sm_info_own", Command_Owner); RegConsoleCmd("sm_info_co", Command_Co); RegConsoleCmd("sm_info_mod", Command_Mod); RegConsoleCmd("sm_info_admin", Command_Admin); RegConsoleCmd("sm_info_vip", Command_Vip); //Some Info Timers CreateTimer(15.0, Timer_Info1); } public Action Timer_Info1(Handle timer) { if (GetRandomInt(0, 1) == 0) PrintToChatAll("\x01 \x04[VIP★ INFO]\x0C TYPE\x02 !INFO\x0C FOR ALL\x02 VIP★\x0C INFORMATION"); else PrintToChatAll("\x01 \x04[VIP★ INFO]\x0C SCRIE\x02 !INFO\x0C PENTRU TOATE DETALIILE\x02 VIP★"); } //MAIN MENU // public Action Command_info(int iId, int args) { if(IsClientInGame(iId)) { Menu MAIN_MENU = new Menu(MenuHandler1); MAIN_MENU.SetTitle("★PETURI (!GRADE, !OWNER)★"); MAIN_MENU.AddItem(OWNER, "★Owner ➤ 35 EURO"); MAIN_MENU.AddItem(CO, "★Co-Owner ➤ 25 EURO"); MAIN_MENU.AddItem(MOD, "★Moderator ➤ 15 EURO"); MAIN_MENU.AddItem(ADMIN, "★Admin ➤ 10 EURO "); MAIN_MENU.AddItem(VIP, "★VIP => 10/15 EURO"); MAIN_MENU.AddItem("", "Contact kRatoss To Buy!", ITEMDRAW_DISABLED); MAIN_MENU.AddItem("", "PaySafe/CS:GO Skins/PayPal", ITEMDRAW_DISABLED); MAIN_MENU.Display(iId, MENU_TIME_FOREVER); } } public int MenuHandler1(Handle MAIN_MENU, MenuAction action, int param1, int param2) { switch(action) { case MenuAction_Select: { char item[64]; GetMenuItem(MAIN_MENU, param2, item, sizeof(item)); if(StrEqual(item, "OWNER")) { ClientCommand(param1, "sm_info_own"); } else if(StrEqual(item, "CO")) { ClientCommand(param1, "sm_info_co"); } else if(StrEqual(item, "MOD")) { ClientCommand(param1, "sm_info_mod"); } else if(StrEqual(item, "ADMIN")) { ClientCommand(param1, "sm_info_admin"); } else if(StrEqual(item, "VIP")) { ClientCommand(param1, "sm_info_vip"); } } } } //CO-OWNER INFO MENU // public Action Command_Co(int iId, int args) { Menu comenu = new Menu(MenuCoHandler); comenu.SetTitle("★PRETURI (!GRADE, !OWNER)★"); comenu.AddItem("", "★ Tag in Chat & Tab"); comenu.AddItem("", "★ Acces to BANS"); comenu.AddItem("", "★ Accest to MAP Change"); comenu.AddItem("", "★ VERY HIGH Admin Immunity"); comenu.AddItem("", "★ Acces to RENAME"); comenu.AddItem("", "★ Acces to Gag, Slay, Kick, etc."); comenu.ExitBackButton = true; comenu.Display(iId, MENU_TIME_FOREVER); } public int MenuCoHandler(Handle comenu, MenuAction pAction, int iId, int iOption) { if (pAction == MenuAction_End) { CloseHandle(comenu); comenu = INVALID_HANDLE; } } //TRUSTED INFO MENU // public Action Command_Owner(int iId, int args) { Menu OwnMenu = new Menu(OwnMenuHandler); OwnMenu.SetTitle("★PRETURI (!GRADE, !OWNER)★"); OwnMenu.AddItem("", "★ Tag in Chat & Tab"); OwnMenu.AddItem("", "★ Acces To All Server Comamnds"); OwnMenu.AddItem("", "★ High Admin Immunity"); OwnMenu.AddItem("", "★ Entry Songs"); OwnMenu.ExitBackButton = true; OwnMenu.Display(iId, MENU_TIME_FOREVER); } public int OwnMenuHandler(Handle OwnMenuHandler, MenuAction pAction, int iId, int iOption) { if (pAction == MenuAction_End) { CloseHandle(OwnMenuHandler); OwnMenuHandler = INVALID_HANDLE; } } //MODERATOR INFO MENU // public Action Command_Mod(int iId, int args) { Menu MODmenu = new Menu(MODmenuHandler); MODmenu.SetTitle("★PRETURI (!GRADE, !OWNER)★"); MODmenu.AddItem("", "★ Tag in Chat & Tab"); MODmenu.AddItem("", "★ Acces to BANS"); MODmenu.AddItem("", "★ Accest to MAP Change"); MODmenu.AddItem("", "★ Normal Admin Immunity"); MODmenu.AddItem("", "★ Acces to RENAME"); MODmenu.AddItem("", "★ Acces to Gag, Slay, Kick"); MODmenu.ExitBackButton = true; MODmenu.Display(iId, MENU_TIME_FOREVER); } public int MODmenuHandler(Handle MODmenuHandler, MenuAction pAction, int iId, int iOption) { if (pAction == MenuAction_End) { CloseHandle(MODmenuHandler); MODmenuHandler = INVALID_HANDLE; } } //MODERATOR INFO MENU // public Action Command_Admin(int iId, int args) { Menu ADMINmenu = new Menu(ADMINmenuHandler); ADMINmenu.SetTitle("★PRETURI (!GRADE, !OWNER)★"); ADMINmenu.AddItem("", "★ Tag in Chat & Tab"); ADMINmenu.AddItem("", "★ Acces to BANS"); ADMINmenu.AddItem("", "★ Accest to MAP Change"); ADMINmenu.AddItem("", "★ Low Admin Immunity"); ADMINmenu.AddItem("", "★ Acces to Gag, Slay, Kick"); ADMINmenu.ExitBackButton = true; ADMINmenu.Display(iId, MENU_TIME_FOREVER); } public int ADMINmenuHandler(Handle ADMINmenuHandler, MenuAction pAction, int iId, int iOption) { if (pAction == MenuAction_End) { CloseHandle(ADMINmenuHandler); ADMINmenuHandler = INVALID_HANDLE; } } //MODERATOR INFO MENU // public Action Command_Vip(int iId, int args) { Menu VIPmenu = new Menu(VIPmenuHandler); VIPmenu.SetTitle("★PRETURI (!GRADE, !OWNER)★"); VIPmenu.AddItem("", "★ ★ PLATINA => 15 EURO"); VIPmenu.AddItem("", "★ ★ GOLD => 10 EURO"); VIPmenu.ExitBackButton = true; VIPmenu.Display(iId, MENU_TIME_FOREVER); } public int VIPmenuHandler(Handle VIPmenuHandler, MenuAction pAction, int iId, int iOption) { if (pAction == MenuAction_End) { CloseHandle(VIPmenuHandler); VIPmenuHandler = INVALID_HANDLE; } } [/sursa] Enjoy ? Il puteti folosii si modifica dupa bunul plac, dar va rog sa nu il vindeti/ sa va insusiti pluginul Pentru Bugguri >> https://steamcommunity.com/id/kratos1812/