Sziasztok.
Rég voltam aktív amxx területén, most hogy megint szabadidőmben foglalkozom vele, látom, hogy elég sok újdonság van. Kérdéseim a következők (hogy időt spóroljak magamnak:D)
- Ha a szerverre reapi-t teszek, akkor dproto helyett valami mást kell használnom, hogy ns-t is tudjon a szerver fogadni ?
- reapi esetén az eredeti amxmodx 1.8.3 újabb verziói működnek ?
- reapi esetén az okapi és orpheu modulok működnek?
- reapi esetén az egyszerűbb pluginok - gondolok itt a scoreboard átíró, sebzésmutató pluginekre - működőképesek lehetnek alapból, vagy teljesen előről kell kezdeni a megírásukat?
- van valakinek tapasztalata reapi+gungame kombó futtatásában? (arra gondolok, hogy működik-e?)
A következő inkább 1.8.3-as amxx probléma:
nem rakom be az egész kódot csak egy részletét. 1.8.2 compilerével lefordítva hiba nélkül lefut a dolog, de az 1.8.3-as compilerrel hibát kapok:
-
Kód:
// Should the plugin save player data in SQL database?
// To save player data in a vault, change "#define USING_SQL" to "//#define USING_SQL"
// To save player data in SQL, change "//#define USING_SQL" to "#define USING_SQL"
// If you comment //#define USING_REGEX its a little bit more non-steam friendly
#define USING_SQL
#define USING_REGEX
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
#include <csx>
#include <fun>
#include <xs>
#if defined USING_REGEX
#include <regex>
#endif
#if defined USING_SQL
#include <sqlx>
new Handle:g_sql_tuple
new g_table[32]
new serverip[64]
#else
#include <nvault>
new g_iVault
#endif
#if defined USING_SQL
new g_loaded_data[ 33 ]
#endif
#define VERSION "2.3"
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_pPlayer 41
#define m_flTimeWeaponIdle 48
#define m_iClientClip 52
#define m_fInReload 54
#define m_fInSpecialReload 55
#define ALPHA_FULLBLINDED 255
#define m_pActiveItem 373
#define m_flFlashedUntil 514
#define m_flFlashedAt 515
#define m_flFlashHoldTime 516
#define m_flFlashDuration 517
#define m_iFlashAlpha 518
#define INTERVAL 60
new g_iMaxPlayers
#define FIRST_PLAYER_ID 1
#define IsPlayer(%1) ( FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers )
#define NADES_BITSUM (1 << CSW_HEGRENADE) | (1 << CSW_FLASHBANG) | (1 << CSW_SMOKEGRENADE)
#define NORELOAD_BITSUM NADES_BITSUM | (1 << CSW_KNIFE) | (1 << CSW_C4) | (1 << CSW_M3) | (1 << CSW_XM1014)
#define fm_get_c4() engfunc( EngFunc_FindEntityByString, -1, "classname", "weapon_c4" )
new g_C4Ent
new Float:g_fC4Origin[ 3 ]
#define GetBit(%1,%2) ( %1 & 1 << ( %2 & 31 ) )
#define SetBit(%1,%2) ( %1 |= ( 1 << ( %2 & 31 ) ) )
#define DelBit(%1,%2) ( %1 &= ~( 1 << ( %2 & 31 ) ) )
const MAX_PLAYERS = 32
const MAX_WEAPONS = CSW_P90
const RIFFLES_BITSUM = ((1 << CSW_AUG) | (1 << CSW_GALIL) | (1 << CSW_FAMAS) | (1 << CSW_M249) | (1 << CSW_M4A1) | (1 << CSW_SG552) | (1 << CSW_AK47))
const SNIPERS_BITSUM = ((1 << CSW_SCOUT) | (1 << CSW_SG550) | (1 << CSW_AWP) | (1 << CSW_G3SG1))
const THROUGH_WALL_WEAPONS = ((1 << CSW_DEAGLE) | RIFFLES_BITSUM | SNIPERS_BITSUM)
new g_iBombTime, g_iPlanter,
g_iGetBombPlanted, g_iRounds,
g_fwid
new const g_szAchievementSound[] = "achieve.wav"
new const g_szAchievementTag[] = "[Achievement]"
new g_iMsgSayText
new const Float:vecNullOrigin[ 3 ]
new Float:flDistance[ MAX_PLAYERS + 1 ],
Float:vecOldOrigin[ MAX_PLAYERS + 1 ][ 3 ],
Float:g_iFeet = 35.0
a hibaüzenet:
Kód:
...Achievement_bots.sma(76) :error 020: invalid symbol name ""
erre nem jöttem rá...
Csak hogy ne kelljen számozgatni/számolgatni a sorokat:
Kód:
72. #define GetBit(%1,%2) ( %1 & 1 << ( %2 & 31 ) )
73. #define SetBit(%1,%2) ( %1 |= ( 1 << ( %2 & 31 ) ) )
74. #define DelBit(%1,%2) ( %1 &= ~( 1 << ( %2 & 31 ) ) )
75.
76. const MAX_PLAYERS = 32
ezt az 1 hibát nem értettem meg egyelőre, több is volt, de azok egyszerűek (főként a client_disconnect helyett client_disconnected-et, meg az strbreak helyett argbreak-et kell írni jellegű problémák voltak). Mivel a hibaüzenet sorszámozása mindíg az előző sorra mutatott, ezért az következtettem ki, hogy a DelBit-el van problémája, csak nem értem hogy mi?
Köszönöm ha valaki választ tud adni ezekre.