Thread: Skills Question
View Single Post
  #6  
Old 09-04-2011, 12:25 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Yes the one in the resources.
Incase anyone's interested I had these two stupid scripts floating around, the top one exports skillcaps and the bottom one imports.

Code:
use DBI;

my $db = "eqdb";
my $user = "eq";
my $pass = "eqpass";
my $host = "localhost";
my $skill_caps_file = "SkillCaps.txt";
my $source = "DBI:mysql:database=$db;host=$host";
my $dbh = DBI->connect($source, $user, $pass) || die "Could not create db handle\n";

sub skill_usable {
    my $skill_id = shift;
    my $class = shift;
    
    my $sth = $dbh->prepare("SELECT max(`cap`) FROM skill_caps WHERE `class`=$class and `skillID`=$skill_id");
    $sth->execute();
    if(my $val = $sth->fetch()) {
        if(@$val[0] == 0) {
            return 0;
        } else {
            return 1;
        }
    }
    
    return 0;
}

sub get_skill {
    my $skill_id = shift;
    my $class = shift;
    my $level = shift;
    
    my $sth = $dbh->prepare("SELECT cap FROM skill_caps WHERE `class`=$class and `skillID`=$skill_id and `level`=$level");
    $sth->execute();
    if(my $val = $sth->fetch()) {
        return @$val[0];
    }
    
    return 0;
}

open(SKILLS, ">$skill_caps_file") or die "Unable to open skills file for export: $skill_caps_file\n";

for($class_i = 1; $class_i <= 16; $class_i++) {
    for($skill_i = 0; $skill_i <= 77; $skill_i++) {
        print "($class_i, $skill_i)\n";
        if(skill_usable($skill_i, $class_i) == 1) {
            for($level_i = 1; $level_i <= 90; $level_i++) {
                my $cap = get_skill($skill_i, $class_i, $level_i);
                my $line = $class_i . "^" . $skill_i . "^" . $level_i . "^" . $cap . "^0\n";
                print SKILLS $line;
            }
        }
    }
}

close (SKILLS);
Code:
use DBI;

my $db = "eqdb";
my $user = "eq";
my $pass = "eqpass";
my $host = "localhost";
my $skill_caps_file = "SkillCaps.txt";

my $source = "DBI:mysql:database=$db;host=$host";
my $dbh = DBI->connect($source, $user, $pass) || die "Could not create db handle\n";
$dbh->do("delete from skill_caps");

open(SKILLS, "<$skill_caps_file") or die "Unable to open skills: $skill_caps_file\n";
#parse through SKILLS
while(<SKILLS>) {

	chomp();
	@s = split(/\^/);
    
    my $query = "insert into skill_caps (class, skillID, level, cap) VALUES(";
    $query .= $s[0];
    $query .= ", ";
    $query .= $s[1];
    $query .= ", ";
    $query .= $s[2];
    $query .= ", ";
    $query .= $s[3];
    $query .= ")";
    
    my $i = $dbh->do($query);
    if($i < 1) {
        printf("Error loading $skill_caps_file\n");
    }
}
Reply With Quote