Jak zmienić oznaczanie?
Sofcik
30.08.2015
Witam.
Mam plugin, który za pomocą komendy /oznacz oznacza wybranego gracza danym kolorem. Chciałbym by zamiast tego oznaczanie gracza było za pomocą najechania na niego i naciśnięcia guzika "E" i aby był ozaczany na kolor zielony. Oto sma pluginu:
#include <amxmodx> #include <amxmisc> #include <fakemeta_util> new opcja, gracz_id[33], wybrany; new name[33]; public plugin_init() { register_plugin("plugin", "1.0", "sweeper"); register_clcmd("say /oznacz", "oznacz"); } public oznacz(id) { if(get_user_team(id) != 2) return PLUGIN_HANDLED; new tytul[64]; format(tytul, 63, "\rJB Kolor Menu"); new menu = menu_create(tytul, "oznacz_handler"); menu_additem(menu, "Ustaw Kolor"); menu_display(id, menu); return PLUGIN_HANDLED; } public oznacz_handler(id, menu, item) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0: { Gracz(id); opcja = 1; } } return PLUGIN_CONTINUE; } public Gracz(id) { new menu = menu_create("Wybierz gracza:", "Gracz_handler"); for(new i=0, n=0; i<=32; i++) { if(!is_user_connected(i)) continue; gracz_id[n++] = i; new nazwa_gracza[64]; get_user_name(i, nazwa_gracza, 63) menu_additem(menu, nazwa_gracza, "0", 0); } menu_display(id, menu); } public Gracz_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } wybrany = gracz_id[item]; get_user_name(wybrany, name, 32); if(opcja == 1) wybierz_kolor(id); return PLUGIN_HANDLED; } public wybierz_kolor(id) { new tytul[25]; format(tytul, 24, "\yKolory:"); new menu = menu_create(tytul, "kolory_handler"); menu_additem(menu, "Niebieski"); menu_additem(menu, "Zielony"); menu_additem(menu, "Czerwony"); menu_display(id, menu); } public kolory_handler(id, menu, item) { if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_CONTINUE; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0: { fm_set_user_rendering(wybrany, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25) client_print(id, print_chat, "Ustawiles graczowi %s kolor niebieski!", name); } case 1: { fm_set_user_rendering(wybrany, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 25) client_print(id, print_chat, "Ustawiles graczowi %s kolor zielony!", name); } case 2: { fm_set_user_rendering(wybrany, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25) client_print(id, print_chat, "Ustawiles graczowi %s kolor czerwony!", name); } } return PLUGIN_CONTINUE; }
Chciałbym tez żeby po oznaczeniu gracza pojawiło mu sie pole wyboru jednego z kilku kolorów i gdy jeden wybierze by na czacie pojawiało się info: :Gracz (jego nick) wybrał kolor (np zielony)".
Kolorydo wyboru:
-niebieski;
-zielony;
-fioletowy;
-różowy;
-żółty;
-czerwony.
Użytkownik Sofcik edytował ten post 30.08.2015 19:24
radim
03.09.2015
#include < amxmodx > #include < fakemeta > #include < fun > new chosen public plugin_init( ) { register_plugin( "Oznacz", "1.0", "radim" ) register_clcmd( "+use", "Choose" ) } public Choose( id ) { new tid, body, target[ 33 ] get_user_aiming( id, tid, body ) get_user_name( tid, target, charsmax( target ) ) new player = find_player( "a", target ) if( player ) { chosen = player ColorMenu( id ) } else client_print( id, print_chat, "Nie znaleziono celu!" ) } public ColorMenu( id ) { new iMenu = menu_create( "Wybierz Kolor", "ColorMenu_Handler" ); menu_additem( iMenu, "Zielony" ); menu_additem( iMenu, "Niebieski" ); menu_additem( iMenu, "Fioletowy" ); menu_additem( iMenu, "Rozowy" ); menu_additem( iMenu, "Zolty" ); menu_additem( iMenu, "Czerwony" ); menu_display( id, iMenu ); } public ColorMenu_Handler( id, iMenu, iItem ) { if( iItem == MENU_EXIT ) return; switch( iItem ) { case 0: set_user_rendering( chosen, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 25 ) case 1: set_user_rendering( chosen, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25 ) case 2: set_user_rendering( chosen, kRenderFxGlowShell, 148, 0, 211, kRenderNormal, 25 ) case 3: set_user_rendering( chosen, kRenderFxGlowShell, 249, 132, 229, kRenderNormal, 25 ) case 4: set_user_rendering( chosen, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 25 ) case 5: set_user_rendering( chosen, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25 ) } }
Linux'
03.09.2015
#include < amxmodx > #include < fakemeta > #include < fun > new chosen public plugin_init( ) { register_plugin( "Oznacz", "1.0", "radim" ) register_clcmd( "+use", "Choose" ) } public Choose( id ) { new tid, body, target[ 33 ] get_user_aiming( id, tid, body ) get_user_name( tid, target, charsmax( target ) ) new player = find_player( "a", target ) if( player ) { chosen = player ColorMenu( id ) } else client_print( id, print_chat, "Nie znaleziono celu!" ) } public ColorMenu( id ) { new iMenu = menu_create( "Wybierz Kolor", "ColorMenu_Handler" ); menu_additem( iMenu, "Zielony" ); menu_additem( iMenu, "Niebieski" ); menu_additem( iMenu, "Fioletowy" ); menu_additem( iMenu, "Rozowy" ); menu_additem( iMenu, "Zolty" ); menu_additem( iMenu, "Czerwony" ); menu_display( id, iMenu ); } public ColorMenu_Handler( id, iMenu, iItem ) { if( iItem == MENU_EXIT ) return; switch( iItem ) { case 0: set_user_rendering( chosen, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 25 ) case 1: set_user_rendering( chosen, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25 ) case 2: set_user_rendering( chosen, kRenderFxGlowShell, 148, 0, 211, kRenderNormal, 25 ) case 3: set_user_rendering( chosen, kRenderFxGlowShell, 249, 132, 229, kRenderNormal, 25 ) case 4: set_user_rendering( chosen, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 25 ) case 5: set_user_rendering( chosen, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25 ) } }
+use? . Przeciez to nie zadziala.
Asiap
07.09.2015
o bosh, nawet moderator napisac prostego kodu poprawnie nie potrafi, wstyd
#include <amxmodx> #include <fakemeta> new g_hMenuColors; public plugin_init() { register_forward(FM_CmdStart, "CmdStart"); g_hMenuColors = menu_create("Wybierz kolor", "HandleChooseColor"); menu_additem(g_hMenuColors, "Niebieski", "000000255"); menu_additem(g_hMenuColors, "Zielony", "000255000"); menu_additem(g_hMenuColors, "Fioletowy", "163073164"); menu_additem(g_hMenuColors, "Rozowy", "255174201"); menu_additem(g_hMenuColors, "Zolty", "255255000"); menu_additem(g_hMenuColors, "Czerwony", "255000000"); menu_setprop(g_hMenuColors, MPROP_EXIT, MEXIT_NEVER); } public CmdStart(id, iUCHandle) { if(!is_user_alive(id) || get_user_team(id) != 2) { return; } static iPid, iBody; get_user_aiming(id, iPid, iBody); if(!is_user_alive(iPid) || get_user_team(iPid) != 1 || ~get_uc(iUCHandle, UC_Buttons) & IN_USE || pev(id, pev_oldbuttons) & IN_USE) { return; } menu_display(iPid, g_hMenuColors); } public HandleChooseColor(id, menu, item) { if(!is_user_alive(id)) { return; } static szColor[10], szRGB[10], iBitAccess, iCallBack; menu_item_getinfo(menu, item, iBitAccess, szRGB, 9, szColor, 9, iCallBack); static szName[32], iColor[3], Float:fColor[3], iRGB, i; get_user_name(id, szName, 31); iRGB = str_to_num(szRGB); iColor[0] = iRGB / 1000000; iRGB %= 1000000; iColor[1] = iRGB / 1000; iColor[2] = iRGB % 1000; for(i = 0; i < 3; i++) { fColor[i] = float(iColor[i]); } set_pev(id, pev_renderfx, kRenderFxGlowShell); set_pev(id, pev_rendermode, kRenderNormal); set_pev(id, pev_renderamt, 25.0); set_pev(id, pev_rendercolor, fColor); client_print(0, print_chat, "Gracz %s wybral kolor %s", szName, szColor); }
radim
07.09.2015
Jeżeli nie napisałem kodu poprawnie, udowodnij mi błąd i pokaż, że plugin nie będzie działał w praktyce Było to moje ponowne spotkanie z amxx'em po długiej przerwie, błąd każdemu może się zdarzyć tak jak i mi w pierwszym poście. Tacy odważani delikwenci jak Ty byli już na tym forum i nie skończyli zbyt dobrze. Ale pierwszy raz mi się zdarza takie prostactwo i bezczelność ze strony kobiety. Nie traktuj tego jako groźby, a raczej jako przestrogę aby na przyszłość podchodzić do czegoś z dystansem i nie reprezentować sobą pyszałkowatego zachowania.
Co do kodu. Prawda, nie doczytałem dokładnie próśb autora aby menu otwierało się graczu wybranemu. Już poprawione.