Introduction

Vanguard is insane addon with intensive features for rigid isro-r released files ..Elevate your experience with the ultimate solution you’ve been waiting for!.

Latest Version:

Version 7.0.0. (19-12-2024) Stable.

Getting Started

Installalation

Its simple as injecting dlls to modules and thats it.

  1. Download latest version rar.
  2. Restore vanguard.bak database.
  3. Copy smc folder into your smc folder.
  4. Inject Smc.dll into SMC_Real.exe
  5. Register an account
  6. Copy module folder into your server files folder.
  7. Copy gameserver folder into your gameserver folder.
  8. Edit your database data at vanguard/ ini.
  9. Copy modulekey from smc into Key at vanguard / ini.
  10. Copy client data.
  11. Copy clientkey from smc into Key in Settings / settings.ini.
  12. Inject only vanguard.dll into your sro_client.exe.

.

Procedures

_GameServerAutoEquipmentCallBack

@CharID INT, @Level INT

This procedure will be called by gameserver incase u enabled auto equipment, so here you can put your own logic to give FB to the player

_GameServerBuyOldItemMallItem

@CharID INT, @PackageCodeName VARCHAR(255), @PackageCount SMALLINT

This procedure will be called by gameserver incase u enabled old item mal when player purchases an item from old item mall, at this point you will have to build your own buy process.

_GameServerControlBattleArenaRegister

@CharID INT, @BattleArenaType TINYINT

This procedure will be called by gameserver when player registering at battle arena, returning 0 will block him from registering. returning 1 will allow him.

_GameServerControlFlagWorldRegister

@CharID INT

This procedure will be called by gameserver when player registering at CTF, returning 0 will block him from registering. returning 1 will allow him.

_GameServerControlItem

@CharID INT, @ItemRefObjId INT

This procedure will be called by gameserver when player uses an item, so that you can put ur own logic to block items at specific conditions. returning 0 will block him from using the item. returning 1 will allow him.

_GameServerControlMonsters

@CharID INT, @MonsterRefObjId INT

This procedure will be called by gameserver when player attacks monster so that you can build your own logic for example making INT or STR uniques returning 0 will block him. returning 1 will allow him.

_GameServerControlPickUp

@CharID INT, @ItemRefObjID INT

This procedure will be called by gameserver when player tries to pick any item returning 0 will block him. returning 1 will allow him.

_GameServerControlQuestReceiveRequest

@CharID INT, @QuestID INT

This procedure will be called by gameserver when user takes a quest or deliver it returning 0 will block him. returning 1 will allow him.

_GameServerControlSellingGoods

@CharID INT, @NPCID INT, @GoodID INT, @Quantity SMALLINT, @Slot TINYINT

This procedure will be called by gameserver when player tries to sell goods, you can use it to make custom rewards .returning 0 will block him. returning 1 will allow him.

_GameServerControlSkills

@CharID INT, @SkillID INT

This procedure will be called by gameserver when player uses any skill, returning 0 will block him. returning 1 will allow him.

_GameServerControlSurvivalRegister

CharID INT

This procedure will be called by gameserver when player registers at survival . returning 0 will block him. returning 1 will allow him.

_GameServerControlTeleport

@CharID INT, @TargetID INT

This procedure will be called by gameserver when player tries to teleport to any gate, TargetID is gateid returning 0 will block him. returning 1 will allow him.

_GameserverGetAnalyzerDataByCharID

@CharID INT

This procedure called internally by gameserver.

_GameServerGetJackpotData

This procedure called internally by gameserver.

_GameServerIsUserRegisteredAtEvent

@EventID INT, @CharID INT

This procedure called internally by gameserver.

_GameServerJackpotAddSilk

@CharID INT, @JID INT, @SilkAmount INT

This procedure called internally by gameserver.when player adds silk to jackpot

_GameServerLimitsChecker

@CharID INT

This procedure is a custom procedure made to check for limits such as hwid or ip limits. you can change hwid limits and so on from it.

_GameServerOnBattleArenaFinish (NOTIFY)

@EventType VARCHAR(100), @CharID INT, @Type TINYINT

This procedure will be called by gameserver when battle arena finishes. --Type 0 'WIN' --Type 1 'LOSE' --Type 2 'DRAW'

_GameServerOnBattleArenaKill (NOTIFY)

@EventType VARCHAR(100), @KillerID INT, @KilledID INT

This procedure will be called by gameserver when a kill happen at battle arena

_GameServerOnExchangeEnd (NOTIFY)

@CharID INT

This procedure will be called by gameserver when exchange session ends.

_GameServerOnExchangeStart (NOTIFY)

@CharID INT

This procedure will be called by gameserver when exchange session starts.

