AMX Mod X - vše co potřebuješ k serveru
Prostor pro Vaši reklamu - napište nám

Pokročilé hledání





Všechny časy jsou v UTC


 [ Příspěvků: 4 ] 
Autor Zpráva
 Předmět příspěvku: [ZP-TUT] Power Damage pre Last Humana
PříspěvekNapsal: pon 06. bře 2017 20:32:42 
Offline
AMXX Newbie
AMXX Newbie
Uživatelský avatar

Registrován: sob 07. pro 2013 5:45:30
Příspěvky: 267
Bydliště: Košice
Poděkoval: 19 x
Obdržel poděkování: 82 x
Tento tutoriál nie je 100% a preto iba jeho autor radí ako si vylepšiť svoj zombie plague server. Prosím berte na vedomie, že iba čisté CTRL+C & CTRL+V nestačí na funkčnosť danej funkcie ale aj zapojenie mysle a nejaké tie skúsenosti s AMXX pawnom. Za porozumenie tohto upozornenia ďakuje vedenie fóra.

Zombie Plague 4.3 Tutoriál -> Power Damage pre Last Humana

Keďže veľa ľudí sa ma pýta ako som spravil taký dobrý zp 4.3 tak odpoveď je jednoduchá -> Stačí mať zdravý sedliacký rozum.

Načo tento Tutoriál je?
Veľa ľudí si chce spraviť na last humana power damage tak vám ukážem jednoduchú cestu ako si niečo také vytvoriť.

Samotný Turoriál

1. Vytvoríme si TASK na ktorom budu HUD správy pri pohybe hráča teda posledného človeka.

Kód:
#define TASK_HEALTH 12345678910 
#define TASK_POWER 12345678910      
new g_MsgSync5, g_MsgSync6


2. Nájdeme si -> fnCheckLastZombie()

A zmeníme to na niečo takého ->
Kód:

fnCheckLastZombie
()
{
    static id
    for 
(id = 1; id <= g_maxplayers; id++)
    {
        // Last zombie
        if (g_isalive[id] && g_zombie[id] && !g_nemesis[id] && fnGetZombies() == 1)
        {
            if (!g_lastzombie[id])
            {
                // Last zombie forward
                ExecuteForward(g_fwUserLastZombie, g_fwDummyResult, id);
            }
            g_lastzombie[id] = true
        
}
        else
            g_lastzombie
[id] = false
        
        
// Last human
        if (g_isalive[id] && !g_zombie[id] && !g_survivor[id] && fnGetHumans() == 1)
        {
            if (!g_lasthuman[id])
            {
                // Last human forward
                ExecuteForward(g_fwUserLastHuman, g_fwDummyResult, id);
                
                
// Power Damage HUD
                set_task(1.0, "Task_ShowHealth", id+TASK_HEALTH, _, _, "b") // <- TOTO SME PRIDALI
               powerdamage(id)
            }
            g_lasthuman[id] = true
        
}
        else
            g_lasthuman
[id] = false
    
}


3. Pridám niekde mimo kódu toto ->

Kód:
public Task_ShowHealth(id)
{
    id -= TASK_HEALTH
    
    if 
(!g_lasthuman[id])
        remove_task(id+TASK_HEALTH)
    
    set_dhudmessage
(165, 165, 165, -1.0, 0.04, 1, 0.5, 2.0, 0.08, 2.0, true)
    show_dhudmessage(0,"Posledny clovek ma zvyseny armor a power damage")
Táto správa nám ukáže že last human ma power damage a pod.

4. Ďalej overenie aby sa HUD správy nebugovali a neprekrižovali.

Kód:
public zp_round_started(id)
{
        
    if
(!g_lasthuman[id])
        return
        
    set_task
(1.0, "Task_ShowHealth", id+TASK_HEALTH, _, _, "b")
    set_task(1.0, "Task_Show_Power", id+TASK_POWER, _, _, "b")
}

public Fwd_PlayerSpawn_Post(id)
{
    if (task_exists(id+TASK_HEALTH))
        remove_task(id+TASK_HEALTH)
    if (task_exists(id+TASK_POWER))
        remove_task(id+TASK_POWER)
}

public Fwd_PlayerKilled_Pre(victim, attacker, shouldgib)
{
    if (task_exists(victim+TASK_HEALTH))
        remove_task(victim+TASK_HEALTH)
    if (task_exists(victim+TASK_POWER))
        remove_task(victim+TASK_POWER)
    


5. Správy máme vyriešené tak teraz sa vrhneme na power damage.

Kód:
public power_damage(id)
{
    if( g_modestarted )
    {
        fm_set_user_health(id, pev(id, pev_health) + get_pcvar_num(cvar_humanlasthp))
        
        set_hudmessage
(42, 42, 255, -1.0, 0.22, 1, 0.0, 5.0, 1.0, 1.0, -1)
        ShowSyncHudMsg(0, g_MsgSync5, "%L",LANG_PLAYER, "NOTICE_LAST_HUMAN", g_playername[id])
        
        ChatColor
(id, "!g[ZP]!y SI POSLEDNY CLOVEK, PRI STRELBE !gMAS OBROVSKY DAMAGE!")
        
        client_cmd
(id, "spk items/smallmedkit1.wav")
        
        set_task
(1.0, "Task_Show_Power", id+TASK_POWER, _, _, "b")
    }


6. A teraz na spravy ohľadom power damagu

Kód:
public Task_Show_Power(id)
{
    id -= TASK_POWER
    
    if 
(!g_lasthuman[id])
        remove_task(id+TASK_POWER)
    if ( is_entity_moving(id) )
    {
        set_hudmessage(100, 100, 255, 0.12, 0.31, 0, 6.0, 1.1, 0.0, 0.0, -1)
        ShowSyncHudMsg(id, g_MsgSync6, "100%% POWER DAMAGE!!^nZiskal si velku silu v zbraniach!")
    }
    if ( !is_entity_moving(id) )
    {
        set_hudmessage(93, 90, 93, 0.12, 0.31, 0, 6.0, 1.1, 0.0, 0.0, -1)
        ShowSyncHudMsg(id, g_MsgSync6, "0%% POWER DAMAGE!!^nPower damage aktivujes pri behu")
    }
}
 

stock is_entity_moving
(entity)
{
    if(!is_valid_ent(entity))
        return 0
    
    new Float
:fVelocity[3]
    entity_get_vector(entity, EV_VEC_velocity, fVelocity)
    if(vector_length(fVelocity) >=150.0)
        return 1
    
    return 0
} 


7. A už len samotný damage pre last humana.

Kód:
public Hrac_Damage(victim, inflictor, attacker, Float:damage, damage_bits, id)
{
    if(is_user_connected(attacker) && is_entity_moving(attacker))
    {    
        new weapon 
= get_user_weapon(attacker)
        
        if
(g_lasthuman[attacker] == 1)
        {
            if(!g_firstzombie[victim])
            {
                switch(weapon)
                {
                    case CSW_MP5NAVY:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_UMP45:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_AK47:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_M4A1:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_FAMAS:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_AWP:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_P90:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_AUG:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_GALIL:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_M249:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_MAC10:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_GLOCK18:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_DEAGLE:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_ELITE:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_FIVESEVEN:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_G3SG1:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                    case CSW_USP:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                }
            }
        }
    }
}

Dalo by sa to aj jednoduchšie ale som lenivý.

Dúfam že to niekomu pomôže. Na všetky otázky rad odpoviem.

Môžete si to aj otestovať tu -> gunnar.crew.sk:27033

adamCSzombie.

_________________
Moje plugini : Anti-Furien Náskok v1.0
Zombie Plague 7.1 + Adrenalin + spirity + upgrades + weapons -> gunnar.crew.sk:27033
Furien v0.6 + upgrades + exp -> dvojka.crew.sk:27039


Naposledy upravil 85filip58 dne pon 10. pro 2018 19:18:40, celkově upraveno 4
Tento tutoriál nie je 100% a preto iba jeho autor radí ako si vylepšiť svoj zombie plague server. Prosím berte na vedomie, že iba čisté CTRL+C & CTRL+V nestačí na funkčnosť danej funkcie ale aj zapojenie mysle a nejaké tie skúsenosti s AMXX pawnom.


Nahoru
  
 
 Předmět příspěvku: Re: [ZP-TUT] Power Damage pre Last Humana
PříspěvekNapsal: pát 31. bře 2017 0:27:49 
Offline
-
-
Uživatelský avatar

Registrován: pon 11. led 2016 5:10:27
Příspěvky: 29
Poděkoval: 1 x
Obdržel poděkování: 2 x
Sorry but I'll talk in english.

In all tasks, you can use like this:

Kód:
set_task(1.0, "Task_ShowHealth", id+TASK_HEALTH, .flags = "b")


Instead of skiping with ,_,_,"b". Just for optimization.

In is_entity_moving(), you can use like this:

Kód:
bool:is_entity_moving(entity)
{
    if(!is_valid_ent(entity))
        return false
   
    new Float:fVelocity[3]
    entity_get_vector(entity, EV_VEC_velocity, fVelocity)
    return (floatround(vector_length(fVelocity) >= 150)) ? true : false
}


Looks much more beautiful. You must use stock tag only when you're using an include file. And you're not. Then it's a private stock, then you need not that tag.

In Hrac_Damage, you need not use switch() statement if you're setting more damage to every weapon. Just do that:

Kód:
public Hrac_Damage(victim, inflictor, attacker, Float:damage, damage_bits, id)
{
    if(is_user_connected(attacker) && is_entity_moving(attacker))
    {   
        if(g_lasthuman[attacker] == 1)
        {
            if(!g_firstzombie[victim])
            {
                SetHamParamFloat(4,damage * 4)
            }
        }
    }
}


Or if you want block some weapon, do that:

Kód:
public Hrac_Damage(victim, inflictor, attacker, Float:damage, damage_bits, id)
{
    if(is_user_connected(attacker) && is_entity_moving(attacker))
    {   
        if(g_lasthuman[attacker] == 1)
        {
            if(!g_firstzombie[victim])
            {
                switch(get_user_weapon(attacker))
                {
                    case CSW_SG552, CSW_SG550: return HAM_IGNORED
                    default:
                    {
                        SetHamParamFloat(4,damage * 4)
                    }
                }
            }
        }
    }
    return HAM_IGNORED
}


Nahoru
  
 
 Předmět příspěvku: Re: [ZP-TUT] Power Damage pre Last Humana
PříspěvekNapsal: pon 08. led 2018 16:16:02 
Offline
AMXX Lama
AMXX Lama
Uživatelský avatar

Registrován: sob 14. lis 2015 17:10:40
Příspěvky: 57
Bydliště: onheroes.eu
Poděkoval: 15 x
Obdržel poděkování: 1 x
díky +

_________________
Obrázek


Nahoru
  
 
 Předmět příspěvku: Re: [ZP-TUT] Power Damage pre Last Humana
PříspěvekNapsal: sob 16. čer 2018 12:32:18 
Offline
-
-
Uživatelský avatar

Registrován: pon 25. pro 2017 17:14:40
Příspěvky: 109
Bydliště: Košice
Poděkoval: 4 x
Obdržel poděkování: 0 x
nefunguje mi hud sprava ked si last ako koľko percent maš dmg zvyšeny nič

_________________
Zombie Plague 7.6 (Mega Update) + Adrenalin + spirity + zbrane + LVL + XP Starter Pack + Last Human (opraveny) = IP:82.208.17.50:27856

+ Adrenal Human :D


Nahoru
  
 
 [ Příspěvků: 4 ] 

Všechny časy jsou v UTC


Kdo je online

Uživatelé procházející toto fórum: CommonCrawl [Bot] a 0 návštevníků



Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Přejít na:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All rights reserved 2007-2016 © by AMXMODX.cz, kopírování textů nebo grafických prvků z této stránky je bez souhlasu administrátora (jab.jab@seznam.cz) přísně zakázáno!


TOPlist