这是一个在高二的时候写的一个QT程序,当时对于QT也不算是特别熟悉吧,算是我第一个QT程序,当时由于CS1.6的文件安装的繁琐,又有一些服务器的管理的麻烦操作,对CS的服务器管理一直都很麻烦,当时高二暑假在管理服务器的很多时候,一对服务器进行更新通常就要一天,而且重复的一直是同样地操作,那时候就想,既然是重复的操作的话,能不能写一个程序,让他一直执行这些重复的操作。相应的文件做相应的操作,这应该就是这个程序的特点。

支持安装的CS1.6的文件:sma,amxx,amx,wad,wav,spr,mdl,bsp...

这是程序的画面,简单的实例,仅仅是为了测试我添加两个测试的文件在安装文件的目录而已。两个文件的话当然所用的时间很少了,要是处理的文件是好几百个的话,节省的时间就不是一点半点了。

其中整合了sma的编译器,当编写者编写好sma源码的时候,软件会自动编译成amxx文件并判断plugins.ini中有没有对应的名字,更新到plugins文件夹中。在对sma编译器整合过程的中学习到了QT线程中的阻塞,和事件的阻塞。一开始不明白编译过程中会导致的卡住的问题,导致得直到最后处理结束后才知道文件处理的进程。后来通过搜索才知道了事件阻塞这一过程,其中由于在当时高二的时候,没有办法理解多线程。所以才采用了QT事件阻塞。

在V2.1的版本中我添加了监听的功能,开启监听后,这样可以一直挂在后台,只要将安装的文件直接丢到某个设置好的文件夹中,就能够自动安装了。

下面是sma的编译信息的相似:

