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

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


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

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

12/31/2553

Plugin KoreTwitter.pl

คุณสมบัติใหม่! ฉันใส่ options ที่ 4 ลงใน config คือ koreTwitter_owner, koreTwitter_ignore, koreTwitter_direct, และ koreTwitter_reply. สิ่งแรกที่จำเป็นสำหรับขั้นที่ 3 และขั้นที่ 4 ที่จะทำให้มันใช้ได้ ฉันต้องเพิ่ม  message domains เข้าไปด้วย (คล้ายกับ OpenKore's domains)

นี่คือ domains ทั้งหมด

* msg - การรับข้อความส่วนตัว
* base - Base level ที่ได้รับ
* job - Job level ที่ได้รับ
* died - Bot ตาย
* pvp - Bot ได้เข้าสู่พื้นที่ PVP
* gm - แจ้งเตือน GM
* ingame - Bot ของคุณอยู่ในเกมขณะนี้
* item - Bot ของคุณพบ item ที่ปรากฏอยู่ใน koreTwitter_items

ตอนนี้ฉันจะอธิบายเกี่ยวกับ koreTwitter_ignore. option นี้จะอนุญาติให้คุณกำหนดรายชื่อ domains ที่คุณไม่ต้องการที่จะส่ง tweet. ง่ายไหมละ.

สำหรับ koreTwitter_direct และ koreTwitter_reply ใช้ควบคุมวิธีการส่ง tweets. KoreTwitter_direct จะจัดลำดับความสำคัญ ดังนั้นคุณจึงไม่สามารถระบุโดเมนเดียวกันสองครั้ง (เพื่อป้องกันการ retweets). ตัวเลือกเหล่านี้มีรายชื่อโดเมนข้อความที่จะถูกส่งไปในรูปแบบที่แน่นอน, โดยเฉพาะ messages ตรง หรือ @reply-รูปแบบ ตามลำดับ โดเมนใด ๆ ไม่อยู่ในรายการนี้ จะเลือกใช้ค่ามาตรฐานในการ tweet อัตโนมัติ และแน่นอน เว้นแต่มันจะอยู่ใน ignore list มันก็จะไม่อ่านรายการนั้น ด้านล่างนี้ตัวอย่าง config ที่จะแจ้งเตือนข้อความ GM โดยตรง , @reply deaths, base levels, and job levels, ignore the ingame domain, และใช้ tweets ปกติสำหรับทุกสิ่งทุกอย่าง

Code:

koreTwitter 1
koreTwitter_username ausername
koreTwitter_password somepass
koreTwitter_items Clip [1]
koreTwitter_owner sli
koreTwitter_direct gm
koreTwitter_reply died, base, job
koreTwitter_ignore ingame

Update : เพิ่มชื่อตัวละครเพื่อ PM tweets เพื่อให้คุณสามารถเปิดบอทหลายตัวโดยใช้บัญชี Twitter อันเดียว แล้วไม่สับสน

ปลั๊กอินนี้จะส่งสถานะอัปเดตเพื่อ Twitter จะเหมือน koreSnarl/Growl แสดงการแจ้งเตือน จะใช้เหตุการณ์เดียวกัน มันมีประโยชน์ในการติดตาม Bot ของคุณ ขณะที่คุณไม่ได้อยู่บ้าน วันใดวันหนึ่งฉันจะเพิ่มการสนับสนุนการรับคำสั่งผ่าน Twitter ถ้าคุณใช้ koreSnarl/Growl, เราจะแนะนำให้ทำแบบนี้. มันจะยังคงแสดงผลการเข้าถึงบน Twitter ทำให้คุณไม่ต้องรับด้วย koreSnarl/Growl ในข้อมูลทั้งหมดนั้น มันจะยังคงแสดงผลอยู่บน Twitter ต่างจาก koreSnarl/Growl ข้อมูลจะหายไปหลังจากห้าวินาที ดังนั้นถ้าคุณ botting ข้ามคืนคุณจะพลาดข้อมูลจำนวนมาก

การใช้โปรแกรมเสริมนี้ คุณจะต้องติดตั้ง net : : Twitter ซึ่งยังต้องใช้ JSON Cpan handles มันไม่มีปัญหา (cpan> install Net::Twitter). h4rry84 จะถูกตรวจสอบ และ Net : : Twitter สามารถติดตั้งได้จาก PPM หาก คุณใช้ ActiveState

ตัวอย่าง config :

Code:

koreTwitter 1
koreTwitter_username twitterusername
koreTwitter_password twitterpassword
koreTwitter_items Soldier Skeleton Card, Verit Card


12/30/2553

Spam Blocker Plugin

plugin นี้จะปิดข้อความขาย zeny ซ้ำๆ ที่น่ารำคาญใน Prontera โดยอัตโนมัติ

วิธีใช้ :

block - การบล็อกชื่อผู้เล่นด้วยตนเอง

unblock - นำชื่อผู้เล่นออกจากรายชื่อถูกป้องกัน

BOT Acolyte/Priest/High Priest Skills ใช้งานได้จริง, เอ๋อตรงไหนช่วยแจ้งด้วยนะคะ


สำหรับคนที่พออ่านโค๊ดเป็น

เข้าไปใน src\Network\Receive\ServerType0.pm

หาคำว่า Commands::run('pm oJuBuJungo GM silence to me');

ตรง oJuBuJungo เปลี่ยนชื่อเป็น ชื่อตัวละครของท่านได้เลยนะคะ เป็นการสั่งให้บอทกระซิบหาตัวละครของคุณ เมื่อมีข้อมูลแพคเกจเกี่ยวกับ GM เช่น GM_silence,GM_req_acc_name,talkie_box แล้วจึง relog 600000000

เอ๋อตรงไหนช่วยแจ้งด้วยนะคะ ถามแบบไม่หาข้อมูลก่อนก็ไม่เอานะคะ พี่เค้าแก้บอทให้เราใช้กันได้กะเหนื่อยแย่แง้วคะ

ข้อบังคับ ยังต้องล็อคตัวเข้าไปเปิดวาบพาบอทไปแมพที่จะเก็บเวลให้ก่อนนะคะ ว่างๆจาทำแบบเปิดวาบได้เลยมาอัพเดทให้คะ

ตามนี้ใช้กะแมพ Raydric กะ ra_san02 คะ

ลิ้งโหลดปลั้กอินคะ กดเบาๆนะ

ถ้าใช้บอทของเวบ Thaikore แก้ชื่อสกิลใน config ให้ตรงตามใน \openkore\tables\tRO\skillnametable.txt ด้วยนะคะ ที่อื่นไม่ต้องแก้คะ ไม่ได้แก้ให้ เพราะโอ๋เซทไว้ตั้งแต่ใช้ตัว SVN เดือนตค.หง่า

config.txt

CODE
# Please Read the Users Manual
# The Manual is located at http://wiki.openkore.com/index.php?title=Manual

######## Login options and server-specific options ########

master Thailand - tRO Free life server (Alice(new), Poring)
poseidonServer 127.0.0.1
poseidonPort 24390
storageEncryptKey 0x050B6F79, 0x0202C179, 0x00E20120, 0x04FA43E3, 0x0179B6C8, 0x05973DF2, x007D8D6B, 0x08CB9ED9
secureLogin_requestCode
serverEncoding Thai
charBlockSize 112
serverType tRO
gameGuard 1
server
username
password
loginPinCode
char

bindIp
# For an overview of all servertypes please go to the following URL:
# http://wiki.openkore.com/index.php?title=ServerType

# 1 = hook into RO client, 2 = Act as stand-alone proxy, proxy = act as true proxy
XKore 0
XKore_silent 0
XKore_bypassBotDetection 0
XKore_exeName ragexe.exe

# XKore 2 / Proxy configuration
XKore_listenIp 127.0.0.1
XKore_listenPort 6901
XKore_publicIp 127.0.0.1

# It is not advised to set secureAdminPassword if you're using Xkore 2
secureAdminPassword 1
adminPassword
callSign
commandPrefix ;

######## Plugins ########
GMMessagebeep 1

######## Main configuration ########
alias_laagg c แลค

allowedMaps
allowedMaps_reaction 1

attackAuto 0
attackAuto_party 0
attackAuto_onlyWhenSafe 0
attackAuto_followTarget 0
attackAuto_inLockOnly 0
attackDistance 1.5
attackDistanceAuto 0
attackMaxDistance 2.5
attackMaxRouteDistance 100
attackMaxRouteTime 4
attackMinPlayerDistance 2
attackMinPortalDistance 4
attackUseWeapon 0
attackNoGiveup 0
attackCanSnipe 0
attackCheckLOS 0
attackLooters 0
attackChangeTarget 0
aggressiveAntiKS 0

autoMoveOnDeath 0
autoMoveOnDeath_x
autoMoveOnDeath_y
autoMoveOnDeath_map

attackEquip_topHead
attackEquip_midHead
attackEquip_lowHead
attackEquip_leftHand
attackEquip_rightHand
attackEquip_leftAccessory
attackEquip_rightAccessory
attackEquip_robe
attackEquip_armor
attackEquip_shoes
attackEquip_arrow

#ใส่ปลั้กอิน breakTime ถ้าจะใช้
autoBreakTime Tue {
startTime 7:50
stopTime 12:10
}

autoConfChange {
minTime
varTime
lvl
joblvl
}

#ใส่ปลั้กอิน alertSound ลงไปด้วยถ้าจะให้มันทำงาน ถ้าไม่ใช้ก็เอา # ปิดไว้แบบด้านล่าง
alertSound 1

alertSound {
eventList public GM chat, private GM chat, system message, GM near
notInTown 1
inLockOnly 0
play SystemDefault
}

#alertSound {
#eventList emoticon, death, monster Phreeoni, monster Baphomet
#notInTown 1
#inLockOnly 0
#play SystemDefault
#}

autoMakeArrows 0

autoRestart 0

autoRestartMin 10800
autoRestartSeed 3600

autoRestartSleep 0
autoSleepMin 900
autoSleepSeed 900

autoResponse 0

autoSpell

avoidGM_near 0
avoidGM_near_inTown 0
avoidGM_talk 0
avoidGM_reconnect 1800
avoidGM_ignoreList

#ไม่แนะนำให้ใช้นะคะ ยิ่งใช้ยิ่งโดนแบนไวขึ้น(
avoidList 1
avoidList_inLockOnly 0
avoidList_reconnect 9000000

cachePlayerNames 1
cachePlayerNames_duration 900
cachePlayerNames_maxSize 100

clientSight 30

dcOnDeath 0
dcOnDualLogin 0
dcOnDisconnect 0
dcOnEmptyArrow 0
dcOnMaxReconnections 0
dcOnMute 0
dcOnPM 0
dcOnZeny 100000
dcOnStorageFull 1
dcOnPlayer 0

follow 1
followTarget ใส่ชื่อคนที่จะให้บอทตาม
followEmotion 0
followEmotion_distance
followFaceDirection 0
followDistanceMax 3 ไม่ควรเปลี่ยนไม่งั้นบอทจะชอบหาผู้นำไม่เจอ
followDistanceMin 1 ไม่ควรเปลี่ยนไม่งั้นบอทจะชอบหาผู้นำไม่เจอ
followLostStep 20
followSitAuto 1
followBot 0

itemsTakeAuto 2
itemsTakeAuto_party 2
itemsGatherAuto 0
itemsMaxWeight 88
itemsMaxWeight_sellOrStore 89
itemsMaxNum_sellOrStore 99
cartMaxWeight 7900
itemsTakeAuto_new 0

lockMap
lockMap_x
lockMap_y
lockMap_randX
lockMap_randY

route_escape_reachedNoPortal 1
route_escape_randomWalk 1
route_escape_shout
route_avoidWalls 1
route_randomWalk 1
route_randomWalk_inTown 0
route_randomWalk_maxRouteTime 75
route_maxWarpFee
route_maxNpcTries 5
route_teleport 0
route_teleport_minDistance 150
route_teleport_maxTries 8
route_teleport_notInMaps
route_step 15

runFromTarget 0
runFromTarget_dist 6

saveMap
saveMap_warpToBuyOrSell 1
saveMap_warpChatCommand

shopAuto_open 0
shop_random 0

sitAuto_hp_lower 20
sitAuto_hp_upper 50
sitAuto_sp_lower 10
sitAuto_sp_upper 100
sitAuto_over_50 0
sitAuto_idle 0
sitAuto_look
sitAuto_look_from_wall

statsAddAuto 0
statsAddAuto_list
statsAddAuto_dontUseBonus 0
statsAdd_over_99 0

skillsAddAuto 0
skillsAddAuto_list

tankMode 0
tankModeTarget

teleportAuto_hp 0
teleportAuto_sp 0
teleportAuto_idle 0
teleportAuto_portal 0
teleportAuto_search 0
teleportAuto_minAggressives 0
teleportAuto_minAggressivesInLock 0
teleportAuto_onlyWhenSafe 0
teleportAuto_maxDmg 0
teleportAuto_maxDmgInLock 0
teleportAuto_deadly 0
teleportAuto_useSkill 0
teleportAuto_useChatCommand
teleportAuto_allPlayers 0
teleportAuto_notPlayers
teleportAuto_atkCount 0
teleportAuto_atkMiss 10
teleportAuto_unstuck 0
teleportAuto_lostTarget 0
teleportAuto_dropTarget 0
teleportAuto_dropTargetKS 0
teleportAuto_attackedWhenSitting 0
teleportAuto_totalDmg 0
teleportAuto_totalDmgInLock 0
teleportAuto_equip_leftAccessory
teleportAuto_equip_rightAccessory
teleportAuto_lostHomunculus
teleportAuto_useItemForRespawn

dealAuto 1
dealAuto_names
partyAuto 1
partyAutoShare 0
guildAutoDeny 1

verbose 1
showDomain 0
squelchDomains
verboseDomains
beepDomains
beepDomains_notInTown

logChat 0
logPrivateChat 0
logPartyChat 0
logGuildChat 0
logSystemChat 0
logEmoticons
logConsole 0
logAppendUsername 0

chatTitleOversize 0
shopTitleOversize 0

sleepTime 200000

ignoreAll 0
itemHistory 0
autoTalkCont 1
noAutoSkill 0
portalCompile 1
portalRecord 2
missDamage 0

tankersList

repairAuto 0
repairAuto_list

removeActorWithDistance

######## Block options ########
# You can copy & paste any block multiple times. So if you want to
# configure two attack skills, just duplicate the attackSkillSlot block.

useSelf_skill Use Heal {
lvl 10
sp > 5%
hp < 95%
notWhileSitting 1
}

useSelf_skill Assumptio {
lvl 5
sp > 3%
stopWhenHit 1
notWhileSitting 1
notInTown 1
timeout 2
whenStatusInactive Assumptio
}

#useSelf_skill Kyrie Eleison {
# lvl 10
# sp > 5%
# stopWhenHit 1
# notWhileSitting 1
# notInTown 1
# timeout 2
# whenStatusInactive Kyrie Eleison
#}

useSelf_skill Blessing {
lvl 10
sp > 7%
notWhileSitting 1
whenStatusInactive Blessing
timeout 1
}

useSelf_skill Increase Agility {
lvl 10
sp > 10%
stopWhenHit 1
timeout 1
whenStatusInactive Increase Agility
}

useSelf_skill Magnificat {
lvl 5
sp > 13%
afterSkill Blessing
stopWhenHit 1
notWhileSitting 1
notInTown 1
timeout 2
whenStatusInactive Magnificat
}

useSelf_skill_smartHeal 1

partySkill Use Heal {
lvl 10
maxCastTime 0
minCastTime 0
hp > 30%
sp > 15%
notWhileSitting 1
timeout 1
target_hp < 95%
}

partySkill Blessing {
lvl 10
maxCastTime 0
minCastTime 0
sp > 17%
notInTown 1
timeout 1
target_whenStatusInactive Blessing
}

partySkill Assumptio {
lvl 5
maxCastTime 0
minCastTime 0
sp > 20%
notInTown 1
timeout 2
target_whenStatusInactive Assumptio
}

#partySkill Kyrie Eleison {
# lvl 10
# maxCastTime 0
# minCastTime 0
# sp > 22%
# stopWhenHit 1
# notWhileSitting 1
# notInTown 1
# timeout 2
# target_whenStatusInactive Kyrie Eleison
#}

partySkill Increase Agility {
lvl 10
maxCastTime 0
minCastTime 0
sp > 25%
stopWhenHit 1
timeout 1
target_whenStatusInactive Increase Agility
}

partySkill Gloria {
lvl 5
maxCastTime 0
minCastTime 0
sp > 27%
timeout 1
target_whenStatusInactive Gloria
isSelfSkill 1
}

partySkill Impositio Manus {
lvl 5
maxCastTime 0
minCastTime 0
sp > 30%
notInTown 1
stopWhenHit 1
timeout 3
target_whenStatusInactive Impositio Manus
}

partySkill Magnificat {
lvl 5
maxCastTime 0
minCastTime 0
sp > 32%
stopWhenHit 1
timeout 2
whenStatusInactive Magnificat
isSelfSkill 1
}

partySkill Angelus {
lvl 10
maxCastTime 0
minCastTime 0
sp > 35%
notInTown 1
stopWhenHit 1
timeout 2
whenStatusInactive Angelus
isSelfSkill 1
}

partySkill Cure {
lvl 1
sp > 37%
maxCastTime 0
minCastTime 0
timeout 2
target_whenStatusActive Cursed, Blinded, Chaos, Silenced
}

partySkill Resurrection {
lvl 4
maxCastTime 0
minCastTime 0
target_dead 1
}

partySkill Status Recovery {
lvl 10
maxCastTime 0
minCastTime 0
sp > 40%
timeout 2
target_whenStatusActive Frozen, Stone Curse, Stun
}

#partySkill Aspersio {
# lvl 5
# maxCastTime 0
# minCastTime 0
# sp > 42%
# timeout 2
# target_isJob
# target_monsters
# target_whenStatusInactive Aspersio
# inInventory Holy Water
#}
#partySkill Suffragium {
# lvl 3
# maxCastTime 0
# minCastTime 0
# sp > 45%
# timeout 1
# target_isJob
# target_whenStatusInactive Suffragium
# notInTown 1
#}
#partySkill Pneuma {
# lvl 1
# maxCastTime 0
# minCastTime 0
# sp > 10
# timeout 1
# target_whenNotGround Pneuma
# target_defendMonsters Raydric Archer ใส่ชื่อมอนสเตอร์ใส่ '','' แล้วเคาะเว้นวรรคก่อนชื่อมอนสเตอร์ด้วย
#}

monsterSkill Lex Aeterna {
lvl 1
maxCastTime 0
minCastTime 0
sp > 47%
aggressives > 2
maxUses 5
timeout 2

target Abyss Knight, Raydric Archer, Raydric, Khalitzburg, Mysteltainn,
Bloody Knight, Alice, Vanberk, Isilla, Gremlin, Beholder, Hodremlin,
Seeker ใส่ชื่อมอนสเตอร์ใส่ '','' แล้วเคาะเว้นวรรคก่อนชื่อมอนสเตอร์ด้วย
target_dist 7,6,5,4,3
}

autoSwitch_default_rightHand
autoSwitch_default_leftHand
autoSwitch_default_arrow

# NOTE: In the case of two handed weapons, or no Shield,
# duplicate the weapon name for 'rightHand'
# To attack with bare hands, specify "[NONE]" (without the quotes) for rightHand

autoSwitch {
rightHand
leftHand
arrow
distance
useWeapon
}

useSelf_item
White Potion,Red Potion,Orange Potion,Yellow Potion,Novice
Potion,Meat,Apple,Banana,Sweet Potato,Potato,Carrot,Red Herb,Yellow
Herb,White Herb {
hp <= 80%
inLockOnly 1
timeout 3
}

useSelf_item Blue Potion {
sp <= 50%
inLockOnly 1
timeout 3
}

######## Autostorage/autosell ########

buyAuto Blue Gemstone {
npc geffen_in 77 173
npc_steps c r1 n
standpoint
distance 5
price
minAmount 2
maxAmount 20
}

buyAuto Butterfly Wing {
npc ใส่แมพ+พิกัดnpcซื้อของที่มอร็อค
npc_steps c r1 n
standpoint
distance 5
price
minAmount 2
maxAmount 5
}

sellAuto 0
sellAuto_npc
sellAuto_npc_steps 2
sellAuto_standpoint
sellAuto_distance 5

storageAuto 1
storageAuto_npc morocc 147 102
storageAuto_distance 5
storageAuto_npc_type 1
storageAuto_npc_steps c r1 n
storageAuto_password
storageAuto_keepOpen 0
storageAuto_useChatCommand
relogAfterStorage 0
minStorageZeny 60

npcTimeResponse 5

getAuto Butterfly Wing {
minAmount 2
maxAmount 5
passive 0
}

getAuto Blue Gemstone {
minAmount 2
maxAmount 20
passive 0
}

######## Debugging options; only useful for developers ########

debug 0
debugPacket_unparsed 0
debugPacket_received 0
debugPacket_ro_sent 0
debugPacket_sent 0
debugPacket_exclude 07FF,0809,080A,080B,0814
debugPacket_include
debugPacket_include_dumpMethod 3
debugDomains

######## macro options ########

macro_readmanual red/chili
macro_nowarn 1
macro_orphans terminate
macro_file macros.txt
macro_allowDebug 0



pickupitems.txt

CODE
# สั่งให้บอทเก็บไอเท็ม (หรือไม่เก็บ) เป็นบางรายการ.
# รูปแบบ : <ชื่อไอเท็ม> <flag>
# <ชื่อไอเท็ม> - ชื่อของไอเทม (ดูได้จาก tables\tRO\items.txt)
# <flag> = -1 ทิ้งไอเท็มชิ้นนั้น เมื่อไอเท็มชิ้นนั้นอยู่ในช่องเก็บของ (ใช้สำหรับโร็กซึ่งสามารถขโมยของได้เองอัตโนมัติ),
# 0 ไม่เก็บไอเท็มชิ้นนั้น,
# 1 เก็บไอเท็มชิ้นนั้น,
# 2 เก็บไอเท็มชิ้นนั้นอย่างเร็วที่สุดเท่าที่จะทำได้
#
# ใช้คำว่า "all" แทนชื่อไอเทมทั้งหมด เพื่อสั่งให้บอทเก็บหรือไม่เก็บไอเท็มทั้งหมดเป็นการตั้งค่าเบื้องต้น
all 0
Abyss Knight Card 2
Vanberk Card 2
Isilla Card 2
Gremlin Card 2
Beholder Card 2
Hodremlin Card 2
Seeker Card 2
High Fashion Sandals [1] 2
Scalpel [3] 2
Boots [1] 2
Boots [1] 2
Berdysz [2] 2
Ring 2
Beret 2
Shadow Walk 2
Bloody Roar 2
Elunium 2
Old Blue Box 2


macros.txt

CODE
automacro mybuff { map morocc status not Cooked Nine Tail's Tails exclusive 1 run-once 1 call { pause 1 do ai manual pause 2 do move 159 255 morocc pause 1 do talknpc 164 255 c c c c c c r0 c c c n pause 2 do ai on release all } } #################### check Party #################### automacro Use Heal { hp < 95% exclusive 1 run-once 1 call { do ss 28 release all } } automacro checkB { status not Blessing sp < 5% run-once 1 call { do ss 34 release all } } automacro checkAss { status not Assumptio sp < 7% run-once 1 call { do ss 361 pause 2 release all } } automacro checkA { status not Increase Agility sp < 10% run-once 1 call { do ss 29 pause 1 release all } } automacro checkGlor { status not Gloria sp < 12% run-once 1 call { do ss 75 release all } } automacro checkMagnificat { status not Magnificat sp < 17% run-once 1 call { do ss 74 pause 2 release all } } automacro checkAng { status not Angelus sp < 20% run-once 1 call { do ss 33 pause 2 release all } } automacro checkCure1 { status Cursed sp < 22% run-once 1 call { do ss 34 pause 2 release all } } automacro checkCure2 { status Blinded, Chaos, Silenced sp < 25% run-once 1 call { do ss 35 pause 2 release all } } automacro checkStatus { status Frozen, Stone Curse, Stun sp < 27% run-once 1 call { do ss 72 pause 2 release all } } ############ STORAGE ############## automacro oweight { weight > 89% timeout 30 exclusive 1 run-once 1 call { pause 2 do p น้ำหนัก89%ละอะ } } ############ GM ############## automacro PM { console /From:/i call { pause 1 do eval Utils::Win32::playSound ('C:\WINDOWS\Media\Windows XP Ringin.wav') pause 1 } } automacro antibot { status GM Perfect Hide exclusive 1 run-once 1 call { pause 1 do eval Utils::Win32::playSound ('C:\WINDOWS\Media\Windows XP Ringin.wav') pause 2 do is Butterfly Wing pause 3 do ai off } } automacro gmnear { console /Remove Perfectly hidden/i,/perfectly hidden/i run-once 1 call { $var1 = first pause 2 do eval Utils::Win32::playSound ('C:\WINDOWS\Media\Windows XP Ringin.wav') pause 2 do is Butterfly Wing pause 3 do ai off } } automacro gmnear2 { console /Remove Perfectly hidden/i run-once 1 var var1 = first call { pause 2 do eval Utils::Win32::playSound ('C:\WINDOWS\Media\Windows XP Ringin.wav') pause 2 do is Butterfly Wing pause 3 do ai off } }


items_control.txt

CODE
# ในไฟล์นี้คุณสามารถเลือกที่จะควบคุมรายการไอเท็มที่จะนำไปเก็บในคลัง, เพื่อขาย , หรือนำออกมาใส่ช่องเด็บของในตัว
#
# ข้อกำหนด :
# (ชื่อไอเท็ม) (ขั้นต่ำ) (เก็บไอเท็มลงคลังอัตโนมัติ) (ขายไอเท็มอัตโนมัติ) [ใส่ไอเท็มในรถเข็น] [หยิบไอเท็มจากรถเข็นอัตโนมัติ]
# ชื่อไอเท็ม : ชื่อของไอเท็มที่ต้องการ
# ขั้นต่ำ : จำนวนขั้นต่ำของไอเท็มที่คุณต้องการเก็บไว้ในตัว
# เก็บไอเท็มลงคลังอัตโนมัติ : ตั้งค่าเป็น 1 เพื่อเดินกลับไปที่ Kapra NPC เพื่อเก็บของ
# ขายไอเท็มทิ้งอัตโนมัติ : ตั้งค่าเป็น 1 เพื่อขายไอเท็มที่ NPC ซื้อ / ขายของอัตโนมัติ
# ใส่ไอเท็มในรถเข็นอัตโนมัติ : ตั้งค่าเป็น 1 เพื่อใส่ไอเท็มในรถเข็นอัตโนมัติ
# หยิบไอเท็มจากรถเข็นอัตโนมัติ : ตั้งค่าเป็น 1 เพื่อหยิบไอเท็มจากรถเข็นอัตโนมัติ
#
# ตัวอย่างนี้ จะขาย jellopies ทั้งหมด ,เก็บมีดทั้งหมดลงในคลัง และเก็บดอกไม้ทั้งหมดลงในรถเข็น :
# Jellopy 0 0 1
# Knife 0 1 0
# Flower 0 0 0 1
#
# ตัวอย่างนี้ จะหยิบ Red Potions จากรถเข็นถ้าในช่องเก็บของในตัวคุณมีน้อยกว่า 25 อัน
# Red Potion 25 0 0 0 1
#
# ชื่อไอเท็มจะต้องตรงกับไฟล์ tables\tRO\items.txt เท่านั้น ไอเท็มถึงจะถูกเก็บลงคลังหรือขาย
#
# หากรายการเก็บไอเท็มลงคลังอัตโนมัติ และรายการขายไอเท็มอัตโนมัตเป็น 1, บอทจะเก็บไอเท็มเข้าคลังก่อน
# (ยกเว้นกรณีที่คลังเต็ม) จึงจะไปขายไอเท็มเลยไม่ไปเก็บไอเท็ม
#
# บอทจะไม่ขายหรือเก็บไอเท็มที่เป็นอาวุธที่บอทใช้อยู่ ตัวอย่าง ,เช่น ถ้าบอทใช้
# มีดและคุณตั้งให้บอทขายมีดทั้งหมดอัตโนมัติไว้ บอทจะขายมีดทั้งหมดที่เก็บได้ Kore แต่จะไม่ขายมีดที่ใช้อยู่้
#
# อย่าลืมที่จะตั้ง storageAuto, sellAuto และการกำหนดค่าที่เกี่ยวข้องกับค่านี้ ใน config.txt ไม่อย่างนั้นไฟล์นี้จะไม่มีผลใด ๆ
#
# รายการขายไอเท็มอัตโนมัติิและรายการเก็บลงคลังอัตโนมัติจะถูกกำหนดโดยค่าเบื้องต้น(a
ll) และจะปรับเปลี่ยนตามความเหมาะสม
# all แทนชื่อทุกไอเท็มได้ Ex.
# all 0 1 0 ::: เก็บ item ทุกอย่างเข้าคลัง
# all 0 0 1 ::: ขาย item ทุกอย่าง
#
#Red Potion 0 0 1
#Flower 20 1 0
#Jellopy 10 0 1
#AAA 15 1 0
#
#หมาย
ถึง ขายทุกอย่าง เก็บเข้าคลังหมด ยกเว้น* Red Potion ขาย , Flower
พกติดตัว 20 , Jellopy พกติดตัว 10 อัน แต่ถ้าเกิน 10 ขาย , AAA พกติดตัว
15 ถ้าเกินเก็บเข้าคลัง
#
#*ข้อควรระวัง
#กรณี ตั้งให้บอทขายทุกอย่าง [all 0 0 1]
#แล้วใส่แค่เฉพาะชื่อของที่ ไม่ต้องการขายเป็น <item> 1 1 0 หรือ <item> 1 0 0 หรือ <item> 999 0 0
#แล้วเปิดบอทใน map ที่ มี monster ที่สามารถทำให้อาวุธแตกอยู่ด้วย
#ให้ เพิ่ม ชื่อ อาวุธ ที่แตก ลงไปด้วย
#all 0 0 1
#
#+9 Composite Bow [Abysmal Knight*4] [4] 1 1 0
#+9 BROKEN Composite Bow [Abysmal Knight*4] [4]
#ตัวอย่างการเซท
#all 0 1 0 <<< ไอเท็มที่ไม่มีในรายการ การขาย จะเก็บเข้าคาฟาหมด
#Silerver Arrow 700 0 0 <<< เก็บไว้กับตัว 700 ดอกโดยที่ไม่เก็บเข้า สโต
#Bow [3] 0 0 1 <<< ขายทิ้งNcpตามที่เซทไว้ใน Config
#Elunium 0 1 0 <<< เก็บเข้าคาฟาตามที่เซทไว้ใน Config
#Red Herb 0 0 0 <<< ไม่เก็บ
#
# ตัวอักษรใหญ่เล็ก มีความสำคัญ
#
อย่าใส่ item ชื่อ ซ้ำ (ประมาณว่า ใส่ไว้ เป็น ร้อยชนิด)แล้ว
อันแรกเซ็ตเก็บ อันที่สอง เซ็ตทิ้ง แล้วมัน เก็บมั่ง ไม่เก็บมั่ง
ขึ้นอยู่กับชื่อไหนอยู่ ล่าง ดังนั้น ห้าม ชื่อitem ซ้ำ
#
# ตามที่เซทไว้ด้านล่าง ไอเท็มที่ไม่ได้กล่าวถึงจะถูกเก็บเข้าคลังอัตโนมัติ
all 0 1 0

##### HEAL/SUPPORT ITEMS #####
# Adjust these to your needs
Butterfly Wing 5 1 0
Blue Gemstone 20 1 0


avoid.txt

CODE
# avoid.txt : หลีกเลี่ยงผู้เล่นบางคน
# คำเตือน : avoid.txt นี้ทำไว้สำหรับเซอฟ poring ดังนั้นถ้าคุณเล่นเซิร์ฟเวอร์อื่น โปรดลบออก
#
รูปแบบ : <name>(กด TAB 2 ครั้ง)<disconnect
เมื่อผู้เล่นชื่อนี้อยู่ในหน้าจอ><teleport
เมื่อผู้เล่นชื่อนี้อยู่ในหน้าจอ><ไม่มีการตัดการเชื่อมต่อเมื่อผู้
เล่นชื่อนี้พูด>
[Players]

GM Poring 001 1 0 1
GM Poring 002 1 0 1
GM Poring 003 1 0 1
GM Poring 004 1 0 1
GM Poring 005 1 0 1
GM Poring 006 1 0 1
GM Poring 007 1 0 1
GM Poring 008 1 0 1
GM Poring 009 1 0 1
GM Poring 010 1 0 1

[ID]
# เหมือนด้านบน, แต่ใช้ player IDs แทนชื่อ
# ไม่มีการตัดการเชื่อมต่อ เมื่อผู้เล่นชื่อนี้พูด สำหรับในส่วนนี้
100017 1 0 1
100018 1 0 1
100019 1 0 1
100020 1 0 1
100021 1 0 1
100022 1 0 1
100023 1 0 1
100024 1 0 1
100025 1 0 1
100026 1 0 1
100027 1 0 1
100028 1 0 1
100029 1 0 1
100030 1 0 1
100031 1 0 1
100032 1 0 1
100033 1 0 1
100034 1 0 1
100035 1 0 1
100036 1 0 1
100037 1 0 1
100038 1 0 1
100039 1 0 1
100040 1 0 1
100041 1 0 1
100042 1 0 1
100043 1 0 1
100044 1 0 1
100045 1 0 1
100046 1 0 1
100047 1 0 1
100048 1 0 1
100049 1 0 1
100050 1 0 1
100051 1 0 1
100052 1 0 1
100053 1 0 1
100054 1 0 1
100055 1 0 1
100056 1 0 1
100057 1 0 1
100058 1 0 1
100059 1 0 1
100060 1 0 1
100061 1 0 1
100062 1 0 1
100063 1 0 1
100064 1 0 1
100065 1 0 1
100066 1 0 1
100067 1 0 1
100068 1 0 1
100069 1 0 1
1286479 1 0 1
1286480 1 0 1
1286481 1 0 1
1286482 1 0 1
1286483 1 0 1
1286484 1 0 1
1286485 1 0 1
1286486 1 0 1
1286487 1 0 1
1286488 1 0 1
1286489 1 0 1
1286490 1 0 1
1286491 1 0 1
1768457 1 0 1
1768458 1 0 1
1768459 1 0 1
1768460 1 0 1
1768461 1 0 1
1768462 1 0 1
1768463 1 0 1
1768464 1 0 1
1768465 1 0 1
1768466 1 0 1
1768467 1 0 1
1768468 1 0 1
1768469 1 0 1
1768470 1 0 1
1768471 1 0 1
1768472 1 0 1
1768473 1 0 1
1768474 1 0 1
1768475 1 0 1
1768476 1 0 1
1768477 1 0 1
1768478 1 0 1
1768479 1 0 1
1768480 1 0 1
1768481 1 0 1
1768482 1 0 1
1768483 1 0 1
1768484 1 0 1
1768485 1 0 1
1768486 1 0 1
1768487 1 0 1
1768488 1 0 1
1768489 1 0 1
1768490 1 0 1
1768491 1 0 1
1768492 1 0 1
1768493 1 0 1
1768494 1 0 1
1768495 1 0 1
1768496 1 0 1
1768497 1 0 1
1768498 1 0 1
1768499 1 0 1
1768500 1 0 1
1768501 1 0 1
1768502 1 0 1
1768503 1 0 1
1768504 1 0 1
1768505 1 0 1
1768506 1 0 1
1768507 1 0 1
1768508 1 0 1
1768509 1 0 1
1768510 1 0 1
1768511 1 0 1
1768512 1 0 1
1768513 1 0 1
1768514 1 0 1
1768515 1 0 1
1768516 1 0 1
1769199 1 0 1
1769201 1 0 1
1769202 1 0 1
1769203 1 0 1
1769204 1 0 1
1769208 1 0 1
1769209 1 0 1
1769210 1 0 1
1769211 1 0 1
1769212 1 0 1
1769213 1 0 1
1769215 1 0 1
1769217 1 0 1
1769220 1 0 1
1769222 1 0 1
1769223 1 0 1
1769224 1 0 1
1769231 1 0 1
1769232 1 0 1
1769234 1 0 1
1769237 1 0 1
1769240 1 0 1
1769242 1 0 1
1769245 1 0 1
1769249 1 0 1
1769250 1 0 1
1769252 1 0 1
1769253 1 0 1
1769254 1 0 1
1769256 1 0 1
1769258 1 0 1
1769259 1 0 1
1769261 1 0 1
1769262 1 0 1
1769263 1 0 1
1769264 1 0 1
1769265 1 0 1
1769266 1 0 1
1769267 1 0 1
1769268 1 0 1
1769272 1 0 1
1769273 1 0 1
1769274 1 0 1
1769276 1 0 1
1769280 1 0 1
1769281 1 0 1
1769282 1 0 1
1769285 1 0 1
1769288 1 0 1
1769289 1 0 1
1769290 1 0 1
1769292 1 0 1
1769293 1 0 1
1769294 1 0 1
1769295 1 0 1
1769296 1 0 1
1769297 1 0 1
1769300 1 0 1
1769301 1 0 1
1769303 1 0 1
1769304 1 0 1
1769305 1 0 1
1769306 1 0 1
1769307 1 0 1
1769308 1 0 1
1769309 1 0 1
1769310 1 0 1
1769314 1 0 1
1769316 1 0 1
1769317 1 0 1
1769318 1 0 1
1769321 1 0 1
1769322 1 0 1
1769325 1 0 1
1769329 1 0 1
1769330 1 0 1
1769331 1 0 1
1769333 1 0 1
1769334 1 0 1
1769335 1 0 1
1769336 1 0 1
1769338 1 0 1
1769339 1 0 1
1769340 1 0 1
1769342 1 0 1
1769343 1 0 1
1769349 1 0 1
1769352 1 0 1
1769355 1 0 1
1769356 1 0 1
1769358 1 0 1
1769359 1 0 1
1769360 1 0 1
1769362 1 0 1
1769365 1 0 1
1769366 1 0 1
1769367 1 0 1
1769368 1 0 1
1769369 1 0 1
1769370 1 0 1
1769373 1 0 1
1769374 1 0 1
1769375 1 0 1
1769376 1 0 1
1769379 1 0 1
1769380 1 0 1
1769381 1 0 1
1769382 1 0 1
1769385 1 0 1
1769386 1 0 1
1769387 1 0 1
1769388 1 0 1
1769389 1 0 1
1769390 1 0 1
1769391 1 0 1
1769393 1 0 1
1769394 1 0 1
1769398 1 0 1
1769399 1 0 1
1769400 1 0 1
1769401 1 0 1
1769403 1 0 1
1769408 1 0 1
1769409 1 0 1
1769410 1 0 1
1769412 1 0 1
1769413 1 0 1
1769414 1 0 1
1769418 1 0 1
1769422 1 0 1
1769423 1 0 1
1769424 1 0 1
1769428 1 0 1
2152005 1 0 1
2152006 1 0 1
2152007 1 0 1
2152008 1 0 1
2152009 1 0 1
2152010 1 0 1
2152011 1 0 1
2152012 1 0 1
2152013 1 0 1
2152014 1 0 1
2152015 1 0 1
2152016 1 0 1
2152017 1 0 1
2336230 1 0 1
2336231 1 0 1
2336232 1 0 1
2336233 1 0 1
2336234 1 0 1
2336235 1 0 1
2336236 1 0 1
2336237 1 0 1
2336238 1 0 1
2336239 1 0 1
2336240 1 0 1
2336241 1 0 1
2336242 1 0 1
2336243 1 0 1
2336244 1 0 1
2336245 1 0 1
2336246 1 0 1
2336247 1 0 1
2336248 1 0 1
2336249 1 0 1
2336250 1 0 1
2336251 1 0 1
2336252 1 0 1
2336253 1 0 1
2336254 1 0 1
2336255 1 0 1
2336256 1 0 1
2336257 1 0 1
2336258 1 0 1
2336259 1 0 1
2336260 1 0 1
2336261 1 0 1
2336262 1 0 1
2336263 1 0 1
2336264 1 0 1
2336265 1 0 1
2336266 1 0 1
2336267 1 0 1
2336268 1 0 1
2336269 1 0 1
2336270 1 0 1
2336271 1 0 1
2336272 1 0 1
2336273 1 0 1
2336274 1 0 1
2336275 1 0 1
2336276 1 0 1
2336277 1 0 1
2336278 1 0 1
2336279 1 0 1
2336280 1 0 1
2336281 1 0 1
2336282 1 0 1
2336283 1 0 1
2336284 1 0 1
2336285 1 0 1
2336286 1 0 1
2336287 1 0 1
2336288 1 0 1
2336289 1 0 1
2336290 1 0 1
2336291 1 0 1
2336292 1 0 1
2336293 1 0 1
2336294 1 0 1
2336295 1 0 1
2336296 1 0 1
2336297 1 0 1
2336298 1 0 1
2336299 1 0 1
2336300 1 0 1
2336301 1 0 1
2336302 1 0 1
2336303 1 0 1
2336304 1 0 1
2336305 1 0 1
2336306 1 0 1
2336307 1 0 1
2336308 1 0 1
2336309 1 0 1
2336310 1 0 1
2336311 1 0 1
2336312 1 0 1
2336313 1 0 1
2336314 1 0 1
2336315 1 0 1
2336316 1 0 1
2336317 1 0 1
2336318 1 0 1
2336319 1 0 1
2336320 1 0 1
2336321 1 0 1
2336322 1 0 1
2336323 1 0 1
2336324 1 0 1
2336325 1 0 1
2336326 1 0 1
2336327 1 0 1
2336328 1 0 1
2336329 1 0 1
2716508 1 0 1
2716509 1 0 1
2716510 1 0 1
2716511 1 0 1
2716512 1 0 1
2716513 1 0 1
2716514 1 0 1
2716515 1 0 1
2716516 1 0 1
2716517 1 0 1
2716518 1 0 1
2716519 1 0 1
2716520 1 0 1
2716521 1 0 1
2716522 1 0 1
2716523 1 0 1
2716524 1 0 1
2716525 1 0 1
2716526 1 0 1
2716527 1 0 1
2716528 1 0 1
2716529 1 0 1
2716530 1 0 1
2716531 1 0 1
2716532 1 0 1
2716533 1 0 1
2716534 1 0 1
2716535 1 0 1
2716536 1 0 1
2716537 1 0 1
2716538 1 0 1
2716539 1 0 1
2716540 1 0 1
2716541 1 0 1
2716542 1 0 1
2716543 1 0 1
2716544 1 0 1
2716545 1 0 1
2716546 1 0 1
2716547 1 0 1
2716548 1 0 1
2716549 1 0 1
2716550 1 0 1
2716551 1 0 1
2716552 1 0 1
2716553 1 0 1
2716554 1 0 1
2716555 1 0 1
2716556 1 0 1
2716557 1 0 1
2716558 1 0 1
2716559 1 0 1
2716560 1 0 1
2716561 1 0 1
2716562 1 0 1
2716563 1 0 1
2716564 1 0 1
2716565 1 0 1
2716566 1 0 1
2716567 1 0 1
2716568 1 0 1
2716569 1 0 1
2716570 1 0 1
2716571 1 0 1
2716572 1 0 1
2716573 1 0 1
2716574 1 0 1
2716575 1 0 1
2716576 1 0 1
2716577 1 0 1
2716578 1 0 1
2716579 1 0 1
2716580 1 0 1
2716581 1 0 1
2716582 1 0 1
2716583 1 0 1
2716584 1 0 1
2716585 1 0 1
2716586 1 0 1
2716587 1 0 1
2716588 1 0 1
2716589 1 0 1
2716590 1 0 1
2716591 1 0 1
2716592 1 0 1
2716593 1 0 1
2716594 1 0 1
2716595 1 0 1
2716596 1 0 1
2716597 1 0 1
2716598 1 0 1
2716599 1 0 1
2716600 1 0 1
2716601 1 0 1
2716602 1 0 1
2716603 1 0 1
2716604 1 0 1
2716605 1 0 1
2716606 1 0 1
2716607 1 0 1


macros เพิ่มเติมคะ มีขายวาบอยู่ด้วยอะ เอาไปปรับใช้ตามสะดวกนะคะ รวมๆมาจากหลายเวปคะ ไม่รู้จะลงเครดิตใครเลยอะ + จำไม่ได้ด้วยแหะๆ

CODE
this macro auto-cast warp portal on place that no one standing...
good for support on town and warping parties on WoE

automacro Warping {
console /\[dist=(.*)\] (.*) \((\d+)\): (.*)warp(1|2|3|4)(.*)$/
run-once 1
# class 4, 8, 23, 4005, 4009, 15, 4016
call {
if (@invamount(Blue Gemstone) == 0) goto nogem
$dist = $.lastMatch1
if ($dist > 6) stop
$warpslot = $.lastMatch5
:loop
$posx = @rand (1,7)
$posy = @rand (1,7)
$cellIsFull = 0

do eval $::Macro::Data::varStack{cellIsFull} = 0;foreach
(@{$::playersList->getItems()}) { next if (($_->{pos_to}{x} !=
$posx) || ($_->{pos_to}{y} !=
$posy));$::Macro::Data::varStack{cellIsFull} = 1; last;}
if ($cellIsFull == 1) goto loop
$mex = @arg ("$.pos", 1)
$mey = @arg ("$.pos", 2)
$herex = @eval ($mex + $posx)
$herey = @eval ($mey + $posy)
do sl 27 $herex $herey
timeout 3
do warp $warpslot
release Warping
:nogem
do c no gem
release Warping
}
}

this macro buff and resu other within distance of 5

automacro SupportOthers {
console /\[dist=(.*)\] (.*) \((\d+)\): \*baps|buffs buf|buff|blesing|heal|hela|bap|bup|hel\*$/
status Blessing
status Increase AGI
sp > 30%
run-once 1
timeout 30
exclusive 1
call {
$dist = $.lastMatch1
if ($dist > 6) stop
$name = $.lastMatch2
$PlayerID = $.lastMatch3
do sp 28 $PlayerID 10
do sp 34 $PlayerID 10
do sp 29 $PlayerID 10
do sp 361 $PlayerID 10
log Finish macro: SupportOthers at $.datetime
release SupportOthers
}
}

automacro SupportDead {
console /\[dist=(.*)\] (.*) \((\d+)\): \*resu|ress\*$/
status Blessing
status Increase AGI
sp > 30%
run-once 1
timeout 30
exclusive 1
call {
if (@invamount(Blue Gemstone) == 0) goto nogem
$dist = $.lastMatch1
if ($dist > 6) stop
$name = $.lastMatch2
$PlayerID = $.lastMatch3
do sp 54 $PlayerID 10
log Finish macro: SupportDead at $.datetime
:nogem
do c บลูหมดอะ
release SupportDead
}
}

automacro res {
pubm /res/i <<< เมื่อมีคนพิมพ์ res (พิมพ์แบบ ทั่วไปนะ)
call {
do sp "Resurrection" $.lastpub 4 <<< ตรง lastpub 4 คือเลเวลของสกิลนะ
}
}

automacro support {
pubm /sup/i
call {
do sp 34 $.lastpub 10 <<< sp 34 คือสกิล Blessing นะครับ ดูได้จาก table/skills.txt
pause 2
do sp 29 $.lastpub 10 <<< sp 29 คือสกิล IncreaseAGI
pause 2
do sp 361 $.lastpub 5 <<< sp 361 คือสกิล Assumptio
pause 3
do sp 66 $.lastpub 5 <<< sp 66 คือสกิล Impositio Manus
}
}

automacro san {
pubm /san/i
call {
$foobegin = $.pos <<< คำสั่งตัวนี้ สั่งให้ใช้สกิลไปที่ จุดยืนของผู้สั่ง
pause 1
do sl 70 @random ("south", "north", "east", "west")
do sp 70
pause 2
do sl 70 @random ("south", "north", "east", "west")
do sp 70
pause 2 do sl 70 @random ("south", "north", "east", "west")
do sp 70
}
}

Warp Seller v1.2

Instructions:
1. Create a recorder.txt inside control folder
2. Set macro_delay 2.0 in your timeouts.txt
3. Change the chatroom title in automacro a, b, f.
4. Change the price you want in automacro d -> $a = "a number".
5. Change the price you want in automacro e -> $a = "a number" like automacro d.
6. Change the warp point recorder in macro warp1, warp2, warp3, warp4. [Optional]
7.
Change the map name in macro warp1, warp2, warp3, warp4 -> do warp
"the map name". <-- Only if you want to sell warp to different maps~!

#--------------------------------------------------------------------
#------------------Warp Seller Macro v1.2 by Se7eN-------------------
#--------------------------------------------------------------------
#
# Note: Make sure your character is in Payon Town before running the macro.
# Added storageAuto sequence.
automacro a {
delay 3
console /Not allowed other player view Equipment/
call {
do ignore 1 all
if (@invamount (Blue Gemstone) == 0) goto qk
pause 3
do chat create "Ice-1.5K|Geo-2K|Mosco-2.5K" 2 0 siyete
# A, B, C, D = Chatroom title
pause 1
do sit
stop
:qk
lock a
lock b
lock c
lock d
lock e
lock f
do chat create "Out of Order" 2 0 siyete
do sit
stop
}
}

automacro b {
console /(.*?) \(level (\d*)\) Requests a Deal/
call {
do deal
$name = $.lastMatch1
do chat modify "$name Exact Amount Please~!!" 2 0 siyete
pause 1
do pm "$name" "Ice-1.5K|Geo-2K|Mosco-2.5K"
pause 10
# Cancel the deal in x seconds if the buyer no action
do deal no
stop
}
}

automacro c {
console /^(.*) added Item to Deal: (.*) x (.*)$/i
call {
if ($.lastMatch2 != "Blue Gemstone") goto end
#Cancel the deal in x seconds if the buyer no action after put on Blue Gemstone
pause 10
do deal no
stop
:end
# Cancel the deal if the buyer put on the items
do deal no
stop
}
}

automacro d {
console /(.*) added (.*) z to Deal/
call {
$a = $.lastMatch2
if ($a = 1,500) goto bb
if ($a = 2,000) goto bb
if ($a = 2,500) goto bb
# $a = ".*" = The price you want to sell
pause 2
# Cancel the deal if the gained zeny != the price you sell
do deal no
stop
:bb
pause 1
do deal
pause 1
do deal
#Cancel the deal in x seconds if the buyer no action after put on the zeny
pause 10
do deal no
stop
}
}

automacro e {
console /^You gained (.+?) zeny.$/
call {
lock b
lock d
do chat leave
$a = $.lastMatch1
if ($a = 1,500) goto a1
if ($a = 2,000) goto b2
if ($a = 2,500) goto c3
#$a = ".*" = The price you want to sell
:a1
call warp1
stop
:b2
call warp2
stop
:c3
call warp3
stop
release all
}
}

##################################################

macro warp1 {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "ICE-1500 \n"; close FILE;
# The record will record airplane's operation condition,this is the warp point one -> A
# And so no B, C, D...
$aa1 = @Invamount (Blue Gemstone)
# Check the number of the bluestone "before" warp
$x = @arg("$.pos", 1)
$y = @arg("$.pos", 2)
$x0 = @eval($x + @rand(1,3))
$x1 = @eval($x - @rand(1,3))
$y0 = @eval($y - @rand(1,3))
do sl 27 @random("$x0", "$x1") $y0
pause 2
do warp ra_fild01
# map a = ra_fild01
# pause 1
# do c Ice Dungeon's Map Opened.
pause 2
$aa2 = @Invamount (Blue Gemstone)
# Check the number of the bluestone "after" warp
if ($aa1 == $aa2) goto ax
# If the number of bluestone before warp match that of after warp then regarding as failed, goto :ax
stop
:ax
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "ICE-1500 (Failed) \n"; close FILE;
# If failed to open the warp,it will print "A-2000 (Failed)" ,that you will know maybe you should change the position
# And so no B, C, D...
pause 2
do c Failed to open
do c Just try again
call axx
# Run macro axx
stop
}

macro axx {
call warp1
# Run macro warp1
}

# And so on..

macro warp2 {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "GEO-2000 \n"; close FILE;
$bb1 = @Invamount (Blue Gemstone)
$x = @arg("$.pos", 1)
$y = @arg("$.pos", 2)
$x0 = @eval($x + @rand(1,3))
$x1 = @eval($x - @rand(1,3))
$y0 = @eval($y - @rand(1,3))
do sl 27 @random("$x0", "$x1") $y0
pause 2
do warp ein_fild07
# map c = ein_fild07
# pause 1
# do c Geographer's Map Opened.
pause 2
$bb2 = @Invamount (Blue Gemstone)
if ($bb1 == $bb2) goto bx
stop
:bx
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "GEO-2000 (Failed) \n"; close FILE;
pause 2
do c Failed to open
do c Just try again
call bxx
stop
}
macro bxx {
call warp2
}

macro warp3 {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "MOSCO-2500 \n"; close FILE;
$cc1 = @Invamount (Blue Gemstone)
$x = @arg("$.pos", 1)
$y = @arg("$.pos", 2)
$x0 = @eval($x + @rand(1,3))
$x1 = @eval($x - @rand(1,3))
$y0 = @eval($y - @rand(1,3))
do sl 27 @random("$x0", "$x1") $y0
pause 2
do warp mosk_fild02
# map b = mosk_fild02
# pause 1
# do c Moscovia's Map Opened.
pause 2
$cc2 = @Invamount (Blue Gemstone)
if ($cc1 == $cc2) goto cx
stop
:cx
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE MOSCO-2500 (Failed) \n"; close FILE;
pause 2
do c Failed to open
do c Just try again
call cxx
stop
}

macro cxx {
call warp3
}

automacro f {
console /You opened Warp Portal on \((.*), (.*)\)/
call {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "-------------- \n"; close FILE;
do c @random("Thank You !!","Maraming Salamat !!","Salamat !!","Ingat po !!","Good Luck !!")
if (@invamount (Blue Gemstone) == 0) goto qk
pause 3
do chat create "Ice-1.5K|Geo-2K|Mosco-2.5K" 2 0 siyete
release b
release d
pause 3
do sit
stop
:qk
lock a
lock b
lock c
lock d
lock e
lock f
do chat create "Out of Order" 2 0 siyete
do sit
stop
}
}

##################################################

automacro debugA {
console /(.*) \((\d+)\): You gained (.*) zeny./i
priority 1
call {
$i = $.lastMatch2
if ("$i" != "") goto ok
:ok
release all
stop
}
}

automacro debugB {
console /(From: (.*)) : You gained (.*) zeny./i
priority 1
call {
$i = $.lastMatch2
if ("$i" != "") goto ok
:ok
release all
stop
}
}

##################################################
automacro dealcancelled {
console /^Deal Cancelled$/i
delay 2
call {
do chat modify "Ice-1.5K|Geo-2K|Mosco-2.5K" 2 0 siyete
do sit
release all
}
}

If you're having trouble opening a chat room
in your config.txt try setting your "sitAuto_idle 0 --> 1"

then in your macros.txt change:
console /Not allowed other player view Equipment/
and replace with this:
console /You are sitting/
Selling Warp Macro (OpenKore)
automacro a {
delay 3
console /Not allowed other player view Equipment/i
call {
if (@invamount (Blue Gemstone) == 0) goto qk
pause 3
do chat create "S>A-2K|B-2.5K|C-3K|D-3.5K" 2 0 neverfindthis
# A, B, C, D = Chatroom title
pause 1
do sit
stop
:qk
lock a
lock b
lock c
lock d
lock e
lock f
do sit
stop
}

}

automacro b {
console /(.*?) \(level (\d*)\) Requests a Deal/
call {
do deal
pause 15
# Cancel the deal in 15 seconds if the buyer no action
do deal no
do e pif
stop
}
}

automacro c {
console /(.*) added Item to Deal: (.*)/
call {
# Cancel the deal if the buyer put on the items
do deal no
do e omg
do pm $.lastMatch1 BAWAL GAMIT! EXACTONG ZENY LNG DAPAT
stop
}
}

automacro d {
console /(.*) added (.*) z to Deal/
call {
$a = $.lastMatch2
if ($a = 1) goto bb # payon
if ($a = 2) goto bb # Eich (Geo)
if ($a = 3) goto bb # Okrestnosti of Moscovia (Mosco)
if ($a = 4) goto bb # Audmra GrassLand (Ice)
# $a = ".*" = The price you want to sell
pause 2
# Cancel the deal if the gained zeny != the price you sell
do deal no
stop
:bb
pause 1
do deal
pause 1
do deal
#Cancel the deal in 10 seconds if the buyer no action after put on the zeny
pause 10
do deal no
stop
}
}

automacro e {
console /You gained (.*) zeny./
call {
lock b
lock d
do chat leave
do e no1
$a = $.lastMatch1
if ($a = 2,000) goto a1
if ($a = 2,500) goto b2
if ($a = 3,000) goto c3
if ($a = 3,500) goto d4
#$a = ".*" = The price you want to sell
:a1
call warp1
stop
:b2
call warp2
stop
:c3
call warp3
stop
:d4
call warp4
stop
release all
}
}

macro warp1 {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "A-2000 \n"; close FILE;
# The record will record airplane's operation condition,this is the warp opint one -> A
# And so no B, C, D...

$aa1 = @Invamount (Blue Gemstone)
# Check the number of the bluestone "before" warp
$x = @arg("$.pos", 1)
$y = @arg("$.pos", 2)
$x0 = @eval($x + @rand(1,3))
$x1 = @eval($x - @rand(1,3))
$y0 = @eval($y - @rand(1,3))
do sl 27 @random("$x0", "$x1") $y0
pause 2
do warp map a
# map a = The map name
pause 2
$aa2 = @Invamount (Blue Gemstone)
# Check the number of the bluestone "after" warp
if ($aa1 == $aa2) goto ax
# If the number of bluestone before warp match that of after warp then regarding as failed, goto :ax
stop

:ax
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "A-2000 (Failed) \n"; close FILE;
# If failed to open the warp,it will print "A-2000 (Failed)" ,that you will know maybe you should change the position
# And so no B, C, D...
pause 1
do e hmm
# do c Failed to open
# do c Just try again
call axx
# Run macro axx
stop
}

macro axx {
call warp1
# Run macro warp1
}

# And so on..

macro warp2 {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "B-2500 \n"; close FILE;
$bb1 = @Invamount (Blue Gemstone)
$x = @arg("$.pos", 1)
$y = @arg("$.pos", 2)
$x0 = @eval($x + @rand(1,3))
$x1 = @eval($x - @rand(1,3))
$y0 = @eval($y - @rand(1,3))
do sl 27 @random("$x0", "$x1") $y0
pause 2
do warp map b
# map b = The map name
pause 2
$bb2 = @Invamount (Blue Gemstone)
if ($bb1 == $bb2) goto bx
stop

:bx
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "B-2500 (Failed) \n"; close FILE;
pause 1
do e hmm
# do c Failed to open
# do c Just try again
call bxx
stop
}


macro bxx {
call warp2
}

macro warp3 {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "C-3000 \n"; close FILE;
$cc1 = @Invamount (Blue Gemstone)
$x = @arg("$.pos", 1)
$y = @arg("$.pos", 2)
$x0 = @eval($x + @rand(1,3))
$x1 = @eval($x - @rand(1,3))
$y0 = @eval($y - @rand(1,3))
do sl 27 @random("$x0", "$x1") $y0
pause 2
do warp map c
# map c = The map name
pause 2
$cc2 = @Invamount (Blue Gemstone)
if ($cc1 == $cc2) goto cx
stop

:cx
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "C-3000 (Failed) \n"; close FILE;
pause 1
do e hmm
# do c Failed to open
# do c Just try again
call cxx
stop
}

macro cxx {
call warp3
}

macro dd4 {
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "D-3000 \n"; close FILE;
$dd1 = @Invamount (Blue Gemstone)
$x = @arg("$.pos", 1)
$y = @arg("$.pos", 2)
$x0 = @eval($x + @rand(1,3))
$x1 = @eval($x - @rand(1,3))
$y0 = @eval($y - @rand(1,3))
do sl 27 @random("$x0", "$x1") $y0
pause 2
do warp map d
# map d = The map name
pause 2
$cc2 = @Invamount (Blue Gemstone)
if ($dd1 == $cc2) goto dx
stop
:dx
do eval open(FILE, ">>", Settings::getControlFilename("recorder.txt")); print FILE "D-3000 (Failed) \n"; close FILE;
pause 2
do e hmm
# do c Failed to open
# do c Just try again
call dxx
stop
}

macro dxx {
call warp4
}

automacro f {
console /You opened Warp Portal on \((.*), (.*)\)/
call {

do eval open(FILE, ">>",
Settings::getControlFilename("recorder.txt")); print FILE
"-------------- \n"; close FILE;
do c Good Luck!

if (@invamount (Blue Gemstone) == 0) goto qk
pause 3
do chat create "S>A-2K|B-2.5K|C-3K|D-3.5K" 2 0 787878
release b
release d
pause 3
do sit
stop
:qk
lock a
lock b
lock c
lock d
lock e
lock f
do sit
stop
}
}


automacro debugA {
console /(.*) \((\d+)\): You gained (.*) zeny./i
priority 1
call {
$i = $.lastMatch2
if ("$i" != "") goto ok
:ok
release all
stop
}
}

automacro debugB {
console /(From: (.*)) : You gained (.*) zeny./i
priority 1
call {
$i = $.lastMatch2
if ("$i" != "") goto ok
:ok
release all
stop
}
}
macros warper is are OK!

script sell warper :

automacro one {
console /You are sitting./i
call {
do chat create "S > warp portal Serivce 24hours!" 2 0 1111
}
}

automacro two {
console /(.*?) .*? requests a deal/i
call {
do pm "$.lastMatch1" Warp to city Prontera - deal 1500z
do pm "$.lastMatch1" Warp to city Geffen - deal 2000z
}
}

automacro three {
console /You gained 1,500 zeny./i
call {
do chat leave
pause 1
do e heh
do
c @random ("Warp portal ifor prontera!, warp portal for prontera!,
thanks...","Warp prontera is open, 30 second warp portal will be
close...","You pay me, i help you warp, just follow the prize...")
do sl 27 172 99
pause 2
do warp prontera
}
}

automacro four {
console /You gained 2,000 zeny./i
call {
do chat leave
pause 1
do e gg
do c @random ("Warp portal ke GEFFEN!, warp portal ke GEFFEN!,thank you...","Geffen warp is ready to open, enjoy the game...")
do sl 27 168 99
pause 2
do warp geffen
}
}
WARPER SELLER - BY Angelo Chua -
I
have been Looking for this Kind of configuration, yes a Warp Selling
bot... this bot config helps in either Warp Selling or WOE warper
although you have to configure it so that it would be a warper for WOE
by just PM'ing the bot player.

Please Follow the Steps below if you want to have a configuration for it
Step 1: Download the 2 Files from 4shared.com here is the
LINK:
Macros.txt
Macro File and .pl(RAR FILE
Step
2: Extract the Rar file of the Macro(folder) and the macro.pl to the
root of your openkore folder. Create a folder named "plugins" and in
that folder... create another folder named macro... after creating the
macro folder, put the extracted files the "macro(folder) and the
macro.pl in it.
Step 3: open the macros.txt that you downloaded and
edit some details. example is shown below with some notes Please Read
carefully

###if you want to change the Location of the warps you have, change the
###amount together with the map name, I configured mine to be arranged
###as follows for the ###bot to follow it in my in-game memorized
###maps
###TO BE CLEAR, change the ice - deal 1,000z and other instructions
###to the map you prefer
###The bot will automatically warp to the map EQUAL to the amount
###that has been gained

###NOTE: You must set your dealauto in your config.txt to 2 or 1 either
### way works.

automacro chat {
console /You are sitting./i
call {
do chat create "|Ice1k|Mosco2k|Thor5k|+buffs na!!!"
###the instruction above makes the bot create a chatroom with the title,
### EDIT this as you NEED it to be
}
}

automacro antiblock {
console /lale .*? requests a deal/i
call {
do deal no
pause 1
}
}

automacro pm {
console /(.*?) .*? requests a deal/i
call {
do pm "$.lastMatch1" Ice - deal 1,000z
do pm "$.lastMatch1" Mosco - deal 2,000z
do pm "$.lastMatch1" Thor - deal 5,000z
}
}

automacro Ice {
console /You gained 1,000 zeny./i
exclusive 1
call {
do chat leave
do stand
pause 1
do sp 34 "$.lastMatch1" 10
do c Arigato Gozaimasu| This warp is to IceDun
pause 1
do sl 27 @random ("128 59","129 58","128 60","128 62")
pause 1
do warp 1
do sp 29 "$.lastMatch1" 10
do sp 28 "$.lastMatch1" 10
do e thx
pause 1
}
}

automacro Mosco {
console /You gained 2,000 zeny./i
exclusive 1
call {
do chat leave
do stand
pause 1
do sp 34 "$.lastMatch1" 10
do c Arigato Gozaimasu| This warp is to Mosco
pause 2
do sl 27 @random ("128 59","129 58","128 60","128 62")
pause 2
do warp 2
do sp 29 "$.lastMatch1" 10
do sp 28 "$.lastMatch1" 10
do e thx
pause 1
}
}

automacro Thor {
console /You gained 5,000 zeny./i
exclusive 1
call {
do chat leave
do stand
pause 1
do sp 34 "$.lastMatch1" 10
do c Domo Arigato Gozaimasu| This warp is to Thor
pause 1
do sl 27 @random ("128 59","129 58","128 60","128 62")
pause 1
do warp 3
do sp 29 "$.lastMatch1" 10
do sp 28 "$.lastMatch1" 10
do e thx
pause 1
}
}

Step 4: Put the macro.txt which you had editted into the control folder together with the config.txt etc.
Step 5: Enjoy Warp selling

Another
Note, the "do sl 27 @random ("128 59","129 58","128 60","128 62")"
indicates that the bot will cast the warp portal on the written
coordinates... please be informed that you must save a lockmap in the
map and correct these indications or else the bot warp will walk to the
("128 59","129 58","128 60","128 62")" RANDOMLY....


ขอบคุณเครดิตหลักๆ OPENKORE.COM คะ แล้วก้อเวปอื่นที่ไม่ได้กล่าวถึงด้วยคะ

12/23/2553

การติดตั้ง macro plugin สำหรับ openkore

เลือก download ให้ตรงกับ version ที่ใช้อยู่นะ
[ถ้าไม่รุ้ว่าไปโหลด version ไหนไปใช้กัน ก็ลองเปิดบอทมาแล้วพิมพ์ version ในหน้าจอ console บอทเพื่อดู version ที่ใช้อยู่ก็ได้]

การติดตั้ง macro plugin สำหรับ openkore [ ReMake Version -*- ]

# รูปแบบ

################################
openkore
|-- control
| `-- macros.txt
|-- cvsdebug.pm
|-- fields
|-- logs
|-- plugins
| |-- Macro
| | |-- Automacro.pm
| | |-- Data.pm
| | |-- Parser.pm
| | |-- Script.pm
| | `-- Utilities.pm
| `-- macro.pl
|-- src
`-- tables

################################

สิ่งที่ เพิ่ม ขึ้นมา

control/macros.txt

---------เอาไว้เขียนคำสั่ง macro

control/timeouts.txt

---------เพิ่มบรรทัด macro_delay และใส่ตัวเลขเป็นวินาที ที่ต้องการให้ คำสั่งทิ้งระยะการทำงานแต่ละคำสั่ง

หลังจากติดตั้งตามนี้เสร็จแล้ว กรุณา อ่านเพิ่มที่ -------> มาโครปลั๊กอิน
จะรู้ว่าต้องเพิ่มใน config อีก 4 บรรทัด แต่ละบรรทัดมันหมายความว่าอย่างไรให้ไปดูเอง

... ก็จะสามารถใช้ plugin macro ได้แล้วล่ะ

12/21/2553

Plugins reacOnNPC

Plugins reacOnNPC
ใช้ได้กับ: Openkore v.1.6.6 หรือใหม่กว่า
ปลั๊กอินนี้อนุญาตให้ใช้ภายใต้ข้อตกลง GNU GPL
ลิขสิทธิ์ 2549 โดย hakore

===============================================================================
การปรับปรุง:
===============================================================================

08/5/2552 (mod v2 by windows98SE)
- เพิ่มตัวแปร debug (เพื่อให้ใช้งาน debug ง่ายขึ้น)
- เพิ่มตัวแปร respIgnoreColor (เพื่อให้เขียน regex ง่ายขึ้น)
- แยก report ว่า ผิดในส่วนตรงไหน

16/5/2549 (v.1.1.0)
- แก้ใขให้สามารถใช้ได้กับ Openkore v.1.6.x

26/4/2549 (v.1.1.0)
- เพิ่มตัวแปร useColors
- เพิ่มคำสั่ง @resp
- สามารถจัดกลุ่มคำสั่งได้

===============================================================================
บทนำ:
===============================================================================
ปลั๊ก อินนี้จะทำให้คุณสามารถโต้ตอบกับ NPC ได้อัตโนมัติ โดยใช้คำสั่ง console command.
ปลั๊กอินนี้มีประโยชน์อย่างยิ่งกับเซิฟเวอร์ที่ใช้การถามตอบ เพื่อทดสอบว่าใช้บอทหรือไม่

===============================================================================
ขั้นตอนการใช้งาน:
===============================================================================
   1. ติดตั้งปลั๊กอินนี้ลงในโฟลเดอร์ plugins (มีอยู่แล้ว ใน OPKwin).
   2. เพิ่มบล๊อค reactOnNPC ในไฟล์ config.txt และเซ็ทคำสั่งที่จะให้ทำเมื่อสนธนากับ NPC
      เมื่อเงื่อนใขทุกย่างถูกต้อง Openkore ก็จะทำคำสั่งนั้นให้อัตโนมัติ

===============================================================================
การตั้งค่า:
===============================================================================
 • reactOnNPC (คำสั่ง)
      ใช้สำหรับตั้งคำสั่งที่จะให้ทำเมื่อเงื่อนใขภายในบล๊อค ถูกต้อง
      ตัวแปรพิเศษที่สามารถใช้ได้ (ดูด้านล่าง)

===============================================================================
      ความหมายของตัวแปร:
===============================================================================
          • type (close|continue|number|responses|text)
            ตัวแปรเหล่านี้จะสามารถระบุได้ว่า หน้าต่างที่สนธนากับ NPC เป็นแบบใด
                + close - หน้าต่างสนธนากับ NPC ที่มีปุ่ม "close"
                + continue - หน้าต่างสนธนากับ NPC ที่มีปุ่ม "next"
                + number - หน้าต่างสนธนากับ NPC ที่ให้ใส่ตัวเลข
                + responses - หน้าต่างสนธนากับ NPC ที่ให้เลือกตัวเลือก
                + text - หน้าต่างสนธนากับ NPC ที่ให้ใส่ข้อความ
            หมายเหตุ: ถ้าไม่ตั้งตัวแปรเหล่านี้ บล๊อคนี้ก็จะทำงานไม่ว่าจะเป็นการสนธนาแบบใหนก็ตามกับ NPC
          • msg_(หมายเลขบรรทัด) (ข้อความปกติ|regexp)
            นี่คือรายการของข้อความที่จะต้องตรวจสอบขณะกำลังสนธนากับ NPC หมายเลขบรรทัดเริ่มนับจาก 0 และเพิ่มไปทีละ 1
            คุณสามารถ ระบุข้อความปกติ หรือ regexp ก็ได้
          • useColors (1 หรือ 0) v.1.1.0
            โดยปกติเราจะเปรียบเทียบเฉพาะข้อความที่สนธนากับ NPC โดยไม่คำนึงถึงสี(ตัวอย่างเช่น ^FF0000)
    แต่ถ้าตัวแปรนี้ถูกตั้งให้เป็น 1 คุณจะต้องตั้งรูปแบบสีที่จะตรวจสอบด้วย คุณสามารถหาโค้ดสีได้ตอนรันบอท
          • Shared self conditions
            เราสามารเช็คสถาณะของตัวเองได้ด้วย ตัวอย่างเช่น hp,sp,อื่นๆ อ่านเพิ่มเติมที่
          • debug (1 หรือ 0) v.2.0.0 mod by windows98SE
            เพื่อดูการทำงาน แบบละเอียดของ ตัวแปร ต่างๆใน plugins
          • respIgnoreColor (1 หรือ 0) v.2.0.1 mod by windows98SE
            เพื่อตัดสีต่างๆ จากในตัวเลือกของคำพูด npc

===============================================================================
คำสั่งพิเศษ:
===============================================================================
   1. @eval(expression)
      ใช้สำหรับทำคำสั่งภาษา PERL อย่างง่ายๆ หรือ คิดเลขอย่างง่ายได้
   2. @resp(pattern) v.1.1.0
      ใช้ตรวจหาตัวเลือกที่ NPC ให้รายการมา โดย pattern ก็คือข้อความในข้อที่เราจะต้องเลือก
      pattern สามารถใช้ได้ทั้งข้อความธรรมดา หรือ regexp ก็ได้
   3. #(หมายเลขบรรทัด)~(match index)
      ถ้า คุณใช้ regexp ดักเอาข้อความหรือตัวเลข ที่คุณตั้งใว้ที่ msg_# นี่ก็คือตัวแปรที่เก็บค่าที่คุณดักมาได้
      หมายเลขบรรทัดก็คือตัวเดียวกับที่ใช้ใน msg_# โดยที่ match index ก็คือตัวชี้ลำดับของ regexp

===============================================================================
การจัดกลุ่มคำสั่ง: v.1.1.0
===============================================================================
    ใน v1.1.0 คุณสามารจัดกลุ่มคำสั่งได้เช่น @resp(@eval(...)) แต่อย่างไรก็ตามตัวอักษร "@" และ ")" ใช้ในการแยกคำสั่ง
    ดังนั้นมันไม่สามารถใช้ได้อย่างปกติ ถ้าคุณต้องการใช้ ให้ใช้ แบบนี้ "@@, "@)".

----------------------------------------------------------------------------------------------------------------------------------------------
• ตัวอย่าง:
----------------------------------------------------------------------------------------------------------------------------------------------
นี่เป็นตัวอย่างง่ายๆ ในการ บวกเลขที่เซิฟเวอร์ถามมา ใช้ @eval() ในการทำสมการคณิตศาสตร์

reactOnNPC talk num @eval(#1~1 + #3~1) {
        type number
        msg_0 ANSWER THIS CORRECTLY OR BANNED!
        msg_1 /^(\d+)$/
        msg_2 + (PLUS)
        msg_3 /^(\d+)$/
        msg_4 = ?
        }

----------------------------------------------------------------------------------------------------------------------------------------------
===============================================================================
• ตัวอย่างการใช้ Plugins reactOnNPC ตอบแบบให้เลือกตัวเลือก เช่นใช้กับ NPC แบบรวมอยู่ในตัวเดียว
===============================================================================
reactOnNPC talk resp @resp(/Ans1|AnsN/i) {     # ตัวเลือกครั้งแรกตอบ Ans1, ตัวเลือกครั้งที่ 2 ตอบ AnsN
    type responses                                            # บอกชนิด คือมีตัวเลือกให้เลือก
    respIgnoreColor 1                                        # ไม่สนใจแม้เป็นหัวข้อที่มีสีอยู่
    msg_0 /First Line/i                                       # First Line = คำบรรทัดแรกของหน้าต่างที่มีตัวเลือก
    }

* ปกติ First Line มักเป็นชื่อของ NPC ตัวนั้น
----------------------------------------------------------------------------------------------------------------------------------------------
• หมายเหตุ
    มักใช้ควบคู่ไปกับ Macro เพื่อแยกหัวข้อของ NPC ออกจากกัน

===============================================================================
• ตัวอย่างการบังคับให้เลือกตัวเลือกตามที่กำหนด
===============================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
control\config.txt
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

reactOnNPC talk resp @resp(/ซื้อขาย/) {          <--- ซื้อขาย คือ คำพูด ที่แสดงตัวเลือกการซื้อ-ขาย ในNPC
    type responses
    msg_0 /Support/i                                       <--- Support คือ บรรทัดแรกของ NPC ที่บอกเรามา
    }

• หมายถึง ..
    ให้บอทเลือก ข้อความว่า ซื้อขาย เมื่อเจอประโยคใน Console ที่บรรทัดที่มีคำว่า Support
    เรา set reactOnNPC ขึ้นมาเพื่อ ให้บอท สามารถทำการซื้อขายต่อไปได้ เพระว่าบอทมันจะไม่กด เลือกคำว่า ซื้อขาย เอง!!

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
control\macros.txt
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

automacro ab {
    location geffen
    sp < 50%
    run-once 1
    call ab1
    }

macro ab1 {
    do ai manual                                      <---- เป็นคำสั่ง กำหนด AI ในรูปการบังคับด้วยตน คือ bot จะไม่ทำงาน
    do plugin unload reactonnpc                <----- ยกเลิก plugin reactonnpc
    pause 1
    do talknpc 123 72 c r0 n                      <---- คุยกับ NPC Steps คุย กับNPC ตั้งปกติ
    pause 1
    do plugin load plugins/reactonnpc.pl     <---- เปิดการใช้งาน plugin reactonnpc
    do ai on                                             <---- เปิดการทำงาน
    release all
    }

• หมายความว่า...
    เมื่ออยู่ที่ กิฟ Sp น้อยกว่า 50 % ให้ทำการปิด Al แล้วปิดการทำงาน plugin reactonnpc หลังจากนั้น คุยกับ NPC
    ที่ พิกัด 123 72 ด้วย สเต๊ปคุย c r0 n ต่อจากนั้นทำการเปิดการใช้งาน plugin reactonnpc ต่อจากนั้น ทำการเปิดการทำงาน AI

• ที่เราตั้ง macro แบบนี้ เพราะว่า...
    การที่เราตั้ง reactOnNPC ตามข้างบน เมื่อ NPC ตัวเดียวกัน พอกด คุย NPC ปุ๊ป มันจะเลือก ซื้อขายของ ตาม react ที่ตั้งไว้
    เราจึงต้องทำการปิดการใช้งาน plugins นั้นก่อน แล้วค่อยคุย แล้วเปิดใหม่

===============================================================================
• ตัวอย่างการใช้ Plugins reactOnNPC ตอบแบบให้คำนวนด้วยการบวกเลขครับ หรือติดคุกนั่นเอง
===============================================================================

reactOnNPC talk num @eval(#2~1 #2~2 #2~3) {
        type number
        msg_0 /Superman/i
        msg_1 /วิชาขั้นที่/i
        msg_2 /(\d+)(\D+)(\d+)/i
        }

----------------------------------------------------------------------------------------------------------------------------------------------
• หมายเหตุ
reactOnNPC สามารถใช้ร่วมกับ Plugins delayCommand ได้ด้วยครับ

เช่น

reactOnNPC delayCommand talk resp @resp(/^Fields$|^Mjolnir Fields$|^Mjolnir Field 15$/i) {
    type responses
    msg_0 /.W+./i
    }

12/20/2553

Plugins autotrade

วิธีใช้งาน
----------------------------------------------------------------------------------------------------------------------------------------------
1. นำไฟล์ autotrade_v3.pl ไปใส่ยัง Plugins
----------------------------------------------------------------------------------------------------------------------------------------------
2. ในไฟล์ control/config.txt ต้องเซ็ตค่านี้ให้เป็น 1
----------------------------------------------------------------------------------------------------------------------------------------------
###############################################################################
tradeAuto 1
###############################################################################

----------------------------------------------------------------------------------------------------------------------------------------------
3. ใน control/ ให้เพิ่มไฟล์นี้ลงไป autotrade.txt
----------------------------------------------------------------------------------------------------------------------------------------------
โดยที่ภายใน ไฟล์ดังกล่าวต้องมีการกำหนดรูปแบบของการรับ Items ไว้ด้วย
รูปแบบในการกำหนดใน autotrade.txt คือ
###############################################################################
#ชื่อของ ราคา
###############################################################################
Red Potion 1
White Potion 10
###############################################################################
จากข้างบนจะซื้อเรดในราคา 1z และ ไวท์ในราคา 10z ซึ่งสามารถเพิ่มชื่อลงไปเองได้

----------------------------------------------------------------------------------------------------------------------------------------------
4. เพิ่มค่าในการตั้งร้าน เปิดและปิดร้าน ในไฟล์ control/macros.txt
----------------------------------------------------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
• ตัวอย่าง 1
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
automacro open {
    map morocc
    run-once 1
    delay 60
    call open2
    }

macro open2 {
    do chat create "B>เรด 1z ไวท์ 10z" 2 0 password
    }

----------------------------------------------------------------------------------------------------------------------------------------------
จาก macro ข้างบนเมื่อบอทอยู่ที่ morocc บอทจะเดินไปพิกัด xxx yyy และตั้งห้องชื่อว่า B>เรด 1z ไวท์ 10z เข้าได้2คน ล๊อกห้อง
*note ดูราคาของดีๆไม่งั้นอาจจนได้
**note ถ้าขยันเปิดบอทรับของร้อนก็น่าจะรวยอยู่แต่ต้องดูราคาตลาดทุกวันนะ ไม่งั้นขาดทุนไม่รู้ด้วย
***note มันสามารถคำนวนราคาได้เช่น รับ ไวท์ขวดล่ะ 10 มีคนขายมา10ขวด มันก็ให้ 100z

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
• ตัวอย่าง 2
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
automacro checkmap {
    run-once 1
    map prontera
    call openpub
    }

macro openpub {
    move 106 71
    pause 3
    do chat create "B>Empty Bottle50" 2 0 password
    }

automacro checkzeny {
    run-once 1
    zeny = 0
    call closepub
    }   

macro closepub {
    do chat leave
    }

วิธีการแปล OpenKore เป็นภาษาไทย

OpenKore เวอร์ชั่น SVN สนับสนุนทุกภาษา, ซึ่งหมายความว่า OpenKore สามารถแปลข้อความได้ คู่มือนี้จะสอนว่าจะต้องแปล OpenKore ยังไง

โปรแกรมทำงานอย่างไร
ข้อมูลการแปลจะถูกเก็บไว้ในไฟล์แปลภาษา ซึ่งมีนามสกุล .po หากต้องการแก้ไขไฟล์ .po , คุณสามารถใช้ Notepad (หรือโปรแกรมแก้ไขข้อความอื่นๆก็ได้ ) แต่ขอแนะนำให้คุณใช้ poEdit คู่มือนี้จะสอนการใช้ poEdit


poEdit คือ
poEdit เป็น โปรแกรมสำหรับช่วยแปลไฟล์ภาษาของโปรแกรมที่ถูกเก็บในแบบ gettext โปรแกรม poEdit เป็นโปรแกรมที่ได้รับความนิยมมากที่สุดตัวหนึ่งในบรรดาโปรแกรม Gnu Gettext Tool เพราะว่า poEdit นั้นสามารถทำงานได้ทั้งบน วินโดวส์ ลินุกซ์ และ Mac ในขณะที่โปรแกรมอื่นๆจะทำงานได้ในบางระบบเท่านั้น

Note : แม้แต่ WordPress ก็ใช้ไฟล์ภาษาแบบนี้ และเราก็สามารถใช้โปรแกรม PoEdit นี้ในการแก้ไขการแปลภาษาไทยที่ไม่ถูกต้องหรือไม่ถูกใจได้ด้วย

รูปแบบไฟล์
รูปแบบไฟล์หรือนามสกุลไฟล์ของ poEdit หรือ gettext มี
.po เรียกว่าไฟล์แค็ตตาล็อก(Catalogs) (บางทีไฟล์ต้นฉบับจะมีนามสกุล .pot ให้เปลี่ยนเป็น .po ก่อนก็จะสามารถเปิดด้วย poedit ได้) ไฟล์นี้ยังไม่ใช่ไฟล์ที่ใช้เป็นไฟล์ภาษาแต่เราควรเก็บไฟล์นี้ไว้ด้วยเมื่อ แปลเสร็จ และต้องส่งไฟล์นี้ไปให้ผู้พัฒนาโปรแกรมด้วย เพื่อสะดวกในการแก้ไขในครั้งต่อไป
.mo เป็นไฟล์ที่ได้รับการคอมไพล์แล้ว โดยโปรแกรม poEdit จะคอมไฟล์อัตโนมัติเมื่อบันทึก ไฟล์นี้จะใช้เป็นไฟล์ภาษาของโปรแกรม โดยไฟล์ .mo จะไม่สามารถแก้ไขได้อีกเหมือนไฟล์ .po

ดาวน์โหลดโปรแกรม
ดาวน์โหลดโปรแกรมได้ที่ poedit.net ถ้าใช้วินโดวส์ 95 เราต้องมีไฟล์ unicows.dll ด้วย

ใช้งานครั้งแรก
ในการใช้งานครั้งแรก หลังจากที่ดาวน์โหลดและติดตั้งเสร็จแล้ว
1. โปรแกรมจะให้เราเลือกภาษของเมนู เราก็เลือก thai ด้านล่างครับ(แปลไทยโดยคุณ pun)
2. โปรแกรมจะแจ้งเราว่านี่เป็นใช้งานครั้งแรกให้เราป้อนชื่อและอีมลล์ซึ่งจะถูกใส่ไว้ที่ส่วนหัวของไฟล์ ว่าเราเป็นคนแปลคนล่าสุด
3. โปรแกรมก็จะเปิดขึ้นมาพร้อมเมนูภาษาไทยหรือภาษาที่คุณเลือก

แนะนำส่วนต่างๆของโปรแกรม
โปรแกรม poedit มีส่วนต่างๆที่เกี่ยวข้องกับเราดังนี้
  1. ส่วนแสดงผล จะบอกเราว่าคำไหนแปลแล้วหรือยังไมได้แปลด้วยสี ส่วนที่เป็นสีฟ้าคือยังไม่ได้แปล สีขาวหรือแปลแล้ว และคำที่แปลแล้วจะอยู่ด้านล่างคำที่ยังไม่ได้แปลจะอยู่ด้านบนๆ
  2. คำต้นฉบับ หรือในโปรแกรมใช้ว่า “ข้อมูลดั้งเดิม”
  3. คำแปลคือส่วนที่เราต้องพิมพ์คำแปลลงไปครับ สามารถคัดลอกคำต้นฉบับไปที่ช่องนี้ได้โดยกดปุ่ม Alt+C
  4. สองช่องด้านขวาเป็นส่วนคำอธิบายครับ โดยจะบอกเราว่าคำที่เรากำลังแปลอยู่นั้น อยู่ตรงไหนบ้างของโปรแกรม

เริ่มแปล
เราสามารถดับเบิลคลิกที่ไฟล์ .po (ไฟล์ที่มีไอคอนเป็นรูปลูกโลกสีเขียวๆ) เพื่อเปิดไฟล์ด้วยโปรแกรม poEdit ได้ทันที
1. ก่อนแปลขอแนะนำให้ไปตั้งค่าเกี่ยวกับภาษาก่อนนะครับที่เมนู รายการ –> การตั้งค่า จากนั้นก็แก้ไขค่าต่างๆเล็กน้อยโดยช่องที่ต้องคำนึงถึงเป็นพิเศษคือ รูปแบบอักขระ ภาษาไทยของเราสนับสนุนแบบ UTF-8 และ iso-8859-11 ลองเลือกดูว่าแบบไหนที่แสดงภาษาไทยในโปรแกรมที่เราแปลได้ ก็เอาแบบนั้น


ส่วนในช่องอื่นๆดูว่าโปรแกรมเขาบังคับมาหรือไม่ เช่นบางโปรแกรมในส่วน ชื่อรุ่นและชื่อโครงการ นั้น ต้องใส่ชื่อโปรแกรมเท่านั้น ถ้าเขาไม่บังคับก็ดูว่าภาษาอื่นเขาใส่ยังไง เสร็จแล้ว ให้ลองบันทึกและเปิดโปรแกรมดู หากบันทึกไม่ได้หรือเปิดโปรแกรมนั้นไม่ได้ อาจเป็นเพราะว่าเราตั้งค่าไม่ถูกต้อง ให้กลับไปตั้งค่าใหม่
2. ในคำที่เราไม่แน่ใจ ขอแนะนำว่าไม่ต้องแปล หรือหากแปลก็ให้ระบุด้วยว่า เราไม่แน่ใจว่าแปลถูกหรือเปล่า ด้วยการคลิกที่รูปเมฆ หรือรูปผีหลอก หรือกด ALT+U
ที่เก็บไฟล์ภาษา
ในแต่ละโปรแกรมไฟล์ภาษาจะถูกเก็บไว้ในโฟลเดอร์ที่แตกต่างกัน และเพื่อให้เราสามารถทดสอบไฟล์ภาษา ของเราได้ เราก็ต้องเก็บไฟล์ภาษาของเราให้เหมือนกับภาษาอื่นๆเช่น ถ้าโปรแกรมเขาเก็บไฟล์ภาษาอังกฤษไว้ที่
โฟลเดอร์โปรแกรม\locale\En\LC_MESSAGES\ หรือ
โฟลเดอร์โปรแกรม\locale\Eng\LC_MESSAGES\
ภาษาไทยของเราก็น่าจะเป็น
โฟลเดอร์โปรแกรม\locale\th\LC_MESSAGES\ หรือ
โฟลเดอร์โปรแกรม\locale\thai\LC_MESSAGES\

การทดสอบไฟล์ภาษา
เมื่อแปลเสร็จแล้วหรือเมื่อต้องการทดสอบว่าภาษาที่เรากำลังแปล แสดงผลได้หรือไม่ ถ้าเปิดโปรแกรมอยู่ให้ปิดไปก่อนแล้วเปิดกลับขึ้นมาใหม่
จากนั้นดูว่าเมนูโปรแกรมเปลี่ยนเป็นภาษาไทยหรือยัง ถ้ายัง ให้ไปหาเมนูที่ใช้สำหรับเปลี่ยนภาษาซึ่งโดยมากจะอยู่ที่
Language หรือ
option –> Language หรือ
Setting –> Language หรือ
Preference –> Language
จากนั้นดูว่ามีชื่อภาษาไทยของเราหรือยัง ให้เลือกภาษาไทยของเรา แล้วปิดเปิดโปรแกรมใหม่อีกรอบ
หากเลือกภาษาไทยแล้วโปรแกรมเกิด Error ไม่สามารถแสดงภาษาไทยได้ อาจเกิดจากการตั้งค่าผิดในหัวข้อเริ่มแปลที่ด้านบน

โปรแกรมอื่นๆที่คล้ายกัน
นอกจาก poEdit แล้ว โปรแกรมที่สามารถใช้จัดการกับ gettext ได้อีกก็คือ kbabel และ gtranslator


12/19/2553

วิธีแปลเมนูโปรแกรมให้มีภาษาไทย

มาสอนโปรแกรมฝรั่งให้หัดพูดไทยกันเถอะ

คุณสามารถที่จะทำให้ชื่อคุณเองเป็นหนึ่งในทีมงานผู้พัฒนาโปรแกรมได้ (แม้ว่าคุณจะเขียนโปรแกรมไม่เป็นก็ตาม) คุณจะเชื่อมั๊ย ถึงแม้ว่าเราจะเขียนโปรแกรมไม่เป็น แต่เราก็สามารถที่จะมีชื่อเป็นหนึ่ง ในทีมงานของผู้พัฒนาโปรแกรมได้ ทำได้อย่างไรเชิญติดตามอ่านได้ ณ บัดนี้


วิธีหาโปรแกรมมาแปลและวิธีดูว่าโปรแกรมนั้นๆแปลได้หรือไม่

การหาโปรแกรมมาแปลก็ทำได้โดย
-ค้นหาใน Google หรือเว็บไซต์บริการดาวน์โหลดต่างๆเช่น Download.com หรือ DownSeek.com ด้วยคำว่า “multi lang”
-และอีกวิธีที่ง่ายและได้ผลดีและมีโปรแกรมให้มากที่สุดก็คือ หาตามนิตยาสารคอมพิวเตอร์

ส่วนวิธีการดูว่าโปรแกรมนั้นแปลได้หรือไม่มีดังนี้

1. ดูที่เมนูโปรแกรมว่ามีคำว่า Language หรือเปล่า


2. เข้าไปดูที่โฟลเดอร์ของโปรแกรมว่ามีโฟลเดอร์หรือไฟล์ชื่อ Lng, Lang, Language หรือ Locale หรือไม่

รูปแบบไฟล์ภาษาแบบต่างๆ

ชนิดไฟล์หรือนามสกุลของไฟล์ภาษาที่พบบ่อยมีดังนี้
1. แบบไฟล์ข้อความธรรมดาซึ่งส่วนมากจะมีนามสกุล lng หรือ lang ย่อมาจาก Language หรือ ini ,inf หรือบางโปรแกรมก็ใช้ txt ธรรมดา โดยวิธีการเปิดไฟล์นี้ที่ง่ายที่สุดก็คือ เปิดโปรแกรม notepad แล้วใช้การลากไฟล์ไปวางในโปรแกรม Notepad ได้เลย
2. xml ภาษา xml ไฟล์แบบนี้ต้องระวังในส่วน encoding ให้ดี
3. po ไฟล์แบบนี้เรียกว่า GNU gettext ส่วนโปรแกรมที่ใช้แก้ไขโปรแกรมนี้เรียกว่า GNU gettext tools ขอแนะนำให้ใช้โปรแกรม poEdit มีภาษาไทยเหมือนกัน(แปลโดยคุณ pun) ใช้ได้ทั้งบนวินโดวส์ ลีนุกซ์และ Mac โดยไฟล์ต้นแบบจะมีนามสกุล pot ต้องเปลี่ยนเป็น po ก่อน (ถ้ามีนามสกุลเป็น po อยู่แล้วก็ไม่ต้องเปลี่ยน)เมื่อบันทึกแล้ว จะมีนามสกุล mo ตอนส่งก็ส่งไปทั้งแบบ po และ mo เลยโดยไฟล์ pot หาได้ที่เว็บไซต์ของโปรแกรมและที่ http://www.debian.org/international/l10n/po/pot
4. Dll ส่วนมากไฟล์แบบนี้ตัว source จะเป็นไฟล์ .rc ต้อง compile ด้วยภาษา C
5. แบบอื่นๆเช่น
-บางโปรแกรมจะใช้วิธีฝังหรือ Embed ไฟล์ภาษาไว้ในโปรแกรมเลย
-บางโปรแกรมก็รวมภาษาต่างๆไว้ในไฟล์เดียวกันก็มี
โดยวิธีการแปลโปรแกรมเหล่านี้เราต้องติดต่อไปยังผู้พัฒนาโปรแกรมนั้นๆเพื่อสอบถามวิธีการแปลเอง

เตรียมเครื่องมือ

การแปลภาษาไทยให้โปรแกรมใช้อะไรบ้าง
1. ใจที่รักที่จะทำ เนื่องจากการแปลเมนูโปรแกรมไม่มีค่าจ้างเป็นเงิน
2. โปรแกรม Text Editor หรือโปรแกรมแก้ไขข้อความ เช่น Notepad (มีในวินโดวส์อยู่แล้ว)หรือโปรแกรมแก้ไขข้อความทั่วไป
3. โปรแกรม Poedit ดาวน์โหลดได้ที่ poedit.net เตรียมไว้ใช้กับไฟล์ po ครับเพราะเดี๋ยวนี้เริ่มมีหลายโปรแกรมใช้ไฟล์แบบนี้กันเยอะขึ้น
โปรแกรมอื่นๆที่คล้ายกันเช่น kbabel และ gtranslator
4. พจนานุกรม (สามารถใช้โปรแกรมพจนานุกรมได้เพื่อความสะดวก) โปรแกรมแปลภาษาและตัวอย่างคำแปล
ตัวอย่างเช่น
โปรแกรมพจนานุกรม ของ Thai Software Dictionary รุ่น 4.0
โปรแกรมแปลภาษา ใช้ แปลไทย 2000
และตัวอย่างคำแปลในข้อ 5
5. ไฟล์ all_glossary.csv เป็นไฟล์ตัวอย่างคำแปลที่พบบ่อย มีประโยชน์มากหาได้ที่
http://www.opentle.org/ossglossary/
6. พื้นฐานภาษาอังกฤษพออ่านออก ไม่ถึงต้องเก่งมากหรอกเพราะเราสามารถใช้โปรแกรมพจนานุกรมและตัวอย่างคำแปลช่วยได้
7. คอมพิวเตอร์ 1 เครื่องสเป๊กไม่ต้องสูงมากเอาให้สามารถเปิดโปรแกรมที่เราจะแปลได้ก็พอ+พื้นฐานการใช้คอมพิวเตอร์อีกเล็กน้อย
8. อินเตอร์เน็ตสำหรับส่งไฟล์ภาษาที่เราแปลแล้ว

การเข้ารหัสข้อความและรหัสภาษา

ในการบันทึกไฟล์ถ้าต้องมีการกำหนดเกี่ยวกับภาษา อันดับแรกให้ลองบันทึกตามต้นฉบับโดยที่ไม่ต้องแก้ไขรหัสภาษา ถ้าไม่ได้ ข้อมูลต่อไปนี้อาจช่วยคุณได้

1. Language ID ของภาษาไทยคือ 1054 และอีกแบบคือ $041e หรือ 041e หรือ 41e (41e คือเลขฐาน16 ของ 1054)
2. Codepage ให้ลองเลือกจากรายการต่อไปนี้
UTF-8
tis-620
iso-8859-11
windows-874

การแปลวิธีใช้

ไฟล์วิธีใช้หรือ Help File นั้นโดยปรกติมี 2 แบบคือแบบ .hlp และแบบ .chm แต่โดยปรกตินักแปลโปรแกรมน้อยรายที่จะแปลวิธีใช้ แต่ถ้าเราแปลได้ก็จะเป็นสร้างความแตกต่างให้กับผู้แปลเองและเป็นการดีกับผู้ใช้ชาวไทยเราด้วย

-ไฟล์ chm ให้ Decompiler ด้วยโปรแกรม HTML Help Workshop โปรแกรมนี้มีในแผ่นโปรแกรม Visual Studio 6 จากนั้นก็แปลข้อความในไฟล์ html ที่ได้จากการ Decompiler แล้วก็ compiler ใหม่อีกครั้ง

-ไฟล์ hlp วิธีการคล้ายกับแบบ chm แต่การ Decompiler ไฟล์นี้จะต่างออกไปโดยโปรแกรมตัวที่ใช้ดาวน์โหลดจาก planet-source-code.com เป็น source code ของ vb6 (ค้นหาคำว่า Help Decompiler ผู้เขียนคือ ALKO)โปรแกรมที่ใช้ Compiler ไฟล์นี้ชื่อ Help Compiler Workshop (HCW) ของไมโครซอฟต์เช่นกัน

เริ่มกันเลย

มาเริ่มกันเลยนะ โดยตัวอย่างจะสาธิตวิธีการแปลโปรแกรม Cryptic Disk เป็นโปรแกรมที่ใช้ในการเข้ารหัสดิสก์ดาวน์โหลดได้ที่ Exlade.com เมื่อดาวน์โหลดและติดตั้งเสร็จแล้ว ก็จะเปิดไปที่โฟลเดอร์ของโปรแกรมที่เลือกให้ติดตั้งคือ c:\Program Files\Cryptic Disk++(ปรกติจะอยู่ที่c:\Program Files\Cryptic Disk++ )\


ดังภาพ จะเห็นได้ว่ามีทั้งโฟลเดอร์ชื่อ Languages และไฟล์ชื่อ Default.lng ซึ่งในโปรแกรมนี้ไฟล์ Default.lng เป็นไฟล์ต้นฉบับภาษาอังกฤษถ้าในโปรแกรมอื่นมักจะมีไฟล์ English.lng อยู่ในโฟลเดอร์ Languages ซึ่งเราสามารถใช้เป็นต้นแบบโดยคัดลอกแล้วเปลี่ยนชื่อเป็น Thai.lng

ภาพเปลี่ยนชื่ภ??ฟล์ eng.lngเป็น thai.lng
เมื่อเปลี่ยนชื่อแล้วก็ทำเปิดโดยการลากไฟล์ไปปล่อยใน notepad ดังภาพเสร็จแล้วก็เริ่มแปลกันเลย โดยส่วนที่มีเครื่องหมาย ; เป็นคำอธิบาย จะไม่ถูกนำไปใช้สามารถใส่อะไรก็ได้

ตัวอย่างการตั้งค่าในส่วน [LangOptions]
LanguageName=Thai (ไทย) <<<- – - ชื่อภาษาที่จะแสดงที่เมนู
LanguageID=1054 <<<- – - รหัสภาษา
LanguageHelp=crdisk.chm <<<- – - ชื่อไฟล์วิธีใช้สามารถเปลี่ยนเป็นไฟล์ที่เราแปลแล้วได้ครับ
LanguageCodePage=874 <<<- – - การเข้ารหัส
LanguageExt=com <<<- – - ชื่อท้ายเว็บไซต์(ดอตคอม)
จากนั้นก็แปลในส่วนอื่นๆตามปรกติ โดยส่วนที่มีเครื่องหมาย [ ] ไม่ต้องแปลนะ

ส่งได้เลย

เมื่อแปลเสร็จแล้วก็ส่งได้เลย


ก่อนส่งก็อย่าลืมตรวจสอบความถูกต้องก่อนอีกครั้งนะ หรือจะเอาไปลองกับ เครื่องอื่นๆดูก่อนก็ได้ เช่นถ้าตอนที่เราแปลใช้ วินโดวส์95 เมื่อนำไปใช้กับ วินโดวส์Xp อาจแสดงผลต่างกัน อย่าลืมตรวจสอบคำถูกผิดด้วยนะ

สิ่งที่เราจะได้รับ

1. ได้ใช้โปรแกรมฟรีๆ ในกรณีที่โปรแกรมที่เราแปลเป็นโปรแกรมที่ต้องลงทะเบียนหรือแชร์แวร์ทางผู้ พัฒนาโปรแกรมจะตอบแทนน้ำใจเราด้วยการให้รหัสลงทะเบียนกับเราฟรีๆเลย ยิ่งถ้าเป็นโปรแกรมใหญ่หรือโปรแกรมที่ราคาแพงเราก็ยิ่งคุ้ม ดังภาพเป็นเมลล์ที่ CEO ของ Exlade.com ส่งรหัสลงทะเบียนมาให้


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

รายชื่อโปรแกรมที่มีภาษาไทยและชื่อผู้แปล บางส่วน
โปรแกรม ผู้แปล
FlashGet กฤติวัฒน์ เมธีกุล
Winamp 2.x วิพัฒน์รณ พิทยาธิคุณจ
Winamp 5.1 สมคเน หัตถกรรม
WinRar ชวรณ ตู้จินดาจ
CDex บริพัตร หาญวิเศษ
Opera 5 ยงยุทธ บุญเชิด
IsoBuster ธนวัฒน์
7-Zip Zafire06
Spybot – Search & Destroy Phanu Wasusin
PhpMyAdmin Arthit Suriyawongkul
สำหรับโปรแกรมเมอร์ที่สนใจที่จะให้โปรแกรมของ คุณมีหลายภาษา สามารถค้นหา Source code ได้ที่ planet-source-code.com หรือ sourceforge.com ด้วยคำว่า “multi lang” ได้ครับ

แหล่งข้อมูลเพิ่มเติมเกี่ยวกับการแปลโปรแกรม

AddThis

Share |