Merhaba Ziyaretçi
Forumumuza hoşgeldiniz.Sitemizi daha yararlı şekilde kullanabilmek için lütfen kayıt olun veya giriş yapın.

Başlangıç Itemlerini Değiştirmek (Çok Daha KoLay

Server Tanitimi , Ko Tanitimi , Silkroad Pvp Serverler , Metin2 Pvp Serverler

[XFB] Konu Bilgileri

Konu Hakkında Merhaba, tarihinde Prosedür & Kod Paylaşımları kategorisinde Stark tarafından oluşturulan Başlangıç Itemlerini Değiştirmek (Çok Daha KoLay başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 496 kez görüntülenmiş, 0 yorum ve 0 tepki puanı almıştır...
Kategori Adı Prosedür & Kod Paylaşımları
Konu Başlığı Başlangıç Itemlerini Değiştirmek (Çok Daha KoLay
Konbuyu başlatan Stark
Başlangıç tarihi
Cevaplar
Görüntüleme
İlk mesaj tepki puanı
Son Mesaj Yazan Stark

Stark

K.Destek Yöneticisi
27 May 2013
2,664
0
İnvertory editor Prosedürünü birazcık editledim ve Başlangıç itemlerini O KOdlarla değiştirebileceksiniz..







ve Yeni bir Özellik daha , Artık İtemler OYUNA Girince Değil , Karakteri Oluşturdukdan hemen sonra , Karakter seçme ekranında gelecek . (Şekil Oluyor ) SancakKO 'mda Kullanımdadır Şu anda...







Gelelim Kuruluma :











Eklenmesi Gereken 1. Kod:









Kod:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[baslangic_duzenle]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[baslangic_duzenle]

GO

CREATE TABLE [dbo].[baslangic_duzenle] (

[dwid] [int] NULL ,

[stacksize] [smallint] NULL ,

[durability] [smallint] NULL ,

[strUserId] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,

[sira] [int] NULL ,

[itembasicname] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,

[strSerial] [int] NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[baslangic]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[baslangic]

GO

CREATE TABLE [dbo].[baslangic] (

[class] [smallint] NULL ,

[stritem] [varchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

) ON [PRIMARY]

GO

-- Ko-Cuce 2008

insert into baslangic values ('5' , ':ø~')

insert into baslangic values ('6' , ':ø~')

insert into baslangic values ('7' , ':ø~')

insert into baslangic values ('5' , ':ø~')

insert into baslangic values ('1' , '' )

insert into baslangic values ('2' , '' )

insert into baslangic values ('3' , '' )

insert into baslangic values ('4' , '' )

Eklenmesi Gereken 2. Kod:









Kod:

--bu procedure Maktiris1536 tarafından eylenmiştir..

-- Başlangıç itemlerine Uyarlandı (Ganks)

--KO-Cuce.com 2008

CREATE procedure baslangicitemleri_bul

@StrUserID int

AS

DECLARE

@length int, -- stritem uzunluğu

@i int, -- item'in stritem deki yeri

@dwid int,

@dur int,

@duar int,

@Kocuce int,

@StackSize1 int,

@Sira int,

@Row int,

@name varchar(100),

@extname varchar(100),

@ext int,

@strSerial int

set @i = 14*0+1

set @length = 401

select @Row=count(*) from baslangic where class=@StrUserID

delete from baslangic_duzenle where struserid=@StrUserID

if @Row>0

begin

WHILE @i < @length

Begin

--Buraya İşemek Yasaktır

-- Burası Türkiye
( herkez işeyebilir )

Select @dwid=cast(cast(substring(cast(substring(strItem, @i,4) as varbinary(4)), 4, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 3, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 2, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 1, 1) as varbinary(4)) as int(4)),

@dur = cast(cast(cast( substring(strItem, @i+5, 1) as varbinary(1))+cast(substring(strItem, @i+4, 1) as varbinary(1)) as varbinary(2)) as smallint),

@StackSize1 = cast(cast(cast( substring(strItem, @i+7, 1) as varbinary(1))+cast(substring(strItem, @i+6, 1) as varbinary(1)) as varbinary(2)) as smallint),

@StrUserID = class

From baslangic

Where class = @StrUserID

if @dwid=0

begin

set @extname='~~~~~~ item yok ~~~~~~'

set @name='~~~~~~ item yok ~~~~~~'

end

else

begin

set @extname='Bulunamadi'

select @extname=strname from item where num=@dwid

end

insert into baslangic_duzenle (dwid,stacksize,durability,struserid,sira,itembasi cname) values(@dwid,@StackSize1,@dur,@StrUserID,(@i-1) / 8,@extname )

set @i=@i+8

end

select * from baslangic_duzenle where struserid=@StrUserID order by sira

end

GO

Eklenmesi Gereken 3. Kod:









Kod:

CREATE procedure baslangicitemleri_kaydet

-- Created by Matrix1536

-- Pisci by Aküma

-- Başlangıc itemi Uyarlama - Ganks

@StrUserID int

AS

DECLARE

@length int, -- stritem uzunluğu

@row int, -- yerine göre deişior.

@i int, -- item'in stritem deki yeri

@dwid int, -- dwid

@pos int,

@dur int,

@dur1 int,

@Kocuce int,

@ext int,

@StackSize1 int,

@strName varchar(30),

@strExtName varchar(30),

@strSerial int,

@CstrSerial varbinary(4),

@Cdwid varbinary(4),

@Cdur varchar(2),

@Source tinyint,

@NEWdwid int,

@StackSize int,

@Cstack varchar(2),

@sira int

set @sira=0

set @i = 14*0

set @length = 401

select @row=count( * ) from baslangic where class=@StrUserID

if @row>0

begin

Select @dwid=dwid,

@dur = durability,

@StackSize1 = stacksize,

@StrUserID = strUserID

From baslangic_duzenle

Where strUserID = @StrUserID and sira=@sira

print @dwid

Set @Cdwid = Substring(cast(@dwid as varbinary(4)), 4, 1) + Substring(cast(@dwid as varbinary(4)), 3, 1) + Substring(cast(@dwid as varbinary(4)), 2, 1) + Substring(cast(@dwid as varbinary(4)), 1, 1)

Set @Cdur = cast(Substring(cast(@dur as varbinary(2)), 2, 1)+Substring(cast(@dur as varbinary(2)), 1, 1) as varchar(2))

Set @Cstack = cast(Substring(cast(@StackSize1 as varbinary(2)), 2, 1)+Substring(cast(@StackSize1 as varbinary(2)), 1, 1) as varchar(2))

update UserData set

strItem = cast(cast(cast(@Cdwid as varchar(4)) + @Cdur + @Cstack as varchar(8)) as binary(400))

where class = @StrUserID

set @i=@i+8

set @sira=@sira+1

WHILE @sira < 50

Begin

Select @dwid=dwid,

@dur = durability,

@StackSize1 = stacksize,

@StrUserID = strUserID

From baslangic_duzenle

Where strUserID = @StrUserID and sira=@sira

Set @Cdwid = Substring(cast(@dwid as varbinary(4)), 4, 1) + Substring(cast(@dwid as varbinary(4)), 3, 1) + Substring(cast(@dwid as varbinary(4)), 2, 1) + Substring(cast(@dwid as varbinary(4)), 1, 1)

Set @Cdur = cast(Substring(cast(@dur as varbinary(2)), 2, 1)+Substring(cast(@dur as varbinary(2)), 1, 1) as varchar(2))

Set @Cstack = cast(Substring(cast(@StackSize1 as varbinary(2)), 2, 1)+Substring(cast(@StackSize1 as varbinary(2)), 1, 1) as varchar(2))

set @CstrSerial = Substring(cast(@strSerial as varbinary(4)), 4, 1) + Substring(cast(@strSerial as varbinary(4)), 3, 1) + Substring(cast(@strSerial as varbinary(4)), 2, 1) + Substring(cast(@strSerial as varbinary(4)), 1, 1)

--KO-Cuce.com 2008

update baslangic set

strItem = cast(substring(strItem, 1, @i) + cast(cast(@Cdwid as varchar(4)) + @Cdur + @Cstack as varchar(8)) + substring(strItem, @i+8, 401-@i) as binary(400))

where class = @StrUserID

--Buraya İşemek Yasaktır

set @i=@i+8

set @sira=@sira+1

end

end

GO

Eklenmesi Gereken 4. Kod:









Kod:

--Edited By ganks...

-- KO-CUCE.com için yapılmıştır...

CREATE PROCEDURE baslangicitem

@account varchar(21)

AS

begin

declare @class smallint

select @class = cast(substring(cast(class as varchar(3)),2,2) as smallint(2)) from userdata where struserid=@account

if @class=1 or @class=5 or @class=6

set @class = 1

if @class=2 or @class=7 or @class=8

set @class = 2

if @class=3 or @class=9 or @class=10

set @class = 3

if @class=4 or @class=11 or @class=12

set @class = 4

update userdata set stritem = (select stritem from baslangic where class=@class) where struserid=@account

end

GO

Eğer Başlangıç İtem Değiştirme v1 Kurulu ise , 4. Kodu Girmeyebilirsiniz. Yani Prosedürlerde baslangicitem prosedürü var ise.











ve Son Olarak ,







Uygulanması gereken Kod:









Kod:

-- scripted by samma

-- 2002.01.17

-- 2003.02.06 sungyong

ALTER PROCEDURE CREATE_NEW_CHAR

@nRet smallint OUTPUT,

@AccountID char(21),

@index tinyint,

@CharID char(21),

@Race tinyint,

@Class smallint,

@Hair tinyint,

@Face tinyint,

@Str tinyint,

@Sta tinyint,

@Dex tinyint,

@Intel tinyint,

@Cha tinyint

AS

DECLARE @Row tinyint, @Nation tinyint, @Zone tinyint, @PosX int, @PosZ int

SET @Row = 0 SET @Nation = 0 SET @Zone = 0 SET @PosX = 0 SET @PosZ = 0

SELECT @Nation = bNation, @Row = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID

IF @Row >= 5 SET @nRet = 1

IF @Nation = 1 AND @Race > 10 SET @nRet = 2

ELSE IF @Nation = 2 AND @Race < 10 SET @nRet = 2

ELSE IF @Nation 1 AND @Nation 2 SET @nRet = 2

IF @nRet > 0

RETURN

SELECT @Row = COUNT(*) FROM USERDATA WHERE strUserId = @CharID

IF @Row > 0

BEGIN

SET @nRet = 3

RETURN

END

--SET @Zone = @Nation

SET @Zone=21

SELECT @PosX = InitX, @PosZ = InitZ FROM ZONE_INFO WHERE ZoneNo = @Zone

BEGIN TRAN

IF @index = 0

UPDATE ACCOUNT_CHAR SET strCharID1 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID

ELSE IF @index = 1

UPDATE ACCOUNT_CHAR SET strCharID2 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID

ELSE IF @index = 2

UPDATE ACCOUNT_CHAR SET strCharID3 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID

ELSE IF @index = 3

UPDATE ACCOUNT_CHAR SET strCharID4 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID

ELSE IF @index = 4

UPDATE ACCOUNT_CHAR SET strCharID5 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID

INSERT INTO USERDATA (strUserId, Nation, Race, Class, HairColor, Face, Strong, Sta, Dex, Intel, Cha, Zone, PX, PZ )

VALUES (@CharID, @Nation, @Race, @Class, @Hair, @Face, @Str, @Sta, @Dex, @Intel, @Cha, @Zone, @PosX, @PosZ )

exec baslangicitem @CharID

IF @@ERROR 0

BEGIN

ROLLBACK TRAN

SET @nRet = 4

RETURN

END

COMMIT TRAN

SET @nRet = 0

GO

ve Şimdi geleLim Başlangıç İtemlerini Değiştirme İşlemine



Class Sayıları :









Kod:

2 = Rogue

1 = warrior

3 = Mage

4 = priest

Öncelikle başlangıç itemlerini Buluyoruz.









Kod:

exec baslangicitemleri_bul 'ClassSayısı'









sonra , baslangic_duzenle tablosundan Gerekli itemleri ekliyoruz. invertory editor kullanmasını bilirsiniz. ama Program değil , Tablo olarak .







ve Gerekli itemleri değiştirip , ekledikten sonra Kaydetmeliyiz...









Kod:

exec baslangicitemleri_kaydet 'BulunanClassSayısı'

Önemli : İtemleri Kaydederken Gireceğiniz Class Sayısı ile , itemleri buldugunuz class sayısı aynı olmalıdır. Aksi taktirde Tüm Classlara aynı itemi kaydedecektir.







ve işLem tamamdır..!







Alıntıdır Gangs'a Teşekkürler..











Ek Not: Sorunsuz Denenmiş Olan Konu Burda Verilmiştir.







[Linkleri Görebilmek İcin ]http://www.pvpkeyfi.net/register.php"> Buraya Tıklayarak Üye Olunuz![/url
http://www.pvpkeyfi.net/register.php"> Buraya Tıklayarak Üye Olunuz![/url
 
Üst Alt