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

[ROZWIĄZANE] Weapoin id - jak pobrać


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

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 02.06.2012 17:41

Jak pobrać id dotkniętej broni (chodzi o te z CSW_*)?
Mam taki kod
(...)
register_touch("weaponbox", "player", "DotkniecieBroni");
(...)
public DotkniecieBroni(ent, id) {
if(!is_valid_ent(ent) || !is_user_alive(id))
return PLUGIN_CONTINUE;

return PLUGIN_CONTINUE;
}

i co konkretnie wpisać w tej funkcji "DotkniecieBroni"? Próbowałem sam na różne sposoby i niestety zawsze wychodzi mi, że id broni to 0. Chodzi mi oczywiście o jakiś prosty, krótki sposób, bo wiem, że można to chociażby zrobić za pomocą modelu broni, ale to wymaga wypisania każdego modelu i potem jakąś pętlą porównywać, a tego nie chcę.
  • +
  • -
  • 0

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


#2 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

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

Napisano 02.06.2012 18:04

Spróbuj pobrać classname bytu broni i zamienić nazwe na id (w cstrike jest taka funkcja, która to zrobi chyba cs_get_weapon_id).
  • +
  • -
  • 0

#3 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 02.06.2012 18:10

W parametrze ent otrzymujesz id entity, którego dotykasz. Jest to jednak ID kontenera zawierającego broń. Aby otrzymać entity konkretnej broni musisz znaleźć entity, którego rodzicem jest ten weapon box. Możesz też pobrać model z tego entity i na podstawie nazwy modelu znaleźć co to za broń. w GHW_Weap_Pickup jest to rozwiązane, popatrz sobie ;)
  • +
  • -
  • 0

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


#4 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 02.06.2012 18:25

Spróbuj pobrać classname bytu broni i zamienić nazwe na id (w cstrike jest taka funkcja, która to zrobi chyba cs_get_weapon_id).

Przecież classname będzie zwracać w tym przypadku "weaponbox", oczywiście sprawdziłem to przed chwilą, żeby być już pewnym w 100%.

W parametrze ent otrzymujesz id entity, którego dotykasz. Jest to jednak ID kontenera zawierającego broń.

To wiem, chodzi mi właśnie o to, jak te id zamienić na id broni.

Aby otrzymać entity konkretnej broni musisz znaleźć entity, którego rodzicem jest ten weapon box.

Jak to znaleźć? Id boxa jest "ownerem" dla broni, która w nim siedzi?

Co do modeli, to wiem, że tak można zrobić i wiem jak to można zrobić, ale chcę po prostu zrobić to inaczej.
sebul (02.06.2012 20:19):
Nawet robiąc to w taki sposób jak jest w "GHW_Weap_Pickup", to chociażby mp5 ma inną nazwę modelu niż normalną nazwę.

  • +
  • -
  • 0

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


#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 554
Godlike

  • Postów:11 979
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 02.06.2012 19:05

http://twhl.info/wiki.php?id=209
  • +
  • -
  • 0

#6 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 02.06.2012 19:43

(...)
register_touch("weaponbox", "player", "DotkniecieBroni");
(...)
public DotkniecieBroni(ent, id) {
if(!is_valid_ent(ent) || !is_user_alive(id))
return PLUGIN_CONTINUE;

new wid=cs_get_weapon_id(ent);
// zmienna wid zawiera id broni (np. CSW_SCOUT)

return PLUGIN_CONTINUE;
}


albo kanapka:

(...)
RegisterHam(Ham_Touch, "weaponbox", "HamTouchPre", 0);
(...)
public HamTouchPre(weapon){
if(!pev_valid(weapon))
return HAM_IGNORED;

// zmienna weapon zawiera id broni (np. CSW_SCOUT)

return HAM_IGNORED;
}


#7 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 02.06.2012 20:13

http://twhl.info/wiki.php?id=209

Czego mam tutaj szukać?

(...)
register_touch("weaponbox", "player", "DotkniecieBroni");
(...)
public DotkniecieBroni(ent, id) {
if(!is_valid_ent(ent) || !is_user_alive(id))
return PLUGIN_CONTINUE;

new wid=cs_get_weapon_id(ent);
// zmienna wid zawiera id broni (np. CSW_SCOUT)

return PLUGIN_CONTINUE;
}


albo kanapka:

(...)
RegisterHam(Ham_Touch, "weaponbox", "HamTouchPre", 0);
(...)
public HamTouchPre(weapon){
if(!pev_valid(weapon))
return HAM_IGNORED;

// zmienna weapon zawiera id broni (np. CSW_SCOUT)

return HAM_IGNORED;
}

Pierwsze już sprawdzałem na samym początku i właśnie wtedy zwraca 0, a kanapką to chyba tak od razu nie ma id broni, ale jeszcze sprawdzę.

EDIT:
Tak jak myślałem, w kanapce ten parametr to id tego bytu "weaponbox".
  • +
  • -
  • 0

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


#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 02.06.2012 20:53

Tu masz kod z AM, podobno działa:


#include <amxmodx>
#include <fakemeta>
#include <cstrike>

new g_hTouch = 0

public plugin_init()
{
g_hTouch = register_forward(FM_Touch, "onTouch")
}

public plugin_end()
{
if(g_hTouch) {
unregister_forward(FM_Touch, g_hTouch)
g_hTouch = 0
}
}

public onTouch(eid, pid)
{
if(!eid) return FMRES_IGNORED

if(isWeapon(eid))
{
new ent = FindEntityByOwner(eid)

if(ent)
{
server_print("[AMXX] cs_get_weapon_id(%d) = %d", eid, cs_get_weapon_id(ent))
}
}

return FMRES_IGNORED
}

stock FindEntityByOwner(owner)
{
new i;

for(i = get_maxplayers() + 1; i < global_get(glb_maxEntities); i++)
{
if(pev(i, pev_owner) == owner)
{
break;
}
}

return i;
}

stock bool:isWeapon(ent_id)
{
static pStr
static sBuffer[11] // sizeof("weaponbox") + 1

pev(ent_id, pev_classname, pStr, sBuffer, sizeof(sBuffer)-1)

server_print("%s", sBuffer);

return bool:equal(sBuffer, "weaponbox")
}

Autor: teame06 w temacie AM :: 49051

#9 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 02.06.2012 21:09

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
  • +
  • -
  • 0

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





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

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