Wednesday, December 19, 2007

FF6 ภาษาไทย

ช่วงนี้ ติด FF6 thai (เล่นแล้วนึกถึงสมัยเด็กๆ ตอนไปเล่นกะ ไอ้เพื่อนบาส และ ไอ้เพื่อนเอ ^^")
เครดิตทั้งหมดมอบให้ ทีมงาน www.kenghot.com นะครับผมเป็นแค่ผู้ใช้เท่านั้น
ส่วนตัว: ผมว่าทางทีมงานต้องพยายามมากๅ ในการ hack rom GBA FF6 เพื่อ แก้จากภาษา ญี่ปุ่น มาเป็นภาษาไทยทั้งเกมส์ ดังนั้น คนที่อยากเล่น อย่าเอาตัวแพทไปแจกหรือขายคับ
ให้คนทีจะ่เล่น มาโหลดตัว patch จากเวปหลักเอง

สำหรับเพื่อนๆ ที่สนใจอยากจะเล่น มีข้อตกลงในการโหลดแพทอยู่เพียงว่า
1. จะต้องไปสมัคร สมาชิกเวป www.kenghot.com
2. อ่านเงื่อนไขและทำตามในกระทู้ Download Patch for FF6 Thai (แค่โพส 1 โพสเอง คงไม่ยากเกินไป)

เท่านี้ก็จะได้ ตัว patch
ส่วนเรื่องการเล่นบนคอม สิ่งที่ต้องเตรียมหลักๆ
1. emulator (VisualBoyAdvance-1.8.0-beta3) ตัวแปลง ให้เล่น GBA บนคอมได้ โหลด
2. Rom FF6[JP] (2599- Final Fantasy VI Advance (J)(WRG).gba) ตัว rom ต้นฉบับ โหลด
3. จอย (ไม่มีก็ใช้ keyboard ก็ได้) ถ้ามี joy play1,2 อยู่ แนะนำให้ซื้อตัวแปลง ราคาราวๆ 150฿ มาเสียบ port USB
4. บทสรุป 1.คุณ 2-D cAnN@Bis / 2.คุณ olan [webmaster - www.gamedee.2ya.com]

VDO ตัวอย่าง Trailer : Final Fantasy 6 Thai (July 2007)

สำหรับการใช้ cheat ของ VisualBoyAdvance(VBA) ไม่ยาก เหมือนใช้ cheat ของ emu ทั่วๆไป
ใครอยากใช้ comment ไว้แล้วกัน (บางคนอคติไม่อยากใช้ บางคนก็อยากใช้ ฯลฯ นานาจิตตัง)

Wednesday, December 5, 2007

วันนี้โดน hack อีกแล้ว

วันนี้ข้าพเจ้าโดน hack โดย ตาคริต thaishadow +.,+''

พลาดเอง ระหว่างที่คุยๆ อยู่ใน IRC ต้องเขียน code php มาลอง script บางอย่าง
ขณะที่เขียนๆ อยู่ ตาคริตก็เปรยๆมาว่า แกล้งตาเล็กดีกว่า ... เอาแล้วไงเริ่มเอะใจแล้วตู
ซักพัก (ชั่วเวลาแค่กระพริบตา) เห็นหน้าจอ command-dos วิ่งมาแว๊ปหนึ่ง (วูปมาแล้วหายไป)...
ก็ดันยังไม่เอะใจ (ตอนนั้น ตาคริต up shell เข้ามาในเครื่องแล้วสั่ง dir ดู directory ที่เครื่องไปแล้ว)
แต่ก็มาพลาดจนได้ ที่ไม่ได้ตั้ง pass ในส่วนของ Phpmyadmin

เดาแนวทางการ hack ของตาคริตว่า
1. scan port ผม พอเห็นว่าเปิด port XX เลย connect เข้ามา (ซึ่งก็ไม่มี index ขวางไว้ซะด้วย)
2. คงเดาว่าต้องมี directory phpmyadmin
3. พอเห็นว่า phpmyadmin ไม่ได้ตั้งพาส จึงยัด code มาใน phpmyadmin สร้าง file shell ไว้บนเครื่อง
4. ใช้ shellที่สร้างไว้ ให้คำสั่ง command-dos (dir) ดู file ในเครื่อง
5.ไม่รู้ทำไรต่อมั่ง
6. ลบ access log
7. ทักมาบอกเรื่อง hack

เสียวว่าข้อ 5 ตาคริตจะทำไว้เยอะ +.,+ ไม่ใช่แค่แกล้ง ธรรมดาๆ ตะหงิดๆ แฮะ
เพราะ log โดนลบ เลยสงสัยนะเนี้ย ว่าแอบยัดของแถมให้ +.,+''

...

เรื่องของเรื่องคือ ช่วงนี้ไม่ได้ใช้ appsrv แล้ว
แต่หันมาใช้ USB Webserver แทน เพราะเห็นว่าขนาดเล็ก+ใช้สะดวกกว่าเยอะ
เพราะส่วนใหญ่จะไม่ได้ run โปรแกรมนี้ เครื่องที่ใช้ก็จะไม่เป็น sv ... ก็จะไม่มีใคร connect มาได้
จะเปิดโปรแกรมก็ต่อเมื่อจะลอง code html, javascript, php ฯลฯ ซึ่งก็คือตอนที่โดน hack - -''

เพราะตาคริต ข้าพเข้าเลย update USB Webserver ซะ
เซ็ตพาส phpmyadmin ตั้งค่า php.ini ใหม่ ... นอกนั้นยังไม่ได้ทำไร - -''

ปล. แต่พี่ท่านเล่น ลบ access log ที่ย่องเข้ามา เลยไม่รู้ว่าทำอะไำรเครื่องไปบ้าง
สงสัยพรุ่งนี้ต้องไล่เช็ค process ดูหน่อย ... บบว่าวันนี้ ง่วงนอน ซะแล้ว +.,+''





Thursday, September 13, 2007

shellTab v1.0.0

วันนั้นคุยกับท่านเคนเรื่อง addons ของ firefox
ซึ่งผมเสนอว่าน่าจะมี addons ที่มีความสามารถ
ที่นำ link shell (หรือ คำสั่ง sql injection) ไปต่อท้าย url ให้อัตโนมัติ
หาโหลดมันก็ไม่มี เลยต้องทำเอง

เนื่องจากผมยัง ทำ file ไปเป็น .jar แล้วทำเป็น .xpi ยังไม่เป็น
[คือ ทำ file ติดตั้งให้ firefox ยังไม่เป็น น่ะ เพิ่งอ่านได้ 2 วัน ได้ประมาณนี้ก็พอรับได้แระ]
ดังนั้น version 1.0.0 เลยต้องใช้วิธีลูกทุ่งๆ ไปก่อนนะ

ขั้นตอนการติดตั้ง

แตก rar แล้ว นำ folder ข้างใน [shellTab@windows98SE.thaikore.com] ไปวางไว้ที่ folder extensions ของ firefox
เช่นของผม อยู่ที่ C:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox\Profiles\6eti0eqk.default\extensions

ก็จะเป็น

C:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox\Profiles\6eti0eqk.default\extensions\shellTab@windows98SE.thaikore.com

:: คำเตือน ::
ชื่อ folder ใช้ได้แค่ ชื่อ shellTab@windows98SE.thaikore.com เท่านั้น
[ถ้าเปลี่ยนชื่อเป็นอื่น จะใช้งานไม่ได้นะครับ ^^]


ขั้นตอนการใช้งาน
1. ไฮไล๊ ข้อความ [หรือ link รวมตั้งแต่ http:// .... ไปจนถึง .php?= ]
2. คลิกขวา เลือก use Shell Tab:
3. เลือก shell ที่เรา ตั้งไว้[แก้ไขได้จาก options]




การเพิ่ม link shell หรือจะเป็น sql injection ก็ได้[อธิบายคราวๆ นะ คิดว่าไม่ยาก]
1. ไฮไล๊ แล้วเลือก option หรือ Tools>add-ons จากนั้นหา shellTab แล้วเลือก option
2. แถบ URLs ตั้งชื่อ shell ในช่อง Name และใส่ link shell (หรือ code sql injection) ลงไปในช่อง URL .. เลือก Add
3. กด Ok




ใครอยากจะเอาไปลอง คลิก Download เลยจ้า

Friday, September 7, 2007

Me and My Mom

อยู่ๆ เกิดอยาก เขียนได' เกี่ยวกับแม่ซะงั้น
หน้านี้ แม้จะยังไม่เริ่มเขียน แต่คิดว่าท่าทางคงจะออกแนว บ่นๆ นะเนี้ย

การศึกษา
พี่ปี้ชอบโม้บ่อยๆ ว่าแม่น่ะจบ ปวช. นะเว้ย ... ไม่ใช่ขี้ๆ
ซึ่ง ปวช. สมัยนั้นไม่มีหรอกอย่าไปบ้าตามมัน
คุณตาของผมน่ะออกจะหัวโบราณ ที่คิดว่าลูกสาวน่ะไงๆ
ก็ต้องอยู่เฝ้าบ้าน ดังนั้นแม่จึงได้เรียนแค่ ป.4 แล้วให้มาอยู่บ้านเฉยๆ
อ้าว .. แล้วทำไมเจ้าปี้ มันถึงบอกว่า แม่จบ ปวช. น่ะเหรอ ?
ก็เพราะแม่ จบมาจาก .4 รร. ัดัน ไง ... ถูกของมัน แม่จบ ป ว ช. จริงๆ

โค-ตะ-ระบุตร
แม่มีโค-ตะ-ระบุตร 3 นาย ได้ปวดหัวกับลูก 3 คนนี้ตลอดเวลา
เพราะสร้างแต่เรื่อง แต่ละคนอายุห่างกัน 5-6 ปี

- คนโต พี่ปิ๊ก
จบ ม.3 แล้วไม่ยอมเรียนต่อ
เป็น doctor ... เพราะสามารถฉีดยาเข้าเส้นด้วยตัวเองได้
แม่ให้ี่พี่ปิ๊กบวช เผื่อว่าจะดีขึ้น ... บวชได้ 3 วัน กลับมานอนเหลืองอยู่ที่บ้านซะงั้น (มาทั้งจีวรเลยเหลือง)
มีครั้งหนึ่งพวกตำรวจลูกน้องพ่อมาขออนุญาติ แม่ เพื่อจะจับกลุ่มเพื่อนของพี่ปิ๊ก
แม่เลยบอกว่าจับพี่ปิ๊กไปด้วยแล้วกัน (กะจะให้เลิกยา)
... แล้วเขียน สำนวนให้พี่ปิ๊กติด แค่ 6 เดือน
เข้าไปอยู่แบบ เด็กฝาก ไม่ต้องทำอะไร กิน-นอนๆ ออกมาอ้วนมากๆ
แม่ชอบใจใหญ่ ตอนนั้น พ่อจะไปฐาน พอดี พี่ปิ๊ก
เลยตามพ่อขึ้นเครื่องบินไปอยู่ตามหมู่บ้านกะเหรี่ยง
[พ่อผมเป็น ตำรวจตระเวนชายแดน มักอยู่ตามฐานต่างๆ]
พอกลับมา พี่ปิ๊กก็ดัน ไปนอนเล่นบ้านเอเย่นอีก
ตำรวจบุกไปจับพอดี ไม่รู้ว่าพี่ปิ๊กอยู่ด้วย ก็เลยโดนจับรอบสอง
... แต่รอบนี้ พี่ปิ๊กเป็นมาเลเรีย [พ่อ+ลูกน้องชุดที่กลับมาก็เป็นมาเลเรียหมด]
อาการของมาเลเรีย จะเหมือนคนลงแดงมาก คือ ไม่มีเรี่ยวแรง ปวดกระดูก และมีไข้
ซึ่งคนคุม จะคิดว่า เป็นอาการปกติของพวกหักดิบ
พ่อ+ลูกน้อง ต้องส่งตัวมารักษาที่กรุงเทพ ตั้งนาน
ส่วนพี่ปิ๊กของผมเสียชีวิตในคุก เพราะ มาเลเรียขึ้นสมอง
... สงสารตอนแม่ร้องให้ที่งานศพพี่ปิ๊กมากๆๆๆๆ
แม้ลูกจะเป็นคนดีหรือเลวขนาดไหน ... แต่ลูกก็เป็นลูกของคนเป็นแม่ วันยังค่ำ

- คนกลาง พี่ปี้
จบ ปวช.ช่างยนต์ เทคโนสยาม
เป็น สัตว์แพทย์ .... เพราะแต่ก่อนพี่แกมีม้าขายเป็นคอกๆ
เป็น นักสะสม .... ขนาดพ่อผมเป็นตำรวจ ยังมีปืนน้อยกว่าลูกคนนี้เลย
แม่มักสั่งให้ลูกน้องพ่อ เอาปืนพี่ปี้ขึ้นเครื่องบินไปทิ้งในป่าตั้งหลายกระบอก
คติ "ปี1พกมีด ปี2พกปืน ปี3พกระเบิด"
ตอนเรียนจบได้เพราะแม่ต้องคอยไปพบอาจารย์ แม่ไป รร. บ่อยกว่าลูกซะอีก
ตอนนี้พี่ปี้มีลูกสาว 1 คน ผมก็หวังว่าคงจะกลับตัวได้แล้ว(มั้ง)

- คนเล็ก ผม
ตอนนี้ยังเรียนไม่จบซักที
ผมโชคดีมั้ง เพราะโตมาตอน พ่อเริ่มยศสูง ลูกน้องพ่อเยอะ พี่ๆ ก็เป็นขาใหญ่
... แต่ตอนเด็กๆ(ไม่นับตอนวัยรุ่นนะ)ผมติดเกมส์ เลยไม่รู้เรื่องอะไรเค้าหรอก
พี่ปี้ชอบพูดกรอกหูบ่อยๆ ว่า
"้เกิดเป็นลูกตำรวจ ต้องเกเร ถ้าเกิดเป็นลูกชาวบ้านธรรมดา
เวลามีเรื่องจะช่วยอะไรได้มั้ย ??"
ผมก็เห็นว่าจริงเพราะเท่าที่เห็น ลูกตำรวจ ไอ้ที่เกเรก็ โค-ตะ-ระ เกเรทุกคน
แต่ผมรู้อยู่อย่างหนึ่งว่าผมเคยรับปากแม่ว่า "จะไม่ติดยา ไม่ดูดบุหรี่"
แค่ 2 อย่างนี้ยังทำได้จนถึงปัจจุบัน แม่ผมก็ดีใจแล้ว

ผมว่า ลูกแม่ทุกคน คิดและพูดเหมือนกันหมดว่า
"ชาติหน้า ชาติไหน ก็ขอเกิดเป็นลูกแม่คนนี้ ทุกชาติไป"


แต่ก่อนตอนเด็กๆ เท่าที่จำได้ แม่กับผมอยู่ด้วยกันแทบจะตลอด
แต่ไหง๋พอมาเรียนกรุงเทพ 6-7 ปีมานี้ ได้เจอแม่ไม่ถึง 3 วัน
โทรคุยก็แค่ เดือน-2เดือน/ครั้ง ฟ๊ะ -*-

ปล. blog นี้หัวเรื่องน่าจะเกี่ยวกับแม่แต่ไหงกลายพันธ์ออกเรื่องความเลวลูกๆหว่า -*-

Thursday, August 30, 2007

ชื่อนี้ท่านได้แต่ใดมา ....

คอมเครื่องแรกที่ใช้ตอน ม.5 [7-8ปีที่แล้ว]

CPU : PII 300Mhz
Ram : 64Mb
VGA : 4Mb
OS : windows98 Second Edition

ตอนนั้น
ซื้อคอมมาทั้งๆ ที่ใช้คอมไม่เป็น

ตอนนั้น
shutdown ก็ไม่เป็น เวลาปิดก็กด ปุ่ม power ไปเลย
powersupply แบบเก่า สมัยนั้นยังไม่มี แบบ ATX กดปุ๊ปดับปั๊บ

ตอนนั้น
เวลาเปิดคอมแล้วมัน scandisk เพราะไม่ shutdown
ผมคิดว่ามันกำลัง scan ไวรัสก่อนใช้งาน [ถ้าเป็นตอนนี้ เด็กป.3 รู้เข้า โดนด่าว่าโง่ นะเนี้ย]

ตอนนั้น
ขนาดโง่ๆ ยังรู้จักกลัวไวรัส

ตอนนั้น
หลังจากซื้อ 3 วัน windows ก็เลยเปิดไม่ติด [โทรเรียกช่าง ซ่อม]

ตอนนั้น
ไม่รู้ว่าช่างทำอะไรกับคอม มันเลยติด [เค้า format ลงใหม่ -*-]

ตอนนั้น
หลังจากซื้อ 7 วัน windows ก็เปิดไม่ติดอีก [ช่างก็มา format ให้ใหม่อีก]

สรุป
windows98 Second Edition (windows98SE)
คือ ระบบปฎิบัติการแรก ที่ผม พังมันได้เร็วที่สุด
จึงกลายมาเป็นใช้ชื่อนี้มาจนปัจจุบัน lol

ปล. แต่ก่อนซัก 5 ปีที่แล้วใช้ IIhJIISJIISJ, KeeKee, sonic_k9 [สมัย ICQ,IRC ยังรุ่งๆ]

google: keyword "concat "

เนื่องมาจาก ช่วงนี้ยังหมกหมุ่นเรื่อง hackๆ อยู่
ก็เลยอ่านกระทู้นู้นอ่านกระทู้นี่ กระทู้ละหลายๆรอบ
ยิ่งอ่านยิ่งสงสัย ตามประสา พอสงสัยตรงนู้นตรงนี้ก็จะคุ้ย google ไปเรื่อย
ความที่คนเราไม่เคยรู้มาก่อนจะเข้าใจอะไรยากก็ไม่แปลก
(โดนว่าโง่ก็ยอม *-*)

เข้าเรื่องดีกว่า ... วันนี้ไปสงสัย concat ใน blog คุณ Zelandiax
ในหัวข้อ SQL Injection อีกแล้วเหรอ ด้วยความสงสัย
ก็ไปเปิด google ไปคุ้ยหาเรื่องการใช้ concat ว่ามันใช้ไง

หาไปหามาก็ไปเจอหัวข้อ รวม field หมายๆ field ด้วย CONCAT

จากนั้นก็ backๆ next ๆ เรื่อยๆ [ได้เวปความรู้ใหม่ที่เป็นภาษาไทย ดีใจ อิอิ]
ในระหว่างกำลัง อ่านนู้นอ่านนี่ อยู่ซักพัก ... ไปเจอเนื้อเพลง [จากหน้านี้]

You say eether and I say eyether,
You say neether and I say nyther;
Eether, eyether, neether, nyther -
Let's call the whole thing off !

You like potato and I like po-tah-to,
You like tomato and I like to-mah-to;
Potato, po-tah-to, tomato, to-mah-to -
Let's call the whole thing off !

เพลงนี้เกี่ยวกับคนสองคนที่แตกต่างกัน แต่รักกัน และพยายามที่จะเข้าใจซึ่งกันและกัน พยายามประณีประณอม และหาพื้นฐานการอยู่ร่วมกัน


จากประโยคนี้ฟาดหัวดังโป๊ก ความหมายของเพลงสะดุดตา
น่าสนใจกว่า concat (ซะงั้น) ทีนี้ล่ะเลยลืมเรื่อง concat เป็นปลิดทิ้ง
เปลี่ยนเป็นคุ้ย googel หาเพลงนี้แทนซะงั้น -*-

แต่จากการได้คุ้ยๆ ก็ได้พบว่า ฝรั่งใช้ประโยคนี้ในการเปรียบเทียบต่างๆเยอะมาก
เช่น sun vs microsoft [ทำให้หาเพลงได้ยากขึ้นอีก นะเนี้ย]

ปล. หน้านี้ก็เลย จบแบบยังงงๆ กับการใช้ concat แต่ได้เพลง มาแทน ฮ่าๆ

Sunday, August 26, 2007

Learn to Program (Ruby)

... จากการที่อ่านนู้นอ่านนี้เยอะทำให้เริ่มลืมว่าอ่านจากไหนมาบ้าง
แล้วก็พาลลืมไปว่า เคยอ่านเรื่องอะไรไปแล้วบ้าง ... [ขี้ลืมโคตรๆ]
แล้วคนขี้ลืมมันก็ต้องจด จะได้จำ แต่ถ้าจดในกระดาษ
เดี๋ยวก็จะลืมอีก ว่าไปจดทิ้งไว้ไหนเอาเป็นว่าต่อไปนี้
จะจดลง blog ก็แล้วกัน update blog ไปในตัว (lol~)

เริ่มจากวันนี้ อ่าน forun ในเวป citec อยู่ไปเจอบทความหนึ่ง
เรื่อง การ Remote ทะลุ Firewall โดยใช้ Crossloop
ซึ่งอ้างอิงไปที่ blog ของคุณ meddlesome

... ก็เลยตามไปแอบอ่านซะหน่อย [เป็นงี้ประจำ ^^"]
อ่านผ่านๆ ไปราวๆ 10 กว่าหน้า ... เจอเข้ากับ หัวข้อ
Try Ruby ! Tutorial Online อย่างง่าย(โครต)

... ได้ยินแว่วๆ มาหลายทีแล้วว่าเจ้าภาษา Ruby เนี้ยเป็นภาษาที่เขียนง่าย
แต่ก็ไม่ได้สนใจอ่านดูซักกะที พอดีช่วงนี้เรียน php+MySQL อยู่ด้วย
กำลังง่วนอยู่กับการอ่าน code ชาวบ้านและปวดหัวกับการเขียน code เอง *-*
ก็เลยไปป้วนเปี้ยนดูจากใน link ที่อ้างอิงมาซักหน่อยดีกว่าเผื่อมี idea อะไรใหม่ๆ

... อ่านไปอ่านมา ไปติดใจอยู่ที่่ หัวข้อ
Learn to Program (Thai Edition) by poonlap
ซึ่งแปลมาจาก Learn to Program ของนาย Chris Pine อีกต่อหนึ่ง
จากการที่ได้อ่านผ่านๆ แล้วรู้สึกอิจฉาที่เค้าเขียนได้ดี อ่านแล้วเข้าใจง่ายจังแฮะ
ผมก็เคยพยายามที่จะสอนคนอื่นหลายอย่าง แต่ก็ไม่ได้ผล -.,-''


-----------------------------
การอธิบายสิ่งที่เรารู้สึกว่าง่าย ...
หลายๆ ครั้งมันก็ไม่ได้ง่ายเหมือนที่เรารู้สึกเสมอไป

Saturday, June 30, 2007

responseOnMatrixNumber v1.0.2a

  1. ###########################
  2. # responseOnMatrixNumber v1.0.2a
  3. #
  4. # For OpenKore 1.9.x
  5. #
  6. # (test in Creamsoda server >> http://creamsoda.i.am) 23/6/250
  7. #
  8. # NOTE: This plugin meant to be use with hakore's reactOnNPC
  9. package responseOnMatrixNumber;
  10. use strict;
  11. use Plugins;
  12. use Utils;
  13. use Globals qw(%talk);
  14. use Commands qw(run register unregister);
  15. use Log qw(message debug);
  16. use I18N qw(bytesToString);
  17. my %reactOnNPC;
  18. my @actOnNPC;
  19. my $num1;
  20. my $num2;
  21. my $num3;
  22. my $all_line;
  23. my $line;
  24. my $matrix;
  25. my @array;
  26. my @NPCresponses;
  27. Plugins::register('responseOnMatrixNumber', "response On MatrixNumber", \&Unload);
  28. my $cmd = Commands::register(['MatrixNumber', 'talk response On MatrixNumber', \&onMatrixCmd]);
  29. my $hooks = Plugins::addHooks(
  30. ['packet/npc_talk', \&onNPCTalk],
  31. ['packet/npc_talk_close', \&onClose]
  32. );
  33. sub onUnload {
  34. Plugins::delHooks($hooks);
  35. Commands::unregister($cmd);
  36. undef %reactOnNPC;
  37. undef @actOnNPC;
  38. undef $num1;
  39. undef $num2;
  40. undef $num3;
  41. undef $all_line;
  42. undef $line;
  43. undef $matrix;
  44. undef @array;
  45. undef @NPCresponses;
  46. }
  47. sub onClose {
  48. undef %reactOnNPC if defined %reactOnNPC;
  49. }
  50. sub onNPCTalk {
  51. my (undef, $args) = @_;
  52. my $msg = I18N::bytesToString(unpack("Z*", substr($args->{RAW_MSG}, 8)));
  53. if (!defined %reactOnNPC || $reactOnNPC{action}) {
  54. undef %reactOnNPC if defined %reactOnNPC;
  55. $reactOnNPC{index} = 1;
  56. $reactOnNPC{msg}[$reactOnNPC{index}] = $msg;
  57. } else {
  58. $reactOnNPC{index}++;
  59. $reactOnNPC{msg}[$reactOnNPC{index}] = $msg;
  60. }
  61. debug "01 $reactOnNPC{msg}[1]\n", "success";
  62. debug "02 $reactOnNPC{msg}[2]\n", "success";
  63. debug "03 $reactOnNPC{msg}[3]\n", "success";
  64. debug "04 $reactOnNPC{msg}[4]\n", "success";
  65. debug "05 $reactOnNPC{msg}[5]\n", "success";
  66. debug "06 $reactOnNPC{msg}[6]\n", "success";
  67. debug "07 $reactOnNPC{msg}[7]\n", "success";
  68. debug "08 $reactOnNPC{msg}[8]\n", "success";
  69. debug "09 $reactOnNPC{msg}[9]\n", "success";
  70. debug "10 $reactOnNPC{msg}[10]\n", "success";
  71. }
  72. sub onCheckMatrix {
  73. my (undef, $args) = @_;
  74. undef @actOnNPC if defined @actOnNPC;
  75. my $i = 0;
  76. for ($i=3;$i<8 ;$i++) {
  77. push (@actOnNPC , $reactOnNPC{msg}[$i]);
  78. }
  79. undef %reactOnNPC if defined %reactOnNPC;
  80. my $matrix = '';
  81. my $all_line = '';
  82. my $line = '';
  83. my @array = '';
  84. for $matrix (@actOnNPC) {
  85. @array = split(/\^/,$matrix);
  86. foreach $line (@array) {
  87. if ($line =~ s/\b[f|F,7|8|9|f|F]{6}//) {
  88. $line =~ s/./=/g;
  89. } else {
  90. $line =~ s/\b[a-f0-9A-F]{6}//;
  91. $line =~ s/./#/g;
  92. }
  93. $all_line .= $line;
  94. }
  95. }
  96. # get num 1
  97. $num1 = substr($all_line, 0, 5);
  98. $num1 .= substr($all_line, 19, 5);
  99. $num1 .= substr($all_line, 38, 5);
  100. $num1 .= substr($all_line, 57, 5);
  101. $num1 .= substr($all_line, 76, 5);
  102. debug "num 1 $num1\n", "success";
  103. # get num 2
  104. $num2 = substr($all_line, 7, 5);
  105. $num2 .= substr($all_line, 26, 5);
  106. $num2 .= substr($all_line, 45, 5);
  107. $num2 .= substr($all_line, 64, 5);
  108. $num2 .= substr($all_line, 83, 5);
  109. debug "num 2 $num2\n", "success";
  110. # get num 3
  111. $num3 = substr($all_line, 14, 5);
  112. $num3 .= substr($all_line, 33, 5);
  113. $num3 .= substr($all_line, 52, 5);
  114. $num3 .= substr($all_line, 71, 5);
  115. $num3 .= substr($all_line, 90, 5);
  116. debug "num 3 $num3\n", "success";
  117. # get line for print
  118. my $line1 = substr($all_line, 0, 19);
  119. my $line2 = substr($all_line, 19, 19);
  120. my $line3 = substr($all_line, 38, 19);
  121. my $line4 = substr($all_line, 57, 19);
  122. my $line5 = substr($all_line, 76, 19);
  123. message "$line1\n", "success";
  124. message "$line2\n", "success";
  125. message "$line3\n", "success";
  126. message "$line4\n", "success";
  127. message "$line5\n", "success";
  128. undef $all_line;
  129. undef $line;
  130. undef $matrix;
  131. undef @array;
  132. undef @actOnNPC if defined @actOnNPC;
  133. undef %reactOnNPC if defined %reactOnNPC;
  134. }
  135. sub onMatrixCmd {
  136. my (undef, $args) = @_;
  137. onCheckMatrix;
  138. my %digit = ("######===##===##===######" => 0,
  139. "==#===##====#====#==#####" => 1,
  140. "==#====#====#====#====#==" => 1,
  141. "==##====#====#====#====#=" => 1,
  142. "#####====#######====#####" => 2,
  143. "#####====######====######" => 3,
  144. "#===##===######====#====#" => 4,
  145. "===#===##==#=#=#####===#=" => 4,
  146. "######====#####====######" => 5,
  147. "#====#====######===######" => 6,
  148. "######====######===######" => 6,
  149. "#####====#====#====#====#" => 7,
  150. "#####===#===#===#====#===" => 7,
  151. "######===#######===######" => 8,
  152. "######===######====######" => 9);
  153. my $resutl1 = '';
  154. my $resutl2 = '';
  155. my $resutl3 = '';
  156. foreach (keys %digit) {
  157. if ($_ eq $num1) {
  158. $resutl1 = $digit{$_}
  159. }
  160. if ($_ eq $num2) {
  161. $resutl2 = $digit{$_}
  162. }
  163. if ($_ eq $num3) {
  164. $resutl3 = $digit{$_}
  165. }
  166. }
  167. $cmd = "talk $args " .$resutl1.$resutl2.$resutl3;
  168. message "[MatrixNumber] Executing command \"$cmd\".\n", "success";
  169. #add Delay 1-5 sec
  170. message "*** Delay before $cmd ***.\n", "connection";
  171. my $startTime = time;
  172. while (1) {
  173. last if (timeOut($startTime,5));
  174. }
  175. Commands::run($cmd);
  176. Commands::run("tele");
  177. undef $resutl1;
  178. undef $resutl2;
  179. undef $resutl3;
  180. undef $num1;
  181. undef $num2;
  182. undef $num3;
  183. }

Wednesday, June 27, 2007

perl function

############
# code : Array
@book=("PHP","Perl");
@morebook=("database","internet");
@morebook=("database","internet",@book);
# Output: @morebook=("database","internet","PHP","Perl");

############
# Code: scalar(@arr)
# This function forces an array or hash to be interpreted as a scalar.
# This is useful to find out the number of elements in an array or hash.
# Use this function to find out the size of an array or hash, 
# preparatory to iterating over it in a loop and processing its contents.
# define array
@data = ('apple', 'peach', 'banana');
# get size
print "The array has " . scalar(@data) . " elements";
# Output: The array has 3 elements


############
# Code: exists $hash{$key}
# This function can be used to test if a particular key exists in a hash.
# define hash
%data = ('king' => 'queen', 'prince' => 'princess');
# check if key exists
if (exists $data{'king'}) {
  print "Found!";
}
# Output: Found!


############
# Code: push(@arr, $val)
# push จะเพิ่มค่าตัวแปรให้กับตัวแปรตัวสุดท้าย
# define array
@data = ('a', 'b', 'c');
# add element
push(@data, 'd');
print "@data ";
# Output: a b c d


############
# Code: pop(@arr)
# define array
@data = ('a', 'b', 'c');
# add element
pop(@data);
print "@data ";
# Output: a b


############
# Code: unshift(@arr, $val)
# This function adds a new element to the beginning of an array.
# define array
@data = ('a', 'b', 'c');
# add element
unshift(@data, 'z');
print "@data ";
# Output: z a b c


############
# Code: shift(@arr)
# This function removes an element from the beginning of the array.
# define array
@data = ('a', 'b', 'c');
# remove element
shift(@data);
print "@data ";
# Output: b c


############
# Code: splice(@arr, $offset, $length, @arr2)
# This function removes a segment of an array, starting from the element at position $offset 
# and continuing until $length elements have been removed. If the optional @arr2 argument is present,
# the extracted segment is replaced with the element of array @arr2.
# Use this function to extract subsets of an array, or to replace elements in an array with new values.
# define array
@data = ('king', 'queen', 'knight', 'bishop');
# remove middle elements
splice(@data, 1, 2);
print "@data ";
# Output: king bishop


############
# Code: delete $hash{$key}
# This function deletes a key from a hash, together with its associated value.
# Use this function to remove elements from a hash. 
# define hash
%data = ('king' => 'queen', 'prince' => 'princess');
# remove element with key 'king'
delete $data{'king'};


############
# Code: split($delim, $str)
# This function decomposes a string by splitting it on delimited $delim and returns the individual 
# components as elements of a numerically-indexed array. These elements can then be processed in a loop.
# Use this function to split comma-delimited lists into independent array elements.
# define string
$str = "cat,hog,dog,log";
# split string on comma delimiter
@words = split(",", $str);
foreach $w (@words) {
  print "$w\n";
}
#Output:
#cat
#hog
#dog
#log


############
# Code: join($sep, @arr)
# This function joins the various elements of an array into a single string, 
# using the value of $sep to separate them from each other.
# Use this function to create a single string from multiple independent array elements,
# using spaces, commas or other separators to glue them together.
# define array
@data = ("Harry", "Joan", "Tom");
# create string from array
print join(" and ", @data) . " are friends";
# Output: Harry and Joan and Tom are friends


############
# Code: keys(%hash)
# This function returns the keys of a hash as a numerically-indexed array. 
# The function is the counterpart of the values() function, discussed next.
# Use this function to extract the keys of a hash into a separate data structure for further processing.
# define hash
%data = ('a' => 'apple', 'b' => 'bat', 'c' => 'cat');
# get and print hash keys
@keys = keys(%data);
print "@keys\n";
# Output: c a b


############
# Code: values(%hash)
# This function returns the values of a hash as a numerically-indexed array.
# The function is the counterpart of the keys() function, discussed previously.
# Use this function to extract the values of a hash into a separate data structure for further processing.
# define hash
%data = ('a' => 'apple', 'b' => 'bat', 'c' => 'cat');
# get and print hash keys
@vals = values(%data);
foreach $v (@vals) {
  print "$v ";
}
# Output: cat apple bat


############
# Code: reverse(@arr)
# This function reverses the order of elements of an array, placing the last element first and vice-versa.
# Use this function to re-sort an array's elements in the opposite direction to their current sort.
# define array
@data = ('apple', 'peach', 'banana');
# reverse array
@rev = reverse(@data);
print "@rev ";
# Output: banana peach apple


############
# Code: sort(@arr)
# This function can be used to sort the elements of an array or hash. By default,
# this function sorts using standard string comparison rules; however,
# you can override this by passing it the name of a custom sorting subroutine.
# Use this function to reset the internal order of elements of an array,
# or to arrange elements alphabetically, numerically or in a custom order.
# define hash
@data = ('oranges', 'peaches', 'grapes', 'apples', 'lemons');
# sort alphabetically
@sorted = sort(@data);
print "@sorted ";
# Output: apples grapes lemons oranges peaches


############
# Code: foreach
@myNames = ('Larry', 'Curly', 'Moe');
foreach (@myNames) {
  print $_;
}
# Output: LarryCurlyMoe


############
# Code: foreach
@myNames = ('Larry', 'Curly', 'Moe');
foreach $name (@myNames) {
  print $name;
}
# Output: LarryCurlyMoe


############
# Code: qw
# quote word in Perl
@myNames1 = ('Jacob', 'Michael', 'Joshua', 'Matthew', 'Alexander', 'Andrew');
@myNames2 = qw(Jacob Michael Joshua Matthew Alexander Andrew);
@myNames3 = qw/Jacob Michael Joshua Matthew Alexander Andrew/;
print "\@myNames1 = @myNames1\n";
print "\@myNames2 = @myNames2\n";
print "\@myNames3 = @myNames3\n";
# Output: 
# @myNames1 = Jacob Michael Joshua Matthew Alexander Andrew
# @myNames2 = Jacob Michael Joshua Matthew Alexander Andrew
# @myNames3 = Jacob Michael Joshua Matthew Alexander Andrew


############
# Code: Single and Double Quoted Strings
$my_name = 'Bobby';
print "$my_name\n";
print '$my_name\n';
# Output: 
# Bobby
# $my_name\n
Why You Don't LIKE My FaceBook Fanpage ?
×
blogger