Ceci est lʼinterface Pascal pour X-Chat. Sa conception nʼest rien dʼautre
quʼun wrapper vers lʼAPI C. Les scripts écrits en utilisant cette unité
fonctionneront donc avec nʼimporte quelle version de xchat et seule la
documentation concernant les greffons C sʼapplique sans modification autre
que celle concernant les conventions du language.
Pour les impatients : Les greffons X-CXhat sont des bibliothèques (généralement .so ou .dll) et ne nécessitent aucune dépendance.
Sur tout OS supporté (ex. : Linux OSx Solaris Win32 et sans doute WIN64) utiliser la commande :
C'est suffisant… Voir lʼexemple.
library plugin_sample;
uses
xchat_plugins;
{$IFDEF WIN32}
{$i xchat_plugins_macros.i}
{$ENDIF}
const
PNAME = 'AutoOp';
PDESC = 'Auto Ops anyone that joins';
PVERSION = '0.1';
var
ph : xchat_plugin; // handle du greffon
const
enable : boolean = true; // Etat du greffon
function join_cb(word: array of pchar; userdata : pointer): longint; cdecl;
begin
if (enable) then // Rend Op QUICONQUE rejoint le salon
xchat_commandf(ph, 'OP %s', word[1]);
// word[1] est le pseudo, comme dans paramétres->Avancé->Fenêtre des événements texte de xchat
exit(XCHAT_EAT_NONE); // ne pas avaler cet événement, xchat a besoin de le voir!
end;
function autooptoggle_cb(word : array of pchar; word_eol : array of pchar; userdata: pointer):longint;cdecl;
begin
enable := not enable;
if (enable) then
xchat_print(ph, 'AutoOping now enabled!\n')
else
xchat_print(ph, 'AutoOping now disabled!\n');
exit(XCHAT_EAT_ALL); // avaler cette commande de manière à ce que xchat et les autres greffons ne puissent pas la traiter
end;
procedure xchat_plugin_get_info(var name, desc, version : pchar; var reserved : pointer) cdecl;
begin
name := PNAME;
desc := PDESC;
version := PVERSION;
end;
function xchat_plugin_init( plugin_handle : xchat_plugin;
var plugin_name : pchar;
var plugin_desc : pchar;
var plugin_version : pchar;
arg : pointer) : longint; cdecl;
begin
// nous avons besoin de le sauvegarder pour l'utiliser avec les fonctions « xchat_* »
ph := plugin_handle;
// informer xchat de nos infos
plugin_name := PNAME;
plugin_desc := PDESC;
plugin_version := PVERSION;
xchat_hook_command(ph, 'AutoOpToggle', XCHAT_PRI_NORM, @autooptoggle_cb,
'Usage: AUTOOPTOGGLE, Turns OFF/ON Auto Oping', nil);
xchat_hook_print(ph, 'Join', XCHAT_PRI_NORM, @join_cb, nil);
xchat_print(ph, 'AutoOpPlugin loaded successfully!\n');
exit(XCHAT_SUCCESS); // return 1 en cas de succès
end;
end.