←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

PAWN/AMXX - Totalny początek

ADRIANq ^^ - zdjęcie 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
Odpowiedz

  • +
  • -
^Grzyboo - zdjęcie ^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!
Odpowiedz

  • +
  • -
stepdub - zdjęcie 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 :)
Odpowiedz

mlekowita - zdjęcie 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 :D Dzisiaj napisałem prosty plugin do resetu rundy :D
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 22.10.2011

Zasadniczo to PAWN jest na bazie C, a nie C++ :D
Znaczy ma taką samą składnię :P Prawie.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie 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
Odpowiedz

ADRIANq ^^ - zdjęcie 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
Odpowiedz

mlekowita - zdjęcie mlekowita 23.10.2011

Wyjaśnię na moim pluginie :D Jest to prosty plugin polegający na wpisaniu rr lub /rr i pokazuje menu pod 1 są zasady a pod 2 funkcja Restart Rundy :)


/* 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 :D
Użytkownik Kacper357 edytował ten post 23.10.2011 10:18
Odpowiedz

ADRIANq ^^ - zdjęcie ADRIANq ^^ 23.10.2011

Dzięki, zaraz coś pokombinuje

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
Odpowiedz

mlekowita - zdjęcie mlekowita 23.10.2011

Z tego co widzę są to dzienniki zmian na serwerze ? :)


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
Odpowiedz

ADRIANq ^^ - zdjęcie 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.
Odpowiedz

mlekowita - zdjęcie mlekowita 23.10.2011

Na przykład.

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. ;P
Użytkownik Kacper357 edytował ten post 23.10.2011 12:17
Odpowiedz

ADRIANq ^^ - zdjęcie ADRIANq ^^ 23.10.2011

Ok
Odpowiedz

mierzwi - zdjęcie mierzwi 23.10.2011

jak chcesz żeby wszyscy mogli to wpisujesz 0
Odpowiedz

  • +
  • -
Droso - zdjęcie 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
Odpowiedz

  • +
  • -
Toldi - zdjęcie 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
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 08.02.2016

Mamy chyba rekordowy odkop na forum ^^

Odpowiedz