Author Topic: War3Source:EVO (TF2, FoF, CSS, CSGO)  (Read 827 times)

El Diablo

  • Hero Member
  • *****
  • Posts: 1126
    • View Profile
    • War3Evo
War3Source:EVO (TF2, FoF, CSS, CSGO)
« on: June 12, 2016, 09:09:38 AM »
(Be Warned:  Your original War3Source races would need to be converted to use the new War3Source: Evolution) Most will probably continue to use War3Source Original, but if you are one of those few that move to War3Source: Evolution, you will be way ahead of the game with so many features and updates.

There has been many servers that has created War3Source private versions. I want to announce that I am working to make my version open source (again). I feel when this version is open source, that it will be the most advanced version of War3Source available and is reason I will call it War3Source: Evolution.

The only downside is that I ripped out a lot of the translations from my version of War3Source as it caused issues that I did not want to deal with at that time.  Anyone requiring translations will still need to use War3Source Original until I can fully implement them again.

It should be compatible with TF2, FoF, CS:S, and CS:GO. Out of those four, TF2 will be the most compatible and have the best new races. CS:GO will require much work and the other two will work fine.  Downside: There is a separate compile for each game mode.  Upside: You won't be running unnecessary code in the background for each game mode.

My version incorporates the latest technology that Sourcemod and Metamod has to offer.

My version allows you to write races using the MethodMap function, which makes writing races to much easier and is NOT in War3Source original.

The main thing I am doing to convert it for open source is removing "War3Evo" and "W3E" from the text and replacing it with "War3Source:EVO" and a few other details relating to War3Evo's tagging and database system.

I know a few server owners that are willing to run this new version when it becomes open source. I am here to announce that is what I'm working on it.

How long before it is released? Unsure as I only have weekends to work on this project. I will keep this thread updated as I progress each weekend.  I have been going thru the code for the last 2 days, so this project is just starting for the conversion to open source.

What does my version offer???  These features and updates (some of which the other War3Source developers did not want in the original version).  Several of the new features were debated by original War3Source developers to not be important:

