Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

MYGO.pl

RSSy
  • Postów

    28654
  • Dołączył

  • Ostatnia wizyta

    nigdy
  • Wygrane w rankingu

    11

Treść opublikowana przez MYGO.pl

  1. This plugin simply fix survivor's pistol reload animation failed to play while reloading on empty mag. For instance when your pistol clip is out of mag, the pistol will play empty reload animation on viewmodel but for world model which if you go on thirdperson, it does not perform the reload animation. Thanks to Lux for helping me to find this DoAnimationEvent signature. Apparently someone already done this fix on [L4D2] Survivor Animation Fix thread. So if you use this plugin, be sure to separate it by removing it. Installation: 1. Download smx and place it in the plugins 2. Download txt and place it in the gamedata 3. Done, restart the server. Attached Files pistol_reload_fix.txt (338 Bytes) Get Plugin or Get Source (l4d2_pistol_reload_empty_fix.sp - 1.6 KB) l4d2_pistol_reload_empty_fix.smx (4.9 KB) Wyświetl pełny artykuł
  2. MYGO.pl

    plugin Vip

    Hey All ! I'm new here ! Please help me ! I don't know how script :( I need a Vip plugin with benefits 1. 100 Armor 2. Multijum 3.UnlimitedClip And if possible, when someone writes / vips to show the vip online + when you press TAB to show who is VIP !I don't wanna vip menu or guns ! Only this benefits ! Thank you all for helping! Przeczytaj cały wpis
  3. I cant find the plugin that gave random weapons everytime a player would respawn...or there isn't any? Thank you for your help Przeczytaj cały wpis
  4. Can anyone convert this plugin from adv_vault to fvault PHP Code: #include <amxmodx> #include <jctf> #include <adv_vault> #define PLUGIN "Rank - pega bandeiar" #define VERSION "1.0" #define AUTHOR "Zetsukt" new g_flagcaptured[ 33 ] new g_flagreturned[ 33 ] new g_vault new g_sort new g_playername[ 33 ][ 32 ] new motd[ 1536 ] new g_maxplayers new const g_sPrefix[] = "!t[!Fraternity!t]" enum { FLAGSCAPTURED, FLAGSRETURNED, MAX_FIELDS } new g_campos[MAX_FIELDS] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_vault = adv_vault_open("CaptureTheFlags", false) g_campos[FLAGSCAPTURED] = adv_vault_register_field(g_vault, "FlagsCaptured") g_campos[FLAGSRETURNED] = adv_vault_register_field(g_vault, "FlagsReturned") adv_vault_init(g_vault) g_sort = adv_vault_sort_create( g_vault, ORDER_DESC, 0, 2000, g_campos[ FLAGSCAPTURED ], g_campos[ FLAGSRETURNED ] ) register_event("HLTV", "round_start", "a", "1=0", "2=0") register_clcmd("say /pbrank", "ranking") register_clcmd("say /pbtop", "top10_flags") g_maxplayers = get_maxplayers() } public client_putinserver( id ) { get_user_name(id, g_playername[id], 31 ); g_flagcaptured[ id ] = 0 g_flagreturned[ id ] = 0 set_task( 15.0, "publicidad", id) LoadData( id ) } public client_disconnect( id ) { SaveData( id ) } public publicidad( id ) { chat_color( id, "%s !nEscreva !g/pbrank !npara ver seu rank de !tBandeiras Capturadas!n.", g_sPrefix ) chat_color( id, "%s !nEscreva !g/pbtop !npara ver o TOP10 de !tBandeiras Capturadas!n.", g_sPrefix ) } public jctf_flag(iEvent, id, iFlagTeam, bool:bAssist) { switch(iEvent) { case FLAG_RETURNED: { if(!bAssist) { g_flagreturned[ id ]++ } } case FLAG_CAPTURED: { if(!bAssist) { g_flagcaptured[ id ]++ } } } } public top10_flags( id ) { new flagsc, flagsr, keyindex, pj[ 32 ] static len len = 0 new toploop = min( adv_vault_sort_numresult( g_vault, g_sort ), 10 ) len += formatex(motd[len], sizeof motd-len, "<body bgcolor=#A4BED6>\ <table width=100%% cellpadding=2 cellspacing=0 border=0>\ <tr align=center bgcolor=#52697B>\ <th width=20%%>Posicao\ <th width=20%% align=left>Nome\ <th width=20%%>Bandeiras Capturadas\ <th width=20%%>Bandeiras Recuperadas"); for( new position=1; position <= toploop; position++ ) { keyindex = adv_vault_sort_position( g_vault, g_sort, position ) if( !adv_vault_get_prepare( g_vault, keyindex ) ) continue flagsc = adv_vault_get_field( g_vault, g_campos[ FLAGSCAPTURED ] ) flagsr = adv_vault_get_field( g_vault, g_campos[ FLAGSRETURNED ] ) adv_vault_get_keyname( g_vault, keyindex, pj, 31 ) len += formatex(motd[len], sizeof motd-len, "<tr align=center>"); len += formatex(motd[len], sizeof motd-len, "<td>%d", position); len += formatex(motd[len], sizeof motd-len, "<td align=left>%s", pj); len += formatex(motd[len], sizeof motd-len, "<td>%d", flagsc); len += formatex(motd[len], sizeof motd-len, "<td>%d", flagsr); } len += formatex(motd[len], sizeof motd-len, "</table></body>"); show_motd( id, motd, "Rank Pega Bandeira"); } public ranking( id ) { new rank = adv_vault_sort_key(g_vault, g_sort, 0, g_playername[ id ] ) if( !rank ) { chat_color(id, "%s !nVoce nao tem rank :/", g_sPrefix) } else chat_color(id, "%s !nSeu rank e !t%d !ncom !g%d !nbandeiras capturadas e !g%d !nrecuperadas", g_sPrefix, rank, g_flagcaptured[ id ], g_flagreturned[ id ]) } public round_start() { for(new id=1; id <= g_maxplayers; id++) { if( is_user_connected( id ) ) SaveData( id ) } adv_vault_sort_update(g_vault, g_sort) } public client_infochanged( id ) { if( !is_user_connected( id ) ) return static newname[ 32 ] get_user_info( id, "name", newname, charsmax( newname ) ) if( !equal(newname, g_playername[ id ] ) ) { set_task( 0.1, "LoadData", id ) } } public SaveData( id ) { if(!is_user_connected( id ) ) return; adv_vault_set_start( g_vault ) adv_vault_set_field( g_vault, g_campos[ FLAGSCAPTURED ], g_flagcaptured[ id ] ) adv_vault_set_field( g_vault, g_campos[ FLAGSRETURNED ], g_flagreturned[ id ] ) adv_vault_set_end( g_vault, 0, g_playername[ id ] ) } public LoadData( id ) { if(!adv_vault_get_prepare(g_vault, _, g_playername[ id ] ) ) return; g_flagcaptured[ id ] = adv_vault_get_field( g_vault, g_campos[ FLAGSCAPTURED ] ) g_flagreturned[ id ] = adv_vault_get_field( g_vault, g_campos[ FLAGSRETURNED ] ) } stock chat_color( const id, const input[], any:... ) { new count = 1, players[ 32 ] static msg[ 191 ] vformat( msg, 190, input, 3 ) replace_all( msg, 190, "!g", "^4" ) replace_all( msg, 190, "!n", "^1" ) replace_all( msg, 190, "!t", "^3" ) replace_all( msg, 190, "!t2", "^0" ) if ( id ) players[ 0 ] = id; else get_players(players, count, "ch" ) { for (new i = 0; i < count; i++) { if ( is_user_connected( players[ i ] ) ) { message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] ) write_byte( players[ i ] ) write_string( msg ) message_end() } } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par } */ Przeczytaj cały wpis
  5. I have original soccerjam mod and I want to change some features. I want when player disconnects, player's own deaths,kills,records are not removed for only current map. Look codes below, PHP Code: public client_disconnect(id) { if(is_kickball) { new x for(x = 1; x<=RECORDS; x++) MadeRecord[id][x] = 0 remove_task(id) if(ballholder == id ) { ballholder = 0 clearBall() } if(ballowner == id) { ballowner = 0 } GoalyPoints[id] = 0 PlayerKills[id] = 0 PlayerDeaths[id] = 0 is_dead[id] = false seconds[id] = 0 g_sprint[id] = 0 PressedAction[id] = 0 has_knife[id] = false; g_Experience[id] = 0 for(x=1; x<=UPGRADES; x++) PlayerUpgrades[id][x] = 0 } } When I removed PlayerKills = 0 , PlayerDeaths[id] = 0 and MadeRecord[id][x] = 0 when player 1 reconnected, the player 1's data is loaded but somebody else is connect who has not data, still player 1's own data is loaded. My request: I want when players close the game(quit) and reconnected the players data are loaded for only current map. The data should be save by player's steamid. I tried using tries but I am noob . Can you change this sma to my requests? You can using tries thanks. PHP Code: new x for(x=1; x<=maxplayers; x++) { if(is_user_connected(x)) { Event_Record(x, GOALY, GoalyPoints[x], 0) new kills = get_user_frags(x) new deaths = cs_get_user_deaths(x) setScoreInfo(x) if( deaths > 0) PlayerDeaths[x] = deaths if( kills > 0) PlayerKills[x] = kills } } Przeczytaj cały wpis
  6. Somenoe can help how i can do this in modern fakemeta function? I think it is related to "m_signals" // class CUnifiedSignals Some idea? PHP Code: #define m_flNextMapZoneTime 233 #define m_fClientMapZone 235 stock UpdatePlayerMapZones(iId) { // Make PreThink call CBasePlayer::HandleSignals at the next frame set_pdata_float(iId, m_flNextMapZoneTime, 0.0) // Clear mask from all MapZones, this will check it's specific huds // In this case we will clear the related StatusIcon message for "buyzone" set_pdata_int(iId, m_fClientMapZone, 0) } Przeczytaj cały wpis
  7. MYGO.pl

    Flag rank

    I searched a lot, but found nowhere someone could or has a capture flag rank in case the accurate rank shows how many flag were captured and retrieved and show flag top10 too I'm using Just Capture the Flag (CTF) v1.32c (26 Jun 2012) https://forums.alliedmods.net/showthread.php?t=132115 Przeczytaj cały wpis
  8. MYGO.pl

    Admin skin

    A friend made this plugin, but we are having some problems, there are some bugs still like a check for when the player changes teams doesn't have the same skin as before because this will be put into a flag capture mode and sometimes it happens that the team changes this is code someone knows how to do If someone has some suggestions will also be welcome PHP Code: #include <amxmodx> #include <amxmisc> #include <cstrike> #define PLUGIN "admin model" #define VERSION "1.0" #define AUTHOR "LKING01" #define ADMIN_LEVEL_Q ADMIN_LEVEL_C public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /model", "admin") } public plugin_precache() { precache_model("models/player/new/TR_01/TR_01.mdl") precache_model("models/player/new/CT_01/CT_01.mdl") // precache_model("") // precache_model("") // precache_model("") // precache_model("") // precache_model("") // precache_model("") } public admin(id) { if (get_user_flags(id) & ADMIN_LEVEL_H) { model_menu(id) } else { ChatColor(id, "!t[!gFlag HunTer's!t] Somente para admin!") } } public model_menu(id) { if ( !is_user_connected( id ) ) { return; } new menu = menu_create("\r[\wMENU DE PLAYER MODELS\r]\r", "player_models") switch ( get_user_team( id ) ) { case 1: { menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[TR]", "1", 0) menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[TR]", "2", 0) menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[TR]", "3", 0) menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[TR]", "4", 0) } case 2: { menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[CT]", "5", 0) menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[CT]", "6", 0) menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[CT]", "7", 0) menu_additem(menu, "\wPLAYER MODEL [ADMIN]-[CT]", "8", 0) } default: { menu_destroy( menu ); return; } } menu_setprop(menu, MPROP_EXITNAME, "Sair") menu_display(id, menu, 0); } public player_models(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,5, iName, 63, callback) new key = str_to_num(data) switch(key) { case 1 : cs_set_user_model(id, "TR_01") case 2 : cs_set_user_model(id, "") case 3 : cs_set_user_model(id, "") case 4 : cs_set_user_model(id, "") case 5 : cs_set_user_model(id, "CT_01") case 6 : cs_set_user_model(id, "") case 7 : cs_set_user_model(id, "") case 8 : cs_set_user_model(id, "") } menu_destroy(menu) return PLUGIN_HANDLED } stock ChatColor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); replace_all(msg, 190, "!n", "^1"); replace_all(msg, 190, "!t", "^3"); replace_all(msg, 190, "!t2", "^0"); if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } } Przeczytaj cały wpis
  9. Description: Display online admins by groups (or ranks). Example of output: Code: [SM] Owners: Ilusion, p1mple [SM] Mods: baitzera [SM] Helpers: ZyWhO?, ecov1ceCommands: Code: sm_adminsConfiguration file example: Code: "Display Admins" { // Name of the group - unique flag (groups below this group must not have this flag) "Owners" "z" "Mods" "d" "Helpers" "b" }GitHub: https://github.com/Ilusion9/sm-display-admins-by-groups Wyświetl pełny artykuł
  10. Hello, are there are any free umbrella swarm admin packs (without bugs) for cs 1.6? I lost mine by reseting windows. Thanks :) Przeczytaj cały wpis
  11. This Plugin By EZU Attached Files Password.smx (5.8 KB) Wyświetl pełny artykuł
  12. I made a sample amxx ,but it doesn't work well .When clients connected ,it makes clients change their name many times,cyclically! But I just want them to change one time . [.sma] .. public client_infochanged( id ) { if( is_user_admin(id) ) { format( newname, charsmax( newname ), "%s %s", tag1, oldname ); set_user_info( id, "name", newname ); return PLUGIN_HANDLED; } else { format( newname, charsmax( newname ), "%s %s", tag2, oldname ); set_user_info( id, "name", newname ) ; return PLUGIN_HANDLED; } return PLUGIN_HANDLED; } .. Is the code "return PLUGIN_HANDLED" has some thing worng? Przeczytaj cały wpis
  13. Quote: /* Do not edit this file unless you know what you are doing! */ "Games" { "csgo" { /* FFA patch bytes */ "Keys" { "LagCompPatch_Windows" "\xEB" "LagCompPatch_Linux" "\x90\x90\x90\x90\x90\x90" "TakeDmgPatch1_Windows" "\xEB" "TakeDmgPatch1_Linux" "\x90\x90\x90\x90\x90\x90" "TakeDmgPatch2_Windows" "\xEB" "TakeDmgPatch2_Linux" "\x90\x90\x90\x90\x90\x90" "CalcDomRevPatch_Windows" "\x90\x90\x90\x90\x90\x90" "CalcDomRevPatch_Linux" "\x90\x90" } "Offsets" { /* Patch offsets for FFA */ "LagCompPatch" { "windows" "81" "linux" "47" } "TakeDmgPatch1" { "windows" "714" "linux" "1244" } "TakeDmgPatch2" { "windows" "870" "linux" "6800" } /* Offset into gamerules constructor - bogo value linux/mac */ "g_pGameRules" { "windows" "49" "linux" "47" } /* Virtual indexes */ "IPointsForKill" { "windows" "82" "linux" "83" } "Weapon_GetSlot" { "windows" "292" "linux" "293" } "RemoveAllItems" { "windows" "388" "linux" "389" } "GiveAmmo" { "windows" "278" "linux" "279" } /* Next _two_ are detour byte "save" counts */ "DropWeaponsPatch" { "windows" "6" "linux" "6" } "CSWeaponDropPatch" { "windows" "6" "linux" "6" } "CalcDomRevPatch" { "windows" "86" "linux" "111" } } "Signatures" { "UTIL_Remove" { "library" "server" "windows" "\x55\x8B\xEC\x8B\x45\x2A\x85\xC0\x74\x2A\x83 \xC0\x2A\x50" "linux" "@_Z11UTIL_RemoveP11CBaseEntity" } "RoundRespawn" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x0C\x53\x56\x8B\xF1\x8B \x0D\x2A\x2A\x2A\x2A\x57\x8B\x01" "linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x4C\xA1\x2A \x2A\x2A\x2A\x8B\x5D\x08\x89\x04\x24\xE8\x2A\ x2A\x2A\x2A\x84\xC0\x0F\x85" } "OnTakeDamage" { "library" "server" "windows" "\x55\x8B\xEC\x83\xE4\xF0\x81\xEC\x28\x02\x00 \x00\x56\x57" "linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x2A\x2A\x00 \x00\x8B\x45\x0C\x8B\x75\x08\x8B\x10" } "WantsLagComp" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x10\x56\x57\x8B\xF9\x8B \x0D\x2A\x2A\x2A\x2A\x81\xF9\x2A\x2A\x2A\x2A\ x75" "linux" "\x55\x89\xE5\x83\xEC\x68\xA1\x2A\x2A\x2A\x2A \x89\x5D\xF4\x89\x75\xF8\x8B\x5D\x0C\x89\x7D\ xFC\x8B\x75\x08\x3D" } "CGameRules" { "library" "server" "windows" "\x56\x68\x2A\x2A\x2A\x2A\x8B\xF1\xE8\x2A\x2A \x2A\x2A\xA1" "linux" "\x55\x89\xE5\x83\xEC\x28\x89\x5D\xF4\x8B\x5D \x08\x89\x75\xF8\x89\x7D\xFC\xC7\x44\x24\x04\ x2A\x2A\x2A\x2A\x89\x1C\x24" } //ValveBiped.Bip01_R_Hand "CSWeaponDrop" { "library" "server" "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x83\xE4\xF8\x83\xC4 \x04\x55\x8B\x6B\x04\x89\x6C\x24\x04\x8B\xEC\ x83\xEC\x34\x56" "linux" "\x2A\x2A\x2A\x2A\x2A\x2A\xEC\x70\x8B\x5D\x08 \x0F\xB6\x75\x10" } "DropWeapons" { "library" "server" "windows" "\x55\x8B\xEC\x83\xE4\xF0\x81\xEC\x78\x02\x00 \x00\x83\x3D\x2A\x2A\x2A\x2A\x00" "linux" "\x55\x89\xE5\x83\xEC\x38\x0F\xB6\x45\x10\x89 \x5D\xF4\x89\x75\xF8\x8B\x5D\x08" } "CalcDominationAndRevenge" { "library" "server" "windows" "\x55\x8B\xEC\xA1\x2A\x2A\x2A\x2A\xB9\x2A\x2A \x2A\x2A\xFF\x50\x34\x85\xC0\x0F\x85\x2A\x2A\ x2A\x2A\x8B\x0D" "linux" "\x55\x89\xE5\x83\xEC\x38\x8B\x4D\x14\x89\x5D \xF4\xA1" } } } "cstrike" { /* FFA patch bytes */ "Keys" { "LagCompPatch_Windows" "\xEB" "LagCompPatch_Linux" "\x90\x90\x90\x90\x90\x90" "LagCompPatch_Mac" "\x90\x90\x90\x90\x90\x90" "TakeDmgPatch1_Windows" "\xEB" "TakeDmgPatch1_Linux" "\x90\x90\x90\x90\x90\x90" "TakeDmgPatch1_Mac" "\x90\x90\x90\x90\x90\x90" "TakeDmgPatch2_Windows" "\xEB" "TakeDmgPatch2_Linux" "\x90\x90\x90\x90\x90\x90" "TakeDmgPatch2_Mac" "\x90\x90\x90\x90\x90\x90" "CalcDomRevPatch_Windows" "\x90\x90\x90\x90\x90\x90" "CalcDomRevPatch_Linux" "\x90\x90" "CalcDomRevPatch_Mac" "\x90\x90\x90\x90\x90\x90" } "Offsets" { /* Patch offsets for FFA */ "LagCompPatch" { "windows" "46" "linux" "31" "mac" "32" } "TakeDmgPatch1" { "windows" "828" "linux" "564" "mac" "746" } "TakeDmgPatch2" { "windows" "828" "linux" "564" "mac" "746" } /* Offset into gamerules constructor - bogo value linux/mac */ "g_pGameRules" { "windows" "5" "linux" "1" "mac" "1" } /* Virtual indexes */ "IPointsForKill" { "windows" "80" "linux" "81" "mac" "81" } "Weapon_GetSlot" { "windows" "268" "linux" "269" "mac" "269" } "RemoveAllItems" { "windows" "342" "linux" "343" "mac" "343" } "GiveAmmo" { "windows" "252" "linux" "253" "mac" "253" } /* Next _two_ are detour byte "save" counts */ "DropWeaponsPatch" { "windows" "6" "linux" "6" "mac" "6" } "CSWeaponDropPatch" { "windows" "9" "linux" "6" "mac" "6" } "CalcDomRevPatch" { "windows" "65" "linux" "96" "mac" "86" } } "Signatures" { "UTIL_Remove" { "library" "server" "windows" "\x55\x8B\xEC\x56\x57\x8B\x7D\x08\x8B\xF1\x57 \xE8\x2A\x2A\x2A\x2A\x8B\x0D\x2A\x2A\x2A\x2A\ x57\x56" "linux" "@_Z11UTIL_RemoveP11CBaseEntity" "mac" "@_Z11UTIL_RemoveP11CBaseEntity" } "RoundRespawn" { "library" "server" "windows" "\x55\x8B\xEC\x51\x89\x2A\x2A\x8B\x2A\x2A\x8B \x10\x8B" "linux" "@_ZN9CCSPlayer12RoundRespawnEv" "mac" "@_ZN9CCSPlayer12RoundRespawnEv" } "OnTakeDamage" { "library" "server" "windows" "\x55\x8B\xEC\x81\xEC\x2A\x2A\x2A\x2A\x56\x89 \x4D\xFC\x8B\x45\x2A\x50\x8D\x8D\x2A\x2A\x2A\ x2A\xE8" "linux" "@_ZN9CCSPlayer12OnTakeDamageERK15CTakeDamage Info" "mac" "@_ZN9CCSPlayer12OnTakeDamageERK15CTakeDamage Info" } "WantsLagComp" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x10\xA1\x2A\x2A\x2A\x2A \x56\x8B\xF1\x57" "linux" "@_ZNK11CBasePlayer28WantsLagCompensationOnEn tityEPKS_PK8CUserCmdPK7CBitVecILi2048EE" "mac" "@_ZNK11CBasePlayer28WantsLagCompensationOnEn tityEPKS_PK8CUserCmdPK7CBitVecILi2048EE" } "CGameRules" { "library" "server" "windows" "\x55\x8B\xEC\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9 \x74\x07" "linux" "@g_pGameRules" "mac" "@g_pGameRules" } "CSWeaponDrop" { "library" "server" "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x01\x00\x00\x89\x4D \xFC\xC6\x45\x2A\x2A\x8B\x4D\x2A\xE8\x2A\x2A\ x2A\x2A\x0F\xB6\xC0" "linux" "@_ZN9CCSPlayer12CSWeaponDropEP17CBaseCombatW eaponbb" "mac" "@_ZN9CCSPlayer12CSWeaponDropEP17CBaseCombatW eaponbb" } "DropWeapons" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x2A\x89\x4D\x2A\xC7\x45 \x2A\x00\x00\x00\x00\xEB\x2A\x8B\x45\x2A\x83\ xC0\x01\x89\x45\x2A\x83" "linux" "@_ZN9CCSPlayer11DropWeaponsEbb" "mac" "@_ZN9CCSPlayer11DropWeaponsEbb" } "CalcDominationAndRevenge" { "library" "server" "windows" "\x55\x8B\xEC\x51\xA1\x2A\x2A\x2A\x2A\x89\x4D \xFC\x83\x78\x30\x00\x0F\x85\x2A\x2A\x2A\x2A\ x57\x8B" "linux" "@_ZN12CCSGameStats24CalcDominationAndRevenge EP9CCSPlayerS1_Pi" "mac" "@_ZN12CCSGameStats24CalcDominationAndRevenge EP9CCSPlayerS1_Pi" } } } } Someone who send me updated file, i will pay with paypal. PM if interested! Przeczytaj cały wpis
  14. Hello Guys! I have big news! All class playing afk bot is here! (But %30 finished) (Sorry, bad coded, codes are complex) Features -Pathfinding -All class playing AI -Auto enable for afk client -Smooth Aim -And More! Test Video Credits -Pelipokia | Some Stocks -tRololo312312 | AFK Bot plugin based on tRololo312312's "AFK Medic Bot" plugin Please Help For This. -Hide from the enemy (If health is low or enemy is ubered, etc.) -Demoman Sticky Traps -Auto Snipe for Sniper bots (in koth_ maps) -Engineer Bot improve -Improved Look Around -Join Taunting Players -Use Teleporter -Dedect Low Ammo -Reload Weapons For Battle -Improve PathFinding -Navigation Jumps -More Weapon Support -More Map Support Bugs -Engineer bots doesn't working on ctf_2fort -When bot stucked, sometimes jump not working AFK-Bots Can Play koth_ (all hoth maps) ctf_2fort Maps AFK-Bot uses map navigations nav_generate_fixup_jump_areas "0" For removes jump areas AFK Bot Requires Pathfollower & TF2 Stocks (tf2_flag.inc, tf2_meter.inc, weapons.inc) Pathfollower (Extension) : https://forums.alliedmods.net/showthread.php?t=312133 TF2 Stocks : https://forums.alliedmods.net/showthread.php?t=126357 Cvars Code: sm_afk_bot_version // Plugin Version sm_afk_bot_max_idle_time "60.0" // Maximum idle time, if any player reaches this time = afkbot enabled for this playerDon't use afk manager plugins for plugin works! Put "plugin.afkbot.cfg" to "tf\cfg\sourcemod\" If bot stucked = bad navigation file, ctf_2fort navigation is always bad generated (i give to you fixed version) Have Fun! Attached Files afk_bot.smx (51.4 KB) Get Plugin or Get Source (afk_bot.sp - 184.0 KB) plugin.afkbot.cfg (353 Bytes) ctf_2fort fixed navigation.zip (91.2 KB) Wyświetl pełny artykuł
  15. The first thing I would like to say - the philosophy of this library is that all manipulations are reproduced without creating and needing additional files on the server. This library is under development and because of this - WINDOWS ONLY. It was posted to show the capabilities of the library, as well as possible feedback. Special thanks to Kailo for assistance in training ASM, working with debugger/IDA This "weapon" was created for convenient work with other .dll, because in SourcePawn functions you can work only with 3 => server/engine/matchmaking_ds What came of this? - Let's look at its structure => PHP Code: #define Pointer Address #define nullptr Address_Null #define PTR(%0) view_as<Pointer>(%0) OS GetServerOS() int HexToDec(const char[] hex) int IsHexSymbol(int ch) enum struct MemoryEx { Pointer pAddrBase; OS os; bool bSaveBytes; bool bInit; ModifByte lastModif; ArrayList hModifList; StringMap hModules; // --------------functions-------------- bool Init(); OS GetOS(); void GetWindowsVersion(int& iMajorVer, int& iMinorVer); void SetAddr(any address); Pointer GetAddr(); void Add(any iOffset); void SaveBytes(bool save); bool NeedSave(); void RestoreBytes(); void ChangeSettings(bool bSave = true); Pointer InitModule(const char[] sName); Pointer GetBaseAddress(const char[] sName); int GetModuleSize(const char[] sName); Pointer GetEndModule(const char[] sName); Pointer GetModuleHandle(const char[] name); Pointer GetProcAddress(const char[] sLibrary, const char[] sName); Pointer FindPattern(Pointer base, any size, const int[] pattern, int iLength, int iOffset = 0); int ReadByte(int iOffset = 0); void WriteByte(any iByte, int iOffset = 0, int flags = MemoryEx_NoNeedAdd); int ReadWord(int iOffset = 0); void WriteWord(any iWord, int iOffset = 0, int flags = MemoryEx_NoNeedAdd); int ReadInt (int iOffset = 0); void WriteInt(any iNumber, int iOffset = 0, int flags = MemoryEx_NoNeedAdd); void WriteData(const int[] data, int iSize, int flags = MemoryEx_NoNeedAdd); int ReadString(char[] sString, int iMaxLength); void WriteString(const char[] sString, bool bNull = true, int flags = MemoryEx_NoNeedAdd); void WriteUnicodeString(const char[] sString, bool bNull = true, int flags = MemoryEx_NoNeedAdd); Pointer FindString(const char[] sModule, const char[] sString); Pointer FindUnicodeString(const char[] sModule, const char[] sString); Pointer FindValue(const char[] sModule, any iValue, int iNextByte = 0x2A ); } The most interesting feature as for me -> Pointer GetModuleHandle(const char[] name) which calls and returns the result of WINAPI GetModuleHandleW through SourcePawn :) What an interesting feature GetModuleHandle? MemoryEx calls the WINAPI function GetModuleHandleW to get the Base Address of any library. What is she doing? As you can see, the first argument it takes is the name of the library whose address you need to get, but to use GetModuleHandleW, you need a unicode string. What to do? - That's why the function MemoryEx :: WriteUnicodeString was created. In free memory, we generate this line, indent a little [0x10] and we need to create a function that calls it, pseudo-code on ASM => PHP Code: push [string address] call dword ptr [GetModuleHandleW] retn What does this library do? GetModuleHandleW in server.dll is used in two cases and in all - it uses kernel32.dll as an input parameter. Therefore, we are looking for the address of this string, and you can use MemoryEx::FindString, but because it is unicode - we use MemoryEx::FindUnicodeString. After we find the address of this line - we look for where this line is used through MemoryEx::FindValue. You can also notice that the last argument in this function is the auxiliary byte 0xFF, what is it? PHP Code: .text:1072C378 56 push esi .text:1072C379 68 EC D5 79 10 push offset aKernel32Dll_0 ; "kernel32.dll" .text:1072C37E FF 15 F4 E0 78 10 call ds:GetModuleHandleW If we analyze where this line is used, we can see that always after it comes call ds: GetModuleHandleW, i.e. the first byte = 0xFF. And so, we found out where kernel32.dll is used - now we do the offset + 0x6 and thereby load the GetModuleHandleW address. And so, how does it look in the library? => PHP Code: Pointer pKernelStr = this.FindUnicodeString("server", "kernel32.dll"); Pointer module = this.FindValue("server", pKernelStr, 0xFF) + PTR(0x06); if(pKernelStr == nullptr || module == nullptr) { this.ChangeSettings(false); LogStackTrace("GetModuleHandles failed -> Base = 0x%X pKernelStr 0x%X module 0x%X end = 0x%X", g_ServerDLL.base, pKernelStr, module, g_ServerDLL.base + PTR(g_ServerDLL.size) ); return nullptr; } module = PTR(LoadFromAddress(module, NumberType_Int32)); Further actions are: PHP Code: static int offsetForString = 0x10; // offset between string and function static int offsetForEnd = 0x100; int iLengthStr = strlen(name); this.SetAddr((view_as<int>(g_ServerDLL.base) + g_ServerDLL.size) - offsetForEnd - offsetForString - (iLengthStr * 2)); // Address for string Pointer pString = this.GetAddr(); // this.WriteUnicodeString(name) returns us the address where the last byte of the line was written and we are doing a small offset to write the function itself. this.SetAddr( this.WriteUnicodeString(name) + PTR(offsetForString)); Pointer pFunc = this.GetAddr(); // Will Implement the function from the pseudocode, which was higher this.WriteByte(0x68, _, MemoryEx_AddAfterWrite); // push this.WriteInt(pString, _, MemoryEx_AddAfterWrite); // string address this.WriteWord(0x15FF, _, MemoryEx_AddAfterWrite); // call dword ptr this.WriteInt(module, _, MemoryEx_AddAfterWrite); // Address GetModuleHandleW this.WriteByte(0xC3, _, MemoryEx_AddAfterWrite); // retn To make it more clear, this eventually led to this: Result Next, just call SDKCall and get the Base Address of any dll that interests us PHP Code: StartPrepSDKCall(SDKCall_Static); PrepSDKCall_SetAddress(pFunc); PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain); Handle h = EndPrepSDKCall(); Pointer iRes = SDKCall(h); Descriptions of some functions: MemoryEx::Init You must call this function when initializing MemoryEx, it determines the OS of the server, base address + size server.dll / .so. This allows you to use all the functions from this library. If you try to find some line, but don't do Memory::Init(), then your plugin will cause a similar error Code: L 12/18/2019 - 19:33:28: [SM] Stack trace requested: MemoryEx wasn't be initialized L 12/18/2019 - 19:33:28: [SM] Called from: nobots_bypass.smx L 12/18/2019 - 19:33:28: [SM] Call stack trace: L 12/18/2019 - 19:33:28: [SM] [0] LogStackTrace L 12/18/2019 - 19:33:28: [SM] [1] Line 437, E:\server\bhopserver\csgo\addons\sourcemod\records\2\include\MemoryEx.inc::MemoryEx::GetModuleSize L 12/18/2019 - 19:33:28: [SM] [2] Line 735, E:\server\bhopserver\csgo\addons\sourcemod\records\2\include\MemoryEx.inc::MemoryEx::FindString L 12/18/2019 - 19:33:28: [SM] [3] Line 18, nobots_bypass.sp::OnPluginStart MemoryEx::SaveBytes/MemoryEx::NeedSave/MemoryEx::RestoreBytes void MemoryEx::SaveBytes(bool) - Do need to save bytes that were changed during work the plugin. bool MemoryEx::NeedSave => true - Do need to save bytes. void MemoryEx::RestoreBytes - restores all changed bytes. Example: PHP Code: #include <MemoryEx> MemoryEx g_hMem; public void OnPluginStart() { RegServerCmd("sm_nobots", Cmd_NoBots); } public Action Cmd_NoBots(int iArgs) { if(iArgs) { g_hMem.RestoreBytes(); } else { if(g_hMem.Init()) { g_hMem.SaveBytes(true); Pointer pEnd = g_hMem.GetEndModule("server"); g_hMem.SetAddr(pEnd - PTR(0x200)); g_hMem.WriteString("Memory", _, MemoryEx_AddAfterWrite); g_hMem.WriteUnicodeString("Extended", _, MemoryEx_AddAfterWrite); g_hMem.WriteByte(0x31, _, MemoryEx_AddAfterWrite); g_hMem.WriteWord(0x32, _, MemoryEx_AddAfterWrite); g_hMem.WriteInt(0x33, _, MemoryEx_AddAfterWrite); } } } Result [Gif] GetModuleHandle/InitModule/GetBaseAddress/GetModuleSize/GetEndModule Pointer GetModuleHandle(const char[] library) - Returns the Base Address of the specified module [Based WINAPI GetModuleHandleW]. "0" - Returns the address of srcds. Pointer InitModule(const char[] library) - Initializes the Base/End address of the specified module Pointer GetBaseAddress(const char[] library) - Returns Base Address from an initialized module int GetModuleSize(const char[] library) - Returns the initialized module size Pointer GetEndModule(const char[] library) - Returns the address of the last initialized byte of the module [MemoryEx::GetBaseAddress + MemoryEx::GetBaseAddres] Example: PHP Code: #include <MemoryEx> public void OnPluginStart() { MemoryEx mem; if(!mem.Init()) return; Pointer base = mem.GetModuleHandle("kernel32.dll"); Pointer base1 = mem.InitModule("kernel32.dll"); Pointer base2 = mem.GetBaseAddress("kernel32.dll"); Pointer srcds = mem.GetModuleHandle("0"); int size = mem.GetModuleSize("kernel32.dll"); Pointer end1 = base1 + PTR(size); Pointer end2 = mem.GetEndModule("kernel32.dll"); PrintToServer("base [0x%X] == base1 [0x%X] == base2 [0x%X] size [0x%X] end1 [0x%X] == end2 [0x%X] srcds [0x%X]", base, base1, base2, size, end1, end2, srcds); } Result Examples of using 1) Inject .dll through SourcePawn [GetProcAddress + call WINAPI LoadLibraryA] PHP Code: #include <MemoryEx> public void OnPluginStart() { MemoryEx mem; if(!mem.Init()) return; mem.InitModule("kernel32.dll"); Pointer libAddr = mem.GetProcAddress("kernel32.dll", "LoadLibraryA"); StartPrepSDKCall(SDKCall_Static); PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); PrepSDKCall_SetAddress(libAddr); PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain); Handle h = EndPrepSDKCall(); int baseDLL = SDKCall(h, "D:/CSS_HOOK.dll"); delete h; PrintToServer("libaddr = 0x%X Base Address DLL = 0x%X ",libAddr, baseDLL); } Result What will my plugin `bypass nobots` look like if I will code it for a given library? Sometimes in the plugin - it is necessary to update the gamedate. Now we can just find the necessary word and "destroy it" PHP Code: #include <MemoryEx> public void OnPluginStart() { MemoryEx mem; if(mem.Init()) { Pointer pStr = mem.FindString("server", "-nobots"); if(pStr != nullptr) { mem.SetAddr(pStr + PTR(0x01)); // bypass `-` for(int y = 0; y < 6; y++) mem.WriteByte(GetRandomInt(0x61, 0x7A), y); } } } Another way is through MemoryEx::FindPattern PHP Code: #include <MemoryEx> public void OnPluginStart() { static int pattern[8] = {0x2D, 0x6E, 0x6F, 0x62, 0x6F, 0x74, 0x73, 0x00}; // `-nobots`; MemoryEx mem; if(mem.Init()) { ModuleInfo server; server.base = mem.GetBaseAddress("server"); server.size = mem.GetModuleSize("server"); Pointer pStr = mem.FindPattern(server.base, server.size, pattern, sizeof(pattern), 0x01); // bypass `-` if(pStr != nullptr) { mem.SetAddr(pStr); for(int y = 0; y < 6; y++) mem.WriteByte(GetRandomInt(0x61, 0x7A), y); } } } Attached Files MemoryEx.inc (19.8 KB) Wyświetl pełny artykuł
  16. The plugin allows to search prisoners. The search can be performed with any blue, but melee weapon only, for this you need to go close to the prisoner (distance of melee attack) and hold down the reload button. The search indicator appears. The search lasts from 5 to 7 seconds, there is a 5% chance that the weapon will not be detected. If the weapon is still found, then the prisoner will be given a riot and put a plug-in label, which can be used in third-party plugins to indicate that the player has a weapon. Players must stand still, otherwise the search will be interrupted. Requirements: MoreColors https://forums.alliedmods.net/showthread.php?t=185016 TF2Jail Redux https://forums.alliedmods.net/showthread.php?p=2626905 Attached Files search.7z (3.2 KB) Wyświetl pełny artykuł
  17. About This is the first plugin I uploaded to AlliedModders so feedback is appreciated! This plugin is intended to pause the game via a command. Admins with the flag I (or ADMFLAG_CONFIG) are the only ones that can use the commands. When an admin runs the pause command, everyone freezes, nobody can move or adjust eye angles. Admins can also unpause the server so everyone can again move and aim. The plugin is actually quite simple so I don't really see why I should write a bible about it. Commands/CVars CVars: None Commands: sm_pause, sm_unpause (in chat; !pause, !unpause, /pause, /unpause) Attached Files Get Plugin or Get Source (sm_pause.sp - 2.4 KB) sm_pause.smx (4.9 KB) Wyświetl pełny artykuł
  18. Hello Guys, I maked plugin for TFBots. TFBots now can use melee weapons. Cvars Code: tf_bot_melee_range "200.0" // Default is 200.0Have Fun! Attached Files Get Plugin or Get Source (tf_bot_melee_enabler.sp - 7.8 KB) Wyświetl pełny artykuł
  19. Hello Guys, I maked plugin for tfbots sd_doomsday support (but not sd_ maps only sd_doomsday). maybe, i add gameplay video Plugin Requires Pathfollower & TF2 Stocks (tf2_flag.inc) Pathfollower (Extension) : https://forums.alliedmods.net/showthread.php?t=312133 TF2 Stocks : https://forums.alliedmods.net/showthread.php?t=126357 IF YOU WANT COMPILE THIS PLUGIN? Remove "#pragma newdecls required" in line 6 (PathFollower.inc) (for plugin using old code style) Have Fun! Attached Files sd_doomsday_bots.smx (11.7 KB) Get Plugin or Get Source (sd_doomsday_bots.sp - 14.3 KB) Wyświetl pełny artykuł
  20. Medics cant use vaccinator. Hello Guys, I maked plugin for medic bots use vaccinator. Attached Files Get Plugin or Get Source (tf_bot_medic_fix.sp - 5.7 KB) Wyświetl pełny artykuł
  21. Addons-ul este creat de mine, si am decis sa il vand.Pretul este de 15 euro, deoarece este classic.Mai acord si reduceri.Pentru alte detalii dm.Sau ma puteti contacta pe insta :georgeflr99 This addons was created by myself.I'm selling it because i don't have much time to play or to create a server.Details: georgeflr99 on instagram or dm me here! Wyświetl pełny artykuł
  22. I think there was a plugin that was like if a player reaches certain score in DeathMatch he would be declared winner.. But i cant seem to find it Thank you for your help Przeczytaj cały wpis
  23. I have been searching for fraglimit plugin which sets fraglimit to 50 and the one who does 50 kills will show in hud "blabla has won the match".....i found plugin i tried but it has bugs Przeczytaj cały wpis
  24. Hello i want to ask i see very much server using models and everything other but dont need to download, model are in server player can join and not need to download its possible or how make this ? Przeczytaj cały wpis
  25. Description This plugin creates Snoweffects without the usage of func precipitation , instead it uses the env_smokestack(snowparticles) and the info_particle_system(snowdust). Cvars "sm_snoweffects_enabled" (0= off, 1= on(default)). Credits Blueraja for the original Idea. ToDo Maybe add some more effects ,add compabiltity to other games, maybe find a way to disable snoweffects in buildings/rooms. Attached Files Get Plugin or Get Source (sm_snoweffects.sp - 7.4 KB) sm_snoweffects.smx (7.1 KB) Wyświetl pełny artykuł
×
×
  • Dodaj nową pozycję...