Veteran Member
Join Date: Jun 2015
Location: de_dust2
|
05-27-2017
, 14:17
[CS:GO] New Gamemode - Touchdown (2.12 | 2020/3/24)
|
#1
|
Description
Touchdown is a gamemode from online game S4 League.
I'm trying my best to bring this gamemode to CSGO, so I take the sound effects, bgms, and overlays from original game.
You can play with bots in this gamemode with kento_touchdown_bot.smx installed.
How To Play
Capture the ball and take it to the opposing team's goal, it's very similar to American Football.
S4 League Wiki http://s4league.wikia.com/wiki/Touchdown
Install- Simply upload all the files to your server and fastdl.
- Install Steamworks extention.
- If you want to use rank and stats system, add this in your "databases.cfg". (Rank and stats system are disabled by default!)
Code:
"touchdown"
{
"driver" "mysql"
"host" "your_host"
"database" "your_database"
"user" "your_user"
"pass" "your_pw"
//"timeout" "0"
"port" "3306"
}
Configure- Choose a well balanced map. (THIS IS VERY IMPORTANT!)
- Use "sm_td" command, open the menu to spawn team flags and ball, and save your settings.
- Reload the map.
Client Commands
Spoiler
PHP Code:
sm_guns //Weapon Menu sm_vol //Change sound effect volume. sm_rank //Show your touchdown rank sm_stats //Show your touchdown stats sm_top //Show top players
Admin Commands
Spoiler
PHP Code:
sm_resetball //Reset Ball (need ADMFLAG_GENERIC) sm_td //Gamemode Settings Menu (need ADMFLAG_GENERIC)
Cvars
Spoiler
PHP Code:
sm_touchdown_respawn "8.0" //Respawn Time sm_touchdown_reset "15.0" //How long to reset the ball if nobody takes the ball after ball drop sm_touchdown_ball_position "1" //Where to attach the ball when player get the ball? 0 = front, 1 = head sm_touchdown_taser "1" //Give player taser? sm_touchdown_healthshot "1" //Give player healthshot? sm_touchdown_stats_enabled "0" //Enable stats or not? (MYSQL only!) sm_touchdown_stats_min "4" //Min player to count stats. sm_touchdown_stats_table "touchdown" //MySQL table name for touchdown."); sm_touchdown_points_enabled "0" //Enable points or not? sm_touchdown_points_td "10" //How many points player can get when he touchdown? sm_touchdown_points_kill "2" //How many points player will get when he kill? sm_touchdown_points_assist "1" //How many points player can get when he assist kill? sm_touchdown_points_bonus "2.0" //Offense / Defence bonus multiplier sm_touchdown_points_death "0" //How many points player will lose when he killed? sm_touchdown_points_dropball "0" //How many points player will lose when he drop ball? sm_touchdown_points_killball "0" //How many points player will get when he kill ball holder? sm_touchdown_points_pickball "2" //How many points player will get when he pick up the ball? sm_touchdown_points_start "0" //Starting points sm_touchdown_points_min_enabled "1" //Enable minimum points? sm_touchdown_points_min "0" //Minimum points sm_touchdown_bgm_enabled "1" //Enable BGM or not? sm_touchdown_quake_enabled "1" //Enable quake sounds or not? (all kill sounds)
Web Interface
I have edited this rankme interface for this gamemode.
For Developers
I have created some natives and forwards for this plugin. You can make 3rd party plugin for this gamemode. (Maybe zep store credits?)
Spoiler
kento_touchdown.inc
Spoiler
PHP Code:
#if defined _Touchdown_included #endinput #endif #define _Touchdown_included
/** * Gets the ball holder. * * @return client id. */ native int Touchdown_GetBallHolder();
/** * Gets which team drop the ball. * * @return TR = 2, CT = 3. */ native int Touchdown_GetBallDropTeam();
/** * Is client ball holder? * * @param client Client id. * @return True if client holding the ball. */ native bool Touchdown_IsClientBallHolder(int client);
/** * Gets client points. * * @return client points. */ native int Touchdown_GetClientPoints(int client);
/** * Gets client kills. * * @return client points. */ native int Touchdown_GetClientKills(int client);
/** * Gets client deaths. * * @return client points. */ native int Touchdown_GetClientDeaths(int client);
/** * Gets client assists. * * @return client points. */ native int Touchdown_GetClientAssists(int client);
/** * Gets client touchdown. * * @return client points. */ native int Touchdown_GetClientTouchdown(int client);
/** * Gets client kill ballholder. * * @return client points. */ native int Touchdown_GetClientKillball(int client);
/** * Gets client drop ball. * * @return client points. */ native int Touchdown_GetClientDropball(int client);
/** * Gets client pickup ball. * * @return client points. */ native int Touchdown_GetClientGetball(int client);
/** * Called when a player drop the ball. * * @param client Player index. * @return No return */ forward Action Touchdown_OnPlayerDropBall(int client);
/** * Called when a player kill the ball holder. * * @param ballholder Ball Holder. * @param attacker Attacker. * @return No return */ forward Action Touchdown_OnPlayerKillBall(int ballholder, int attacker);
/** * Called when the ball reset. * * @return No return */ forward Action Touchdown_OnBallReset();
/** * Called when a player get the ball. * * @param client Player index. * @return No return */ forward Action Touchdown_OnPlayerGetBall(int client);
/** * Called when a player touchdown. * * @param client Player index. * @return No return */ forward Action Touchdown_OnPlayerTouchDown(int client);
/** * Gets the ball origin. * * @return true on success, otherwise false. */ native bool Touchdown_GetBallOrigin(float origin[3]);
/** * Gets the team's flag origin. * * @param team Flag of team. * @param origin Flag origin. * @return true on success, otherwise false. */ native bool Touchdown_GetFlagOrigin(int team, float origin[3]);
Example plugin: kento_touchdown_test
Spoiler
PHP Code:
#include <sourcemod> #include <kento_touchdown>
#pragma newdecls required
// Teams #define SPEC 1 #define TR 2 #define CT 3
public Plugin myinfo = { name = "[CS:GO] Touch Down Sample 3rd Party Plugin", author = "Kento from Akami Studio", version = "1.0", description = "Test touchdown natives and forwards", url = "https://github.com/rogeraabbccdd/CSGO-Touchdown" };
public void OnPluginStart() { RegConsoleCmd("sm_tdtest", Command_Test, "Test"); }
public Action Touchdown_OnPlayerDropBall(int client) { char clientname [PLATFORM_MAX_PATH]; GetClientName(client, clientname, sizeof(clientname)); PrintToChatAll("%s drop the ball!", clientname); }
public Action Touchdown_OnBallReset() { PrintToChatAll("ball reset"); }
public Action Touchdown_OnPlayerGetBall(int client) { char clientname [PLATFORM_MAX_PATH]; GetClientName(client, clientname, sizeof(clientname)); PrintToChatAll("%s get the ball!", clientname); }
public Action Touchdown_OnPlayerTouchDown(int client) { char clientname [PLATFORM_MAX_PATH]; GetClientName(client, clientname, sizeof(clientname)); PrintToChatAll("%s touchdown", clientname); }
public Action Touchdown_OnPlayerKillBall(int ballholder, int attacker) { char ballholdername [PLATFORM_MAX_PATH]; GetClientName(ballholder, ballholdername, sizeof(ballholdername)); char attackername [PLATFORM_MAX_PATH]; GetClientName(attacker, attackername, sizeof(attackername)); PrintToChatAll("%s kill the ball holder %s", attackername, ballholdername); }
public Action Command_Test(int client, int args) { char ballholdername [PLATFORM_MAX_PATH]; GetClientName(Touchdown_GetBallHolder(), ballholdername, sizeof(ballholdername)); PrintToChat(client, "Ball Drop Team %i", Touchdown_GetBallDropTeam()); PrintToChat(client, "Ball Holder %s", Touchdown_GetBallHolder()); if(Touchdown_IsClientBallHolder(client)) PrintToChat(client, "You are the ball holder"); else if(!Touchdown_IsClientBallHolder(client)) PrintToChat(client, "You are NOT the ball holder"); }
Changelog
Spoiler
1.0
1.1 - Freeze all players except who touchdown in round end. (like original S4)
- Only the player who touchdown can fire his weapon in round end. (like original S4)
- Fixed sm_ballreset.
- Fixed ball bounce sound, sound should from the ball, not the player.
1.2
1.3
1.4 - Fixed bugs.
- All players can't fire weapon and move if time is up.
1.5 - Fixed warmup, now you can add warmup in this gamemode.
- New bgm "Come On" which is played in map "Tunnel" in S4.
- New bgm "Access" which is played in map "Neoniac" in S4.
- New bgm "Grave Consequence" which is played in map "Colosseum" in S4.
- New bgm "Syriana" which is played in map "Side 3" in S4.
- New bgm "StarFish" which is played in map "Warp Ship" in S4.
- New bgm "NB Power" which is played in map "Circle" in S4.
2.0 - Added Stats and rank system.
- Removed respawn timer in warmup.
- Added healthshot and taser. (You can disable this by cvar.)
- Added more natives.
2.1 - Removed insert sql query in error log. (I forgot to remove this before release.)
- Fixed kill timer bug.
2.2 - Fix kill messages display wrong point.
- Fix mp_ignore_round_win_conditions cause warmup not end problem.
2.3
2.4 - Fix no touchdown in databases.cfg plugin failed to load.
- Change !vol limit from "0.2~1.0" to "0.0~1.0".
- Points and stats are disabled by default now.
- Start cleaning my shit code.
2.5 - Add player dead sound. (Use original S4 sound.)
- Add dissolve effect to dead bodies. (Like original S4.)
2.6
2.7 - Optimize.
- Fix workshop map name.
- Now spec can hear kill, death, attack, defence, respawn and match end sounds.
2.8 - Disable bot_quota 0.
- Added new natives.("Touchdown_GetBallOrigin" and "Touchdown_GetFlagOrigin", Big thanks to Zeisenx)
- Fix EmitSound BGM. (Big thanks to Zeisenx).
- Added bot AI plugin (Big thanks to Zeisenx).
- Now require Steamworks to get Steam64 ID. (Sometimes GetClientAuthId returns "STEAM_ID_STOP_IGNORING_RETVALS" in my test server, but Steamworks don't.)
2.9 - Make gamemode easier to configure.
- New admin command "sm_td".
2.10 - Fix player spawn with no weapon and can't get ball.
- Add random weapon for bots.
- Add sm_touchdown_bgm_enabled
- Add sm_touchdown_quake_enabled
- Add MP5-SD
- Add 7 new bgms
2.11 - Fix bot not freeze and can fire after round end.
- Remove test codes.
2.12 - Change "sm_touchdown_healthshot" from bool to int, you can set how many healthshot should player have when player spawn.
- Fix how round MVP work, MVP will give to player who touchdown.
BGM List
Known Bugs
To Do
WARNING- THIS PLUGIN ONLY WORKS IN MP_TIMELIMT, SO YOU CAN'T USE MP_MAXROUNDS.
- RECOMMEND MAX PLAYERS IS 10.
- RECOMMEND ROUNDTIME IS 5.
- You can install Easy Spawn Protection for spawn protect if you need.
Donate
If you apreciate my work, you can donate me via steam trade offer or paypal.
Credits- S4 League Developers - Thanks for their awesome game, I take idea, sound effects, bgms and overlay effect from this game.
- boomix - I take the flag model and resize it, and I also take lots of code(weapon menu, terminate round...etc) from his ctf gamemode.
- mottzi - I take the ball model and some code(spawn ball) from his Simple Ball Plugin.
- iEx - I think auras I use in this gamemode are made by him. I found files in my game folder, maybe I got them from someone's server.
- Zeisenx - For his awesome bot AI plugin.
Git Repo
Download
Maps
Third party plugins
__________________
Please keep in mind, nobody have responsibility to help you, especially who don't try to Google first.
I only read messages in Chinese and English.
GitHub | Discord:Kento#2118
Last edited by rogeraabbccdd; 05-06-2020 at 05:00.
|
|