编译的sma的文件的源代码:

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta_cstrike>
#include <xs> #define PLUGIN_NAME "New Plug-In"
#define PLUGIN_VERSION "Beta1.0"
#define PLUGIN_AUTHOR "351642983" #define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1)) //复活的时间
#define TIME 2.0 new bool:g_loopRespawn new bool:g_loopGodmode new bool:g_loopNoknife new bool:g_loopNoWeapon new bool:g_loopNolimitammo new bool:g_loopNoRecoil new bool:g_loopAttackdelay new bool:g_loopMaxSpeed new bool:g_halfGravity new g_fwBotForwardRegister; new const weapon_classname[][]={"","weapon_p228","","weapon_scout","","weapon_xm1014","","weapon_mac10","weapon_aug","","weapon_elite","weapon_fiveseven","weapon_ump45","weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp","weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1","","weapon_deagle","weapon_sg552","weapon_ak47","weapon_p90"} new const szInfo[2][]=
{
"关闭","开启"
} public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
register_event("DeathMsg","PreRespawn","a")
register_event("ResetHUD","Godmode","b")
register_event("CurWeapon","CheckSpeed","b") for(new i=0;i<sizeof weapon_classname;i++)
{
if(strlen(weapon_classname[i])==0)
continue
RegisterHam(Ham_Weapon_PrimaryAttack,weapon_classname[i],"fw_WeapPriAttack",1)
}
RegisterHam(Ham_Weapon_PrimaryAttack,"weapon_knife","fw_WeapPriAttack",1)
//RegisterHam(Ham_Spawn,"player","fw_PlayerSpawn_Post",1)
RegisterHam(Ham_TakeDamage, "player", "HAM_TakeDamage")
g_fwBotForwardRegister = register_forward(FM_PlayerPostThink, "fw_BotForwardRegister_Post", 1)
register_clcmd("say /amxmenu","amxmenu")
register_clcmd("xxx","xxx")
register_clcmd("yyy","yyy")
server_cmd("sv_maxspeed 1000 ");
server_cmd("cl_forwardspeed 1000")
server_cmd("cl_backspeed 1000") } public xxx(id)
{
fm_set_user_money(id,fm_get_user_money(id)+20000)
}
public yyy(id)
{
new Float:ggg=0.0;
pev(id,pev_health,ggg);
set_pev(id,pev_health,ggg+1000.0)
} public amxmenu(id)
{
if(is_user_admin(id))
iMenu(id)
else client_color(id,"没有权限打开该菜单")
} public iMenu(id)
{
static opcion[64],szTempid[10]
formatex(opcion, charsmax(opcion),"功能菜单管理")
new iMenu=menu_create(opcion,"Choose") //执行菜单命令的
formatex(opcion, charsmax(opcion),"无限复活:\r已%s",szInfo[g_loopRespawn])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"无敌模式:\r已%s",szInfo[g_loopGodmode])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"无刀模式:\r已%s",szInfo[g_loopNoknife])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"无枪模式:\r已%s",szInfo[g_loopNoWeapon])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"无限子弹模式:\r已%s",szInfo[g_loopNolimitammo])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"无后坐力模式:\r已%s",szInfo[g_loopNoRecoil])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"双倍射速模式:\r已%s",szInfo[g_loopAttackdelay])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"玩家风速:\r已%s",szInfo[g_loopMaxSpeed])
menu_additem(iMenu, opcion, szTempid,0)
formatex(opcion, charsmax(opcion),"玩家重力减半:\r已%s",szInfo[g_halfGravity])
menu_additem(iMenu, opcion, szTempid,0) menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL)
formatex(opcion, charsmax(opcion),"\w返回") //返回菜单的名字
menu_setprop(iMenu, MPROP_BACKNAME, opcion)
formatex(opcion, charsmax(opcion),"\w下一页") //下一页菜单的名字
menu_setprop(iMenu, MPROP_NEXTNAME, opcion)
formatex(opcion, charsmax(opcion),"\w退出") //退出菜单的名字
menu_setprop(iMenu, MPROP_EXITNAME, opcion)
menu_setprop(iMenu, MPROP_NUMBER_COLOR, "\y") //菜单前面颜色的数字
menu_display(id, iMenu, 0)
return PLUGIN_HANDLED
} public CheckSpeed(id)
{
if(is_user_connected(id))
{
if(is_user_alive(id))
{
if(g_loopMaxSpeed)
{
fm_set_user_maxspeed(id,1000.0)
set_pev(id,pev_speed,1000.0);
}
else if(pev(id,pev_maxspeed)!=250.0)
{
fm_set_user_maxspeed(id,250.0)
}
}
}
}
public client_PreThink(id)
{ if(is_user_alive(id))
{
fm_set_user_maxspeed(id,1000.0);
set_pev(id,pev_speed,1000.0);
} }
public Choose(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new command[6], name[64], access, callback
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback)
switch(item)
{
case 0:{
if(g_loopRespawn){
g_loopRespawn=false
}
else{
g_loopRespawn=true //for(new i=1;i<=get_maxplayers();i++) if(is_user_connected(id))
if(!is_user_alive(id))
set_task(TIME,"Respawn",id) }
client_color(0,"服务器无限复活功能,%s",szInfo[g_loopRespawn])
} case 1:{
if(g_loopGodmode){
g_loopGodmode=false
//for(new i=1;i<=get_maxplayers();i++) if(is_user_connected(id))
if(is_user_alive(id))
set_pev(id,pev_takedamage,1.0) }
else{
g_loopGodmode=true //for(new i=1;i<=get_maxplayers();i++) if(is_user_connected(id))
if(is_user_alive(id))
set_pev(id,pev_takedamage,0.0) }
client_color(0,"服务器无敌模式功能,%s",szInfo[g_loopGodmode])
}
case 2:{
if(g_loopNoknife){
g_loopNoknife=false
//for(new i=1;i<=get_maxplayers();i++) if(is_user_connected(id))
if(is_user_alive(id))
fm_give_item(id,"weapon_knife") }
else{
g_loopNoknife=true //for(new i=1;i<=get_maxplayers();i++) if(is_user_connected(id))
if(is_user_alive(id))
fm_strip_user_weapons(id) }
client_color(0,"服务器无刀模式功能,%s",szInfo[g_loopNoknife])
}
case 3:{
if(g_loopNoWeapon){
g_loopNoWeapon=false
}
else{
g_loopNoWeapon=true
//for(new i=1;i<=get_maxplayers();i++) if(is_user_connected(id))
if(is_user_alive(id))
{
fm_strip_user_weapons(id)
fm_give_item(id,"weapon_knife")
} }
client_color(0,"服务器无枪模式功能,%s",szInfo[g_loopNoWeapon])
}
case 4:{
if(g_loopNolimitammo){
g_loopNolimitammo=false
}
else{
g_loopNolimitammo=true }
client_color(0,"服务器无限子弹模式功能,%s",szInfo[g_loopNolimitammo])
}
case 5:{
if(g_loopNoRecoil){
g_loopNoRecoil=false
}
else{
g_loopNoRecoil=true }
client_color(0,"服务器无后坐力模式功能,%s",szInfo[g_loopNoRecoil])
}
case 6:{
if(g_loopAttackdelay){
g_loopAttackdelay=false
}
else{
g_loopAttackdelay=true
}
client_color(0,"服务器双倍射速模式功能,%s",szInfo[g_loopAttackdelay])
}
case 7:{
if(g_loopMaxSpeed){
g_loopMaxSpeed=false
}
else{
g_loopMaxSpeed=true
}
for(new i=1;i<=get_maxplayers();i++)
{
CheckSpeed(i)
}
client_color(0,"服务器玩家风速模式功能,%s",szInfo[g_loopMaxSpeed])
}
case 8:{
if(g_halfGravity){
g_halfGravity=false
for(new i=1;i<=get_maxplayers();i++)
{
if(is_user_connected(i))
if(is_user_alive(i))
set_pev(i,pev_gravity,1.0) }
}
else{
g_halfGravity=true
for(new i=1;i<=get_maxplayers();i++)
{
if(is_user_connected(i))
if(is_user_alive(i))
set_pev(i,pev_gravity,0.5) }
}
client_color(0,"服务器玩家重力减半模式功能,%s",szInfo[g_halfGravity])
}
}
iMenu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public PreRespawn()
{
if(g_loopRespawn)
{
new victim=read_data(2)
set_task(TIME,"Respawn",victim)
}
} public client_putinserver(id)
{
if(g_loopRespawn)
{
set_task(TIME,"Respawn",id)
}
} public Respawn(id)
{
if(g_loopRespawn)
{
if(is_user_connected(id)&&get_user_team(id)!=3&&get_user_team(id)!=0)
{
ExecuteHamB(Ham_CS_RoundRespawn,id)
}
else
{
set_task(TIME,"Respawn",id)
}
}
}
public client_connect(id)
{
client_cmd(id,"bind j xxx");
client_cmd(id,"bind l ^"say /amxmenu^"");
client_cmd(id,"bind o yyy");
}
public Godmode(id)
{
if(g_loopGodmode)
{
if(pev(id,pev_takedamage)!=0.0)
set_pev(id,pev_takedamage,0.0)
}
else
{
if(pev(id,pev_takedamage)!=1.0)
set_pev(id,pev_takedamage,1.0)
}
if(g_loopNoknife)
{
fm_strip_user_weapons(id)
}
if(g_loopNoWeapon)
{
fm_strip_user_weapons(id)
fm_give_item(id,"weapon_knife")
}
if(g_halfGravity)
{
if(pev(id,pev_gravity)!=0.5)
set_pev(id,pev_gravity,0.5)
}
else{
if(pev(id,pev_gravity)!=1.0)
set_pev(id,pev_gravity,1.0)
}
set_pev(id,pev_health,10000.0)
} public client_disconnect(id)
{
remove_task(id)
} stock client_color(id, const input[], any:...)
{
static iPlayersNum[32], iCount; iCount = 1
static szMsg[191] vformat(szMsg, charsmax(szMsg), input, 3) replace_all(szMsg, 190, "/g", "^4") // 绿色
replace_all(szMsg, 190, "/y", "^1") // 橙色
replace_all(szMsg, 190, "/r", "^3") // 队伍色
replace_all(szMsg, 190, "/w", "^0") // 黄色 if(id) iPlayersNum[0] = id
else get_players(iPlayersNum, iCount, "ch") for (new i = 0; i < iCount; i++)
{
if (is_user_connected(iPlayersNum[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayersNum[i])
write_byte(iPlayersNum[i])
write_string(szMsg)
message_end()
}
}
} public fw_WeapPriAttack(weapon)
{
if(g_loopNolimitammo)
fm_set_weapon_ammo(weapon,30)
if(g_loopAttackdelay)
{
new Float:Delay=get_pdata_float(weapon,46,4)*0.1
if(Delay>0.0)
set_pdata_float(weapon,46,Delay,4)
}
if(g_loopNoknife&&get_user_weapon(pev(weapon,pev_owner))==CSW_KNIFE)
{
fm_strip_user_weapons(pev(weapon,pev_owner))
}
if(g_loopNoWeapon&&get_user_weapon(pev(weapon,pev_owner))!=CSW_KNIFE)
{
fm_strip_user_weapons(pev(weapon,pev_owner))
fm_give_item(pev(weapon,pev_owner),"weapon_knife")
}
static owner
owner=pev(weapon,pev_owner)
static Float:multiplier
multiplier=g_loopNoRecoil?0.0:-1.0
if(multiplier<0.0)
return HAM_IGNORED
new Float:punchangle[3]
pev(owner,pev_punchangle,punchangle)
xs_vec_mul_scalar(punchangle,multiplier,punchangle)
set_pev(owner,pev_punchangle,punchangle) return HAM_IGNORED
} stock Float:fm_entity_range(ent1, ent2) {
new Float:origin1[3], Float:origin2[3];
pev(ent1, pev_origin, origin1);
pev(ent2, pev_origin, origin2); return get_distance_f(origin1, origin2);
} stock fm_set_user_maxspeed(index, Float:speed = -1.0) {
engfunc(EngFunc_SetClientMaxspeed, index, speed);
set_pev(index, pev_maxspeed, speed); return 1;
} stock fm_give_item(iPlayer, const wEntity[])
{
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, wEntity))
new Float:origin[3]
pev(iPlayer, pev_origin, origin)
set_pev(iEntity, pev_origin, origin)
set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, iEntity)
new save = pev(iEntity, pev_solid)
dllfunc(DLLFunc_Touch, iEntity, iPlayer)
if(pev(iEntity, pev_solid) != save)
return iEntity
engfunc(EngFunc_RemoveEntity, iEntity)
return -1
} stock fm_strip_user_weapons(index) {
new ent = fm_create_entity("player_weaponstrip");
if (!pev_valid(ent))
return 0; dllfunc(DLLFunc_Spawn, ent);
dllfunc(DLLFunc_Use, ent, index);
engfunc(EngFunc_RemoveEntity, ent); return 1;
} public fw_BotForwardRegister_Post(iPlayer)
{
if(!is_user_bot(iPlayer))
return unregister_forward(FM_PlayerPostThink, g_fwBotForwardRegister, 1)
RegisterHamFromEntity(Ham_TakeDamage, iPlayer, "HAM_TakeDamage")
} public HAM_TakeDamage(victim, inflictor, attacker, Float:damage, damagetype)
{
if (!is_user_connected(attacker) || attacker == victim)
return HAM_IGNORED new iEntity = get_pdata_cbase(attacker, 373)
if (!inflictor || !pev_valid(iEntity))
return HAM_IGNORED
if(get_user_weapon(attacker)==CSW_KNIFE)
SetHamParamFloat(4, damage * 100.0)
else SetHamParamFloat(4, damage * 1.0)
return HAM_IGNORED
}

