找回密码
 点一下
查看: 1918|回复: 5

[已解决]为何无法保存教程上写的J....

[复制链接]
发表于 2011-2-7 10:22:46 | 显示全部楼层 |阅读模式
[jass]
function add1 takes integer i returns nothing
set i=i+1
endfunction
function b takes nothing returns nothing
local integer t = 1
local force foc = GetPlayersAll()
call add1(t)
call DisplayTextToPlayer(foc, I2S(t))
call DestroyForce(foc)
set foc = null
endfunction
[/jass]


看教程到J的参数传递时,就想把教程上的J复制到编辑器上自己试试看...结果不通保存....

编辑器的提示说
问题出在 foc 上.

但是我不知道为什么.想问问.......

另外想问问,这个 call add1(t)
是把b函数里 t 传给了 add1 里吧?

我又去试 returns ...
发现也不能保存.....请大大告诉我错在了哪里.
[jass]
function add1 takes integer i returns integer
return i+1
endfunction
function ddd takes nothing returns nothing
local integer i
set i=add1(i)
call DisplayTextToForce(GetPlayersAll(),add1(i))
call add1( add1(i) )
endfunction
[/jass]

编辑器提示 这句.
call DisplayTextToForce(GetPlayersAll(),add1(i))


两个都是在
DisplayTextToPlayer
上出问题....请高手说下为什么好吗?
发表于 2011-2-7 11:41:15 | 显示全部楼层
第一段的错误在于:
你使用的函数是DisplayTextToPlayer而不是DisplayTextToForce
第二段的错误在于:
addl返回的是integer,但是函数takes的是string.
都是粗心惹的祸。
回复

使用道具 举报

 楼主| 发表于 2011-2-8 04:47:26 | 显示全部楼层
头目真辛苦...先谢谢.*(没认错吧?)
依旧有问题
1,大神所说的DisplayTextToPlayer和DisplayTextToForce在用途上有什么区别呢?我在T文本看到的说明完全相同.只是一个最后带R...一个不带.
2.addl返回的是integer--这句说的是 function add1 takes integer i returns integer 吗?
但是函数takes的是string--这句说的是哪里? 是 set i=add1(i)  这个是传递吗? 不太明白..
local integer i
如果是的话.我在第二段里面没有看到 string 相关的变量.....求教....


别外这些J.都是我原封不动的从 GA的JASS教程电子书 上复制上来的....
回复

使用道具 举报

发表于 2011-2-8 11:44:44 | 显示全部楼层
你最好再去看看DisplayTextToForce的第二个参数是什么,而且DisplayTextToForce是用DisplayTextToPlayer实现的

头目不能乱叫的哦
回复

使用道具 举报

发表于 2011-2-8 11:56:33 | 显示全部楼层
头目~~~[s:169]
你认错人了……头目是Renee Sama啦

一:force就是玩家组,player是玩家
DisplayTextToForce的第一个参数是force
DisplayTextToPlayer的第一个参数是player
而你定义的变量foc是玩家组
参数类型都不对自然没办法运行了……
至于这两个函数的区别,那也很简单:
DisplayTextToForce是对一个玩家组里面的所有玩家发信息
DisplayTextToPlayer是对一个特定的玩家发信息

二:
function DisplayTextToForce takes force toForce, string message returns nothing
DisplayTextToForce的第二个参数必须是string(字符串)才行,而add1(i)的返回值是integer(整数),自然不能做它的参数。
正确的写法是call DisplayTextToForce(GetPlayersAll(),I2S(add1(i)))
(I2S可以将整数转换为字符串)

至于你说这些都是直接拷下来的……我只能说是教程的作者太过粗心了……
你看上面的代码都有I2S,但是下面就忘写了……
回复

使用道具 举报

 楼主| 发表于 2011-2-10 16:15:58 | 显示全部楼层
基本已经明白了.感谢诸位楼上.谢谢.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 20:18 , Processed in 0.120616 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表