00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00032 #ifndef __AMXSCRIPT_H__
00033 #define __AMXSCRIPT_H__
00034
00035
00036
00037 #include "amx.h"
00038 #include "../typedefs.h"
00039
00040
00041
00046 class AmxProgram {
00047 private:
00048 void *m_ptrCode;
00049 int m_nSize;
00050 bool _init(void *program);
00051 bool findNativeNotFound( void* program );
00052 struct __amx *m_AMX;
00053 public:
00054 void Load (const char *filename);
00055 cell CallFn (const char *fn);
00056 cell CallFn (int fn);
00057 cell CallFn (int fn, int param);
00058 cell CallFn (int fn, int param1, int param2);
00059 cell CallFn (int fn, int param1, int param2, int param3 );
00060 cell CallFn (int fn, int param1, int param2, int param3, int param4 );
00061 cell CallFn (int fn, int param1, int param2, int param3, int param4, int param5);
00062 cell CallFn (int fn, int param1, int param2, int param3, int param4, int param5, int param6);
00063 cell CallFn (int fn, int param1, int param2, int param3, int param4, int param5, int param6, int param7);
00064 cell CallFn (int fn, int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8);
00065 int getFnOrdinal (char *fn);
00066 explicit AmxProgram (const char *filename) { Load(filename); };
00067 AmxProgram () { m_ptrCode = NULL; }
00068 ~AmxProgram () { if (m_ptrCode!= NULL) delete static_cast<char*>(m_ptrCode); }
00069 };
00070
00071
00072
00073
00074
00075
00076
00077 class AmxFunction {
00078 public:
00079
00080 static AmxProgram* g_prgOverride;
00081
00082 private:
00083 std::string funcName;
00084 FUNCIDX function;
00085
00086 public:
00087
00088 AmxFunction( class AmxFunction& af );
00089 AmxFunction( char* funName );
00090 AmxFunction( FUNCIDX funIdx );
00091
00092
00093 char* getFuncName();
00094 FUNCIDX getFuncIdx();
00095
00096 void copy( class AmxFunction& af );
00097
00098 cell Call( );
00099 cell Call( int param );
00100 cell Call( int param1, int param2 );
00101 cell Call( int param1, int param2, int param3 );
00102 cell Call( int param1, int param2, int param3, int param4 );
00103 cell Call( int param1, int param2, int param3, int param4, int param5 );
00104 cell Call( int param1, int param2, int param3, int param4, int param5, int param6 );
00105 cell Call( int param1, int param2, int param3, int param4, int param5, int param6, int params7 );
00106 cell Call( int param1, int param2, int param3, int param4, int param5, int param6, int params7, int params8 );
00107
00108
00109 };
00110
00111
00112 #ifdef __cplusplus
00113 extern "C" {
00114 #endif
00115
00116
00117 extern char g_cAmxPrintBuffer[2000];
00118 extern int g_nAmxPrintPtr;
00119
00120 #ifdef __cplusplus
00121 }
00122 #endif
00123
00125
00127
00128 #define AMX_NONE 0
00129 #define AMX_BEFORE 1
00130 #define AMX_AFTER 2
00131 #define AMX_FRAME 3
00132 #define AMX_SKIP 4
00133 #define AMX_BYPASS 5
00134
00135
00140 class AmxOverride {
00141 char *m_function;
00142 int m_ordinal;
00143 int m_mode;
00144 public:
00145 bool Exec (int moment);
00146 bool Exec (int moment, int sock);
00147 bool ExecTarget(int moment, int sock);
00148 int getOrdinal (void) {return m_ordinal; };
00149 AmxOverride();
00150 ~AmxOverride();
00151 void Load (char *fname);
00152 void Parse (char *line);
00153 };
00154
00155 #define AMX_MAXTYPE 10
00156 #define AMX_MAXNUMBER 8192
00157
00158 extern AmxOverride g_Scripts[AMX_MAXTYPE][AMX_MAXNUMBER];
00159
00160 #define AMXEXEC(TYPE,NUMBER,RET,MOMENT) { if (g_Scripts[TYPE][NUMBER].Exec(MOMENT)) return RET; }
00161 #define AMXEXECV(TYPE,NUMBER,MOMENT) { if (g_Scripts[TYPE][NUMBER].Exec(MOMENT)) return; }
00162 #define AMXEXECS(SOCKET,TYPE,NUMBER,RET,MOMENT) { if (g_Scripts[TYPE][NUMBER].Exec(MOMENT,SOCKET)) return RET; }
00163 #define AMXEXECSV(SOCKET,TYPE,NUMBER,MOMENT) { if (g_Scripts[TYPE][NUMBER].Exec(MOMENT,SOCKET)) return; }
00164 #define AMXEXECSVNR(SOCKET,TYPE,NUMBER,MOMENT) { g_Scripts[TYPE][NUMBER].Exec(MOMENT,SOCKET); }
00165 #define AMXEXECSVTARGET(SOCKET,TYPE,NUMBER,MOMENT) { if (g_Scripts[TYPE][NUMBER].ExecTarget(MOMENT,SOCKET)) return; }
00166
00167
00168 #define AMXT_SKITARGS 0
00169 #define AMXT_SKILLS 1
00170 #define AMXT_SPEECH 2
00171 #define AMXT_NETRCV 3
00172 #define AMXT_TRIGGERS 4
00173 #define AMXT_MAGICSELECT 5
00174 #define AMXT_MAGICCAST 6
00175 #define AMXT_SPECIALS 7
00176 #define AMXT_GMCMD 8
00177
00178 void LoadOverrides (void);
00179
00180 extern bool g_bByPass;
00181
00182
00183 #endif //__AMXSCRIPT_H__