Русское сообщество по скриптингу

Sentry guns модели и флаги админов

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Sentry guns модели и флаги админов

Сообщение kyca1989 » 21 июл 2016, 12:43

Доброго времени суток. Бьюсь уже кучу времени над пушками, а так как пока что еще со скриптами не в ладах, нечего путного не получается. Бьюсь с пушками на примере, общедоступных, TF2. Никак не могу их научить понимать и перенимать на себя модели разные для команд (ct и t). Пробовал использовать материал взятый на этом форуме, но все безуспешно. Как правило после изменения исходник просто не компилируется, выдавая разного рода ошибки. Так же пытался прописать присвоение флага админа для прокачки до 3 лвл, а именно чтоб простые игроки не могли свои пушки качать, либо только до второго, а админы могли сразу до 3 лвл. Но все это как оказалось для меня лес дремучий.... Можете помочь люди добрые, или посоветовать, как правильно сделать?
Аватара пользователя
kyca1989
 
Сообщения: 7
Зарегистрирован: 14 июл 2016, 22:59
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Sentry guns модели и флаги админов

Сообщение Xelson » 21 июл 2016, 13:59

Чтобы что-то посоветовать, нужен код.
Аватара пользователя
Xelson
 
Сообщения: 365
Зарегистрирован: 06 мар 2016, 14:41
Откуда: Беларусь
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Опыт программирования: Больше трех лет

Re: Sentry guns модели и флаги админов

Сообщение kyca1989 » 21 июл 2016, 14:07

Если не ошибаюсь, то вроде этот исходник. Точно сейчас нет возможности поглядеть ибо на работе на данный момент. Но во всяком случае сколько не качал плагины пушек, то скрипты по поводу присвоения моделей практически однотипные.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
kyca1989
 
Сообщения: 7
Зарегистрирован: 14 июл 2016, 22:59
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Sentry guns модели и флаги админов

Сообщение Xelson » 21 июл 2016, 14:26