_GameServerOnFlagWorldFinish (NOTIFY)

@CharID INT, @Type TINYINT

This procedure will be called by gameserver when ctf ends.

_GameServerOnFlagWorldKill (NOTIFY)

@KillerID INT, @KilledID INT

This procedure will be called by gameserver when a kill happens at ctf

_GameServerOnFWEndCounter_Guilds (NOTIFY)

_GameServerOnFWEndCounter_Players (NOTIFY)

@CharName VARCHAR(32), @TotalKills INT, @PosIndex INT, @FortressId INT

This procedure will be called by gameserver when fortress ends with counter results, so that you can reward top players / guilds kills.

_GameServerOnKill (NOTIFY)

@KillerCharID INT, @KilledCharID INT, @RegionID INT, @WorldID SMALLINT, @IsInJobMode BIT

This procedure will be called by gameserver. this is a general killer procedure will be called whenever someone kills another.

_GameServerOnRemoveCustomTitle (NOTIFY & ACTIONS)

@CharID INT, @SendNotification BIT

This procedure will be called by gameserver. its when player tries to remove used title from achievement wnd

_GameServerOnSetCustomTitle (NOTIFY & ACTIONS)

@CharID INT, @TitleID INT

This procedure will be called by gameserver when player uses a title from achievement wnd

_GameServerOnUpdateRegion (NOTIFY)

@CharID INT, @Region SMALLINT, @IsInSafeZone BIT

This procedure will be called by gameserver when player enters new region

_GameServerOnUpdateShardPosition (NOTIFY)

@CharID INT, @RegionID INT, @PosX INT, @PosY INT, @PosZ INT

This procedure will be called by gameserver if you assigned to region EF_FREE_PVP_REGION flag

_GameServerSaveMacroOptions

@CharID INT, @Option_ID INT, @Value INT

This procedure called internally by gameserver.

_GameserverSwitchersCallBack

@CharID INT, @SwitcherItemID INT, @TargetItemID INT, @TargetItemSlot TINYINT

This procedure will be called by gameserver you can replace the default switchers to do another job or returning 2 will keep it as default if you wanna create a custom one, just copy existing switcher with same typeid, then you can handle it at this procedure by itemid so now, you will be able to create as many as you want to switch avatars male <-> female to make item visual models and so on easily

_GatewayCreateBetaAccount

_GatewayIsGMAccount

This procedure called internally by Gateway.

_ShardManagerAddBuff

_ShardManagerRemoveBuff

_ShardManagerAddDamage

_ShardManagerAddExperienceJob

_ShardManagerAddExperiencePoints

_ShardManagerAddGold

_ShardManagerAddItem

_ShardManagerAddOrUpdateCustomIcon

_ShardManagerRemoveCustomIcon

_ShardManagerSendNotice

_ShardManagerSetPVPCape

_ShardManagerSetZerkLevel

_ShardManagerAddSkillPoints

Basic procedures where you can add or do actions to user

_ShardManagerAttackBlockByKey

_ShardManagerAttackEnableByKey

@Key VARCHAR(128), @Regions VARCHAR(512)

This procedure will be called by you, where you can block attack at specific regions by key, wouldn't recommend to use this and use _ShardManagerSetRegionSafeZoneState

_ShardManagerBanActions

@CharID INT, @Type INT

This procedure will be called by you, where you can ban user by ip or hwid

_ShardManagerBattlePassAddPoints

This procedure will be called by you, where you can give user battle pass points based at your own logic.

_ShardManagerBattlePassClaimItem

_ShardManagerBattlePassPurchasePremium

@CharID INT, @JID INT

This procedure will be called internally by shardmanager. when player purchases battle pass

_ShardManagerCharacterReload

@CharID INT

This procedure will be called by you, to teleport the user to the same location.

_ShardManagerConsumeItem

@CharID INT, @SlotID INT, @Count INT

This procedure will be called by you to consume item or delete it from player's inventory

_ShardManagerControlCharNameValidity

@JID INT, @CharName VARCHAR(32), @JobType TINYINT

This procedure will be called by shardmanager, when he tries to register to a job returning 0 will block him. returning 1 will allow him.

_ShardManagerCounterCreate

_ShardManagerCounterOnRemove

_ShardManagerCounterRemove

We have 3 types of counters
Normal => type 0
Job => type 1
icon paths: juicer\counter\thief_icon.ddj, juicer\counter\thief_icon.ddj
Team => type 2
example:
EXEC [dbo].[_ShardManagerCounterCreate] 'Counter_1', 2,'24744,24488', 1, 1 --Create Counter
EXEC [dbo].[_ShardManagerCounterRemove] 'Counter_1' --Remove Counter
_ShardManagerCounterOnRemove => here the players will be reported with their kill counts so that you can reward him based at their position..

_ShardManagerCustomAchievementColor_Add

_ShardManagerCustomAchievementColor_Remove

_ShardManagerCustomNameColor_Add

_ShardManagerCustomNameColor_Remove

_ShardManagerCustomTitleColor_Add

_ShardManagerCustomTitleColor_Remove

_ShardManagerDeleteCustomTitle

This procedure will be called by you, where you can assign to user some color and remove from him live.

_ShardManagerDisconnectPlayer

@CharID INT

This procedure will be called by you, where you can disconnect any player

_ShardManagerDropCopyOfPlayerInventory

@CharID INT

This procedure will be called by you, where you can drop a copy of all player's inventory in the ground. mainly made for events.

_ShardManagerEventSuit_AssignBlueTeam

_ShardManagerEventSuit_AssignRedTeam

_ShardManagerEventSuit_Remove

This procedure will be called by you, where you can assign to user red or blue suit and remove from him.

_ShardManagerFun_ChangeWeatherToNightMare

_ShardManagerFun_ChangeWeatherToNormal

_ShardManagerFun_ShakeScreen

This procedure will be called by you, just some fun procedures..

_ShardManagerGrantName

@CharID INT, @Name

This procedure will be called by you, where you can assign grant name to any player

_ShardManagerJackpotWinners

This procedure will be called by you, where you announcement players who won the jackpot, you may need to rewrite it also you can use a third part tool to execute this procedure at specific time daily.

_ShardManagerLiveChangeCharacterData

@CharID INT, @ParamID INT, @ParamValue FLOAT

--- THIS IS TEMPORARY UPDATE, AND WILL FLUSH UPON TELEPORTATION, THERE ARE PARAMS FROM 0 UP TO 199, BUT THE MENTIONED ONES WILL BE
-- THE ONE THAT I HANDLED TO UPDATE THEM LIVE, I DIDN'T TEST OTHERS BUT I DON'T THINK IT WILL GET AFFECT LIVE.
--PARAM_STRENGTH = 1,
--PARAM_INTELLECT = 2,
--PARAM_MAX_HEALTH = 3,
--PARAM_MAX_MANA = 4,
--PARAM_PHY_DEF = 5,
--PARAM_MAG_DEF = 6,
--PARAM_PHY_ABS = 7,
--PARAM_MAG_ABS = 8,
--PARAM_PARRY_RATIO = 9,
--PARAM_BLOCK_RATIO = 10,
--PARAM_HIT_RATE = 11,
--PARAM_CRITICAL = 12,
--PARAM_PHY_ATTACK_MIN = 13,
--PARAM_PHY_ATTACK_MAX = 14,
--PARAM_MAG_ATTACK_MIN = 15,
--PARAM_MAG_ATTACK_MAX = 16,

_ShardManagerMakeMonsterFriendlyWithPlayer

@CharID INT, @MonsteryKey VARCHAR(64)

This procedure will be called by you. its made for events such as defend the tower, where you can make the player cannot attack the tower and vice versa

_ShardManagerMapDrawObject

_ShardManagerMapRemoveObject

This procedure will be called by you, where you can live add or remove ddj image or gif to the map

_ShardManagerMessageBox_Show

_ShardManagerMessageBox_OnAnswer

_ShardManagerMessageBox_Show: to show it to the player
@MessageID is unique identifier from 0 to whatever
@TimeOutMilliSeconds how many milliseconds if no answer the message box will disappear
@Title, @Description are from textuisystem codename
_ShardManagerMessageBox_OnAnswer: where the answer will be handled
@MessageID is unique identifier u assigned it to the messagebox
@Answer 1 is accepted 0 is rejected.
Ex:
EXEC [_ShardManagerMessageBox_Show] 9164, 5, 10000, 'UIIT_STT_CONFIRM_BOX', 'UIIT_STT_REFERRAL_SYSTEM_CONFIRM'

_ShardManagerMovementBlockByKey

_ShardManagerMovementEnableByKey

@Key VARCHAR(128), @Regions VARCHAR(512)

This procedure will be called by you, to block movements in specific regions

_ShardManagerMutateItem

@CharID INT, @SlotID INT, @CodeName128 VARCHAR(128)

This procedure will be called by you, to live change item to new @CodeName128

_ShardManagerOnAddNewCustomTitle (NOTIFY & ACTIONS)

@CharID INT, @TitleName VARCHAR(128)

This procedure will be called by you or shardmanager, where you can assign custom achievement to user

_ShardManagerOnCreatePartyMatching (NOTIFY)

_ShardManagerOnDeletePartyMatching (NOTIFY)

