dndvila 发表于 2014-9-28 18:36:48

读写数据库、文本脚本;移动npc脚本;薄利多销

一、服务端读写sql语句教学,可通过脚本添加功能

1、数据添加(就是在game1库中,你可以自己建一个表,通过脚本写入数据,用于记录积分等)
#ACT
mov A8 %username
FormatStr "'%s',%s,%s" %A8 1 0               
;;;;解释:%s是数据库中的参数,你想写几个数据,就写几个%s,sql会按顺序写,%A8是指变量A8,1就是一个值,字符串要加 ‘’
;;;;formatstr的作用,有一个默认变量A9,就是把后边的字符串更新到A9,再通过%A9读取
mov A7 %A9   ;;;为了下面还能用A9这个变量,把A9换到A7去
FormatStr "FLD_SINUSERNAME='%s'" %A8;;;这是写入条件,其实没什么用
mov A6 %A9   ;;;;这句意思同上面的
WriteValueSql "TBL_SinGiSunQuest" %A6 "FLD_SINUSERNAME,FLD_SINMAINSTEP,FLD_SINSTEP_READY" %A7
;;;写入数据解释:向某库(测game1可以,k库和h库没试,一个库就够用)的TBL_SinGiSunQuest表中,%A6("FLD_SINUSERNAME='%s'" )
;;就是添加字段FLD_SINUSERNAME= 用户名 的FLD_SINUSERNAME=用户名,FLD_SINMAINSTEP=1,FLD_SINSTEP_READY=0

2、更新数据库
FormatStr "FLD_SabukUserName='%s'" %A8
Mov A6 %A9
UpdateValueSQL "TBL_SabukGuildQuest" "FLD_SabukQuest='SabukQuest'" %A6
;更新TBL_SabukGuildQuest表,"FLD_SabukQuest='SabukQuest'"这是条件,自己定义
;;;%A6("FLD_SabukUserName='%s'" %A8)变更FLD_SabukUserName的值为%A8(内容参照mov)


3、读取数据库并传递
[@SearchingUser_SinGiSun]
#IF
#ACT
FormatStr "FLD_SINUSERNAME='%s'" %A8
Mov A6 %A9
ReadValueSql "TBL_SinGiSunQuest" %A6 "FLD_SINUSERNAME,FLD_SINMAINSTEP,FLD_SINSTEP_READY" [@SearchingUser_SinGiSun_0]
;;读取TBL_SinGiSunQuest表中,符合"FLD_SINUSERNAME='%s'" %A8条件的"FLD_SINUSERNAME,FLD_SINMAINSTEP,FLD_SINSTEP_READY"传递给
;; [@SearchingUser_SinGiSun_0]


[@SearchingUser_SinGiSun_0()];后边加了(),就是带参数的
#IF
#ACT
Mov A1 %ARG(1)
Mov D1 %ARG(2)
Mov D2 %ARG(3)
;3个参数分别给A1、D1、D2
;下边这些数据干什么用,自己思考吧

二、脚本命令读写文本文件,可以存储一些数据


1、文本的读取,首先你要在服务端有这个文件
LoadValue A0 "GM_Def\QT_TODAY\200Reward.txt"
意义解释:读取文件夹d:\Mud3\Envir\下,GM_Def\QT_Today\200reward.txt里面的数据
数据格式:
;;200Reward.txt第一行,脚本是读不到的,所有的txt文件第一行都会是注释

Reward_Race_1_Type1_1 = 银蛇
Reward_Amount_1_Type1_1 = 1

那么上边的读取,就得到“银蛇”,赋值给A0了
give %A0 1 就是给你一个银蛇的脚本

2、文本的写入,也是要先建一个文件,而且文件里面要根据上边的格式
写入脚本:
mov A9 "屠龙"
SAVEVALUE "GM_Def\QT_TODAY\200Reward.txt" %A9

意思解释:
先给a9(这个可以挑A0~A9)
然后在 "GM_Def\QT_TODAY\200Reward.txt" 下面列表下的的值改为"屠龙"


三、如何定时刷npc的脚本,可以修复影魅之刃任务
首先,要研究沙巴克开战的npc移动,要会移动npc
[@CastleWarStart]
{
#ACT
ResetMapAttr"3"
lineMsg " 沙巴克攻城战开始了。"
lineMsg " 沙巴克的部分商人已经到毒蛇山谷或道馆避难了。"
movenpc "3,195,183,老胡"      2    350 219
movenpc "3,229,150,双喜"      2    343 234
movenpc "3,204,196,晶晶"      2    335 223
movenpc "3,229,168,园老板"      2    362 226
movenpc "3,211,183,多多"      2    350 233
movenpc "3,289,513,敏贞"      Z01110   7
movenpc "3,75,516,在奎"         Z01110   8
movenpc "3,83,140,完美"         Z01110   9
movenpc "3,198,180,啊翔"      Z0111010
;;movenpc "3,210,130,怪物租赁商"Z0111011
movenpc "3,203,197,俞公"      Z0111012
movenpc "3,165,190,沙巴克旗帜(左上)"Z01197
movenpc "3,170,195,沙巴克旗帜(左下)"Z01198
movenpc "3,233,196,沙巴克旗帜(正左)"Z01199
movenpc "3,238,190,沙巴克旗帜(正右)"Z011910
movenpc "3,240,123,沙巴克旗帜(右下)"Z011911
movenpc "3,236,119,沙巴克旗帜(右上)"Z011912
}

