September 19, 201411 yr comment_181344 Salut à tous et surtout aux codeurs de la team, J'en ai parlé à quelques uns, et j'officialise la chose. Je lance un projet, qui me permettra, dans mes maps, de rétrécir/agrandir les joueurs, idée plutot révolutionnaire, surtout pour les conduits. Description : Le fonctionnement est très simple, les maps et le pluggin seront reliés.Voici un exemple :http://i.imgur.com/5JOEr3k.pngLorsque un joueur entre dans la zone rouge (le conduit, et un peu avant), il est rétréci.Lorsque un joueur entre dans la zone jaune il est mis reprend sa taille initial. Ensuite on pourra l'utiliser de facon différente, mais toujours avec des zones. Dans la map:Dans les maps où je voudrais utiliser le pluggin, je dois créer une nouvelle entité, d'un tout nouveau type inexistant par exemple "trigger_resize", puis je lui rajoute un nom "25" "50" "75" "100" "125" ...Le taff sur la map s'arrête là, ces triggers seront inutiles, et ne font rien sans le pluggin Le pluggin:Là on rentre dans l'aspect technique.Lorsque une personne rentre dans un trigger_resize, le pluggin lit le trigger et regarde son nom.Selon le nombre indiqué, il resize le joueur à la taille indiquée. Les 2 trucs à chercher : - Detecter le trigger et son nomJe ne sais pas de quel manière le pluggin va interagir avec la map, mais je sais que c'est possible, je demanderai des infos a Wylloh qui l'a déjà fait. - Resize le joueurAlors ça c'est faisable grâce a ce pluggin :https://forums.alliedmods.net/showthread.php?p=1774605 J'pensais inclure un truc de ce type dans le code : switch (nom_entite){case 100: //Rend le joueur a taille 100% break;case 75: //Rend le joueur de taille 75% (plus petit en gros) break;case 50: //Rend le joueur de taille 50% break;case 25: //Rend le joueur de taille 25% break;case 10: break;case 125: break;case 150: break;case 200: break;default: //NE RIEN FAIRE break;} Je ne pense pas que ce soit un pluggin très dur a faire, dans la mesure où on comprend les 2 trucs à chercher. Je fais ce post pour avoir un vrai avancement, et pas devoir faire un MP comme je fais d'hab (tmtc la marche impérial), ou aller voir les gens 1 par 1. Report
September 19, 201411 yr comment_181349 Tu peux pas faire un switch en testant une string noob ! Mais sinon il suffit de convertir en int ou bien utiliser des if, dans tous les cas c'est simple. Le plus compliqué dans le plugin est la partie qui va vérifier si le joueur est dans la zone du trigger car je n'ai aucune idée de comment faire, il faut que je cherche des plugins similaires (Je peux peut-être m'inspirer de la dv race). Report
September 19, 201411 yr Author comment_181351 Effectivement Mais avec des if ce serait plus lourd Edited September 19, 201411 yr by Raphi Report
September 19, 201411 yr comment_181352 https://forums.alliedmods.net/archive/index.php/t-176752.html On a de quoi travailler, faudra qu'on test ça. Report
September 20, 201411 yr Author comment_181391 J'aimerai m'en servir dans ma map mc, faudrait voir asap Report
September 21, 201411 yr Author comment_181402 http://www78.zippyshare.com/v/17584815/file.htmlPour les 1ere test :Il ya 3 triggers - Trigger_multiple nom : trigger01OnStartTouch trigger01 FireUser1 - Trigger_multiplenom : trigger02OnStartTouch trigger02 FireUser1OnStartTouch !activator AddOuput targetname : CitronFiltre2 (oui je l'ai emprunté sur ma map xD) -Trigger_pluggin (un nouveau que j'ai créénom : trigger03OnStartTouch trigger03 FireUser1OnStartTouch !activator AddOuput targetname : CitronFiltre2 Maintenant reste a test avec le code ^^ Report
September 22, 201411 yr comment_181447 si vous n'y arrivez pas ou besoin de fonction etc, dites le moi, j'ai ce qu'il faut. @Raphi : un switch est beaucoup plus compréhensible et facile d'utilisation mais il est beaucoup plus lourd que de tout faire en if (les if prennent moins de place mémoire à la compilation). Edited September 22, 201411 yr by Dertione Report
September 22, 201411 yr comment_181448 ou bien pas besoin de trigger dans ta map et avec cette méthode, on pourrait le faire sur toutes les maps existantes. (je m'étais servi de ce plugin pour un spawn protect). Vous en apprendrez pas mal avec ce plugin. https://forums.alliedmods.net/showthread.php?t=189751 Report
September 22, 201411 yr Author comment_181449 J'sais pas trop. Avec le trigger, une fois le pluggin fait on sera tkl alors que sans y'aura tj du taff a faire Report
September 22, 201411 yr comment_181455 C'est tout le dilemme. Soit te fais chier a faire toutes les maps pour qu'il y ai ton trigger sans compatibilité avec des maps que tu n'auras pas touché mais côté code, rien à faire à part le truc de base. Soit tu te fais pas chier avec le trigger_map et tu bosses 30 secondes sur chaque maps pour définir les endroits où tu rétréci et les autres où tu redeviens normal. Après je sais que de ton point de vue, ce ne sera plus le concept des maps à raphi mais seulement le concept pensé par raphi applicable partout. Comme tu le sens. Report
September 22, 201411 yr Author comment_181459 Non mais de toute facon, je devrais toucher les maps, puisque je veux le retrecissement dans des petis conduits, qui n'existe pas encore Report
September 25, 201411 yr Author comment_181571 http://pastebin.com/BgFh0XG6Ouvert à tous de donner un coup de main,pour l'instant ça ne marche pas :/ Report
September 26, 201411 yr comment_181575 J'ai pas accès à pastebin quelqu'un peut le C/C dans un poste svp ? Report
September 26, 201411 yr Author comment_181576 #include<sdktools> public OnPluginStart() { HookEventEx("teamplay_round_start", round_start, EventHookMode_PostNoCopy); HookEventEx("player_spawn", player); } new bool:lowgrav[MAXPLAYERS+1]; public player(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if(lowgrav[client]) { SetEntityGravity(client, 1.0); } } public round_start(Handle:event, const String:name[], bool:dontBroadcast) { new String:buffer[60], ent = -1; while((ent = FindEntityByClassname(ent, "trigger_multiple")) != -1) // Find trigger_multiple { GetEntPropString(ent, Prop_Data, "m_iName", buffer, sizeof(buffer)); // Get targetname if(StrEqual(buffer, "trigger01", true)) // targetname match { HookSingleEntityOutput(ent, "OnEndTouch", callback, true); // Hook trigger output HookSingleEntityOutput(ent, "OnStartTouch", callback, true); break; // Stop loop } } } public callback(const String:output[], caller, activator, Float:delay) { if(activator > 0 && activator <= MaxClients) { if(StrEqual(output, "OnStartTouch")) { //ServerCommand("sm_gravity #%i 0.2", GetClientUserId(activator)); lowgrav[activator] = true; // Mark player SetEntityGravity(activator, 0.2); PrintHintText(activator, "Low gravity"); } else if(StrEqual(output, "OnEndTouch")) { //ServerCommand("sm_gravity #%i 1.0", GetClientUserId(activator)); lowgrav[activator] = false; // Remove mark SetEntityGravity(activator, 1.0); PrintHintText(activator, "Normal gravity"); } } } Report
September 26, 201411 yr comment_181577 Oulalah, c'est du code raffistoler tout ça, ca part vite en embrouille. C'est beaucoup trop complexe pour le peu que tu veux faire. Deja, je vous conseille d'utiliser smlib, cela vous facilitera la vie.Et s'il vous plaît, les variables globales définissez les juste après les include pas en plein milieu du code... Le mieux niveau algorithme/optimisation, c'est de detecter quand la personne appuie sur la touche "e" par exemple et si elle est dans la zone trigger, on fait le taff, sinon faut lancer une boucle qui va scruter tout ça h24 (ultra lourd).Voici une fonction qui permet la detection de touche (tirer du mode call of duty) :public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon) { if(IsPlayerAlive(client)) { if(buttons == IN_USE && g_bHEStuning[client]==false) { PrintToChat(client, "Vous pouvez de nouveau bouger"); g_bHEStuning[client]=true; CreateTimer(0.5, TimerStopStun, client); } } } https://forums.alliedmods.net/showthread.php?t=148387 Edited September 26, 201411 yr by Dertione Report
September 26, 201411 yr Author comment_181578 Non mais je ne veux pas de e, je veux uniquement si il entre/sort, commençons pas a bidouiller des trucs Report
September 26, 201411 yr comment_181580 Dans ce cas on peux utiliser sdkhooks de ce que j'ai lu, j'mi met quand j'ai le temps EDIT : a Merci raphi. Tiens je savais pas que tu pouvais hook des événements avec sdktools. Il se passe quoi concrètement avec ça ? Report
September 26, 201411 yr Author comment_181581 Alors moi je sais pas trop, c'est poney qui code et jdemande 2 3 coup de main a un pote a wylloh mais j'peux pas t'informer ^^ Report
September 27, 201411 yr Author comment_181597 Faudrait que ce soit fait ce week end si je veux pas prendre trop de retard :/ Report
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.