Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
* * * * * 1 głosy

Challenge - wyzwania i nagrody


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
130 odpowiedzi w tym temacie

#61 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 12:17

[ 37] Challenge 1.3.1 R3X challenge.amxx debug
a dałbym sobie reke uciać, że wgrywalem 1.5 które sciagnalem z pierwszego postu w temacie.
cos jest nie tak w plikach, mógłbyś mi podrzucić najnowsza wersję?


EDIT: Dobra, działa. W paczce 1.5 jest sma w wersji 1.5 ale skompilowany plugin wersji 1.3.1 Moznaby było to poprawic i wrzucic jeszcze raz? Pewnie jeszcze ktos sie na tym przejedzie.

Jeszcze jedno pytanie.
Ten plugin dodaje 1000$ tylko raz czy na poczatku kazdej rundy?

Użytkownik Syczaj edytował ten post 02.07.2011 12:31

  • +
  • -
  • 0
Dołączona grafika

#62 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 12:55

Nie przejmowałem się .amxx, bo myślałem, że odpowiedzialny admin sprawdzi .sma i sobie skompiluje plugin :P wrzuciłem poprawioną paczkę

tamto daje tylko raz, tu masz co zrobić żeby było też co rundę: [Challenge] Gotowce i przykłady - AMXX.pl: Support AMX Mod X
  • +
  • -
  • 0

#63 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 14:47

Przepraszam, ze tak ciagle placze tutaj, ale dość mnie ten plugin zainteresował.
Chciałem aby dodawał doświadczenie w diablomodzie. Niestety plugin nie wykonuje komendy. Coś zrobiłem źle? bo nie moge doszukac się błędu,

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

#include <challenge>

#define PLUGIN "Challenge Szybkie Info"
#define VERSION "1.0"
#define AUTHOR "R3X"

new const gszChallenge[]= "Zabij 5 przeciwnikow z noza";
new const gszAward[] = "+4500 EXP";

new chid;

new gDone[33];

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);

//dodaj wyzwanie do listy
chid = register_challenge(gszChallenge, gszAward);

//wlacz automatyczne zlicznie zabic nozem
challenge_uses_stats(CSW_KNIFE);
}

//Funkcja ulatwiajaca sprawdzenie czy gracz spelnia warunki wyzwania
hasAccess(id){
return (ch_get_user_stats(id, CSW_KNIFE) >= 5);
}


public client_putinserver(id){
gDone[id] = 0;
}
//aktualizacja tabeli od razu przy podlaczeniu sie gracza
public client_data_loaded(id){
gDone[id] = hasAccess(id);
if(gDone[id])
challenge_done(id, chid, 0); //wykonanie bez informacji
}

//gracz dostal punkt
public client_gain_point(id){
if(!gDone[id] && hasAccess(id)){
//daj 4500 expa
new steam_id[35]
get_user_authid ( id, steam_id, 34 )
server_cmd("amx_giveexp %s 4500", steam_id)


//oznacz jako wykonane i pokaz informacje
challenge_done(id, chid);

gDone[id] = 1;
}
}

//Postep wyzwania
public challenge_progress(id, challenge, szProgress[], size){
formatex(szProgress, size, "%d/%d", ch_get_user_stats(id, CSW_KNIFE), 5);
}



jeśli to coś pomoże to komenda wymaga admin_immunity
i ponizszy plugin tez nie moze wykonac tej koemndy na serwerze:
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say_team /exp", "expo");
register_clcmd("say /exp", "expo");
}
public expo(id){
new steam_id[33]
get_user_name( id, steam_id, 32 )
server_cmd("amx_giveexp %s 4500", steam_id)
ColorChat(0, YELLOW, "^x04[DIABLO]^x01 dostales 4500 expa!");
}

Użytkownik Syczaj edytował ten post 02.07.2011 16:01

  • +
  • -
  • 0
Dołączona grafika

#64 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 16:21

komenda amx_giveexp jest pewnie zarejestrowana przez register_clcmd() - tylko dla graczy, zamień to na register_concmd() i będzie dostępne wykonanie z konsoli serwera
  • +
  • -
  • 0

#65 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 16:46

Kurcze, zmieniałem na concmd ale nadal jej nie wykonuje. Jakies inne sposoby?
  • +
  • -
  • 0
Dołączona grafika

#66 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 16:49

nazwa komendy? na pewno są tam 2 e?
  • +
  • -
  • 0

#67 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 17:02

nazwa komendy? na pewno są tam 2 e?


tak, komenda jest na pewno poprawna.
register_concmd("amx_giveexp","CmdGiveExp")

probowalem juz srvcmd, concmd, zdjąłem flage dostępu, a komenda nadal nie jest wywoływana.
  • +
  • -
  • 0
Dołączona grafika

#68 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 17:09

Sposobów na dodanie expa z innego pluginu jest kilka:
- zamiast steamid możesz spróbować "#%d", get_user_userid()
- zrób sobie natywa: Natywy - AMXX.pl: Support AMX Mod X
- zrób w publiczną funkcją dającą xp GiveXP(komu, ile) i użyj callfunc_begin_i
  • +
  • -
  • 0

