Page 1 sur 1

Re: Code Pnj.sma

Publié : 23 oct. 2016, 15:05
par Saul
Merci Lianna.

Si je peux me permettre je mets ci-dessous la même chose avec des commentaires.
Si tu trouves que ce n'est pas bien, n'hésite pas à me le dire et je retire le message :wink:



/*
Solanra télépote un joueur dans la salle des portails en Séridia en échange d'un objet (orgham des portails) ou contre 600 lumens.
*/



/*met la valeur 1 dans "SOLANRA_OUI"*/
#define SOLANRA_OUI 1
/*met la valuer 2 dans "SOLANRA_TP_OGHAM_PORTAIL"*/
#define SOLANRA_TP_OGHAM_PORTAIL 2
/*met la valuer 3 dans "SOLANRA_TP_LUMENS"*/
#define SOLANRA_TP_LUMENS 3
/*met la valuer 4 dans "SOLANRA_BYE"*/
#define SOLANRA_BYE 4


/* création des choix de réponses : "oui", "non" ou "Au revoir"*/
build_solanra_responses ()
{

/*Choix "oui" on execute la case "SOLANRA_OUI" ligne 66*/
add_npc_response("Oui",SOLANRA_OUI,solanra);
/*Choix "Non" on execute la case "SOLANRA_BYE" ligne 122*/
add_npc_response("Non",SOLANRA_BYE,solanra);
/*Choix "Au revoir" on execute la case "SOLANRA_BYE" ligne 122*/
add_npc_response("Au revoir",SOLANRA_BYE,solanra);
}


/*Fonction permettant d'afficher le texte*/
touch_solanra (player)
{

/*déclaration de 2 variables*/
new string[500];
new name_string[20];

/*On récupère le nom de l'avatar et on le stock dans la variable "name_string"*/
get_player_name (player, name_string);
/*On regarde si c'est un homme*/
if(is_male(player))
{

/*On affiche le dialogue de SOLANRA pour un homme avec le nom de l'avatar qui est devant SOLANRA à la fin*/
sprintf (string, "Bonjour, %s ! Je suis Solanra et je peux t'emmener à la salle des portails !\nCeci en échange d'un ogham de portail ou de 600 lumens, es-tu intéressé ?", name_string);
}
else
{

/*On affiche le dialogue de SOLANRA pour une femme avec le nom de l'avatar qui est devant SOLANRA à la fin*/
sprintf (string, "Bonjour, %s ! Je suis Solanra et je peux t'emmener à la salle des portails !\nCeci en échange d'un ogham de portail ou de 600 lumens, es-tu intéressée ?", name_string);
}

/*On met en forme et on attend la réponse du joueur*/
add_npc_text (string, c_green1, 0);
build_solanra_responses();
send_response_list ();
}



/*Traitement de la réponse*/
respond_solanra (player, response)
{

/*On déclare 2 variables*/
new money_we_have;
new string[500];

/*Choix des réponses*/
switch(response)
{

/*Réponse "OUI"*/
case SOLANRA_OUI:
{

/*On affiche un nouveau texte*/
add_npc_text("Une téléportation en salle des portails de Séridia en échange d'un ogham de portail ou de 600 lumens ?",c_green1,0);
/*On affiche les nouveaux choix : "un ogham de portail", "600 lumens" et "Aucun des deux, au revoir."*/
add_npc_response("un ogham de portail",SOLANRA_TP_OGHAM_PORTAIL,solanra);
add_npc_response("600 lumens",SOLANRA_TP_LUMENS,solanra);
add_npc_response("Aucun des deux, au revoir.",SOLANRA_BYE,solanra);

/*On attend la réponse*/
send_response_list();
return;
}

/*Réponse "600 lumens"*/
case SOLANRA_TP_LUMENS:
{

/*On regarde si le joueur possède plus de 600 lumens sur lui*/
money_we_have = get_item_quantity (player, ITEM_MONEY);
/*Le joueur n'a pas 600 lumens*/
if (money_we_have < 600)
{
sprintf (string, "Tu as %i lumens, or il t'en faut %i !", money_we_have, 600);
add_npc_text (string, c_red1, 0);
send_response_list ();
return;
}

/*Le joueur a plus de 600 lumens, on lui retire les 600 lumens*/
remove_item_player (player, ITEM_MONEY, 600);
/* On le téléporte*/
teleport_player(player, 12 , 57 , 42, 1, 100);
return;
}

/*Réponse "un ogham de portail"*/
case SOLANRA_TP_OGHAM_PORTAIL:
{

/*On vérifie que le joueur possède bien un ogham sur lui*/
money_we_have = get_item_quantity (player, ITEM_OGHAM_PORTAIL);
/*Le joueur n'a pas d'ogham*/
if (money_we_have < 1)
{
add_npc_text ("Tu ne disposes pas d'ogham des portails, reviens me voir avec.", c_red1, 0);
send_response_list ();
return;
}

/*Le joueur a un ogham et on le lui retire*/
remove_item_player (player, ITEM_OGHAM_PORTAIL, 1);
/*On affiche un nouveau texte*/
sprintf (string, "*Solanra incline légèrement la tête*");
add_npc_text(string, c_grey1, 0);

/*On téléporte le joueur*/
teleport_player(player, 12 , 57 , 42, 1, 100);
return;
}

/*Réponse "non" ou "au revoir"*/
case SOLANRA_BYE:
{

/*On affiche un nouveau texte*/
add_npc_text("Bien, une autre fois peut-être.",c_green1,0);
send_response_list();
return;
}
}
}

Re: Code Pnj.sma

Publié : 23 oct. 2016, 21:08
par Ektor
C'est super de voir le code, merci Lianna, chouette initiative !
C'est quel langage de programmation ?

Re: Code Pnj.sma

Publié : 24 oct. 2016, 10:16
par trinita
C'est du small qui dans la syntaxe se rapproche beaucoup du langage C.

Attention aux commentaires :D cela peu rendre la lecture du code difficile :D