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

Natyw zwraca tylko 1 literę


Najlepsza odpowiedź Robiin, 09.08.2019 17:07

Te twoje kolizje nazw to szok. Teraz powinno być dobrze:
 

Spoiler
Przejdź do postu


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

#1 Komiks007

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:87
  • Imię:Mateusz
Offline

Napisano 09.08.2019 13:03

Cześć, jak mówi tytuł, natyw który zrobiłem przez plik inc, zwraca tylko jedną literę w innym pluginie. Chciałbym, żeby zwracał trzy litery zamiast jednej.

 

Kod jest taki:

Natyw:

public _g_nazwa_gildi(plugin, params)
{
	new id = get_param(1);
	static aData[ GangInfo ]

	if(g_iGang[id] > -1)
	{
		ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
		return aData[GangName]
	}

	return 0;
}

w inc:

/*
*	Zwraca litery nazwy gangu
*
*	id - indetyfikator klienta
*
*/
native g_nazwa_gildi(id)

i w pluginie, w którym chce żeby mi to zwróciło:

new szText[50 char]
new nazwa_gildi = g_nazwa_gildi(id)
formatex(szText, charsmax(szText), "%s", nazwa_gildi)
szPrefix = szText

Na czacie zwraca tylko literę 't' ponieważ gildia nazywa się 'test'

Mógłby ktoś pomóc? Dzięki.


  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 09.08.2019 14:24

https://amxx.pl/topic/20034-natywy/

Poczytaj o arraych teraz zwraca Ci jedną literą ponieważ tak naprawde zwracasz jedną wartość int :)
  • +
  • -
  • 3

#3 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 09.08.2019 14:42

W amxxie nie możesz zwrócić więcej niż jednej wartości. Dlatego właśnie tworzymy osobną zmienną i robimy get_user_name(indeks, zmienna, charsmax(zmienna)) - przypisujemy nick gracza do 'zmienna' funkcją get_user_name i w ten sposób nie musimy nic zwracać.

 

Zamiast

return aData[GangName]

daj

set_string(2, aData[GangName], 32);

A w argumentach natywu zamiast

g_nazwa_gildi(id)

daj

g_nazwa_gildi(id, output[], outputSize);

  • +
  • -
  • 2

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


#4 Komiks007

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:87
  • Imię:Mateusz
Offline

Napisano 09.08.2019 15:08

 

W amxxie nie możesz zwrócić więcej niż jednej wartości. Dlatego właśnie tworzymy osobną zmienną i robimy get_user_name(indeks, zmienna, charsmax(zmienna)) - przypisujemy nick gracza do 'zmienna' funkcją get_user_name i w ten sposób nie musimy nic zwracać.

 

Zamiast

return aData[GangName]

daj

set_string(2, aData[GangName], 32);

A w argumentach natywu zamiast

g_nazwa_gildi(id)

daj

g_nazwa_gildi(id, output[], outputSize);

Coś źle robię najwidoczniej...

z 'test', wypisuje "est"

g_nazwa_gildi(id, "", 1)

  • +
  • -
  • 0

#5 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 09.08.2019 15:48

Pokaż cały kod, nie dawaj nam okruchów.


  • +
  • -
  • 0

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


#6 Komiks007

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:87
  • Imię:Mateusz
Offline

Napisano 09.08.2019 16:02

Pokaż cały kod, nie dawaj nam okruchów.

public handleSayText(msgId,msgDest,msgEnt){	

	if(!is_user_connected(id))	  return PLUGIN_CONTINUE;
	
   	new szTmp[192], szTmp2[192];
   	//new szPrefix[64]
	get_msg_arg_string(2, szTmp, charsmax(szTmp));

	new szText[64 char]
	new nazwa_gildi = g_nazwa_gildi(id, "", 1)
	formatex(szText, sizeof(szText), "^x03|%s|", nazwa_gildi)
	
	if(!equal(szTmp,"#Cstrike_Chat_All")){
		add(szTmp2, charsmax(szTmp2), "^x01");
		add(szTmp2, charsmax(szTmp2), szText);
		//add(szTmp2, charsmax(szTmp2), szPrefix);
		add(szTmp2, charsmax(szTmp2), " ");
		add(szTmp2, charsmax(szTmp2), szTmp);
	}
	else{
		new szPlayerName[64];
		get_user_name(id, szPlayerName, charsmax(szPlayerName));
		
		get_msg_arg_string(4, szTmp, charsmax(szTmp));
		set_msg_arg_string(4, "");
	
		add(szTmp2, charsmax(szTmp2), "^x01");
		add(szTmp2, charsmax(szTmp2), szText);
		//add(szTmp2, charsmax(szTmp2), szPrefix);
		add(szTmp2, charsmax(szTmp2), "^x03 ");
		add(szTmp2, charsmax(szTmp2), szPlayerName);
		add(szTmp2, charsmax(szTmp2), "^x01 :  ");
		add(szTmp2, charsmax(szTmp2), szTmp)
	}
	
	set_msg_arg_string(2, szTmp2);
	return PLUGIN_CONTINUE;
}

Nawet nie wyświetlają się '|' oraz kolor do tego. Wyświetla się samo 'est' przed nickiem.

Prefix działał normalnie.


  • +
  • -
  • 0

#7 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 09.08.2019 16:24

Nie mam pojęcia skąd ten kod wytrzasnąłeś i dalczego był napisany w ten sposób, ale był zły.
 

Spoiler


Użytkownik aSiorr edytował ten post 09.08.2019 16:26

  • +
  • -
  • 1

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


#8 Komiks007

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:87
  • Imię:Mateusz
Offline

Napisano 09.08.2019 16:34

Nie mam pojęcia skąd ten kod wytrzasnąłeś i dalczego był napisany w ten sposób, ale był zły.
 

Spoiler

Zły? Z jakiegoś tematu to wytrzasnąłem żeby naprawić błąd s1: s2

 

No dobra, teraz w ogóle nie wyświetla nazwy gildii.

'|| Nick: Wiadomość'


  • +
  • -
  • 0

#9 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 09.08.2019 16:37

A jak wygląda natyw?


  • +
  • -
  • 0

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


#10 Komiks007

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:87
  • Imię:Mateusz
Offline

Napisano 09.08.2019 16:40

A jak wygląda natyw?

Tak jak podałeś w wcześniejszym poście,

native g_nazwa_gildi(id, output[], outputSize);
	public _g_nazwa_gildi(plugin, params)
	{
		new id = get_param(1);
		static aData[ GangInfo ]

		if(g_iGang[id] > -1)
		{
			ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
			set_string(2, aData[GangName], 32);
		}
	}

  • +
  • -
  • 0

#11 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 09.08.2019 16:51

Spoiler


  • +
  • -
  • 0

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


#12 Komiks007

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:87
  • Imię:Mateusz
Offline

Napisano 09.08.2019 17:00

Spoiler

Coś jest nie tak,

teraz podwaja te '|'

|||| nick :  uwaga test

  • +
  • -
  • 0

#13 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 09.08.2019 17:07   Najlepsza odpowiedź

Te twoje kolizje nazw to szok. Teraz powinno być dobrze:
 
Spoiler

  • +
  • -
  • 1

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


#14 Komiks007

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:87
  • Imię:Mateusz
Offline

Napisano 09.08.2019 17:14

Te twoje kolizje nazw to szok. Teraz powinno być dobrze:
 

Spoiler

 

Uwaga... działa!

Dzięki aSiorr za pomoc ;) Nagrodzę tym co mogę. Jeszcze raz dziękuje.


  • +
  • -
  • 0




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

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