游戏辅助程序
你谷日爆
·
·
个人记录
game_ex.cpp
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int code_search(string s);
void init();
void setnum(string s,int number);
map<string,int>code_data;
vector<int>code_pos;
vector<int>data_base;
int code_size;
struct single_plus{
string pos;
int plus;
single_plus(string pos,int plus){
this->pos=pos;
this->plus=plus;
}
};
struct object{
string name;
int code;
vector<single_plus>effect;
bool operator <(const object b)const{
return code<b.code;
}
void regist(string _name){
name=_name;
code=code_search(_name);
}
void add_effect(string s,int p){
single_plus ps(s,p);
effect.push_back(ps);
}
bool use(int times){
if(data_base[code]-times<0)return 0;
for(int i=0;i<effect.size();i++)
data_base[code_search(effect[i].pos)]+=effect[i].plus*times;
data_base[code]-=times;
return 1;
}
};
struct quality{
string name;
int code;
void regist(string _name,int prenum){
name=_name;
code=code_search(_name);
setnum(_name,prenum);
}
};
vector<object>ob_base;
vector<quality>ql_base;
int code_search(string s){
if(code_data[s]==0){
code_size++;
code_data[s]=code_size;
data_base.push_back(0);
}
return code_data[s];
}
void init(){
code_size=-1;
object ober;
ober.regist("empty_object");
ob_base.push_back(ober);
code_pos.push_back(0);
}
void setnum(string s,int number){
data_base[code_search(s)]=number;
}
void plusnum(string s,int number){
data_base[code_search(s)]+=number;
}
int getnum(string s){
return data_base[code_search(s)];
}
bool useob(string s,int _times){
return ob_base[code_pos[code_search(s)]].use(_times);
}
void ql_register(string s,int x){
quality ql;
ql.regist(s,x);
ql_base.push_back(ql);
code_pos.push_back(ql_base.size()-1);
}
void ob_register(string s){
object ober;
ober.regist(s);
ob_base.push_back(ober);
code_pos.push_back(ob_base.size()-1);
}
void add_effect(string ms,string s,int p){
ob_base[code_pos[code_search(ms)]].add_effect(s,p);
}
int main(){
//test lines
init();
int n;
cin>>n;
while(1){
switch(n){
case 1:{
for(int i=0;i<data_base.size();i++)
cout<<i<<' '<<data_base[i]<<endl;
break;
}
case 2:{
map<string,int>::iterator it;
for(it=code_data.begin();it!=code_data.end();it++)
cout<<it->first<<' '<<it->second<<endl;
break;
}
case 3:{
for(int i=0;i<ql_base.size();i++){
cout<<ql_base[i].name<<' '<<ql_base[i].code<<endl;
}
break;
}
case 4:{
for(int i=0;i<ob_base.size();i++){
cout<<ob_base[i].name<<' '<<ob_base[i].code<<endl;
for(int j=0;j<ob_base[i].effect.size();j++){
cout<<" ";
cout<<ob_base[i].effect[j].pos<<' ';
cout<<ob_base[i].effect[j].plus<<endl;
}
}
break;
}
case 5:{
int x,y;
string s,ms;
cin>>ms;
ob_register(ms);
cin>>s>>x;
while(s!="none"){
add_effect(ms,s,x);
cin>>s>>x;
}
break;
}
case 6:{
int x,y;
string s;
cin>>s>>x;
ql_register(s,x);
break;
}
case 7:{
string s;
int x;
cin>>s>>x;
setnum(s,x);
break;
}
case 8:{
string s;
int x;
cin>>s>>x;
plusnum(s,x);
break;
}
case 9:{
string s;
int x;
cin>>s>>x;
if(!useob(s,x))puts("failed!");
break;
}
}
cin>>n;
}
return 0;
}
background_runner.cpp
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int key_click[300],key_down[300];
bool CapsLocken;
HWND hWnd;
POINT ps,lps;
void bakcground_runner();
bool click(int key);
inline bool click(int key){
bool f=key_click[key];
key_click[key]=0;
return f;
}
inline void background_runner(){
lps=ps;
RECT B_wd;
POINT B_ps;
GetCursorPos(&B_ps);
B_ps.x-=B_wd.top+8;
B_ps.y-=B_wd.left+32;
ps.x=B_ps.x/16;
ps.y=B_ps.y/16;
// if(ps.x<0||ps.x>=50||ps.y<0||ps.y>=30)ps.x=-1,ps.y=-1;
for(int i=0;i<=255;i++){
if(GetAsyncKeyState(i)){
if(!key_down[i])key_click[i]=1;
key_down[i]=1;
}
else key_down[i]=0;
}
if(click(20))CapsLocken=!CapsLocken;
// while(B_wd.right-B_wd.left!=820||B_wd.bottom-B_wd.top!=522)
GetWindowRect(hWnd,&B_wd);
}
openfile.cpp
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
void FileRead(FILE *fname);
inline void open(string _fname,string s){
FILE *wt=fopen("path","w");
fclose(wt);
system("cd>path");
FILE *pth=fopen("path","r");
char c[205];
fscanf(pth,"%s\n",c);
fclose(pth);
system("del path");
FILE *fb=fopen("run.bat","w");
s=s+".data";
fprintf(fb,"@[echo](/user/15285) off\ncd %s\ncopy %s %s >nul",_fname.c_str(),s.c_str(),c);
fclose(fb);
system("run.bat");
system("del run.bat");
FILE *fl=fopen(s.c_str(),"r");
FileRead(fl);
fclose(fl);
system(("del "+s).c_str());
}
basis.cpp
#define LL long long
#include "background_runner.cpp"
#include "openfile.cpp"
#include "screen_putter.cpp"