Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

26 страниц V  « 19 20 21 ... 24 25 »

Army Ranks v 1.3 от 24.10.2012

Статус пользователя Paster
сообщение 15.12.2012, 20:42
Сообщение #381


Стаж: 19 лет

Сообщений: 491
Благодарностей: 64
Полезность: 139

Если учитывать чего не хватает, главное сделать возможность вести статистику по нику для ностим игроков, по id для стим игроков.
Ну и есть идея добавить колонку в БД пароль для ностим игроков, к-ю редактировать мог бы админ и ставить по запросам пароль на конкретный ник, если колонка пустая то пароль не учитывается...
По идее дописывать веб морду для администрирования неоправдано, но вручную любой админ спасобен будет добавлять пароль в поле пароля...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
underwoker
сообщение 15.12.2012, 21:09
Сообщение #382
Стаж: 56 лет


Благодарностей:

Вопрос, какая версия нормально сохраняет на данный момент в БД?
1.2 фикс 3 или 1.3?
Перейти в начало страницы     
   + Цитировать сообщение
Статус пользователя DraconKCH
сообщение 15.12.2012, 22:07
Сообщение #383
Стаж: 17 лет

Сообщений: 156
Благодарностей: 74
Полезность: 373

Цитата(Paster @ 16.12.2012, 0:42) *
Если учитывать чего не хватает, главное сделать возможность вести статистику по нику для ностим игроков, по id для стим игроков.
Ну и есть идея добавить колонку в БД пароль для ностим игроков

это не особо сложно
надо в функциях
load_data(id)
next_load_data(id,data[],len)
register_player(id,data[])
save_usr(id)

все строки
Код
new szName[33];
get_user_name(id,szName,32);

заменить на
Код
new szName[33];
if(is_user_steam(id))
    get_user_authid(id,szName,32);
else
    get_user_name(id,szName,32);

и в конец плагина добавить
Код
stock bool:is_user_steam(id)
{
        static dp_pointer
        if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
        {
            server_cmd("dp_clientinfo %d", id)
            server_exec()
            return (get_pcvar_num(dp_pointer) == 2) ? true : false
        }
        return false
}


так же можно добавить и revemu (т.е. последние патчи на нон стим)
просто надо строку
return (get_pcvar_num(dp_pointer) == 2) ? true : false
представить как
return (get_pcvar_num(dp_pointer) == 2 || get_pcvar_num(dp_pointer) == 4) ? true : false

вот =)
может автор возьмёт на заметку...
конечно должен быть установлен dproto
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя Paster
сообщение 15.12.2012, 22:47
Сообщение #384


Стаж: 19 лет

Сообщений: 491
Благодарностей: 64
Полезность: 139

Цитата(DraconKCH @ 15.12.2012, 22:07) *
это не особо сложно
надо в функциях
load_data(id)
next_load_data(id,data[],len)
register_player(id,data[])
save_usr(id)

все строки
Код
new szName[33];
get_user_name(id,szName,32);

заменить на
Код
new szName[33];
if(is_user_steam(id))
    get_user_authid(id,szName,32);
else
    get_user_name(id,szName,32);

и в конец плагина добавить
Код
stock bool:is_user_steam(id)
{
        static dp_pointer
        if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
        {
            server_cmd("dp_clientinfo %d", id)
            server_exec()
            return (get_pcvar_num(dp_pointer) == 2) ? true : false
        }
        return false
}


так же можно добавить и revemu (т.е. последние патчи на нон стим)
просто надо строку
return (get_pcvar_num(dp_pointer) == 2) ? true : false
представить как
return (get_pcvar_num(dp_pointer) == 2 || get_pcvar_num(dp_pointer) == 4) ? true : false

вот =)
может автор возьмёт на заметку...
конечно должен быть установлен dproto

Да ты прав! Вот собственно автору есть что фиксить )))

Отредактировал: Paster, - 16.12.2012, 16:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Copu4ek
сообщение 16.12.2012, 10:44
Сообщение #385
Стаж: 13 лет

Сообщений: 26
Благодарностей: 3
Полезность: < 0

Помогите решить проблему )
L 12/16/2012 - 01:05:58: [AMXX] [0] army_ranks.sma::next_load_data (line 491)
L 12/16/2012 - 01:05:58: [AMXX] [1] army_ranks.sma::load_data (line 392)
L 12/16/2012 - 01:05:58: [AMXX] [2] army_ranks.sma::client_putinserver (line 271)
L 12/16/2012 - 01:29:35: Start of error session.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KuSSJlbiu
сообщение 18.12.2012, 19:20
Сообщение #386


Стаж: 15 лет

Сообщений: 38
Благодарностей: 7
Полезность: 43

обновы не будет,верно понял?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя drivemaster
сообщение 20.12.2012, 12:29
Сообщение #387


Стаж: 17 лет

Сообщений: 266
Благодарностей: 79
Полезность: 246

Цитата(KuSSJlbiu @ 18.12.2012, 19:20) *
обновы не будет,верно понял?

Ответ уже был... Автор написал, примерный срок январь.

Отредактировал: drivemaster, - 20.12.2012, 12:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DraconKCH
сообщение 20.12.2012, 21:09
Сообщение #388
Стаж: 17 лет

Сообщений: 156
Благодарностей: 74
Полезность: 373

Хорошо бы, чтобы автор перешёл на Thread в mysql =) понизило бы нагрузку. А так здорово, что не забросил проект, учитывая его историю.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mortalcs
сообщение 26.12.2012, 20:06
Сообщение #389
Стаж: 14 лет

Сообщений: 1145
Благодарностей: 607
Полезность: 1025

Нубо вопрос
Как дать/забрать фраги,звания
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ASTIN
сообщение 26.12.2012, 20:08
Сообщение #390


Стаж: 18 лет

Сообщений: 160
Благодарностей: 20
Полезность: 88

Цитата(mortalcs @ 26.12.2012, 20:06) *
Нубо вопрос
Как дать/забрать фраги,звания


amx_setlevel
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Copu4ek
сообщение 28.12.2012, 15:40
Сообщение #391
Стаж: 13 лет

Сообщений: 26
Благодарностей: 3
Полезность: < 0

Ребят помогите пожалуйста
в логах пишет -
Код
L 12/28/2012 - 01:07:39: [AMXX] Run time error 4: index out of bounds
L 12/28/2012 - 01:07:39: [AMXX]    [0] army_ranks.sma::next_load_data (line 492)
L 12/28/2012 - 01:07:39: [AMXX]    [1] army_ranks.sma::load_data (line 393)
L 12/28/2012 - 01:07:39: [AMXX]    [2] army_ranks.sma::client_putinserver (line 272)
L 12/28/2012 - 01:10:26: Start of error session.


помогите решить. плагин army_rank 1.3
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MaZzai
сообщение 29.12.2012, 20:48
Сообщение #392


Стаж: 17 лет

Сообщений: 2659
Благодарностей: 1411
Полезность: 1024

Сделайте 2 квара, которые задают количество +опыта при HS и простом убийстве.
То есть, сейчас за HS - +3 , а за простое - +1.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sweet
сообщение 30.12.2012, 1:53
Сообщение #393
Стаж: 15 лет

Сообщений: 1920
Благодарностей: 597
Полезность: 431

Стабильную, рабочую версию кто может скинуть? :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя stefkone
сообщение 30.12.2012, 2:03
Сообщение #394


Иконка группы

Стаж: 19 лет

Сообщений: 1711
Благодарностей: 1130
Полезность: 1068

Цитата(sweet @ 30.12.2012, 3:53) *
Стабильную, рабочую версию кто может скинуть? :)

Линк на веб статиску этого плагина может кто нибудь дать, хочу пример глянуть.. blush2.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MaZzai
сообщение 30.12.2012, 13:13
Сообщение #395


Стаж: 17 лет

Сообщений: 2659
Благодарностей: 1411
Полезность: 1024

Цитата(stefkone @ 30.12.2012, 2:03) *
Линк на веб статиску этого плагина может кто нибудь дать, хочу пример глянуть.. blush2.gif

Не совсем линк,но я думаю, ты и по скрину поймешь
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя Copu4ek
сообщение 31.12.2012, 7:51
Сообщение #396
Стаж: 13 лет

Сообщений: 26
Благодарностей: 3
Полезность: < 0

Mazzai помоги )))

L 12/28/2012 - 01:07:39: [AMXX] Run time error 4: index out of bounds
L 12/28/2012 - 01:07:39: [AMXX] [0] army_ranks.sma::next_load_data (line 492)
L 12/28/2012 - 01:07:39: [AMXX] [1] army_ranks.sma::load_data (line 393)
L 12/28/2012 - 01:07:39: [AMXX] [2] army_ranks.sma::client_putinserver (line 272)
L 12/28/2012 - 01:10:26: Start of error session.

