搜索
 找回密码
 加入

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

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

create  PROCEDURE [dbo].[nationchange]
@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 [dbo].[TB_USER] WHERE strAccountID = @AccountID  and  idays>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 where  struserid =@name1 or struserid =@name2 or struserid =@name3;
update userdata set knights=0 where  struserid =@name1 or struserid =@name2 or struserid =@name3;
update userdata set zone=21 where struserid =@name1 or struserid =@name2 or struserid =@name3;

end

8 回复

28085279
2009-9-3 18:40:49
点击查看详情
这个要怎么用...?
legendman
2009-9-4 17:41:22
具体要怎么用
214550663
2009-9-5 19:39:32
create  PROCEDURE [dbo].[nationchange]

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

评分

1

查看全部评分

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:}
高级模式
游客