←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
[Pytanie] Dotyczace sklepu

  • +
  • -
Blondyna's Photo Blondyna 01.12.2013

Siemka, zrobiłem sklep (menu)

public Umiejetnosci(id)
{
    new menu = menu_create("Wybierz opcje", "Umiejetnosci_Handler")

    menu_additem(menu, "Odpornosc na HE \yKoszt: \r9 Zlota ")
    
    menu_display(id, menu)
}

Mam kod co odpowiada za odporność:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(this))
        return HAM_IGNORED;
    
    if(!ma_klase[this])
        return HAM_IGNORED;
    
    if(damagebits & DMG_HEGRENADE)
        return HAM_SUPERCEDE;
        
    return HAM_IGNORED;
}

Lecz jak zrobić aby gracz mógł kupić taką moc oraz aby on trwała tylko jedną mapę.

Quote

  • +
  • -
d0naciak's Photo d0naciak 01.12.2013


Lecz jak zrobić aby gracz mógł kupić taką moc oraz aby on trwała tylko jedną mapę.

 

Potrwa aż do reconnecta.

Polecam poczytać:

http://amxx.pl/topic...tworzenia-menu/

http://amxx.pl/topic...tworzenie-menu/

http://amxx.pl/topic...menu-przyklady/

Quote

  • +
  • -
Blondyna's Photo Blondyna 03.12.2013

Menu wiem jak zrobić, lecz nie wiem jak zrobić gdy gracz wybierze opcję z menu otrzymuje tą moc na czas trwania mapy.

 

Nie wiem czy dobrze to robię ale:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <codmod>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Krupek"

#define DMG_HEGRENADE (1<<24)

new bool:ma_odpornosc_he[33];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /menu", "Zloto");
    
    RegisterHam(Ham_TakeDamage, "player", "TakeDamage")
}

public Umiejetnosci(id)
{
    new menu = menu_create("Wybierz opcje", "Info_Handler")

         menu_additem(menu, "Odpornosc na HE \yKoszt: \r9 Zlota ")
         
         menu_display(id, menu)
}



public Umiejetnosci_Handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    switch(item)
    {
        case 0:
        {
            if(kasa >= 14000)
            {
                ma_odpornosc_he[id] = true;
                
                cs_set_user_money(id, kasa-14000);
                ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles Odpornosc na HE!");
            }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x1 Zapomnij, masz za malo zlota!");
        }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(this))
        return HAM_IGNORED;
    
    if(!ma_odpornosc_he[this])
        return HAM_IGNORED;
    
    if(damagebits & DMG_HEGRENADE)
        return HAM_SUPERCEDE;
        
    return HAM_IGNORED;
}

 


Edited by Trener, 03.12.2013 22:00.
Quote

  • +
  • -
sharkowy's Photo sharkowy 03.12.2013

#include amxmodx
#include codmod
#include hamsandwich

#define DMG_HEGRENADE (1<<24)



new bool:ma_odpornosc[33];
new bool:ma_klase[33];
public plugin_init() 
{
	register_plugin("Umiejetnosc", "1.0", "sharkowy");
	
	register_clcmd("say /cos", "cos");
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}	

public cos(id)
{
	new tytul[25];
	format(tytul, 24, "\rUmka");
	new menu = menu_create(tytul, "cos_Handler");
	menu_additem(menu, "Odpornosc na HE \yKoszt: \r9 Zlota ")
	menu_display(id, menu);
	
}

public cos_Handler(id, menu, item)
{
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_CONTINUE;
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	
	switch(item)
	{
		case 0:
		{
			//zloto_gracza[id] =-9  tu zabierasz zloto
			ma_odpornosc[id]=true
			client_print(id, print_chat, "Kupiles odpornosc na HE");
		}
	}
	return PLUGIN_CONTINUE;
}

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(this))
		return HAM_IGNORED;
	
	if(!ma_klase[this])
		return HAM_IGNORED;
	
	if(!ma_odpornosc[this])
		return HAM_IGNORED;
	
	if(damagebits & DMG_HEGRENADE)
		return HAM_SUPERCEDE;
	
	return HAM_IGNORED;
}


public client_disconnect(id)
	ma_odpornosc[id]=false