* All War3Source Engines is in 1 file:  war3source.sp / war3source.smx
Code: [Select]
#include <war3source>
#include "War3Source/include/War3Source_Version_Info.inc"
#include "War3Source/include/War3Source_Variables.inc"
#include "War3Source/War3Source_001_OnPluginStart.sp"
#include "War3Source/War3Source_001_OnPluginEnd.sp"
#include "War3Source/War3Source_001_OnRaceChanged.sp"
#include "War3Source/War3Source_001_OnW3Denyable.sp"
#include "War3Source/War3Source_001_OnAddSound.sp"
#include "War3Source/War3Source_001_OnGameFrame.sp"
#include "War3Source/War3Source_001_OnPlayerRunCmd.sp"
#include "War3Source/War3Source_001_OnSkillLevelChanged.sp"
#include "War3Source/War3Source_001_OnWar3Event.sp"
#include "War3Source/War3Source_001_Configuration.sp"
#include "War3Source/War3Source_001_Clients.sp"
#include "War3Source/War3Source_001_Engine_InitNatives.sp"
#include "War3Source/War3Source_001_Engine_InitForwards.sp"
#include "War3Source/War3Source_001_GameEvents.sp"
#include "War3Source/War3Source_001_OnW3TakeDmgAllPre.sp"
#include "War3Source/War3Source_000_Engine_Misc.sp"
#include "War3Source/War3Source_000_Engine_DatabaseConnect.sp"
#include "War3Source/War3Source_000_Engine_Hint.sp"
#include "War3Source/War3Source_000_Engine_Log.sp"
#include "War3Source/War3Source_Engine_Aura.sp"
#include "War3Source/War3Source_Engine_Bank.sp"
#include "War3Source/War3Source_Engine_BuffHelper.sp"
#include "War3Source/War3Source_Engine_BuffMaxHP.sp"
#include "War3Source/War3Source_Engine_BuffSpeedGravGlow.sp"
#include "War3Source/War3Source_Engine_BuffSystem.sp"
#include "War3Source/War3Source_Engine_CommandHook.sp"
#include "War3Source/War3Source_Engine_CooldownMgr.sp"
#if GGAMETYPE == GGAME_CSGO
#include "War3Source/War3Source_Engine_CSGO_Radar.sp"
#endif
#if CYBORG_SKIN == MODE_ENABLED
#include "War3Source/War3Source_Engine_Cyborg.sp"
#endif
#include "War3Source/War3Source_Engine_DamageSystem.sp"
#include "War3Source/War3Source_Engine_DatabaseSaveXP.sp"
#include "War3Source/War3Source_Engine_DatabaseTop100.sp"
#include "War3Source/War3Source_Engine_Deny.sp"
#include "War3Source/War3Source_Engine_Dependency.sp"
#include "War3Source/War3Source_Engine_Download_Control.sp"
#include "War3Source/War3Source_Engine_Easy_Buff.sp"
#include "War3Source/War3Source_Engine_Events.sp"
#include "War3Source/War3Source_Engine_HelpMenu.sp"
#include "War3Source/War3Source_Engine_ItemClass.sp"
#include "War3Source/War3Source_Engine_ItemClass2.sp"
#if SHOPMENU3 == MODE_ENABLED
#include "War3Source/War3Source_Engine_ItemClass3.sp"
#endif
#if SHOPMENU3 == MODE_ENABLED
#include "War3Source/War3Source_Engine_ItemDatabase3.sp"
#endif
#include "War3Source/War3Source_Engine_ItemOwnership.sp"
#include "War3Source/War3Source_Engine_ItemOwnership2.sp"
#if SHOPMENU3 == MODE_ENABLED
#include "War3Source/War3Source_Engine_ItemOwnership3.sp"
#endif
#include "War3Source/War3Source_Engine_MenuChangerace.sp"
#include "War3Source/War3Source_Engine_MenuItemsinfo.sp"
#include "War3Source/War3Source_Engine_MenuItemsinfo2.sp"
#if SHOPMENU3 == MODE_ENABLED
#include "War3Source/War3Source_Engine_MenuItemsinfo3.sp"
#endif
#include "War3Source/War3Source_Engine_MenuRacePlayerinfo.sp"
#include "War3Source/War3Source_Engine_MenuShopmenu.sp"
#include "War3Source/War3Source_Engine_MenuShopmenu2.sp"
#if SHOPMENU3 == MODE_ENABLED
#include "War3Source/War3Source_Engine_MenuShopmenu3.sp"
#endif
#include "War3Source/War3Source_Engine_MenuSpendskills.sp"
#include "War3Source/War3Source_Engine_MenuWar3Menu.sp"
#include "War3Source/War3Source_Engine_Money_Timer.sp"
#include "War3Source/War3Source_Engine_NewPlayers.sp"
#include "War3Source/War3Source_Engine_Notifications.sp"
#include "War3Source/War3Source_Engine_PlayerClass.sp"
#include "War3Source/War3Source_Engine_PlayerCollision.sp"
#include "War3Source/War3Source_Engine_PlayerDeathWeapons.sp"
#include "War3Source/War3Source_Engine_PlayerLevelbank.sp"
#include "War3Source/War3Source_Engine_PlayerTrace.sp"
#include "War3Source/War3Source_Engine_RaceClass.sp"
#include "War3Source/War3Source_Engine_Race_KDR.sp"
#include "War3Source/War3Source_Engine_RaceRestrictions.sp"
#include "War3Source/War3Source_Engine_Regen.sp"
#include "War3Source/War3Source_Engine_ShowMOTD.sp"
#include "War3Source/War3Source_Engine_SkillEffects.sp"
#include "War3Source/War3Source_Engine_TrieKeyValue.sp"
#include "War3Source/War3Source_Engine_Wards_Checking.sp"
#include "War3Source/War3Source_Engine_Wards_Engine.sp"
#include "War3Source/War3Source_Engine_Wards_Engine_Behavior.sp"
#include "War3Source/War3Source_Engine_Wards_Wards.sp"
#include "War3Source/War3Source_Engine_Weapon.sp"
#include "War3Source/War3Source_Engine_XPGold.sp"
#if SHOPMENU3 == MODE_ENABLED
#include "War3Source/War3Source_Engine_XP_Platinum.sp"
#endif
#include "War3Source/War3Source_Engine_WCX_Engine_Bash.sp"
#include "War3Source/War3Source_Engine_WCX_Engine_Crit.sp"
#include "War3Source/War3Source_Engine_WCX_Engine_Dodge.sp"
#include "War3Source/War3Source_Engine_WCX_Engine_Skills.sp"
#include "War3Source/War3Source_Engine_WCX_Engine_Teleport.sp"
#if GGAMETYPE != GGAME_CSGO
#include "War3Source/War3Source_Engine_SteamTools.sp"
#endif
#include "War3Source/War3Source_Engine_BotControl.sp"
#include "War3Source/War3Source_Engine_DeciSecondLoop_Timer.sp"
#include "War3Source/War3Source_Engine_Casting.sp"
#include "War3Source/War3Source_002_OnW3HealthPickup.sp"
#if GGAMETYPE == GGAME_TF2
#include "War3Source/War3Source_002_OnW3SupplyLocker.sp"
#endif
#include "War3Source/War3Source_Engine_WCX_Engine_Vampire.sp"
#include "War3Source/War3Source_Engine_GameData.sp"
#include "War3Source/War3Source_003_RegisterPrivateForwards.sp"
#include "War3Source/War3Source_001_OnSkinChange.sp"
#include "War3Source/War3Source_Engine_Talents.sp"