army_rank 1.3
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Arctiq
сообщение 31.12.2012, 13:17
Сообщение #397


Стаж: 14 лет
Город: Балашиха

Сообщений: 103
Благодарностей: 52
Полезность: 384

Цитата(Copu4ek @ 31.12.2012, 7:51) *
Mazzai помоги )))

L 12/28/2012 - 01:07:39: [AMXX] Run time error 4: index out of bounds
L 12/28/2012 - 01:07:39: [AMXX] [0] army_ranks.sma::next_load_data (line 492)
L 12/28/2012 - 01:07:39: [AMXX] [1] army_ranks.sma::load_data (line 393)
L 12/28/2012 - 01:07:39: [AMXX] [2] army_ranks.sma::client_putinserver (line 272)
L 12/28/2012 - 01:10:26: Start of error session.

army_rank 1.3


ты ничего не изменял в исходнике?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sweet
сообщение 31.12.2012, 14:01
Сообщение #398
Стаж: 15 лет

Сообщений: 1920
Благодарностей: 597
Полезность: 431

Цитата(Arctiq @ 31.12.2012, 15:17) *
ты ничего не изменял в исходнике?


Стабильную, пожалуйста, в 1-ый пост или сюда.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Copu4ek
сообщение 2.1.2013, 0:32
Сообщение #399
Стаж: 13 лет

Сообщений: 26
Благодарностей: 3
Полезность: < 0

Цитата(Arctiq @ 31.12.2012, 15:17) *
ты ничего не изменял в исходнике?

Исходник
/*
Обещанного три года ждут ;)
*/
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
//
#define PLUGIN "Army Ranks"
#define VERSION "1.3"
#define AUTHOR "Arctic"
#pragma tabsize 0
#define ADM_MENU ADMIN_IMMUNITY // menu access flag
//
new g_vault;
new Handle:g_SqlTuple;
new g_Error[512];
enum _:PlData
{
gId,gExp,gLevel,gTempKey
};
new UserData[33][PlData];
new gMessage[256];
new g_MsgHud,MaxPlayers,levelUp[33],gSayText;
new bool:restr_blocked;
new const gRankNames[][] =
{
"I_0","I_1","I_2","I_3","I_4","I_5","I_6","I_7","I_8","I_9","I_10","I_11","I_12","I_13","I_14",
"I_15","I_16","I_17","I_18","I_19","I_20"
};
new const gLevels[] =
{
0,15,30,60,100,180,350,750,999,1500,2200,2800,3200,3900,4500,5000,5500,6000,7000
,8000
};
new const gNades[][] =
{
{0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1}
}
new const restrict_bonus[][] =
{
"35hp",
"most_wanted",
"ka_wintershank"
};
new gRestrictMaps,gAdminGMsg,gBonusLevel,gFlash,gSmoke,gHe,gHpbylevel,gApbylevel,
gHideRadar,gArmyChat,gSaveType,gTableName,gHost,gUser,gPassword,gDbName,gSlash,
gTk,gLostXpTk,gLevelUpmsg,gAllChat//,gDeleteNullRow;
//
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("army_ranks",VERSION, FCVAR_SERVER | FCVAR_SPONLY);
set_cvar_string("army_ranks",VERSION);
//
gRestrictMaps = register_cvar( "restrict_maps", "0");// вкл запрет бонусов на карте.
gBonusLevel = register_cvar( "level_bonus", "0");// вкл оружие при получении уровня.
gFlash = register_cvar( "flash_nades", "1");// вкл бонуса флешек
gSmoke = register_cvar( "smoke_nades", "0");// вкл бонуса дымовых
gHe = register_cvar( "he_nades", "0");// вкл бонуса осколочных
gHpbylevel = register_cvar( "hp_by_level", "0");// кол-во хп, которое дается за лвл, если = 0 - то выкл
gApbylevel = register_cvar( "ap_by_level", "0");// кол-во брони, которое дается за лвл, если = 0 - то выкл
gHideRadar = register_cvar( "hide_radar", "0");// скрывать радар у игрока
gArmyChat = register_cvar( "army_chat", "1");// использовать чат плагина, то есть приставка в чате, цвет сообщ. для админа
gAdminGMsg = register_cvar( "admin_color", "1");// 1 = сообщ.админа зеленое,0 = желтое, 2 = цвета команды
gSaveType = register_cvar( "save_type", "0");// 0 - nvault, 1- mysql.
gSlash = register_cvar( "slash_messages", "1");// не отображать команды со слэшем
gTk = register_cvar( "team_kill_lost_xp", "0");// терять exp при тимкилле
gLostXpTk = register_cvar( "lost_xp_val", "0");// кол-во теряемых exp при тк
gLevelUpmsg = register_cvar( "level_up_msg", "2");// сообщение при лвл-апе игрока : 1- вкл (всем), 2 - только игроку
gAllChat = register_cvar( "all_chat", "1");// 1 - чат для всех(метвые и живые), 0-живые не видят чат мертвых и наоборот
// для mysql
gHost = register_cvar( "mysql_host", "127.0.0.1"); // host
gUser = register_cvar( "mysql_user", "root"); // username
gPassword = register_cvar( "mysql_password", "qwerty"); // password
gDbName = register_cvar( "mysql_db_name", "test"); // database name
gTableName = register_cvar( "mysql_table_name", "army_ranks"); // название таблицы mysql
//
register_logevent( "EventRoundStart", 2, "1=Round_Start" );
set_task(1.0,"Info",_,_,_, "b")
register_event( "DeathMsg","EventDeath","a");
register_message(get_user_msgid("SayText"), "msg_SayText");
gSayText = get_user_msgid ("SayText");
//
g_MsgHud = CreateHudSyncObj();
MaxPlayers = get_maxplayers();
register_dictionary("army.txt" );
//
if(get_pcvar_num(gRestrictMaps))
{
new szMapName[64];
get_mapname(szMapName,63);
for(new a = 0; a < sizeof restrict_bonus; a++)
{
if(equal(szMapName, restrict_bonus[a]))
{
restr_blocked = true;
log_amx("[army ranks] weapon menu is blocked on map [%s].",restrict_bonus[a]);
break;
} else {
restr_blocked = false;
}
}
}
//
switch(get_pcvar_num(gSaveType))
{
case 0:
{
g_vault = nvault_open("army_ranks");
}
case 1:
{
set_task(0.1, "sql_init");
}
default:
{
g_vault = nvault_open("army_ranks");
}
}
//
if(get_pcvar_num(gArmyChat))
{
register_clcmd("say", "hookSay")
register_clcmd("say_team", "hookSayTeam");
}
register_clcmd("amx_setlevel","set_level_menu");
}
public plugin_cfg()
{
new szCfgDir[64], szFile[192];
get_configsdir(szCfgDir, charsmax(szCfgDir));
formatex(szFile,charsmax(szFile),"%s/army_ranks.cfg",szCfgDir);
if(file_exists(szFile))
server_cmd("exec %s", szFile);
}

