Coder Social home page Coder Social logo

wcs's People

Contributors

dan0id avatar drellannor avatar handbra avatar idleless avatar manifestmanah avatar mrmalina avatar nosferatujoe avatar schmarotzer avatar srpg avatar thapwned avatar xiazee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wcs's Issues

New races doe not fire events

https://cdn.discordapp.com/attachments/159002601646587905/537004806854672385/unknown.png

Some additional information, it does not seem that skill.execute works properly, it never fires the actual code for "player_ability".
Although the init is firing from the human_alliance folder on load, but never seem to be firing after it's been read once.

image

I've copied the full plugin from the latest build, and afterwards I'm pasting the races into the correct folder. The races is loading as I can choose them in changerace, and simple things like invisibility seems to work.
I cannot see that Im missing any files..

Ultimates and abilities

It used to be +ability and +ultimate, but I can't seem to figure out how to use them now... whats the new command?

wcs cant load after using 0.78 race format

the race-file is located at: cstrike\cfg\source-python\wcs\races.ini
everytime i try to get new races into my server using that format my wcs cant load completely
i get this in my console
grafik
everything other than that loads perfectly
thank you guys in advance!

tr

wcs_centertell Unable to use Chinese Translation

LevelBank

hi, I saw that you said there is no plan to add levelbank, but would you agree to do one? i can pay you

Exceptions

I found some exceptions that got caught on our server launch with 20+ players on, giving some more log feedback.
Just reporting them here to keep track of them.

2021-03-26 17:12:52 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/packages/source-python/commands/typed.py", line 594, in on_command
    result = cls.on_clean_command(info, command_node, args)
  File "../addons/source-python/packages/source-python/commands/typed.py", line 612, in on_clean_command
    return command_node.callback(command_info, *cleaned_args)
  File "../addons/source-python/plugins/wcs/core/helpers/esc/commands.py", line 1444, in wcs_xcentertell_command
    players, message = _format_message(userid, name, args)
  File "../addons/source-python/plugins/wcs/core/helpers/esc/commands.py", line 317, in _format_message
    tokens[args[i]] = args[i + 1]

IndexError: tuple index out of range

