Leaderboard


Popular Content

Showing content with the highest reputation since 12/28/21 in Posts

  1. 2 points
    Put exec server after setting the mod and before map rotate. So as to set the relative path before trying to find the file. See if that helps. Be sure server.cfg is in the top level openwarfare mod folder (with the ff and iwds). Sub folders and files are relative to its location and it where it looks for the config folder and openwarefare.cfg. Openwarefare.cfg looks for all other configs relative to that. Just a note, change your mod name to something unique so it doesnt potentially conflict with another server. Its quite possible that a particular player visited a different server that didnt change the basic name ("openwarfare") and already has a mod named that. "Jezzys_OW2" or something like that. Also perhaps the version. 1.43 or 1.45 etc. Some people dont like the earlier one or later one. Recommend you also change server.cfg to a random string of characters. Just for a minor bit of extra security.
  2. 1 point
    No, ipv6 is preferred. I just tried, works fine. (CoD4X servers browser, not vanilla CoD4)
  3. 1 point
    This function adds to the assist. Line 362. self maps\mp\gametypes\_globallogic::incPersStat( "assists", 1 ); You need to modify things to check for different teams. For the heli, you likely have the common setting for player damage turned off. scr_enable_hiticon The last part, check in global logic in the player killed function. Inside of it there is a switch/list that checks for weaponfile types and whether or not to ignore them when giving a streak. ffar_hind etc. Since your heli seems to use barrett_acog_mp for its weapon you need to add it to that list.
  4. 1 point
    For the log entries, K = killed. D = damaged. First entry is the current game time (1093.35). After that, victim guid, victim player number, victim team, victim player name, attacker player guid, attacker player number, attacker team, attacker player name, weapon name, damage done, means of death, hit location. Note that bots or test clients dont have guids. The specific print statements are made in the player damage and player killed functions in global logic. self = victim. logPrint( "K;" + lpselfguid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n" );
  5. 1 point
    Final killcam for CoD4X Bring your CoD4X server up-to par with newer Call of Duty's by adding a final killcam. Every time a map has ended, the server will show the final killcam to all the players. Works in all gamemodes: free-for-all, team deathmatch, domination, sabotage and search and destroy. Installation Download is available here. First create a folder called "main_shared" in the root of your server installation (if it does not exist already). Now just copy the files to it, keeping the original folder structure as in this repository. For example main_shared/maps/mp/gametypes/_finalkillcam.gsc License This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/. Source The source is available on Github.
  6. 1 point
    If that doesnt work try changing: set bots_team "custom" // indicates what team the bots should join: autoassign; allies; axis; custom set bots_team_amount "3" //amount of bots to have on the axis team if bots_team is set to 'custom', the rest of the bots will be placed on the allies team. But like I said you will never get the perfect scenario where auto balance is concerned but lets at least try and get even bots on both teams I only have bots on axis teams as my servers are players against bots (apart from FFA but even then bots are on axis and players are allies)
  7. 1 point
    Try: set bots_team_mode "1" // consider only bots or players and bots when counting players on the teams. 0 will consider both players and bots. 1 will only consider bots. set bots_manage_fill_mode "1" // indicate if the server should consider only bots or players and bots when filling player space. 0 will consider both players and bots. 1 will only consider bots.
  8. 1 point
    Thats your bots file and not your configuration file Save the following to a file for example botscfg.cfg and place in your folder where your server config file is. Also add the line to the bottom of your server cfg : exec botscfg.cfg set bots_main_firstIsHost 0 set bots_manage_add "6" //amount of bots to add to the game, resets to 0 once the bots have been added set bots_team "autoassign" // indicates what team the bots should join: autoassign; allies; axis; custom set bots_team_amount "0" //amount of bots to have on the axis team if bots_team is set to 'custom', the rest of the bots will be placed on the allies team. set bots_team_mode "0" // consider only bots or players and bots when counting players on the teams. 0 will consider both players and bots. 1 will only consider bots. set bots_manage_fill_mode "0" // indicate if the server should consider only bots or players and bots when filling player space. 0 will consider both players and bots. 1 will only consider bots. set bots_manage_fill "6" //amount of players/bots (depends on bots_manage_fill_mode) to retain on the server, it will automatically add bots to fill player space. set bots_manage_fill_kick "0" //whether or not if the server should kick bots if the amount of players/bots (depends on bots_manage_fill_mode) exceeds the value of bots_manage_fill. set bots_manage_fill_spec "0" //whether or not if the server should consider players who are on the spectator team when filling player space. set bots_team_force "1" //enforce periodically the bot's team instead of just a single team when the bot is added to the game. set bots_skill "1" //value to indicate how difficult the bots should be.0 will be mixed difficultly 1 will be the most easy 2-6 will be in between most easy and most hard 7 will be the most hard. 8 will be custom. set bots_loadout_allow_op "0" //whether or not if the bots are allowed to use jug, marty and laststand set bots_loadout_reasonable "1" //whether or not if the bots should filter out bad create a class selections (like no silenced miniuzi with overkill perk, etc) set bots_loadout_rank 0 // what rank the bots should be around, -1 is around the players, 0 is all random set bots_loadout_prestige -1 // what pretige the bots will be, -1 is the players, -2 is random set bots_play_move 1 //bots move set bots_play_knife 1 //bots knife set bots_play_fire 1 //bots fire set bots_play_nade 1 //bots grenade set bots_play_obj 1 //bots play the obj set bots_play_camp 1 //bots camp and follow set bots_play_jumpdrop 1 //bots jump and dropshot set bots_play_target_other 1 //bot target non play ents (vehicles) set bots_play_killstreak 1 //bot use killstreaks set bots_play_ads 1 //bot aim down sights //set bots_skill_axis_hard "0" //- an integer amount of hard bots on the axis team. //set bots_skill_axis_med "0" //- an integer amount of medium bots on the axis team. //set bots_skill_allies_hard "0" //- an integer amount of hard bots on the allies team. //set bots_skill_allies_med "0" //- an integer amount of medium bots on the allies team, if bots_skill is 8 (custom). The remaining bots on the team will become easy bots. //for example: having 5 bots on the allies team, 'bots_skill_allies_hard 2' and 'bots_skill_allies_med 2' will have 2 hard bots, 2 medium bots, and 1 easy bot on the allies team
  9. 1 point
    To be clear: if u change a dvar with a script ( setDvar() ), it will change it permanently. Hence, on next map change, the dvar will have the value you gave it by the script. If you only change the variable, that is holding the dvar, for example, if a dvar is loaded into a variable like level.gametype, then it will change only the variable but not the dvar. After map change, the variable level.gametype will be equal to the initial value of the dvar, as long as the script won´t change the value of the variable.
  10. 1 point
    https://github.com/K-Faktor/screen/blob/master/ssc.gsx
  11. 1 point
    Hello, I share antiAFK and autobalance script that I started to use on my server. This is the first version, so the script can be optimized and maybe contain bugs. I'm not sure (I tested it only in promod) but the script can be used on any mod and default gametypes. I called the AutoTeamsBalancer function in the init() function of the _globallogic file: level thread AutoTeamsBalancer(); and the function AFK_Camp_Watcher in the spawnPlayer() function, always in the _globallogic file: self thread AFK_Camp_Watcher(); but it is possible to call these functions from sd.gsx, dm.gsx, etc... file in the right callback (onSpawnPlayer, init...). The AFK_Camp_Watcher function is based on the example made in the Call of Duty 4: CoD Script Handbook. This autobalance version move the 'extra' players that have the lowest score in the team. Of course you can change the sort order in the function getLowScorePlayers (for example on spawnTime) and script should work the same. You can freely use the shared code. I hope I'll help someone sharing it. Regards, arbait AFK_Camp_Watcher: #include maps\mp\_utility; #include maps\mp\gametypes\_hud_util; #include common_scripts\utility; AFK_Camp_Watcher() { level waittill("prematch_over"); self endon("death"); self endon("disconnect"); self endon("joined_spectators"); self endon("game_ended"); my_afk_camp_time = 0; have_i_been_warned = false; camp_time = 20; while( 1 ) { old_position = self.origin; old_angles = self.angles; wait 1; new_position = self.origin; new_angles = self.angles; distance = distance2d( old_position, new_position ); if( distance == 0 && old_angles == new_angles ) { my_afk_camp_time++; } else { my_afk_camp_time = 0; have_i_been_warned = false; } if( my_afk_camp_time == camp_time && !have_i_been_warned ) { self IprintLnBold("^7You appear to be ^1AFK^7!"); self IprintLnBold("^710 seconds to move!"); have_i_been_warned = true; } if( my_afk_camp_time == ( camp_time + 10 ) && have_i_been_warned ) { self IprintLnBold("^7You will be moved to spectators for ^1AFK ^7/ ^1Camping^7!"); wait 2; self.sessionteam = "spectator"; self.sessionstate = "spectator"; self [[level.spawnSpectator]](); iPrintln("^7" +self.name + " ^7was moved to spectators for ^1AFK ^7/ ^1Camping^7!"); } } } AutoTeamsBalancer: #include maps\mp\_utility; #include maps\mp\gametypes\_hud_util; #include common_scripts\utility; getTeamPlayers(team) { result = []; players = level.players; for(i = 0; i < players.size; i++) { if (isDefined(players[i]) && players[i].pers["team"] == team){ result[result.size] = players[i]; } } return result; } getLowScorePlayers(team, nPlayers) { result = []; if (team.size > 0 && nPlayers > 0 && team.size >= nPlayers) { //Sorting team by score (bubble sort algorithm @TODO optimize) for (x = 0; x < team.size; x++) { for (y = 0; y < team.size - 1; y++) { if (isDefined(team[y]) && isDefined(team[y+1]) && team[y].pers["score"] > team[y+1].pers["score"]) { temp = team[y+1]; team[y+1] = team[y]; team[y] = temp; } } } for (i = 0; i < nPlayers; i++) { if (isDefined(team[i])) { result[i] = team[i]; } } } return result; } AutoTeamsBalancer() { if(level.gametype == "dm") return; pl_change_team = []; changeteam = ""; offset = 0; while(1) { wait 20; if (isDefined(game["state"]) && game["state"] == "playing") { pl_change_team = []; changeteam = ""; offset = 0; team["axis"] = getTeamPlayers("axis"); team["allies"] = getTeamPlayers("allies"); if(team["axis"].size == team["allies"].size) continue; if(team["axis"].size < team["allies"].size) { changeteam = "axis"; offset = team["allies"].size - team["axis"].size; } else { changeteam = "allies"; offset = team["axis"].size - team["allies"].size; } if (offset < 2) continue; iPrintln("^7Teams will be balanced in 5 sec..."); wait 5; if (isDefined(game["state"]) && game["state"] == "playing") { team["axis"] = getTeamPlayers("axis"); team["allies"] = getTeamPlayers("allies"); if(team["axis"].size == team["allies"].size) { iPrintln("^7AutoBalance aborted: teams are already balanced!"); continue; } if(team["axis"].size < team["allies"].size) { changeteam = "axis"; offset = team["allies"].size - team["axis"].size; } else { changeteam = "allies"; offset = team["axis"].size - team["allies"].size; } if (offset < 2) { iPrintln("^7AutoBalance aborted: teams are already balanced!"); continue; } offset = offset / 2; pl_to_add = int(offset) - (int(offset) > offset); pl_change_team = []; bigger_team = []; if (changeteam == "allies"){ bigger_team = team["axis"]; } else { bigger_team = team["allies"]; } pl_change_team = getLowScorePlayers(bigger_team, pl_to_add); for(i = 0; i < pl_change_team.size; i++) { if(changeteam == "axis") pl_change_team[i] [[level.axis]](); else pl_change_team[i] [[level.allies]](); } iPrintln("^7Teams were balanced!"); iPrintlnbold("^7Teams were balanced!"); } } } } AntiAFK_AutoTeamsBalancer_Script.zip