Drop aléatoire d'essences...?

Répondre
Partager Rechercher
Bonjour à tous et...bonne année en passant

Je me heurte depuis quelques jours à un obstacle qui m'irrite fortement.

Je cherche à appliquer un script de drop aléatoire (fonctionnel, lui) sur des créatures permettant de dropper des essences.

Le script en lui même ne pose aucun soucis sur des gemmes ,cristaux et autres diamants mais refuse obstinément de fonctionner lorsque le tag concerne une essence ( de quelque puissance qu'elle soit). Cela se traduit simplement par une absence de drop à la mort de la créature.

Il doit exister un verrou concernant les éléments de type " essences" ( *_ess_*) , quelque part dans un script parallèle, que je ne trouve pas.

Un prince des scripts sillonnant ce forum pourrait-il me sortir de cette impasse ?


Merci
__________________
http://muaddiib.free.fr/tagminasb.jpg

Dernière modification par Lord Muad ; 01/01/2012 à 15h23.
Salut,

Sur ton module il y a des coffres qui créent des essences, s’ils fonctionnent correctement ton problème à de forte chance de venir de ton script.
Ton script fonctionne avec des armes, des livres etc., ou il n’y a que les essences qui ne fonctionnent pas ?
Mais pour avoir un début de chemin pour remonter à ton problème, tu peux rajouter des lignes de contrôle au script.
Un exemple :
Sur la fonction qui crée l’essence et qui doit être du type CreateItem (plein de param) tu modifies comme ça.
Object oTest = CreateItem() ;
If(oTest == OBJECT_INVALID)
sendMessageToPc(GetFristPc(), « Test_essence : Objet invalide ») ;
Else sendMessageToPc(GetFristPc(), « Test_essence »+ GetTag(oTest)) ;

Trois cas possible :
Tu as le message « objet invalide », ta fonction ne marche pas correctement. Probablement un problème de paramètres.


Tu as le message « tag de ton essence », ta fonction marche. Vérifies où est crée ton essence. Si c’est au bon endroit alors oui tu as un « script parallèle » qui détruit l’essence.


Tu n’as pas de message du tout, ta fonction n’est même pas exécutée. En amont tu dois avoir un blocage. Comme par exemple une variable local sur la créature etc.

Même un prince des scripts ne peut pas faire grand-chose pour t’aider s’il n’a pas le script sous les yeux sauf, bien sûr, s’il possède une bonne boule de cristal.
Salut l’habile.



Ci-dessous le script qui fonctionne sur le module. Il permet aléatoirement de dropper, placé dans le « onspawn » de la créature, des objets de type diamants, rubis, obsidienne et des objets spécifiques du mod. Il me semble que tu le connais d’ailleurs, c’est celui permettant notamment d’obtenir sur le mod les paillettes detitanium et de platinium. Avec un peu de chance , il est même probable que tu l’ai pondu.



Bref, il est donc tout à fait fonctionnel mais dès lors que je remplace le resref ou le tag ( ce sont les mêmes) parcelui concernant une essence , de quelque type que ce soit ( ie : « ctf_es_water1 »), le script l’ignore .



J’ai tenté de faire fonctionner le script pour moitié avecdes items classiques et pour l’autre des essences, bingo , seuls les itemsclassiques étaient droppés et aucune essence.



Je n’ai pas eu le temps de faire les tests que tu m’as proposé, je le ferai ce we je pense.



Quoi qu’il en soit, merci Blaireau…. Et tu as toujours ta statue.



Code PHP:

void main() {
    
string sRef;

    switch(
Random(20) + 1) {
        case 
:
            
sRef "dechetmineral";
            break;

        
//pierre verte
        
case :
            
sRef "NW_IT_GEM001";
            break;

        
//obsidienne
        
case :
            
sRef "cft_gem_03";
            break;

        case 
:
            
sRef "dechetmineral";
            break;

        case 
:
            
sRef "pepite";
            break;

        case 
:
            
sRef "dechetmineral";
            break;

        case 
: [/SIZE][/FONT]
            
sRef "dechetmineral";
            break;

        case 
:
            
sRef "dechetmineral";
            break;

        case 
:
            
sRef "dechetmineral";
            break;

        
//Quartz fluorescent
        
case 10 :
            
sRef "nw_it_gem015";
            break;

        
//Diamant
        
case 11 :
            
sRef "nw_it_gem005";
            break;

        
//Obsidienne
        
case 12 :
            
sRef "cft_gem_03";
            break;

        
//rubis
        
case 13 :
            
sRef "nw_it_gem006";
            break;

        
//pierreverte
        
case 14 :
            
sRef "NW_IT_GEM001";
            break;

        case 
15 :
            
sRef "dechetmineral";
            break;

        case 
16 :
            
sRef "dechetmineral";
            break;

        
//saphir étoilé
        
case 17 :
            
sRef "cft_gem_10";
            break;

        
//Obsidienne
        
case 18 :
            
sRef "cft_gem_03";
            break;

        case 
19 :
            
sRef "dechetmineral";
            break;

        case 
20 :
            
sRef "pepite";
            break;
    }
    
CreateItemOnObject(sRef);


Dernière modification par Deyonara ; 19/01/2012 à 00h20. Motif: modification des balises de mise en forme pour la lisibilité du code
Je vois que c'est cft_ess_water1 l'objet et pas ctf_es_water1 , j'espère que l'erreur ne vient pas juste de là

Sinon je ne vois rien dans le script qui bloque l'essence sinon fais un test sur la mort du PNJ, fais une boucle qui scanne son inventaire et teste si il a une essence sur lui au moment de sa mort, tu verras vite si elle s'est bien crée
J'ai eu un coup de chaud , là.... mais oui, heureusement , ou malheureusement d'ailleurs, le script est bien testé avec les bons resrefs (*_ess_*)

Je pense vraiment, compte tenu des tests effectués, que cela vient d'une restriction par un script planqué quelque part qui concerne les essences. Le tout est de trouver comment la shunter....et là , je bute.

Merci en tous cas, je tenterai, en désespoir de cause, les manips que vous m'avez proposé Blaireau et toi
__________________
http://muaddiib.free.fr/tagminasb.jpg
Bon bon bon...suite et pseudo fin, à l'intention des suivants qui risquent de se cogner au même problème.

J'ai, comme souvent , contourné la difficulté. Il se trouve que le verrou ne semble pas être sur le *_ess_* mais sur le tag/ resref spécifique de chaque essence. Ne me demandez pas pourquoi .
Il m'a donc suffit de recréer les blueprints des essences ( en gardant leurs tags original, afin de sauvegarder leurs spécificités de crafts). Le script fonctionne maintenant parfaitement ce qui permet donc de droper aléatoirement des essences avec un pourcentage spécifique pour chacune d'entre elles.

Merci aux participants du fil pour leurs tentatives

Bon jeu à tous.
__________________
http://muaddiib.free.fr/tagminasb.jpg
Et ben ! Une année qui commence bien.

Dans le cas ou tu veux trouver ce script parallèle, tu crées :

1)
Un module.
Une zone toute simple.
Le blueprint d’une créature.
Tu enlève le script « spawn » de la créature et tu mets un truc simple, par exemple :

void main() { CreateItemOnObject("cft_ess_water1"); }

Pour éviter de poireauter avec le trigger de rencontre tu crées un trigger générique et dans le script de l’entrée tu mets :

void main()
{
if(GetIsPC(GetEnteringObject()))
CreateObject(1,"resrefcrea",GetLocation(OBJECT_SELF));
}

Tu testes.
Ca marche : c’est bien un script sur ton module qui détruit ou empêche la création de l’essence.
Ca ne marche pas alors :

2)
Tu enlèves les scripts d’événement du module, de la zone et de la créature sauf le script de spawn

Tu testes.
Ca marche, il te reste à remettre les scripts un par un.
Ca ne marche pas. Aie ! Pas glop pas glop.

Après tu peux utiliser la deuxième partie sur ton module.
C’est une belle épée de Damoclès que tu as là.
Mais bonne année quand même.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés