[Script] PASSAGE SECRET sans besoin d'objets clickable

Répondre
Partager Rechercher
Initialement posté par Tonton

PASSAGE SECRET sans besoin d'objets clickable...et qui sera connu par le groupe entier sans besoin que chaque joueur le trouve (il fera apparaitre l'icone "passage" sur le triggers )

faire un trigger generic et dans sa partie script "on enter" mettre :

[PHP]
int secret_crypt_party_flag=0;
void main()
{
int difficulty = 20;
object oPlayer = GetNearestCreature (CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1);
int search_score = GetSkillRank(SKILL_SEARCH, oPlayer);
if ( (d20(1)+search_score > difficulty) || GetLocalInt (GetModule (), "secret_crypt_party_flag") )
{
SetMapPinEnabled (GetObjectByTag ("NW_SD_CRYPT", 0), 1);
SetLocalInt (GetModule(), "secret_crypt_party_flag", 1);
ActionStartConversation (oPlayer, "crypt_sd", TRUE);
}
}


1) la 'difficulty' est le DC pour trouver la porte secret).
2) le oPlayer est la creature la plus proche (celle qui a marché sur le trigger)
3) search_score est le jet "de fouille/chercher"
4) le 'secret_crypt_party_flag' est utiliser pour donner la connaissance du passage aux autres membres du groupe.

5) le SetMapPin valide un Waypoint qui est coller dans l'area ou se trouve le trigger de la porte secrete.

le ActionStartConversation appelle un dialogue (qu'il faut nommer "crypt_sd") -> message d'intro "prendre la porte secrete?" (seule le joueur qui trouve le passage verra le dialogue)
il faut faire 2 choix dans le dialogue:
1. le prendre
2. ne pas le prendre

si le joueur choisit de "le prendre"
le script suivant est appelé : (dans la partie script "action taken" du choix "le prendre")

Code PHP:

void main()
{
    
object oPlayer GetPCSpeaker();
    
object oTargetArea GetObjectByTag ("NW_CRYPT_START"0);
    
AssignCommand (oPlayerActionJumpToLocation (GetLocation (oTargetArea)));

le resultat est une teleportation du joueur qui dialogue au waypoint dans dont le tag est NW_CRYPT_START

scipt by zug sur forum bioware (téste & marche)
Ce script ne se compile pas (erreur ligne 16)
Dis moi mon cher Zariel, tu as bien évidemment commenter la partie explicative :



Code PHP:

1la 'difficulty' est le DC pour trouver la porte secret).
2le oPlayer est la creature la plus proche (celle qui a marché sur le trigger)
3search_score est le jet "de fouille/chercher"
4le 'secret_crypt_party_flag' est utiliser pour donner la connaissance du passage aux autres membres du groupe.

5le SetMapPin valide un Waypoint qui est coller dans l'area ou se trouve le trigger de la porte secrete.

le ActionStartConversation appelle un dialogue (qu'
il faut nommer "crypt_sd") -> message d'intro "prendre la porte secrete?" (seule le joueur qui trouve le passage verra le dialogue)
il faut faire 2 choix dans le dialogue:
1. le prendre
2. ne pas le prendre

si le joueur choisit de "le prendre"
le script suivant est appelé : (dans la partie script "action taken" du choix "le prendre") 
De plus tu as bien suivi ces instructions et tu as mis chacun des deux scripts dans des endroits différents ?

Je te pose ces questions parce qu'aucun de ces deux scripts ne fait plus d'une dizaine de ligne ....
Oui, pour le 2eme script héhé

Ben pour la partie explicative, la plupart des scripts se compilent avec...Désolé, Merci Jedaï
Code PHP:

int secret_crypt_party_flag=0;
void main()
{
    
int difficulty 20;
    
object oPlayer GetNearestCreature (CREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PCOBJECT_SELF1);
    
int search_score GetSkillRank(SKILL_SEARCHoPlayer);
    if ( (
d20(1)+search_score difficulty) || GetLocalInt (GetModule (), "secret_crypt_party_flag") )
    {
        
SetMapPinEnabled (GetObjectByTag ("NW_SD_CRYPT"0), 1);
        
SetLocalInt (GetModule(), "secret_crypt_party_flag"1);
        
ActionStartConversation (oPlayer"crypt_sd"TRUE);
    }
}

/*
1) la 'difficulty' est le DC pour trouver la porte secret).
2) le oPlayer est la creature la plus proche (celle qui a marché sur le trigger)
3) search_score est le jet "de fouille/chercher"
4) le 'secret_crypt_party_flag' est utiliser pour donner la connaissance du passage aux autres membres du groupe.

5) le SetMapPin valide un Waypoint qui est coller dans l'area ou se trouve le trigger de la porte secrete.

le ActionStartConversation appelle un dialogue (qu'il faut nommer "crypt_sd") -> message d'intro "prendre la porte secrete?" (seule le joueur qui trouve le passage verra le dialogue)
il faut faire 2 choix dans le dialogue:
1. le prendre
2. ne pas le prendre

si le joueur choisit de "le prendre"
le script suivant est appelé : (dans la partie script "action taken" du choix "le prendre")*/


void main()
{
    
object oPlayer GetPCSpeaker();
    
object oTargetArea GetObjectByTag ("NW_CRYPT_START"0);
    
AssignCommand (oPlayerActionJumpToLocation (GetLocation (oTargetArea)));

Ben ok Tyrion mais là ça m explique pas plus j'avais lu les 1er post et je pige pas les liens entres les zone, le WP doit etre dans la meme carte ? faut une declencheur ailleurs , on mets koi dedan en gros comment ça marche ?
J'ai enfin compris comment ça marche Je vais me permettre d'expliquer un peu plus clairement le principe car j ai galeré 4H pour capter comment ça marchait.
voila je pense la methode la plus simple.
1) Creer 2 zones de transition, et les lieer comme pour un changement de zone.

2)Placer un declancheur generique a l'endroit ou vous voulez que le test de decouverte du passage se fasse

