Addon dialogue pour créer des slaps

Description

Créer des slaps en les voyant, les gérer ... ils apparaissent directement sous le clique droit ... sur le canal ou sur le pseudo au choix ...

Source / Exemple :


;Crée par Clément Vialettes     http://www.zeubu.com

;il 'y a pas de variable utilisée
;tout est enregistré dans la hastable
;la hastable est nommée popslap
;les items sont : slapspseudo et slapscanal qui pourront prendre la valeur on ou off
;                         mslapspseudo et mslapscanal pourront prendre la valeur me ou say
;                         nslapspseudo et nslapscanal sont la liste des noms des slaps séparé par des token (chr 182)
;                         Nlslapspseudo et Nlslapscanal sont les slaps, N correspondant au n° du token du nom du slap
;la hashtable est enregistrée sous le fichier popupslap
;et une image slaps.bmp est crée pour l'affichage du slaps

;*****cet alias permet de modifier la table en utilisant moins de code
alias hdt {
  ;***si il est appelé comme un identificateur on va chercher une valeur dans la table
  if ($isid) return $hget(popslap,$1)
  ;***sinon on va modifier une valeur
  else hadd popslap $1-
}

;*****un alias pour savoir dans qu'elle tab on se trouve (car pour utiliser encore moins de code les id des éléments des tab sont identiques )
alias tab { return $iif($dialog(dialslaps).tab == 1,$1,$2) }

;*****un alias pour afficher la liste des slaps
alias aff { did -r $dname 61 | didtok $dname 61 182 $hdt($tab(nslapspseudo,nslapscanal)) }

;*****un alias pour créer un slap en bmp
alias affslap {
  ;***création de la fenêtre (non visible)
  window -c @slaps | window -hp +Lfd @slaps 0 0 578 24
  ;***affichage du slap dans la window (non visible) et sauvegarde en bmp
  drawtext -pb @slaps 1 0 verdana 11 2 2 $1- | drawsave @slaps slaps.bmp 289 12
}

;*****Message lors du chargement du script
on *:load:{ echo -a 0,1[7Dialogue pour les slaps créer par 13^Clément Vialettes^. 7Pour y mettrent des slaps 13 déjà fait http://zeubu.chez.tiscali.fr 0] }

;*****quand on quitte mIRC : sauvegarder la table popuslap sous le fichier popuslap
on *:exit:{ hsave -o popslap popupslap }

;******au démarage de mIRC ou au chargement du script
on *:start:{
  ;***si la table est déjà chargée, la suprimmer et la recréer
  if ($hget(popslap)) .hfree popslap | hmake popslap 200
  ;***si le fichier popupslap (sauvgarde de la table) existe alors le charger
  if ($exists(popupslap) = $true) .hload popslap popupslap
  ;***sinon mettre les valeurs des items slapspseudo et slapscanal à OFF
  ;***et mettre ME dans mslapscanal et mslapspseudo
  else { hdt slapspseudo off |  hdt slapscanal off | hdt mslapscanal me | hdt mslapspseudo me }
  ;***si le fichier.bmp d'affichage du slap n'existe pas, on le crée avec le texte 0
  if ($exists(slaps.bmp) = $false) affslap 0
}

;*****si l'utilisateur clique sur la tab 1 ou 2, on affiche pour les paramètre des slaps du canal ou des pseudos
on *:dialog:dialslaps:sclick:1,2:{ if ($devent == sclick) {
    ;***on enregistre une bmp blanche et on l'affiche
    affslap 0 | did -g $dname 65 slaps.bmp
    ;***si slapspseudo = ON on met le chek à ON (de même pour OFF)
    if ($hdt($tab(slapspseudo,slapscanal)) == on) did -c  dialslaps 67
    if ($hdt($tab(slapspseudo,slapscanal)) == off) did -u  dialslaps 67 
    ;***on met le ratio à ME ou SAY
    if ( $hdt($tab(mslapspseudo,mslapscanal)) == me ) { did -c  dialslaps 6 | did -u  dialslaps 7 }
    if ( $hdt($tab(mslapspseudo,mslapscanal)) == say ) { did -c  dialslaps 7 | did -u  dialslaps 6 }
    ;***on efface l'edit et on la réaffiche la liste
  did -r dialslaps 3 | aff }
}

;*****si l'utilisateur clique sur la chek, on enregistre ON ou OFF
on *:dialog:dialslaps:sclick:67:{ hdt $tab(slapspseudo,slapscanal) $iif($did(67).state == 1,on,off) }

;*****séléction du ratio
;***sélection du ratio ME
on *:dialog:dialslaps:sclick:6:{ if ($did == 6) hdt $tab(mslapspseudo,mslapscanal) me }
;***sélection du ratio SAY
on *:dialog:dialslaps:sclick:7:{ if ($did == 7) hdt $tab(mslapspseudo,mslapscanal) say }

;*****si l'utilisateur clique sur la liste
on *:dialog:dialslaps:sclick:61:{ if ($devent == sclick) {
    ;***on va chercher le slap correspondant (si clique sur la 2ième ligne de la liste canal alors on va chercher le slap 2lslapscanal)
    var %b = $did(61).sel $tab(lslapspseudo,lslapscanal)
    var %c = $hdt($remove(%b,$chr(32)))
    ;***on crée le bmp et on l'affiche
    affslap %c | did -g $dname 65 slaps.bmp
    ;***et on affiche le slap dans l'edit
    did -ra dialslaps 3 %c
  }
}

;*****si l'utilisateur modifie l'edit
on *:dialog:dialslaps:edit:3:{ if ($devent == edit) {
    ;***on vérifie qu'il y est du text dans l'edit (si il n'y en a pas on affiche une bmp blanche et on sort du script)
    if ($did(dialslaps,3) == $null) { affslap 0  | did -g $dname 65 slaps.bmp | .halt }
    ;***sinon on affiche en bmp le texte présent dans l'edit
  affslap $did(dialslaps,3) | did -g $dname 65 slaps.bmp }
}

;*****enregistrer le slap sous un nouveau nom
on *:dialog:dialslaps:sclick:63:{
  ;***si il n'y a rien à enregistrer dans l'edit, on sort du script
  if ($did(dialslaps,3).text == $null) { did -ra dialslaps 3 Veuillez tout d'abord écrire le slap ici ;-) | .halt }
  ;***on demande le nom du slap
  var %b = $$?="Entrer le nom du slap:"
  ;***on vérifie que ce nom n'existe pas (cette vérification est dut à $puttok qui permet de mettre un token à la fin, mais si il existe, il n'est pas mis)
  if ($istok($hdt($tab(nslapspseudo,nslapscanal)),%b,182) == $true) {
    ;***si il existe, on en demande un autre
  var %b = $$?="Le nom du slaps existe déjà, entrer un autre nom :" }
  ;***on enregistre le nom du slap
  hdt $tab(nslapspseudo,nslapscanal) $addtok($hdt($tab(nslapspseudo,nslapscanal)),%b,182)
  ;***on enregistre le slap à la suite des autres et on réaffiche la liste
  var %c = $numtok($hdt($tab(nslapspseudo,nslapscanal)),182) $tab(lslapspseudo,lslapscanal)
  hdt $remove(%c,$chr(32))) $did(dialslaps,3).text | aff
}

;*****enregistrer le slap dans le nom sélectionné dans la liste
on *:dialog:dialslaps:sclick:5:{
  hdt $remove($did(61).sel $tab(lslapspseudo,lslapscanal),$chr(32)) $did(dialslaps,3).text
}

;*****supprimer le slap sélectioné dans la liste
on *:dialog:dialslaps:sclick:64:{
  ;***supprimer le slap N et renommer les slaps >N (pour qu'ils suivent toujours l'ordre des noms des slaps)
  var %c =  $did(61).sel
  while ($hget(popslap,$remove($calc(%c + 1) $tab(lslapspseudo,lslapscanal),$chr(32))) != $null) {
    hdt $remove(%c $tab(lslapspseudo,lslapscanal),$chr(32)) $hget(popslap,$remove($calc(%c + 1) $tab(lslapspseudo,lslapscanal),$chr(32)))
    hdel popslap $remove(calc(% c+ 1)  $tab(lslapspseudo,lslapscanal),$chr(32))
    inc %c
  }
  ;***supprimer le nom du slap
  hdt $tab(nslapspseudo,nslapscanal) $deltok($hdt($tab(nslapspseudo,nslapscanal)),$did(61).sel,182)
  ;***réafficher la liste
  aff
  ;***vider l'edit
  did -r dialslaps 3
  ;***et afficher une bmp blanche
  affslap 0 | did -g $dname 65 slaps.bmp
}

;*****modifier le nom du slap
on *:dialog:dialslaps:sclick:115:{ var %b = $$?="Entrer le nom du slap:"
  ;***si il existe déjà on en demande un autre
  if ($istok($hdt($tab(nslapspseudo,nslapscanal)),%b,182) == $true) var %b = $$?="Le nom du slaps existe déjà, entrer un autre nom :"
  ;***on l'enregistre par dessus l'ancien
  hdt $tab(nslapspseudo,nslapscanal) $puttok($hdt($tab(nslapspseudo,nslapscanal)),%b,$did(61).sel,182)
  ;***et on réaffiche la liste
  aff
}

;*****initialisation du dialog
on *:dialog:dialslaps:init:*:{
  ;***mettre la chek à ON ou OFF
  ;***lorsque le dialog et ouvert on arrive sur la tab1, alors c'est la varible slapspseudo
  if ( $hdt(slapspseudo) == on ) { did -c  dialslaps 67 } | if ( $hdt(slapspseudo) == off ) { did -u  dialslaps 67 }
  ;***ratio ME ou SAY
  if ( $hdt(mslapspseudo) == me ) { did -c  dialslaps 6 } | if ( $hdt(mslapspseudo) == say ) { did -c  dialslaps 7 }
  ;***on affiche la liste et une bmp blanche
  aff | affslap 0 | did -g $dname 65 slaps.bmp
}

;*****on met un accés à la fenêtre de dialogue dans le menu
menu menubar {
  -
  Modifier les slaps:dialog -dmav dialslaps dialslaps
  -
}

;*****popup
;***alias submenu pour l'affichage des slaps dans le menu popup de la nicklist
alias slapsnick {
  if ($1 == begin) return -
  if ($1 == end) return -
  ;***si $1 (nb incrémenté) et inférieur ou égal au nombre de token (c'est à dire nb de slaps)
  if ($1 <= $numtok($hget(popslap,nslapspseudo),182)) {
    ;***alors on met le nom du slap dans %x et le slap dans %y (si on le fait directement sur le return cela ne marche pas)
    var %x = $gettok($hget(popslap,nslapspseudo),$1,182)
    var %y = $replace($hdt($remove($1 lslapspseudo,$chr(32))),[canal],#,[moi],$me,[pseudo],$snicks)
    ;***et on retourne le tout, %x sera affiché dans le menu et %y à l'écran si il y a clique sur %x
    if ( $hdt(mslapspseudo) == say ) return %x :say %y
    else return %x :me %y
} }

;*****dans le menu popup de la nicklist
menu nicklist {
  ;***selement si ON afficher slaps, sinon rien
  $iif($hdt(slapspseudo) == on,Slaps $$snicks)
  ;***et faire apelle au submenu
  .$submenu($slapsnick($1))
}
;*****idem pour le menu popup du canal
alias slapschan {
  if ($1 == begin) return -
  if ($1 == end) return -
  if ($1 <= $numtok($hget(popslap,nslapscanal),182)) {
    var %x = $gettok($hget(popslap,nslapscanal),$1,182)
    var %y = $replace($hdt($remove($1 lslapscanal,$chr(32))),[canal],#,[moi],$me,[pseudo],$snicks)
    if ( $hdt(mslapscanal) == say ) return %x :say %y
    else return %x :me %y
} }
menu channel {
  $iif($hdt(slapscanal) == on,Slaps #)
  .$submenu($slapschan($1))
}
dialog dialslaps {
  title "Modification des Slaps"
  size -1 -1 305 158
  option dbu
  tab "Slpaps sur un pseudo", 1, 1 1 302 155
  text "[pseudo] = le pseudo sur le quel le slap est lancé", 90, 179 89 120 8, tab 1
  tab Slaps sur un canal, 2
  icon 65, 4 116 289 11, slaps.bmp, 0, noborder
  text "Ctrl+k : Couleurs ( ajouter '','' et un autre chiffre pour le fond)", 4, 159 23 142 8
  text "Ctrl+u : souligné ", 10, 159 32 53 8
  text "Ctrl+b : Gras", 12, 159 41 79 8
  text "Ctrl-o : normal ", 13, 159 49 70 8
  text "Ctrl+r : inversé", 14, 159 57 51 8
  text "[moi] = renvoi votre pseudo", 15, 179 72 79 8
  text "[canal] = le canal dans le quel le slap est écrit", 16, 179 81 111 8
  check "On/Off", 67, 103 26 28 10, flat
  list 61, 4 26 97 87, size
  button "Modifier le nom", 115, 107 85 42 10, flat
  button "Supprimer le slap", 64, 107 100 42 10, flat
  edit "", 3, 4 129 289 10, autohs
  button "Enregistrer le slap sous un nouveau nom", 63, 4 141 120 10, flat
  button "Enregistrer le slap sous le nom séléctionner dans la liste", 5, 128 141 165 10, flat
  radio "/say", 7, 110 43 23 10, group
  radio "/me", 6, 110 35 23 10
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.