Rehber - vGuard Security Interface Procedure And Command Documentation | SroCave - SRO Destek Forumu

Rehber vGuard Security Interface Procedure And Command Documentation

  • Konbuyu başlatan Konbuyu başlatan vexbilisim
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 21

vexbilisim

Tiger Girl
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:

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​
Karakter üzerinde çalışan komutlar karakter oyundayken etkili olur; oyunda değilse komut boşa gider.
  • _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.​
Oyuncu komutları
GameServer komutları (__ prosedürler)

ProsedürParametrelerNe yapar
__TeleportToPosition@CharID, @WorldID, @RegionId, @PosX, @PosY, @PosZKarakteri dünyadaki noktaya ışınlar. Y'yi zeminden kendisi bulur; nokta dağ / uçurumdaysa yakındaki yürünebilir zemine koyar, zemin yoksa ışınlamaz.
__TeleportToTownbyCharId@CharIDDönüş noktasına (şehir) ışınlar.
__TeleportToTownAllbyWorldId@WorldIDO dünyadaki herkesi dönüş noktasına ışınlar.
__TeleportToSamePos@CharIDBulunduğu yere tekrar ışınlar (karakter yeniden yüklenir).
__GetUpAtSamePos@CharIDÖlü karakteri olduğu yerde diriltir.
__GetUpAtPos@CharID, @WorldID, @RegionId, @PosX, @PosY, @PosZDiriltir ve verilen noktaya ışınlar.
__AddGoldToCharacter@CharID, @Gold, @AddOrRemove1: altın ekler. 0: altın düşer (karakterde yetecek kadar varsa). En fazla 2 milyar.
__AddSPToCharacter@CharID, @AmountSkill point ekler.
__AddSkillPointToCharacter@CharID, @AmountSkill point ekler (aynı komut).
__AddSilkToCharacter@CharID, @nSilk, @nSilkGift, @nSilkPointHesabın silk / gift / point bakiyesine ekler.
__AddLiveBuffToCharacter@CharID, @SkillIDBuff verir (skill'in kendi süresiyle).
__AddLiveBuffToCharacterbySeconds@CharID, @SkillID, @SecondsBuffı verilen saniye kadar verir.
__RemoveBuffFromCharacter@CharID, @SkillIDBuffı kaldırır.
__DealDamageToCharacter@CharID, @DamageSabit hasar vurur.
__DealDamageToCharacterByCurrentHealthPercentage@CharID, @DamagePercentageO anki canın yüzdesi kadar hasar.
__DealDamageToCharacterByMaxHealthPercentage@CharID, @DamagePercentageEn yüksek canın yüzdesi kadar hasar.
__BerserkCharacter@CharIDKarakteri berserk moduna sokar.
__ChangeFreePVPState@CharID, @PVPStatePvP pelerinini değiştirir (0 yok, 1 kırmızı, 2 gri, 3 mavi, 4 beyaz, 5 sarı).
__DropItemNearbyCharacter@CharID, @ItemCodeName, @Amount, @OptLevelKarakterin yanına yere eşya düşürür (+@OptLevel).
__ConsumeItem@CharID, @Slot, @ReduceAmountÇantadaki slottan adet düşer.
__MutateItem@CharID, @Slot, @CodeName128Slottaki eşyayı başka eşyaya çevirir.
__MutateAfterConsumeItem@CharID, @MutateSlot, @CodeName128, @ConsumeSlot, @ConsumeAmountBir slottan adet düşer, sonra diğer slottaki eşyayı çevirir.
Filter komutları (_ prosedürler / _BridgeCommands)
ProsedürParametrelerCommandIDNe yapar
_GM_Notice@Message, @NoticeType500Herkese duyuru. Tip: 5 uyarı, 6 görev, 7 duyuru, 8 sistem, 15 kırmızı uyarı, 17 sohbetli duyuru.
_GM_SendPM@CharID, @Message500Karaktere sistem PM'i.
_DisconnectCharacter@CharName16750Karakteri oyundan atar (all = herkesi).
_GM_Punish / _GM_Unpunish@CharID, @BlockType, @Minutes, @Reason, @GMName750Ceza verir / kaldırır (ceza verilen atılır).
_SetFreePVPState@CharName16, @PVPState78PvP pelerini (filter tarafı).
_BlockMovementbyCharnameCharName1680Karakterin hareketini kilitler.
_BlockSkillUsagebyCharname@CharName1679Karakterin skill kullanımını kilitler.
_BlockMovementbyRegionWorldId@WorldId, @State81O dünyada hareketi kilitler (1) / açar (0).
_AddItemToChest@CharID, @ItemCodename, @ItemQuantity, @ItemSource75Karakterin sandığına eşya koyar, oyundaysa anında görür.
_AddItemToChestAllCharacters@ItemCodename, @ItemQuantity, @ItemSource75Bütün karakterlerin sandığına.
_AddTitleToCharacter@CharID, @TitleID57Ünvan ekler.
_ChangeCharacterTitle@CharID, @HwanLevel52Aktif ünvanı değiştirir.
_ChangeCharacterTitleColor / _AddColorToTitleManager@CharID, @ColorCode (RRGGBB)69 / 751Ünvan rengi.
_AddCustomTagToCharacter / _ChangeCharacterCustomTag@CharID, @Tag752 / 86Özel tag.
_UpdateCharAchievement@CharID, @IconID (+@Side)8787 / 71 / 94 / 8788İsim yanındaki ikonlar.
_SetWeather / _ClearWeather@target (ALL / WORLD / REGION / CHAR), @value, @WeatherType, @Intensity12100 / 12101Başarım ilerlemesi.
_SetWeather / _ClearWeather@target (ALL / WORLD / REGION / CHAR), @value, @WeatherType, @Intensity12100 / 12101Hava 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, @Radius269 / 270O dünyadakilerin haritasında daire çizer / siler.
_MakeNewTimer_WorldId / _MakeNewTimer_RegionId@WorldId veya @RegionId, @TimeSeconds267 / 268Ekranda 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 / 266Sayaçtaki puanı artırır.
_CreatePartyMatching / _DeletePartyMatching@CharID, @PartyType, @MinLevel, @MaxLevel, @PartyName103 / 104Parti eşleştirme kaydı açar / siler.
_ChangeRefEventGateStatus@GateID, @Status58Etkinlik 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ürParametrelerNe yapar
SpawnNPC@CodeName128, @GameWorldID, @RegionId, @PosX, @PosY, @PosZ, @GenerateRadiusVerilen noktada, yarıçap içinde canavar doğurur. Y'yi zeminden kendisi bulur.
__SpawnMonsterAtCharLocation@CharID, @CodeName128Karakterin yanında canavar doğurur.
__KillNPC@MobRefObjIDBu türdeki bütün canavarları (bütün dünyalarda) siler.
__KillNPCbyWorldId@CodeName128, @WorldIDBu türdeki canavarları sadece o dünyada siler.
__KillNPCAllbyWorldId@WorldIDO dünyadaki bütün canavarları siler.
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ı
ProsedürÇağıranNe zamanParametreler
_OnChatCommand_EDITFilterOyuncu sohbete komut yazınca@CharID, @Charname, @Message
_OnGlobalMessage_EDITFilterGlobal mesaj atılınca@CharID, @CharName, @GlobalMessage, @ItemID64_1..3
_OnCharacterGetUp_EDITFilterKarakter dirilince@CharID, @CharName, @LatestRegion, @LatestWorld, @PVPState, @JobType
_OnCharKillLog_EDITFilterOyuncu oyuncuyu öldürünce@WorldID, @RegionID, öldüren ve ölen için CharID / ad / PvP / job / lonca
_OnPartyJoined_EDIT / _OnPartyLeft_EDITFilterPartiye girince / çıkınca@CharID, @CharName, @RegionID, @WorldID (+pelerin, job)
_OnPartyMatchingCreated_EDITFilterParti eşleştirme açılınca@CharID, @CharName, @CurrentRegionId, @CurrentWorldID, @PartyNo
_JobSuitEquip_EDIT / _JobSuitRemove_EDITFilterJob kıyafeti giyilince / çıkarılınca@CharID, @Charname, @SuitItemID
_OnAlchemyRequest_EDITFilterAlchemy denemesinden önce@CharID, @Charname, @ItemID, @OptLevel, @AdvOptLevel
_OnAlchemySuccess_EDITFilterAlchemy başarılı olunca@CharID, @CharName, @ItemID, @Plus, @AdvLevel, @Slot
_TeleportControl_EDITFilterTeleport kapısı kullanılınca@CharID, @GateID, @JobType
_OnCustomActionUsed_EDITFilterClient'taki özel eylem butonu kullanılınca@CharID, @CharName, @CurrentRegionId, @CurrentWorldID, @JobType, @ActionID
_OnExtraButtonClick_EDITFilterClient'taki ek butona basılınca@CharID, @Charname, @LiveRegionID, @WorldID, @Data
_OnNewItemMallPurchased_EDITFilterYeni item mall'dan satın alınca@JID, @CharID, @CharName16, @ItemID, @silk
_OnEventRegister_EDIT / _OnEventCancel_EDITFilterEtkinlik kaydı / kaydı iptali@CharID, @CharName16, @EventID, @LiveRegionID, @WorldID
_OnBattleArenaRegister_EDIT / _OnCaptureTheFlagRegister_EDITFilterBattle Arena / CTF kaydı@CharID, @CharName (+arena tipi)
_BattleArenaCustomReward_EDITFilterBattle Arena bitince@CharName16, @CharID, @Result, @ArenaType

Ticaret (job) olayları
ProsedürÇağıranNe zaman
_OnTradeGoodsBuyingRequest_EDIT / _OnTradeGoodsBuyingComplete_EDITGameServerTicaret malı satışı istenince / tamamlanınca
_OnTradeGoodsSellingRequest_EDIT / _OnTradeGoodsSellingComplete_EDITGameServerTicaret malı satışı istenince / tamamlanınca

Canavar ve sunucu olayları
ProsedürÇağıranNe zamanParametreler
_HandleMobKilledGameServerCanavar ölünce@RefObjID, @CodeName128, öldüğü dünya / bölge / konum, hasar, en çok vuran ve öldüren CharID / ad
_OnDamageMeterData_EDITFilterCanavar ölünce, hasar tablosuyla@MobID, @MobCodeName, konum, öldüren, ilk 8 saldıranın ad / hasar / kritik
_OnUniqueEnteredShardManagerUnique doğunca@RefObjID
_OnUniqueKilledShardManagerUnique@RefMobID, öldüren
_OnGameServerStartup_EDITGameServerGameServer açılınca@GameServerExeName
_OnFilter_StartedFilterFilter açılınca—
_Caravan_OnRewardGameServerKervan ödülü dağıtılınca@event

Etkinlik ödül ve öldürme tetikleyicileri
ProsedürNe zamanParametreler
__VgEventGivevGuard 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_EDITDefend Tower bitince, her oyuncu için@CharID, @CharName, @TeamId, @IsWinner, @TotalKills
__ChaosEventRewardChaos bitince, sıralamaya göre@Rank, @CharID, @CharName, @KillCount, @DeathCount
__LMSRewardLast Man Standing kazananına@CharID, @CharName
__LuckyGlobalReward / __LuckyPartyNumberRewardLucky etkinliklerinin kazananına@CharID, @CharName (+tur / parti no)
__OnCharKilled_ChaosEventChaos'ta biri ölünce@KillerCharID, @KillerName, @DeadName, @TargetKillCount
__OnCharKilled_DefendTowerDefend Tower'da biri ölünceöldüren / ölen ad + takım, aynı kişiyi kaçıncı öldürüşü
__OnCharKilled_LastManStandingLMS'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.
 
Etiketler Etiketler
filter guard procedure vguard

Geri
Üst Alt