Raised This Month: $51 Target: $400
 12% 

get/set_user_origin (fun module)


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Phant
Veteran Member
Join Date: Sep 2009
Location: New Jersey
Old 10-23-2013 , 14:59   get/set_user_origin (fun module)
Reply With Quote #1

Why get/set_user_origin functions uses not Float values?
For example, original "telemenu" plugin, try to save and restore location at this place:

You got stuck.

I know about pev_origin which can help if I write plugin with teleport functionality, but, just about this two functions... Whether it is bug of Fun module?
Phant is offline
Send a message via ICQ to Phant
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 10-23-2013 , 17:47   Re: get/set_user_origin (fun module)
Reply With Quote #2

Integers work like that, you can use Floats instead (that version is forcing player to duck so it is more safe) :

PHP Code:
/* AMX Mod X
*   Teleport Menu Plugin
*
* by the AMX Mod X Development Team
*  originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
*  This program is free software; you can redistribute it and/or modify it
*  under the terms of the GNU General Public License as published by the
*  Free Software Foundation; either version 2 of the License, or (at
*  your option) any later version.
*
*  This program is distributed in the hope that it will be useful, but
*  WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*  General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation,
*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*  In addition, as a special exception, the author gives permission to
*  link the code of this program with the Half-Life Game Engine ("HL
*  Engine") and Modified Game Libraries ("MODs") developed by Valve,
*  L.L.C ("Valve"). You must obey the GNU General Public License in all
*  respects for all of the code used other than the HL Engine and MODs
*  from Valve. If you modify this file, you may extend this exception
*  to your version of the file, but you are not obligated to do so. If
*  you do not wish to do so, delete this exception statement from your
*  version.
*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

new const Float:VEC_DUCK_HULL_MIN[3]    = {-16.0, -16.0, -18.0 };
new const 
Float:VEC_DUCK_HULL_MAX[3]    = { 16.0,  16.0,  32.0 };
new const 
Float:VEC_DUCK_VIEW[3]        = {  0.0,   0.0,  12.0 };

new 
g_menuPosition[33]
new 
g_menuPlayers[33][32]
new 
g_menuPlayersNum[33]
new 
g_menuOption[33] = {-1, ...}
new 
Float:g_menuOrgin[33][3]
new 
g_coloredMenus

public plugin_init()
{
    
register_plugin("Teleport Menu"AMXX_VERSION_STR"AMXX Dev Team")
    
register_dictionary("telemenu.txt")
    
register_dictionary("common.txt")
    
register_clcmd("amx_teleportmenu""cmdTelMenu"ADMIN_CFG"- displays teleport menu")
    
register_menucmd(register_menuid("Teleport Menu"), 1023"actionTelMenu")

    
g_coloredMenus colored_menus()
}

public 
actionTelMenu(idkey)
{
    switch (
key)
    {
        case 
6:
        {
            
g_menuOption[id] = g_menuOption[id]
            
displayTelMenu(idg_menuPosition[id])
        }
        case 
7:
        {
            if (
g_menuOption[id] < 0)    /* unlocking position for the first time */
                
g_menuOption[id] = 0
            
            pev
(idpev_origing_menuOrgin[id])
            
displayTelMenu(idg_menuPosition[id])
        }
        case 
8displayTelMenu(id, ++g_menuPosition[id])
        case 
9displayTelMenu(id, --g_menuPosition[id])
        default:
        {
            new 
player g_menuPlayers[id][g_menuPosition[id] * key]
            new 
name2[32]
        
            
get_user_name(playername231)

            if (!
is_user_alive(player))
            {
                
client_print(idprint_chat"%L"id"CANT_PERF_DEAD"name2)
                
displayTelMenu(idg_menuPosition[id])
                return 
PLUGIN_HANDLED
            
}

            if (
g_menuOption[id] > 0)
            {
                
Util_SetOrigin(playerg_menuOrgin[id])
            } else {
                new 
Float:origin[3]
                
                
pev(idpev_originorigin)
                
Util_SetOrigin(playerorigin)
            }

            new 
authid[32], authid2[32], name[32]

            
get_user_authid(idauthid31)
            
get_user_authid(playerauthid231)
            
get_user_name(idname31)

            
log_amx("Cmd: ^"%s<%d><%s><>^" teleport ^"%s<%d><%s><>^""nameget_user_userid(id), authidname2get_user_userid(player), authid2)

            
show_activity_key("ADMIN_TELEPORT_1""ADMIN_TELEPORT_2"namename2);

            
displayTelMenu(idg_menuPosition[id])
        }
    }
    
    return 
