AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Need Help / Recommendations... (https://forums.alliedmods.net/showthread.php?t=170610)

MiloSx7 10-27-2011 04:11

Need Help / Recommendations...
 
So here is my mod...

PHP Code:

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <dota>    //Custom Include koj je potreban da bi se mod kompajlovao:

#define PLUGIN "DotA [Defense of the Ancients]"
#define VERSION "1.0"
#define AUTHOR "MiloS-.-"

#define TASK_SHOWINFO    672

enum {
    
None 0,
    
Assassin,
    
Hunter,
    
Runner,
    
Warrior
}

new const 
hero_name[][] = {
    
"None",
    
"Assassin",
    
"Hunter",
    
"Runner",
    
"Warrior"
}

new const 
hero_energy[] = {
    
100,
    
520,
    
480,
    
540,
    
130
}

new const 
hero_ability[][] = {
    
"Nema",
    
"Nevidljivost",
    
"Snaga",
    
"Brzina",
    
"Neunistivost"
}

new 
SyncHud
new SyncHud2

new bool:has_rocket_boots[33]

new 
p_KillXP

new ubistva[33]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /klasa""IzaberiKlasu")
    
register_clcmd("say /shop""Shop")
    
    
p_KillXP register_cvar("hero_killxp""20")
    
    
register_event("CurWeapon""CurWeapon""be""1=1")
    
    
RegisterHam(Ham_Killed"player""Death"1)
    
RegisterHam(Ham_Spawn"player""Spawn"1)
    
    
SyncHud CreateHudSyncObj()
    
SyncHud2 CreateHudSyncObj()
}

public 
client_putinserver(id)
{
    
set_task(0.1"ShowInfo"id TASK_SHOWINFO)
}

public 
client_PreThink(id)
{
    if(!
is_user_alive(id))
    {
        return 
PLUGIN_HANDLED
    
}
    
    new 
button get_user_button(id)
    
    if(
button && IN_USE || get_user_hero(id) == Assassin)
    {
        
set_user_rendering(idkRenderFxGlowShell000kRenderTransAlpha0)
    }
    else
    {
        
set_user_rendering(id)
    }
    
    return 
PLUGIN_CONTINUE
}
public 
Death(victimattacker)
{
    if(
attacker != victim)
    {
        
set_user_xp(attackerget_pcvar_num(p_KillXP))
        
CheckLevel(attacker)
        
ubistva[attacker] ++
    }
}

public 
Spawn(id)
{
    if(!
is_user_alive(id))
    {
        return 
PLUGIN_HANDLED
    
}
    
    if(!
get_user_hero(id))
    {
        
IzaberiKlasu(id)
    }
    
    
strip_user_weapons(id)
    
give_item(id"weapon_knife")
    
    switch(
get_user_hero(id))
    {
        case 
Assassin:
        {
            
give_item(id"weapon_mp5navy")
            
cs_set_user_bpammo(idCSW_MP5NAVY1000)
        }
        case 
Hunter:
        {
            
give_item(id"weapon_tmp")
        }
        case 
Runner:
        {
            
give_item(id"weapon_m249")
        }
        case 
Warrior:
        {
            
give_item(id"weapon_m4a1")
        }
    }
    
    
set_user_health(idhero_energy[get_user_hero(id)])
    
    return 
PLUGIN_CONTINUE
}

public 
CurWeapon(id)
{
    if(
has_rocket_boots[id])
    {
        
set_user_maxspeed(idget_user_maxspeed(id) + 10.0)
    }
}

public 
CheckLevel(id)
{
    if(
get_user_level(id) < 18)
    {
        while(
get_user_xp(id) >= (get_user_level(id) * * (get_user_level(id) / 2)))
        {
            
set_user_level(idget_user_level(id) + 1)
            
            
set_hudmessage(02550, -1.00.2006.03.0)
            
ShowSyncHudMsg(idSyncHud2"LeVeL Up!")
        }
    }
}