#69 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 17:16

Ostatnia propozycja wydaje się najprzystępniejsza, ale prawdę mówiąc jestem prawie zielony w amxxie. Nie mam pojecia jak wykorzystac ta funkcje, moglbys dac jakis przyklad?

Funkcja po prostu nie jest wykonywana z konsoli, bo czy dam nick, czy dam authid to jej nie wykonuje. Jak zmienic funkcje na publiczna?

Użytkownik Syczaj edytował ten post 02.07.2011 17:17

  • +
  • -
  • 0
Dołączona grafika

#70 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 17:25

Tu jest kompletny przykład: Drink raz na 2min - AMXX.pl: Support AMX Mod X

W głównym pluginie
public dajXP(id, ile){
    XP[id] += ile;
}

Tam gdzie dajesz expa
dajXP(id, ile){
	new plugin = find_plugin_byfile("PLIK_PLUGINU.amxx");
	
	if(plugin == -1) return 1;
	
	if(callfunc_begin_i( get_func_id ( "dajXP", plugin), plugin)){
		callfunc_push_int(id);
		callfunc_push_int(ile);
		return callfunc_end();
	}
	return 1;
}

  • +
  • -
  • 0

#71 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 21:32

Dziekuje bardzo, wszystko pieknie ladnie działa.
Mam natomiast kolejny zestaw pytan : )
Czy jak wpisze CSW_C4 to bedzie mi zliczalo zabicia przeciwnikow nierozbrojoną bombą?
To samo pytanie do CSW_HEGRENADE. Będzie zliczało zabicia z HE?

Dałboy rade zmajstrowac do tego jakas funkcje, gdzie w ramach nagrody mógłbym przypisac co gracz dostanie, jesli po wykonaniu zadania kogoś zabije? (głownie chodzi mi o exp w diablomodzie, zeby za kazde zabicie np w głowe z m4 dostawał ilosc expa jaki tam sobie wymysle.)

Przepraszam za te ciagłe jęki, ale po prostu widze milion zastosowan dla tego pluginu.


Wcale bym sie nie obraził jakby ktos zajrzał też do tego tematu: Medale na koniec mapy (brak motd na koniec mapy) - AMXX.pl: Support AMX Mod X

Użytkownik Syczaj edytował ten post 02.07.2011 21:34

  • +
  • -
  • 0
Dołączona grafika

#72 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 21:44

