PAWN/AMXX - Totalny początek
ADRIANq ^^ 22.10.2011
Cześć,
Jestem totalnie zielony w pawnie/amxx i nie umiem napisac nawet prostego pluginu.
Od czego powinienem zacząć. Znacie jakieś kursy programowania w pawn (nawet płatne) ?
Zakupiłem kurs C++ bo wiem że pawn wywodzi się z tego języka, są jakieś większe powiązania ?
Coś co od totalnego 0 pozwoli mi wybrnąć i tworzyć chociaż proste pluginy.
Dodam że fajnie by było gdyby to był wideokurs.
Użytkownik Uszaty Kundel edytował ten post 22.10.2011 20:20
Jestem totalnie zielony w pawnie/amxx i nie umiem napisac nawet prostego pluginu.
Od czego powinienem zacząć. Znacie jakieś kursy programowania w pawn (nawet płatne) ?
Zakupiłem kurs C++ bo wiem że pawn wywodzi się z tego języka, są jakieś większe powiązania ?
Coś co od totalnego 0 pozwoli mi wybrnąć i tworzyć chociaż proste pluginy.
Dodam że fajnie by było gdyby to był wideokurs.
Użytkownik Uszaty Kundel edytował ten post 22.10.2011 20:20
Onyke
22.10.2011
^Grzyboo
22.10.2011
Proponuję serwer codmod, wszelakie próby jego edycji. Dziecinnie prosta budowa moda sprawia, że jest świetnym materiałem na naukę. Chodzi o starego CODa!
stepdub
22.10.2011
ale mimo wszystko to dużo linijek do ogarnięcia, proponuje ogarnąć jakiś prostszy plugin, a później kolejne i uczyć się ich funkcji stopniowo
mlekowita 22.10.2011
Ja też w tym byłem zielony. Kupiłem serwer bawiłem się szukałem tutoriali co jak samemu zrobić i buch. Trochę już umie Dzisiaj napisałem prosty plugin do resetu rundy
A może sma?
22.10.2011
Zasadniczo to PAWN jest na bazie C, a nie C++
Znaczy ma taką samą składnię Prawie.
Znaczy ma taką samą składnię Prawie.
DarkGL
23.10.2011
większość języków programowania ma podobną składnię , nie chodzi o to żeby nauczyć się składni bo to każdy potrafi ale zrozumieć jak działa programowanie
ADRIANq ^^ 23.10.2011
Dzięki za rady, jakbyście mieli albo znali jakieś wideoarty to tez piszcie. Na pewno się skusze.
@Edit:
Czy ktoś byłby na tyle dobry aby zrobić jakiś prosty plugin dla mnie i wyjaśnić mi poprzez "//" co do czego ?
Użytkownik Uszaty Kundel edytował ten post 23.10.2011 09:36
@Edit:
Czy ktoś byłby na tyle dobry aby zrobić jakiś prosty plugin dla mnie i wyjaśnić mi poprzez "//" co do czego ?
Użytkownik Uszaty Kundel edytował ten post 23.10.2011 09:36
mlekowita 23.10.2011
Wyjaśnię na moim pluginie Jest to prosty plugin polegający na wpisaniu rr lub /rr i pokazuje menu pod 1 są zasady a pod 2 funkcja Restart Rundy
Mi ten plugin działa tak jak sobie to wyobrażałem. Mam nadzieję, że już wiesz coś więcej o pisaniu pluginów.
PS. Nie wiem czy dobrze wytłumaczyłem, bo w tłumaczeniu nie jestem zbytnio dobry
Użytkownik Kacper357 edytował ten post 23.10.2011 10:18
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "RestartRound" #define VERSION "1.0" #define AUTHOR "Kacper" public plugin_init() { // rozpoczynamy plugin register_plugin(RestartRound, 1.0, Kacper) register_clcmd("say /rr","funkcja") // pod jaka komenda ma byc wyswietlane menu register_clcmd("say rr","funkcja") // up mozna dodac dwie komendy } // Wyglad menu i kto ma do niego dostep. public funkcja(id){ new menu = menu_create("RestartRound Menu","sterowanie") // główna nazwa naszego menu menu_additem(menu," Zasady","1",ADMIN_MENU) // 1 opcja w naszym menu . ADMIN_MENU czyli admin który ma dostęp do amxmodmenu menu_additem(menu," Restart Rundy","2",ADMIN_PASSWORD) // 2 opcja w naszym menu. ADMIN_PASSWORD czyli admin który ma dostęp do amx_cvar menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) // opcja do zamknięcia menu menu_display(id,menu,0) } // uczymy plugin co i jak public sterowanie(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:{ show_motd(id,"zasady.txt","Zasady") // case 1:{ oznacza 1 opcje w menu. show_mot(id,"zasady.txt","Zasady") - czyta plik zasady.txt z cstrike } case 2:{ client_cmd(id,"sv_restart 1") // client_cmd(id,"sv_restart 1") wywołuje komende u admina w consoli } } menu_destroy(menu) return PLUGIN_HANDLED }
Mi ten plugin działa tak jak sobie to wyobrażałem. Mam nadzieję, że już wiesz coś więcej o pisaniu pluginów.
PS. Nie wiem czy dobrze wytłumaczyłem, bo w tłumaczeniu nie jestem zbytnio dobry
Użytkownik Kacper357 edytował ten post 23.10.2011 10:18
ADRIANq ^^ 23.10.2011
Dzięki, zaraz coś pokombinuje
Oto moje wypocinki na podstawie pluginu kacpera
Są jakieś błędy ?
Użytkownik Uszaty Kundel edytował ten post 23.10.2011 10:43
Oto moje wypocinki na podstawie pluginu kacpera
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Update Menu"
#define VERSION "1.0"
#define AUTHOR "Uszaty"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /update","funkcja") // pod jaka komenda ma byc wyswietlane menu
register_clcmd("say update","funkcja") // up mozna dodac dwie komendy
register_clcmd("say upd@te","funkcja") // up mozna dodac trzy komendy
register_clcmd("say /upd@te","funkcja") // up mozna dodac cztery komendy
}
// Wyglad menu i kto ma do niego dostep.
public funkcja(id){
new menu = menu_create("Menu Updatow","sterowanie") // główna nazwa naszego menu
menu_additem(menu,"y Update 22 Pazdziernik","1",ADMIN_USER) // 1 opcja w naszym menu . ADMIN_USER czyli gracz.
menu_additem(menu,"y Update 10 Pazdziernik","2",ADMIN_USER) // 2 opcja w naszym menu. ADMIN_USER czyli gracz.
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) // opcja do zamknięcia menu
menu_display(id,menu,0)
}
// uczymy plugin co i jak
public sterowanie(id,menu,item){
if(item == MENU_EXIT)
{
menu_destroy(menu) /* To akurat z PHP znam destroy, zamknij */
return PLUGIN_HANDLED
}
new data[6], iName[64] // Tych linijek od tej do 3 w dół nie kumam
new acces, callback
menu_item_getinfo(menu, item, acces, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:{
show_motd(id,"uptodate2310.txt","Update 22 Pazdziernik") // Otworz plik uptodate2310.txt
}
case 2:{
show_motd(id,"uptodate1010.txt","Update 10 Pazdziernik") // Otworz plik uptodate1010.txt
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
Są jakieś błędy ?
Użytkownik Uszaty Kundel edytował ten post 23.10.2011 10:43
mlekowita 23.10.2011
Z tego co widzę są to dzienniki zmian na serwerze ?
Tutaj dodałeś y więcj efekt jest taki jaki jest. + dałeś ADMIN_USER czyli gracze będą mogli z tego korzystać a admini nie
http://amxx.pl/uploa...451__update.png
Ale brawo. Napisałeś swój 1 plugin
Użytkownik Kacper357 edytował ten post 23.10.2011 11:09
menu_additem(menu,"y Update 22 Pazdziernik","1",ADMIN_USER) // 1 opcja w naszym menu . ADMIN_USER czyli gracz. menu_additem(menu,"y Update 10 Pazdziernik","2",ADMIN_USER) // 2 opcja w naszym menu. ADMIN_USER czyli gracz.
Tutaj dodałeś y więcj efekt jest taki jaki jest. + dałeś ADMIN_USER czyli gracze będą mogli z tego korzystać a admini nie
http://amxx.pl/uploa...451__update.png
Ale brawo. Napisałeś swój 1 plugin
Użytkownik Kacper357 edytował ten post 23.10.2011 11:09
ADRIANq ^^ 23.10.2011
Ok, dzięki. Jak zrobić żeby gracze i admini (wszyscy) mogli patrzeć ?
y trzeba wywalić.
Tak to dziennik zmian co było na serwerze. Możesz mi jeszcze powiedzieć jak zrobić drugą stronę czy robi się ona automatycznie ? Np. mam już 7 dzienników i 8 chcę żeby był już na 2 stronie.
y trzeba wywalić.
Tak to dziennik zmian co było na serwerze. Możesz mi jeszcze powiedzieć jak zrobić drugą stronę czy robi się ona automatycznie ? Np. mam już 7 dzienników i 8 chcę żeby był już na 2 stronie.
mlekowita 23.10.2011
Na przykład.
Powinny się same dorobić strony. Jeżeli nie to napisz. Coś wykombinujemy.
Użytkownik Kacper357 edytował ten post 23.10.2011 12:17
menu_additem(menu," Update 10 Pazdziernik","2",ADMIN_USER,ADMIN_CHAT) // 2 opcja w naszym menu. ADMIN_USER czyli gracz i ADMIN_CHAT czyli admin który może użyć say@
Powinny się same dorobić strony. Jeżeli nie to napisz. Coś wykombinujemy.
Użytkownik Kacper357 edytował ten post 23.10.2011 12:17
Droso
23.10.2011
#include <amxmodx> #include <hamsandwich> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Administrator" public plugin_init() { // plugin_int poczatek mapy register_plugin(PLUGIN, VERSION, AUTHOR) // rejestrowanie pluginu RegisterHam(Ham_Spawn, "player", "respawn", 1) // ham_spawn respawn gracza nie jest to nowa runda bo moze gracz tez sie odrodzic w polowie rundy (reconnect <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />) server_print("Poczatek mapy:D"); } public plugin_end() // koniec mapy wywolywane tez przed zmiana { server_print("Zmiana mapy <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />"); // kiedy jest koniec mapy w konsoli serwera wsyswietli wiadomosc <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' /> } public respawn(id){ // respawn gracza (zajesestrowany w register ham) if(is_user_alive(id) // sprawdzamy czy gracz zyje pewnie spytasz po co to skoro to respawn gracza <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' /> ? Ale gracz tez moze byc na spect a wtedy nie zyje <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' /> client_print(id, print_chat, "Juz zyjesz <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />") // wiadomosc do gracza // id to id gracza jezeli wpiszesz 0 wiadomosc wyswietli sie kazdemu }
Zajrzyj do dokumentacji naucz sie warunków (if)
Potem już tylko poradniki
Polecam ci popatrzeć w kod cod moda starego bo jest napisany po polsku :DD
Użytkownik HubertTM edytował ten post 23.10.2011 15:04
Toldi
04.02.2016
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <fun> #include <colorchat> #define PLUGIN "Hp & armor" #define VERSION "1.0" #define AUTHOR "Toldi" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /hparmor","zycie"); // rejestruje komende jaka gracz musi wpisac aby wylowac funkcje zycie } public zycie(id){ // przygotowuje plugin do wykonania funkcji zycie if(!is_user_alive(id)) //sprawdza czy gracz zyje client_print(id, print_chat, "Jestes nie zywy. Nie mozesz uzyc tej komendy") //Pokazuje informacje ze gracz jest nie zywy. { set_user_health(id, 120); // jesli gracz jest zywy dodaje mu 120 hp set_user_armor(id, 200); // jesli gracz jest zywy dodaje my 200 armora ColorChat(id, GREEN, "^x01 Dostales^x04 120 ^x03hp^x01 i^x04 200^x03 armora!") // Pokazuje informacje graczowi w kolorze ze dostal 120 hp i 200 armora. //^x01 - Standardowy kolor czyli taki jaki jest na sayu //^x03 - Kolor druzyny //^x04 - Kolor zielony ColorChat(id, GREEN, "^x01 Plugin zostal napisany przez^x04 Toldi") // Informuje gracza kto napisal plugin return PLUGIN_HANDLED; } }
Jest to moj 1 plugin ale działa tak jak chciałem Łap i patrz. Sam sb popisałem te komentarze zeby mi sie to utrwalało. Plugin naprawdę łatwy. Mam zamiar go ulepszać ciągle różnymi rzeczami gdy tylko naucze się czegoś.
#define <colorchat>
ten moduł musisz sb sciągnąc z neta bo nie ma go wgranego w amx studio.
Użytkownik Toldi edytował ten post 04.02.2016 21:36