- 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!