Raised This Month: $ Target: $400
 0% 

Vu 3D avec engine


  
 
 
Thread Tools Display Modes
R@pid0
Senior Member
Join Date: Jan 2011
Location: France
Old 07-15-2012 , 07:37   Re: Vu 3D avec engine
#11

Ho super ! Bboy gros merci toute en commande en plus et donc merci à aooka par la même ocaz . Its good .. gros merci à vous
__________________

Last edited by R@pid0; 07-15-2012 at 07:37.
R@pid0 is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 07-15-2012 , 10:03   Re: Vu 3D avec engine
#12

PHP Code:
public fwAddToFullPack( const es, const e, const ent, const host, const host_flags, const player, const p_set )
{
    if( 
player && g_bHas3dViewent ] )
    {
        
set_esesES_RenderModekRenderNormal );
    }

Par contre le code pourri et approximatif vaudrait mieux éviter...
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
bboygrun
CHOMP
Join Date: May 2010
Location: France
Old 07-15-2012 , 10:22   Re: Vu 3D avec engine
#13

Quote:
Originally Posted by ConnorMcLeod View Post
PHP Code:
public fwAddToFullPack( const es, const e, const ent, const host, const host_flags, const player, const p_set )
{
    if( 
player && g_bHas3dViewent ] )
    {
        
set_esesES_RenderModekRenderNormal );
    }

Par contre le code pourri et approximatif vaudrait mieux éviter...
Qu'est ce qui est pourri et approximatif ?

Je check si player est égal à 1 pour être sûr que ent est un joueur, je check ensuite si en est en vue 3D, si il l'est je lui mets un set_es kRenderNormal.

Je vois pas ce que tu ferais d'autre.
__________________
bboygrun is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 07-15-2012 , 12:24   Re: Vu 3D avec engine
#14

Vérifier que ent est le même joueur que host, ensuite remettre le vrai render et pas rendernone, et remettre le vrai amount si render est différent de rendernone.
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
bboygrun
CHOMP
Join Date: May 2010
Location: France
Old 07-15-2012 , 12:54   Re: Vu 3D avec engine
#15

Ah oui pour le host == ent j'ai totalement oublié, mais après pour le reste c'était juste un exemple de comment fixer le render.
__________________
bboygrun is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 07-15-2012 , 14:56   Re: Vu 3D avec engine
#16

De toute façon on peut rien y faire, le mec qui a codé cette fonction a encore moins compris AddToFullPack que toi, donc la seule chose à faire est de vérifier que le joueur est bien ent.
Et de reset les propriétés de render quand on reset la vue.

PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>

#define VERSION "0.0.1"
#define PLUGIN "Camera Menu"

new const KEYS MENU_KEY_1MENU_KEY_2MENU_KEY_3MENU_KEY_4MENU_KEY_0

new g_iPlayerView[33 char]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSION"ConnorMcLeod")

    
register_clcmd("say /cam""ClCmd_SayCam")
    
register_clcmd("say_team /cam""ClCmd_SayCam")

    
register_menucmd(register_menuid("Camera Menu"), KEYS"HandleCameraMenu")

    
register_clcmd("say /render""render")
}

public 
client_connectid )
{
    
g_iPlayerViewid } = 0
    CheckAddToFullPack
()
}

public 
client_disconnectid )
{
    
CheckAddToFullPack()
}

public 
plugin_precache()
{
    
precache_model"models/rpgrocket.mdl" )
}

public 
ClCmd_SayCamid )
{
    static const 
szViewStrings[][] = 
    {
        
"Normal View"
        
"3rd Person"
        
"Up Left"
        
"Top Down"
    
}
    new 
szMenu[512], nkeys MENU_KEY_0
    n 
formatex(szMenucharsmax(szMenu), "\yCamera Menu^n^n")
    for(new 
ii<sizeof(szViewStrings); i++)
    {
        if( 
g_iPlayerView{id} == )
        {
            
+= formatex(szMenu[n], charsmax(szMenu)-n"\d%d. %s^n"i+1szViewStrings[i])
        }
        else
        {
            
keys |= 1<<i
            n 
+= formatex(szMenu[n], charsmax(szMenu)-n"\y%d\w. %s^n"i+1szViewStrings[i])
        }
    }
    
+= formatex(szMenu[n], charsmax(szMenu)-n"^n\y0\w.Exit")

    
show_menu(idkeysszMenu)
}

public 
HandleCameraMenu(idkey)
{
    if( 
key != )
    {
        
g_iPlayerViewid } = key

        set_view
(idkey)
        if( !
key )
        {
            
entity_set_int(idEV_INT_rendermodekRenderNormal)
            
entity_set_float(idEV_FL_renderamt0.0)
        }

        
CheckAddToFullPack()
        
ClCmd_SayCamid )
    }
    return 
PLUGIN_HANDLED
}

CheckAddToFullPack()
{
    static 
iFwd 0

    
if( find_ent_by_class(0"VexdCam") )
    {
        if( !
iFwd )
        {
            
iFwd register_forward(FM_AddToFullPack"OnAddToFullPack_Post"true)
        }
    }
    else if( 
iFwd )
    {
        
unregister_forward(FM_AddToFullPackiFwdtrue)
        
iFwd 0
    
}
}

public 
OnAddToFullPack_Post(eseentidhostflagsplayer /* , pSet */ )
{
    if( 
player && id == ent && g_iPlayerViewid } )
    {
        
set_es(esES_RenderModekRenderNormal)
    }

