pp.tin 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分
  4. ===========
  5. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  6. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  7. ===========
  8. */
  9. #var bot_pp[META] {
  10. {NAME} {PP机器}
  11. {DESC} {传音搜魂,PP 查人}
  12. {AUTHOR} {担子炮}
  13. };
  14. VAR {PP 结果,NPC 位置} gPPResponse {};
  15. load-lib event;
  16. load-lib option;
  17. option.Define {PPBotListPrivate} {String} {私有PP大米列表} {};
  18. option.Define {PPBotListPublic} {String} {可信的公共PP大米列表} {%*};
  19. event.Define {pp/Response} {无参} {$MODULE} {已经获取到 PP 结果,并更新到 gPPResponse 全局变量。};
  20. #func {bot_pp.Init} {
  21. #return true;
  22. };
  23. ///=== {
  24. // ## pp.Find <角色 ID>
  25. // 利用公共 PP 服务查询某个 ID。
  26. // };
  27. #alias {pp.Find} {
  28. #local id {%0};
  29. chat.TuneOn helpme;
  30. helpme;
  31. helpme find $id;
  32. };
  33. ///=== {
  34. // ## pp.FindQuietly <角色 ID>
  35. // 利用私有 PP 服务查询某个 ID。
  36. // };
  37. #alias {pp.FindQuietly} {
  38. #local id {%0};
  39. #local bot {};
  40. #local ppList {@option.Get{PPBotListPrivate}};
  41. #foreach {$ppList} {bot} {
  42. tell $bot find $id;
  43. };
  44. };
  45. ///=== {
  46. // ## pp.FindByMyself <角色 ID>
  47. // 利用自己的 PP 特技查询某个 ID。
  48. // };
  49. #alias {pp.FindByMyself} {
  50. #local id {%0};
  51. #class pp.FindByMyself open;
  52. #local ID {|ID=bot/pp};
  53. #action {^不要频繁的查询,谢谢!{$ID}$} {
  54. #class pp.FindByMyself kill;
  55. #delay pp.FindByMyself.retry {pp.FindByMyself %0} 1;
  56. };
  57. #action {^你默运玄功,将功力聚集于耳目,顿时觉得灵台一片空明。{$ID}$} {
  58. #class pp.FindByMyself kill;
  59. pp.FindByMyself.parse;
  60. #nop;
  61. };
  62. #nop PP 对象不存在;
  63. #action {^现在没这个人。{$ID}$} {
  64. #class pp.FindByMyself kill;
  65. #showme {$char[档案][大名]($user[id])告诉你:据我所查,【%0】已不在人世了};
  66. };
  67. #action {^你的精力不够,无法感应别人的位置。{$ID}$} {
  68. #class pp.FindByMyself kill;
  69. errLog 精力不足,无法查询。;
  70. };
  71. #alias {pp.FindByMyself.parse} {
  72. #class pp.FindByMyself open;
  73. #action {^你掐指一算,感觉%*(%*)现在好象在%*的%*一带活动。$} {
  74. #class pp.FindByMyself kill;
  75. #local name {%%%1};
  76. #local qid {%%%2};
  77. #local area {%%%3};
  78. #local room {%%%4};
  79. #format qid {%l} {$qid};
  80. #showme {$char[档案][大名]($user[id])告诉你:【$name($qid)】目前在【$area的$room】,快去摁死它吧!};
  81. };
  82. #action {^你费了半天的力气,就是感应不出%*的位置。$} {
  83. #class pp.FindByMyself kill;
  84. };
  85. #action {^你费了半天的力气,完全无法感应出%*的位置。$} {
  86. #class pp.FindByMyself kill;
  87. };
  88. #action {^你费了半天的力气,完全感应不出任何状况。$} {
  89. #class pp.FindByMyself kill;
  90. };
  91. #action {^此人已经隐姓埋名,你费了半天的力气,就是感应不出其位置。$} {
  92. #class pp.FindByMyself kill;
  93. };
  94. #class pp.FindByMyself close;
  95. };
  96. #class pp.FindByMyself close;
  97. perceive $id;
  98. };
  99. #alias {pp} {
  100. #local id {%0};
  101. #if { &char.Special[传音搜魂][] > 0 } {
  102. pp.FindByMyself $id;
  103. };
  104. #local ppList {@option.Get{PPBotListPrivate}};
  105. #if { "$ppList" != "" } {
  106. pp.FindQuietly $id;
  107. };
  108. #else {
  109. pp.Find $id;
  110. };
  111. };
  112. #action {^你告诉%S:find $user[id]$E} {#line gag};
  113. #action {^%S(%S)告诉你:【%S(%S)】目前在【%S的%S】,快去摁死它吧!$E} {
  114. #local tell {%2};
  115. #local name {%3};
  116. #local id {%4};
  117. #local area {%5};
  118. #local room {%6};
  119. #local ppList {@option.Get{PPBotListPrivate};@option.Get{PPBotListPublic}};
  120. #local pp {};
  121. #foreach {$ppList} {pp} {
  122. #if { "$tell" == "$pp" } {
  123. #var gPPResponse[$id] {
  124. {id}{$id}
  125. {name}{$name}
  126. {area}{$area}
  127. {room}{$room}
  128. };
  129. event.DelayEmit pp/Response;
  130. #return;
  131. };
  132. };
  133. warnLog 不可信的 PP 应答,简单忽略。;
  134. };