Quote

  • +
  • -
Blondyna's Photo Blondyna 04.12.2013

Dzięki wielkie, czyli teraz gracz będzie posiadał tą moc do póki mapa nie zostanie zmieniona .?

 

Quote

  • +
  • -
sharkowy's Photo sharkowy 05.12.2013


Dzięki wielkie, czyli teraz gracz będzie posiadał tą moc do póki mapa nie zostanie zmieniona .?

 

Tak, albo dopóki nie zrobi reconnecta.

Quote

  • +
  • -
Blondyna's Photo Blondyna 07.12.2013

A czy ten kod wygląda dobrze ?

public Umiejetnosci_Handler(id, menu, item)
{
    
    if(!is_user_alive(id) || !is_user_connected(id))
        return PLUGIN_CONTINUE;
        
    new kasa = cs_get_user_money(id);
    
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    
    switch(item)
    {
        case 0:
        {
            if(kasa >= 14000)
            {
                     ma_odpornosc[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles odpornosc na HE");
                 }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo zlota!");
        }
        case 1:
        {
            if(kasa >= 14000)
            {
                     ma_skoki[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles moc Nieskonczona amunicja");
                 }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo zlota!");
        }
        case 2:
        {
            if(kasa >= 14000)
            {
                     ma_skoki[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles dodatkowe skoki");
                 }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo zlota!");
        }
    }
    return PLUGIN_CONTINUE;
}
Quote

  • +
  • -
d0naciak's Photo d0naciak 07.12.2013

                     ma_skoki[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles moc Nieskonczona amunicja");

Tu chyba jest coś nie tak ;&

Quote

  • +
  • -
Blondyna's Photo Blondyna 07.12.2013

W sklepie działa tylko grawitacja i jest ona na jedną rundę ;)

Co w kodzie jest nie tak ?

#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <fakemeta>
#include <ColorChat>
#include <cstrike>
#include <fun>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Krupek"

#define DMG_HEGRENADE (1<<24)
#define DMG_BULLET (1<<1)

new bool:ma_odpornosc[33];
new bool:ma_skoki[33];
new bool:ma_bezlik[33];
new bool:ma_hp[33];

new bool:ma_klase[33];
new skoki[33];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /cos", "cmd_menu");
    
    RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
        
    register_forward(FM_CmdStart, "fwCmdStart_MultiJump");
    
    register_event("CurWeapon","CurWeapon","be", "1=1");
    register_event("DeathMsg", "DeathMsg", "ade");
}

public client_disconnect(id)
{
    ma_odpornosc[id]=false    
    ma_skoki[id]=false
    ma_bezlik[id]=false
    ma_hp[id]=false
}

public cmd_menu(id)
{
    if(is_user_alive(id))
    {
        Umiejetnosci(id);
    }
    else
    {
        ColorChat(id, GREEN, "[COD:MW3]^x01 Aby uzywac /sklepu musisz byc zywy!");
    }
    return PLUGIN_HANDLED;
}


stock Umiejetnosci(id)
{
    new tytul[25];
    format(tytul, 24, "\rUmka");
    new menu = menu_create(tytul, "Umiejetnosci_Handler");
    menu_additem(menu, "HP za zabicie \d[ +10 ] \yKoszt: \r7 Zlota")
    menu_additem(menu, "Odpornosc na HE \yKoszt: \r9 Zlota")
    menu_additem(menu, "Nieskonczona amunicja \yKoszt: \r21 Zlota")
    menu_additem(menu, "Wysokie skoki \d[ Skill Ninjy] \yKoszt: \r11 Zlota")
    menu_display(id, menu);
    
}

public Umiejetnosci_Handler(id, menu, item)
{
    
    if(!is_user_alive(id) || !is_user_connected(id))
        return PLUGIN_CONTINUE;
        
    new kasa = cs_get_user_money(id);
    
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    
    switch(item)
    {
        case 0:
        {
            if(kasa >= 14000)
            {
                     ma_hp[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles HP za zabicie");
                 }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo zlota!");
        }
        case 1:
        {
            if(kasa >= 14000)
            {
                     ma_odpornosc[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles odpornosc na HE");
                 }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo zlota!");
        }
        case 2:
        {
            if(kasa >= 14000)
            {
                     ma_bezlik[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles moc Nieskonczona amunicja");
                 }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo zlota!");
             }
        case 3:
        {
            if(kasa >= 8000)
            {
                cs_set_user_money(id, kasa-8000);
                set_user_gravity(id, 0.4);
                ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles wysokie skoki!");
            }
            if(kasa < 8000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo hajsu!");
        }
        case 4:
        {
            if(kasa >= 14000)
            {
                     ma_skoki[id]=true
                     ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles dodatkowe skoki");
                 }
            if(kasa < 14000)
                ColorChat(id, GREEN, "[COD:MW3]^x01 Zapomnij, masz za malo zlota!");
        }
    }
    return PLUGIN_CONTINUE;
}



public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(this))
        return HAM_IGNORED;
    
    if(!ma_klase[this])
        return HAM_IGNORED;
    
    if(!ma_odpornosc[this])
        return HAM_IGNORED;
        
    if(!ma_klase[idattacker])
        return HAM_IGNORED;
        
    if(!ma_hp[idattacker])
        return HAM_IGNORED;
    
    if(damagebits & DMG_HEGRENADE)
        return HAM_SUPERCEDE;
    
    return HAM_IGNORED;
}

public fwCmdStart_MultiJump(id, uc_handle)
{
    if(!is_user_alive(id) || !ma_klase[id] || !ma_skoki[id])
        return FMRES_IGNORED;
        
    new flags = pev(id, pev_flags);

    if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id])
    {
        skoki[id]--;
        new Float:velocity[3];
        pev(id, pev_velocity,velocity);
        velocity[2] = random_float(265.0,285.0);
        set_pev(id, pev_velocity,velocity);
    }
    else if(flags & FL_ONGROUND)
        skoki[id] = 2;

    return FMRES_IGNORED;
}

public CurWeapon(id)
{
    if(!is_user_connected(id))
        return;
    
    if(!ma_klase[id])
        return;
    
    if(!ma_bezlik[id])
        return;
    
    set_user_clip(id, 2);
}
    

stock set_user_clip(id, ammo)
{
    new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);
    get_weaponname(weapon, weaponname, 31);
    while ((weaponid = engfunc(EngFunc_FindEntityByString, weaponid, "classname", weaponname)) != 0)
        if (pev(weaponid, pev_owner) == id) {
        set_pdata_int(weaponid, 51, ammo, 4);
        return weaponid;
    }
    return 0;
}

public DeathMsg()
{
    new killer = read_data(1);
    new victim = read_data(2);
    
    if(!is_user_connected(killer))
        return PLUGIN_CONTINUE;
    
    if(ma_klase[victim] && !ma_klase[killer])
        cod_set_user_xp(killer, cod_get_user_xp(killer)+10);
    
    if(ma_klase[killer])
    {
        new cur_health = pev(killer, pev_health);
        new Float:max_health = 100.0+cod_get_user_health(killer);
        new Float:new_health = cur_health+30.0<max_health? cur_health+30.0: max_health;
        set_pev(killer, pev_health, new_health);
    }
    return PLUGIN_CONTINUE;
}



Quote

  • +
  • -
Blondyna's Photo Blondyna 07.12.2013

Nie mogłem edytować.

Dodaje plik .sma w załączniku nowy.

Attached Files

  • Attached File  test.sma   7.14KB   26 downloads
Quote

  • +
  • -
d0naciak's Photo d0naciak 08.12.2013

Spoiler


Usunąłem wszystkie ma_klase, gdyż one psuły działalność kodów oraz poprawiłem trochę public TakeDamage.

Co do grawitacji, podpatrz sobie na innych kodach, jak powinno się dawać grawitkę na kilka rund.

Quote

  • +
  • -
Blondyna's Photo Blondyna 09.12.2013

Mógłbyś teraz sprawdzić plugin ? Ponieważ prawie wszystko skończyłem tylko został mi do zrobienia teleport oraz odporność na fb.

Oraz szukałem jak zrobić aby grawitacja była na więcej rund ale nie znalazłem.

Z góry dzięki ;)

Attached Files

  • Attached File  test.sma   13.52KB   27 downloads
Quote