←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Moj pierwszy plugin.

  • +
  • -
FeelMySkill - zdjęcie FeelMySkill 24.07.2012

Witam, dzis napisalem swój pierwszy prosty plugin, dziala i tu moje pytanie:
czy w kodzie wszystko jest okej?
i drugie: jak zrobić by komenda mogła być użyta raz na rundę?
Dzięki i proszę sie nie smiać, dzis zaczalem sie tym bawic dopiero ;)


/* Plugin generated by AMXX-Studio */

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

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /nic","tekst")
// Add your code here...
}
public tekst(id)
{
set_user_health(id,200)
set_user_gravity(id,0.50)
set_user_armor(id,67)
give_item(id,"weapon_m4a1")
give_item(id,"ammo_556nato")
client_print(id,print_chat,"To moj pierwszy plugin")
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1250\\ deff0\\ deflang1045{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/


Użytkownik FeelMySkill edytował ten post 24.07.2012 21:58
Odpowiedz

Blood Angel - zdjęcie Blood Angel 24.07.2012

Poprawił bym.

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

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /nic","tekst")
// Add your code here...
}
public tekst(id)
{
if(is_user_alive(id)) {
set_user_health(id, 200)
set_user_gravity(id, 0.50)
set_user_armor(id, 67)
give_item(id,"weapon_m4a1")
give_item(id,"ammo_556nato")
client_print(id,print_chat,"To moj pierwszy plugin")
}
else
client_print(id,print_chat,"Musisz byc zywy")
}
Odpowiedz

  • +
  • -
FeelMySkill - zdjęcie FeelMySkill 24.07.2012

To co podales to bedzie dzialac tylko wtedy gdy gracz zyje? Potrzebuje wiedziec jak tez zrobic zeby bylo ze mozna raz na runde, oczywiscie @up masz+ za chęci .
Użytkownik FeelMySkill edytował ten post 24.07.2012 22:10
Odpowiedz

Gość_21977_* 24.07.2012

Stwórz globalną tablicę 33elementową typu boolowskiego.
W momencie rozpoczęcia nowej rundy
register_logevent("logevent_round_start", 2, "1=Round_Start")
zmień wszystkim graczom wartość na false jako niewykorzystaną komendę w tej rundzie.
Po wpisaniu komendy, jeśli dla danego gracza wartość wynosi false, to znaczy, że w tej rundzie jeszcze nie grał i możesz mu śmiało dodać przedmioty, pamiętając o zmianie wartości tablicy dla danego gracza na true.
Jeśli wartość wynosi true, to nie pozwól na dodanie przedmiotów, możesz także dodać stosowny komunikat. Gotowego kodu chyba nie muszę przedstawiać? ;)
Odpowiedz

  • +
  • -
FeelMySkill - zdjęcie FeelMySkill 24.07.2012

Chyba napisalem ze 1wszy dzien się z tym bawie :)
Odpowiedz

Gość_21977_* 24.07.2012

Mam nadzieję, że zrozumiesz, postarałem się dodać przyjazne komentarze
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new bool:wpisano_komende[33];

public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /nic","tekst");
register_logevent("logevent_round_start", 2, "1=Round_Start"); // rejestrujemy zdarzenie nowej rundy (koniecznie!)
}

public tekst(id){
if(is_user_alive(id)){
if(wpisano_komende[id]){ // dodatkowy warunek, ktowy sprawdza, czy uzyto juz kkomendy w tej rundzie
client_print(id,print_chat, "Juz wpisales raz komende w tej rundzie"); // uzyto komendy, wiec nie wykonujemy jej
} else { // nie wykonano komendy, wiec mozemy dodac arsenal
set_user_health(id, 200);
set_user_gravity(id, 0.50);
set_user_armor(id, 67);
give_item(id, "weapon_m4a1");
give_item(id, "ammo_556nato");
client_print(id,print_chat, "To moj pierwszy plugin");
wpisano_komende[id]=true; // nie zapomnijmy ustawic, ze komende juz wykonano, zeby zapobiec kolejnym jej wykonaniom
}// az do czasu nowej rundy (logevent_round_start), kiedy na nowo ustawimy wszystkim wpisano_komende na false
} else {
client_print(id,print_chat,"Musisz byc zywy");
}
}

public logevent_round_start(){ // tutaj wykonywane jest to zdarzenie (zdarzenie nowej rundy, zarejestrowane w plugin_init)
for(new id=1;id<=32;++id){ // dla kazdego gracza (id wynosza od 1 do max. 32)
wpisano_komende[id]=false; // zmieniamy wartosc na false, czyli, ze nie wpisywano komendy jeszcze w tej rundzie
}
}
Odpowiedz

  • +
  • -
FeelMySkill - zdjęcie FeelMySkill 25.07.2012

Okej czaje, jak są takie komentarze mozna latwo zrozumiec, dzięki, ale to "wpisano_komende" to jest jakas nowa funkcja czy coś? tego nie trzeba rejestrować?
Masz +-sy
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 25.07.2012

new bool:wpisano_komende[33];


stworzono nową zmienną, której wartość można zmieniać a potem np. wykorzystywać do warunków.
wartosc 33 elementowa ponieważ maksymalna ilość ludzi na serwerze jest ( a raczej może ) równa 32.
Najlepiej poczytaj se to
http://amxx.pl/topic...ienne-co-i-jak/
Odpowiedz

  • +
  • -
FeelMySkill - zdjęcie FeelMySkill 25.07.2012

Okej dzięki, poczatkowo nie zauwazylem tego :P poczytam, poczytam:_)
Odpowiedz