RaFy1995 wrote:Salut, mi-ai scris pe Privat sa iti pun aici VIP-ul pe care il doresc,
- Si sa fie FREE EVENT la toata lumea sa aiba VIP gratis de la ora 00:00 pana la ora 12:00!Code: Select all
- VIP-ul sa se activeze din a 3-a Runda cu Meniul de arme - M4A1 + Deagle + Armor / AK47 + Deagle + Armor / AWP + Deagle + Armor - Sa ai Bullet Damage + Multi-Jump + Ecran albastru cand faci frag - Cand faci kill viata poate ajunge pana la 110 - Primesti +15 HP Frag Normal - Primesti +30 HP Frag Headshot - Primesti +60 HP Frag Knife - Primesti +80 HP Frag KnifeHeadshot - Damage marit cu 50% pentru toate armele, inclusiv Grenada - Apari ca VIP in Tab + Slot rezervat pe Server - Mesaj la connectare, atunci cand te connectezi va aparea asa, Atentie "*VIP* X s-a connectat
Si pe Hartile de AWP sa fie Dezactivat!
Si Flagul sa fie litera t
Si daca ai putea sa il faci in asa fel sa fie fara cvaruri in amxx cfg stii tu!
- | Afiseaza codul
/* CREDITE: ConnorMcLeod - pentru bullet damage twistedeuphoria - pentru multi jump cheap_suit - cateva bucati de cod extrase din biohazard */ #include <amxmodx> #include <hamsandwich> #include <engine> #include <cstrike> #include <fun> #include <fakemeta> // -------------------------------------------- // ------------- DE EDITAT --------------- // -------------------------------------------- new const TAG[] = "[CS.SERVERULTAU.RO]"; // TAGUL IN CHAT CARE APARE new const CONTACT[] = "O ADRESA DE CONTACT"; #define is_user_vip(%1) (get_user_flags(%1) & read_flags("b") && get_user_flags(%1) & read_flags("t")) // -------------------------------------------- // ------------- DE EDITAT --------------- // -------------------------------------------- #define PLUGIN_NAME "VIP System" #define PLUGIN_NAME_PAUSED "VIP System [OPRIT]" #define PLUGIN_VERSION "1.0" #define PLUGIN_AUTHOR "YONTU" #define is_user_valid(%1) (1 <= %1 <= max_players) enum cvars { hp_spawn = 0, ap_spawn, hp_kill, hp_hs, hp_knife, hp_knife_hs, hp_max, show_vip_tab, show_bullet_dmg, multi_jump, damage } new cvar[cvars], rounds = 0; new max_players; new bool:g_bJump[33] = false, g_JumpNum[33] = 0; new g_iPlayerPos[33], g_iPlayerCol[33]; // NU SCHIMBA new const Float:g_flCoords[][] = { {0.50, 0.40}, {0.56, 0.44}, {0.60, 0.50}, {0.56, 0.56}, {0.50, 0.60}, {0.44, 0.56}, {0.40, 0.50}, {0.44, 0.44} } // NU SCHIMBA VALORILE DEJA EXISTENTE. Poti adauga mai multe culori, respectand matricea new const g_iColors[][] = { {0, 127, 255}, // blue {255, 127, 0}, // orange {127, 0, 255}, // purple {255, 0, 0}, // red {255, 100, 150}, // pink {0, 255, 0} // green } public plugin_init() { new path[64]; get_localinfo("amxx_configsdir", path, charsmax(path)); formatex(path, charsmax(path), "%s/vip_maps.ini", path); new file = fopen(path, "r+"); if(!file_exists(path)) { write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: "); write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor"); } new mapname[32]; get_mapname(mapname, charsmax(mapname)); new text[121], maptext[32], bool:remove_vip = false; while(!feof(file)) { fgets(file, text, charsmax(text)); trim(text); if(text[0] == ';' || !strlen(text)) { continue; } parse(text, maptext, charsmax(maptext)); if(equal(maptext, mapname) || contain(maptext, "awp_")) { log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext); remove_vip = true; break; } } fclose(file); if(!remove_vip) { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR); register_event("Damage", "event_Damage", "b", "2>0", "3=0"); register_event("HLTV", "event_NewRound", "a", "1=0", "2=0"); register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1); RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamagePre"); register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib"); register_clcmd("say /vips", "CmdVipsOnline"); register_clcmd("say_team /vips", "CmdVipsOnline"); register_clcmd("say vips", "CmdVipsOnline"); register_clcmd("say_team vips", "CmdVipsOnline"); register_clcmd("say vip", "CmdPrintAttributes"); register_clcmd("say_team vip", "CmdPrintAttributes"); register_clcmd("say vip", "CmdPrintAttributes"); register_clcmd("say_team vip", "CmdPrintAttributes"); cvar[hp_spawn] = register_cvar("vip_hp_spawn", "0"); // 0 = dezactivat cvar[ap_spawn] = register_cvar("vip_ap_spawn", "0"); // 0 = dezactivat cvar[show_vip_tab] = register_cvar("vip_show_tab", "1"); // 0 = dezactivat cvar[show_bullet_dmg] = register_cvar("vip_show_bullet_dmg", "0"); // 0 = dezactivat cvar[multi_jump] = register_cvar("vip_multijump", "1"); // 0 = dezactivat. Daca valoarea cvar-ului este 1, vei sari de 2 ori. Orice valoare pui, va fi +1 jump cvar[hp_kill] = register_cvar("vip_hp_kill", "10"); // 0 = dezactivat cvar[hp_hs] = register_cvar("vip_hp_hs", "10"); // 0 = dezactivat cvar[hp_knife] = register_cvar("vip_hp_knife", "10"); // 0 = dezactivat cvar[hp_knife_hs] = register_cvar("vip_hp_knife_hs", "10"); // 0 = dezactivat cvar[hp_max] = register_cvar("vip_hp_max", "110"); // 0 = viata infinita cvar[damage] = register_cvar("vip_damage", "50"); // 0 = dezactivat | 50 = 50% mai mult max_players = get_maxplayers(); } else { register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR); pause("ade"); } register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER); set_cvar_string("vip_", PLUGIN_VERSION); } public client_putinserver(id) { g_JumpNum[id] = 0; g_bJump[id] = false; if(is_user_vip(id)) { new nume[32]; get_user_name(id, nume, charsmax(nume)); ColorChat(0, "!4%s!1 Atentie !3*VIP*!4 %s! s-a connectat.", TAG, nume); } } public CmdVipsOnline(id) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; new adminnames[33][32], message[256], i, count, len; len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG); for(i = 1 ; i <= max_players; i++) { if(is_user_connected(i) && is_user_vip(i)) get_user_name(i, adminnames[count++], charsmax(adminnames[])); } if(count > 0) { for(i = 0; i < count; i++) { len += format(message[len], 255 -len, "!4%s!1%s ", adminnames, i < (count -1) ? " | " : ""); } ColorChat(id, message); } else { len += format(message[len], 255 -len, "!4No one !") ColorChat(id, message); } return PLUGIN_CONTINUE; } public CmdPrintAttributes(id) { if(!is_user_connected(id)) return; show_motd(id, "vip.html", "Beneficii VIP"); } public client_PreThink(id) { new cache = get_pcvar_num(cvar[multi_jump]); if(is_user_alive(id) && !is_user_vip(id)) return PLUGIN_CONTINUE; if(rounds < 3) return PLUGIN_CONTINUE; new nbut = get_user_button(id); new obut = get_user_oldbutton(id); if(cache != 0) { if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP)) { if(g_JumpNum[id] < cache) { g_bJump[id] = true; g_JumpNum[id]++; return PLUGIN_CONTINUE; } } if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) { g_JumpNum[id] = 0; return PLUGIN_CONTINUE; } } return PLUGIN_CONTINUE; } public client_PostThink(id) { new jump_num = get_pcvar_num(cvar[multi_jump]); if(!jump_num) return PLUGIN_CONTINUE; if(is_user_alive(id) && !is_user_vip(id)) return PLUGIN_CONTINUE; if(rounds < 3) return PLUGIN_CONTINUE; if(g_bJump[id]) { new Float:fVelocity[3]; entity_get_vector(id, EV_VEC_velocity, fVelocity); fVelocity[2] = random_float(265.0, 285.0); entity_set_vector(id, EV_VEC_velocity, fVelocity); g_bJump[id] = false; return PLUGIN_CONTINUE; } return PLUGIN_CONTINUE; } public client_death(killer, victim, wpnindex, hitplace, TK) { if(!is_user_alive(killer)) return; if(!is_user_vip(killer)) return; if(killer == victim) return; if(rounds < 3) return; static g_msg_screenfade = 0; if(!g_msg_screenfade) g_msg_screenfade = get_user_msgid("ScreenFade"); //0x2^0 + 0x2^1 + 0x2^2 + 0x2^3 + 0x2^4 + 0x2^5 + 1x2^6 message_begin(MSG_ONE_UNRELIABLE, g_msg_screenfade, _, killer); write_short(6<<10); // duration write_short(5<<10); // hold time write_short(1<<12); // fade type write_byte(0); // r write_byte(0); // g write_byte(random(255)); // b write_byte(255); // a message_end(); new cache; switch(wpnindex) { case CSW_KNIFE: (hitplace == HIT_HEAD) ? get_pcvar_num(cvar[hp_knife_hs]) : get_pcvar_num(cvar[hp_knife]); default: (hitplace == HIT_HEAD) ? get_pcvar_num(cvar[hp_hs]) : get_pcvar_num(cvar[hp_kill]); } if(cache != 0) set_user_health(killer, min(get_user_health(killer) + cache, get_pcvar_num(cvar[hp_max]))); } public event_Damage(victim) { if(!get_pcvar_num(cvar[show_bullet_dmg])) return PLUGIN_CONTINUE; new id = get_user_attacker(victim); if(is_user_valid(id)) { if(is_user_alive(id) && !is_user_vip(id)) return PLUGIN_HANDLED; if(rounds < 3) return PLUGIN_HANDLED; if(read_data(4) || read_data(5) || read_data(6)) { new iPos = ++g_iPlayerPos[id]; if(iPos == sizeof(g_flCoords)) iPos = g_iPlayerPos[id] = 0; new iCol = ++g_iPlayerCol[id]; if(iCol == sizeof(g_iColors)) iCol = g_iPlayerCol[id] = 0; set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1); show_hudmessage(id, "%d", read_data(2)); } } return PLUGIN_CONTINUE; } public event_NewRound() { rounds++; } public event_textmsg() { rounds = 0; } public fw_PlayerSpawnPost(id) { if(is_user_vip(id) && is_user_alive(id) && rounds >= 3) { set_task(0.25, "give_items", id + 212); return HAM_IGNORED; } return HAM_IGNORED; } public give_items(taskid) { new id = taskid - 212; if(!is_user_alive(id)) return; new cache = get_pcvar_num(cvar[hp_spawn]) if(cache != 0) set_user_health(id, cache); cache = get_pcvar_num(cvar[ap_spawn]); if(cache != 0) cs_set_user_armor(id, cache, CS_ARMOR_VESTHELM); ShowVipMenu(id); } public fw_TakeDamagePre(iVictim, iInflictor, attacker, Float:fDamage, iDmgType) { if(iVictim == attacker) return HAM_HANDLED; if(is_user_valid(attacker) && is_user_vip(attacker) && is_user_alive(attacker)) { new Float:Damage = float(get_pcvar_num(cvar[damage]) / 100); if(Damage == 0) return HAM_IGNORED; Damage *= fDamage; fDamage += Damage; SetHamParamFloat(4, fDamage); return HAM_HANDLED; } return HAM_IGNORED; } public msg_ScoreAttrib(msgid, dest, id) { if(!get_pcvar_num(cvar[show_vip_tab])) return PLUGIN_CONTINUE; new id = get_msg_arg_int(1); if(is_user_connected(id) && is_user_vip(id)) set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0)); return PLUGIN_CONTINUE; } public ShowVipMenu(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED; if(!is_user_vip(id)) { ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG); ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT); return PLUGIN_HANDLED; } drop_weapons(id, 2); give_item(id, "weapon_deagle"); cs_set_user_bpammo(id, CSW_DEAGLE, 35); cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM); new menu = menu_create("\rMeniu VIP", "VipMenuHandler"); menu_additem(menu, "\yM4A1 + Deagle + Armor", "1"); menu_additem(menu, "\yAK-47 + Deagle + Armor", "2"); menu_additem(menu, "\yAWP + Deagle + Armor", "3"); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); return PLUGIN_CONTINUE; } public VipMenuHandler(id, menu, item) { if(!is_user_connected(id) || item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } switch(item) { case 0: { drop_weapons(id, 1); give_item(id, "weapon_m4a1"); cs_set_user_bpammo(id, CSW_M4A1, 120); ColorChat(id, "!4%s!1 Ai ales!3 M4A1!1 +!3 Deagle!1 +!3Armor!1.", TAG); } case 1: { drop_weapons(id, 1); give_item(id, "weapon_ak47"); cs_set_user_bpammo(id, CSW_AK47, 120); ColorChat(id, "!4%s!1 Ai ales!3 AK47!1 +!3 Deagle!1 +!3Armor!1.", TAG); } case 2: { drop_weapons(id, 1); give_item(id, "weapon_awp"); cs_set_user_bpammo(id, CSW_AWP, 30); ColorChat(id, "!4%s!1 Ai ales!3 AWP!1 +!3 Deagle!1 +!3Armor!1.", TAG); } } menu_destroy(menu); return PLUGIN_HANDLED; } const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90); const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE); // Drop primary/secondary weapons stock drop_weapons(id, dropwhat) { // Get user weapons static weapons[32], num, i, weaponid, wname[32]; num = 0; // reset passed weapons count (bugfix) get_user_weapons(id, weapons, num); // Loop through them and drop primaries or secondaries for (i = 0; i < num; i++) { // Prevent re-indexing the array weaponid = weapons; if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))) { // Get weapon entity get_weaponname(weaponid, wname, charsmax(wname)); engclient_cmd(id, "drop", wname); } } } stock ColorChat(id, String[], any:...) { static szMesage[192]; vformat(szMesage, charsmax(szMesage), String, 3); replace_all(szMesage, charsmax(szMesage), "!1", "^1"); replace_all(szMesage, charsmax(szMesage), "!3", "^3"); replace_all(szMesage, charsmax(szMesage), "!4", "^4"); static g_msg_SayText = 0; if(!g_msg_SayText) g_msg_SayText = get_user_msgid("SayText"); new Players[32], iNum = 1, i; if(id) Players[0] = id; else get_players(Players, iNum, "ch"); for(--iNum; iNum >= 0; iNum--) { i = Players[iNum]; message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i); write_byte(i); write_string(szMesage); message_end(); } }
Se va creea automat un fisier in configs sub numele de vip_maps.ini
Acolo vei trece hartile unde plginul de mai sus se va dezactiva.
Am facut exact cum ai zis, pluginul are cvar-uri.
- Comenzi: | Afiseaza codul
vips - arata vip-ii online in chat vip - deschide un motd cu beneficii vip, fisierul trebuie pus in configs sub numele de vip,txt (acolo vei trece beneficiile in limbaj html)
ATENTIE: Atunci cand treci un vip in users.ini ii vei trece flagurile bt. Orice alt user din fisier care are flagurile bt va avea vip.
- cvar-uri: copy/paste in amxx.cfg | Afiseaza codul
vip_hp_spawn 0 // 0 = dezactivat vip_ap_spawn 0 // 0 = dezactivat vip_show_tab 1 // 0 = dezactivat vip_show_bullet_dmg 1 // 0 = dezactivat vip_hp_kill 15 // 0 = dezactivat vip_hp_hs 30 // 0 = dezactivat vip_hp_knife 60 // 0 = dezactivat vip_hp_knife_hs 80 // 0 = dezactivat vip_hp_max 110 // 0 = viata infinita vip_multijump 1 // 0 = dezactivat || orice valoare pui va avea +1 jump vip_damage 50 // 0 = dezactivat || cu cat la % se va mari dmg ul
vip eventul il iei din primul topic
Daca apar erori sau daca esti nemutumit de plugin, lasi replay mai jos si se rezolva