[ZE] Llegar a Zona de Escape y obtener ganancia
#1
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 Gran sonrisa

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"szDircharsmax(szDir))

get_mapname(szMapNamecharsmax(szMapName))
strtolower(szMapName)

formatex(g_szDirFilecharsmax(g_szDirFile), "%s/zona_de_escape/%s.ini"szDirszMapName)

if(!
file_exists(g_szDirFile))
{
server_print("No hay Zonas de Escapes para este mapa")

add(szDircharsmax(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(FileszDatacharsmax(szData))
        
        if(!
szData[0] || szData[0] == ';' || szData[0] == ' ' || (szData[0] == '/' && szData[1] == '/'))
            continue
            
        
parse(szDataszXcharsmax(szX), szYcharsmax(szY), szZcharsmax(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(idiOrigin2)
            
Create_Entity(iOrigin)
        }
        case 
1:{
            new 
ent = -1
            
while((ent find_ent_by_class(entiClassName)))
            
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(iOriginOriginF)
    
entity_set_vector(iEnt,EV_VEC_originOriginF)

    
entity_set_string(iEntEV_SZ_classnameiClassName// Le asignamos el nombre creado a la entidad.
    
    
new Float:mins[3] = {-10.0, -10.00.0// Tamaño
    
new Float:maxs[3] = {10.010.0150.0// Tamaño
    
entity_set_size(iEntminsmaxs)
    
    
entity_set_int(iEntEV_INT_solidSOLID_TRIGGER)
    
entity_set_int(iEntEV_INT_movetypeMOVETYPE_STEP)
}

public 
Func_Touch(iEntiToucher
{
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_happytimeg_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_happytimeg_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_happytimeg_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(iToucherplayers)
for(new 
og_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_happytimeg_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_happytimeg_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_happytimeg_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_happytimeg_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_happytimeg_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_happytimeg_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(iToucherplayers)
for(new 
og_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_happytimeg_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_happytimeg_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_happytimeg_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(entiClassName))){
        
        
entity_get_vector(entEV_VEC_originOrigin)
        
        
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(entiClassName)))
    {
        
entity_get_vector(entEV_VEC_originOrigin)
                                
        
formatex(szDatacharsmax(szData), "%f %f %f^n"Origin[0], Origin[1], Origin[2])
        
        
fputs(FileszData)
    }
            
    
fclose(File)
            
    
client_print(idprint_chat"Zonas de Escape GUARDADAS!")

Responder
#2
¿Y la tabulación?
Plugins:
En GitHub
Responder
#3
(11/01/2019, 12:04 PM)w0w escribió: ¿Y la tabulación?

sorry, pero me daba error en mi ZE y use el CTRL Shift I que era para pegarlo todo, porque me daba Loose indentation ese.
Responder
#4
WhatdoneWhatdone
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#5
(11/01/2019, 03:15 PM)Hypnotize escribió: WhatdoneWhatdone

:C Pero si no usaba eso daría error de Loose Indentation al rato (creo, si no en 2 o 3 días porque estoy ocupado) le hago la Tabulación.
Responder
#6
V2?

Dafuq Es casi lo mismo que el original , lo único que le agregaste son pequeñeces o informacion extra. Y el código mas bien parece v1.4 ...

Se un poco mas original para la próxima, OK!
Responder
#7
se abre el menu para poner las zonas pero no me marca nada cuando apreto "poner zona", porque?
Responder
#8
(21/05/2019, 11:32 AM)leandroo112 escribió: se abre el menu para poner las zonas pero no me marca nada cuando apreto "poner zona", porque?

Guarda los origins y crea la entidad, no aparece ningún mensaje.

Saludos. Crab
Responder
#9
(21/05/2019, 01:03 PM)Chema escribió:
(21/05/2019, 11:32 AM)leandroo112 escribió: se abre el menu para poner las zonas pero no me marca nada cuando apreto "poner zona", porque?

Guarda los origins y crea la entidad, no aparece ningún mensaje.

Saludos. Crab

y cuando llego a la zona no obtengo las ganancias... Whatdone
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)