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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер
2 страниц V   1 2

Проблема с checkpoint и gonki

Статус пользователя 1210s
сообщение 10.4.2013, 6:21
Сообщение #1
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Здравствуйте ребята, проблема с Checpoint проблема такая, когда у меня 16000баксов я собираю последний чекпоинт у меня резко он перескакивает на 8000баксов
Как исправить это не дорозумение?
И еще как сделать когда собираешь чекпоинт звук + hud сообщение собрал 300$ в правом углу? надеюсь на вашу помощь спасибо.

Скрытый текст
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <dhudmessage>
#include <WPMGPrintChatColor>

#define PLUGIN "Checkpoints"
#define VERSION "0.6"
#define AUTHOR "Psycrow"

#define GreenCP         "models/n21_deathrun/checkpoints/checkpoint-green.mdl"
#define BlueCP             "models/n21_deathrun/checkpoints/checkpoint-blue.mdl"
#define OrangeCP         "models/n21_deathrun/checkpoints/checkpoint-orange.mdl"
#define PurpleCP         "models/n21_deathrun/checkpoints/checkpoint-purple.mdl"
#define YellowCP         "models/n21_deathrun/checkpoints/checkpoint-yellow.mdl"
#define FinishCP         "models/n21_deathrun/checkpoints/checkpoint-finish.mdl"

#define DHUD_POSITION 0, 255, 0, -1.0, 0.8, 2, 1.05, 1.05, 0.05, 3.0
#define MAX_MONEY 16000
#define MAX_CHECKPOINTS_LOAD 10

#if cellbits == 32
    #define OFFSET_CSMONEY 115
#else
    #define OFFSET_CSMONEY 140
#endif

new
g_TotalCheckpoints,                     //Кол-во загруженных чекпоинтов на карте
g_Checkpoint_id[MAX_CHECKPOINTS_LOAD],            //id энтити чекпоинта
bool: g_Checkpoint_complete[MAX_CHECKPOINTS_LOAD][33],     //Пройден ли чекпоинт(1) игроком(2)
Float: g_orig_x[MAX_CHECKPOINTS_LOAD],            //Координата x
Float: g_orig_y[MAX_CHECKPOINTS_LOAD],            //Координата y
Float: g_orig_z[MAX_CHECKPOINTS_LOAD],            //Координата z
g_msgMoney,
bool: g_save_cpl,                    //Изменения в расположении чекпоинтов
g_Finished[33],                        //Кто пришел к финишу.
g_fin_pos                        //Собственно, каким

public plugin_natives()    
    register_native("n21_teleport_cp", "teleport", 1)

public plugin_precache()
{
    precache_model(GreenCP)
    precache_model(BlueCP)
    precache_model(OrangeCP)
    precache_model(PurpleCP)
    precache_model(YellowCP)
    precache_model(FinishCP)
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("cv_checkpoint_money","1") // Выдавать ли деньги?
    register_cvar("cv_checkpoint_teleport","1") // Возрождать ли у чекпоинта?
    register_cvar("cv_checkpoint_money_give","300") // Сколько выдавать денег на прохождение обычных чекпоинтов
    register_cvar("cv_checkpoint_money_koef","1") // Умножать ли награду за пройденный чекпоинт на номер чекпоинта?
    register_cvar("cv_checkpoint_money_last_first","6000") // Сколько выдавать денег за пройденный последний чекпоинт на первом месте
    register_cvar("cv_checkpoint_money_last_second","4000") // На втором месте
    register_cvar("cv_checkpoint_money_last_third","3500") // На третьем месте
    
    register_clcmd( "say /checkpoint", "Checkpoint_menu" )
    register_clcmd( "say_team /checkpoint", "Checkpoint_menu" )
    RegisterHam(Ham_Spawn, "player", "hook_spawn_post", 1)
    register_forward(FM_Touch,"fwdTouch")
    register_logevent("Startround", 2, "1=Round_Start")
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_rounddraw") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_terwin") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_ctwin") // Если раунд енд не будет работать
    register_logevent("EndRound", 2, "0=World triggered","1=Round_End")
    
    get_maps_cfg()
    set_checkpoints()
    
    g_msgMoney = get_user_msgid("Money")
}

public get_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_Dir, i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    i_Dir = open_dir(cfgDir, i_File, charsmax(i_File))
    
    if (i_Dir)
    {
        while (next_file(i_Dir, i_File, charsmax(i_File)))
        {
            if (i_File[0] == '.')
                continue
                
            if(equal(map, i_File))
            {
                format(i_File,128,"%s/%s",cfgDir, i_File)
                get_checkpoints(i_File)
            }
        }
    }
}

public set_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    format(i_File,128,"%s/%s",cfgDir, map)
    
    delete_file(i_File)
    if(g_TotalCheckpoints != 0)
        for(new i=0; i<g_TotalCheckpoints; i++)
        {
            new text[128], Float:fOrigin[3]
            pev(g_Checkpoint_id[i],pev_origin,fOrigin)
            format(text,128,"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
            write_file(i_File, text, i)
        }
}

public get_checkpoints(i_File[128])
{    
    new
    i_orig_x[32],
    i_orig_y[32],
    i_orig_z[32],
    sfLineData[512],
    file = fopen(i_File,"rt")
    
    while(file && !feof(file))
    {
        fgets(file, sfLineData, charsmax(sfLineData))
            
        if (containi(sfLineData,";") > -1)
            continue
            
        parse(sfLineData, i_orig_x, charsmax(i_orig_x), i_orig_y, charsmax(i_orig_y), i_orig_z, charsmax(i_orig_z))
                    
        g_orig_x[g_TotalCheckpoints] = str_to_float(i_orig_x)
        g_orig_y[g_TotalCheckpoints] = str_to_float(i_orig_y)
        g_orig_z[g_TotalCheckpoints] = str_to_float(i_orig_z)
            
        g_TotalCheckpoints++
        
        if(get_count_lines(i_File) == g_TotalCheckpoints) // Чтобы не считало пустых строк
            break
        
        if(g_TotalCheckpoints >= MAX_CHECKPOINTS_LOAD)
        {
            server_print("[%s] Reached checkpoints limit", PLUGIN)
            break
        }
    }
    
    if(file)
        fclose(file)
    
    if(g_TotalCheckpoints == 1)
        server_print("[%s] Loaded one Checkpoint", PLUGIN)
    else
        server_print("[%s] Loaded %d Checkpoints", PLUGIN, g_TotalCheckpoints)
}

public set_checkpoints()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        new Ent = create_entity("info_target")
        if(is_valid_ent(Ent))
        {    
            g_Checkpoint_id[i] = Ent
            
            if(i == g_TotalCheckpoints-1)
                entity_set_model(Ent, FinishCP)
            else
            {
                new color = random_num(0,4)
                switch(color)
                {
                    case 0: entity_set_model(Ent, GreenCP)
                    case 1: entity_set_model(Ent, BlueCP)
                    case 2: entity_set_model(Ent, OrangeCP)
                    case 3: entity_set_model(Ent, PurpleCP)
                    case 4: entity_set_model(Ent, YellowCP)
                }
            }
                
            new Float:fOrigin[3]
            fOrigin[0] = g_orig_x[i]
            fOrigin[1] = g_orig_y[i]
            fOrigin[2] = g_orig_z[i]
            entity_set_origin(Ent, fOrigin)
            set_pev(Ent, pev_sequence, 0)
            set_pev(Ent, pev_framerate, 1.0)
            entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
            entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
            set_pev(Ent,pev_movetype, MOVETYPE_FLY)
            set_pev(Ent, pev_effects, 8)
        }
    }
}

public Startround()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_TRIGGER)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
    g_fin_pos = 0
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public EndRound()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_NOT)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
            
    g_fin_pos = 0
    
    //Тут можно вставить тройку победителей, используя g_Finished[id] как позицию
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public hook_spawn_post(id)
    if(get_cvar_num("cv_checkpoint_teleport"))
        teleport(id)

public teleport(id)
{
    for(new i=g_TotalCheckpoints-1; i>=0; i--)
    {
        if(g_Checkpoint_complete[i][id])
        {
            new Float:origin[3]
            entity_get_vector(g_Checkpoint_id[i],EV_VEC_origin,origin)
            set_pev(id, pev_origin, origin)
            break
        }
    }
}

public fwdTouch(ent, id)
{
    if(!is_user_alive(id) || !is_user_connected(id))
        return
    
    if(!is_valid_ent(ent))
        return

    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        if(ent == g_Checkpoint_id[i] && !g_Checkpoint_complete[i][id])    
        {        
            g_Checkpoint_complete[i][id] = true
            
            set_dhudmessage(DHUD_POSITION)
            new reward
            
            if(i == g_TotalCheckpoints-1)
            {
                g_fin_pos++
                show_dhudmessage(id, "Р’С‹ прошли через последний чекпоинт Рё финишировали РЅР°^n %d месте", g_fin_pos)
                new pl_name[32]
                get_user_name(id, pl_name, 31)     
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР?РіСЂРѕРє !g%s !tпришел Рє финишу РЅР° !g%d !tместе", PLUGIN, pl_name, g_fin_pos)
                
                if(g_fin_pos == 1)
                    reward = get_cvar_num("cv_checkpoint_money_last_first")
                else if(g_fin_pos == 2)
                    reward = get_cvar_num("cv_checkpoint_money_last_second")
                else if(g_fin_pos == 3)
                    reward = get_cvar_num("cv_checkpoint_money_last_third")
                else
                {
                    reward = get_cvar_num("cv_checkpoint_money_give")
                    if(get_cvar_num("cv_checkpoint_money_koef"))
                        reward = reward * (i+1)
                }
                
                g_Finished[id] = g_fin_pos
            }
            else
            {
                reward = get_cvar_num("cv_checkpoint_money_give")
                if(get_cvar_num("cv_checkpoint_money_koef"))
                    reward = reward * (i+1)
                show_dhudmessage(id, "Р’С‹ прошли через чекпоинт %d",i+1)
            }
            if(get_cvar_num("cv_checkpoint_money"))
            {
                new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
    
                if(curr_money+reward > MAX_MONEY)
                    reward = MAX_MONEY-curr_money
            
                set_pdata_int(id, OFFSET_CSMONEY, curr_money+reward)
            
                message_begin(MSG_ONE, g_msgMoney, _, id)
                write_long(curr_money+reward)
                write_byte(1)
                message_end()
            
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР’С‹ получаете !g%d$", PLUGIN, reward)
            }
        }
    }
}