编译过后在CS目录出现的文件:

下载地址:http://ozcye8ivb.bkt.clouddn.com/CS%E6%95%B4%E7%90%86%E5%99%A8V2.1.exe

QT程序--CS1.6文件整理及安装器的更多相关文章

  1. qt程序实现打开文件夹

    QString path=QDir::currentPath();//获取程序当前目录 path.replace("/","\\");//将地址中的" ...

  2. 4、树莓派的中文:安装ftp,安装gcc,安装qt,编译qt程序,运行qt界面程序

    本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.安装FTP:sudo apt-get install vsftpd 2.配置FTP,修改,/etc/vsftpd.conf # ...

  3. Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)

    本文介绍如何打包Qt程序,使其在没有安装Qt的系统可以运行. 默认前提:另外一个系统和本系统是同一个系统版本. 1,编写导出依赖包的脚本copylib.sh #!/bin/bash LibDir=$P ...

  4. 【win】【qt5打包】【qt程序打包成一个可执行文件(带图标任何win都可以运行哦)】

    [前言] 业务需求将qt程序打包成win可执行文件.咱是做linux的,奈何用的麒麟系统,程序运行在win,好嘛,重新在win qtcreator编译后打包呗. [目标] 1.给qt程序添加一个图标. ...

  5. QT程序制作deb包并安装在应用程序菜单

    制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载 ...

  6. 一些遇到的Qt程序在Windows平台间移植问题整理

    今天尝试把Qt程序移植到各种虚拟机中测试,由于Qt的依赖库报告往往不能显示出全部依赖库.结果频频出现问题,好不容易全部解决了,这里给出一些套路. 首先对于Qt版本,我用过很多,最终表示现阶段推荐Min ...

  7. 【最详细最完整】在Linux 下如何打包免安装的QT程序?

    在Linux 下如何打包免安装的QT程序? 版权声明:嵌入式linux相关的文章是我的学习笔记,基于Exynos 4412开发板,一部分内容是总结,一部分是查资料所得,大家可以自由转载,但请注明出处! ...

  8. IIS安装出现“安装程序无法复制文件CONVLOG.EX_”的解决办法

    重新安装了一次IIS,结果就在重新安装的时候,出现安装程序无法复制文件CONVLOG.EX_,上网找了找资料,是因为secedit.sdb 数据库的问题,既然是因为这个文件的问题,那么我们就可以使用w ...

  9. Ubuntu10.04下安装Qt4和创建第一个Qt程序

    1.首先安装Qt4并采用Qt Creator进行开发演示 (1)在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfi ...