Hmm dobre pytanie :) C4 nie daje fragów za zabicia, tylko zawsze 3. Nie ma DeathMsg`ów z bronią = weapon_c4, więc CSW_C4 nie zlicza nic. Będę musiał to zmienić w następnym wydaniu
HE natomiast normalnie będzie liczyć zabójstwa z i bez headshota

Co do bonusu 'na przyszłość' to wystarczy dawać expa każdemu, kto przejdzie test
if(hasAccess(id)){
    dajXP(id, 30);
}

  • +
  • -
  • 0

#73 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 21:45

właśnie właśnie!
jeszcze pytanie, jak zrobic sliczanie HS, bo ogladam i oglądam sma Miśka, ale nie moge tego znaleść.

return (ch_get_user_stats(id, CSW_AWP) >= 100);
return (ch_get_user_stats(id, CSW_AWP, 1) >= 100);

czyzby roznica lezala z tej magicznej jedynce?


Jeszcze raz, bo szybciej mysle niz pisze.
Da sie jakos zrobic na customie zliczanie uratowanych hostów?

Użytkownik Syczaj edytował ten post 02.07.2011 21:53

  • +
  • -
  • 0
Dołączona grafika

#74 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 21:59

obejrzyj plik .inc, tam jest sporo informacji o funkcjach
ch_get_user_stats(id, wid, hs)
id - indeks gracza
wid - indeks broni
hs - 1 zwraca tylko ilość headshotów, 0 zwraca wszystkie fragi


żeby zliczać uwalnianie hostów daj add_pointa w odpowiednim evencie: Uwolnienie hostów - id uwalniającego - AMXX.pl: Support AMX Mod X
  • +
  • -
  • 0

#75 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 02.07.2011 23:16

Kolejne pytania >.>
Na czym polegaja grupy wyzwań? jak uzyc tej komendy? challenge_set_group()

kolejne, ze plugin Miśka odnośnie awp zlicza dobrze tylko headshoty, zwykle zabicia nalicza dalej np 26/12.

Jest tez problem przy wiekszej liczbie wyzwań. Po prostu znikają, motd nie ciagnie az tylu rekordów. Da rade cos z tym zrobic?
  • +
  • -
  • 0
Dołączona grafika

#76 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 02.07.2011 23:20

zauważyłem, że znikają i dlatego dodałem grupowanie

weź sma wszystkich wyzwań, które chcesz zgrupować i wklej do nich linijkę
challenge_set_group(chid, "Nazwa Grupy");
zaraz po register_challenge(), wspólna nazwa grupy połączy te wyzwania w jeden MOTD, a komenda zamiast listy pokaże najpierw menu z wyborem grupy
  • +
  • -
  • 0

#77 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 03.07.2011 00:16

Otóż tak: Zabicia z AWP w głowe są lux, natomiast nie zatrzymuje liczenia zwykłych zabić (takie 30/2)

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>

#include <challenge>

#define PLUGIN "Challenge: AWP"
#define VERSION "1.0.1"
#define AUTHOR "MisieQ"

new const gszChallenge1[]= "Zabij 2 przeciwnikow z AWP";
new const gszAward1[] = "Darmowy Scout";

new const gszChallenge2[]= "Zabij 1 przeciwnikow headshotem z AWP";
new const gszAward2[] = "Darmowe AWP";

new chid1;
new chid2;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

RegisterHam(Ham_Spawn, "player", "fwSpawn", 1);

chid1 = register_challenge(gszChallenge1, gszAward1);
challenge_uses_stats(CSW_AWP);
challenge_set_group(chid1, "Bonusy");

chid2 = register_challenge(gszChallenge2, gszAward2);
challenge_set_group(chid2, "Bonusy");
challenge_uses_stats(CSW_AWP);
}

hasAccess(id)
{
return (ch_get_user_stats(id, CSW_AWP) >= 2);
}

hasAccess2(id)
{
return (ch_get_user_stats(id, CSW_AWP, 1) >= 1);
}

public fwSpawn(id)
{
if(is_user_alive(id))
{
if(hasAccess(id))
{
if(hasAccess2(id))
{
new x = random_num(0,4);
if(x == 4){
give_item(id, "weapon_awp");
}
challenge_done(id, chid2);
}
else if(hasAccess(id))
{
new x = random_num(0,4);
if(x == 4){
give_item(id, "weapon_scout");
}
challenge_done(id, chid1);
}
}
}
return PLUGIN_HANDLED;
}

public challenge_progress(id, challenge, szProgress[], size)
{
if(challenge == chid1)
formatex(szProgress, size, "%d/%d", ch_get_user_stats(id, CSW_AWP), 2);
else if(challenge == chid2)
formatex(szProgress, size, "%d/%d", ch_get_user_stats(id, CSW_AWP, 1), 1);
}

Użytkownik Syczaj edytował ten post 03.07.2011 00:20

  • +
  • -
  • 0
Dołączona grafika

#78 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 03.07.2011 00:53

Za bardzo komplikujesz ;)
public fwSpawn(id)
{
	if(is_user_alive(id))
	{
		
		if(hasAccess2(id)){
			new x = random_num(0,4);
			if(x == 4){
				give_item(id, "weapon_awp");
			}
			challenge_done(id, chid2);
		}
		if(hasAccess(id))
		{
			new x = random_num(0,4);
			if(x == 4){
				give_item(id, "weapon_scout");
			}
			challenge_done(id, chid1);
		}
	}
	return PLUGIN_HANDLED;
}

Jeśli chcesz zachować tamten kod to dodaj challenge_done
public fwSpawn(id)
{
        if(is_user_alive(id))
        {
                if(hasAccess(id))
                {
                        if(hasAccess2(id))
                        {
                                new x = random_num(0,4);
                                if(x == 4){
                                        give_item(id, "weapon_awp");
                                }
                                challenge_done(id, chid2);
                        }
                        else if(hasAccess(id))
                        {
                                new x = random_num(0,4);
                                if(x == 4){
                                        give_item(id, "weapon_scout");
                                }
                                challenge_done(id, chid1);
                        }
                       //Po cichu
                       challenge_done(id, chid1, 0);
                }

        }
        return PLUGIN_HANDLED;
}

  • +
  • -
  • 0

#79 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 03.07.2011 10:39

nie ważne, juz działa xD

Dodano 03 lipiec 2011 - 22:33:
Jeszcze jeden problem.
Da sie jakoś przypisac danego challenge'a do np flagi B?
zeby mogli ko wykonywac, alkbi zliczalo punkty tylko graczom z flaga B?

Użytkownik Syczaj edytował ten post 03.07.2011 11:37

  • +
  • -
  • 0
Dołączona grafika

#80 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 03.07.2011 22:35

ograniczyć naliczania się nie da, ale bardzo łatwo ograniczyć dostęp:
hasAccess(id)
{
        if(get_user_flags(id)&ADMIN_RESERVATION == 0) 
                return 0;

        return (ch_get_user_stats(id, CSW_AWP) >= 2);
}

Edit.
Aha, jeszcze postęp:
public challenge_progress(id, challenge, szProgress[], size)
{
	if(get_user_flags(id)&ADMIN_RESERVATION == 0){
		formatex(szProgress, size, "brak dostepu");
		return;
	}
	if(challenge == chid1)
		formatex(szProgress, size, "%d/%d", ch_get_user_stats(id, CSW_AWP), 2);
	else if(challenge == chid2)
		formatex(szProgress, size, "%d/%d", ch_get_user_stats(id, CSW_AWP, 1), 1);
}

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych