AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Set user view to ... (https://forums.alliedmods.net/showthread.php?t=204978)

alonelive 01-05-2013 12:45

Set user view to ...
 
1 Attachment(s)
PHP Code:

public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("say /123""set_user")
}

public 
set_user(id) {

    new 
Float:Origin[3]; // some place on map, X Y Z
    
Origin[0] = 468.0;
    
Origin[1] = 1834.0;
    
Origin[2] = 570.0
    
    new 
Float:vViewAngles[3]; // another place on map,  X Y Z
    
vViewAngles[0] = 100.0
    vViewAngles
[1] = 90.0
    vViewAngles
[2] = 600.0
    
    
    entity_set_origin
(idOrigin)            //user has been teleported to this coordinats - works fine..
    
set_pev(idpev_anglesvViewAngles);         // direction of view of player - not works.
    //set_pev(id, pev_v_angle, vViewAngles);
    //set_pev(id, pev_fixangle , vViewAngles);
    
}


Hello once more.
How can i set user view direction after his moving? I have a some point on map (coordinates in Float:vViewAngles). But i can't set user view.. dont know, how exactly..

This "another point" located on the roof of building near CT resp (cs_assault, see attached screenshot). I want only set player's view to this point.

I find a stock on forum..

PHP Code:

stock set_user_aim(idtarget)
{
 if (
pev_valid(id) && pev_valid(target))
 {
  static 
Float:ent_origin[3],Float:origin[3],Float:v_length,Float:aim_vector[3],Float:new_angles[3];
  
pev(id,pev_origin,ent_origin);
  
pev(target,pev_origin,origin);
  for (new 
a=0;a<3;a++) origin[a] -= ent_origin[a];
  
v_length vector_length(origin);
  for (new 
a=0;a<3;a++) aim_vector[a] = origin[a] / v_length;
  
vector_to_angle(aim_vector,new_angles);
  
new_angles[0] *= -1;
  if(
new_angles[1]>180.0new_angles[1] -= 360;
  if(
new_angles[1]<-180.0new_angles[1] += 360;
  if(
new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1] = -179.999999;
  
set_pev(id,pev_angles,new_angles);
  
set_pev(id,pev_v_angle,new_angles);
  
set_pev(id,pev_fixangle,1);
 }


but he not for my situation (a have only coordinates, not object \ entity)..

AngeIII 01-05-2013 14:25

Re: Set user view to ...
 
PHP Code:

stock set_user_aim_origin(idFloat:origin[3])
{
 if (
pev_valid(id))
 {
  static 
Float:ent_origin[3],Float:v_length,Float:aim_vector[3],Float:new_angles[3];
  
pev(id,pev_origin,ent_origin);
  for (new 
a=0;a<3;a++) origin[a] -= ent_origin[a];
  
v_length vector_length(origin);
  for (new 
a=0;a<3;a++) aim_vector[a] = origin[a] / v_length;
  
vector_to_angle(aim_vector,new_angles);
  
new_angles[0] *= -1;
  if(
new_angles[1]>180.0new_angles[1] -= 360;
  if(
new_angles[1]<-180.0new_angles[1] += 360;
  if(
new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1] = -179.999999;
  
set_pev(id,pev_angles,new_angles);
  
set_pev(id,pev_v_angle,new_angles);
  
set_pev(id,pev_fixangle,1);
 }



alonelive 01-06-2013 04:10

Re: Set user view to ...
 
Thank you!

alonelive 01-07-2013 03:46

Re: Set user view to ...
 
PHP Code:

public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("say /123""set_users")
    
// Add your code here...
}

public 
set_users() {

new 
Float:Origin[3];
new 
Float:viewOrigin[3];

/* place on map */
Origin[0] = 450.0;
Origin[1] = 1600.0;
Origin[2] = 440.0

/* another place */
viewOrigin[0] = -1111.0;
viewOrigin[1] = 1273.0;
viewOrigin[2] = 900.0;

new 
players[32], inum
get_players
(playersinum)

for (new 
0inum; ++i) {

            
Origin[0] = Origin[0] - 40.0             // all players to rank (to line with interval 40 units per player)
        
            
entity_set_origin(players[i], Origin// set origin of all players
            
set_user_aim_origin(players[i], viewOrigin// set view of all players to one point on map

    
            
}
}


stock set_user_aim_origin(players[i], Float:viewOrigin[3])
{
 if (
pev_valid(players[i]))
 {
  static 
Float:ent_origin[3],Float:v_length,Float:aim_vector[3],Float:new_angles[3];
  
pev(players[i],pev_origin,ent_origin);
  for (new 
a=0;a<3;a++) viewOrigin[a] -= ent_origin[a];
  
v_length vector_length(viewOrigin);
  for (new 
a=0;a<3;a++) aim_vector[a] = viewOrigin[a] / v_length;
  
vector_to_angle(aim_vector,new_angles);
  
new_angles[0] *= -1;
  if(
new_angles[1]>180.0new_angles[1] -= 360;
  if(
new_angles[1]<-180.0new_angles[1] += 360;
  if(
new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1] = -179.999999;
  
set_pev(players[i],pev_angles,new_angles);
  
set_pev(players[i],pev_v_angle,new_angles);
  
set_pev(players[i],pev_fixangle,1);
 }


Code:

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Undefined symbol "i" on line 47
Error: Undefined symbol "i" on line 49
Error: Undefined symbol "i" on line 52
Error: Undefined symbol "i" on line 61
Error: Undefined symbol "i" on line 62
Error: Undefined symbol "i" on line 63

6 Errors.
Could not locate output file I:\CS\...\cstrike\addons\amxmodx\plugins\set_origin.amx (compile failed).

For one player (if i put i or id instead players[i] ) works fine. But for many players i can not set origin.. :(
Can anyone help me with this? I need to set view origin to all players.

AngeIII 01-07-2013 05:18

Re: Set user view to ...
 
dont change my stock.

alonelive 01-07-2013 06:08

Re: Set user view to ...
 
1 Attachment(s)
Quote:

Originally Posted by AngeIII (Post 1868722)
dont change my stock.

Ok. In this case i have..
Func set_user_aim acts only on player, who called command (say /123). Other players spawns with theis default view direction. (see screen)

AngeIII 01-07-2013 07:14

Re: Set user view to ...
 
PHP Code:

#include <amxmodx>
#include <fakemeta>
#define PLUGIN    "set view"
#define VERSION    "1.0"
#define AUTHOR "-=ThQ=-"
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_clcmd("say /123""set_users");
    
// Add your code here...
}

public 
set_users(id)
{
    new 
Float:Origin[3];
    new 
Float:viewOrigin[3];
    
/* place on map */
    
Origin[0] = 450.0;
    
Origin[1] = 1600.0;
    
Origin[2] = 440.0

    
/* another place */
    
viewOrigin[0] = -1111.0;
    
viewOrigin[1] = 1273.0;
    
viewOrigin[2] = 900.0;

    new 
players[32], inum;
    
get_players(playersinum);
    new 
player;
    for (new 
0inumi++)
    {
        
player=players[i];
        
Origin[0] = Origin[0] - 40.0;             // all players to rank (to line with interval 40 units per player)
        
        //entity_set_origin(player, Origin) // set origin of all players
        
set_pev(player,pev_origin,Origin);
        
set_user_aim_origin(playerviewOrigin// set view of all players to one point on map
    
}
}

stock set_user_aim_origin(idFloat:origin[3])
{
    if (
pev_valid(id))
    {
        static 
Float:ent_origin[3],Float:v_length,Float:aim_vector[3],Float:new_angles[3];
        
pev(id,pev_origin,ent_origin);
        for (new 
a=0;a<3;a++) origin[a] -= ent_origin[a];
        
v_length vector_length(origin);
        for (new 
a=0;a<3;a++) aim_vector[a] = origin[a] / v_length;
        
vector_to_angle(aim_vector,new_angles);
        
new_angles[0] *= -1;
        if(
new_angles[1]>180.0new_angles[1] -= 360;
        if(
new_angles[1]<-180.0new_angles[1] += 360;
        if(
new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1] = -179.999999;
        
set_pev(id,pev_angles,new_angles);
        
set_pev(id,pev_v_angle,new_angles);
        
set_pev(id,pev_fixangle,1);
    }


try this

alonelive 01-07-2013 07:45

Re: Set user view to ...
 
the same thing happened :(

AngeIII 01-07-2013 08:18

Re: Set user view to ...
 
ok change stock in my code:
PHP Code:

stock set_user_aim_origin(id, const Float:view_origin[3])
{
    if (
pev_valid(id))
    {
        new 
Float:ent_origin[3],Float:v_length,Float:aim_vector[3],Float:new_angles[3];
        new 
Float:origin[3];
        
origin[0]=view_origin[0];
        
origin[1]=view_origin[1];
        
origin[2]=view_origin[2];
        
        
pev(id,pev_origin,ent_origin);
        for (new 
a=0;a<3;a++) origin[a] -= ent_origin[a];
        
v_length vector_length(origin);
        for (new 
a=0;a<3;a++) aim_vector[a] = origin[a] / v_length;
        
vector_to_angle(aim_vector,new_angles);
        
new_angles[0] *= -1;
        if(
new_angles[1]>180.0new_angles[1] -= 360;
        if(
new_angles[1]<-180.0new_angles[1] += 360;
        if(
new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1] = -179.999999;
        
set_pev(id,pev_angles,new_angles);
        
set_pev(id,pev_v_angle,new_angles);
        
set_pev(id,pev_fixangle,1);
    }



alonelive 01-07-2013 09:17

Re: Set user view to ...
 
1 Attachment(s)
In this version works :) !!

were only bots, but this is not so important. Their direction of view is invalid, but.. to hell with them :)
importantly - that the main objective accomplished.


All times are GMT -4. The time now is 13:22.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.