/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <fakemeta_util>
#include <colorchat>
#include <fvault>
#define PLUGIN "Weapon Skin System [WSS]"
#define VERSION "1.0"
#define AUTHOR "6almasok"
#define IsValidPlayers(%1,%2) ((1 <= %1 <= 32) && (1 <= %2 <= 32))
new oles[33],csomag[33], kredit[33],switchbutton[33],knife[33],getfrag[3][33]
new ModelData[40][64], ModelNum, MaximumBtton
new const File[] = "addons/amxmodx/configs/wss_models.ini"
new const szVaultName[] = "wss_vault"
new const prefix[] = "ePic#"
/*Rust Kills | Silver Kills | Gold Kills | Veteran Kills | Knife Kredit*/
new const need_kills[] = { 500, 1000, 2000, 4000, 500 }
/*Pack Names*/
new const csomagmsg[6][] = { "Nincs","Rozsdas Csomag","Ezust Csomag","Arany Csomag","Veteran Csomag","Speed Knife" }
new const knifedisenable[2][] = { "Kikapcsolva", "Bekapcsolva" }
new const menuszoveg[][][] = {
{"Rozsdas Csomag \r[MEGSZEREZVE]", "\dRozsdas Csomag \r[%i/%i Oles]"}, //0
{"Ezust Csomag \r[MEGSZEREZVE]", "\dEzust Csomag \r[%i/%i Oles]"}, //1
{"Arany Csomag \r[MEGSZEREZVE]", "\dArany Csomag \r[%i/%i Oles]"}, //2
{"Veteran Csomag \r[MEGSZEREZVE]", "\dVeteran Csomag \r[%i/%i Oles]"}, //3
{"Speed Knife \r[MEGSZEREZVE]^n", "\dSpeed Knife \r[%i/%i Oles]^n"}, //4
{"\ySkin Csomagok \r[KIKAPCSOLVA]", "\ySkin Csomagok \r[BEKAPCSOLVA]"} //5
}
new const chatszoveg[10][] =
{
"^4[%s]^1 FEJLOVES!^3 %s ^1megoleseert kaptal ^3+%i^1 olest!",
"^4[%s]^3 %s ^1megoleseert kaptáa ^3+%i^1 olest!",
"^4[%s]^3 %s ^1kapott ^3+1 ^1olest ember lesebzesert!",
"^4[%s]^1 Talaltal^3 +%i^1 kreditet a csomagbol!",
"^4[%s]^1 Kivalasztottad a(z)^3 %s^1-ot!",
"^4[%s]^1 Sajnos nincs eleg olesed!",
"^4[%s]^1 Kikapcsoltad a Skin Csomagokat!",
"^4[%s]^1 Bekapcsoltad a Skin Csomagokat!",
"^4[%s]^1 A Szerveren Jelenleg a(z) ^3ePic#SkinRendszer^1 fut. Megnyitashoz ird be ^3/menu^1.",
"^4[%s]^1 Sajnos nincs eleg kredited!"
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
/* Client Command */
register_clcmd("say /menu" , "fomenu")
/* Events */
register_event("CurWeapon", "changeweapon", "be", "1=1")
register_event("Damage", "sebzes_event", "be", "2!0", "3=0", "4!0")
register_event("DeathMsg","Halal","a")
/* Cvars */
register_cvar("wss_hudenable", "1");
register_cvar("wss_advertmp", "40.0");
register_cvar("kill_recived", "1");
register_cvar("hs_recived", "2");
register_cvar("found_kredit", "1");
/* Other */
register_forward(FM_Touch,"ForwardTouch" );
RegisterHam(Ham_Spawn, "player", "spawn_event", 1)
set_task(1.0, "infohud", 0, _, _, "b")
set_task(get_cvar_float("wss_advertmp"), "advertist", 0, "", 0, "b", 0)
LoadModel();
}
public advertist(){
ColorChat(0, GREEN, chatszoveg[8],prefix);
return PLUGIN_HANDLED;
}
public plugin_precache() {
new Len, btton[196], Data[64], Letoltes[40][64];
MaximumBtton = file_size(File, 1);
for(new Num = 0; Num < MaximumBtton; Num++){
read_file(File, Num, btton, 196, Len);
parse(btton, Data, 63);
remove_quotes(btton);
if(btton[0] == ';')
{
continue;
}
remove_quotes(Data);
format(Letoltes[Num], 63, "%s", Data);
precache_model(Letoltes[Num]);
}
precache_model("models/wss/pack/kredit.mdl");
}
public LoadModel()
{
new Len, btton[196], Data[64];
MaximumBtton = file_size(File, 1);
for(new Num; Num < MaximumBtton; Num++){
ModelNum++;
read_file(File, Num, btton, 196, Len);
parse(btton, Data, 63);
remove_quotes(btton);
if(btton[0] == ';')
{
continue;
}
remove_quotes(Data);
format(ModelData[ModelNum], 63, "%s", Data);
}
}
public changeweapon(id)
{
if(!is_user_alive(id) || !is_user_connected(id) || id < 1 || id > 32 || switchbutton[id] == 1)
return
new fegyver = get_user_weapon(id)
if(csomag[id] == 1){
if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[1]) //Rozsdas ak
if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[2]) //Rozsdas awp
if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[3]) //Rozsdas desi
if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[4]) //Rozsdas m4
}
else if(csomag[id] == 2){
if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[5]) //ezust ak
if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[6]) //ezust awp
if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[7]) //ezust desi
if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[8]) //ezust m4
}
else if(csomag[id] == 3){
if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[9]) //arany ak
if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[10]) //arany awp
if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[11]) //arany desi
if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[12]) //arany m4
}
else if(csomag[id] == 4){
if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[13]) //veteran ak
if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[14]) //veteran awp
if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[15]) //veteran desi
if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[16]) //veteran m4
}
if(knife[id] == 1 && fegyver == CSW_KNIFE){
set_user_maxspeed(id, Float:320.0)
set_pev(id, pev_viewmodel2, ModelData[17]) //knife
}
}
public spawn_event(id){
getfrag[0][id] = 0;
getfrag[1][id] = 0;
getfrag[2][id] = 0;
}
public sebzes_event(id)
{
new tamado = get_user_attacker(id);
if(id == tamado || !IsValidPlayers(id, tamado )) return;
getfrag[1][tamado] += read_data(2);
if(!getfrag[2][id] && getfrag[1][tamado] >= 50)
{
getfrag[0][tamado] = id;
getfrag[2][id] = tamado;
}
}
public Halal() {
new attacker = read_data(1)
new victim = read_data(2)
new nev[32]
get_user_name(victim, nev, charsmax(nev))
if(attacker == victim || attacker == 0)
return PLUGIN_HANDLED
if(read_data( 3 )){
oles[attacker] += get_cvar_num("hs_recived");
ColorChat(attacker, GREEN, chatszoveg[0] ,prefix ,nev, get_cvar_num("hs_recived"))
}
else{
oles[attacker] += get_cvar_num("kill_recived");
ColorChat(attacker, GREEN, chatszoveg[1],prefix, nev, get_cvar_num("kill_recived"))
}
if(getfrag[2][victim] && getfrag[2][victim] != attacker){
new fragetkap = getfrag[2][victim];
new fragetkapneve[32];
getfrag[0][fragetkap] = 0;
getfrag[1][fragetkap] = 0;
getfrag[2][victim] = 0;
get_user_name(fragetkap, fragetkapneve, charsmax(fragetkapneve));
oles[fragetkap]++
ColorChat(0, GREEN, chatszoveg[2],prefix ,fragetkapneve);
}
switch(random_num(1,3)){
case 1: dropdobas()
}
return PLUGIN_HANDLED;
}
public dropdobas()
{
new victim = read_data( 2 );
static Float:origin[ 3 ];
pev( victim, pev_origin, origin );
new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
origin[ 2 ] -= 36;
engfunc( EngFunc_SetOrigin, ent, origin );
if( !pev_valid( ent ) )
{
return PLUGIN_HANDLED;
}
set_pev( ent, pev_classname, "kredit" );
engfunc( EngFunc_SetModel, ent, "models/wss/pack/kredit.mdl" );
dllfunc( DLLFunc_Spawn, ent );
set_pev( ent, pev_solid, SOLID_BBOX );
set_pev( ent, pev_movetype, MOVETYPE_NONE );
engfunc( EngFunc_SetSize, ent, Float:{ -23.160000, -13.660000, -0.050000 }, Float:{ 11.470000, 12.780000, 6.720000 } );
engfunc( EngFunc_DropToFloor, ent );
return PLUGIN_HANDLED;
}
public ForwardTouch( ent, id )
{
if(pev_valid(ent))
{
new classname[ 32 ];
pev( ent, pev_classname, classname, charsmax( classname ) );
if( !equal( classname, "kredit") )
{
return FMRES_IGNORED;
}
kredit[id] += get_cvar_num("found_kredit");
ColorChat(id, GREEN, chatszoveg[3],prefix, get_cvar_num("found_kredit"));
engfunc( EngFunc_RemoveEntity, ent );
}
return FMRES_IGNORED
}
public logevent_round_start()
{
new hkt = FM_NULLENT;
while ( ( hkt = fm_find_ent_by_class( hkt, "kredit") ) )
{
engfunc( EngFunc_RemoveEntity, hkt );
}
}
public fomenu(id)
{
new String[96]
format(String, charsmax(String), "\r[ePic#SkinRendszer 1.0] \wFomenu^n\yOlesek: \d%i \w|\y Kreditek: \d%i", oles[id],kredit[id])
new menu = menu_create(String, "fomenu_MyMenu");
menu_additem(menu, "Fegyver Skin Csomagok", "0");
menu_additem(menu, "Jatekos Infok", "1");
menu_additem(menu, "Pack Informaciok", "2");
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_EXITNAME, "\rKilepes");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public fomenu_MyMenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0: fegymenu(id)
case 1: playerinfo(id)
case 2: show_motd(id, "addons/amxmodx/configs/wssinfo.txt", "[WSS] Infok")
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public playerinfo(id)
{
new some[256], menu
static players[32],szTemp[10],pnum
get_players(players,pnum,"ch");
formatex(some,255,"\r[ePic#SkinRendszer 1.0 \wJatekos \d|\w Oles \d|\w Kredit");
menu = menu_create(some,"pinfo_Handler");
for (new i; i < pnum; i++)
{
formatex(some,256,"%s \r(\yOlese: \w%i \d| \yKreditje: \w%i\r)",get_player_name(players[i]), oles[players[i]],kredit[players[i]]);
num_to_str(players[i],szTemp,charsmax(szTemp));
menu_additem(menu, some, szTemp);
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
menu_setprop(menu, MPROP_EXITNAME, "Kilepes");
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public pinfo_Handler(id,menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
playerinfo(id)
}
public fegymenu(id)
{
new String[96]
format(String, charsmax(String), "\r[ePic#SkinRendszer 1.0] \wSkin csomagok^n\yKivalasztott Csomag: \d[%s]", csomagmsg[csomag[id]])
new menu = menu_create(String, "fegymenu_handler" )
format(String, charsmax(String), oles[id] >= need_kills[0] ? (menuszoveg[0][0]):(menuszoveg[0][1]), oles[id], need_kills[0]);
menu_additem(menu, String, "0" );
formatex(String, charsmax(String), oles[id] >= need_kills[1] ? (menuszoveg[1][0]):(menuszoveg[1][1]), oles[id], need_kills[1]);
menu_additem(menu, String, "1");
formatex(String, charsmax(String), oles[id] >= need_kills[2] ? (menuszoveg[2][0]):(menuszoveg[2][1]), oles[id], need_kills[2]);
menu_additem(menu, String, "2");
format(String, charsmax(String), oles[id] >= need_kills[3] ? (menuszoveg[3][0]):(menuszoveg[3][1]), oles[id], need_kills[3]);
menu_additem(menu, String, "3");
formatex(String, charsmax(String), kredit[id] >= need_kills[4] ? (menuszoveg[4][0]):(menuszoveg[4][1]), kredit[id], need_kills[4]);
menu_additem(menu, String, "4");
menu_additem(menu, switchbutton[id] == 1 ? (menuszoveg[5][0]):(menuszoveg[5][1]), "5");
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_BACKNAME, "Vissza");
menu_setprop(menu, MPROP_NEXTNAME, "Előre");
menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public fegymenu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0: {
if(oles[id] >= need_kills[0]) {
csomag[id] = 1
ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
}
else {
ColorChat(id, GREEN, chatszoveg[5],prefix);
}
}
case 1: {
if(oles[id] >= need_kills[1]) {
csomag[id] = 2
ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
}
else {
ColorChat(id, GREEN, chatszoveg[5],prefix);
}
}
case 2: {
if(oles[id] >= need_kills[2]) {
csomag[id] = 3
ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
}
else {
ColorChat(id, GREEN, chatszoveg[5],prefix);
}
}
case 3: {
if(oles[id] >= need_kills[3]) {
csomag[id] = 4
ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
}
else {
ColorChat(id, GREEN, chatszoveg[5],prefix);
}
}
case 4: {
if(kredit[id] >= need_kills[4]) {
knife[id] = 1
ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[5]);
}
else {
ColorChat(id, GREEN, chatszoveg[9],prefix);
}
}
case 5: {
if(switchbutton[id] == 0){
switchbutton[id] = 1
csomag[id] = 0
knife[id] = 0
ColorChat(id, GREEN, chatszoveg[6],prefix);
}
else {
switchbutton[id] = 0
ColorChat(id, GREEN, chatszoveg[7],prefix);
}
}
case 6: {
ColorChat(id, GREEN, chatszoveg[5],prefix);
}
}
fegymenu(id)
return PLUGIN_HANDLED;
}
public infohud() {
if(!get_cvar_num("wss_hudenable")) return PLUGIN_HANDLED
static id
for(id = 1; id <= get_maxplayers(); id++)
{
if(is_user_alive(id)){
set_hudmessage(0, 127, 255, 0.01, 0.20, 0, 6.0, 1.0)
show_hudmessage(id, "[Oles: %i]^n[Kredit: %i]^n[Kivalasztott Csomag: %s]^n[Speed Knife: %s]", oles[id],kredit[id],csomagmsg[csomag[id]], knifedisenable[knife[id]])
}
else{
new target = entity_get_int(id, EV_INT_iuser2);
if(!target)
return PLUGIN_CONTINUE;
set_hudmessage(255, 255, 255, 0.01, 0.20, 0, 6.0, 1.0)
show_hudmessage(id, "[Oles: %i]^n[Kredit: %i]^n[Kivalasztott Csomag: %s]^n[Speed Knife: %s]", oles[target],kredit[target],csomagmsg[csomag[target]], knifedisenable[knife[target]])
}
}
return PLUGIN_CONTINUE;
}
stock get_player_name(id){
static szName[32];
get_user_name(id,szName,31);
return szName;
}
public client_disconnect(id){
if(is_user_bot(id)) return;
save(id);
}
public client_putinserver( id ) {
if(is_user_bot(id)) return;
oles[id] = 0;
kredit[id] = 0;
csomag[id] = 0;
switchbutton[id] = 0;
load(id);
}
load(id) {
new szAuthid[32], szData[32];
get_user_name( id, szAuthid, charsmax(szAuthid));
new s1[16],s2[16],s3[16],s4[16]
fvault_get_data( szVaultName, szAuthid, szData, 31 );
parse( szData, s1, 15, s2, 15 , s3 , 15, s4 ,15);
oles[id] = str_to_num(s1);
kredit[id] = str_to_num(s2);
csomag[id] = str_to_num(s3);
switchbutton[id] = str_to_num(s4);
}
save(id) {
new szAuthid[ 32 ], szData[ 32 ];
get_user_name( id, szAuthid, charsmax(szAuthid));
formatex( szData, 31, "%i %i %i %i", oles[id], kredit[id], csomag[id], switchbutton[id]);
fvault_set_data( szVaultName, szAuthid, szData );
}