hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.03. 18:17



Jelenlévő felhasználók

Jelenleg 206 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 206 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 54 hozzászólás ]  Oldal Előző 1 2 3 4 5 6 Következő
Szerző Üzenet
HozzászólásElküldve: 2010.11.06. 12:45 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
loose identitation nem para, teszteld


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.07. 21:36 
Offline
Félisten
Avatar

Csatlakozott: 2008.04.28. 16:04
Hozzászólások: 872
Megköszönt másnak: 7 alkalommal
Megköszönték neki: 59 alkalommal
Loose dolog csak formaiság, hogyha pl egyik sor beljebb van mint kéne.

A pluginban felesleges létrehozni annyi funkciót, elég 1 ha mind ugyanazt csinálja:

Kód:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "karomkodas szuro"
#define VERSION "1.0 Beta"
#define AUTHOR "AxE"

public plugin_init() {
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_clcmd("say anyad","karomkodas");
   register_clcmd("say anzad","karomkodas");
   register_clcmd("say bazz","karomkodas");
   register_clcmd("say bayy","karomkodas");
   register_clcmd("say fuck","karomkodas");
   register_clcmd("say kurva","karomkodas");
   register_clcmd("say fasz","karomkodas");
   register_clcmd("say fasy","karomkodas");
   register_clcmd("say rohadt","karomkodas");
   register_clcmd("say csicska","karomkodas");
   register_clcmd("say szar","karomkodas");
   register_clcmd("say syar","karomkodas");
   register_clcmd("say geci","karomkodas");
   register_clcmd("say redvas","karomkodas");
   register_clcmd("say apad","karomkodas");
   register_clcmd("say buzi","karomkodas");
   register_clcmd("say buyi","karomkodas");
   register_clcmd("say segg","karomkodas");
   register_clcmd("say majom","karomkodas");
   register_clcmd("say budos","karomkodas");
}

public karomkodas(id) {
   client_cmd(id, "say Je' egy fotel")
   return PLUGIN_HANDLED
}


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.07. 21:59 
Offline
Nagyúr

Csatlakozott: 2009.11.17. 19:57
Hozzászólások: 752
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 19 alkalommal
ChDave
Ez nem fog működni.
Ez csak max. alácsillagozza amit írsz.


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.08. 12:59 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Szerintem is felesleges, de ő mindegyikre mást akar előhívni (szerintem).
Ezért írtam h ha nagyon egyszerűen akarja megoldani, akkor próbálja meg így, bár én magának a say üzenet lehookolását javasolnám.
Kb így nézne ki:
Kód:
#define PLUGIN "karomkodas szuro"
#define VERSION "1.0 Beta"
#define AUTHOR "AxE"

new message[192]

public plugin_init()
{
   register_plugin (PLUGIN, VERSION, AUTHOR);
   
   register_clcmd ("say", "hook_say");
   register_clcmd ("say_team", "hook_say");
}

public hook_say(id)
{
   read_args (message, 191);
   remove_quotes (message);

   new position;
   new bool:l = false;

   if ( (position = containi(message,"anyad")) != -1 )
   {
      new len = strlen("anyad");
      while (len--)
         message[position++]='*';

      l = true;
   }

   if (l)
   {
      new cmd[32]
      read_argv(0,cmd,31)         
      engclient_cmd(id,cmd,message)
   }

   return PLUGIN_CONTINUE      
}
Igen, példámban kicsillagozom a szöveget, de persze mást is tehetünk (pl kiírathatjuk, hogy "anyukám egy fotel", vagy "szeretem a vadkörtét" stb).

Innentől kezdve ebből kéne másolatot csinálni a függvényben az if után else if-fel:
Kód:
if ( (position = containi(message,"IDEJÖNASZÖVEGAMITKERESNIFOGOKAJÁTÉKOSÜZENETÉBEN")) != -1 )
{
   new len = strlen("IDEJÖNASZÖVEGAMITKERESNIFOGOKAJÁTÉKOSÜZENETÉBEN");
   while (len--)
      message[position++]='*';

   l = true;
}

Azaz:
Kód:
public hook_say(id)
{
   read_args (message, 191);
   remove_quotes (message);

   new position;
   new bool:l = false;

   if ( (position = containi(message,"anyad")) != -1 )
   {
      new len = strlen("anyad");
      while (len--)
         message[position++]='*';

      l = true;
   }
   else if ( (position = containi(message,"apad")) != -1 )
   {
      new len = strlen("apad");
      while (len--)
         message[position++]='*';

      l = true;
   }
   else if ( (position = containi(message,"meleg")) != -1 )
   {
      new len = strlen("meleg");
      while (len--)
         message[position++]='*';

      l = true;
   }

   if (l)
   {
      new cmd[32]
      read_argv(0,cmd,31)         
      engclient_cmd(id,cmd,message)
   }

   return PLUGIN_CONTINUE      
}


Vagy ha nagyon profik vagyunk, definiálhatunk egy tömböt is hozzá, amely tartalmazza, a kiszűrendő szöveget, így sokal szebb és optimálisabb lesz a kód :)
Azaz:
Kód:
#define MAX_WORDS 3
new _swearsWords[MAX_WORDS] = {
   "anyad",
   "apad",
   "meleg"
}

