- Katılım
- 17 Eki 2024
- Mesajlar
- 20
- Tepkime puanı
- 6
- Puanları
- 13
vGuard Prosedür ve Komut Dokümanı
2026 · @vexbilisim
Genel bakış
Bütün prosedürler vGuard_User veritabanındadır (panelde SQL Ayarları > User DB; başka ad verdiyseniz o); SQL'den, kendi prosedürlerinizden ya da tetikleyicilerin içinden EXEC ile çağrılır. Komut iki yoldan biriyle oyuna ulaşır:
Karakter üzerinde çalışan komutlar karakter oyundayken etkili olur; oyunda değilse komut boşa gider.
GameServer komutları (__ prosedürler)
Filter komutları (_ prosedürler / _BridgeCommands)
Canavar / NPC komutları
Hepsi GameServer komutudur; canavar kod adıyla (MOB_...) verilir, prosedür ID'yi _RefObjCommon'dan kendisi bulur.
Canavar ölünce GameServer _HandleMobKilled prosedürünü çağırır (Tetikleyiciler bölümü); ölümüne göre iş yapmak için oraya yazılır.
Tetikleyiciler (_EDIT prosedürleri)
Oyunda bir şey olduğunda filter, GameServer ya da ShardManager bu prosedürleri kendisi çağırır. İçleri sizin kodunuz içindir: yukarıdaki komutları burada çağırarak ödül, duyuru, ışınlama gibi işler yapılır. Parametre listesini değiştirmeyin; sadece gövdeyi düzenleyin.
Oyuncu olayları
Ticaret (job) olayları
Canavar ve sunucu olayları
Etkinlik ödül ve öldürme tetikleyicileri
Örnekler
Hepsi vGuard_User'da çalışır.
-- 1) Sohbete ".jangan" yazanı Jangan'a ışınla (_OnChatCommand_EDIT gövdesine)
IF @Message = '.jangan'
EXEC __TeleportToTownbyCharId @CharID;
-- 2) Unique öldürene 10 dakika hız buffı + cheste eşya (_HandleMobKilled gövdesine)
IF @CodeName128 = 'MOB_CH_TIGERWOMAN'
BEGIN
EXEC __AddLiveBuffToCharacterbySeconds @RealKillerCharID, 7980, 600;
EXEC _AddItemToChest @RealKillerCharID, 'ITEM_ETC_ARCHEMY_REINFORCE_PROB_UP_A_01', 5, 'Tiger Girl';
END
-- 3) Herkese kırmızı uyarı
EXEC _GM_Notice 'Sunucu 10 dakika sonra bakıma girecek!', 15;
-- 4) Dünya 151'dekilerin haritasına 300 m'lik daire, 60 sn geri sayım
EXEC _SendCircle 151, 25989, 960, 0, 960, 3000;
EXEC _MakeNewTimer_WorldId 151, 60;
-- 5) 22:00'de bir SQL çalıştır (zamanlanmış komut, CommandID 100)
INSERT INTO _BridgeCommands_Planned (CommandID, Executor, Data1, Data2, Data3, DateToExecute, Status)
VALUES (100, 'Planli', 'EXEC _GM_Notice ''İyi geceler!'', 7', '', '', '2026-10-22 22:00', 1);
2026 · @vexbilisim
Genel bakış
Bütün prosedürler vGuard_User veritabanındadır (panelde SQL Ayarları > User DB; başka ad verdiyseniz o); SQL'den, kendi prosedürlerinizden ya da tetikleyicilerin içinden EXEC ile çağrılır. Komut iki yoldan biriyle oyuna ulaşır:
Yol | Prosedür adı | Kuyruk tablosu | İşleyen | Gecikme |
GameServer komutu | __ ile başlar (örn. __TeleportToPosition) | _AsyncGameServerCommands (Action_ID, Data1..Data11) | ShardManager okur, bütün GameServer'lara yollar | ShardManager okuma aralığı kadar |
Filter komutu | _ ile başlar (örn. _GM_Notice) | _BridgeCommands (CommandID, Executor, Data1..Data3) | vGuard filter okur | 1 saniyeden az |
- _BridgeCommands_Planned tablosuna DateToExecute ile yazılan satır, o saat gelince aynı şekilde işlenir (zamanlanmış komut). CommandID 100 bu tabloda Data1'deki SQL'i çalıştırır.
- Kendi komutunuzu doğrudan yazmak için: EXEC _AddBridgeCommand @CommandID, @Executor, @Data1, @Data2, @Data3.
GameServer komutları (__ prosedürler)
| Prosedür | Parametreler | Ne yapar |
| __TeleportToPosition | @CharID, @WorldID, @RegionId, @PosX, @PosY, @PosZ | Karakteri dünyadaki noktaya ışınlar. Y'yi zeminden kendisi bulur; nokta dağ / uçurumdaysa yakındaki yürünebilir zemine koyar, zemin yoksa ışınlamaz. |
| __TeleportToTownbyCharId | @CharID | Dönüş noktasına (şehir) ışınlar. |
| __TeleportToTownAllbyWorldId | @WorldID | O dünyadaki herkesi dönüş noktasına ışınlar. |
| __TeleportToSamePos | @CharID | Bulunduğu yere tekrar ışınlar (karakter yeniden yüklenir). |
| __GetUpAtSamePos | @CharID | Ölü karakteri olduğu yerde diriltir. |
| __GetUpAtPos | @CharID, @WorldID, @RegionId, @PosX, @PosY, @PosZ | Diriltir ve verilen noktaya ışınlar. |
| __AddGoldToCharacter | @CharID, @Gold, @AddOrRemove | 1: altın ekler. 0: altın düşer (karakterde yetecek kadar varsa). En fazla 2 milyar. |
| __AddSPToCharacter | @CharID, @Amount | Skill point ekler. |
| __AddSkillPointToCharacter | @CharID, @Amount | Skill point ekler (aynı komut). |
| __AddSilkToCharacter | @CharID, @nSilk, @nSilkGift, @nSilkPoint | Hesabın silk / gift / point bakiyesine ekler. |
| __AddLiveBuffToCharacter | @CharID, @SkillID | Buff verir (skill'in kendi süresiyle). |
| __AddLiveBuffToCharacterbySeconds | @CharID, @SkillID, @Seconds | Buffı verilen saniye kadar verir. |
| __RemoveBuffFromCharacter | @CharID, @SkillID | Buffı kaldırır. |
| __DealDamageToCharacter | @CharID, @Damage | Sabit hasar vurur. |
| __DealDamageToCharacterByCurrentHealthPercentage | @CharID, @DamagePercentage | O anki canın yüzdesi kadar hasar. |
| __DealDamageToCharacterByMaxHealthPercentage | @CharID, @DamagePercentage | En yüksek canın yüzdesi kadar hasar. |
| __BerserkCharacter | @CharID | Karakteri berserk moduna sokar. |
| __ChangeFreePVPState | @CharID, @PVPState | PvP pelerinini değiştirir (0 yok, 1 kırmızı, 2 gri, 3 mavi, 4 beyaz, 5 sarı). |
| __DropItemNearbyCharacter | @CharID, @ItemCodeName, @Amount, @OptLevel | Karakterin yanına yere eşya düşürür (+@OptLevel). |
| __ConsumeItem | @CharID, @Slot, @ReduceAmount | Çantadaki slottan adet düşer. |
| __MutateItem | @CharID, @Slot, @CodeName128 | Slottaki eşyayı başka eşyaya çevirir. |
| __MutateAfterConsumeItem | @CharID, @MutateSlot, @CodeName128, @ConsumeSlot, @ConsumeAmount | Bir slottan adet düşer, sonra diğer slottaki eşyayı çevirir. |
| Prosedür | Parametreler | CommandID | Ne yapar |
| _GM_Notice | @Message, @NoticeType | 500 | Herkese duyuru. Tip: 5 uyarı, 6 görev, 7 duyuru, 8 sistem, 15 kırmızı uyarı, 17 sohbetli duyuru. |
| _GM_SendPM | @CharID, @Message | 500 | Karaktere sistem PM'i. |
| _DisconnectCharacter | @CharName16 | 750 | Karakteri oyundan atar (all = herkesi). |
| _GM_Punish / _GM_Unpunish | @CharID, @BlockType, @Minutes, @Reason, @GMName | 750 | Ceza verir / kaldırır (ceza verilen atılır). |
| _SetFreePVPState | @CharName16, @PVPState | 78 | PvP pelerini (filter tarafı). |
| _BlockMovementbyCharname | CharName16 | 80 | Karakterin hareketini kilitler. |
| _BlockSkillUsagebyCharname | @CharName16 | 79 | Karakterin skill kullanımını kilitler. |
| _BlockMovementbyRegionWorldId | @WorldId, @State | 81 | O dünyada hareketi kilitler (1) / açar (0). |
| _AddItemToChest | @CharID, @ItemCodename, @ItemQuantity, @ItemSource | 75 | Karakterin sandığına eşya koyar, oyundaysa anında görür. |
| _AddItemToChestAllCharacters | @ItemCodename, @ItemQuantity, @ItemSource | 75 | Bütün karakterlerin sandığına. |
| _AddTitleToCharacter | @CharID, @TitleID | 57 | Ünvan ekler. |
| _ChangeCharacterTitle | @CharID, @HwanLevel | 52 | Aktif ünvanı değiştirir. |
| _ChangeCharacterTitleColor / _AddColorToTitleManager | @CharID, @ColorCode (RRGGBB) | 69 / 751 | Ünvan rengi. |
| _AddCustomTagToCharacter / _ChangeCharacterCustomTag | @CharID, @Tag | 752 / 86 | Özel tag. |
| _UpdateCharAchievement | @CharID, @IconID (+@Side) | 8787 / 71 / 94 / 8788 | İsim yanındaki ikonlar. |
| _SetWeather / _ClearWeather | @target (ALL / WORLD / REGION / CHAR), @value, @WeatherType, @Intensity | 12100 / 12101 | Başarım ilerlemesi. |
| _SetWeather / _ClearWeather | @target (ALL / WORLD / REGION / CHAR), @value, @WeatherType, @Intensity | 12100 / 12101 | Hava durumu: 1 açık, 2 yağmur, 3 kar, 4 Kerberos karanlığı, 5 kum fırtınası, 6 cehennem alevleri, 7 alacakaranlık, 8 zombi, 9 buz fırtınası. |
| _SendCircle / _RemoveCircle | @WorldId, @RegionId, @PosX, @PosY, @PosZ, @Radius | 269 / 270 | O dünyadakilerin haritasında daire çizer / siler. |
| _MakeNewTimer_WorldId / _MakeNewTimer_RegionId | @WorldId veya @RegionId, @TimeSeconds | 267 / 268 | Ekranda geri sayım. |
| _MakeNewKillCounter, _MakeNewMultiKillCounter, _MakeNewTeamKillCounter, _MakeNewMultiTeamKillCounter, _MakeNewMultiJobKillCounter | @WorldID (+@Title / @RegionID) | 22 / 25 / 26 / 266 | Öldürme sayaç penceresi açar. |
| _IncreaseKillCount, _IncreaseKillCountByAmount, _IncreaseKillCountMulti, _IncreaseTeamKillCount, _IncreaseTeamKillCountMulti, _IncreaseJobKillCountMulti | @Charname (+@Amount / @Team / @Point / @WorldID) | 22 / 25 / 26 / 266 | Sayaçtaki puanı artırır. |
| _CreatePartyMatching / _DeletePartyMatching | @CharID, @PartyType, @MinLevel, @MaxLevel, @PartyName | 103 / 104 | Parti eşleştirme kaydı açar / siler. |
| _ChangeRefEventGateStatus | @GateID, @Status | 58 | Etkinlik kapısını açar / kapatır. |
Canavar / NPC komutları
Hepsi GameServer komutudur; canavar kod adıyla (MOB_...) verilir, prosedür ID'yi _RefObjCommon'dan kendisi bulur.
| Prosedür | Parametreler | Ne yapar |
| SpawnNPC | @CodeName128, @GameWorldID, @RegionId, @PosX, @PosY, @PosZ, @GenerateRadius | Verilen noktada, yarıçap içinde canavar doğurur. Y'yi zeminden kendisi bulur. |
| __SpawnMonsterAtCharLocation | @CharID, @CodeName128 | Karakterin yanında canavar doğurur. |
| __KillNPC | @MobRefObjID | Bu türdeki bütün canavarları (bütün dünyalarda) siler. |
| __KillNPCbyWorldId | @CodeName128, @WorldID | Bu türdeki canavarları sadece o dünyada siler. |
| __KillNPCAllbyWorldId | @WorldID | O dünyadaki bütün canavarları siler. |
Tetikleyiciler (_EDIT prosedürleri)
Oyunda bir şey olduğunda filter, GameServer ya da ShardManager bu prosedürleri kendisi çağırır. İçleri sizin kodunuz içindir: yukarıdaki komutları burada çağırarak ödül, duyuru, ışınlama gibi işler yapılır. Parametre listesini değiştirmeyin; sadece gövdeyi düzenleyin.
Oyuncu olayları
| Prosedür | Çağıran | Ne zaman | Parametreler |
| _OnChatCommand_EDIT | Filter | Oyuncu sohbete komut yazınca | @CharID, @Charname, @Message |
| _OnGlobalMessage_EDIT | Filter | Global mesaj atılınca | @CharID, @CharName, @GlobalMessage, @ItemID64_1..3 |
| _OnCharacterGetUp_EDIT | Filter | Karakter dirilince | @CharID, @CharName, @LatestRegion, @LatestWorld, @PVPState, @JobType |
| _OnCharKillLog_EDIT | Filter | Oyuncu oyuncuyu öldürünce | @WorldID, @RegionID, öldüren ve ölen için CharID / ad / PvP / job / lonca |
| _OnPartyJoined_EDIT / _OnPartyLeft_EDIT | Filter | Partiye girince / çıkınca | @CharID, @CharName, @RegionID, @WorldID (+pelerin, job) |
| _OnPartyMatchingCreated_EDIT | Filter | Parti eşleştirme açılınca | @CharID, @CharName, @CurrentRegionId, @CurrentWorldID, @PartyNo |
| _JobSuitEquip_EDIT / _JobSuitRemove_EDIT | Filter | Job kıyafeti giyilince / çıkarılınca | @CharID, @Charname, @SuitItemID |
| _OnAlchemyRequest_EDIT | Filter | Alchemy denemesinden önce | @CharID, @Charname, @ItemID, @OptLevel, @AdvOptLevel |
| _OnAlchemySuccess_EDIT | Filter | Alchemy başarılı olunca | @CharID, @CharName, @ItemID, @Plus, @AdvLevel, @Slot |
| _TeleportControl_EDIT | Filter | Teleport kapısı kullanılınca | @CharID, @GateID, @JobType |
| _OnCustomActionUsed_EDIT | Filter | Client'taki özel eylem butonu kullanılınca | @CharID, @CharName, @CurrentRegionId, @CurrentWorldID, @JobType, @ActionID |
| _OnExtraButtonClick_EDIT | Filter | Client'taki ek butona basılınca | @CharID, @Charname, @LiveRegionID, @WorldID, @Data |
| _OnNewItemMallPurchased_EDIT | Filter | Yeni item mall'dan satın alınca | @JID, @CharID, @CharName16, @ItemID, @silk |
| _OnEventRegister_EDIT / _OnEventCancel_EDIT | Filter | Etkinlik kaydı / kaydı iptali | @CharID, @CharName16, @EventID, @LiveRegionID, @WorldID |
| _OnBattleArenaRegister_EDIT / _OnCaptureTheFlagRegister_EDIT | Filter | Battle Arena / CTF kaydı | @CharID, @CharName (+arena tipi) |
| _BattleArenaCustomReward_EDIT | Filter | Battle Arena bitince | @CharName16, @CharID, @Result, @ArenaType |
Ticaret (job) olayları
| Prosedür | Çağıran | Ne zaman |
| _OnTradeGoodsBuyingRequest_EDIT / _OnTradeGoodsBuyingComplete_EDIT | GameServer | Ticaret malı satışı istenince / tamamlanınca |
| _OnTradeGoodsSellingRequest_EDIT / _OnTradeGoodsSellingComplete_EDIT | GameServer | Ticaret malı satışı istenince / tamamlanınca |
Canavar ve sunucu olayları
| Prosedür | Çağıran | Ne zaman | Parametreler |
| _HandleMobKilled | GameServer | Canavar ölünce | @RefObjID, @CodeName128, öldüğü dünya / bölge / konum, hasar, en çok vuran ve öldüren CharID / ad |
| _OnDamageMeterData_EDIT | Filter | Canavar ölünce, hasar tablosuyla | @MobID, @MobCodeName, konum, öldüren, ilk 8 saldıranın ad / hasar / kritik |
| _OnUniqueEntered | ShardManager | Unique doğunca | @RefObjID |
| _OnUniqueKilled | ShardManager | Unique | @RefMobID, öldüren |
| _OnGameServerStartup_EDIT | GameServer | GameServer açılınca | @GameServerExeName |
| _OnFilter_Started | Filter | Filter açılınca | — |
| _Caravan_OnReward | GameServer | Kervan ödülü dağıtılınca | @event |
Etkinlik ödül ve öldürme tetikleyicileri
| Prosedür | Ne zaman | Parametreler |
| __VgEventGive | vGuard etkinliklerinde (Defend Tower, Chaos, Ölülerin Gecesi, Çöl Kıyameti, Kan Ayı, Battle Royale) panelde yazılan ödül verilirken | @EventID, @CharID, @CharName, @Role, @Rank, @Kills, @Item, @Qty, @silk, @Gold |
| __DefendTowerReward_EDIT | Defend Tower bitince, her oyuncu için | @CharID, @CharName, @TeamId, @IsWinner, @TotalKills |
| __ChaosEventReward | Chaos bitince, sıralamaya göre | @Rank, @CharID, @CharName, @KillCount, @DeathCount |
| __LMSReward | Last Man Standing kazananına | @CharID, @CharName |
| __LuckyGlobalReward / __LuckyPartyNumberReward | Lucky etkinliklerinin kazananına | @CharID, @CharName (+tur / parti no) |
| __OnCharKilled_ChaosEvent | Chaos'ta biri ölünce | @KillerCharID, @KillerName, @DeadName, @TargetKillCount |
| __OnCharKilled_DefendTower | Defend Tower'da biri ölünce | öldüren / ölen ad + takım, aynı kişiyi kaçıncı öldürüşü |
| __OnCharKilled_LastManStanding | LMS'te biri ölünce | @KillerCharID, @KillerCharName, @DeathCharName |
Örnekler
Hepsi vGuard_User'da çalışır.
-- 1) Sohbete ".jangan" yazanı Jangan'a ışınla (_OnChatCommand_EDIT gövdesine)
IF @Message = '.jangan'
EXEC __TeleportToTownbyCharId @CharID;
-- 2) Unique öldürene 10 dakika hız buffı + cheste eşya (_HandleMobKilled gövdesine)
IF @CodeName128 = 'MOB_CH_TIGERWOMAN'
BEGIN
EXEC __AddLiveBuffToCharacterbySeconds @RealKillerCharID, 7980, 600;
EXEC _AddItemToChest @RealKillerCharID, 'ITEM_ETC_ARCHEMY_REINFORCE_PROB_UP_A_01', 5, 'Tiger Girl';
END
-- 3) Herkese kırmızı uyarı
EXEC _GM_Notice 'Sunucu 10 dakika sonra bakıma girecek!', 15;
-- 4) Dünya 151'dekilerin haritasına 300 m'lik daire, 60 sn geri sayım
EXEC _SendCircle 151, 25989, 960, 0, 960, 3000;
EXEC _MakeNewTimer_WorldId 151, 60;
-- 5) 22:00'de bir SQL çalıştır (zamanlanmış komut, CommandID 100)
INSERT INTO _BridgeCommands_Planned (CommandID, Executor, Data1, Data2, Data3, DateToExecute, Status)
VALUES (100, 'Planli', 'EXEC _GM_Notice ''İyi geceler!'', 7', '', '', '2026-10-22 22:00', 1);
- Karakter ID'si: SELECT CharID FROM SRO_VT_SHARD.dbo._Char WHERE CharName16 = 'vexbilcom'.
- Skill / eşya / canavar kodları örnektir; kendi sunucunuzdaki kodları kullanın.



