03.03.2015, 22:03
(
Last edited by Papawy; 18/03/2015 at 05:58 PM.
Reason: Maj logo
)
Introduction
Pour commencer, bonjour, ayant eu envie de crйer quelque chose, j'me suis dit que j'allais crйer une base RP simple.
En partant de lа, j'ai eu l'idйe de crйer un script bien organisй, facile а comprendre et facile а personnaliser et а йtendre.
Le concept est que l'on puisse ajouter des systиmes facilement, comme par exemple un systиme de radio via TS avec le plugin TeamSpeak Connector.
Les systиmes sont aussi trиs facilement modifiables (vous n'aimez pas l'inscription ? Modifiez la !).
Aussi, le GameMode est dit Open-Source. Tout est disponible sur GitHub, et si quelque chose vous
semble indispensable ou que vous trouvez un bug, signalez le !
Ce sera sans doute ajoutй si cela correspond bien au concept du GameMode.
Le GM sera donc partagй dиs qu'il sera terminй (enfin il est dйjа partagй sur GitHub).
Systиmes
Le GameMode propose avant tout une architecture "moderne" (зa vient du repos GitHub) :
Code:
+ core < include all necessary files - Utils + utils_functions < usefull functions (SendClientMessageEx, GetPlayerNameEx, etc.) - GUI + gui_fields < user can type text in, and you get the text back like a Dialog - MySQL : + mysql_infos < mysql informations & vars + mysql_init < initialise mysql connection - Server infos + server_infos < server infos (players connected, etc) AND loading configuration & data files - Player Infos + players_vars < standardize players information backups + players_infos < per player enum' and basic checks functions (registered ? connected ?) + players_connection < obvious + players_registration < obvious - Commands + commands_config < configuration (color, format, etc.) + commands_functions < functions used in commands + commands_generals < help, etc. + commands_tchat < all tchat commands (tchat IC, OOC, /me, /do, etc.
Cela permet un accиs facile а chaque systиme.
Un gros systиme mis un en place de base sera le systиme d'inventaire avec mon plugin Papawytems (une version modifiйe surement).
Ce GameMode utilise donc massivement y_hooks et tout la bibliothиque YSI (version 4) en gйnйral.
Un installeur a йtй fait pour mettre en place le fichier de configuration et la base SQL plus facilement, tout ce fait In Game !
Pour revenir sur le systиme d'inventaire, TOUT passe par cela. Vous venez d'avoir votre permis ? C'est un item !
Carte bancaire, permis, carte d'identitй, armes, nourritures, vкtements, tout est objets !
Certains objets pourront en contenir d'autres (poches de jeans, sacs, etc).
Ainsi, si vous perdez un de ces items, vous кtes bon pour aller les refaire si vous le pouvez !
Tout est dynamique. J'entend par lа que lorsque vous installez le GameMode, AUCUNE faction n'est crййe.
A vous de crйer une police, un gouvernement, etc. Des types de factions seront donc dйfinis.
Mкme les informations du serveur sont stockйes via SQL (le nom, site, etc.) !
Pouvez donc les changer facilement ou automatiquement !
Avancement
Pour l'instant,
L'installeur est terminй.
L'enregistrement du joueur est presque terminй.
Les infos serveur stockйes en SQL sont faites.
Les commandes de tchat sont presque finies.
Le systиme de GUI
Un systиme d'interface utilisateur a йtй mis en place.
Celui-ci propose des fonctions simples et pratiques.
Ces fichiers peuvent кtre utilisйs indйpendamment du GameMode (il faut juste modifier pour enlever y_hooks, c'es trиs facile).
Voici les йlйments ajoutйs pour le moment :
Des boutons
Des champs de textes
Des backgrounds (en fond)
Code
Le code est trиs simple pour faire ce genre de choses.
Voyez plutфt :
PHP Code:
// Dйclaration des variables (globales) contenant l'id de nos йlйments.
new Name[MAX_PLAYERS];
new Pass[MAX_PLAYERS];
new RegistrationButton[MAX_PLAYERS];
new Background[MAX_PLAYERS];
// Dans une callback quelconque
Name[playerid] = CreatePlayerField(playerid, 250, 100, "Pseudo", "Votre pseudo"); // on crйe le champ de texte
ShowPlayerField(playerid, Name[playerid]); // on l'affiche
Pass[playerid] = CreatePlayerField(playerid, 250, 200, "Mot de passe", "..."); // on crйe le champ de texte
SetFieldDefaultBehavior(playerid, Pass[playerid], false);
/*
On dйsactive le comportement par dйfaut.
Il consiste а mettre le texte tapй dans le champ, mais nous, on ne veut pas que le mot de passe soit affichй !
Donc on le dйsactive !
*/
ShowPlayerField(playerid, Pass[playerid]); // on l'affiche
AcceptButton[playerid] = CreatePlayerButton(playerid, 320, 300, "S'inscrire"); // on crйe un bouton
ShowPlayerButton(playerid, AcceptButton[playerid]); // on l'affiche
Background[playerid] = CreatePlayerBackground(playerid, 220, 80, 420, 320, 0x20202030); // on crйe un background
ShowPlayerBackground(playerid, Background[playerid]); // on l'affiche
/*
J'ai dы un peu tвtonner pour obtenir la position voulue.
Il faudrait que j'implйmente les largeurs de chaque йlйments pour avoir des positions fiables.
*/
// La callback appelйe lorsque le joueur a entrй le texte dans le champ
public OnPlayerFieldResponse(playerid, fieldid, inputtext[])
{
if(fieldid == Pass[playerid])
{
new tmpstr[NORMAL_STR];
for(new i=0; i<strlen(inputtext); ++i)
tmpstr[i] = 'X';
// On remplace toutes les lettres par des 'X' pour cacher le mot de passe
UpdateFieldName(playerid, fieldid, tmpstr); // On met а jour le texte du champ
}
return 1;
}
// La callback appelйe lorsque le joueur a appuyй sur le bouton
public OnPlayerClickButton(playerid, buttonID)
{
if(buttonID == AcceptButton[playerid])
{
SendClientMessage(playerid, -1, "Plop !");
}
return 1;
}
Je tiens а remercier :
Y_Less pour YSI.
BluG et maddinator pour le plugin MySQL.
Emmet pour easyDialog.
Contributeurs
(le listing est fait suivant ce que je vois sur GitHub)
OpakoDev
Papawy
GitHub
Le repos GitHub est disponibles ici :
https://github.com/Papawy/PapawyRP
Vous l'aurez compris, il est toujours en dйveloppement mais avance а grands pas !