←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

to działa?

Locked

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

Chciałem spróbować swoich sił w pluginach itp. i zrobiłem swój pierwszy plugin.
na razie sztywno według poradników ale trochę też improwizowałem
Tak więc mam pytanie czy ten plugin ma prawo działać?

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

#define PLUGIN "VIP powers"
#define VERSION "1.0"
#define AUTHOR "Grafer"


public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_clcmd("amx_power", "menu")
    
}

public menu(id)
{
    new menu = menu_create("rMoce VIP:", "wybieranie")
    menu_additem(menu, "wWiecej HP", "1", ADMIN_IMMUNITY)
    menu_additem(menu, "wMniejsza Grawitacja", "2", ADMIN_IMMUNITY)

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)

    menu_display(id, menu, ADMIN_IMMUNITY)
}

public wybieranie(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
    new data[6], iName[64]
    new acces, callback
    menu_item_getinfo(menu, item, acces, data,5, iName, 63, callback)

    new key = str_to_num(data)
    switch(key)
    {
        case 1:{
            set_user_health(id, 150)
            client_print(id,print_chat,"Zycie zwiekszone o polowe.");
        }

        case 2:{
            set_user_gravity(id,0.50)
            client_print(id,print_chat,"Grawitacja zmniejszona o polowe.");
        }
    }
    menu_destroy(menu)
    return PLUGIN_HANDLED
}
Quote

  • +
  • -
wizu's Photo wizu 01.01.2009

Po 1:
client_print(id, set_user_health(id, 150))
Ta funkcja służy do wyświetlania tekstu w konsoli (client_print), a ta set_user_health do zmieniani ilosc hp gracza, wiec to nie ma sensu.
To samo to:
client_print(id, set_user_gravity(id,0.50))

Poza tym ja tam się na robieniu menu nie znam, wiec Ci więcej nie pomogę ;)
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

a teraz?
Quote

  • +
  • -
R3X's Photo R3X 01.01.2009

client_print(id, set_user_gravity(id,0.50))
Próbowałeś to skompilować? tak na pewno nie będzei działać. Radzę:
client_print(id,print_chat,"Grawitacja zmniejszona o polowe.");
 set_user_gravity(id,0.50)
Identycznie z hp
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

a po za tymi linijkami są jeszcze jakieś błędy?
Quote

  • +
  • -
grankee's Photo grankee 01.01.2009

R3X odwrotnie
nie

client_print(id,print_chat,"Grawitacja zmniejszona o polowe.");
set_user_gravity(id,0.50)

Tylko

set_user_gravity(id,0.50)
client_print(id,print_chat,"Grawitacja zmniejszona o polowe.");

Jeśli powstał by jakiś błąd przy ustawianiu grawitacji to funkcja kończy swoje działanie i w Twojej wersji zostanie wypisane graczowi, że ustawiono grawitacje, ale jej nie ustawi, a w mojej wersji jeśli błąd spowoduje zakończenie funkcji to nic nie zostanie zmienione, ale i nie zostanie wypisane.

Dlatego należy zawsze najpierw wykonywać operacje, a dopiero po jej wykonaniu wypisywać info
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

poprawiłem według waszych wskazówek
teraz powinno działać?

P.S.
Jak próbuje to skompilować w kompilatorze na amxx.pl to wyskakuje

Nie udało się skompilować pluginu. Przeczytaj poniższy bład:

ale ów błąd nie jest pokazywany. To wina mojego pluginu, czy kompilatora?
Quote

  • +
  • -
R3X's Photo R3X 01.01.2009

Możliwe. Ja wolę zawsze widzieć efekt mojego działania - a wystarczy skoczyć by się upewnić o grawitacji.
Komenda amx_menu już istnieje, zmień nazwę

Edit.
Skompiluj lokalnie.

Pomysł na optymalizację:
menu_destroy(menu)
    return PLUGIN_HANDLED
Występuje w każdym case: i na dodatek po nim. Wystarczyłoby to drugie.
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

zobacz czy o to ci chodziło i w dobrym miejscu usunąłem

P.S.
bo nigdy nie kompilowałem lokalnie, więc jak to się robi?
Quote

  • +
  • -
R3X's Photo R3X 01.01.2009

Dobrze.
Ściągnij AMXX Pawn Studio http://sourceforge.n... ... _final.zip

Jak zainstalujesz to otwórz i naciśnij F12.
Tam
Compiler->Compiler Settings
Wskaż położenie amxxpc.exe (w addons/amxmodx/scripting/)
I docelowy katalog: Default Output directory zmień na addons/amxmodx/plugins/

Potem pisz plugin i naciśnij F9
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

amxxpc.exe mam w AMX Mod Xfilesbasescripting < tak tez moze byc?
i jak wpisze ten plugin i nacisne F9 to pod jaką nazwą i gdzie się zapisze? tam gdzie ustawiłem Default Output directory ?
Quote

  • +
  • -
R3X's Photo R3X 01.01.2009

Może być, to ten sam kompilator. Nazwę sam podajesz: jeśli edytujesz plik moj_plugin1.sma to otrzymasz moj_plugin1.amxx. Tak zapisze w katalogu który podałeś jako Default Output directory.
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

Error: Expected token ",", but found "-inentifier=" on line 45
Error: Expected token ",", but found "-inentifier=" on line 51

Could not locate output file C:adresvipowers.amx

oto te linjki
client_print(id, set_user_health(id, 150)

client_print(id, set_user_gravity(id,0.50)


taki błąd mi wywala przy kompilowaniu
Quote

  • +
  • -
R3X's Photo R3X 01.01.2009

Ten błąd już chyba raz poprawialiśmy :lol: próbuj kompilować to, co aktualnie masz w pierwszym swoim poście.
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

sorry, ;D zapomniałem zapisać poprawionego pliku
Quote

  • +
  • -
R3X's Photo R3X 01.01.2009

Na razie nie potrzebujesz
#include <amxmisc>
#include <cstrike>

a i fun mógłbyś zastąpić fakemeta, oczywiście wprowadzając odpowiednie zmiany w kodzie.
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

a jakie te zmiany w kodzie miałyby być?
Quote

  • +
  • -
R3X's Photo R3X 01.01.2009

Chodzi tylko o sposób wykonania; ten sam efekt można osiągnąć na kilka sposobów. Mówią, że fakemeta działa szybciej i lepiej niż fun.

//wersja fun
set_user_health(id, 150);

//wersja fakemeta
set_pev(id, pev_health, 150.0);
Podobnie i grawitacja:
set_pev(id, pev_gravity,0.5);


Tu masz listę wszystkich:
http://www.amxmodx.o... ... #const_pev
Quote

  • +
  • -
zGraferz's Photo zGraferz 01.01.2009

i wystarczy zmienić tylko "set_user_health(id, 150); " na "set_pev(id, pev_health, 150.0);" oraz "set_user_gravity(id, 150); " na "set_pev(id, pev_gravity,0.5);" i zamiast "#include <cstrike>" dać "#include <fakemeta>" ?
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 01.01.2009

zamiast "#include <cstrike>" dać "#include <fakemeta>

zamiast fun'a a nie cstrike'a



fakemata może też być zamiast engine'a jak się człowiek uprze ;)
Quote
Locked