[HIDE]
Merhaba, buyrunuz old 3 job (Guardlar hali hazırda bu hizmeti veriyor mu bilmiyorum. Kendinize ait guardınız yoksa Kguard-Maxiguard gibi guardlar eşliğinde de kullanabilirsiniz. )
NOT: Tamamen kendim yazdım, denedim ve çalışır durumda yorum satırlarını kaldırmadan paylaşıyorum belki yorum satırlarından yola çıkıp ''Aaa bak bunu unutmuş eklenebilir gibisinden bir düşünce ortaya çıkar''
Görselde sağ tarafta ki gibi butonlu şekilde veya pm komutu ile (!thief-!trader-!hunter) gibi komut gönderebilirsiniz.
nemli :
_AddNewChar içerisine bu satırı eklemezseniz çalışmaz.
SQL:
Insert Into SRO_VT_SHARD.._CharTrijobSafeTrade ( CharID, AbleCount, Status, LastSafeTrade ) Values ( @NewCharID,0,0, GETDATE() )
Gelelim Prosedüre prosedür aşağıda
SQL:
USE [SRO_VT_CREATE]
GO
/****** Object: StoredProcedure [dbo].[_3Job] Script Date: 23.03.2024 00:17:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_3Job]
@Message varchar (6),
@CharID int
as
DECLARE @ItemName varchar (30)
,@ItemID bigint
,@ItemIDInventory bigint
,@Slot tinyint
,@JobType tinyint
,@CharName varchar (12)
,@RefObjID int
,@Sex varchar (3)
,@Race varchar (3)
,@Level tinyint
,@Exp int
,@JobType2 tinyint
,@Job_Level tinyint
,@Job_Exp int
Select @CharName = CharName16 From SRO_VT_SHARD.._Char Where CharID = @CharID
Select @RefObjID = RefObjID From SRO_VT_SHARD.._Char Where CharID = @CharID
IF @Message like 'Exit'
BEGIN
--IF Exists ( Select LatestRegion From SRO_VT_SHARD.._Char Where CharID = @CharID AND LatestRegion = 26521 )
--Begin
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot exit job mode in this area.',@CharName);
-- Return -1
--END
--IF Exists ( Select ItemID From SRO_VT_SHARD.._Inventory Where CharID = @CharID AND Slot = 8 AND ItemID =0)
--Begin
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'This button is used to exit the job mode.',@CharName);
-- Return -1
--END
IF Exists ( Select wRegionID From SRO_VT_SHARD.._RefRegion Where IsBattleField = 1 And wRegionID = ( Select LatestRegion From SRO_VT_SHARD.._Char Where CharID = @CharID))
BEGIN
INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'Job mode can be exited only inside the town. You can switch to Job mode anywhere.',@CharName);
Return -1
END
IF Exists ( Select OwnerCharID From SRO_VT_SHARD.._CharCOS Where OwnerCharID = @CharID )
BEGIN
INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot leave the job without closing the pet.',@CharName);
Return -1
END
ELSE
BEGIN
select @JobType2=JobType, @Level=[Level],@Exp=[Exp] from SRO_VT_SHARD.._CharTrijob where CharID =@CharID
if (@JobType2=1)
begin
update CLEAN_GUARD.._CharStatics set Trader_Level=@Level,Trader_Exp=@Exp where CharID=@CharID
end
if (@JobType2=2)
begin
update CLEAN_GUARD.._CharStatics set Thief_Level=@Level,Thief_Exp=@Exp where CharID=@CharID
end
if (@JobType2=3)
begin
update CLEAN_GUARD.._CharStatics set Hunter_Level=@Level,Hunter_Exp=@Exp where CharID=@CharID
end
Update SRO_VT_SHARD.._Inventory Set ItemID = 0 Where CharID = @CharID and Slot = 8
INSERT INTO CLEAN_GUARD.._InstantCharReloadDelivery(CharID) Values ((select CharID from SRO_VT_SHARD.._Char where CharName16 = @CharName))
Return -1
END
END
IF @Message = 'Thief' OR @Message = 'Trader' OR @Message = 'Hunter'
begin
-- IF Exists ( Select LatestRegion From SRO_VT_SHARD.._Char Where CharID = @CharID AND LatestRegion = 26521 )
--Begin
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot switch to job mode in this area.',@CharName);
-- Return -1
--END
--+++ ERKEK MI ARVAT MI IRKI NE ONU DA EKLE
--++ IF = @Region = 1 sorgusu ekle başına
--++ CharInventory Full mu onun sorgusu eklenecek.
--++ Itemı çarttığında 2 adet oluyor. Buna çözüm bul mk = Çözüm bulundu process başlangıcında job itemleri sil.
-- Online job sorgula limit için. = Kullanacağın panele bağlı olarak en son yapacaksın bunu. = Hak yol maxiguard oradan sorgulatacam.
-- IF Exists ( Select WorldID From SRO_VT_SHARD.._Char Where CharID = @CharID and WorldID != 1 )
--BEGIN
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot switch to job mode during the event.',@CharName);
-- RETURN -1
--END
-- IF Exists ( Select ItemID From SRO_VT_SHARD.._Inventory Where CharID = @CharID AND ItemID != 0 and slot = 8) --- Jobta ise
--BEGIN[/B][/B][/B]
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You are in active job mode, you cannot switch to a different job without exiting.',@CharName);
-- RETURN -1
--END
-- IF Exists ( Select ItemID From SRO_VT_SHARD.._Inventory Where CharID = @CharID AND ItemID = 0 and slot between 13 and 108) --- Çanta dolu ise
--BEGIN
-- print 'Devam'
--END
--ELSE
--BEGIN
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'In order to switch to job mode, there must be at least 1 free slot in the inventory.',@CharName);
-- Return -1
--END
IF ( @RefObjID between 1907 and 1919 ) Set @Sex = 'M'
IF ( @RefObjID between 1920 and 1932 ) Set @Sex = 'W'
IF ( @RefObjID between 14875 and 14887 ) Set @Sex = 'M'
IF ( @RefObjID between 14888 and 14900 ) Set @Sex = 'W'
IF ( @RefObjID between 1907 and 1932 ) Set @Race = 'CH'
IF ( @RefObjID between 14875 and 14900 ) Set @Race = 'EU'
Select @ItemIDInventory = ItemID, @Slot = Slot From SRO_VT_SHARD.._Inventory Where CharID = @CharID and ItemID =
( Select ID64 From SRO_VT_SHARD.._Items Where RefItemID = @ItemID and ID64 = ItemID)
IF ( @Message = 'Trader') SET @ItemName = 'ITEM_'+CONVERT (varchar (3), @Race)+'_'+CONVERT (varchar (3), @Sex)+'_TRADE_TRADER_03'
IF ( @Message = 'Thief') SET @ItemName = 'ITEM_'+CONVERT (varchar (3), @Race)+'_'+CONVERT (varchar (3), @Sex)+'_TRADE_THIEF_03'
IF ( @Message = 'Hunter') SET @ItemName = 'ITEM_'+CONVERT (varchar (3), @Race)+'_'+CONVERT (varchar (3), @Sex)+'_TRADE_HUNTER_03'
IF ( @Message = 'Trader') SET @JobType = '1'
IF ( @Message = 'Thief') SET @JobType = '2'
IF ( @Message = 'Hunter') SET @JobType = '3'
Select @ItemID = ID From SRO_VT_SHARD.._RefObjCommon Where CodeName128 = @ItemName
exec SRO_VT_SHARD.._ADD_ITEM_EXTERN @CharName, @ItemName, 1, 0
Select @ItemIDInventory = ItemID, @Slot = Slot From SRO_VT_SHARD.._Inventory Where CharID = @CharID and ItemID =
( Select ID64 From SRO_VT_SHARD.._Items Where RefItemID = @ItemID and ID64 = ItemID)
--deneysel char meslek seçmeden önce bir önceki mesleğin level ve exp cek daha sonrada seçtiği mesleğin son kaydını chartrijob bas
if(@JobType=1)
begin
select @job_level=Trader_Level,@Job_Exp= Trader_Exp from CLEAN_GUARD.._CharStatics where CharID =@CharID
end
if(@JobType=2)
begin
select @job_level=Thief_Level,@Job_Exp= Thief_Exp from CLEAN_GUARD.._CharStatics where CharID =@CharID
end
if(@JobType=3)
begin
select @job_level=Hunter_Level,@Job_Exp= Hunter_Exp from CLEAN_GUARD.._CharStatics where CharID =@CharID
end
Update SRO_VT_SHARD.._Inventory Set ItemID = @ItemIDInventory Where CharID = @CharID and Slot = 8
Update SRO_VT_SHARD.._Inventory Set ItemID = 0 Where CharID = @CharID and Slot = @Slot And Slot != 8
Update SRO_VT_SHARD.._Char Set NickName16 = CharName16 Where CharID = @CharID
Update SRO_VT_SHARD.._CharTrijob Set JobType = @JobType ,[Level]=@Job_Level,[Exp]=@Job_Exp where CharID = @CharID
-- IF Exists ( Select AbleCount From SRO_VT_SHARD.._CharTrijobSafeTrade Where CharID = @CharID and AbleCount = 0 )
-- BEGIN
-- Print @CharID
-- END
-- ELSE
-- BEGIN
-- Insert Into SRO_VT_SHARD.._CharTrijobSafeTrade ( CharID, AbleCount, Status, LastSafeTrade ) Values ( @CharID,0,0, GETDATE() )
-- END
--INSERT INTO _BridgeCommands(CommandID, Executor, Data1, Data2, Date) VALUES(63, 'SMC', @CharName, @CharName, GETDATE())
INSERT INTO CLEAN_GUARD.._InstantCharReloadDelivery(CharID) Values ((select CharID from SRO_VT_SHARD.._Char where CharName16 = @CharName))
END
[/HIDE]
Merhaba, buyrunuz old 3 job (Guardlar hali hazırda bu hizmeti veriyor mu bilmiyorum. Kendinize ait guardınız yoksa Kguard-Maxiguard gibi guardlar eşliğinde de kullanabilirsiniz. )
NOT: Tamamen kendim yazdım, denedim ve çalışır durumda yorum satırlarını kaldırmadan paylaşıyorum belki yorum satırlarından yola çıkıp ''Aaa bak bunu unutmuş eklenebilir gibisinden bir düşünce ortaya çıkar''
Görselde sağ tarafta ki gibi butonlu şekilde veya pm komutu ile (!thief-!trader-!hunter) gibi komut gönderebilirsiniz.
nemli :
_AddNewChar içerisine bu satırı eklemezseniz çalışmaz.
SQL:
Insert Into SRO_VT_SHARD.._CharTrijobSafeTrade ( CharID, AbleCount, Status, LastSafeTrade ) Values ( @NewCharID,0,0, GETDATE() )
Gelelim Prosedüre prosedür aşağıda
SQL:
USE [SRO_VT_CREATE]
GO
/****** Object: StoredProcedure [dbo].[_3Job] Script Date: 23.03.2024 00:17:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_3Job]
@Message varchar (6),
@CharID int
as
DECLARE @ItemName varchar (30)
,@ItemID bigint
,@ItemIDInventory bigint
,@Slot tinyint
,@JobType tinyint
,@CharName varchar (12)
,@RefObjID int
,@Sex varchar (3)
,@Race varchar (3)
,@Level tinyint
,@Exp int
,@JobType2 tinyint
,@Job_Level tinyint
,@Job_Exp int
Select @CharName = CharName16 From SRO_VT_SHARD.._Char Where CharID = @CharID
Select @RefObjID = RefObjID From SRO_VT_SHARD.._Char Where CharID = @CharID
IF @Message like 'Exit'
BEGIN
--IF Exists ( Select LatestRegion From SRO_VT_SHARD.._Char Where CharID = @CharID AND LatestRegion = 26521 )
--Begin
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot exit job mode in this area.',@CharName);
-- Return -1
--END
--IF Exists ( Select ItemID From SRO_VT_SHARD.._Inventory Where CharID = @CharID AND Slot = 8 AND ItemID =0)
--Begin
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'This button is used to exit the job mode.',@CharName);
-- Return -1
--END
IF Exists ( Select wRegionID From SRO_VT_SHARD.._RefRegion Where IsBattleField = 1 And wRegionID = ( Select LatestRegion From SRO_VT_SHARD.._Char Where CharID = @CharID))
BEGIN
INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'Job mode can be exited only inside the town. You can switch to Job mode anywhere.',@CharName);
Return -1
END
IF Exists ( Select OwnerCharID From SRO_VT_SHARD.._CharCOS Where OwnerCharID = @CharID )
BEGIN
INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot leave the job without closing the pet.',@CharName);
Return -1
END
ELSE
BEGIN
select @JobType2=JobType, @Level=[Level],@Exp=[Exp] from SRO_VT_SHARD.._CharTrijob where CharID =@CharID
if (@JobType2=1)
begin
update CLEAN_GUARD.._CharStatics set Trader_Level=@Level,Trader_Exp=@Exp where CharID=@CharID
end
if (@JobType2=2)
begin
update CLEAN_GUARD.._CharStatics set Thief_Level=@Level,Thief_Exp=@Exp where CharID=@CharID
end
if (@JobType2=3)
begin
update CLEAN_GUARD.._CharStatics set Hunter_Level=@Level,Hunter_Exp=@Exp where CharID=@CharID
end
Update SRO_VT_SHARD.._Inventory Set ItemID = 0 Where CharID = @CharID and Slot = 8
INSERT INTO CLEAN_GUARD.._InstantCharReloadDelivery(CharID) Values ((select CharID from SRO_VT_SHARD.._Char where CharName16 = @CharName))
Return -1
END
END
IF @Message = 'Thief' OR @Message = 'Trader' OR @Message = 'Hunter'
begin
-- IF Exists ( Select LatestRegion From SRO_VT_SHARD.._Char Where CharID = @CharID AND LatestRegion = 26521 )
--Begin
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot switch to job mode in this area.',@CharName);
-- Return -1
--END
--+++ ERKEK MI ARVAT MI IRKI NE ONU DA EKLE
--++ IF = @Region = 1 sorgusu ekle başına
--++ CharInventory Full mu onun sorgusu eklenecek.
--++ Itemı çarttığında 2 adet oluyor. Buna çözüm bul mk = Çözüm bulundu process başlangıcında job itemleri sil.
-- Online job sorgula limit için. = Kullanacağın panele bağlı olarak en son yapacaksın bunu. = Hak yol maxiguard oradan sorgulatacam.
-- IF Exists ( Select WorldID From SRO_VT_SHARD.._Char Where CharID = @CharID and WorldID != 1 )
--BEGIN
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You cannot switch to job mode during the event.',@CharName);
-- RETURN -1
--END
-- IF Exists ( Select ItemID From SRO_VT_SHARD.._Inventory Where CharID = @CharID AND ItemID != 0 and slot = 8) --- Jobta ise
--BEGIN[/B][/B][/B]
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'You are in active job mode, you cannot switch to a different job without exiting.',@CharName);
-- RETURN -1
--END
-- IF Exists ( Select ItemID From SRO_VT_SHARD.._Inventory Where CharID = @CharID AND ItemID = 0 and slot between 13 and 108) --- Çanta dolu ise
--BEGIN
-- print 'Devam'
--END
--ELSE
--BEGIN
-- INSERT INTO CLEAN_GUARD.._FilterCommands (CommandID, Executor, Data1, Data2, Data3,Data4) VALUES(1, 'Private','sendchar', 12, 'In order to switch to job mode, there must be at least 1 free slot in the inventory.',@CharName);
-- Return -1
--END
IF ( @RefObjID between 1907 and 1919 ) Set @Sex = 'M'
IF ( @RefObjID between 1920 and 1932 ) Set @Sex = 'W'
IF ( @RefObjID between 14875 and 14887 ) Set @Sex = 'M'
IF ( @RefObjID between 14888 and 14900 ) Set @Sex = 'W'
IF ( @RefObjID between 1907 and 1932 ) Set @Race = 'CH'
IF ( @RefObjID between 14875 and 14900 ) Set @Race = 'EU'
Select @ItemIDInventory = ItemID, @Slot = Slot From SRO_VT_SHARD.._Inventory Where CharID = @CharID and ItemID =
( Select ID64 From SRO_VT_SHARD.._Items Where RefItemID = @ItemID and ID64 = ItemID)
IF ( @Message = 'Trader') SET @ItemName = 'ITEM_'+CONVERT (varchar (3), @Race)+'_'+CONVERT (varchar (3), @Sex)+'_TRADE_TRADER_03'
IF ( @Message = 'Thief') SET @ItemName = 'ITEM_'+CONVERT (varchar (3), @Race)+'_'+CONVERT (varchar (3), @Sex)+'_TRADE_THIEF_03'
IF ( @Message = 'Hunter') SET @ItemName = 'ITEM_'+CONVERT (varchar (3), @Race)+'_'+CONVERT (varchar (3), @Sex)+'_TRADE_HUNTER_03'
IF ( @Message = 'Trader') SET @JobType = '1'
IF ( @Message = 'Thief') SET @JobType = '2'
IF ( @Message = 'Hunter') SET @JobType = '3'
Select @ItemID = ID From SRO_VT_SHARD.._RefObjCommon Where CodeName128 = @ItemName
exec SRO_VT_SHARD.._ADD_ITEM_EXTERN @CharName, @ItemName, 1, 0
Select @ItemIDInventory = ItemID, @Slot = Slot From SRO_VT_SHARD.._Inventory Where CharID = @CharID and ItemID =
( Select ID64 From SRO_VT_SHARD.._Items Where RefItemID = @ItemID and ID64 = ItemID)
--deneysel char meslek seçmeden önce bir önceki mesleğin level ve exp cek daha sonrada seçtiği mesleğin son kaydını chartrijob bas
if(@JobType=1)
begin
select @job_level=Trader_Level,@Job_Exp= Trader_Exp from CLEAN_GUARD.._CharStatics where CharID =@CharID
end
if(@JobType=2)
begin
select @job_level=Thief_Level,@Job_Exp= Thief_Exp from CLEAN_GUARD.._CharStatics where CharID =@CharID
end
if(@JobType=3)
begin
select @job_level=Hunter_Level,@Job_Exp= Hunter_Exp from CLEAN_GUARD.._CharStatics where CharID =@CharID
end
Update SRO_VT_SHARD.._Inventory Set ItemID = @ItemIDInventory Where CharID = @CharID and Slot = 8
Update SRO_VT_SHARD.._Inventory Set ItemID = 0 Where CharID = @CharID and Slot = @Slot And Slot != 8
Update SRO_VT_SHARD.._Char Set NickName16 = CharName16 Where CharID = @CharID
Update SRO_VT_SHARD.._CharTrijob Set JobType = @JobType ,[Level]=@Job_Level,[Exp]=@Job_Exp where CharID = @CharID
-- IF Exists ( Select AbleCount From SRO_VT_SHARD.._CharTrijobSafeTrade Where CharID = @CharID and AbleCount = 0 )
-- BEGIN
-- Print @CharID
-- END
-- ELSE
-- BEGIN
-- Insert Into SRO_VT_SHARD.._CharTrijobSafeTrade ( CharID, AbleCount, Status, LastSafeTrade ) Values ( @CharID,0,0, GETDATE() )
-- END
--INSERT INTO _BridgeCommands(CommandID, Executor, Data1, Data2, Date) VALUES(63, 'SMC', @CharName, @CharName, GETDATE())
INSERT INTO CLEAN_GUARD.._InstantCharReloadDelivery(CharID) Values ((select CharID from SRO_VT_SHARD.._Char where CharName16 = @CharName))
END
[/HIDE]