设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 368|回复: 5

[求助] 这插件怎么用 [复制链接]

Rank: 5Rank: 5

帖子
126
精华
0
声望
1308 点
金币
195 Mold
被赞许
2 次
注册时间
2012-6-19
发表于 2012-12-16 17:02:29 |显示全部楼层
本帖最后由 【情缘网】宇少 于 2012-12-16 17:03 编辑
  1. /**
  2. *
  3. * (c)2007, Bentski
  4. * Homepage: http://kzlt.bentski.lt/
  5. * Server: cs.bentski.lt:27015
  6. *
  7. * HTTP downloader. Allows to download files from the web.
  8. *
  9. */

  10. #include <amxmodx>
  11. #include <sockets>
  12. #include <httpdl>

  13. new dlinfo[MAX_DOWNLOADS + 1][5];
  14. new dlpath[MAX_DOWNLOADS + 1][256];
  15. new ndownloading;
  16. new fwd_dlcomplete, fwd_result;

  17. public plugin_init() {
  18. register_plugin("HTTP Download", "1.0", "Bentski");
  19. register_clcmd("say /csmate", "test");
  20. fwd_dlcomplete = CreateMultiForward("dlcomplete", ET_IGNORE, FP_CELL, FP_STRING);
  21. }

  22. public test(id) {
  23. download("http://  ", "addons\amxmodx\configs\http.ini");
  24. }

  25. // called when download is finished
  26. public dlcomplete(id, file[]) {
  27. server_print("Downloaded (id: %d) %s", id, file);
  28. }

  29. public plugin_natives() {
  30. register_library("httpdl");
  31. register_native("download", "native_download", 1);
  32. }

  33. public native_download(url[], path[]) {
  34. new slot = 0;
  35. while(slot <= MAX_DOWNLOADS && dlinfo[slot][0] != 0)
  36. slot++;
  37. if(slot == MAX_DOWNLOADS) {
  38. server_print("Download limit reached (%d)", MAX_DOWNLOADS);
  39. return 0;
  40. }

  41. param_convert(1);
  42. param_convert(2);

  43. new u[256], p[256];
  44. copy(u, 7, url);
  45. if(equal(u, "http://"))
  46. copy(u, 248, url[7]);
  47. else copy(u, 255, url);

  48. new pos = 0;
  49. new len = strlen(u);
  50. while (++pos < len && u[pos] != '/') { }
  51. copy(p, 255, u[pos + 1]);
  52. copy(u, pos, u);

  53. new error = 0;
  54. new socket = dlinfo[slot][2] = socket_open(u, 80, SOCKET_TCP, error);
  55. switch(error) {
  56. case 0: {
  57. new msg[512];
  58. format(msg, 511, "GET /%s HTTP/1.1^r^nHost: %s^r^n^r^n", p, u);
  59. socket_send(socket, msg, 512);
  60. copy(dlpath[slot], 255, path);
  61. dlinfo[slot][3] = fopen(path, "wb");
  62. dlinfo[slot][0] = 1;
  63. dlinfo[slot][4] = 0;
  64. ndownloading++;
  65. if(ndownloading == 1)
  66. set_task(0.2, "download_task", 3318, _, _, "b");
  67. new id = dlinfo[slot][1] = random_num(1, 65535);
  68. return id;
  69. }
  70. case 1: server_print("[HTTP] Error creating socket");
  71. case 2: server_print("[HTTP] Could not resolve hostname");
  72. case 3: server_print("[HTTP] Could not connect to %s:80", u);
  73. }

  74. return 0;
  75. }

  76. public download_task() {
  77. for(new i = 0; i < MAX_DOWNLOADS; i++) {
  78. if(dlinfo[i][0] == 0)
  79. continue;
  80. new socket = dlinfo[i][2];
  81. new f = dlinfo[i][3];
  82. if(socket_change(socket)) {
  83. new buffer[1024];
  84. new len = socket_recv(socket, buffer, 1024);
  85. if(dlinfo[i][4] == 0) { // if first packet then cut the header
  86. new pos = contain(buffer, "^r^n^r^n");
  87. if(pos > -1) {
  88. for(new j = pos + 4; j < len; j++)
  89. fputc(f, buffer[j]);
  90. dlinfo[i][4]++;
  91. continue;
  92. }
  93. }
  94. // is there a better way to write binary data to a file? :S
  95. for(new j = 0; j < len; j++)
  96. fputc(f, buffer[j]);
  97. dlinfo[i][4]++;
  98. continue;
  99. }
  100. fclose(f);
  101. ExecuteForward(fwd_dlcomplete, fwd_result, dlinfo[i][1], dlpath[i]);
  102. dlinfo[i][0] = 0;
  103. ndownloading--;
  104. if(ndownloading == 0)
  105. remove_task(3318);
  106. socket_close(socket);
  107. }
  108. }
复制代码

使用道具 举报

Rank: 5Rank: 5

帖子
126
精华
0
声望
1308 点
金币
195 Mold
被赞许
2 次
注册时间
2012-6-19
发表于 2012-12-16 17:03:30 |显示全部楼层
谁告诉我下啊。。。

使用道具 举报

Rank: 2

帖子
24
精华
0
声望
141 点
金币
29 Mold
被赞许
-1 次
注册时间
2012-9-6
发表于 2012-12-16 22:51:36 |显示全部楼层
好东西手下了!

使用道具 举报

Rank: 2

帖子
24
精华
0
声望
141 点
金币
29 Mold
被赞许
-1 次
注册时间
2012-9-6
发表于 2012-12-16 22:52:43 |显示全部楼层
靠,木有INC,给我INC:lol
已有 1 人评分被赞许 收起 理由
蛇殿陛下 -1

总评分: 被赞许 -1   查看全部评分

使用道具 举报

Rank: 5Rank: 5

帖子
582
精华
0
声望
923 点
金币
297 Mold
被赞许
11 次
注册时间
2011-5-20
发表于 2012-12-17 09:28:35 |显示全部楼层
这是用在哪里的插件? 效果是什么?
已有 1 人评分被赞许 收起 理由
徐琪 -1 山寨

总评分: 被赞许 -1   查看全部评分

我绘画从来不拿铅笔素描,你相信么

使用道具 举报

Rank: 2

帖子
24
精华
0
声望
141 点
金币
29 Mold
被赞许
-1 次
注册时间
2012-9-6
发表于 2012-12-18 12:21:49 |显示全部楼层
你居然给我这个分我不能跟你说怎么使用!

使用道具 举报

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

回顶部