Nouvelles fonctions du patch 1.06 ?

Répondre
Partager Rechercher
En trainant sur les forums bioware, je suis tombé sur un post qui indique que le patch note n est pas complet sur les fonctions de scripts.
A priori de nouvelles fonctions ont été ajoutées, dont celle sur les pieges. Pourtant j etais persuadé que ces fonctions, bien que prevue dans le 1.06 avaient été repoussées au 1.07…..


Je n ai pas verifié en jeu, mais ces fonctions sont bien dans le toolset et la compilation se passe bien.


Donc, a tester



Nouvelles fonctions

EffectRescue() - Placeholder effect "so the engine knows your in rescue mode" ?? je ne sais pas ce que c est…


EffectDetectSpirits() - "Create a Detect Spirits effect." A priori comme le detect undead mais sur les esprits.


EffectDamage ReductionNegated() – Crée un effet qui fait que tous les reductions de degats sur une creature sont ignore.


EffectConcealmentNegated() – Cree un effet qui fait que mes effets de dissimulation et les chance de rater sur une creature sont ignorés


EffectInsane() – Cree un effet de folie. Les craetures avec cet effet attaquent la creature la plus proche qu elle soit amie ou ennemie.


GetIsSpirit() – Renvoie VRAI si la creature est un



CreateTrapAtLocation()
CreateTrapOnObject()
GetTrapActive()
SetTrapDetectable() (Note: GetTrapDetectable() deja dispo)
SetTrapDisarmable() (Note: GetTrapDisarmable() deja dispo)
GetTrapRecoverable()
SetTrapRecoverable()
SetTrapOneShot() (Note: GetTrapOneShot() deja dispo)
SetTrapKeyTag() (Note: GetTrapKeyTag() deja dispo)
SetTrapDetectDC() (Note: GetTrapDetectDC() deja dispo)
SetTrapDisarmDC() (Note: GetTrapDisarmDC() deja dispo)
GetModuleXPScale()
SetModuleXPScale()
SetPlayerGUIHidden() – Coupe l interface GUI du joueur. ???
SetRenderWaterInArea() – Switch permettant d afficher ou non l eau d une zone





Changement sur des fonctions existantes:

