|
传送基础写法
范本说明
下面用比奇城的脚本来做基础说明 蓝色字为本身脚本的注解内容 红色字为注解说明,请认真看
# -*- coding: utf-8 -*- 有中文,如果是纯英文的,可以不加这行
#载入模块SYS
import sys
#引用模块的地址
from Globals import *
import collections
import clr
clr.AddReferenceToFile("Library.dll")
from Library import *
import Server
Server.Envir.SEnvir.Log(__name__+"导入")
import NpcEvent 从这里往上,基本都直接复制就行了
######################################################
#本函数为程序调用的固定格式 函数名和参数数量不要修改
#OnClick(Self, Sender, Menu)
##参数 Self:NPC的类
## Sender:玩家的类
## Menu:菜单的类
#####################################################
def OnClick(args): 对NPC进行鼠标点击处理
Self = args[0]
Sender = args[1]
Menu = args[2] 这里是固定格式,不能变
Dict={} Dict对象
#红名判断
if(Sender.Stats[Stat.PKPoint] > 199): 如果 玩家的PK值大于199,那么就是红名了,就显示拒绝交易对话框
str = """请你离开。
我不想和红名交易。
[离开:0]"""
#飞比奇
elif(Menu == 1):
if (Sender.Gold < 10000):
str = """你没有足够的金币,无法传送。
[离开:0]"""
else: #地图传送限制,用于版本设置,判断排行榜等级 人物
not CanMoveInMap(99,1) #排行榜等级大于多少级,达到几个人,这个地图才能传送
return
else:
SubGold(Sender,10000)
Sender.TeleportByMapIndex(1,140,263) #飞地图ID X坐标 Y坐标
return
#自由通行
elif(Menu == 2):
str = """我知道你想传送到哪里?
[神舰:21] 自由通行
[熔岩地带:22] 自由通行 (等级 45+)
[海盗洞穴:23] 自由通行 (等级 45+)
[离开:0]"""
#神舰
elif(Menu == 21):
if(Sender.GetItemCount("自由通行证") < 1):
str = """无法传送到目的地,
没有自由通行证。
[离开:0]"""
else:
Sender.TakeItem("自由通行证",1)
Sender.TeleportByMapIndex(68,43,62) #飞地图ID X坐标 Y坐标
return
#熔岩地带
elif(Menu == 22):
if(Sender.Level < 45):
str = """无法传送到目的地,
等级没有达到要求。
[离开:0]"""
elif(Sender.GetItemCount("自由通行证") < 1):
str = """无法传送到目的地,
没有自由通行证。
[离开:0]"""
else:
Sender.TakeItem("自由通行证",1)
Sender.TeleportByMapIndex(332,19,27) #飞地图ID X坐标 Y坐标
return
#海盗洞穴
elif(Menu == 23):
if(Sender.Level < 45):
str = """无法传送到目的地,
等级没有达到要求。
[离开:0]"""
elif(Sender.GetItemCount("自由通行证") < 1):
str = """无法传送到目的地,
没有自由通行证。
[离开:0]"""
else:
Sender.TakeItem("自由通行证",1)
Sender.TeleportByMapIndex(301,162,209) #飞地图ID X坐标 Y坐标
return
#主菜单
else:
str = """选择目的地
[比奇县:1] 10,000 金币
[自由通行:2]
[离开:0]"""
Dict['Say']=str #定义聊天框对话内容
return Dict
#NPC调用定义
NpcEvent.add_listener(124,"OnClick",OnClick) 124是NPC的Index,代表哪个NPC调用这个脚本
|
|