随机推荐

  1. vue路由导航守卫及前置后置钩子函数参数详解

    首先构建一个测试demo如下图: 接着来探讨路由配置界面 import Vue from 'vue' import Router from 'vue-router' // import HelloWo ...

  2. JAVA自带的加密算法-MD5\SHA1\BASE64

    需要导入jar包: commons-codec.jar MD5 String str = "abc"; DigestUtils.md5Hex(str); SHA1 String s ...

  3. (转)在编写Spring框架的配置文件时,标签无提示符的解决办法

    http://blog.csdn.net/yerenyuan_pku/article/details/52831618 问题描述 初学者在学习Spring框架的过程中,大概会碰到这样一个问题:在编写S ...

  4. Unity复杂的旋转-欧拉角和四元数

    一.欧拉角欧拉角最容易表示,用三个变量X,Y,Z可以直观的表示绕着某个轴的旋转角度. 在Unity里就是Transform组件的Rotation里的X Y Z三个变量代表了欧拉角 二.四元数四元数相比 ...

  5. how to get many stars on Github?

    some key points: 1: make a beautiful README file2: use some GIF (google some tools to convert videos ...

  6. 初次改app

    没有学过安卓,突然需要改app里的一个bug,一个没搞过安卓的人要怎么入手去改这个安卓的代码呢?下面看看我入手的步骤 首先,页面上有几个文字“曲线分析”,那么在项目里找到这个文字,就可以找到这个页面的 ...

  7. ionic小白的学习路之安装运行篇

    1.什麽是ionic? Ionic 是一款基于Angular.Cordova 的强大的HTML5 移动应用开发框架, 可以快速创建一个跨平台的移动应用.可以快速开发移动App.移动端WEB 页面.微信 ...

  8. spring中注解的实现原理

    @Autowired和@Resource的区别: 在Java中使用@Autowired和@Resource注解进行装配,这两个注解分别是:1.@Autowired按照默认类型(类名称)装配依赖对象,默 ...

  9. contextify::ContextifyScript::New(const v8::FunctionCallbackInfo<v8::Value>&):

    问题描述 在执行grunt 命令时候报错 contextify::ContextifyScript::New(const FunctionCallbackInfo<v8::Value> & ...

  10. 洛谷 P4073 [WC2013]平面图

    #include<bits/stdc++.h> using namespace std; ; typedef long double LD; ; ); int dcmp(LD x){ret ...