←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Jak zastosować funkcję natywną.

Zablokowany

  • +
  • -
poloo89 - zdjęcie poloo89 08.04.2012

Witam serdecznie, stawiam serwer zombie mod na silniku biohazard 2.0 3b

Jestem obecnie na etapie konstruowania systemu sklepu...
Jedna z opcji jaką zaplanowałem jest możliwość kupienia przez zombie Antidotum.
w swoim sklepie mam już wszystko wpisane. bo wybraniu odpowiedniej opcji zombie zamienia się w człowieka na podstawie jednej z funkcji w biohazard.inc
W tym momencie pojawia się pewien problem, z którym nie mogę zbytnio sobie poradzić.
Chciałbym aby po użyciu antidotum i zamianie zm w człowieka, otworzył się menu broni, taki jak otwiera się na początku każdej rundy.
menu broni jest zintegrowane w plik główny biohazard.amxx
Pojawia się problem wywołania funkcji będącej w pliku biohazard.amxx z poziomu pluginu sklep.amxx

Czytałem trochę o funkcjach natywnych niestety orłem z programowania nigdy nie bylem i ciężko mi jest je zrozumieć.

Podejrzewam ze moglo by to na takiej zasadzie działać:

W pliku biohazard.amxx dorobiłbym cos na ksztalt:
native funkcja_natywna(id)
{
  cure_user(id)// funckja z biohazard robiaca z zm humana
menu_broni(id); // nazwa tymczasowa, zastapila by ja nazwa istniejacej juz funkcji.
}
menu_broni(id)
{
  // to by była już standardowa funkcja z biohazardu
}

natomiast w moim sklepie w case'ie odpowiedzialnym za zakup antidotum, wywołałbym funkcje natywną w biohazard.amxx ktora by wykonała przemianę i otworzyła menu broni...

pomoże mi to ktoś poskładać tak żeby miało sens i przede wszystkim działało?

pozdrawiam.

ps. proszę mnie nie odnosić do materiału o funkcji natywnej, bo przeczytałem go nie raz i czuje, że potrzebuję łopatologicznego wytłumaczenia na przykładzie związanym z moim problemem.... dziękuję :)
Użytkownik poloo89 edytował ten post 08.04.2012 17:11
Odpowiedz

  • +
  • -
poloo89 - zdjęcie poloo89 09.04.2012

zainteresuje sie ktos moim problemem ? :>
Odpowiedz

Gość_21977_* 09.04.2012

Założę, że kompilujesz lokalnie.

Tworzysz sobie bibliotekę, niech będzie antidotum.inc o treści:
#if defined _ANTIDOTUM_included
#endinput
#endif
#define _ANTIDOTUM_included
#pragma library "ANTIDOTUM"
native menu_broni_biohazard(id);
i wrzucasz do katalogu /include

Następnie w pluginie z MenuBroni dodajesz na początku:
#include <ANTIDOTUM>
a w kodzie właściwym
public plugin_natives(){
register_library("ANTIDOTUM");
register_native("menu_broni_biohazard", "n_menu_broni");
}
public n_menu_broni(plugin, params){
new id = get_param(1);
menu_broni(id);
}
dzięki czemu, stworzyliśmy bibliotekę, informującą, że menu_broni_biohazard jest funkcją natywną, a w pluginie biohazard includujesz jedynie antidotum.inc:
#include <ANTIDOTUM>

oraz w miejscu, gdzie trzeba, po prostu używasz funkcji natywnej poprzez menu_broni_biohazard(id).
Wszystko powinno działać, chyba, że się gdzieś machnąłem.
Odpowiedz

  • +
  • -
poloo89 - zdjęcie poloo89 09.04.2012

Działa jak należy :D

Dzięki wielkie.

Można zamykać.
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 09.04.2012

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany