Modifié par Lord Paillasson, 26 janvier 2007 - 21:04.
Restreindre L'utilisation De Munitions
#1
Posté 25 janvier 2007 - 18:45
#2
Posté 26 janvier 2007 - 08:09
Begin Mousquet Short OnPCEquip Short PCSkipEquip if ( OnPCEquip == 1 ) ; si le joueur équipe le mousquet... if ( Player->GetItemCount, "IDdesBalles" >= 1 ); et qu'il a des balles... Set PCSkipEquip to 0 ; ça marche Return else; mais s'il n'a pas de balle... Set PCSkipEquip to 1 ; le mousquet se déséquipe... MessageBox "Vous n'avez pas de munitions pour cette arme." Set OnPCEquip to 0 endif endif End Mousquet
Rem1: Ce script suppose qu'il n'existe qu'un type de balle. Je ne l'ai pas testé, donc il faudrait s'assurer qu'il fonctionne. (Je ne suis pas un spécialiste d'OnPCEquip et PCSkipEquip et ce script est inspiré de celui de la p.37 de Morrowind Scripting For Dummies; j'espère ne rien avoir oublié.
Par contre, je ne saurai t'affirmer avec certitude que l'ID des objets enchantés est modifiée, bien que je suppose que ça doit être le cas, ce qui peut être problématique dans le cas qui nous occupe, à moins que l'armurier vendant le mousquet ne prévienne le joueur que la moindre modification des balles rendrait celle-ci impropre à l'utilisation. (Solution RP: la magicka et la poudre ne font pas bon ménage).
Rem2: en plus du problème d'éventuelles balles enchantées, il resterait à faire en sorte que les arbalètes ne puissent tirer des balles. Là, je ne sais pas quelle solution serait plus pratique: un script global, ou un script appliqué aux balles.
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV
#3
Posté 26 janvier 2007 - 17:46
Je me trompe ou tu veux obliger le joueur a tirer uniquement des balles et pas des carreaux ?
Dans ce cas, je verrais plutot le moyen de mettre une variable de globale à jour quand il a équipé les balle ou si il ne les a pas équipée...
begin Balles if ( player->HasItemEquipped "Balle" ) set "variable de globale" to 1 else set "variable de globale" to 0 endif end
Et alors, sur le mousquet :
Begin Mousquet Short OnPCEquip if ( OnPCEquip == 1 ) if ( "variable de globale" == 1 ) Return else MessageBox "Vous n'avez pas équipée les bonne munitions pour cette arme. player->additem "Id de carreau bidon" 1 player->equip "Id de carreau bidon" player->removeitem "Id de carreau bidon" 1 Set OnPCEquip to 0 endif endif End
à vérifier...
Mais il devrait pas y avoir de probleme...
#4
Posté 26 janvier 2007 - 21:12
-Je voudrais obliger les fusils et autres armes à feu à tirer des balles et rien d'autre.
-Par contre, je voudrais que les arbalètes tirent toujours des carreaux et non des balles.
-Je remercie ceux qui m'ont répondu car cela m'a bien aidé.
#5
Posté 26 janvier 2007 - 23:13
Trop longtemps que je n'ai pas refait sérieusement des scripts, moi.
Citation
Il serait ainsi possible de combiner deux conditions pour déterminer si le joueur a équipé une arbalète... qui n'est pas le mousquet via un script global, par exemple.
Enfin, je crois.
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV
#6
Posté 27 janvier 2007 - 01:06
Quand il ramasse des munition, on dis "Vous avez obtenu X balles." et on lui reprens, mais on ajoute X a la variable...
Qu'en pensez vous ?
Citation
Venant de toi je prens ça comme un compliment... Merci.
#7
Posté 29 janvier 2007 - 21:24
Tout ça dans le but de permettre au joueur d'être gêné par le poids des balles.
J'enverrais tout ça la prochaine fois, avec si possible une version de test du futur mod.
#8
Posté 29 janvier 2007 - 22:41
Pour Morrowind, chaque objet scripté est unique, donc si on a trois cent flèches scriptées, on a trois cent cases occupées dans l'inventaire !
Le mieux est de faire un script global (StartScript) ou, à la rigueur, un script sur l'arme.
Il faut faire des tests avec HasItemEquipped pour les munitions et pour le mousquet. Quelque chose du style:
Si on équipe le mousquet Et s'il y a des balles on équipe aussi les balles Sinon on déséquipe le mousquet et on affiche un message disant qu'on est à court de munitions sinon si on équipe les balles et qu'il y a un mousquet on équipe le mousquet sinon on déséquipe les balles et on affiche un message disant qu'il n'y a pas de flingue sinon si le mousquet est équipé et qu'il n'y a pas de balles on déséquipe le mousquet et on affiche un message disant qu'on est à court de munitions sinon si les balles sont équipées et qu'il n'y a pas de mousquet on déséquipe les balles et on affiche un message disant qu'il n'y a pas de flingue Ouf !
(Désolé pour le pseudocode, mais je ne me souviens pas assez bien du langage pour faire du vrai. Oh, et désolé pour le pseudopode, aussi. )
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.
#9
Posté 31 janvier 2007 - 10:41
Voila un script de ma création ( je ne sais vraiment pas si il marche, surtout l'histoire du "PCSkipEquip" ) )
Begin Restrict1 short weapon ; variable qui détermine le type d'arme short PCSkipEquip ; vire les balles si on a une arbalète autre que le mousquet short OnPCEquip ; sert à savoir si le joueur équipe les balles if ( player-> OnPCEquip "Balle1" ==1 ) ; si le joueur équipe des balles if ( player-> GetWeaponType == 10 ) ; si il a une arbalète Set weapon to 1 elseif ( player-> GetWeaponType != 10 ) ; si il n'en a pas set weapon to 2 endif else return endif if ( weapon == 1 ) if ( player-> GetItemCount "Mousquet1" >= 1 ) ; si l'arbalète est un mousquet Set PCSkipEquip to 0 ; on les laisse (les balles ) Set weapon to 0 else Set PCSkipEquip to 1 ; sinon, on les dégage Messagebox "Vous ne pouvez pas tirer de balles avec une arbalète !" Set weap to 0 endif elseif ( weapon != 1 ) Set weapon to 0 Set PCSkipEquip to 0 return endif end Restrict1
Corrigez moi si je me goure, car le scripting n'est pas trop mon domaine.
Sinon, vaut il mieux le mettre en startscript ou en en tant que script global ?
EDIT : En fait je suis bête car la solution d'Angora a l'air bien pus pratique que la mienne.
Modifié par Lord Paillasson, 31 janvier 2007 - 11:22.
#10
Posté 03 février 2007 - 11:43
begin Temp_dwmrgun ;temp_dummy = arme factisse ; Thanks to elegiac for this script. short DoOnce if ( MenuMode == 1 ) return endif if ( Player->GetItemCount, "Temp_dwmr_gun" == 0 ) return endif if ( Player->HasItemEquipped, "Temp_dwmr_gun" == 0 ) return endif if ( Player->HasItemEquipped, "Temp_dwmr_gun" == 1 ) if ( Player->GetWeaponDrawn == 0 ) set DoOnce to 0 endif if ( Player->GetWeaponDrawn == 1 ) if ( Player->GetItemCount "Temp_dwmr_shell" > 0 ) if ( Player->HasItemEquipped, "Temp_dwmr_shell" == 0 ) Player->equip, "Temp_dwmr_shell" endif else if ( DoOnce == 0 ) MessageBox, "You do not have the correct ammunition." set DoOnce to 1 endif Player->AddItem, "Temp_dummy", 1 Player->Equip, "Temp_dummy" Player->RemoveItem, "Temp_dummy", 1 endif endif endif end Temp_dwmrgun
temp_dummy est une arbalette qui permet de déséquiper le fusil, elle est par la suite retirée de l'inventaire
#11
Posté 06 février 2007 - 21:40
Voilà la version de Von Zeeple, qui marche mais qui n'empêche pas le joueur de tirer les balles avec une arbalète
begin AMMO_RES1 ;bidon = arme factice ; Thanks to elegiac for this script. short DoOnce if ( MenuMode == 1 ) return endif if ( Player->GetItemCount, "Mousquet1" == 0 ) return endif if ( Player->HasItemEquipped, "Mousquet1" == 0 ) return endif if ( Player->HasItemEquipped, "Mousquet1" == 1 ) if ( Player->GetWeaponDrawn == 0 ) set DoOnce to 0 endif if ( Player->GetWeaponDrawn == 1 ) if ( Player->GetItemCount "Balle1" > 0 ) if ( Player->HasItemEquipped, "Balle1" == 0 ) Player->equip, "Balle1" endif else if ( DoOnce == 0 ) MessageBox, "Vous n'avez pas de munitions pour cette arme" set DoOnce to 1 endif Player->AddItem, "bidon", 1 Player->Equip, "bidon" Player->RemoveItem, "bidon", 1 endif endif endif end AMMO_RES1
Que me conseillez vous ? Faire un second script pour compléter celui qui fonctionne ou corriger le script buggé ?
#12
Posté 08 février 2007 - 15:54
Citation
Pourquoi ne pas faire un misc item que l'on doit avoir obligatoirement pour utiliser un fusil ( poudrière par exemple ) et on y attache le script qui empeche de tirer avec le fusil si les balles ne sont pas équipées et qui empeche d'équiper des carreaux d'arbalette lorsque le fusil est équipé.
#13
Posté 08 février 2007 - 18:51
Citation
Très bonne idée! Au début je voulais en intégrer une dans le mod mais je n'y trouvais pas d'utilité, maintenant c'est fait!
Reste à trouver un mesh et des textures...
Ca me permet aussi de délester un peu les scripts globaux, parce que vu le nombre d'opérations à effectuer, ça aurait fini par bien farçir la mémoire vive.
PS : Je ne sais pas si je devrais parler de mon travail sur le forum des mods à venir, car je ne suis pas sûr que cela intéresse beaucoup de monde.(surement parce que les flingues ne collent pas trop avec l'univers du jeu)
#14
Posté 08 février 2007 - 22:17
Moi le premier.
C'est dans ces moments là que je suis fier d'avoir un grand nez.
#15
Posté 09 février 2007 - 20:44
Sinon sachez que je compte adapter les scripts pour pouvoir gérer une dizaine/quinzaine d'armes et entre un à cinq types de munitions par type d'armes ( il y en aura 7 ou 8, selon que j'arrive à créer des meshs ) Signalez moi si c'est trop!
#16
Posté 09 février 2007 - 21:01
alors ce type de mod est une bonne idée,
seulement, cette idée a déjà été tenté, mais je ne sais pour qu'elle raison, beaucoup on arrété, (plus de contacte, ou abandon...).
Personnelement, j'ai un ami qui a tenté de faire des armes du type, lance pierre, ou encore un canon qui propulse des cailloux avec des reserves de skouma...
Les armes il les avait fini, mais il n'est pas parvenu a ses fin, car il étai dans l'incapacité de faire son script, et autre probleme d'animation...
Si tu y arrive t'en mieu, mais il faut que tu garde en tête, qu'un mod réussi, est un mod qui s'integre bien a morrowind, et une arbalete serait très bien (même si l'arbalete existe a la base...) mais éviter les armes comme, pistolet dwemer ou autres!
Un site allemand regroupe des mod par catégorie, tu recherche Waffen (arme en Deutsh) et tu trouvera des idée de script et de mesh!
Bon courage!
#17
Posté 09 février 2007 - 21:49
Je mettrais un lien plus tard.
Pour le sérieux du mod, il y aura 3 versions : une "déconne" avec des armes débiles mais des scripts, une "libre" sans scripts
et une "sérieuse" ou tout sera bien contrôlé.
Sinon, les scripts avancent mais PITIE dites moi quand commence le trop de variables (J'ai déja regardé un peu partout, et je peux vous dire qu'il y aura + de var que dans nova magica )
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)