• Регистрация на форуме отключена.
    Она будет открываться первого числа каждого месяца на 24 часа.

    Если необходимо - пишите админу группы Dev-CS в Telegram-чате.

Проблемы с geoip_code2_ex

Сообщения
147
Реакции
8
Ошибка
Load fails: Plugin uses an unknown function (name "geoip_code2_ex") - check your modules.ini.
ОС
Linux
Amx Mod X
190
Билд
ReHLDS version: 3.8.0.711-dev
ReGamedll
ReGameDLL version: 5.20.0.492-dev
Версия Metamod
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Список метамодулей
name                    version     author               status
[ 1] MySQL 1.9.0.5271 AMX Mod X Dev Team running
[ 2] SQLite 1.9.0.5271 AMX Mod X Dev Team running
[ 3] Fun 1.9.0.5271 AMX Mod X Dev Team running
[ 4] Engine 1.9.0.5271 AMX Mod X Dev Team running
[ 5] FakeMeta 1.9.0.5271 AMX Mod X Dev Team running
[ 6] GeoIP 1.9.0.5271 AMX Mod X Dev Team running
[ 7] nVault 1.9.0.5271 AMX Mod X Dev Team running
[ 8] CStrike 1.9.0.5271 AMX Mod X Dev Team running
[ 9] CSX 1.9.0.5271 AMX Mod X Dev Team running
[10] Ham Sandwich 1.9.0.5271 AMX Mod X Dev Team running
[11] ReAPI 5.19.0.211 Asmodai & s1lent running
[12] ReAimDetector 0.2.2 ReHLDS Team running
[13] Buttons Manager 0.0.1 Unknown running
[14] RegEx 1.9.0.5271 AMX Mod X Dev Team running
14 modules, 14 correct
Список плагинов
это не нужно
Автор плагина
R3X
Версия плагина
0.5
Исходный код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
#include <sqlx>
#include <geoip>
#include <colorchat>
#include <dhudmessage>

#define PLUGIN "Deathrun Stats"
#define VERSION "0.5"
#define AUTHOR "R3X"

new gszChatPrefix[32];
new gszTop15Redirect[128];

new gszMotd[1024];

new gszMapname[64];
new gMid


#pragma unused giGames
new giGames; //Poki co nie uzywana zmienna


new gszQuery[512];
new Handle:gTuple;

new gbAuthorized[33];
new giPid[33];

new giPlayedTime[33];
new giBestTime[33];
new giPlayedGames[33];
new giDeaths[33];
new gszRecordTime[33][32];
new giBestTimeofMap;

new Float:gfLastInfo[33];
new Float:gfStartRun[33];
new giLastTime[33];
new bool:gbFinished[33];

new gEntFinish = 0;
new bool:gbEntityMoved = false;

new gcvarSave, gcvarTimer, gcvarTimerType, gcvarDrawFinish;
new gcvarPrintResult;
new gcvarRoundTime;

new Float:gfEndRoundTime;
new giMaxPlayers;

new gsprite;

getFormatedTime(iTime, szTime[], size){
formatex(szTime, size, "%d:%02d.%03ds", iTime/60000, (iTime/1000)%60, iTime%1000);
}

#include "drstats/mysql.inl"
#include "drstats/finish.inl"
#include "drstats/stats.inl"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("deathrun_stats.txt");

register_cvar("amx_drstats_host", "db3.myarena.ru");
register_cvar("amx_drstats_user", "u21942_dr");
register_cvar("amx_drstats_pass", "Anisa4ka");
register_cvar("amx_drstats_db", "u21942_dr");

gcvarSave = register_cvar("amx_drstats_save", "1");
gcvarTimer = register_cvar("amx_drstats_timer", "1");
gcvarTimerType = register_cvar("amx_drstats_timer_type", "0");
gcvarDrawFinish = register_cvar("amx_drstats_draw_finish", "1");

gcvarPrintResult = register_cvar("amx_drstats_print_result", "1");
//0-wcale
//1-HUD+konsola
//2-chat

gcvarRoundTime = get_cvar_pointer("mp_roundtime");

register_cvar("amx_drstats_chat_prefix", "[Speedrun]");
register_cvar("amx_drstats_top15_page", "");

register_logevent( "eventRoundEnd",2, "1=Round_End");
register_logevent( "eventRoundStart",2, "1=Round_Start");

register_forward(FM_PlayerPreThink, "fwPreThink", 1);
RegisterHam(Ham_Spawn, "player", "fwSpawn", 1);
register_touch(gszFinish, "player", "fwTouch");
register_touch("player", gszFinish, "fwTouch2");
register_think(gszFinish, "fwThink");

register_clcmd("dr_finish", "cmdFinish", ADMIN_CFG, ": spawn finish round");

register_fullclcmd("rank", "showRank");
register_fullclcmd("top15", "showTop15");

register_fullclcmd("last", "cmdLast");
register_fullclcmd("best", "cmdBest");

gfwCreateFinish = CreateMultiForward("fwFinishCreate", ET_STOP, FP_CELL, FP_ARRAY, FP_CELL);
gfwFinished = CreateMultiForward("fwPlayerFinished", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL);
gfwStarted = CreateMultiForward("fwPlayerStarted", ET_IGNORE, FP_CELL);

giMaxPlayers = get_maxplayers();
}
public plugin_precache(){
gsprite = precache_model("sprites/white.spr");
}

public plugin_cfg(){
MySQL_Init();

get_cvar_string("amx_drstats_chat_prefix", gszChatPrefix, charsmax(gszChatPrefix));
get_cvar_string("amx_drstats_top15_page", gszTop15Redirect, charsmax(gszTop15Redirect));
}

public plugin_natives(){
register_library("DeathrunStats");
register_native("playerFinished", "_playerFinished", 1);
}
public _playerFinished(id){
fwFinished(id);
}
public plugin_end(){
if(gbEntityMoved)
saveFinishOrigin();
SQL_FreeHandle(gTuple);
}


public client_putinserver(id){
if(is_user_bot(id) || is_user_hltv(id))
return;

loadPlayerId(id);
}
public client_authorized_db(id, pid){
giPid[id] = pid;
gbAuthorized[id] = true;

giPlayedTime[id] = 0;
giBestTime[id] = 0;
giPlayedGames[id] = 0;
giDeaths[id] = 0;

loadRunnerData(id);
}
public client_connect(id){
gbAuthorized[id] = false;
giPid[id] = 0;
giLastTime[id] = 0;
}


public client_disconnect(id){
saveRunnerData(id);
}



loadRunnerData(id){
if(!gbAuthorized[id]) return;

new data[1];
data[0] = id;

formatex(gszQuery, charsmax(gszQuery), "SELECT * FROM `results` WHERE id=%d && mid=%d", giPid[id], gMid);
SQL_ThreadQuery(gTuple, "handleLoadData", gszQuery, data, sizeof(data));
}
getPlayerDeaths(id){
return giDeaths[id]+get_user_deaths(id);
}

getPlayedTime(id){
return giPlayedTime[id] + get_user_time(id, 1);
}

getRunningTime(id){
return floatround( (get_gametime()-gfStartRun[id])*1000, floatround_ceil);
}

saveRunnerData(id, updateBest = 0){
if(!gbAuthorized[id]) return;

if(updateBest){
giBestTime[id] = updateBest;
get_time("%Y-%m-%d %H:%M:%S", gszRecordTime[id], charsmax(gszRecordTime[]));
}

formatex(gszQuery, charsmax(gszQuery),
"UPDATE `results` SET besttime=%d, games=%d, playedtime=%d, deaths=%d, recorddate='%s' \
WHERE id=%d && mid=%d",
giBestTime[id], giPlayedGames[id], getPlayedTime(id), getPlayerDeaths(id), gszRecordTime[id],
giPid[id], gMid);
SQL_ThreadQuery(gTuple, "handleStandard", gszQuery);
}
public eventRoundStart(){
new Float:fRoundTime = get_pcvar_float(gcvarRoundTime)*60;
gfEndRoundTime = get_gametime()+fRoundTime;
}
public eventRoundEnd(){
for(new i=1;i<33;i++)
if(is_user_connected(i))
saveRunnerData(i);
}

