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

Fakemeta czy Hamsandwich ?


  • Zamknięty Temat jest zamknięty
15 odpowiedzi w tym temacie

#1 AztekHQS

    Banned

  • Zbanowany

Reputacja: 98
Zaawansowany

  • Postów:279
  • Lokalizacja:Polska
Offline

Napisano 12.12.2012 14:01

Zastanawiam się sktóry stock jest lepszy do dawania broni.
Nie chcę używać fun'a :P

stock ham_give_weapon(id, weapon[]) {
if(!equal(weapon, "weapon_", 7) ) return 0

new wEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, weapon))
if(!pev_valid(wEnt)) return 0

set_pev(wEnt, pev_spawnflags, SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, wEnt)

if(!ExecuteHamB(Ham_AddPlayerItem, id, wEnt)) {
if(pev_valid(wEnt)) set_pev(wEnt, pev_flags, pev(wEnt, pev_flags) | FL_KILLME)
return 0
}
ExecuteHamB(Ham_Item_AttachToPlayer, wEnt, id)
return 1
}


czy

stock fm_give_item(index, const item[]) {
if(!equal(item, "weapon_", 7)) return 0

new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if(!pev_valid(ent)) return 0

new Float:origin[3]
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)

new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if(pev(ent, pev_solid) != save) return ent

engfunc(EngFunc_RemoveEntity, ent)

return -1
}

Najlepszy serwer JailBreak!
IP: 31.186.83.208:27043
Dołączona grafika

#2 Krytykiewicz

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:114
  • Lokalizacja:Stąd
Offline

Napisano 12.12.2012 14:07

Dlaczego nie chcesz użyć fun-a? Będzie wydajniejszy w tym wypadku ;> Chociaż.. Zależy też co chcesz dokładniej zrobić z tym dawaniem broni.

Użytkownik Krytykiewicz edytował ten post 12.12.2012 14:08

  • +
  • -
  • 0

#3 AztekHQS

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 98
Zaawansowany

  • Postów:279
  • Lokalizacja:Polska
Offline

Napisano 12.12.2012 14:59

Wiem, że fun jest szybszy, ale jakoś 'nie lubię tego modułu :P'
dlatego szukam dobrego zamiennika give_item
Najlepszy serwer JailBreak!
IP: 31.186.83.208:27043
Dołączona grafika

#4 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 12.12.2012 15:03

Wiem, że fun jest szybszy, ale jakoś 'nie lubię tego modułu :P'
dlatego szukam dobrego zamiennika give_item

To zacznij go "lubić".

W tym przypadku co tutaj podałeś, to chyba fakemeta, choć to wszystko zależy od tego, gdzie chcesz używać tych funkcji.
  • +
  • -
  • 1

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


#5 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 12.12.2012 15:50

Oba stocki dzialają, wiec obojętnie którego użyjesz
Pierwszy stock to fakemeta+ham
Drugi stock to fakemeta
Ew. możesz użyć orpheu lub rage :)
  • +
  • -
  • 0

#6 Krytykiewicz

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:114
  • Lokalizacja:Stąd
Offline

Napisano 12.12.2012 16:31

Oba stocki dzialają, wiec obojętnie którego użyjesz
Pierwszy stock to fakemeta+ham
Drugi stock to fakemeta
Ew. możesz użyć orpheu lub rage :)


A orpheu będzie wydajniejsze? :>
  • +
  • -
  • 0

#7 AztekHQS

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 98
Zaawansowany

  • Postów:279
  • Lokalizacja:Polska
Offline

Napisano 12.12.2012 17:41

możesz użyć orpheu lub rage

Podasz sposoby ?
Najlepszy serwer JailBreak!
IP: 31.186.83.208:27043
Dołączona grafika

#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 15.12.2012 02:20

Zdecydowanie nie używaj fakemety, zwłaszcza fm_give_item
Jeśli tylko możesz, to staraj się używać modułu fun, ew. hamsandwich

stock fm_give_item nie zawsze działa poprawnie i wykonuje parę zbędnych czynności, ale to
odwołuję do kodu źródłowego, ew. do dyskusji na ten temat na AM, nie będę powielał tej kwestii.

#9 AztekHQS

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 98
Zaawansowany

  • Postów:279
  • Lokalizacja:Polska