PLUGIN_HANDLED
}

displayTelMenu(idpos)

    if (
pos 0)
        return

    
get_players(g_menuPlayers[id], g_menuPlayersNum[id])

    new 
menuBody[512]
    new 
0
    
new i
    
new name[32]
    new 
start pos 6
    
new bool:blockMenu = (is_user_alive(id) && g_menuOption[id] < 1) ? true false

    
if (start >= g_menuPlayersNum[id])
        
start pos g_menuPosition[id] = 0

    
new len format(menuBody511g_coloredMenus "\y%L\R%d/%d^n\w^n" "%L %d/%d^n^n"id"TELE_MENU"pos 1, (g_menuPlayersNum[id] / + ((g_menuPlayersNum[id] % 6) ? 0)))
    new 
end start 6
    
new keys MENU_KEY_0|MENU_KEY_8

    
if (end g_menuPlayersNum[id])
        
end g_menuPlayersNum[id]

    for (new 
startend; ++a)
    {
        
g_menuPlayers[id][a]
        
get_user_name(iname31)

        if (
blockMenu || !is_user_alive(i) || (id != && get_user_flags(i) & ADMIN_IMMUNITY))
        {
            ++
b
        
            
if (g_coloredMenus)
                
len += format(menuBody[len], 511-len"\d%d. %s^n\w"bname)
            else
                
len += format(menuBody[len], 511-len"#. %s^n"name)
        } else {
            
keys |= (1<<b)
            
            if (
is_user_admin(i))
                
len += format(menuBody[len], 511-leng_coloredMenus "%d. %s \r*^n\w" "%d. %s *^n", ++bname)
            else
                
len += format(menuBody[len], 511-len"%d. %s^n", ++bname)
        }
    }

    if (
g_menuOption[id] > 0)    // 1
    
{
        
keys |= MENU_KEY_7
        len 
+= format(menuBody[len], 511-len"^n7. To location: %.0f %.0f %.0f^n"g_menuOrgin[id][0], g_menuOrgin[id][1], g_menuOrgin[id][2])
    }
    else if (
g_menuOption[id])    // -1
    
{
        if (
g_coloredMenus)
            
len += format(menuBody[len], 511-len"^n\d7. %L^n\w"id"CUR_LOC")
        else
            
len += format(menuBody[len], 511-len"^n#. %L^n"id"CUR_LOC")
    } else {                    
// 0
        
keys |= MENU_KEY_7
        len 
+= format(menuBody[len], 511-len"^n7. %L^n"id"CUR_LOC")
    }

    
len += format(menuBody[len], 511-len"8. %L^n"id"SAVE_LOC")

    if (
end != g_menuPlayersNum[id])
    {
        
format(menuBody[len], 511-len"^n9. %L...^n0. %L"id"MORE"idpos "BACK" "EXIT")
        
keys |= MENU_KEY_9
    
}
    else
        
format(menuBody[len], 511-len"^n0. %L"idpos "BACK" "EXIT")

    
show_menu(idkeysmenuBody, -1"Teleport Menu")
}

public 
cmdTelMenu(idlevelcid)
{
    if (
cmd_access(idlevelcid1))
        
displayTelMenu(idg_menuPosition[id] = 0)

    return 
PLUGIN_HANDLED
}

Util_SetOrigin(idFloat:origin[3])
{    
    new 
flags pev(idpev_flags);
    if( ~
flags FL_DUCKING )
    {
        
set_pev(idpev_flagsflags FL_DUCKING);
    }

    
engfunc(EngFunc_SetSizeidVEC_DUCK_HULL_MINVEC_DUCK_HULL_MAX);
    
engfunc(EngFunc_SetOriginidorigin);
    
set_pev(idpev_view_ofsVEC_DUCK_VIEW);

__________________
- tired and retired -

- my plugins -

Last edited by ConnorMcLeod; 10-23-2013 at 17:56.
ConnorMcLeod is offline
Phant
Veteran Member
Join Date: Sep 2009
Location: New Jersey
Old 10-24-2013 , 03:51   Re: get/set_user_origin (fun module)
Reply With Quote #3

Quote:
Originally Posted by ConnorMcLeod View Post
Integers work like that, you can use Floats instead (that version is forcing player to duck so it is more safe)
Great code!
This code will be as update of "telemenu" plugin in AMXX 1.8.3? It would be great.
Phant is offline
Send a message via ICQ to Phant
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 10-24-2013 , 04:05   Re: get/set_user_origin (fun module)
Reply With Quote #4

mins and maxs are cs specific, maybe some standart values can be used instead (the lowest values of cs / hl ).
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:24.


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