how to fix the item mall crash ?
when i want to buy anything from item mall i get dc'ed when i press Buy putton
i made sure of the ODBC , DB Connect and ini Certificate folder
they all have the same name of account db
if someone knows whats wrong please share
Item mall fix :
PHP Code:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_UPDATE_COST] Script Date: 02/02/2012 16:10:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- 상점개편 (최선호)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ALTER PROCEDURE [dbo].[_UPDATE_COST]
@Operation tinyint,
@CharID int,
@PaymentDevice int,
@PackageItemCodeName varchar(129),
@RemainGold bigint,
@OwnSilkToPay int,
@GiftSilkToPay int,
@OffsetOptionalPoint int,
@MileageToPay int
AS
SET NOCOUNT ON
declare @PaymentDeviceTemp int
declare @RemainOwnSilk int
declare @RemainGiftSilk int
declare @RemainMileage int
declare @Result int
set @RemainOwnSilk = 0
set @RemainGiftSilk = 0
set @RemainMileage = 0
IF (@RemainGold < 0 or @MileageToPay < 0 or @OwnSilkToPay < 0 or @GiftSilkToPay < 0 or @OffsetOptionalPoint < 0)
BEGIN
RETURN -2001
END
DECLARE @PC_ID INT
set @PC_ID = @CharID
----------------------------------------------------------
-- Operation에 따라�* 유저 캐릭터 아이디가 넘어 올수도 있고, cos 아이디가 넘어 올 수도 있다.
-- 캐릭터 아이디를 어쨋던 알아내야 하겠다.
----------------------------------------------------------
if (@Operation = 19)
begin
-- COS 용 물품을 구입한거니깐... 캐릭 찾아�* 돈 빼줘야지...
SELECT @PC_ID = OwnerCharID FROM _CharCOS WHERE ID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2002
END
end
/*
#define EXPAND_DEVICE_GOLDPRICE 1
#define EXPAND_DEVICE_SILKPRICE 2
#define EXPAND_DEVICE_GIFTSILKPRICE 4
#define EXPAND_DEVICE_GUILDPOINT 8
#define EXPAND_DEVICE_MILEAGE 16
*/
if ((@PaymentDevice & (2 | 4 | 16 )) > 0)
begin
-- 실크, 선물실크, 마일리지를 까야 하는구만.
-- 단, 마일리지는 옵션이다.
-- 캐릭터의 JID를 얻어오너라.
declare @JID int
select top 1 @JID = UserJID from _User
where CharID = @PC_ID
IF (@@ROWCOUNT = 0 OR @@ERROR <> 0)
BEGIN
RETURN -2006
END
DECLARE @PackageItemID int
select @PackageItemID = ID from dbo._RefPackageItem where codename128 = @PackageItemCodeName
DECLARE @rvalue int
-- EXEC @rvalue = SRO_VT_ACCOUNT.DBO._ConsumeSilkByGameServer @JID, @OwnSilkToPay OUTPUT, @GiftSilkToPay OUTPUT, @MileageToPay output, 1, @CharID
EXEC @rvalue = SRO_VT_ACCOUNT.DBO._ConsumeSilkByGameServer @JID, @OwnSilkToPay OUTPUT, @GiftSilkToPay OUTPUT, @MileageToPay output, 0, @CharID, @PackageItemID , 0
IF (@rvalue < 0 OR @@ERROR <> 0)
BEGIN
RETURN -2012
END
--------------------------
--<< 1. 수정 전 코드 >> -- 주�*
--------------------------
-- -- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 255, @OwnSilkToPay, 2, 0, 1)
--
-- if (@@ERROR <> 0 or @@ROWCOUNT = 0)
-- begin
-- return -2007
-- end
--
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 254,@GiftSilkToPay, 4, 0, 1)
--
-- if (@@ERROR <> 0 or @@ROWCOUNT = 0)
-- begin
-- return -2007
-- end
--
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 253,@MileageToPay, 16, 0, 1)
--------------------------
--<< 1. 수정 후 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 255, @OwnSilkToPay, 2, 0, 1, 0)
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 254,@GiftSilkToPay, 4, 0, 1, 0)
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 253,@MileageToPay, 16, 0, 1, 0)
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end
-- gold
if ((@PaymentDevice & 1) > 0)
begin
UPDATE _Char SET RemainGold = @RemainGold WHERE CharID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2003
END
end
-- guildpoint
if ((@PaymentDevice & 8) > 0)
BEGIN
-- 길드를 알아와라.
declare @GuildID int
select @GuildID = GuildID from _GuildMember
where CharID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2004
END
-- 길드 포인트 까라.
update _Guild set GatheredSP = GatheredSP - @OffsetOptionalPoint
where GatheredSP >= @OffsetOptionalPoint and ID = @GuildID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
/*
-- 없을수도 있는거다.
-- by novice. 2010-01-15 에러코드 데이터형 확장
-- 원래 주석되어 있던 코드이지만, 추후 개발하는 사람들이
-- 수정되지 않은 내용을 보고 혼란스러워 할 수 있어�*
-- 이 부분까지 수정해버림!
-- declare @Slot tinyint
declare @Slot int
declare @RefItemSerial64 bigint
declare @RefItemDBID bigint
declare @RefItemID int
declare @Type tinyint
-- by novice. 2010-01-15 에러코드 데이터형 확장
-- set @Slot = 0xd0 -- error_num �*버에�* 사용하는 에러
-- MAKE_SRO_SP_ERR_TYPE( _UPDATE_COST, 0x0004);
-- DEFINE_SRO_SP_ERR( SRO_SP_ERR_NOT_ENOUGH_GUILD_POINT, _UPDATE_COST, 0x8001 ); // ==> 0x80010004
-- BIND_SRO_SP_ERR_TO_SRO_ERR( SRO_SP_ERR_NOT_ENOUGH_GUILD_POINT, STRGERR_NOT_ENOUGH_GUILDPOINT );
set @Slot = 0x80010004 -- error_num �*버에�* 사용하는 에러
set @RefItemSerial64 = 0
set @RefItemDBID = 0
set @RefItemID = 0
set @Type = 2
select @Operation, @Slot, @RefItemSerial64, @RefItemDBID, @RefItemID, @Type
*/
RETURN -2005
END
--------------------------
--<< 2. 수정 전 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 252, @OffsetOptionalPoint, 8, 0, 1)
--------------------------
--<< 2. 수정 후 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 252, @OffsetOptionalPoint, 8, 0, 1, 0)
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end
-- honorpoint
else if ((@PaymentDevice & 32) > 0)
begin
-- honorpoint 까라.
update _TrainingCampMember set HonorPoint = HonorPoint - @OffsetOptionalPoint
where HonorPoint >= @OffsetOptionalPoint and CharID = @PC_ID
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2006
end
--------------------------
--<< 3. 수정 전 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 252, @OffsetOptionalPoint, 32, 0, 1)
--------------------------
--<< 3. 수정 후 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 252, @OffsetOptionalPoint, 32, 0, 1, 0)
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end
SET NOCOUNT OFF
return 1
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Close GameServer and use this query and open service SR_GameServer
If the query doesn't help the problem is from ODBC or DBConnect.asp
Check again ODBC and DBConnect.asp
Item mall fix :
PHP Code:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_UPDATE_COST] Script Date: 02/02/2012 16:10:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- 상점개편 (최선호)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ALTER PROCEDURE [dbo].[_UPDATE_COST]
@Operation tinyint,
@CharID int,
@PaymentDevice int,
@PackageItemCodeName varchar(129),
@RemainGold bigint,
@OwnSilkToPay int,
@GiftSilkToPay int,
@OffsetOptionalPoint int,
@MileageToPay int
AS
SET NOCOUNT ON
declare @PaymentDeviceTemp int
declare @RemainOwnSilk int
declare @RemainGiftSilk int
declare @RemainMileage int
declare @Result int
set @RemainOwnSilk = 0
set @RemainGiftSilk = 0
set @RemainMileage = 0
IF (@RemainGold < 0 or @MileageToPay < 0 or @OwnSilkToPay < 0 or @GiftSilkToPay < 0 or @OffsetOptionalPoint < 0)
BEGIN
RETURN -2001
END
DECLARE @PC_ID INT
set @PC_ID = @CharID
----------------------------------------------------------
-- Operation에 따라�* 유저 캐릭터 아이디가 넘어 올수도 있고, cos 아이디가 넘어 올 수도 있다.
-- 캐릭터 아이디를 어쨋던 알아내야 하겠다.
----------------------------------------------------------
if (@Operation = 19)
begin
-- COS 용 물품을 구입한거니깐... 캐릭 찾아�* 돈 빼줘야지...
SELECT @PC_ID = OwnerCharID FROM _CharCOS WHERE ID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2002
END
end
/*
#define EXPAND_DEVICE_GOLDPRICE 1
#define EXPAND_DEVICE_SILKPRICE 2
#define EXPAND_DEVICE_GIFTSILKPRICE 4
#define EXPAND_DEVICE_GUILDPOINT 8
#define EXPAND_DEVICE_MILEAGE 16
*/
if ((@PaymentDevice & (2 | 4 | 16 )) > 0)
begin
-- 실크, 선물실크, 마일리지를 까야 하는구만.
-- 단, 마일리지는 옵션이다.
-- 캐릭터의 JID를 얻어오너라.
declare @JID int
select top 1 @JID = UserJID from _User
where CharID = @PC_ID
IF (@@ROWCOUNT = 0 OR @@ERROR <> 0)
BEGIN
RETURN -2006
END
DECLARE @PackageItemID int
select @PackageItemID = ID from dbo._RefPackageItem where codename128 = @PackageItemCodeName
DECLARE @rvalue int
-- EXEC @rvalue = SRO_VT_ACCOUNT.DBO._ConsumeSilkByGameServer @JID, @OwnSilkToPay OUTPUT, @GiftSilkToPay OUTPUT, @MileageToPay output, 1, @CharID
EXEC @rvalue = SRO_VT_ACCOUNT.DBO._ConsumeSilkByGameServer @JID, @OwnSilkToPay OUTPUT, @GiftSilkToPay OUTPUT, @MileageToPay output, 0, @CharID, @PackageItemID , 0
IF (@rvalue < 0 OR @@ERROR <> 0)
BEGIN
RETURN -2012
END
--------------------------
--<< 1. 수정 전 코드 >> -- 주�*
--------------------------
-- -- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 255, @OwnSilkToPay, 2, 0, 1)
--
-- if (@@ERROR <> 0 or @@ROWCOUNT = 0)
-- begin
-- return -2007
-- end
--
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 254,@GiftSilkToPay, 4, 0, 1)
--
-- if (@@ERROR <> 0 or @@ROWCOUNT = 0)
-- begin
-- return -2007
-- end
--
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 253,@MileageToPay, 16, 0, 1)
--------------------------
--<< 1. 수정 후 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 255, @OwnSilkToPay, 2, 0, 1, 0)
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 254,@GiftSilkToPay, 4, 0, 1, 0)
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 253,@MileageToPay, 16, 0, 1, 0)
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end
-- gold
if ((@PaymentDevice & 1) > 0)
begin
UPDATE _Char SET RemainGold = @RemainGold WHERE CharID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2003
END
end
-- guildpoint
if ((@PaymentDevice & 8) > 0)
BEGIN
-- 길드를 알아와라.
declare @GuildID int
select @GuildID = GuildID from _GuildMember
where CharID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2004
END
-- 길드 포인트 까라.
update _Guild set GatheredSP = GatheredSP - @OffsetOptionalPoint
where GatheredSP >= @OffsetOptionalPoint and ID = @GuildID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
/*
-- 없을수도 있는거다.
-- by novice. 2010-01-15 에러코드 데이터형 확장
-- 원래 주석되어 있던 코드이지만, 추후 개발하는 사람들이
-- 수정되지 않은 내용을 보고 혼란스러워 할 수 있어�*
-- 이 부분까지 수정해버림!
-- declare @Slot tinyint
declare @Slot int
declare @RefItemSerial64 bigint
declare @RefItemDBID bigint
declare @RefItemID int
declare @Type tinyint
-- by novice. 2010-01-15 에러코드 데이터형 확장
-- set @Slot = 0xd0 -- error_num �*버에�* 사용하는 에러
-- MAKE_SRO_SP_ERR_TYPE( _UPDATE_COST, 0x0004);
-- DEFINE_SRO_SP_ERR( SRO_SP_ERR_NOT_ENOUGH_GUILD_POINT, _UPDATE_COST, 0x8001 ); // ==> 0x80010004
-- BIND_SRO_SP_ERR_TO_SRO_ERR( SRO_SP_ERR_NOT_ENOUGH_GUILD_POINT, STRGERR_NOT_ENOUGH_GUILDPOINT );
set @Slot = 0x80010004 -- error_num �*버에�* 사용하는 에러
set @RefItemSerial64 = 0
set @RefItemDBID = 0
set @RefItemID = 0
set @Type = 2
select @Operation, @Slot, @RefItemSerial64, @RefItemDBID, @RefItemID, @Type
*/
RETURN -2005
END
--------------------------
--<< 2. 수정 전 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 252, @OffsetOptionalPoint, 8, 0, 1)
--------------------------
--<< 2. 수정 후 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 252, @OffsetOptionalPoint, 8, 0, 1, 0)
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end
-- honorpoint
else if ((@PaymentDevice & 32) > 0)
begin
-- honorpoint 까라.
update _TrainingCampMember set HonorPoint = HonorPoint - @OffsetOptionalPoint
where HonorPoint >= @OffsetOptionalPoint and CharID = @PC_ID
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2006
end
--------------------------
--<< 3. 수정 전 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 252, @OffsetOptionalPoint, 32, 0, 1)
--------------------------
--<< 3. 수정 후 코드 >> --
--------------------------
-- 게임 �*버쪽에�* 갱신 받기 위해 cost 값을 결과 테이블에 넣어둔다.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 252, @OffsetOptionalPoint, 32, 0, 1, 0)
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end
SET NOCOUNT OFF
return 1
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Close GameServer and use this query and open service SR_GameServer
If the query doesn't help the problem is from ODBC or DBConnect.asp
Check again ODBC and DBConnect.asp
GRRRRRRRR
still have the same problem
is it required SQL 2005 only
im using 2008..
or just im wrong setting it up ?
could u help me through teamviewer ?
ill be glad , if u dont mind =D
[VSRO] Item Mall (Avatar) 05/27/2013 - SRO Private Server - 15 Replies Hey guys,
i tried to add all avatar in the Item Mall, i found a Guide which said i must change in refpackageitem the saletag to 0 in the media.pk2 and in SRO_VT_SHARD so no problem i changed it without any problems.
So when i login and open the Item Mall and click on Dresses i only see this:
http://img80.imageshack.us/img80/3491/sro20120122 01551647.jpg
in Hat is nothing
there must be Dresses and Attachment too or?
what is wrong?
VSRO ITEM MALL NO IMAGE HELP!! 10/22/2011 - SRO Private Server - 3 Replies NEED A LITTLE HELP FRIENDS
http://img69.imageshack.us/img69/5537/sadlha.png
http://img695.imageshack.us/img695/2520/sro201110 2122260788.jpg
WHY HELP:handsdown:
[vSRO] Item Mall 10/09/2011 - SRO Private Server - 5 Replies How can I change the price of the items of item mall in media.pk2?
Class 1 Item mall Crash Help PLz 09/19/2011 - SRO Private Server - 2 Replies iv been getting this crash for the last 2 days know GM dont help-----------Iv re-installed the client have done system restore and re installed windows 7 and still getting the stupid item mall crash cant click on buy or i get crash can some one help me out i have 600silk on account and cant use it....? do i have to make charge back or what??