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

set_task i zmienne


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

#1 MasterOfGames

    Zaawansowany

  • Zbanowany

Reputacja: 33
Życzliwy

  • Postów:125
  • Lokalizacja:Wierzchucin
Offline

Napisano 13.05.2012 13:03

1.Czemu w sklepiku ciągle jest 1 zobaczcie (fragment kodu) za co ta 1 w ogóle odpowiada?
menu_additem(menu, a, "1");
menu_additem(menu, b, "1");

2.Jeśli w set_task mamy (5.0, "bla", _, _, _, "a", 1) to set_task "bla" zostanie wykonany 1 raz na rundę czy na mapę?
3.Mam coś takiego :
new low = 5
new liczba = random_num(1,10-low) /* jak to zadziała, czy to będzie losowało w przedziale od 1 do 5? Bo 10-5=5. */

4.Mamy zmienną XxX równą 0 jak zrobić żeby gdy coś się stanie to doda do niej 1, ale nie 1 raz tylko za każdym razem. Czy to zadziała?
new XxX
if(moj_warunek)
{
XxX = XxX+1
}

5.
new XxX
ColorChat(id, GREEN, "Twoja szansa wynosi 1/XxX") /* Jak zrobić aby zamiast XxX wstawiło wartość tej niewiadomej?*/

Użytkownik MasterOfGames edytował ten post 13.05.2012 13:04


#2 kapi10072

    Wszechpomocny

  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:318
  • Steam:steam
  • Imię:Kacper
  • Lokalizacja:Polska
Offline

Napisano 13.05.2012 13:13

1. Jest to klawisz, który wywoła funkcje, powinno być tak.

menu_additem(menu, a, "1");
menu_additem(menu, b, "2");

2. Zostanie wykonany 1 raz, kiedy go wywołasz ;)
3.

new low = 5
new num = 10 - low
new liczba = random_num(1, num)


4.

XxX +=1


5.

new XxX

ColorChat(id, GREEN, "Twoja szansa wynosi 1/%d", XxX)

Misiaczek ;c (13.05.2012 19:54):
Informacje z pkt.1 są błędne, lepiej zapoznać się z postem #6 z tego tematu ;)

Użytkownik kapi10072 edytował ten post 13.05.2012 13:15

  • +
  • -
  • 1

Dołączona grafika
Najlepszy serwer TeamPlay w Polsce !
Pomogłem, wejdź ;)
Zapraszam na BHZ-Game.pl
Bo nie liczą się fragi tylko dobra atmosfera ;D


#3 MasterOfGames

    Zaawansowany

  • Autor tematu
  • Zbanowany

Reputacja: 33
Życzliwy

  • Postów:125
  • Lokalizacja:Wierzchucin
Offline

Napisano 13.05.2012 13:59

Wielkie dzięki, bardzo mi pomogłeś, oczywiście +
Ale jeszcze jedno pytanie:
Jeśli zamiast XxX +=1 dam XxX +=2 to doda 2 do zmiennej XxX?

Użytkownik MasterOfGames edytował ten post 13.05.2012 14:00


#4 kapi10072

    Wszechpomocny

  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:318
  • Steam:steam
  • Imię:Kacper
  • Lokalizacja:Polska
Offline

Napisano 13.05.2012 14:32

Tak, możesz także odejmować, mnożyć i dzielić.
  • +
  • -
  • 2

Dołączona grafika
Najlepszy serwer TeamPlay w Polsce !
Pomogłem, wejdź ;)
Zapraszam na BHZ-Game.pl
Bo nie liczą się fragi tylko dobra atmosfera ;D


#5 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 137
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 13.05.2012 16:23

przy czym Twój sposób:
XxX = XxX+1 

też jest poprawny
  • +
  • -
  • 2

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 13.05.2012 18:50

1. Jest to klawisz, który wywoła funkcje, powinno być tak.


menu_additem(menu, a, "1");
menu_additem(menu, b, "2");

Proszę nie wprowadzać ludzi w błąd!! Nie jest to absolutnie klawisz, który wywoła funkcję!! Jest to informacja jedynie dla funkcji przechwytującej wywołanie opcji z menu. Można tam zawrzeć dowolne dane, niekoniecznie tekstowe. Nie ma to żadnego związku z klawiszem, jedynie utrwaliła się jakaś dziwna praktyka, aby na podstawie informacji tej determinować co zostało wybrane z menu (parametr 3ci - item w handlerze podaje nam numer wybranej opcji, jednak jest niezależny ten numer od klawiszy i zaczyna się od zera (jeśli dodamy pustą linię albo linię z tekstem, nie spowoduje ona przesunięcia w item, jedynie w numeracji klawiszy, jeśli odpowiednia flaga przy dodawaniu była ustawiona)). Parametr ten przydaje się przy dynamicznie generowanym menu, np menu z listą graczy w którym możemy podać id, ip, nick, steamid gracza lub cokolwiek innego, co może ulec zmianie między wywołaniem menu, a wybraniem gracza (gracz opuści serwer, dołączy inny gracz).

Jeszcze raz prostymi słowami: jest to informacja o danym elemencie menu, którą może pobrać handler. Nie jest ona konieczna w przypadku tworzenia statycznego menu.
  • +
  • -
  • 2

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#7 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 13.05.2012 19:05

Automatyczna wiadomość


Ten temat został przeniesiony z forum:
AMX Mod XPytania
do
Scripting AMXXPytania


  • +
  • -
  • 1

#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 13.05.2012 23:05

1. Jest to klawisz, który wywoła funkcje, powinno być tak.
menu_additem(menu, a, "1");
menu_additem(menu, b, "2");



