←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Invalid cellvector handle - Błąd w arrayu


Najlepsza odpowiedź Rivit 01.06.2018 13:24

A spróbuj w register native dodać

:

ArrayPushCell(g_ZombieClassAccess, ACCESSS_TYPES:ACCESS_ALL);

Zrobi ci to jakby default ustawianie access + zrobi komorke w tablicy, jak przyjdzie natyw od rejestracji access dla klasy to ArraySetCell zmieni go poprawnie.

Przejdź do postu

  • +
  • -
Robiin - zdjęcie Robiin 01.06.2018

Błąd z deklaracją (?) lub odczytywaniem arraya w menu klas zombie.

 

Spoiler
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 01.06.2018

Dziwne. Sprawdziłeś poprawność zmiennej index w menu?

 

+

ArraySetCell nie dodaje samo z siebie elementu. Nie wiem czy robisz wcześniej jakiś ArrayPush albo ArrayInsert, ale to moze byc przyczyną.

 

https://amxx.pl/doku...88/arraysetcell

Rzuć okiem

Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 01.06.2018

Dziwne. Sprawdziłeś poprawność zmiennej index w menu?

 

+

ArraySetCell nie dodaje samo z siebie elementu. Nie wiem czy robisz wcześniej jakiś ArrayPush albo ArrayInsert, ale to moze byc przyczyną.

 

https://amxx.pl/doku...88/arraysetcell

Rzuć okiem

 

http://wklejto.pl/557552

Nie robię. Nie jestem pewny jak i gdzie - analogicznie do reszty wypadałoby w gdzieś w okolicach 581-583 w native_class_zombie_register, ale problemem dla mnie będzie index klasy (lub też element arraya, jak kto woli), żeby pushować arraya.

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 01.06.2018

Hmm, może zagadnę od innej strony. Czemu nie chcesz access przekazywać też w natywie od rejestracji klasy? Kompatybilność?

 

 

 

+

jak wygląda przykładowa klasa?

Musisz w niej zrobić dwa natywy - jeden register class drugi access inaczej sie indexy rozjadą.

 

 

 

Also, można by uzywac ArrayPushArray robiąc prostą strukturkę danych na enumach, ale to tak poza tematem

Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 01.06.2018

Jaka jest różnica? To przecież tylko osobny natyw, a wolę mieć to rozbite na wiele natywów, z domyślną wartością, jeśli w którymś z *.sma nie pojawi się rejestracja (przykładowo) właśnie dostępu. W dodatku; pomaga mi to zrozumieć do końca array'e i w przyszłości mam zamiar rozbudować to na wiele innych sposobów, do których tez nie użyje niczego innego niż arraye - a rozumiejąc ten jeden, zrozumiem resztę.

 

Spoiler
Odpowiedz

  • +
  • -
Najlepsza odpowiedź Rivit - zdjęcie Rivit 01.06.2018

A spróbuj w register native dodać

:

ArrayPushCell(g_ZombieClassAccess, ACCESSS_TYPES:ACCESS_ALL);

Zrobi ci to jakby default ustawianie access + zrobi komorke w tablicy, jak przyjdzie natyw od rejestracji access dla klasy to ArraySetCell zmieni go poprawnie.

Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 01.06.2018

Register native? W sensie register zombie class? :P

 

Dodałem 

ArrayPushCell(g_ZombieClassAccess, ACCESS_TYPES:ACCESS_ALL);

Teraz wszystkie klasy po ich zarejestrowaniu w ten sposób;

ClassIndex = zp_class_zombie_register(zombieclass_supervip_name, zombieclass_supervip_info, zombieclass_supervip_health, zombieclass_supervip_speed, zombieclass_supervip_gravity)

powinny otrzymać domyslnie ACCESS_ALL, a potem już używając ClassIndex jako element Arraya zmienię dostęp do klasy na taki, jaki będzie trzeba. Zaraz sprawdzam.

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 01.06.2018

Dokładnie tak sobie to wymyśliłem

 

//register native - class registration miałem na myśli

 

 

@down

Powiedzialem to w pierwszym poście tu :D

Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 01.06.2018

Wszystko działa pięknie ładnie. Czyli generalnie błąd był w tym, że nigdzie nie pushowałem wartości go g_ZombieClassAccess, a potem probowałem zmienić wartość w komórce, która nie istnieje. Wielki plus dla Ciebie  ^D^

Odpowiedz