EffectACIncrease() – Ajout du parameter bVsSpiritsOnly
EffectSavingThrowIncrease() - Ajout du parameter bVsSpiritsOnly
EffectDeath() – Ajout du parameter nIgnoreDeathImmunity –
GiveGoldToCreature – Ajout du parameter bDisplayFeedback
ExploreAreaForPlayer() – Ajout du parametre nExplored . SI ce parameter est à FALSE la zone n est plus explorée pour le joueur.
Justement je me demandais comment ça fonctionnait (j'ai pas encore appliqué le patch). comment ça marche ? qu'est ce que ça crée comme piège ? Comment est définie sa taille ? Quel est le design du piège (rectangle, carré etc) ?etc
Citation :
Publié par Mastokk
Justement je me demandais comment ça fonctionnait (j'ai pas encore appliqué le patch). comment ça marche ? qu'est ce que ça crée comme piège ? Comment est définie sa taille ? Quel est le design du piège (rectangle, carré etc) ?etc
Alors le design c est un carré, sa taille et le type de piege est defini dans la commande.

Mais pour que cela soit plus clair voila la syntaxe exacte :

Code PHP:

//Creates a square trap at the location specified.
// - nTrapType: The base type of trap (TRAP_BASE_TYPE_*)
// - lLocation: The location and orientation that the trap will be created at
// - fSize: The size of the trap, minimum of 1.0f
// - sTag: The tag of the trap being created
// - nFaction: The faction of the trap ( STANDARD_FACTION_* )
// - sOnDisarmScript: The OnDisarm scrip that will fire when the trap is disarmed
// -                  If empty, then no script will fire
// - sOnTrapTriggered: The OnTrapTriggered script that will fire when the trap is triggered
//                    If empty, the default script will fire for this type of trap
// - Returns the ID of the newly created trap if successful
object CreateTrapAtLocationint nTrapTypelocation lLocationfloat fSize=2.0f
Au vu des divers paramètres, la fonction entière ressemble sûrement à ça :
Code PHP:

// Crée un piège de forme carrée à la localisation spécifiée.
// - nTrapType : Le type de base du piège (TRAP_BASE_TYPE_*)
// - lLocation : La localisation où le piège sera créé.
// - fSize : La longeur/largeur du piège, minimum 1.0f
// - sTag : Le nouveau Tag du piège à créer
// - nFaction : La faction du piège (STANDARD_FACTION_*)
// - sOnDisarmScript : Le script à exécuter pour l'événement
//                     "OnDisarm" du piège. Si vide, aucun
//                     script ne sera exécuté.
// - sOnTrapTriggered : Le script à exécuter pour l'événement
//                      "OnTrapTriggered" du piège. Si vide, le
//                      script par défaut correspondant au type
//                      de base du piège sera exécuté.
// - Renvoie l'ID du nouveau piège s'il a été créé avec succès.
object CreateTrapAtLocationint nTrapType,
                             
location lLocation,
                             
float fSize=2.0f,
                             
string sTag="",
                             
int nFaction=STANDARD_FACTION_HOSTILE,
                             
string OnDisarmScript="****",
                             
string sOnTrapTriggered="****"); 
Voila voila. ^^

Ca serait intéressant de savoir quel est le ResRef du piège créé, pour qu'on puisse le remplacer si besoin. Je chercherai à l'occasion.

[Edit] : J'ai testé la compilation de ce script :
Code PHP:

void main()
{
    
CreateTrapAtLocation(TRAP_BASE_TYPE_MINOR_SPIKE,
                         
GetLocation(OBJECT_SELF),
                         
2.0,
                         
"",
                         
STANDARD_FACTION_HOSTILE,
                         
"trap_ondisarm",
                         
"trap_ontriggered");

Et tout s'est bien passé, les paramètres sont bien pris en charge. A voir en jeu si tout est bien pris en compte.
Un trigger peut traverser les murs sans qu'on ait à se soucier de son fonctionnement. Il faut juste bien calculer pour qu'il ne déborde pas d'un couloir à un autre, par exemple.


[Edit] : Pour ceux qui veulent créer des pièges personnalisés, je conseille d'utiliser la fonction comme ceci :
Code PHP:

CreateTrapAtLocation(0lLoc*, fFloat**, "TAG_DE_VOTRE_PIEGE"0"votre_script_ondisarm""votre_script_ontriggered");

// *  lLocation : la localisation de votre choix
// ** fFloat : une longueur de votre choix, supérieure ou égale à 1.0 
La fonction CreateTrapOnObject(...) fonctionne de la même manière, à part qu'il n'y a pas de paramètre à entrer pour la taille (logique). A utiliser sur les plaçables et les portes.

Fonction :
Code PHP:

// Crée un piège sur un plaçable ou une porte.
// Le plaçable ou la porte NE DOIT PAS être déjà
// piégé. La fonction serait alors sans effet.
// - nTrapType : Le type de base du piège (TRAP_BASE_TYPE_*)
// - oObject : L'objet sur lequel le piège sera créé.
//              Doit être un plaçable ou une porte.
// - nFaction : La faction du piège (STANDARD_FACTION_*)
// - sOnDisarmScript : Le script à exécuter pour l'événement
//                     "OnDisarm" du piège. Si vide, aucun
//                     script ne sera exécuté.
// - sOnTrapTriggered : Le script à exécuter pour l'événement
//                      "OnTrapTriggered" du piège. Si vide, le
//                      script par défaut correspondant au type
//                      de base du piège sera exécuté.
void CreateTrapOnObjectint nTrapType,
                         
object oObject,
                         
int nFaction=STANDARD_FACTION_HOSTILE,
                         
string sOnDisarmScript="****",
                         
string sOnTrapTriggered="****"); 
Et son utilisation pour un piège personnalisé :
Code PHP:

CreateTrapOnObject(0oObject*, 0"votre_script_ondisarm""votre_script_ontriggered");

// * oObject : Le plaçable ou la porte de votre choix 
fort intéressant , mais pour répondre à Lilo Yapudbier , quand tu parles de création dynamique, faut pas non plus qu'il soit créé a la volée juste au moment ou l'on tente d'ouvrir une porte par exemple, laissons une chance a ceux qui peuvent les détectés ^^ sadiques va
Citation :
Publié par nosfe_
fort intéressant , mais pour répondre à Lilo Yapudbier , quand tu parles de création dynamique, faut pas non plus qu'il soit créé a la volée juste au moment ou l'on tente d'ouvrir une porte par exemple, laissons une chance a ceux qui peuvent les détectés ^^ sadiques va

Non, il faut les creer a la volée juste à l entrée de la zone par exemple.
Citation :
Publié par nosfe_
fort intéressant , mais pour répondre à Lilo Yapudbier , quand tu parles de création dynamique, faut pas non plus qu'il soit créé a la volée juste au moment ou l'on tente d'ouvrir une porte par exemple, laissons une chance a ceux qui peuvent les détectés
Sisi je pensais justement à cela,
Pour donner un exemple concret je dois avoir un script quelque part qui permet de spawmer des rochers lorsqu'on passe sur un trigger (une dale sensible). Je m'en servait pour bloquer la sortie des joueurs une fois la salle du boss mis à sac, avec un petit effet tremblement de terre ça le faisait bien.

Dans le même ordre d'idée et bien on peut imaginer l'adversaire coupant la retraite des aventuriers par quelques gros pièges (invisibles dans le sens allez : normal ils existent pas encore), mais bien mortels dans le sens retour.
Les sorties de donjons sont parfois tellement trop facile, vous trouvez pas ?

Je vois immédiatement une autre utilisation : les voleurs qui se la jouent un peu trop solo.. Dans le cas présent quelques pièges spawmés par ici et par là dans les couloirs adjacents à une salle du coffre (toujours l'histoire de la dale sensible) devraient convaincre les membres de son équipe d'avoir un peu plus l'oeil sur le roublard trop zélé.

Citation :
Publié par nosfe_
sadiques va
Oulà il y a bien pire : par exemple des dizaines de pièges cachés sous les eaux croupies d'un donjon partiellement inondé, pièges indétectables biensurs (normal ils sont sous l'eau). Avec quelques pyranas en plus (de préférence impossibles a toucher) ça le fait bien.
ExploreAreaForPlayer()

Cette fonction ne semble pas fonctionner telle que je pensais qu'elle le ferait... j'ai beau mettre nExplored = FALSE, la map est toujours bien explorée par le joueur
Disons que ça marche. Mais le champ de vision d'un joueur est plutôt large. Quand on regarde la carte on constate bien les endroits explorés et inexplorés. Par contre, pour ce qui est du radar, il me donne l'impression d'être constamment exploré.
je pensais que ça agissait comme un brouillard de guerre dans les jeux RTS...
Là une carte 16x16 intérieure et extérieure est explorée entièrement.. j'ai pas testé plus grand par contre
Répondre

Connectés sur ce fil

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