public Checkpoint_menu(id)
{
    if(!(get_user_flags(id) & ADMIN_BAN))
    {
        PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРЈ вас нет прав РЅР° эту функцию", PLUGIN)
        return PLUGIN_HANDLED
    }    
    
    new menu_name[90]
    format(menu_name, 90, "\rРасстановка чекпоинтов^n\dТекущий чекпоинт: %d/%d", g_TotalCheckpoints+1, MAX_CHECKPOINTS_LOAD+1)

    new i_menu = menu_create(menu_name, "menu_handler")
    
    if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
        menu_additem(i_menu, "\dУстановить Чекпоинт", "1", 0)
    else menu_additem(i_menu, "\wУстановить Чекпоинт", "1", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить предыдущий Чекпоинт", "2", 0)
    else menu_additem(i_menu, "\wУдалить предыдущий Чекпоинт", "2", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить РІСЃРµ Чекпоинты", "3", 0)
    else menu_additem(i_menu, "\wУдалить РІСЃРµ Чекпоинты", "3", 0)
    
    if(!g_save_cpl)
        menu_additem(i_menu, "\dСохранить изменения", "4", 0)
    else menu_additem(i_menu, "\wСохранить изменения", "4", 0)

    menu_setprop(i_menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(i_menu, MPROP_EXITNAME, "\yВыход")
    menu_display(id, i_menu, 0)
        
    return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    switch(i_Key)
    {
        case 1:
        {
            if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tПревышен максимум", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
                        
            new Ent = create_entity("info_target")
            if(is_valid_ent(Ent))
            {    
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт установлен", PLUGIN)

                g_save_cpl = true
                g_TotalCheckpoints++
                
                g_Checkpoint_id[g_TotalCheckpoints-1] = Ent
                entity_set_model(Ent, FinishCP)
                
                new Float:fOrigin[3]
                fm_get_aim_origin(id, fOrigin)
                fOrigin[2]+=60
                
                entity_set_origin(Ent, fOrigin)
                set_pev(Ent, pev_sequence, 0)
                set_pev(Ent, pev_framerate, 1.0)
                entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
                entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
                set_pev(Ent,pev_movetype, MOVETYPE_FLY)
                set_pev(Ent, pev_effects, 8)
                
                if(g_TotalCheckpoints != 1)
                {
                    for(new i=0; i<g_TotalCheckpoints-1; i++)
                    {
                        new color = random_num(0,4)
                        switch(color)
                        {
                            case 0: entity_set_model(g_Checkpoint_id[i], GreenCP)
                            case 1: entity_set_model(g_Checkpoint_id[i], BlueCP)
                            case 2: entity_set_model(g_Checkpoint_id[i], OrangeCP)
                            case 3: entity_set_model(g_Checkpoint_id[i], PurpleCP)
                            case 4: entity_set_model(g_Checkpoint_id[i], YellowCP)
                        }
                    }
                }
            }
            Checkpoint_menu(id)
        }
        case 2:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт удален", PLUGIN)
            
            g_save_cpl = true
            g_TotalCheckpoints--
            
            remove_entity(g_Checkpoint_id[g_TotalCheckpoints])
            
            if(g_TotalCheckpoints != 0)
                entity_set_model(g_Checkpoint_id[g_TotalCheckpoints-1], FinishCP)
                
            Checkpoint_menu(id)
        }
        case 3:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = true
            
            for(new i=0; i<g_TotalCheckpoints; i++)
                remove_entity(g_Checkpoint_id[i])
                
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tБыло удалено !g%d !tЧекпоинтов", PLUGIN, g_TotalCheckpoints)
                
            g_TotalCheckpoints = 0
            
            Checkpoint_menu(id)
        }
        case 4:
        {
            if(!g_save_cpl)
            {
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = false
            set_maps_cfg()
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tСохранено", PLUGIN)
            Checkpoint_menu(id)
        }
    }
    return PLUGIN_HANDLED
}

stock get_count_lines(szFileName[])
{
    new fHandle = fopen(szFileName, "rt")
    if(!fHandle)
        return 0

    new szBuffer[2], iLines

    while(!feof(fHandle))
    {
        fgets(fHandle, szBuffer, 1)
        if (!szBuffer[0])
            continue
                
        iLines++
    }

    fclose(fHandle)
    return iLines
}



Не включается режим гонки, а файлы закачиваются. что делать ? как исправить?
Гонки
Код
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <dhudmessage>
#include <engine>
#include <fun>


#define PLUGIN "Гонки на выжевание"
#define VERSION "1.0"
#define AUTHOR "Bublik"


new buttons_off,ButtonLOL[33], bool:gonkisuka, seconds

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    RegisterHam(Ham_Use, "func_button", "key")
    register_event("HLTV", "NewRound", "a", "1=0", "2=0")
    register_clcmd("say /gonki", "start_gonki")
    RegisterHam(Ham_Touch, "weaponbox", "fwdTouch")
    RegisterHam(Ham_Touch, "armoury_entity", "fwdTouch")
}

public NewRound()
{
    remove_task(100499)
    buttons_off = false
    gonkisuka = false
}
public plugin_precache()
{
    precache_sound("gonki/start.mp3")
}

public start_gonki(id)
{
     if(cs_get_user_team(id) == CS_TEAM_T)
     {
         if(is_user_alive(id))
         {
            buttons_off = true
            client_cmd(0,"mp3 play sound/gonki/start")
            gonkisuka = true
            ButtonLOL[id] = 5
            dhudknopki(id)
            seconds = 120
            set_task(1.0, "dhudsecond", 100499,_,_,"a",seconds+1)
            for( new i = 1; i <= get_maxplayers(); i++)
            {
                if(is_user_alive(id))
                {
                    if(get_user_team(i) == 1)
                    {
                        strip_user_weapons(i)
                        give_item(i,"weapon_knife")
                        give_item(i,"weapon_knife")
                        give_item(i,"weapon_knife")
                    }
                    else if(get_user_team(i) == 2)
                    {
                        strip_user_weapons(i)
                        give_item(i,"weapon_knife")
                        give_item(i,"weapon_knife")
                        give_item(i,"weapon_knife")
                    }
                }
            }
         }
     }
}

public dhudknopki(id)
{
new szCvarDr[127]
get_cvar_string("deathrun_mode", szCvarDr, charsmax(szCvarDr))
if(!equal(szCvarDr, "DUEL"))
{
if(gonkisuka)
{
set_dhudmessage(random_num(0,255), random_num(0,255), random_num(0,255), -1.0, 0.2, 0, 0.0, 0.0)    
if(ButtonLOL[id]>=5) show_dhudmessage(0, "У Тера осталось 5 кнопок!")
else if(ButtonLOL[id]==4) show_dhudmessage(0, "У Тера осталось 4 кнопоки!")
else if(ButtonLOL[id]==3) show_dhudmessage(0, "У Тера осталось 3 кнопоки!")
else if(ButtonLOL[id]==2) show_dhudmessage(0, "У Тера осталось 2 кнопоки!")
else if(ButtonLOL[id]==1) show_dhudmessage(0, "У Тера осталось 1 кнопока!")
else if(ButtonLOL[id]==0) show_dhudmessage(0, "У Тера не осталось кнопок!")
set_task(0.5,"dhudknopki",id)
}
}
}

public dhudsecond(id)
{
new szCvarDr[127]
get_cvar_string("deathrun_mode", szCvarDr, charsmax(szCvarDr))
if(!equal(szCvarDr, "DUEL"))
{
    seconds--
    set_dhudmessage(255, 255, 0, -1.0, 0.15, 2, 0.02, 1.0, 0.00, 0.0 )        
    show_dhudmessage(0, "У CT осталось: %d секунд(-ы)", seconds)
    if(seconds <= 1)
    {
        for(new i = 1; i <= get_maxplayers(); i++)
        if(cs_get_user_team(i) == CS_TEAM_CT)
        {
        user_silentkill(i)
        }
        remove_task(100499)
    }
}
}


public key(ent, idcaller, idactivator, use_type, Float:value)
{
     if(is_user_alive(idactivator) && buttons_off &&  get_user_team(idactivator) == 1)
     {
         if(ButtonLOL[idactivator] <= 0)
         {
         return HAM_SUPERCEDE
         }
        else ButtonLOL[idactivator]--
     }
     return PLUGIN_HANDLED
}

public fwdTouch(ent, id)
{    
     if(is_user_alive(id) && gonkisuka)    
     return HAM_SUPERCEDE
     return HAM_IGNORED    
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя judoist31
сообщение 10.4.2013, 9:57
Сообщение #2


Стаж: 14 лет

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

unlimited_money стоит?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 10.4.2013, 11:46
Сообщение #3
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Да
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя judoist31
сообщение 10.4.2013, 18:02
Сообщение #4


Стаж: 14 лет

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

Подключай #include <money_ul>
cs_set_user_money и cs_get_user_money на cs_set_user_money_ul и cs_get_user_money_ul
(это чтобы не перескакивало на 8000$)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 10.4.2013, 19:13
Сообщение #5
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Есть у кого исходник в инете сиходник не могу найти((( И кто с гонками поможет исходник выше.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 10.4.2013, 19:58
Сообщение #6
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Надеюсь, гонки за Т запускаете?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 10.4.2013, 20:12
Сообщение #7
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Да конечно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 10.4.2013, 20:58
Сообщение #8
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Но всеровно убирает деньги(( -5000 уже((
Исходник
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <money_ul>

#define MONEY_TIER 8000 // DON'T MESS WITH, Money total at which the plugin switches over keeping track of money
new money_total[33] // Keep track of peeps money if above MONEY_TIER
new gmsg_Money

new amx_maxmoney
new amx_startmoney

public client_connect(id)
{
    set_cvar_float("mp_startmoney", 801.0) // So you can track when to change to amx_startmoney ammount, I know.. a crude method
    money_total[id] = 0
}


public read_gmsg_Money(id) {
    if(!is_user_connected(id)) return PLUGIN_HANDLED
    
    new current_total = read_data(1)
    
    if(current_total == 801){         // If CS is spawning you with mp_startmoney default
        current_total = get_pcvar_num(amx_startmoney)      // current total is actually amx_startmoney
        cs_set_user_money(id, current_total,0)         // so set user money to amx_startmoney
        money_total[id] = 0 // reset
    }
    if(current_total >= MONEY_TIER && !money_total[id]) // If first time above MONEY_TIER
    {
        money_total[id] = current_total // Keep track of current total
        
        send_moneymsg(id,current_total-MONEY_TIER,read_data(2)) // send money msg of current total
        
        return PLUGIN_CONTINUE
    }
    if(money_total[id]) // If was over tier on last money message
    {
        money_total[id] += current_total - MONEY_TIER  // figure the term of current total - tier
        
        if(money_total[id] < MONEY_TIER){  // If less then tier set user money to money_total[id] and stop keeping track
            cs_set_user_money_ul(id,money_total[id],1)
            money_total[id] = 0
        }
        else{
            send_moneymsg(id,current_total-MONEY_TIER,read_data(2)) // else send money message
        }
        
        return PLUGIN_CONTINUE
    }
    
    return PLUGIN_CONTINUE
}

//change flash to ammount
public send_moneymsg(id,ammount,flash)
{
    cs_set_user_money_ul(id,MONEY_TIER,0) //Set user money to tier ammount so easy to track add and subtract terms
    
    new maxamount = get_pcvar_num(amx_maxmoney)
    
    if(money_total[id] >  maxamount)
        money_total[id] =  maxamount
    
    //send old money
    message_begin( MSG_ONE , gmsg_Money , {0,0,0}, id )
    write_long(money_total[id]-ammount)
    write_byte(0)
    message_end()
    
    //send current money
    message_begin( MSG_ONE , gmsg_Money , {0,0,0}, id ) //Send money message with ammount stored in money_total[id]
    write_long(money_total[id])
    write_byte(flash)
    message_end()
}


public find_money_target(id, level, cid)
{
    if(!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED
    
    new target[16], ammount[8], players[32]
    new num
    
    read_argv(1,target,15)
    read_argv(2,ammount,7)
    
    if(target[0] == '@'){    //If trying to give a team money
        if(target[1] == 'C' || target[1] == 'c'){
            get_players(players, num ,"e", "CT")
        }
        else if(target[1] == 'T' || target[1] == 't'){
            get_players(players, num ,"e", "TERRORIST")
        }
        else{
            console_print(id, "*** No known team by that name. ***")
            return PLUGIN_HANDLED
        }
    }
    else if(target[0] == '#'){  //If trying to give a player(userid) money
        new userid = str_to_num(target[1])
        players[0] = find_player("k", userid)
    }
    else{  // else search for matching name to try and give money
        players[0] = find_player("bl", target)
    }
    
    if(players[0] == 0){  //If no target(s) could be found
        console_print(id, "*** No target(s) could be found. ***")
        return PLUGIN_HANDLED
    }
    else
        give_money(players, str_to_num(ammount))
    
    return PLUGIN_HANDLED
}


public give_money(players[], ammount)
{
    new i
    while(players[i]){
        if(money_total[players[i]]){
            money_total[players[i]] += ammount // Keep track of current total
            send_moneymsg(players[i],ammount,1) // send money msg of current total
        }
        else if( (cs_get_user_money_ul(players[i]) + ammount) >= MONEY_TIER){
            money_total[players[i]] = cs_get_user_money_ul(players[i]) + ammount // Keep track of current total
            send_moneymsg(players[i],ammount,1) // send money msg of current total
        }
        else{
            ammount += cs_get_user_money_ul(players[i])
            cs_set_user_money_ul(players[i],ammount,1)
            money_total[players[i]] = 0
        }
        
        ++i
    }
}

public restartround()
{
    for (new i=1; i<33; i++)
        money_total[i] = 0
}

public _cs_get_user_money_ul(plug,param) {
    if(param != 1)
        return PLUGIN_HANDLED
    
    new id = get_param(1)
    
    
    if (id < 1 || id > get_maxplayers()) {
        log_error(AMX_ERR_NATIVE, "Player out of range (%d)", id)
        return PLUGIN_HANDLED
        } else {
        if (!is_user_connected(id)) {
            log_error(AMX_ERR_NATIVE, "Invalid player %d", id)
            return PLUGIN_HANDLED
        }
    }
    
    if(money_total[id] < MONEY_TIER) {
        return cs_get_user_money_ul(id)
    }
    else {
        return money_total[id]
    }
    
    return PLUGIN_HANDLED
    
}

public _cs_set_user_money_ul(plug,param) {
    if(param != 2 && param != 3 )
        return PLUGIN_HANDLED
    
    new id = get_param(1)
    
    if (id < 1 || id > get_maxplayers()) {
        log_error(AMX_ERR_NATIVE, "Player out of range (%d)", id)
        return PLUGIN_HANDLED
        } else {
        if (!is_user_connected(id)) {
            log_error(AMX_ERR_NATIVE, "Invalid player %d", id)
            return PLUGIN_HANDLED
        }
    }
    
    new ammount = get_param(2)
    
    if(ammount >= MONEY_TIER){
        new change = ammount - money_total[id]
        money_total[id] = ammount
        send_moneymsg(id,change,get_param(3))
    }
    else{
        if (ammount < 0) ammount = 0
        cs_set_user_money_ul(id,ammount,get_param(3))
        money_total[id] = 0
    }
    return PLUGIN_HANDLED    
}

public plugin_natives() {
    register_library("money_ul")
    register_native("cs_get_user_money_ul","_cs_get_user_money_ul")
    register_native("cs_set_user_money_ul","_cs_set_user_money_ul")
}

public plugin_init()
{
    register_plugin("Unlimited Money","2.0","NL)Ramon(NL")
    
    register_event("Money","read_gmsg_Money","b")
    register_event("TextMsg", "restartround", "a", "2&#Game_C","2&#Game_w")
    
    amx_startmoney = register_cvar("amx_startmoney", "800")
    amx_maxmoney = register_cvar("amx_maxmoney", "99999")
    
    register_concmd("amx_setmoney", "find_money_target",ADMIN_LEVEL_A, "{@team, #userid, or name(can be partial)} <ammount>")
    
    gmsg_Money = get_user_msgid("Money")
    
    return PLUGIN_CONTINUE
}


Отредактировал: 1210s, - 10.4.2013, 20:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя judoist31
сообщение 11.4.2013, 2:57
Сообщение #9


Стаж: 14 лет

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

Цитата(1210s @ 10.4.2013, 21:58) *
Но всеровно убирает деньги(( -5000 уже((
Исходник
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <money_ul>

#define MONEY_TIER 8000 // DON'T MESS WITH, Money total at which the plugin switches over keeping track of money
new money_total[33] // Keep track of peeps money if above MONEY_TIER
new gmsg_Money

new amx_maxmoney
new amx_startmoney

public client_connect(id)
{
    set_cvar_float("mp_startmoney", 801.0) // So you can track when to change to amx_startmoney ammount, I know.. a crude method
    money_total[id] = 0
}


public read_gmsg_Money(id) {
    if(!is_user_connected(id)) return PLUGIN_HANDLED
    
    new current_total = read_data(1)
    
    if(current_total == 801){         // If CS is spawning you with mp_startmoney default
        current_total = get_pcvar_num(amx_startmoney)      // current total is actually amx_startmoney
        cs_set_user_money(id, current_total,0)         // so set user money to amx_startmoney
        money_total[id] = 0 // reset
    }
    if(current_total >= MONEY_TIER && !money_total[id]) // If first time above MONEY_TIER
    {
        money_total[id] = current_total // Keep track of current total
        
        send_moneymsg(id,current_total-MONEY_TIER,read_data(2)) // send money msg of current total
        
        return PLUGIN_CONTINUE
    }
    if(money_total[id]) // If was over tier on last money message
    {
        money_total[id] += current_total - MONEY_TIER  // figure the term of current total - tier
        
        if(money_total[id] < MONEY_TIER){  // If less then tier set user money to money_total[id] and stop keeping track
            cs_set_user_money_ul(id,money_total[id],1)
            money_total[id] = 0
        }
        else{
            send_moneymsg(id,current_total-MONEY_TIER,read_data(2)) // else send money message
        }
        
        return PLUGIN_CONTINUE
    }
    
    return PLUGIN_CONTINUE
}

//change flash to ammount
public send_moneymsg(id,ammount,flash)
{
    cs_set_user_money_ul(id,MONEY_TIER,0) //Set user money to tier ammount so easy to track add and subtract terms
    
    new maxamount = get_pcvar_num(amx_maxmoney)
    
    if(money_total[id] >  maxamount)
        money_total[id] =  maxamount
    
    //send old money
    message_begin( MSG_ONE , gmsg_Money , {0,0,0}, id )
    write_long(money_total[id]-ammount)
    write_byte(0)
    message_end()
    
    //send current money
    message_begin( MSG_ONE , gmsg_Money , {0,0,0}, id ) //Send money message with ammount stored in money_total[id]
    write_long(money_total[id])
    write_byte(flash)
    message_end()
}


public find_money_target(id, level, cid)
{
    if(!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED
    
    new target[16], ammount[8], players[32]
    new num
    
    read_argv(1,target,15)
    read_argv(2,ammount,7)
    
    if(target[0] == '@'){    //If trying to give a team money
        if(target[1] == 'C' || target[1] == 'c'){
            get_players(players, num ,"e", "CT")
        }
        else if(target[1] == 'T' || target[1] == 't'){
            get_players(players, num ,"e", "TERRORIST")
        }
        else{
            console_print(id, "*** No known team by that name. ***")
            return PLUGIN_HANDLED
        }
    }
    else if(target[0] == '#'){  //If trying to give a player(userid) money
        new userid = str_to_num(target[1])
        players[0] = find_player("k", userid)
    }
    else{  // else search for matching name to try and give money
        players[0] = find_player("bl", target)
    }
    
    if(players[0] == 0){  //If no target(s) could be found
        console_print(id, "*** No target(s) could be found. ***")
        return PLUGIN_HANDLED
    }
    else
        give_money(players, str_to_num(ammount))
    
    return PLUGIN_HANDLED
}


public give_money(players[], ammount)
{
    new i
    while(players[i]){
        if(money_total[players[i]]){
            money_total[players[i]] += ammount // Keep track of current total
            send_moneymsg(players[i],ammount,1) // send money msg of current total
        }
        else if( (cs_get_user_money_ul(players[i]) + ammount) >= MONEY_TIER){
            money_total[players[i]] = cs_get_user_money_ul(players[i]) + ammount // Keep track of current total
            send_moneymsg(players[i],ammount,1) // send money msg of current total
        }
        else{
            ammount += cs_get_user_money_ul(players[i])
            cs_set_user_money_ul(players[i],ammount,1)
            money_total[players[i]] = 0
        }
        
        ++i
    }
}

public restartround()
{
    for (new i=1; i<33; i++)
        money_total[i] = 0
}

public _cs_get_user_money_ul(plug,param) {
    if(param != 1)
        return PLUGIN_HANDLED
    
    new id = get_param(1)
    
    
    if (id < 1 || id > get_maxplayers()) {
        log_error(AMX_ERR_NATIVE, "Player out of range (%d)", id)
        return PLUGIN_HANDLED
        } else {
        if (!is_user_connected(id)) {
            log_error(AMX_ERR_NATIVE, "Invalid player %d", id)
            return PLUGIN_HANDLED
        }
    }
    
    if(money_total[id] < MONEY_TIER) {
        return cs_get_user_money_ul(id)
    }
    else {
        return money_total[id]
    }
    
    return PLUGIN_HANDLED
    
}

public _cs_set_user_money_ul(plug,param) {
    if(param != 2 && param != 3 )
        return PLUGIN_HANDLED
    
    new id = get_param(1)
    
    if (id < 1 || id > get_maxplayers()) {
        log_error(AMX_ERR_NATIVE, "Player out of range (%d)", id)
        return PLUGIN_HANDLED
        } else {
        if (!is_user_connected(id)) {
            log_error(AMX_ERR_NATIVE, "Invalid player %d", id)
            return PLUGIN_HANDLED
        }
    }
    
    new ammount = get_param(2)
    
    if(ammount >= MONEY_TIER){
        new change = ammount - money_total[id]
        money_total[id] = ammount
        send_moneymsg(id,change,get_param(3))
    }
    else{
        if (ammount < 0) ammount = 0
        cs_set_user_money_ul(id,ammount,get_param(3))
        money_total[id] = 0
    }
    return PLUGIN_HANDLED    
}

public plugin_natives() {
    register_library("money_ul")
    register_native("cs_get_user_money_ul","_cs_get_user_money_ul")
    register_native("cs_set_user_money_ul","_cs_set_user_money_ul")
}

public plugin_init()
{
    register_plugin("Unlimited Money","2.0","NL)Ramon(NL")
    
    register_event("Money","read_gmsg_Money","b")
    register_event("TextMsg", "restartround", "a", "2&#Game_C","2&#Game_w")
    
    amx_startmoney = register_cvar("amx_startmoney", "800")
    amx_maxmoney = register_cvar("amx_maxmoney", "99999")
    
    register_concmd("amx_setmoney", "find_money_target",ADMIN_LEVEL_A, "{@team, #userid, or name(can be partial)} <ammount>")
    
    gmsg_Money = get_user_msgid("Money")
    
    return PLUGIN_CONTINUE
}

Забыл сказать надо делать то что я тебе написал в исходнике чекпоинтов,а плагин unlimited_money оставить без изменений
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaHeK
сообщение 11.4.2013, 6:19
Сообщение #10


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Код
                set_pdata_int(id, OFFSET_CSMONEY, curr_money+reward)
            
                message_begin(MSG_ONE, g_msgMoney, _, id)
                write_long(curr_money+reward)
                write_byte(1)
                message_end()

->
Код
cs_set_user_money_ul(id, curr_money+reward)


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 11.4.2013, 12:52
Сообщение #11
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

judoist31,
Нету почемуто

cs_set_user_money
cs_get_user_money

Чекпоинт
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <dhudmessage>
#include <WPMGPrintChatColor>
#include <money_ul>

#define PLUGIN "Checkpoints"
#define VERSION "0.6"
#define AUTHOR "Psycrow"

#define GreenCP         "models/n21_deathrun/checkpoints/checkpoint-green.mdl"
#define BlueCP             "models/n21_deathrun/checkpoints/checkpoint-blue.mdl"
#define OrangeCP         "models/n21_deathrun/checkpoints/checkpoint-orange.mdl"
#define PurpleCP         "models/n21_deathrun/checkpoints/checkpoint-purple.mdl"
#define YellowCP         "models/n21_deathrun/checkpoints/checkpoint-yellow.mdl"
#define FinishCP         "models/n21_deathrun/checkpoints/checkpoint-finish.mdl"

#define DHUD_POSITION 0, 255, 0, -1.0, 0.8, 2, 1.05, 1.05, 0.05, 3.0
#define MAX_MONEY 16000
#define MAX_CHECKPOINTS_LOAD 10

#if cellbits == 32
    #define OFFSET_CSMONEY 115
#else
    #define OFFSET_CSMONEY 140
#endif

new
g_TotalCheckpoints,                     //Кол-во загруженных чекпоинтов на карте
g_Checkpoint_id[MAX_CHECKPOINTS_LOAD],            //id энтити чекпоинта
bool: g_Checkpoint_complete[MAX_CHECKPOINTS_LOAD][33],     //Пройден ли чекпоинт(1) игроком(2)
Float: g_orig_x[MAX_CHECKPOINTS_LOAD],            //Координата x
Float: g_orig_y[MAX_CHECKPOINTS_LOAD],            //Координата y
Float: g_orig_z[MAX_CHECKPOINTS_LOAD],            //Координата z
g_msgMoney,
bool: g_save_cpl,                    //Изменения в расположении чекпоинтов
g_Finished[33],                        //Кто пришел к финишу.
g_fin_pos                        //Собственно, каким

public plugin_natives()    
    register_native("n21_teleport_cp", "teleport", 1)

public plugin_precache()
{
    precache_model(GreenCP)
    precache_model(BlueCP)
    precache_model(OrangeCP)
    precache_model(PurpleCP)
    precache_model(YellowCP)
    precache_model(FinishCP)
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("cv_checkpoint_money","1") // Выдавать ли деньги?
    register_cvar("cv_checkpoint_teleport","1") // Возрождать ли у чекпоинта?
    register_cvar("cv_checkpoint_money_give","300") // Сколько выдавать денег на прохождение обычных чекпоинтов
    register_cvar("cv_checkpoint_money_koef","1") // Умножать ли награду за пройденный чекпоинт на номер чекпоинта?
    register_cvar("cv_checkpoint_money_last_first","6000") // Сколько выдавать денег за пройденный последний чекпоинт на первом месте
    register_cvar("cv_checkpoint_money_last_second","4000") // На втором месте
    register_cvar("cv_checkpoint_money_last_third","3500") // На третьем месте
    
    register_clcmd( "say /checkpoint", "Checkpoint_menu" )
    register_clcmd( "say_team /checkpoint", "Checkpoint_menu" )
    RegisterHam(Ham_Spawn, "player", "hook_spawn_post", 1)
    register_forward(FM_Touch,"fwdTouch")
    register_logevent("Startround", 2, "1=Round_Start")
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_rounddraw") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_terwin") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_ctwin") // Если раунд енд не будет работать
    register_logevent("EndRound", 2, "0=World triggered","1=Round_End")
    
    get_maps_cfg()
    set_checkpoints()
    
    g_msgMoney = get_user_msgid("Money")
}

public get_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_Dir, i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    i_Dir = open_dir(cfgDir, i_File, charsmax(i_File))
    
    if (i_Dir)
    {
        while (next_file(i_Dir, i_File, charsmax(i_File)))
        {
            if (i_File[0] == '.')
                continue
                
            if(equal(map, i_File))
            {
                format(i_File,128,"%s/%s",cfgDir, i_File)
                get_checkpoints(i_File)
            }
        }
    }
}

public set_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    format(i_File,128,"%s/%s",cfgDir, map)
    
    delete_file(i_File)
    if(g_TotalCheckpoints != 0)
        for(new i=0; i<g_TotalCheckpoints; i++)
        {
            new text[128], Float:fOrigin[3]
            pev(g_Checkpoint_id[i],pev_origin,fOrigin)
            format(text,128,"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
            write_file(i_File, text, i)
        }
}

public get_checkpoints(i_File[128])
{    
    new
    i_orig_x[32],
    i_orig_y[32],
    i_orig_z[32],
    sfLineData[512],
    file = fopen(i_File,"rt")
    
    while(file && !feof(file))
    {
        fgets(file, sfLineData, charsmax(sfLineData))
            
        if (containi(sfLineData,";") > -1)
            continue
            
        parse(sfLineData, i_orig_x, charsmax(i_orig_x), i_orig_y, charsmax(i_orig_y), i_orig_z, charsmax(i_orig_z))
                    
        g_orig_x[g_TotalCheckpoints] = str_to_float(i_orig_x)
        g_orig_y[g_TotalCheckpoints] = str_to_float(i_orig_y)
        g_orig_z[g_TotalCheckpoints] = str_to_float(i_orig_z)
            
        g_TotalCheckpoints++
        
        if(get_count_lines(i_File) == g_TotalCheckpoints) // Чтобы не считало пустых строк
            break
        
        if(g_TotalCheckpoints >= MAX_CHECKPOINTS_LOAD)
        {
            server_print("[%s] Reached checkpoints limit", PLUGIN)
            break
        }
    }
    
    if(file)
        fclose(file)
    
    if(g_TotalCheckpoints == 1)
        server_print("[%s] Loaded one Checkpoint", PLUGIN)
    else
        server_print("[%s] Loaded %d Checkpoints", PLUGIN, g_TotalCheckpoints)
}

public set_checkpoints()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        new Ent = create_entity("info_target")
        if(is_valid_ent(Ent))
        {    
            g_Checkpoint_id[i] = Ent
            
            if(i == g_TotalCheckpoints-1)
                entity_set_model(Ent, FinishCP)
            else
            {
                new color = random_num(0,4)
                switch(color)
                {
                    case 0: entity_set_model(Ent, GreenCP)
                    case 1: entity_set_model(Ent, BlueCP)
                    case 2: entity_set_model(Ent, OrangeCP)
                    case 3: entity_set_model(Ent, PurpleCP)
                    case 4: entity_set_model(Ent, YellowCP)
                }
            }
                
            new Float:fOrigin[3]
            fOrigin[0] = g_orig_x[i]
            fOrigin[1] = g_orig_y[i]
            fOrigin[2] = g_orig_z[i]
            entity_set_origin(Ent, fOrigin)
            set_pev(Ent, pev_sequence, 0)
            set_pev(Ent, pev_framerate, 1.0)
            entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
            entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
            set_pev(Ent,pev_movetype, MOVETYPE_FLY)
            set_pev(Ent, pev_effects, 8)
        }
    }
}

public Startround()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_TRIGGER)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
    g_fin_pos = 0
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public EndRound()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_NOT)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
            
    g_fin_pos = 0
    
    //Тут можно вставить тройку победителей, используя g_Finished[id] как позицию
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public hook_spawn_post(id)
    if(get_cvar_num("cv_checkpoint_teleport"))
        teleport(id)

public teleport(id)
{
    for(new i=g_TotalCheckpoints-1; i>=0; i--)
    {
        if(g_Checkpoint_complete[i][id])
        {
            new Float:origin[3]
            entity_get_vector(g_Checkpoint_id[i],EV_VEC_origin,origin)
            set_pev(id, pev_origin, origin)
            break
        }
    }
}

public fwdTouch(ent, id)
{
    if(!is_user_alive(id) || !is_user_connected(id))
        return
    
    if(!is_valid_ent(ent))
        return

    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        if(ent == g_Checkpoint_id[i] && !g_Checkpoint_complete[i][id])    
        {        
            g_Checkpoint_complete[i][id] = true
            
            set_dhudmessage(DHUD_POSITION)
            new reward
            
            if(i == g_TotalCheckpoints-1)
            {
                g_fin_pos++
                show_dhudmessage(id, "Р’С‹ прошли через последний чекпоинт Рё финишировали РЅР°^n %d месте", g_fin_pos)
                new pl_name[32]
                get_user_name(id, pl_name, 31)     
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР?РіСЂРѕРє !g%s !tпришел Рє финишу РЅР° !g%d !tместе", PLUGIN, pl_name, g_fin_pos)
                
                if(g_fin_pos == 1)
                    reward = get_cvar_num("cv_checkpoint_money_last_first")
                else if(g_fin_pos == 2)
                    reward = get_cvar_num("cv_checkpoint_money_last_second")
                else if(g_fin_pos == 3)
                    reward = get_cvar_num("cv_checkpoint_money_last_third")
                else
                {
                    reward = get_cvar_num("cv_checkpoint_money_give")
                    if(get_cvar_num("cv_checkpoint_money_koef"))
                        reward = reward * (i+1)
                }
                
                g_Finished[id] = g_fin_pos
            }
            else
            {
                reward = get_cvar_num("cv_checkpoint_money_give")
                if(get_cvar_num("cv_checkpoint_money_koef"))
                    reward = reward * (i+1)
                show_dhudmessage(id, "Р’С‹ прошли через чекпоинт %d",i+1)
            }
            if(get_cvar_num("cv_checkpoint_money"))
            {
                new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
    
                if(curr_money+reward > MAX_MONEY)
                    reward = MAX_MONEY-curr_money
            
                set_pdata_int(id, OFFSET_CSMONEY, curr_money+reward)
            
                message_begin(MSG_ONE, g_msgMoney, _, id)
                write_long(curr_money+reward)
                write_byte(1)
                message_end()
            
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР’С‹ получаете !g%d$", PLUGIN, reward)
            }
        }
    }
}

public Checkpoint_menu(id)
{
    if(!(get_user_flags(id) & ADMIN_BAN))
    {
        PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРЈ вас нет прав РЅР° эту функцию", PLUGIN)
        return PLUGIN_HANDLED
    }    
    
    new menu_name[90]
    format(menu_name, 90, "\rРасстановка чекпоинтов^n\dТекущий чекпоинт: %d/%d", g_TotalCheckpoints+1, MAX_CHECKPOINTS_LOAD+1)

    new i_menu = menu_create(menu_name, "menu_handler")
    
    if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
        menu_additem(i_menu, "\dУстановить Чекпоинт", "1", 0)
    else menu_additem(i_menu, "\wУстановить Чекпоинт", "1", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить предыдущий Чекпоинт", "2", 0)
    else menu_additem(i_menu, "\wУдалить предыдущий Чекпоинт", "2", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить РІСЃРµ Чекпоинты", "3", 0)
    else menu_additem(i_menu, "\wУдалить РІСЃРµ Чекпоинты", "3", 0)
    
    if(!g_save_cpl)
        menu_additem(i_menu, "\dСохранить изменения", "4", 0)
    else menu_additem(i_menu, "\wСохранить изменения", "4", 0)

    menu_setprop(i_menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(i_menu, MPROP_EXITNAME, "\yВыход")
    menu_display(id, i_menu, 0)
        
    return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    switch(i_Key)
    {
        case 1:
        {
            if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tПревышен максимум", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
                        
            new Ent = create_entity("info_target")
            if(is_valid_ent(Ent))
            {    
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт установлен", PLUGIN)

                g_save_cpl = true
                g_TotalCheckpoints++
                
                g_Checkpoint_id[g_TotalCheckpoints-1] = Ent
                entity_set_model(Ent, FinishCP)
                
                new Float:fOrigin[3]
                fm_get_aim_origin(id, fOrigin)
                fOrigin[2]+=60
                
                entity_set_origin(Ent, fOrigin)
                set_pev(Ent, pev_sequence, 0)
                set_pev(Ent, pev_framerate, 1.0)
                entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
                entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
                set_pev(Ent,pev_movetype, MOVETYPE_FLY)
                set_pev(Ent, pev_effects, 8)
                
                if(g_TotalCheckpoints != 1)
                {
                    for(new i=0; i<g_TotalCheckpoints-1; i++)
                    {
                        new color = random_num(0,4)
                        switch(color)
                        {
                            case 0: entity_set_model(g_Checkpoint_id[i], GreenCP)
                            case 1: entity_set_model(g_Checkpoint_id[i], BlueCP)
                            case 2: entity_set_model(g_Checkpoint_id[i], OrangeCP)
                            case 3: entity_set_model(g_Checkpoint_id[i], PurpleCP)
                            case 4: entity_set_model(g_Checkpoint_id[i], YellowCP)
                        }
                    }
                }
            }
            Checkpoint_menu(id)
        }
        case 2:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт удален", PLUGIN)
            
            g_save_cpl = true
            g_TotalCheckpoints--
            
            remove_entity(g_Checkpoint_id[g_TotalCheckpoints])
            
            if(g_TotalCheckpoints != 0)
                entity_set_model(g_Checkpoint_id[g_TotalCheckpoints-1], FinishCP)
                
            Checkpoint_menu(id)
        }
        case 3:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = true
            
            for(new i=0; i<g_TotalCheckpoints; i++)
                remove_entity(g_Checkpoint_id[i])
                
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tБыло удалено !g%d !tЧекпоинтов", PLUGIN, g_TotalCheckpoints)
                
            g_TotalCheckpoints = 0
            
            Checkpoint_menu(id)
        }
        case 4:
        {
            if(!g_save_cpl)
            {
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = false
            set_maps_cfg()
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tСохранено", PLUGIN)
            Checkpoint_menu(id)
        }
    }
    return PLUGIN_HANDLED
}

stock get_count_lines(szFileName[])
{
    new fHandle = fopen(szFileName, "rt")
    if(!fHandle)
        return 0

    new szBuffer[2], iLines

    while(!feof(fHandle))
    {
        fgets(fHandle, szBuffer, 1)
        if (!szBuffer[0])
            continue
                
        iLines++
    }

    fclose(fHandle)
    return iLines
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaHeK
сообщение 11.4.2013, 14:52
Сообщение #12


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Цитата(1210s @ 11.4.2013, 14:52) *
judoist31,
Нету почемуто

cs_set_user_money
cs_get_user_money

Чекпоинт
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <dhudmessage>
#include <WPMGPrintChatColor>
#include <money_ul>

#define PLUGIN "Checkpoints"
#define VERSION "0.6"
#define AUTHOR "Psycrow"

#define GreenCP         "models/n21_deathrun/checkpoints/checkpoint-green.mdl"
#define BlueCP             "models/n21_deathrun/checkpoints/checkpoint-blue.mdl"
#define OrangeCP         "models/n21_deathrun/checkpoints/checkpoint-orange.mdl"
#define PurpleCP         "models/n21_deathrun/checkpoints/checkpoint-purple.mdl"
#define YellowCP         "models/n21_deathrun/checkpoints/checkpoint-yellow.mdl"
#define FinishCP         "models/n21_deathrun/checkpoints/checkpoint-finish.mdl"

#define DHUD_POSITION 0, 255, 0, -1.0, 0.8, 2, 1.05, 1.05, 0.05, 3.0
#define MAX_MONEY 16000
#define MAX_CHECKPOINTS_LOAD 10

#if cellbits == 32
    #define OFFSET_CSMONEY 115
#else
    #define OFFSET_CSMONEY 140
#endif

new
g_TotalCheckpoints,                     //Кол-во загруженных чекпоинтов на карте
g_Checkpoint_id[MAX_CHECKPOINTS_LOAD],            //id энтити чекпоинта
bool: g_Checkpoint_complete[MAX_CHECKPOINTS_LOAD][33],     //Пройден ли чекпоинт(1) игроком(2)
Float: g_orig_x[MAX_CHECKPOINTS_LOAD],            //Координата x
Float: g_orig_y[MAX_CHECKPOINTS_LOAD],            //Координата y
Float: g_orig_z[MAX_CHECKPOINTS_LOAD],            //Координата z
g_msgMoney,
bool: g_save_cpl,                    //Изменения в расположении чекпоинтов
g_Finished[33],                        //Кто пришел к финишу.
g_fin_pos                        //Собственно, каким

public plugin_natives()    
    register_native("n21_teleport_cp", "teleport", 1)

public plugin_precache()
{
    precache_model(GreenCP)
    precache_model(BlueCP)
    precache_model(OrangeCP)
    precache_model(PurpleCP)
    precache_model(YellowCP)
    precache_model(FinishCP)
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("cv_checkpoint_money","1") // Выдавать ли деньги?
    register_cvar("cv_checkpoint_teleport","1") // Возрождать ли у чекпоинта?
    register_cvar("cv_checkpoint_money_give","300") // Сколько выдавать денег на прохождение обычных чекпоинтов
    register_cvar("cv_checkpoint_money_koef","1") // Умножать ли награду за пройденный чекпоинт на номер чекпоинта?
    register_cvar("cv_checkpoint_money_last_first","6000") // Сколько выдавать денег за пройденный последний чекпоинт на первом месте
    register_cvar("cv_checkpoint_money_last_second","4000") // На втором месте
    register_cvar("cv_checkpoint_money_last_third","3500") // На третьем месте
    
    register_clcmd( "say /checkpoint", "Checkpoint_menu" )
    register_clcmd( "say_team /checkpoint", "Checkpoint_menu" )
    RegisterHam(Ham_Spawn, "player", "hook_spawn_post", 1)
    register_forward(FM_Touch,"fwdTouch")
    register_logevent("Startround", 2, "1=Round_Start")
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_rounddraw") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_terwin") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_ctwin") // Если раунд енд не будет работать
    register_logevent("EndRound", 2, "0=World triggered","1=Round_End")
    
    get_maps_cfg()
    set_checkpoints()
    
    g_msgMoney = get_user_msgid("Money")
}

public get_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_Dir, i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    i_Dir = open_dir(cfgDir, i_File, charsmax(i_File))
    
    if (i_Dir)
    {
        while (next_file(i_Dir, i_File, charsmax(i_File)))
        {
            if (i_File[0] == '.')
                continue
                
            if(equal(map, i_File))
            {
                format(i_File,128,"%s/%s",cfgDir, i_File)
                get_checkpoints(i_File)
            }
        }
    }
}

public set_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    format(i_File,128,"%s/%s",cfgDir, map)
    
    delete_file(i_File)
    if(g_TotalCheckpoints != 0)
        for(new i=0; i<g_TotalCheckpoints; i++)
        {
            new text[128], Float:fOrigin[3]
            pev(g_Checkpoint_id[i],pev_origin,fOrigin)
            format(text,128,"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
            write_file(i_File, text, i)
        }
}

public get_checkpoints(i_File[128])
{    
    new
    i_orig_x[32],
    i_orig_y[32],
    i_orig_z[32],
    sfLineData[512],
    file = fopen(i_File,"rt")
    
    while(file && !feof(file))
    {
        fgets(file, sfLineData, charsmax(sfLineData))
            
        if (containi(sfLineData,";") > -1)
            continue
            
        parse(sfLineData, i_orig_x, charsmax(i_orig_x), i_orig_y, charsmax(i_orig_y), i_orig_z, charsmax(i_orig_z))
                    
        g_orig_x[g_TotalCheckpoints] = str_to_float(i_orig_x)
        g_orig_y[g_TotalCheckpoints] = str_to_float(i_orig_y)
        g_orig_z[g_TotalCheckpoints] = str_to_float(i_orig_z)
            
        g_TotalCheckpoints++
        
        if(get_count_lines(i_File) == g_TotalCheckpoints) // Чтобы не считало пустых строк
            break
        
        if(g_TotalCheckpoints >= MAX_CHECKPOINTS_LOAD)
        {
            server_print("[%s] Reached checkpoints limit", PLUGIN)
            break
        }
    }
    
    if(file)
        fclose(file)
    
    if(g_TotalCheckpoints == 1)
        server_print("[%s] Loaded one Checkpoint", PLUGIN)
    else
        server_print("[%s] Loaded %d Checkpoints", PLUGIN, g_TotalCheckpoints)
}

public set_checkpoints()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        new Ent = create_entity("info_target")
        if(is_valid_ent(Ent))
        {    
            g_Checkpoint_id[i] = Ent
            
            if(i == g_TotalCheckpoints-1)
                entity_set_model(Ent, FinishCP)
            else
            {
                new color = random_num(0,4)
                switch(color)
                {
                    case 0: entity_set_model(Ent, GreenCP)
                    case 1: entity_set_model(Ent, BlueCP)
                    case 2: entity_set_model(Ent, OrangeCP)
                    case 3: entity_set_model(Ent, PurpleCP)
                    case 4: entity_set_model(Ent, YellowCP)
                }
            }
                
            new Float:fOrigin[3]
            fOrigin[0] = g_orig_x[i]
            fOrigin[1] = g_orig_y[i]
            fOrigin[2] = g_orig_z[i]
            entity_set_origin(Ent, fOrigin)
            set_pev(Ent, pev_sequence, 0)
            set_pev(Ent, pev_framerate, 1.0)
            entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
            entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
            set_pev(Ent,pev_movetype, MOVETYPE_FLY)
            set_pev(Ent, pev_effects, 8)
        }
    }
}

public Startround()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_TRIGGER)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
    g_fin_pos = 0
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public EndRound()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_NOT)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
            
    g_fin_pos = 0
    
    //Тут можно вставить тройку победителей, используя g_Finished[id] как позицию
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public hook_spawn_post(id)
    if(get_cvar_num("cv_checkpoint_teleport"))
        teleport(id)

public teleport(id)
{
    for(new i=g_TotalCheckpoints-1; i>=0; i--)
    {
        if(g_Checkpoint_complete[i][id])
        {
            new Float:origin[3]
            entity_get_vector(g_Checkpoint_id[i],EV_VEC_origin,origin)
            set_pev(id, pev_origin, origin)
            break
        }
    }
}

public fwdTouch(ent, id)
{
    if(!is_user_alive(id) || !is_user_connected(id))
        return
    
    if(!is_valid_ent(ent))
        return

    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        if(ent == g_Checkpoint_id[i] && !g_Checkpoint_complete[i][id])    
        {        
            g_Checkpoint_complete[i][id] = true
            
            set_dhudmessage(DHUD_POSITION)
            new reward
            
            if(i == g_TotalCheckpoints-1)
            {
                g_fin_pos++
                show_dhudmessage(id, "Р’С‹ прошли через последний чекпоинт Рё финишировали РЅР°^n %d месте", g_fin_pos)
                new pl_name[32]
                get_user_name(id, pl_name, 31)     
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР�РіСЂРѕРє !g%s !tпришел Рє финишу РЅР° !g%d !tместе", PLUGIN, pl_name, g_fin_pos)
                
                if(g_fin_pos == 1)
                    reward = get_cvar_num("cv_checkpoint_money_last_first")
                else if(g_fin_pos == 2)
                    reward = get_cvar_num("cv_checkpoint_money_last_second")
                else if(g_fin_pos == 3)
                    reward = get_cvar_num("cv_checkpoint_money_last_third")
                else
                {
                    reward = get_cvar_num("cv_checkpoint_money_give")
                    if(get_cvar_num("cv_checkpoint_money_koef"))
                        reward = reward * (i+1)
                }
                
                g_Finished[id] = g_fin_pos
            }
            else
            {
                reward = get_cvar_num("cv_checkpoint_money_give")
                if(get_cvar_num("cv_checkpoint_money_koef"))
                    reward = reward * (i+1)
                show_dhudmessage(id, "Р’С‹ прошли через чекпоинт %d",i+1)
            }
            if(get_cvar_num("cv_checkpoint_money"))
            {
                new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
    
                if(curr_money+reward > MAX_MONEY)
                    reward = MAX_MONEY-curr_money
            
                set_pdata_int(id, OFFSET_CSMONEY, curr_money+reward)
            
                message_begin(MSG_ONE, g_msgMoney, _, id)
                write_long(curr_money+reward)
                write_byte(1)
                message_end()
            
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР’С‹ получаете !g%d$", PLUGIN, reward)
            }
        }
    }
}

public Checkpoint_menu(id)
{
    if(!(get_user_flags(id) & ADMIN_BAN))
    {
        PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРЈ вас нет прав РЅР° эту функцию", PLUGIN)
        return PLUGIN_HANDLED
    }    
    
    new menu_name[90]
    format(menu_name, 90, "\rРасстановка чекпоинтов^n\dТекущий чекпоинт: %d/%d", g_TotalCheckpoints+1, MAX_CHECKPOINTS_LOAD+1)

    new i_menu = menu_create(menu_name, "menu_handler")
    
    if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
        menu_additem(i_menu, "\dУстановить Чекпоинт", "1", 0)
    else menu_additem(i_menu, "\wУстановить Чекпоинт", "1", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить предыдущий Чекпоинт", "2", 0)
    else menu_additem(i_menu, "\wУдалить предыдущий Чекпоинт", "2", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить РІСЃРµ Чекпоинты", "3", 0)
    else menu_additem(i_menu, "\wУдалить РІСЃРµ Чекпоинты", "3", 0)
    
    if(!g_save_cpl)
        menu_additem(i_menu, "\dСохранить изменения", "4", 0)
    else menu_additem(i_menu, "\wСохранить изменения", "4", 0)

    menu_setprop(i_menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(i_menu, MPROP_EXITNAME, "\yВыход")
    menu_display(id, i_menu, 0)
        
    return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    switch(i_Key)
    {
        case 1:
        {
            if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tПревышен максимум", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
                        
            new Ent = create_entity("info_target")
            if(is_valid_ent(Ent))
            {    
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт установлен", PLUGIN)

                g_save_cpl = true
                g_TotalCheckpoints++
                
                g_Checkpoint_id[g_TotalCheckpoints-1] = Ent
                entity_set_model(Ent, FinishCP)
                
                new Float:fOrigin[3]
                fm_get_aim_origin(id, fOrigin)
                fOrigin[2]+=60
                
                entity_set_origin(Ent, fOrigin)
                set_pev(Ent, pev_sequence, 0)
                set_pev(Ent, pev_framerate, 1.0)
                entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
                entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
                set_pev(Ent,pev_movetype, MOVETYPE_FLY)
                set_pev(Ent, pev_effects, 8)
                
                if(g_TotalCheckpoints != 1)
                {
                    for(new i=0; i<g_TotalCheckpoints-1; i++)
                    {
                        new color = random_num(0,4)
                        switch(color)
                        {
                            case 0: entity_set_model(g_Checkpoint_id[i], GreenCP)
                            case 1: entity_set_model(g_Checkpoint_id[i], BlueCP)
                            case 2: entity_set_model(g_Checkpoint_id[i], OrangeCP)
                            case 3: entity_set_model(g_Checkpoint_id[i], PurpleCP)
                            case 4: entity_set_model(g_Checkpoint_id[i], YellowCP)
                        }
                    }
                }
            }
            Checkpoint_menu(id)
        }
        case 2:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт удален", PLUGIN)
            
            g_save_cpl = true
            g_TotalCheckpoints--
            
            remove_entity(g_Checkpoint_id[g_TotalCheckpoints])
            
            if(g_TotalCheckpoints != 0)
                entity_set_model(g_Checkpoint_id[g_TotalCheckpoints-1], FinishCP)
                
            Checkpoint_menu(id)
        }
        case 3:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = true
            
            for(new i=0; i<g_TotalCheckpoints; i++)
                remove_entity(g_Checkpoint_id[i])
                
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tБыло удалено !g%d !tЧекпоинтов", PLUGIN, g_TotalCheckpoints)
                
            g_TotalCheckpoints = 0
            
            Checkpoint_menu(id)
        }
        case 4:
        {
            if(!g_save_cpl)
            {
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = false
            set_maps_cfg()
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tСохранено", PLUGIN)
            Checkpoint_menu(id)
        }
    }
    return PLUGIN_HANDLED
}

stock get_count_lines(szFileName[])
{
    new fHandle = fopen(szFileName, "rt")
    if(!fHandle)
        return 0

    new szBuffer[2], iLines

    while(!feof(fHandle))
    {
        fgets(fHandle, szBuffer, 1)
        if (!szBuffer[0])
            continue
                
        iLines++
    }

    fclose(fHandle)
    return iLines
}

Сообщение выше прочитай.


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 11.4.2013, 16:47
Сообщение #13
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Ванчо,
можешь конкретней сказать что чего и где делать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 11.4.2013, 23:47
Сообщение #14
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Если я правельно понял( то вот так я сделал



Скрытый текст
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <dhudmessage>
#include <WPMGPrintChatColor>

#define PLUGIN "Checkpoints"
#define VERSION "0.6"
#define AUTHOR "Psycrow"

#define GreenCP         "models/n21_deathrun/checkpoints/checkpoint-green.mdl"
#define BlueCP             "models/n21_deathrun/checkpoints/checkpoint-blue.mdl"
#define OrangeCP         "models/n21_deathrun/checkpoints/checkpoint-orange.mdl"
#define PurpleCP         "models/n21_deathrun/checkpoints/checkpoint-purple.mdl"
#define YellowCP         "models/n21_deathrun/checkpoints/checkpoint-yellow.mdl"
#define FinishCP         "models/n21_deathrun/checkpoints/checkpoint-finish.mdl"

#define DHUD_POSITION 0, 255, 0, -1.0, 0.8, 2, 1.05, 1.05, 0.05, 3.0
#define MAX_MONEY 16000
#define MAX_CHECKPOINTS_LOAD 10

#if cellbits == 32
    #define OFFSET_CSMONEY 115
#else
    #define OFFSET_CSMONEY 140
#endif

new
g_TotalCheckpoints,                     //Кол-во загруженных чекпоинтов на карте
g_Checkpoint_id[MAX_CHECKPOINTS_LOAD],            //id энтити чекпоинта
bool: g_Checkpoint_complete[MAX_CHECKPOINTS_LOAD][33],     //Пройден ли чекпоинт(1) игроком(2)
Float: g_orig_x[MAX_CHECKPOINTS_LOAD],            //Координата x
Float: g_orig_y[MAX_CHECKPOINTS_LOAD],            //Координата y
Float: g_orig_z[MAX_CHECKPOINTS_LOAD],            //Координата z
g_msgMoney,
bool: g_save_cpl,                    //Изменения в расположении чекпоинтов
g_Finished[33],                        //Кто пришел к финишу.
g_fin_pos                        //Собственно, каким

public plugin_natives()    
    register_native("n21_teleport_cp", "teleport", 1)

public plugin_precache()
{
    precache_model(GreenCP)
    precache_model(BlueCP)
    precache_model(OrangeCP)
    precache_model(PurpleCP)
    precache_model(YellowCP)
    precache_model(FinishCP)
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("cv_checkpoint_money","1") // Выдавать ли деньги?
    register_cvar("cv_checkpoint_teleport","1") // Возрождать ли у чекпоинта?
    register_cvar("cv_checkpoint_money_give","300") // Сколько выдавать денег на прохождение обычных чекпоинтов
    register_cvar("cv_checkpoint_money_koef","1") // Умножать ли награду за пройденный чекпоинт на номер чекпоинта?
    register_cvar("cv_checkpoint_money_last_first","6000") // Сколько выдавать денег за пройденный последний чекпоинт на первом месте
    register_cvar("cv_checkpoint_money_last_second","4000") // На втором месте
    register_cvar("cv_checkpoint_money_last_third","3500") // На третьем месте
    
    register_clcmd( "say /checkpoint", "Checkpoint_menu" )
    register_clcmd( "say_team /checkpoint", "Checkpoint_menu" )
    RegisterHam(Ham_Spawn, "player", "hook_spawn_post", 1)
    register_forward(FM_Touch,"fwdTouch")
    register_logevent("Startround", 2, "1=Round_Start")
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_rounddraw") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_terwin") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_ctwin") // Если раунд енд не будет работать
    register_logevent("EndRound", 2, "0=World triggered","1=Round_End")
    
    get_maps_cfg()
    set_checkpoints()
    
    g_msgMoney = get_user_msgid("Money")
}

public get_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_Dir, i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    i_Dir = open_dir(cfgDir, i_File, charsmax(i_File))
    
    if (i_Dir)
    {
        while (next_file(i_Dir, i_File, charsmax(i_File)))
        {
            if (i_File[0] == '.')
                continue
                
            if(equal(map, i_File))
            {
                format(i_File,128,"%s/%s",cfgDir, i_File)
                get_checkpoints(i_File)
            }
        }
    }
}

public set_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    format(i_File,128,"%s/%s",cfgDir, map)
    
    delete_file(i_File)
    if(g_TotalCheckpoints != 0)
        for(new i=0; i<g_TotalCheckpoints; i++)
        {
            new text[128], Float:fOrigin[3]
            pev(g_Checkpoint_id[i],pev_origin,fOrigin)
            format(text,128,"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
            write_file(i_File, text, i)
        }
}

public get_checkpoints(i_File[128])
{    
    new
    i_orig_x[32],
    i_orig_y[32],
    i_orig_z[32],
    sfLineData[512],
    file = fopen(i_File,"rt")
    
    while(file && !feof(file))
    {
        fgets(file, sfLineData, charsmax(sfLineData))
            
        if (containi(sfLineData,";") > -1)
            continue
            
        parse(sfLineData, i_orig_x, charsmax(i_orig_x), i_orig_y, charsmax(i_orig_y), i_orig_z, charsmax(i_orig_z))
                    
        g_orig_x[g_TotalCheckpoints] = str_to_float(i_orig_x)
        g_orig_y[g_TotalCheckpoints] = str_to_float(i_orig_y)
        g_orig_z[g_TotalCheckpoints] = str_to_float(i_orig_z)
            
        g_TotalCheckpoints++
        
        if(get_count_lines(i_File) == g_TotalCheckpoints) // Чтобы не считало пустых строк
            break
        
        if(g_TotalCheckpoints >= MAX_CHECKPOINTS_LOAD)
        {
            server_print("[%s] Reached checkpoints limit", PLUGIN)
            break
        }
    }
    
    if(file)
        fclose(file)
    
    if(g_TotalCheckpoints == 1)
        server_print("[%s] Loaded one Checkpoint", PLUGIN)
    else
        server_print("[%s] Loaded %d Checkpoints", PLUGIN, g_TotalCheckpoints)
}

public set_checkpoints()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        new Ent = create_entity("info_target")
        if(is_valid_ent(Ent))
        {    
            g_Checkpoint_id[i] = Ent
            
            if(i == g_TotalCheckpoints-1)
                entity_set_model(Ent, FinishCP)
            else
            {
                new color = random_num(0,4)
                switch(color)
                {
                    case 0: entity_set_model(Ent, GreenCP)
                    case 1: entity_set_model(Ent, BlueCP)
                    case 2: entity_set_model(Ent, OrangeCP)
                    case 3: entity_set_model(Ent, PurpleCP)
                    case 4: entity_set_model(Ent, YellowCP)
                }
            }
                
            new Float:fOrigin[3]
            fOrigin[0] = g_orig_x[i]
            fOrigin[1] = g_orig_y[i]
            fOrigin[2] = g_orig_z[i]
            entity_set_origin(Ent, fOrigin)
            set_pev(Ent, pev_sequence, 0)
            set_pev(Ent, pev_framerate, 1.0)
            entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
            entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
            set_pev(Ent,pev_movetype, MOVETYPE_FLY)
            set_pev(Ent, pev_effects, 8)
        }
    }
}

public Startround()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_TRIGGER)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
    g_fin_pos = 0
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public EndRound()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_NOT)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
            
    g_fin_pos = 0
    
    //Тут можно вставить тройку победителей, используя g_Finished[id] как позицию
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public hook_spawn_post(id)
    if(get_cvar_num("cv_checkpoint_teleport"))
        teleport(id)

public teleport(id)
{
    for(new i=g_TotalCheckpoints-1; i>=0; i--)
    {
        if(g_Checkpoint_complete[i][id])
        {
            new Float:origin[3]
            entity_get_vector(g_Checkpoint_id[i],EV_VEC_origin,origin)
            set_pev(id, pev_origin, origin)
            break
        }
    }
}

public fwdTouch(ent, id)
{
    if(!is_user_alive(id) || !is_user_connected(id))
        return
    
    if(!is_valid_ent(ent))
        return

    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        if(ent == g_Checkpoint_id[i] && !g_Checkpoint_complete[i][id])    
        {        
            g_Checkpoint_complete[i][id] = true
            
            set_dhudmessage(DHUD_POSITION)
            new reward
            
            if(i == g_TotalCheckpoints-1)
            {
                g_fin_pos++
                show_dhudmessage(id, "Р’С‹ прошли через последний чекпоинт Рё финишировали РЅР°^n %d месте", g_fin_pos)
                new pl_name[32]
                get_user_name(id, pl_name, 31)     
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР?РіСЂРѕРє !g%s !tпришел Рє финишу РЅР° !g%d !tместе", PLUGIN, pl_name, g_fin_pos)
                
                if(g_fin_pos == 1)
                    reward = get_cvar_num("cv_checkpoint_money_last_first")
                else if(g_fin_pos == 2)
                    reward = get_cvar_num("cv_checkpoint_money_last_second")
                else if(g_fin_pos == 3)
                    reward = get_cvar_num("cv_checkpoint_money_last_third")
                else
                {
                    reward = get_cvar_num("cv_checkpoint_money_give")
                    if(get_cvar_num("cv_checkpoint_money_koef"))
                        reward = reward * (i+1)
                }
                
                g_Finished[id] = g_fin_pos
            }
            else
            {
                reward = get_cvar_num("cv_checkpoint_money_give")
                if(get_cvar_num("cv_checkpoint_money_koef"))
                    reward = reward * (i+1)
                show_dhudmessage(id, "Р’С‹ прошли через чекпоинт %d",i+1)
            }
            if(get_cvar_num("cv_checkpoint_money"))
            {
                new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
    
                if(curr_money+reward > MAX_MONEY)
                    reward = MAX_MONEY-curr_money
            
                set_pdata_int(id, OFFSET_CSMONEY, curr_money+reward)
            
                message_begin(MSG_ONE, g_msgMoney, _, id)
                write_long(curr_money+reward)
                write_byte(1)
                message_end()
                cs_set_user_money_ul(id, curr_money+reward)
            
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР’С‹ получаете !g%d$", PLUGIN, reward)
            }
        }
    }
}

