Gl0ckee писал(а): Мне нужен код для плагина что бы что-то было по очереди. спасибо
Модератор: liFe iS GoOD
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 < -1 * 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 1: entity_set_model(entbase, "models/tf2/base.mdl") // Тут путь к модели ТТ
case 2: entity_set_model(entbase, "models/tf2/base.mdl") // Тут путь к модели КТ
}
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
}
Вернуться в Вопросы по AMXX и его плагинам
Сейчас этот форум просматривают: Yandex [Bot] и гости: 7