public 
IzaberiKlasu(id)
{
    new 
menu menu_create("Izaberi Heroja""IzaberiKlasu_Handle")
    
    for(new 
1sizeof hero_name++)
    {
        
menu_additem(menuhero_name[i])
    }
    
    
menu_display(idmenu)
}
public 
IzaberiKlasu_Handle(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    
item ++
    
    if(
user_hero[id] != item)
    {
        
user_hero[id] = item
    
}
    
    
Spawn(id)
    
    return 
PLUGIN_CONTINUE
}

public 
Shop(id)
{
    new 
naslov[64], zadatak[64], zadatak1[64]
    
format(naslovcharsmax(naslov), "Zadatci^nImas \r[\d%d\r] \yZlatnika"get_user_gold(id))
    
format(zadatakcharsmax(zadatak), "Ubi 5 Neprijateljskih Heoja [%d]"ubistva[id])
    
format(zadatak1charsmax(zadatak1), "Dostigni 10 Level [%i]"get_user_level(id))
    
    new 
menu menu_create(naslov"Shop_Handle")
    
menu_additem(menuzadatak)
    
menu_additem(menuzadatak1)
    
menu_display(idmenu)
}
public 
Shop_Handle(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
    }
    
    
menu_display(idmenu)
}

public 
ShowInfo(id)
{
    
id -= TASK_SHOWINFO
    set_task
(0.1"ShowInfo"id TASK_SHOWINFO)
    
    
set_hudmessage(02550, -1.00.8006.00.1)
    
ShowSyncHudMsg(idSyncHud"[Hero: %s][Energy: %d][Zlatnici: %d]^n[Experience: %i / %i][Level: %i]^n[Ulti: %s]"hero_name[get_user_hero(id)], get_user_health(id), get_user_gold(id), get_user_xp(id), get_user_level(id) * * (get_user_level(id) / 2), get_user_level(id), hero_ability[get_user_hero(id)]) 
}

public 
client_disconnect(id)
{
    
remove_task(id TASK_SHOWINFO)


It's a bit mess, but however its good for now ^.^

So i need few things?
I can't test it online, so will Assassins invisibility work if he holds "e"?
And how i can set task, if 5 seconds are passed, the ultimate ability doesn't work no more, and cool down appears in hud..??
i know a way via tasks and bools, but maybe there is a better way?

Thanks :D

quark 10-27-2011 04:26

Re: Need Help / Recommendations...
 
Do it your way :3

MiloSx7 10-27-2011 05:01

Re: Need Help / Recommendations...
 
As i can see your signature, you are a newbie scripter...
I need help from profi scripters, anyway thanks

quark 10-27-2011 05:23

Re: Need Help / Recommendations...
 
EDIT - Yeah, but i am awesome :P

I am newbie but i know something about pawn, and i think , if the plugin is your way, its easier :D

Xellath 10-27-2011 05:58

Re: Need Help / Recommendations...
 
PHP Code:

if( button && IN_USE )
// ->
if( button IN_USE 

Lets assume an ulti has 5 sec cooldown. Now, use get_gametime and add 5 secs, there you have your cooldown. Example of how to display it (in your hud):
PHP Code:

new Float:g_lasttime[33], Float:g_cooldown[33];

// check if cd is over
if((get_gametime() - g_lasttime[id] ) >= 5.0 )

// where ulti is used set lasttime and cd
g_lasttime[id] = get_gametime();
g_cooldown[id] = g_lasttime[id] + 5.0;

// display cooldown in 0.0 format
ShowSyncHudMsg(idSyncHud"[Hero: %s][Energy: %d][Zlatnici: %d]^n[Experience: %i / %i][Level: %i]^n[Ulti: %s][CD: %.1f]"
    
hero_name[get_user_hero(id)], 
    
get_user_health(id), 
    
get_user_gold(id), 
    
get_user_xp(id), 
    
get_user_level(id) * * (get_user_level(id) / 2), 
    
get_user_level(id), 
    
hero_ability[get_user_hero(id)],
    (
g_cooldown[id] - get_gametime() < 0.0) ? 0.0 : (g_cooldown[id] - get_gametime())
    ); 



All times are GMT -4. The time now is 14:15.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.