Jump to content

Sky

Member
  • Posts

    439
  • Joined

  • Last visited

  • Days Won

    10

Everything posted by Sky

  1. In the Team Management plugin I wrote, scrambles, and team management, etc., are handled through SMART, such as the example of SMART below. All of the kills, deaths, incaps, revives, times incapped, infected damage, survivor damage, rescue attempts, times respawned, etc., etc., etc. that any player ever makes is stored into a database. When players are in-game, it takes all of the currently connected players and compares all of the stats, to determine where you place, rank-wise among the currently connected players. If a scramble occurs (and they only occur if the scores are so far apart (default 400 points or more) at the start of a map that isn't the finale of a campaign, and it's a map where the previous map had a scramble) it then attempts to balance based on player ranks, such as: if there are 20 players, ranks 1 through 20, where 1 is the top ranked player , and 20 is the worst ranked player (please remember, that this isn't in relation to all players in the database, only to those currently in-game.) It would then randomly decide which team assignments start on (either a or b, respectively survivor or infected) and then it goes like this: "Assign Rank 1 and Rank 20 players to survivor." "Assign Rank 2 and Rank 19 players to infected." "Assign Rank 3 and Rank 18 players to survivor." etc., etc., etc. This ensures that both teams have high-ranked, and low-ranked players. The only downside is, that while the database is at an infant state, scrambles obviously aren't accurate, since it takes some play time for it to equalize player statistics. At least, that's how I do it in my plugin.
  2. If you want to see how I did the whole "If you buy it, you get it" thing, I've posted the latest version of the rpg plugin on alliedmods (because, honestly, I don't use it anymore, because I'm not a fan of players having advantages over other people. I think rpg should remain in coop only) http://forums.alliedmods.net/showthread.php?p=1678677#post1678677
  3. Why not just make it so that whoever purchases the tank is the tank? That would solve that issue right there. As for not speaking english... If you're running translations in your plugins, it'd probably help the player. But, also remember, there was a time when you were new to the game, too, so you shouldn't discriminate based on player skill, or player language.
  4. While my servers were stable when sky gaming closed down, back when stability was an issue, I implemented a little thing where two things would be saved, in case of server crash: the current scores of both teams, and the current map. In the event of a crash, when the system booted up, it would read the database and see that these values weren't null, and would immediately switch to that map and set those scores. The other method, if databases aren't your flavour, is to simply save the values to a text file. If the file is blank, the script will simply leave things as they are. It's a relatively easy option, and if you sound interested in that, I've no problem linking the code that represents that functionality.
  5. Unfortunately, plugins are written in a variant of the pawn language. Eventually, the new language that's being written, Knight, will take over (not sure when, exactly) That, above, is an excerpt from one version of a buy plugin I wrote. There are many ways to do it (and several ways that are better for representing strings than that) but it's just a quick sample.
  6. You can relatively easily allow players to either buy items through menu navigation, or immediately on the spot. Take the code below, for instance. you can type !buy to open the menu and navigate, or !buy rifle_ak47 to purchase an ak47 immediatly (if you have the points) or one of the other commands in the list. public Commands_OnPluginStart() { RegConsoleCmd("up", Command_OpenMenu); RegConsoleCmd("usepoints", Command_OpenMenu); RegConsoleCmd("buy", Command_OpenMenu); } public Action:Command_OpenMenu(client, args) { // At some point, when the RPG Module is created, I'll update this section. // Until then we'll just go ahead and fast-forward to the usepoints menu. if (args < 1 || GetClientTeam(client) != TEAM_SURVIVORS) { if (GetClientTeam(client) == TEAM_SURVIVORS) SendPanelToClient(Points_SurvivorMenu(client), client, Points_SurvivorMenu_Init, MENU_TIME_FOREVER); else if (GetClientTeam(client) == TEAM_INFECTED) SendPanelToClient(Points_InfectedMenu(client), client, Points_InfectedMenu_Init, MENU_TIME_FOREVER); } else { decl String:CMD[128]; GetCmdArg(1, CMD, sizeof(CMD)); if (GetClientTeam(client) == 2) { ItemName[client] = CMD; if (StrEqual(CMD, "help")) { PrintToChat(client, "%s - \x01Commands have been printed to your console.", INFO_GENERAL); PrintToConsole(client, "rifle_ak47 , rifle_m60 , grenade_launcher , chainsaw"); // purchase item = 0; PrintToConsole(client, "bloat_ammo , blind_ammo , slowmo_ammo , beanbag_ammo , spatial_ammo"); // purchase item = 1; PrintToConsole(client, "health , adrenaline , first_aid_kit , pain_pills"); // purchase item = 2; PrintToConsole(client, "molotov , vomitjar , pipe_bomb"); // purchase item = 3; } else if (StrEqual(CMD, "rifle_ak47") || StrEqual(CMD, "rifle_m60") || StrEqual(CMD, "grenade_launcher") || StrEqual(CMD, "chainsaw")) PurchaseItem[client] = 0; else if (StrEqual(CMD, "bloat_ammo") || StrEqual(CMD, "blind_ammo") || StrEqual(CMD, "slowmo_ammo") || StrEqual(CMD, "beanbag_ammo") || StrEqual(CMD, "spatial_ammo")) PurchaseItem[client] = 1; else if (StrEqual(CMD, "health") || StrEqual(CMD, "adrenaline") || StrEqual(CMD, "first_aid_kit") || StrEqual(CMD, "pain_pills")) PurchaseItem[client] = 2; else if (StrEqual(CMD, "molotov") || StrEqual(CMD, "vomitjar") || StrEqual(CMD, "pipe_bomb")) PurchaseItem[client] = 3; if (!StrEqual(CMD, "help")) SurvivorPurchaseFunc(client); } } }
  7. i believe the guys plugin actually has a bunch of options like... Not effective if x team members incapped, or some other stuff, but you're correct, there's no great and effective way. I've been trying to think of how to do it for a while, since I don't have a community that bogs down my thought process anymore, but, honestly, I haven't been able to figure out a soluble way to do it. If you figure that one out, let me know.
  8. Mr. Zero was talking a while a go about a plugin that actually slows players speeds if they rush too far away from the rest of their team, eventually slowing them to a crawl, in an attempt to dissuade players from rushing. As for the maps that don't have saferoom doors on them. Create a start saferoom door on x y z coords, lock the door, and when all clients load in, start a 30 second timer, or something, that when expiring unlocks the door. This should, at the least prevent rushers from leaving before all the players have loaded in. If some players are taking minutes to log in, just create a timeout timer that starts the ready up period, even if all players haven't loaded. But I would look into the slow-based on distance from the majority of survivors (assuming they are far ahead on the level flow, as you don't want to slow the guy left behind) I believe the plugin actually increases the speed, slightly, of any players left behind.
  9. This can be easily done as well, Jackie: if you go this route, simply create an array which houses the names of the people in the wait list. Push and pull the users as they are removed from it, whether it's because they remove themselves from the list, are placed on a team, or quit the server. You can also do it as in the post above, where the reserve slot functionality only kicks in during certain hours. Extremely flexible, but just no perfect way to make everyone happy.
  10. I probably need to clarify something... I rarely get mad about anything kira I actually cleared my entire friends list when i quit playing left 4 dead 2. A lot of people who had been on my list thought I was upset; I wasn't. As far as... the reserve for members functionality goes... That's not so difficult to write, I think I actually sent you a version of it in PM. It's simply an admin flags check on postadmin function. Also, server instability is most likely due to two things, unfortunately: a.) poorly set up networking convariable options in the server.cfg b.) poorly written plugins. the gcftw server has a lot of plugins; I was in this morning viewing them in the plugins list, trying to deduce what is causing the crashes that range from a random interval of, somewhere between 15 minutes to a few hours after server restart. Trust me, when I say it's the two things above, as we've worked heavily with that stuff, even after closing sgo several months a go. Night Fury and I still tinker with settings. Our average up time after we cleaned everything up was between 5 and 7 days. I would also watch out for the people who are trying to charge for plugin creation. Most people are people who will go find an existing plugin, or they've paid less and are just trying to resell plugins. They're all over alliedmods. The trick with left 4 dead 2, is since there isn't a real reserve slot function (reserveslots.smx does nothing in l4d2) the only way to have you autojoin would be to have a free slot, where they're spectating, and just automatically assign them to a team if a player leaves. It still requires additional slots, so, while you could technically run 10v10 with 12 additional slots for reserve players to idle on, even adding a few spectators will stress out a server. At about 25 players, the server will become completely unstable, even when running extremely stable code and networking settings. The unfortunate best idea, if you go the reserve slots route is to simply have it remove players when a donator connects, if there are no available "non-reserve checker" slots. I had changed the functionality in mine to incorporate the idea of... "Instead of kicking a non donator when a donator connects, it simply moves the non donator that is randomly selected to spectator." It's just a matter of how you want to do it. Of course, you don't need reserve slots either. But, there's no perfect way to do it.
  11. I know this is an ancient-old post, but why take off points for namespace std? Most professionals use #include "stdafx.h" instead of "using namespace std;" Even though they're the same, I actually had a professor that didn't know what it was. Professors are the industry rejects. Also, best language ever written: Hello World Written in Brain truck The best language ever written Do not worry about the lack of comments as brain truck only acknowledges the 8 characters listed in the program below This means any text written is ignored However if you use any of the characters listed below brain truck will read it For those who do not understand what that means: The Compiler only reads the eight characters below so it does not see what I have typed here If a random character that it does read is listed anywhere in here it will then read it +++++ +++++ [ > +++++ ++ > +++++ +++++ > +++ > + <<<< - ] > ++ . > + . +++++ ++ . . +++ . > ++ . << +++++ +++++ +++++ . > . +++ . ----- - . ----- --- . > + . > .
  12. idk, i've always loved elder scrolls, but skyrim really feels like it stepped backwards, and you can see how consolitized it is. poop, the graphics feel ten years old, and the animations look stiff. Here's hoping community modding++

    1. Cinkadeus

      Cinkadeus

      I found it no different really to Fallout 3. Way to much talking / speech options. I guess its fun if you're already an ES fan, but I've been too tainted by WoW and its lore. (pats inner arm looking for a vein)

    2. VooDooPC

      VooDooPC

      Morrowind came out 9 years ago. So if you think Skyrim looks like that... wow... I think you need a new PC. :D

    3. Hailfire

      Hailfire

      Indeed Skyrim graphics = beautiful

  13. It's part of the new crash course update. ValvE, being wordly known for things such as ValvE Time, and not testing bugs after they've exhausted ValvE Time (the art of taking way too long to produce products that are still way too buggy) have gone and broken the Zoey models. What you're seeing is T-Pose for everything. For some reason, Zoey's animations are not being called when they should be. If anything, the positive is you can be a little more sneaky now!
  14. In regards to the comparison between Call of Duty and Battlefield, the fact that they're both Military-Warfare First-Person-Shooters is about the stretch that they go in comparisons. They both follow two different sub genres, and encourage two very different game play strategies. On the one hand, Call of Duty games offer up the "One Man Army" style of game-play, which allows players to freely fight the war alone online - and succeed quite handsomely. Battlefield games, generally, on the other hand, require a cooperation between players, and encourages team work aspects. The run-down between the two is generally... Call of Duty offers an expansive, great single player or story-driven experience, while it's often lacking in the multiplayer component, whereas Battlefield's single-player is usually a simple practice before taking the fight online - where its online play is unparalleled next to none. Play Call of Duty for the story, play Battlefield for the multiplayer. This of course isn't to say that Call of Duty doesn't have great multiplayer. Quite often, it does. Call of Duty 4 offered a great experience. Hands down, the best experience a COD game has ever offered. Call of Duty MW2 moved towards the fully-publisher hosted servers - which resulted in a lot of cheating, and overly hampered gaming. Effectively, it's why COD4 is still alive, while MW2 is hanging in limbo. I, personally, have several favorites as far as experiences go in COD4. However, COD4 often employed very small, very frantic spam-fest fights. And most of the COD games employ this attitude. Battlefield on the other hand, provides a slower, more strategic element to the FPS genre, which, generally more often than not, discourages run-n-gun solo tactics, and active rewards the cooperation. When I'm looking for some crazy over-the-top action, I head out to a COD4 server and play for a while. It can be great fun. However, when I'm interested in a more tactile approach, I give BF2, and now, BF3 a few hours of my time. Both games offer a lot of great. But more often than not, I play COD for its great single player experience, with a something-more-to-desire multiplayer, where I head off to Battlefield. Generally, the Battlefield games have offered the opposite : A more-to-be-desired singleplayer and an outstanding online play. With Battlefield 3, they offer the ability to play a COOP campaign with a friend, but still, it feels lacking - and its greatness shines online. However, there are some Battlefield 3 maps that have attempted to take the frantic over-the-top action that COD offers, and apply the strategic element. Sometimes it works, sometimes it doesn't - and you can really see how good or bad (at the time) it's working, based on your current team structure. When it comes down to it, though, it really depends on what kind of game play you're looking for, and that's how you determine which of the two games you want to play. Neither is better than the other, since they're not really the same genre. And where one is up while the other is down, it comes down to your personal preference. On a hardware technical standpoint, though, Battlefield 3 was designed on two engines - one for the consoles, and a separate markup for the PC. COD4 was the last COD game to support actual configurable PC Gaming. Many may argue that BlackOps offered it, but those who had BO servers would note that you really had no configuration options other than a map rotation and server messages. MW2 offered no servers outside of the publisher's decision of dedicated hosting, and MW3 will be the same way. Essentially, MW2 and MW3 are console games - ported to the PC, and this isn't necessarily bad for those of you with less than perfect computer builds. MW2 and MW3 both don't demand a serious gaming rig - remember, they're working with consoles; machines several years old. Its requirements are minimalistic compared to Battlefield 3, if you're looking to max out the engine. I like the simplistic approach, personally. It means more gamers can play the game at smoother framerates, increasing the overall solid gameplay experience. Also, Infinity Ward is known for its solid networking code, so you'll see less in the way of hiccups than you would in Battlefield. Still, with the imperfections that each game represents aside, it again just comes down to exactly what you're looking for. A solid single-player experience, with a decent multiplayer, or a thrown-together single-player experience with a near-perfect multiplayer. Either way - the multiplayer of both games will provide hours upon hours of enjoyment.
  15. i do that on my server. the ghost switch thing. =p
  16. Idk... I'm running an xfx hd radeon 6950 OC XXX 2gb card and uhh... it definitely maxes out everything. lol

  17. Just so you know, ping masking doesn't trick console status. It only tricks the scoresmenu display output, and thus, doesn't stop latency restriction plugins from doing their magic.
  18. Sky

    Server Crashes

    Send me a list of the plugins you use, and I'll consolidate it. Now that I'm only idling as a mod programmer and not maintaining a community, I have significantly more free time. Also, if you want a more custom plugin, I've got a bit of free time on my hands this month. As I've done for mega's server community http://steamcommunity.com/groups/maximumservers , I took dozens of plugins and dropped them into two plugins. Stability way up *reaching for clouds*
  19. Sky

    Hi GC

    Best to not have anything to do with MG anyway. Last I heard, marvel and his admins were systematically banned over at the steam forums for supporting non-steam (hacked clients) Even with the non-steam clients, they can't best good ol' GC on the charts. We always knew you were a master ninja Mr. Jackie. Chuck norris has something to fear.
  20. If you really want something 100% custom and exclusive, just let me know. I don't mind writing something for someone and then giving them the source to it. The only reason I keep the source to my current plugin private is I like people coming to my place and saying "I cant find this anywhere else." Though, at the moment I am setting it up where you can enable, disable what items show up for purchase, as well as what items show up in what order. pretty awesome ) Though, the new usepoints (4.6) runs around 280 different changeable variables.
  21. I'm going to attempt to dissect what you are requesting here and see if I can answer your question regarding it. You'd like the server to create an additional slot during level load to prevent players being kicked if an admin were to connect while a new level is loading. The problem being that if there are 20 slots and 21 people are trying to connect, a player will be dropped based on load times, which usually results in international players due to the pings which come into play with the load times, i.e. a player with a better connection will load faster. Answer: There are several ways, in fact, to handle this. 1.) A new slot can simply be created during the duration of the load, generally PlayersConnected() + 1 , to prevent any players from disconnected for any reason during load. You would then check and see if there are any slots available. The other way would, again simply to set sv_maxplayers to always PlayersConnected + 1. I won't spoil the fun on the other ways, but for me, I have it where a player connects, they are sent to spectator, and a slot is created for them, then they are assigned to a team, and if the teams are over the limit, a player is, at random, dropped from the team they were placed on (assuming, again if that team is now 10/9 players). I've included some code examples , as simply examples. I would offer my code, but you'd have to go through and disable the modules you don't want, and there are a lot of modules, so it could be a hassle. stock PlayersConnected() { for (new i = 1; i <= MaxClients; i++) { if (!IsClientConnected(i) || IsFakeClient(i)) continue; clients_ingame++; } } stock bool:AnySlotsAvailable() { if (FindConVar("sv_maxplayers") >= clients_ingame) return false; return true; } SetMapLoadSlots() { if (!AnySlotsAvailable()) { SetConVarInt(FindConVar("sv_maxplayers"), clients_ingame + 1); } }
  22. At the moment, I'm not sure to be honest. I've been going back and forth on whether or not to. There are a few reasons for it, but i erased all that because I felt it's something best left for a private chat. I suppose when I stop adding new features every day, I'll probably do it, but at the moment, there are just too many reasons (bad mostly, but some good) to give it away right this moment. Preferrably, if you want to help test it, contact me on aim @ zimposs1ble so we can talk. It's a matter I don't really want to discuss publicly, due to the history involved in it.
  23. Jackiechan: before OnPluginStart() place this line of code: new Handle:AmmoCost; in public OnPluginStart() place this line of code: AmmoCost = CreateConVar("buy_refill_ammo_cost","0","How many points a refill cost."); RegConsoleCmd("ammo", AmmoBuy); now, anywhere after OnPluginStart() place this segment of code: public Action:AmmoBuy(client, args) { AmmoBuyFunc(client); return Plugin_Handled; } public Action:AmmoBuyFunc(client) { if (points[client] >= GetConVarInt(AmmoCost)) { ExecCheatCommand(client, "give", "ammo"); points[client] -= GetConVarInt(AmmoCost); } else { PrintToChat(client, "\x04[ \x03BUY \x04] \x03Not Enough Points."); } } This will allow you set up an !ammo or /ammo or "bind <key> <command>"
×
×
  • Create New...