当前位置:首页 >> PVF笔记 >> 新创建的角色自动入会

新创建的角色自动入会

admin PVF笔记 7
step1:命令行-解散所有公会并取消所有角色的公会标记
TRUNCATE TABLE d_guild.guild_member;
TRUNCATE TABLE d_guild.guild_info;
ALTER TABLE d_guild.guild_info AUTO_INCREMENT = 1;
TRUNCATE TABLE d_guild.guild_introduce;
TRUNCATE TABLE d_guild.guild_member_introduce;
TRUNCATE TABLE d_guild.guild_skill;
TRUNCATE TABLE d_guild.guild_visit;
UPDATE taiwan_cain.charac_info SET guild_id = 0, guild_right = 0;

第一步
自己上号创建个公会

第二步
运行全服玩家加入公会并且优秀的代码
USE taiwan_cain;

DELIMITER //

CREATE PROCEDURE update_guild_members()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE c_id, c_no, c_lv, c_job, c_type INT;
    DECLARE c_name VARCHAR(255);
    DECLARE c_time DATETIME;

    DECLARE cur CURSOR FOR
        SELECT m_id, charac_no, charac_name, lev, job, grow_type
        FROM charac_info
        WHERE guild_id <> 1 and delete_flag <> 1;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

read_loop: LOOP
    FETCH cur INTO c_id, c_no, c_name, c_lv, c_job, c_type;
    IF done THEN
        LEAVE read_loop;
    END IF;

    SET c_time = NOW();

    UPDATE charac_info
    SET guild_id = 1, guild_right = 1
    WHERE m_id = c_id;

    INSERT INTO d_guild.guild_member
    (guild_id, m_id, server_id, charac_no, charac_name, memo, grade, job, grow_type, lev, member_time, member_flag, last_play_time, age, born_year)
    VALUES
    (1, c_id, 3, c_no, c_name, 'Xiao.San', 3, c_job, c_type, c_lv, c_time, 1, c_time, 0, '00');

    UPDATE d_guild.guild_info
    SET member_count = member_count + 1
    WHERE guild_id = 1;

END LOOP;

CLOSE cur;
END //

DELIMITER ;

第三步
call一下
CALL update_guild_members();

第四步
清除刚才创建的存储过程
DROP PROCEDURE IF EXISTS update_guild_members;

建议配合新人入会
再最后呢,就是建议搭配新角色自动入会的脚步一起食用。
DELIMITER //
CREATE TRIGGER auto_join
AFTER INSERT ON taiwan_cain.charac_stat
FOR EACH ROW
BEGIN
DECLARE v_m_id INT;
DECLARE v_charac_no INT;
DECLARE v_charac_name VARCHAR(255);
DECLARE v_lev INT;
DECLARE v_job INT;
DECLARE v_grow_type INT;
DECLARE v_current_time DATETIME;
-- 更新 charac_info 表的 guild_id 和 guild_right
UPDATE taiwan_cain.charac_info
SET guild_id = 1, guild_right = 1
WHERE charac_no = NEW.charac_no;
-- 获取新插入的角色信息
SELECT m_id, charac_no, charac_name, lev, job, grow_type, NOW() INTO v_m_id, v_charac_no, v_charac_name, v_lev, v_job, v_grow_type, v_current_time
FROM taiwan_cain.charac_info
WHERE charac_no = NEW.charac_no;
-- 插入新成员到 guild_member 表
INSERT INTO d_guild.guild_member
(guild_id, m_id, server_id, charac_no, charac_name, memo, grade, job, grow_type, lev, member_time, member_flag, last_play_time, age, born_year)
VALUES
(1, v_m_id, 3, v_charac_no, v_charac_name, 'Xiao.San', 3, v_job, v_grow_type, v_lev, v_current_time, 1, v_current_time, 0, '00');
-- 更新 guild_info 表的 member_count
UPDATE d_guild.guild_info
SET member_count = member_count + 1
WHERE guild_id = 1;
END //
DELIMITER ;


协助本站SEO优化一下,谢谢!
关键词不能为空

免责声明

1.软件源码资源来源于网络,如有侵权请联系我们!
2.侵权联系邮箱:48165603@qq.com 收到邮件的24小时内删帖!
3.资源开源分享均为网络资源,开源发布立场不代表本站!
4.请勿侵犯正版软件,尊重正版版权作者的劳动成果!
5.欢迎广大开发作者来本站投稿,开源鸭有你更精彩!

同类推荐

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。