public Checkpoint_menu(id)
{
    if(!(get_user_flags(id) & ADMIN_BAN))
    {
        PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРЈ вас нет прав РЅР° эту функцию", PLUGIN)
        return PLUGIN_HANDLED
    }    
    
    new menu_name[90]
    format(menu_name, 90, "\rРасстановка чекпоинтов^n\dТекущий чекпоинт: %d/%d", g_TotalCheckpoints+1, MAX_CHECKPOINTS_LOAD+1)

    new i_menu = menu_create(menu_name, "menu_handler")
    
    if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
        menu_additem(i_menu, "\dУстановить Чекпоинт", "1", 0)
    else menu_additem(i_menu, "\wУстановить Чекпоинт", "1", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить предыдущий Чекпоинт", "2", 0)
    else menu_additem(i_menu, "\wУдалить предыдущий Чекпоинт", "2", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить РІСЃРµ Чекпоинты", "3", 0)
    else menu_additem(i_menu, "\wУдалить РІСЃРµ Чекпоинты", "3", 0)
    
    if(!g_save_cpl)
        menu_additem(i_menu, "\dСохранить изменения", "4", 0)
    else menu_additem(i_menu, "\wСохранить изменения", "4", 0)

    menu_setprop(i_menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(i_menu, MPROP_EXITNAME, "\yВыход")
    menu_display(id, i_menu, 0)
        
    return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    switch(i_Key)
    {
        case 1:
        {
            if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tПревышен максимум", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
                        
            new Ent = create_entity("info_target")
            if(is_valid_ent(Ent))
            {    
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт установлен", PLUGIN)

                g_save_cpl = true
                g_TotalCheckpoints++
                
                g_Checkpoint_id[g_TotalCheckpoints-1] = Ent
                entity_set_model(Ent, FinishCP)
                
                new Float:fOrigin[3]
                fm_get_aim_origin(id, fOrigin)
                fOrigin[2]+=60
                
                entity_set_origin(Ent, fOrigin)
                set_pev(Ent, pev_sequence, 0)
                set_pev(Ent, pev_framerate, 1.0)
                entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
                entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
                set_pev(Ent,pev_movetype, MOVETYPE_FLY)
                set_pev(Ent, pev_effects, 8)
                
                if(g_TotalCheckpoints != 1)
                {
                    for(new i=0; i<g_TotalCheckpoints-1; i++)
                    {
                        new color = random_num(0,4)
                        switch(color)
                        {
                            case 0: entity_set_model(g_Checkpoint_id[i], GreenCP)
                            case 1: entity_set_model(g_Checkpoint_id[i], BlueCP)
                            case 2: entity_set_model(g_Checkpoint_id[i], OrangeCP)
                            case 3: entity_set_model(g_Checkpoint_id[i], PurpleCP)
                            case 4: entity_set_model(g_Checkpoint_id[i], YellowCP)
                        }
                    }
                }
            }
            Checkpoint_menu(id)
        }
        case 2:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт удален", PLUGIN)
            
            g_save_cpl = true
            g_TotalCheckpoints--
            
            remove_entity(g_Checkpoint_id[g_TotalCheckpoints])
            
            if(g_TotalCheckpoints != 0)
                entity_set_model(g_Checkpoint_id[g_TotalCheckpoints-1], FinishCP)
                
            Checkpoint_menu(id)
        }
        case 3:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = true
            
            for(new i=0; i<g_TotalCheckpoints; i++)
                remove_entity(g_Checkpoint_id[i])
                
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tБыло удалено !g%d !tЧекпоинтов", PLUGIN, g_TotalCheckpoints)
                
            g_TotalCheckpoints = 0
            
            Checkpoint_menu(id)
        }
        case 4:
        {
            if(!g_save_cpl)
            {
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = false
            set_maps_cfg()
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tСохранено", PLUGIN)
            Checkpoint_menu(id)
        }
    }
    return PLUGIN_HANDLED
}

stock get_count_lines(szFileName[])
{
    new fHandle = fopen(szFileName, "rt")
    if(!fHandle)
        return 0

    new szBuffer[2], iLines

    while(!feof(fHandle))
    {
        fgets(fHandle, szBuffer, 1)
        if (!szBuffer[0])
            continue
                
        iLines++
    }

    fclose(fHandle)
    return iLines
}


Ну ошибку выдает компилятор((

Скрытый текст
Код
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// next21_checkpoints.sma
// F:\new-serv.ru cw\new-serv.ru cw\cstrike\addons\amxmodx\scripting\next21_chec
kpoints.sma(328) : error 017: undefined symbol "cs_set_user_money_ul"
//
// 1 Error.
// Could not locate output file F:\new-serv.ru cw\new-serv.ru cw\cstrike\addons\
amxmodx\scripting\compiled\next21_checkpoints.amx (compile failed).
//
// Compilation Time: 0,41 sec
// ----------------------------------------

Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя judoist31
сообщение 12.4.2013, 3:17
Сообщение #15


Стаж: 14 лет

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

Цитата(1210s @ 12.4.2013, 0:47) *
Если я правельно понял( то вот так я сделал



Скрытый текст
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <dhudmessage>
#include <WPMGPrintChatColor>

#define PLUGIN "Checkpoints"
#define VERSION "0.6"
#define AUTHOR "Psycrow"

#define GreenCP         "models/n21_deathrun/checkpoints/checkpoint-green.mdl"
#define BlueCP             "models/n21_deathrun/checkpoints/checkpoint-blue.mdl"
#define OrangeCP         "models/n21_deathrun/checkpoints/checkpoint-orange.mdl"
#define PurpleCP         "models/n21_deathrun/checkpoints/checkpoint-purple.mdl"
#define YellowCP         "models/n21_deathrun/checkpoints/checkpoint-yellow.mdl"
#define FinishCP         "models/n21_deathrun/checkpoints/checkpoint-finish.mdl"

#define DHUD_POSITION 0, 255, 0, -1.0, 0.8, 2, 1.05, 1.05, 0.05, 3.0
#define MAX_MONEY 16000
#define MAX_CHECKPOINTS_LOAD 10

#if cellbits == 32
    #define OFFSET_CSMONEY 115
#else
    #define OFFSET_CSMONEY 140
#endif

new
g_TotalCheckpoints,                     //Кол-во загруженных чекпоинтов на карте
g_Checkpoint_id[MAX_CHECKPOINTS_LOAD],            //id энтити чекпоинта
bool: g_Checkpoint_complete[MAX_CHECKPOINTS_LOAD][33],     //Пройден ли чекпоинт(1) игроком(2)
Float: g_orig_x[MAX_CHECKPOINTS_LOAD],            //Координата x
Float: g_orig_y[MAX_CHECKPOINTS_LOAD],            //Координата y
Float: g_orig_z[MAX_CHECKPOINTS_LOAD],            //Координата z
g_msgMoney,
bool: g_save_cpl,                    //Изменения в расположении чекпоинтов
g_Finished[33],                        //Кто пришел к финишу.
g_fin_pos                        //Собственно, каким

public plugin_natives()    
    register_native("n21_teleport_cp", "teleport", 1)

public plugin_precache()
{
    precache_model(GreenCP)
    precache_model(BlueCP)
    precache_model(OrangeCP)
    precache_model(PurpleCP)
    precache_model(YellowCP)
    precache_model(FinishCP)
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("cv_checkpoint_money","1") // Выдавать ли деньги?
    register_cvar("cv_checkpoint_teleport","1") // Возрождать ли у чекпоинта?
    register_cvar("cv_checkpoint_money_give","300") // Сколько выдавать денег на прохождение обычных чекпоинтов
    register_cvar("cv_checkpoint_money_koef","1") // Умножать ли награду за пройденный чекпоинт на номер чекпоинта?
    register_cvar("cv_checkpoint_money_last_first","6000") // Сколько выдавать денег за пройденный последний чекпоинт на первом месте
    register_cvar("cv_checkpoint_money_last_second","4000") // На втором месте
    register_cvar("cv_checkpoint_money_last_third","3500") // На третьем месте
    
    register_clcmd( "say /checkpoint", "Checkpoint_menu" )
    register_clcmd( "say_team /checkpoint", "Checkpoint_menu" )
    RegisterHam(Ham_Spawn, "player", "hook_spawn_post", 1)
    register_forward(FM_Touch,"fwdTouch")
    register_logevent("Startround", 2, "1=Round_Start")
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_rounddraw") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_terwin") // Если раунд енд не будет работать
    register_event("SendAudio", "EndRound", "a", "2&%!MRAD_ctwin") // Если раунд енд не будет работать
    register_logevent("EndRound", 2, "0=World triggered","1=Round_End")
    
    get_maps_cfg()
    set_checkpoints()
    
    g_msgMoney = get_user_msgid("Money")
}

public get_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_Dir, i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    i_Dir = open_dir(cfgDir, i_File, charsmax(i_File))
    
    if (i_Dir)
    {
        while (next_file(i_Dir, i_File, charsmax(i_File)))
        {
            if (i_File[0] == '.')
                continue
                
            if(equal(map, i_File))
            {
                format(i_File,128,"%s/%s",cfgDir, i_File)
                get_checkpoints(i_File)
            }
        }
    }
}

public set_maps_cfg()
{
    new map[32]
    get_mapname(map, charsmax(map))
    formatex(map,charsmax(map),"%s.ini",map)
    
    new cfgDir[64], i_File[128]
    get_configsdir(cfgDir,31)
    formatex(cfgDir,63,"%s/next21_checkpoints",cfgDir)
    
    format(i_File,128,"%s/%s",cfgDir, map)
    
    delete_file(i_File)
    if(g_TotalCheckpoints != 0)
        for(new i=0; i<g_TotalCheckpoints; i++)
        {
            new text[128], Float:fOrigin[3]
            pev(g_Checkpoint_id[i],pev_origin,fOrigin)
            format(text,128,"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
            write_file(i_File, text, i)
        }
}

public get_checkpoints(i_File[128])
{    
    new
    i_orig_x[32],
    i_orig_y[32],
    i_orig_z[32],
    sfLineData[512],
    file = fopen(i_File,"rt")
    
    while(file && !feof(file))
    {
        fgets(file, sfLineData, charsmax(sfLineData))
            
        if (containi(sfLineData,";") > -1)
            continue
            
        parse(sfLineData, i_orig_x, charsmax(i_orig_x), i_orig_y, charsmax(i_orig_y), i_orig_z, charsmax(i_orig_z))
                    
        g_orig_x[g_TotalCheckpoints] = str_to_float(i_orig_x)
        g_orig_y[g_TotalCheckpoints] = str_to_float(i_orig_y)
        g_orig_z[g_TotalCheckpoints] = str_to_float(i_orig_z)
            
        g_TotalCheckpoints++
        
        if(get_count_lines(i_File) == g_TotalCheckpoints) // Чтобы не считало пустых строк
            break
        
        if(g_TotalCheckpoints >= MAX_CHECKPOINTS_LOAD)
        {
            server_print("[%s] Reached checkpoints limit", PLUGIN)
            break
        }
    }
    
    if(file)
        fclose(file)
    
    if(g_TotalCheckpoints == 1)
        server_print("[%s] Loaded one Checkpoint", PLUGIN)
    else
        server_print("[%s] Loaded %d Checkpoints", PLUGIN, g_TotalCheckpoints)
}

public set_checkpoints()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        new Ent = create_entity("info_target")
        if(is_valid_ent(Ent))
        {    
            g_Checkpoint_id[i] = Ent
            
            if(i == g_TotalCheckpoints-1)
                entity_set_model(Ent, FinishCP)
            else
            {
                new color = random_num(0,4)
                switch(color)
                {
                    case 0: entity_set_model(Ent, GreenCP)
                    case 1: entity_set_model(Ent, BlueCP)
                    case 2: entity_set_model(Ent, OrangeCP)
                    case 3: entity_set_model(Ent, PurpleCP)
                    case 4: entity_set_model(Ent, YellowCP)
                }
            }
                
            new Float:fOrigin[3]
            fOrigin[0] = g_orig_x[i]
            fOrigin[1] = g_orig_y[i]
            fOrigin[2] = g_orig_z[i]
            entity_set_origin(Ent, fOrigin)
            set_pev(Ent, pev_sequence, 0)
            set_pev(Ent, pev_framerate, 1.0)
            entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
            entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
            set_pev(Ent,pev_movetype, MOVETYPE_FLY)
            set_pev(Ent, pev_effects, 8)
        }
    }
}

public Startround()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_TRIGGER)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
    g_fin_pos = 0
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public EndRound()
{
    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        entity_set_int(g_Checkpoint_id[i],EV_INT_solid,SOLID_NOT)
        for(new j=0; j<32; j++)
            g_Checkpoint_complete[i][j] = false
    }
            
    g_fin_pos = 0
    
    //Тут можно вставить тройку победителей, используя g_Finished[id] как позицию
    
    for(new i=0; i<33; i++)
        g_Finished[i] = 0
}