Offline

Napisano 15.12.2012 02:36

benio101, czyli po Twojej wypowiedzi mogę stwierdzić ze najlepszym rozwiązaniem jest używanie 'funowskiego' give_item ?
"ew. hamsadwich" to co masz dokładnie na myśli ?
Najlepszy serwer JailBreak!
IP: 31.186.83.208:27043
Dołączona grafika

#10 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 15.12.2012 03:05

[TUT] Modules and efficient scripting - Fakty, statystyki i porady na ten temat
Engine -> Fakemeta and HamSandwich -> Fakemeta, Wytłumaczenie, dlaczego mniejsza liczba modułów NIE JEST lepsza, niż używanie funkcji, czyli dlaczego nie warto rezygnować z modułu kosztem dłuższego działania, zwłaszcza fakemety.

I masa innych tematów, jednak odsyłam do samodzielnego poszukiwania.
Podsumowując, tak, zdecydowanie polecam funowskiego give_item, choć polecam przejrzeć dokładnie tematy (m.in. te zalinkowane z AM) na ten temat, sprawdzić i samemu się przekonać.

#11 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 15.12.2012 16:46

Zdecydowanie nie używaj fakemety

Nie wiem czy tak zdecydowanie, fakemety używać można, ale tak jak napisałeś (zresztą ja po części też), że do dawania broni lepiej używać funa. Ogólnie sam mało korzystam z fakemety, ale jeśli coś można zrobić tylko w tym module, to przeważnie już nie używam innych modułów, jeśli jest taka możliwość, no chyba że mowa tutaj o modach typu diablo, gdzie jest sporo linijek kodu.
  • +
  • -
  • 0

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


#12 AztekHQS

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 98
Zaawansowany

  • Postów:279
  • Lokalizacja:Polska
Offline

Napisano 15.12.2012 20:24

Piszecie tak o fakemeta, ale nie dowiedziałem się nic o sposobie hamsadwich :)
Najlepszy serwer JailBreak!
IP: 31.186.83.208:27043
Dołączona grafika

#13 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 16.12.2012 04:26

Jeśli tylko można zastąpić fakemetę innymi modułami, najczęściej engine, czasem funem, to warto to zrobić, bo są po prostu szybsze.
Dla niektórych operacji fakemeta nie ma zamienników, bądź ich zamienniki są mniej wydajne, wtedy ozcywiście należy korzystać z fakemety.
Jednak funkcję fm_give_itemzdecydowanie polecam zastąpić funowskim odpowiednikiem nawet, gdyby miała dojść kolejna biblioteka, gdyż jest po prostu szybsze.

btw. O metodzie kanapki z szynką z fałszywym celem wiem, że jest szybsza od fm_give_item, jednak nie zagłębiałem się w nią za bardzo, więc nie chcę Cię wprowadzić w błąd.

#14 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 16.12.2012 16:45

Dobra napisałem pod orpheu, pod rage nie napisze bo nie umiem

plugin

#include <amxmodx>
#include <amxmisc>
#include <orpheu>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new OrpheuFunction:playerGiveItem;

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

playerGiveItem = OrpheuGetFunction("GiveNamedItem","CBasePlayer");
register_clcmd("say /test", "funkcja");
}

public funkcja(id)
{
OrpheuCall(playerGiveItem, id, "weapon_m4a1");
}


Sygne wrzucamy do orpheu/functions/CBasePlayer pod nazwa GiveNamedItem
Jeżeli nie ma folderu CBasePlayer to go tworzymy
sygna:

{
"name" : "GiveNamedItem",
"class" : "CBasePlayer",
"library" : "mod",
"arguments" :
[
{
"type" : "int",
"type" : "char *"
}
],
"identifiers":
[
{
"os" : "linux",
"mod" : "cstrike",
"value" : "GiveNamedItem__11CBasePlayerPCc"
}
]
}

Załączone pliki


  • +
  • -
  • 1

#15 Krytykiewicz

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:114
  • Lokalizacja:Stąd
Offline

Napisano 16.12.2012 16:58

Orpheu jest szybsze od funa ?
  • +
  • -
  • 0

#16 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 25.12.2012 09:30

Orpheu jest szybsze od funa ?

W tym przypadku, wątpie.
  • +
  • -
  • 0




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

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