Single File Compiling War3Source.sp...SourcePawn Compiler 1.7.3-dev+5283
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2014 AlliedModders LLC
Code size:           581004 bytes
Data size:          6912040 bytes
Stack/heap size:    2400000 bytes
Total requirements: 9893044 bytes
Done.
Compilation finished successfully.
* Races are external addons
* Mutant Races - Races that require other race / levels in order to be selected and used via War3_SetRaceDependency()
Code: [Select]
public OnWar3LoadRaceOrItemOrdered2(num,reloadrace_id,String:shortname[])
{
if(num==RACE_ID_NUMBER||(reloadrace_id>0&&StrEqual("halforc",shortname,false)))
{
thisRaceID=War3_CreateNewRace("Half Orc","halforc","Mutant!",reloadrace_id);

SKILL_DEVOUT=War3_AddRaceSkill(thisRaceID,"Mutant Devotion","Gives you additional 5/10/15/20 health.",false,4);

SKILL_BLITZ=War3_AddRaceSkill(thisRaceID,"Mutant Blitz",
"Increases movement speed.",false,4);

SKILL_WARSTRIKE=War3_AddRaceSkill(thisRaceID,"Mutant Strike","Chance of doing critical damage,\nand 5/10/15/20% chance to bash the enemy which renders the enemy immobile for 0.2 seconds.",false,4);

ULT_TELEPORT=War3_AddRaceSkill(thisRaceID,"Mutant Teleport","Teleport toward where you aim.\n600/700/850/1000 range. Ultimate Immunity has 350 blocking radius.",true,4);

War3_CreateRaceEnd(thisRaceID);

War3_AddSkillBuff(thisRaceID, SKILL_BLITZ, fMaxSpeed, forcblitz);

new GetRaceID=War3_GetRaceIDByShortname("humanally");
if(GetRaceID>0)
{
War3_SetRaceDependency(thisRaceID, GetRaceID, 16);
}
GetRaceID=War3_GetRaceIDByShortname("orcishforce");
if(GetRaceID>0)
{
War3_SetRaceDependency(thisRaceID, GetRaceID, 16);
}
}
}
* W3Faction was added back into War3Source and works
* uses private forwards on the most cpu intensive forwards and uses global forwards on less cpu intensive forwards. This will allow you to run so many more races with so much less lag.
-- Here is example of W3Hook for private forwards (code grabbed from my War3Source_002_HumanAlliance.sp race):
Code: [Select]
bool HooksLoaded = false;
public void Load_Hooks()
{
if(HooksLoaded) return;
HooksLoaded = true;

W3Hook(W3Hook_OnUltimateCommand, OnUltimateCommand);
W3Hook(W3Hook_OnWar3EventSpawn, OnWar3EventSpawn);
}
public void UnLoad_Hooks()
{
if(!HooksLoaded) return;
HooksLoaded = false;

W3UnhookAll(W3Hook_OnUltimateCommand);
W3UnhookAll(W3Hook_OnWar3EventSpawn);
}
bool RaceDisabled=true;
public OnWar3RaceEnabled(newrace)
{
if(newrace==thisRaceID)
{
Load_Hooks();

RaceDisabled=false;
}
}
public OnWar3RaceDisabled(oldrace)
{
if(oldrace==thisRaceID)
{
RaceDisabled=true;

UnLoad_Hooks();
}
}