public hook_spawn_post(id)
    if(get_cvar_num("cv_checkpoint_teleport"))
        teleport(id)

public teleport(id)
{
    for(new i=g_TotalCheckpoints-1; i>=0; i--)
    {
        if(g_Checkpoint_complete[i][id])
        {
            new Float:origin[3]
            entity_get_vector(g_Checkpoint_id[i],EV_VEC_origin,origin)
            set_pev(id, pev_origin, origin)
            break
        }
    }
}

public fwdTouch(ent, id)
{
    if(!is_user_alive(id) || !is_user_connected(id))
        return
    
    if(!is_valid_ent(ent))
        return

    for(new i=0; i<g_TotalCheckpoints; i++)
    {
        if(ent == g_Checkpoint_id[i] && !g_Checkpoint_complete[i][id])    
        {        
            g_Checkpoint_complete[i][id] = true
            
            set_dhudmessage(DHUD_POSITION)
            new reward
            
            if(i == g_TotalCheckpoints-1)
            {
                g_fin_pos++
                show_dhudmessage(id, "Р’С‹ прошли через последний чекпоинт Рё финишировали РЅР°^n %d месте", g_fin_pos)
                new pl_name[32]
                get_user_name(id, pl_name, 31)     
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР?РіСЂРѕРє !g%s !tпришел Рє финишу РЅР° !g%d !tместе", PLUGIN, pl_name, g_fin_pos)
                
                if(g_fin_pos == 1)
                    reward = get_cvar_num("cv_checkpoint_money_last_first")
                else if(g_fin_pos == 2)
                    reward = get_cvar_num("cv_checkpoint_money_last_second")
                else if(g_fin_pos == 3)
                    reward = get_cvar_num("cv_checkpoint_money_last_third")
                else
                {
                    reward = get_cvar_num("cv_checkpoint_money_give")
                    if(get_cvar_num("cv_checkpoint_money_koef"))
                        reward = reward * (i+1)
                }
                
                g_Finished[id] = g_fin_pos
            }
            else
            {
                reward = get_cvar_num("cv_checkpoint_money_give")
                if(get_cvar_num("cv_checkpoint_money_koef"))
                    reward = reward * (i+1)
                show_dhudmessage(id, "Р’С‹ прошли через чекпоинт %d",i+1)
            }
            if(get_cvar_num("cv_checkpoint_money"))
            {
                new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
    
                if(curr_money+reward > MAX_MONEY)
                    reward = MAX_MONEY-curr_money
            
                set_pdata_int(id, OFFSET_CSMONEY, curr_money+reward)
            
                message_begin(MSG_ONE, g_msgMoney, _, id)
                write_long(curr_money+reward)
                write_byte(1)
                message_end()
                cs_set_user_money_ul(id, curr_money+reward)
            
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tР’С‹ получаете !g%d$", PLUGIN, reward)
            }
        }
    }
}