public set_level_menu(id)
{
if(get_user_flags(id) & ADM_MENU)
{
UserData[id][gTempKey] = 0;
new players[32], num;
get_players(players, num)
new tempname[32], info[10];
new players_menu = menu_create("Выберите игрока :", "set_level_hl")
for(new i = 0; i < num; i++)
{
get_user_name(players[i], tempname, 31);
num_to_str(players[i], info, 9);
menu_additem(players_menu, tempname, info, 0);
}
menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, players_menu, 0);
}
return PLUGIN_CONTINUE
}
public set_level_hl(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], _access, callback;
menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback);
UserData[id][gTempKey] = str_to_num(data);
set_level_pl(id);
return PLUGIN_CONTINUE
}
public set_level_pl(id)
{
static szText[1024];
formatex(szText,charsmax(szText), "%L", id, "CHOOSE_RANKN");
new menu = menu_create( szText, "set_level_phl");
//======
for(new i = 1; i < sizeof(gRankNames); i++)
{
new szItem[100],lang[10],num[5];
format(lang,9,"I_%d",i);
format(num,4,"%d",i);
formatex(szItem,charsmax(szItem),"%L",id,lang);
menu_additem(menu,szItem,num);
}
//======
menu_setprop(menu, MPROP_BACKNAME, "Назад ");
menu_setprop(menu, MPROP_NEXTNAME, "Далее ");
menu_setprop(menu, MPROP_EXITNAME, "Выход ");
menu_display( id, menu,0);
return PLUGIN_CONTINUE;
}
public set_level_phl(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], _access, callback;
menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback);
new level = str_to_num(data);
if(UserData[id][gTempKey] >= 1 && UserData[id][gTempKey] <= 32)
{
UserData[UserData[id][gTempKey]][gLevel] = level;
UserData[UserData[id][gTempKey]][gExp] = gLevels[level-1];
new szName[2][32];
get_user_name(id, szName[0], 31);
get_user_name(UserData[id][gTempKey], szName[1], 31);
ColorChat(0,NORMAL,"%s give %L level to %s.",szName[0],LANG_PLAYER,gRankNames[level],szName[1])
} else {
set_level_menu(id);
}
UserData[id][gTempKey] = 0;
return PLUGIN_HANDLED;
}