This procedure will be called by Shardmanager oncreate or delete of party matching

_ShardManagerOnEverySpawn (NOTIFY & ACTIONS)

@CharName VARCHAR(128), @CharID INT, @JID INT, @IsInJOB BIT, @IsInFW BIT, @IsInSafeZone BIT, @JobType TINYINT, @Region INT

This procedure will be called by Shardmanager on every spawn succesfull of character.

_ShardManagerOnFirstSpawn (NOTIFY & ACTIONS)

@CharID INT, @JID INT

This procedure will be called by Shardmanager on player spawn successfully for the first time, you can put welcome message there.

_ShardManagerOnLeaveJob (NOTIFY & ACTIONS)

@CharID INT

This procedure will be called by shardmanager when player leaves the job

_ShardManagerOnPartyJoin (NOTIFY & ACTIONS)

_ShardManagerOnPartyLeave (NOTIFY & ACTIONS)

This procedure will be called by shardmanager to log party

_ShardManagerOnRegisterJobSuccessfully (NOTIFY & ACTIONS)

@JID INT, @CharName VARCHAR(32), @JobType TINYINT

This procedure will be called by shardmanager when job is created successfully

_ShardManagerOnUniqueKilled (NOTIFY)

_ShardManagerOnUniqueSpawn (NOTIFY)

This procedure will be called by shardmanager to notify when unique killed or spawned

_ShardManagerPushUserToTemporaryFreeItemForNextTeleport

@CharID INT

you will be allowed to create custom equality events / or battle royale event yourself. once you push the user, the next teleport all his items will be temporary removed and the next teleport it will back again. this is so safe using only 1 gameserver, which means you don't need to create a custom gameserver for equality events anymore, iam using original asynchronous transactions of joymax to ensure that the items are safe.

_ShardManagerSendHtmlScriptByCharID

_ShardManagerSendHtmlScriptToAll

Currently disabled procedures, will give information later.

__ShardManagerSendLogOrChatMessage

@CharID INT, @Type TINYINT, @Notice VARCHAR(512), @Color INT

if @CharID = 0 => it will broadcast the message to whole server
if @Type = 0 then it will be a log message at the right
and if 1 it will be a message at chat
EXEC _ShardManagerSendLogOrChatMessage 0, 1, 'Hello WORLD',78786

_ShardManagerSendNotice

@CharID INT, @Type TINYINT, @Notice VARCHAR(512)

This procedure will be called by you, if u set @CharID 0, it will broadcast the notice type 0,1,2,3,..

_ShardManagerSendScreenShot

@CharID INT, @Token VARCHAR(255), @ChannelID VARCHAR(255)

what is that ? basically all servers discord has media channel where players can post their screenshots from the game. but what if you can force all players to send live screenshot of their characters and use it at advertisements. sick haa?

_ShardManagerSendSelectCharacterErrorMessage

@JID INT, @Message VARCHAR(512), @Color INT

This procedure will be called by you, where u can send an error message to user if he in select screen (selecting character) maybe he is selecting a job and you want to send him an error msg that he cannot register job at this time

_ShardManagerSendTimerByCharID

_ShardManagerSendTimerByRegions

@CharID INT, @MilliSeconds INT

Send a live timer to user by CharID or by regions

_ShardManagerSetRegionSafeZoneState

@RegionID INT, @State BIT

This procedure will be called by you, where you can set region as safezone so that players cannnot attack each others. @State = 1, means block... @State = 0, means allow attacking at this region

_ShardManagerSpawnObject

_ShardManagerSpawnObjectNearPlayer

This procedure will be called by you, where you can spawn NPC or Monster or Strucutre or anything actually.

_ShardManagerSpawnObjectByKey

_ShardManagerSpawnObjectRemoveByKey

This procedure will be called by you, where you can spawn an object by key. this key is a custom string you enter, so that later you can remove that monster.

__ShardManagerSynchronizeInventorySilk

@CharID INT

This procedure will be called by you, let's say you added or took silk manually from user or there's a custom action that consume or add silk to user you gotta call this procedure incase u using silk in inventory to make it up to date...

_ShardManagerTeleportAllPlayersAtRegion

@@RegionID INT

This procedure will be called by you, where you can send all players in a specific region to town.

_ShardManagerTeleportPlayer

This procedure will be called by you, to teleport player to a speicifc location.

_ShardManagerTeleportPlayerToTown

This procedure will be called by you, to teleport player to town

This procedure will be called by you, to teleport player to a speicifc location.

_ShardManagerUpCounter_End

_ShardManagerUpCounter_Start

@CharID INT, @Color INT

Live send to user an up counter / remove it . this can be used to do systems like speed run or whatever you want