以上是沙巴克攻城时候,移动npc的代码;
那么,你如果想在某个地图在规定的时间刷npc,就先新建一个地图,属于gm才能进入的,其他玩家无法进入的地方,比如z010
在00Default.txt中,有一个天气变更的代码:goto @weather_control_sabuk
内容是:
[@Weather]
{
#ACT
goto @ConfirmWeather_Bichon
;变更比奇天气

[@ConfirmWeather_Bichon]
#IF
!DayTime Day
#ACT
movrP020
Inc   P01
#ELSEACT
Delaygoto 3600 @ConfirmWeather_Bichon
break

#IF
Equal P01
#ACT
ChangeMapAttr"0,01,02" "Rain"
Delaygoto 3600@ConfirmWeather_Bichon
break

#IF
Equal P02
#ACT
ChangeMapAttr"0,01,02" "Fog"
Delaygoto 3600@ConfirmWeather_Bichon
break

#IF
#ACT
ChangeMapAttr"0,01,02" "Clean"
Delaygoto 10800 @ConfirmWeather_Bichon

;这是一个循环,用于控制比奇天气,如果是白天晴天,就10800秒后变更
;如果是雨,3600秒后变更,看movr P0 20,是随机出现一个数1~20之间,Equal P02如果随机值是2,执行.....

以上脚本看懂以后,可以加一句

#IF
HOUR 20 20
min 55 59
DAYOFWEEK FRI
#ACT
移动npc到指定地图
delaygoto 10 @循环
#else
#act
移动npc到gm地图

这样,系统10秒钟判断一次,如果是星期五的20:55~59之间,npc出现,如果不是,npc就不在
另外,再学习添加一个变量,如果这个值是1,就移动npc到指定地图,到了时间,npc移动到gm地图后,这个值再变为0,这样就不用10秒刷一次npc了,具体的执行,可以添加文本读写脚本,写一个值
提醒:npc移动过去了,一定要写个脚本再移回来,不然下次就没得移了

6222888 发表于 2014-9-28 19:45:47

阅尽人生百态,还是诚实最好;阅尽生活坎坷,还是真诚最美。生活就是一面镜子,于其中,或是善良诚实,或是奸诈虚伪,不同的人,有着不同的情态;生活就似一部书,于其间,或是真诚相待,或是虚情假意,不同的人,留下不同的记录。经年的风雨,流年的漂泊,即使很苦、很累,但我们依然坚信,诚实最美

6222888 发表于 2014-9-28 19:46:24

阅尽人生百态,还是诚实最好;阅尽生活坎坷,还是真诚最美。生活就是一面镜子,于其中,或是善良诚实,或是奸诈虚伪,不同的人,有着不同的情态;生活就似一部书,于其间,或是真诚相待,或是虚情假意,不同的人,留下不同的记录。经年的风雨,流年的漂泊,即使很苦、很累,但我们依然坚信,诚实最美:Q:lol:lol

2898769051 发表于 2014-9-29 00:00:36


阅尽人生百态,还是诚实最好;阅尽生活坎坷,还是真诚最美。生活就是一面镜子,于其中,或是善良诚实,或是奸诈虚伪,不同的人,有着不同的情态;生活就似一部书,于其间,或是真诚相待,或是虚情假意,不同的人,留下不同的记录。经年的风雨,流年的漂泊,即使很苦、很累,但我们依然坚信,诚实最美

mir3 发表于 2014-9-29 00:38:47

其实都买过了,重复买了!!!!

疯狂的84老鼠 发表于 2014-9-29 07:46:30

我来看下 学习学习

ilikei 发表于 2014-10-3 17:38:03

感谢楼主的无私分享!

dndvila 发表于 2014-10-5 19:00:39

感谢楼主的无私分享!

zjaccc 发表于 2014-10-11 21:34:31

论坛有你更精彩!

xjkscjf 发表于 2014-10-15 21:24:55

弱弱的冒个泡!
页: [1] 2 3 4
查看完整版本: 读写数据库、文本脚本;移动npc脚本;薄利多销