-> ThaPwned: The first exception is caused by a race using wcs_xcentertell but uses an odd number of arguments
Eg.: `wcs_xcentertell argument1 value1 argument2 value2 argument3"

error reces merci beaucoup de vous avoir aidé à corriger les erreurs

Thank you very much for helping you corrected the mistakes
L
2019-08-13 18:10:06 - sp - MESSAGE [SP] Chargement du plugin 'es_emulator'...
2019-08-13 18:10:06 - sp - MESSAGE [SP] Le plugin 'es_emulator' a été chargé avec succès.
2019-08-13 18:10:07 - sp - MESSAGE [SP] Chargement du plugin 'gungame'...
2019-08-13 18:10:08 - sp - MESSAGE [SP] Le plugin 'gungame' a été chargé avec succès.
2019-08-13 18:10:08 - sp - MESSAGE [SP] Chargement du plugin 'wcs'...
2019-08-13 18:10:09 - sp - WARNING
[SP] Avertissement rencontré:
File '../addons/source-python/plugins/wcs/core/modules/races/manager.py', line 199: UserWarning
Unable to find the default race "". Using "undead_scourge" as temporary default
race.

2019-08-13 18:10:09 - sp - MESSAGE [SP] Le plugin 'wcs' a été chargé avec succès.


2019-08-13 18:48:00 - sp - MESSAGE [SP] Chargement du plugin 'es_emulator'...
2019-08-13 18:48:01 - sp - MESSAGE [SP] Le plugin 'es_emulator' a été chargé avec succès.
2019-08-13 18:48:01 - sp - MESSAGE [SP] Chargement du plugin 'gungame'...
2019-08-13 18:48:02 - sp - MESSAGE [SP] Le plugin 'gungame' a été chargé avec succès.
2019-08-13 18:48:02 - sp - MESSAGE [SP] Chargement du plugin 'wcs'...
2019-08-13 18:48:02 - sp - WARNING
[SP] Avertissement rencontré:
File '../addons/source-python/plugins/wcs/core/modules/races/manager.py', line 199: UserWarning
Unable to find the default race "". Using "undead_scourge" as temporary default
race.

2019-08-13 18:48:02 - sp - MESSAGE [SP] Le plugin 'wcs' a été chargé avec succès.
2019-08-13 18:53:56 - sp - EXCEPTION
[SP] Une erreur s'est produite:
Traceback (most recent call last):
File "../addons/source-python/packages/source-python/events/listener.py", line 92, in fire_game_event
callback(game_event)
File "../addons/source-python/plugins/gungame/core/listeners.py", line 198, in _player_death
if weapon_manager[weapon].basename != killer.level_weapon:
File "../addons/source-python/packages/source-python/weapons/manager.py", line 93, in getitem
return super().getitem(name)

KeyError: 'weapon_wcs_orcish_horde-chain_lightning'

2019-08-13 18:56:19 - sp - EXCEPTION
[SP] Une erreur s'est produite:
Traceback (most recent call last):
File "../addons/source-python/packages/source-python/events/listener.py", line 92, in fire_game_event
callback(game_event)
File "../addons/source-python/plugins/gungame/core/listeners.py", line 198, in _player_death
if weapon_manager[weapon].basename != killer.level_weapon:
File "../addons/source-python/packages/source-python/weapons/manager.py", line 93, in getitem
return super().getitem(name)

KeyError: 'weapon_wcs_orcish_horde-chain_lightning'

2019-08-13 19:01:28 - sp - EXCEPTION
[SP] Une erreur s'est produite:
Traceback (most recent call last):
File "../addons/source-python/packages/source-python/events/listener.py", line 92, in fire_game_event
callback(game_event)
File "../addons/source-python/plugins/gungame/core/listeners.py", line 198, in _player_death
if weapon_manager[weapon].basename != killer.level_weapon:
File "../addons/source-python/packages/source-python/weapons/manager.py", line 93, in getitem
return super().getitem(name)

KeyError: 'weapon_wcs_undead_scourge-suicide_bomber'

2019-08-13 19:01:38 - sp - EXCEPTION
[SP] Une erreur s'est produite:
Traceback (most recent call last):
File "../addons/source-python/packages/source-python/events/listener.py", line 92, in fire_game_event
callback(game_event)
File "../addons/source-python/plugins/gungame/core/listeners.py", line 198, in _player_death
if weapon_manager[weapon].basename != killer.level_weapon:
File "../addons/source-python/packages/source-python/weapons/manager.py", line 93, in getitem

Exception when player leaves the game

This exception will be thrown when a player leaves the game while standing in a ward.
I know this is probably harmless but wanted to log this nevertheless.

[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/helpers/wards.py", line 223, in _tick
    ward.on_disappear()
  File "../addons/source-python/plugins/wcs/core/helpers/wards.py", line 147, in on_disappear
    self.on_exit(wcsplayer)
  File "../addons/source-python/plugins/wcs/core/helpers/wards.py", line 175, in on_exit
    wcsplayer.player.speed += modified
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 751, in player
    return _Player(self.index)
  File "../addons/source-python/packages/source-python/entities/_base.py", line 132, in __call__
    obj = super().__call__(index)
  File "../addons/source-python/packages/source-python/players/_base.py", line 96, in __init__
    PlayerMixin.__init__(self, index)
ValueError: Conversion from "Index" (1) to "BaseEntity" failed.

Translation issues

Translation support for races is a blessing and greatly appreciated. I just started using the feature and testing it, sadly I stumbled upon an unexpected "feature".

You can find the issue reports and corresponding screenshots here:
https://github.com/ManifestManah/Racepack-Standard/issues

In a nuttshell, event_var(attacker) is being treated as event_var(userid) for some reason.

This is regarding centertell, haven't tested it with es_tell yet.

Teleport not working

Cant get Teleport as human to work. Not with new race nor the old one. Running CSGO.

     IMPORTANT: Please copy the full output.
     --------------------------------------------------------
     Checksum      : f0cf4eb8336078e645ac9bb0bb3fcf02
     Date          : 2019-01-20 16:15:59.049048
     OS            : Linux-4.12.12-gentoo-x86_64-Intel-R-_Xeon-R-_CPU_E5-1630_v3_@_3.70GHz-with-gentoo-2.4.1
     Game          : csgo
     SP version    : 677
     Github commit : 7ea507d83fccc3b1c7e1c475e36e3decbecff298
     Server plugins:
        00: Source.Python, (C) 2012-2018, Source.Python Team.
        01: Metamod:Source 1.11.0-dev+1116
     SP plugins:
        00: es_emulator, https://github.com/Ayuto/EventScripts-Emulator
        01: wcs, 2018.12.17-2, https://forums.sourcepython.com/viewtopic.php?f=7&t=1925

You do not die on changerace if you recently used kill or changed race

There is a cooldown of 5-10 seconds before the kill console command can be used again. So if you recently suicided or changed race, for example at the end of the previous round, you would be able to change race after spawning the following round, gaining the passives of the first and active abilities of the second.

We could either do something similar to ent_fire userid sethealth 0 which damages the player when the number is lower than their current hp, but might be blocked by godmode and other skills.

Otherwise we might look into if it is possible to directly cause the player to die, without relying on any damage or console commands.

[REQUEST] sound effect on levelup

I noticed that es wcs_givelevel does not provide a sound effect on levelup which in theory should, or that atleast used to be the case?
In my opinion it would be nice if it did since that makes it clearer that you leveled up.

[REQUEST] Add firefix & mp_autokick 0 in core for CSS

Since almost everyone who tried running WCS on CSS stumbled upon these same old issues, I think it'd be nice for them to add these fixes to the core. That way we can prevent a lot of people reporting the same issues over and over again.

So adding mp_autokick 0 & the firefix.

I added the firefix for your convenience :)
firefix.zip

WCS not parsing some races

I tried migrating my server to another host and stumbled upon this issue:

[SP] Loading plugin 'es_emulator'...
[EventScripts] Temporary: Setting the host's IP variable from the command-line.
[EventScripts] Loaded esc
[SP] Successfully loaded plugin 'es_emulator'.
[SP] Loading plugin 'wcs'...

[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_undead_scourge" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'undead_scourge'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_human_alliance" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'human_alliance'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_orcish_horde" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'orcish_horde'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_night_elves" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'night_elves'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_blood_mage" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'blood_mage'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_archmage_proudmoore" due to the
        following exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'archmage_proudmoore'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_shadow_hunter" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'shadow_hunter'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_warden" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'warden'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_crypt_lord" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'crypt_lord'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_flame_predator" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'flame_predator'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/oldesc.py', line 219: UserWarning
    Unable to properly parse the race "wcs_lng_succubus_hunter" due to the following
        exception:


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/core/modules/oldesc.py", line 147, in parse_ini_races
    skillnames = (_esc_strings[fixed_name][data['skillnames'][8:]].get_string('en') if data['skillnames'].startswith('wcs_lng_') else data['skillnames']).split('|')

KeyError: 'succubus_hunter'



[SP] Encountered a Warning:
  File '../addons/source-python/plugins/wcs/core/modules/races/manager.py', line 227: UserWarning
    Unable to find the default race "undead_scourge". Using "athena" as temporary
        default race.

[SP] Successfully loaded plugin 'wcs'.

I've tried everything including fresh installs and adding the race packs on top but nothing seems to help. The odd thing is that it only happens to the translated standard race pack and not to the others. Any clue why this is happening?

i can't add admin

{
"players": {
"STEAM_0:1:52288860": {
"wcsadmin": 1,
"wcsadmin_githubaccess": 1,
"wcsadmin_managementaccess": 1,
"wcsadmin_playersmanagement": 1,
"wcsadmin_raceaccess": 1,
"vip_raceaccess": 1
}
}

}

This is my profile, but I still don't have permission after I enter the game

wcshelp[suggest]

Can you make this menu optional, not just a command prompt
and
Some menus do not override the existing menu after inputting the command, which can only be seen after closing

[REQUEST] exclude bots from wcstop ranking

I would be nice to be able to exclude bots from "wcstop", or atleast have (BOT) behind their names. But I would prefer having an option to exclude them because to be fair, they shouldn't even be in the list.

I've had this request multiple times from players playing on my server, players like to compete but not against the bots that play 24/7 on the server hehe.

New style races effect issue

Effects doesn't work with new style races and I cant understand how to make it works.

My setup:
Server OS: Ubuntu 18.04 x64
Server version: 1101
Game: CS:GO
Source.Python version: latest GitHub version
WCS version: latest GitHub version

I'm using races from WCS-Content repo, and all mechanics work perfect! But all effect doesn't work. I tried different version of OS and SP, different effect models/types, and nothing helps. Am I skip some sort of settings to allow effects? (as with sv_disable_immunity_alpha 0 for Human invis).
BTW if I add some ES races then their effects work, but I want to use new style races and recreate some default ES.

Disguise/mole models do not match the models defined for the map

Currently players will always be assigned either a leet/phoenix or gign/gsg9 variant model in csgo. This might give a clear distinction between real players and those who are disguised, if the map uses a different set of models.

For example dust2 is leet vs idf, so a CT player would perhaps be disguised as the proper faction, whereas a T player would always get the wrong faction disguise. (This might also explain #78)

It also does not take into account if all players are using an Agent model.

Possible solutions I can think of:

  • Get the models defined in the map's .kv file
  • Save each player's model on spawn
  • Somehow get a list of all equipped player agent models (perhaps present when using sv_precacheinfo)

Effects

https://www.file-upload.net/download-12895000/materials.zip.html

I dont know how to add new effects (Im not a coder). I did try for 2 hours but I couldn't make any of them work. I dont think people would mind if u had to download a few files. You always had to download in the old mods from 1.6. And a handful of files wold only take a few seconds to download the fist time.

Also if we add a custom one, would it actually be downloaded and preached (or whatever its called)?

Either way, effects are important, cant really have a WCS server without that.

Maybe some of these could be used that comes with CSGO:

materials\effects\blueblacklargebeam.vtf
materials\effects\tesla_glow.vtf
materials\effects\fire_cloud1.vtf
materials\effects\energysplash.vtf
materials\effects\spark.vtf

materials\sprites\blueglow1.vtf
materials\sprites\blueflare1.vtf
materials\sprites\laserbeam.vtf
materials\sprites\rico1.vtf
materials\sprites\purplelaser1.vtf
materials\sprites\purpleglow1.vtf
materials\sprites\physbeam.vtf

Slow load of database

Using latest WCS version:

WCS might take minutes to load on new map start. This started happening after I updated WCS, so maybe I already had a fix in place or a workaround to not have it do this. But I didn't check that anymore, so this issue could've been present previously aswell.

My fault for not backing up the fix or thoroughly testing this major issue.

I will restore a backup of my server and compare differences, if found and tested I will send a PR over ASAP :)

Proof:
wcs not ready problem

turning off race clantag issue

Turning off race clantag doesn't fully work. Some people will still have a race clantag present, not sure why this occurs nor can I find any exceptions on this.

race clantag not loading on connect

The shortname is not saved when reconnecting or connecting to the server. It will not check what your race is until you change it, then it will change the clan tag properly.
In the picture underneath I connected to the server and have "Undead Scourge" assigned as race.

Keep in mind that I don't have any shortnames assigned in the races.ini file.

PS: Is there a way to disable the racename being displayed in chat? Now it'll display like Undead Scourge Nosferatu*Joe: hello

image

Item example

Hi,
Thank you for this mod.
Could you provide an item example code in order to grasp the way to code them ?

Thank you !

wcs_targetid question

Crypt Lord ult ocassionally kills teammates (reported by 'hand'), hence it's not targetting the right team so I wonder if the syntaxes for teams are used correctly. Because AFAIK you only use #t #ct #alive when using wcsgroups and not in other functions (since this commit: 344f8a9). So now I'm kind of confused how to set it properly in the code.

Snippet of the code below:

ifx false(wcs_ffa_enabled) do
	{
		es_getplayerteam wcs_team server_var(wcs_userid)
		if (server_var(wcs_team) = 2) do
		{
			es_xset wcs_targetteam "#ct,#alive"
			es_getlivingplayercount wcs_pcount 3
		}
		if (server_var(wcs_team) = 3) do
		{
			es_xset wcs_targetteam "#t,#alive"
			es_getlivingplayercount wcs_pcount 2
		}
	}
	if (server_var(wcs_targetteam) != 0) do
	{

FULL ultimate code block:

block swarm
{
	ifx true(wcs_race_debugging) do
	{
		wcs_log [Race]: Crypt Lord - [Block] Skill: 4 (START)
	}
	ifx true(wcs_ffa_enabled) do
	{
		es_xset wcs_targetteam "#alive"
		es_getlivingplayercount wcs_pcount
		es_set wcs_ffa_userid server_var(wcs_userid)
	}
	ifx false(wcs_ffa_enabled) do
	{
		es_getplayerteam wcs_team server_var(wcs_userid)
		if (server_var(wcs_team) = 2) do
		{
			es_xset wcs_targetteam "#ct,#alive"
			es_getlivingplayercount wcs_pcount 3
		}
		if (server_var(wcs_team) = 3) do
		{
			es_xset wcs_targetteam "#t,#alive"
			es_getlivingplayercount wcs_pcount 2
		}
	}
	if (server_var(wcs_targetteam) != 0) do
	{	
		if (server_var(wcs_pcount) > 0) do
		{
			es wcs_randplayer wcs_targetid server_var(wcs_targetteam)
			if (server_var(wcs_targetid) != 0) do
			{
				es_xdoblock wcs/tools/standard/crypt_lord/ultimate_checks
			}
		}
		else do
		{
			es_xset wcs_ultinotexec 1
			es wcs_getlanguage wcs_lng "check_skill4_failed_living" 0 "crypt_lord"
			es wcs_xtell server_var(wcs_userid) server_var(wcs_lng)
		}
	}
	else do
	{
		es_xset wcs_ultinotexec 1
		es wcs_getlanguage wcs_lng "check_skill4_failed_targeting" 0 "crypt_lord"
		es wcs_xtell server_var(wcs_userid) server_var(wcs_lng)
	}
	if (server_var(wcs_ultinotexec) = 1) then es wcs_cancelulti server_var(wcs_userid)
	ifx true(wcs_race_debugging) do
	{
		wcs_log [Race]: Crypt Lord - [Block] Skill: 4 (END)
	}
}

block ultimate_checks 
{
	ifx true(wcs_race_debugging) do
	{
		wcs_log [Race]: Crypt Lord - [Block] Skill: 4 (CHECKS START)
	}
	ifx true(wcs_ffa_enabled) do
	{
		es_xset wcs_execute_ultimate_ffa 1
		if (server_var(wcs_targetid) != server_var(wcs_ffa_userid)) do
		{
			es_xset wcs_execute_ultimate_ffa 0
		}
	}
	ifx false(wcs_execute_ultimate_ffa) do
	{
		es_exists ex userid server_var(wcs_targetid)
		if (server_var(ex) = 1) do
		{
			es getplayerinfo wcs_alive server_var(wcs_targetid) isdead
			if (server_var(wcs_alive) = 0) do
			{
				es wcsgroup get ulti_immunity wcs_tmp server_var(wcs_targetid)
				if (server_var(wcs_tmp) != 1) do
				{
					es_xset wcs_ultinotexec 0
					es_xdoblock wcs/tools/standard/crypt_lord/ultimate_final
				}
				if (server_var(wcs_tmp) == 1) do
				{
					es wcs_getlanguage wcs_lng "check_skill4_failed_target_is_immune" 0 "crypt_lord"
					es wcs_xtell server_var(wcs_targetid) server_var(wcs_lng)
					es wcs_getlanguage wcs_lng "check_skill4_failed_player_is_immune" 0 "crypt_lord"
					es wcs_xtell server_var(wcs_userid) server_var(wcs_lng)
					es_xset wcs_ultinotexec 1
				}
			}
		}	
	}
	ifx true(wcs_race_debugging) do
	{
		wcs_log [Race]: Crypt Lord - [Block] Skill: 4 (CHECKS END)
	}
}

block ultimate_final
{
	ifx true(wcs_race_debugging) do
	{
		wcs_log [Race]: Crypt Lord - [Block] Skill: 4 (EXECUTED START)
	}
	es playerget health wcs_tmp1 server_var(wcs_userid)
	es_xmath wcs_tmp1 + 35
	if (server_var(wcs_tmp1) >= 225) do
	{
		es wcs_setfx health server_var(wcs_userid) = 225 0
		es wcs_getlanguage wcs_lng "player_skill4_health_cap" 0 "crypt_lord"
		es wcs_xtell server_var(wcs_userid) server_var(wcs_lng)
	}
	if (server_var(wcs_tmp1) < 225) do
	{
		es wcs_getlanguage wcs_lng "player_skill4_health" 0 "crypt_lord"
		es wcs_xtell server_var(wcs_userid) server_var(wcs_lng)
		es wcs_setfx health server_var(wcs_userid) + 35 0
	}
	es playerget armor wcs_tmp2 server_var(wcs_userid)
	es_math wcs_tmp2 + server_var(wcs_armor)
	if (server_var(wcs_tmp2) >= 250) do
	{
		es wcs_setfx armor server_var(wcs_userid) = 250 0
		es wcs_getlanguage wcs_lng "player_skill4_armor_cap" 0 "crypt_lord"
		es wcs_xtell server_var(wcs_userid) server_var(wcs_lng)
	}
	if (server_var(wcs_tmp2) < 250) do
	{
		es wcs_setfx armor server_var(wcs_userid) + server_var(wcs_armor) 0
		es wcs_getlanguage wcs_lng "player_skill4_armor" 0 "crypt_lord"
		es wcs_xtell server_var(wcs_userid) server_var(wcs_lng) value1 server_var(wcs_armor)
	}
	es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
	es_xmath wcs_z1 + 20
	es est_effect 10 #a 0 sprites/lgtning.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 50 70 1 12 10 .8 0 50 200 200 1
	es_xmath wcs_z1 + 20
	es est_effect 10 #a 0 sprites/lgtning.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 50 70 1 12 10 .8 0 50 200 200 1
	es damage server_var(wcs_targetid) 35 1 server_var(wcs_userid)
	es wcs_getlanguage wcs_lng "player_skill4_centertell" 0 "crypt_lord"
	es wcs_xcentertell server_var(wcs_userid) server_var(wcs_lng)
	es wcs_getlanguage wcs_lng "target_skill4_centertell" 0 "crypt_lord"
	es wcs_xcentertell server_var(wcs_targetid) server_var(wcs_lng)
	es_xmath wcs_smokestack_counter + 1
	es_give server_var(wcs_targetid) env_smokestack
	es_format ss_name "my_ss_%1%2" server_var(wcs_targetid) server_var(wcs_smokestack_counter)
	es_entitysetvalue server_var(eventscripts_lastgive) "targetname" server_var(ss_name)
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "basespread 55"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "spreadspeed 60"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "speed 30"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "rate 60"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "startsize 1"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "endsize 2"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "twist 150"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "jetlength 50"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "angles 90 90 90"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "rendercolor 255 255 255"
	es_fire server_var(wcs_targetid) server_var(ss_name) addoutput "SmokeMaterial sprites/scanner.vmt"
	es_fire server_var(wcs_targetid) server_var(ss_name) turnon
	es_delayed 1 es_fire server_var(wcs_targetid) server_var(ss_name) kill
	es_playsound server_var(wcs_targetid) ambient\creatures\flies4.wav 1
	es_delayed .2 es_playsound server_var(wcs_targetid) ambient\creatures\flies3.wav 1
	es_delayed .5 es_playsound server_var(wcs_targetid) ambient\creatures\flies2.wav 1
	es_playsound server_var(wcs_userid) ambient\creatures\flies4.wav .7
	es_delayed .2 es_playsound server_var(wcs_userid) ambient\creatures\flies3.wav .8
	es_delayed .5 es_playsound server_var(wcs_userid) ambient\creatures\flies2.wav .7
	ifx true(wcs_race_debugging) do
	{
		wcs_log [Race]: Crypt Lord - [Block] Skill: 4 (EXECUTED END)
	}
}

playerset model and command issues

First problem: when i try to use the playerset model like the screenshot below, it works when i enter the server, but if i change to another race that uses this command with another model, it doesn't change, its stays with the first model that i used, but if i change to another race without this command, it works perfectly fine (back to the original ct or t model)
Screenshot_38

Second problem: it seems like the wcs is having conflicts with another plugins. I have a !ws plugin etc but if i type the command in chat, the menu doesnt show (the game detects that is a command or something because it doesnt show in the chat), same thing with a store plugin, already tried both without wcs and it worked. I always get this error messages on the console and maybe its related to my problems. Thanks for the support.
Screenshot_37

how to add a new iteams

I want to add products. I have tested several writing methods, but they are not effective. Can you give me a detailed demonstration, please

cant get player weapon

So, basically when a race tries to get the enemy weapon info, it returns an error in the console
code: es wcsx get weapon wcs_wpn server_var(wcs_player)
Screenshot_30
I was looking on the weapon lib and i saw that i need to pass an attribute like "weapon name" or "weapon maxammo" and i couldnt make it work, what can i do?
code: es wcsx get weapon,name wcs_wpn server_var(wcs_player)
Screenshot_31

setfx disguiser missing arms/gloves

When using the mole skill es wcs_setfx disguiser [USERID] = 1 0 as a terrorist, the arms will not be displayed.
As shown in this example:

missing arms t disguiser

However triggering mole on a CT does show arms:

arms ct

[REQUEST] Old raceinfo/skillinfo system

A lot of players in my community are requesting the old raceinfo/skillinfo where's the skill description would be beneath the skill name. That way you don't always have to "click" on skills to see what they do. I think the same issue persists in shopmenu but I haven't checked yet.

This makes browsing races and viewing their skills&info a lot easier than it is now.

Bots keep getting kicked

I tried to isolate the problem but can't find what is causing it. I've already isolated it to WCS but I'm not sure why they get kicked. The kick reason is: "Bot X Kicked from session"

[URGENT] SQLite Database issue -> WCS is not ready

There is an issue where the database will create a ton of null records, essentially flooding the database and causing massive server lagg spikes & crashes.

This might be due to the latest commits where database edits have been made. I hope this can be resolved quickly since this issue renders WCS almost useless.

Also after x amount of uptime the WCS mod will stop loading and report "WCS is not ready, please wait." in chat whenever you try to use a command.

Teamlimit exception

@Xiazee
Probably not a big deal but I thought it'd be better to post it anyways.
Might be this PR: #45

2021-02-01 18:43:08 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/wcs.py", line 1035, in on_player_delete
    team = wcsplayer.player.team
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 744, in player
    return _Player(self.index)
  File "../addons/source-python/packages/source-python/entities/_base.py", line 132, in __call__
    obj = super().__call__(index)
  File "../addons/source-python/packages/source-python/players/_base.py", line 96, in __init__
    PlayerMixin.__init__(self, index)

ValueError: Conversion from "Index" (1) to "BaseEntity" failed.

Ultimate spamable while in spec or unassigned

This is just a minor thing but I thought it might be worth reporting.

It's possible to spam the "ultimate" command while in spectator or unassigned when you're on a race that has no ultimate leveled yet.
You can check the screenshot where I did this here; https://imgur.com/a/dpCvrxm

If you're on a race with the ultimate leveled it does display a correct message though: https://imgur.com/a/7ZHdjWR

Personally I'd suggest a fix that blocks the ability to spam the es_tell warnings, so that you can't flood the server with it.

WCS doesnt work on brand new server - CSGO

Hi, i am not sure if this is the correct place to ask for help, but here goes.
A friend and i just installed a new CSGO server.
We followed the installation manual as described, but WCS doesnt work at all when using it.
As soon as i type "wcs" ingame server console begins spamming this error:

image

I have tried removing/uninstalling everything and doing it again, and reinstalling C++ 2010 and 2015 as per instructions from source python, and sourcemod/metamod. Originally we tried with Eventscripts as well, but as that didnt function at all, we tried with just the CSGO server and WCS provided by here.

Any help?

late precache errors in console.log

Jan 27 19:38:26: Late precache of effects/yellowflare.vmt
Jan 27 19:38:26: Late precache of effects/combinemuzzle2.vmt
Jan 27 19:38:26: Late precache of effects/combinemuzzle1.vmt

I keep getting these "features" in console.log although that the materials are present on the server and are properly included in the downloads.ini file.

All 3 of the effects are used in wcs.py.

Either the SM downloader/precacher doesn't work properly, or it misses a setting in the wcs.py

Maybe import "from engines.precache import Model" can be useful for this.

Teamlimit errors preventing changerace with Zombie Reloaded V3 running

Currently you might be unable to change race due to a teamlimit related exception, if you combine WCS with Zombie Reloaded V3. I suspect it is due to team change messages being suppressed by stopping the player_team event. It will probably be an issue with any zombie mod.

image
https://discord.com/channels/270625743946514433/680193005449510930/941070339948027944

I have a patch in the works that should improve the error handling from teamlimit errors. It does not guarantee that the teamlimit data is always up to date, but it at least gives a warning if something goes wrong.

For the main issue i would suggest investigating whether changing @Event('player_team') to @PreEvent('player_team') in wcs.py would be enough to fix this specific issue.

Mistake in wcs_xtell and wcs_xcentertell, might prevent strings from being translated

SayText2(message[message.get(player.language, 'en')]).send(player.index)

HudMsg(message[message.get(player.language, 'en')], y=0.2).send(player.index)

player.language returns 'english' for me. But the keys in messages are country codes instead such as 'en'. I assume this causes get to always return the default value of 'en', instead of returning a translated string.

Maybe the inner message was supposed to be a dictionary mapping language names to codes, like this:

languages = {
    'english':  'en'
}

If that were the case, the default value of 'en' would actually make sense.

I have not actually tested this with different languages, but i think i heard mentions of some strings not being translated.

levelbank

i saw that the data folder has a levelbank file, but i dont know how to use it, if you can guide me on how to use it i would appreciate that

Errors loading old races from 0.78

[SP] Successfully loaded plugin 'wcs'.
[EventScripts] Loaded wcs/modules/races
[EventScripts] Loaded wcs/modules/items
Tried to look up command wcs_nearcoord as if it were a variable.

[SP] Caught an Exception:
Traceback (most recent call last):
File "../addons/source-python/plugins/es_emulator/eventscripts/esc/init.py", line 189, in command
command.run(argv, args, exp)
File "../addons/source-python/plugins/es_emulator/eventscripts/esc/cmds/init.py", line 140, in run
self.method(**_args)
File "../addons/source-python/plugins/es_emulator/eventscripts/esc/cmds/addons.py", line 20, in load
es.load(addonname)
File "../addons/source-python/plugins/es_emulator/eventscripts/esc/monkeypatch.py", line 28, in load
load(addonname)
File "../addons/source-python/plugins/es_emulator/helpers.py", line 206, in wrapper
return func(c)
File "../addons/source-python/plugins/es_emulator/eventscripts/es_C.py", line 2155, in load
es.loadModuleAddon(argv[1])
File "../addons/source-python/plugins/es_emulator/eventscripts/es.py", line 443, in loadModuleAddon
addons.load(newaddon)
File "../addons/source-python/plugins/es_emulator/eventscripts/es.py", line 242, in load
addon.load()
File "../addons/source-python/plugins/es_emulator/eventscripts/wcs/modules/items/nearcoord/nearcoord.py", line 6, in load
registerServerCommand('wcs_nearcoord', register, '')
File "../addons/source-python/plugins/es_emulator/eventscripts/_libs/python/cmdlib.py", line 141, in registerServerCommand
cmd_manager.registerServerCommand(*a, **kw)
File "../addons/source-python/plugins/es_emulator/eventscripts/_libs/python/cmdlib.py", line 37, in registerServerCommand
PreMinidumpCallback: updating dump comment
./srcds_run: line 318: 6533 Segmentation fault $HL_CMD

Issue loading wcs

Hello I'm trying to throw together a warcraft server on CSGO and am getting this issue when I try and load in wcs plugin. Any help or pointers would be appreciated

[SP] Caught an Exception:
Traceback (most recent call last):
File "..\addons\source-python\packages\source-python\plugins\command.py", line 164, in load_plugin
plugin=self.manager.load(plugin_name)
File "..\addons\source-python\packages\source-python\plugins\manager.py", line 207, in load
plugin._load()
File "..\addons\source-python\packages\source-python\plugins\instance.py", line 76, in _load
self.module.load()
File "..\addons\source-python\plugins\wcs\wcs.py", line 301, in load
race_manager.load_all()
File "..\addons\source-python\plugins\wcs\core\modules\races\manager.py", line 215, in load_all
config = self.get_or_create_config()
File "..\addons\source-python\plugins\wcs\core\modules\base.py", line 125, in get_or_create_config
config = json_load(inputfile)
File "..\addons\source-python\Python3\json_init
.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "..\addons\source-python\Python3\json_init
.py", line 354, in loads
return _default_decoder.decode(s)
File "..\addons\source-python\Python3\json\decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)

json.decoder.JSONDecodeError: Extra data: line 3 column 1 (char 12)

Raceinfo menu exception (database related?)

I'm having a WCS not loaded yet issue and I think it's because of this exception, since it's getting spammed:

[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/packages/source-python/listeners/tick.py", line 80, in _tick
    self.pop(0).execute()
  File "../addons/source-python/packages/source-python/listeners/tick.py", line 161, in execute
    return self.callback(*self.args, **self.kwargs)
  File "../addons/source-python/packages/source-python/listeners/tick.py", line 606, in _execute
    self.callback(*self.args, **self.kwargs)
  File "../addons/source-python/packages/source-python/menus/queue.py", line 239, in _radio_refresh
    queue._refresh()
  File "../addons/source-python/packages/source-python/menus/queue.py", line 105, in _refresh
    menu._refresh(self._index)
  File "../addons/source-python/packages/source-python/menus/base.py", line 104, in _refresh
    self._send(player_index)
  File "../addons/source-python/packages/source-python/menus/radio.py", line 120, in _send
    ShowMenu(*self._build(player_index)).send(player_index)
  File "../addons/source-python/packages/source-python/menus/base.py", line 114, in _build
    self.build_callback(self, player_index)
  File "../addons/source-python/plugins/wcs/core/menus/build.py", line 501, in raceinfo_skills_detail_menu_build
    race_name = wcsplayer.data['_internal_raceinfo']

KeyError: '_internal_raceinfo'

Problems with mysql

Hello, I wanted to set up a server with the Wcs mod today, which also worked very well. But I must have struggled with Mysql for an hour and then realized that it was probably not finished yet. Can you say how long it will be worked on. I know this is not an error, but it gives the impression that the mod works with mysql.

Kind regards

Human invisibility

How is that a CSGO bug? Like I said, it works with the old human race that comes with 0.78. So you probably could fix it?

Conversion from index exceptions

I'm getting quite frequent userid conversion errors. Although they are probably harmless I thought to post them here to keep it logged.

2021-04-12 09:31:15 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/commandsx/commandsx.py", line 190, in set_model
    Player.from_userid(userid).color = Color(255, 255, 255, 255)
  File "../addons/source-python/packages/source-python/players/_base.py", line 109, in from_userid
    return cls(index_from_userid(userid), caching=caching)

ValueError: Conversion from "Userid" (159) to "Index" failed.


[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/wcs.py", line 1365, in on_take_damage_alive
    if ffa_enabled or not wcsvictim.player.team_index == wcsattacker.player.team_index:
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 751, in player
    return _Player(self.index)
  File "../addons/source-python/packages/source-python/entities/_base.py", line 132, in __call__
    obj = super().__call__(index)
  File "../addons/source-python/packages/source-python/players/_base.py", line 96, in __init__
    PlayerMixin.__init__(self, index)

ValueError: Conversion from "Index" (3) to "BaseEntity" failed.


2021-04-12 12:25:10 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/packages/source-python/events/hooks.py", line 222, in _pre_game_event
    current_action = callback(game_event)
  File "../addons/source-python/plugins/wcs/wcs.py", line 735, in pre_player_hurt
    wcsattacker = Player.from_userid(attacker)
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 892, in from_userid
    return cls(index_from_userid(userid))

ValueError: Conversion from "Userid" (269) to "Index" failed.

2021-04-12 12:25:10 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/packages/source-python/events/listener.py", line 92, in fire_game_event
    callback(game_event)
  File "../addons/source-python/plugins/wcs/wcs.py", line 702, in player_hurt
    wcsattacker = Player.from_userid(attacker)
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 892, in from_userid
    return cls(index_from_userid(userid))

ValueError: Conversion from "Userid" (269) to "Index" failed.

[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/wcs.py", line 1365, in on_take_damage_alive
    if ffa_enabled or not wcsvictim.player.team_index == wcsattacker.player.team_index:
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 751, in player
    return _Player(self.index)
  File "../addons/source-python/packages/source-python/entities/_base.py", line 132, in __call__
    obj = super().__call__(index)
  File "../addons/source-python/packages/source-python/players/_base.py", line 96, in __init__
    PlayerMixin.__init__(self, index)

ValueError: Conversion from "Index" (3) to "BaseEntity" failed.

2021-04-12 12:25:11 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/packages/source-python/events/hooks.py", line 222, in _pre_game_event
    current_action = callback(game_event)
  File "../addons/source-python/plugins/wcs/wcs.py", line 735, in pre_player_hurt
    wcsattacker = Player.from_userid(attacker)
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 892, in from_userid
    return cls(index_from_userid(userid))

ValueError: Conversion from "Userid" (269) to "Index" failed.

2021-04-12 18:02:56 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/wcs/wcs.py", line 1365, in on_take_damage_alive
    if ffa_enabled or not wcsvictim.player.team_index == wcsattacker.player.team_index:
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 751, in player
    return _Player(self.index)
  File "../addons/source-python/packages/source-python/entities/_base.py", line 132, in __call__
    obj = super().__call__(index)
  File "../addons/source-python/packages/source-python/players/_base.py", line 96, in __init__
    PlayerMixin.__init__(self, index)

ValueError: Conversion from "Index" (13) to "BaseEntity" failed.

2021-04-12 18:02:56 - sp	-	EXCEPTION	
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/packages/source-python/events/listener.py", line 92, in fire_game_event
    callback(game_event)
  File "../addons/source-python/plugins/wcs/wcs.py", line 702, in player_hurt
    wcsattacker = Player.from_userid(attacker)
  File "../addons/source-python/plugins/wcs/core/players/entity.py", line 892, in from_userid
    return cls(index_from_userid(userid))

ValueError: Conversion from "Userid" (456) to "Index" failed.

[QUESTION] Any way to use damage type DMG_FALL for damage commands? (Armor damage reduction)

Example: wcs_dealdamage userid damage attacker | wcs_dealdamage userid 50 attacker
In the case when the player has armor, he is inflicted incomplete damage, not 50 as planned. Also, the damage reduction in this case depends on which weapon the attacker is holding in his hands.
In the original ES mod, the damage system works through WCS_FALL, judging by the code. Is it possible to do the same here?
Game: CSS OB, Linux host.
(My English is poor, I apologize for that. )

WCS setmodel not working properly

The "wcs setmodel" function needs a rework or atleast get looked at. I've tested the function on a prop and it doesn't make the original model invisible, thus showing you both models at the same time. I've also heard that this function was created for props so I do suggest renaming the function to wcs setmodelprop to make that more clear.

Although that it would be nice to have 1 function which works for both since models are an important feature of WCS and it's nice to have a solid function for it.

Undead Scourge's Levitation

Undead Scourge's Levitation was bugged once. I cant reproduce it tho. Could have been caused by DM mod. But it was your version of it. You can keep this one open and I can update if it happens again. I havent changed the config, so its using your default settings.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.