Greetings AMXX,
Hope y'all are having a good time.
I'm here to get some help regarding an AMX Module Malfunction,
Orpheu
I'm running a DeathRun Server that requires the plugin,
Block Reconnect Respawn by
Sylwester for avoiding players to spawn in the middle on an on-going round. To support the plugin's requirements, my server is running
Orpheu v2.6.3 by
Arkshine.
Whenever I've tried to fire the server up with brr_nokill.amxx, it gives me a "Failed to find memloc" error.
Code:
[META] ERROR: Failed to find memloc for regcmd 'orpheu'
I searched the forums for solutions and found
this.
As per Yami's solution for "ham" :
Quote:
Originally Posted by YamiKaitou
Try deleting anything with the word "ham" in the file name and reuploading them, with the server shut down of course
|
I assume that the same would apply for orpheu as well, and so I delete entire Orpheu files, redownloaded and re-uploaded with the server shut down and seems like I'm running into the same problem again.
Here's the plugin code :
PHP Code:
#include <amxmodx>
#include <celltrie>
#include <hamsandwich>
#include <orpheu>
#include <orpheu_stocks>
#define MAX_PLAYERS 32
#define VERSION "1.4-nokill"
//----------------------------------------------------------------------------------------------
new _pg_is_h
#define _IsHuman(%1) ( _pg_is_h & 1<<%1 )
#define _SetHuman(%1) _pg_is_h |= 1<<%1
#define _SetNotHuman(%1) _pg_is_h &= ~( 1<<%1 )
//----------------------------------------------------------------------------------------------
new _pg_spawned
#define _HasSpawned(%1) ( _pg_spawned & 1<<%1 )
#define _SetSpawned(%1) _pg_spawned |= 1<<%1
#define _SetNotSpawned(%1) _pg_spawned &= ~(1<<%1)
#define _ResetSpawned() _pg_spawned = 0
//----------------------------------------------------------------------------------------------
new _pg_block
#define _IsBlocked(%1) ( _pg_block & 1<<%1 )
#define _SetBlock(%1) _pg_block |= 1<<%1
#define _SetNoBlock(%1) _pg_block &= ~(1<<%1)
#define _ResetBlocked() _pg_block = 0
//----------------------------------------------------------------------------------------------
new g_pGameRules
new bool:g_stored_ips
new g_p_ip[MAX_PLAYERS+1][16]
new Trie:g_trie_ips
new Float:g_late_spawn_time_limit
new pcvar_spawn_time
new pcvar_enabled
new bool:g_block_late_spawn
new g_enabled
public plugin_init(){
register_plugin("BlockReconnectRespawn", VERSION, "Sylwester")
register_cvar("brr_ver", VERSION, FCVAR_SERVER)
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1)
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
register_logevent("logevent_round_start", 2, "1=Round_Start")
pcvar_spawn_time = register_cvar("brr_spawn_time", "10")
pcvar_enabled = register_cvar("brr_enabled", "1")
OrpheuRegisterHookFromObject(g_pGameRules,"FPlayerCanRespawn","CGameRules","OnFPlayerCanRespawn")
g_trie_ips = TrieCreate()
}
public plugin_precache()
OrpheuRegisterHook(OrpheuGetFunction("InstallGameRules"),"OnInstallGameRules",OrpheuHookPost)
public OnInstallGameRules()
g_pGameRules = OrpheuGetReturn()
public OrpheuHookReturn:OnFPlayerCanRespawn(gamerules, id){
if(!_IsHuman(id) || _HasSpawned(id))
return OrpheuIgnored
if(_IsBlocked(id)){
OrpheuSetReturn(false)
return OrpheuSupercede
}
if(g_block_late_spawn && g_late_spawn_time_limit < get_gametime()){
OrpheuSetReturn(false)
return OrpheuSupercede
}
return OrpheuIgnored
}
public Player_Spawn(id){
if(!_IsHuman(id) || !is_user_alive(id))
return
_SetSpawned(id)
}
public logevent_round_start(){
g_enabled = get_pcvar_num(pcvar_enabled)
new late_spawn_time = get_pcvar_num(pcvar_spawn_time)
if(late_spawn_time <= 0){
g_block_late_spawn = false
return
}
g_block_late_spawn = true
g_late_spawn_time_limit = get_gametime()+float(late_spawn_time)
}
public event_new_round(){
if(g_stored_ips){
TrieClear(g_trie_ips)
g_stored_ips = false
}
_ResetSpawned()
_ResetBlocked()
g_block_late_spawn = false
}
public client_putinserver(id){
if(is_user_bot(id) || is_user_hltv(id))
return
_SetHuman(id)
get_user_ip(id, g_p_ip[id], 15)
if(g_enabled && TrieKeyExists(g_trie_ips, g_p_ip[id])){
_SetBlock(id)
}
}
public client_disconnect(id){
if(_HasSpawned(id) && !_IsBlocked(id) && g_enabled){
g_stored_ips = true
TrieSetCell(g_trie_ips, g_p_ip[id], 0)
}
_SetNoBlock(id)
_SetNotSpawned(id)
_SetNotHuman(id)
}
public plugin_end(){
TrieDestroy(g_trie_ips)
}
modules.ini
PHP Code:
;;;
; To enable a module, remove the semi-colon (;) in front of its name.
; If it's not here, simply add it its name, one per line.
; You don't need to write the _amxx part or the file extension.
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SQL Modules usually need to be enabled manually ;;
;; You can have any number on at a time. Use ;;
;; amx_sql_type in sql.cfg to specify the default ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;mysql
;sqlite
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Put third party modules below here. ;;
;; You can just list their names, without the _amxx ;;
;; or file extension. ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; These modules will be auto-detected and loaded ;;
;; as needed. You do not need to enable them here ;;
;; unless you have problems. ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fun
engine
fakemeta
;geoip
;sockets
;regex
;nvault
cstrike
csx
hamsandwich
brr_nokill.amxx was compiled locally as it has Orpheu Dependencies.
Hope these details are enough to analyze the case. I'd appreciate any help!
Kind Regards,
ZEDD