Witam powoli uczę się pisać plugini i za pomocą jednego z poradników zrobiłem menu z komendami. i okazuje się, że ludzie z non steam nie działa
Zasada pluginu jest prosta wpisujesz /komendy masz listę komend wybierasz i się wywołuje. ale graczom non steam pojawia się takie coś [CSXGuard] "say /sklep": (SD Blocked)
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "komendy"
#define VERSION "1.0"
#define AUTHOR "xmox"
new komendy;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /komendy", "nowemenu");
komendy = menu_create("lista komend","nowemenuhandle");
menu_additem(komendy,"Zaloguj sie ");//item = 0
menu_additem(komendy,"Sklep ");//item = 1
menu_additem(komendy,"Sklep SmS");//item = 2
menu_additem(komendy,"Przekaz guziki ");//item = 3
menu_additem(komendy,"Widok z trzeciej osoby ");//item = 4
menu_additem(komendy,"Widok z pierwszej osoby ");//item = 5
menu_additem(komendy,"Wycisz gracza ");//item = 6
menu_additem(komendy,"Menu rang ");//item = 7
menu_additem(komendy,"Info o VIP ");//item = 8
menu_additem(komendy,"wyłącz HUD");//item = 9
menu_setprop(komendy, MPROP_EXITNAME, "Wyjscie");
}
public nowemenu(id){
menu_display(id, komendy);
return PLUGIN_HANDLED;
}
public nowemenuhandle(id, menu, item){
if(item == MENU_EXIT) {
return PLUGIN_HANDLED;
}
switch(item) {
case 0:{
client_cmd(id, "say /konto");
}
case 1:{
client_cmd(id, "say /sklep");
}
case 2:{
client_cmd(id, "say /sklepsms");
}
case 3:{
client_cmd(id, "say /daj");
}
case 4:{
client_cmd(id, "say /thirdperson");
}
case 5:{
client_cmd(id, "say /firstperson");
}
case 6:{
client_cmd(id, "say /mute");
}
case 7:{
client_cmd(id, "say /rangmenu");
}
case 8:{
client_cmd(id, "say /vip");
}
case 9:{
client_cmd(id, "say /hud");
}
}
return PLUGIN_HANDLED;
}
Z góry dziękuję za pomoc i pozdrawiam.
Skoro uczysz się pisać pluginy to dam Ci wskazówkę. Najlepiej jakby to menu było napisane w ten sposób:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "komendy"
#define VERSION "1.0"
#define AUTHOR "xmox"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /komendy", "nowemenu");
}
public nowemenu(id)
{
new komendy = menu_create("lista komend", "nowemenuhandle");
menu_additem(komendy, "Zaloguj sie ");//item = 0
menu_additem(komendy, "Sklep ");//item = 1
menu_additem(komendy, "Sklep SmS");//item = 2
menu_additem(komendy, "Przekaz guziki ");//item = 3
menu_additem(komendy, "Widok z trzeciej osoby ");//item = 4
menu_additem(komendy, "Widok z pierwszej osoby ");//item = 5
menu_additem(komendy, "Wycisz gracza ");//item = 6
menu_additem(komendy, "Menu rang ");//item = 7
menu_additem(komendy, "Info o VIP ");//item = 8
menu_additem(komendy, "wyłącz HUD");//item = 9
menu_setprop(komendy, MPROP_EXITNAME, "Wyjscie");
menu_display(id, komendy);
return PLUGIN_HANDLED;
}
public nowemenuhandle(id, menu, item)
{
if(item == MENU_EXIT)
return PLUGIN_HANDLED;
switch(item) {
case 0: client_cmd(id, "say /konto");
case 1: client_cmd(id, "say /sklep");
case 2: client_cmd(id, "say /sklepsms");
case 3: client_cmd(id, "say /daj");
case 4: client_cmd(id, "say /thirdperson");
case 5: client_cmd(id, "say /firstperson");
case 6: client_cmd(id, "say /mute");
case 7: client_cmd(id, "say /rangmenu");
case 8: client_cmd(id, "say /vip");
case 9: client_cmd(id, "say /hud");
}
return PLUGIN_HANDLED;
}
[CSXGuard] "say /sklep": (SD Blocked)
Takie coś wyskakuje wszystkim ns'om którzy pobrali cs z cssetti, ponieważ tam w standardzie jest dodawany skrypt csx guard, który blokuje komendy z configu tego skryptu "CSXGuard.ini" wykonywane przez serwer na graczu. W tym pliku są wpisane komendy "say" i "say_team" dlatego przez natyw client_cmd nie zadziała to na ns'ach.
Albo ludzie którym nie działa Twoje menu, w CSXGuard.ini (w folderze swojego cs'a) wyłączą sobie ten skrypt w ten sposób
Enabled = True
na
Enabled = False
bądź w konsoli gry wpiszą sobie komendę csx guarda
csx_setcvar2 "Enabled" "False"
Albo są jeszcze dwie metody ale ja używam tylko jednej dlatego drugą niech Ci wytłumaczy ktoś kto używa tego natywu https://amxx.pl/doku.../callfunc-begindo omijania guarda
Musisz edytować wszystkie pluginy, które chcesz aby odpalały się przez Twoje menu /komendy, dlatego w tym przypadku prawdopodobnie będziesz miał problem z komendą /sklepsms, ponieważ zapewne go kupiłeś i posiadasz sam plik .amxx bez .sma. W każdym pluginie trzeba zrobić natyw do funkcji którą chcesz wywołać przez swoje menu. Na koniec do swojego pluginu /komendy dopisujesz gdzieś nad "public plugin_init()" wszystkie te natywy z innych pluginów, a później w "case" używasz tych natywów zamiast client_cmd.
Przykład jak stworzyć natyw w jakimś randomowym pluginie:
#include <amxmodx>
#define PLUGIN ".."
#define VERSION ".."
#define AUTHOR ".."
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /konto", "menu_kont");
}
public plugin_natives()
{
register_native("natyw_menukont", "menu_kont", 1);
}
public menu_kont(id)
{
//jakis tam kod na menu
}
Przykład jak go użyć w Twoim menu:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "komendy"
#define VERSION "1.0"
#define AUTHOR "xmox"
native natyw_menukont(id); // na gorze kodu dodajemy stworzony przez nas natyw
new komendy;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /komendy", "nowemenu");
komendy = menu_create("lista komend","nowemenuhandle");
menu_additem(komendy,"Zaloguj sie ");//item = 0
menu_additem(komendy,"Sklep ");//item = 1
menu_additem(komendy,"Sklep SmS");//item = 2
menu_additem(komendy,"Przekaz guziki ");//item = 3
menu_additem(komendy,"Widok z trzeciej osoby ");//item = 4
menu_additem(komendy,"Widok z pierwszej osoby ");//item = 5
menu_additem(komendy,"Wycisz gracza ");//item = 6
menu_additem(komendy,"Menu rang ");//item = 7
menu_additem(komendy,"Info o VIP ");//item = 8
menu_additem(komendy,"wyłącz HUD");//item = 9
menu_setprop(komendy, MPROP_EXITNAME, "Wyjscie");
}
public nowemenu(id){
menu_display(id, komendy);
return PLUGIN_HANDLED;
}
public nowemenuhandle(id, menu, item){
if(item == MENU_EXIT) {
return PLUGIN_HANDLED;
}
switch(item) {
case 0:{
natyw_menukont(id); // tu go uzywamy omijajac w ten sposob csx guarda
}
case 1:{
client_cmd(id, "say /sklep");
}
case 2:{
client_cmd(id, "say /sklepsms");
}
case 3:{
client_cmd(id, "say /daj");
}
case 4:{
client_cmd(id, "say /thirdperson");
}
case 5:{
client_cmd(id, "say /firstperson");
}
case 6:{
client_cmd(id, "say /mute");
}
case 7:{
client_cmd(id, "say /rangmenu");
}
case 8:{
client_cmd(id, "say /vip");
}
case 9:{
client_cmd(id, "say /hud");
}
}
return PLUGIN_HANDLED;
}