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

enum z tablicą floatów


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

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 07.07.2018 16:14

Cześć, kodze sobie tak ostatnio i mi przystawiło w głupim momencie, nie mam pojęcia jak to rozwiązać

enum _:dataSpawn
{
	ENTITY,
	ORDER_SPAWN,
	CsTeams:TEAM,
	INVADER,
	LAST_PLAYER,
	Float:TIMER,
	Float:ORIGIN[3],
	Float:ANGLES[3],
	Float:VIEWANGLE[3]
}
new spawn_point[MAX_SPAWNS][dataSpawn];

formatex(text_buffer, 255, "%d %d %d", floatround(spawn_point[i][6], 0), floatround(spawn_point[i][7], 0), floatround(spawn_point[i][8], 0));

Jak w tym formatexie dobrze to zrobić? wywala tag mismatch cały czas juz mnie krew zalewa dzis

 

 

edit: albo takie coś:

		distance = get_distance_f(plOrigin, spawn_point[i][ORIGIN]);

też mismatch wyrzuca :c


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 106
Super Hero

  • Postów:2 048
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 07.07.2018 17:05

formatex(text_buffer, 255, "%d %d %d", floatround(spawn_point[i][ORIGIN], floatround_round), floatround(spawn_point[i][ANGLES], floatround_round), floatround(spawn_point[i][VIEWANGLE], floatround_round));
new Float:distance = get_distance_f(plOrigin, spawn_point[i][ORIGIN]);

  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 07.07.2018 22:53

  1.  Stosuj stałe tam gdzie to tylko możliwe - tak jak napisał aS -> zamiast 0 jako ostatniego parametru w funkcji floatround użyj np. floatround_round
  2. Odwołując się do pól enum, w którym wcześniej deklarujesz pola z zakresem (pole ORIGIN / ANGLES / VIEWANGLE) używaj nazw pól, zamiast surowych liczb (chyba, że jesteś w pełni świadom konsekwencji z tego wynikających). Taka praktyka przeczy idei typu enum i znacznie utrudnia zrozumienie kodu przez osoby trzecie.
  3. Przy odczytywaniu / zapisywaniu pól obejmujących pewien zakres typu wyliczeniowego, należy podać indeks pola w danym zakresie - umieszczając go w kolejnym wymiarze danej tablicy, tak jak jest to pokazane niżej:
spawn_point[i][ORIGIN] -> spawn_point[i][ORIGIN][0] itp...
formatex(text_buffer_origin, 255, "%d %d %d", floatround(spawn_point[i][ORIGIN][0], floatround_round), floatround(spawn_point[i][ORIGIN][1], floatround_round), floatround(spawn_point[i][ORIGIN][2], floatround_round));
formatex(text_buffer_angles, 255, "%d %d %d", floatround(spawn_point[i][ANGLES][0], floatround_round), floatround(spawn_point[i][ANGLES][1], floatround_round), floatround(spawn_point[i][ANGLES][2], floatround_round));
formatex(text_buffer_v_angle, 255, "%d %d %d", floatround(spawn_point[i][VIEWANGLE][0], floatround_round), floatround(spawn_point[i][VIEWANGLE][1], floatround_round), floatround(spawn_point[i][VIEWANGLE][2], floatround_round));

  • +
  • -
  • 1

#4 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 08.07.2018 00:05

ad 3

aj tak mi sie wydawało żeby dać index jescze do czegos takiego:

spawn_point[i][ORIGIN][0]

ad 1.

Ten kod jest z dekompilatora także on pozostawił takie różne różności, ja to dopiero reversuje a enumów chyba nie widać (przynajmniej w dekompilatorze którego użylem) po dekompilacji.

 

ad2

co do czytelnosci to tylko ja sam będę edytorem :P

stale wprowadziłem dopiero po jakims czasie gdy z zdeasemblowanego kodu wyszło ze to są originy, anglesy we floatach

 

 

PRzetestuje i dam znac

 


  • +
  • -
  • 0

#5 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 08.07.2018 11:23

Super! Zadziałało perfecto!

 

 

Jednak co do tego:

	new Float:distance = 0.0;
	new Float:plOrigin[3];
	pev(id, pev_origin, plOrigin)
	distance = get_distance_f(plOrigin, spawn_point[i][ORIGIN]); 

Kompilator się dalej dowala :/

Tym razem: array sizes do not match, or destination array is too small

 

Coś znów z ORIGIN pewnie jednak nie wiem jak to poprawić, jedyne co mi przychodzi to przepisać sobie ORIGIN do jakieś tablicy tymczasowej


  • +
  • -
  • 0




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

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