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

Pytanie: Jak wywołać plugin innym pluginem.


Najlepsza odpowiedź grankee, 25.11.2014 22:12


Jeśli są to na przykład jakieś dzwięki powiązane z używaniem broni to wywołując funkcję dającą broń sprawiasz, że plugin docelowy będzie już to obsługiwał tzn nadpisywał dzwięki, modele itd po wykryciu danej broni specjalnej (wcześniej danej).

 

Wydaje mi się, że jasno tutaj odpowiedziałem.

Jeśli jest to obsługiwane za pomocą eventu to także. Zrozum, wywołując  forwardem jakąś funkcję w innym pluginie nie przenosisz jej do swojego tylko uruchamiasz w tymże pluginie (ale zdalnie) i wszystko jest tak jakbyś uruchomił ją w tym pluginie gdzie ona jest, a jeśli uruchomisz ją w tym pluginie docelowym w którym ona jest to wszystko działa jak należy, ustawia wartości zmiennej globalnej, obsługuje model broni, dźwięki itd (nieważne czy funkcjami bezpośrednio czy w eventach, bo ten plugin w którym jest funkcja dająca broń cały czas działa, ma sygnał że dana osoba dostała extra item, zmienia sobie to w globalnych i robi co trzeba).

 

Przejdź do postu


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

#1 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 13.11.2014 11:38

Witam.

Nurtuję mnie takie jedno małe pytanie czy można za pomocą jednego pluginu wywołać drugi ?

Jeśli tak to proszę o odpowiedź w jaki sposób.

I czy zadziałało by to w taki sposób:

 Tworzymy menu z jakimiś tam bonusami

i np po wybraniu dajmy na to złotego m4a1 wywołuje już istniejący plugin z właśnie tą bronią? ( menu i złote m4a1 to 2 różne pluginy )


Użytkownik Master Yoga edytował ten post 13.11.2014 11:39

  • +
  • -
  • 1

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#2 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 14.11.2014 01:05

poczytaj o natywach


  • +
  • -
  • 0

#3 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 17.11.2014 20:45

ok tylka ja chce wywołać cały plugin, a nie tylko funkcję ... 


  • +
  • -
  • 1

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#4 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 17.11.2014 20:53

funkcja pause/unpause


  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#5 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 17.11.2014 21:04

funkcja pause/unpause

Ja nie chce pauzować pluginów ...
Che z menu wywołać cały inny plugin ( extra item ) ? możliwe ?


  • +
  • -
  • 1

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#6 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 18.11.2014 03:58

Co to znaczy "wywołać cały plugin"?

Plugin działa cały czas, a to funkcje w danym pluginie powodują że coś się dzieje/zmienia np. dostajesz granata, przyciemnia się mapa, giniesz itp. To wszystko obsługują odpowiednie funkcje.


 Tworzymy menu z jakimiś tam bonusami
i np po wybraniu dajmy na to złotego m4a1 wywołuje już istniejący plugin z właśnie tą bronią? ( menu i złote m4a1 to 2 różne pluginy )

Nie ma czegoś takiego jak "plugin z bronią". Jest plugin, w którym jest funkcja dająca graczowi daną broń, ustawia jej kolor na złoty itd. i to właśnie tą funkcję musisz wywołać z odpowiednimi parametrami. Jeśli jest to funkcja public i znasz jej nazwę oraz parametry to możesz nie ruszając pluginu dającego bron zrobić wymusić forward.

Załóżmy, że masz w pluginie funkcję 

public DajBron(id)
{
//tutaj ciało funkcji dajace bron ammo oraz ustawiajace zloty kolor itd
}

dajesz w swoim pluginie

zd=CreateMultiForward("nazwa_funkcji_dajacej_m4", ET_CONTINUE, FP_CELL);
new zwrot;
ExecuteForward(zd, zwrot, id);//gdzie id to id osoby ktorej ma dac m4

oczywiscie to przyklad, nie wiem jak wyglada ta funkcja w Twoim pluginie, musisz podac konkrety


  • +
  • -
  • 0

#7 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 18.11.2014 18:09

( Przecież napisałem w drugim poście, że to extra item - no ale jak chcesz szukać dziury w całym to proszę bardzo :giggle:. )


Plugin działa cały czas,
serio ? :facepalm2: 
Dobra wracając do tematu czy tym sposobem nie wywołam tylko jednej funkcji ? Czyli tak jak to dałeś w przykładzie tylko jednego public'u ?
 
  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#8 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 19.11.2014 04:05

Dostałeś wędkę. Podasz konkrety-otrzymasz pomoc. Będę miał sma tego pluginu od itema to Ci powiem coś więcej. Tak na sucho to mogę 1000 linijek przypuszczeń wypisać i dalej mogę nie trafić w sedno.


  • +
  • -
  • 2

#9 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 20.11.2014 20:32

