Witam,
Chciałbym dodać Leczenie się Ultra VIP'a przez cały czas.
Czyli np. 1 HP co 3-4 SEKUNDY.
W moim VIPIE jest ustawione tak, że losuje daną ilość HP na mape dla VIPA, Svipa, Uvipa itd.
I chciałbym aby gdy np. Uvip ma 150 HP, a przy starcie ma 200 to aby leczył się przez cały czas do 200 HP. (1 HP - 3/4 sekundy)
Leczenie miało by być tylko dla UVIPa, czyli na flagę "v", lecz totalnie nie wiem jak się za to zabrać.
Jeżeli ktoś wie, to z góry dzięki za POMOC
VIP.SMA :
Spoiler
/*Cvary jb_vip_skoki ilosc skokow dla vipa jb_svip_skoki ilosc skokow dla svipa */ #include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <xs> native jail_get_wish(); native jail_get_prowadzacy(id); #pragma semicolon 1 stock isFlagi(id, const flagi[]) return (get_user_flags(id) & read_flags(flagi)); new Float:origin[33][3]; new prethink_counter[33]; new bool:is_drawing[33]; new bool:is_holding[33]; new spriteid, hud; new JumpCount[33]; new iTeam[33]; new Float:hp[3]; new maxpl; new pCvarVipJumps, pCvarSVipJumps; new static maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120, 90, 2, 35, 90, 90, 0, 100}; public plugin_init() { register_plugin("VIP", "2.0", "naXe"); register_clcmd("say /vip3333", "Przywileje"); register_clcmd("say /svip3333", "Przywileje"); register_clcmd("say /vips", "ListaVipow"); register_clcmd("+maluj", "MalujON"); register_clcmd("-maluj", "MalujOFF"); RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1); RegisterHam(Ham_Player_Jump, "player", "PlayerJump"); register_forward(FM_PlayerPreThink, "PlayerPreThink"); register_event("CurWeapon", "CurWeapon", "be", "1=1"); register_message(84, "NapisVIP"); pCvarVipJumps = register_cvar("jb_vip_skoki", "1"); pCvarSVipJumps = register_cvar("jb_svip_skoki", "2"); hud = CreateHudSyncObj(); maxpl = get_maxplayers(); hp[0] = random_float(180.0, 200.0); hp[1] = random_float(200.0, 220.0); hp[2] = random_float(150.0, 180.0); } public plugin_precache() spriteid = precache_model("sprites/lgtning.spr"); public NapisVIP() { new id = get_msg_arg_int(1); if(is_user_connected(id) && isFlagi(id, "s, t")) set_msg_arg_int(2, 1, is_user_alive(id) ? (1<<2) : (1<<0)); } public client_putinserver(id) { if(is_user_bot(id) || is_user_hltv(id)) return; PokazHud(id, "Wszedl"); } public client_disconnect(id) { if(is_user_bot(id) || is_user_hltv(id)) return; iTeam[id] = 0; PokazHud(id, "Wyszedl"); } public PokazHud(id, akcja[]) { if(isFlagi(id, "s")) { new nick[64]; get_user_name(id, nick, 63); set_hudmessage(24, 190, 220, 0.25, 0.2, 2, 6.0, 5.0, 0.1, 1.5); ShowSyncHudMsg(0, hud, "%s Super VIP! (%s)", akcja, nick); } else if(isFlagi(id, "v")) { new nick[64]; get_user_name(id, nick, 63); set_hudmessage(24, 190, 220, 0.25, 0.2, 2, 6.0, 5.0, 0.1, 1.5); ShowSyncHudMsg(0, hud, "%s Ultra VIP! (%s)", akcja, nick); } } public Odrodzenie(id) { if(!is_user_alive(id)) return; if(isFlagi(id, "s, v, t")) { iTeam[id] = get_pdata_int(id, 114); remove_task(id + 9101); set_task(2.0, "DajGranaty", id + 9101); if(isFlagi(id, "s")) { set_pev(id, pev_health, iTeam[id] == 1 ? hp[0] : hp[1]); set_pev(id, pev_armorvalue, 200.0); } if(isFlagi(id, "v")) { set_pev(id, pev_health, iTeam[id] == 1 ? hp[1] : hp[1]); set_pev(id, pev_armorvalue, 200.0); } else if(isFlagi(id, "t")) set_pev(id, pev_health, hp[2]); } } public DajGranaty(id) { id -= 9101; if(!is_user_alive(id)) return; give_item(id, "weapon_smokegrenade"); if(iTeam[id] != 2) return; give_item(id, "weapon_flashbang"); set_pdata_int(id, 387, 2); } public PlayerJump(id) { if(!is_user_alive(id) || !isFlagi(id, "s, t")) return 1; new fFlags = pev(id, pev_flags); if(fFlags & (1<<11) || pev(id, pev_waterlevel) >= 2 || !(get_pdata_int(id, 246) & (1<<1))) return 1; if(fFlags & (1<<9)) { JumpCount[id] = 0; return 1; } new iAdicionalJumps = isFlagi(id, "s") ? get_pcvar_num(pCvarSVipJumps) : get_pcvar_num(pCvarVipJumps); if(iAdicionalJumps && get_pdata_float(id, 251) < 500.0 && ++JumpCount[id] <= iAdicionalJumps) { new Float:fVelocity[3]; pev(id, pev_velocity, fVelocity); fVelocity[2] = 268.328157; set_pev(id, pev_velocity, fVelocity); return 2; } return 1; } public CurWeapon(id) { if(iTeam[id] != 2 || !isFlagi(id, "s") || jail_get_wish()) return; new bron = read_data(2); if(bron == 29 || bron == 4 || bron == 9 || bron == 25 || bron == 20) return; set_user_bpammo(id, bron, maxAmmo[bron]); } public ListaVipow(id) { new menu = menu_create("\yLista VIP Online", "HandleListaVipow"); for(new i = 1; i <= maxpl; i++) { if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || !isFlagi(i, "s, t")) continue; new num[3], name[64]; num_to_str(i, num, 2); get_user_name(i, name, 63); add(name, 63, isFlagi(i, "v") ? " \d[\yUltra VIP\d]" : isFlagi(i, "s") ? " \d[\ySuper VIP\d]" : " \d[\yVIP\d]"); menu_additem(menu, name, num); } menu_setprop(menu, 2, "Poprzednia strona"); menu_setprop(menu, 3, "Nastepna strona"); menu_setprop(menu, 4, "Wyjdz"); menu_display(id, menu); return 1; } public HandleListaVipow(id, menu, item) { if(item == -3) return; new data[3], acces, id2, nick[64]; menu_item_getinfo(menu, item, acces, data, 2, _, _, id2); id2 = str_to_num(data); if(is_user_connected(id2)) { get_user_name(id2, nick, 63); client_print_color(id, print_team_blue, "^4[VIP]^x01 Nick:^3 %s^1 Steam:^3 %s^1 | Zyje:^3 %s^1 | Czas gry:^3 %d^1 min.", nick, is_user_steam(id2) ? "Posiada" : "Brak", is_user_alive(id2) ? "Tak" : "Nie", get_user_time(id2, 1) / 60); } ListaVipow(id); } public Przywileje(id) { show_motd(id, "/addons/amxmodx/configs/vip.html", "Przywileje Vipa i Super Vipa"); return 1; } public MalujON(id) { if(!is_user_alive(id) || !jail_get_prowadzacy(id) || !isFlagi(id, "s, t")) return 1; is_drawing[id] = true; return 1; } public MalujOFF(id) { if(!is_user_connected(id) || !isFlagi(id, "s, t")) return 1; is_drawing[id] = false; return 1; } public PlayerPreThink(id) { if(prethink_counter[id]++ > 5) { new Float:originn[3]; get_aim_origin(id, originn); if(is_drawing[id] && engfunc(EngFunc_PointContents, originn) != -6) { static Float:cur_origin[3], Float:distance; cur_origin = origin[id]; if(!is_holding[id]) { get_aim_origin(id, origin[id]); move_toward_client(id, origin[id]); is_holding[id] = true; return 1; } get_aim_origin(id, origin[id]); move_toward_client(id, origin[id]); distance = get_distance_f(origin[id], cur_origin); if(distance > 2) { message_begin(0, 23); write_byte(0); engfunc(EngFunc_WriteCoord, origin[id][0]); engfunc(EngFunc_WriteCoord, origin[id][1]); engfunc(EngFunc_WriteCoord, origin[id][2]); engfunc(EngFunc_WriteCoord, cur_origin[0]); engfunc(EngFunc_WriteCoord, cur_origin[1]); engfunc(EngFunc_WriteCoord, cur_origin[2]); write_short(spriteid); write_byte(0); write_byte(10); write_byte(255); write_byte(50); write_byte(0); write_byte(random(256)); write_byte(random(256)); write_byte(random(256)); write_byte(255); write_byte(0); message_end(); } } else is_holding[id] = false; prethink_counter[id] = 0; } return 1; } stock move_toward_client(id, Float:origin[3]) { static Float:player_origin[3]; pev(id, pev_origin, player_origin); origin[0] += (player_origin[0] > origin[0]) ? 1.0 : -1.0; origin[1] += (player_origin[1] > origin[1]) ? 1.0 : -1.0; origin[2] += (player_origin[2] > origin[2]) ? 1.0 : -1.0; } stock get_aim_origin(id, Float:origin[3]) { new Float:start[3], Float:view_ofs[3]; pev(id, pev_origin, start); pev(id, pev_view_ofs, view_ofs); xs_vec_add(start, view_ofs, start); new Float:dest[3]; pev(id, pev_v_angle, dest); engfunc(EngFunc_MakeVectors, dest); global_get(glb_v_forward, dest); xs_vec_mul_scalar(dest, 9999.0, dest); xs_vec_add(start, dest, dest); engfunc(EngFunc_TraceLine, start, dest, 0, id, 0); get_tr2(0, TR_vecEndPos, origin); return 1; } stock give_item(id, weapon[]) { if(!equal(weapon, "weapon_", 7)) return 0; new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, weapon)); if(!pev_valid(ent)) return 0; set_pev(ent, pev_spawnflags, (1<<30)); dllfunc(DLLFunc_Spawn, ent); if(!ExecuteHamB(Ham_AddPlayerItem, id, ent)) { if(pev_valid(ent)) set_pev(ent, pev_flags, pev(ent, pev_flags) | (1<<26)); return 0; } ExecuteHamB(Ham_Item_AttachToPlayer, ent, id); return 1; } stock set_user_bpammo(id, bron, ilosc) { new offset; switch(bron) { case 18: offset = 377; case 3, 28, 24: offset = 378; case 20: offset = 379; case 15, 22, 8, 13, 14, 27: offset = 380; case 21, 5: offset = 381; case 16, 12, 7: offset = 382; case 11, 30: offset = 383; case 26: offset = 384; case 1: offset = 385; case 17, 19, 23, 10: offset = 386; case 25: offset = 387; case 4: offset = 388; case 9: offset = 389; case 6: offset = 390; default: return 0; } return set_pdata_int(id, offset, ilosc); } stock bool:is_user_steam(id) { if(!is_user_connected(id) || is_user_bot(id) || is_user_hltv(id)) return false; new sid[35]; get_user_authid(id, sid, 34); new ip[64]; get_user_ip(id, ip, 63, 1); if(strlen(sid) > 18) return false; if(containi(sid, "VALVE_") != -1 || containi(sid, "STEAM_ID_LAN") != -1 || containi(sid, "STEAM_ID_PENDING") != -1 || containi(sid, "HLTV") != -1 || equal(sid, "STEAM_666:88:666")) return false; if(containi(sid, ip) != -1) return false; return true; }
Użytkownik Obelix edytował ten post 18.04.2019 20:01