public Checkpoint_menu(id)
{
    if(!(get_user_flags(id) & ADMIN_BAN))
    {
        PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРЈ вас нет прав РЅР° эту функцию", PLUGIN)
        return PLUGIN_HANDLED
    }    
    
    new menu_name[90]
    format(menu_name, 90, "\rРасстановка чекпоинтов^n\dТекущий чекпоинт: %d/%d", g_TotalCheckpoints+1, MAX_CHECKPOINTS_LOAD+1)

    new i_menu = menu_create(menu_name, "menu_handler")
    
    if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
        menu_additem(i_menu, "\dУстановить Чекпоинт", "1", 0)
    else menu_additem(i_menu, "\wУстановить Чекпоинт", "1", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить предыдущий Чекпоинт", "2", 0)
    else menu_additem(i_menu, "\wУдалить предыдущий Чекпоинт", "2", 0)
    
    if(g_TotalCheckpoints == 0)
        menu_additem(i_menu, "\dУдалить РІСЃРµ Чекпоинты", "3", 0)
    else menu_additem(i_menu, "\wУдалить РІСЃРµ Чекпоинты", "3", 0)
    
    if(!g_save_cpl)
        menu_additem(i_menu, "\dСохранить изменения", "4", 0)
    else menu_additem(i_menu, "\wСохранить изменения", "4", 0)

    menu_setprop(i_menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(i_menu, MPROP_EXITNAME, "\yВыход")
    menu_display(id, i_menu, 0)
        
    return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    switch(i_Key)
    {
        case 1:
        {
            if(g_TotalCheckpoints == MAX_CHECKPOINTS_LOAD)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tПревышен максимум", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
                        
            new Ent = create_entity("info_target")
            if(is_valid_ent(Ent))
            {    
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт установлен", PLUGIN)

                g_save_cpl = true
                g_TotalCheckpoints++
                
                g_Checkpoint_id[g_TotalCheckpoints-1] = Ent
                entity_set_model(Ent, FinishCP)
                
                new Float:fOrigin[3]
                fm_get_aim_origin(id, fOrigin)
                fOrigin[2]+=60
                
                entity_set_origin(Ent, fOrigin)
                set_pev(Ent, pev_sequence, 0)
                set_pev(Ent, pev_framerate, 1.0)
                entity_set_size(Ent,Float:{-45.0, -45.0, -45.0}, Float:{45.0, 45.0, 45.0})
                entity_set_int(Ent,EV_INT_solid,SOLID_TRIGGER)
                set_pev(Ent,pev_movetype, MOVETYPE_FLY)
                set_pev(Ent, pev_effects, 8)
                
                if(g_TotalCheckpoints != 1)
                {
                    for(new i=0; i<g_TotalCheckpoints-1; i++)
                    {
                        new color = random_num(0,4)
                        switch(color)
                        {
                            case 0: entity_set_model(g_Checkpoint_id[i], GreenCP)
                            case 1: entity_set_model(g_Checkpoint_id[i], BlueCP)
                            case 2: entity_set_model(g_Checkpoint_id[i], OrangeCP)
                            case 3: entity_set_model(g_Checkpoint_id[i], PurpleCP)
                            case 4: entity_set_model(g_Checkpoint_id[i], YellowCP)
                        }
                    }
                }
            }
            Checkpoint_menu(id)
        }
        case 2:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЧекпоинт удален", PLUGIN)
            
            g_save_cpl = true
            g_TotalCheckpoints--
            
            remove_entity(g_Checkpoint_id[g_TotalCheckpoints])
            
            if(g_TotalCheckpoints != 0)
                entity_set_model(g_Checkpoint_id[g_TotalCheckpoints-1], FinishCP)
                
            Checkpoint_menu(id)
        }
        case 3:
        {
            if(g_TotalCheckpoints == 0)
            {
                PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tРќР° карте нет Чекпоинтов", PLUGIN)
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = true
            
            for(new i=0; i<g_TotalCheckpoints; i++)
                remove_entity(g_Checkpoint_id[i])
                
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tБыло удалено !g%d !tЧекпоинтов", PLUGIN, g_TotalCheckpoints)
                
            g_TotalCheckpoints = 0
            
            Checkpoint_menu(id)
        }
        case 4:
        {
            if(!g_save_cpl)
            {
                Checkpoint_menu(id)
                return PLUGIN_HANDLED
            }
            
            g_save_cpl = false
            set_maps_cfg()
            
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tСохранено", PLUGIN)
            Checkpoint_menu(id)
        }
    }
    return PLUGIN_HANDLED
}

stock get_count_lines(szFileName[])
{
    new fHandle = fopen(szFileName, "rt")
    if(!fHandle)
        return 0

    new szBuffer[2], iLines

    while(!feof(fHandle))
    {
        fgets(fHandle, szBuffer, 1)
        if (!szBuffer[0])
            continue
                
        iLines++
    }

    fclose(fHandle)
    return iLines
}


Ну ошибку выдает компилятор((

Скрытый текст
Код
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// next21_checkpoints.sma
// F:\new-serv.ru cw\new-serv.ru cw\cstrike\addons\amxmodx\scripting\next21_chec
kpoints.sma(328) : error 017: undefined symbol "cs_set_user_money_ul"
//
// 1 Error.
// Could not locate output file F:\new-serv.ru cw\new-serv.ru cw\cstrike\addons\
amxmodx\scripting\compiled\next21_checkpoints.amx (compile failed).
//
// Compilation Time: 0,41 sec
// ----------------------------------------

Press enter to exit ...
Подключай #include <money_ul>
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 12.4.2013, 12:43
Сообщение #16
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Подключил( всеровно ошибку выдает только другую

Скрытый текст
Код
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// next21_checkpoints.sma
// F:\new-serv.ru cw\new-serv.ru cw\cstrike\addons\amxmodx\scripting\next21_chec
kpoints.sma(328) : warning 217: loose indentation
// F:\new-serv.ru cw\new-serv.ru cw\cstrike\addons\amxmodx\scripting\next21_chec
kpoints.sma(330) : warning 217: loose indentation
// Header size:           2308 bytes
// Code size:            21616 bytes
// Data size:            15504 bytes
// Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
// Total requirements:   55812 bytes
//
// 2 Warnings.
// Done.
//
// Compilation Time: 0,86 sec
// ----------------------------------------

Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 12.4.2013, 13:26
Сообщение #17
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Он скомпилировался с ошибкой ну теперь вот такая херня ку меня 11700$ потом собираю чекпоинт -7500 потом умираю 11700$ что это может быть?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 12.4.2013, 19:42
Сообщение #18
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Ну кто нибудь поможет?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 13.4.2013, 21:00
Сообщение #19
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

Блин народ вы забыли про меня?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 1210s
сообщение 14.4.2013, 18:53
Сообщение #20
Стаж: 16 лет

Сообщений: 40
Благодарностей: 2
Полезность: 41

up
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: