Baies Invinsibles
#1
Posté 24 septembre 2005 - 20:06
J'espère de ne pas trop encombrer le forum avec mes topics sinon
Bon alors je voulais faire des baies qui soignent nos blessures.Sauf que quand on les ramasse on peut les garder 1 mois ou 1 ans si on le veut alors que dans la réalité même au Moyen-Age ça pourrit.
Alors j'aimerai bien que vous me fassiez un script(sans prendre de votre temps ) qui enlève les baies au bout de 3 jours .
Merci d'avance
#2
Posté 24 septembre 2005 - 20:12
C'est une idée intéressante, pour le réalisme du jeu.
Mais j'ignore si c'est faisable...
Il faudrait scripter chaque ingrédient, ce qui fait beaucoup !
J'attends les commentaires d'autres personnes sachant vraiment scripter.
A+
Yr
---
"Se sent obligé de répondre par des mp en 4 points et 2 conclusions,
le tout engoncé dans un style académique des plus barbants."
#3
Posté 24 septembre 2005 - 20:18
Modifié par Destruckt, 24 septembre 2005 - 20:18.
#4
Posté 24 septembre 2005 - 21:28
Tout d'abord, il faut savoir qu'un script qui supprime l'objet auquel il est associé provoque un crash. C'est le principe de l'anneau de retour à Windows...
Donc, le script ne devrait pas être associé à la baie, car c'est une voie sans issue.
Donc il faut faire un script global. Problème, comment alors tenir l'inventaire des jours où les baies ont été cueillies ?
Evidemment, comme on ne conserve les baies que trois jours, ça peut s'arranger peut-être...
Voyons...
D'abord, création de trois variables globales
short Jmoins1
short Jmoins2
short Jmoins3
Ensuite le script global
Begin PourrissementDesBaies short temp float baieday if ( baieday != gameday ) set baieday to gameday set temp to Jmoins3 set Jmoins3 to Jmoins2 set Jmoins2 to Jmoins1 set Jmoins1 to 0 endif while ( temp > 0 ) player->removeitem "baie" 1 player->additem "baie pourrie" 1; optionnellement set temp to ( temp - 1 ) endwhile end
Ensuite un script local pour les baies :
Begin ScriptDesBaies if ( onPlayerAddThisItemToHisInventory == 1 ) set Jmoins1 to ( Jmoins1 + 1 ) endif end
Voilà. Maintenant, trois problèmes, du moins grave au plus grave :
- J'ai oublié le nom de la fonction pour quand un joueur rajoute un objet. Mais bon, le "scripting for dummies" ou bien quelqu'un d'autre va la retrouver.
- Les objets scriptés ne s'empilent pas. L'inventaire sera donc envahi par les baies.
- Cette solution nécessite trois variables globales par type de baies...
if player->getitemcount "baie" != Jmoins1 set Jmoins1 to ( player->getitemcount "baie" ) endif
Je sais pas trop ce que ça donnerais, toutefois.
Parce que le problème, c'est que si le joueur jette ses baies puis les reramasse, elles seront à nouveau toutes neuves. Le seul moyen d'éviter ça, c'est que la baie elle-même fasse le décompte des jours, mais alors elle ne peut pas se supprimer car ça ferait crasher le jeu...
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
#5
Posté 24 septembre 2005 - 21:49
Sinon on peut mettre un script à la baie pour empêcher de la mettre au sol.
Modifié par Destruckt, 24 septembre 2005 - 21:53.
#6
Posté 24 septembre 2005 - 21:53
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
#7
Posté 24 septembre 2005 - 21:56
#8
Posté 24 septembre 2005 - 21:56
#9
Posté 24 septembre 2005 - 22:03
Les scripts des esclaves de Morro font un disable après qu'on les aie libérés...
Modifié par Nwart, 24 septembre 2005 - 22:06.
#10
Posté 24 septembre 2005 - 22:06
en fait c'est removeitem qui devrait être utiliser mais je dit peut-être aussi une connerie
Mais il faudrait peut-être mettre dès que la baie est au sol elle pourrit on pourrait mettre un messagebox comme quoi à cause des bactérie du sol elle a pourri
Modifié par Destruckt, 24 septembre 2005 - 22:09.
#11
Posté 24 septembre 2005 - 22:13
#12
Posté 24 septembre 2005 - 22:14
#13
Posté 24 septembre 2005 - 22:18
#14
Posté 24 septembre 2005 - 22:26
REGLE : Il est strictement interdit de retirer un objet scripté de l'inventaire si celui ci n'est pas unique !
Sinon, les autres objet devendront corrompu et leur utilisation pourrafaire planter le jeu.
Donc 2 solutions :
- Tu ne scripts pas les baies, et dans ce cas, elle sont empilables, mais il ne sera plus possible de controler le pourrissement de chaque baie. Par contre , ca evitera d'avoir une 100aine de script qui tournent si tu a 100 baie dans ton inventaire.
- Tu script les baies, mais lorsque tu voudra en supprimé une, il faudra toute les supprimer et en rajouter le meme nombre -1. C'est comme ca que les bonbons fonctionnent. INCONVENIANT : Tu vois ton inventaire se vider et se reremplir ... ca fait moche. En plus, comme la dit Angora, les baies ne sont pas empilables.
Donc je te propose une solution beaucoup plus simple, meme si moins realiste.
Pour ceux qui connaisse le jeu Freelancer de microsoft. Quand vous transporté des produits périssables, en fait, on en perd 1 par jour. ainsi, plus le temps passe, moins vous avez de produit, car une partie a pourri.
Pour cette solution, un simple script global suffis ( pas de scriptage de baie ) :
begin Pourrissement short CurrentDay short Pourrissement if ( ( player->GetItemCount, "ingred_comberry_01" ) > 0 ) if ( CurrentDay != Day ) Set CurrentDay to Day Set Pourrissement to ( Pourrissement + 1 ) if ( Pourrissement > 2 ) Set Pourrissement to 0 player->RemoveItem, "ingred_comberry_01", 1 endif endif endif end
ce script supprimera 1 baie de ton inventaire tout les 2-3 jours ... pour simuler le pourrissement
Donc a toi de voir ce que tu preferes
PS : Tu peut toujours, au moment ou tu supprime une baie de l'inventaire, en rajouté une pourri aussi ^^
Modifié par Fandorn Delavie, 24 septembre 2005 - 22:28.
#15
Posté 24 septembre 2005 - 22:32
Par contre pour la viande pourri pour qu'elle attire quelques créatures je ne sais pas comment faire ?
#16
Posté 24 septembre 2005 - 23:07
Une message Box dit que : La nouriture dans votre sac a attiré une créature...
Tu veux aussi le script ?
Modifié par Fandorn Delavie, 24 septembre 2005 - 23:36.
#17
Posté 25 septembre 2005 - 10:27
Et merci pour te donner autant de mal
#18
Posté 25 septembre 2005 - 11:37
Et qquand tu supprime un morceau de viande, tu rajouteaussi un morceau de viande pourri et les lignes suivantes :
PlaceAtPC, "nix-hound", 1, 100, 1
MessageBox, "La viande pourri dans votre sac a attiré une créature affamé ..."
Ces 2 lignes placeront un chien de nix derriere toi et afficheront une Message Box des que la viande commencera a pourrir...
Mais il est possible de faire differement...
#19
Posté 25 septembre 2005 - 12:43
Maintenant je vais l'appliquer à tous les ingrédients par contre j'aimerai mettre des créatures aléatoires,le problème c'est que je ne sais pas du tout comment faire de l'aléatoire.
#20
Posté 25 septembre 2005 - 13:10
ex : pour alea entre chien de nix, alit, rat et kagouti ... soit 4 créatures...
la variable s'appelera Creature
Set Creature to ( Random 100 ) if ( Creature > 25 ) ; 25% de chance pour le chien PlaceAtPC, "nix-hound", 1, 100, 1 elseif ( Creature > 45 ); 20% pour les alits PlaceAtPC, "alit", 1, 100, 1 elseif ( Creature > 85 ); 40% pour les rat PlaceAtPC, "rat", 1, 100, 1 else ; le rest pour les kagoutis.. soit 15% PlaceAtPC, "kagouti", 1, 100, 1 endif MessageBox, "La viande pourri dans votre sac a attiré une créature affamé ..."
ces lignes remplace les 2 lignes du poste precedant
EDIT :
Je viens de relire le topic en entier !
Sache que ce script global ne fais pourrir que les aliment qui sont dans l'inventaire du PJ !
Si tu veux faire pourrir ceux qui sont au sol aussi, il faut faire un script non pas local, mais lié ! avec tout les inconveniants que ca a :
- beaucoup de script qui tounre en meme temps, possibilité de bug, aliment non empilable , framerate en Secondes / image
Pourquoi un script ciblé et non local :
Car si tu n'est pas dans la meme cell que la baie, celle ne pourira pas.
Imagine le resultat si 1 script tourne pour chaque baie du jeu ... meme si c'est un script local
Je trouve que la solution du simple script global pour tout les aliment d'1 type est largement suffisante...
Sinon je trouve l'idée de rendre les aliment périssable vraiment sympa
Modifié par Fandorn Delavie, 25 septembre 2005 - 13:28.
#21
Posté 25 septembre 2005 - 14:02
Est-ce que elles pourrissent dans des containers ?
Je n'ai pas eu le temps de tester toute les possibilités.
Modifié par Destruckt, 25 septembre 2005 - 14:03.
#22
Posté 25 septembre 2005 - 14:20
Pour qu'elle pourrisse dans un containaire, faudrai aussi scripter tout les containaire ... donc hors de question ... mais de toute facon, les containaires sont aussi la pour la conservation
Cela signifi qu'elles seront conservé tant qu'elle ne seront pas dans ton inventaire...
Donc les marchants, les arbre, le sol ou un containaire peuvent servir a la conservation ...
Modifié par Fandorn Delavie, 25 septembre 2005 - 14:22.
#23
Posté 25 septembre 2005 - 14:22
Modifié par Destruckt, 25 septembre 2005 - 14:30.
#24
Posté 25 septembre 2005 - 14:25
#25
Posté 25 septembre 2005 - 14:30
Oui je suis d'accord avec toi
Maintenant j'essai de faire un script moisson pour cela je vais utiliser le script de herbalisme mais je ne me rapelle plus comment on fait pour détecter une arme
je vais aller chercher dans Scripting for dummies
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)