赞 | 51 |
VIP | 9 |
好人卡 | 4 |
积分 | 30 |
经验 | 7669 |
最后登录 | 2021-3-5 |
在线时间 | 333 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 3001
- 在线时间
- 333 小时
- 注册时间
- 2012-2-9
- 帖子
- 313
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 oott123 于 2013-5-14 12:03 编辑
VA范例工程,带了dll的有点大,丢百度上:http://pan.baidu.com/share/link?shareid=452764&uk=822553734
不带dll的丢论坛附件一份备用:
云中商城Demo.zip
(309.02 KB, 下载次数: 297)
脚本:
=begin 云中游戏CDKEY系统 By oott123 via best33.com 首发:66rpg [url]http://rpg.blue/thread-309255-1-1.html[/url] 使用方法: 1.事件页1输入两个变量,分别为8位和6位,输入完成后打开独立开关 2.事件页2当独立开关打开时自动执行,条件分歧-脚本-Gamecloud.valcdkey(1,2) 其中1,2为第一步中的两个变量ID 3.条件分歧为真时,CDKEY兑换成功;为假时失败。 WEB端搭建方法: 见[url]http://rpg.blue/thread-309255-1-1.html[/url] =end module Gamecloud def Gamecloud.valcdkey(key,pwd) ## 配置说明:请在这里输入云中游戏web端的网址,不带/index.php和后面的任何参数 base_url = 'http://3.gamecloudemo.duapp.com' ## 配置结束 base_url = base_url + '/index.php/valcdkey/api/' key = $game_variables[key] pwd = $game_variables[pwd] http_url = base_url + key.to_s + '/' + pwd.to_s str = Gamecloud.get_http_case2(http_url) res = str.split('|') if(res[0] == 'error') return false end#of if if(res[1] == 'gold') #增加金币 # p "获得了金币"+res[3].to_s $game_party.gain_gold(res[3].to_i) elsif(res[1] == 'item') #获得物品 # p "获得了"+$data_items[res[2]].name+"x"+res[3].to_s $game_party.gain_item($data_items[res[2].to_i], res[3].to_i) else p "未知错误,请检查!" return false end#if return true end#of valcdkey def Gamecloud.dumpitems file=File.new('itemlist.txt', "w") $data_items.each{|i| if (i && (i.name != '')) file.puts(i.id.to_s + '=' + i.name) end } file.close end#of dumpitems def Gamecloud.get_http_case2(url) #采用凌童鞋推荐的Wininnet.dll调用,抛弃外挂dll=-=不过代码复杂多了…… #要用到的三个api api_InternetOpen = Win32API.new( 'Wininet.dll','InternetOpen',%w(l i l l i),'l') api_InternetOpenUrl = Win32API.new( 'Wininet.dll','InternetOpenUrl',%w(l p p i i i),'l') api_InternetReadFile = Win32API.new( 'Wininet.dll','InternetReadFile',%w(l p i p),'l') hInternet = api_InternetOpen.call(0,0,0,0,0) #Internet句柄 hFile = api_InternetOpenUrl.call(hInternet,url,'',0,512,0) #文件句柄 dwNumberOfBytesToRead = 512 #一次要阅读的字符数量,一般512就搞定调用了 res = " " * dwNumberOfBytesToRead #缓冲区初始化 lpdwNumberOfBytesRead = [0].pack('L') #2进制的已读取字节数引用传递变量 api_InternetReadFile.call( hFile,res,dwNumberOfBytesToRead,lpdwNumberOfBytesRead) #读取 lpdwNumberOfBytesRead = lpdwNumberOfBytesRead.unpack('L')[0] #得到字节数 return res.slice(0,lpdwNumberOfBytesRead) #将res分片返回 end#of get_http_case2 end #of module gamecloud
=begin
云中游戏CDKEY系统
By oott123 via best33.com
首发:66rpg [url]http://rpg.blue/thread-309255-1-1.html[/url]
使用方法:
1.事件页1输入两个变量,分别为8位和6位,输入完成后打开独立开关
2.事件页2当独立开关打开时自动执行,条件分歧-脚本-Gamecloud.valcdkey(1,2)
其中1,2为第一步中的两个变量ID
3.条件分歧为真时,CDKEY兑换成功;为假时失败。
WEB端搭建方法:
见[url]http://rpg.blue/thread-309255-1-1.html[/url]
=end
module Gamecloud
def Gamecloud.valcdkey(key,pwd)
## 配置说明:请在这里输入云中游戏web端的网址,不带/index.php和后面的任何参数
base_url = 'http://3.gamecloudemo.duapp.com'
## 配置结束
base_url = base_url + '/index.php/valcdkey/api/'
key = $game_variables[key]
pwd = $game_variables[pwd]
http_url = base_url + key.to_s + '/' + pwd.to_s
str = Gamecloud.get_http_case2(http_url)
res = str.split('|')
if(res[0] == 'error')
return false
end#of if
if(res[1] == 'gold')
#增加金币
# p "获得了金币"+res[3].to_s
$game_party.gain_gold(res[3].to_i)
elsif(res[1] == 'item')
#获得物品
# p "获得了"+$data_items[res[2]].name+"x"+res[3].to_s
$game_party.gain_item($data_items[res[2].to_i], res[3].to_i)
else
p "未知错误,请检查!"
return false
end#if
return true
end#of valcdkey
def Gamecloud.dumpitems
file=File.new('itemlist.txt', "w")
$data_items.each{|i|
if (i && (i.name != ''))
file.puts(i.id.to_s + '=' + i.name)
end
}
file.close
end#of dumpitems
def Gamecloud.get_http_case2(url)
#采用凌童鞋推荐的Wininnet.dll调用,抛弃外挂dll=-=不过代码复杂多了……
#要用到的三个api
api_InternetOpen = Win32API.new(
'Wininet.dll','InternetOpen',%w(l i l l i),'l')
api_InternetOpenUrl = Win32API.new(
'Wininet.dll','InternetOpenUrl',%w(l p p i i i),'l')
api_InternetReadFile = Win32API.new(
'Wininet.dll','InternetReadFile',%w(l p i p),'l')
hInternet = api_InternetOpen.call(0,0,0,0,0) #Internet句柄
hFile = api_InternetOpenUrl.call(hInternet,url,'',0,512,0) #文件句柄
dwNumberOfBytesToRead = 512 #一次要阅读的字符数量,一般512就搞定调用了
res = " " * dwNumberOfBytesToRead #缓冲区初始化
lpdwNumberOfBytesRead = [0].pack('L') #2进制的已读取字节数引用传递变量
api_InternetReadFile.call(
hFile,res,dwNumberOfBytesToRead,lpdwNumberOfBytesRead) #读取
lpdwNumberOfBytesRead = lpdwNumberOfBytesRead.unpack('L')[0] #得到字节数
return res.slice(0,lpdwNumberOfBytesRead) #将res分片返回
end#of get_http_case2
end #of module gamecloud
事件:
第一页
第二页
网页端下载:https://github.com/oott123/gamecloud/archive/master.zip
Update:都说无法下载……怎么会,GitHub难道真的部分地区被墙了么……
下载地址1.5(依然Github):https://codeload.github.com/oott123/gamecloud/zip/master
Update:在2013年05月14日前下载的用户注意,请到数据库中找到“pre_adminauth”中删除“demo”这一行的数据!
新下载地址:http://pan.baidu.com/share/link?shareid=466770&uk=822553734
教程这样子(度娘BAE服务):
篇幅很长,无耐心的可以无视
先注册一个百度帐号……(不多说。)
登录百度开发者中心:http://developer.baidu.com/
戳右上角这里【马上加入】
填写相关资料
保存后去邮箱查收邮件点确认链接,你懂得。
然后创建应用
找到你刚刚创建的应用(导航栏管理中心)
左手边导航栏点“云环境(BAE)”,进行手机绑定,我就不截图了,换一个已经绑定了的手机号码来
绑定手机完成后再次来到云环境(BAE),此时出现托管界面,按图填写,注意环境选择PHP
完成以后回到管理中心,你的界面应该是这个样子(注意环境是PHP):
点最右边的管理,继续找到“云环境(BAE)”,来到“版本管理”。我这里已经创建过几个版本了,你们做到这里应该是空白。点创建新版本
这里先看看你下载好那个zip文件没。下载好解压之后的目录结构是这个样子的:
来到“application”所在的目录(即最里面一层的gamecloud-master),把这几个文件打包为ZIP
注意选择“添加到压缩文件...”这个带...的选项,然后设置压缩格式为zip
然后我们得到了一个新的gamecloud-master.zip。打开它看看是不是这样的,可以直接看到index.php和app.conf(而不需要进入一个文件夹):
完事之后重命名成v587.zip(这一步只是怕你把文件搞混),回到刚刚的BAE页面,现在“创建版本”窗口应该出来了吧
没啥好说的,随便填写任意一个版本号,上传v587.zip文件
上传有难得一见的进度条,挺好看的
如果看到这里你还没晕,说明……说明你的好日子要到头了。
传完之后找到云数据库,点进去,再按创建数据库
购买时间请随意,记得勾上“使用1G免费配额”,创建。不出意外的话就会弹出一个付款页面,因为是免费的所以自动又跳回来,就可以看到创建好的数据库
记录下名称备用,点击“phpMyAdmin”。第一次会让你授权blahblah的,确认就是了。来到一个数据库管理页面,不过里面什么都没有- -b
戳“导入”
找到刚刚那个目录下的db.sql,点击导入
没有意外的话可以看到一句“导入成功,执行了 12 个查询。 (db.sql)”。同时左边也多出来一些表“pre_adminauth”之类的。关掉这个页面,它已经没用了。
回到管理中心的版本管理,点击对应版本的编辑。继续要授权,确定就是。
找到左手边的/application/config/dbconfig.php,将下面的内容复制进去替换掉原来的,注意其中的“数据库名字”几个中文改成刚刚记录下来的数据库名,小心要把空格去掉。- <?php
- $db['default']['hostname'] = HTTP_BAE_ENV_ADDR_SQL_IP .':'.HTTP_BAE_ENV_ADDR_SQL_PORT;
- $db['default']['username'] = HTTP_BAE_ENV_AK;
- $db['default']['password'] = HTTP_BAE_ENV_SK;
- $db['default']['database'] = '数据库名字';
- $db['default']['dbdriver'] = 'mysql';
- $db['default']['dbprefix'] = 'pre_';
复制代码
然后右上角保存……保存完了关掉这个窗口回到版本管理,点击你刚刚创建的版本旁边的蓝色的“上线”
如果你得到的是这样的结果……
那么点击旁边小小的“预览”,你就能看到你期待已久的、简陋的结果……
到这里,网页端架设完成。把你的网址复制出来,类似于这样的:- http://gamecloudemo.duapp.com/
复制代码 把最后的斜线去掉(如果有的话),然后打开你的工程,把base_url里面的内容换成这个。
你的后台管理地址是:- http://gamecloudemo.duapp.com/index.php/modify/
复制代码 用户名admin密码demo
把范例工程的两个NPC和一个脚本页复制到你的工程里面,与下面那个NPC对话,在你的游戏目录下就生成了itemlist.txt。这个在后台的物品管理中要用到。
=-=特别感谢:
@凌童鞋 提供的用wininnet取代自带dll的思路~虽然做成平台什么的我会比较懒得……而且被吐槽说「这么点小东西就拿codeigniter框架是不是有点……」嗯是真的有点大材小用了……
=-=不那么特别的感谢:
度娘 提供的BAE和百度网盘=-=b
Faststone Capture 提供的截图软件=-=bbb
=-=另外说几句废话:
……好吧我知道我很啰嗦就是了……如果不会搭建的话欢迎来骚扰我=-=前提是带上你的VIP或者RMB(叉腰狂笑)……正色】遇到什么问题跟帖就好了,在能力和时间范围内我会答复的。
最后……=-=这种没有营养的帖子有几个人会看…………
其它懒得说了=-=看看自己在考试前都干了什么口胡。 |
评分
-
查看全部评分
|