HexChat IRC 客户端的随机化脚本,在 Python 或 Perl 中
Posted
技术标签:
【中文标题】HexChat IRC 客户端的随机化脚本,在 Python 或 Perl 中【英文标题】:Randomizing script for HexChat IRC Client, in Python or Perl 【发布时间】:2015-02-24 11:02:18 【问题描述】:我有一种预感,这个问题的答案非常简单,但我还是想不通(我可能根本不懂这些语言的事实)。 我需要的是一个可以这样工作的脚本:
-
首先,键入 !random 之类的命令和 1-100 范围内的数字(该数字表示成功的概率,以 % 为单位)[例如:!random 78]
然后,它会 - 根据给定的概率 - 选择您是否成功 [例如,使用 !random 78,结果为“成功”的概率为 78%]
然后,它会在频道上显示一条公共消息,结果是什么(“成功”或“失败”)
我需要这个用于在线文本 RPG 会话。也对不起我的英语不好。
代码现在的样子:
__module_name__ = "HexChat Randomiser"
__module_version__ = "0.1"
__module_description__ = "A randomiser for HexChat."
import random
import xchat
def callback(word, world_eol, userdata):
number = word[1]
if random_chance(number):
print ("Success")
else:
print ("Failure")
def random_chance(percent_chance):
return random.randrange(1, 101) > (100 - percent_chance)
xchat.hook_command("random", callback, help="/random <number>")
错误:
Traceback (most recent call last):
File "<string>", line 10, in callback
File "<string>", line 17, in random_chance
TypeError: unsupported operand type(s) for -: 'int' and 'str'
【问题讨论】:
【参考方案1】:首先,您可能想查看 Python 或 Perl hexchat 文档。
如果您想继续使用 python,我已经编写了一个小脚本来帮助您入门:
import random
import xchat
def callback(word, world_eol, userdata):
number = word[1]
if random_chance(number):
print "Success"
else:
print "Failure"
def random_chance(percent_chance):
return random.randrange(1, 101) > (100 - int(percent_chance))
xchat.hook_command("random", callback, help="/random <number>")
你必须自己让它在 hexchat 中工作。要加载脚本,您必须先将其保存在某个位置,然后调用 load
command:
加载
加载具有给定文件名的脚本。 /load 也可以。
【讨论】:
非常感谢!我更改了代码中的一些内容,因此它现在可以在 HexChat 中正确加载。不幸的是,当我输入 /random 命令时,会发生错误。我将它粘贴到我原来的帖子中。 你得到的不是数字而是字符串,你需要把它变成一个 int 才能工作。将100 - percent_chance
更改为100 - int(percent_chance)
。我什至不确定word[1]
是数字,这就是为什么我说你必须自己做腿部工作。
最后一件事:如何在“成功”和“失败”前一行显示我刚刚使用的命令(例如“/random 65”),以便其他用户知道我实际使用过它而不只是手动输入结果?
rtfm以上是关于HexChat IRC 客户端的随机化脚本,在 Python 或 Perl 中的主要内容,如果未能解决你的问题,请参考以下文章