Corectare plugin GravityMenu [rezolvat!]

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Post Reply
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2550
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 64 times
Contact:

06 Sep 2018, 21:57

Am ciordit bucati de cod dintr-un plugin dea lui Yonut si am creat sa-i zic asa un meniu prin care jucatorii isi pot seta gravitatie si viteza pe server.
Sursa completa | Afiseaza codul
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <fakemeta>

// -----------------------------------------------
new const TAG[] = "- DRX -"
// -----------------------------------------------

// -----------------------------------------------
#define VITEZA		500.0
#define GRAVITATIE1	0.4
#define GRAVITATIE2	0.7
#define GRAVITATIE3     1.0
// -----------------------------------------------

// -----------------------------------------------
#define PLUGIN_NAME "Gravity Menu"
#define PLUGIN_VERSION "1.0.0"
#define PLUGIN_AUTHOR "Laurentiu P. & ciordit din alte surse"
// -----------------------------------------------

// -----------------------------------------------
new bool:atribut[33][4];
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
// -----------------------------------------------

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);
	register_event("CurWeapon", "event_CurWeapon", "be", "1=1");

	register_clcmd("say !gravity", "ShowMenu");
	register_clcmd("say_team !gravity", "ShowMenu);
}

public client_putinserver(id)
{
		atribut[id][0] = false;
		atribut[id][1] = false;
		atribut[id][2] = false;
		atribut[id][3] = false;
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id))
	{
		new Float:fViteza = atribut[id][1] ? 400.0 : VITEZA;
		engfunc(EngFunc_SetClientMaxspeed, id, fViteza);
		set_pev(id, pev_maxspeed, fViteza);
	}
	return HAM_IGNORED;
}

public event_CurWeapon(id)
{
	if(is_user_alive(id))
               {
		set_user_gravity(id, atribut[id][0] ? 1.0 : GRAVITATIE1);
		set_user_gravity(id, atribut[id][1] ? 1.0 : GRAVITATIE2);
		set_user_gravity(id, atribut[id][2] ? 1.0 : GRAVITATIE3);
                }
}
public ShowMenu(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new menu = menu_create("\r[DR] \wSeteaza-ti gravitatia:", "GMenuHandler");

	new text[64];
	formatex(text, charsmax(text), "Gravitatie 400 [%s]", atribut[id][0] == false ? "\rOFF\w" : "\yON\w");
	menu_additem(menu, text, "1");

	formatex(text, charsmax(text), "Gravitatie 700 [%s]", atribut[id][1] == false ? "\rOFF\w" : "\yON\w");
	menu_additem(menu, text, "2");
	
	formatex(text, charsmax(text), "Gravitatie 800 [%s]", atribut[id][2] == false ? "\rOFF\w" : "\yON\w");
	menu_additem(menu, text, "3");

	formatex(text, charsmax(text), "Viteza 500 [%s]", atribut[id][3] == false ? "\rOFF\w" : "\yON\w");
	menu_additem(menu, text, "4");
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	return PLUGIN_CONTINUE;
}

public GMenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	switch(item)
	{
		case 0: 
		{
			atribut[id][0] = !atribut[id][0];
			ColorChat(id, "!1[ %s ] 13Ti-ai setat gravitatia pe 400!", TAG );
		}
		case 1: 
		{
			atribut[id][2] = !atribut[id][1];
			ColorChat(id, "!1[ %s ] 13Ti-ai setat gravitatia pe 700!", TAG );
		}
		case 2: 
		{
			atribut[id][3] = !atribut[id][2];
			ColorChat(id, "!1[ %s ] 13Ti-ai setat gravitatia pe 800!", TAG );
		}
		case 3: 
		{
			atribut[id][1] = !atribut[id][3];
			ColorChat(id, "!1[ %s ] 13Ti-ai setat viteza pe 500 unitati!", TAG );
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

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();
	}
}

Toate bune si frumoase dar:
- Cand intru pe server imi da deja 500 viteza dupa cum l-am setat in sursa
- Se pot activa 2 optiuni deoadata.
- Gravitatia nu mi se schimba cel putin asta am observat...

Doresc sa imi rezolvati cele 3 probleme de mai sus, si daca e viteza sa se poata activa in paralele cu cele 3 optiuni de gravitatie.

Multumesc!
Last edited by Laurentiu P. on 16 Sep 2018, 23:04, edited 1 time in total.
Reason: Topic marcat ca rezolvat!
no...
RoyalServer
User avatar
YONTU
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2466
Joined: 10 May 2013, 14:25
Detinator Steam: Nu
CS Status: Everyone is looking at ur shoes
Reputatie: Moderator ajutator
Fost scripter eXtreamCS
Location: Gura Humorului
Has thanked: 256 times
Been thanked: 288 times
Contact:

