11/01/2019, 11:56 AM
(Última modificación: 11/01/2019, 12:05 PM por Drakunovu. Edited 1 time in total.)
Hola antes que nada les dejo el thread original: https://amxmodx-es.com/Thread-ZE-Gananci...-de-Escape
Esto es como una 'remasterización' o como una V2 del plugin.
Incluye:
Ganancia por Party
Ganancia x2 si eres admin
Ganancia en hora vicio
Mensajes de colores
Se puede colocar múltiples veces en distintas zonas Ejemplo: Una ruta de techo, una rota de un puente, que todas lleven a lo mismo pero ya entienden
Requisitos:
El sistema de party de [R]ak: https://amxmodx-es.com/Thread-Party-Menu-v2-2, tiene que estar integrado al plugin
Crear una carpeta llamada: zona_de_escape en la ruta addons/amxmodx/configs
AVISO: Esto esta mas diseñado para el Zombie Apocalypse 4.6, pero se puede usar en cualquier Zombie Plague etc, lo unico es que tienes que hacer es borrar los errores, ejemplo: Tienes un Zombie Plague 4.3 y no tienes lvl y experiencia y solo quieres lo ammopacks borrarias lo de g_escape, g_experience, g_point, TIENES QUE INTEGRARLO A TU PLUGIN.
Cualquier error, problema o lo que sea informen es mi primer aporte
Esto es como una 'remasterización' o como una V2 del plugin.
Incluye:
Ganancia por Party
Ganancia x2 si eres admin
Ganancia en hora vicio
Mensajes de colores
Se puede colocar múltiples veces en distintas zonas Ejemplo: Una ruta de techo, una rota de un puente, que todas lleven a lo mismo pero ya entienden
Requisitos:
El sistema de party de [R]ak: https://amxmodx-es.com/Thread-Party-Menu-v2-2, tiene que estar integrado al plugin
Crear una carpeta llamada: zona_de_escape en la ruta addons/amxmodx/configs
AVISO: Esto esta mas diseñado para el Zombie Apocalypse 4.6, pero se puede usar en cualquier Zombie Plague etc, lo unico es que tienes que hacer es borrar los errores, ejemplo: Tienes un Zombie Plague 4.3 y no tienes lvl y experiencia y solo quieres lo ammopacks borrarias lo de g_escape, g_experience, g_point, TIENES QUE INTEGRARLO A TU PLUGIN.
Cualquier error, problema o lo que sea informen es mi primer aporte
Código PHP:
// Esto donde quieran, son necesarias.
new const iClassName[] = { "entclas" }
new const ent_model2[] = { "models/w_kevlar.mdl" }
public plugin_init()
{
register_clcmd("say /zonas", "MenuZonas", ADMIN_RCON) // Comando necesario.
}
public plugin_cfg()
// Aca diria si esta creado el directorio 'zona_de_escape'
new szDir[64], szMapName[32]
get_localinfo("amxx_configsdir", szDir, charsmax(szDir))
get_mapname(szMapName, charsmax(szMapName))
strtolower(szMapName)
formatex(g_szDirFile, charsmax(g_szDirFile), "%s/zona_de_escape/%s.ini", szDir, szMapName)
if(!file_exists(g_szDirFile))
{
server_print("No hay Zonas de Escapes para este mapa")
add(szDir, charsmax(szDir), "/zona_de_escape")
if(!dir_exists(szDir))
mkdir(szDir)
}
else
ReadFile()
// El que lee la zona.
ReadFile()
{
new szData[64], szX[13], szY[13], szZ[13], Origin[3]
new File = fopen(g_szDirFile, "rt")
while(!feof(File))
{
fgets(File, szData, charsmax(szData))
if(!szData[0] || szData[0] == ';' || szData[0] == ' ' || (szData[0] == '/' && szData[1] == '/'))
continue
parse(szData, szX, charsmax(szX), szY, charsmax(szY), szZ, charsmax(szZ))
Origin[0] = str_to_num(szX)
Origin[1] = str_to_num(szY)
Origin[2] = str_to_num(szZ)
Create_Entity(Origin)
}
fclose(File)
}
// El menu del inicio: /zonas
public MenuZonas(id){
new menu = menu_create("Menu Zonas","Handler")
menu_additem(menu,"Poner Zona")
menu_additem(menu,"Borrar Zona")
menu_additem(menu,"Guardar Zona")
menu_display(id,menu)
return PLUGIN_HANDLED
}
// El handler del menu
public Handler(id,menu,item){
if(item == MENU_EXIT)
return PLUGIN_HANDLED
switch(item){
case 0:{
new iOrigin[3]
get_user_origin(id, iOrigin, 2)
Create_Entity(iOrigin)
}
case 1:{
new ent = -1
while((ent = find_ent_by_class(ent, iClassName)))
remove_entity(ent)
}
case 2:Guardar(id)
}
MenuZonas(id)
return PLUGIN_HANDLED
}
public Create_Entity(iOrigin[3]) {
new iEnt = create_entity("info_target")
new Float:OriginF[3]
IVecFVec(iOrigin, OriginF)
entity_set_vector(iEnt,EV_VEC_origin, OriginF)
entity_set_string(iEnt, EV_SZ_classname, iClassName) // Le asignamos el nombre creado a la entidad.
new Float:mins[3] = {-10.0, -10.0, 0.0} // Tamaño
new Float:maxs[3] = {10.0, 10.0, 150.0} // Tamaño
entity_set_size(iEnt, mins, maxs)
entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER)
entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_STEP)
}
public Func_Touch(iEnt, iToucher)
{
static players[32], party
if (is_user_admin(iToucher))
{
if(!g_PartyData[iToucher][In_Party])
{
if (!is_valid_ent(iEnt) || !is_valid_ent(iToucher) || escape[iToucher]) return FMRES_IGNORED;
if (!is_user_alive(iToucher) || escape[iToucher]) return FMRES_IGNORED;
g_escape[iToucher]++
if (g_escape[iToucher] > 999999999)
{
g_escape[iToucher] = 999999999
}
escape[iToucher] = true
if (g_happytime) g_experience[iToucher] += get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2)
else g_experience[iToucher] += get_pcvar_num(cvar_xp_for_escape) * 2
if (g_experience[iToucher] > 999999999)
{
g_experience[iToucher] = 999999999
}
if (g_happytime) g_ammopacks[iToucher][0] += get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2)
else g_ammopacks[iToucher][0] += get_pcvar_num(cvar_ap_for_escape) * 2
if (g_ammopacks[iToucher][0] > 999999999)
{
g_experience[iToucher] = 999999999
}
if (g_happytime) g_point[iToucher] += get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2)
else g_point[iToucher] += get_pcvar_num(cvar_pu_for_escape) * 2
if (g_point[iToucher] > 999999999)
{
g_point[iToucher] = 999999999
}
zp_colored_print(iToucher, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Exp y^x04 %d^x01 PU por Llegar a la Zona de^x04 Escape",
g_happytime ? get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2) : get_pcvar_num(cvar_xp_for_escape) * 2,
g_happytime ? get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2) : get_pcvar_num(cvar_pu_for_escape) * 2)
zp_colored_print(iToucher, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Ammopacks por Llegar a la Zona de^x04 Escape",
g_happytime ? get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2) : get_pcvar_num(cvar_ap_for_escape) * 2)
complete(iToucher)
update_level(iToucher)
}
else
{
get_party_index(iToucher, players)
for(new o; o < g_PartyData[iToucher][Amount_In_Party]; o++)
{
party = players[o]
if (!is_valid_ent(iEnt) || !is_valid_ent(party) || escape[party]) return FMRES_IGNORED;
if (!is_user_alive(party) || escape[party]) return FMRES_IGNORED;
g_escape[party]++
if (g_escape[party] > 999999999)
{
g_escape[party] = 999999999
}
escape[party] = true
if (g_happytime) g_experience[party] += get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2)
else g_experience[party] += get_pcvar_num(cvar_xp_for_escape) * 2
if (g_experience[party] > 999999999)
{
g_experience[party] = 999999999
}
if (g_happytime) g_ammopacks[party][0] += get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2)
else g_ammopacks[party][0] += get_pcvar_num(cvar_ap_for_escape) * 2
if (g_ammopacks[party][0] > 999999999)
{
g_ammopacks[party][0] = 999999999
}
if (g_happytime) g_point[party] += get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2)
else g_point[party] += get_pcvar_num(cvar_pu_for_escape) * 2
if (g_point[party] > 999999999)
{
g_point[party] = 999999999
}
zp_colored_print(party, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Exp y^x04 %d^x01 PU en tu^x04 Party",
g_happytime ? get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2) : get_pcvar_num(cvar_xp_for_escape) * 2,
g_happytime ? get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2) : get_pcvar_num(cvar_pu_for_escape) * 2)
zp_colored_print(party, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Ammopacks en tu^x04 Party",
g_happytime ? get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp) * 2) : get_pcvar_num(cvar_ap_for_escape) * 2)
complete(party)
update_level(party)
}
}
}
else
{
if(!g_PartyData[iToucher][In_Party])
{
if (!is_valid_ent(iEnt) || !is_valid_ent(iToucher) || escape[iToucher]) return FMRES_IGNORED;
if (!is_user_alive(iToucher) || escape[iToucher]) return FMRES_IGNORED;
g_escape[iToucher]++
if (g_escape[iToucher] > 999999999)
{
g_escape[iToucher] = 999999999
}
escape[iToucher] = true
if (g_happytime) g_experience[iToucher] += get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp))
else g_experience[iToucher] += get_pcvar_num(cvar_xp_for_escape)
if (g_experience[iToucher] > 999999999)
{
g_experience[iToucher] = 999999999
}
if (g_happytime) g_ammopacks[iToucher][0] += get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp))
else g_ammopacks[iToucher][0] += get_pcvar_num(cvar_ap_for_escape)
if (g_ammopacks[iToucher][0] > 999999999)
{
g_experience[iToucher] = 999999999
}
if (g_happytime) g_point[iToucher] += get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp))
else g_point[iToucher] += get_pcvar_num(cvar_pu_for_escape)
if (g_point[iToucher] > 999999999)
{
g_point[iToucher] = 999999999
}
zp_colored_print(iToucher, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Exp y^x04 %d^x01 PU por Llegar a la Zona de^x04 Escape",
g_happytime ? get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp)) : get_pcvar_num(cvar_xp_for_escape),
g_happytime ? get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp)) : get_pcvar_num(cvar_pu_for_escape))
zp_colored_print(iToucher, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Ammopacks por Llegar a la Zona de^x04 Escape",
g_happytime ? get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp)) : get_pcvar_num(cvar_ap_for_escape))
complete(iToucher)
update_level(iToucher)
}
else
{
get_party_index(iToucher, players)
for(new o; o < g_PartyData[iToucher][Amount_In_Party]; o++)
{
party = players[o]
if (!is_valid_ent(iEnt) || !is_valid_ent(party) || escape[party]) return FMRES_IGNORED;
if (!is_user_alive(party) || escape[party]) return FMRES_IGNORED;
g_escape[party]++
if (g_escape[party] > 999999999)
{
g_escape[party] = 999999999
}
escape[party] = true
if (g_happytime) g_experience[party] += get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp))
else g_experience[party] += get_pcvar_num(cvar_xp_for_escape)
if (g_experience[party] > 999999999)
{
g_experience[party] = 999999999
}
if (g_happytime) g_ammopacks[party][0] += get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp))
else g_ammopacks[party][0] += get_pcvar_num(cvar_ap_for_escape)
if (g_ammopacks[party][0] > 999999999)
{
g_ammopacks[party][0] = 999999999
}
if (g_happytime) g_point[party] += get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp))
else g_point[party] += get_pcvar_num(cvar_pu_for_escape)
if (g_point[party] > 999999999)
{
g_point[party] = 999999999
}
zp_colored_print(party, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Exp y^x04 %d^x01 PU en tu^x04 Party",
g_happytime ? get_pcvar_num(cvar_xp_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp)) : get_pcvar_num(cvar_xp_for_escape),
g_happytime ? get_pcvar_num(cvar_pu_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp)) : get_pcvar_num(cvar_pu_for_escape))
zp_colored_print(party, "^x04[ZE]^x01 Ganaste^x04 %d^x01 Ammopacks en tu^x04 Party",
g_happytime ? get_pcvar_num(cvar_ap_for_escape) * floatround(get_pcvar_float(cvar_hhdropxp)) : get_pcvar_num(cvar_ap_for_escape))
complete(party)
update_level(party)
}
}
}
}
public Posicion(id){
new ent = -1,Float:Origin[3]
while((ent = find_ent_by_class(ent, iClassName))){
entity_get_vector(ent, EV_VEC_origin, Origin)
client_print(id,print_chat,"%f %f %f ", Origin[0], Origin[1], Origin[2])
}
}
public Guardar(id){
new szData[64], ent = -1, Float:Origin[3]
if(file_exists(g_szDirFile))
delete_file(g_szDirFile)
new File = fopen(g_szDirFile, "at")
write_file(g_szDirFile, "// Zonas de Escapes")
while((ent = find_ent_by_class(ent, iClassName)))
{
entity_get_vector(ent, EV_VEC_origin, Origin)
formatex(szData, charsmax(szData), "%f %f %f^n", Origin[0], Origin[1], Origin[2])
fputs(File, szData)
}
fclose(File)
client_print(id, print_chat, "Zonas de Escape GUARDADAS!")
}