Mensajes: 1,086
Temas: 35
Registro en: Nov 2014
Reputación:
13
03/01/2015, 02:25 AM
(Última modificación: 03/01/2015, 09:50 PM por jollero .)
Sistema De Apodos (Con/Sin ADV_VAULT)
Descripción :
Mediante un menu,Tendremos la Opcion de crearnos nuestro apodo Y De borrar el mismo.El apodo Puede representarnos de la forma que uno lo tome.En el Say Indicara Nuestro Apodo y Nombre + Say.
El Apodo Se Guardara Cuando nos Desconectemos.
Requisitos :
Comandos :
/Apodo (Abre el menu De Apodos)
Comentarios :
Este Plugin Puede Servir Para Cualquier MOD de CounterStrike,Ya que nos podemos representar con el Apodo que Queramos.
Imagenes :
Codigo De Fuente :
Con Guardado (ADV_VAULT):
Código PHP:
#include <amxmodx> #include <adv_vault> #include <ColorChat> new const Plugin [] = "Sistema De Apodos" new const Version [] = "1.0.2" new const Author [] = "jollero" enum { CAMPO_APODO , MAX_CAMPOS } new Campos [ MAX_CAMPOS ], Vault new Apodo [ 33 ][ 33 ] new Nombre [ 33 ][ 32 ] public plugin_init () { register_plugin ( Plugin , Version , Author ) register_clcmd ( "say /Apodo" , "MenuApodo" ) register_clcmd ( "say" , "HookSay" ) register_clcmd ( "CREAR_APODO" , "CrearApodo" ) Vault = adv_vault_open ( "ApodosDB" , false ) Campos [ CAMPO_APODO ] = adv_vault_register_field ( Vault , "Apodo" , DATATYPE_STRING , 32 ) adv_vault_init ( Vault ) } public client_putinserver ( id ) { get_user_name ( id , Nombre [ id ], charsmax ( Nombre [])) Cargar ( id ) } public client_disconnect ( id ) Guardar ( id ) public MenuApodo ( id ){ new Texto [ 200 ] if(! equal ( Apodo [ id ], "" )) formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\wTu Apodo Es\d: \r%s" , Apodo [ id ]) else formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\rNO \wTienes ningun Apodo" ) new menu = menu_create ( Texto , "HandlerApodo" ) menu_additem ( menu , "Crear Apodo" , _ , _ , menu_makecallback ( "Callback" )) menu_additem ( menu , "Sacarme Apodo" , _ , _ , menu_makecallback ( "Callback" )) menu_display ( id , menu ) return PLUGIN_HANDLED } public Callback ( id , menu , item ){ new apodo if( equal ( Apodo [ id ], "" )) apodo = 0 else apodo = 1 switch( item ){ case 0 :if( apodo )return ITEM_DISABLED case 1 :if(! apodo )return ITEM_DISABLED } return ITEM_ENABLED } public HandlerApodo ( id , menu , item ){ switch( item ){ case MENU_EXIT :return PLUGIN_HANDLED case 0 : client_cmd ( id , "messagemode CREAR_APODO" ) case 1 : { Apodo [ id ] = "^0" ColorChat ( id , GREEN , "Te Sacaste Tu Apodo" ) return PLUGIN_HANDLED } } return PLUGIN_HANDLED } public CrearApodo ( id ){ read_args ( Apodo [ id ], charsmax ( Apodo [])) remove_quotes ( Apodo [ id ]); trim ( Apodo [ id ]) if( equal ( Apodo [ id ], "" ) || contain ( Apodo [ id ], "^"") != -1){ client_cmd(id," messagemode CREAR_APODO ") ColorChat(id,GREEN," Apodo Invalido ") return PLUGIN_HANDLED } return PLUGIN_HANDLED } public HookSay(id) { static szSay[192] read_args(szSay, charsmax(szSay)) remove_quotes(szSay) replace_all(szSay, charsmax(szSay), " % ", " ") static szNombre[32];get_user_name(id, szNombre, 32) if(is_user_connected(id)) ColorChat(id,GREEN," [ % s ] ^ x01 % s : ^ x03 % s ",equal(Apodo[id],"") ? " Sin Apodo " : Apodo[id],szNombre,szSay) return PLUGIN_HANDLED_MAIN } public Guardar(id){ adv_vault_set_start(Vault) adv_vault_set_field(Vault, Campos[CAMPO_APODO], Apodo[id]) adv_vault_set_end(Vault, 0, Nombre[id]) } public Cargar(id){ if(!adv_vault_get_prepare(Vault, _, Nombre[id])) return adv_vault_get_field(Vault, Campos[CAMPO_APODO], Apodo[id], charsmax(Apodo[])) }
Sin Guardado:
Código PHP:
#include <amxmodx> #include <ColorChat> new const Plugin [] = "Sistema De Apodos" new const Version [] = "1.0.0" new const Author [] = "jollero" new Apodo [ 33 ][ 33 ] public plugin_init () { register_plugin ( Plugin , Version , Author ) register_clcmd ( "say /Apodo" , "MenuApodo" ) register_clcmd ( "say" , "HookSay" ) register_clcmd ( "CREAR_APODO" , "CrearApodo" ) } public MenuApodo ( id ){ new Texto [ 200 ] if(! equal ( Apodo [ id ], "" )) formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\wTu Apodo Es\d: \r%s" , Apodo [ id ]) else formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\rNO \wTienes ningun Apodo" ) new menu = menu_create ( Texto , "HandlerApodo" ) menu_additem ( menu , "Crear Apodo" , _ , _ , menu_makecallback ( "Callback" )) menu_additem ( menu , "Sacarme Apodo" , _ , _ , menu_makecallback ( "Callback" )) menu_display ( id , menu ) return PLUGIN_HANDLED } public Callback ( id , menu , item ){ new apodo if( equal ( Apodo [ id ], "" )) apodo = 0 else apodo = 1 switch( item ){ case 0 :if( apodo )return ITEM_DISABLED case 1 :if(! apodo )return ITEM_DISABLED } return ITEM_ENABLED } public HandlerApodo ( id , menu , item ){ switch( item ){ case MENU_EXIT :return PLUGIN_HANDLED case 0 : client_cmd ( id , "messagemode CREAR_APODO" ) case 1 : { Apodo [ id ] = "^0" ColorChat ( id , GREEN , "Te Sacaste Tu Apodo" ) return PLUGIN_HANDLED } } return PLUGIN_HANDLED } public CrearApodo ( id ){ read_args ( Apodo [ id ], charsmax ( Apodo [])) remove_quotes ( Apodo [ id ]); trim ( Apodo [ id ]) if( equal ( Apodo [ id ], "" ) || contain ( Apodo [ id ], "^"") != -1){ client_cmd(id," messagemode CREAR_APODO ") ColorChat(id,GREEN," Apodo Invalido ") return PLUGIN_HANDLED } ColorChat(id,GREEN," Tu Apodo Es : ^ x01 % s ",Apodo[id]) return PLUGIN_HANDLED } public HookSay(id) { static szSay[192] read_args(szSay, charsmax(szSay)) remove_quotes(szSay) replace_all(szSay, charsmax(szSay), " % ", " ") static szNombre[32];get_user_name(id, szNombre, 32) if(is_user_connected(id)) ColorChat(id,GREEN," [ % s ] ^ x01 % s : ^ x03 % s ",equal(Apodo[id],"") ? " Sin Apodo " : Apodo[id],szNombre,szSay) return PLUGIN_HANDLED_MAIN }
Descarga :
Archivos adjuntos
colorchat.inc (Tamaño: 2.51 KB / Descargas: 71)
Mensajes: 3,466
Temas: 18
Registro en: Oct 2013
Reputación:
54
Para detectar si un string esta vacio basta con hacer str[0] == '^0' y para limpiarlo es lo mismo pero en vez de comparar, asignas
Mensajes: 600
Temas: 101
Registro en: Jul 2014
Reputación:
1
El apodo sale en say_team? Y cuando escribes "/"?
Mensajes: 860
Temas: 16
Registro en: Oct 2013
Reputación:
8
Código PHP:
public HookSay ( id ) { static szSay [ 192 ] read_args ( szSay , charsmax ( szSay )) remove_quotes ( szSay ) replace_all ( szSay , charsmax ( szSay ), "%" , " " ) static szNombre [ 32 ]; get_user_name ( id , szNombre , 32 ) if( is_user_connected ( id )) ColorChat ( id , GREEN , "[ %s ] ^x01%s: ^x03%s" , equal ( Apodo [ id ], "" ) ? "Sin Apodo" : Apodo [ id ], szNombre , szSay ) return PLUGIN_HANDLED }
------------>
Código PHP:
public HookSay ( id ) { static szSay [ 192 ] read_args ( szSay , charsmax ( szSay )) remove_quotes ( szSay ) replace_all ( szSay , charsmax ( szSay ), "%" , " " ) static szNombre [ 32 ]; get_user_name ( id , szNombre , 32 ) if( is_user_connected ( id )) ColorChat ( id , GREEN , "[ %s ] ^x01%s: ^x03%s" , equal ( Apodo [ id ], "" ) ? "Sin Apodo" : Apodo [ id ], szNombre , szSay ) return PLUGIN_HANDLED_MAIN // <----- }
Mensajes: 6,664
Temas: 81
Registro en: Jan 2014
Reputación:
68
creo que el menu seria un poquito mejor asi:
Código PHP:
public MenuApodo ( id ){ new Texto [ 200 ] if(! equal ( Apodo [ id ], "" )) formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\wTu Apodo Es\d: \r%s" , Apodo [ id ]) else formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\rNO \wTienes ningun Apodo" ) new menu = menu_create ( Texto , "HandlerApodo" ) menu_additem ( menu , ( equal ( Apodo [ id ], "" ))? "Crear Apodo" : "\dCrear Apodo" , "1" ); menu_additem ( menu , ( equal ( Apodo [ id ], "" ))? "\dSacarme Apodo" : "Sacarme Apodo" , "2" ); menu_display ( id , menu , 0 ) return PLUGIN_HANDLED } public HandlerApodo ( id , menu , item ){ switch( item ) { case 0 : { if( equal ( Apodo [ id ], "" )) client_cmd ( id , "messagemode CREAR_APODO" ) else ColorChat ( id , GREEN , "Ya tienes un Apodo" ); } case 1 : { if( equal ( Apodo [ id ], "" )) ColorChat ( id , GREEN , "No tienes un Apodo" ); else { Apodo [ id ] = "^0" ColorChat ( id , GREEN , "Te Sacaste Tu Apodo" ) return PLUGIN_HANDLED } } case MENU_EXIT : { menu_destroy ( menu ); return PLUGIN_HANDLED ; } } menu_destroy ( menu ); return PLUGIN_HANDLED ; }
Creo
► NO DOY AYUDA VIA MENSAJE PRIVADO ◄
* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Mensajes: 1,086
Temas: 35
Registro en: Nov 2014
Reputación:
13
Bueno, Cuando este en la pc lo Corrijo.
Y con respecto al Menu, prefeririá que le bloquee la condición Antes q le envie un mensaje, almenos ami pero bueno si quieren.
Mensajes: 4,247
Temas: 94
Registro en: Mar 2014
Reputación:
58
Seria bueno que tubiera guardado ._.
para que así no estar escribiendo el apodo cuando entramos sí no que se ponga automaticamente...
Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM) meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando. (08/08/2019, 05:32 PM) meTaLiCroSS escribió: grax x el dato cr4ck
Mis aportes
PLUGINS MAPAS
Menú LANG
[SF] Sistema de Frags
Say System (Admin Prefix)
Mensajes: 6,664
Temas: 81
Registro en: Jan 2014
Reputación:
68
yo tengo un sistema parecido en mi zp pero solo para admins
► NO DOY AYUDA VIA MENSAJE PRIVADO ◄
* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Mensajes: 1,086
Temas: 35
Registro en: Nov 2014
Reputación:
13
03/01/2015, 08:55 PM
(Última modificación: 03/01/2015, 09:49 PM por jollero .)
Listo corregí los errores y le Agregue un Guardado por ADV_VAULT System
Cualquier Error Me Avisan
Mensajes: 642
Temas: 25
Registro en: Feb 2014
Reputación:
17
03/01/2015, 11:52 PM
(Última modificación: 03/01/2015, 11:55 PM por Kane .)
Código PHP:
#include <amxmodx> #include <ColorChat> new const Plugin [] = "Sistema De Apodos" new const Version [] = "v1.0.1" new const Author [] = "jollero" new Apodo [ 33 ][ 33 ], g_callback public plugin_init () { register_plugin ( Plugin , Version , Author ) register_clcmd ( "say" , "HookSay" ) register_clcmd ( "CREAR_APODO" , "CrearApodo" ) g_callback = menu_makecallback ( "Callback" ) } public MenuApodo ( id ) { new Texto [ 200 ] if ( Apodo [ id ][ 0 ]) formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\wTu Apodo Es\d: \r%s" , Apodo [ id ]) else formatex ( Texto , charsmax ( Texto ), "\yMenu De Apodos^n\rNO \wTienes ningun Apodo" ) new menu = menu_create ( Texto , "HandlerApodo" ) menu_additem ( menu , "Crear Apodo" , . callback = g_callback ) menu_additem ( menu , "Sacarme Apodo" , . callback = g_callback ) //aca agregaria la opcion de cambiarme el apodo.. (Prox. version xd) menu_display ( id , menu ) return PLUGIN_HANDLED ; } public Callback ( id , menu , item ) { new apodo = ( Apodo [ id ][ 0 ]) ? 0 : 1 ; if (! item && apodo || item && ! apodo ) return ITEM_DISABLED ; return ITEM_ENABLED ; } public HandlerApodo ( id , menu , item ) { switch ( item ) { case MENU_EXIT : return PLUGIN_HANDLED ; case 0 : client_cmd ( id , "messagemode CREAR_APODO" ) case 1 : { // Apodo[id] = "^0" <-- MAL! // seria asi: // Apodo[id][0] = '^0' o tambien -> Apodo [ id ][ 0 ] = EOS ColorChat ( id , GREEN , "Te Sacaste Tu Apodo" ) return PLUGIN_HANDLED ; } } return PLUGIN_HANDLED ; } public CrearApodo ( id ) { read_args ( Apodo [ id ], charsmax ( Apodo [])) remove_quotes ( Apodo [ id ]); trim ( Apodo [ id ]) if (! Apodo [ id ][ 0 ] || contain ( Apodo [ id ], "^"") != -1 || equal(Apodo[id], " Sin Apodo ")) { client_cmd(id, " messagemode CREAR_APODO ") ColorChat(id, GREEN, " Apodo Invalido ") return PLUGIN_HANDLED; } ColorChat(id, GREEN, " Tu Apodo Es : ^ x01 % s ", Apodo[id]) return PLUGIN_HANDLED; } public HookSay(id) { static szSay[192]; szSay[0] = EOS; read_args(szSay, charsmax(szSay)) remove_quotes(szSay) replace_all(szSay, charsmax(szSay), " % ", " ") static szNombre[32]; get_user_name(id, szNombre, 32) // Si escribio algo y esta conectado el que lo escribio... if (szSay[0] && is_user_connected(id)) { if (equal(" / Apodo ", szSay)) MenuApodo(id) ColorChat(id,GREEN," [ % s ] ^ x01 % s : ^ x03 % s ", (!Apodo[id][0]) ? " Sin Apodo " : Apodo[id], szNombre, szSay) } return PLUGIN_HANDLED_MAIN; }
Yo lo dejaría así. Y como puse en el plugn, el la prox version estaria bueno la opcion de cambiar el apodo.
(19/06/2014, 11:08 PM) 01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)
(19/06/2014, 11:08 PM) [R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Mensajes: 1,867
Temas: 57
Registro en: Oct 2014
Reputación:
16
lo pongo primero en la lista con return PLUGIN_HANDLED; en el final del say y anda bien pero no me andan los otros plugins de say
lo pongo primero en la lista con return PLUGIN_HANDLED_MAIN; en el final del say y me sale doble el mensaje
lo pongo ultimo o a mitad de la lista con return PLUGIN_HANDLED; o return PLUGIN_HANDLED_MAIN; y me sale doble mensaje
Mensajes: 860
Temas: 16
Registro en: Oct 2013
Reputación:
8
Con main es el correcto y si tenes doble mensajes es porque tenes otro plugin hookeando el say
Mensajes: 1,867
Temas: 57
Registro en: Oct 2014
Reputación:
16
(04/01/2015, 07:08 PM) LeiToH escribió: Con main es el correcto y si tenes doble mensajes es porque tenes otro plugin hookeando el say
si, el antispam pero no escribe mensajes el antispam, por eso es raro que siendo primer plugin y con HANDLED_MAIN ; no ande
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
No le veo mucha diferencia con
este , que además está mejor codeado.