|
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
|

02-17-2010
, 18:46
[TUT]Modulos y sus elementos
|
#1
|
Tutorial de Módulos.
General:
En este tutorial les explicare cada Funcion, Forward de los modulos mas importantes y mas usados por la comunidad partiendo de los básicos a los más complejos.
Ir a:
Fun
Cstrike
Hamsandwich
Fakemeta
Engine
Sockets
SQL
Vaults
Orpheu
Rage
Extras
Creditos:
MetaliCross - me dijo como podria usar set/get_clinet_listen
PHP Code:
#include <amxmodx> #include <fun>
PHP Code:
/* Establece quien escucha a quien. La funcion returnea 0 si por alguna razon esta configuracion no se realiza con exito. * si por alguna razon esta configuracion no se realiza con exito. */ native set_client_listen(receiver, sender, listen)
/* Returnea 1 si el que recibe escucha la voz del que envia. */ native get_client_listen(receiver, sender);
Ejemplo: new g_maxplayers // con esta variable usaremos el get_maxplayers. new SenderName[33] // con esta variable guardaremos la ID del que envia(sender).
public plugin_init() { register_plugin("Test Client Listen", "Beta", "GlaDiuS") g_maxplayers = get_maxplayers() // utilizamos la variable para que sea llamado una vez y evitar mas consumo de CPU. register_event("HLTV", "RoundStart","a", "1=0", "2=0") // registramos el inicio de ronda(freezetime). register_clcmd("say /mute", "TestMenu") // Hookeamos el comando que usaremos para abrir el menu. }
public RoundStart() { for(new index; index <= g_maxplayers; index++) // detectamos la cantidad de players. { new Name[32]; // variable que usaremos para detectar el nombre. get_user_name(SenderName[index], Name, sizeof(Name)-1) // registramos el nombre del que envia la "voz". if(!get_client_listen(index, SenderName[index])) // detectamos si el usuario NO escucha la voz del que envia. client_print(index, print_chat, "Tienes bloqueado a %s , no puedes escucharlo.", Name) // manda un mensaje tipo chat que dice que el usuario no esta escuchando al que envia. } }
public TestMenu(index) { new Menu // variable que usaremos para el menu. Menu = menu_create("\yMute Menu", "TestHandler") // creamos el menu/titulo/donde registramos que hara cada boton del menu. new Pos[3], Name[32] // variable para detectar la cantidad de nombres y numeros que ncecesita el menu. for (new i = 1; i <= g_maxplayers; i++) // detectamos la cantidad de players. { if (!is_user_connected(i) || i == index) // si el player no esta conectado o el player es igual al usuario. continue; // dejamos que continue la funcion. num_to_str(i, Pos, sizeof(Pos)-1) // pasamos los numeros a strings(palabras). get_user_name(i, Name, sizeof(Name)-1) // registramos el nombre del player. menu_additem(Menu, Name, Pos) // creamos la cantidad de items que tendra el menu (en este caso de acuerdo a la cantidad de players). } menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) // setea una propiedad del menu. ( que tengo un boton de cerrar el menu). menu_display(index, Menu, 0) // abrimos el menu }
public TestHandler(index, Menu, item) { if (item == MENU_EXIT) // aqui registramos que si cierra el menu. { menu_destroy(Menu) // destruimos el menu. return PLUGIN_HANDLED // terminamos la funcion, no continua con lo demas abajo. } new Data[6], Name[64] // variables que usaremos para detectar la info del menu. new Access, Callback // variables que usaremos para detectar la info del menu. menu_item_getinfo(Menu, item, Access, Data, sizeof(Data)-1, Name, sizeof(Name)-1, Callback) // toda la informacion del menu. new Key // variable que usaremos para el Data(menos consumo de CPU). Key = str_to_num(Data) // Detectar que el numero que apretamos sera el que se usara. SenderName[Key] = index // detectamos que el nombre del que envia es igual al usuario. set_client_listen(index, SenderName[index], 0) // seteamos que el usuario no escuche al que envia la "voz". menu_destroy(Menu) // destruimos el menu. return PLUGIN_HANDLED // terminaos la funcion. }
PHP Code:
/* Establece la Inmortalidad a un jugador. Si tu quieres desactivar "godmode" solo tienes que establecer el primer parametro. */ native set_user_godmode(index, godmode = 0);
/* Returnea 1 si se ha establecido "godmode". */ native get_user_godmode(index);
Ejemplo: public plugin_init() { register_plugin("Test Godmode", "Beta", "GlaDiuS") register_clcmd("say /god", "Funcion") // Hookeamos el comando que usare para el godmode. }
public Funcion(index) { if(!get_user_godmode(index)) // detectamos si el player NO tiene godmode set_user_godmode(index, 1) // Seteamos 1, entonces el player obtiene inmortalidad. else // lo contrario al if set_user_godmode(index, 0) // El player se vuelve mortal. }
PHP Code:
/* Establece el Armor de un jugador. */ native set_user_armor(index, armor);
Ejemplo: public plugin_init() { register_plugin("Test Armor", "Beta", "GlaDiuS") register_clcmd("say /armor", "Funcion") // Hookeamos el comando que usare para dar Armor }
public Funcion(index) set_user_armor(index, 100) //s eteamos su armor, el player tiene 100 de armor.
PHP Code:
/* Establece la Vida de un jugador. */ native set_user_health(index, health);
Ejemplo: public plugin_init() { register_plugin("Test Health", "Beta", "GlaDiuS") register_clcmd("say /health", "Funcion") // Hookeamos el comando que usare para dar vida }
public Funcion(index) set_user_health(index, 150) // seteamos su vida, el player tiene 150 de vida.
PHP Code:
/* Cambia la posicion de un Jugador. */ native set_user_origin(index, const origin[3]);
Ejemplo: new teleOrigin[33][3] // variable que usaremos para guardar/cargar la posicion.
public plugin_init() { register_plugin("Test Origin", "Beta", "GlaDiuS") register_clcmd("say /save", "Funcion") // Hookeamos el comando que usare para guardar su posicion. register_clcmd("say /load", "Funcion2") // Hookeamos el comando que usare para que vuelva a la posicion que guardo. }
public Funcion(index) get_user_origin(index, teleOrigin[index]) // detectamos la posicion y la guardamos.
public Funcion2(index) set_user_origin(index, teleOrigin[index]) // cargamos la posicion que guardamos anteriormente.
PHP Code:
/* Establece al Jugador "rendering mode". */ native set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16);
Ejemplo: public plugin_init() { register_plugin("Test Rendering", "Beta", "GlaDiuS") register_clcmd("say /rendering", "Funcion") // Hookeamos el comando que usare para el rendering. }
public Funcion(index) { set_user_rendering(index, kRenderFxGlowShell, 255, 255, 255, kRenderNormal, 50) // Seteamos Glow. set_user_rendering(index,kRenderFxNone, 0,0,0, kRenderTransAdd, 150) // Seteamos Invisibilidad. /* Rendering Constants: kRenderNormal = 0, // src kRenderTransColor, // c*a+dest*(1-a) kRenderTransTexture, // src*a+dest*(1-a) kRenderGlow, // src*a+dest -- No Z buffer checks kRenderTransAlpha, // src*srca+dest*(1-srca) kRenderTransAdd, // src*a+dest FX Constants: kRenderFxNone = 0, kRenderFxPulseSlow, kRenderFxPulseFast, kRenderFxPulseSlowWide, kRenderFxPulseFastWide, kRenderFxFadeSlow, kRenderFxFadeFast, kRenderFxSolidSlow, kRenderFxSolidFast, kRenderFxStrobeSlow, kRenderFxStrobeFast, kRenderFxStrobeFaster, kRenderFxFlickerSlow, kRenderFxFlickerFast, kRenderFxNoDissipation, kRenderFxDistort, // Distort/scale/translate flicker kRenderFxHologram, // kRenderFxDistort + distance fade kRenderFxDeadPlayer, // kRenderAmt is the player index kRenderFxExplode, // Scale up really big! kRenderFxGlowShell, // Glowing Shell kRenderFxClampMinScale, // Keep this sprite from getting very small (SPRITES only!) */ }
PHP Code:
/* Le da un Item a un Jugador, el nombre del item puede empezar * con weapon_ , ammo_ , item_ ... Este evento * es anunciando de forma adecuada para todos los jugadores. */ native give_item(index, const item[]);
/* elimina toda las Armas del usuario. */ native strip_user_weapons(index);
Ejemplo: public plugin_init() { register_plugin("Test StripWeapon/Giveitem", "Beta", "GlaDiuS") register_clcmd("say /entidad", "Funcion") // Hookeamos el comando que usare para remover las entidades del player y darle una nueva }
public Funcion(index) { strip_user_weapons(index) // borra todas las entidades(armas) del usuario give_item(index, "weapon_usp") // le agregamos una entidad(arma) nueva al usuario - Usp give_item(index, "weapon_knife") // le agregamos una entidad(arma) nueva al usuario - Cuchillo }
PHP Code:
/* Establece las sonas de daño a un jugador. */ native set_user_hitzones(index = 0, target = 0, body = 255);
/* Obtener Zonas de Daño del uuario. */ native get_user_hitzones(index, target);
Ejemplo: public plugin_init() { register_plugin("Test Hitzones", "Beta", "GlaDiuS") register_clcmd("say /hitzone", "Funcion") // Hookeamos el comando que usare para setear/detectar una parte del cuerpo(en este caso Head) }
public Funcion(index) { static target // este es el index de la persona afectada(victima) if(get_user_hitzones(index, target) != HIT_HEAD) // detectamos si el hitzone es diferente a 2(Head) set_user_hitzones(index, target, 2) // como vimos arriba, si era diferente a 2, le seteamos el 2 else // lo contradictorio al IF client_print(index, print_center, "Modo HeadShot ya esta activado") // un mensaje que indica que ya se encuentra activaod el hitzone 2(Head) /* set/hitzones * Parts of body are as bits: * 1 - generic * 2 - head * 4 - chest * 8 - stomach * 16 - left arm * 32 - right arm * 64 - left leg * 128 - right leg * 255 - body get/hitzones Hitzone Constants: HIT_GENERIC 0 HIT_HEAD 1 HIT_CHEST 2 HIT_STOMACH 3 HIT_LEFTARM 4 HIT_RIGHTARM 5 HIT_LEFTLEG 6 HIT_RIGHTLEG 7 */ }
PHP Code:
/* Establece la velocidad del usuario. */ native set_user_maxspeed(index, Float:speed = -1.0);
/* Returnea a la velocidad maxima del usuario. */ native Float:get_user_maxspeed(index);
Ejemplo: public plugin_init() { register_plugin("Test MaxSpeed", "Beta", "GlaDiuS") register_clcmd("say /speed", "Funcion") // Hookeamos el comando que usare para el Speed }
public Funcion(index) { new Weapon = get_user_weapon(index) // detectamos el arma que esta usando el usuario if(get_user_maxspeed(index) == Weapon) // detectamos la maxspeed de el arma que tiene el usuario { set_user_maxspeed(index, Weapon + 30.0) // seteamos la velocidad maxima del arma (velocidad del arma + 30) } }
PHP Code:
/* Establece la gravedad de un usuario. */ native set_user_gravity(index, Float:gravity = 1.0);
/* Returnea a la gravedad del usuario. */ native Float:get_user_gravity(index);
Ejemplo: public plugin_init() { register_plugin("Test Gravity", "Beta", "GlaDiuS") register_clcmd("say /gravity", "Funcion") // Hookeamos el comando que usare para la gravedad }
public Funcion(index) { // gravedad que quieres / gravedad estandar == gravity // ejemplo ( 400 / 800 = 0.5 ) if(get_user_gravity(index) == 1.0) // detectamos la gravedad del usuario ( 1.0 = 800) { set_user_gravity(index, 0.5) // seteamos la gravedad del player } }
PHP Code:
/* establece la entidad(un jugador). */ native spawn(index);
Ejemplo: public plugin_init() { register_plugin("Test Spawn", "Beta", "GlaDiuS") }
public client_putinserver(index) set_task(10.0, "Funcion", index) // con esto hacemos que despues de 10 segundos de haberse llamo esta funcion, se llame a la otra funcion
public Funcion(index) spawn(index) // con esto el player respawneara
PHP Code:
/* Sets player noclip. If you want to disable noclip set only first parameter. */ native set_user_noclip(index, noclip = 0);
/* Returnea 1 si se establece el noclip. */ native get_user_noclip(index);
Ejemplo: public plugin_init() { register_plugin("Test Noclip", "Beta", "GlaDiuS") register_clcmd("say /noclip", "Funcion") // Hookeamos el comando que usare para el noclip }
public Funcion(index) { if(!get_user_noclip(index)) // detectamos si NO tiene noclip set_user_noclip(index, 1) // le seteamos noclip else // lo contrario al IF set_user_noclip(index, 0) // le sacamos el noclip }
PHP Code:
/* Returnea 1 si el player tenia pasos silenciosos, 0 si los pasos establecidos son normales */ native get_user_footsteps(index);
/* Le da a un jugador pasos silenciosos. * Si esta establecido en 0 este returneara a los pasos normales */ native set_user_footsteps(index, set = 1);
Ejemplo: public plugin_init() { register_plugin("Test Footsteps", "Beta", "GlaDiuS") register_clcmd("say /footsteps", "Funcion") // Hookeamos el comando que usare para el footsteps }
public Funcion(index) { if(!get_user_footsteps(index)) // detectamos si NO hace pasos silenciosos set_user_footsteps(index, 1) // le seteamos footsteps else // lo contrario al IF set_user_footsteps(index, 0) // le sacamos el footsteps }
PHP Code:
/* Establece los frag a un jugador. */ native set_user_frags(index, frags);
Ejemplo: public plugin_init() { register_plugin("Test Set Frags", "Beta", "GlaDiuS") register_clcmd("say /frags", "Funcion") // Hookeamos el comando que usare para dar frags }
public Funcion(index) set_user_frags(index, get_user_frags(index) + 5) // le seteamos los frags (frags actuales + 5)
PHP Code:
#include <amxmodx> #include <cstrike>
PHP Code:
/* Returnea a las Muertes que tiene el jugador. */ native cs_get_user_deaths(index);
/* Establece las muertes del jugador. */ native cs_set_user_deaths(index, newdeaths);
Ejemplo: public plugin_init() { register_plugin("Test Deaths", "Beta", "GlaDiuS") register_clcmd("say /deaths", "Funcion") // hookeamos el comand para los Deaths }
public Funcion(index) { if(cs_get_user_deaths(index) < 0) // detectamos si tienes menos de 0 muertes cs_set_user_deaths(index, 0) // le seteamos 0 muertes }
PHP Code:
/* Returnea al index de la entidad( no tiene que ser un jugador necesariamente) cuando un rehen esta siguiendo a un jugador. 0 el rehen no esta siguiendo a nadie. * Nota: Esta native no funciona en CZ, tiene un rehen diferente a CS. */ native cs_get_hostage_foll(index);
/* Establece al rehen para que siga a una entidad especificada en followedindex. No tiene que ser un player necesariamente. Si el followedindex esta en 0 para de seguir a la entidad * Nota: Esta native no funciona en CZ, tiene un rehen diferente a CS. */ native cs_set_hostage_foll(index, followedindex = 0);
/* Obtener una unica ID para el rehen. */ native cs_get_hostage_id(index);
/* Obtiene el número de rehenes que un usuario ha matado. */ native cs_get_user_hostagekills(index);
/* Establece el número de rehenes que un usuario ha matado. */ native cs_set_user_hostagekills(index, value);
/* Obtiene el tiempo que el ultimo rehen fue usado */ native Float:cs_get_hostage_lastuse(index);
/* establece el tiempo que el ultimo rehen fue usado */ native cs_set_hostage_lastuse(index, Float:value);
/* Obtiene el tiempo que el rehen siguiente se puede utilizar */ native Float:cs_get_hostage_nextuse(index);
/* Establece el tiempo que el rehen siguiente se puede utilizar */ native cs_set_hostage_nextuse(index, Float:value);
Ejemplo: #include <engine> // engine module
public plugin_init() { register_plugin("Test Hostages", "Beta", "GlaDiuS") register_clcmd("say /hostage", "Funcion") // hookeamos el comand para los Rehenes. }
public Funcion(index) { new entity = -1 // variable para detectar la entidad while((entity = find_ent_by_class(entity, "hostage_entity")) > 0) // obetenemos la entidad del rehen if(cs_get_hostage_foll(entity)) // detectamos si los rehenes lo siguen { if(get_user_health(index) < 20) // native de amxmodx :) { cs_set_hostage_foll(entity) // quitamos el seguimiento al jugador y el hostage queda parado. if(cs_get_hostage_lastuse(entity) > 10.0) // detectamos si el tiempo que uso al ultimo rehen es mayor a 10 { new hostageluse = cs_set_hostage_lastuse(entity, cs_get_hostage_lastuse(entity) - 5) // seteamos el tiempo del ultimo rehen que uso client_print(index, print_chat, "El ultimo Hostage se uso hace[%d]", hostageluse) // mandamos un mensaje tipo chat que dice cuando uso al ultmo rehen } else // contrario al if client_print(index, print_chat, "El ultimo Hostage se uso hace[%d]", cs_get_hostage_lastuse(entity)) // mandamos un mensaje tipo chat que dice cuando uso al ultmo rehen } else // contrario al if { if(cs_get_hostage_nextuse(entity) < 1) // detectamos si el tiempo para usar al proximo rehen es menor a 1 cs_set_hostage_nextuse(entity, 5.0) // mandamos un mensaje tipo chat que dice cuando usara al siguiente rehen new hostageid = cs_get_hostage_id(entity) // obtenemos la id del rehen new hostagekills = cs_get_user_hostagekills(index) // obtenemos las veces que un jugador ha matado a un rehen client_print(index, print_chat, "Hostage id[%d] - Hostage matados[%d]", hostageid, hostagekills) // // mandamos un mensaje tipo chat que dice el id del rehen y a cuantos rehenes a matado el jugador. } } }
PHP Code:
/* Obtienes la cantidad de balas que hay en las recargas en el arma especifica del usuario. * puedes mirar en amxconst.inc para ver los tipos de armas: CSW_*. * Las armas en la misma linea, usan los mismos tipos de balas: * awm * scout, ak, g3 * para * famas, m4a1, aug, sg550, galil, sg552 * m3, xm * usp, ump, mac * fiveseven, p90 * deagle * p228 * glock, mp5, tmp, elites * flash * he * smoke */ native cs_get_user_bpammo(index, weapon);
/* Recuperar/remover balas de las recargas de un usuario. */ native cs_set_user_bpammo(index, weapon, amount);
Ejemplo: public plugin_init() { register_plugin("Test BPammo", "Beta", "GlaDiuS") register_clcmd("say /bpammo", "Funcion") // hookeamos el comando para las recargas }
public Funcion(index) { if(cs_get_user_bpammo(index, CSW_USP) == 0) // detectamos si la usp tiene 0 balas cs_set_user_bpammo(index, CSW_USP, 100) // le seteamos 100 balas en las recargas }
PHP Code:
/* Returnea 1 si el usuario tiene defuse. */ native cs_get_user_defuse(index);
/* Si el defuse esta en 1, el usuario tendra un defuse. * Tu puedes especificar el color deel Hud que muestra del defuse. Default es le verde green. * Tu puede especificar un icono. Default es el "defuser". Puedes poner el flash en 1 si quieres ver un flash rojo en el icono. */ native cs_set_user_defuse(index, defusekit = 1, r = 0, g = 160, b = 0, icon[] = "defuser", flash = 0);
Ejemplo: public plugin_init() { register_plugin("Test Defuse", "Beta", "GlaDiuS") register_clcmd("say /defuse", "Funcion") // hookeamos el comando para el defuse }
public Funcion(index) { if(!cs_get_user_defuse(index)) // detectamos si NO tiene defuse cs_set_user_defuse(index, 1, 255, 255, 255) // le seteamos defuse, de color blanco }
PHP Code:
/* El usuario esta en la zona de compra? Returnea 1 si es verdad, 0 si es falso. */ native cs_get_user_buyzone(index);
Ejemplo: public plugin_init() { register_plugin("Test Buyzone", "Beta", "GlaDiuS") register_clcmd("say /buyzone", "Funcion") // hookeamos el comando para el buyzone }
public Funcion(index) { if(cs_get_user_buyzone(index)) // detectamos si esta en la zona de compra client_print(index, print_chat, "estas en la zona de compra") // mensaje tipo chat que diga que estamos en zona de compra else // contrario al if client_print(index, print_chat, "NO estas en la zona de compra") // mensaje tipo chat que diga que NO estamos en zona de compra }
PHP Code:
/* Returnea 1 si el usuario tiene un arma primaria o un escudo, de lo contrario 0. */ native cs_get_user_hasprim(index);
Ejemplo: public plugin_init() { register_plugin("Test Has Primary", "Beta", "GlaDiuS") register_clcmd("say /primary", "Funcion") // hookeamos el comando para el has primary }
public Funcion(index) { if(!cs_get_user_hasprim(index)) // detectamos si el usuario no tiene arma primaria client_print(index, print_chat, "No tienes arma primaria") // mensaje tipo chat diciendo que no tiene arma priamria }
PHP Code:
/* obtienes el model del usuario. */ native cs_get_user_model(index, model[], len);
/* estableces un model al usuario. */ native cs_set_user_model(index, const model[]);
/* Reseteas al model por defecto. */ native cs_reset_user_model(index);
Ejemplo: public plugin_init() { register_plugin("Test Models", "Beta", "GlaDiuS") register_clcmd("say /sas", "Funcion") // hookeamos el comando para el model register_clcmd("say /reset", "Funcion2") // hookeamos el comando para resetear los model }
public Funcion(index) { cs_set_user_model(index, "sas") // establecemos el model sas new model[32] // variable para el model if(cs_get_user_model(index, model, charsmax(model))) // detectamos el model del usuario if(equali(model,"sas")) // con este detectaremos si el player esta usando el model sas client_print(index, print_chat, "tienes el model sas") // mensaje tipo chat }
public Funcion2(index) cs_reset_user_model(index)
PHP Code:
/* returnea la plata del jugador. */ native cs_get_user_money(index);
/* le das/quitas dinero a un jugador. Si el Flash es 1, Podras ver la money que tenias y la que se te fue dada con el flash en verde o rojo. */ native cs_set_user_money(index, money, flash = 1);
Ejemplo: public plugin_init() { register_plugin("Test Money", "Beta", "GlaDiuS") register_clcmd("say /money", "Funcion") // hookeamos el comando para el money }
public Funcion(index) { if(cs_get_user_money(index) <= 1000) // detectamos si tiene menos o igual a $1000 { cs_set_user_money(index, 15000, 1) // le establecemos $15000 client_print(index, print_chat, "dinero actual %d", cs_get_user_money(index)) // mensaje tipo chat } }
PHP Code:
/* Obtienes si el usuario tiene NVG */ native cs_get_user_nvg(index);
/* Estableces NVG en 1 para darle vision nocturna a un jugador. Establece este en 0 para remover la NVG. */ native cs_set_user_nvg(index, nvgoggles = 1);
Ejemplo: public plugin_init() { register_plugin("Test Nightvision", "Beta", "GlaDiuS") register_clcmd("say /nvg", "Funcion") // hookeamos el comando para la Nightvision }
public Funcion(index) { if(!cs_get_user_nvg(index)) // detectamos si NO tiene Nvg cs_set_user_nvg(index, 1) // le damos NVG }
PHP Code:
/* Returnea 1 si el usuario "Habilidad" para plantar la bomba, de lo contrario 0. Normalmente este podria solo ser verdad para los terroristas que llevan una bomba(C4). */ native cs_get_user_plant(index);
/* Si plant esta en 1, un usuario podra plantar la bomba sin estar en la zona de bomba, solo si tiene 1. * Tu podrias usar este para dar una weapon_c4(C4) a un jugador, o el no podra plantar esta. * Sin botar este y recoger de nuevo ( solo posible para los terroristas). * Si showbombicon esta en 1, el icono de la C4 se mostrara enverde el HUD del usuario (si plant esta activado). */ native cs_set_user_plant(index, plant = 1, showbombicon = 1);
Ejemplo: #include <engine> // module
public plugin_init() { register_plugin("Test Plant", "Beta", "GlaDiuS") register_clcmd("say c4bomb", "Funcion") // Hookeamos el comando para la C4 }
public Funcion(index) { new bombent = find_ent_by_class(0, "weapon_c4"); // detectamos la entidad de la bomba new entity = entity_get_edict(bombent, EV_ENT_owner); // variable el id del usuario que tiene la bomba if (cs_get_user_plant(entity)) // detectamos el usuario que tiene la bomba client_print(index, print_chat, "No puedes robar la bomba ya que se esta plantando"); // mensaje tipo chat }
PHP Code:
/* Establece el equipo del jugador, sin matarlo. * Si el model es diferente a CS_DONTCHANGE, se establecera como model del jugador. */ enum CsInternalModel { CS_DONTCHANGE = 0, CS_CT_URBAN = 1, CS_T_TERROR = 2, CS_T_LEET = 3, CS_T_ARCTIC = 4, CS_CT_GSG9 = 5, CS_CT_GIGN = 6, CS_CT_SAS = 7, CS_T_GUERILLA = 8, CS_CT_VIP = 9, CZ_T_MILITIA = 10, CZ_CT_SPETSNAZ = 11 }; native cs_set_user_team(index, {CsTeams,_}:team, {CsInternalModel,_}:model = CS_DONTCHANGE);
/* Obtiene el equipo directamente del jugador. * 1 = Terrorista * 2 = Anti-Terrorista * 3 = Epectador */ enum CsTeams { CS_TEAM_UNASSIGNED = 0, CS_TEAM_T = 1, CS_TEAM_CT = 2, CS_TEAM_SPECTATOR = 3 }; native CsTeams:cs_get_user_team(index, &{CsInternalModel,_}:model = CS_DONTCHANGE);
Ejemplo: public plugin_init() { register_plugin("Test Team", "Beta", "GlaDiuS") register_clcmd("say /team", "Funcion") // Hookeamos el comando para el team }
public Funcion(index) { if (cs_get_user_team(index) == CS_TEAM_T) // detectamos si el equipo del usuario es el terrorista cs_set_user_team(index, CS_TEAM_CT) // lo cambiamos al team CT else // contrario al if cs_set_user_team(index, CS_TEAM_T) // lo cambiamos al team TT }
PHP Code:
/* el usuario es un VIP? Returnea 1 si es verdad, de lo contrario 0 si es falso. */ native cs_get_user_vip(index);
/* si es vip = 1, el usuario es establecido como Vip. * Si el model = 1, entonces al usuario se le cambiara el model al Vip model o un model aleatorio de CT si vip es = 0. * Si el scoreboard = 1, entonces la tabla de puntaje del usuario sera modificado y mostrara al usuario como VIP. * Este no puede ser usado en usuarios que no sean cT.*/ native cs_set_user_vip(index, vip = 1, model = 1, scoreboard = 1);
Ejemplo: public plugin_init() { register_plugin("Test VIP", "Beta", "GlaDiuS") register_clcmd("say /vip", "Funcion") // Hookeamos el comando para el team }
public Funcion(index) { if (!cs_get_user_vip(index)) cs_set_user_vip(index, 1, 1, 1) // lo cambiamos a un Vip else // contrario al if cs_set_user_vip(index) // lo cambiamos a un ct normal }
PHP Code:
/* Returnea 1 si el usuario especificado tiene TKed(mata a un compañero). */ native cs_get_user_tked(index);
/* Returnea 1 si el usuario especificado tiene TKed. * tk = 1: jugador tiene TKed * tk = 0: jugador no tiene TKed * Establece una resta de sus frags.Establece subtract negativo para que que sus frags sean cambiados. */ native cs_set_user_tked(index, tk = 1, subtract = 1);
Ejemplo: public plugin_init() { register_plugin("Test Team Killed", "Beta", "GlaDiuS") register_event ( "DeathMsg" , "Funcion" , "a" ); // evento de cuando matan a alguien, para el Team Killed }
public Funcion() { new index = read_data (1) // detectamos el atacante if (cs_get_user_tked(index)) // detectamos si mato a un compañero cs_set_user_tked(index, 1, 5) // le restamos 5 frag por matar a un compañero }
PHP Code:
/* Returnea diferente valor dependiendo si el usuario esta manejando un vehiculo - y en caso de que sea verdad a que velocidad. * 0: no esta manejando * 1: manejando, pero aun de pie(sin andar) * 2-4: manejando, diferente velocidad positiva * 5: manejando, velocidad negativa (reversa) */ native cs_get_user_driving(index);
Ejemplo: public plugin_init() { register_plugin("Test Driving", "Beta", "GlaDiuS") register_clcmd("say /driving", "Funcion") // hookeamos el comando para el driving }
public Funcion(index) { if (cs_get_user_driving(index) == 1) // detectamos si esta manejando client_print(index, print_chat, "Estas en el auto pero aun no avanzas") // mensaje tipo chat }
PHP Code:
/* Returnea 1 si el usuario tiene un escudo, de lo contrario 0. */ native cs_get_user_shield(index);
Ejemplo: public plugin_init() { register_plugin("Test Shield", "Beta", "GlaDiuS") register_clcmd("say /shield", "Funcion") // hookeamos el comando para el shield }
public Funcion(index) { if (cs_get_user_shield(index)) // detectamos si tiene escudo client_print(index, print_chat, "tienes escudo") // mensaje tipo chat }
PHP Code:
/* Returnea 1 si el usuario esta usando un arma que no se pueda recoger, de lo contrario 0. */ native cs_get_user_stationary(index);
Ejemplo: public plugin_init() { register_plugin("Test Stationary", "Beta", "GlaDiuS") register_clcmd("say /stationary", "Funcion") // hookeamos el comando para el stationary }
public Funcion(index) { if(cs_get_user_stationary(index)) // detectamos si usa un arma que no se puede tomar(fija) client_print(index, print_chat, "estas usando la ametralladora del mapa") // mensaje tipo chat }
PHP Code:
/* Returnea el armor del jugador y establece una referencia al tipo de armor en el segundo parametro. */ enum CsArmorType { CS_ARMOR_NONE = 0, // no armor CS_ARMOR_KEVLAR = 1, // armor CS_ARMOR_VESTHELM = 2 // armor y helmet }; native cs_get_user_armor(index, &CsArmorType:armortype);
/* Usa este en vez del set_user_armor de fun * Se enviara el mensaje adecuado para cambiar el Hud del usuario para saber que tipo de armor es, si es kevlar o helmet. */ native cs_set_user_armor(index, armorvalue, CsArmorType:armortype);
Ejemplo: public plugin_init() { register_plugin("Test Armor", "Beta", "GlaDiuS") register_clcmd("say /armor", "Funcion") // hookeamos el comando para el armor }
public Funcion(index) { new CsArmorType:armortype // variable para las partes del armor (kevlar o helmet) if(cs_get_user_armor(index, armortype) == 0) // detectamos si No tiene armor cs_set_user_armor(index, 100, CS_ARMOR_VESTHELM) // le damos 100 de armor + helmet }
PHP Code:
/* Returnea 1 si el arma especificada del usuario esta en burst mode. */ native cs_get_weapon_burst(index);
/* si burstmode = 1, el arma sera cambiada a burst mode, 0 y el arma volvera a la normalidad (semiautomatica/automatica). * solo GLOCK y FAMAS puede tener/quitar burst mode. */ native cs_set_weapon_burst(index, burstmode = 1);
/* Returnea 1 si el arma tiene silenciador, de lo contrario 0. */ native cs_get_weapon_silen(index);
/* si silence = 1, el arma tendra silenciador, 0 y el silenciador sera removido. Solo USP y M4A1 pueden tener silenciador. */ native cs_set_weapon_silen(index, silence = 1, draw_animation = 1);
/* Returnea a la cantidad de balas que tiene ese cargador. */ native cs_get_weapon_ammo(index);
/* establece la cantidad de balas que tiene ese cargador. */ native cs_set_weapon_ammo(index, newammo);
/* obtiene el tipo de arma. Correspondiente a CSW_* en amxconst.inc */ native cs_get_weapon_id(index);
Ejemplo: #include <engine>
public plugin_init() { register_plugin("Test Weapon", "Beta", "GlaDiuS") register_clcmd("say /wpn", "Funcion") // hookeamos el comando para weapon :) }
public Funcion(index) { static WpnName[32] // variable para la entidad del arma get_weaponname(get_user_weapon(index), WpnName, sizeof WpnName - 1) // pasamos de nombre csw_ a weapon_ new wpnindex = find_ent_by_owner(-1, WpnName, index) // obtenemos la index del arma if(get_user_weapon(index) == CSW_GLOCK18 && !cs_get_weapon_burst(wpnindex)) // si tiene la glock y NO tiene burst mode cs_set_weapon_burst(wpnindex, 1) // el colocamos burst mode if(get_user_weapon(index) == CSW_USP && !cs_get_weapon_silen(wpnindex)) // si tiene usp y NO tiene silenciador cs_set_weapon_silen(wpnindex, 1, 1) // le colocamos silenciador if(cs_get_weapon_id(wpnindex) == CSW_USP || cs_get_weapon_id(wpnindex) == CSW_GLOCK18 && cs_get_weapon_ammo(wpnindex) == 0) // si el ID de las armas es el de la Usp o Glock y no tiene balas cs_set_weapon_ammo(wpnindex, 10) // le ponenos 10 balas }
PHP Code:
/* Returnea 1 si el no knives mode esta activado, de lo contrario 0. */ native cs_get_no_knives();
/* activa el no knives mode establiendo este en 1. Desactivar con 0. * No knives mode significa que el jugador no recibe una cuchilla al espawnear * todavia puede tener cuchilla utilizando give_item. */ native cs_set_no_knives(noknives = 0);
Ejemplo: public plugin_init() { register_plugin("Test No Knives", "Beta", "GlaDiuS") register_clcmd("say /nokv", "Funcion") // hookeamos el comando para el no knives }
public Funcion() { if(!cs_get_no_knives()) // detectamos si NO tiene "no knives" cs_set_no_knives(1) // le seteamos no knives else // contrario al if cs_set_no_knives(0) // le removemos el no knives }
PHP Code:
/* espawnea un player */ native cs_user_spawn(player);
Ejemplo: public plugin_init() { register_plugin("Test No Knives", "Beta", "GlaDiuS") register_event ( "DeathMsg" , "Funcion" , "a" ) // evento cuando uno mata a otro }
public Funcion() { new index = read_data(2) // registramos la victima set_task(3.0, "Funcion2", index) // llamamos a otra funcion pero con un retraso de 3 segundos. }
public Funcion2(index) cs_user_spawn(index) // el jugador espawnea
PHP Code:
/* obtiene el tipo de arma (CSW_*) es una armoury_entity. */ native cs_get_armoury_type(index);
/* Establece una armoury_entity de un tipo especificado. Tienes que establecer el model apropiado. * el segundo argumento, type, podria ser una CSW_* constante. No todas las armas de CS son soportadas. * Armas/items soportadas: CSW_MP5NAVY, CSW_TMP, CSW_P90, CSW_MAC10, CSW_AK47, CSW_SG552, CSW_M4A1, CSW_AUG, CSW_SCOUT * CSW_G3SG1, CSW_AWP, CSW_M3, CSW_XM1014, CSW_M249, CSW_FLASHBANG, CSW_HEGRENADE, CSW_VEST, CSW_VESTHELM, CSW_SMOKEGRENADE */ native cs_set_armoury_type(index, type);
Ejemplo: #include <engine>
public plugin_init() { register_plugin("Test Armoury Entity", "Beta", "GlaDiuS") register_touch( "armoury_entity", "player", "Funcion" ) // al tocar la entidad del suelo }
public Funcion(Entity, index) { if(cs_get_armoury_type(Entity) == CSW_VESTHELM) // detectamos si la entidad es helmet cs_set_armoury_type(index, CSW_VEST) // lo seteamos en kevlar if(cs_get_armoury_type(Entity) == CSW_VEST) // detectamos si la entidad es kevlar cs_set_user_armor(index, 100, CS_ARMOR_KEVLAR) // le damos 100 de armor }
PHP Code:
#define CS_MAPZONE_BUY (1<<0) #define CS_MAPZONE_BOMBTARGET (1<<1) #define CS_MAPZONE_HOSTAGE_RESCUE (1<<2) #define CS_MAPZONE_ESCAPE (1<<3) #define CS_MAPZONE_VIP_SAFETY (1<<4)
/* Returnea en la zona especifica donde este el usuario. * NOTA: si el usuario no puede plantar(cs_get_user_plant(index) esta en 0) entonces cs_get_user_mapzones(index) & CS_MAPZONE_BOMBTARGET returneara en 0 tambien */ native cs_get_user_mapzones(index);
Ejemplo: public plugin_init() { register_plugin("Test Mapzone", "Beta", "GlaDiuS") register_clcmd("say /map", "Funcion") // hookeamos el comando para el mapzone }
public Funcion(index) { if(cs_get_user_mapzones(index) == CS_MAPZONE_BOMBTARGET) // detectamos si esta en la zona de bomba client_print(index, print_chat, "estas en la zona de bomba") // mensaje tipo chat }
PHP Code:
/* enum de los tipos de zoom. usados para get/set_user_zoom() natives. */ enum { CS_RESET_ZOOM = 0, // Resetea cualquier zoom(cuando el usuario tiene este, no tiene efecto) CS_SET_NO_ZOOM, // desactiva cualquier zoom CS_SET_FIRST_ZOOM, // primer zoom (estilo awp) CS_SET_SECOND_ZOOM, // segundo zoom (estilo awp) CS_SET_AUGSG552_ZOOM, // establece aug/sg552 zoom }; /* Establece zoom a un player, cualquier tipo de zoom funciona con todas las armas, entonces tu puedes ponerle zoom a las pistolas :D * El segundo parameto tiene que ver con los tipos de zoom en el enum. Mode solo puede ser 1 o 0. * si el mode=0 (mode bloqueado), el usuario estara forzado a usar el tipo de zoom establecido por la native, y no podra cambiarlo (incluso al cambiar de arma) * hasta que la native resetee el zoom con CS_RESET_ZOOM. * si mode=1 el usuario podra regresar a la vision normal por el cambio de arma. */ native cs_set_user_zoom(index, type, mode);
/* returnea el zoom que tiene un jugador. valor correspondiente al enum, este returneara 0 si hay algun error. */ native cs_get_user_zoom(index);
Ejemplo: public plugin_init() { register_plugin("Test Zoom", "Beta", "GlaDiuS") register_clcmd("say /zoom", "Funcion") // hookeamos el comando para el zoom }
public Funcion(index) { if(cs_get_user_zoom(index) == CS_SET_AUGSG552_ZOOM) // detectamos si esta usando el aug/sg552 zoom cs_set_user_zoom(index, CS_SET_FIRST_ZOOM, 1) // le seteamos el primer zoom de la awp }
PHP Code:
/* Returnea el valor del submodel del player. * si este es 1, entonces el usuario tiene una mochila o defuse en su modelo(dependiendo del equipo) */ native cs_get_user_submodel(index);
/* establece el valor del submodel del player. * si este es 1, entonces el usuario tiene una mochila o defuse en su modelo(dependiendo del equipo) * 0 lo remueve. */ native cs_set_user_submodel(index, value);
Ejemplo: public plugin_init() { register_plugin("Test SubModel", "Beta", "GlaDiuS") register_clcmd("say /smodel", "Funcion") // hookeamos el comando para el submodel }
public Funcion(index) { if(!cs_get_user_submodel(index) // detectamos si NO tiene el submodel cs_set_user_submodel(index 1) // le otorgamos el submodel }
PHP Code:
/* Obtiene/establece el tiempo del ultimo movimiento del jugador. Este es el tiempo usado para el afk kicker * chequea para ver quien ha estado afk mucho tiempo. */ native Float:cs_get_user_lastactivity(index);
native cs_set_user_lastactivity(index, Float:value);
Ejemplo: public plugin_init() { register_plugin("Test Last Activity", "Beta", "GlaDiuS") register_clcmd("say /lactivity", "Funcion") // hookeamos el comando para la Last Activity }
public Funcion(index) { if(cs_get_user_lastactivity(index) > 30.0) { client_print(index, print_chat, "Llevas mucho tiempo AFK") cs_set_user_lastactivity(index, 0.0) } }
PHP Code:
/* Obtiene/establece el tiempo en que la C4 explota. */ native Float:cs_get_c4_explode_time(index);
native cs_set_c4_explode_time(index, Float:value);
/* Obtiene/establece si la C4 esta siendo defusada */ native bool:cs_get_c4_defusing(c4index);
native cs_set_c4_defusing(c4index, bool:defusing); Ejemplo: #include <engine>
public plugin_init() { register_plugin("Test Explode/Defuse C4", "Beta", "GlaDiuS") register_clcmd("say /c4bomb2", "Funcion") // hookeamos el comando para la C4 }
public Funcion(index) { new bombent = find_ent_by_class(0, "weapon_c4"); // entidad de la C4 if(cs_get_c4_explode_time(bombent) < 5) // detectamos si quedan menos de 5 para explotar client_print(index, print_chat, "Explotara pronto, alejate") // mensaje tipo chat if(cs_get_c4_defusing(bombent)) // detectamos si se esta defuseando. client_print(index, print_chat, "Defusando...") // mensaje tipo chat }
PHP Code:
/** * es llamada cuando en el CS internamente lanza un comando a un player. esto se hace para * algunas funciones, sobre todo la funcionalidad rebuy/autobuy. esto tambien es usado para * pasar comandos internamente a los Bots. * * @param id index del usuario. * @param cmd Command string. * @return PLUGIN_HANDLED para bloquear, PLUGIN_CONTINUE para una operacion normal. */ forward CS_InternalCommand(id, const cmd[]);
ejemplo: public plugin_init() { register_plugin("Test Forward Internal Command", "Beta", "GlaDiuS") register_clcmd("say /internalc", "Funcion") // hookeamos el comando para Internal Command }
public Funcion(index) { CS_InternalCommand(index, "rebuy") }
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).
Last edited by gladius; 12-28-2012 at 19:14.
|
|