Author Topic: Lakitu7's Tremulous 1.1 QVM  (Read 75449 times)

SexyGhost

  • Posts: 20
  • Turrets: +0/-0
Lakitu7's Tremulous 1.1 QVM
« Reply #30 on: May 26, 2007, 05:57:09 pm »
So... if i do !info It tells me about something? Lakitu7 You wanna try a nasty hack for meh? :P
on't forget to check out UVache's and Spikers server, [UVache] & {S}. We run multiple mods.
[size=18]QUACK![/size]

kevlarman

  • Posts: 2737
  • Turrets: +291/-295
Lakitu7's Tremulous 1.1 QVM
« Reply #31 on: May 26, 2007, 07:29:30 pm »
Quote from: PFB
Quote from: "SexyGhost"
Mark Decon: it requires a new cgame or a nasty hack
actually the nasty hack didn't work out too well.
Quote from: Asvarox link=topic=8622.msg169333#msg169333
Ok let's plan it out. Asva, you are nub, go sit on rets, I will build, you two go feed like hell, you go pwn their asses, and everyone else camp in the hallway, roger?
the dretch bites.
-----
|..d| #
|.@.-##
-----

Paradox

  • Posts: 2612
  • Turrets: +253/-250
    • Paradox Designs
Lakitu7's Tremulous 1.1 QVM
« Reply #32 on: May 26, 2007, 09:35:37 pm »
How do the votes work? Are they percent of server, or percent of voters. If they were percent of voters, that would make sense, however percent of server is pretty much counting anyone who didnt vote as no.

∧OMG ENTROPY∧

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #33 on: May 26, 2007, 10:06:58 pm »
Percent of voters, after the time limit. It's only percent of the server if it ends early because such a large percentage of the server has voted yes (or no) that nothing the rest do would change it.

This is no change from the original behavior.

Code: [Select]

void CheckVote( void )
{
  int votePercentToPass=level.votePercentToPass;
  int voteYesPercent;

  if( level.voteExecuteTime && level.voteExecuteTime < level.time )
  {
    level.voteExecuteTime = 0;

    trap_SendConsoleCommand( EXEC_APPEND, va( "%s\n", level.voteString ) );
    if( !Q_stricmp( level.voteString, "map_restart" ) ||
        !Q_stricmpn( level.voteString, "map", 3 ) )
    {
      level.restarted = qtrue;
    }
  }

  if( !level.voteTime )
    return;

  voteYesPercent = (int)(100* (level.voteYes-level.voteNo)/(level.voteYes + level.voteNo));
  if( level.time - level.voteTime >= VOTE_TIME || ( level.voteYes + level.voteNo == level.numConnectedClients ) )
  {
    if( voteYesPercent> votePercentToPass || level.voteNo == 0 )
    {
      // execute the command, then remove the vote
      trap_SendServerCommand( -1, "print \"Vote passed\n\"" );
      level.voteExecuteTime = level.time + 3000;
    }
    else
    {
      // same behavior as a timeout
      trap_SendServerCommand( -1, "print \"Vote failed\n\"" );
    }
  }
  else
  {
    if( level.voteYes > (int)((double)level.numConnectedClients * ((double)votePercentToPass/100.0)) )
    {
      // execute the command, then remove the vote
      trap_SendServerCommand( -1, "print \"Vote passed\n\"" );
      level.voteExecuteTime = level.time + 3000;
    }
    else if( level.voteNo > (int)((double)level.numConnectedClients * ((double)(100.0-votePercentToPass)/100.0)) )
    {
      // same behavior as a timeout
      trap_SendServerCommand( -1, "print \"Vote failed\n\"" );
    }
    else
    {
      // still waiting for a majority
      return;
    }
  }

  level.voteTime = 0;
  trap_SetConfigstring( CS_VOTE_TIME, "" );
}


Paradox

  • Posts: 2612
  • Turrets: +253/-250
    • Paradox Designs
Lakitu7's Tremulous 1.1 QVM
« Reply #34 on: May 27, 2007, 12:38:17 am »
I presume that votes only affect map, map_restart, and nextmap?

Because on sst the other day, no matter the number of voters, normal votes like kick, denybuild, and mute would always fail no matter the percentage.

∧OMG ENTROPY∧

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #35 on: May 27, 2007, 02:21:32 am »
Code: [Select]
voteYesPercent = (int)(100* (level.voteYes-level.voteNo)/(level.voteYes + level.voteNo));

Sigh. I did test this a bunch with 4 clients. Just didn't on the 2 yes, 1 no case to make it fail. I'm an idiot.