//
public sql_init()
{
new szTableName[64],szHost[64],szUser[64],szPassword[64],szDbName[64],ErrorCode;
get_pcvar_string(gTableName,szTableName,63);
get_pcvar_string(gHost,szHost,63);
get_pcvar_string(gUser,szUser,63);
get_pcvar_string(gPassword,szPassword,63);
get_pcvar_string(gDbName,szDbName,63);
g_SqlTuple = SQL_MakeDbTuple(szHost,szUser,szPassword,szDbName);
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error);

new Handle:Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `%s`(`id` INT(10) NOT NULL AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`exp` INT(10) NOT NULL,`level` INT(10) NOT NULL,PRIMARY KEY (id));", szTableName)
if(!SQL_Execute(Queries))
{
SQL_QueryError(Queries,g_Error,charsmax(g_Error))
set_fail_state(g_Error);
}
SQL_QueryAndIgnore(SqlConnection, "DELETE FROM %s WHERE exp=0 and level=1;",szTableName); // 24.10.12
SQL_FreeHandle(Queries)
SQL_FreeHandle(SqlConnection);
}
//
public plugin_end()
{
switch(get_pcvar_num(gSaveType))
{
case 0:
{
nvault_close(g_vault);
}
case 1:
{
if(g_SqlTuple != Empty_Handle)
SQL_FreeHandle(g_SqlTuple);
}
default:
{
nvault_close(g_vault);
}
}
}
//
public client_putinserver(id) // путинсервер)
{
if(get_pcvar_num(gHideRadar))
client_cmd(id,"hideradar 1");

UserData[id] = UserData[0];
load_data(id);
}
//
public client_disconnect(id)
{
save_usr(id);
UserData[id] = UserData[0];
}
//
public check_level(id)
{
if(UserData[id][gLevel] <= 0)
UserData[id][gLevel] = 1;

if(UserData[id][gExp] < 0)
UserData[id][gExp] = 0;

while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]])
{
UserData[id][gLevel]++;
levelUp[id] = 1;
switch(get_pcvar_num(gLevelUpmsg))
{
case 1:
{
new szName[33];
get_user_name(id, szName, 32);
static buffer[192],len;
len = format(buffer, charsmax(buffer), "^4[^3Army Ranks^4]^1 %L ^4%s^1",LANG_PLAYER,"PLAYER",szName);
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL");
len += format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
ColorChat(0,NORMAL,buffer);
}
case 2:
{
new szName[33];
get_user_name(id, szName, 32);
static buffer[192],len;
len = format(buffer, charsmax(buffer), "^4[^3Army Ranks^4]^1 %L ^4%s^1",LANG_PLAYER,"PLAYER",szName);
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL");
len += format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
ColorChat(id,NORMAL,buffer);
}
}
}
}
public EventDeath()
{
new iKiller = read_data(1);
new iVictim = read_data(2);
new head = read_data(3);
if(iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) && UserData[iKiller][gLevel] <= 19)
{
// if tk?
if(get_pcvar_num(gTk) && get_user_team(iKiller) == get_user_team(iVictim))
{
UserData[iKiller][gExp] -= get_pcvar_num(gLostXpTk);
return PLUGIN_CONTINUE;
}
new weapon = get_user_weapon(iKiller);
UserData[iKiller][gExp] += 1;
if(weapon == CSW_KNIFE)
UserData[iKiller][gExp] += 3;

if(head)
UserData[iKiller][gExp] += 2;

if(weapon == CSW_HEGRENADE)
UserData[iKiller][gExp] += 1;

check_level(iKiller);
}
return PLUGIN_CONTINUE;
}
public EventRoundStart()
{
for(new id = 1; id <= MaxPlayers; id++)
{
if(is_user_alive(id) && is_user_connected(id))
{
if(restr_blocked)
return PLUGIN_CONTINUE;

if(get_pcvar_num(gFlash) && gNades[0][UserData[id][gLevel]])
give_item(id,"weapon_flashbang");

if(get_pcvar_num(gSmoke) && gNades[1][UserData[id][gLevel]])
give_item(id,"weapon_smokegrenade");

if(get_pcvar_num(gHe) && gNades[2][UserData[id][gLevel]])
give_item(id,"weapon_hegrenade");

if(get_pcvar_num(gHpbylevel) != 0)
set_user_health(id,get_user_health(id)+get_pcvar_num(gHpbylevel)*UserData[id][gL
evel]);

if(get_pcvar_num(gApbylevel) != 0)
set_user_armor(id,get_user_armor(id)+get_pcvar_num(gApbylevel)*UserData[id][gLev
el]);

if(levelUp[id] == 1 && get_pcvar_num(gBonusLevel))
{
GetWeapon(id);
levelUp[id] = 0;
}
}
}
return PLUGIN_CONTINUE;
}
////////// save
public load_data(id)
{
new szName[33];
get_user_name(id,szName,32);
switch(get_pcvar_num(gSaveType))
{
case 0:
{
static data[256], timestamp;
if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) )
{
next_load_data(id, data, sizeof(data) - 1);
return;
} else {
register_player(id,"");
}
}
case 1:
{
new szTableName[32],ErrorCode;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
SQL_QuoteString(SqlConnection, szName, 32, szName);
get_pcvar_string(gTableName,szTableName,31);
if(SqlConnection == Empty_Handle)
{
log_amx(g_Error);
return ;
}
new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id FROM %s WHERE name = '%s';",szTableName,szName)
if(!SQL_Execute(Query))
{
SQL_QueryError(Query,g_Error,511);
log_amx(g_Error);
return ;
}
if(SQL_NumResults(Query) > 0 )
{
next_load_data(id, "", 0);
} else {
register_player(id,"");
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}
default:
{
static data[256], timestamp;
if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) )
{
next_load_data(id, data, sizeof(data) - 1);
return;
} else {
register_player(id,"");
}
}
}
}
public next_load_data(id,data[],len)
{
new szName[33];
get_user_name(id,szName,32);
switch(get_pcvar_num(gSaveType))
{
case 0:
{
replace_all(data,len,"|"," ");
new exp[5],level[5];
parse(data,exp,4,level,4);
UserData[id][gExp]= str_to_num(exp);
UserData[id][gLevel]= str_to_num(level);
}
case 1:
{
new szTableName[32],ErrorCode;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
SQL_QuoteString(SqlConnection, szName, 32, szName);
get_pcvar_string(gTableName,szTableName,31);
if(SqlConnection == Empty_Handle)
{
log_amx(g_Error);
return ;
}
new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id,exp,level FROM %s WHERE name = '%s';",szTableName,szName)
if(!SQL_Execute(Query))
{
SQL_QueryError(Query,g_Error,511)
log_amx(g_Error)
}
if( SQL_NumResults(Query) > 0)
{
UserData[id][gId]= SQL_ReadResult(Query,0);
UserData[id][gExp]= SQL_ReadResult(Query,1);
UserData[id][gLevel]= SQL_ReadResult(Query,2);
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}
default:
{
replace_all(data,len,"|"," ");
new exp[5],level[5];
parse(data,exp,4,level,4);
UserData[id][gExp]= str_to_num(exp);
UserData[id][gLevel]= str_to_num(level);
}
}
// mini-check lvl_up
if(UserData[id][gLevel] <= 0)
UserData[id][gLevel] = 1;

while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]])
UserData[id][gLevel]++;
}
public register_player(id,data[])
{
new szName[33];
get_user_name(id,szName,32);
switch(get_pcvar_num(gSaveType))
{
case 0:
{
UserData[id][gExp]= 0
UserData[id][gLevel]= 1;
}
case 1:
{
new szTableName[32],ErrorCode;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
SQL_QuoteString(SqlConnection, szName, 32, szName);
get_pcvar_string(gTableName,szTableName,31);
if(SqlConnection == Empty_Handle)
{
log_amx(g_Error);
return ;
}
new Handle:Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO %s (`id`,`name`,`exp`,`level`) VALUES (NULL,'%s','0','1');",szTableName,szName);
if(!SQL_Execute(Query))
{
SQL_QueryError(Query,g_Error,511)
log_amx(g_Error)
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
UserData[id][gExp] = 0;
UserData[id][gLevel] = 1;
}
default:
{
UserData[id][gExp]= 0
UserData[id][gLevel]= 1;
}
}
}
public save_usr(id)
{
new szName[33];
get_user_name(id,szName,32);
switch(get_pcvar_num(gSaveType))
{
case 0:
{
static data[256];
formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]);
nvault_set(g_vault, szName, data);
}
case 1:
{
new saveq[256],szTableName[32];
get_pcvar_string(gTableName,szTableName,31);
format(saveq,255,"UPDATE `%s` SET `exp`='%d',`level`='%d' WHERE `id`='%d';", szTableName,UserData[id][gExp],UserData[id][gLevel],UserData[id][gId])
SQL_ThreadQuery(g_SqlTuple,"QueryHandler",saveq);
}
default:
{
static data[256];
formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]);
nvault_set(g_vault, szName, data);
}
}
}
///////// chat event
public hookSay(id)
{
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
return PLUGIN_CONTINUE;

new message[192],Len;
read_args(message, 191);
remove_quotes(message);
if(is_admin_msg(message))
return PLUGIN_CONTINUE;

if(is_empty_message(message))
{
ColorChat(id,NORMAL,"^4[^3Army Ranks^4]^1 %L",LANG_PLAYER,"EMPTY_MSG")
return PLUGIN_HANDLED
}
if(get_pcvar_num(gSlash))
{
if(is_has_slash(message))
return PLUGIN_HANDLED_MAIN
}
new szName[32];
get_user_name(id,szName,31);
if(is_user_admin(id))
{
Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
switch(get_pcvar_num(gAdminGMsg))
{
case 1:
{
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message);
}
case 2:
{
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message);
}
default:
{
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
}
}
Chat(id,0,get_pcvar_num(gAllChat));
}
else
{
Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
Chat(id,0,get_pcvar_num(gAllChat));
}
return PLUGIN_HANDLED_MAIN
}
public hookSayTeam(id)
{
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
return PLUGIN_CONTINUE;

new message[192],Len;
read_args(message, 191);
remove_quotes(message);
if(is_admin_msg(message))
return PLUGIN_CONTINUE;

if(is_empty_message(message))
{
ColorChat(id,NORMAL,"^4[^3Army Ranks^4]^1 %L",LANG_PLAYER,"EMPTY_MSG");
return PLUGIN_HANDLED
}
if(get_pcvar_num(gSlash))
{
if(is_has_slash(message))
return PLUGIN_HANDLED_MAIN
}
new szName[32];
get_user_name(id,szName,31);
if(is_user_admin(id))
{
Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ^3%s^4 : ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]],szName);
switch(get_pcvar_num(gAdminGMsg))
{
case 1:
{
Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message);
}
case 2:
{
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message);
}
default:
{
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
}
}
Chat(id,1,get_pcvar_num(gAllChat));
}
else
{
Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
Chat(id,1,get_pcvar_num(gAllChat));
}
return PLUGIN_HANDLED_MAIN
}
stock is_admin_msg(const Message[])
{
if(Message[0] == '@')
return true;

return false;
}
stock is_empty_message(const Message[])
{
if(equal(Message, "") || !strlen(Message))
return true;

return false;
}
stock Chat(id,team,chat_type)
{
if(team)
{
if(chat_type)
{
for(new i = 1; i <= MaxPlayers; i++)
{
if(!is_user_connected(i))
continue

if(get_user_team(id) == get_user_team(i))
send_message(gMessage, id, i);
}
} else {
if(is_user_alive(id))
{
for(new i = 1; i <= MaxPlayers; i++)
{
if(!is_user_connected(i) || !is_user_alive(i))
continue

if(get_user_team(id) == get_user_team(i))
send_message(gMessage, id, i);
}
} else if(!is_user_alive(id)){
for(new i = 1; i <= MaxPlayers; i++)
{
if(!is_user_connected(i) || is_user_alive(i))
continue

if(get_user_team(id) == get_user_team(i))
send_message(gMessage, id, i);
}
}
}
} else{
if(chat_type)
{
for(new i = 1; i <= MaxPlayers; i++)
{
if(!is_user_connected(i))
continue

send_message(gMessage, id, i);
}
} else {
if(is_user_alive(id))
{
for(new i = 1; i <= MaxPlayers; i++)
{
if(!is_user_connected(i) || !is_user_alive(i))
continue

send_message(gMessage, id, i);
}
} else if(!is_user_alive(id)){
for(new i = 1; i <= MaxPlayers; i++)
{
if(!is_user_connected(i) || is_user_alive(i))
continue

send_message(gMessage, id, i);
}
}
}
}
}
stock send_message(const message[], const id, const i)
{
message_begin(MSG_ONE, gSayText, {0, 0, 0}, i)
write_byte(id)
write_string(message)
message_end()
}
stock is_has_slash(const Message[])
{
if(Message[0] == '/')
return true;

return false;
}

