大奇迹召唤师转职任务他山之石任务怎么做

剑灵召唤师之路1任务怎么做_百度知道
剑灵召唤师之路1任务怎么做
提问者采纳
全部技能教程按照说的做就是了 主要是剑灵坑爹的教程需要你用教你使用的技能杀死怪才算完成一次 那时候你猫儿又没有狗尾草E回来不攻击 所以很可能你想用技能打死补刀的时候被猫儿打了 我做那些任务的时候就磨了好久。。。
其他类似问题
3人觉得有用
剑灵的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁召唤师任务怎么做啊????
召唤师任务怎么做啊????
我 想问问召唤到第一脊椎的任务得到巨星黑章鱼的胡须,我做了多少便怎么总是刷不出来 啊 !为什么那位大哥指点下了,xiexie !
黑章鱼的胡须 是任务用品 掉的几率不大 你可以考虑以下几点 
1。 你的COF值是否过高
着叫废才指数 越高掉物品的几率越低
2.对于掉落几率不大的任务品 尽量刷难道高点图 比如可以刷勇士黑鱼 能力好点试试王者黑鱼 
谢谢!
那个人 不在地图的BOSS点.
是在另外的地方
如果是那屋 进去有召唤 招的精灵怪
去相反的方向找吧 

其他回答 (11)
召唤出具有元素属性的精灵,或达成契约的怪物协助作战的魔法师!”

  召唤师在战斗时不仅借用法师的元素力量,也会召唤出有4大属性的精灵来参加战斗。

  他们也有能力召唤出和旋魔领导者克依特达成契约的怪物,进行战斗。

  召唤师能力越高,一次可召唤的召唤兽数量也越多,也可以召唤更为强力的召唤兽。

 




职业特色 
 召唤师,操纵着魔物以及精灵战斗的魔法师。他们善于利用数量庞大的唤兽军团歼灭对手。作为召唤师你只需要指挥你的部下,并强化他们的战斗力,然后在一旁欣赏激烈的战斗…… 
唤兽们需要你的信赖,他们会是你最好,最强大的伙伴。 
战场上,拥有“哥布林”,“黑骑士”,各种小精灵,“魔界花”“魔女”“精灵王”这些唤兽的召唤师可以说是战无不胜的。 
记住,作为召唤师,你永远只是配角,你的唤兽才是真正的主角! 
 
攻击类型 
 物理型,魔法型 
 
精通武器 
 全系列法师武器 
 
精通护具 
 清图:布甲 ,PVP:重甲 (推荐) 
 
上手难度 
 ★★★★(前期职业优势不明显,25级以后会有很大转变) 
 

召唤师技能展示:

高级契约召唤的“魔女 路易丝” 
终极召唤“精灵王 伊伽贝拉” 

召唤师转职任务
召唤师转职任务 
 
任务NPC: 
  魔法师导师莎兰、夏洛克 
 
等级要求: 
  18级以上 
 
任务流程: 
 去赫顿玛尔找夏洛克请教和怪物沟通的方法。 (可以按&N&键打开城镇地图查找NPC) 
前往地下城收集2000金币、 21个[蓝色小晶块]、 21个[红色小晶块]和12个[生锈的铁片]交给夏洛克并换取情报。 (各色小晶块可以通过某些重复任务或在诺顿处分解装备获得; 生锈的铁片可以从地下城的怪物身上获得) 
前往天空之城的『亚蒙上层』, 寻找赫德尔的好友斯根。 
前往格兰之森的『暗黑雷鸣废墟』, 杀死威胁生灵性命的领主盗尸者骨狱息, 要求地下城难度为勇士级以上。 (需要先通关冒险级地下城, 并达到评分B以上, 才能获得进入勇士级地下城的权限, 权限获得后可通过该地图面板下方亮起的左右箭头选择难度) 
把和夏洛克的谈话结果告诉莎兰。 
 


召唤师转职后可学的新技能
转职后可以学习的新技能 
 
技能图片 
 技能名称 
 技能描述 
 

 召唤兽强化 
 增强自身周围的所有召唤兽的威力, 包括队员的召唤兽。 
 

 精灵召唤 : 亚德炎 
 从周围的火属性物体中召唤出火之精灵亚德炎, 使其协助自身攻击敌人。 
 

 精灵召唤 : 冰奈斯 
 从周围的冰属性物体中召唤出冰之精灵冰奈斯, 使其协助自身攻击敌人。 
 

 精灵召唤 : 瑟冥特克 
 从周围的暗属性物体中召唤出暗之精灵瑟冥特克, 使其协助自身攻击敌人。 
 

 精灵召唤 : 雷沃斯 
 从周围的光属性物体中召唤出光之精灵雷沃斯, 使其协助自身攻击敌人。 
 

 召唤兽跟随 
 使召唤兽进入跟随状态, 效果持续一定时间; 如若施放者被敌人攻击, 则召唤兽自动进入Buff状态并攻击敌人。 
 

 契约召唤 : 桑德尔 
 召唤出黑骑士桑德尔, 使其协助自身攻击敌人。 
 

 契约召唤 : 袄索 
 召唤出魔界花袄索, 使其协助自身攻击敌人。 
 

 魔力印记 
 向敌人投掷魔力胶囊使敌人进入标靶状态, 并以一定的时间间隔给予敌人魔法伤害。 
 

 契约召唤 : 路易丝 
 召唤出路易丝大姐, 使其协助自身攻击敌人。 
 

 精灵召唤 : 伊伽贝拉 
 以牺牲一定数量的精灵召唤出精灵王伊伽贝拉, 使其协助自身攻击敌人。 
 

 精灵献祭 
 在前方生成一个魔法阵并献祭魔法阵内自己召唤出的精灵(精灵王除外), 献祭后可以使魔法阵内的我军进入Buff状态。 
 

 献祭攻击 : 亚德炎 
 使用[精灵献祭]献祭亚德炎时, 亚德炎会发动火焰爆炸攻击周围敌人, 且[精灵献祭]的Buff持续有效。 
 

 献祭攻击 : 冰奈斯 
 使用[精灵献祭]献祭冰奈斯时, 冰奈斯会发动全方位的冰柱攻击周围敌人, 且[精灵献祭]的Buff持续有效。 
 

 献祭攻击 : 瑟冥特克 
 使用[精灵献祭]献祭瑟冥特克时, 瑟冥特克会发动暗影爆炸攻击周围敌人, 且[精灵献祭]的Buff持续有效。 
 

 献祭攻击 : 雷沃斯 
 使用[精灵献祭]献祭雷沃斯时, 雷沃斯会发动闪电攻击周围敌人, 且[精灵献祭]的Buff持续有效。 
 

我以前刷章鱼
刷了30多次 才出了1个哦
这个是个人幸运问题我刷了很久才刷出来
运气不好最少20次
那个是看运气的 我也是召唤,50多级以后才去刷,刷了十多次才刷出来.
你可以找个机械师帮你刷、
速度很快、
本人就是机械师、
因为机械师有BUFF。
爆出那东西的机率很大、、
如果还是卟明白、、
就密我吧、
QQ:
我会耐心的为您解答、
那个任务建议刷冒险难度容易出
这个看运气
我是召唤师,你要我带你就+我,采纳我吧
那个BOSS比较小气
你就当练级刷就行了 (我以前也是在练级事刷出来的
自己单刷普通
当初我单刷了5次
多去打怪就行了
相关知识等待您来回答
地下城与勇士领域专家问题起因 在中,用户点击“上一张”或“下一张”需要等待图片完全移到位后,按钮才可以继续使用,在图片移动过程中,用户不能点击按钮,或点击后无任何效果,这就容易让用户产生挫败感,但如果让用户每次点击均即时响应,又会让坐标或状态出现混乱。 解决思路 考虑到可以使用一个任务队列,用户的每次点击,均予以响应(解决挫败感),并将作为一个任务,由任务队列接收。function movePanel() {
var tq=taskQueue();
this.last = function (){
if (!this.getCanLast())
tq.addTask(function(){...});
this.next = function (){
if (!this.getCanNext())
tq.addTask(function(){...});
而任务队列的任务是按进入队列的顺序延迟执行(解决状态一致性)的,即当前一个任务完成后,后面的任务才被执行,如果当前没有任务,则入队列的任务立即执行,这样就可以保证movePanel内部的状态的一致性。function taskQueue() {
var taskList = [];
var isRun =
this.addTask = function (task) {
taskList.push(task);
setInterval(function () {
if (taskList.length & 0 && !isRun) {
taskList.shift()();
这里面一个task就一个函数,很明显,这个方案太简单,如果task是一个异步的函数,调用它时会立即返回并执行下一条isRun=false语句,并进行下一个task的执行,而此时当前的task并没有执行完毕,从而坐标或状态的不一致性又会出现。接下来,我们为task为异步的情况,再进行设计:function taskQueue() {
var taskList = [];
var isRun =
this.addTask = function (task) {
taskList.push(task);
function run(task) {
var endWrap = function () {
if(task.end) task.end();
if (task.isAsyn)
task.run(endWrap);
task.run();
endWrap();
setInterval(function () {
if (taskList.length & 0 && !isRun) {
run(taskList.shift());
我们与调用方做个约定,将task作为一个对象,它拥有isAsyn的属性表示是否是一个异步任务,具有run和end的方法,如果是异步任务,必须提供一个end方法,并作为run的一个参数,run执行完毕后,必须回调这个end方法。function movePanel() {
var tq=taskQueue();
this.last = function (){
if (!this.getCanLast())
tq.addTask({isAsyn:true,
run: function (end) {... end(x,y);},
end: function (x,y) {}
this.next = function (){
if (!this.getCanNext())
tq.addTask({isAsyn:true,
run: function (end) {... end(x,y);},
end: function (x,y) {}
理论上没有问题,但实际上,回调函数end也是需要参数的,比如我们的movePanel中end,是有一个x和y的坐标传给这个回调的,而我们的taskQueue将end方法拦截后进行包装后再调用,即使run方法传给end的参数也在这个过程中被无情的忽略了,运行效果并不是我们期望的。还好,我们有apply,可以将这些参数继续传递下去:function taskQueue() {
var taskList = [];
var isRun =
this.addTask = function (task) {
taskList.push(task);
function run(task) {
var endWrap = function () {
if(task.end) task.end.apply(task,arguments);
if (task.isAsyn)
task.run(endWrap);
task.run();
endWrap();
setInterval(function () {
if (taskList.length & 0 && !isRun) {
run(taskList.shift());
这样参数是可以传递了,但新的问题出现了,用户点击次数过狠后,图片移出了相应的范围,也就是说原先在接受任务时的判断if (!this.getCanNext()) 或if (!this.getCanLast()) 是通过了,但到真正这个任务被执行时,其实已不满足这个判断条件了。所以可以考虑给task再增加一个validate方法,用于检测此时是否有必要再执行先前已入队列的任务。以下是考虑加了validate及task当前状态的后完整山寨版:function taskQueue() {
var taskList = [];
var isRun =
this.addTask = function (task) {
task.status = 'waiting';
taskList.push(task);
function run(task) {
if (!task.validate()) {
task.status = 'invalidate';
function endWrap() {
if(task.end) task.end.apply(task,arguments);
task.status = 'done';
task.status = 'running';
if (task.isAsyn) {
if(task.begin) task.begin();
task.run(endWrap);
if(task.begin) task.begin();
task.result = task.run();
endWrap();
setInterval(function () {
if (taskList.length & 0 && !isRun) {
run(taskList.shift());
我们给task增加了begin的方法,这是供该task被执行时可以被回调,增加了result属性,如果是同步的task,被执行时可以得到返回值。至于异常,只能task自己去保证不会抛出异常,否则这个队列会一直阻塞。
我们再修改movePanel中的last和next方法,以期达到我们希望的效果。
div#content1 {position: width:158 height:50 overflow: padding:0; }
div#imgs1 {position: top:5 width:1000 height:40 padding:0; }
div#imgs1 img {margin:2 width:35 height:35 display: float: }
div#content2 {position: width:50 height:182 overflow: padding:0; }
div#imgs2 {position: left:5 width:40 height:1000 padding:0; }
div#imgs2 img {margin:2 width:35 height:35 display: }
&div id='content1'&
&div id='imgs1'&&/div&
&input type='button' id='btnLast1' value="last" /&
&input type='button' id='btnNext1' value="next" /&
&div id='content2'&
&div id='imgs2'&&/div&
&input type='button' id='btnLast2' value="last" /&
&input type='button' id='btnNext2' value="next" /&
function mover(posX, posY) {
this.posX = posX;
this.posY = posY;
this.speedCfg = { 'slow': 1500, 'normal': 1000, 'fast': 500 };
this.frequency = 25.0 / 1000; //25 frames per second
this.moveTo = function (posX, posY, speed, frequencyfn, endfn) {
if (typeof (speed) == 'string') {
if (!speed in this.speedCfg) { speed = 'normal'; }
speed = this.speedCfg[speed];
var steps = speed * this.
var distanceX = (posX - this.posX) /
var distanceY = (posY - this.posY) /
for (var i = 0; i & steps - 1; i++) {
setTimeout(function () {
me.posX += distanceX;
me.posY += distanceY;
frequencyfn(me.posX, me.posY);
}, (1 / this.frequency) * (i + 1));
setTimeout(function () {
this.posX = posX;
this.posY = posY;
endfn(this.posX, this.posY);
}, (1 / this.frequency) * steps);
function taskQueue() {
var taskList = [];
var isRun =
this.addTask = function (task) {
task.status = 'waiting';
taskList.push(task);
function run(task) {
if (!task.validate()) {
task.status = 'invalidate';
function endWrap() {
if(task.end) task.end.apply(task,arguments);
task.status = 'done';
task.status = 'running';
if (task.isAsyn) {
if(task.begin) task.begin();
task.run(endWrap);
if(task.begin) task.begin();
task.result = task.run();
endWrap();
setInterval(function () {
if (taskList.length & 0 && !isRun) {
run(taskList.shift());
function movePanel(curLeft, curTop, direct, stepLen, totalCount, showNum) {
var curPos = { 'x': curLeft, 'y': curTop };
var directCfg = { 'horizontal': [1, 0, -1, 0], 'vertical': [0, 1, 0, -1] }; //table-driven
var subsciberArray = [];
var curStep = 0;
var bufferImgCount = 0;
var tq=new taskQueue();
this.register = function (fn) {
subsciberArray.push(fn);
this.getCanLast = function () {
if (curStep == 0)
this.getCanNext = function () {
if (curStep + showNum &= totalCount)
this.last = function (speed, frequencyfn, endfn) {
if (!this.getCanLast())
tq.addTask({isAsyn: true,
begin: function () {},
run: function (end) {
new mover(curPos.x, curPos.y).moveTo(
_getLastPos().x,
_getLastPos().y,
frequencyfn,
end: function (x,y) {
endfn(x,y);
curPos.x =
curPos.y =
bufferImgCount++;
curStep--;
_notify();
validate:function(){
return me.getCanLast();
this.next = function (speed, frequencyfn, endfn) {
if (!this.getCanNext())
tq.addTask({isAsyn: true,
begin: function () {},
run: function (end) {
new mover(curPos.x, curPos.y).moveTo(
_getNextPos().x,
_getNextPos().y,
frequencyfn,
end: function (x,y) {
endfn(x,y);
curPos.x =
curPos.y =
bufferImgCount--;
if (bufferImgCount == 0 && _loadImg())
bufferImgCount++;
curStep++;
_notify();
validate:function(){
return me.getCanNext();
this.show = function (createImgByIndexfn) {
_createImgByIndexfn = createImgByI
for (var i = 0; i &= showN i++) { //include one buffer img
_loadImg();
bufferImgCount = 1;
_notify();
var _createImgByIndexfn = function (index) { }; //callback
var _loadImg = (function () {
var alreadyCreateCount = 0;
return function () {// closure function
if (alreadyCreateCount == totalCount)
_createImgByIndexfn(alreadyCreateCount);
alreadyCreateCount++;
function _notify() {//observer
for (var i in subsciberArray)
subsciberArray[i](me);
function _getLastPos() {
return { 'x': curPos.x + directCfg[direct][0] * stepLen,
'y': curPos.y + directCfg[direct][1] * stepLen
function _getNextPos() {
return { 'x': curPos.x + directCfg[direct][2] * stepLen,
'y': curPos.y + directCfg[direct][3] * stepLen
var imgList = [
{ title: 'A',
src: '/icon/u.jpg'
{ title: 'B',
src: '/icon/u.jpg'
{ title: 'C',
src: '/icon/u.jpg'
{ title: 'D',
src: '/icon/u.jpg'
{ title: 'E',
src: '/icon/u.jpg'
{ title: 'F',
src: '/icon/u.jpg'
{ title: 'G',
src: '/icon/u.jpg'
{ title: 'H',
src: '/icon/u.jpg'
{ title: 'I',
src: '/icon/u.jpg'
{ title: 'J',
src: '/icon/u.jpg'
/*sample 1 begin*/
var panel1 = new movePanel(0, 5, 'horizontal', 39, imgList.length, 4);
panel1.register(function (p) {
if (p.getCanLast())
document.getElementById('btnLast1').disabled =
document.getElementById('btnLast1').disabled =
panel1.register(function (p) {
if (p.getCanNext())
document.getElementById('btnNext1').disabled =
document.getElementById('btnNext1').disabled =
panel1.show(function (index) {
var img = document.createElement('IMG');
img.src = imgList[index].
img.title = imgList[index].
document.getElementById('imgs1').appendChild(img);
document.getElementById('btnLast1').onclick = function () {
panel1.last(200, function (x, y) {
document.getElementById('imgs1').style.left = x + 'px';
}, function (x, y) {
document.getElementById('imgs1').style.left = x + 'px';
document.getElementById('btnNext1').onclick = function () {
panel1.next(200, function (x, y) {
document.getElementById('imgs1').style.left = x + 'px';
}, function (x, y) {
document.getElementById('imgs1').style.left = x + 'px';
/*sample 1 end*/
/*sample 2 begin*/
var panel2 = new movePanel(5, 0, 'vertical', 37, imgList.length, 5);
panel2.register(function (p) {
if (p.getCanLast())
document.getElementById('btnLast2').disabled =
document.getElementById('btnLast2').disabled =
panel2.register(function (p) {
if (p.getCanNext())
document.getElementById('btnNext2').disabled =
document.getElementById('btnNext2').disabled =
panel2.show(function (index) {
var img = document.createElement('IMG');
img.src = imgList[index].
img.title = imgList[index].
document.getElementById('imgs2').appendChild(img);
document.getElementById('btnLast2').onclick = function () {
panel2.last(200, function (x, y) {
document.getElementById('imgs2').style.top = y + 'px';
}, function (x, y) {
document.getElementById('imgs2').style.top = y + 'px';
document.getElementById('btnNext2').onclick = function () {
panel2.next(200, function (x, y) {
document.getElementById('imgs2').style.top = y + 'px';
}, function (x, y) {
document.getElementById('imgs2').style.top = y + 'px';
/*sample 2 end*/
至此,我们的taskQueue已帮助我们达到需要的效果,如果期望它更完善,就需要另外的应用加以验证,通过再次重构达到复用。
阅读(...) 评论()

我要回帖

更多关于 dnf召唤师觉醒任务 的文章

 

随机推荐