evaydd 发表于 2009-9-3 16:35:49

一个存储过程,来允许角色转换国家-已经修正问题

我粗心大意,写标题给写错了,真猪
之前的版本在运行中发现一些问题,尤其是转换的时候有问题,已经解决,重新核对了人物角色

createPROCEDURE .
@AccountID    varchar(21),
@Password    varchar(13)


AS
DECLARE @Nation tinyint, @Nation1 tinyint,@CharNum smallint,@realrace tinyint,@realclass int
SET @Nation = 0
SET @Nation1 = 0
SET @CharNum = 0


DECLARE @pwd varchar(13),@name1 varchar(30),@name2 varchar(30),@name3 varchar(30)
SET @pwd = null
SELECT @pwd = strPasswd FROM . WHERE strAccountID = @AccountIDandidays>0
IF @pwd IS null
BEGIN
    RETURN
END
IF @pwd <> @Password
BEGIN
    RETURN
END

if @pwd = @Password
begin


begin
select @nation=bnation ,@name1=strcharid1, @name2=strcharid2,@name3=strcharid3 from account_char where straccountid=@AccountID;
end   

if @nation=1
begin
set @nation1=2;
end
else if @nation = 2
begin
set @nation1=1;
end;


if @nation=1
begin

begin
--1
select @realrace=race,@realclass=class from userdata where struserid =@name1;
if @realrace=1
begin
update userdata set face=11 where struserid =@name1 ;
end
else if @realrace=2 and (@realclass=111 or @realclass=112)
begin
update userdata set face=12 where struserid =@name1;
end
else if @realrace=2 and (@realclass=107 or @realclass=108)
begin
update userdata set face=12 where struserid =@name1 ;
end
else if @realrace=2 and (@realclass=109 or @realclass=110)
begin
update userdata set face=12 where struserid =@name1 ;
end
else if @realrace=3
begin
update userdata set face=12 where struserid =@name1 ;
end
else if @realrace=4
begin
update userdata set face=13 where struserid =@name1 ;
end;

--2


select @realrace=race,@realclass=class from userdata where struserid =@name2;
if @realrace=1
begin
update userdata set face=11 where struserid =@name2 ;
end
else if @realrace=2 and (@realclass=111 or @realclass=112)
begin
update userdata set face=12 where struserid =@name2 ;
end
else if @realrace=2 and (@realclass=107 or @realclass=108)
begin
update userdata set face=12 where struserid =@name2 ;
end
else if @realrace=2 and (@realclass=109 or @realclass=110)
begin
update userdata set face=12 where struserid =@name2 ;
end
else if @realrace=3
begin
update userdata set face=12 where struserid =@name2 ;
end
else if @realrace=4
begin
update userdata set face=13 where struserid =@name2 ;
end;

--3
select @realrace=race,@realclass=class from userdata where struserid =@name3;
if @realrace=1
begin
update userdata set face=11 where struserid =@name3 ;
end
else if @realrace=2 and (@realclass=111 or @realclass=112)
begin
update userdata set face=12 where struserid =@name3 ;
end
else if @realrace=2 and (@realclass=107 or @realclass=108)
begin
update userdata set face=12 where struserid =@name3 ;
end
else if @realrace=2 and (@realclass=109 or @realclass=110)
begin
update userdata set face=12 where struserid =@name3 ;
end
else if @realrace=3
begin
update userdata set face=12 where struserid =@name3 ;
end
else if @realrace=4
begin
update userdata set face=13 where struserid =@name3 ;
end
end

update userdata set class=class+100 where struserid =@name1 or struserid =@name2 or struserid =@name3;

end

else if @nation=2
begin
begin
--1

if @realrace=11
begin
update userdata set face=1 where struserid =@name1 ;
end
else if @realrace=12 and (@realclass=207 or @realclass=208)
begin
update userdata set face=2 where struserid =@name1 ;
end
else if @realrace=12 and (@realclass=211 or @realclass=212)
begin
update userdata set face=2 where struserid =@name1 ;
end
else if @realrace=12 and (@realclass=209 or @realclass=210)
begin
update userdata set face=2 where struserid =@name1 ;
end
else if @realrace=12 and (@realclass=205 or @realclass=206)
begin
update userdata set face=1 where struserid =@name1 ;
end
else if @realrace=13 and (@realclass=211 or @realclass=212)
begin
update userdata set face=4 where struserid =@name1 ;
end
else if @realrace=13 and (@realclass=205 or @realclass=206)
begin
update userdata set face=1 where struserid =@name1 ;
end
else if @realrace=13 and (@realclass=209 or @realclass=210)
begin
update userdata set face=3 where struserid =@name1 ;
end;

--2


select @realrace=race,@realclass=class from userdata where struserid =@name2;
if @realrace=11
begin
update userdata set face=1 where struserid =@name2 ;
end
else if @realrace=12 and (@realclass=207 or @realclass=208)
begin
update userdata set face=2 where struserid =@name2 ;
end
else if @realrace=12 and (@realclass=211 or @realclass=212)
begin
update userdata set face=2 where struserid =@name2 ;
end
else if @realrace=12 and (@realclass=209 or @realclass=210)
begin
update userdata set face=2 where struserid =@name2 ;
end
else if @realrace=12 and (@realclass=205 or @realclass=206)
begin
update userdata set face=1 where struserid =@name2 ;
end
else if @realrace=13 and (@realclass=211 or @realclass=212)
begin
update userdata set face=4 where struserid =@name2 ;
end
else if @realrace=13 and (@realclass=205 or @realclass=206)
begin
update userdata set face=1 where struserid =@name2 ;
end
else if @realrace=13 and (@realclass=209 or @realclass=210)
begin
update userdata set face=3 where struserid =@name2 ;
end;

--3
select @realrace=race,@realclass=class from userdata where struserid =@name3;
if @realrace=11
begin
update userdata set face=1 where struserid =@name3 ;
end
else if @realrace=12 and (@realclass=207 or @realclass=208)
begin
update userdata set face=2 where struserid =@name3 ;
end
else if @realrace=12 and (@realclass=211 or @realclass=212)
begin
update userdata set face=2 where struserid =@name3 ;
end
else if @realrace=12 and (@realclass=205 or @realclass=206)
begin
update userdata set face=1 where struserid =@name3 ;
end
else if @realrace=12 and (@realclass=209 or @realclass=210)
begin
update userdata set face=2 where struserid =@name3 ;
end
else if @realrace=13 and (@realclass=211 or @realclass=212)
begin
update userdata set face=4 where struserid =@name3 ;
end
else if @realrace=13 and (@realclass=205 or @realclass=206)
begin
update userdata set face=1 where struserid =@name3 ;
end
else if @realrace=13 and (@realclass=209 or @realclass=210)
begin
update userdata set face=3 where struserid =@name3 ;
end
end

update userdata set class=class-100 where struserid =@name1 or struserid =@name2 or struserid =@name3;

end;


update account_char set bnation=@nation1 where straccountid=@AccountID;
update userdata set nation=@nation1 where struserid =@name1 or struserid =@name2 or struserid =@name3;
delete from KNIGHTS_USER wherestruserid =@name1 or struserid =@name2 or struserid =@name3;
update userdata set knights=0 wherestruserid =@name1 or struserid =@name2 or struserid =@name3;
update userdata set zone=21 where struserid =@name1 or struserid =@name2 or struserid =@name3;

end

28085279 发表于 2009-9-3 18:40:49

这个要怎么用...?

legendman 发表于 2009-9-4 17:41:22

具体要怎么用

214550663 发表于 2009-9-5 19:39:32

createPROCEDURE .

创建一个名称为nationchange的储存过程,然后把楼主的代码全部复制进去。

aini 发表于 2009-9-5 20:22:01

很好 支持

zcyzcy 发表于 2009-9-7 00:04:05

明白了 谢谢 !~~

cege 发表于 2009-10-28 23:07:08

还有问题的,有的转了,人物没头了,衣服穿不了,有的技能出错了
麻烦楼主再测试下吧

cege 发表于 2009-10-29 13:08:47

发现问题,不是存储的问题,是进游戏不能跳过选择种族引起的问题~
跳过选择种族谁有解决办法啊?

laoyou456 发表于 2009-10-29 14:01:20

{:1_217:}
页: [1]
查看完整版本: 一个存储过程,来允许角色转换国家-已经修正问题