ขอบคุณความรู้ดีๆจาก WWW.OPENKORE.COM WWW.THAIKORE.COM WWW.OPKWIN.COM WWW.MOD2PLAY.COM และเวบอื่นๆที่ไม่ได้กล่าวถึงไว้ ณ.ทีนี้ด้วยนะคะ (ขอบคุณเป็นภาษาอังกฤษไว้ด้านบนนานแล้ว แต่เผื่ออาจมองกันไม่เห็นนะคะ เลยขอบคุณอีกรอบ)
เชิญชวนทำบุญแทนการเซทบอทให้โหลดฟรีคะ

ไม่บังคับนะคะ


แต่ใครเอาบอทไปใช้เองไม่ว่ากัน แต่ใครเอาบอทไปใช้ในทางธุรกิจ ไม่บริจาคขอให้จู้ดๆ อิอิ

ขอร้องจากใจ กรุณาอย่านำบอทไปขายเด็ดขาด ไม่ว่ากรณีใดๆทั้งสิ้น

11/20/2553

Plugins locationSkill

package locationSkill;

#
# คำแนะนำเบื้องต้น โดย pmak
# ปลั๊กอินนี้ได้รับใบอนุญาตภายใต้ the GNU GPL
# ลิขสิทธิ์ 2005 by kaliwanagan
# --------------------------------------------------
#
# วิธีการติดตั้ง..:
#
# ใน control\config.txt เพิ่ม:
#
#locationSkill skillname {      # ชื่อสกิลลงพื้นที่จะใช้
#   coords [x, y[, map] ]      # ร่ายสกิืลในพิกัด X ,Y, map (ถ้าเป็นแบบพิกัด x และ y ให้เว้นการร่ายที่ตำแหน่งที่บอทยืน)
#   whenAtCoords [x, y[, range]]   # ร่ายสกิืลเมื่ออยู่ในระหว่าง พิกัด x y + หรือ - ด้วยระยะห่าง range จะร่ายสกิล ตรงที่ตัวเองยืน(เหมือน ออกนอกวงกลมแล้วจะไม่ร่าย range เหมือนรัศมี ประมาณนั้น)
#   lvl [x]            # lv สกิล , ถ้าไม่ระบุค่าเริ่มต้นคือ 10
#   coords_whenGround       # ใส่ชื่อสกิล##เมื่อพื้นที่นั้น(อ้างอิงจากจุดที่จะร่ายสกิล) มีสกิลนั่นลงอยู่ถึงจะร่ายสกิล , ร่ายสกิืลในพิกัด X ,Y, map เมื่อมีสกิลลงพื้นตรงตำแหน่งนั้น
#   coords_whenNotGround      #ใส่ชื่อสกิล##เมื่อพื้นที่นั้น(อ้างอิงจากจุดที่จะร่ายสกิล) ไม่มีสกิลนั่นลงอยู่ถึงจะร่ายสกิล , ร่ายสกิืลในพิกัด X ,Y, map เมื่อไม่มีสกิลลงพื้นตรงตำแหน่งนั้น
#   skillDelay         # ดีเลย์สกิล , ร่ายสกิลหลังจากผ่านไป n วินาที,เริ่มนับเวลาหลังจากที่ใช้สกิล(สกิลเดียวกัน)
#   blockDelayBeforeUse           # ร่ายสกิลหลังจากผ่านไป n seconds,นับช่วงเวลาตั้งแต่เริ่มที่ใช้สกิลนั้ , Before ก่อน ดีเลย์ก่อนใช้สกิล (หน่วยวินาที)
#   blockDelayAfterUse           # ร่ายสกิลหลังจากผ่านไป n seconds,นับช่วงเวลาหลังสกิลนั้ถูกใช้ , After หลัง ดีเลย์หลังใช้สกิล (หน้วยวินาที)
#   hp
#   sp
#   onAction
#   whenStatusActive
#   whenStatusInactive
#   whenFollowing
#   spirit
#   aggressives
#   monsters
#   notMonsters
#   stopWhenHit 0
#   notWhileSitting 0
#   notInTown 0
#   disabled 0
#   inInventory
#}

use strict;
use Plugins;
use Globals;
use Log qw(message warning error);
use AI;
use Skills;

Plugins::register('locationSkill', 'cast skill at a certain location', \&Unload);
my $hook1 = Plugins::addHook('AI_post', \&call);
my $hook2 = Plugins::addHook('packet_skilluse', \&packet_skilluse);

sub Unload {
   Plugins::delHook('packet_skilluse', $hook2);
   Plugins::delHook('AI_post', $hook1);
}

my %skillUse;
my %delay;

sub packet_skilluse {
   my (undef, $args) = @_;
   my $skillID = $args->{'skillID'};
   my $sourceID = $args->{'sourceID'};
   my $x = $args->{'x'};
   my $y = $args->{'y'};
 
   if ($sourceID eq $accountID) {
      $skillUse{$skillID} = 1;
   }
}

sub call {
   if (AI::action eq 'locationSkill') {
      my $args = AI::args;
      if ($args->{'stage'} eq 'end') {
         AI::dequeue;
      } elsif ($args->{'stage'} eq 'skillUse') {
         main::ai_skillUse(
            $args->{'handle'},
            $args->{'lvl'},
            $args->{'maxCastTime'},
            $args->{'minCastTime'},
            $args->{'x'}, $args->{'y'}
         );
         $args->{'stage'} = 'end';
      }
   }
   locationSkill() if (AI::isIdle);
}

sub locationSkill {
   my $prefix = "locationSkill_";
   my $i = 0;
   while (exists $config{$prefix.$i}) {
      if ((main::checkSelfCondition($prefix.$i)) &&
         main::timeOut($delay{$prefix.$i."_blockDelayBeforeUse"}) &&
         main::timeOut($delay{$prefix.$i."_blockDelayAfterUse"})
      ) {
         my $skillObj = Skills->new(name => $config{$prefix.$i});
         unless ($skillObj->handle) {
            my $msg = "Unknown skill name ".$config{$prefix.$i}." in $prefix.$i\n";
            error $msg;
            configModify($prefix.$i."_disabled", 1);
            next;
         }

         my %skill;
         ($skill{'x'}, $skill{'y'}, my $map) = split / *, */, $config{$prefix.$i."_coords"};
         my $pos = main::calcPosition($char);
         $skill{'x'} = $skill{'x'} || $pos->{'x'};
         $skill{'y'} = $skill{'y'} || $pos->{'y'};

         $delay{$prefix.$i."_blockDelayBeforeUse"}{'timeout'} = $config{$prefix.$i."_blockDelayBeforeUse"};
         if (!$delay{$prefix.$i."_blockDelayBeforeUse"}{'set'}) {
            $delay{$prefix.$i."_blockDelayBeforeUse"}{'time'} = time;
            $delay{$prefix.$i."_blockDelayBeforeUse"}{'set'} = 1;
         }
 
         $delay{$prefix.$skillObj->handle."_skillDelay"}{'timeout'} = $config{$prefix.$i."_skillDelay"};
         if ($skillUse{$skillObj->id}) { # set the delays only when the skill gets successfully cast
            $delay{$prefix.$skillObj->handle."_skillDelay"}{'time'} = time;
            $skillUse{$skillObj->id} = 0;
         }

         my %range;
         ($range{'x'}, $range{'y'}, $range{'range'}) = split / *, */, $config{$prefix.$i."_whenAtCoords"};

         my $inRange;
         $inRange = (($pos->{'x'} <= ($range{'x'} + $range{'range'})) &&
                  ($pos->{'x'} >= ($range{'x'} - $range{'range'})) &&
                  ($pos->{'y'} <= ($range{'y'} + $range{'range'})) &&
                  ($pos->{'y'} >= ($range{'y'} - $range{'range'})));
         undef %range;

         if ((checkCoordsCondition($prefix.$i."_coords",\%skill)) &&
            main::timeOut($delay{$prefix.$skillObj->handle."_skillDelay"}) &&
            (($inRange || (!$config{$prefix.$i."_whenAtCoords"}))) &&
            (($map eq $field{'name'}) || !$map)
         ) {
            $skill{'handle'} = $skillObj->handle;
            $skill{'lvl'} = ($config{$prefix.$i."_lvl"}) || 10;
            $skill{'maxCastTime'} = $config{$prefix.$i."_maxCastTime"};
            $skill{'minCastTime'} = $config{$prefix.$i."_minCastTime"};
            $skill{'stage'} = 'skillUse';
            AI::queue('locationSkill', \%skill);
            $delay{$prefix.$i."_blockDelayAfterUse"}{'timeout'} = $config{$prefix.$i."_blockDelayAfterUse"};
            $delay{$prefix.$i."_blockDelayAfterUse"}{'time'} = time;
            $delay{$prefix.$i."_blockDelayBeforeUse"}{'set'} = 0;
            last;
         }
      }
      $i++;
   }
}

sub checkCoordsCondition {
   my $prefix = shift;
   my $coord = shift;

   if ($config{$prefix."_whenGround"}) {
      return 0 unless main::whenGroundStatus($coord, $config{$prefix."_whenGround"});
   }
   if ($config{$prefix."_whenNotGround"}) {
      return 0 if main::whenGroundStatus($coord, $config{$prefix."_whenNotGround"});
   }

   return 1;
}

return 1;

หรือ Download

วิธีการติดตั้ง :

1. นำไฟล์ locationSkill.pl ไปใส่ยัง Plugins
2. ในไฟล์ control/config.txt

ใน control\config.txt เพิ่ม:

locationSkill skillname {      # ชื่อสกิลลงพื้นที่จะใช้
coords [x, y[, map] ]      # ร่ายสกิืลในพิกัด X ,Y, map (ถ้าเป็นแบบพิกัด x และ y ให้เว้นการร่ายที่ตำแหน่งที่บอทยืน)
whenAtCoords [x, y[, range]]   # ร่ายสกิืลเมื่ออยู่ในระหว่าง พิกัด x y + หรือ - ด้วยระยะห่าง range จะร่ายสกิล ตรงที่ตัวเองยืน(เหมือน ออกนอกวงกลมแล้วจะไม่ร่าย range เหมือนรัศมี ประมาณนั้น)
lvl [x]            # lv สกิล , ถ้าไม่ระบุค่าเริ่มต้นคือ 10
coords_whenGround       # ใส่ชื่อสกิล##เมื่อพื้นที่นั้น(อ้างอิงจากจุดที่จะร่ายสกิล) มีสกิลนั่นลงอยู่ถึงจะร่ายสกิล , ร่ายสกิืลในพิกัด X ,Y, map เมื่อมีสกิลลงพื้นตรงตำแหน่งนั้น
coords_whenNotGround      #ใส่ชื่อสกิล##เมื่อพื้นที่นั้น(อ้างอิงจากจุดที่จะร่ายสกิล) ไม่มีสกิลนั่นลงอยู่ถึงจะร่ายสกิล , ร่ายสกิืลในพิกัด X ,Y, map เมื่อไม่มีสกิลลงพื้นตรงตำแหน่งนั้น
skillDelay         # ดีเลย์สกิล , ร่ายสกิลหลังจากผ่านไป n วินาที,เริ่มนับเวลาหลังจากที่ใช้สกิล(สกิลเดียวกัน)
blockDelayBeforeUse           # ร่ายสกิลหลังจากผ่านไป n seconds,นับช่วงเวลาตั้งแต่เริ่มที่ใช้สกิลนั้ , Before ก่อน ดีเลย์ก่อนใช้สกิล (หน่วยวินาที)
blockDelayAfterUse           # ร่ายสกิลหลังจากผ่านไป n seconds,นับช่วงเวลาหลังสกิลนั้ถูกใช้ , After หลัง ดีเลย์หลังใช้สกิล (หน้วยวินาที)
hp
sp
onAction
whenStatusActive
whenStatusInactive
whenFollowing
spirit
aggressives
monsters
notMonsters
stopWhenHit 0
notWhileSitting 0
notInTown 0
disabled 0
inInventory
}

ตัวอย่าง

locationSkill Ice Wall {
target 100 100
whenCoords gld_dun01 102 100
target_whenNotGround Ice Wall
}

locationSkill Storm Gust {
target 95 100
whenCoords gld_dun01 102 100
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

AddThis

Share |