public void OnUltimateCommand(int client, int race, bool pressed, bool bypass)
{
if(RaceDisabled)
return;

new userid=GetClientUserId(client);
if(race==thisRaceID && pressed && userid>1 && IsPlayerAlive(client) && !Silenced(client))
{
new ult_level=War3_GetSkillLevel(client,race,ULT_TELEPORT);
if(ult_level>0)
{
if(War3_SkillNotInCooldown(client,thisRaceID,ULT_TELEPORT,true)) //not in the 0.2 second delay when we check stuck via moving
{
W3Teleport(client,_,_,TeleportDistance[ult_level],thisRaceID,ULT_TELEPORT);
}
}
else
{
W3MsgUltNotLeveled(client);
}
}
else
{
if(Silenced(client))
{
W3Hint(client,HINT_LOWEST,5.0,"Can't use teleport because you have been silenced!");
}
}
}

public void OnWar3EventSpawn(int client)
{
if(RaceDisabled)
return;

if(War3_GetRace(client)==thisRaceID)
{
ActivateSkills(client);
}
}
* uses methodmaps. This allows you to write races much easier.
-- Method Map example of use in on of my modifed races:
Code: [Select]
public void OnWar3Event(W3EVENT event,int client)
{
if(RaceDisabled)
return;

ThisRacePlayer player = ThisRacePlayer(client);

if(event==VampireImmunityCheckPre)
{
if(player && player.raceid==thisRaceID)
{
W3SetVar(EventArg1, Immunity_Skills);
W3SetVar(EventArg2, SKILL_LEECH);
return;
}
}
else if(event==OnVampireBuff)
{
if(player)
{
if(player.raceid==thisRaceID)
{
int skill_level=player.getskilllevel( thisRaceID, SKILL_LOWGRAV );
if(skill_level>0)
{
float CurrentCritChance = player.getbuff(fCritChance,thisRaceID);
//DP("Crit before %f",CurrentCritChance);
if(CurrentCritChance<1.0)
{
CurrentCritChance+=0.01 * skill_level;
player.setbuff(fCritChance,thisRaceID,CurrentCritChance,client);
player.setbuff(iCritMode,thisRaceID,1,client);
player.setbuff(fCritModifier,thisRaceID,CritDamageIncrease,client);
player.message("{blue}BloodLust increases crit chance by %f",CurrentCritChance);
}
else if(CurrentCritChance>1.0)
{
CurrentCritChance=1.0;
player.setbuff(fCritChance,thisRaceID,CurrentCritChance,client);
player.setbuff(iCritMode,thisRaceID,1,client);
player.setbuff(fCritModifier,thisRaceID,CritDamageIncrease,client);
}
//DP("Crit after %f",CurrentCritChance);
}
}
}
}
}
* is being converted for the new variables format
* Has been rewritten multiple times. Each rewrite makes a better engine.
* Teleport Engine (lets you do amazing stuff with teleporting in your races)
-- teleport engine inc
Code: [Select]
/**
 * File: WCX_Engine_Teleport.inc
 * Author(s): El Diablo
 *
 */

