搜索
查看: 2505|回复: 6

【求助】希望能把此插件变成AMXX下使用(nwb13请进,源代码修改)

[复制链接]
发表于 2005-3-16 01:27:24 | 显示全部楼层 |阅读模式 来自 中国–广西–柳州
此插件作用为ucstats1.0统计loggs文件,用于amx下,但最近想把amx变成amxx,由于没法转变,自己也不太会C++语言,希望高人把此插件变成amxx下使用,多谢了!! :burn:  :burn:  :too_sad:

此插件有两个文件,ucstats_cstrike.sma和ucstats_live.sma,在amxx下ucstats_cstrike.sma可以通过编辑,但ucstats_live.sma出现问题了.

C:\Documents and Settings\Administrator\桌面\amxmodx_v1.01_cn_win\amxmodx\script
ing>amxxsc.exe ucstats_live.sma
Welcome to the AMX Mod X 1.00-272 Compiler.
Copyright (c) 1997-2004 ITB CompuPhase, AMX Mod X Team

ucstats_live.sma(21) : fatal error 100: cannot read from file: "udp"

Compilation aborted.
1 Error.
Could not locate output file ucstats_live.amx (compile failed).


插件名:ucstats_live.sma

源代码:



  1. /*
  2. *        AMXMOD script.
  3. *        (ucstats_live.sma)
  4. *        by mike_cao <mike@mikecao.com>
  5. *        This file is provided as is (no warranties).
  6. *
  7. *        Provides a live server feed to UCStats.
  8. *        You need to add the following cvars to your AMX config:
  9. *
  10. *        ucstats_live_ip <ip>
  11. *        ucstats_live_port <port>
  12. *
  13. *        These cvars specify the ip and port of your live feed
  14. *        daemon. This is the address the data will be sent to.
  15. *
  16. *
  17. */

  18. #include <amxmod>
  19. #include <amxmisc>
  20. #include <udp>

  21. #define MAX_NAME_LENGTH 32
  22. #define MAX_VAR_LENGTH 64
  23. #define MAX_PLAYERS 32
  24. #define MAX_WEAPONS 32
  25. #define MAX_TEXT_LENGTH 512
  26. #define MAX_UDP_LENGTH 1024
  27. #define MAX_CVARS 16
  28. #define MIN_PLAYTIME 60

  29. // Admin access level
  30. #define ACCESS_LEVEL ADMIN_LEVEL_A

  31. // Globals
  32. new gIP[MAX_NAME_LENGTH]
  33. new gPort = 0
  34. new gConnect = 0
  35. new gSender = 0
  36. new gScoreT = 0
  37. new gScoreCT = 0
  38. new gMapCycle[MAX_TEXT_LENGTH]
  39. new gNetAddress[MAX_NAME_LENGTH]
  40. new gCvars[MAX_CVARS][] = {"mp_timelimit","mp_autokick","mp_autoteambalance","mp_c4timer",
  41.                                                         "mp_flashlight","mp_footsteps","mp_forcechasecam","mp_freezetime",
  42.                                                         "mp_friendlyfire","mp_hostagepenalty","mp_roundtime","mp_startmoney",
  43.                                                         "sv_aim","sv_cheats","sv_maxrate","sv_minrate"}

  44. /************************************************************
  45. * UDP FUNCTIONS
  46. ************************************************************/

  47. // UDP Sender
  48. public udp_send_msg(msg[])
  49. {
  50.         new sUDPMsg[MAX_UDP_LENGTH]
  51.         format(sUDPMsg,MAX_UDP_LENGTH,"%s^"%s",gNetAddress,msg)

  52.         if (gSender == 0) {
  53.                  get_cvar_string("ucstats_live_ip",gIP,MAX_NAME_LENGTH)
  54.                  gPort = get_cvar_num("ucstats_live_port")
  55.                  gSender = set_iaddress(gIP,gPort)
  56.         }

  57.         if (send_udp_msg(gSender,sUDPMsg)) {
  58.                 server_print("[UCStats] UDP SEND: <%s:%i>: %s",gIP,gPort,sUDPMsg)
  59.         }
  60.         else {
  61.                 server_print("[UCStats] UDP FAILED: <%s:%i>: %s",gIP,gPort,sUDPMsg)
  62.         }
  63. }

  64. public admin_livefeed(id,level,cid)
  65. {
  66.         if (!cmd_access(id,level,cid,0)) return PLUGIN_HANDLED

  67.         new iPlayers[MAX_PLAYERS], iNumPlayers, iMaxPlayers
  68.         new sMsg[MAX_UDP_LENGTH], sName[MAX_NAME_LENGTH], sIP[MAX_NAME_LENGTH]
  69.         new sMap[MAX_NAME_LENGTH], sNextMap[MAX_VAR_LENGTH], sServer[MAX_NAME_LENGTH], sAddress[MAX_NAME_LENGTH], sServerTime[MAX_NAME_LENGTH]
  70.         new iIndex, iPing, iLoss, iKills, iDeaths, iTeam, iUserTime, iAlive
  71.         new sAuthid[MAX_NAME_LENGTH]
  72.        
  73.         // Get list of players
  74.         get_players(iPlayers,iNumPlayers)
  75.        
  76.         // Send server info
  77.         get_mapname(sMap,MAX_NAME_LENGTH)
  78.         get_cvar_string("hostname",sServer,MAX_NAME_LENGTH)
  79.         get_cvar_string("net_address",sAddress,MAX_NAME_LENGTH)
  80.         get_cvar_string("amx_nextmap",sNextMap,MAX_VAR_LENGTH)
  81.        
  82.         if (!is_map_valid(sNextMap)) {
  83.                 copy(sNextMap,MAX_VAR_LENGTH,"[UNKNOWN]")
  84.         }
  85.         get_time("%m/%d/%Y - %H:%M:%S",sServerTime,MAX_NAME_LENGTH)
  86.        
  87.         iMaxPlayers = get_maxplayers()
  88.         if (iMaxPlayers > get_cvar_num("sv_visiblemaxplayers") && get_cvar_num("sv_visiblemaxplayers") > 0) {
  89.                 iMaxPlayers = get_cvar_num("sv_visiblemaxplayers")
  90.         }

  91.         // Send package header
  92.         udp_send_msg("LIVEFEED^"BEGIN")
  93.        
  94.         // Format message
  95.         // LIVEFEED"SERVER"name"address"numplayers"maxplayers"map"maptime"timeleft"connects"tscore"ctscore"server_time
  96.         format(sMsg,MAX_UDP_LENGTH,"LIVEFEED^"SERVER^"%s^"%s^"%i^"%i^"%s^"%i^"%i^"%i^"%i^"%i^"%s^"%s",
  97.         sServer,sAddress,iNumPlayers,iMaxPlayers,sMap,get_cvar_num("mp_timelimit"),(get_timeleft()/60),gConnect,gScoreT,gScoreCT,sServerTime,sNextMap)
  98.         udp_send_msg(sMsg)

  99.         // Send status of every player
  100.         for (new i = 0; i < iNumPlayers; i++) {
  101.                 // Get data
  102.                 iIndex = iPlayers[i]
  103.                 get_user_name(iIndex,sName,MAX_NAME_LENGTH)
  104.                 if (is_user_bot(iIndex)) {
  105.                         format(sAuthid,MAX_NAME_LENGTH,"%s","BOT")
  106.                 }
  107.                 else {
  108.                         get_user_authid(iIndex,sAuthid,MAX_NAME_LENGTH)
  109.                 }
  110.                 iKills = get_user_frags(iIndex)
  111.                 iDeaths = get_user_deaths(iIndex)
  112.                 iTeam = get_user_team(iIndex)
  113.                 iAlive = is_user_alive(iIndex)
  114.                 iUserTime = get_user_time(iIndex,1)
  115.                 get_user_ip(iIndex,sIP,MAX_NAME_LENGTH,1)
  116.                 get_user_ping(iIndex,iPing,iLoss)
  117.        
  118.                 // Format message and send
  119.                 // LIVEFEED"PLAYER"index"name"authid"kills"deaths"team"alive"ping"playingtime"ip
  120.                 format(sMsg,MAX_UDP_LENGTH,"LIVEFEED^"PLAYER^"%i^"%s^"%s^"%i^"%i^"%i^"%i^"%i^"%i^"%s",
  121.                 iIndex,sName,sAuthid,iKills,iDeaths,iTeam,iAlive,iPing,iUserTime,sIP)
  122.                 udp_send_msg(sMsg)
  123.         }
  124.        
  125.         // Send list of cvars
  126.         // Format message and send
  127.         // CVAR"name"value
  128.         for (new i = 0; i < MAX_CVARS; i++) {
  129.                 format(sMsg,MAX_UDP_LENGTH,"LIVEFEED^"CVAR^"%s^"%i",gCvars[i],get_cvar_num(gCvars[i]))
  130.                 udp_send_msg(sMsg)
  131.         }

  132.         // Send mapcycle
  133.         // MAPCYCLE"map"map"map
  134.         format(sMsg,MAX_UDP_LENGTH,"LIVEFEED^"MAPCYCLE^"%s",gMapCycle)
  135.         udp_send_msg(sMsg)
  136.        
  137.         // Send package footer
  138.         udp_send_msg("LIVEFEED^"END")
  139.        
  140.         return PLUGIN_CONTINUE
  141. }

  142. public admin_livechat(id,level,cid)
  143. {
  144.         if (!cmd_access(id,level,cid,3)) return PLUGIN_HANDLED

  145.         // Get parameters
  146.         new sArg1[MAX_NAME_LENGTH]
  147.         new sArg2[MAX_TEXT_LENGTH]
  148.         read_argv(1,sArg1,MAX_NAME_LENGTH)
  149.         read_argv(2,sArg2,MAX_TEXT_LENGTH)

  150.         new iPlayer, iPlayers[MAX_PLAYERS], iNumPlayers
  151.         get_players(iPlayers,iNumPlayers,"c")

  152.         for (new i = 0; i < iNumPlayers; i++) {
  153.                 iPlayer = iPlayers[i]
  154.                 client_print(iPlayer,print_chat, "(WEB) %s :    %s",sArg1,sArg2)
  155.         }
  156.         console_print(id,"[UCStats] LIVECHAT: %s: %s",sArg1,sArg2)

  157.         // Make sure it comes back
  158.         new sMsg[MAX_UDP_LENGTH]

  159.         // Format and send
  160.         // LIVECHAT,say,player,team,message
  161.         format(sMsg,MAX_UDP_LENGTH,"LIVECHAT^"%s^"%s^"%i^"%s","WEB",sArg1,0,sArg2)
  162.         udp_send_msg(sMsg)

  163.         return PLUGIN_CONTINUE
  164. }

  165. public bool:is_alpha(c)
  166. {
  167.         return ((c>='a'&&c<='z')||(c>='A'&&c<='Z')) ? true : false
  168. }

  169. public get_mapcycle()
  170. {
  171.         new iLen, iIndex = 0
  172.         new sFilename[MAX_VAR_LENGTH], sBuffer[MAX_VAR_LENGTH]
  173.         get_cvar_string("mapcyclefile",sFilename,MAX_VAR_LENGTH)
  174.         if (file_exists(sFilename)) {
  175.                 while(read_file(sFilename,iIndex++,sBuffer,MAX_VAR_LENGTH,iLen)) {
  176.                         if (is_alpha(sBuffer[0]) && is_map_valid(sBuffer)) {
  177.                                 add(gMapCycle,MAX_TEXT_LENGTH,sBuffer,MAX_VAR_LENGTH)
  178.                                 add(gMapCycle,MAX_TEXT_LENGTH,"^"",1)
  179.                         }
  180.                 }
  181.         }
  182. }

  183. public send_mapchange()
  184. {
  185.         new sMsg[MAX_UDP_LENGTH]
  186.        
  187.         // Format and send
  188.         // LIVEEVENT,MAPCHANGE
  189.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"MAPCHANGE")
  190.         udp_send_msg(sMsg)
  191. }

  192. /************************************************************
  193. * EVENT FUNCTIONS
  194. ************************************************************/

  195. public event_death() {
  196.         new iKiller = read_data(1)
  197.         new iVictim = read_data(2)
  198.         new iHeadshot = read_data(3)
  199.         new sMsg[MAX_UDP_LENGTH]
  200.         new sKiller[MAX_NAME_LENGTH], sVictim[MAX_NAME_LENGTH], sWeapon[MAX_NAME_LENGTH]
  201.         new iKillerTeam, iVictimTeam
  202.         new iWeapon, iBody

  203.         get_user_attacker(iVictim,iWeapon,iBody)
  204.         get_weaponname(iWeapon,sWeapon,MAX_NAME_LENGTH)
  205.        
  206.         get_user_name(iKiller,sKiller,MAX_NAME_LENGTH)
  207.         get_user_name(iVictim,sVictim,MAX_NAME_LENGTH)
  208.         iKillerTeam = get_user_team(iKiller)
  209.         iVictimTeam = get_user_team(iVictim)
  210.        
  211.         // Format and send
  212.         // LIVEEVENT,KILL,killer,team,victim,team,weapon,headshot
  213.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"KILL^"%s^"%i^"%s^"%i^"%s^"%i",
  214.         sKiller,iKillerTeam,sVictim,iVictimTeam,sWeapon,iHeadshot)
  215.         udp_send_msg(sMsg)
  216.        
  217.         return PLUGIN_CONTINUE
  218. }

  219. public event_world_action()
  220. {
  221.         new sMsg[MAX_UDP_LENGTH]
  222.         new sAction[MAX_NAME_LENGTH]
  223.         read_logargv(1,sAction,MAX_VAR_LENGTH)       
  224.        
  225.         // Format and send
  226.         // LIVEEVENT,WORLD,event
  227.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"WORLD^"%s",sAction)
  228.         udp_send_msg(sMsg)
  229.        
  230.         return PLUGIN_CONTINUE
  231. }

  232. public event_player_action()
  233. {
  234.         new iUserId
  235.         new sArg[MAX_VAR_LENGTH]
  236.         new sName[MAX_NAME_LENGTH]
  237.         new sAction[MAX_NAME_LENGTH]
  238.        
  239.         read_logargv(0,sArg,MAX_VAR_LENGTH)
  240.         read_logargv(2,sAction,MAX_VAR_LENGTH)
  241.         parse_loguser(sArg,sName,MAX_NAME_LENGTH,iUserId)

  242.         new sMsg[MAX_UDP_LENGTH]
  243.         new sAuthid[MAX_NAME_LENGTH]
  244.         new iTeam
  245.        
  246.         if (is_user_bot(iUserId)) {
  247.                 format(sAuthid,MAX_NAME_LENGTH,"%s","BOT")
  248.         }
  249.         else {
  250.                 get_user_authid(iUserId,sAuthid,MAX_NAME_LENGTH)
  251.         }
  252.         iTeam = get_user_team(iUserId)
  253.        
  254.         // Format and send
  255.         // LIVEEVENT,ACTION,name,team,action
  256.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"ACTION^"%s^"%i^"%s^"%s",sName,iTeam,sAction)
  257.         udp_send_msg(sMsg)
  258.        
  259.         return PLUGIN_CONTINUE
  260. }

  261. public event_say(id)
  262. {
  263.         new sMsg[MAX_UDP_LENGTH]
  264.         new sName[MAX_NAME_LENGTH]
  265.         new sCommand[MAX_NAME_LENGTH]
  266.         new sMessage[MAX_TEXT_LENGTH]
  267.         new iTeam

  268.         read_argv(0,sCommand,MAX_TEXT_LENGTH)
  269.         read_argv(1,sMessage,MAX_TEXT_LENGTH)
  270.         get_user_name(id,sName,MAX_NAME_LENGTH)
  271.         iTeam = get_user_team(id)
  272.        
  273.         // Format and send
  274.         // LIVECHAT,say,name,team,message
  275.         format(sMsg,MAX_UDP_LENGTH,"LIVECHAT^"%s^"%s^"%i^"%s",sCommand,sName,iTeam,sMessage)
  276.         udp_send_msg(sMsg)
  277.        
  278.         return PLUGIN_CONTINUE
  279. }

  280. public event_team_score(id)
  281. {
  282.         new sTeam[MAX_NAME_LENGTH]
  283.         read_data(1,sTeam,MAX_NAME_LENGTH)
  284.         if (equal(sTeam,"CT")) {
  285.                 gScoreCT = read_data(2)
  286.         }
  287.         else {
  288.                 gScoreT = read_data(2)
  289.         }
  290.        
  291.         return PLUGIN_CONTINUE
  292. }

  293. /************************************************************
  294. * PLUGIN FUNCTIONS
  295. ************************************************************/

  296. public plugin_end()
  297. {
  298.         send_mapchange()
  299.         return PLUGIN_CONTINUE
  300. }

  301. public client_putinserver(id)
  302. {
  303.         new sMsg[MAX_UDP_LENGTH]
  304.         new sName[MAX_NAME_LENGTH]
  305.         new sIP[MAX_NAME_LENGTH]
  306.         new sAuthid[MAX_TEXT_LENGTH]
  307.         new sMap[MAX_NAME_LENGTH], iNumPlayers, iMaxPlayers

  308.         get_user_name(id,sName,MAX_NAME_LENGTH)
  309.         if (is_user_bot(id)) {
  310.                 format(sAuthid,MAX_NAME_LENGTH,"%s","BOT")
  311.         }
  312.         else {
  313.                 get_user_authid(id,sAuthid,MAX_NAME_LENGTH)
  314.         }
  315.         get_user_ip(id,sIP,MAX_NAME_LENGTH,1)
  316.        
  317.         // Format and send
  318.         // LIVEEVENT,JOINED,player,id,ip
  319.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"JOINED^"%s^"%s^"%s",sName,sAuthid,sIP)
  320.         udp_send_msg(sMsg)
  321.        
  322.         get_mapname(sMap,MAX_NAME_LENGTH)
  323.         iNumPlayers = get_playersnum()
  324.         iMaxPlayers = get_maxplayers()
  325.         if (iMaxPlayers > get_cvar_num("sv_visiblemaxplayers") && get_cvar_num("sv_visiblemaxplayers") > 0) {
  326.                 iMaxPlayers = get_cvar_num("sv_visiblemaxplayers")
  327.         }
  328.        
  329.         // LIVEEVENT,MAPSTATUS,map,numplayers,maxplayers
  330.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"MAPSTATUS^"%s^"%i^"%i",sMap,iNumPlayers,iMaxPlayers)
  331.         udp_send_msg(sMsg)
  332.        
  333.         return PLUGIN_CONTINUE
  334. }

  335. public client_connect(id)
  336. {
  337.         if (!is_user_bot(id)) {
  338.                 gConnect += 1
  339.         }

  340.         return PLUGIN_CONTINUE
  341. }

  342. public client_disconnect(id)
  343. {
  344.         new sMsg[MAX_UDP_LENGTH]
  345.         new sName[MAX_NAME_LENGTH]
  346.         new sIP[MAX_NAME_LENGTH]
  347.         new sAuthid[MAX_TEXT_LENGTH]
  348.         new sMap[MAX_NAME_LENGTH], iNumPlayers, iMaxPlayers

  349.         get_user_name(id,sName,MAX_NAME_LENGTH)
  350.         if (is_user_bot(id)) {
  351.                 format(sAuthid,MAX_NAME_LENGTH,"%s","BOT")
  352.         }
  353.         else {
  354.                 get_user_authid(id,sAuthid,MAX_NAME_LENGTH)
  355.         }
  356.         get_user_ip(id,sIP,MAX_NAME_LENGTH,1)
  357.        
  358.         // Format and send
  359.         // LIVEEVENT,JOINED,player,id,ip
  360.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"LEFT^"%s^"%s^"%s",sName,sAuthid,sIP)
  361.         udp_send_msg(sMsg)
  362.        
  363.         get_mapname(sMap,MAX_NAME_LENGTH)
  364.         iNumPlayers = get_playersnum()-1
  365.         iMaxPlayers = get_maxplayers()
  366.         if (iMaxPlayers > get_cvar_num("sv_visiblemaxplayers") && get_cvar_num("sv_visiblemaxplayers") > 0) {
  367.                 iMaxPlayers = get_cvar_num("sv_visiblemaxplayers")
  368.         }
  369.        
  370.         // LIVEEVENT,MAPSTATUS,map,numplayers,maxplayers
  371.         format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"MAPSTATUS^"%s^"%i^"%i",sMap,iNumPlayers,iMaxPlayers)
  372.         udp_send_msg(sMsg)

  373.         return PLUGIN_CONTINUE
  374. }

  375. public client_infochanged(id)
  376. {
  377.         new sMsg[MAX_UDP_LENGTH]
  378.         new sName[MAX_TEXT_LENGTH], sNewName[MAX_TEXT_LENGTH]

  379.         get_user_name(id,sName,MAX_TEXT_LENGTH)
  380.         get_user_info(id,"name",sNewName,MAX_TEXT_LENGTH)

  381.         if (!equal(sName,sNewName) && !equal(sName,"") && !equal(sName,"(null)")) {
  382.                 // Format and send
  383.                 // LIVEEVENT,NAMECHANGE,name,newname
  384.                 format(sMsg,MAX_UDP_LENGTH,"LIVEEVENT^"NAMECHANGE^"%s^"%s",sName,sNewName)
  385.                 udp_send_msg(sMsg)
  386.         }
  387.         return PLUGIN_CONTINUE
  388. }

  389. public plugin_init() {
  390.         register_plugin("Plugin UCStats (live)","1.0","mike_cao")
  391.         register_srvcmd("amx_livefeed","admin_livefeed",ACCESS_LEVEL,"amx_livefeed")
  392.         register_srvcmd("amx_livechat","admin_livechat",ACCESS_LEVEL,"amx_livechat <name> <message>")
  393.        
  394.         register_event("DeathMsg","event_death","a")
  395.         register_event("TeamScore","event_team_score","a")
  396.        
  397.         register_logevent("event_player_action",3,"1=triggered")
  398.         register_logevent("event_world_action",2,"0=World triggered")

  399.         register_cvar("ucstats_live_ip","")
  400.         register_cvar("ucstats_live_port","")

  401.         // Init
  402.         set_task(1.0,"send_mapchange")       
  403.         set_task(2.0,"get_mapcycle")
  404.        
  405.         // Register say
  406.         register_clcmd("say","event_say")
  407.         register_clcmd("say_team","event_say")

  408.         get_cvar_string("net_address",gNetAddress,MAX_NAME_LENGTH)
  409.         if (strlen(gNetAddress) == 0) {
  410.                 format(gNetAddress,MAX_NAME_LENGTH,"%s","127.0.0.1");
  411.         }
  412.        
  413.         // Initialize UDP session
  414.         if (get_udp_status()) {
  415.                 server_print("[UCStats] UDP initialized successfully.")
  416.         }
  417.         else {
  418.                 server_print("[UCSstats] Failed to initialize UDP.")
  419.         }
  420.        
  421.         return PLUGIN_CONTINUE
  422. }

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
发表于 2005-3-16 02:47:21 | 显示全部楼层 来自 中国–河南–安阳
可以直接编译的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

 楼主| 发表于 2005-3-16 03:25:42 | 显示全部楼层 来自 中国–广西–柳州
Post by wzf828
可以直接编译的


如果能把源代码在贴出来就好了.
实在是太感谢了,这么快就有回复.支持在试!:) :too_sad:  :super:
回复

使用道具 举报

 楼主| 发表于 2005-3-16 03:29:18 | 显示全部楼层 来自 中国–广西–柳州
好像不行,运行ucstats_live.amxx提示失败了!! :mad:
回复

使用道具 举报

发表于 2005-3-16 11:49:32 | 显示全部楼层 来自 中国–陕西–西安
在1.0里udp被sockets所取代,但是偶还没搞清楚这个如何转,因为两者区别很大
建议先找找1.0下是否有udp模块可用,有的话就很方便了
回复

使用道具 举报

 楼主| 发表于 2005-3-16 15:43:22 | 显示全部楼层 来自 中国–广西–柳州
Post by nwb13
在1.0里udp被sockets所取代,但是偶还没搞清楚这个如何转,因为两者区别很大
建议先找找1.0下是否有udp模块可用,有的话就很方便了



原先如果用AMX0.93下是有UDP模块,并且能正常使用,在AMXX下好像没有UDP模块这说法,而是变成了sockets,所以不知道能否转变呢。
一直以来都没用过AMXX,一直是用AMX0.93,也快一年多了,现在想转成AMXX,关键就是几个插件的转变了! :confused:
回复

使用道具 举报

发表于 2005-4-3 02:26:49 | 显示全部楼层 来自 中国–河北–保定
挺深奥的啊,不懂:)
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

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