La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 17:02:06
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 | |
Djezebel Héros Messages: 252 |
NWScript :
// Get nCount characters from sString, starting at nStart // * Return value on error: "" string GetSubString(string sString, int nStart, int nCount) 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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 ) { 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)); } Je pose la question pendant que je parle des noms, merci! _________________ [http] |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
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 | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
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; } Ca doit être un truc comme ça. |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
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; } _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
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; } |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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; } 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 | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
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; } |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
marche pas, des que je rentre avec un nom normale, je meur, donc...
testé vos truc avant lol _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
c'est testé.
Si t'as fait un copier coller t'as fait gaffe au & ? paske là oui si tu t'appeles Black Knight ça te tue. |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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