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

[RESOLU] Invalide entité après kill de celle-ci


  
 
 
Thread Tools Display Modes
Author Message
micapat
Veteran Member
Join Date: Feb 2010
Location: Nyuu, nyuu (France).
Old 11-19-2011 , 09:36   [RESOLU] Invalide entité après kill de celle-ci
#1

Bonjour, je voudrais juste savoir si après avoir tué une entité crée via un plugin, il est normal qu'elle devient invalide ? Car j'aimerai faire des animations sur elle quand elle meurt. Merci.

PHP Code:
stock SpawnEntity( ... )
{
    ...

    
RegisterHamFromEntityHam_Killedentity"EntityKilled" );

    ...
}

public 
EntityKilledentity, ... )
{
     ...

     
set_task3.0"blabla"entity );
    
     return 
HAM_SUPERCEDE// Evite que l'entité soit remove.
}

public 
blablaentity )
{
    
// Ici entity n'est plus valide !

__________________
micapat is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 11-19-2011 , 13:06   Re: Invalide entité après kill de celle-ci
#2

Donne + de code c'est difficile de savoir de quelle entité on parle.

Si tu spawn plusieurs fois une entité, ne mets pas RegisterHamFromEntity dans le stock du code de spawn, ça risque d'appeller plusieurs fois le callback.
Tu peux utiliser RegisterHam avec la class que tu utiliser dans create_entity
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
micapat
Veteran Member
Join Date: Feb 2010
Location: Nyuu, nyuu (France).
Old 11-19-2011 , 16:06   Re: Invalide entité après kill de celle-ci
#3

J'ai résolu le problème. En considérant que l'entité est invalide, je sauvegarde dans un tableau des informations concernant l'entité qui vient d'être tuée, et je les transmet via la set_task.

Pour le RegisterHamFromEntity, j'ai du mettre en place des checks dans la fonction callback sur la classname de l'entité.

PHP Code:
stock npc_CheckClassnamenpcclassname[ ] )
{
    new 
classNpc32 ];
    
entity_get_stringnpcEV_SZ_classnameclassNpc31 );
    return 
equalclassNpcclassname );

__________________

Last edited by micapat; 11-19-2011 at 21:03.
micapat is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 11-20-2011 , 02:19   Re: [ Résolu ] Invalide entité après kill de celle-ci
#4

Ce que je voulais dire c'est que RegisterHamFromEntity enregistre non pas pour une seule entité mais pour toutes les entités portant la même classe que celle utilisée pour créer l'entité.
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
micapat
Veteran Member
Join Date: Feb 2010
Location: Nyuu, nyuu (France).
Old 11-20-2011 , 06:55   Re: [ Résolu ] Invalide entité après kill de celle-ci
#5

Ah ok. Donc il vaut mieux ne faire qu'un seul RegisterHamFromEntity dans l'init c'est ça ? Mais ça implique que pendant l'init je dois créer une "fausse entité" portant le classname adéquate, je fais les RegisterHamFromEntity que je veux, puis après je supprime l'entité.

Car là actuellement en faisant les RegisterHamFromEntity lors du spawn de l'entité, j'ai un méchant bug si je ne vérifie pas le classname dans les callbacks : j'ai crée deux types d'entités différentes ( Donc des classnames différents ) et il arrive souvent que les callbacks soient mélangés, ainsi une entité ayant un classname XXX quand elle meurt appelle des callbacks de la classname YYY 0_0.
__________________
micapat is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 11-20-2011 , 08:02   Re: [ Résolu ] Invalide entité après kill de celle-ci
#6

Ben disons sue tu crées toutes tes entités avec info_target par exemple.
Ensuite tu renommes le classname en fun_blabla et fun_blabla2
Tu utilises RegisterHamFromEntity ça prend en compte "info_target" et rien d'autre.
Après est-ce que ça peut register plusieurs fois la même fonction je pense que oui mais j'ai jamais vérifié.
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
micapat
Veteran Member
Join Date: Feb 2010
Location: Nyuu, nyuu (France).
Old 11-20-2011 , 08:12   Re: [ Résolu ] Invalide entité après kill de celle-ci
#7

Ok donc je suis obligé de filtrer comme je le fait. Merci.

En fait chaque NPC que je conçois est dans un .inc différent, et donc le but est que chaque .inc est indépendant des autres. d'où éviter qu'il y est un seul Register_ham général.
__________________
micapat is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 11-20-2011 , 09:25   Re: [ Résolu ] Invalide entité après kill de celle-ci
#8

Tu peux peut être utiliser un truc du genre :

PHP Code:
    static HamHook:Killed
    
if( !Killed )
    {
        
Killed RegisterHamFromEntity
    

__________________
- tired and retired -

- my plugins -

Last edited by ConnorMcLeod; 11-20-2011 at 09:25.
ConnorMcLeod is offline
micapat
Veteran Member
Join Date: Feb 2010
Location: Nyuu, nyuu (France).
Old 11-20-2011 , 22:03   Re: [ Résolu ] Invalide entité après kill de celle-ci
#9

Merci .

Et faut-il aussi que dans le think de l'entité ( appelé via register_think ), je check aussi sa classname comme dans les callback de RegisterHamFromEntity ?

PHP Code:
register_think"npcClass""npc_Think" );

// ...

public npc_Thinknpc )
{
    if( !
npc_CheckClassnamenpc"npcClass" )) // Necessaire ou non ? ? ?
        
return;

    
// ...

__________________

Last edited by micapat; 11-20-2011 at 22:07.
micapat is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 11-21-2011 , 01:24   Re: [ Résolu ] Invalide entité après kill de celle-ci
#10

Non, ça c'est géré par le module engine qui lui du coup check tous les thinks avec toutes les class déclarées au module.
__________________
- tired and retired -

- my plugins -
ConnorMcLeod 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 05:13.


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