Hang on while I recompile and reupload to all the places I mirror this because I'm a goddamned idiot. :(

Should be:
Code: [Select]
voteYesPercent = (int)(100* (level.voteYes)/(level.voteYes + level.voteNo)); because that's how percents work and I don't know what the hell I was thinking. :)

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #36 on: May 27, 2007, 02:40:37 am »
Fixed, everywhere. Sigh. Sorry :(

The way it's supposed to (and now does) work:

g_suddenDeathVotePercent: Default 75.
Affects vote sudden_death ONLY


g_mapVotesPercent at 50 (the default), will have all votes behave completely as they used to. You can up the percentage if you like, which will change map, restart, and nextmap ONLY.

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #37 on: May 27, 2007, 06:09:32 am »
In no particular order, things I plan on adding. This is as much for my own reference as for your notice. If any of you (Benmachine?) does some of the new feature/bugfix/porting/separation type items (the ones that aren't just 'put this existing patch in'), please send it my way so we don't do redundant work :).

Update to latest SVN (pain in the ass, but ultimately for the best)

/me (it's a few lines and it's fun. Why not?)

/itemgun (It's a few lines and if someone doesn't like it, they don't have to use it. Sure, why not?)

MaxPlayerCount (from R1Admin, allows you to have spec slots)

Reload refills at repeater/armo (also from R1Admin)

Some form of team balance function: Probably this will start with just a warning/notification and proceed from there with something more complicated later. It'd be nice to do something as complex as ET's options for this, but if I'm not that ambitious, I could do R1Admin's version without too much effort.

Option to lock teams after restart: Because in matches, locking teams often follows a restart, but if admin is slow, some newb joins beforehand. That can be circumvented with the use of nojoin warmup times though, so I may not do it if implementation turns out to be hard.

Team Customvote: A great idea from Benmachine. Teamvote version of custom votes for things like "Move to window room?" Yes/No

Benmachine's !Info: As soon as he finishes the cvar-reading version, it's in

Benmachine's anti spawnblock: This patch is a great idea too and I'm going to put it in

Flood Protection: Of some kind. But I still have to research this before I decide how to do it or which existing one to put in.

Disallow names that are just a number < 100 (Noone uses these but people that want to be hassles for inexperienced admins)

Ammend vote messages to say what percent is needed to pass (Because I made this vary, it should inform people so they know what's going on)

That "Your attacker had ___ HP" message. Will be optional because that can certainly be considered annoying.

!Slap: Maybe, if it's not too hard to separate and I can think of some reasonable ways to curb its abuse potential

SD Cvar: I might still finish it. It's not THAT far from being done and I'm probably better qualified to fix my version of it than anyone else is, at this point.

Undeference

  • Tremulous Developers
  • *
  • Posts: 1254
  • Turrets: +122/-45
Lakitu7's Tremulous 1.1 QVM
« Reply #38 on: May 27, 2007, 10:01:08 am »
Quote
Update to latest SVN (pain in the ass, but ultimately for the best)
I've done the important work for getting it to work without a cgame update
Quote
/itemgun (It's a few lines and if someone doesn't like it, they don't have to use it. Sure, why not?)
That is dumb. The same thing happens when you use "/itemtoggle blaster", with the exception that "/itemgun" is non-standard and should be expected not to work.
Quote
MaxPlayerCount (from R1Admin, allows you to have spec slots)
g_maxGameClients
Quote
Reload refills at repeater/armo (also from R1Admin)
?
Quote
!Slap: Maybe, if it's not too hard to separate and I can think of some reasonable ways to curb its abuse potential
Considering "!slap" is meant for abuse and does nothing other than that, I take this to mean you are willing to add extra stuff, even if you don't like it, so long as you don't have to write the code. I want to see "/steal" and "/take" in your qvm...
Need help? Ask intelligently. Please share solutions you find.

Thats what we need, helpful players, not more powerful admins.

benmachine

  • Posts: 915
  • Turrets: +99/-76
    • ben's machinery
Lakitu7's Tremulous 1.1 QVM
« Reply #39 on: May 27, 2007, 11:34:19 am »
I think, to be honest, removing all the stuff you don't/might not want from the work I've done would be about as much trouble as adding the stuff you do, so I'm not going to bother giving you the patch I have already.
The new version of !info (which I suggest reading before you use, because I've added a lot of new stuff and there's a fair possibility I've done something nonsensical in there somewhere) is basically done and I'm going to upload it to the mercenariesguild patch tracker soonish.
It should apply easier now, though, because it doesn't need any cvars anymore (I removed g_info).
benmachine

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #40 on: May 27, 2007, 03:18:41 pm »
Quote from: "Undeference"

g_maxGameClients
Cool, work done for me.

Quote

Considering "!slap" is meant for abuse and does nothing other than that, I take this to mean you are willing to add extra stuff, even if you don't like it, so long as you don't have to write the code. I want to see "/steal" and "/take" in your qvm...

But it does have a use in unsticking players, and that's why I agree that it should be there in some form. Perhaps I will change it to a command to act on one's self. Your predicate is a silly attempt at trolling me, so  :roll:.


Quote from: "benmachine"
I think, to be honest, removing all the stuff you don't/might not want from the work I've done would be about as much trouble as adding the stuff you do, so I'm not going to bother giving you the patch I have already.

Damn, I was hoping you'd been making separate patches. The world needs more separate patches. :(

Quote
The new version of !info (which I suggest reading before you use, because I've added a lot of new stuff and there's a fair possibility I've done something nonsensical in there somewhere) is basically done and I'm going to upload it to the mercenariesguild patch tracker soonish.
It should apply easier now, though, because it doesn't need any cvars anymore (I removed g_info).

Cool, can't wait.

Risujin

  • Posts: 739
  • Turrets: +33/-13
    • http://risujin.org
Lakitu7's Tremulous 1.1 QVM
« Reply #41 on: May 27, 2007, 07:02:49 pm »
Quote from: "Undeference"
Quote
/itemgun (It's a few lines and if someone doesn't like it, they don't have to use it. Sure, why not?)
That is dumb. The same thing happens when you use "/itemtoggle blaster", with the exception that "/itemgun" is non-standard and should be expected not to work.

There is a subtle difference. Using itemtoggle multiple times will obviously toggle your weapons and itemgun doesn't. How many times do I have to explain that to you? This isn't even your anorexic VM we're talking about here, GTFO.

Quote
Quote
!Slap: Maybe, if it's not too hard to separate and I can think of some reasonable ways to curb its abuse potential
Considering "!slap" is meant for abuse and does nothing other than that, I take this to mean you are willing to add extra stuff, even if you don't like it, so long as you don't have to write the code. I want to see "/steal" and "/take" in your qvm...

Face it, if you give an abusive admin power, they will ruin games. You don't need !slap to do this, you can use !putteam to strip a player of all equipment/class for instance or flat out !ban people you don't like. !slap allows responsible admins to give physical warnings, kill last-dretch-hiding-in-a-vent lamers, and generally vent anger.

As for /take and /steal, you fail at life.

kevlarman

  • Posts: 2737
  • Turrets: +291/-295
Lakitu7's Tremulous 1.1 QVM
« Reply #42 on: May 27, 2007, 07:38:58 pm »
Quote from: "Risujin"
Quote from: "Undeference"
Quote
/itemgun (It's a few lines and if someone doesn't like it, they don't have to use it. Sure, why not?)
That is dumb. The same thing happens when you use "/itemtoggle blaster", with the exception that "/itemgun" is non-standard and should be expected not to work.

There is a subtle difference. Using itemtoggle multiple times will obviously toggle your weapons and itemgun doesn't. How many times do I have to explain that to you? This isn't even your anorexic VM we're talking about here, GTFO.
if you can't switch to your blaster, then what's the use of a command that switches to your weapon from your blaster? (and why add a command that isn't portable between servers when you can do the same thing with "itemact blaster;wait;itemtoggle blaster")

edit: btw glad to see your first action after your vacation is to flame someone.
Quote from: Asvarox link=topic=8622.msg169333#msg169333
Ok let's plan it out. Asva, you are nub, go sit on rets, I will build, you two go feed like hell, you go pwn their asses, and everyone else camp in the hallway, roger?
the dretch bites.
-----
|..d| #
|.@.-##
-----

Warrior

  • Posts: 230
  • Turrets: +2/-0
    • Warrior's Stuff
Lakitu7's Tremulous 1.1 QVM
« Reply #43 on: May 27, 2007, 07:41:48 pm »
Quote
I want to see "/steal" and "/take" in your qvm

Please don't add it. /share is better; keep it.

Btw, this is proving to the best QVM to the moment. (Even more when other QVMs keep being abandoned)

Warrior

  • Posts: 230
  • Turrets: +2/-0
    • Warrior's Stuff
Lakitu7's Tremulous 1.1 QVM
« Reply #44 on: May 27, 2007, 10:03:33 pm »
I don't know why, but when using the last backport from tjw ( http://trem.tjw.org/backport/win32/tremulous.exe ), and running /devmap <map-name> on console, this qvm crashes Tremulous; the one from Avenger (and many other qvms) will display the famous BotFreeClient error. My actual workaround to test maps is to use one old backport that don't trigger such errors, or run tremded and after that start the client.

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #45 on: May 27, 2007, 10:45:23 pm »
Quote from: "Warrior"

Please don't add it. /share is better; keep it.

I'm not. Avenger is just being himself.  :roll:

Quote from: "Warrior"
I don't know why, but when using the last backport from tjw ( http://trem.tjw.org/backport/win32/tremulous.exe ), and running /devmap <map-name> on console, this qvm crashes Tremulous; the one from Avenger (and many other qvms) will display the famous BotFreeClient error. My actual workaround to test maps is to use one old backport that don't trigger such errors, or run tremded and after that start the client.

Hrm, yeah, I don't know. I just tested it and it does happen on my copy too. Like you said yourself, it's because the qvm works with tjw's Tremded and running Tremulous.exe isn't that. I don't know why mine crashes instead of doing BotFreeClient, but since it's just a tradeoff between two different errors, I imagine it's not worth worrying about too much.

Undeference

  • Tremulous Developers
  • *
  • Posts: 1254
  • Turrets: +122/-45
Lakitu7's Tremulous 1.1 QVM
« Reply #46 on: May 27, 2007, 11:59:04 pm »
Quote from: "Lakitu7"
Your predicate is a silly attempt at trolling me
The point is that there is a double standard. In your opinion, "/share" and "/donate" are damaging to gameplay, but you are willing to have them because a lot of players want them. In your opinion, "!slap" is abusive, but you are willing to have it... why? (So people don't get stuck, which doesn't happen much? "!slap" wouldn't even help there most of the time.)

"/steal", "/take", "/share", and "/donate" are all examples of things you consider damaging to gameplay. You already have half of them, so why not the other half?

Quote from: "Risujin"

Face it, if you give an abusive admin power, they will ruin games. You don't need !slap to do this, you can use !putteam to strip a player of all equipment/class for instance or flat out !ban people you don't like. !slap allows responsible admins to give physical warnings, kill last-dretch-hiding-in-a-vent lamers, and generally vent anger.
Of course administrative powers can be abused. The difference between "!putteam" and "!slap" is that the former is meant for balancing teams and the latter is for throwing players around the map, doing a specified amount of damage to them.
Quite simply, if a player isn't willing to follow the rules or pay attention when an admin tells them something, they shouldn't be playing there.
Venting anger is not a valid reason for admin commands.

Quote from: "Risujin"
As for /take and /steal, you fail at life.
In case you didn't realize before, "/steal" is a joke. ("/take" is too, but not much more so than "/share" or "/donate".)
Need help? Ask intelligently. Please share solutions you find.

Thats what we need, helpful players, not more powerful admins.

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #47 on: May 28, 2007, 12:35:12 am »
I have opinions that are different than yours. Get over it.

Warrior

  • Posts: 230
  • Turrets: +2/-0
    • Warrior's Stuff
Lakitu7's Tremulous 1.1 QVM
« Reply #48 on: May 28, 2007, 12:51:13 am »
!warn would be more useful if its message could be translated. Some foreign players don't understand english (sic!) what turns that command into something unhelpful.
(In this case, would be cool to have some cvar like g_warnMessage (or any other name) that will print the specified message plus the nick of the warned player.)
(One more idea: having some cvar like g_slapRatio <percent number> we could limit the maximum damage caused by a !slap)

About for having both /take and /share I would approve a complete qvm, even if I won't enable /take; it is an extra choice though. (I should have said "don't replace /share" instead of "don't add /take" in my previous post)
(/share activated by default; /take don't)

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #49 on: May 28, 2007, 06:47:30 pm »
Update on people sticking together:
Kevlarman has confirmed to me that this is a known bug in tjw's anti warp. I'm going to remove that patch entirely tonight/tomorrow. In the meantime, set both g_maxWarp and g_skipCorrection to 0. I've been told that this occurs with both unlagged 0 AND unlagged 1, so remove it in all circumstances.

When I update I'll be sure to throw in a few things from the to-do list to give more incentive to update and say "sorry" for the problem, even though it's not really my bug :)

Risujin

  • Posts: 739
  • Turrets: +33/-13
    • http://risujin.org
Lakitu7's Tremulous 1.1 QVM
« Reply #50 on: May 28, 2007, 07:51:37 pm »
Quote from: "kevlarman"
if you can't switch to your blaster, then what's the use of a command that switches to your weapon from your blaster? (and why add a command that isn't portable between servers when you can do the same thing with "itemact blaster;wait;itemtoggle blaster")

Because binds are specific to a gametype thus portable between that kind of server. When I play on a Balance server, I don't want to have to resort to that long hack thing that pulls out my blaster before pulling out my gun! Switching guns takes time.

Quote from: "kevlarman"
edit: btw glad to see your first action after your vacation is to flame someone.

My dear kevlarman,
1.) I am still on vacation
2.) I have made like 10 posts while on vacation that you apparently missed
3.) Shouldn't you be deleting Morx off the forum right now?

Warrior

  • Posts: 230
  • Turrets: +2/-0
    • Warrior's Stuff
Lakitu7's Tremulous 1.1 QVM
« Reply #51 on: May 28, 2007, 08:00:58 pm »
Quote
Switching guns takes time.

I recommend you create a bind.

kevlarman

  • Posts: 2737
  • Turrets: +291/-295
Lakitu7's Tremulous 1.1 QVM
« Reply #52 on: May 28, 2007, 08:33:02 pm »
Quote from: "Risujin"

3.) Shouldn't you be deleting Morx off the forum right now?
that's lava's job
Quote from: Asvarox link=topic=8622.msg169333#msg169333
Ok let's plan it out. Asva, you are nub, go sit on rets, I will build, you two go feed like hell, you go pwn their asses, and everyone else camp in the hallway, roger?
the dretch bites.
-----
|..d| #
|.@.-##
-----

Risujin

  • Posts: 739
  • Turrets: +33/-13
    • http://risujin.org
Lakitu7's Tremulous 1.1 QVM
« Reply #53 on: May 29, 2007, 07:56:59 am »
Quote from: "kevlarman"
Quote from: "Risujin"

3.) Shouldn't you be deleting Morx off the forum right now?
that's lava's job

True, but he doesn't read the Mods forum on principle. :)

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #54 on: May 29, 2007, 10:24:57 pm »
Released version 4.10:
No more antiWarp and all the problems it caused
Added some more new features / minor changes to make up for the trouble :)

Removed tjw's antiwarp (too many problems, especially when unlagged is off)

added /me

added !info

added g_maxGameClients

added team customvotes

modified the "__ called a vote" console message to say what they called a vote for

modified vote messages to say what percent is needed to pass, if this percent != 50

added g_antiSpawnBlock (but disabled it by default for now)

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #55 on: May 29, 2007, 11:55:20 pm »
One more edit: Tonight/tomorrow, I'm going to add in a really simple flood protection mechanism courtesy of the old r1admin code, until someone writes something a bit better and more complex. If you really want that feature, wait for it. :)

Lakitu7

  • Tremulous Developers
  • *
  • Posts: 1002
  • Turrets: +120/-73
Lakitu7's Tremulous 1.1 QVM
« Reply #56 on: May 30, 2007, 01:44:12 am »
Bump to 4.15

Flood protection is in
Enjoy :)

benmachine

  • Posts: 915
  • Turrets: +99/-76
    • ben's machinery
Lakitu7's Tremulous 1.1 QVM
« Reply #57 on: May 30, 2007, 12:36:11 pm »
Quote from: "Lakitu7"
added /me

added !info

added g_antiSpawnBlock (but disabled it by default for now)


^_^

Lakitu, why don't you include some info files with the package, like info-version or info-credits - it could really help to show how up-to-date the server was, and if developers wanted to know who to contact (or thank :P ) then they would be able to find out from the server.
I even went so far as to have my compilation script note the date, write it to an info file and zip it up into a vm-readme-files package, but you shouldn't need anything that dramatic (I mostly did it out of curiousity).
Of course, it might make distribution more difficult, and there's no guarantee people will actually use them, but it's worth considering.
benmachine

Paradox

  • Posts: 2612
  • Turrets: +253/-250
    • Paradox Designs
Lakitu7's Tremulous 1.1 QVM
« Reply #58 on: May 30, 2007, 04:42:12 pm »
Wow thanks, damn.

Its nice, and i will test it on sst tonight.

∧OMG ENTROPY∧

Paradox

  • Posts: 2612
  • Turrets: +253/-250
    • Paradox Designs
Lakitu7's Tremulous 1.1 QVM
« Reply #59 on: May 31, 2007, 04:08:31 am »
Seems that IP bans from kick and ban dont work, as well as namelog bans, that is, banning a client who has disconnected from the server.

Also bans sometimes even bounce to other players.

∧OMG ENTROPY∧