/*
Changelog:
19.02.2012r. 1.0 beta
13.03.2012r. 1.1 beta - dodanie możliwości zapisu wybranej opcji (nvault) i upiększenie menu
*/
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <engine>
#include <colorchat>
#include <nvault>
#define PLUGIN "Vip JailBreak"
#define VERSION "1.1"
#define AUTHOR "K!113r"
#define VIPS
#define GRAWITACJA 0.5
#define SZYBKOSC 400.0
#define HP 131
#define FLAGA ADMIN_LEVEL_H
#define ZAPIS
#if defined VIPS
new maxplayers
#endif
#if defined ZAPIS
new vault
#endif
new wybor_gracza[33]
new skoki2[33], predkosc[33]
enum { Brak = 0, Grawitacja, Skoki, Hp, Widocznosc, Szybkosc }
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /vip_menu", "menu_cmd")
#if defined VIPS
maxplayers = get_maxplayers()
register_clcmd("say /vips", "print_vips", 0);
register_clcmd("say /vipy", "print_vips", 0);
register_clcmd("say /vipinfo", "MOTD")
#endif
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1)
register_forward(FM_CmdStart, "CmdStart");
#if defined ZAPIS
vault=nvault_open("Menu")
if (vault == INVALID_HANDLE)
set_fail_state( "Nie moge otworzyc pliku
");
#endif
}
#if defined ZAPIS
public client_connect(id)
{
load_wybor(id)
}
#endif
public menu_cmd(id)
{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(cs_get_user_team(id) == CS_TEAM_T)
{
new tytul[128], name[32], wybor[128]
if(wybor_gracza[id] == Brak)
format(wybor, 127, "\ybrak.")
if(wybor_gracza[id] == Grawitacja)
format(wybor, 127, "\ygrawitacja.")
if(wybor_gracza[id] == Skoki)
format(wybor, 127, "\ypodwojny skok.")
if(wybor_gracza[id] == Hp)
format(wybor, 127, "\ydodatkowe hp.")
if(wybor_gracza[id] == Widocznosc)
format(wybor, 127, "\ymniejsza widocznosc.")
if(wybor_gracza[id] == Szybkosc)
format(wybor, 127, "\yzwiekszona predkosc.")
get_user_name(id, name, 31)
format(tytul, 127, "\y%s, \rwitaj w menu do zarzadzania Vip'em\d by K!113r^n\wTwoja aktualnie uzyta opcja to: %s", name, wybor)
new menu = menu_create(tytul, "menu_tt")
menu_additem(menu, "Grawitacja") // item = 0
menu_additem(menu, "Podwojny skok") // item = 1
menu_additem(menu, "Dodatkowe hp") // item = 2
menu_additem(menu, "Mniejsza widocznosc") // item = 3
menu_additem(menu, "Wieksza predkosc") // item = 4
#if defined ZAPIS
menu_additem(menu, "\rZapisz swoja wybrana opcje\d(bedzie ona wczytana przy kazdym polaczeniu z serwerem [mozna zmienic])")
#endif
menu_display(id, menu, 0)
}
else if(cs_get_user_team(id) == CS_TEAM_CT)
{
new tytul[128], name[32], wybor[128]
if(wybor_gracza[id] == Brak)
format(wybor, 127, "\ybrak.")
if(wybor_gracza[id] == Grawitacja)
format(wybor, 127, "\ygrawitacja.")
if(wybor_gracza[id] == Skoki)
format(wybor, 127, "\ypodwojny skok.")
if(wybor_gracza[id] == Hp)
format(wybor, 127, "\ydodatkowe hp.")
if(wybor_gracza[id] == Szybkosc)
format(wybor, 127, "\yzwiekszona predkosc.")
get_user_name(id, name, 31)
format(tytul, 127, "\y%s, \rwitaj w menu do zarzadzania Vip'em\d by K!113r^n\wTwoja aktualnie uzyta opcja to: %s", name, wybor)
new menu = menu_create(tytul, "menu_ct")
menu_additem(menu, "Grawitacja") // item = 0
menu_additem(menu, "Podwojny skok") // item = 1
menu_additem(menu, "Dodatkowe hp") // item = 2
menu_additem(menu, "Wieksza predkosc") // item = 3
#if defined ZAPIS
menu_additem(menu, "\rZapisz swoja wybrana opcje\d(bedzie ona wczytana przy kazdym polaczeniu z serwerem [mozna zmienic])")
#endif
menu_display(id, menu, 0)
}
}
else
client_print(id, print_chat, "[Vip] Nie masz dostepu do tej uslugi.")
return 0
}
public menu_tt(id, menu, item)
{
switch(item)
{
case 0:{
wybor_gracza[id] = Grawitacja
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04grawitacje^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
case 1:{
wybor_gracza[id] = Skoki
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04podwojny skok^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
case 2:{
wybor_gracza[id] = Hp
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04 dodatkowe hp^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
case 3:{
wybor_gracza[id] = Widocznosc
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04Mniejsza widocznosc^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
case 4:{
wybor_gracza[id] = Szybkosc
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04Wieksza predkosc^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
#if defined ZAPIS
case 5:{
save_wybor(id)
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wlasnie zapisano ^x04Twoj ^x03wybor.")
}
#endif
}
}
public menu_ct(id, menu, item)
{
switch(item)
{
case 0:{
wybor_gracza[id] = Grawitacja
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04grawitacje^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
case 1:{
wybor_gracza[id] = Skoki
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04podwojny skok^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
case 2:{
wybor_gracza[id] = Hp
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04 dodatkowe hp^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
case 3:{
wybor_gracza[id] = Szybkosc
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04Wieksza predkosc^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.")
}
#if defined ZAPIS
case 4:{
save_wybor(id)
ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wlasnie zapisano ^x04Twoj ^x03wybor.")
}
#endif
}
}
public Odrodzenie(id)
{
if(wybor_gracza[id] == Grawitacja && (get_user_flags(id) & ADMIN_LEVEL_H))
set_user_gravity(id, GRAWITACJA)
if(wybor_gracza[id] == Hp && (get_user_flags(id) & ADMIN_LEVEL_H))
set_user_health(id, HP)
if(is_user_alive(id))
set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 999)
if(wybor_gracza[id] == Widocznosc && cs_get_user_team(id) == CS_TEAM_T && (get_user_flags(id) & ADMIN_LEVEL_H))
set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 60)
//////////////do skoków
if(wybor_gracza[id] == Skoki && (get_user_flags(id) & ADMIN_LEVEL_H))
skoki2[id] = 1
if(wybor_gracza[id] != Skoki)
skoki2[id] = 0
if(wybor_gracza[id] == Szybkosc && (get_user_flags(id) & ADMIN_LEVEL_H))
predkosc[id] = true
if(wybor_gracza[id] != Szybkosc)
predkosc[id] = false
////////////// i koniec
}
public CmdStart(id, uc_handle)
{
static moze_skoczyc;
if(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_LEVEL_H))
return FMRES_IGNORED;
if(skoki2[id] == 1)
{
new button = get_uc(uc_handle, UC_Buttons);
new oldbutton = pev(id, pev_oldbuttons);
new flags = pev(id, pev_flags);
if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && moze_skoczyc & (1<<id))
{
moze_skoczyc &= ~(1<<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){
moze_skoczyc |= (1<<id)
}
}
if(predkosc[id])
set_user_maxspeed(id, SZYBKOSC)
return FMRES_IGNORED;
}
#if defined VIPS
public print_vips(user)
{
new adminnames[33][32]
new message[256]
new id, count, x, len
for(id = 1 ; id <= maxplayers ; id++)
if(is_user_connected(id))
if(get_user_flags(id) & FLAGA)
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, "^x04 VIPY ONLINE: ")
if(count > 0) {
for(x = 0 ; x < count ; x++) {
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
if(len > 96 ) {
ColorChat(user, GREEN, "%s", message);
len = format(message, 255, "^x04 ")
}
}
ColorChat(user, GREEN, "%s", message);
}
else {
len += format(message[len], 255-len, "Brak Vipow ONLINE")
ColorChat(user, GREEN, "%s", message);
}
}
#endif
public MOTD( id,level,cid ) {
if ( !cmd_access(id,level,cid,1) )
return PLUGIN_CONTINUE
show_motd( id,"vip.txt","Informacje VIP." );
return PLUGIN_CONTINUE
}
public client_disconnect(id){
wybor_gracza[id] = Brak
}
#if defined ZAPIS
public plugin_end()
nvault_close(vault)
public load_wybor(id)
{
new name[35]
get_user_name(id,name,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-wybor",name)
format(vaultdata,255,"%d",wybor_gracza[id])
nvault_get(vault,vaultkey,vaultdata,255)
new wybortemp[33]
parse(vaultdata,wybortemp, 32)
wybor_gracza[id]=str_to_num(wybortemp)
return PLUGIN_CONTINUE
}
public save_wybor(id){
new name[35]
get_user_name(id,name,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-wybor",name)
format(vaultdata,255,"%d", wybor_gracza[id])
nvault_set(vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
#endif