石器时代LA官方

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 872|回复: 1

[Ab Lua] 寄售NPC

[复制链接]

1万

主题

491

回帖

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35504
石币
24669
发表于 2022-8-31 10:39:09 | 显示全部楼层 |阅读模式
  1. function checkEmptItemNum(charaindex)--检测剩余物品格子
  2.         EmptyItemNum = 0
  3.         for i = 8, 27 do
  4.                 if char.getItemIndex(charaindex, i) == -1 then
  5.                         EmptyItemNum = EmptyItemNum + 1
  6.                 end
  7.         end
  8.         return EmptyItemNum
  9. end

  10. function ShowHead(meindex, talkerindex)
  11.                 momny = char.getInt(talkerindex,"金库魔币")
  12.                 gold = char.getInt(talkerindex,"金库金币")
  13.                 token = "3\n            § 请选择您需要的服务 §\n\n\n"
  14.                                                  .. "           ≡  设置出售类型 ≡\n"
  15.                                                  .. "           ≡  设置出售物品 ≡\n"
  16.                                                  .. "           ≡  取回出售物品 ≡\n"
  17.                                                  .. "           ≡   关闭清理NPC ≡\n\n"
  18.                                                  .. "      ≡ 金库现有魔币:".. momny .."  金币:".. gold .." ≡\n\n"
  19.                 --lssproto.windows(talkerindex, "选择框", 8, 0, char.getWorkInt( meindex, "对象"), token)
  20.                 lssproto.windows(talkerindex, "选择框", "确定", 324, meindex, token)
  21. end

  22. function Showselltype(meindex, talkerindex)
  23.                 momny = char.getInt(talkerindex,"金库魔币")
  24.                 gold = char.getInt(talkerindex,"金库金币")
  25.                 token = "3\n            § 请选择您需要的服务 §\n\n\n"
  26.                                                  .. "           ≡  出售类型魔币 ≡\n"
  27.                                                  .. "           ≡  出售类型金卡 ≡\n"
  28.                                                  .. "      ≡ 金库现有魔币:".. momny .."  金币:".. gold .." ≡\n\n"
  29.                 --lssproto.windows(talkerindex, "选择框", 8, 0, char.getWorkInt( meindex, "对象"), token)
  30.                 lssproto.windows(talkerindex, "选择框", "确定", 323, meindex, token)
  31. end
  32. --NPC窗口事件(NPC索引)
  33. --function WindowTalked ( meindex, talkerindex, seqno, select, data)
  34. function MWTalk ( meindex, talkerindex, seqno, select, data)
  35.         char.TalkToCli(talkerindex, -1, "Seqno:"..seqno.." | select:"..select.." | data:"..data, "红色")
  36.         --print(type(data))

  37.         --检测玩家名字 和 NPC 名字 不一样只发送出售消息

  38.         if select == 2  then
  39.                 return
  40.         end

  41.         if seqno == 335 then --顾客购买窗口
  42.                 --print("field")
  43.                 if select == 0 then
  44.                         npc.PlayersellWindowTalked(meindex, talkerindex, seqno, select, data)                       
  45.                         char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统", "黄色")
  46.                         return
  47.                 end
  48.                 char.TalkToCli(talkerindex, -1, "顾客您好!", "黄色")
  49.                 npc.PlayersellWindowTalked(meindex, talkerindex, 333, 0, "1")
  50.                 return
  51.         end
  52.        
  53.         local field = other.getString(data, " ", 1)
  54.         --print("field")
  55.         --print(field)
  56.         if  field == "" then
  57.                 char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统删除NPC", "黄色")
  58.                 npc.DelNpc(meindex)--删除NPC
  59.                 char.setInt(talkerindex,"寄售时间",0)--当前时间
  60.                 return
  61.         end
  62.         if field == " " then
  63.                 char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统删除NPC", "黄色")
  64.                 npc.DelNpc(meindex)--删除NPC
  65.                 char.setInt(talkerindex,"寄售时间",0)--当前时间
  66.                 return
  67.         end
  68.         --and field == "1"
  69.         if seqno == 323 and select == 0 then --顾客购买窗口
  70.                 --print("field")
  71.                 if field == "1" then
  72.                         npc.PlayersellWindowTalked(meindex, talkerindex, seqno, select, data)       
  73.                         char.setInt(npcindex,"金库魔币",1)--设置出售类型是魔币                       
  74.                         char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统您的寄售物品出售类型是魔币", "黄色")
  75.                         name = char.getChar(npcindex, "名字").."[魔币摊位]"
  76.                         char.setChar(npcindex, "名字",name)
  77.                         --print("npc名字")
  78.                         --print(char.getChar(npcindex, "名字"))
  79.                         char.sendCToArround(npcindex)--设置完 类型重新发送下 外形给周围玩家
  80.                         return
  81.                 end
  82.                 if field == "2" then
  83.                         npc.PlayersellWindowTalked(meindex, talkerindex, seqno, select, data)       
  84.                         char.setInt(npcindex,"金库魔币",2)--设置出售类型是金币                       
  85.                         char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统您的寄售物品出售类型是金卡", "黄色")
  86.                         --print("npc名字")
  87.                         --print(char.getChar(npcindex, "名字"))
  88.                         name = char.getChar(npcindex, "名字").."[金币摊位]"
  89.                         --print(name)
  90.                         char.setChar(npcindex, "名字",name)
  91.                         --print("npc名字")
  92.                         --print(char.getChar(npcindex, "名字"))
  93.                         char.sendCToArround(npcindex)--设置完 类型重新发送下 外形给周围玩家
  94.                         return
  95.                 end
  96.         end
  97.        
  98.         if seqno == 324  and field == "1" then --设置出售类型
  99.                 char.TalkToCli(talkerindex, -1, "请您选择您要出售的货币类型魔币或是金币!", "黄色")
  100.                 Showselltype(meindex, talkerindex)
  101.                 return
  102.         end
  103.         if seqno == 324  and field == "2" then --设置出售类型
  104.                 char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统的出售物品", "黄色")
  105.                 npc.PlayersellWindowTalked(meindex, talkerindex, 333, 0, data)
  106.                 return
  107.         end
  108.        
  109.         if seqno == 324  and field == "3" then --取回寄售物品
  110.                 char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统的取回物品", "黄色")
  111.                 npc.BankmanTalked3(meindex, talkerindex, "", 0)
  112.                 return
  113.         end
  114.        
  115.         if seqno == 324  and field == "4" then --设置出售类型
  116.                 char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统删除NPC", "黄色")
  117.                 npc.DelNpc(meindex)--删除NPC
  118.                 char.setInt(talkerindex,"寄售时间",0)--当前时间
  119.                 return
  120.         end
  121.        
  122.         if seqno == 326 then --设置出售类型
  123.                 char.TalkToCli(talkerindex, -1, "主人您好!请您仔细设置价格和出售类型", "黄色")
  124.                 npc.PlayersellWindowTalked(meindex, talkerindex, seqno, select, data)
  125.                 return
  126.         end       
  127.         if seqno == 339 then --设置出售类型
  128.                 char.TalkToCli(talkerindex, -1, "谢谢您使用寄售系统的取回物品", "黄色")
  129.                 npc.BankmanWindowTalked3(meindex, talkerindex, seqno, select, data)
  130.                 return
  131.         end
  132.        


  133.         if seqno == 334 then --设置出售类型
  134.                 char.TalkToCli(talkerindex, -1, "主人您好!", "黄色")
  135.                 npc.PlayersellWindowTalked(meindex, talkerindex, seqno, select, data)
  136.                 return
  137.         end               
  138.         --npc.PlayersellWindowTalked(meindex, talkerindex, seqno, select, data)

  139. end



  140. --NPC对话事件(NPC索引)
  141. function Talked(meindex, talkerindex, szMes, color )
  142.         --print("meindex")
  143.         --print(meindex)
  144.         --print("talkerindex")
  145.         --print(talkerindex)
  146.         --print(char.getChar(meindex, "名字"))
  147.         --print(char.getChar(talkerindex, "名字"))
  148.         --if char.getChar(meindex, "名字") == char.getChar(talkerindex, "名字") then
  149.         if char.getChar(meindex, "账号") == char.getChar(talkerindex, "账号") then
  150.                 char.TalkToCli(talkerindex, -1, "主人您好!", "黄色")
  151.                 if npc.isFaceToFace(meindex, talkerindex) == 1 then
  152.                         ShowHead(meindex, talkerindex)
  153.                 end
  154.                 return
  155.         else
  156.                 char.TalkToCli(talkerindex, -1, "顾客您好!", "黄色")
  157.                
  158.                 if char.getInt(meindex,"金库魔币") == 1 then
  159.                         char.TalkToCli(talkerindex, -1, "顾客我主人出售的类型是魔币出售!", "黄色")
  160.                 elseif char.getInt(meindex,"金库魔币") == 2 then
  161.                         char.TalkToCli(talkerindex, -1, "顾客我主人出售的类型是金币出售!", "黄色")
  162.                 else
  163.                         char.TalkToCli(talkerindex, -1, "顾客我主人出售的类型是错误的您不能购买!", "黄色")
  164.                         return
  165.                 end
  166.                
  167.                 npc.PlayersellWindowTalked(meindex, talkerindex, 333, 0, "1")
  168.                 return
  169.         end
  170.         --npc.PlayersellTalked(meindex, talkerindex, szMes, color)
  171.         --if npc.isFaceToFace(meindex, talkerindex) == 1 then
  172.         --        ShowHead(meindex, talkerindex)
  173.         --end
  174. end


  175. function mymaincreate(parameter)       
  176.         charaindex = char.getPointtoindex(parameter)--从玩家索引得到创建NPC的玩家结构体指针
  177.         --检测对面不能有NPC 防止重叠
  178.         findt = char.GetFrontChar(charaindex,4) --检测对面有没NPC 4   玩家1  怪物2 宠物3
  179.         if findt == 1 then
  180.                 char.TalkToCli(charaindex, -1, "请您换个位置当前位置有NPC存在", "黄色")
  181.                 return
  182.         end
  183.         char.TalkToCli(charaindex, -1, "您进入其他脚本调用函数", "黄色")
  184.         --npc已经生成但是没有载入到OBJ 已经存在的列表 怎么查找原因为什么 没有出现
  185.         name = char.getChar(charaindex, "名字")
  186.         img = char.getInt(charaindex, "原图像号")
  187.         map = char.getInt(charaindex, "地图号")
  188.         X = char.getInt(charaindex, "坐标X") + 1
  189.         Y = char.getInt(charaindex, "坐标Y")
  190.         npcindex = npc.CreateNpc(name, img, map, X, Y, 6)
  191.         char.setInt(npcindex, "类型",82) --寄售NPC类型 CHAR_TYPEBANKEX3  是82
  192.         cdkey = char.getChar(charaindex, "账号")
  193.         char.setChar(npcindex, "账号",cdkey)
  194.         char.sendCToArround(npcindex)--设置完 类型重新发送下 外形给周围玩家
  195.         --print("执行sendCToArround完毕")
  196.         --设置事件触发(NPC索引,事件,执行函数,执行函数文件路径)
  197.         --char.setFunctionPointer(npcindex, "对话事件", "Talked", "data/ablua/commondsellnpc.lua")--ok
  198.         char.setFunctionPointer(npcindex, "对话事件", "Talked", "")--ok
  199.         -----********暂时没找到解决方案 应该是LUA 函数名字 超过6个字符 就 stelen就不准了 记住永远不能让命令自动NPC 有超过6个的字符的函数名****----
  200.         char.setFunctionPointer(npcindex, "窗口事件", "MWTalk", "")--ok
  201.         --写入到主人角色,npc 创建时间
  202.         local ntime = other.time()
  203.         char.setInt(charaindex,"寄售时间",ntime)--当前时间
  204.         --写入到npc,主人角色fd
  205.         char.setInt(npcindex,"签到时间",char.getFd(charaindex))--NPC里面放置上玩家fd 好通知和查找玩家
  206.         --相互记录索引
  207.         char.setWorkInt(charaindex, "NPC临时1" , char.getindextoPoint(npcindex)) --记录NPC指针地址  下线删除用
  208.         char.setWorkInt(npcindex, "NPC临时1" , char.getindextoPoint(charaindex)) --让npc记录自己主人玩家的指针地址
  209.        
  210. end


  211. function data()
  212.         worldpay = 5
  213.         worldfmpay = 10
  214.        
  215. end

  216. function main()
  217.         npcindex = 0
  218.         data()
  219. end
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|石器时代LA官方

GMT+8, 2024-4-29 06:40 , Processed in 0.118007 second(s), 21 queries .

Copyright © 2001-2023, Tencent Cloud.

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