08 Sep 2018, 13:03

| Afiseaza codul
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <fakemeta>

// -----------------------------------------------
new const TAG[] = "- DRX -"
// -----------------------------------------------

// -----------------------------------------------
#define VITEZA		500
#define GRAVITATIE1	400
#define GRAVITATIE2	700
#define GRAVITATIE3	800
// -----------------------------------------------

// -----------------------------------------------
#define PLUGIN_NAME "Gravity Menu"
#define PLUGIN_VERSION "1.0.0"
#define PLUGIN_AUTHOR "Laurentiu P. & ciordit din alte surse"
// -----------------------------------------------

// -----------------------------------------------
new gravitatie[33], viteza[33];
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
// -----------------------------------------------

new const Float:g_fMaxSpeed[] = 
{
	0.0,   
	250.0, //p228
	0.0,   //shield
	260.0, //scout
	250.0, //hegrenade
	240.0, //xm1014
	250.0, //c4
	250.0, //mac10
	240.0, //aug
	250.0, //smoke
	250.0, //elite
	250.0, //fiveseven
	250.0, //ump45
	210.0, //sg550
	240.0, //galil
	240.0, //famas
	250.0, //usp
	250.0, //glock
	210.0, //awp
	250.0, //mp5navy
	220.0, //m249
	230.0, //m3
	230.0, //m4a1
	250.0, //tmp
	210.0, //g3sg1
	250.0, //flash
	250.0, //deagle
	235.0, //sg552
	221.0, //ak47
	250.0, //knife
	245.0  //p90
};  

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);
	register_event("CurWeapon", "event_CurWeapon", "be", "1=1");

	register_clcmd("say !gravity", "ShowMenu");
	register_clcmd("say_team !gravity", "ShowMenu");

	arrayset(gravitatie, 0, charsmax(gravitatie));
	arrayset(viteza, 0, charsmax(viteza));
}

public client_putinserver(id)
{
	gravitatie[id] = 0;
	viteza[id] = 0;
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id))
	{
		new Float:fViteza = viteza[id] ? float(VITEZA) : g_fMaxSpeed[get_user_weapon(id)];
		engfunc(EngFunc_SetClientMaxspeed, id, fViteza);
		set_pev(id, pev_maxspeed, fViteza);
	}
	return HAM_IGNORED;
}

public event_CurWeapon(id)
{
	if(is_user_alive(id))
	{
		if(gravitatie[id] != 0)
			set_user_gravity(id, float(gravitatie[id] == 1 ? GRAVITATIE1 : gravitatie[id] == 2 ? GRAVITATIE2 : GRAVITATIE3)/800.0);
	}
}
public ShowMenu(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new menu = menu_create("\r[DR] \wSeteaza-ti gravitatia:", "GMenuHandler");

	new text[64];
	formatex(text, charsmax(text), "Gravitatie %d [%s]", GRAVITATIE1, gravitatie[id] == 1 ? "\rON\w" : "\yOFF\w");
	menu_additem(menu, text, "1");

	formatex(text, charsmax(text), "Gravitatie %d [%s]", GRAVITATIE2, gravitatie[id] == 2 ? "\rON\w" : "\yOFF\w");
	menu_additem(menu, text, "2");
	
	formatex(text, charsmax(text), "Gravitatie %d [%s]", GRAVITATIE3, gravitatie[id] == 3 ? "\rON\w" : "\yOFF\w");
	menu_additem(menu, text, "3");

	formatex(text, charsmax(text), "Viteza %d [%s]", VITEZA, viteza[id] == 1 ? "\rON\w" : "\yOFF\w");
	menu_additem(menu, text, "4");
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	return PLUGIN_CONTINUE;
}

public GMenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	switch(item)
	{
		case 0: 
		{
			gravitatie[id] = 1;
			ColorChat(id, "!1[ %s ] 13Ti-ai setat gravitatia pe %d!", TAG, GRAVITATIE1);
		}
		case 1: 
		{
			gravitatie[id] = 2;
			ColorChat(id, "!1[ %s ] 13Ti-ai setat gravitatia pe %d!", TAG, GRAVITATIE2);
		}
		case 2: 
		{
			gravitatie[id] = 3;
			ColorChat(id, "!1[ %s ] 13Ti-ai setat gravitatia pe %d!", TAG, GRAVITATIE3);
		}
		case 3: 
		{
			viteza[id] = 1;
			ColorChat(id, "!1[ %s ] 13Ti-ai setat viteza pe %d unitati!", TAG, VITEZA);
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

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();
	}
}
cam asta ar fi, daca ai nevoie de explicatii, stau la dispozitie, pm sau aici
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș


Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114

Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 45 guests