Код: Выделить всё
stock bool:CreateSentryBase(Float:origin[3], creator) 
{
    // Check contents of point, also trace lines from center to each of the eight ends
    if (point_contents(origin) != CONTENTS_EMPTY || TraceCheckCollides(origin, 24.0)) 
        return false

    
// Check that a trace from origin straight down to ground results in a distance which is the same as player height over ground?
    new Float:hitPoint[3], Float:originDown[3]
    originDown = origin
    originDown
[2] = -5000.0 // dunno the lowest possible height...
    trace_line(0, origin, originDown, hitPoint)
    new Float:baDistanceFromGround = vector_distance(origin, hitPoint)
    //client_print(creator, print_chat, "Base distance from ground: %f", baDistanceFromGround)

    new Float:difference = PLAYERORIGINHEIGHT - baDistanceFromGround
    if 
(difference < -* HEIGHTDIFFERENCEALLOWED || difference > HEIGHTDIFFERENCEALLOWED) 
    
{
        //client_print(creator, print_chat, "You can't build here! %f", difference)
        return false
    
}

    new entbase = create_entity("func_breakable") // func_wall
    if (!entbase)
        return false

    
// Set sentrybase health
    new healthstring[16]
    num_to_str(floatround(g_HEALTHS[0]), healthstring, 15)
    DispatchKeyValue(entbase, "health", healthstring)
    DispatchKeyValue(entbase, "material", "6")

    DispatchSpawn(entbase)
    // Change classname
    entity_set_string(entbase, EV_SZ_classname, "sentrybase")
    // Set model
    entity_set_model(entbase, "models/tf2/base.mdl") // later set according to level
    // Set size
    new Float:mins[3], Float:maxs[3]
    mins[0] = -16.0
    mins
[1] = -16.0
    mins
[2] = 0.0
    maxs
[0] = 16.0
    maxs
[1] = 16.0
    maxs
[2] = 1000.0 // Set to 16.0 later.
    entity_set_size(entbase, mins, maxs)
    //client_print(creator, print_chat, "Creating sentry %d with bounds %f", ent, BOUNDS)
    // Set origin
    entity_set_origin(entbase, origin)
    // Set starting angle
    //entity_get_vector(creator, EV_VEC_angles, origin)
    //origin[0] = 0.0
    //origin[1] += 180.0
    //origin[2] = 0.0
    //entity_set_vector(ent, EV_VEC_angles, origin)
    // Set solidness
    entity_set_int(entbase, EV_INT_solid, SOLID_SLIDEBOX) // SOLID_SLIDEBOX
    // Set movetype
    entity_set_int(entbase, EV_INT_movetype, MOVETYPE_TOSS) // head flies, base falls

    // Set team
    entity_set_int(entbase, BASE_INT_TEAM, get_user_team(creator))

    new parms[2]
    parms[0] = entbase
    parms
[1] = creator

    g_sentryOrigins
[creator - 1] = origin

    emit_sound
(creator, CHAN_AUTO, "tf2/building.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

    set_task(BASESENTRYDELAY, "createsentryhead", 0, parms, 2)
    g_inBuilding[creator - 1] = true

    return true
}


Код: Выделить всё
entity_set_model(entbase, "models/tf2/base.mdl") // later set according to level  

>>>
Код: Выделить всё
switch(get_user_team(creator))
{
      case 
1entity_set_model(entbase"models/tf2/base.mdl"// Тут путь к модели ТТ
      
case 2entity_set_model(entbase"models/tf2/base.mdl"// Тут путь к модели КТ
Аватара пользователя
Xelson
 
Сообщения: 365
Зарегистрирован: 06 мар 2016, 14:41
Откуда: Беларусь
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Опыт программирования: Больше трех лет

Re: Sentry guns модели и флаги админов

Сообщение kyca1989 » 21 июл 2016, 14:39

Xelson, спасибо огромное. Сегодня еще раз буду пробовать. Если я правильно понял то нужно дополнительно прописывать код? Или заменять? Я изначально когда пробовал, во всех своих неудачных попытках, на новые скрипты, но в итоге при компиляции вываливались ошибки.
Аватара пользователя
kyca1989
 
Сообщения: 7
Зарегистрирован: 14 июл 2016, 22:59
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Sentry guns модели и флаги админов

Сообщение Xelson » 21 июл 2016, 14:40

Улучшение пушки до третьего лвла только админам:
Код: Выделить всё
sentry_upgrade(id, sentry) 
{
    new sentryLevel = entity_get_int(sentry, SENTRY_INT_LEVEL)
    if (entity_get_int(sentry, SENTRY_INT_FIRE) == SENTRY_FIREMODE_NUTS) 
    
{
        client_print(id, print_center, "This sentry cannot be upgraded.")
        return
    
}
    else if (get_user_team(id) != entity_get_int(sentry, SENTRY_INT_TEAM)) 
    
{
        client_print(id, print_center, "You can only upgrade your own team's sentries.")
        return
    
}
    #if defined DISALLOW_OWN_UPGRADES
    else if (sentryLevel == SENTRY_LEVEL_1 && GetSentryPeople(sentry, OWNER) == id) 
    
{
        // Don't print anything here, it could get spammy
        //client_print(id, print_center, "")
        return
    
}
    #endif
    #if defined DISALLOW_TWO_UPGRADES
    else if (sentryLevel == SENTRY_LEVEL_2 && GetSentryPeople(sentry, UPGRADER_1) == id) 
    
{
        // Don't print anything here, it could get spammy
        //client_print(id, print_center, "")
        return
    
}
    #endif
    sentryLevel++
    new bool:newLevelIsOK = true, upgraderField
    switch 
(sentryLevel) 
    
{
        case SENTRY_LEVEL_2: {
            entity_set_model(sentry, "models/tf2/sentry2.mdl")
            upgraderField = UPGRADER_1
        
}
        case SENTRY_LEVEL_3: {
            entity_set_model(sentry, "models/tf2/sentry3.mdl")
            upgraderField = UPGRADER_2
        
}
        default: {
            // Error... can only upgrade to level 2 and 3... so far! ;-)
            newLevelIsOK = false
        
}
    }

    if (newLevelIsOK) 
    
{
        if (cs_get_user_money(id) - g_COST(sentryLevel) < 0) {
            client_print(id, print_center, "You don't have enough money to upgrade this sentry gun! (needed $%d)", g_COST(sentryLevel))
            return
        
}

        cs_set_user_money(id, cs_get_user_money(id) - g_COST(sentryLevel))

        new Float:mins[3], Float:maxs[3]
        mins[0] = -16.0
        mins
[1] = -16.0
        mins
[2] = 0.0
        maxs
[0] = 16.0
        maxs
[1] = 16.0
        maxs
[2] = 48.0 // 4.0
        entity_set_size(sentry, mins, maxs)
        emit_sound(sentry, CHAN_AUTO, "tf2/turrset.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
        entity_set_int(sentry, SENTRY_INT_LEVEL, sentryLevel)
        entity_set_float(sentry, EV_FL_health, g_HEALTHS[sentryLevel])
        entity_set_float(entity_get_edict(sentry, SENTRY_ENT_BASE), EV_FL_health, g_HEALTHS[0])
        SetSentryPeople(sentry, upgraderField, id)

        if (id != GetSentryPeople(sentry, OWNER)) {
            new upgraderName[32]
            get_user_name(id, upgraderName, 31)
            client_print(GetSentryPeople(sentry, OWNER), print_center, "%s upgraded your sentry to level %d", upgraderName, sentryLevel + 1)
        }
    }

После
Код: Выделить всё
#if defined DISALLOW_TWO_UPGRADES
    else if (sentryLevel == SENTRY_LEVEL_2 && GetSentryPeople(sentry, UPGRADER_1) == id) 
    
{
        // Don't print anything here, it could get spammy
        //client_print(id, print_center, "")
        return
    
}
    #endif   

Вставить:
Код: Выделить всё
if(sentryLevel == SENTRY_LEVEL_2 && !(get_user_flags(id) & ADMIN_BAN))
{
    client_print(id, print_center, "Only the admin can upgrade sentry to 3 level.")
    return


Добавлено спустя 52 секунды:
kyca1989, в первом случае надо будет заменить, во втором дополнить код.
Аватара пользователя
Xelson
 
Сообщения: 365
Зарегистрирован: 06 мар 2016, 14:41
Откуда: Беларусь
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Опыт программирования: Больше трех лет

Re: Sentry guns модели и флаги админов

Сообщение kyca1989 » 21 июл 2016, 14:50

Xelson, Наиогромнейшее спасибо :thumbs_up Буду разбираться дальше
Аватара пользователя
kyca1989
 
Сообщения: 7
Зарегистрирован: 14 июл 2016, 22:59
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Sentry guns модели и флаги админов

Сообщение kyca1989 » 21 июл 2016, 23:20

Xelson, к сожалению не вышло. Опять те же ошибки, что и были вроде, при компилирование. Я на сколько понял не известная команда "creator"

Добавлено спустя 45 минут 17 секунд:
Проблема решена! В строках где ошибки поменял с "creator" на "id" и все заработало. Осталось одно, будучи админом все равно не могу качать свою пушку(
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
kyca1989
 
Сообщения: 7
Зарегистрирован: 14 июл 2016, 22:59
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 7