public fwSpawn(id){
if(!is_user_alive(id) || !gbAuthorized[id])
return HAM_IGNORED;

if(!gEntFinish){
client_print(id, print_chat, "%L", id, "FINISH_NOT_EXISTS");
if(get_user_flags(id)&ADMIN_CFG)
client_print(id, print_chat, "%L", id, "BUT_YOU_CAN_SPAWN_IT");
}
gbFinished[id] = false;
gfStartRun[id] = -1.0;

if(cs_get_user_team(id) == CS_TEAM_CT){
gfStartRun[id] = get_gametime();

new iRet;
ExecuteForward(gfwStarted, iRet, id);
}

return HAM_IGNORED;
}
show_status(id, const szMsg[], any:...){
new szStatus[128];
vformat(szStatus, 127, szMsg, 3);

static msgStatusText=0;
if(!msgStatusText)
msgStatusText = get_user_msgid("StatusText");

message_begin(MSG_ONE_UNRELIABLE, msgStatusText, _, id);
write_byte(0);
write_string(szStatus);
message_end();
}
Send_RoundTime(id, iTime){
static msgRoundTime=0;
if(!msgRoundTime)
msgRoundTime = get_user_msgid("RoundTime");

message_begin(MSG_ONE_UNRELIABLE, msgRoundTime, _, id);
write_short(iTime);
message_end();
}
hideTime(id){
if(get_pcvar_num(gcvarTimerType)){
Send_RoundTime(id, floatround(gfEndRoundTime - get_gametime()));
}else{
show_status(id, "");
}
}
displayTime(id, iTime){
if(get_pcvar_num(gcvarTimerType)){
Send_RoundTime(id, iTime);
}else{
show_status(id, "%L: %d:%02ds", id, "WORD_TIME", iTime/60, iTime%60);
}
}
public fwPreThink(id){
if(!is_user_alive(id) || gfStartRun[id] <= 0.0)
return FMRES_IGNORED;

new iTimer = get_pcvar_num(gcvarTimer);
if(!iTimer)
return FMRES_IGNORED;

if(iTimer == 2 && !(pev(id, pev_button) & IN_SCORE)){
if(pev(id, pev_oldbuttons) & IN_SCORE)
hideTime(id);
return FMRES_IGNORED;
}

static Float:fNow;

if(!gbFinished[id]){
fNow = get_gametime();

if((fNow-gfLastInfo[id]) <= 0.5) return FMRES_IGNORED;

displayTime(id, getRunningTime(id) / 1000);
}
return FMRES_IGNORED;
}

public cmdBest(id){
if(!gbAuthorized[id]){
ColorChat(id, GREEN, "%s^x01 %L", gszChatPrefix, id, "NOT_AVAILABLE_NOW");
return PLUGIN_CONTINUE;
}

if(giBestTime[id] == 0)
ColorChat(id, GREEN, "%s^x01 %L", gszChatPrefix, id, "NEVER_REACH_FINISH");
else{
new szTime[32];
getFormatedTime(giBestTime[id], szTime, charsmax(szTime));
ColorChat(id, GREEN, "%s^x01 %L: ^x04 %s", gszChatPrefix, id, "YOUR_BEST_TIME", szTime);
}
return PLUGIN_CONTINUE;
}

public cmdLast(id){
if(!gbAuthorized[id]){
ColorChat(id, GREEN, "%s^x01 %L", gszChatPrefix, id, "NOT_AVAILABLE_NOW");
return PLUGIN_CONTINUE;
}

if(giLastTime[id] == 0)
ColorChat(id, GREEN, "%s^x01 %L", gszChatPrefix, id, "NEVER_REACH_FINISH");
else{
new szTime[32];
getFormatedTime(giLastTime[id], szTime, charsmax(szTime));
ColorChat(id, GREEN, "%s^x01 %L: ^x04 %s", gszChatPrefix, szTime, id, "YOUR_LAST_TIME", szTime);
}
return PLUGIN_CONTINUE;
}

printInfo(id, const szInfo[], ...){
new printResult = get_pcvar_num(gcvarPrintResult);
if(printResult == 0) return;

new szMsg[64];
vformat(szMsg, charsmax(szMsg), szInfo, 3);

if(printResult == 1){
show_dhudmessage(id, "%s", szMsg);
client_print(id, print_console, "%s", szMsg);
}
else if(printResult == 2){
ColorChat(id, GREEN, "%s^x01 %s", gszChatPrefix, szMsg);
}
}

public fwFinished(id){
if(!is_user_alive(id))
return;

new bool:record=false;

new iTime = getRunningTime(id);
giLastTime[id] = iTime;
gbFinished[id] = true;

new szTime[32];
getFormatedTime(iTime, szTime, charsmax(szTime));

set_dhudmessage(42, 43, 255, -1.0, 0.6, 1, 6.0, 5.0, 0.0, 0.0);
printInfo(id, "%L: %s", id, "RUNNING_TIME", szTime);

if(giBestTime[id] == 0){
set_dhudmessage(255, 42, 255, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
printInfo(id, "%L", id, "RUNNING_FIRST_FINISH");

saveRunnerData(id, iTime);
}
else if(giBestTime[id] > iTime){
getFormatedTime(giBestTime[id]-iTime, szTime, charsmax(szTime));

set_dhudmessage(255, 42, 42, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
printInfo(id, "%L: -%s!", id, "RUNNING_OWN_RECORD", szTime);

saveRunnerData(id, iTime);
}else if(giBestTime[id] < iTime){
getFormatedTime(iTime-giBestTime[id], szTime, charsmax(szTime));

set_dhudmessage(120, 120, 120, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
printInfo(id, "%L: +%s", id, "RUNNING_OWN_RECORD", szTime);
}else{
set_dhudmessage(42, 255, 42, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
printInfo(id, "%L", id, "RUNNING_OWN_RECORD_EQUAL");
}

if(giBestTimeofMap == 0 || giBestTimeofMap>iTime){
giBestTimeofMap = iTime;

new szName[32];
get_user_name(id, szName, 31);
set_dhudmessage(42, 255, 42, -1.0, 0.8, 2, 6.0, 5.0, 0.0, 0.0);

for(new i=1;i<=giMaxPlayers;i++)
if(is_user_connected(i))
printInfo(i, "%L", i, "RUNNING_MAP_RECORD_BREAK", szName);

record = true;
}
if(giBestTimeofMap != 0 && giBestTimeofMap<iTime){
new szTime[32];
getFormatedTime(iTime-giBestTimeofMap, szTime, 31);
set_dhudmessage(120, 120, 120, -1.0, 0.8, 2, 6.0, 5.0, 0.0, 0.0);

printInfo(id, "%L: +%s", id, "RUNNING_MAP_RECORD", szTime);
}
hideTime(id)

new iRet;
ExecuteForward(gfwFinished, iRet, id, iTime, record);
}
Здравствуйте!
Решил установить старую статистику для Deathrun. Данные бд прописал, все скомпилировалось (через 182 компилировал) но сервер показывает, что плагин bad load и причина Load fails: Plugin uses an unknown function (name "geoip_code2_ex") - check your modules.ini.
Погуглив я пришел к выводу, что плагин будучи сам старым, использует geoip модуль тоже старый.
Есть ли у кого какие идеи, как решить проблему чтобы плагин все таки работал? Может, надо как-то заменить на более новый способ определения локации?

(прикрепил сам архив, может, инклуды оттуда пригодятся)
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
1,011
Реакции
416
Помог
66 раз(а)
3y6Hou_IIapukMaxep,
Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
#include <sqlx>
#include <geoip>
// #include <colorchat>
// #include <dhudmessage>

#define PLUGIN "Deathrun Stats"
#define VERSION "0.5"
#define AUTHOR "R3X"

new gszChatPrefix[32];
new gszTop15Redirect[128];

new gszMotd[1024];

new gszMapname[64];
new gMid


#pragma unused giGames
new giGames; //Poki co nie uzywana zmienna


new gszQuery[512];
new Handle:gTuple;

new gbAuthorized[33];
new giPid[33];

new giPlayedTime[33];
new giBestTime[33];
new giPlayedGames[33];
new giDeaths[33];
new gszRecordTime[33][32];
new giBestTimeofMap;

new Float:gfLastInfo[33];
new Float:gfStartRun[33];
new giLastTime[33];
new bool:gbFinished[33];

new gEntFinish = 0;
new bool:gbEntityMoved = false;

new gcvarSave, gcvarTimer, gcvarTimerType, gcvarDrawFinish;
new gcvarPrintResult;
new gcvarRoundTime;

new Float:gfEndRoundTime;
new giMaxPlayers;

new gsprite;

getFormatedTime(iTime, szTime[], size){
    formatex(szTime, size, "%d:%02d.%03ds", iTime/60000, (iTime/1000)%60, iTime%1000);
}

#include "drstats/mysql.inl"
#include "drstats/finish.inl"
#include "drstats/stats.inl"

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_dictionary("deathrun_stats.txt");
    
    register_cvar("amx_drstats_host", "db3.myarena.ru");
    register_cvar("amx_drstats_user", "u21942_dr");
    register_cvar("amx_drstats_pass", "Anisa4ka");
    register_cvar("amx_drstats_db", "u21942_dr");
    
    gcvarSave = register_cvar("amx_drstats_save", "1");
    gcvarTimer = register_cvar("amx_drstats_timer", "1");
    gcvarTimerType = register_cvar("amx_drstats_timer_type", "0");
    gcvarDrawFinish = register_cvar("amx_drstats_draw_finish", "1");
    
    gcvarPrintResult = register_cvar("amx_drstats_print_result", "1");
    //0-wcale
    //1-HUD+konsola
    //2-chat
    
    gcvarRoundTime = get_cvar_pointer("mp_roundtime");
    
    register_cvar("amx_drstats_chat_prefix", "[Speedrun]");
    register_cvar("amx_drstats_top15_page", "");
    
    register_logevent( "eventRoundEnd",2, "1=Round_End");
    register_logevent( "eventRoundStart",2, "1=Round_Start");
    
    register_forward(FM_PlayerPreThink, "fwPreThink", 1);
    RegisterHam(Ham_Spawn, "player", "fwSpawn", 1);
    register_touch(gszFinish, "player", "fwTouch");
    register_touch("player", gszFinish, "fwTouch2");
    register_think(gszFinish, "fwThink");
    
    register_clcmd("dr_finish", "cmdFinish", ADMIN_CFG, ": spawn finish round");
    
    register_fullclcmd("rank", "showRank");
    register_fullclcmd("top15", "showTop15");
    
    register_fullclcmd("last", "cmdLast");
    register_fullclcmd("best", "cmdBest");
    
    gfwCreateFinish = CreateMultiForward("fwFinishCreate", ET_STOP, FP_CELL, FP_ARRAY, FP_CELL);
    gfwFinished = CreateMultiForward("fwPlayerFinished", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL);
    gfwStarted = CreateMultiForward("fwPlayerStarted", ET_IGNORE, FP_CELL);
    
    giMaxPlayers = get_maxplayers();
}
public plugin_precache(){
    gsprite = precache_model("sprites/white.spr");
}

public plugin_cfg(){
    MySQL_Init();
    
    get_cvar_string("amx_drstats_chat_prefix", gszChatPrefix, charsmax(gszChatPrefix));
    get_cvar_string("amx_drstats_top15_page", gszTop15Redirect, charsmax(gszTop15Redirect));
}

public plugin_natives(){
    register_library("DeathrunStats");
    register_native("playerFinished", "_playerFinished", 1);
}
public _playerFinished(id){
    fwFinished(id);
}
public plugin_end(){
    if(gbEntityMoved)
        saveFinishOrigin();
    SQL_FreeHandle(gTuple);
}


public client_putinserver(id){
    if(is_user_bot(id) || is_user_hltv(id))
        return;
        
    loadPlayerId(id);
}
public client_authorized_db(id, pid){
    giPid[id] = pid;
    gbAuthorized[id] = true;
    
    giPlayedTime[id] = 0;
    giBestTime[id] = 0;
    giPlayedGames[id] = 0;
    giDeaths[id] = 0;

    loadRunnerData(id);
}
public client_connect(id){
    gbAuthorized[id] = false;
    giPid[id] = 0;
    giLastTime[id] = 0;
}


public client_disconnected(id){
    saveRunnerData(id);
}



loadRunnerData(id){
    if(!gbAuthorized[id]) return;
    
    new data[1];
    data[0] = id;
    
    formatex(gszQuery, charsmax(gszQuery), "SELECT * FROM `results` WHERE id=%d && mid=%d", giPid[id], gMid);
    SQL_ThreadQuery(gTuple, "handleLoadData", gszQuery, data, sizeof(data));
}
getPlayerDeaths(id){
    return giDeaths[id]+get_user_deaths(id);
}

getPlayedTime(id){
    return giPlayedTime[id] + get_user_time(id, 1);
}

getRunningTime(id){
    return floatround( (get_gametime()-gfStartRun[id])*1000, floatround_ceil);
}

saveRunnerData(id, updateBest = 0){
    if(!gbAuthorized[id]) return;
    
    if(updateBest){
        giBestTime[id] = updateBest;
        get_time("%Y-%m-%d %H:%M:%S", gszRecordTime[id], charsmax(gszRecordTime[]));
    }
        
    formatex(gszQuery, charsmax(gszQuery),
    "UPDATE `results` SET besttime=%d, games=%d, playedtime=%d, deaths=%d, recorddate='%s' \
    WHERE id=%d && mid=%d",
        giBestTime[id], giPlayedGames[id], getPlayedTime(id), getPlayerDeaths(id), gszRecordTime[id],
        giPid[id], gMid);
    SQL_ThreadQuery(gTuple, "handleStandard", gszQuery);
}
public eventRoundStart(){
    new Float:fRoundTime = get_pcvar_float(gcvarRoundTime)*60;
    gfEndRoundTime = get_gametime()+fRoundTime;
}
public eventRoundEnd(){
    for(new i=1;i<33;i++)
        if(is_user_connected(i))
            saveRunnerData(i);
}

public fwSpawn(id){
    if(!is_user_alive(id) || !gbAuthorized[id])
        return HAM_IGNORED;
        
    if(!gEntFinish){
        client_print(id, print_chat, "%L", id, "FINISH_NOT_EXISTS");
        if(get_user_flags(id)&ADMIN_CFG)
            client_print(id, print_chat, "%L", id, "BUT_YOU_CAN_SPAWN_IT");
    }
    gbFinished[id] = false;
    gfStartRun[id] = -1.0;
    
    if(cs_get_user_team(id) == CS_TEAM_CT){
        gfStartRun[id] = get_gametime();
        
        new iRet;
        ExecuteForward(gfwStarted, iRet, id);
    }
        
    return HAM_IGNORED;
}
show_status(id, const szMsg[], any:...){
    new szStatus[128];
    vformat(szStatus, 127, szMsg, 3);
    
    static msgStatusText=0;
    if(!msgStatusText)
        msgStatusText = get_user_msgid("StatusText");
        
    message_begin(MSG_ONE_UNRELIABLE, msgStatusText, _, id);
    write_byte(0);
    write_string(szStatus);
    message_end();
}
Send_RoundTime(id, iTime){
    static msgRoundTime=0;
    if(!msgRoundTime)
        msgRoundTime = get_user_msgid("RoundTime");
        
    message_begin(MSG_ONE_UNRELIABLE, msgRoundTime, _, id);
    write_short(iTime);
    message_end();
}
hideTime(id){
    if(get_pcvar_num(gcvarTimerType)){
        Send_RoundTime(id, floatround(gfEndRoundTime - get_gametime()));
    }else{
        show_status(id, "");
    }
}
displayTime(id, iTime){
    if(get_pcvar_num(gcvarTimerType)){
        Send_RoundTime(id, iTime);
    }else{
        show_status(id, "%L: %d:%02ds", id, "WORD_TIME", iTime/60, iTime%60);
    }
}
public fwPreThink(id){
    if(!is_user_alive(id) || gfStartRun[id] <= 0.0)
        return FMRES_IGNORED;
    
    new iTimer = get_pcvar_num(gcvarTimer);
    if(!iTimer)
        return FMRES_IGNORED;
        
    if(iTimer == 2 && !(pev(id, pev_button) & IN_SCORE)){
        if(pev(id, pev_oldbuttons) & IN_SCORE)
            hideTime(id);
        return FMRES_IGNORED;
    }

    static Float:fNow;
        
    if(!gbFinished[id]){
        fNow = get_gametime();
        
        if((fNow-gfLastInfo[id]) <= 0.5) return FMRES_IGNORED;
        
        displayTime(id, getRunningTime(id) / 1000);
    }
    return FMRES_IGNORED;
}

public cmdBest(id){
    if(!gbAuthorized[id]){
        client_print_color(id, print_team_default, "%s^x01 %L", gszChatPrefix, id, "NOT_AVAILABLE_NOW");
        return PLUGIN_CONTINUE;
    }
    
    if(giBestTime[id] == 0)
        client_print_color(id, print_team_default, "%s^x01 %L", gszChatPrefix, id, "NEVER_REACH_FINISH");
    else{
        new szTime[32];
        getFormatedTime(giBestTime[id], szTime, charsmax(szTime));
        client_print_color(id, print_team_default, "%s^x01 %L: ^x04 %s", gszChatPrefix, id, "YOUR_BEST_TIME", szTime);
    }
    return PLUGIN_CONTINUE;
}

public cmdLast(id){
    if(!gbAuthorized[id]){
        client_print_color(id, print_team_default, "%s^x01 %L", gszChatPrefix, id, "NOT_AVAILABLE_NOW");
        return PLUGIN_CONTINUE;
    }
    
    if(giLastTime[id] == 0)
        client_print_color(id, print_team_default, "%s^x01 %L", gszChatPrefix, id, "NEVER_REACH_FINISH");
    else{
        new szTime[32];
        getFormatedTime(giLastTime[id], szTime, charsmax(szTime));
        client_print_color(id, print_team_default, "%s^x01 %L: ^x04 %s", gszChatPrefix, szTime, id, "YOUR_LAST_TIME", szTime);
    }
    return PLUGIN_CONTINUE;
}

printInfo(id, const szInfo[], ...){
    new printResult = get_pcvar_num(gcvarPrintResult);
    if(printResult == 0) return;
    
    new szMsg[64];
    vformat(szMsg, charsmax(szMsg), szInfo, 3);
    
    if(printResult == 1){
        show_dhudmessage(id, "%s", szMsg);
        client_print(id, print_console, "%s", szMsg);
    }
    else if(printResult == 2){
        client_print_color(id, print_team_default, "%s^x01 %s", gszChatPrefix, szMsg);
    }
}

public fwFinished(id){
    if(!is_user_alive(id))
        return;
        
    new bool:record=false;
    
    new iTime = getRunningTime(id);
    giLastTime[id] = iTime;
    gbFinished[id] = true;
    
    new szTime[32];
    getFormatedTime(iTime, szTime, charsmax(szTime));
    
    set_dhudmessage(42, 43, 255, -1.0, 0.6, 1, 6.0, 5.0, 0.0, 0.0);
    printInfo(id, "%L: %s", id, "RUNNING_TIME", szTime);
    
    if(giBestTime[id] == 0){
        set_dhudmessage(255, 42, 255, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
        printInfo(id, "%L", id, "RUNNING_FIRST_FINISH");

        saveRunnerData(id, iTime);
    }
    else if(giBestTime[id] > iTime){
        getFormatedTime(giBestTime[id]-iTime, szTime, charsmax(szTime));
        
        set_dhudmessage(255, 42, 42, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
        printInfo(id, "%L: -%s!", id, "RUNNING_OWN_RECORD", szTime);
        
        saveRunnerData(id, iTime);
    }else if(giBestTime[id] < iTime){
        getFormatedTime(iTime-giBestTime[id], szTime, charsmax(szTime));
        
        set_dhudmessage(120, 120, 120, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
        printInfo(id, "%L: +%s", id, "RUNNING_OWN_RECORD", szTime);
    }else{
        set_dhudmessage(42, 255, 42, -1.0, 0.7, 0, 6.0, 5.0, 0.0, 0.0);
        printInfo(id, "%L", id, "RUNNING_OWN_RECORD_EQUAL");
    }

    if(giBestTimeofMap == 0 || giBestTimeofMap>iTime){
        giBestTimeofMap = iTime;
        
        new szName[32];
        get_user_name(id, szName, 31);
        set_dhudmessage(42, 255, 42, -1.0, 0.8, 2, 6.0, 5.0, 0.0, 0.0);
        
        for(new i=1;i<=giMaxPlayers;i++)
            if(is_user_connected(i))
                printInfo(i, "%L", i, "RUNNING_MAP_RECORD_BREAK", szName);
                
        record = true;
    }
    if(giBestTimeofMap != 0 && giBestTimeofMap<iTime){
        new szTime[32];
        getFormatedTime(iTime-giBestTimeofMap, szTime, 31);
        set_dhudmessage(120, 120, 120, -1.0, 0.8, 2, 6.0, 5.0, 0.0, 0.0);
        
        printInfo(id, "%L: +%s", id, "RUNNING_MAP_RECORD", szTime);
    }
    hideTime(id)
    
    new iRet;
    ExecuteForward(gfwFinished, iRet, id, iTime, record);
}
Код:
#include <amxmodx>
#include <amxmisc>

new Float:gfAntiFlood[33];

register_fullclcmd(const szName[], const szFunction[]){
    new szName2[64];
    
    register_clcmd(szName, szFunction);
    
    formatex(szName2, charsmax(szName2), "say /%s", szName);
    register_clcmd(szName2, szFunction);
    
    formatex(szName2, charsmax(szName2), "say_team /%s", szName);
    register_clcmd(szName2, szFunction);
}
STDRES(){
    new szCmd[4];
    read_argv(0, szCmd, 3);
    return equal(szCmd, "say")?PLUGIN_CONTINUE:PLUGIN_HANDLED;
}
flood(id){
    new fl = 0;
    new Float:fNow = get_gametime()
    if((fNow-gfAntiFlood[id]) < 1.0)
        fl = 1
        
    gfAntiFlood[id] = fNow;
    return fl;
}
public showRank(id){
    if(flood(id)){
        client_print(id, print_center, "%L", id, "STATS_TRY_LATER");
        return PLUGIN_HANDLED;
    }
        
    if(giBestTime[id] == 0)
        client_print_color(id, print_team_default, "%s^x01 %L", gszChatPrefix, id, "NEVER_REACH_FINISH");
    else{
        client_print(id, print_chat, "%L", id, "STATS_LOADING");
        loadRank(id, "_showRank");
    }
    
    return STDRES();
}
public _showRank(id, rank){
    new iTime = giBestTime[id];
    
    new szTime[32];
    getFormatedTime(iTime, szTime, charsmax(szTime));
    
    client_print_color(id, print_team_default, "%s^x01 %L ^x04 %s", gszChatPrefix, id, "STATS_RANKED", rank, szTime);
}

public showTop15(id){
    if(flood(id)){
        client_print(id, print_center, "%L", id, "STATS_TRY_LATER");
        return PLUGIN_HANDLED;
    }
    
    if(gszTop15Redirect[0])
        show_motd(id, gszTop15Redirect, "Top15");
    else{
        client_print(id, print_chat, "%L", id, "STATS_LOADING");
        loadNshowTop15(id);
    }
    
    return STDRES();
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
 
Сообщения
147
Реакции
8
present, компилить через 1.9.0? Если да, то и вправду скомпилировалось через него, но проблема осталась, пишет все то же самое, посылая в модуль
 
Сообщения
64
Реакции
31
Помог
1 раз(а)
ковырнул плагин, и чет не понял на кой....

Код:
getNationality(id, const szIP[], szCode[5]){
    new szTemp[3];
    if(geoip_code2_ex( szIP, szTemp)){
        copy(szCode, 4, szTemp);
    }
    else{
        get_user_info(id, "lang", szCode, 2);
        SQL_PrepareString(szCode, szCode, 4);
    }
}
у нас что PHP престал считывать страну по ip, зачем это инфа должна идти от сервера
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу