Aller au contenu
News ticker
  • Bienvenue sur le nouveau forum VeryGames
  • Welcome to the new VeryGames forum
  • VeryNews

    [Projet] RolePlay en libre partage - En dev


    Kriax

    Messages recommandés

    Salut,

     

    Avant toute chose, avouer que le titre du sujet est attirant haha :p

     

    Bon, partons dans le vif du sujet !

     

    J'en ai marre de voir les personnes vendre les RolePlay (SpheX, Delachambre, ...).

    Donc j'ai décidé de créé un RolePlay durant mon temps libre petit à petit.

     

    Ce RolePlay seras diffusé en libre partage sur VeryGames ainsi que sur Sourcemod.

    Vous le vendez, vous changer l'auteur, ... j'en ai rien à taper.

     

    Seulement je n'ai pas d’expérience dans le RolePlay, j’entends par la :

    - Je connais pas les métiers.

    - Je connais pas les maps.

    - Je connais pas la gestion du mod.

    - Je connais rien.

     

    Mais j'ai déjà réfléchis à peu près au truc que je voudrais faire.

    D'abord faire la partie serveur, la mettre en Alpha test

    - Tout ce que comporte un RolePlay

     

    .Puis me pencher vers une partie web complète.

    - Compte administrateur.

    - Éditions des joueurs.

    --> Argent, métier, ...

    - Liste des métiers ainsi que le capital de ceux-ci.

    - Rank en fonction de l'argent.

     

    Je vais voir si je peux mélanger la partie serveur à la partie web afin de faire une sauvegarde de la base de donnée après X connexions effectuer.

     

    Bien-surs j'ai déjà penser au code, à comment l'organiser.

    Pour le moment je suis fixer sur plusieurs source de plugins ne demandant qu'un seul .smx ainsi que quelques includes avec des natives utiles !

     

    Donc mon post explicatif au dessus en reviens à demander des explications de ce mod, tout ce que comporte ce mod, ...

     

    Je tien aussi à dire que à côté j'ai une vie, je suis à l'école et mon options est la plus dur ..., les stages en labo au mois d'Avril, j'ai les amis, les filles (Oui je ne suis pas gay :p), ...

    -> Je vais pas étaler ma vie xD

    Donc si jamais j'abandonne le projet, je donnerais le dépars du plugin sur Sourcemod et ici.

    Mais logiquement ça devrais aller :)

     

    Je m'arrangerais aussi pour avoir un peu d'argent de mon côté pour un serveur de test et un site web pour la base de donnée qui devras être propre.

    -> Ou un petit dons généreux de VeryGames :$

    Je serais forcer de refuser la propositions (Si il y en à) des prétages (Ça se dit pas mais on s'en fou) de serveur ou site web.

    Je tiens aussi à précisé que je travail seul au niveau de la partie serveur, si la partie web est en route, je pense pouvoir avoir besoin d'un coup de main, malgré que ce n'est pas chinois, ma seul frayeur sont la sécurisations des requêtes SQL pour ne pas risquer une injection.

     

    Encore une chose, je vous demanderais de pas me flooder par MP pour savoir la date de sortie, j'ai même pas encore taper une ligne de code.

     

    Cordialement,

    Kriax 'Le non codeur' :)

     

    Edit : Adril, Phobie et Marechoux, supprimer pas l'edit :

    - Ce qui est dommage c'est que des personnes non méritante tel que Kenny qui à changer l'auteur du RolePlay de Delachambre, partager la partie web de mon AutoVIP en version test, ... auras accès à ces sources, mais bon, pourquoi priver un nombre incalculable de personne pour une dizaines qui le méritent pas :p

    Modifié par Kriax
    Lien vers le commentaire
    Partager sur d’autres sites

    • Réponses 415
    • Created
    • Dernière réponse

    Top Posters In This Topic

    Bonjour,

     

    Bonne idée, mais le script sera fournis avec son .sp

    Loin de modifier l'auteur, mais par exemple changer le nom des métiers, voir le code pour une modification simple.

     

    Pour le web, je pense que pour le début une partie :

    1. Les plus riches
    2. Les métiers
    3. Faire un don VS 10.000$

    Modification des joueurs sur le site, je préfère que ce soit fait plus loin, au pire on n'a le SQL :P

    Lien vers le commentaire
    Partager sur d’autres sites

    La partie dons reste à voir.

     

    J'ai deux possibilités pour les requêtes sql, la possibilité numéro1 est d'optimisé les requêtes par leur limitations, à leur connexion et déconnexion par exemple.

    La deuxième est passer par ce que on appelle des requête threadées.

    Lien vers le commentaire
    Partager sur d’autres sites

    Bonjour,

     

    si tu ne veux pas que le topic du projet soit fermé évite toi-même déjà les débordements, je te l'ai dis nous ne sommes pas là pour régler nos comptes.

     

    Ensuite pour un serveur de test et un web je peux te fournir ça sans souci (à la condition de ne pas avoir de débordement sur le forum).

    Sinon très bon projet, chapeau de vouloir créer en libre ces codes qui sont hors de prix et totalement injustifiés.

     

     

    Pour sécuriser tes requêtes rien de bien compliqué, tu as plein de sujet sur le net (requête en prepare etc etc...).

    Lien vers le commentaire
    Partager sur d’autres sites

    Voici un exemple de la propreté qu'il y auras :

     

    Variables dégueulassent :

    // NEW BOOL
    new bool:g_bIsMapLoaded = false;
    new bool:connection = false;
    new bool:connect = false;
    new bool:g_booljail[MAXPLAYERS+1] = false;
    new bool:g_boolreturn[MAXPLAYERS+1] = false;
    new bool:g_IsTazed[MAXPLAYERS+1] = false;
    new bool:drogue[MAXPLAYERS+1] = false;
    new bool:g_boolexta[MAXPLAYERS+1] = false;
    new bool:g_boollsd[MAXPLAYERS+1] = false;
    new bool:g_boolcoke[MAXPLAYERS+1] = false;
    new bool:g_boolhero[MAXPLAYERS+1] = false;
    new bool:g_crochetageon[MAXPLAYERS+1] = false;
    new bool:g_booldead[MAXPLAYERS+1] = false;
    new bool:reboot = false;
    new bool:g_chirurgie[MAXPLAYERS+1] = false;
    new bool:grab[MAXPLAYERS+1] = false;
    new bool:OnKit[MAXPLAYERS+1] = false;
    new bool:g_InUse[MAXPLAYERS+1];
    new bool:HasKillCible[MAXPLAYERS+1] = false;
    new bool:oncontrat[MAXPLAYERS+1] = false;
    new bool:g_appart[MAXPLAYERS+1] = false;
    
    // NEW FLOAT 
    new Float:g_Count[MAXPLAYERS+1] = 0.0;
    
    // NEW STRING 
    new String:g_gamedesc[64];
    new String:RealZone[999];
    new String:jobname[999];
    new String:rankname[999];
    
    // NEW HANDLE
    new Handle:db_rp;
    new Handle:db_dela;
    new Handle:Timers;
    new Handle:gTimer;
    new Handle:GiveKit;
    new Handle:g_jailreturn[MAXPLAYERS+1] = { INVALID_HANDLE, ... };
    new Handle:g_jailtimer[MAXPLAYERS+1] = { INVALID_HANDLE, ... };
    new Handle:TimerHud[MAXPLAYERS+1] = INVALID_HANDLE;
    new Handle:TimerAppart[MAXPLAYERS+1] = INVALID_HANDLE;
    new Handle:g_TazerTimer[MAXPLAYERS+1] = INVALID_HANDLE;
    new Handle:g_croche[MAXPLAYERS+1] = { INVALID_HANDLE, ... };
    new Handle:g_deadtimer[MAXPLAYERS+1] = { INVALID_HANDLE, ... };
    new Handle:Select;
    new Handle:Insert;
    new Handle:heroo[MAXPLAYERS+1];
    new Handle:extasiie[MAXPLAYERS+1];
    new Handle:lssd[MAXPLAYERS+1];
    new Handle:cokk[MAXPLAYERS+1];
    new Handle:countm4time;
    new Handle:countdeagletime;
    new Handle:countm3time;
    new Handle:countusptime;
    new Handle:Contrat[MAXPLAYERS+1] = INVALID_HANDLE;
    new Handle:pub;
    
    // NEW INDEX
    new g_modelLaser, g_modelHalo, g_LightingSprite, g_BeamSprite;
    new g_countheure1 = 0;
    new g_countheure2 = 0;
    new g_countminute1 = 0;
    new g_countminute2 = 0;
    new M4FBI;
    new DEAGLEFBI;
    new M3COMICO;
    new USPCOMICO;
    new countm4 = 0;
    new countdeagle = 0;
    new countm3 = 0;
    new countusp = 0;
    new redColor[4]        = {255, 75, 75, 255 };
    new greenColor[4]    = {75, 255, 75, 255 };
    new RebootTimer;
    new LICENCE;
    // new PrecipIndex;
    
    // NEW VARIABLES
    new jobid[MAXPLAYERS+1] = 0;
    new rankid[MAXPLAYERS+1] = 0;
    new bank[MAXPLAYERS+1] = 0;
    new kitcrochetage[MAXPLAYERS+1] = 0;
    new capital[MAXPLAYERS+1] = 0;
    new g_IsInJail[MAXPLAYERS+1] = 0;
    new money[MAXPLAYERS+1] = 0;
    new g_jailtime[MAXPLAYERS+1] = 0;
    new salaire[MAXPLAYERS+1] = 0;
    new rib[MAXPLAYERS+1] = 0;
    new ak47[MAXPLAYERS+1] = 0;
    new awp[MAXPLAYERS+1] = 0;
    new m249[MAXPLAYERS+1] = 0;
    new scout[MAXPLAYERS+1] = 0;
    new sg550[MAXPLAYERS+1] = 0;
    new sg552[MAXPLAYERS+1] = 0;
    new ump[MAXPLAYERS+1] = 0;
    new tmp[MAXPLAYERS+1] = 0;
    new mp5[MAXPLAYERS+1] = 0;
    new deagle[MAXPLAYERS+1] = 0;
    new usp[MAXPLAYERS+1] = 0;
    new glock[MAXPLAYERS+1] = 0;
    new xm1014[MAXPLAYERS+1] = 0;
    new m3[MAXPLAYERS+1] = 0;
    new m4a1[MAXPLAYERS+1] = 0;
    new aug[MAXPLAYERS+1] = 0;
    new galil[MAXPLAYERS+1] = 0;
    new mac10[MAXPLAYERS+1] = 0;
    new famas[MAXPLAYERS+1] = 0;
    new p90[MAXPLAYERS+1] = 0;
    new elite[MAXPLAYERS+1] = 0;
    new ticket10[MAXPLAYERS+1] = 0;
    new ticket100[MAXPLAYERS+1] = 0;
    new ticket1000[MAXPLAYERS+1] = 0;
    new levelcut[MAXPLAYERS+1] = 0;
    new cartouche[MAXPLAYERS+1] = 0;
    new permislourd[MAXPLAYERS+1] = 0;
    new permisleger[MAXPLAYERS+1] = 0;
    new cb[MAXPLAYERS+1] = 0;
    new props1[MAXPLAYERS+1] = 0;
    new props2[MAXPLAYERS+1] = 0;
    new heroine[MAXPLAYERS+1] = 0;
    new exta[MAXPLAYERS+1] = 0;
    new lsd[MAXPLAYERS+1] = 0;
    new coke[MAXPLAYERS+1] = 0;
    new pack[MAXPLAYERS+1] = 0;
    new kevlar[MAXPLAYERS+1] = 0;
    new g_succesheadshot[MAXPLAYERS+1] = 0;
    new g_headshot[MAXPLAYERS+1] = 0;
    new g_succesporte20[MAXPLAYERS+1] = 0;
    new g_succesporte50[MAXPLAYERS+1] = 0;
    new g_succesporte100[MAXPLAYERS+1] = 0;
    new g_porte[MAXPLAYERS+1] = 0;
    new price[MAXPLAYERS+1] = 0;
    new responsable[MAXPLAYERS+1] = 0;
    new jail[MAXPLAYERS+1] = 0;
    new g_invisible[MAXPLAYERS+1] = 0;
    new p[MAXPLAYERS+1] = 0;
    new g_tazer[MAXPLAYERS+1] = 0;
    new Entiter[MAXPLAYERS+1] = 0;
    new g_crochetage[MAXPLAYERS+1] = 0;
    new g_CountDead[MAXPLAYERS+1] = 0;
    new l[MAXPLAYERS+1] = 0;
    new z[MAXPLAYERS+1] = 0;
    new banned[MAXPLAYERS+1] = 0;
    new banni[MAXPLAYERS+1] = 0;
    new TransactionWith[MAXPLAYERS+1] = 0;
    new gObj[MAXPLAYERS+1] = 0;
    new m[MAXPLAYERS+1] = 0;
    new g_vol[MAXPLAYERS+1] = 0;
    new cible[MAXPLAYERS+1] = 0;
    new acheteur[MAXPLAYERS+1] = 0;
    new salarychoose[MAXPLAYERS+1] = 0;
    new maison[MAXPLAYERS+1] = 0;
    new maisontime[MAXPLAYERS+1] = 0;
    

     

    SQL qui fait mal au yeux :

    public GetItem(client)
    {
       if (IsClientInGame(client))
       {
           new String:SteamId[32];
           GetClientAuthString(client, SteamId, sizeof(SteamId));
    
           new bool:ok = false;
    
           if (connection)
           {
               new String:select[999];
               Format(select, sizeof(select),"SELECT kitcrochetage, ak47, awp, m249, scout, sg550, sg552, ump, tmp, mp5, deagle, usp, glock, xm1014, m3, m4a1, aug, galil, mac10, famas, p90, elite, ticket10, ticket100, ticket1000, levelcut, cartouche, props1, props2, heroine, exta, lsd, coke, pack, kevlar FROM `Roleplay_item` WHERE steam_id = '%s'", SteamId);
               Select = SQL_Query(db_rp, select);
    
               if (Select == INVALID_HANDLE)
               {
                   new String:error[255];
                   SQL_GetError(db_rp, error, sizeof(error));
                   PrintToServer("Failed to query (error: %s)", error);
                   ok = false;
               }
               else
               {
                   if (SQL_FetchRow(Select))
                   {
                       kitcrochetage[client] = SQL_FetchInt(Select, 0);
                       ak47[client] = SQL_FetchInt(Select, 1);
                       awp[client] = SQL_FetchInt(Select, 2);
                       m249[client] = SQL_FetchInt(Select, 3);
                       scout[client] = SQL_FetchInt(Select, 4);
                       sg550[client] = SQL_FetchInt(Select, 5);
                       sg552[client] = SQL_FetchInt(Select, 6);
                       ump[client] = SQL_FetchInt(Select, 7);
                       tmp[client] = SQL_FetchInt(Select, 8);
                       mp5[client] = SQL_FetchInt(Select, 9);
                       deagle[client] = SQL_FetchInt(Select, 10);
                       usp[client] = SQL_FetchInt(Select, 11);
                       glock[client] = SQL_FetchInt(Select, 12);
                       xm1014[client] = SQL_FetchInt(Select, 13);
                       m3[client] = SQL_FetchInt(Select, 14);
                       m4a1[client] = SQL_FetchInt(Select, 15);
                       aug[client] = SQL_FetchInt(Select, 16);
                       galil[client] = SQL_FetchInt(Select, 17);
                       mac10[client] = SQL_FetchInt(Select, 18);
                       famas[client] = SQL_FetchInt(Select, 19);
                       p90[client] = SQL_FetchInt(Select, 20);
                       elite[client] = SQL_FetchInt(Select, 21);
                       ticket10[client] = SQL_FetchInt(Select, 22);
                       ticket100[client] = SQL_FetchInt(Select, 23);
                       ticket1000[client] = SQL_FetchInt(Select, 24);
                       levelcut[client] = SQL_FetchInt(Select, 25);
                       cartouche[client] = SQL_FetchInt(Select, 26);
                       props1[client] = SQL_FetchInt(Select, 27);
                       props2[client] = SQL_FetchInt(Select, 28);
                       heroine[client] = SQL_FetchInt(Select, 29);
                       exta[client] = SQL_FetchInt(Select, 30);
                       lsd[client] = SQL_FetchInt(Select, 31);
                       coke[client] = SQL_FetchInt(Select, 32);
                       pack[client] = SQL_FetchInt(Select, 33);
                       kevlar[client] = SQL_FetchInt(Select, 34);
    
                       ok = true;
    
                       CloseHandle(Select);
                   }
               }
    
               if (!ok)
               {
                   new String:insert[999];
                   Format(insert, sizeof(insert),"INSERT INTO Roleplay_item VALUES ('%s', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)", SteamId);
                   Insert = SQL_Query(db_rp, insert);
                   CloseHandle(Insert);
               }
           }
       }
    }
    

     

    Variables demandées :

     

    new Handle:g_hDatabase;
    new Handle:g_hTimerGive[MAXPLAYERS+1] = { INVALID_HANDLE, ... };
    new Float:g_fTimer;
    new g_iPoints[MAXPLAYERS+1] = 0;
    new g_iGivePoints;
    

     

    Requète SQL prévues :

    public Native_GetClientRank(Handle:plugin, numParams)
    {
       new client = GetNativeCell(1);
    
       if(IsClientInGame(client) && IsClientConnected(client)) 
       {
           decl String:sBuffer[255];
           decl String:sSteamID[64];
           decl String:sFetchSteamID[64];
           new iCount;
           GetClientAuthString(client, sSteamID, sizeof(sSteamID));
           Format(sBuffer, sizeof(sBuffer),"SELECT steamid FROM `rank` ORDER BY kill DESC;");
           new Handle:hQuery = SQL_Query(g_hDatabase, sBuffer);
           if(hQuery)
           {
               SQL_Rewind(hQuery);
               while(SQL_FetchRow(hQuery))
               {
                   iCount++;
                   SQL_FetchString(hQuery, 0, sFetchSteamID, sizeof(sFetchSteamID));
                   if(StrEqual(sSteamID, sFetchSteamID)) 
                   {
                       return iCount;
                   }    
               }
           }
       }
       return 0;
    }
    

     

    -> Les deux premiers code son d'un autre RolePlay rendu public :)

    -> Les deux derniers code sont issus de deux plugins à moi.

    Lien vers le commentaire
    Partager sur d’autres sites

    @Adril

    Oui désolé, je me suis emporter, mais venir me chercher directement faut pas abuser.

    Merci pour le compliment et ta propositions.

    Pour le web, j'ai créé un AutoVIP et un auto achat de crédits store, mais sans inscriptions. La zone membres seras nouveau pour moi ^^

     

    @Alex, tu aurais vue je ne connais rien du RolePlay, je savais même pas que Kossolax avais créé une map. Tout ce que je sais sur le RolePlay c'est que le serveur de Kossolax est dans le Top10 des serveurs mondiaux.

    Lien vers le commentaire
    Partager sur d’autres sites

    Kriax plutôt que de partir from scratch et dev entièrement tout au risque de laisser des failles, tu peux passer par un framework php type Atomik (super lite,MVC). C'est assez simple et tu gagnes énormément de temps au final.

    Lien vers le commentaire
    Partager sur d’autres sites

    Bonsoir,

     

    Très bonne initiative de vouloir casser la routine. :)

     

    Pour ce qui est de décrire le mod, malgrés que je ne le connaisse pas plus que ça. D'après moi un RP n'a pas de règles. C'est à toi de créer les métiers qui te sembles jouables, réalisables et amusants. :p Ensuite, le seul but est de devenir le plus riche.

     

    Pour ce qui est du site, je ne vois pas pourquoi tu souhaiterais créer un espace membre ?

    Lien vers le commentaire
    Partager sur d’autres sites

    Rejoindre la conversation

    Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

    Invité
    Répondre à ce sujet…

    ×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

      Seulement 75 émoticônes maximum sont autorisées.

    ×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

    ×   Votre contenu précédent a été rétabli.   Vider l’éditeur

    ×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


    ×
    ×
    • Créer...