És így ezek után így módosulhat a lehookolt sayünk:
Kód:
public hook_say(id) 
{
   read_args (message, 191);
   remove_quotes (message);

   new position, i = 0;
   new bool:l = false;

   while ( i < MAX_WORDS )
   {
      if ( (position = containi(message,_swearsWords[i])) != -1 )
      {
         new len = strlen(_swearsWords[i]);
         while (len--)
            message[position++]='*';

         l = true;
      }
      i++;
   }

   if (l)
   {
      new cmd[32]
      read_argv(0,cmd,31)         
      engclient_cmd(id,cmd,message)
   }

   return PLUGIN_CONTINUE   
}


Tehát a KÉSZ kód:
Kód:
#define PLUGIN "Metal karomkodas szurojee"
#define VERSION "1.0 Beta"
#define AUTHOR "Metal :)"

#define MAX_WORDS 3
new _swearsWords[MAX_WORDS] = {
   "anyad",
   "apad",
   "meleg"
}

new message[192]

public plugin_init()
{
   register_plugin (PLUGIN, VERSION, AUTHOR);
   
   register_clcmd ("say", "hook_say");
   register_clcmd ("say_team", "hook_say");
}

public hook_say(id)
{
   read_args (message, 191);
   remove_quotes (message);

   new position, i = 0;
   new bool:l = false;

   while ( i < MAX_WORDS )
   {
      if ( (position = containi(message,_swearsWords[i])) != -1 )
      {
         new len = strlen(_swearsWords[i]);
         while (len--)
            message[position++]='*';

         l = true;
      }
      i++;
   }

   if (l)
   {
      new cmd[32]
      read_argv(0,cmd,31)         
      engclient_cmd(id,cmd,message)
   }

   return PLUGIN_CONTINUE   
}

Látjátok, nem volt nehéz és átlátható :P

És mint mondottam, ez egy kicsillagozó változat, megtehetjük, hogy a vizsgálat után egyszerűen átírjuk a szöveget.
Azaz:
Kód:
if ( (position = containi(message,_swearsWords[i])) != -1 )
{
   message="Je' egy fotel!";
   l = true;
}


Persze ilyenkor mindig mindenre ugyanaz írja, de megoldhatjuk úgy is, hogy párokat tartalmazó tömböt definiálunk, amelynél a pár első komponense a keresendő szöveget, a második a válasz hozzá.
Silverss: Ez neked kötelező fakultatív feladat, ess neki :)

( u.i.: Ha hiba van írjátok, kútfejből írtam mindent, tesztelni nem tudtam :( )


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.08. 15:03 
Offline
Nagyúr

Csatlakozott: 2009.11.17. 19:57
Hozzászólások: 752
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 19 alkalommal
Köszönöm, hogy tudásomhoz képest ilyen sok reményt adsz nekem. :)
Majd igyekszem.


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.08. 17:40 
Offline
Beavatott

Csatlakozott: 2010.09.18. 15:45
Hozzászólások: 62
Metal nálam csak 11 hibát jelzett :D
De nem tudom miért.....
Ez csak nálam van??xD


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.08. 18:19 
Offline
Nagyúr

Csatlakozott: 2009.11.17. 19:57
Hozzászólások: 752
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 19 alkalommal
Hibás a plugin, de ez várható volt hiszen csak felületesen készítette el.


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.08. 19:48 
Offline
Beavatott

Csatlakozott: 2010.09.18. 15:45
Hozzászólások: 62
Hát én próbálgattam kijavítani/átszerkeszteni de amikor megláttam hogy 46 error inkább hagytam xD :lol:


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.09. 10:57 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Ma meglesem, és felteszem a jó full kódot :)


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2010.11.09. 16:08 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Ahogy gondoltam, a legfontosabb dolgot lehagytam: include :)
Aki nem tette be, annak valóban 11 hibát dobott. (hogy lett valakinek aból 46? :( )
A kódnak elég az amxmodx könyvtár, azaz a kód legelejére ezt kell bebiggyeszteni:
Kód:
#include <amxmodx>

Aki ügyes volt rájött, de még mindig lesz 1 hiba. Mivel nincs string típus az AMXben, így
Kód:
new _swearsWords[MAX_WORDS]

helyett
Kód:
new _swearsWords[MAX_WORDS][32]

kell írni, és menni fog a kód.
(Miért 32? Ennyihez vlt kedvem....meg olyan kerek is :D )

Így le is fodul tökéletesen.
Akkor a végérvényes kód:
Kód:
#include <amxmodx>

#define PLUGIN "Metal karomkodas szurojee"
#define VERSION "1.0 Beta"
#define AUTHOR "Metal :)"

#define MAX_WORDS 3
new _swearsWords[MAX_WORDS][32] = {
   "anyad",
   "apad",
   "meleg"
}

new message[192]

public plugin_init()
{
   register_plugin (PLUGIN, VERSION, AUTHOR);
   
   register_clcmd ("say", "hook_say");
   register_clcmd ("say_team", "hook_say");
}

public hook_say(id)
{
   read_args (message, 191);
   remove_quotes (message);

   new position, i = 0;
   new bool:l = false;

   while ( i < MAX_WORDS )
   {
      if ( (position = containi(message,_swearsWords[i])) != -1 )
      {
         new len = strlen(_swearsWords[i]);
         while (len--)
            message[position++]='*';

         l = true;
      }
      i++;
   }

   if (l)
   {
      new cmd[32]
      read_argv(0,cmd,31)         
      engclient_cmd(id,cmd,message)
   }

   return PLUGIN_CONTINUE   
}


Am ha már ennyit "vesződtem" vele, valaki igazán kipróbálhatná, mivel lehet h lesz még 1 bibi :D


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 54 hozzászólás ]  Oldal Előző 1 2 3 4 5 6 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 82 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole