Moderator: MacroQuest Developers
Code: Select all
|** LangTeach.mac
* by brianMan
*
* This is 1 of 2 files used for this language trainer.
* - LangTeach.mac (this) is used by the "teacher".
* - LangLearn.mac is used by the "student".
*
* What this macro does, is simply start at "/lang 2" and spam away in group, it
* keeps spamming that language untill the "student" informs the "teacher(s)"
* that this language is now maxed.
**|
#Event SwitchLang "#1# tells the group, 'Lang:#2#'"
#chat group
Sub Main
/declare TheLang int outer
/varset TheLang 2
/lang ${TheLang}
:loop
/if (!${Target.ID}) /return
/doevents
/keypress enter chat
/keypress /
/keypress g chat
/keypress s chat
/keypress a chat
/keypress y chat
/keypress space chat
/keypress ${Math.Rand[2]} chat
/keypress enter chat
/goto :loop
/return
Sub Event_SwitchLang(string Line, string Toon, int Lang)
/echo Caught it: ${Toon} / ${Lang}
/if (${Lang} == 0) {
/lang 1
/endmacro
}
/varset TheLang ${Lang}
/lang ${TheLang}
/returnCode: Select all
|** LangLearn.mac
* by brianMan
*
* This is 1 of 2 files used for this language trainer.
* - LangLearn.mac (this) is used by the "student".
* - LangTeach.mac is used by the "teacher".
*
* What this macro does, is simply start at "/lang 2" and spam away in group, it
* keeps spamming that language untill it's maxed, then it switches to the next
* language, and informs the "teacher(s)" what language to switch to.
**|
Sub Main
/declare LearnLang int local
/for LearnLang 2 to 25
/lang 1
/gsay Lang:${LearnLang}
/lang ${LearnLang}
/delay 1
:loop
/if (!${Target.ID}) /return
/delay 1
/keypress enter chat
/keypress /
/keypress g chat
/keypress s chat
/keypress a chat
/keypress y chat
/keypress space chat
/keypress ${Math.Rand[2]} chat
/keypress enter chat
/if (${Me.LanguageSkill[${LearnLang}]} < 100) /goto :loop
/next LearnLang
/gsay Lang:0
/returnHmm. I haven't experienced that problem. It might be that either the teacher or the student (or both) don't have all the languages. For my macro(s) to work properly you must have 1 point in all the languages on the teacher(s).Xasiz wrote:Hey Brianman, I tried this macro out today and it stops at 11 old erudine. Is there an update to this?
Code: Select all
|========================================================================================================================
| Modded from Cr4zyb4rd...Thanks for the original code, still working like a champ
| http://www.macroquest2.com/phpBB2/viewtopic.php?t=9067&postdays=0&postorder=asc&start=15
| Run this on 2 or more chars, will cycle through the languages and skill them up.
| Echoes what skill started at & ended at upon exitting(for skills that increased)
| Gives total language & your average upon exitting as well(excluding common tongue)
| Clear target with ESC key to stop macro
| Character MUST have at least 1 point in each language for this to work properly
|========================================================================================================================
Sub Main
/declare BeginSkills int local
/declare EndSkills int local
/declare lingo int local 0
/declare avg int local 0
/declare index int local
/declare looper int local
/for BeginSkills 2 to 25
/declare "${Me.Language[${BeginSkills}]}_Begin" int outer ${Me.LanguageSkill[${BeginSkills}]}
/next BeginSkills
/echo Started ::: ${Macro}
:loopme
/target ${Group.Member[1]}
/for index 2 to 25
/language ${index}
/delay 1
/for looper 1 to 2000
/if (!${Bool[${Target}]}) {
/echo No target, exiting ${Macro}
/language 1
/return
}
/if (!${Math.Calc[${looper} % 30].Int}) /delay 1
/keypress enter chat
/keypress /
/keypress g chat
/keypress s chat
/keypress a chat
/keypress y chat
/keypress space chat
/keypress ${Math.Rand[9]} chat
/keypress enter chat
/next looper
/next index
/goto :loopme
:OnExit
/for EndSkills 2 to 25
/declare "${Me.Language[${EndSkills}]}_End" int outer ${Me.LanguageSkill[${EndSkills}]}
/if (${${Me.Language[${EndSkills}]}_Begin}==${${Me.Language[${EndSkills}]}_End}) {
/delay 1
} else /if (${Me.LanguageSkill[${EndSkills}]}>99) {
/echo ${Me.Language[${EndSkills}]} ::: ${${Me.Language[${EndSkills}]}_Begin} TO MASTER
} else {
/echo ${Me.Language[${EndSkills}]} ::: ${${Me.Language[${EndSkills}]}_Begin} to ${${Me.Language[${EndSkills}]}_End}
}
/next EndSkills
/varcalc lingo ${Me.LanguageSkill[2]}+${Me.LanguageSkill[3]}+${Me.LanguageSkill[4]}+${Me.LanguageSkill[5]}+${Me.LanguageSkill[6]}+${Me.LanguageSkill[7]}+${Me.LanguageSkill[8]}+${Me.LanguageSkill[9]}+${Me.LanguageSkill[10]}+${Me.LanguageSkill[11]}+${Me.LanguageSkill[12]}+${Me.LanguageSkill[13]}+${Me.LanguageSkill[14]}+${Me.LanguageSkill[15]}+${Me.LanguageSkill[16]}+${Me.LanguageSkill[17]}+${Me.LanguageSkill[18]}+${Me.LanguageSkill[19]}+${Me.LanguageSkill[20]}+${Me.LanguageSkill[21]}+${Me.LanguageSkill[22]}+${Me.LanguageSkill[23]}+${Me.LanguageSkill[24]}+${Me.LanguageSkill[25]}
/varcalc avg ${lingo} / 24
/echo ${lingo} total linguist skill points.
/echo ${avg} linguist skill average.
/returnCode: Select all
#event called "#1# tells you, 'Teach me.'"
#event teachmore "#1# tells you, 'Teach More #2#'"
Sub Main
/declare lang_current int 1
/declare lang_start int outer 0
/echo Now running Language Master
/call Idle
/return
Sub Idle
:Idle
/if (${lang_start}=1) /call Teaching 1000
/doevents
/delay 20
/goto :Idle
/return
Sub Teaching(int reps)
:Teachloop
/lang ${lang_current}
/echo Now teaching ${lang_current}
/for x 0 to ${reps}
/if (${Target.Name.Equal[${Me.Name}]}) /call Idle
{
/keypress enter
/keypress a chat
/keypress enter chat
/keypress enter
/keypress a chat
/keypress enter chat
/keypress enter
/keypress a chat
/keypress enter chat
/keypress enter
/keypress a chat
/keypress enter chat
/keypress enter
/keypress a chat
/keypress enter chat
}
/next x
/varcalc lang_current ${lang_current}+1
/if (${lang_current}>25) {
/lang 1
/varset lang_current 2
/varset lang_start 0
/target clear
/disband
/beep
/return
}
/goto :Teachloop
/return
Sub Event_called(line,learner)
/invite ${learner}
/varset lang_start 1
/delay 10m ${Group.Member[1].ID}
/return
Sub Event_teachmore(line,learner,langname)
/if (${langname.Equal[Barbarian]}) /lang 2
/if (${langname.Equal[Erudian]}) /lang 3
/if (${langname.Equal[Elvish]}) /lang 4
/if (${langname.Equal[Dark Elvish]}) /lang 5
/if (${langname.Equal[Dwarvish]}) /lang 6
/if (${langname.Equal[Troll]}) /lang 7
/if (${langname.Equal[Ogre]}) /lang 8
/if (${langname.Equal[Gnomish]}) /lang 9
/if (${langname.Equal[Halfling]}) /lang 10
/if (${langname.Equal[Thieves Cant]}) /lang 11
/if (${langname.Equal[Old Erudian]}) /lang 12
/if (${langname.Equal[Elder Elvish]}) /lang 13
/if (${langname.Equal[Froglok]}) /lang 14
/if (${langname.Equal[Goblin]}) /lang 15
/if (${langname.Equal[Gnoll]}) /lang 16
/if (${langname.Equal[Combine Tongue]}) /lang 17
/if (${langname.Equal[Elder Teir'Dal]}) /lang 18
/if (${langname.Equal[Lizardman]}) /lang 19
/if (${langname.Equal[Orcish]}) /lang 20
/if (${langname.Equal[Faerie]}) /lang 21
/if (${langname.Equal[Dragon]}) /lang 22
/if (${langname.Equal[Elder Dragon]}) /lang 23
/if (${langname.Equal[Dark Speech]}) /lang 24
/if (${langname.Equal[Vah Shir]}) /lang 25
/invite ${learner}
/delay 10m ${Group.Member[1].ID}
/call Teaching 200
/returnCode: Select all
| Lingo.mac
| Author: Gurash
Sub Main
/declare numLangs int 27
/declare x int 2
:loop
/for x 2 to ${numLangs}
/if (${Target.Name.Equal[${Me.Name}]}) /goto :end
/lang ${x}
{
/gsay Hello, group! Today, we are learning languages.
/gsay Learning languages only takes a short amount of time.
/gsay It costs nothing in platinum, and you can do it while leveling!
/gsay There's really no reason not to learn all of the languages.
/gsay Hopefully today's lesson will be useful to you.
}
/delay 1s
/next x
/goto :loop
:end
/lang 1
/endmacro
/return