[Pytanie] Dotyczace sklepu
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ę.
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/
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.
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
Blondyna
04.12.2013
Dzięki wielkie, czyli teraz gracz będzie posiadał tą moc do póki mapa nie zostanie zmieniona .?
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.
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; }
d0naciak
07.12.2013
ma_skoki[id]=true ColorChat(id, GREEN, "[COD:MW3]^x01 Kupiles moc Nieskonczona amunicja");
Tu chyba jest coś nie tak ;&
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; }
d0naciak
08.12.2013
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.
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