Aller au contenu


Baies Invinsibles


  • Veuillez vous connecter pour répondre
49 réponses à ce sujet

#1 Destruckt

Destruckt

Posté 24 septembre 2005 - 20:06

:) Salut c'est encore moi !
J'espère de ne pas trop encombrer le forum avec mes topics sinon :green:  ;)  :D

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 :icon8: j'aimerai bien que vous me fassiez un script(sans prendre de votre temps  :P ) qui enlève les baies au bout de 3 jours .
Merci d'avance  :)

#2 Yr d'Uab

Yr d'Uab

Posté 24 septembre 2005 - 20:12

Hello,

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
Je n'ai rien à voir avec votons.info, mais je le conseille à tous les électeurs potentiels.
---
"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 Destruckt

Destruckt

Posté 24 septembre 2005 - 20:18

Pas tout les ingredients ex: les roches d'ébonites ou le verre peuvent durer longtemps.Et je pense qu'il faudrait utiliser la fonction disable.Donc pas irréalisable. :icon8:

Modifié par Destruckt, 24 septembre 2005 - 20:18.


#4 Angora

Angora

    Danse avec les bugs


Posté 24 septembre 2005 - 21:28

Ça peut se faire, mais ça va pas être simple...

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...
Il y a peut-être moyen de se passer de script local, avec un truc de ce genre dans le script global :

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...
Le saviez-vous ?

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 Destruckt

Destruckt

Posté 24 septembre 2005 - 21:49

Et si on les remplace ça fait pareil que supprimer ?
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 Angora

Angora

    Danse avec les bugs


Posté 24 septembre 2005 - 21:53

Comment remplacer sans supprimer ? De toute façon, si l'ID change, ce n'est plus le même objet, donc le script se met à tourner dans le vide et fait crasher le jeu.
Le saviez-vous ?

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 Destruckt

Destruckt

Posté 24 septembre 2005 - 21:56

Je crois qu'il est possible que quand on met un objet au sol et qu'on le reprends ce n'est plus le même objet qu'on avait posé.Si c'est possible il suffira de faire d'autres baies.

#8 Destruckt

Destruckt

Posté 24 septembre 2005 - 21:56

avec plus que 1 jours ou 2 par exemple

#9 Nwart

Nwart

Posté 24 septembre 2005 - 22:03

Euh, dites-moi si je dis une connerie, mais disable peut s'utiliser dans un script attaché, non? Normalement le script continue même de tourner (d'après MSfD)... Par contre, ce qui plante, c'est quand on tente un setdelete dans la même frame. Et même là, en retardant un peu le setdelete ça devrai marcher.

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.

"Maybe the Wabbajack is the Book of Knowledge. Maybe I'm smarter because I know cats can be bats can be rats can be hats can be gnats can be thats can be thises."

#10 Destruckt

Destruckt

Posté 24 septembre 2005 - 22:06

Je ne suis pas sur qu'on puisse faire disable dans l'inventaire de toute façon
en fait c'est removeitem qui devrait être utiliser mais je dit peut-être aussi une connerie :huhu:
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 Nwart

Nwart

Posté 24 septembre 2005 - 22:13

Le removeitem, lui, plantera s'il est dans le script local (toujours d'après MFsD).
"Maybe the Wabbajack is the Book of Knowledge. Maybe I'm smarter because I know cats can be bats can be rats can be hats can be gnats can be thats can be thises."

#12 Destruckt

Destruckt

Posté 24 septembre 2005 - 22:14

C'est pour ça qu'il faudrait mieux utiliser un script global je pense

#13 Destruckt

Destruckt

Posté 24 septembre 2005 - 22:18

En plus je voulais mettre un script pour la viande après qu'elle soit pourrie des animaux viennent attaquer le joueur.Mais vu que je merde déjà avec le script pour la baie je suis pas près d'y arriver mais bon ESPOIR

#14 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 24 septembre 2005 - 22:26

J'ai eu un probleme comme ca avec le distributeur de bonbons.

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.  :huhu:

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.

Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#15 Destruckt

Destruckt

Posté 24 septembre 2005 - 22:32

Merci beaucoup Fandorn
Par contre pour la viande pourri pour qu'elle attire quelques créatures je ne sais pas comment faire ?

#16 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 24 septembre 2005 - 23:07

La solution serait peut etre de placer aleatoirement une creature a proximité du PJ qd il a de la viande pourri sur lui

Une message Box dit que : La nouriture dans votre sac a attiré une créature...

Tu veux aussi le script ?  :huhu:

Modifié par Fandorn Delavie, 24 septembre 2005 - 23:36.

Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#17 Destruckt

Destruckt

Posté 25 septembre 2005 - 10:27

Oui j'aimerai bien
Et merci pour te donner autant de mal :)

#18 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 25 septembre 2005 - 11:37

Bah en faitetu reprend exactement le meme script que pour les baies, mais tu l'adapte a la viande...

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...
Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#19 Destruckt

Destruckt

Posté 25 septembre 2005 - 12:43

Merci beucoup.
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 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 25 septembre 2005 - 13:10

il faut alors rajouter une variable de type short
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.

Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#21 Destruckt

Destruckt

Posté 25 septembre 2005 - 14:02

Remerci beaucoup Fandorn t'es un boss  :)
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 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 25 septembre 2005 - 14:20

Uniquement dans l'inventaire du PJ ...
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.

Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#23 Destruckt

Destruckt

Posté 25 septembre 2005 - 14:22

En fait je voulez faire un container frigo où on mettez de la glace.

Modifié par Destruckt, 25 septembre 2005 - 14:30.


#24 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 25 septembre 2005 - 14:25

Ca c'est compliqué a mettre en place .... c'est réalisable, mais ca demandera beaucoup de ressource pour juste conserver de la nourriture... donc interet limité ...
Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#25 Destruckt

Destruckt

Posté 25 septembre 2005 - 14:30

Je change pour que ce soit plus claire.
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)