本文作者:传奇大学

#call原来是这个意思

传奇大学 2020-12-15 53 抢沙发
文章页顶部广告
 #call原来是这个意思摘要: #call有goto的功能,但他可以跨文件于是我就当他是跨文件的goto直到有一天(就是今天),我突然想,他会不会其实是一种代码导入+goto实验证明,确实如此然后好像也没什么人来...

#call有goto的功能,但他可以跨文件
于是我就当他是跨文件的goto
直到有一天(就是今天),我突然想,他会不会其实是一种代码导入+goto
实验证明,确实如此然后好像也没什么人来这个,所以我就来聊一下吧

下面是我对call的理解(不想看就直接去看下面的例子吧):
    #call [路径\call脚本.txt@call触发 的作用是:
        脚本加载时,服务器加载所有npc脚本,储存的位置应该是内存,所以每次改完脚本我们都需要重新加载脚本
            关于所谓内存,以下都会用这个说法,其实这种说法纯属猜测
        任何npc脚本中,[@随意触发]下面有#call [xxx] @call触发
            1.会将@call触发下方的大括号{}括起来的内容加入此npc脚本内        ←这是在内存中操作,我们看不到
            2.并且 goto @call触发 一次



举例说明
    假设现在有个在MirServer\Mir200\Envir\QuestDiary里的脚本文件,名字是果果.txt
    这个脚本里的内容是这样的(为了直观,我就用图片表示了,其实里面是连起来的长长的脚本):
          #call原来是这个意思 第1张  #call原来是这个意思 第2张  #call原来是这个意思 第3张
    其实只要两个图片,三个图片就是为了凑数
    请注意脚本的结构,特别是注意大括号{}

    假设现在有个npc,名字叫果果屋.脚本名字是果果屋-3.txt
    例1-脚本实际效果:
    果果屋-3.txt里的内容是这样的:

  1. [@main]

  2. #call [\果果.txt] @苹果

  3. #act

  4. goto @苹果

复制代码


    游戏里的表现是:点击NPC,你的角色会得到一个名为苹果的物品
    这是因为 果果屋-3.txt在内存里其实已经变成这样了:

  1. [@main]

  2. #call [\果果.txt] @水果篮

  3. #act

  4. goto @苹果

  5. [@水果篮]

  6. [@苹果]

  7. #act

  8. give 苹果 1

  9. [@西瓜]

  10. #act

  11. give 西瓜 1

复制代码


  例2-call生效的情况:
    果果屋-3.txt里的内容是这样的:

  1. [@这段代码不会被执行,但call会有部分作用]

  2. #call [\果果.txt] @坚果篮


  3. [@main]

  4. #act

  5. goto @花生

复制代码

   游戏里的效果是获得一个花生    只要npc脚本中存在一个格式正确的#call,果果屋-3.txt在内存中就会是类似例1中的效果
    但它不会执行[@坚果篮]里的give 坚果篮 1 的脚本,因为没goto @这段代码不会被执行,但call会有部分作用
如果在@maingoto @坚果篮,玩家将可以得到一个坚果篮

例3-范围外不起作用:
  果果屋-3.txt里的内容是这样的:

  1. [@main]

  2. #call [\果果.txt] @水果篮

  3. #act

  4. goto @花生

复制代码

   点击NPC,游戏里什么都不会发生,因为在果果.txt脚本中,[@花生]不在[@水果篮]的大括号里

例4-说不清楚,自己看吧:
  果果屋-3.txt里的内容是这样的:

  1. [@main]

  2. #say

  3.  <我要花生/@花生>

  4.  <我要瓜子/@瓜子>

  5.  <我要篮子/@篮子>


  6. [@花生]

  7. #call [\果果.txt] @花生

  8. [@瓜子]

  9. #act

  10. goto @瓜子

  11. [@篮子]

  12. #act

  13. goto @坚果篮

复制代码


   注意,[@花生]下面的是#call,[@瓜子]和[@坚果篮]下面的是goto
   游戏内,在名为果果屋的Npc里
        点"我要花生",会得到一个花生
        点"我要瓜子",会得到一个瓜子
        点"我要篮子",什么都不会得到  得个篮子呀?
    因为只有大括号里的东西,才能被goto到
    另外,虽然点"我要篮子",连个篮子都得不到,但控制台不会报错

以上是我对#call的最新理解,有啥说错的或者需要补充的请在帖子里一起聊吧,嘿嘿


文章版权及转载声明

作者:传奇大学本文地址:https://www.444.mba/post/467.html发布于 2020-12-15
文章转载或复制请以超链接形式并注明出处传奇大学

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

分享
您需要 登录账户 后才能发表评论

发表评论

快捷回复:

评论列表 (暂无评论,53人围观)参与讨论

还没有评论,来说两句吧...