3)Placer dans ce declencheur le 1er script dans le OnEnter

Code PHP:

int secret_crypt_party_flag=0;
void main()
{
    
int difficulty 20;
    
object oPlayer GetNearestCreature (CREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PCOBJECT_SELF1);
    
int search_score GetSkillRank(SKILL_SEARCHoPlayer);
    if ((
d20(1)+search_score difficulty) || GetLocalInt (GetModule (), "secret_crypt_party_flag") )
    {
        
SetMapPinEnabled (GetObjectByTag ("NW_SD_CRYPT"0), 1);
        
SetLocalInt (GetModule(), "secret_crypt_party_flag"1);
        
ActionStartConversation (oPlayer"crypt_sd"TRUE);
    }

4)Lorsque les 2 zones ont été crées, 2 point de passage sont apparu 1 dans chacune des zone, le scrpit influe sur le le point de passage de "depart" donc changer son tag par celui du script,
==> NW_SD_CRYPT

5)Creer le dialogue
le ActionStartConversation appelle un dialogue (qu'il faut nommer "crypt_sd") -> message d'intro "prendre la porte secrete?" (seule le joueur qui trouve le passage verra le dialogue)
il faut faire 2 choix dans le dialogue:
1. le prendre
2. ne pas le prendre

6)Et mettre le script si acceptation de prendre le passage dans ActionTaken
Code PHP:

void main()
{
    
object oPlayer GetPCSpeaker();
    
object oTargetArea GetObjectByTag ("NW_CRYPT_START"0);
    
AssignCommand (oPlayerActionJumpToLocation (GetLocation (oTargetArea)));

Voilà j'espere avoir ete plus clair pour tous

bye bye

Répondre

Connectés sur ce fil

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