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

Nowe questy a stare funkcje oraz tablice.


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

#1 dog_1

    Profesjonalista

  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:150
  • Lokalizacja:Gdańsk
Offline

Napisano 11.09.2011 20:27

Tworzę sobie dodatkowe questy, które nie składają się tylko z zabić danych klas. Wszystko dobrze jeśli tworzę jedno menu, ale napotkałem pewien problem gdy tworzę drugie podmenu, otóż nie znam nvalta i mam problem z zapisywaniem informacji w kontekście zapisywania/wczytywania questów.
Chodzi mi m.in. o tą linijkę
format(key,63,"questy-%i-%s-%i",player_class[id],name,quest);

w
public zapisz_questa(id,quest){
new name[64];
get_user_name(id,name,63)
strtolower(name)
new key[64];
format(key,63,"questy-%i-%s-%i",player_class[id],name,quest);
nvault_set(vault_questy,key,"1");
}

Czy zmieniając linijkę
format(key,63,"questy,questy1-%i-%i-%s-%i-%i",player_class[id],bron,name,quest);

dane informację się zapiszą?

Bron to ta zmiena która jest sprawdzana w DeathMsg a questy1 to tablica podobna do questy

Użytkownik dog_1 edytował ten post 11.09.2011 20:35

  • +
  • -
  • 0

#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 11.09.2011 20:31

Nie ten public, patrz ten drugi do zapisywania i odczytywania, do tego jak chcesz dodać tylko nowe questy to nie trzeba dodawać nowych zmiennych, wystarczą te dwie co już są w questach darka.

Użytkownik sebul edytował ten post 11.09.2011 22:47

  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#3 dog_1

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:150
  • Lokalizacja:Gdańsk
Offline

Napisano 13.09.2011 12:03

I tak jak mówisz zrobię to wszystko w tablicach darka. Bez dodawania swoich.Zapomniałem że przy tworzeniu menu mogę przecież pętle for zmienić tak aby odczytywała z zakresu :)

Jak na razie niestety questy się nie zapisują ;| Może to wina kodu, ale czas na sprawdzenie tego będę miał dopiero w next tygodniu, bo muszę przyuczyć się do poprawki egzaminu z pythona :)
  • +
  • -
  • 0

#4 dog_1

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:150
  • Lokalizacja:Gdańsk
Offline

Napisano 23.09.2011 19:35

Mam dalsze problemy z tymi questami. Chodzi mi o to jak zapisać w enum np.zmienną
Float:Damage1
Bo jak dobrze rozumiem, to dane zawarte w tablicy
 questy
muszą być zapisane w funkcji typu enum . Mam użytą tą zmienną do funkcji
public obliczobrazenia(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) {

Damage1[iAttacker] += fDamage;
floatround(Damage1[iAttacker], floatround_floor);
}

Liczy poprawnie, ale kompletnie nie wiem jak mam to zrobić pod te questy.


//edit myślałem że edytowałem ;| Proszę o połączenie postów.

Użytkownik dog_1 edytował ten post 23.09.2011 19:36

  • +
  • -
  • 0

#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 23.09.2011 22:37

Tam jest jakieś enum? Do tablicy questów zapisz tylko ile trzeba zadać dmg, żeby wykonać questa, a potem sprawdzaj czy jakaś globalna zmienna jest większa bądź równa od wymaganej wartości.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 dog_1

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:150
  • Lokalizacja:Gdańsk
Offline

Napisano 24.09.2011 23:08

Tak, udało się :D Obrażenia działają jak należy, ale powstały dwa następne problemy, wybierając quest dotyczący zabicia klasy/z broni wystarczy 1 kill i zalicza misje .

Co zrobiłem w Deathmsg: trzeba było utworzyć nowego if-a
 if (obrazenia <= questy[quest_gracza[kid]][2]){
zapisz_aktualny_quest(kid)}
Nie mogłem użyć zmiennej ile_już[kid]++ ponieważ przez to zamiast liczyć dmg liczyło kille. Dalej dopisałem do
if(ile_juz[kid] == questy[quest_gracza[kid]][1] || obrazenia >= questy[quest_gracza[kid]][2])
Oraz mniej ważne
else if(damage1 <= questy[quest_gracza[kid]][2]){
client_print(kid,print_chat,"Zadałeś %d/%i %s",obrazenia,questy[quest_gracza[kid]][1],questy_zabil[quest_gracza[kid]])
}


Dopisane info w tablicy new questy wyglada tak:

{1,1000,1000,250,0},

Dlatego
[quest_gracza[kid]][2]

aby nie chciało porównać liczb zawartych w 2 rzędzie a tylko w 3. I to jest chyba moją zgubą, bo zdaje mi się że np. ninje czyta jako 0 i zamiast player_class[vid] oblicza dmg. Z broniami nie było tego problemy i razem z klasami współdziałało.

//edit

Wstawiłem do tablicy w 6 miejscu liczbę do zadania dmg i pozmieniałem na
obrazenia >= questy[quest_gracza[kid]][5]
w
Wg, mnie powinno to pomóc ale nie pomogło.
Pomogło by dodatkowa zmienna która dodawała by zadane obrażenia jeszcze raz ale w deathmsg. Nie wiem jak to zapisać, gdyż dodawać coś co jest już liczone dzięki innemu publicowi nie wypali :|

Użytkownik dog_1 edytował ten post 05.10.2011 18:31

  • +
  • -
  • 0

#7 dog_1

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:150
  • Lokalizacja:Gdańsk
Offline

Napisano 05.10.2011 18:31

//edit2

Wow, w końcu się udało mi wpaść na rozwiązanie:) Wystarczyło stworzyć osobnego if-a w którym porównywany jest ilość wymaganego zadania dmg i że ta wartość ma być większa od 600 :P

Mam nadzieję że questy typu rozbrój/podłóż też się udadzą zrobić w ten sposób. Ale chcę się zapytać, czy zapisując zmienną odpowiedzialną za tego typu quest w public deathmsg nie stanie się tak, że podliczy podłożone paczki oraz wyświetli informację o wykonanym queście dopiero gdy kogoś się zabije?
  • +
  • -
  • 0

#8 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 05.10.2011 18:57

Tak się stanie, najlepiej zrób to w innej funkcji i wykonuj ją podczas gdy paka została rozbrojona/podłożona.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#9 dog_1

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:150
  • Lokalizacja:Gdańsk
Offline

Napisano 07.10.2011 18:54

Rozumiem. Zrobiłem tak ja poradziłeś, w innej fukcji i owszem liczy od razu. Ale jest kurcze, problem którego nie rozumiem.Po wybraniu questa np. zabij x razy zabójce i a potem gdy np.rozbroję paczkę to kończy questa; po rozbrojeniu pierwszej paczki(1/2) i w następnej rundzie zabijanie kogokolwiek, kończy się wyświetlaniem informacji w client_print : "Zabiles 1/2 paczek" do czasu gdy w końcu przeskakuje po zabiciu kogoś i wyświetla info że wykonałem questa ;|
Informacja z liczbą rozbrojeń jest zapisana w 6 kolumnie tablicy. Public wygląda mniej więcej tak:

public bomba_quest(id)
{
if(quest_gracza[id] != -1){
if(rozb[id] <= questy[quest_gracza[id]][6] && questy[quest_gracza[id]][6]>=1){
rozb[id]++;
zapisz_aktualny_quest(id)
}
if(rozb[id] >= questy[quest_gracza[id]][6] && questy[quest_gracza[id]][6] >= 1){
client_print(id,print_chat,"Wykonales zadanie %s gratulacje otrzymujesz %i expa!",questy_info[quest_gracza[id]],questy[quest_gracza[id]][3])
zapisz_questa(id,quest_gracza[id])
Give_Xp(id,questy[quest_gracza[id]][3]);
quest_gracza[id] = -1;
zapisz_aktualny_quest(id)
}
else if (rozb[id]<=questy[quest_gracza[id]][6] && questy[quest_gracza[id]][6] >= 1){
client_print(id,print_chat,"Rozbroiłes %d/%i %s",rozb[id],questy[quest_gracza[id]][6],questy_zabil[quest_gracza[id]])
}
}
}


Rozumiem. Zrobiłem tak ja poradziłeś, w innej fukcji i owszem liczy od razu. Ale jest kurcze, problem którego nie rozumiem.Po wybraniu questa np. zabij x razy zabójce i a potem gdy np.rozbroję paczkę to kończy questa; po rozbrojeniu pierwszej paczki(1/2) i w następnej rundzie zabijanie kogokolwiek, kończy się wyświetlaniem informacji w client_print : "Zabiles 1/2 paczek" do czasu gdy w końcu przeskakuje po zabiciu kogoś i wyświetla info że wykonałem questa ;|
Informacja z liczbą rozbrojeń jest zapisana w 6 kolumnie tablicy. Public wygląda mniej więcej tak:


public bomba_quest(id)
{
if(quest_gracza[id] != -1){
if(rozb[id] <= questy[quest_gracza[id]][6] && questy[quest_gracza[id]][6]>=1){
rozb[id]++;
zapisz_aktualny_quest(id)
}
if(rozb[id] >= questy[quest_gracza[id]][6] && questy[quest_gracza[id]][6] >= 1){
client_print(id,print_chat,"Wykonales zadanie %s gratulacje otrzymujesz %i expa!",questy_info[quest_gracza[id]],questy[quest_gracza[id]][3])
zapisz_questa(id,quest_gracza[id])
Give_Xp(id,questy[quest_gracza[id]][3]);
quest_gracza[id] = -1;
zapisz_aktualny_quest(id)
}
else if (rozb[id]<=questy[quest_gracza[id]][6] && questy[quest_gracza[id]][6] >= 1){
client_print(id,print_chat,"Rozbroiłes %d/%i %s",rozb[id],questy[quest_gracza[id]][6],questy_zabil[quest_gracza[id]])
}
}
}


@@edit
Udało mi się poprawnie zapisać publica w pewnym znaczeniu. Działa wszystko OK gdy tylko mam misję na rozbrojenie.
Gdy wybieram misję np. zabij z broni x/6 to podczas wykonywanie tego questu i rozbrajania bomby wyświetla się informacja: "Rozbroiłeś 1/7 z M4A1" i przy każdym rozbrojeniu oczywiście zwiększa się.
Nie wiem na razie w czym jest problem, wydaje mi się że dobrze napisałem if-y. W ogóle nie wiem skąd wzięła się ta 7 skoro w 6 miejscu w tablicy są zera oprócz w miejscu na quest z liczbą do rozbrojenie.

Użytkownik dog_1 edytował ten post 06.10.2011 19:08

  • +
  • -
  • 0




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

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