Podpinam się pod temat, z chęcią się temu przyjrzę bo w sumie mam ten sam problem/pytanie (jest w tym samym dziale), nie zwróciłem uwagi, że ktoś ma podobny interes.. Jeśli ktoś by taki prosty przykład funkcji z plugin2.amxx wywołał w plugin1.amxx to byłbym wdzięczny (jak widać nie tylko ja, taki schemat, a nie sama teoria, bo czasem jeśli ktoś nie kuma tematu to ciężko ma to w praktyke przenieść :P), najlepiej omijając pliki .inc (ew z jedną dodatkową zmienną przyjmującą wartości 0 i 1.

 

A co do tematu.. 

public set_gun(id) {
	create_gun(id); // dostaje nowa bron
	have_gun[id]=1; // otrzymuje 'uprawnienia' do tej broni..
	client_print(id, print_chat, "Dostales BRON"); // informuje gracza o otrzymaniu BRONI
}

Na tym przykładzie wystarczy wywołać funkcję 'set_gun', która dosłownie pociągnie za sobą funkcję 'create_gun', która znów z kolei pociągnie za sobą resztę.

 

chociaż w sumie mam teraz rozkminę, bo mam identyczny problem jak ten autor i teraz prawie przyznałem mu racje.. bo w moim itemku np są wywoływane różne eventy, ustawia mu model, dźwięk, sprite, tor lotu, dmg, ustala 'strukturę?' broni - dosłownie tworzy nową broń, nawet tworzy nową listę weapon_.. więc otrzymanie takiej broni przez drugi plugin odwzoruje idealnie jak otrzymanie ją przez główny plugin ? :X 


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#10 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 20.11.2014 21:45

Widzę w końcu, że ktoś mnie zrozumiał ( Ogier ).
Grankee nie mam pluginów, bo miałem dopiero zamiar takowy wykonać, ale brakowało mi właśnie tego jak to wywołać. 

A może pójść na łatwiznę i zrobić nowy public w pluginie 2 coś takiego: 

Public A(id)
{
kod
}
public B(id)
{
kod
}
public C(id){
kod
} 

Public Wszystkie_publicki(index)
{ 
A(id);
B(id;
C(id);
}

czyli streścić wszystkie publiki w jeden i później wywołać w pluginie nr 1 public wszytkie_publicki(index) ?


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#11 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 20.11.2014 22:30

Nie, nie, nie, tak nie możesz. Każdy public ma swój czas w którym działa, jeden działa gdy zabijesz (np dodaje expa), jeden gdy zmieniasz bron, jeden na poczatku rundy - roznosci doslownie i nie da sie aktywowac wszystkich naraz, od tego sa eventy, event zmiany broni, nowej rundy wlasnie itd :P


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#12 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 20.11.2014 23:01

Możesz na początku mapy po prostu dać pause dla określonego pluginu i w tym menu po wybraniu odpowiedniej pozycji zrobić unpause tego pluginu. Możesz też, jak to mówił grankee wyżej, wykorzystać forwardy to rozruszania pluginu, aby dawał te złote AK.

Tercium non datum
  • +
  • -
  • 1

#13 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 21.11.2014 01:16

Daj ogólny zarys pomysłu. Ja nie wiem co te funkcje mają robić, co innego jak jedna daje bron, druga daje ammo a trzecia ustawia model, wtedy wszystkie trzeba wykonac naraz (IMHO bezsens). Co innego zaś jeśli tak jak pisał ogieR, jedna funkcja robi coś druga coś innego a trzecia jeszcze coś innego, wtedy wywoływanie ich razem nie ma kompletnie sensu. daj ogólną strukturę funkcji tak jak podałeś + info w środku co dana funkcja ma robić.

Zamiast robić funkcję wywołującą 3 inne funkcje lepiej zamieścić zawartość tychże trzech funkcji w jednej i ją wywołać.


Użytkownik grankee edytował ten post 21.11.2014 01:17

  • +
  • -
  • 0

#14 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 21.11.2014 19:01

A no tak sory ogierze nie przemyślane to było, dochodzą jeszcze stocki itp. 

Ogólny zarys mówisz hymm. 

Pomysł był taki, aby zrobić menu dla ostatniego humana ( z tym nie ma problemu ) z kilkoma bonusami takimi jak:

- exp, ap

- extra item'y

- nic / inne
No i nie chciało mi się wdrążać kodu itemow do pluginu z menu ponieważ niektóre osiągały do tysiąca linijek, więc chciałem wywołać istniejący już plugin itemu, ale jak widać nie tylko ja mam takie pomysły :P , więc powiedzmy, że z ogierem mamy "wspólny interes" :D


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#15 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 22.11.2014 02:09

No to masz dajmy na to w pluginie już gotową funkcję dającą extra item:

Przykład

public daj_extra_item(id,weapon)

teraz w swoim pluginie daj:

new gFW;
public plugin_init(){
	gFW = CreateMultiForward("daj_extra_item", ET_CONTINUE, FP_CELL, FP_CELL);
}
public callback_menu(){
        //.....
	new iRet;
	ExecuteForward(gFW, iRet,id,WEAPON_GLOCK);
}

o ile funkcja dajaca extra item jest public to powinno zadzialac.


  • +
  • -
  • 0

#16 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 22.11.2014 11:52

No tak tylko, że znów wywołam tylko jeden public, który jedynie da mi zwykłą broń i ustawi zmienną globalną na true, a pozostaną jeszcze modele, dmg i inne dodatki.


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#17 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 22.11.2014 11:55

Daj plugin od tej broni
  • +
  • -
  • 0

#18 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 22.11.2014 11:57


Grankee nie mam pluginów, bo miałem dopiero zamiar takowy wykonać, ale brakowało mi właśnie tego jak to wywołać.

  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#19 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 22.11.2014 12:14

"No i nie chciało mi się wdrążać kodu itemow do pluginu z menu ponieważ niektóre osiągały do tysiąca linijek"
Ten wgraj
  • +
  • -
  • 0

#20 Master Yoga

    Support Team | Mocarz

  • Autor tematu
  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 22.11.2014 12:43

"No i nie chciało mi się wdrążać kodu itemow do pluginu z menu ponieważ niektóre osiągały do tysiąca linijek"
Ten wgraj

:facepalm2:

aż nie skomentuje tego ...
ale skoro ci tak zależy na jakimś pluginie to specjalnie dla ciebie znalazłem ten : 

~800 linii 

http://amxx.pl/topic/62639-ion-cannon/


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png





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

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