Programation en BAsic
2 participants
Page 1 sur 1
Programation en BAsic
Salut à tous !
Quelqu'un si connait un peu en programmation en Basic sous open office ?
J'ai récupéré un générateur de trésor en open source, mais il y a quelques bugs que je n'arrive pas résoudre...
Quelqu'un si connait un peu en programmation en Basic sous open office ?
J'ai récupéré un générateur de trésor en open source, mais il y a quelques bugs que je n'arrive pas résoudre...
_________________
Le Rhudaur libre survivra !
Rejoignez nous sur Facebook : Groupe FB Rolemaster & Spacemaster France
Anar-sule- Grand Ancien/Grande AncienneBavardNiveau 7
- Nombre de messages : 1511
Age : 56
Location : Maizières-lès-Metz
Date d'inscription : 10/10/2007
Re: Programation en BAsic
Salut !
Je m'y connais en programmation mais je n'ai jamais fait de Basic sous Open Office. J'imagine que ça ne doit pas être beaucoup plus compliqué que du VBA sous Microsoft
_________________
Nous n'avons qu'un seul Dieu, c'est la vie sur Terre. Nous n'avons qu'un seul Dieu, c'est d'aimer son frère.
Rejoignez nous sur Facebook : Groupe FB Rolemaster & Spacemaster France
Khiva- Niveau 1BavardGrand Ancien/Grande Ancienne
- Nombre de messages : 386
Age : 37
Date d'inscription : 16/04/2013
Re: Programation en BAsic
Le Basic sert de base au VBA, c'est tout.
Si je te soumet un fragment de programmation tu pourrai trouver la faille ?
Si je te soumet un fragment de programmation tu pourrai trouver la faille ?
_________________
Le Rhudaur libre survivra !
Rejoignez nous sur Facebook : Groupe FB Rolemaster & Spacemaster France
Anar-sule- Grand Ancien/Grande AncienneBavardNiveau 7
- Nombre de messages : 1511
Age : 56
Location : Maizières-lès-Metz
Date d'inscription : 10/10/2007
Re: Programation en BAsic
Vas y envoie, je peux essayer mais je promets rien !
_________________
Nous n'avons qu'un seul Dieu, c'est la vie sur Terre. Nous n'avons qu'un seul Dieu, c'est d'aimer son frère.
Rejoignez nous sur Facebook : Groupe FB Rolemaster & Spacemaster France
Khiva- Niveau 1BavardGrand Ancien/Grande Ancienne
- Nombre de messages : 386
Age : 37
Date d'inscription : 16/04/2013
Re: Programation en BAsic
Dans celle-ci j'ai besoin de supprimer la fonction :Cas de deux effets spécifique sans nuire au reste
ElseIf instr(MyArmeBonus , "Propriété spéciale, rejouez le dé") Then
' Détermination du bonus de l'arme
if instr(maPuissance, "faible") then
MyMaxD100=85
elseif instr(maPuissance, "intermédiaire") then
MyMaxD100=62
else
MyMaxD100=49
endif
MyArmeBonus = selectionObjetMagique(TAB_OBJET_MAG_ARMES_COL, maPuissance,0,MyMaxD100)
MyArmeBonusCout = right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"(")) ' Récupération du cout du bonus d'arme
MyArmeBonusCout = left(MyArmeBonusCout,instr(MyArmeBonusCout,")")-1) ' Supression parenthèse de fin
MyArmeBonus = int( right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"+")))
' Détermination de l'effet spécifique
If instr(MaTypeArme , "Arme à distance usuelle") Then ' table 8-15
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_DISTANCES_COL, maPuissance)
Else ' table 8-14
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_COL, maPuissance)
End If
' Cas de deux effets spécifiques
if instr(MyArmeSpe,"Rejouez deux fois") then
' Détermination de l'effet spécifique 2
If instr(MaTypeArme , "Arme à distance usuelle") Then ' table 8-15
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_DISTANCES_COL, maPuissance,1,99)
Else ' table 8-14
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_COL, maPuissance,1,99)
End If
' Détermination du cout de l'effet spécifique 2 de l'arme
if instr(MyArmeSpe,"po") then
MyArmeSpeBonusPrix = right(MyArmeSpe, len(MyArmeSpe)-instr(MyArmeSpe,"+")) ' récuperation du bonus en prix de la capacité spécifique de l'armure
MyArmeSpeBonusPrix2= left(MyArmeSpe,len(MyArmeSpe)-1) ' Supression de la parenthèse de fin
else
MyArmeSpeBonusPrix2 = int(right(MyArmeSpe, len(MyArmeSpe)-instr(MyArmeSpe,"+"))) ' récuperation du bonus en prix de la 2ième capacité spécifique de l'arme
MyArmeSpeBonusPrix = MyArmeSpeBonusPrix+ MyArmeBonus ' ajout au bonus de base de l'arme
endif
MyArmeSpe2 = left(MyArmeSpe,instr(MyArmeSpe,"(")-1)
' Détermination de l'effet spécifique 1
If instr(MaTypeArme , "Arme à distance usuelle") Then ' table 8-15
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_DISTANCES_COL, maPuissance,1,99)
Else ' table 8-14
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_COL, maPuissance,1,99)
End If
endif
' Détermination du cout de l'effet spécifiqueb 1 + 2 de l'arme
if instr(MyArmeSpe,"po") then
MyArmeSpeBonusPrix = right(MyArmeSpe, len(MyArmeSpe)-instr(MyArmeSpe,"+")) ' récuperation du bonus en prix de la capacité spécifique de l'armure
MyArmeSpeBonusPrix = left(MyArmeSpe,len(MyArmeSpe)-1) ' Supression de la parenthèse de fin
MyArmeBonusCout = MyArmeBonusCout & MyArmeSpeBonusPrix ' Ajout du cout en po du 1ier effet spécifique
else
MyArmeSpeBonusPrix = int(right(MyArmeSpe, len(MyArmeSpe)-instr(MyArmeSpe,"+"))) ' récuperation du bonus en prix de la capacité spécifique de l'arme
MyArmeSpeBonusPrix = MyArmeSpeBonusPrix+ MyArmeBonus ' ajout au bonus de base de l'arme
MyArmeBonusCout = oDocument.sheets.getByName("Objets Magiques").GetCellByPosition(21,MyArmeSpeBonusPrix+2).getstring() ' récupération du prix de l'armure
endif
' Cas ou il y a un cout en po pour un 2ième effet
if instr(MyArmeSpeBonusPrix2,"po") then
MyArmeBonusCout = MyArmeBonusCout & MyArmeSpeBonusPrix2 ' Ajout du cout en po du 2ième effet spécifique
endif
MyArmeSpe = left(MyArmeSpe,instr(MyArmeSpe,"(")-1) ' Récupération de l'effet spécial
' Mise en forme pour affichage de l'armure ou du bouclier magique avec capacité spéciale
MyArme = MyArmeType & "+" & MyArmeBonus
if len(MyArmeSpe)>0 then
MyArme = MyArme & " " & MyArmeSpe
endif
if len(MyArmeSpe2)>0 then
MyArme = MyArme & "/" & MyArmeSpe2
endif
MyArme = MyArme & " (" & MyArmeBonusCout & " " & MyArmeTypeCout & ")"
Rem
Rem Cas d'une arme magique simple
Rem
Else
MyArmeBonusCout = right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"(")) ' Récupération du cout du bonus d'arme
MyArmeBonusCout = left(MyArmeBonusCout,instr(MyArmeBonusCout,")")-1) ' Supression parenthèse de fin
MyArmeBonus = int(right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"+")))
MyArme = MyArmeType & " +" & MyArmeBonus & " (" & MyArmeBonusCout & " " & MyArmeTypeCout & ")"
End If
Rem
Rem Résultat pour une arme magique
Rem
maObjetMagique = "Arme: " & MyArme
_________________
Le Rhudaur libre survivra !
Rejoignez nous sur Facebook : Groupe FB Rolemaster & Spacemaster France
Anar-sule- Grand Ancien/Grande AncienneBavardNiveau 7
- Nombre de messages : 1511
Age : 56
Location : Maizières-lès-Metz
Date d'inscription : 10/10/2007
Re: Programation en BAsic
Je ne comprends pas pourquoi on écrit "endif" et des fois "end if", à vérifier si les 2 passent ou s'il faut en corriger ? Dans ce qui suit j'ai rajouté les espaces là où il n y en avait pas (et j'ai mis un commentaire "Charlotte : manque un espace ?"
Ensuite je ne suis pas sure de savoir ce que tu veux, voilà ce que je ferai pour ne plus gérer le cas "cas de 2 effets spécifiques", tu me diras :
ElseIf instr(MyArmeBonus , "Propriété spéciale, rejouez le dé") Then
' Détermination du bonus de l'arme
if instr(maPuissance, "faible") then
MyMaxD100=85
elseif instr(maPuissance, "intermédiaire") then
MyMaxD100=62
else
MyMaxD100=49
end if 'Charlotte : manque un espace ?
MyArmeBonus = selectionObjetMagique(TAB_OBJET_MAG_ARMES_COL, maPuissance,0,MyMaxD100)
MyArmeBonusCout = right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"(")) ' Récupération du cout du bonus d'arme
MyArmeBonusCout = left(MyArmeBonusCout,instr(MyArmeBonusCout,")")-1) ' Supression parenthèse de fin
MyArmeBonus = int( right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"+")))
' Détermination de l'effet spécifique
If instr(MaTypeArme , "Arme à distance usuelle") Then ' table 8-15
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_DISTANCES_COL, maPuissance)
Else ' table 8-14
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_COL, maPuissance)
End If
' Cas ou il y a un cout en po pour un 2ième effet
if instr(MyArmeSpeBonusPrix2,"po") then
MyArmeBonusCout = MyArmeBonusCout & MyArmeSpeBonusPrix2 ' Ajout du cout en po du 2ième effet spécifique
end if 'Charlotte : manque un espace ?
MyArmeSpe = left(MyArmeSpe,instr(MyArmeSpe,"(")-1) ' Récupération de l'effet spécial
' Mise en forme pour affichage de l'armure ou du bouclier magique avec capacité spéciale
MyArme = MyArmeType & "+" & MyArmeBonus
if len(MyArmeSpe)>0 then
MyArme = MyArme & " " & MyArmeSpe
endif
if len(MyArmeSpe2)>0 then
MyArme = MyArme & "/" & MyArmeSpe2
endif
MyArme = MyArme & " (" & MyArmeBonusCout & " " & MyArmeTypeCout & ")"
Rem
Rem Cas d'une arme magique simple
Rem
Else
MyArmeBonusCout = right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"(")) ' Récupération du cout du bonus d'arme
MyArmeBonusCout = left(MyArmeBonusCout,instr(MyArmeBonusCout,")")-1) ' Supression parenthèse de fin
MyArmeBonus = int(right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"+")))
MyArme = MyArmeType & " +" & MyArmeBonus & " (" & MyArmeBonusCout & " " & MyArmeTypeCout & ")"
End If
Rem
Rem Résultat pour une arme magique
Rem
maObjetMagique = "Arme: " & MyArme
Ensuite je ne suis pas sure de savoir ce que tu veux, voilà ce que je ferai pour ne plus gérer le cas "cas de 2 effets spécifiques", tu me diras :
ElseIf instr(MyArmeBonus , "Propriété spéciale, rejouez le dé") Then
' Détermination du bonus de l'arme
if instr(maPuissance, "faible") then
MyMaxD100=85
elseif instr(maPuissance, "intermédiaire") then
MyMaxD100=62
else
MyMaxD100=49
end if 'Charlotte : manque un espace ?
MyArmeBonus = selectionObjetMagique(TAB_OBJET_MAG_ARMES_COL, maPuissance,0,MyMaxD100)
MyArmeBonusCout = right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"(")) ' Récupération du cout du bonus d'arme
MyArmeBonusCout = left(MyArmeBonusCout,instr(MyArmeBonusCout,")")-1) ' Supression parenthèse de fin
MyArmeBonus = int( right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"+")))
' Détermination de l'effet spécifique
If instr(MaTypeArme , "Arme à distance usuelle") Then ' table 8-15
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_DISTANCES_COL, maPuissance)
Else ' table 8-14
MyArmeSpe = selectionObjetMagique(TAB_OBJET_MAG_ARMES_PROPRIETES_COL, maPuissance)
End If
' Cas ou il y a un cout en po pour un 2ième effet
if instr(MyArmeSpeBonusPrix2,"po") then
MyArmeBonusCout = MyArmeBonusCout & MyArmeSpeBonusPrix2 ' Ajout du cout en po du 2ième effet spécifique
end if 'Charlotte : manque un espace ?
MyArmeSpe = left(MyArmeSpe,instr(MyArmeSpe,"(")-1) ' Récupération de l'effet spécial
' Mise en forme pour affichage de l'armure ou du bouclier magique avec capacité spéciale
MyArme = MyArmeType & "+" & MyArmeBonus
if len(MyArmeSpe)>0 then
MyArme = MyArme & " " & MyArmeSpe
endif
if len(MyArmeSpe2)>0 then
MyArme = MyArme & "/" & MyArmeSpe2
endif
MyArme = MyArme & " (" & MyArmeBonusCout & " " & MyArmeTypeCout & ")"
Rem
Rem Cas d'une arme magique simple
Rem
Else
MyArmeBonusCout = right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"(")) ' Récupération du cout du bonus d'arme
MyArmeBonusCout = left(MyArmeBonusCout,instr(MyArmeBonusCout,")")-1) ' Supression parenthèse de fin
MyArmeBonus = int(right(MyArmeBonus,len(MyArmeBonus)-instr(MyArmeBonus,"+")))
MyArme = MyArmeType & " +" & MyArmeBonus & " (" & MyArmeBonusCout & " " & MyArmeTypeCout & ")"
End If
Rem
Rem Résultat pour une arme magique
Rem
maObjetMagique = "Arme: " & MyArme
_________________
Nous n'avons qu'un seul Dieu, c'est la vie sur Terre. Nous n'avons qu'un seul Dieu, c'est d'aimer son frère.
Rejoignez nous sur Facebook : Groupe FB Rolemaster & Spacemaster France
Khiva- Niveau 1BavardGrand Ancien/Grande Ancienne
- Nombre de messages : 386
Age : 37
Date d'inscription : 16/04/2013
Re: Programation en BAsic
D'après ce que j'ai trouvé les deux versions sont valide.
Merci pour tes investigations !
J'ai finalement décidé de supprimer la fameuse entrée "Rejouez deux fois" des différentes tables , elle générée trop de problème.
Autre demande : J'ai besoin d'entrée de nouveaux "objets merveilleux" parmi les trois tables existantes... sauf que je suis déjà à 100 entrées sur chacune d'elle. Voici la routine actuellement existante :
Je pense que la solution 2 serai plus rapide et efficace. Pour plus de clarté je peux trouvé le moyen de te faire parvenir le dit document dans son intégralité via clé USB...
Merci pour tes investigations !
J'ai finalement décidé de supprimer la fameuse entrée "Rejouez deux fois" des différentes tables , elle générée trop de problème.
Autre demande : J'ai besoin d'entrée de nouveaux "objets merveilleux" parmi les trois tables existantes... sauf que je suis déjà à 100 entrées sur chacune d'elle. Voici la routine actuellement existante :
Elles correspondent aux colonnes de mes tablesErruis a écrit: Const TAB_OBJET_MAG_MERV_F_COL = 110
Const TAB_OBJET_MAG_MERV_I_COL = 114
Const TAB_OBJET_MAG_MERV_P_COL = 118
Rem
Rem Objets merveilleux
Rem
ElseIf instr(maObjetMagique , "Objets merveilleux") Then
If instr(maPuissance,"faible") Then
maObjetMagique = "Objet merveilleux : " & selectionObjetMagique(TAB_OBJET_MAG_MERV_F_COL)
ElseIf instr( maPuissance,"intermédiaire") Then
maObjetMagique = "Objet merveilleux : " & selectionObjetMagique(TAB_OBJET_MAG_MERV_I_COL)
Else
maObjetMagique = "Objet merveilleux : " & selectionObjetMagique(TAB_OBJET_MAG_MERV_P_COL)
End If
- solution 1 :
Elargir le tableau en y ajoutant des colonnes comme pour mes "objets non-magique" - Solutions 2 :
Créer trois nouvelles tables du type Const TAB_OBJET_MAG_MERV_FTB_COL = 133, Const TAB_OBJET_MAG_MERV_ITB_COL = 137, Const TAB_OBJET_MAG_MERV_PTB_COL = 141
Je pense que la solution 2 serai plus rapide et efficace. Pour plus de clarté je peux trouvé le moyen de te faire parvenir le dit document dans son intégralité via clé USB...
_________________
Le Rhudaur libre survivra !
Rejoignez nous sur Facebook : Groupe FB Rolemaster & Spacemaster France
Anar-sule- Grand Ancien/Grande AncienneBavardNiveau 7
- Nombre de messages : 1511
Age : 56
Location : Maizières-lès-Metz
Date d'inscription : 10/10/2007
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|