Raised This Month: $ Target: $400
 0% 

Little Help to FIX My Mod


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
MiloSx7
Member
Join Date: Oct 2011
Location: Serbia, Nish
Old 11-01-2011 , 14:34   Little Help to FIX My Mod
Reply With Quote #1

So i started Writing a mod yesterday, and im good-going, only problem is i have several bugs :S

PHP Code:
/*
Item Shop: 0%
Hero Shop: 40%
Odabir Heroja: 60%
Imena Heroja: 0%
Talent Points & Talent System: 60%
Honor Points & Honor System: 0%
Leveling: 70%
Respawn: 0%
[|||\\\\\\\]
*/

#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <nvault>

#define PLUGIN "Multi Hero Mod"
#define VERSION "0.3"
#define AUTHOR "MiloS -.-"

enum {
    
Nema 0,
    
hero_Garex,
    
hero_Zero_Beam,
    
hero_OvidiuS,
    
hero_Nocturne
}

new const 
imena_heroja[][] = {
    
"Nema",
    
"Garex",
    
"Zero-Beam",
    
"OvidiuS",
    
"Nocturne"
}

new const 
shop_imena_heroja[][] = {
    
"Nema",
    
"\yOvidiuS \r[\wCena: \d13645 \wHonor Poena\r]",
    
"\yNocturne \r[\wCena: \d17555 \wHonor Poena\r]"
}

new const 
iskustvo_levelu[] = {
    
702806301120175025203430448056707000847010080118301372015750,
    
17920202302268025270280003087033880370304032043750473205103054880,
    
588706300067270716807623080920857509072095830101080106470112000117670,
    
123480129430135520141750148120154630161280168070175000
}

new 
honor_poeni_igraca[33]
new 
talent_poeni_igraca[33]
new 
personal_level_igraca[33]
new 
personal_iskustvo_igraca[33]
new 
iskustvo_igraca[33]
new 
level_igraca[33]
new 
heroj_igraca[33]

new 
talent_prosireni_um[33]
new 
talent_inteligentni_napad[33]
new 
talent_dobrodusni_duh[33]

new 
bool:OvidiuS[33] = false
new bool:Nocturne[33] = false

new g_Vault

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
g_Vault nvault_open("MultiHero")
    
    
register_clcmd("say /heroj""cmdChooseHero")
    
register_clcmd("say /shop""cmdShop")
    
register_clcmd("say /stats""cmdStats")
    
register_clcmd("say /talents""cmdTalents")
    
    
RegisterHam(Ham_Killed"player""Death"1)
    
RegisterHam(Ham_Spawn"player""Spawn"1)
}

public 
client_putinserver(id)
{
    
set_task(0.1"ShowStats"id 100)
}

public 
cmdChooseHero(id)
{
    new 
cb menu_makecallback("ChooseHero_CallBack")
    new 
menu menu_create("\rIzaberi Heroja""ChooseHero_Handle")
    
    for(new 
1sizeof imena_herojai++)
    {
        
menu_additem(menuimena_heroja[i], __cb)
    }
    
    
menu_display(idmenu)
}
public 
ChooseHero_CallBack(idmenuitem)
{
    if(!
OvidiuS[id] && item == || !Nocturne[id] && item == 3)
    {
        return 
ITEM_DISABLED
    
}
    else
    {
        return 
ITEM_ENABLED
    
}
    
    return 
PLUGIN_CONTINUE
}
public 
ChooseHero_Handle(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    
heroj_igraca[id] = item 1
    
    Spawn
(id)
    
    return 
PLUGIN_CONTINUE
}

public 
cmdShop(id)
{
    new 
menu menu_create("\rShop:""Shop_Handle")
    
menu_additem(menu"Hero Shop")
    
menu_additem(menu"Item Shop [Under Development]")
    
menu_setprop(menuMPROP_EXITNAME"Izlaz")
    
menu_display(idmenu)
}

public 
Shop_Handle(idmenuitem)
{
    switch(
item)
    {
        case 
MENU_EXIT:
        {
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
        case 
0:
        {
            
OpenHeroShop(id)
        }
        case 
1:
        {
            
OpenItemShop(id)
        }
    }
    
    return 
PLUGIN_CONTINUE
}

public 
OpenHeroShop(id)
{
    new 
menu menu_create("Hero Shop:""HeroShop_Handle")
    
    for(new 
1sizeof shop_imena_herojai++)
    {
        
menu_additem(menushop_imena_heroja[i])
    }
    
    
menu_display(idmenu)
}
public 
HeroShop_Handle(idmenuitem)
{
    switch(
item)
    {
        case 
MENU_EXIT:
        {
            
menu_destroy(menu)
        }
        case 
0:
        {
            if(
honor_poeni_igraca[id] < 5000)
            {
                
client_print(idprint_chat"[Multi Hero] Nemas dovoljno poena da kupis ovog heroja")
            }
            if(
personal_level_igraca[id] < 10)
            {
                
client_print(idprint_chat"[Multi Hero] Tvoj personal Level nije dovoljno visok da bi kupio ovog heroja")
            }
            else
            {
                
OvidiuS[id] = true
                honor_poeni_igraca
[id] -= 5000
                client_print
(idprint_chat"[Multi Hero] Kupio si Ime 3. Heroja!")
            }
        }
        case 
1:
        {
            if(
honor_poeni_igraca[id] < 5000)
            {
                
client_print(idprint_chat"[Multi Hero] Nemas dovoljno poena da kupis ovog heroja")
            }
            if(
personal_level_igraca[id] < 15)
            {
                
client_print(idprint_chat"[Multi Hero] Tvoj personal Level nije dovoljno visok da bi kupio ovog heroja")
            }
            else
            {
                
Nocturne[id] = true
                honor_poeni_igraca
[id] -= 5000
                client_print
(idprint_chat"[Multi Hero] Kupio si Ime 4. Heroja!")
            }
        }
    }
    
    
menu_display(idmenu)
}
public 
OpenItemShop(id)
{
    
cmdShop(id)
}





/*
/=======================================================================================\
/    Ova KOMANDA otvara klijentu MOTD Prozor. U njemu klijent vidi statistike svog    \
/    Heroja, Level, Talent Points, Honor Points... MOTD Mozete menjati po zelji,    \
/    ali nemojte to radeti ako neznate nista o HTML-u                \
/=======================================================================================\
*/
public cmdStats(id)
{
    new 
szTextAdd[1024]
    new 
Add sizeof(szTextAdd) - 1
    format
(szTextAddAdd"<font color='#00ffff' face='Comic Sans MS' size='4'><body bgcolor='#000000'>")
    
format(szTextAddAdd"%s Heroj: %s<br>Level: %d<br>"szTextAddimena_heroja[heroj_igraca[id]], level_igraca[id])
    
format(szTextAddAdd"%s Personal Level: %d<br>Personal Iskustvo: %d<br>"szTextAddpersonal_level_igraca[id], personal_iskustvo_igraca[id])
    
format(szTextAddAdd"%s Honor Points: %d<br>"szTextAddhonor_poeni_igraca[id])
    
format(szTextAddAdd"%s </font></body>"szTextAdd)
    
    
show_motd(idszTextAdd)
}





public 
cmdTalents(id)
{
    new 
prosireni_um[128], inteligentni_napad[128], dobrodusni_duh[128]
    
format(prosireni_umcharsmax(prosireni_um), "\yProsireni Um \r[\d+3 \wHP\r] [\d%d \w/ \d3\r]"talent_prosireni_um[id])
    
format(inteligentni_napadcharsmax(inteligentni_napad), "\yInteligentni Napad \r[\d+5 \wXP (KILL)\r] [\d%d \w/ \d3\r]"talent_inteligentni_napad[id])
    
format(dobrodusni_duhcharsmax(dobrodusni_duh), "\yDobrodusni Duh \r[\d-2 \wSec (DEATH RECALL)\r] [\d0 \w/ \d5\r]")
    
    new 
menu menu_create("\rTalents:""Talents_Handle")
    
menu_additem(menuprosireni_um)
    
menu_additem(menuinteligentni_napad)
    
menu_additem(menudobrodusni_duh)
    
menu_setprop(menuMPROP_EXITNAME"Izlaz")
    
menu_display(idmenu)
}
public 
Talents_Handle(idmenuitem)
{
    switch(
item)
    {
        case 
MENU_EXIT:
        {
            
menu_destroy(menu)
        }
        case 
0:
        {
            if(
talent_prosireni_um[id] >= 3)
            {
                
client_print(idprint_chat"[Multi Hero] Maximalni Level talenta Dostignut!")
            }
            if(
talent_poeni_igraca[id] < 1)
            {
                
client_print(idprint_chat"[Multi Hero] Nemas dovoljno Talent Poena da bi naucio ovo!")
            }
            else
            {
                
talent_prosireni_um[id] ++
                
client_print(idprint_chat"[Multi Hero] Talent Naucen")
                
cmdTalents(id)
            }
        }
        case 
1:
        {
            if(
talent_inteligentni_napad[id] >= 3)
            {
                
client_print(idprint_chat"[Multi Hero] Maximalni Level talenta Dostignut!")
            }
            if(
talent_poeni_igraca[id] < 1)
            {
                
client_print(idprint_chat"[Multi Hero] Nemas dovoljno Talent Poena da bi naucio ovo!")
            }
            else
            {
                
talent_inteligentni_napad[id] ++
                
client_print(idprint_chat"[Multi Hero] Talent Naucen")
                
cmdTalents(id)
            }
        }
        case 
2:
        {
            if(
talent_dobrodusni_duh[id] >= 3)
            {
                
client_print(idprint_chat"[Multi Hero] Maximalni Level talenta Dostignut!")
            }
            if(
talent_poeni_igraca[id] < 1)
            {
                
client_print(idprint_chat"[Multi Hero] Nemas dovoljno Talent Poena da bi naucio ovo!")
            }
            else
            {
                
talent_dobrodusni_duh[id] ++
                
client_print(idprint_chat"[Multi Hero] Talent Naucen")
                
cmdTalents(id)
            }
        }
    }
    
    
menu_display(idmenu)
}





public 
ShowStats(id)
{
    
id -= 100
    
    set_hudmessage
(0255255, -1.00.0506.00.1)
    
show_hudmessage(id"[Heroj: %s][Level Heroja: %d][Iskustvo: %d / %d]"imena_heroja[heroj_igraca[id]], level_igraca[id], iskustvo_igraca[id], iskustvo_levelu[level_igraca[id]])
    
    
set_task(0.1"ShowStats"id 100)
}





/*
/=======================================================================================\
/    Ovaj EVENT koristimo da detektujemo Smrt igraca. Sve sto dole vidite        \
/    se desava nakon sto igrac umre, ili jedan igrac ubije drugog...            \
/                                            \
/=======================================================================================\
*/
public Death(napadaczrtva)
{
    
// Sta se desava ako Napadac (vi) ubije zrtvu (protivnik)
    
if(zrtva != napadac)
    {
        
// Ako jeste, povecavamo mu Honor Poene i Iskustvo, zatim Proveravamo Iskustvo
        
honor_poeni_igraca[napadac] += 25
        iskustvo_igraca
[napadac] += 15
        ProveriIskustvo
(napadac)
    }
    
    
ExecuteHamB(Ham_CS_RoundRespawnzrtva)
}




/*
/=======================================================================================\
/    Ovaj EVENT koristimo da detektujemo Spawn igraca. Sve sto dole vidite        \
/    se desava nakon sto se igrac Spawnuje                        \
/                                            \
/=======================================================================================\
*/
public Spawn(id)
{
    
// Proveravamo da li je igrac ziv
    
if(!is_user_alive(id))
    {
        
// Ako nije ziv, obustavljamo svu dalju akciju plugina
        
return PLUGIN_HANDLED
    
}
    
    
// Proveravamo da li je igrac izabrao Heroja
    
if(!heroj_igraca[id])
    {
        
// Ako nije izbacujemo mu meni da izabere Novog Heroja
        
cmdChooseHero(id)
    }
    
    switch(
heroj_igraca[id])
    {
        case 
hero_Garex:
        {
            
give_item(id"weapon_ak47")
        }
        case 
hero_Zero_Beam:
        {
            
give_item(id"weapon_m4a1")
        }
        case 
hero_OvidiuS:
        {
            
give_item(id"weapon_mp5navy")
        }
        case 
hero_Nocturne:
        {
            
give_item(id"weapon_awp")
        }
    }
    
    return 
PLUGIN_CONTINUE
}





/*
/=======================================================================================\
/    Ovaj PUBLIC Koristimo da proverimo da li je igrac dobio doboljno Iskustva    \
/    Ako jeste povecavamo mu level. Ovaj PUBLIC Treba pozivati kada stavljate    \
/    igracu Iskustvo! U koliko ne pozovete, igrac nece dobiti level, samo iskustvo    \
/=======================================================================================\
*/
public ProveriIskustvo(id)
{
    while(
iskustvo_igraca[id] >= iskustvo_levelu[level_igraca[id]])
    {
        
level_igraca[id] ++
        
talent_poeni_igraca[id] ++
        
honor_poeni_igraca[id] += 50
        personal_iskustvo_igraca
[id] += 25
        
        ProveriPersonalIskustvo
(id)
        
        
SacuvajPodatke(id)
        
        
client_print(idprint_chat"[Multi Hero] Dobrodosao na Level %d"level_igraca[id])
    }
}
public 
ProveriPersonalIskustvo(id)
{
    while(
personal_iskustvo_igraca[id] >= iskustvo_levelu[personal_level_igraca[id]])
    {
        
personal_level_igraca[id] ++
        
        
SacuvajPodatke(id)
        
        
client_print(idprint_chat"[Multi Hero] Dobrodosao na Personal Level %d"level_igraca[id])
    }
}





/*======================================================================//
//    Nvault - Cuva podatke igracu, level, iskustvo            //
//    Nemojte menjati nista ovde ako nemate osnovno znanje iz nvaulta    //
//======================================================================*/
public SacuvajPodatke(id)
{
    new 
vaultkey[64], vaultdata[256], ID_igraca[64]
    
get_user_authid(idID_igracacharsmax(ID_igraca))
    
    
format(vaultkey63"%s-%i-mh"ID_igraca[id])
    
format(vaultdata255"%i#%i#%i#%i#%i"honor_poeni_igraca[id], iskustvo_igraca[id], level_igraca[id], personal_level_igraca[id], personal_iskustvo_igraca[id])
    
nvault_set(g_Vaultvaultkeyvaultdata)
}
public 
UcitajPodatke(idheroj)
{
    new 
vaultkey[64], vaultdata[256], ID_igraca[64]
    
get_user_authid(idID_igracacharsmax(ID_igraca))
    
    
format(vaultkey,63"%s-%i-mh"ID_igraca[id], heroj)
    
format(vaultdata,255"%i#%i#%i#%i#%i"honor_poeni_igraca[id], iskustvo_igraca[id], level_igraca[id], personal_level_igraca[id], personal_iskustvo_igraca[id])
    
nvault_get(g_Vault,vaultkeyvaultdata255)
    
    
replace_all(vaultdata255"#"" ")
    
    new 
honorpoeniigraca[32], iskustvoigraca[32], leveligraca[32], personalleveligraca[32], personaliskustvoigraca[32]
    
    
parse(vaultdatahonorpoeniigraca31iskustvoigraca31leveligraca31personalleveligraca31personaliskustvoigraca31)
    
    
honor_poeni_igraca[id] =    str_to_num(honorpoeniigraca)
    
iskustvo_igraca[id] =        str_to_num(iskustvoigraca)
    
level_igraca[id] =        str_to_num(leveligraca)
    
personal_level_igraca[id] =    str_to_num(personalleveligraca)
    
personal_iskustvo_igraca[id] =    str_to_num(personaliskustvoigraca)

I know its such a Mess, but its good...
I want to fix this:
When player dies, his Death Meter Starts counting, and it depends on its level: if he is level 10 Death Meter will be 10... And so, every second death meter lowers by 1
After 10 Seconds, player is respawned...
Help?
And also, what can i use to detect user buttons?
__________________
MiloS
MiloSx7 is offline
Send a message via MSN to MiloSx7
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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