/**
 * Teleports client to target location within given distance
 * or just teleports forward a certain distance.
 *
 * @param client
 * @param target
 * @param Float:ScaleVectorDistance - deals with target distance
 * @param Float:distance
 *
 * If you want to reset the cooldowns for your race / skill, then supply those
 * numbers in the correct params
 *
 * This resets cooldown if the teleport was unsuccessful due to boundaries
 * like walls being in the way.
 *
 * @param raceid *resets race/skill cooldown on fail
 * @param skillid *resets race/skill cooldown on fail
 *
 * @param return - no return
 *
 */
native W3Teleport(client,target=-1,Float:ScaleVectorDistance=-1.0,Float:distance=1200.0,raceid=-1,skillid=-1);

/**
 * Called right before GetAngleVectors Calculations.
 *
 * Currently this is the current Angle formula:
 *
 * GetClientEyeAngles(client,angle);
 *
 * If you want to use the target instead of the client and or
 * change the formula, you can do this here to change the angle
 * right before it calls GetAngleVectors.
 *
 * @param client
 * @param target
 * @param angle allows you to change the angle before the caluclations.
 *
*/
forward Action:OnW3TeleportGetAngleVectorsPre(client, target, Float:angle[3]);


/**
 * Called right before W3Teleport triggers its own TeleportEntity.
 *
 * All checks have been made, as far a distances and stuff in the way.
 * This is the time it will teleport the entity.
 *
 * We had used this to change the angle of the entity whom is teleported
 * and is the reason this Custom Action was created.
 * You can use it how you wish.
 *
 * If you would like to teleport the entity yourself, then return
 * Plugin_Handled after you teleport the entity
 * otherwise, W3Teleport will use this formula:
 * TeleportEntity(client,emptypos,NULL_VECTOR,NULL_VECTOR);
 * to teleport the entity.
 *
 * @param client
 * @param target
 *
 * @return Plugin_Handled if you plan to use this function to create
 * your own teleport entity function.
*/
forward Action:OnW3TeleportEntityCustom(client,target,Float:dir[3],Float:emptypos[3]);

/**
 * This is the location where the client will be teleporting to.
 *
 * Most races do immunity checking here.
 *
 * @return Plugin_Handled if this did NOT pass your checks and you will NOT allow the teleport to this location.
*/
forward Action:OnW3TeleportLocationChecking(client,Float:playerVec[3]);


/**
 * Called when there was a successful teleport
 *
 * @param client
 * @param target
 * @param raceid
 * @param skillid
 *
 * @param return - no return
 *
 */
