找回密码
 点一下
查看: 2359|回复: 7

[已解决]怎样获取玩家的颜色? 要用于设定漂浮文字等的颜色设定

[复制链接]
发表于 2008-12-26 21:15:14 | 显示全部楼层 |阅读模式
譬如 DotA 里面, 玩家的名字都是有颜色的, 怎么确定颜色代码的值呢?

红色什么的倒好说
发表于 2008-12-26 21:18:29 | 显示全部楼层
在DOTA里玩家的颜色是固定的吧...
知道是玩家几,就知道是什么颜色的拉...
回复

使用道具 举报

kw 该用户已被删除
发表于 2008-12-27 09:51:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-12-27 15:55:28 | 显示全部楼层
有一个GetPlayerColor()函数,但是返回的是个handle(playercolor),我觉得自己再写一个返回颜色字串的函数好了。
回复

使用道具 举报

发表于 2009-1-6 01:36:44 | 显示全部楼层
[jass]    constant playercolor        PLAYER_COLOR_RED                = ConvertPlayerColor(0)
    constant playercolor        PLAYER_COLOR_BLUE               = ConvertPlayerColor(1)
    constant playercolor        PLAYER_COLOR_CYAN               = ConvertPlayerColor(2)
    constant playercolor        PLAYER_COLOR_PURPLE             = ConvertPlayerColor(3)
    constant playercolor        PLAYER_COLOR_YELLOW             = ConvertPlayerColor(4)
    constant playercolor        PLAYER_COLOR_ORANGE             = ConvertPlayerColor(5)
    constant playercolor        PLAYER_COLOR_GREEN              = ConvertPlayerColor(6)
    constant playercolor        PLAYER_COLOR_PINK               = ConvertPlayerColor(7)
    constant playercolor        PLAYER_COLOR_LIGHT_GRAY         = ConvertPlayerColor(8)
    constant playercolor        PLAYER_COLOR_LIGHT_BLUE         = ConvertPlayerColor(9)
    constant playercolor        PLAYER_COLOR_AQUA               = ConvertPlayerColor(10)
    constant playercolor        PLAYER_COLOR_BROWN              = ConvertPlayerColor(11)
[/jass]
回复

使用道具 举报

发表于 2009-1-7 21:16:39 | 显示全部楼层
上楼写的是什么意思?

对于我这样的家伙看不懂.
回复

使用道具 举报

发表于 2009-1-7 22:04:04 | 显示全部楼层
[codes=jass]function AddColorForString takes integer p,string s returns string
    if(p==0)then
         return "|cFFFF0000"+s+"|r"
    elseif(p==1)then
         return "|cFF0000FF"+s+"|r"
    elseif(p==2)then
         return "|cFF00FFFF"+s+"|r"
    elseif(p==3)then
         return "|cFF9000FF"+s+"|r"
    elseif(p==4)then
         return "|cFFFFFF00"+s+"|r"
    elseif(p==5)then
         return "|cFFFF8000"+s+"|r"
    elseif(p==6)then
         return "|cFF00FF00"+s+"|r"
    elseif(p==7)then
         return "|cFFFF80C0"+s+"|r"
    elseif(p==8)then
         return "|cFFC0C0C0"+s+"|r"
    elseif(p==9)then
         return "|cFF5AC6DC"+s+"|r"
    elseif(p==10)then
         return "|cFF004040"+s+"|r"
    elseif(p==11)then
         return "|cFF804000"+s+"|r"
    elseif(p==12 or p==13)then
         return "|cFF5A3001"+s+"|r"
    endif
    return s
endfunction

globals
integer array Lp_r
integer array Lp_g
integer array Lp_b
endglobals
function AddColorForTextTag takes nothing returns nothing
set Lp_r[0]=255
set Lp_b[1]=255
set Lp_g[2]=255
set Lp_b[2]=255
set Lp_r[3]=144
set Lp_b[3]=255
set Lp_r[4]=255
set Lp_g[4]=255
set Lp_r[5]=255
set Lp_g[5]=128
set Lp_g[6]=255
set Lp_r[7]=255
set Lp_g[7]=128
set Lp_b[7]=192
set Lp_r[8]=192
set Lp_g[8]=192
set Lp_b[8]=192
set Lp_r[9]=90
set Lp_g[9]=198
set Lp_b[9]=220
set Lp_g[10]=64
set Lp_b[10]=64
set Lp_r[11]=128
set Lp_g[11]=64
set Lp_r[12]=90
set Lp_g[12]=48
set Lp_b[12]=1
endfunction

Lz在获取到玩家的索引后,可以调用AddColorForString 来改变字符串的颜色。如下
local string s=AddColorForString(GetPlayerId(GetOwningPlayer(GetTriggerUnit())),"color")

如果是创建漂浮字体的话,在地图初始化时,调用AddColorForTextTag 就可以了。
使用时如下
local integer i=GetPlayerId(GetTriggerPlayer())
call SetTextTagColor(tt,Lp_r,Lp_g,Lp_b,255)[/codes]

使用以上方法Lz应该能得到对应的颜色了。
回复

使用道具 举报

发表于 2009-1-13 21:57:35 | 显示全部楼层
看不懂....对J一窍不通
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 19:17 , Processed in 0.166282 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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