Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/opt/xampp/perl/bin/perl
- use strict;
- use warnings;
- use CGI;
- my $query=new CGI;
- # Variables
- my $DebugMode = 0;
- my $SkillCount = 0;
- my @Skills = ();
- my $CharFile = "";
- my $CharCulti = 0;
- my $SkillDB = "./Variables/PWSkills.txt";
- my $CurrentFile = 0;
- my $SkillText = 0;
- #######################################################################
- print "Content-type: text/html\n\n";
- #######################################################################
- print "<b>";
- print "UberFoX's PW Char Skill Editor 1.0 (For PW 1.3.6)<br>";
- print "Coded by UberFoX (uberfox\@hotmail.com)<br>";
- print "</b>";
- print "<br>";
- #######################################################################
- sub trim($){# Perl trim function to remove whitespace from the start and end of the string
- my $string = shift;
- $string =~ s/^\s+//mg;
- $string =~ s/\s+$//mg;
- return $string;
- }
- #######################################################################
- sub SaveChar {
- # Build the new skill string
- my $NewSkillList = BuildSkills($SkillText);
- # Save new skill list to XML
- SaveSkills($NewSkillList);
- # Save modified char
- open (DATABASE, ">$CurrentFile");
- print DATABASE "$CharFile\n";
- close (DATABASE);
- }
- sub Main {
- if($query->param("CharXML")){
- my $CharXML = $query->param("CharXML");
- my $CharName = "";
- my $CharCulti = "";
- my $Output = "";
- if($CharXML =~ /<variable name="name" type="Octets">(.*)</im){
- $CharName = $1;
- }else{
- $Output .= "Invalid char file!<br>";
- return 0;
- }
- # Lets find a file to create
- my $ID = 0;
- while( -e "./Variables/Chars/$ID.txt"){
- $ID++;
- }
- $CurrentFile = "./Variables/Chars/$ID.txt";
- open (DBASE, ">$CurrentFile");
- print DBASE $CharXML;
- close (DBASE);
- $Output .= "Loaded Char Name Is: \"$CharName\"<br>";
- LoadCharFile($CurrentFile);
- $CharCulti = GetCharStat("level2");
- $SkillText = LoadCharSkills();
- LoadSkills($SkillText); # Load the skills!
- $Output .= "Cultivation Level: $CharCulti<br>"; # Display culti
- $Output .= ListSkillsActual(); # List all skills
- open (DBASE, "./Variables/Console.txt");
- my $Data = join('', <DBASE>);
- $Output =~ s/<br>/\n/gi;
- $Data =~ s/#Output/$Output/;
- $Data =~ s/#CharID/$ID/;
- print $Data;
- close (DBASE);
- }elsif($query->param("Command")){
- my $Output = "";
- my $CharName;
- my $Command = $query->param("Command");
- my $ID = $query->param("CharID");
- $CurrentFile = "./Variables/Chars/$ID.txt";
- if( -e "$CurrentFile"){
- }else{
- print "Char file not found!";
- return 0;
- }
- open (DBASE, "$CurrentFile");
- my $CharXML = join('', <DBASE>);
- close (DBASE);
- if($CharXML =~ /<variable name="name" type="Octets">(.*)</im){
- $CharName = $1;
- }else{
- print "Invalid char file!<br>";
- return 0;
- }
- $Output .= "Loaded Char Name Is: \"$CharName\"<br><br>";
- LoadCharFile($CurrentFile);
- $SkillText = LoadCharSkills();
- LoadSkills($SkillText); # Load the skills!
- $Command = trim($Command);
- if($Command =~ /^help$/sim){
- $Output .= "skills // Show list of all skills on charactor\n";
- $Output .= "repu // Show current repu on charactor\n";
- $Output .= "repu [Number] // Set charactor repu to this value (300,000 for Rank9)\n";
- $Output .= "culti // Show current culti on charactor\n";
- $Output .= "culti [Number] // Set charactor culti to this value (22 is max Light, 33 is max Dark)\n";
- $Output .= "skill a [Number] [Number] nameofskill // Add skill with level and extra level to charactor (Uses Regex)\n";
- $Output .= "craft // Add all craft skills (Level 10)\n";
- $Output .= "listadd // List all possible skills to add (just copy + paste the line into command box)\n";
- $Output .= "listdel // List all possible skills to delete (just copy + paste the line into command box)\n";
- $Output .= "xml // Display current XML of char\n";
- $Output .= "\n";
- $Output .= "Edit the char how you wish then use xml command to get finished char back\n";
- }elsif($Command =~ /^culti$/sim){ # Show cultivation level
- $Output .= "Cultivation Level: $CharCulti\n";
- }elsif($Command =~ /^culti\s{1,}(\d{1,})$/sim){ # Set cultivation level
- my $sCutli = trim($1);
- SetCharStat("level2", $sCutli);
- $CharCulti = GetCharStat("level2");
- $Output .= "Cultivation level changed to: $CharCulti\n";
- SaveChar();
- }elsif($Command =~ /^repu$/sim){ # Show reputation level
- my $CharRepu = GetCharStat("reputation");
- $Output .= "Reputation level: $CharRepu\n";
- }elsif($Command =~ /^repu\s{1,}(\d{1,})$/sim){ # Set reputation level
- my $sRepu = trim($1);
- SetCharStat("reputation", $sRepu);
- my $CharRepu = GetCharStat("reputation");
- $Output .= "Reputation level changed to: $CharRepu\n";
- SaveChar();
- }elsif($Command =~ /^skills$/sim){
- $Output .= ListSkillsActual(); # List all skills
- }elsif($Command =~ /^skill\s{1,}a\s{1,}(\d{1,})\s{1,}(\d{1,})\s{1,}(.*)$/sim){ # Add a skill
- my $sSkillLevel = trim($1);
- my $sSkillExtraLevel = trim($2);
- my $sSkillName = trim($3);
- $Output .= AddSkillRX($sSkillName, $sSkillExtraLevel, $sSkillLevel);
- SaveChar();
- }elsif($Command =~ /^skill\s{1,}d\s{1,}(.*)$/sim){ # Del a skill
- my $sSkillName = trim($1);
- $Output .= DelSkillRX($sSkillName);
- SaveChar();
- }elsif($Command =~ /^craft$/sim){
- DelSkill("9E000000"); # Blacksmith
- DelSkill("9F000000"); # Tailor
- DelSkill("A1000000"); # Pharmasist
- DelSkill("A0000000"); # Accessories
- AddSkill("9E000000", 200, 10); # Blacksmith
- AddSkill("9F000000", 200, 10); # Tailor
- AddSkill("A1000000", 200, 10); # Pharmasist
- AddSkill("A0000000", 200, 10); # Accessories
- $Output .= "Done adding all craft skills\n";
- SaveChar();
- }elsif($Command =~ /^listadd$/sim){
- open (DBASE, "$SkillDB");
- my @DBASE=<DBASE>;
- my $Count = 0;
- foreach $_ (@DBASE) {
- my ($sID, $sIDSpell, $sIDScroll, $sName, $sBlank)=split(/\|/);
- my $Level = 10;
- if($sName =~ /Holy\-|Dark\-/i)
- {
- $Level = 1;
- }
- $sName = EscapeRex($sName);
- $Output .= "skill a $Level 0 ^$sName\$<br>" if $Count;
- $Count++;
- }
- close (DBASE);
- }elsif($Command =~ /^listdel$/sim){
- foreach $_ (@Skills){
- my ($sSkillID, $sCounter, $sExtraCount) = split(/\|/);
- my $sSkillIDX = RemoveSpaces(DecToPoke($sSkillID, "DWORD"));
- my $sExtraCountX = RemoveSpaces(DecToPoke($sExtraCount, "DWORD"));
- my $sCounterX = RemoveSpaces(DecToPoke($sCounter, "DWORD"));
- my $CurSkill .= "$sSkillIDX$sExtraCountX$sCounterX";
- my ($SkillInfo, $SkillAll, $SkillID, $Counter, $ExtraCount) = GetSkillInfo($CurSkill);
- my $SkillName = GetSkillNameFromID($SkillID);
- $SkillName = EscapeRex($SkillName);
- $Output .= "skill d ^$SkillName\$<br>";
- }
- }elsif($Command =~ /^xml$/sim){
- $Output = $CharXML;
- }else{
- $Output .= "Invalid command!<br>";
- }
- # Print output
- open (DBASE, "./Variables/Console.txt");
- my $Data = join('', <DBASE>);
- $Output =~ s/<br>/\n/gi;
- $Data =~ s/#Output/$Output/;
- $Data =~ s/#CharID/$ID/;
- print $Data;
- close (DBASE);
- }else{
- open (DBASE, "./Variables/InputCharForm.txt");
- my $Data = join('', <DBASE>);
- print $Data;
- close (DBASE);
- }
- }
- #######################################################################
- sub EscapeRex {
- my $Text = $_[0];
- $Text =~ s/(\+|\*|\-|\?|\!|\[|\]|\{|\})/\\$1/g;
- return $Text;
- }
- #######################################################################
- sub DecToPoke {
- my $Myvalue = $_[0];
- my $ForceType = $_[1];
- my $MyvalueSize = "";
- if ($ForceType eq "NONE") {
- $MyvalueSize = "BYTE";
- if ($Myvalue <= 255) {
- $MyvalueSize = "BYTE";
- }
- elsif ($Myvalue <= 65535) {
- $MyvalueSize = "WORD";
- }
- elsif ($Myvalue >= 65536) {
- $MyvalueSize = "DWORD";
- }
- else {
- }
- }else {
- $MyvalueSize = $ForceType;
- }
- if ($MyvalueSize eq "BYTE") {
- $Myvalue = unpack("H*",pack("C*", $Myvalue));
- }
- elsif ($MyvalueSize eq "WORD") {
- $Myvalue = unpack("H*",pack("S*", $Myvalue));
- }
- elsif ($MyvalueSize eq "DWORD") {
- $Myvalue = unpack("H*",pack("N*", $Myvalue));
- }
- else {
- }
- $Myvalue = RevHex($Myvalue,0);
- $Myvalue =~ tr/a-z/A-Z/;
- return $Myvalue;
- }
- #######################################################################
- sub RemoveSpaces {
- my $Input = $_[0];
- $Input =~ s/\s//g;
- return $Input;
- }
- #######################################################################
- sub SetCharStat {
- my ($sStat, $sStatLevel) = @_;
- $CharFile =~ s/(<variable name="$sStat" type="int">)\d{1,}/$1$sStatLevel/i;
- return 1;
- }
- #######################################################################
- sub GetCharStat {
- my ($sStat) = @_;
- if($CharFile =~ /<variable name="$sStat" type="int">(\d{1,})/){
- my $StatLevel = $1;
- return $StatLevel;
- }
- return 0;
- }
- #######################################################################
- sub CheckSkillLevel {
- my $SkillID = $_[0];
- my $SkillIDDec = RevHex($SkillID, 1);
- $SkillIDDec = hex($SkillIDDec);
- foreach $_ (@Skills) {
- my ($sID, $sCount, $sExtra)=split(/\|/);
- if($sID eq $SkillIDDec){
- return $sCount;
- }
- }
- return 0;
- }
- #######################################################################
- sub CheckSkillPrevExists {
- my $SkillID = $_[0];
- my $SkillIDCOde = RemoveSpaces(DecToPoke($SkillID, "DWORD"));
- $SkillIDCOde =~ tr/a-z/A-Z/;
- open (DBASE, "$SkillDB");
- my @DBASE=<DBASE>;
- foreach $_ (@DBASE) {
- my ($sID, $sIDSpell, $sIDScroll, $sName, $sBlank)=split(/\|/);
- $sID =~ tr/a-z/A-Z/;
- if($SkillIDCOde eq $sID){
- if($sIDSpell eq "0"){
- print "Sorry, This book is not yet added\n";
- return 0;
- }else{
- my $sSkillLevel = CheckSkillLevel($sIDSpell);
- #if($sSkillLevel == 10){
- if($sSkillLevel >= 1){ # DEBUG! We allow it if the skill is 1 or higher! USE AT OWN RISK!
- print "Pre-Requirement skill is lvl 10\n";
- return 1;
- }else{
- print "Pre-Requirement skill is not yet lvl 10 (Currently: $sSkillLevel)\n";
- return 0;
- }
- }
- }
- }
- close (DBASE);
- return 0;
- }
- #######################################################################
- sub GetSkillNameFromID {
- my $SkillID = $_[0];
- my $SkillIDCOde = RemoveSpaces(DecToPoke($SkillID, "DWORD"));
- $SkillIDCOde =~ tr/a-z/A-Z/;
- open (DBASE, "$SkillDB");
- my @DBASE=<DBASE>;
- foreach $_ (@DBASE) {
- my ($sID, $sIDSpell, $sIDScroll, $sName, $sBlank)=split(/\|/);
- $sID =~ tr/a-z/A-Z/;
- if($SkillIDCOde eq $sID){
- return $sName;
- }
- }
- close (DBASE);
- return "";
- }
- #######################################################################
- sub GetIDOfSkillFromName {
- my $SkillName = $_[0];
- open (DBASE, "$SkillDB");
- my @DBASE=<DBASE>;
- foreach $_ (@DBASE) {
- my ($sID, $sIDSpell, $sIDScroll, $sName, $sBlank)=split(/\|/);
- if($SkillName =~ /^$sName$/i){
- my $NewID = RevHex($sID, 1);
- $NewID = hex($NewID);
- return "$NewID";
- }
- }
- close (DBASE);
- return 0;
- }
- #######################################################################
- sub CheckSkillDuplicate {
- my $SkillID = $_[0];
- my $SkillName = GetSkillNameFromID($SkillID);
- my $SkillNameOpposit = $SkillName;
- if($SkillNameOpposit =~ /Dark/i){
- $SkillNameOpposit =~ s/Dark/Holy/;
- }elsif($SkillNameOpposit =~ /Holy/i){
- $SkillNameOpposit =~ s/Holy/Dark/;
- }
- my $OppositSkillID = GetIDOfSkillFromName($SkillNameOpposit);
- my $OppositStatus = CheckSkillExists($OppositSkillID);
- if($OppositStatus){
- return $OppositStatus;
- }
- return 0;
- }
- #######################################################################
- sub DelSkill {
- my ($SkillID) = @_;
- $SkillID = RevHex($SkillID, 1);
- $SkillID = hex($SkillID);
- my $SkillExists = 0;
- my @NewArray = ();
- foreach $_ (@Skills){
- my ($sSkillID, $sCounter, $sExtraCount) = split(/\|/);
- unless($sSkillID eq $SkillID){
- push(@NewArray, $_);
- }else{
- print "Skill deleted\n";
- $SkillCount--;
- }
- }
- @Skills = @NewArray;
- return 0;
- }
- #######################################################################
- sub DelSkillRX {
- my ($SkillRX) = @_;
- my $SkillID = 0;
- my $sSkillName = "";
- foreach $_ (@Skills){
- my ($sSkillID, $sCounter, $sExtraCount) = split(/\|/);
- my $sName = GetSkillNameFromID($sSkillID);
- if($sName =~ /$SkillRX/i){
- $sSkillName = $sName;
- $SkillID = $sSkillID;
- }
- }
- my $SkillExists = 0;
- my @NewArray = ();
- my $Found = 0;
- foreach $_ (@Skills){
- my ($sSkillID, $sCounter, $sExtraCount) = split(/\|/);
- unless($sSkillID eq $SkillID){
- push(@NewArray, $_);
- }else{
- $Found = 1;
- $SkillCount--;
- }
- }
- @Skills = @NewArray;
- if($Found){
- return "Skill deleted";
- }else{
- return "Skill not found";
- }
- }
- #######################################################################
- sub AddSkill {
- my ($SkillID, $ExtraCount, $SCounter) = @_;
- $SkillID = RevHex($SkillID, 1);
- $SkillID = hex($SkillID);
- my $NewSkill .= "$SkillID|$SCounter|$ExtraCount";
- # Check if skill is already added....
- my $SkillExists = 0;
- foreach $_ (@Skills){
- my ($sSkillID, $sCounter, $sExtraCount) = split(/\|/);
- if($sSkillID eq $SkillID){
- $SkillExists = 1;
- }
- }
- unless($SkillExists){ # Skill doesnt exist
- print "Skill Added\n";
- push(@Skills, "$NewSkill");
- $SkillCount++;
- return 1;
- }else{ # Skill does exist
- print "Skill Cannot Be Added -- Already Exists!\n";
- return 0;
- }
- }
- #######################################################################
- sub AddSkillRX {
- my ($SkillRX, $ExtraCount, $SCounter) = @_;
- my $SkillID = 0;
- my $sSkillName = "";
- open (DBASE, "$SkillDB");
- my @DBASE=<DBASE>;
- foreach $_ (@DBASE) {
- my ($sID, $sIDSpell, $sIDScroll, $sName, $sBlank)=split(/\|/);
- if($sName =~ /$SkillRX/i){
- $sSkillName = $sName;
- $SkillID = $sID;
- }
- }
- close (DBASE);
- unless($SkillID){
- return "Skill cannot be added since it does not exist in DB!\n";
- }
- $SkillID = RevHex($SkillID, 1);
- $SkillID = hex($SkillID);
- my $NewSkill .= "$SkillID|$SCounter|$ExtraCount";
- # Check if skill is already added....
- my $SkillExists = 0;
- foreach $_ (@Skills){
- my ($sSkillID, $sCounter, $sExtraCount) = split(/\|/);
- if($sSkillID eq $SkillID){
- $SkillExists = 1;
- }
- }
- unless($SkillExists){ # Skill doesnt exist
- push(@Skills, "$NewSkill");
- $SkillCount++;
- return "Skill ($sSkillName) Added\n";
- }else{ # Skill does exist
- return "Skill Cannot Be Added -- Already Exists!\n";
- }
- }
- #######################################################################
- sub CheckSkillCulti {
- my $SkillID = $_[0];
- my $SkillName = GetSkillNameFromID($SkillID);
- if($SkillName =~ /Dark/i){
- if($CharCulti == 31 or $CharCulti == 32){ # LVL 2 Dark Fairy
- return 1, 31;
- }else{
- return 0, 31;
- }
- }elsif($SkillName =~ /Holy/i){
- if($CharCulti == 21 or $CharCulti == 22){ # LVL 2 Holy Fairy
- return 1, 21;
- }else{
- return 0, 21;
- }
- }
- return 0, 0;
- }
- #######################################################################
- sub AddBookSkill {
- my ($SkillID, $ExtraCount, $SCounter) = @_;
- my $NewSkill .= "$SkillID|$SCounter|$ExtraCount";
- # Check skill is not already added
- my $DupeExists = CheckSkillDuplicate($SkillID);
- if($DupeExists == 1){
- print "You can't use both dark/holy skill at same time\n";
- return 0;
- }
- # Check Skill exists and pre-requirements exist
- my $Exists = CheckSkillExists($SkillID);
- if($Exists == 0){
- my $PrevExist = CheckSkillPrevExists($SkillID);
- if($PrevExist == 1){
- # Check cultivation for this book (This is the LAST thing you check)
- my ($CultiCheck, $CultiNeeded) = CheckSkillCulti($SkillID);
- if($CultiCheck == 0){
- print "Can't use this book with your cultivation level '$CharCulti' you need '$CultiNeeded'\n";
- return 0;
- }
- print "Skill Added\n";
- push(@Skills, "$NewSkill");
- $SkillCount++;
- return 1;
- }else{
- print "You don't have the pre-requirements for this skill\n";
- return 0;
- }
- }else{
- print "You already have this skill\n";
- return 0;
- }
- }
- #######################################################################
- sub CheckSkillExists {
- my $SkillID = $_[0];
- foreach $_ (@Skills) {
- my ($sID, $sCount, $sExtra)=split(/\|/);
- if($sID eq $SkillID){
- return 1;
- }
- }
- return 0;
- }
- #######################################################################
- sub DoSkillBooks {
- my $SkillText = $_[0];
- open (DBASE, "$SkillDB");
- my @DBASE=<DBASE>;
- foreach $_ (@DBASE) {
- my ($sID, $sIDSpell, $sIDScroll, $sName, $sBlank)=split(/\|/);
- # Check scroll exists
- if($sIDScroll){
- if($sIDScroll =~ /\d{1,}/){
- if($CharFile =~ /<items><variable name="id" type="int">$sIDScroll.*?<\/items>/sim){
- print "### SKILL BOOK BELOW ###\n";
- #print "Found skill book: $sName ($sIDScroll) (SkillID: $sID)\n";
- print "Found skill book: $sName\n";
- # Add the skill to char
- $sID = RevHex($sID, 1);
- $sID = hex($sID);
- my $DoStatus = AddBookSkill("$sID", "0", "1");
- if($DoStatus == 1){ # Then its valid!
- # Delete the skill book
- $CharFile =~ s/<items><variable name="id" type="int">$sIDScroll.*?<\/items>//sim;
- }
- print "### SKILL BOOK ABOVE ###\n";
- }
- }
- }
- }
- close (DBASE);
- return "N/A";
- }
- #######################################################################
- sub SaveSkills {
- my $SkillList = $_[0];
- if($CharFile =~ s/<variable name="skills" type="Octets">(.*?)<\/variable>/<variable name="skills" type="Octets">$SkillList<\/variable>/ism){
- return 1;
- }else{
- return 0;
- }
- }
- #######################################################################
- sub LoadCharSkills {
- my $SkillList;
- if($CharFile =~ /<variable name="skills" type="Octets">(.*?)<\/variable>/ism){
- $SkillList = $1;
- }
- return $SkillList;
- }
- #######################################################################
- sub LoadCharFile {
- my $CharName = $_[0];
- # Clear old char file
- open(LOGIN,"$CharName");
- my @raw_data=<LOGIN>;
- close(LOGIN);
- my $CharFileX = join('', @raw_data);
- $CharFile = $CharFileX;
- }
- #######################################################################
- sub BuildSkills {
- my $SkillText = $_[0];
- my $NewSkillList = "";
- my $TempSkillCount = $SkillCount;
- $TempSkillCount = RemoveSpaces(DecToPoke($TempSkillCount, "DWORD"));
- $NewSkillList .= "$TempSkillCount";
- foreach $_ (@Skills){
- my ($SkillID, $SCounter, $ExtraCount)=split(/\|/);
- $SkillID = RemoveSpaces(DecToPoke($SkillID, "DWORD"));
- $ExtraCount = RemoveSpaces(DecToPoke($ExtraCount, "DWORD"));
- $SCounter = RemoveSpaces(DecToPoke($SCounter, "DWORD"));
- $NewSkillList .= "$SkillID$ExtraCount$SCounter";
- }
- # PW uses noncaps so lets fix it
- $NewSkillList =~ tr/A-Z/a-z/;
- return $NewSkillList;
- }
- #######################################################################
- sub LoadSkills {
- my $SkillText = $_[0];
- # Clear Buffs First
- $SkillCount = 0;
- @Skills = ();
- # Begin
- my $SearchLen = length($SkillText);
- $SearchLen -= 8;
- $SearchLen /= 24;
- $SkillCount = $SearchLen;
- my $POS = 0;
- # Get Skill Count
- my $Counter = substr($SkillText, $POS, 8);
- # Get all skills
- $POS = 8;
- for(my $count = 0; $count <= $SearchLen; $count++) {
- my $CurSkill = substr($SkillText, $POS, 24);
- if(length($CurSkill) >= 24){
- my ($SkillInfo, $SkillAll, $SkillID, $SCounter, $ExtraCount) = GetSkillInfo($CurSkill);
- push(@Skills, $SkillAll);
- #print "$CurSkill | $SkillInfo\n";
- $POS += 24;
- }
- }
- }
- #######################################################################
- sub RevHex {
- my $StrToDo = $_[0];
- my $IgnoreSpace = $_[1];
- my $count = 0;
- my $RemadeStr = "";
- while ($count <= length($StrToDo)/2+2) {
- my $StrToDoTmp = substr($StrToDo, $count, 2);
- if($IgnoreSpace eq 1){
- $RemadeStr = "$StrToDoTmp$RemadeStr";
- }else{
- $RemadeStr = "$StrToDoTmp $RemadeStr";
- }
- $count = $count+2;
- }
- $RemadeStr = trim($RemadeStr);
- return $RemadeStr;
- }
- #######################################################################
- sub GetSkillInfo {
- my $SkillText = $_[0];
- my $SkillID = substr($SkillText, 0, 8);
- my $Counter = substr($SkillText, 16, 8);
- my $ExtraCount = substr($SkillText, 8, 8);
- my $SkillName = GetSkillName($SkillID);
- $SkillID = RevHex($SkillID, 1);
- $SkillID = hex($SkillID);
- $Counter = RevHex($Counter, 1);
- $Counter = hex($Counter);
- $ExtraCount = RevHex($ExtraCount, 1);
- $ExtraCount = hex($ExtraCount);
- my $SkillInfo = "$SkillName | Value: $Counter | Extra: $ExtraCount";
- my $SkillAll = "$SkillID|$Counter|$ExtraCount";
- return $SkillInfo, $SkillAll, $SkillID, $Counter, $ExtraCount;
- }
- #######################################################################
- sub GetSkillName {
- my $SkillText = $_[0];
- open (DBASE, "$SkillDB");
- my @DBASE=<DBASE>;
- foreach $_ (@DBASE) {
- my ($sID, $sIDSpell, $sIDScroll, $sName, $sBlank)=split(/\|/);
- if($sID =~ /^$SkillText/i){
- return $sName;
- }
- }
- close (DBASE);
- return "N/A";
- }
- #######################################################################
- sub ListSkillsActual {
- my $SkillExists = 0;
- my $Count = 0;
- my $Ret = "";
- foreach $_ (@Skills){
- my ($sSkillID, $sCounter, $sExtraCount) = split(/\|/);
- my $sSkillIDX = RemoveSpaces(DecToPoke($sSkillID, "DWORD"));
- my $sExtraCountX = RemoveSpaces(DecToPoke($sExtraCount, "DWORD"));
- my $sCounterX = RemoveSpaces(DecToPoke($sCounter, "DWORD"));
- my $CurSkill .= "$sSkillIDX$sExtraCountX$sCounterX";
- my ($SkillInfo, $SkillAll, $SkillID, $Counter, $ExtraCount) = GetSkillInfo($CurSkill);
- if($DebugMode){
- $Ret .= "$CurSkill | $SkillInfo<br>";
- }else{
- $Ret .= "Found Skill: $SkillInfo<br>";
- }
- }
- return $Ret;
- }
- #######################################################################
- sub ListSkills {
- my $SkillText = $_[0];
- my $SearchLen = length($SkillText);
- $SearchLen -= 8;
- $SearchLen /= 24;
- my $POS = 0;
- # Get Skill Count
- my $Counter = substr($SkillText, $POS, 8);
- if($DebugMode){
- print "$Counter | (Found '$SearchLen' skills)\n";
- }else{
- print "Found '$SearchLen' skills\n";
- }
- # Get all skills
- $POS = 8;
- for(my $count = 0; $count <= $SearchLen; $count++) {
- my $CurSkill = substr($SkillText, $POS, 24);
- if(length($CurSkill) >= 24){
- my ($SkillInfo, $SkillAll, $SkillID, $SCounter, $ExtraCount) = GetSkillInfo($CurSkill);
- if($DebugMode){
- print "$CurSkill | $SkillInfo\n";
- }else{
- print "Found Skill: $SkillInfo\n";
- }
- $POS += 24;
- }
- }
- }
- #######################################################################
- Main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement