Chouette un quizz !
Question 1
Bah tu as plusieurs solutions : il le jette (auquel cas tu peux faire un script simple pour qu'il se détruise 6 minutes après s'il n'a pas réintégré l'inventaire). L'autre solution, plus logique, est de mettre dans ton OnAcquireItem ce script :
void main()
{
object oItem = GetModuleItemAcquired();
string sTagVerif = GetTag(oItem);
string sTag = "tag_de_ton_item";
if(sTagVerif == sTag)
{
object oPC = GetItemPossessor(oItem);
object oItInv = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItInv))
{
string sInv = GetTag(oItInv);
if(sInv == sTag)
{
DestroyObject(oItInv,0.0);
}
oItInv = GetNextItemInInventory(oPC);
}
}
}
A noter que ce script supprimera tous les objets de l'inventaire ayant le même tag que l'objet acquired et gardrera l'acquired... Ca permet d'en supprimer plusieurs si il y en a plusieurs, mais ç peut avoir des conséquences dans certains cas. Si tu préfère simplement supprimer l'objet arrivant si il a son double dans l'inventaire, remplace
{
DestroyObject(oItInv,0.0);
}
par
{
DestroyObject(oItem,0.0);
}
Note : les 0.0 ne sont pas obligatoires en théorie, je les utilise par souci protocolaire, tu peux les enlever si tu veux
Question 2
Non. Il sera toujours volable. Tu peux faire un script sur l'objet qui l'empêche d'être volé et avertit le voleur que l'objet qu'il essaye de voler est involable. Je veux bien te le faire, il suffit de demander.
Question 3
Bah pareil, tu met dans le OnEnter du module un script qui vérifie le niveau du perso et lui enlève tous ses objets... (Pas très gentil si le mec se connecte plusieurs fois et qu'il n'a pas gagné de niveau entre temps
) ... et son or.
Ca devrait ressembler à ça :
void main()
{
object oPC = GetEnteringObject();
if(GetIsPC(oPC))
{
int n1 = GetLevelByPosition(1,oPC);
int n2 = GetLevelByPosition(2,oPC);
int n3 = GetLevelByPosition(3,oPC);
int nG = n1+n2+n3;
if(nG==1)
{
object oIt = GetFirstItemInInventory(oPC);
int nGold = GetGold(oPC);
GiveGoldToCreature(oPC,-nGold);
while(GetIsObjectValid(oIt))
{
DestroyObject(oIt);
oIt = GetNextItemInInventory(oPC);
}
}
}
}
Avec des nuances évidemment
Il peut y avoir deux ou trois trucs incertains, mais il y a 75% de chances pour que ça marche.
Question 4
Soit plus précise... En théorie, si c'est une créature invoquée normale, tu dois modifier le fichier de convocation, ou bien utiliser ton OnHeartBeat (je ne te dis pas l'état de ton CPU à la sortie
)... Si c 'est un cas spécial (famillier, ou même une créature issue d'un script autre), alors il faut modifier le script correspondant.
Si tu veux un coup de main la dessus, demande moi, c'est déjà plus compliqué.
Voili voilou... Un dernière chose au risque de te faire la morale, essaye de demander un poil plus gentiment la prochaine fois, ça fait toujours plaisir aux personnes qui passent du temps à t'aider et qui ne sont pas obligées
Ange Musicien
PS : après avoir lu les posts d'Archemedes... Regarde ma technique de vérif des classes, elle est plus pratique...