Perfect world 1.4.6 Register problem

Results 1 to 23 of 23
  1. #1
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Post Perfect world 1.4.6 Register problem

    i have getting other register script problem i am using server files from here http://forum.ragezone.com/f751/perfe...se-1-a-937872/

    and i used the register script from here http://forum.ragezone.com/f694/new-e...script-792042/

    when i login to game i get this
    Code:
    TRACE : KeepAlive sid=8TRACE : gdelivery::matrixpasswd query, user=redlist1
    GQueryPasswd:account is redlist1 , login ip is 192.168.1.2
    Bad Base64 input character at 0: 93(decimal)
    java.lang.NullPointerException
            at org.mono.Base64.decode(Base64.java:776)
            at org.mono.StorageEx.asBytes(StorageEx.java:871)
            at org.mono.StorageEx.acquireIdPasswd(StorageEx.java:338)
            at protocol.MatrixPasswd.Server(MatrixPasswd.java:65)
            at com.goldhuman.IO.Protocol.Rpc.Process(Unknown Source)
            at com.goldhuman.IO.Protocol.Task.run(Unknown Source)
            at com.goldhuman.Common.ThreadPool.run(Unknown Source)
            at java.lang.Thread.run(Thread.java:679)
    TRACE : matrixpasswd NOT usbbind user 0
    and the database screenshot
    untitled.png

    in the 1.4.5 server i was used both register script working good but in 1.4.6 not work

    can someone help me how to fix it thank you..


  2. #2
    Account Upgraded | Title Enabled! leonara is offline
    MemberRank
    Dec 2010 Join Date
    IndonesiaLocation
    540Posts

    Re: Perfect world 1.4.6 Register problem

    hm hmh hm .... use other script register .... and use .sql form v63 and work to v70

  3. #3
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    i have imported v63 database and register with the script getting this one

    Code:
    TRACE : GetServerData, world_tag=1 data_mask=2.TRACE : gdelivery::matrixpasswd query, user=redlist1
    GQueryPasswd:account is redlist1 , login ip is 192.168.1.2
    TRACE : matrixpasswd NOT usbbind user 1040

  4. #4
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    here the v70 db

    Code:
    CREATE DATABASE pw CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    use pw;
    
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    
    
    CREATE TABLE IF NOT EXISTS `auth` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) NOT NULL DEFAULT '0',
      `rid` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`userid`,`zoneid`,`rid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `forbid` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `type` int(11) NOT NULL DEFAULT '0',
      `ctime` datetime NOT NULL,
      `forbid_time` int(11) NOT NULL DEFAULT '0',
      `reason` blob NOT NULL,
      `gmroleid` int(11) DEFAULT '0',
      PRIMARY KEY (`userid`,`type`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `iplimit` (
      `uid` int(11) NOT NULL DEFAULT '0',
      `ipaddr1` int(11) DEFAULT '0',
      `ipmask1` varchar(2) DEFAULT '',
      `ipaddr2` int(11) DEFAULT '0',
      `ipmask2` varchar(2) DEFAULT '',
      `ipaddr3` int(11) DEFAULT '0',
      `ipmask3` varchar(2) DEFAULT '',
      `enable` char(1) DEFAULT '',
      `lockstatus` char(1) DEFAULT '',
      PRIMARY KEY (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `point` (
      `uid` int(11) NOT NULL DEFAULT '0',
      `aid` int(11) NOT NULL DEFAULT '0',
      `time` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) DEFAULT '0',
      `zonelocalid` int(11) DEFAULT '0',
      `accountstart` datetime DEFAULT NULL,
      `lastlogin` datetime DEFAULT NULL,
      `enddate` datetime DEFAULT NULL,
      PRIMARY KEY (`uid`,`aid`),
      KEY `IX_point_aidzoneid` (`aid`,`zoneid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `usecashlog` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) NOT NULL DEFAULT '0',
      `sn` int(11) NOT NULL DEFAULT '0',
      `aid` int(11) NOT NULL DEFAULT '0',
      `point` int(11) NOT NULL DEFAULT '0',
      `cash` int(11) NOT NULL DEFAULT '0',
      `status` int(11) NOT NULL DEFAULT '0',
      `creatime` datetime NOT NULL,
      `fintime` datetime NOT NULL,
      KEY `IX_usecashlog_creatime` (`creatime`),
      KEY `IX_usecashlog_uzs` (`userid`,`zoneid`,`sn`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `usecashnow` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) NOT NULL DEFAULT '0',
      `sn` int(11) NOT NULL DEFAULT '0',
      `aid` int(11) NOT NULL DEFAULT '0',
      `point` int(11) NOT NULL DEFAULT '0',
      `cash` int(11) NOT NULL DEFAULT '0',
      `status` int(11) NOT NULL DEFAULT '0',
      `creatime` datetime NOT NULL,
      PRIMARY KEY (`userid`,`zoneid`,`sn`),
      KEY `IX_usecashnow_creatime` (`creatime`),
      KEY `IX_usecashnow_status` (`status`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `users` (
      `ID` int(11) NOT NULL DEFAULT '0',
      `name` varchar(32) NOT NULL DEFAULT '',
      `passwd` varchar(64) NOT NULL,
      `Prompt` varchar(32) NOT NULL DEFAULT '',
      `answer` varchar(32) NOT NULL DEFAULT '',
      `truename` varchar(32) NOT NULL DEFAULT '',
      `idnumber` varchar(32) NOT NULL DEFAULT '',
      `email` varchar(64) NOT NULL DEFAULT '',
      `mobilenumber` varchar(32) DEFAULT '',
      `province` varchar(32) DEFAULT '',
      `city` varchar(32) DEFAULT '',
      `phonenumber` varchar(32) DEFAULT '',
      `address` varchar(64) DEFAULT '',
      `postalcode` varchar(8) DEFAULT '',
      `gender` int(11) DEFAULT '0',
      `birthday` datetime DEFAULT NULL,
      `creatime` datetime NOT NULL,
      `qq` varchar(32) DEFAULT '',
      `passwd2` varchar(64) DEFAULT NULL,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `IX_users_name` (`name`),
      KEY `IX_users_creatime` (`creatime`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    DELIMITER $$
    CREATE PROCEDURE `acquireuserpasswd`(in name1 VARCHAR(64), out uid1 INTEGER, out passwd1 VARCHAR(64))
    BEGIN
        SELECT id, passwd INTO uid1, passwd1 FROM users WHERE name = name1;
    END$$
    
    
    CREATE PROCEDURE `addForbid`(in userid1 INTEGER, in type1 INTEGER, in forbid_time1 INTEGER, in reason1 BINARY(255), in gmroleid1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE forbid SET ctime = now(), forbid_time = forbid_time1, reason = reason1, gmroleid = gmroleid1 WHERE userid = userid1 AND type = type1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO forbid VALUES(userid1, type1, now(), forbid_time1, reason1, gmroleid);
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `addGM`(in userid INTEGER, in zoneid INTEGER)
    BEGIN
      DECLARE x INTEGER;
      START TRANSACTION;
        SET x = 0;
        WHILE x < 12 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 100;
        WHILE x < 106 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 200;
        WHILE x < 215 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 500;
        WHILE x < 519 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `adduser`(
      in name1 VARCHAR(64),
      in passwd1 VARCHAR(64),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(64),
      in postalcode1 VARCHAR(8),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32),
      in passwd21 VARCHAR(64)
    )
    BEGIN
      DECLARE idtemp INTEGER;
        SELECT IFNULL(MAX(id), 1008) + 16 INTO idtemp FROM users;
        INSERT INTO users (id,name,passwd,prompt,answer,truename,idnumber,email,mobilenumber,province,city,phonenumber,address,postalcode,gender,birthday,creatime,qq,passwd2) VALUES( idtemp, name1, passwd1, prompt1, answer1, truename1, idnumber1, email1, mobilenumber1, province1, city1, phonenumber1, address1, postalcode1, gender1, birthday1, now(), qq1, passwd21 );
    END$$
    
    
    CREATE PROCEDURE `adduserpoint`(in uid1 INTEGER, in aid1 INTEGER, in time1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
     START TRANSACTION;
        UPDATE point SET time = IFNULL(time,0) + time1 WHERE uid1 = uid AND aid1 = aid;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO point (uid,aid,time) VALUES (uid1,aid1,time1);
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `addUserPriv`(in userid INTEGER, in zoneid INTEGER, in rid INTEGER)
    BEGIN
      START TRANSACTION;
        INSERT INTO auth VALUES(userid, zoneid, rid);
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `changePasswd`(in name1 VARCHAR(64), in passwd1 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd = passwd1 WHERE name = name1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `changePasswd2`(in name1 VARCHAR(64), in passwd21 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd2 = passwd21 WHERE name = name1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `clearonlinerecords`(in zoneid1 INTEGER, in aid1 INTEGER)
    BEGIN
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE aid = aid1 AND zoneid = zoneid1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `deleteTimeoutForbid`(in userid1 INTEGER)
    BEGIN
      START TRANSACTION;
        DELETE FROM forbid WHERE userid = userid1 AND timestampdiff(second, ctime, now()) > forbid_time;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `delUserPriv`(in userid1 INTEGER, in zoneid1 INTEGER, in rid1 INTEGER, in deltype1 INTEGER)
    BEGIN
    START TRANSACTION;
      IF deltype1 = 0 THEN
        DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1 AND rid = rid1;
      ELSE
        IF deltype1 = 1 THEN
          DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1;
        ELSE
          IF deltype1 = 2 THEN
            DELETE FROM auth WHERE userid = userid1;
          END IF;
        END IF;
      END IF;
    COMMIT;
    END$$
    
    
    CREATE PROCEDURE `enableiplimit`(in uid1 INTEGER, in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET enable=enable1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,enable) VALUES (uid1,enable1);
      END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `lockuser`(in uid1 INTEGER, in lockstatus1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET lockstatus=lockstatus1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,lockstatus,enable) VALUES (uid1,lockstatus1,'t');
      END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `recordoffline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite1 INTEGER)
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE uid = uid1 AND aid = aid1 AND zoneid = zoneid1;
        SET rowcount = ROW_COUNT();
        IF overwrite1 = rowcount THEN
          SELECT zoneid, zonelocalid INTO zoneid1, zonelocalid1 FROM point WHERE uid = uid1 AND aid = aid1;
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `recordonline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite INTEGER)
    BEGIN
      DECLARE tmp_zoneid INTEGER;
      DECLARE tmp_zonelocalid INTEGER;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        SELECT SQL_CALC_FOUND_ROWS zoneid, zonelocalid INTO tmp_zoneid, tmp_zonelocalid FROM point WHERE uid = uid1 and aid = aid1;
        SET rowcount = FOUND_ROWS();
        IF rowcount = 0 THEN
          INSERT INTO point (uid, aid, time, zoneid, zonelocalid, lastlogin) VALUES (uid1, aid1, 0, zoneid1, zonelocalid1, now());
        ELSE IF tmp_zoneid IS NULL OR overwrite = 1 THEN
          UPDATE point SET zoneid = zoneid1, zonelocalid = zonelocalid1, lastlogin = now() WHERE uid = uid1 AND aid = aid1;
        END IF;
        END IF;
        IF tmp_zoneid IS NULL THEN
          SET overwrite = 1;
        ELSE
          SET zoneid1 = tmp_zoneid;
          SET zonelocalid1 = tmp_zonelocalid;
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `remaintime`(in uid1 INTEGER, in aid1 INTEGER, out remain INTEGER, out freetimeleft INTEGER)
    BEGIN
      DECLARE enddate1 DATETIME;
      DECLARE now1 DATETIME;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      SET now1 = now();
      IF aid1 = 0 THEN
        SET remain = 86313600;
        SET enddate1 = date_add(now1, INTERVAL '30' DAY);
      ELSE
        SELECT time, IFNULL(enddate, now1) INTO remain, enddate1 FROM point WHERE uid = uid1 AND aid = aid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          SET remain = 0;
          INSERT INTO point (uid,aid,time) VALUES (uid1, aid1, remain);
        END IF;
      END IF;
      SET freetimeleft = 0;
      IF enddate1 > now1 THEN
        SET freetimeleft = timestampdiff(second, now1, enddate1);
      END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `setiplimit`(in uid1 INTEGER, in ipaddr11 INTEGER, in ipmask11 VARCHAR(2), in ipaddr21 INTEGER, in ipmask21 VARCHAR(2), in ipaddr31 INTEGER, in ipmask31 VARCHAR(2), in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE iplimit SET ipaddr1 = ipaddr11, ipmask1 = ipmask11, ipaddr2 = ipaddr21, ipmask2 = ipmask21, ipaddr3 = ipaddr31, ipmask3 = ipmask31 WHERE uid = uid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO iplimit (uid, ipaddr1, ipmask1, ipaddr2, ipmask2, ipaddr3, ipmask3, enable1) VALUES (uid1, ipaddr11, ipmask11, ipaddr21, ipmask21, ipaddr31, ipmask31,'t');
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `updateUserInfo`(
      in name1 VARCHAR(32),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(32),
      in postalcode1 VARCHAR(32),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32)
     )
    BEGIN
      START TRANSACTION;
        UPDATE users SET prompt = prompt1, answer = answer1, truename = truename1, idnumber = idnumber1, email = email1, mobilenumber = mobilenumber1, province = province1, city = city1, phonenumber = phonenumber1, address = address1, postalcode = postalcode1, gender = gender1, birthday = birthda1, qq = qq1 WHERE name = name1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `usecash`(
      in userid1 INTEGER,
      in zoneid1 INTEGER,
      in sn1 INTEGER,
      in aid1 INTEGER,
      in point1 INTEGER,
      in cash1 INTEGER,
      in status1 INTEGER,
      out error INTEGER
    )
    BEGIN
    DECLARE sn_old INTEGER;
    DECLARE aid_old INTEGER;
    DECLARE point_old INTEGER;
    DECLARE cash_old INTEGER;
    DECLARE status_old INTEGER;
    DECLARE createtime_old DATETIME;
    DECLARE time_old INTEGER;
    DECLARE need_restore INTEGER;
    DECLARE exists1 INTEGER;
    DECLARE rowcount INTEGER;
    START TRANSACTION;
      SET error = 0;
      SET need_restore = 0;
      SELECT SQL_CALC_FOUND_ROWS sn, aid, point, cash, status, creatime INTO sn_old, aid_old, point_old, cash_old, status_old, createtime_old FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn >= 0;
      SET rowcount = FOUND_ROWS();
      IF rowcount = 1 THEN
        SET exists1 = 1;
      ELSE
        SET exists1 = 0;
      END IF;
      IF status1 = 0 THEN
        IF exists1 = 0 THEN
          SELECT aid, point INTO aid1, point1 FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          SET point1 = IFNULL(point1,0);
          UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
          SET rowcount = ROW_COUNT();
          IF rowcount = 1 THEN
            UPDATE usecashnow SET sn = 0, status = 1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          ELSE
            SET error = -8;
          END IF;
        END IF;
      ELSE
        IF status1 = 1 THEN
          IF exists1 = 0 THEN
            UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
            SET rowcount = ROW_COUNT();
            IF rowcount = 1 THEN
              INSERT INTO usecashnow (userid, zoneid, sn, aid, point, cash, status, creatime) VALUES (userid1, zoneid1, sn1, aid1, point1, cash1, status1, now());
            ELSE
              INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
              SET error = -8;
            END IF;
          ELSE
            INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
            SET error = -7;
          END IF;
        ELSE
          IF status1 = 2 THEN
            IF exists1 = 1 AND status_old = 1 AND sn_old = 0 THEN
              UPDATE usecashnow SET sn = sn1, status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
            ELSE
              SET error = -9;
            END IF;
          ELSE
            IF status1 = 3 THEN
               IF exists1 = 1 AND status_old = 2 THEN
                UPDATE usecashnow SET status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
               ELSE
                SET error = -10;
                END IF;
            ELSE
             IF status1 = 4 THEN
              IF exists1 = 1 THEN
                DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
                INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
              END IF;
              IF NOT (exists1 = 1 AND status_old = 3) THEN
                SET error = -11;
              END IF;
            ELSE
              SET error = -12;
            END IF;
          END IF;
        END IF;
      END IF;
      END IF;
      IF need_restore = 1 THEN
        UPDATE point SET time = time+point_old WHERE uid = userid1 AND aid = aid_old;
        DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
        INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
      END IF;
    COMMIT;
    END$$
    
    
    DELIMITER ;
    and here v63 db
    Code:
    SET NAMES utf8;SET foreign_key_checks = 0;
    SET time_zone = 'SYSTEM';
    SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
    
    
    DROP DATABASE IF EXISTS `pw`;
    CREATE DATABASE `pw` /*!40100 DEFAULT CHARACTER SET latin1 */;
    USE `pw`;
    
    
    DELIMITER ;;
    
    
    CREATE DEFINER=`root`@`localhost` FUNCTION `fn_varbintohexsubstring`(fsetprefix bit,pbinin varbinary(8000),startoffset int,cbytesin int) RETURNS varchar(4000) CHARSET latin1
        READS SQL DATA
    BEGIN
      DECLARE pstrout VARCHAR(4000);
      DECLARE i int;
      DECLARE firstnibble int;
      DECLARE secondnibble int;
      DECLARE tempint int;
      DECLARE hexstring char( 16);
      BEGIN
        IF( pbinin IS NOT NULL) THEN
          SET i= 0, cbytesin= CASE WHEN( cbytesin> 0) THEN cbytesin ELSE LENGTH( pbinin) END,
             pstrout= CASE WHEN( fsetprefix= 1) THEN '0x'  ELSE ''  END,
             hexstring= '0123456789abcdef';
          IF((( cbytesin * 2) + 2> 4000) or( startoffset< 1)) THEN
            RETURN NULL;
          END IF;
          WHILE( i< cbytesin) DO
            SET tempint= ASCII( substring( pbinin, i + startoffset, 1));
            SET firstnibble= TRUNCATE((tempint / 16),0);
            SET secondnibble= tempint % 16;
            SET pstrout= CONCAT(pstrout ,cast( substring( hexstring,( firstnibble+1), 1) AS CHAR), cast( substring( hexstring,( secondnibble+1), 1) AS CHAR));
            SET i= i + 1;
          END WHILE;
          RETURN pstrout;
        END IF;
        RETURN NULL;
      END;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `acquireuserpasswd`(in name1 VARCHAR(64), out uid1 INTEGER, out passwd1 VARCHAR(64))
    BEGIN
      DECLARE passwdtemp VARCHAR(64);
      START TRANSACTION;
        SELECT id, passwd INTO uid1, passwdtemp FROM users WHERE name = name1;
        SELECT fn_varbintohexsubstring(1,passwdtemp,1,0) INTO passwd1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `addForbid`(in userid1 INTEGER, in type1 INTEGER, in forbid_time1 INTEGER, in reason1 BINARY(255), in gmroleid1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE forbid SET ctime = now(), forbid_time = forbid_time1, reason = reason1, gmroleid = gmroleid1 WHERE userid = userid1 AND type = type1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO forbid VALUES(userid1, type1, now(), forbid_time1, reason1, gmroleid);
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `addGM`(in userid INTEGER, in zoneid INTEGER)
    BEGIN
      DECLARE x INTEGER;
      START TRANSACTION;
        SET x = 0;
        WHILE x < 12 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 100;
        WHILE x < 106 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 200;
        WHILE x < 215 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 500;
        WHILE x < 519 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `adduser`(
      in name1 VARCHAR(64),
      in passwd1 VARCHAR(64),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(64),
      in postalcode1 VARCHAR(8),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32),
      in passwd21 VARCHAR(64)
    )
    BEGIN
      DECLARE idtemp INTEGER;
        SELECT IFNULL(MAX(id), 1008) + 16 INTO idtemp FROM users;
        INSERT INTO users (id,name,passwd,prompt,answer,truename,idnumber,email,mobilenumber,province,city,phonenumber,address,postalcode,gender,birthday,creatime,qq,passwd2) VALUES( idtemp, name1, passwd1, prompt1, answer1, truename1, idnumber1, email1, mobilenumber1, province1, city1, phonenumber1, address1, postalcode1, gender1, birthday1, now(), qq1, passwd21 );
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `adduserpoint`(in uid1 INTEGER, in aid1 INTEGER, in time1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
     START TRANSACTION;
        UPDATE point SET time = IFNULL(time,0) + time1 WHERE uid1 = uid AND aid1 = aid;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO point (uid,aid,time) VALUES (uid1,aid1,time1);
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `addUserPriv`(in userid INTEGER, in zoneid INTEGER, in rid INTEGER)
    BEGIN
      START TRANSACTION;
        INSERT INTO auth VALUES(userid, zoneid, rid);
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `changePasswd`(in name1 VARCHAR(64), in passwd1 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd = passwd1 WHERE name = name1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `changePasswd2`(in name1 VARCHAR(64), in passwd21 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd2 = passwd21 WHERE name = name1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `clearonlinerecords`(in zoneid1 INTEGER, in aid1 INTEGER)
    BEGIN
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE aid = aid1 AND zoneid = zoneid1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `deleteTimeoutForbid`(in userid1 INTEGER)
    BEGIN
      START TRANSACTION;
        DELETE FROM forbid WHERE userid = userid1 AND timestampdiff(second, ctime, now()) > forbid_time;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `delUserPriv`(in userid1 INTEGER, in zoneid1 INTEGER, in rid1 INTEGER, in deltype1 INTEGER)
    BEGIN
    START TRANSACTION;
      IF deltype1 = 0 THEN
        DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1 AND rid = rid1;
      ELSE
        IF deltype1 = 1 THEN
          DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1;
        ELSE
          IF deltype1 = 2 THEN
            DELETE FROM auth WHERE userid = userid1;
          END IF;
        END IF;
      END IF;
    COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `enableiplimit`(in uid1 INTEGER, in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET enable=enable1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,enable) VALUES (uid1,enable1);
      END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `lockuser`(in uid1 INTEGER, in lockstatus1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET lockstatus=lockstatus1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,lockstatus,enable) VALUES (uid1,lockstatus1,'t');
      END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `recordoffline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite1 INTEGER)
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE uid = uid1 AND aid = aid1 AND zoneid = zoneid1;
        SET rowcount = ROW_COUNT();
        IF overwrite1 = rowcount THEN
          SELECT zoneid, zonelocalid INTO zoneid1, zonelocalid1 FROM point WHERE uid = uid1 AND aid = aid1;
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `recordonline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite INTEGER)
    BEGIN
      DECLARE tmp_zoneid INTEGER;
      DECLARE tmp_zonelocalid INTEGER;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        SELECT SQL_CALC_FOUND_ROWS zoneid, zonelocalid INTO tmp_zoneid, tmp_zonelocalid FROM point WHERE uid = uid1 and aid = aid1;
        SET rowcount = FOUND_ROWS();
        IF rowcount = 0 THEN
          INSERT INTO point (uid, aid, time, zoneid, zonelocalid, lastlogin) VALUES (uid1, aid1, 0, zoneid1, zonelocalid1, now());
        ELSE IF tmp_zoneid IS NULL OR overwrite = 1 THEN
          UPDATE point SET zoneid = zoneid1, zonelocalid = zonelocalid1, lastlogin = now() WHERE uid = uid1 AND aid = aid1;
        END IF;
        END IF;
        IF tmp_zoneid IS NULL THEN
          SET overwrite = 1;
        ELSE
          SET zoneid1 = tmp_zoneid;
          SET zonelocalid1 = tmp_zonelocalid;
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `remaintime`(in uid1 INTEGER, in aid1 INTEGER, out remain INTEGER, out freetimeleft INTEGER)
    BEGIN
      DECLARE enddate1 DATETIME;
      DECLARE now1 DATETIME;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      SET now1 = now();
      IF aid1 = 0 THEN
        SET remain = 86313600;
        SET enddate1 = date_add(now1, INTERVAL '30' DAY);
      ELSE
        SELECT time, IFNULL(enddate, now1) INTO remain, enddate1 FROM point WHERE uid = uid1 AND aid = aid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          SET remain = 0;
          INSERT INTO point (uid,aid,time) VALUES (uid1, aid1, remain);
        END IF;
      END IF;
      SET freetimeleft = 0;
      IF enddate1 > now1 THEN
        SET freetimeleft = timestampdiff(second, now1, enddate1);
      END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `setiplimit`(in uid1 INTEGER, in ipaddr11 INTEGER, in ipmask11 VARCHAR(2), in ipaddr21 INTEGER, in ipmask21 VARCHAR(2), in ipaddr31 INTEGER, in ipmask31 VARCHAR(2), in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE iplimit SET ipaddr1 = ipaddr11, ipmask1 = ipmask11, ipaddr2 = ipaddr21, ipmask2 = ipmask21, ipaddr3 = ipaddr31, ipmask3 = ipmask31 WHERE uid = uid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO iplimit (uid, ipaddr1, ipmask1, ipaddr2, ipmask2, ipaddr3, ipmask3, enable1) VALUES (uid1, ipaddr11, ipmask11, ipaddr21, ipmask21, ipaddr31, ipmask31,'t');
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `updateUserInfo`(
      in name1 VARCHAR(32),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(32),
      in postalcode1 VARCHAR(32),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32)
     )
    BEGIN
      START TRANSACTION;
        UPDATE users SET prompt = prompt1, answer = answer1, truename = truename1, idnumber = idnumber1, email = email1, mobilenumber = mobilenumber1, province = province1, city = city1, phonenumber = phonenumber1, address = address1, postalcode = postalcode1, gender = gender1, birthday = birthda1, qq = qq1 WHERE name = name1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `usecash`(
      in userid1 INTEGER,
      in zoneid1 INTEGER,
      in sn1 INTEGER,
      in aid1 INTEGER,
      in point1 INTEGER,
      in cash1 INTEGER,
      in status1 INTEGER,
      out error INTEGER
    )
    BEGIN
    DECLARE sn_old INTEGER;
    DECLARE aid_old INTEGER;
    DECLARE point_old INTEGER;
    DECLARE cash_old INTEGER;
    DECLARE status_old INTEGER;
    DECLARE createtime_old DATETIME;
    DECLARE time_old INTEGER;
    DECLARE need_restore INTEGER;
    DECLARE exists1 INTEGER;
    DECLARE rowcount INTEGER;
    START TRANSACTION;
      SET error = 0;
      SET need_restore = 0;
      SELECT SQL_CALC_FOUND_ROWS sn, aid, point, cash, status, creatime INTO sn_old, aid_old, point_old, cash_old, status_old, createtime_old FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn >= 0;
      SET rowcount = FOUND_ROWS();
      IF rowcount = 1 THEN
        SET exists1 = 1;
      ELSE
        SET exists1 = 0;
      END IF;
      IF status1 = 0 THEN
        IF exists1 = 0 THEN
          SELECT aid, point INTO aid1, point1 FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          SET point1 = IFNULL(point1,0);
          UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
          SET rowcount = ROW_COUNT();
          IF rowcount = 1 THEN
            UPDATE usecashnow SET sn = 0, status = 1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          ELSE
            SET error = -8;
          END IF;
        END IF;
      ELSE
        IF status1 = 1 THEN
          IF exists1 = 0 THEN
            UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
            SET rowcount = ROW_COUNT();
            IF rowcount = 1 THEN
              INSERT INTO usecashnow (userid, zoneid, sn, aid, point, cash, status, creatime) VALUES (userid1, zoneid1, sn1, aid1, point1, cash1, status1, now());
            ELSE
              INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
              SET error = -8;
            END IF;
          ELSE
            INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
            SET error = -7;
          END IF;
        ELSE
          IF status1 = 2 THEN
            IF exists1 = 1 AND status_old = 1 AND sn_old = 0 THEN
              UPDATE usecashnow SET sn = sn1, status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
            ELSE
              SET error = -9;
            END IF;
          ELSE
            IF status1 = 3 THEN
               IF exists1 = 1 AND status_old = 2 THEN
                UPDATE usecashnow SET status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
               ELSE
                SET error = -10;
                END IF;
            ELSE
             IF status1 = 4 THEN
              IF exists1 = 1 THEN
                DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
                INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
              END IF;
              IF NOT (exists1 = 1 AND status_old = 3) THEN
                SET error = -11;
              END IF;
            ELSE
              SET error = -12;
            END IF;
          END IF;
        END IF;
      END IF;
      END IF;
      IF need_restore = 1 THEN
        UPDATE point SET time = time+point_old WHERE uid = userid1 AND aid = aid_old;
        DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
        INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
      END IF;
    COMMIT;
    END;;
    
    
    DELIMITER ;
    
    
    CREATE TABLE `auth` (
      `userid` int(11) NOT NULL default '0',
      `zoneid` int(11) NOT NULL default '0',
      `rid` int(11) NOT NULL default '0',
      PRIMARY KEY  (`userid`,`zoneid`,`rid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `forbid` (
      `userid` int(11) NOT NULL default '0',
      `type` int(11) NOT NULL default '0',
      `ctime` datetime NOT NULL,
      `forbid_time` int(11) NOT NULL default '0',
      `reason` blob NOT NULL,
      `gmroleid` int(11) default '0',
      PRIMARY KEY  (`userid`,`type`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `iplimit` (
      `uid` int(11) NOT NULL default '0',
      `ipaddr1` int(11) default '0',
      `ipmask1` varchar(2) default '',
      `ipaddr2` int(11) default '0',
      `ipmask2` varchar(2) default '',
      `ipaddr3` int(11) default '0',
      `ipmask3` varchar(2) default '',
      `enable` char(1) default '',
      `lockstatus` char(1) default '',
      PRIMARY KEY  (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `point` (
      `uid` int(11) NOT NULL default '0',
      `aid` int(11) NOT NULL default '0',
      `time` int(11) NOT NULL default '0',
      `zoneid` int(11) default '0',
      `zonelocalid` int(11) default '0',
      `accountstart` datetime default NULL,
      `lastlogin` datetime default NULL,
      `enddate` datetime default NULL,
      PRIMARY KEY  (`uid`,`aid`),
      KEY `IX_point_aidzoneid` (`aid`,`zoneid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `roles` (
      `account_id` int(11) NOT NULL,
      `role_id` int(11) NOT NULL,
      `role_name` varchar(32) NOT NULL,
      `role_level` smallint(6) NOT NULL,
      `role_race` tinyint(4) NOT NULL,
      `role_occupation` tinyint(4) NOT NULL,
      `role_gender` tinyint(4) NOT NULL,
      `role_spouse` int(11) NOT NULL,
      `faction_id` int(11) NOT NULL,
      `faction_name` varchar(32) NOT NULL,
      `faction_level` int(11) NOT NULL,
      `faction_domains` varchar(132) NOT NULL,
      `role_faction_rank` int(11) NOT NULL,
      `pvp_time` int(11) NOT NULL,
      `pvp_kills` int(11) NOT NULL,
      `pvp_deads` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `usecashlog` (
      `userid` int(11) NOT NULL default '0',
      `zoneid` int(11) NOT NULL default '0',
      `sn` int(11) NOT NULL default '0',
      `aid` int(11) NOT NULL default '0',
      `point` int(11) NOT NULL default '0',
      `cash` int(11) NOT NULL default '0',
      `status` int(11) NOT NULL default '0',
      `creatime` datetime NOT NULL,
      `fintime` datetime NOT NULL,
      KEY `IX_usecashlog_creatime` (`creatime`),
      KEY `IX_usecashlog_uzs` (`userid`,`zoneid`,`sn`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `usecashnow` (
      `userid` int(11) NOT NULL default '0',
      `zoneid` int(11) NOT NULL default '0',
      `sn` int(11) NOT NULL default '0',
      `aid` int(11) NOT NULL default '0',
      `point` int(11) NOT NULL default '0',
      `cash` int(11) NOT NULL default '0',
      `status` int(11) NOT NULL default '0',
      `creatime` datetime NOT NULL,
      PRIMARY KEY  (`userid`,`zoneid`,`sn`),
      KEY `IX_usecashnow_creatime` (`creatime`),
      KEY `IX_usecashnow_status` (`status`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `users` (
      `ID` int(11) NOT NULL default '0',
      `name` varchar(32) NOT NULL default '',
      `passwd` varchar(64) NOT NULL,
      `Prompt` varchar(32) NOT NULL default '',
      `answer` varchar(32) NOT NULL default '',
      `truename` varchar(32) NOT NULL default '',
      `idnumber` varchar(32) NOT NULL default '',
      `email` varchar(64) NOT NULL default '',
      `mobilenumber` varchar(32) default '',
      `province` varchar(32) default '',
      `city` varchar(32) default '',
      `phonenumber` varchar(32) default '',
      `address` varchar(64) default '',
      `postalcode` varchar(8) default '',
      `gender` int(11) default '0',
      `birthday` datetime default NULL,
      `creatime` datetime NOT NULL,
      `qq` varchar(32) default '',
      `passwd2` varchar(64) default NULL,
      PRIMARY KEY  (`ID`),
      UNIQUE KEY `IX_users_name` (`name`),
      KEY `IX_users_creatime` (`creatime`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  5. #5
    Member Sebastain007 is offline
    MemberRank
    Mar 2011 Join Date
    at homeLocation
    73Posts

    Re: Perfect world 1.4.6 Register problem

    Quote Originally Posted by rnsalt4 View Post
    here the v70 db

    Code:
    CREATE DATABASE pw CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    use pw;
    
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    
    
    CREATE TABLE IF NOT EXISTS `auth` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) NOT NULL DEFAULT '0',
      `rid` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`userid`,`zoneid`,`rid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `forbid` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `type` int(11) NOT NULL DEFAULT '0',
      `ctime` datetime NOT NULL,
      `forbid_time` int(11) NOT NULL DEFAULT '0',
      `reason` blob NOT NULL,
      `gmroleid` int(11) DEFAULT '0',
      PRIMARY KEY (`userid`,`type`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `iplimit` (
      `uid` int(11) NOT NULL DEFAULT '0',
      `ipaddr1` int(11) DEFAULT '0',
      `ipmask1` varchar(2) DEFAULT '',
      `ipaddr2` int(11) DEFAULT '0',
      `ipmask2` varchar(2) DEFAULT '',
      `ipaddr3` int(11) DEFAULT '0',
      `ipmask3` varchar(2) DEFAULT '',
      `enable` char(1) DEFAULT '',
      `lockstatus` char(1) DEFAULT '',
      PRIMARY KEY (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `point` (
      `uid` int(11) NOT NULL DEFAULT '0',
      `aid` int(11) NOT NULL DEFAULT '0',
      `time` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) DEFAULT '0',
      `zonelocalid` int(11) DEFAULT '0',
      `accountstart` datetime DEFAULT NULL,
      `lastlogin` datetime DEFAULT NULL,
      `enddate` datetime DEFAULT NULL,
      PRIMARY KEY (`uid`,`aid`),
      KEY `IX_point_aidzoneid` (`aid`,`zoneid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `usecashlog` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) NOT NULL DEFAULT '0',
      `sn` int(11) NOT NULL DEFAULT '0',
      `aid` int(11) NOT NULL DEFAULT '0',
      `point` int(11) NOT NULL DEFAULT '0',
      `cash` int(11) NOT NULL DEFAULT '0',
      `status` int(11) NOT NULL DEFAULT '0',
      `creatime` datetime NOT NULL,
      `fintime` datetime NOT NULL,
      KEY `IX_usecashlog_creatime` (`creatime`),
      KEY `IX_usecashlog_uzs` (`userid`,`zoneid`,`sn`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `usecashnow` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `zoneid` int(11) NOT NULL DEFAULT '0',
      `sn` int(11) NOT NULL DEFAULT '0',
      `aid` int(11) NOT NULL DEFAULT '0',
      `point` int(11) NOT NULL DEFAULT '0',
      `cash` int(11) NOT NULL DEFAULT '0',
      `status` int(11) NOT NULL DEFAULT '0',
      `creatime` datetime NOT NULL,
      PRIMARY KEY (`userid`,`zoneid`,`sn`),
      KEY `IX_usecashnow_creatime` (`creatime`),
      KEY `IX_usecashnow_status` (`status`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE IF NOT EXISTS `users` (
      `ID` int(11) NOT NULL DEFAULT '0',
      `name` varchar(32) NOT NULL DEFAULT '',
      `passwd` varchar(64) NOT NULL,
      `Prompt` varchar(32) NOT NULL DEFAULT '',
      `answer` varchar(32) NOT NULL DEFAULT '',
      `truename` varchar(32) NOT NULL DEFAULT '',
      `idnumber` varchar(32) NOT NULL DEFAULT '',
      `email` varchar(64) NOT NULL DEFAULT '',
      `mobilenumber` varchar(32) DEFAULT '',
      `province` varchar(32) DEFAULT '',
      `city` varchar(32) DEFAULT '',
      `phonenumber` varchar(32) DEFAULT '',
      `address` varchar(64) DEFAULT '',
      `postalcode` varchar(8) DEFAULT '',
      `gender` int(11) DEFAULT '0',
      `birthday` datetime DEFAULT NULL,
      `creatime` datetime NOT NULL,
      `qq` varchar(32) DEFAULT '',
      `passwd2` varchar(64) DEFAULT NULL,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `IX_users_name` (`name`),
      KEY `IX_users_creatime` (`creatime`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    DELIMITER $$
    CREATE PROCEDURE `acquireuserpasswd`(in name1 VARCHAR(64), out uid1 INTEGER, out passwd1 VARCHAR(64))
    BEGIN
        SELECT id, passwd INTO uid1, passwd1 FROM users WHERE name = name1;
    END$$
    
    
    CREATE PROCEDURE `addForbid`(in userid1 INTEGER, in type1 INTEGER, in forbid_time1 INTEGER, in reason1 BINARY(255), in gmroleid1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE forbid SET ctime = now(), forbid_time = forbid_time1, reason = reason1, gmroleid = gmroleid1 WHERE userid = userid1 AND type = type1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO forbid VALUES(userid1, type1, now(), forbid_time1, reason1, gmroleid);
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `addGM`(in userid INTEGER, in zoneid INTEGER)
    BEGIN
      DECLARE x INTEGER;
      START TRANSACTION;
        SET x = 0;
        WHILE x < 12 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 100;
        WHILE x < 106 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 200;
        WHILE x < 215 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 500;
        WHILE x < 519 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `adduser`(
      in name1 VARCHAR(64),
      in passwd1 VARCHAR(64),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(64),
      in postalcode1 VARCHAR(8),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32),
      in passwd21 VARCHAR(64)
    )
    BEGIN
      DECLARE idtemp INTEGER;
        SELECT IFNULL(MAX(id), 1008) + 16 INTO idtemp FROM users;
        INSERT INTO users (id,name,passwd,prompt,answer,truename,idnumber,email,mobilenumber,province,city,phonenumber,address,postalcode,gender,birthday,creatime,qq,passwd2) VALUES( idtemp, name1, passwd1, prompt1, answer1, truename1, idnumber1, email1, mobilenumber1, province1, city1, phonenumber1, address1, postalcode1, gender1, birthday1, now(), qq1, passwd21 );
    END$$
    
    
    CREATE PROCEDURE `adduserpoint`(in uid1 INTEGER, in aid1 INTEGER, in time1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
     START TRANSACTION;
        UPDATE point SET time = IFNULL(time,0) + time1 WHERE uid1 = uid AND aid1 = aid;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO point (uid,aid,time) VALUES (uid1,aid1,time1);
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `addUserPriv`(in userid INTEGER, in zoneid INTEGER, in rid INTEGER)
    BEGIN
      START TRANSACTION;
        INSERT INTO auth VALUES(userid, zoneid, rid);
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `changePasswd`(in name1 VARCHAR(64), in passwd1 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd = passwd1 WHERE name = name1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `changePasswd2`(in name1 VARCHAR(64), in passwd21 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd2 = passwd21 WHERE name = name1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `clearonlinerecords`(in zoneid1 INTEGER, in aid1 INTEGER)
    BEGIN
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE aid = aid1 AND zoneid = zoneid1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `deleteTimeoutForbid`(in userid1 INTEGER)
    BEGIN
      START TRANSACTION;
        DELETE FROM forbid WHERE userid = userid1 AND timestampdiff(second, ctime, now()) > forbid_time;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `delUserPriv`(in userid1 INTEGER, in zoneid1 INTEGER, in rid1 INTEGER, in deltype1 INTEGER)
    BEGIN
    START TRANSACTION;
      IF deltype1 = 0 THEN
        DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1 AND rid = rid1;
      ELSE
        IF deltype1 = 1 THEN
          DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1;
        ELSE
          IF deltype1 = 2 THEN
            DELETE FROM auth WHERE userid = userid1;
          END IF;
        END IF;
      END IF;
    COMMIT;
    END$$
    
    
    CREATE PROCEDURE `enableiplimit`(in uid1 INTEGER, in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET enable=enable1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,enable) VALUES (uid1,enable1);
      END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `lockuser`(in uid1 INTEGER, in lockstatus1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET lockstatus=lockstatus1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,lockstatus,enable) VALUES (uid1,lockstatus1,'t');
      END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `recordoffline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite1 INTEGER)
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE uid = uid1 AND aid = aid1 AND zoneid = zoneid1;
        SET rowcount = ROW_COUNT();
        IF overwrite1 = rowcount THEN
          SELECT zoneid, zonelocalid INTO zoneid1, zonelocalid1 FROM point WHERE uid = uid1 AND aid = aid1;
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `recordonline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite INTEGER)
    BEGIN
      DECLARE tmp_zoneid INTEGER;
      DECLARE tmp_zonelocalid INTEGER;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        SELECT SQL_CALC_FOUND_ROWS zoneid, zonelocalid INTO tmp_zoneid, tmp_zonelocalid FROM point WHERE uid = uid1 and aid = aid1;
        SET rowcount = FOUND_ROWS();
        IF rowcount = 0 THEN
          INSERT INTO point (uid, aid, time, zoneid, zonelocalid, lastlogin) VALUES (uid1, aid1, 0, zoneid1, zonelocalid1, now());
        ELSE IF tmp_zoneid IS NULL OR overwrite = 1 THEN
          UPDATE point SET zoneid = zoneid1, zonelocalid = zonelocalid1, lastlogin = now() WHERE uid = uid1 AND aid = aid1;
        END IF;
        END IF;
        IF tmp_zoneid IS NULL THEN
          SET overwrite = 1;
        ELSE
          SET zoneid1 = tmp_zoneid;
          SET zonelocalid1 = tmp_zonelocalid;
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `remaintime`(in uid1 INTEGER, in aid1 INTEGER, out remain INTEGER, out freetimeleft INTEGER)
    BEGIN
      DECLARE enddate1 DATETIME;
      DECLARE now1 DATETIME;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      SET now1 = now();
      IF aid1 = 0 THEN
        SET remain = 86313600;
        SET enddate1 = date_add(now1, INTERVAL '30' DAY);
      ELSE
        SELECT time, IFNULL(enddate, now1) INTO remain, enddate1 FROM point WHERE uid = uid1 AND aid = aid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          SET remain = 0;
          INSERT INTO point (uid,aid,time) VALUES (uid1, aid1, remain);
        END IF;
      END IF;
      SET freetimeleft = 0;
      IF enddate1 > now1 THEN
        SET freetimeleft = timestampdiff(second, now1, enddate1);
      END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `setiplimit`(in uid1 INTEGER, in ipaddr11 INTEGER, in ipmask11 VARCHAR(2), in ipaddr21 INTEGER, in ipmask21 VARCHAR(2), in ipaddr31 INTEGER, in ipmask31 VARCHAR(2), in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE iplimit SET ipaddr1 = ipaddr11, ipmask1 = ipmask11, ipaddr2 = ipaddr21, ipmask2 = ipmask21, ipaddr3 = ipaddr31, ipmask3 = ipmask31 WHERE uid = uid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO iplimit (uid, ipaddr1, ipmask1, ipaddr2, ipmask2, ipaddr3, ipmask3, enable1) VALUES (uid1, ipaddr11, ipmask11, ipaddr21, ipmask21, ipaddr31, ipmask31,'t');
        END IF;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `updateUserInfo`(
      in name1 VARCHAR(32),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(32),
      in postalcode1 VARCHAR(32),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32)
     )
    BEGIN
      START TRANSACTION;
        UPDATE users SET prompt = prompt1, answer = answer1, truename = truename1, idnumber = idnumber1, email = email1, mobilenumber = mobilenumber1, province = province1, city = city1, phonenumber = phonenumber1, address = address1, postalcode = postalcode1, gender = gender1, birthday = birthda1, qq = qq1 WHERE name = name1;
      COMMIT;
    END$$
    
    
    CREATE PROCEDURE `usecash`(
      in userid1 INTEGER,
      in zoneid1 INTEGER,
      in sn1 INTEGER,
      in aid1 INTEGER,
      in point1 INTEGER,
      in cash1 INTEGER,
      in status1 INTEGER,
      out error INTEGER
    )
    BEGIN
    DECLARE sn_old INTEGER;
    DECLARE aid_old INTEGER;
    DECLARE point_old INTEGER;
    DECLARE cash_old INTEGER;
    DECLARE status_old INTEGER;
    DECLARE createtime_old DATETIME;
    DECLARE time_old INTEGER;
    DECLARE need_restore INTEGER;
    DECLARE exists1 INTEGER;
    DECLARE rowcount INTEGER;
    START TRANSACTION;
      SET error = 0;
      SET need_restore = 0;
      SELECT SQL_CALC_FOUND_ROWS sn, aid, point, cash, status, creatime INTO sn_old, aid_old, point_old, cash_old, status_old, createtime_old FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn >= 0;
      SET rowcount = FOUND_ROWS();
      IF rowcount = 1 THEN
        SET exists1 = 1;
      ELSE
        SET exists1 = 0;
      END IF;
      IF status1 = 0 THEN
        IF exists1 = 0 THEN
          SELECT aid, point INTO aid1, point1 FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          SET point1 = IFNULL(point1,0);
          UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
          SET rowcount = ROW_COUNT();
          IF rowcount = 1 THEN
            UPDATE usecashnow SET sn = 0, status = 1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          ELSE
            SET error = -8;
          END IF;
        END IF;
      ELSE
        IF status1 = 1 THEN
          IF exists1 = 0 THEN
            UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
            SET rowcount = ROW_COUNT();
            IF rowcount = 1 THEN
              INSERT INTO usecashnow (userid, zoneid, sn, aid, point, cash, status, creatime) VALUES (userid1, zoneid1, sn1, aid1, point1, cash1, status1, now());
            ELSE
              INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
              SET error = -8;
            END IF;
          ELSE
            INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
            SET error = -7;
          END IF;
        ELSE
          IF status1 = 2 THEN
            IF exists1 = 1 AND status_old = 1 AND sn_old = 0 THEN
              UPDATE usecashnow SET sn = sn1, status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
            ELSE
              SET error = -9;
            END IF;
          ELSE
            IF status1 = 3 THEN
               IF exists1 = 1 AND status_old = 2 THEN
                UPDATE usecashnow SET status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
               ELSE
                SET error = -10;
                END IF;
            ELSE
             IF status1 = 4 THEN
              IF exists1 = 1 THEN
                DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
                INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
              END IF;
              IF NOT (exists1 = 1 AND status_old = 3) THEN
                SET error = -11;
              END IF;
            ELSE
              SET error = -12;
            END IF;
          END IF;
        END IF;
      END IF;
      END IF;
      IF need_restore = 1 THEN
        UPDATE point SET time = time+point_old WHERE uid = userid1 AND aid = aid_old;
        DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
        INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
      END IF;
    COMMIT;
    END$$
    
    
    DELIMITER ;
    and here v63 db
    Code:
    SET NAMES utf8;SET foreign_key_checks = 0;
    SET time_zone = 'SYSTEM';
    SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
    
    
    DROP DATABASE IF EXISTS `pw`;
    CREATE DATABASE `pw` /*!40100 DEFAULT CHARACTER SET latin1 */;
    USE `pw`;
    
    
    DELIMITER ;;
    
    
    CREATE DEFINER=`root`@`localhost` FUNCTION `fn_varbintohexsubstring`(fsetprefix bit,pbinin varbinary(8000),startoffset int,cbytesin int) RETURNS varchar(4000) CHARSET latin1
        READS SQL DATA
    BEGIN
      DECLARE pstrout VARCHAR(4000);
      DECLARE i int;
      DECLARE firstnibble int;
      DECLARE secondnibble int;
      DECLARE tempint int;
      DECLARE hexstring char( 16);
      BEGIN
        IF( pbinin IS NOT NULL) THEN
          SET i= 0, cbytesin= CASE WHEN( cbytesin> 0) THEN cbytesin ELSE LENGTH( pbinin) END,
             pstrout= CASE WHEN( fsetprefix= 1) THEN '0x'  ELSE ''  END,
             hexstring= '0123456789abcdef';
          IF((( cbytesin * 2) + 2> 4000) or( startoffset< 1)) THEN
            RETURN NULL;
          END IF;
          WHILE( i< cbytesin) DO
            SET tempint= ASCII( substring( pbinin, i + startoffset, 1));
            SET firstnibble= TRUNCATE((tempint / 16),0);
            SET secondnibble= tempint % 16;
            SET pstrout= CONCAT(pstrout ,cast( substring( hexstring,( firstnibble+1), 1) AS CHAR), cast( substring( hexstring,( secondnibble+1), 1) AS CHAR));
            SET i= i + 1;
          END WHILE;
          RETURN pstrout;
        END IF;
        RETURN NULL;
      END;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `acquireuserpasswd`(in name1 VARCHAR(64), out uid1 INTEGER, out passwd1 VARCHAR(64))
    BEGIN
      DECLARE passwdtemp VARCHAR(64);
      START TRANSACTION;
        SELECT id, passwd INTO uid1, passwdtemp FROM users WHERE name = name1;
        SELECT fn_varbintohexsubstring(1,passwdtemp,1,0) INTO passwd1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `addForbid`(in userid1 INTEGER, in type1 INTEGER, in forbid_time1 INTEGER, in reason1 BINARY(255), in gmroleid1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE forbid SET ctime = now(), forbid_time = forbid_time1, reason = reason1, gmroleid = gmroleid1 WHERE userid = userid1 AND type = type1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO forbid VALUES(userid1, type1, now(), forbid_time1, reason1, gmroleid);
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `addGM`(in userid INTEGER, in zoneid INTEGER)
    BEGIN
      DECLARE x INTEGER;
      START TRANSACTION;
        SET x = 0;
        WHILE x < 12 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 100;
        WHILE x < 106 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 200;
        WHILE x < 215 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
        SET x = 500;
        WHILE x < 519 DO
          INSERT INTO auth VALUES (userid, zoneid, x);
          SET x = x + 1;
        END WHILE;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `adduser`(
      in name1 VARCHAR(64),
      in passwd1 VARCHAR(64),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(64),
      in postalcode1 VARCHAR(8),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32),
      in passwd21 VARCHAR(64)
    )
    BEGIN
      DECLARE idtemp INTEGER;
        SELECT IFNULL(MAX(id), 1008) + 16 INTO idtemp FROM users;
        INSERT INTO users (id,name,passwd,prompt,answer,truename,idnumber,email,mobilenumber,province,city,phonenumber,address,postalcode,gender,birthday,creatime,qq,passwd2) VALUES( idtemp, name1, passwd1, prompt1, answer1, truename1, idnumber1, email1, mobilenumber1, province1, city1, phonenumber1, address1, postalcode1, gender1, birthday1, now(), qq1, passwd21 );
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `adduserpoint`(in uid1 INTEGER, in aid1 INTEGER, in time1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
     START TRANSACTION;
        UPDATE point SET time = IFNULL(time,0) + time1 WHERE uid1 = uid AND aid1 = aid;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO point (uid,aid,time) VALUES (uid1,aid1,time1);
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `addUserPriv`(in userid INTEGER, in zoneid INTEGER, in rid INTEGER)
    BEGIN
      START TRANSACTION;
        INSERT INTO auth VALUES(userid, zoneid, rid);
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `changePasswd`(in name1 VARCHAR(64), in passwd1 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd = passwd1 WHERE name = name1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `changePasswd2`(in name1 VARCHAR(64), in passwd21 VARCHAR(64))
    BEGIN
      START TRANSACTION;
        UPDATE users SET passwd2 = passwd21 WHERE name = name1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `clearonlinerecords`(in zoneid1 INTEGER, in aid1 INTEGER)
    BEGIN
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE aid = aid1 AND zoneid = zoneid1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `deleteTimeoutForbid`(in userid1 INTEGER)
    BEGIN
      START TRANSACTION;
        DELETE FROM forbid WHERE userid = userid1 AND timestampdiff(second, ctime, now()) > forbid_time;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `delUserPriv`(in userid1 INTEGER, in zoneid1 INTEGER, in rid1 INTEGER, in deltype1 INTEGER)
    BEGIN
    START TRANSACTION;
      IF deltype1 = 0 THEN
        DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1 AND rid = rid1;
      ELSE
        IF deltype1 = 1 THEN
          DELETE FROM auth WHERE userid = userid1 AND zoneid = zoneid1;
        ELSE
          IF deltype1 = 2 THEN
            DELETE FROM auth WHERE userid = userid1;
          END IF;
        END IF;
      END IF;
    COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `enableiplimit`(in uid1 INTEGER, in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET enable=enable1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,enable) VALUES (uid1,enable1);
      END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `lockuser`(in uid1 INTEGER, in lockstatus1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      UPDATE iplimit SET lockstatus=lockstatus1 WHERE uid=uid1;
      SET rowcount = ROW_COUNT();
      IF rowcount = 0 THEN
        INSERT INTO iplimit (uid,lockstatus,enable) VALUES (uid1,lockstatus1,'t');
      END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `recordoffline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite1 INTEGER)
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE point SET zoneid = NULL, zonelocalid = NULL WHERE uid = uid1 AND aid = aid1 AND zoneid = zoneid1;
        SET rowcount = ROW_COUNT();
        IF overwrite1 = rowcount THEN
          SELECT zoneid, zonelocalid INTO zoneid1, zonelocalid1 FROM point WHERE uid = uid1 AND aid = aid1;
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `recordonline`(in uid1 INTEGER, in aid1 INTEGER, inout zoneid1 INTEGER, inout zonelocalid1 INTEGER, inout overwrite INTEGER)
    BEGIN
      DECLARE tmp_zoneid INTEGER;
      DECLARE tmp_zonelocalid INTEGER;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        SELECT SQL_CALC_FOUND_ROWS zoneid, zonelocalid INTO tmp_zoneid, tmp_zonelocalid FROM point WHERE uid = uid1 and aid = aid1;
        SET rowcount = FOUND_ROWS();
        IF rowcount = 0 THEN
          INSERT INTO point (uid, aid, time, zoneid, zonelocalid, lastlogin) VALUES (uid1, aid1, 0, zoneid1, zonelocalid1, now());
        ELSE IF tmp_zoneid IS NULL OR overwrite = 1 THEN
          UPDATE point SET zoneid = zoneid1, zonelocalid = zonelocalid1, lastlogin = now() WHERE uid = uid1 AND aid = aid1;
        END IF;
        END IF;
        IF tmp_zoneid IS NULL THEN
          SET overwrite = 1;
        ELSE
          SET zoneid1 = tmp_zoneid;
          SET zonelocalid1 = tmp_zonelocalid;
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `remaintime`(in uid1 INTEGER, in aid1 INTEGER, out remain INTEGER, out freetimeleft INTEGER)
    BEGIN
      DECLARE enddate1 DATETIME;
      DECLARE now1 DATETIME;
      DECLARE rowcount INTEGER;
      START TRANSACTION;
      SET now1 = now();
      IF aid1 = 0 THEN
        SET remain = 86313600;
        SET enddate1 = date_add(now1, INTERVAL '30' DAY);
      ELSE
        SELECT time, IFNULL(enddate, now1) INTO remain, enddate1 FROM point WHERE uid = uid1 AND aid = aid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          SET remain = 0;
          INSERT INTO point (uid,aid,time) VALUES (uid1, aid1, remain);
        END IF;
      END IF;
      SET freetimeleft = 0;
      IF enddate1 > now1 THEN
        SET freetimeleft = timestampdiff(second, now1, enddate1);
      END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `setiplimit`(in uid1 INTEGER, in ipaddr11 INTEGER, in ipmask11 VARCHAR(2), in ipaddr21 INTEGER, in ipmask21 VARCHAR(2), in ipaddr31 INTEGER, in ipmask31 VARCHAR(2), in enable1 CHAR(1))
    BEGIN
      DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE iplimit SET ipaddr1 = ipaddr11, ipmask1 = ipmask11, ipaddr2 = ipaddr21, ipmask2 = ipmask21, ipaddr3 = ipaddr31, ipmask3 = ipmask31 WHERE uid = uid1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO iplimit (uid, ipaddr1, ipmask1, ipaddr2, ipmask2, ipaddr3, ipmask3, enable1) VALUES (uid1, ipaddr11, ipmask11, ipaddr21, ipmask21, ipaddr31, ipmask31,'t');
        END IF;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `updateUserInfo`(
      in name1 VARCHAR(32),
      in prompt1 VARCHAR(32),
      in answer1 VARCHAR(32),
      in truename1 VARCHAR(32),
      in idnumber1 VARCHAR(32),
      in email1 VARCHAR(32),
      in mobilenumber1 VARCHAR(32),
      in province1 VARCHAR(32),
      in city1 VARCHAR(32),
      in phonenumber1 VARCHAR(32),
      in address1 VARCHAR(32),
      in postalcode1 VARCHAR(32),
      in gender1 INTEGER,
      in birthday1 VARCHAR(32),
      in qq1 VARCHAR(32)
     )
    BEGIN
      START TRANSACTION;
        UPDATE users SET prompt = prompt1, answer = answer1, truename = truename1, idnumber = idnumber1, email = email1, mobilenumber = mobilenumber1, province = province1, city = city1, phonenumber = phonenumber1, address = address1, postalcode = postalcode1, gender = gender1, birthday = birthda1, qq = qq1 WHERE name = name1;
      COMMIT;
    END;;
    
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `usecash`(
      in userid1 INTEGER,
      in zoneid1 INTEGER,
      in sn1 INTEGER,
      in aid1 INTEGER,
      in point1 INTEGER,
      in cash1 INTEGER,
      in status1 INTEGER,
      out error INTEGER
    )
    BEGIN
    DECLARE sn_old INTEGER;
    DECLARE aid_old INTEGER;
    DECLARE point_old INTEGER;
    DECLARE cash_old INTEGER;
    DECLARE status_old INTEGER;
    DECLARE createtime_old DATETIME;
    DECLARE time_old INTEGER;
    DECLARE need_restore INTEGER;
    DECLARE exists1 INTEGER;
    DECLARE rowcount INTEGER;
    START TRANSACTION;
      SET error = 0;
      SET need_restore = 0;
      SELECT SQL_CALC_FOUND_ROWS sn, aid, point, cash, status, creatime INTO sn_old, aid_old, point_old, cash_old, status_old, createtime_old FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn >= 0;
      SET rowcount = FOUND_ROWS();
      IF rowcount = 1 THEN
        SET exists1 = 1;
      ELSE
        SET exists1 = 0;
      END IF;
      IF status1 = 0 THEN
        IF exists1 = 0 THEN
          SELECT aid, point INTO aid1, point1 FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          SET point1 = IFNULL(point1,0);
          UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
          SET rowcount = ROW_COUNT();
          IF rowcount = 1 THEN
            UPDATE usecashnow SET sn = 0, status = 1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn1;
          ELSE
            SET error = -8;
          END IF;
        END IF;
      ELSE
        IF status1 = 1 THEN
          IF exists1 = 0 THEN
            UPDATE point SET time = time-point1 WHERE uid = userid1 AND aid = aid1 AND time >= point1;
            SET rowcount = ROW_COUNT();
            IF rowcount = 1 THEN
              INSERT INTO usecashnow (userid, zoneid, sn, aid, point, cash, status, creatime) VALUES (userid1, zoneid1, sn1, aid1, point1, cash1, status1, now());
            ELSE
              INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
              SET error = -8;
            END IF;
          ELSE
            INSERT INTO usecashnow SELECT userid1, zoneid1, IFNULL(min(sn),0)-1, aid1, point1, cash1, 0, now() FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND 0 >= sn;
            SET error = -7;
          END IF;
        ELSE
          IF status1 = 2 THEN
            IF exists1 = 1 AND status_old = 1 AND sn_old = 0 THEN
              UPDATE usecashnow SET sn = sn1, status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
            ELSE
              SET error = -9;
            END IF;
          ELSE
            IF status1 = 3 THEN
               IF exists1 = 1 AND status_old = 2 THEN
                UPDATE usecashnow SET status = status1 WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
               ELSE
                SET error = -10;
                END IF;
            ELSE
             IF status1 = 4 THEN
              IF exists1 = 1 THEN
                DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
                INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
              END IF;
              IF NOT (exists1 = 1 AND status_old = 3) THEN
                SET error = -11;
              END IF;
            ELSE
              SET error = -12;
            END IF;
          END IF;
        END IF;
      END IF;
      END IF;
      IF need_restore = 1 THEN
        UPDATE point SET time = time+point_old WHERE uid = userid1 AND aid = aid_old;
        DELETE FROM usecashnow WHERE userid = userid1 AND zoneid = zoneid1 AND sn = sn_old;
        INSERT INTO usecashlog (userid, zoneid, sn, aid, point, cash, status, creatime, fintime) VALUES (userid1, zoneid1, sn_old, aid_old, point_old, cash_old, status1, createtime_old, now());
      END IF;
    COMMIT;
    END;;
    
    
    DELIMITER ;
    
    
    CREATE TABLE `auth` (
      `userid` int(11) NOT NULL default '0',
      `zoneid` int(11) NOT NULL default '0',
      `rid` int(11) NOT NULL default '0',
      PRIMARY KEY  (`userid`,`zoneid`,`rid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `forbid` (
      `userid` int(11) NOT NULL default '0',
      `type` int(11) NOT NULL default '0',
      `ctime` datetime NOT NULL,
      `forbid_time` int(11) NOT NULL default '0',
      `reason` blob NOT NULL,
      `gmroleid` int(11) default '0',
      PRIMARY KEY  (`userid`,`type`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `iplimit` (
      `uid` int(11) NOT NULL default '0',
      `ipaddr1` int(11) default '0',
      `ipmask1` varchar(2) default '',
      `ipaddr2` int(11) default '0',
      `ipmask2` varchar(2) default '',
      `ipaddr3` int(11) default '0',
      `ipmask3` varchar(2) default '',
      `enable` char(1) default '',
      `lockstatus` char(1) default '',
      PRIMARY KEY  (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `point` (
      `uid` int(11) NOT NULL default '0',
      `aid` int(11) NOT NULL default '0',
      `time` int(11) NOT NULL default '0',
      `zoneid` int(11) default '0',
      `zonelocalid` int(11) default '0',
      `accountstart` datetime default NULL,
      `lastlogin` datetime default NULL,
      `enddate` datetime default NULL,
      PRIMARY KEY  (`uid`,`aid`),
      KEY `IX_point_aidzoneid` (`aid`,`zoneid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `roles` (
      `account_id` int(11) NOT NULL,
      `role_id` int(11) NOT NULL,
      `role_name` varchar(32) NOT NULL,
      `role_level` smallint(6) NOT NULL,
      `role_race` tinyint(4) NOT NULL,
      `role_occupation` tinyint(4) NOT NULL,
      `role_gender` tinyint(4) NOT NULL,
      `role_spouse` int(11) NOT NULL,
      `faction_id` int(11) NOT NULL,
      `faction_name` varchar(32) NOT NULL,
      `faction_level` int(11) NOT NULL,
      `faction_domains` varchar(132) NOT NULL,
      `role_faction_rank` int(11) NOT NULL,
      `pvp_time` int(11) NOT NULL,
      `pvp_kills` int(11) NOT NULL,
      `pvp_deads` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `usecashlog` (
      `userid` int(11) NOT NULL default '0',
      `zoneid` int(11) NOT NULL default '0',
      `sn` int(11) NOT NULL default '0',
      `aid` int(11) NOT NULL default '0',
      `point` int(11) NOT NULL default '0',
      `cash` int(11) NOT NULL default '0',
      `status` int(11) NOT NULL default '0',
      `creatime` datetime NOT NULL,
      `fintime` datetime NOT NULL,
      KEY `IX_usecashlog_creatime` (`creatime`),
      KEY `IX_usecashlog_uzs` (`userid`,`zoneid`,`sn`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `usecashnow` (
      `userid` int(11) NOT NULL default '0',
      `zoneid` int(11) NOT NULL default '0',
      `sn` int(11) NOT NULL default '0',
      `aid` int(11) NOT NULL default '0',
      `point` int(11) NOT NULL default '0',
      `cash` int(11) NOT NULL default '0',
      `status` int(11) NOT NULL default '0',
      `creatime` datetime NOT NULL,
      PRIMARY KEY  (`userid`,`zoneid`,`sn`),
      KEY `IX_usecashnow_creatime` (`creatime`),
      KEY `IX_usecashnow_status` (`status`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    
    CREATE TABLE `users` (
      `ID` int(11) NOT NULL default '0',
      `name` varchar(32) NOT NULL default '',
      `passwd` varchar(64) NOT NULL,
      `Prompt` varchar(32) NOT NULL default '',
      `answer` varchar(32) NOT NULL default '',
      `truename` varchar(32) NOT NULL default '',
      `idnumber` varchar(32) NOT NULL default '',
      `email` varchar(64) NOT NULL default '',
      `mobilenumber` varchar(32) default '',
      `province` varchar(32) default '',
      `city` varchar(32) default '',
      `phonenumber` varchar(32) default '',
      `address` varchar(64) default '',
      `postalcode` varchar(8) default '',
      `gender` int(11) default '0',
      `birthday` datetime default NULL,
      `creatime` datetime NOT NULL,
      `qq` varchar(32) default '',
      `passwd2` varchar(64) default NULL,
      PRIMARY KEY  (`ID`),
      UNIQUE KEY `IX_users_name` (`name`),
      KEY `IX_users_creatime` (`creatime`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    try this Reg script.. Work for me
    Attached Files Attached Files

  6. #6
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    Quote Originally Posted by Sebastain007 View Post
    try this Reg script.. Work for me
    this script already have in the v70 and the script work to but that's not my question
    i am trying to use this script http://forum.ragezone.com/f694/new-e...script-792042/ not working
    but both script are md5 i don't know why renan7899 script not working in v70

  7. #7
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    and 343 register script i can register but can't login in v70

    untitled1.png

  8. #8
    Account Upgraded | Title Enabled! leonara is offline
    MemberRank
    Dec 2010 Join Date
    IndonesiaLocation
    540Posts

    Re: Perfect world 1.4.6 Register problem

    Just Follow My Tutorial ...
    Use .sql from 63 or 69 and use register too from 63 and 69

    and look the config too

  9. #9
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    Quote Originally Posted by leonara View Post
    Just Follow My Tutorial ...
    Use .sql from 63 or 69 and use register too from 63 and 69

    and look the config too
    i have tried v63 sql and register not work i will try v69

  10. #10
    I Might Piss Somebody Off Bola is offline
    DeveloperRank
    Dec 2011 Join Date
    BrazilLocation
    1,766Posts

    Re: Perfect world 1.4.6 Register problem


  11. #11
    0, 1, 1, 2, 3, 5, 8, 13, argonaut is offline
    MemberRank
    Sep 2011 Join Date
    AustraliaLocation
    602Posts

    Re: Perfect world 1.4.6 Register problem

    Quote Originally Posted by rnsalt4 View Post
    this script already have in the v70 and the script work to but that's not my question
    i am trying to use this script http://forum.ragezone.com/f694/new-e...script-792042/ not working
    but both script are md5 i don't know why renan7899 script not working in v70
    Its different authd to query differently encoded database information, encoded by the scripts you are using...in short, use a different authd for your script or use different encoding on the signup script..either tactic will work.

  12. #12
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    thanks v69 authd work in this?

  13. #13
    0, 1, 1, 2, 3, 5, 8, 13, argonaut is offline
    MemberRank
    Sep 2011 Join Date
    AustraliaLocation
    602Posts

    Re: Perfect world 1.4.6 Register problem

    Dunno, ive got my own authd ive been using since v63, along with all my scripts that are tailored...all from RZ with modifications.

  14. #14
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    i will try to change to v69 auth v63 and v69 both are same auth i think i need to change full folder of auth or only auth/build/config.xml
    auth/etc/authd.conf those file?

  15. #15
    Alpha Member Hycker is offline
    MemberRank
    Dec 2010 Join Date
    /root/gameguardLocation
    1,590Posts

    Re: Perfect world 1.4.6 Register problem

    there is some dependencies.
    Bad Base64 input character at 0: 93(decimal)
    what your register script use? 0x.md5(username and password) or base64((0x.md5(username and password));
    [dunno correct syntax from head] encode?
    try to change manualy the password in mysql table
    what version of mysql u have? I sucked in past with newest version of mysql coz of routines / procedure issue, maybe some of u drop a stone to me but recommended mysql version is 5.1.67

    try this accuirepasswd procedure anyway:
    Code:
    BEGIN
    DECLARE passwdtemp VARCHAR(64);
    START TRANSACTION;
    SELECT id, passwd INTO uid1, passwdtemp FROM users WHERE name = name1;
    SELECT passwdtemp INTO passwd1;
    COMMIT;
    END

  16. #16
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    this one i am trying not loging into game
    Code:
                    $Salt = $Login.$Pass;                $Salt = md5($Salt);
                    $Salt = "0x".$Salt;
                    MySQL_Query("call adduser('$Login', $Salt, '0', '0', '0', '0', '$Email', '0', '0', '0', '0', '0', '0', '0', '', '', $Salt)") or die ("Can't execute query.");
                    echo "Account <b>".$Login."</b> has been registered.";
    //                echo "Conta <b>".$Login."</b> foi bem registrada.";

    working login into game is this
    Code:
                    // $Salt = $Login.$Pass;                // $Salt = md5($Salt);
                    // $Salt = "0x".$Salt;
                    $Salt = base64_encode(md5($Login.$Pass, true));
                    MySQL_Query("call adduser('$Login', '$Salt', '0', '0', '0', '0', '$Email', '0', '0', '0', '0', '0', '0', '0', '', '', '$Salt')") or die ("Аккаунт не зарегистрирован");
                    $mysqlresult=MySQL_Query("select * from `users` WHERE `name`='$Login'");
                    $User_ID=MySQL_result($mysqlresult,0,'ID');
                    MySQL_Query("call usecash({$User_ID},1,0,1,0,".$config['gold'].",1,@error)") or die ("Голд не выдан");
                echo "<font color='green'>Аккаунт <b>".$Login."</b> Успешно зарегистрирован :) Ваш ID: ".$User_ID." <br/> ".$config['gold']." голда начислено. Голд придет в течении 5-10 минут";
    here my phpmyadmin version
    untitled2.png
    i will try this accuirepasswd and inform

  17. #17
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    i have changed acquireuserpasswd and imported

    Code:
    CREATE TABLE IF NOT EXISTS `users` (  `ID` int(11) NOT NULL DEFAULT '0',
      `name` varchar(32) NOT NULL DEFAULT '',
      `passwd` varchar(64) NOT NULL,
      `Prompt` varchar(32) NOT NULL DEFAULT '',
      `answer` varchar(32) NOT NULL DEFAULT '',
      `truename` varchar(32) NOT NULL DEFAULT '',
      `idnumber` varchar(32) NOT NULL DEFAULT '',
      `email` varchar(64) NOT NULL DEFAULT '',
      `mobilenumber` varchar(32) DEFAULT '',
      `province` varchar(32) DEFAULT '',
      `city` varchar(32) DEFAULT '',
      `phonenumber` varchar(32) DEFAULT '',
      `address` varchar(64) DEFAULT '',
      `postalcode` varchar(8) DEFAULT '',
      `gender` int(11) DEFAULT '0',
      `birthday` datetime DEFAULT NULL,
      `creatime` datetime NOT NULL,
      `qq` varchar(32) DEFAULT '',
      `passwd2` varchar(64) DEFAULT NULL,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `IX_users_name` (`name`),
      KEY `IX_users_creatime` (`creatime`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    DELIMITER $$
    CREATE PROCEDURE `acquireuserpasswd`(in name1 VARCHAR(64), out uid1 INTEGER, out passwd1 VARCHAR(64))
    BEGIN
    DECLARE passwdtemp VARCHAR(64);
    START TRANSACTION;
    SELECT id, passwd INTO uid1, passwdtemp FROM users WHERE name = name1;
    SELECT passwdtemp INTO passwd1;
    COMMIT;
    END$$
    
    
    CREATE PROCEDURE `addForbid`(in userid1 INTEGER, in type1 INTEGER, in forbid_time1 INTEGER, in reason1 BINARY(255), in gmroleid1 INTEGER)
    BEGIN
     DECLARE rowcount INTEGER;
      START TRANSACTION;
        UPDATE forbid SET ctime = now(), forbid_time = forbid_time1, reason = reason1, gmroleid = gmroleid1 WHERE userid = userid1 AND type = type1;
        SET rowcount = ROW_COUNT();
        IF rowcount = 0 THEN
          INSERT INTO forbid VALUES(userid1, type1, now(), forbid_time1, reason1, gmroleid);
        END IF;
      COMMIT;
    END$$
    when i am login in game i get this
    Code:
    root@ubuntu:~# TRACE : gdelivery::matrixpasswd query, user=redlistGQueryPasswd:account is redlist , login ip is 192.168.1.2
    TRACE : matrixpasswd NOT usbbind user 1056
    TRACE : gdeliveryserver::statusannounce,online=0,fakemax=6000,load=0,attr=-805306368
    TRACE : KeepAlive sid=8



  18. #18
    Alpha Member Hycker is offline
    MemberRank
    Dec 2010 Join Date
    /root/gameguardLocation
    1,590Posts

    Re: Perfect world 1.4.6 Register problem

    in register you have:
    Code:
    $Salt = "0x".$Salt;
    otherwise in logging query
    Code:
    / $Salt = $Login.$Pass;                // $Salt = md5($Salt);
                    // $Salt = "0x".$Salt;
                    $Salt = base64_encode(md5($Login.$Pass, true));
                    MySQL_Query("call adduser('$Login', '$Salt', '0', '0', '0', '0', '$Email', '0', '0', '0', '0', '0', '0', '0', '', '', '$Salt')") or die ("Аккаунт не зарегистрирован");
    there is the difference...

    for correct logging script you need changes comments for looks like this:

    Code:
    $Salt = $Login.$Pass;                 
                     $Salt = md5($Salt);
                     $Salt = "0x".$Salt;
                    // $Salt = base64_encode(md5($Login.$Pass, true));
                    MySQL_Query("call adduser('$Login', '$Salt', '0', '0', '0', '0', '$Email', '0', '0', '0', '0', '0', '0', '0', '', '', '$Salt')") or die ("Аккаунт не зарегистрирован");

  19. #19
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    if i use $Salt = base64_encode(md5($Login.$Pass, true)); i can't login into Panel of this http://forum.ragezone.com/f751/relea...painel-865975/

    the login panel code
    Code:
     <?php
    
    if(isset($_POST['logon']))
    {
     if(empty($_POST['login']))
     {
      $RESULT .= "<p>field \"Login\" this blank.</p>";
     }
     if(empty($_POST['password']))
     {
      $RESULT .= "<p>field \"senha\" this blank.</p>";
     }
     if (ereg("[^0-9a-zA-Z_-]", $_POST['login'], $Txt))
     {
      $RESULT .= "<p>Username contains invalid characters.</p>";
     }
     if (ereg("[^0-9a-zA-Z_-]", $_POST['password'], $Txt))
     {
      $RESULT .= "<p>Password contains invalid characters.</p>";
     }
     if(empty($RESULT))
     {
      $login = StrToLower(Trim($_POST['login']));
      $password = Trim($_POST['password']);
      $password = md5($login.$password, true);
      
      $Query = MySQL_Query("select * from `users` WHERE `name`='{$login}' AND `passwd`='{$password}'");
      if(mysql_num_rows($Query) == 1)
      {
       $_SESSION['log'] = 1;
       $_SESSION['id'] = MySQL_result($Query, 0, 'id');
       $_SESSION['login'] = MySQL_result($Query, 0, 'name');
       
       $Admin_Query = MySQL_Query("select * from `admin` WHERE `userid` = '{$_SESSION['id']}'");
       $Admin = mysql_num_rows($Admin_Query);
       if($Admin > 0)
       {
        $_SESSION['admin'] = "1";
       }
       
       echo "<meta http-equiv='Refresh' content='0;URL=index.php'>";
      }
      else
      {
       $RESULT .= "<p>Username or password incorrect!</p>";
      }
     }
    }
    
    
    ?>
    Last edited by rnsalt4; 05-07-13 at 11:49 AM.

  20. #20
    uint is best int. Swoosh91 is offline
    MemberRank
    Feb 2010 Join Date
    BerlinLocation
    712Posts

    Re: Perfect world 1.4.6 Register problem

    Oh god, how about coming back when you know at least something about what you are doing?

  21. #21
    Alpha Member Hycker is offline
    MemberRank
    Dec 2010 Join Date
    /root/gameguardLocation
    1,590Posts

    Re: Perfect world 1.4.6 Register problem

    ... your register script use 0x.md5.$login.$pass WITHOUT base64
    ... your authd calling datas from mysql with base64 encode, like this $Salt = base64_encode(md5($Login.$Pass, true));

    see the difference?
    read my post again

  22. #22
    Enthusiast rnsalt4 is offline
    MemberRank
    Jul 2013 Join Date
    28Posts

    Re: Perfect world 1.4.6 Register problem

    Quote Originally Posted by Hycker View Post
    ... your register script use 0x.md5.$login.$pass WITHOUT base64
    ... your authd calling datas from mysql with base64 encode, like this $Salt = base64_encode(md5($Login.$Pass, true));

    see the difference?
    read my post again
    yes thank you i am not mean that i just want to know where to change same base64_encode(md5($Login.$Pass, true)); into this panel
    to work with base64_encode(md5($Login.$Pass, true));

    Code:
     <?php
    
    if(isset($_POST['logon']))
    {
     if(empty($_POST['login']))
     {
      $RESULT .= "<p>field \"Login\" this blank.</p>";
     }
     if(empty($_POST['password']))
     {
      $RESULT .= "<p>field \"senha\" this blank.</p>";
     }
     if (ereg("[^0-9a-zA-Z_-]", $_POST['login'], $Txt))
     {
      $RESULT .= "<p>Username contains invalid characters.</p>";
     }
     if (ereg("[^0-9a-zA-Z_-]", $_POST['password'], $Txt))
     {
      $RESULT .= "<p>Password contains invalid characters.</p>";
     }
     if(empty($RESULT))
     {
      $login = StrToLower(Trim($_POST['login']));
      $password = Trim($_POST['password']);
      $password = md5($login.$password, true);
      
      $Query = MySQL_Query("select * from `users` WHERE `name`='{$login}' AND `passwd`='{$password}'");
      if(mysql_num_rows($Query) == 1)
      {
       $_SESSION['log'] = 1;
       $_SESSION['id'] = MySQL_result($Query, 0, 'id');
       $_SESSION['login'] = MySQL_result($Query, 0, 'name');
       
       $Admin_Query = MySQL_Query("select * from `admin` WHERE `userid` = '{$_SESSION['id']}'");
       $Admin = mysql_num_rows($Admin_Query);
       if($Admin > 0)
       {
        $_SESSION['admin'] = "1";
       }
       
       echo "<meta http-equiv='Refresh' content='0;URL=index.php'>";
      }
      else
      {
       $RESULT .= "<p>Username or password incorrect!</p>";
      }
     }
    }
    
    
    ?>
    Last edited by rnsalt4; 05-07-13 at 12:53 PM.

  23. #23
    Account Upgraded | Title Enabled! kewtrewt is offline
    MemberRank
    Aug 2005 Join Date
    Virtual SpaceLocation
    201Posts

    Re: Perfect world 1.4.6 Register problem

    Quote Originally Posted by rnsalt4 View Post
    yes thank you i am not mean that i just want to know where to change same base64_encode(md5($Login.$Pass, true)); into this panel
    to work with base64_encode(md5($Login.$Pass, true));

    Code:
     <?php
    
    if(isset($_POST['logon']))
    {
     if(empty($_POST['login']))
     {
      $RESULT .= "<p>field \"Login\" this blank.</p>";
     }
     if(empty($_POST['password']))
     {
      $RESULT .= "<p>field \"senha\" this blank.</p>";
     }
     if (ereg("[^0-9a-zA-Z_-]", $_POST['login'], $Txt))
     {
      $RESULT .= "<p>Username contains invalid characters.</p>";
     }
     if (ereg("[^0-9a-zA-Z_-]", $_POST['password'], $Txt))
     {
      $RESULT .= "<p>Password contains invalid characters.</p>";
     }
     if(empty($RESULT))
     {
      $login = StrToLower(Trim($_POST['login']));
      $password = Trim($_POST['password']);
      $password = md5($login.$password, true);
      
      $Query = MySQL_Query("select * from `users` WHERE `name`='{$login}' AND `passwd`='{$password}'");
      if(mysql_num_rows($Query) == 1)
      {
       $_SESSION['log'] = 1;
       $_SESSION['id'] = MySQL_result($Query, 0, 'id');
       $_SESSION['login'] = MySQL_result($Query, 0, 'name');
       
       $Admin_Query = MySQL_Query("select * from `admin` WHERE `userid` = '{$_SESSION['id']}'");
       $Admin = mysql_num_rows($Admin_Query);
       if($Admin > 0)
       {
        $_SESSION['admin'] = "1";
       }
       
       echo "<meta http-equiv='Refresh' content='0;URL=index.php'>";
      }
      else
      {
       $RESULT .= "<p>Username or password incorrect!</p>";
      }
     }
    }
    
    
    ?>
    Here (next time get a book and learn about what you do):

    if(empty($RESULT))
    {
    $login = StrToLower(Trim($_POST['login']));
    $password = Trim($_POST['password']);
    $password = base64_encode(md5($login.$password, true));



Advertisement