forward OnW3Teleported(client,target,distance,raceid,skillid);
* Easy Buff updates. Currently the Easy buff on War3Source's website is buggy, so I will have my fixes included.
* Aura engine updates.
-- My aura engine update includes:
--- AuraStack - how many auras of this auraid does the client have?
--- AuraOwner - the owner of the aura (well tested)
* Optional Shopmenu 3 (permanent items)
* Optional Talent Specs (Similar to Warcraft's Talent Calculator) - TF2 only atm
-- this part will be fully included after all code for it has been completely looked at
* Download Control Engine -- allows you to specify the priority of certain sounds the client needs to download first.
* Extensive Notifications for players -- allows players to optionally gain text updates on exactly "what just happened to me"
* Special Players Preferences
* Players can "turn off" most War3Source graphic effects to help low cpu players
* Players can toggle on/off extra combat information that would spam their chat
* Optional KDR system - Basically handicaps players whom have "too high of a KDR"
* New Wards / Wards Checking
* If shop 3 is enabled
-- new currency - Platinum
-- shop 3 items level up and gain experience
* New Casting Engine - for "spells that require delay" & NEW special effects
* Each race can have a different skin (TF2 tested, but should work on other game consoles) -- a private forward can be setup for OnWar3SkinChange()
* New Player benefits Engine -- players with less than X levels gain X benefits until they level up.
* Optionally Hide CSGO Radar while looking at menus
* New races never seen before (Can not be used without extensive conversion for the War3Source Original)
* Banking Engine for Gold - allows players to "save gold" and then be able to "withdraw" later
* New "Instant Race Changing" --> Can cause issues between races that are not properly handling the instant change
* Owner can "Pause War3Source" during game play.  Yes you can stop War3Source during game play and restart it instantly.  If you think your server is "lagging" due to War3Source, you can test that by pausing War3Source.
* Being able to instantly reload any race during a production game for updates (some servers require you pause War3Source before attempting this or your server may crash...depends on how powerful your server is)
* Is special compiled for each game console (Why have addons or source code that don't work in one game or the other just using sourcemod memory?)
* And so much more.... figure 6 years of updates and the first 4 of those years was daily updates.

I want it to be known, that the main reason I am considering Open Sourcing my private version is to create a legacy for me.  What good is private information if it is never made public?  The 2nd open sourced War3Source private version.  I figure War3Source is the original open sourced version.  I want to know that I have helped many server owners have more features, stability, and options.

If you feel that it would be worth my time and investment into releasing my private version of War3Source, please do comment below and boost my ego on this
« Last Edit: June 26, 2016, 09:08:41 AM by El Diablo »

El Diablo

  • Hero Member
  • *****
  • Posts: 1126
    • View Profile
    • War3Evo
« Last Edit: June 26, 2016, 09:09:29 AM by El Diablo »

El Diablo

  • Hero Member
  • *****
  • Posts: 1126
    • View Profile
    • War3Evo
Re: Coming Soon: War3Source:EVO (TF2, FoF, CSS, CSGO)
« Reply #2 on: June 26, 2016, 09:08:25 AM »
New Thread:

https://forums.alliedmods.net/showthread.php?t=284415

When you click on the above link: Scroll down for both TF2 and CSGO compiled version downloads.


El Diablo

  • Hero Member
  • *****
  • Posts: 1126
    • View Profile
    • War3Evo
Re: War3Source:EVO (TF2, FoF, CSS, CSGO)
« Reply #3 on: July 01, 2016, 04:24:07 PM »
https://forums.alliedmods.net/showpost.php?p=2432605&postcount=14

The above link has the new experiemental "backwards compatibiliy plugin" for races built using the War3Source built on this website.

You will have to compile the plugin and your old races yourself against my version of this War3Source engine.

I'll make more improvements to the code as more people post their error logs dealing with the backwards compatibility plugin and their races.

If you have very old race that War3Source.com does not support anymore, please post a copy of it so I can make a backwards compatibility plugin for it too!

El Diablo

  • Hero Member
  • *****
  • Posts: 1126
    • View Profile
    • War3Evo
Re: War3Source:EVO (TF2, FoF, CSS, CSGO)
« Reply #4 on: July 04, 2016, 08:40:01 AM »
I'm working to add my SkillCraft Ideas into WarCraft.  This will allow Races to swap, share, and exchange skills at anytime they choose.

This is something that will differentiate itself from the original War3Source as currently the only thing you can do is use "generic skills" which still binds itself to a race and then can not be swapped at anytime.

So.. Soon as I have this working, I can then create a slew of skills and create some brand new races that has never been seen before on War3Source!

Races where the skills change based on level, or can randomly swap every round, or skills that "evolve".. etc.

Races can actually "take on" all the other race skills temporarily!

The player will still level that race skill slot, but the skills will be flexible.


The old races will still be supported, but the ability to make these new races will be new!
« Last Edit: July 04, 2016, 08:42:43 AM by El Diablo »