La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 19/05/2024 05:53:02


  Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 12/12/2005 18:52:27 Sujet du message : GetSubString(string, int, int)

Voila je voudrais savoir ce que c'est : GetSubString(string, int, int)
J'ai lu dans le lexicon, et je pense que c'est pour dire le nombre de lettre que contient le "string" (donc je suppose que le premier "int" dit le minimum de lettre, et que le deuxieme dit le maximum)

Voila, si c'est pas sa vous pouvez me dire a quoi sa sert ?
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Djezebel
Héros
Inscrit le: 29 Sep 2005
Messages: 252
Répondre en citant
Posté le : 12/12/2005 18:58:53 Sujet du message :

NWScript :
// Get nCount characters from sString, starting at nStart
// * Return value on error: ""
string GetSubString(string sString, int nStart, int nCount)
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Ca obtient nCount lettres de "sString" en partant de la nStart ieme lettre.

Exemple :

string GetSubString("Bonjour", 3, 4);

Ca donnera : "jour" (si j'ai bien tout suivi)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 12/12/2005 19:08:58 Sujet du message :

est ce que ce script peut faire en sorte de conté le nombre de lettre du nom du joueur ?

je m'explique un peux mieux.

Enfaite je voudrais qu'un joueur n'atteigne pas plus de 25 lettre (avec son nom) et donc je sais pas trop quel commande utilisé.

Aussi j'ai cette commande pour interdit certaine chose dans le nom comme f**k, wt*, etc... mais quand je demende a ce qu'il n'accepte pas les &é"'(-è_çà)^$ù*:!;,?./§%µ¨£~#{[|`\^@]}¤ et bien il tue le joueur, que le nom soit correcte ou pas, pouvez vous me dire comment interdire cela :
NWScript :
string sName = GetName(oPC);
if(TestStringAgainstPattern("**f**k**",sName) == TRUE
  ||TestStringAgainstPattern("**wt* **",sName) == TRUE)//Ne pas compte l'espace ici Razz)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oPC);
DelayCommand(3.0, SpeakString(sName+"("+GetPCPlayerName(oPC)+") est entree avec un nom invalid.", TALKVOLUME_SHOUT));
DelayCommand(4.0, BootPC(oPC));
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Je pose la question pendant que je parle des noms, merci!
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 12/12/2005 19:24:58 Sujet du message :

Pour la longueur il faut utiliser
GetStringLength()

Sinon pour interdir certains caractères c'est celle-ci
FindSubString()
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 12/12/2005 19:28:49 Sujet du message :

Je comprend pas le FindSubString()
Je suis chiant mais c'est pas mon truc les Sub machin chose, tu peut me faire un exemple avec "&"?
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 12/12/2005 20:40:11 Sujet du message :

Je pense que le plus simple c'est de tester tout les caractères interdit et de voir si ça renvoie -1 ou non.
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 12/12/2005 20:53:40 Sujet du message :

Ou alors tester tous les caractères du nom contre une chaine "abcdef.....xyzABCDEF....XYZ". Ca revient au même, sauf pour le " que tu peux pas mettre dans une string (c'est le délimiteur...)

en gros
NWScript :

void NomAutorise(string sName)
{

int sLength = GetStringLength(sName);
string sAutorise = "AaBbCc...XxYyZz";
int i;
for (i=0;i<sLength;i++)
{
if (!FindSubString(sAutorise,GetSubString(sName,i,i))) return FALSE;
}
return TRUE;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Ca doit être un truc comme ça.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 12/12/2005 21:07:11 Sujet du message :

Donc je doit mettre toutes les lettres de l'alphabet et pour le truc "for" je sais pas a quoi sert ce machin la, je l'ai jms utilisé, je peut le remplace par "if(GetStringLength(sName) < 36) ??

Merci de votre aide
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 12/12/2005 21:28:16 Sujet du message :

for c'est une boucle , comme while, sauf que tu sais d'avance le nombre de fois qu'elle va se répéter. (ici c'est autant de fois qu'il y a de caractères dans le nom, puisqu'on les teste un par un)

if(GetStringLength(sName) < 36 ==> ça remplacera pas le for, mais si tu veux vérifier que le nom du joueur fasse moins de 25 caractères c'est ça qu'il faut utiliser ( if(GetStringLength(sName) < 25 ==> c'est bon)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 12/12/2005 21:54:35 Sujet du message :

lol probleme c'est ta phrase la :

if (!FindSubString(sAutorise,GetSubString(sName,i,i))) return FALSE;


Ellle marche pas
j'ai mis toutes les lettres de l'alphabet et quand je rentre par exemple avec [ ou & bein je suis pas mort (j'ai rajoute l'effet)
Tu peut pas me faire la version simple, car la longueur du nom sayé j'ai reussit mais la les lettres toujours pas.

Merci je re demaim soir!

@+
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 13/12/2005 19:03:48 Sujet du message :

Déjà un return TRUE sur une fonction sans type (void) c'est tendu.
Sinon passer par tout les caractères interdit me semblait plus simple (même si la différence n'est aps très grande).
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 13/12/2005 19:31:55 Sujet du message :

Tu peut me faire un exemple avec un "if" et un message apparait (comme "erreur nom") si il y a par exemple & car la moi je suis perdu je crois lol
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 13/12/2005 20:06:34 Sujet du message :

Il doit y avoir beaucoup plus simple comme structure mais en attendant
NWScript :
int ValidName(object oPC)
{
string sName = GetName(oPC);
string sRefu = "";

int iLength = GetStringLength(sName);
int iResult = FALSE;

if(iLength > 26)
{
  iResult = TRUE;
  int i = 0;

  while(i < iLength)
  {
  i++;
  if(FindSubString(sRefu, GetSubString(sName, i, 1)) == -1)
  {
    iResult == FALSE;
    break;
  }
  }
}
return iResult;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 13/12/2005 20:13:27 Sujet du message :

Je suis enmerdant mais ou je doit mettre la sanction si il a trop de lettre et si il y a une erreur dans le nom, désolé ^^ lol
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 13/12/2005 21:04:45 Sujet du message :

C'est une fonction, si elle retourne TRUE c'est bon sinon c'est FALSE.
Sinon je crois qu'il y a une erreur, dans la boucle increment à la fin.
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 15:43:40 Sujet du message :

Il me tue a chaque fois lol mdr!
On peut regler le probleme?...
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 14/12/2005 16:17:41 Sujet du message :

rooh, il y a pourtant pas beaucoup d'erreurs...

NWScript :

int ValidName(object oPC)
{
string sName = GetName(oPC);
string sRefu = "";

int iLength = GetStringLength(sName);
int iResult = TRUE;

if(iLength > 25) return FALSE;

  int i = 0;

  while(i < iLength)
  {

  if(FindSubString(sRefu, GetSubString(sName, i, 1)) >=0)
  {
    iResult == FALSE;
    break;
  }
  i++;
  }
return iResult;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 16:23:12 Sujet du message :

re, voila j'ai moi même mon script, puisque le votre me tué a chaque fois :

NWScript :
int iTEST(object oPC)
{
string sName = GetName(oPC);
string sRefu = "";
int iLength = GetStringLength(sName);
int iTRUEFALSE = TRUE;
int i = 1;
if(iLength > 36)
{
iTRUEFALSE = FALSE;
}
else
{
iTRUEFALSE = TRUE;
}
while(i < iLength && GetLocalInt(oPC, "StopContinue") == 0 )
{
if(FindSubString(sRefu, GetSubString(sName, i, 1)) == 0)
{
iTRUEFALSE = FALSE;
SetLocalInt(oPC, "StopContinue", 1);
}
i++;
}
return iTRUEFALSE;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Bon enfaite au début j'ai remarqué que sa me tué jamais, mais j'ai oublié que mon "else" metté la variable a TRUE donc je risqué pas de mourir. Donc la je l'ai deplassé et c'est bon (enfaite le while ne devais pas etre avant le "else" sinon sa foiré!). Bon si j'ai plus de 36 lettres je meurs j'ai aucun probleme. Mais si j'ai une touche qu'il ne faut pas avoir, et bien il laisse passé.
Alors dans ton script Ivellios le probleme c'est que si tu met "-1" cela veut dire que tu met la variable a FALSE si il n'a pas une des touches &é"'( etc... alors faut mettre 0, c'est marqué dans le lexicon.
Ensuite j'ai mi un LocalInt pour évité qu'il continue sa boucle, car il peut passé du FALSE au TRUE si il voit que la deuxieme lettre est bonne.(bien sur la Local reste a 0 si il y a pas de probleme)

Maintenant je meurs pas si mon nom est invalid, donc le nombre de lettre c'est bon, mais pas les touches non, vous pouvez voir mon script et le regler ?

Merci
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 14/12/2005 16:58:41 Sujet du message :

Heu là ton script revient à un seul caractère interdit le "é"...
Celui d'Ivellios avec mes pitites corrections marche prends le (je l'ai pas testé mais bon, ça a l'air bien).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 17:17:45 Sujet du message :

Pourquoi il prend que le "é" ??
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 17:23:22 Sujet du message :

marche pas ... toujours avec les caracteres speciaux... -_-
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 14/12/2005 18:12:31 Sujet du message :

Bon je comprends pas pourquoi ça marchait pas. Mais ça ça marche :
NWScript :

int ValidName(object oPC)
{
string sName = GetName(oPC);
string sRefu = "";

int iLength = GetStringLength(sName);
int iResult = TRUE;

if(iLength > 25) return FALSE;

  int i = 0;

  while(i < iLength)
  {

  if(FindSubString(sRefu, GetSubString(sName, i, 1)) >=0) return FALSE;
  i++;
  }
return iResult;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 18:26:07 Sujet du message :

marche pas, des que je rentre avec un nom normale, je meur, donc...

testé vos truc avant lol
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 14/12/2005 19:06:03 Sujet du message :

c'est testé.
Si t'as fait un copier coller t'as fait gaffe au &amp ? paske là oui si tu t'appeles Black Knight ça te tue.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 20:36:18 Sujet du message :

sa fait quoi le &amp ??
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 49.89ms