Selam,
Bir çoğunuz karakter oyuna girince veya oyundan çıkınca bknz. account_login veya account_logout prosedürlerinde savaşta DC olanları
update userdata set Zone = '21' where Zone = '101' or Zone = '102'
gibi bir komutu ekleyip bu oyuncuları moradona ışınlıyorsunuz ama bu aslında yanlış bir komut kullanımıdır ve SQL'i aşırı derecede yorar karakter sayısıylada alakalıdır.Bende bunun için bir prosedür hazırladım CZde DC olanları CZ towna atıyor, savaşta DC olanları lunara gidiş kapısına atıyor.Bifrostta DC olanlarıda moradona yolluyor ve sadece bu hesaba bağlı karakterleri yapıyor.
Kod:
CREATE PROCEDURE [dbo].[FIX_WARP] (@strAccountID varchar(30))
AS DECLARE @strNation int, @strCharID1 varchar(30),@strCharID2 varchar(30),@strCharID3 varchar(30)
BEGIN TRAN
SELECT @strNation = bNation , @strCharID1 = strCharID1 , @strCharID2 = strCharID2, @strCharID3 = strCharID3 from account_char where strAccountID=@strAccountID
IF @strNation = 1
BEGIN
update userdata set Zone = '21' where Zone = '31' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '1',px='187730',py='1660',pz='17130' where (Zone = '101' or Zone = '111' or Zone = '103' or Zone = '102') and nation='1' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '201',pz='109300',py='300',px='138000' where Zone = '201' and Nation='1' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
END
ELSE
IF @strNation = 2
BEGIN
update userdata set Zone = '21' where Zone = '31' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '2',pz='186940',py='2330',px='19910' where (Zone = '101' or Zone = '111' or Zone = '103' or Zone = '102') and nation='2' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '201',pz='92029',py='1150',px='64929' where (Zone = '201' and Nation='2') and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
END
COMMIT TRAN
Kullanımı account_logout'a eklenmesi kafi olup EXEC FIX_WARP @AccountID şeklinde ekleyebilirsiniz. Eğer kullandığınız mapler değişikse ve farklı yerlerde doğuyorlar ise onuda kendiniz pz,py,px olarak belirttiğim alanlardan düzeltebilirsiniz.alıntıdır
Bir çoğunuz karakter oyuna girince veya oyundan çıkınca bknz. account_login veya account_logout prosedürlerinde savaşta DC olanları
update userdata set Zone = '21' where Zone = '101' or Zone = '102'
gibi bir komutu ekleyip bu oyuncuları moradona ışınlıyorsunuz ama bu aslında yanlış bir komut kullanımıdır ve SQL'i aşırı derecede yorar karakter sayısıylada alakalıdır.Bende bunun için bir prosedür hazırladım CZde DC olanları CZ towna atıyor, savaşta DC olanları lunara gidiş kapısına atıyor.Bifrostta DC olanlarıda moradona yolluyor ve sadece bu hesaba bağlı karakterleri yapıyor.
Kod:
CREATE PROCEDURE [dbo].[FIX_WARP] (@strAccountID varchar(30))
AS DECLARE @strNation int, @strCharID1 varchar(30),@strCharID2 varchar(30),@strCharID3 varchar(30)
BEGIN TRAN
SELECT @strNation = bNation , @strCharID1 = strCharID1 , @strCharID2 = strCharID2, @strCharID3 = strCharID3 from account_char where strAccountID=@strAccountID
IF @strNation = 1
BEGIN
update userdata set Zone = '21' where Zone = '31' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '1',px='187730',py='1660',pz='17130' where (Zone = '101' or Zone = '111' or Zone = '103' or Zone = '102') and nation='1' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '201',pz='109300',py='300',px='138000' where Zone = '201' and Nation='1' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
END
ELSE
IF @strNation = 2
BEGIN
update userdata set Zone = '21' where Zone = '31' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '2',pz='186940',py='2330',px='19910' where (Zone = '101' or Zone = '111' or Zone = '103' or Zone = '102') and nation='2' and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
update userdata set Zone = '201',pz='92029',py='1150',px='64929' where (Zone = '201' and Nation='2') and (struserid=@strCharID1 or struserid=@strCharID2 or struserid=@strCharID3)
END
COMMIT TRAN
Kullanımı account_logout'a eklenmesi kafi olup EXEC FIX_WARP @AccountID şeklinde ekleyebilirsiniz. Eğer kullandığınız mapler değişikse ve farklı yerlerde doğuyorlar ise onuda kendiniz pz,py,px olarak belirttiğim alanlardan düzeltebilirsiniz.alıntıdır