Massive-Forum

Knight Online Koxp | 1849 Koxp - 1299 Koxp - 1849 Multi Client - Metin 2 hile ,bot,
 
AnasayfaAnasayfa  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

Paylaş | 
 

 Başlangıç Itemlerini Değiştirmek v2 (Çok Daha Gelişmiş, Yeni Özellikler, Kolaylıklar)

Aşağa gitmek 
YazarMesaj
adiyosb4by



Mesaj Sayısı : 62
Kayıt tarihi : 08/05/10

MesajKonu: Başlangıç Itemlerini Değiştirmek v2 (Çok Daha Gelişmiş, Yeni Özellikler, Kolaylıklar)   Paz Mayıs 09, 2010 9:34 am

Selamlar...
Çoğu Kişinin Değiştirmekde zorluk çektiğini Farkedip BoYle birşey yapmayı düşündüm

Güzelde oldu ..
İ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. ve Önemli 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 Surprised ( 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,itembasicname) 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(Cool) 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(Cool) + 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:
/****** Object: Stored Procedure dbo.CREATE_NEW_CHAR Script Date: 6/6/2006 6:03:33 PM ******/


/****** 개체: 저장 프로시저 dbo.CREATE_NEW_CHAR 스크립트 날짜: 2002-11-14 오전 11:18:03 ******/


-- 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..!

E ArtıK Başlangıç item değiştirme Programıda çıkarır birisi
Kolay Olacaktır. İnvertory editor işlemi ile aynı
sadece Prosedür ve tablo isimleri değişik...



Saygılarımla İyi Forumlar...


Prosedür için Ganks'a teşekkürler.

Sayfa başına dön Aşağa gitmek
 
Başlangıç Itemlerini Değiştirmek v2 (Çok Daha Gelişmiş, Yeni Özellikler, Kolaylıklar)
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» ARADIĞINIZ ACAPELLALAR
» en yeni espriler
» Yeni Nesil Grafiker Forumu ! - Grafikcell

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Massive-Forum :: Private Serverlar :: Prosedürler & Kodlar-
Buraya geçin: