作者:llm 发表时间:2001年6月21日 00:08
--------------------------------------------------------------------------------
作者: 许文强 时间:2001-06-20.21:56:57 来源:江苏
转贴自争锋论坛:
注:以上省略,聊天内容,从下行开始!
小鱼儿说道: /* 和 */是一对符号
小鱼儿说道:中间的所有语句都会被注释
你说道:注释到哪?> 小鱼儿说道:这是C语言里的约定
> 小鱼儿说道:比如你写程序的时候
小鱼儿说道:有时候不一定写的是需要运行的程序
> 小鱼儿说道:而是你自己的解释
小鱼儿说道:这些不是程序,而是你的注释,跟笔记一样
> 小鱼儿说道:那么,你用来注释的方式有两种
小鱼儿说道:一种是在注释的语句开头加//
你说道://和/* 的不同在于?
> 小鱼儿说道:比如 //你好,这是一句注释语句
小鱼儿说道://只能注释从//符号开始到行尾的部分
oh
哦,原来是这样的。我知道了啦。
> thank
你对所有在场的人表示感谢。
> 小鱼儿说道:比如 int a
小鱼儿说道:比如~ int a
【窗外】太阳从东方的地平线升起了,苍白无力地发射着光芒。
小鱼儿说道:比如 int a //定义一个整数变量a
cool
What?
> 'cool
你说道:cool
> 小鱼儿说道:那么int a 仍然是正常的语句,会执行
'你点了点头。
> 小鱼儿说道:而后面的//定义一个整数变量a是对这行语句的解释,是不会执行的
oh
哦,原来是这样的。我知道了啦。
> 小鱼儿说道:/* 和 *?
小鱼儿说道:/* 和 */
小鱼儿说道:注释的是一段程序
'是一段的首到尾
你说道:是一段的首到尾
> 小鱼儿说道:你可以在这段程序的每一行前都加//
小鱼儿说道:效果是一样的
ok
你歪头想了会,说道:好吧!
> 小鱼儿说道:但是/* 和 */就简单一些
nod
你点了点头。
> 小鱼儿说道:只要在开始加一个/*,结尾加一个*/就OK了
'懂了
你说道:懂了
> 【窗外】风更大了,卷着枯叶,沙土在地上飞快地打着旋,你的衣角也随风云飞舞
小鱼儿说道: more here
你说道: set("no_sleep_room",1);// set("no_clean_up", 0)
> What?
> ' set("no_sleep_room",1);// set("no_clean_up", 0)这两行,的1 和0 是代表什么?
你说道: set("no_sleep_room",1);// set("no_clean_up", 0)这两行,的1 和0 是代表什么?
> 小鱼儿说道:你可以看到程序开头两行就是注释语句,用来说明的
nod
你点了点头。
> 【系统】内存精灵:系统自动清除 0 个变数。
小鱼儿说道: set("no_sleep_room",1)
'不能sleep
你说道:不能sleep
> '1 代表什么?
你说道:1 代表什么?
> 小鱼儿说道:是设置这个房间的属性是不能sleep
小鱼儿点了点头。
小鱼儿说道:set是一个函数
nod
你点了点头。
> 小鱼儿说道:有两个参数
小鱼儿说道:一个是no_sleep_room
小鱼儿说道:一个是1
哦,原来是这样的。我知道了啦。
> '连起来就是一个不sleep 的room
你说道:连起来就是一个不sleep 的room
> 小鱼儿说道:set这个函数的作用是把no_sleep_room的值设置为1
小鱼儿说道:比如
小鱼儿说道:call tone->set("combat_exp",100000)
'这个倒是知道的
你说道:这个倒是知道的
> blush
你脸红了。
> 小鱼儿说道:就是调用tone这个物品
小鱼儿说道:tone这个物品有一个set函数
小鱼儿说道:这个call就是调用这个set函数,将combat_exp的值设置为100000
oh
哦,原来是这样的。我知道了啦。
> 小鱼儿说道:房间里的这个set意思是一样的
'busy smallfish
你说道:busy smallfish
> 【窗外】已经是正午了,风没有一点停的意思,太阳早已不知藏到了什么地方。
小鱼儿说道:就是将no_sleep_room这个变量的值设置为1
小鱼儿说道:其实,不一定是1
小鱼儿说道:只要是>0的整数就可以了
小鱼儿说道:在泥巴其它地方判断的时候
'这个1 实际意思是代表数词还是什么?
你说道:这个1 实际意思是代表数词还是什么?
> oh
哦,原来是这样的。我知道了啦。
> 小鱼儿把头摇得跟拨浪鼓似的。
小鱼儿说道:1表示真
fly
太史慈瞪大了眼睛,呆了半响,突然大叫一声“怪物”,身子向后平平飞出,哈喇子在半空中划出一道白线。
> 小鱼儿说道:这是一个布尔值
小鱼儿说道:只有两个意思
'我怎么这么嘬?这个都没想到呢
你说道:我怎么这么嘬?这个都没想到呢
> wuwu
你委屈地低声哭了起来:呜..呜..呜..呜!
> 小鱼儿说道:0表示假,非0表示真
小鱼儿嘻嘻一笑,样子可爱极了。
小鱼儿说道:这样一来,可以理解了吧?
> 小鱼儿说道:no_sleep_room是真
你说道:// set("no_clean_up", 0) 这行呢
> 小鱼儿说道:就是说这里不能sleep
'具体是什么?
你说道:具体是什么?
> '// set("no_clean_up", 0)
你说道:// set("no_clean_up", 0)
> 小鱼儿说道:这个是。。。
小鱼儿说道:这个说来有点麻烦
小鱼儿说道:你知道
你说道:不更新?
> 小鱼儿说道:15分钟会刷新一次
jump smallfish
你跳进了小鱼儿的怀里。
> 小鱼儿说道:真聪明
小鱼儿双手抱拳,讨好地对你说道:“在下对小兄弟的景仰之情,有如滔滔江水连绵不绝。”
blush
你脸红了。
> 【窗外】风渐渐的小了些,太阳又露出了半张脸,在西方的天空中小心的看着这个世界。
小鱼儿说道:0表示假
小鱼儿说道:说明这里会刷新
nod
你点了点头。
> 小鱼儿「呵呵」地傻笑着。
> 小鱼儿说道:房间,物品,人物,绝大部分属性都是这种方式设置的
'为什么程序不在行首开始写?而是留几格?
> 小鱼儿说道:设置房间里的物品,NPC这里也有例子,照着搬就是
ok
你歪头想了会,说道:好吧!
> 小鱼儿说道:这是一个编程习惯
小鱼儿说道:{和}两个括弧
'是不是我写的时候,要敲几下空格?
你说道:是不是我写的时候,要敲几下空格?
> 小鱼儿说道:定义了一段程序
小鱼儿说道:为了让人家看起来清溪
nod
你点了点头。
> 小鱼儿说道:理论上讲,每个{后的语句行都有缩进
oh
哦,原来是这样的。我知道了啦。
> 小鱼儿说道:到}恢复
小鱼儿说道:这样可以让你写程序的时候更容易记住"{"和"}"是对称的
'是不是我写的时候,要敲几下空格?
你说道:是不是我写的时候,要敲几下空格?
> 小鱼儿点了点头。
你说道:我就是想要明白这一点
> 小鱼儿说道:一般都是每个缩进都是8个或者4个空格
'没编过程,太笨了
你说道:没编过程,太笨了
> 小鱼儿说道:tone
'en
你说道:en
> 小鱼儿说道:C语言教程的书里
小鱼儿说道:把if ...else 语句好好看看
'我得去搞本书看
你说道:我得去搞本书看
> 小鱼儿点了点头。
'光教你太累了
你说道:光教你太累了
> 【存盘】您的档案已经自动存盘。
ok
你歪头想了会,说道:好吧!
> 小鱼儿说道:不是,有些东西我也讲不
> 小鱼儿说道:有本书随时可以翻翻,翻了几次就可以不翻书了
'有些东东的确是只可意会的
你说道:有些东东的确是只可意会的
> xixi
太史慈嘻嘻一笑,样子可爱极了。
> 小鱼儿说道:lpc语法跟C几乎一样
'我现在进修的就是c 语言
你说道:我现在进修的就是c 语言
> 小鱼儿说道:对C多少了解了一些
小鱼儿说道:学LPC不要太简单哦
'不过还没上到程序课
你说道:不过还没上到程序课
> 小鱼儿说道:再给你讲一个对象的概念
ok
你歪头想了会,说道:好吧!
> 小鱼儿说道:泥巴里,到处都是对象
nod
你点了点头。
> 小鱼儿说道:对象就是一个物品的抽象
小鱼儿说道:这是外部调用 ...
小鱼儿说道:内部调用就不需要call和对象名了 ...
oh
哦,原来是这样的。我知道了啦。
> 小鱼儿说道:比如这个房间的程序里 ...
小鱼儿说道:set("no_sleep_room",1) ...
【系统】内存精灵:系统自动清除 0 个变数。
sys
【系统】太史慈[Tone]:...
> 小鱼儿说道:就不需要说this_object()->set("no_sleep_room",1) ...
小鱼儿说道:当然这种写法也是正确的 ...
oh
哦,原来是这样的。我知道了啦。
> '内部调用
你说道:内部调用
> 小鱼儿说道:this_object()表示文件本身 ...
nod
你点了点头。
> 小鱼儿说道:但是每必要这么写 ...
小鱼儿说道:C语言里的几个概念也要清楚
> 小鱼儿说道:一个是include,一个是inherit
你说道:一个是包含,一个是继承
> 小鱼儿说道:但是有各有不通
小鱼儿点了点头。
小鱼儿说道:对哈
【窗外】已经是正午了,小雨沙沙的下在草地上,满目已是一片枯黄了,江湖人的心也枯死了。
小鱼儿说道:include就是把include的那个文件中所有的函数都包含进来
小鱼儿说道:相当于两个文件合成了一个
小鱼儿说道:inherit则是当前对象是有inherit的那个对象继承而来的
你说道:include 包含的是什么样的?
> 小鱼儿说道:举各例子说了
小鱼儿说道:比如有一个eat()函数
thank
你对所有在场的人表示感谢。
> 小鱼儿说道:很多东西都有这个吃的动作
> 小鱼儿说道:你就没有必要给每个文件写一个eat()函数
oh
哦,原来是这样的。我知道了啦。
> 小鱼儿说道:你可以用一个特定的文件,写入一个eat()函数
小鱼儿说道:然后你再很多需要有eat()函数的文件里include这个特定的函数
小鱼儿说道:这样这些文件就都拥有同样的一个函数的
小鱼儿说道:而你需要修改这个函数了
> 小鱼儿说道:只需要修改这个特定的文件,
小鱼儿说道:就所有的都更新了
小鱼儿说道:相当于定义共同的函数
小鱼儿说道:便于维护
> 小鱼儿说道:而inherit,则概念有所不同
小鱼儿说道:首先属于生物这个对象
小鱼儿说道:生物必然有共同的地方
小鱼儿说道:比如都有细胞
小鱼儿说道:那么定义一个最原始的对象:生物
小鱼儿说道:然后比如生物又分植物和动物
小鱼儿说道:植物和动物都是生物,都拥有生物这个对象所有的属性
> 小鱼儿说道:你现在开始建立植物和动物这两类对象
小鱼儿说道:共同的部分就不需要建立了
'都继承了生物这个特性
你说道:都继承了生物这个特性
> 小鱼儿说道:只要inherit生物这个对象
小鱼儿说道:就自动继承了
小鱼儿说道:而动物来说
小鱼儿说道:又分比如人和猴子
> 小鱼儿说道:人和猴子inhert动物
小鱼儿说道:就继承了动物的属性
小鱼儿说道:但是这两个对象又可以定义自己特殊的属性和函数
小鱼儿说道:然后男人和女人
小鱼儿说道:又从人继承
小鱼儿说道:又可以定义自己不通的函数和属性
> 小鱼儿说道:就是在继承的对象的基础上,增加自己特殊的属性和函数,成为一个新的对象
小鱼儿说道:继承这个概念,你可以从C++的教材或者JAVA的教材中得到很好的解释
小鱼儿说道:继承是对象特有的>
> 小鱼儿说道:这样的好处就是
小鱼儿说道:比如clean_up()这个函数
小鱼儿说道:所有物品,房间都有吧
> 小鱼儿说道:但是未必所有的物品,房间在更新的时候都一样的效果
小鱼儿说道:如果没有定义新的clean_up()
小鱼儿说道:那么在更新的时候,都是使用的最原始那个对象所定义的clean_up()
小鱼儿说道:而有的房间需要特殊
小鱼儿说道:比如手镯的房间
小鱼儿说道:更新未必有手镯
小鱼儿说道:那是这个房间的特殊之处
> 小鱼儿说道:那么在这个房间里再另外定义clean_up()函数
小鱼儿说道:就是用自己的clean_up()函数去代替公共的clean_up()函数
> 小鱼儿说道:这在编程中叫做函数重置
> 小鱼儿说道:函数执行都是从最前象最后进行的
小鱼儿说道:比如有一个jump
小鱼儿说道:如果一个房间里没有自己定义jump
小鱼儿说道:那么就是一个semote
> 小鱼儿说道:如果这个房间里定义了一个动作jump
> 小鱼儿说道:那么先执行这个jump
小鱼儿说道:semote优先级低,就给屏蔽了
小鱼儿说道:所以抽象点来说
小鱼儿说道:所有生物都有“吃东西”这个概念
小鱼儿说道:但是每个实际的生物,比如人和猴子
小鱼儿说道:都有自己的特殊的“吃东西”的动作,也就是函数
小鱼儿说道:因此首先调用的就是自己的这个函数
小鱼儿说道:因此产生的效果各不相同
小鱼儿说道:如果你没有特殊定义,那么就执行最原始的定义
比如大部分房间更新时候的效果是一样的;手镯房间有自己特殊的更新函数;> 就调用了这个特殊的函数,产生的效果就不一样}
你说道:if ( !me->query_temp("rent_paid") && dir == "up" )
> '这行中&& 是什么?
你说道:这行中&& 是什么?
> 小鱼儿说道:&&是“并且”
oh
哦,原来是这样的。我知道了啦。
> 小鱼儿说道:||表示“或者”
小鱼儿说道:!表示“非”
小鱼儿说道:逻辑判断符
小鱼儿说道:query_temp(),query(),set(),set_temp()理解么?
小鱼儿说道:query_temp()跟set_temp()是一对
小鱼儿说道:set()跟query()又是一对
小鱼儿说道:set是永久的设置
小鱼儿说道:set_temp则是临时的
小鱼儿说道:玩家退线后就不存在了
小鱼儿说道:比如试试:call tone->query("combat_exp")
小鱼儿说道:你就明白query()了
小鱼儿说道:query()和query_temp()只是返回值,并不改动
> 小鱼儿说道:set()和set_temp()则是改动
小鱼儿说道:我发给你的那些文章
> 小鱼儿说道:很多都是我三四年前写的
> 小鱼儿说道:一看就懂,有时候就是搞不清楚一些函数是什么意思
> 小鱼儿说道:等你学的更深入了,学到了底层,就一切迎刃而解了
> 小鱼儿说道:比如从这个房间文件本身
小鱼儿说道:你还无法理解很多东西
> 小鱼儿说道:比如房间的更新等等
> 小鱼儿说道:但是从inherit的文件,一层一层深入下去
小鱼儿说道:到了最基本的那个文件
小鱼儿说道:就可以知道更新的机制了
小鱼儿「呵呵」地傻笑着。
> 小鱼儿说道:tone,你现在觉得要学的很多
小鱼儿说道:但是以后你知道的多了
小鱼儿说道:就突飞猛进了
小鱼儿说道:真的,相信我
小鱼儿说道:万事开头难
> 小鱼儿说道:跟玩泥巴一样,开始连路都不会走,鸡腿都不会吃
小鱼儿说道:后来到处找BUG
小鱼儿捧住肚子,嘻嘻哈哈地直笑得两眼翻白,喘不过气来。
> 小鱼儿说道:lpc学好了,你自然就会找漏洞了
> 小鱼儿说道:今天那个sayar跟我吹她的师傅很厉害
小鱼儿说道:我当她面
> 小鱼儿说道:把自己promote成一个巫师学徒
> 小鱼儿说道:然后10秒钟之内重新把自己变成天神
小鱼儿捧住肚子,嘻嘻哈哈地直笑得两眼翻白,喘不过气来。
> 小鱼儿说道:那时候连续做了三年的天神,看任何东西眼里都是代码
小鱼儿说道:所以觉得泥巴没有意思了,为了教你又回来了
> 小鱼儿说道:你看一个玩家,或许就把他当一段代码了
一朵红云飞上了小鱼儿的面颊。
laugh
你捧住肚子,嘻嘻哈哈地直笑得两眼翻白,喘不过气来。
> 小鱼儿说道:有了这个毛病,还如何练功?
nod
你点了点头。
> 小鱼儿说道:有时候拼命的练
'在我眼里他们是电脑后面活生生的人
你说道:在我眼里他们是电脑后面活生生的人
> 小鱼儿说道:突然想着EXP就是一个变量
小鱼儿说道:就没有意思了,不如聊天
你说道:就像syzf 里的tianyuan
> 小鱼儿「哈哈哈」大笑几声。
小鱼儿点了点头。
小鱼儿说道:如果让LLM现在来玩syzf
> 小鱼儿说道:一辈子也赶不上你
你说道:这家伙才不来
小鱼儿说道:知道程序,没用
小鱼儿说道:有时候给你看程序你看不出毛病
> 小鱼儿说道:玩一玩,或许就发现BUG了
你说道:上次他不是贴了post 查了吗?
> 小鱼儿捧住肚子,嘻嘻哈哈地直笑得两眼翻白,喘不过气来。
小鱼儿说道:能查出来的不多
小鱼儿说道:很多BUG发现了,也不知道有谁获利了
> 小鱼儿说道:自己挣足了,报告一下,没准还能骗点奖励
小鱼儿捧住肚子,嘻嘻哈哈地直笑得两眼翻白,喘不过气来。
小鱼儿说道:主要是为了让巫师改掉,别让别人也获利了
你说道:这倒是
> 小鱼儿说道:玩家的智慧是无穷的
你说道:三个臭皮匠还顶个诸葛亮
小鱼儿说道:而巫师,是很辛苦的
> 小鱼儿说道:花这么多时间学这个,就是为了能创造点东西出来
你点了点头。
> 小鱼儿说道:没当过巫师的玩家,总觉得巫师懒,或者怎么怎么的
你说道:我现在的了解的大大的
> 小鱼儿说道:说实在的,就算知道这里有BUG,要查出原因,未必都是很轻松的事情
你说道:现在想下手写点东东却不会,着急!!!
> 小鱼儿说道:我建议你,先自己写一个地方
小鱼儿说道:比如给自己写一个庄园
> 小鱼儿说道:就是edit了
小鱼儿说道:edit未必是修改已有文件
小鱼儿说道:如果文件还不存在,就是创建这个文件了
小鱼儿「呵呵」地傻笑着。
> 小鱼儿说道:随便拷贝一个文件,用edit来修改修改
> 小鱼儿说道:参考了文章,试试EDIT下所有的功能
你说道:用mud 编辑器?
> 小鱼儿说道:不一定要先MORE
小鱼儿说道:edit是一个文字编辑器
小鱼儿说道:edit是一个行编辑器
> 小鱼儿说道:关于edit,你可以参阅一下unix参考书
小鱼儿说道:edit是unix下的指令
小鱼儿说道:比如输入1
小鱼儿说道:就是跳到第一行
小鱼儿说道:然后z,回车,就是看第一行开始的一屏程序
> 小鱼儿说道:再z,回车,就是接下去的一瓶
> 小鱼儿说道:不用z直接回车,就是下一行
小鱼儿说道:等找到要修改的地方了
小鱼儿说道:首先输入行号
> 小鱼儿说道:对了,n是切换是否要现实行号
> 小鱼儿说道:【闲聊】一见到太史娟的身影,冯程程大喜若狂,胸口似猛地给大铁槌重重一击,当即跃出大叫:姑姑,姑姑!
你说道:先学到这吧,谢谢你了
> 小鱼儿说道:修改的话
小鱼儿说道:先要确定需要修改哪一行
小鱼儿说道:比如需要修改第5行
小鱼儿说道:先输入1z,把第5行的前后一些语句都显示出来,看的仔细一点
> 小鱼儿说道:然后输入5,就表示跳到第5行
小鱼儿说道:现在当前行是第5行
小鱼儿说道:最简单的修改,是用s
小鱼儿说道:如果仅仅是要把1变成2,就是说放两个小二
小鱼儿说道:那么跳到这一行以后
小鱼儿说道:用s/1/2
小鱼儿说道:s/*/^
小鱼儿说道:这里的×
小鱼儿说道:这里的*> 小鱼儿说道:表示需要修改的字符串
小鱼儿说道:^表示改成的字符串
小鱼儿说道:比如s/tone/smallfish
小鱼儿说道:就把这一行里的字符串tone改成smallfish
> 小鱼儿说道:s是最简单的一种修改
小鱼儿说道:还有的
小鱼儿说道:首先讲c
小鱼儿说道:c首先是全部替换这一行
小鱼儿说道:在输入c以后,会进入一个编辑状态
小鱼儿说道:edit编辑东西
小鱼儿说道:分为两种状态
小鱼儿说道:一个是指令状态,一个是编辑状态
小鱼儿说道:象刚才的z,s等等都是指令状态
> 小鱼儿说道:就是一条指令就返回一个结果
小鱼儿说道:而c也是一条指令
小鱼儿说道:输入这跳指令后,就进入编辑状态
> 小鱼儿说道:你输入的信息将覆盖当前行
> 小鱼儿说道:回车后,输入的其它行,就添加在当前之后
小鱼儿说道:从编辑状态返回指令状态的话
小鱼儿说道:是在新的一行输入一个. 再回车
> 小鱼儿说道:小数点是用来从编辑状态返回指令状态
> 小鱼儿说道:c指令就是首先改写当前行,另外如果写入的不止一行,就自动插入到当前行下面
> 小鱼儿说道:d指令是删除当前行
小鱼儿说道:比如5,回车
小鱼儿说道:跳到第5行
小鱼儿说道:d,回车,删除第5行
> 小鱼儿说道:当然,也可以直接输入5d,就是删除第5行
> 小鱼儿说道:这些都是在指令方式下的
小鱼儿说道:编辑方式下只能输入程序,通过小数点返回指令状态
> 小鱼儿说道:现在讲a
小鱼儿说道:a的话是直接在当前行后面插入程序
小鱼儿说道:就是说当前行仍然在,并没有变
小鱼儿说道:在当前后面插入程序,输入了a,也进入编辑状态,等你输完所有的程序
小鱼儿说道:通过小数点退出
> 小鱼儿说道:比如4a,就是在第4行后面插入程序
小鱼儿说道:a跟c的不同之处在于,c会直接从当前行开始,并且覆盖当前行
你说道:就像键盘上的insert
> 小鱼儿说道:而a不会改变当前行,而是从当前行下一行插入,当然,当前行的下一行也不会被覆盖
小鱼儿说道:就是当前行和下一行之间插入了一行或者多行程序
> 小鱼儿说道:比如现在有7,8,9,10四行
小鱼儿说道:7c的话,就是重写第7行,如果输入不止一行,则在7之后,8之前插入
> 小鱼儿说道:7a的话,就直接在7之后,8之前插入
> 小鱼儿说道:刚才这些指令都是小写
> 小鱼儿说道:小写x是存盘并退出
小鱼儿说道:如果文件没有修改,小写q是不存盘退出
小鱼儿说道:如果已经修改了,用Q强制退出,不会正式修改的
你对小鱼儿表示衷心的感谢。
> 小鱼儿说道:用用,试试,就了解了
小鱼儿嘻嘻一笑,样子可爱极了。
小鱼儿说道:好,一次不讲太多,多了混淆
小鱼儿亲热把你拉到一旁,笑咪咪地说道:走,咱哥俩喝一盅去!
注:文中小鱼儿乃争锋玩家suncun cunsun kfk 。
cunsun 三年admin 生涯,无意中被我从谁与争锋里擒获并威吓不教我pk 到白板,天生胆小的他只有答应了。教完了还请我喝了太白佳酿。
--
不老的传说