Nekuzor Posté(e) le 4 mai 2006 Signaler Posté(e) le 4 mai 2006 Bonjour, voila je viens vous présenter un de mes projets, il consiste à placer un client IRC dans Cs. Voici un screenshot : Ceci est un screenshot de la version 2.0 en cours de création. pour plus d'information merci de vous rendre sur www.irc-cs.com (site web sponsorisé par www.easyportail.be)
kokotchy Posté(e) le 4 mai 2006 Signaler Posté(e) le 4 mai 2006 Quand tu dis hl1, c'est donc un truc qui ne tourne pas avec steam ? Sinon c'est un truc génial
Nekuzor Posté(e) le 4 mai 2006 Auteur Signaler Posté(e) le 4 mai 2006 Si biensur, ca tourne sous steam, je dis HL1 car c'est pas Source. Une version source est prévue aussi.
caporaltito Posté(e) le 4 mai 2006 Signaler Posté(e) le 4 mai 2006 Un projet très interessant ! Tu es un codeur ?
Nekuzor Posté(e) le 4 mai 2006 Auteur Signaler Posté(e) le 4 mai 2006 Je pense que si je suis le créateur de ce petit logiciel... oui je suis codeur La version bêta de la version 2.0 est sortie
caporaltito Posté(e) le 4 mai 2006 Signaler Posté(e) le 4 mai 2006 Les codeurs sont rares dans la communauté d'Half-Life et ses mods. Si tu veux faire parti d'une équipe de création d'un mod, n'hésite pas à contacter Checkrob. Lui et moi faisons parti de l'équipe de développement du mod New World Conflict (dont il est le leader) et nous manquons cruellement de codeur. Tu sera le bienvenu
ChandlerBing82 Posté(e) le 4 mai 2006 Signaler Posté(e) le 4 mai 2006 haha comment tu lui mets le grappin dessus
Nekuzor Posté(e) le 5 mai 2006 Auteur Signaler Posté(e) le 5 mai 2006 Merci, cela peut être constructif comme expérience Je te tiens au courant, car pour le moment j'ai énormément de travail.
tosqualler Posté(e) le 5 mai 2006 Signaler Posté(e) le 5 mai 2006 je voudrais bien tester mais j'ai 3problemes je le lance developer se fout sur 1 et fps_max a 999 et j'ai rien a part un message dans la console, je fais quoi? xD Question le loader est tiré d'un hook ( cheats ) ?
Nekuzor Posté(e) le 5 mai 2006 Auteur Signaler Posté(e) le 5 mai 2006 Le loader n'est pas tirer d'un cheat, et tu ne risque rien au niveau du VAC ou VAC2, le system d'injection est le même que celui d'un cheat, mais j'ai eu une conversation avec un admin de chez valve via le forum de steam, et lui ai expliqué en quoi consiste mon logiciel, et il m'a confirmé que le VAC ou VAC2 ne détect que les cheats connus car avant VAC/VAC2 avait un algo de détection au niveau du detours des fonction opengl et du engine, mais cela posait problème avec certains logiciels telque HL-Amp ou certains Mods donc valve à changé ca politique de "traitement". De plus c'est pas le Loader qui fait le HOOk, mais la DLL, valve fourni une SDK dans laquelle ont peut retrouver la structure des fonction du moteur HL1 : [cpp] typedef struct cl_enginefuncs_s { // sprite handlers HSPRITE ( *pfnSPR_Load ) ( const char *szPicName ); int ( *pfnSPR_Frames ) ( HSPRITE hPic ); int ( *pfnSPR_Height ) ( HSPRITE hPic, int frame ); int ( *pfnSPR_Width ) ( HSPRITE hPic, int frame ); void ( *pfnSPR_Set ) ( HSPRITE hPic, int r, int g, int b ); void ( *pfnSPR_Draw ) ( int frame, int x, int y, const wrect_t *prc ); void ( *pfnSPR_DrawHoles ) ( int frame, int x, int y, const wrect_t *prc ); void ( *pfnSPR_DrawAdditive ) ( int frame, int x, int y, const wrect_t *prc ); void ( *pfnSPR_EnableScissor ) ( int x, int y, int width, int height ); void ( *pfnSPR_DisableScissor ) ( void ); client_sprite_t *( *pfnSPR_GetList ) ( char *psz, int *piCount ); // screen handlers void ( *pfnFillRGBA ) ( int x, int y, int width, int height, int r, int g, int b, int a ); int ( *pfnGetScreenInfo ) ( SCREENINFO *pscrinfo ); void ( *pfnSetCrosshair ) ( HSPRITE hspr, wrect_t rc, int r, int g, int b ); // cvar handlers struct cvar_s *( *pfnRegisterVariable ) ( char *szName, char *szValue, int flags ); float ( *pfnGetCvarFloat ) ( char *szName ); char* ( *pfnGetCvarString ) ( char *szName ); // command handlers int ( *pfnAddCommand ) ( char *cmd_name, void (*function)(void) ); int ( *pfnHookUserMsg ) ( char *szMsgName, pfnUserMsgHook pfn ); int ( *pfnServerCmd ) ( char *szCmdString ); int ( *pfnClientCmd ) ( char *szCmdString ); void ( *pfnGetPlayerInfo ) ( int ent_num, hud_player_info_t *pinfo ); // sound handlers void ( *pfnPlaySoundByName ) ( char *szSound, float volume ); void ( *pfnPlaySoundByIndex ) ( int iSound, float volume ); // vector helpers void ( *pfnAngleVectors ) ( const float * vecAngles, float * forward, float * right, float * up ); // text message system client_textmessage_t *( *pfnTextMessageGet ) ( const char *pName ); int ( *pfnDrawCharacter ) ( int x, int y, int number, int r, int g, int b ); int ( *pfnDrawConsoleString ) ( int x, int y, char *string ); void ( *pfnDrawSetTextColor ) ( float r, float g, float b ); void ( *pfnDrawConsoleStringLen )( const char *string, int *length, int *height ); void ( *pfnConsolePrint ) ( const char *string ); void ( *pfnCenterPrint ) ( const char *string ); // Added for user input processing int ( *GetWindowCenterX ) ( void ); int ( *GetWindowCenterY ) ( void ); void ( *GetViewAngles ) ( float * ); void ( *SetViewAngles ) ( float * ); int ( *GetMaxClients ) ( void ); void ( *Cvar_SetValue ) ( char *cvar, float value ); int (*Cmd_Argc) (void); char *( *Cmd_Argv ) ( int arg ); void ( *Con_Printf ) ( char *fmt, ... ); void ( *Con_DPrintf ) ( char *fmt, ... ); void ( *Con_NPrintf ) ( int pos, char *fmt, ... ); void ( *Con_NXPrintf ) ( struct con_nprint_s *info, char *fmt, ... ); const char *( *PhysInfo_ValueForKey ) ( const char *key ); const char *( *ServerInfo_ValueForKey )( const char *key ); float ( *GetClientMaxspeed ) ( void ); int ( *CheckParm ) ( char *parm, char **ppnext ); void ( *Key_Event ) ( int key, int down ); void ( *GetMousePosition ) ( int *mx, int *my ); int ( *IsNoClipping ) ( void ); struct cl_entity_s *( *GetLocalPlayer ) ( void ); struct cl_entity_s *( *GetViewModel ) ( void ); struct cl_entity_s *( *GetEntityByIndex ) ( int idx ); float ( *GetClientTime ) ( void ); void ( *V_CalcShake ) ( void ); void ( *V_ApplyShake ) ( float *origin, float *angles, float factor ); int ( *PM_PointContents ) ( float *point, int *truecontents ); int ( *PM_WaterEntity ) ( float *p ); struct pmtrace_s *( *PM_TraceLine ) ( float *start, float *end, int flags, int usehull, int ignore_pe ); struct model_s *( *CL_LoadModel ) ( const char *modelname, int *index ); int ( *CL_CreateVisibleEntity ) ( int type, struct cl_entity_s *ent ); const struct model_s * ( *GetSpritePointer ) ( HSPRITE hSprite ); void ( *pfnPlaySoundByNameAtLocation ) ( char *szSound, float volume, float *origin ); unsigned short ( *pfnPrecacheEvent ) ( int type, const char* psz ); void ( *pfnPlaybackEvent ) ( int flags, const struct edict_s *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 ); void ( *pfnWeaponAnim ) ( int iAnim, int body ); float ( *pfnRandomFloat ) ( float flLow, float flHigh ); long ( *pfnRandomLong ) ( long lLow, long lHigh ); void ( *pfnHookEvent ) ( char *name, void ( *pfnEvent )( struct event_args_s *args ) ); int (*Con_IsVisible) (); const char *( *pfnGetGameDirectory ) ( void ); struct cvar_s *( *pfnGetCvarPointer ) ( const char *szName ); const char *( *Key_LookupBinding ) ( const char *pBinding ); const char *( *pfnGetLevelName ) ( void ); void ( *pfnGetScreenFade ) ( struct screenfade_s *fade ); void ( *pfnSetScreenFade ) ( struct screenfade_s *fade ); void *( *VGui_GetPanel ) ( ); void ( *VGui_ViewportPaintBackground ) (int extents[4]); byte* (*COM_LoadFile) ( char *path, int usehunk, int *pLength ); char* (*COM_ParseFile) ( char *data, char *token ); void (*COM_FreeFile) ( void *buffer ); struct triangleapi_s *pTriAPI; struct efx_api_s *pEfxAPI; struct event_api_s *pEventAPI; struct demo_api_s *pDemoAPI; struct net_api_s *pNetAPI; struct IVoiceTweak_s *pVoiceTweak; // returns 1 if the client is a spectator only (connected to a proxy), 0 otherwise or 2 if in dev_overview mode int ( *IsSpectateOnly ) ( void ); struct model_s *( *LoadMapSprite ) ( const char *filename ); // file search functions void ( *COM_AddAppDirectoryToSearchPath ) ( const char *pszBaseDir, const char *appName ); int ( *COM_ExpandFilename) ( const char *fileName, char *nameOutBuffer, int nameOutBufferSize ); // User info // playerNum is in the range (1, MaxClients) // returns NULL if player doesn't exit // returns "" if no value is set const char *( *PlayerInfo_ValueForKey )( int playerNum, const char *key ); void ( *PlayerInfo_SetValueForKey )( const char *key, const char *value ); // Gets a unique ID for the specified player. This is the same even if you see the player on a different server. // iPlayer is an entity index, so client 0 would use iPlayer=1. // Returns false if there is no player on the server in the specified slot. qboolean (*GetPlayerUniqueID)(int iPlayer, char playerID[16]); // TrackerID access int (*GetTrackerIDForPlayer)(int playerSlot); int (*GetPlayerForTrackerID)(int trackerID); // Same as pfnServerCmd, but the message goes in the unreliable stream so it can't clog the net stream // (but it might not get there). int ( *pfnServerCmdUnreliable )( char *szCmdString ); } cl_enginefunc_t;[/cpp] On aura vite remarqué que ce sont tout des pointeurs de fonctions, donc il suffit de creer une variable du type de la structure et de lui fournir l'adresse de la structure réel (Offset), et voila un hook du moteur HL1 est fait ^^ Maintenant il faut juste un Loader qui va injecter notre DLL dans le processus hl.exe si vous le désirez, je suis d'accord de vous fournir le Loader que j'utilise (fait en ASM par koaD et modifié par moi) J'ai posté sur mon site le Manuel d'utilisation (par défaut la touche pour ouvrir la console est DEL), dans la bêta certains options telque changer la touche d'ouverture de la console n'est pas accessible. Et pour pouvoir ouvrir la console, il faut etre en partie. Alors oui il passe Developer a 1 et fps_max a 999 si tu regarde tu as plus de 100 fps mais cela était pour mes débugs et donc ne sera plus actif dans la version final. N.B : pour ceux qui voudrais plus de 100 fps (environ 250/300 en jeu comme moi) fps_max au dela de 100 sans Developer 1, ne fonctionnera pas N.B : Ne me demandé pas comment faire un cheat, je ne vous l'expliquerai pas, j'en ai fait, et aucun ne sont détectable par VAC/VAC2, mais en aucun cas je ne fournirai des information pouvant vous aider à en développer, ni vous fournir les codes source entiers ou partiel des cheats que j'ai pu développer. Il faut savoir que cheater c'est mal, moi je les ai développer pour m'amuser et non les utiliser, de plus cela fait un petit temps que je ne joue plus à counter-strike ou juste for fun de temps à autre
caporaltito Posté(e) le 5 mai 2006 Signaler Posté(e) le 5 mai 2006 Merci, cela peut être constructif comme expérience Je te tiens au courant, car pour le moment j'ai énormément de travail.[/quotemsg] Pas de problème. Bonne chance pour ton projet ! haha comment tu lui mets le grappin dessus [/quotemsg]chut
checkrob Posté(e) le 5 mai 2006 Signaler Posté(e) le 5 mai 2006 je vois que tu as eu la meme intention que moi, mais j'avais remarqué que tu le guettais , sinon vraiment sympa ton client irc
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.