Jump to content

jollero

Registrado sin publicaciones
  • Contenido

    1
  • Ingreso

  • Última visita

Todo lo publicado por jollero

  1. Hola a todos,Este es mi primer tutorial :c y quise hacerlo con algo referido al "mapping" aunque no tanto pero tal ves les sirva. En este tutorial les explicare como Crear y Guardar (Desde un archivo.ini) "Cajas" o el model que quieran,tambien de Como tocar y remover el mismo. En las siguiente variable(const) new const Model[] = "models/caja.mdl" Ustedes la modificaran a su gusto para indicar la ubicacion de su caja/model #Creditos: AguuS.- Pondre todo el "Code" entiquedas PHP: #include <amxmodx> #include <engine> new const PluginName[] = "[TUT] Crear y Guardar Cajas" //Nombre del Plugin new const PluginVersion[] = "1.0" //Version del Plugin new const PluginAuthor[] = "jollero" //Author del Plug new const Entidad[] = "Caja" //Creamos un Const,el cual registra la entidad "Caja" para detectarla new const Model[] = "models/caja.mdl" //Creamos un const,que determina la ubicacion de nuestra "Caja" new DirectorioFile[128] // Variable de nuestro Directorio public plugin_init() { register_plugin(PluginName,PluginVersion,PluginAuthor) //registramos el Plugin :V register_touch(Entidad,"player","TocarCaja") //Registramos el evento "Touch" que determina si el player Toco la "Caja" register_clcmd("say /menucajas","MenuDeCajas") //Registramos el menu para Tirar/Guardar/Borrar cajas } public plugin_precache() precache_model(Model) // precacheamos nuestra Caja public plugin_cfg() { new Directorio[64], MapaNombre[32]//Creamos variables :Directorio y nombre del mapa get_localinfo("amxx_configsdir", Directorio, charsmax(Directorio))//Obtenemos la obicacion correcta del directorio get_mapname(MapaNombre, charsmax(MapaNombre))//Obtenemos el nombre del Mapa strtolower(MapaNombre) // Nice formatex(DirectorioFile, charsmax(DirectorioFile), "%s/Cajas/%s.ini", Directorio, MapaNombre)//Le asignamos el directorio correcto if(!file_exists(DirectorioFile))//Si el directorio no Existe { server_print("No hay Cajas Guardadas")//Mensaje de que no hay cajas add(Directorio, charsmax(Directorio), "/Cajas")//Creamos el directorio if(!dir_exists(Directorio)) mkdir(Directorio) } else //Si existe .. CajasFile() //Leemos el archivo } CajasFile(){ new szData[64], szX[13], szY[13], szZ[13], Origin[3]//Vars new File = fopen(DirectorioFile, "rt")//Abrimos el Directorio para leer el texto while(!feof(File)) { fgets(File, szData, charsmax(szData))//Obtenemos el Texto del Archivo if(!szData[0] || szData[0] == ';' || szData[0] == ' ' || (szData[0] == '/' && szData[1] == '/'))//Si no hay texto o Es igual a ";" " " "/" "/" continue//continuamos parse(szData, szX, charsmax(szX), szY, charsmax(szY), szZ, charsmax(szZ)) Origin[0] = str_to_num(szX)//Le asignamos a szX la primera obicacion Origin[1] = str_to_num(szY)//Le asignamos a szY la segunda obicacion Origin[2] = str_to_num(szZ)//Le asignamos a szZ la tercera obicacion CrearCaja(Origin)//Creamos la caja con las Ubicaciones de el archivo } fclose(File)//Cerramos el Archivo } public CrearCaja(iOrigin[3]) { new iEnt = create_entity("info_target") // Creamos la caja con un nombre new Float:OriginF[3] //Creamos un float:OriginF IVecFVec(iOrigin, OriginF) //Creo:Igualamos el archivo Float:OriginF con nuestra ubicacion iOrigin entity_set_vector(iEnt, EV_VEC_origin, OriginF) //Le asignamos el Origin (Ubicacion guardada en el .ini o donde apuntamos) entity_set_string(iEnt, EV_SZ_classname, Entidad) // Le asignamos el Nombre de nuestra Caja entity_set_model(iEnt, Model) // Le damos el Models de nuestra Caja new Float:mins[3] = {-10.0, -10.0, 0.0} // El tamaño new Float:maxs[3] = {10.0, 10.0, 25.0} // El tamaño entity_set_size(iEnt, mins, maxs) //Le damos el Tamaño a nuestra caja entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER) // La hacemos solida entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_STEP) // Hacemos que no se mueva. drop_to_floor(iEnt) // La tiramos al piso. } public TocarCaja(iEntidad, iTocador) {// if (!is_valid_ent(iEntidad) || !is_valid_ent(iTocador) || !is_user_alive(iTocador)) // Si no es valida la Entidad o no es valido el Que toca la Caja,o no esta vivo el que la toca,retorneamos return PLUGIN_HANDLED // removemos la Caja que "X" Player toco remove_entity(iEntidad) return PLUGIN_HANDLED } public MenuDeCajas(id){ new iMenuCaja = menu_create("Menu Cajas","HandlerCajas") // Creamos nuestro menu de cajas con su respectivo Handler menu_additem(iMenuCaja,"Tirar Caja") //Creamos una Opcion para Tirar cajas menu_additem(iMenuCaja,"Borrar Cajas") // Creamos una Opcion para Borrar todas las Cajas menu_additem(iMenuCaja,"Guardar Cajas") //Creamos una Opcion para Guardar todas las Cajas menu_display(id,iMenuCaja,0) //Mostramos nuestro Menu } public HandlerCajas(id,menu,item){//Handler de Nuestro menu if(item == MENU_EXIT){ // si la Opcion seleccionada es Salir menu_destroy(menu) //Destruimos el Menu return PLUGIN_HANDLED //returneamos } switch(item){ case 0:{ new iOrigin[3] //Creamos el Origin get_user_origin(id,iOrigin,2) //Tomamos la Ubicacion de Apuntamos "2" CrearCaja(iOrigin)//Creamos la Cajas } case 1:{ new iEntidad = -1 //Creamos la Entidad while((iEntidad = find_ent_by_class(iEntidad,Entidad))) //Detectamos si la Entidad es la Caja remove_entity(iEntidad)// removemos las Cajas } case 2:GuardarCajas(id)//Guardamos nuestras Cajas } return PLUGIN_HANDLED } public GuardarCajas(id){ new szData[64], ent = -1,Float:Origin[3] //Creamos nuestras Variables :c if(file_exists(DirectorioFile)) //Si el archivo existe delete_file(DirectorioFile)//lo borramos new File = fopen(DirectorioFile, "at")//abrimos el archivo write_file(DirectorioFile, "//Posicion en el Mapa de las Cajas")//Mensaje al Principio del archivo que indica las Posiciones de las Cajas while((ent = find_ent_by_class(ent,Entidad)))//Detectamos si la Entidad es la Caja { entity_get_vector(ent, EV_VEC_origin, Origin) //Obtenemos los ORigin formatex(szData, charsmax(szData), "%f %f %f^n", Origin[0], Origin[1], Origin[2]) //Le asignamos a szData el valor de los Origins fputs(File, szData)// y Los metemos al .ini Listos para volverlos a cargar en el Siguiente la siguiente partida } fclose(File) //Cerramos el Archivo client_print(id, print_chat, "Cajas Guardadas") //Mensaje que dice que las Cajas se guardaron Correctamente } Espero les aya Gustado cualquier Duda o pregunta no duden en comentar Saluds;jollero
×
×
  • Crear nuevo...

Información importante

Al utilizar nuestra web, aceptas nuestras Política de privacidad estás de acuerdo con las condiciones establecidas.