__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
Aooka
Veteran Member
Join Date: Aug 2011
Location: Villeurbanne
Old 07-16-2012 , 02:18   Re: Vu 3D avec engine
#17

Ouah, merci beaucoup pour ce code Connor !
J'ai bien épluché ce code et j'ai été content de rencontrer [ 33 char ] et Array{ id } comme tu m'en avais parlé ici même : http://forums.alliedmods.net/showpos...82&postcount=2

Je viens de relire ce poste d'ailleurs en voyant cela et je pense avoir mieux compris. Et je voulais donc jsute savoir si j'avais compris ce système c'est que si j'utilise ceci par exemple : ( sans char )
PHP Code:
#include < amxmodx >


enum _DUEL_TYPE
{
    
DUEL_NONE = - ,
    
DUEL_KNIFE ,
    
DUEL_DEAGLE ,
    
DUEL_SCOUT ,
    
DUEL_AWP ,
    
DUEL_HEGRENADE ,
    
DUEL_M3 ,
    
DUEL_M4A1 ,
    
DUEL_AK47 ,
    
DUEL_M249 8
};

new 
g_iDuelTypeDUEL_TYPE ];

public 
plugin_init( )
{
    
register_event"HLTV" "Ev_NewRound" "a" );
}

public 
Ev_NewRound( const id )
{
    
g_iDuelTypeid ] = DUEL_NONE;

Et si je fais le même code mais cette fois-ci avec un char vu que mon array n'est ni un booléen ni un valeure plus grande que 254 :
PHP Code:
#include < amxmodx >


enum _DUEL_TYPE
{
    
DUEL_NONE = - ,
    
DUEL_KNIFE ,
    
DUEL_DEAGLE ,
    
DUEL_SCOUT ,
    
DUEL_AWP ,
    
DUEL_HEGRENADE ,
    
DUEL_M3 ,
    
DUEL_M4A1 ,
    
DUEL_AK47 ,
    
DUEL_M249 8
};

new 
g_iDuelTypeDUEL_TYPE char ];

public 
plugin_init( )
{
    
register_event"HLTV" "Ev_NewRound" "a" );
}

public 
Ev_NewRound( const id )
{
    
g_iDuelTypeid } = DUEL_NONE/* ou g_iDuelType[ id ] = - 1 */

Bon ces deux codes me semblent être bon. ( si je me trompe dite le moi ^^ ).
DOnc grâce au deuxième code :
Quote:
Ca utilise 4 fois moins de cellules
comme tu me disais. Toutefois j'ai pas bien saisie comment sa pouvait utiliser moins de cellules ? Et qu'est-ce qu'une cellule ? Un case dans le tableau ? Si c'est sa je ne vois pas bien comment sa pourrait moins :/

Hum, pourquoi tu fais sa :
Code:
unregister_forward(FM_AddToFullPack, iFwd, true)         iFwd = 0
Je n'ai pas bien compris ... ?

Ah oui aussi quand tu marque cela :
Code:
if( player && id == ent && g_iPlayerView{ id } )     {         set_es(es, ES_RenderMode, kRenderNormal)     }

le g_PlayerView{ id } a quelle valeur ? N'importe laquelle ?

Sinon le reste sa va bien.
Voilà merci d'avance
__________________
Pawn ? Useless
Aooka is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 07-16-2012 , 02:40   Re: Vu 3D avec engine
#18

Les 2 codes sont archi faux.
Oui, 4 fois moins de cellules, à 1 cellule près, enfin quand on fait pas d'énormes bourdes comme tu l'as fait.
Pour ne pas hooker cette fonction quand on n'en a pas besoin, car c'est une fonction appelée très souvent donc si on peut libérer un peu de cpu autant le faire.
Tout sauf 0, ça s'appelle un check boléen, enfin un nom qui ressemble.
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
Kidev
Veteran Member
Join Date: Jun 2010
Location: France
Old 07-16-2012 , 05:42   Re: Vu 3D avec engine
#19

Les tableaux en PAWN sont des tableaux de type int (4 cases mémoires), en reprenant le schéma du SDZ:

Ici, pour enregistrer la valeur 18 dans la RAM de la machine, tu utilise 4 cases mémoire (de la 1600 a la 1603 inclue).


Ensuite, en définissant ton tableau comme un tableau de type char (plus petit), tu n'utilise qu'une case mémoire (donc moins de place):


Enfin, il faut savoir que ce n'est pas très utile. Les nombreux types ont été inventés à une époque où la mémoire manquait. Maintenant c'est surtout utilisé sur les systèmes qui manquent de mémoire (téléphones portables, systèmes embarqués...). Maintenant tout est créé en int (perso j'utilise les char (unsigned en l’occurrence) juste quand je fais un for() qui ne dépasse pas 255). Bien sûr quand tu as besoin d'une virgule, faut utiliser les long (ou float).


En reprenant encore une fois le SDZ, voici la taille des différents types:
[IMG]http://img708.**************/img708/8488/sizey.png[/IMG]
__________________

Last edited by Kidev; 07-16-2012 at 05:55.
Kidev is offline
Aooka
Veteran Member
Join Date: Aug 2011
Location: Villeurbanne
Old 07-16-2012 , 12:25   Re: Vu 3D avec engine
#20

Merchi merchi

J'ai bien compris grâce à tes dessins Kid.
Et Connor merci pour ta réponse.
__________________
Pawn ? Useless
Aooka is offline
 



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 04:16.


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