2.Jeśli w set_task mamy (5.0, "bla", _, _, _, "a", 1) to set_task "bla" zostanie wykonany 1 raz na rundę czy na mapę?

2. Zostanie wykonany 1 raz na mapę, kiedy go wywołasz po 5 sekundach

Ponadto pisanie , _, _, _, "a", 1 jest bezcelowe, gdyż są to domyślne parametry.
Odnośnie pytania natomiast (nie wiem, o czym pisał kapi), zostanie to wykonane raz na mapę, a nie TYLKO 1 raz.
Po każdej zmianie mapy bowiem wszystkie pluginy są na nowo ładowane, idąc dalej, aby załadować nową wersję pluginu, musisz przeładować mapę.


Ad.3. Tak


4.Mamy zmienną XxX równą 0 jak zrobić żeby gdy coś się stanie to doda do niej 1, ale nie 1 raz tylko za każdym razem. Czy to zadziała?

4.
XxX +=1

zamiast if, użyj while. Uważaj, żeby się nie zapętlić.


Ad.5. kapi10072 odpowiedział, o dziwo, prawidłowo i na temat :blink:


RTFM. Polecam Ci, odnośnie szczegółów dot. konkretnych funkcji, czytać dokumentację: http://amxx.pl/dokumentacja
Ona naprawdę nie gryzie, jest po polsku i dokładnie opisane jest, jak funkcje działają, wraz z uwagami i komentarzami.
Czytanie dokumentacji pozwoli Ci uzyskać odpowiedź dużo szybciej i nie będziesz musiał angażować całego forum.
Np. Funkcja set_task - bardzo przyjemnie i prostym językiem opisane, jak korzystać z natywu, wraz z przykładem.


BTW. Pawn jest pierwszym językiem, w jakim programujesz, nieprawdaż?

#9 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 14.05.2012 01:59

@benio101, kapi odpowiedział dobrze na wszystkie podpunkty prócz 1.

2. set_task: wykona się 1 raz po 5ciu sekundach za każdym razem, gdy się go wywoła, czyli ilość wykonań oczywiście jest zależna od umieszczenia. W plugin_init, plugin_cfg, plugin_natives itp będzie to raz na mapę. W handlerach dowolnej komendy przy każdym jej wywołaniu (o ile gdzieś wcześniej tego wywołania nie przerwiemy returnem i warunki umieszczone tam na to pozwolą oczywiście :) ), w handlerach dowolnego zdarzenia (nowej rundy np.) przy każdym wystąpieniu zdarzenia, w client_connect przy każdym połączeniu się gracza, w client_prethink przy każdej ramce wysyłanej do gracza. Oczywiście za każdym razem z 5 sekundowym opóźnieniem ;)

3. Jak najbardziej zadziała. Rozwiązanie napisane przez kapi również, ale niepotrzebnie tworzy nową zmienną.

4. Każde wywołanie Twojej linijki czy linijki zaproponowanej przez kapiego spowoduje zwiększenie o 1 wartości zmiennej XxX. Zwróć jednak uwagę na początkową wartość zmiennej (w amx jest to z tego co pamiętam 0, ale nie w każdym języku programowania tak jest, więc dobrym zwyczajem jest zerować przy deklaracji zmienne, które chcemy używać w ten sposób ;) ). W zależności od zastosowań możesz umieścić w dowolnym miejscu w kodzie to wywołanie, jeśli chcesz np zliczać ilości wejść na serwer to umieścisz to w client_connect. Jeśli wyjść to client_disconnect. Istnieje również uproszczona wersja XxX++, która działa tak, jak XxX+=1, czyli zwiększa wartość o 1. Wedle zastosowań można to też umieścić w pętli, jednak uważaj na warunki pętli, aby nie była to pętla nieskończona, jak już wspomniał benio.

W ten sposób chyba rozwiałem niepewności, które stworzyły trochę sprzeczne wypowiedzi benia i kapiego, obie jak najbardziej poprawne, ale w swoim kontekście (prócz pkt 1 wypowiedzi kapiego, co wyjaśniłem w poprzednim swoim poście).
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#10 kapi10072

    Wszechpomocny

  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:318
  • Steam:steam
  • Imię:Kacper
  • Lokalizacja:Polska
Offline

Napisano 14.05.2012 13:35

1. Pisałem z pamięci, było 1 i 1, więc pomyślałem, że to klawisze.. tak błąd zauważyłem, możecie poprawić tamtego posta ;)
2. Flaga A z parametrem Repeat. Przy tym co podał, zadziała jak set_task (5.0, "bla"). Napisałem tak, gdyby chciał użyć tego kilka razy kiedy zechce i ile..
3. Nową zmienną zrobiłem po to, aby można to było lepiej roczytać, a także żeby przy bardziej zaawansowanych obliczeniach się nie pogubić ;-)
4. Podałem mu tylko jak wygląda skrócona wersja..

Myślę, że dogłębnie wyczerpaliśmy temat ;-)
  • +
  • -
  • 1

Dołączona grafika
Najlepszy serwer TeamPlay w Polsce !
Pomogłem, wejdź ;)
Zapraszam na BHZ-Game.pl
Bo nie liczą się fragi tylko dobra atmosfera ;D


#11 MasterOfGames

    Zaawansowany

  • Autor tematu
  • Zbanowany

Reputacja: 33
Życzliwy

  • Postów:125
  • Lokalizacja:Wierzchucin
Offline

Napisano 14.05.2012 15:49

Bardzo dziękuję za odpowiedzi, z dokumentacji korzystam jak najbardziej, ale nie zawsze ją rozumiem, dlatego pytam.




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

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