Хочу сделать "чит" команду для админов:
При ее использовании по середине карты(есть координаты) создается объект. Как заставить всех игроков смотреть от лица этого объекта?
Femidion писал(а): Ты вот пришёл в мою ветку, выкабениваешься здесь, пишешь охинею, пытаешься всё высмеять... пользы от тебя никакой, только понты и хамство... зачем? Может ты тот самый лживый чурка-паразит?
Модератор: liFe iS GoOD
артист666 писал(а):Камера, ham_use.
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#define VERSION "0.0.1"
#define MAX_PLAYERS 32
#define m_flWait 42
#define USE_TOGGLE 3
new g_iCam[MAX_PLAYERS+1]
new g_iMaxPlayers
public plugin_init()
{
register_plugin("Camera View", VERSION, "ConnorMcLeod")
register_clcmd("say /cam", "cam")
register_think("trigger_camera", "Camera_Think")
g_iMaxPlayers = get_maxplayers()
}
public cam( id )
{
if( !is_user_alive(id) )
{
return
}
new iEnt = g_iCam[id]
if( !is_valid_ent(iEnt) )
{
iEnt = create_entity("trigger_camera")
entity_set_int(iEnt, EV_INT_spawnflags, SF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION)
DispatchSpawn(iEnt)
set_pdata_float(iEnt, m_flWait, 999999.0, 4)
g_iCam[id] = iEnt
}
ExecuteHam( Ham_Use, iEnt, id, id, USE_TOGGLE, 1.0)
entity_set_int(id, EV_INT_flags, entity_get_int(id, EV_INT_flags) & ~FL_FROZEN)
cs_reset_user_maxspeed(id)
}
public client_disconnect(id)
{
new iEnt = g_iCam[id]
if( !is_valid_ent(iEnt) )
{
g_iCam[id] = 0
remove_entity(iEnt)
}
}
cs_reset_user_maxspeed(id)
{
new Float:flMaxSpeed;
switch ( get_user_weapon(id) )
{
case CSW_SG550, CSW_AWP, CSW_G3SG1 : flMaxSpeed = 210.0;
case CSW_M249 : flMaxSpeed = 220.0;
case CSW_AK47 : flMaxSpeed = 221.0;
case CSW_M3, CSW_M4A1 : flMaxSpeed = 230.0;
case CSW_SG552 : flMaxSpeed = 235.0;
case CSW_XM1014, CSW_AUG, CSW_GALIL, CSW_FAMAS : flMaxSpeed = 240.0;
case CSW_P90 : flMaxSpeed = 245.0;
case CSW_SCOUT : flMaxSpeed = 260.0;
default : flMaxSpeed = 250.0;
}
set_user_maxspeed(id, flMaxSpeed);
}
get_cam_owner(iEnt)
{
static id
for(id = 1; id<=g_iMaxPlayers; id++)
{
if( g_iCam[id] == iEnt )
{
return id
}
}
return 0
}
public Camera_Think(entid)
{
new id = get_cam_owner(entid);
if( !id )
{
return
}
static Float:origin[3], Float:angle[3], Float:vBack[3];
entity_get_vector( id, EV_VEC_origin, origin );
entity_get_vector( id, EV_VEC_v_angle, angle );
angle_vector( angle, ANGLEVECTOR_FORWARD, vBack );
origin[2] += 20.0;
origin[0] += (-vBack[0] * 150.0);
origin[1] += (-vBack[1] * 150.0);
origin[2] += (-vBack[2] * 150.0);
entity_set_origin( entid, origin );
entity_set_vector( entid, EV_VEC_angles, angle );
entity_set_float(entid, EV_FL_nextthink, get_gametime())
}
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
new Float:fOrigins[3] = {-144.109970, -1355.265991, -163.992752}
new Float:fAnglesf[3] = {0.0, 90.0, 0.0}
public plugin_init()
{
register_clcmd("say /test", "test")
}
public test(id)
{
new iEnt = create_entity("trigger_camera")
if(!is_valid_ent(iEnt))
return
entity_set_int(iEnt, EV_INT_spawnflags, SF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION)
DispatchSpawn(iEnt)
set_pdata_float(iEnt, 42, 999999.0, 4)
for(new i = 1; i <= get_maxplayers(); i++)
{
if(is_user_alive(i))
{
ExecuteHam(Ham_Use, iEnt, i, i, 3, 1.0)
}
}
entity_set_origin(iEnt, fOrigins)
entity_set_vector(iEnt, EV_VEC_angles, fAnglesf)
}
for(new i = 1; i <= get_maxplayers(); i++)
{
if(is_user_alive(i))
{
ExecuteHam(Ham_Use, iEnt, i, i, 3, 1.0)
}
}
ExecuteHam(Ham_Use, iEnt, 1, 1, 3, 1.0)//id = 1
flymic24 писал(а):boogaga, Если не ошибаюсь, для этого есть
- Код: Выделить всё
attach_view(iIndex, iTargetIndex);
public test(id)
{
new ent = create_entity("info_target")
if(!is_valid_ent(ent))
return
entity_set_origin(ent, fOrigins)
attach_view(id, ent);
}
#include <amxmodx>
#include <fakemeta>
new Float:fOrigins[3] = {-144.109970, -1355.265991, -163.992752}
new Float:fAnglesf[3] = {0.0, 90.0, 0.0}
new g_ent, bool:g_vievs[33]
public plugin_init()
{
register_clcmd("say y", "functions")
}
public plugin_precache()
{
precache_model("models/chick.mdl")
}
public functions(id)
{
if(g_vievs[id])
{
engfunc(EngFunc_SetView, id, id)
g_vievs[id] = false
}
else if(g_ent)
{
engfunc(EngFunc_SetOrigin, g_ent, fOrigins)
engfunc(EngFunc_SetView, id, g_ent)
g_vievs[id] = true
static Float:o[3]; pev(g_ent, pev_origin, o)
client_print(id, print_chat, "%f %f %f", o[0], o[1], o[2])
}
else if(create())
{
engfunc(EngFunc_SetView, id, g_ent)
g_vievs[id] = true
}
else client_print(id, print_chat, "Bad create ent")
return PLUGIN_HANDLED
}
public create()
{
static ent; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!pev_valid(ent)) return 0
engfunc(EngFunc_SetModel, ent, "models/chick.mdl")
dllfunc(DLLFunc_Spawn, ent)
set_pev(ent, pev_effects, EF_NODRAW)
set_pev(ent, pev_angles, fAnglesf)
engfunc(EngFunc_SetOrigin, ent, fOrigins)
g_ent = ent
return 1
}
артист666 писал(а):
- Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
new Float:fOrigins[3] = {-144.109970, -1355.265991, -163.992752}
new Float:fAnglesf[3] = {0.0, 90.0, 0.0}
new g_ent, bool:g_vievs[33]
public plugin_init()
{
register_clcmd("say y", "functions")
}
public plugin_precache()
{
precache_model("models/chick.mdl")
}
public functions(id)
{
if(g_vievs[id])
{
engfunc(EngFunc_SetView, id, id)
g_vievs[id] = false
}
else if(g_ent)
{
engfunc(EngFunc_SetOrigin, g_ent, fOrigins)
engfunc(EngFunc_SetView, id, g_ent)
g_vievs[id] = true
static Float:o[3]; pev(g_ent, pev_origin, o)
client_print(id, print_chat, "%f %f %f", o[0], o[1], o[2])
}
else if(create())
{
engfunc(EngFunc_SetView, id, g_ent)
g_vievs[id] = true
}
else client_print(id, print_chat, "Bad create ent")
return PLUGIN_HANDLED
}
public create()
{
static ent; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!pev_valid(ent)) return 0
engfunc(EngFunc_SetModel, ent, "models/chick.mdl")
dllfunc(DLLFunc_Spawn, ent)
set_pev(ent, pev_effects, EF_NODRAW)
set_pev(ent, pev_angles, fAnglesf)
engfunc(EngFunc_SetOrigin, ent, fOrigins)
g_ent = ent
return 1
}
for(new i = 1; i <= get_maxplayers(); i++)
{
if(!is_user_alive(i))
continue;
new ent = create_entity("trigger_camera")
entity_set_int(ent, EV_INT_spawnflags, SF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION)
DispatchSpawn(ent)
set_pdata_float(ent, 42, 99999999.0, 4)
ExecuteHam(Ham_Use, ent, i, i, 3, 1.0)
entity_set_string(ent, EV_SZ_classname, "my_camera")
entity_set_origin(ent, fOrigins)
entity_set_vector(ent, EV_VEC_angles, fAnglesf)
}
boogaga писал(а):Такой вариант вполне работает:
- Код: Выделить всё
for(new i = 1; i <= get_maxplayers(); i++)
{
if(!is_user_alive(i))
continue;
new ent = create_entity("trigger_camera")
entity_set_int(ent, EV_INT_spawnflags, SF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION)
DispatchSpawn(ent)
set_pdata_float(ent, 42, 99999999.0, 4)
ExecuteHam(Ham_Use, ent, i, i, 3, 1.0)
entity_set_string(ent, EV_SZ_classname, "my_camera")
entity_set_origin(ent, fOrigins)
entity_set_vector(ent, EV_VEC_angles, fAnglesf)
}
entity_set_int(ent, EV_INT_spawnflags, SF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION)
Вернуться в Вопросы по AMXX и его плагинам
Сейчас этот форум просматривают: Bing [Bot] и гости: 13