public client_infochanged(id)
{
new newname[32],oldname[32]
get_user_info(id, "name", newname,31)
get_user_name(id,oldname,31)
if(!is_user_connected(id) || is_user_bot(id))
return PLUGIN_CONTINUE

if(!equali(newname, oldname))
{
set_user_info(id,"name",oldname);
log_amx("namechange BLOCKED.");
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public msg_SayText()
{
new arg[32]
get_msg_arg_string(2, arg, 31)
if(containi(arg,"name")!=-1)
return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}
/////////// natives
public plugin_natives()
{
register_native("get_user_exp", "native_get_user_exp", 1);
register_native("get_user_lvl", "native_get_user_lvl", 1);
register_native("set_user_exp", "native_set_user_exp", 1);
register_native("set_user_lvl", "native_set_user_lvl", 1);
register_native("get_user_rankname", "native_get_user_rankname", 1);
}
public native_set_user_exp(id,num)
{
UserData[id][gExp] = num;
}
public native_set_user_lvl(id,num)
{
UserData[id][gLevel] = num;
}
public native_get_user_exp(id)
{
return UserData[id][gExp];
}
public native_get_user_lvl(id)
{
return UserData[id][gLevel];
}
public native_get_user_rankname(id)
{
static szRankName[64];
format(szRankName, charsmax(szRankName), "%L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
return szRankName;
}
//////// informer
public Info()
{
for(new id = 1; id <= MaxPlayers; id++)
{
if(!is_user_bot(id) && is_user_connected(id))
{
if(get_pcvar_num(gHideRadar))
set_hudmessage(100, 100, 100, 0.01, 0.01, 0, 1.0, 1.0, _, _, -1);
else
set_hudmessage(100, 100, 100, 0.01, 0.13, 0, 1.0, 1.0, _, _, -1)

static buffer[192], len;
len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
if(UserData[id][gLevel] <= 19)
{
len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_XP",UserData[id][gExp],gLevels[UserData[id][gLevel]]);
} else {
len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX");
}
ShowSyncHudMsg(id, g_MsgHud, "%s", buffer);
}
}
return PLUGIN_CONTINUE
}
/////// weap menu per lvl
public GetWeapon(id)
{
new szText[700 char];
formatex( szText, charsmax( szText ), "%L", id, "GW_TITLE");
new menu = menu_create( szText, "gw_menu" );
//
formatex( szText, charsmax( szText ), "awp");
menu_additem( menu, szText, "1", 0 );
//
formatex( szText, charsmax( szText ), "ak-47");
menu_additem( menu, szText, "2", 0 );
//
formatex( szText, charsmax( szText ), "m4a1");
menu_additem( menu, szText, "3", 0 );
//
formatex( szText, charsmax( szText ), "famas");
menu_additem( menu, szText, "4", 0 );
//
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
menu_display( id, menu,0);
return PLUGIN_CONTINUE;
}
public gw_menu(id,menu,item)
{
if( item == MENU_EXIT )
{
return PLUGIN_HANDLED;
}

new data[ 6 ], iName[ 64 ], access, callback;
menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
new key = str_to_num( data );
switch( key )
{
case 1:
{
give_item(id,"weapon_awp");
cs_set_user_bpammo( id, CSW_AWP, 100);
}
case 2:
{
give_item(id,"weapon_ak47");
cs_set_user_bpammo( id, CSW_AK47, 200);
}
case 3:
{
give_item(id,"weapon_m4a1");
cs_set_user_bpammo( id, CSW_M4A1, 200);
}
case 4:
{
give_item(id,"weapon_famas");
cs_set_user_bpammo( id, CSW_FAMAS, 200);
}
}

return PLUGIN_HANDLED;
}
public QueryHandler(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
switch(FailState)
{
case -2: log_amx("[Army Ranks] Failed to connect (%d): %s", Errcode, Error);
case -1: log_amx("[Army Ranks] (%d): %s", Errcode, Error);
}
return PLUGIN_HANDLED
}


Вроде нет только квары поменял .
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ASTIN
сообщение 2.1.2013, 14:00
Сообщение #400


Стаж: 18 лет

Сообщений: 160
Благодарностей: 20
Полезность: 88

Arctiq, не подскажешь, когда ждать фикс? Ну, что б звания не слетали. И что б не писались ошибки. Я выше где-то писал об ошибках. Заранее благодарен за ответ.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
26 страниц V  « 19 20 21 ... 24 25 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: