AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Little Help to FIX My Mod (https://forums.alliedmods.net/showthread.php?t=171099)

MiloSx7 11-01-2011 14:34

Little Help to FIX My Mod
 
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?

KillLikoe 11-01-2011 15:46

Re: Little Help to FIX My Mod
 
to detect buttons is
PHP Code:

 pev(idpev_button

and after the code yo need to put the key for example (pev(id, pev_button) & IN_ATTACK)

MiloSx7 11-01-2011 16:10

Re: Little Help to FIX My Mod
 
I fixed the buttons but main problem is respawn :S
Something is wrong with the event, because im getting XP even if i die xD
Fixed Everything, thanks anyway ^.^


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

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