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

Menu graczy z poradnika GwynBleidD'a; - )


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

#1 Lacostii

    Profesjonalista

  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:172
  • Lokalizacja:Poland
Offline

Napisano 04.01.2014 13:23

Witam serdecznie,

chciałem skorzystać z gotowca do utworzenia menu graczy z tego poradnika, lecz nie wychodzi:

http://amxx.pl/topic...tworzenia-menu/

 

A swój problem opisałem w ostatnim poście, lecz jak nie dostałem odpowiedzi to zakładam osobny temat:

Ten post: http://amxx.pl/topic...e-2#entry600649

 

Taki mam kod obecnie:

public handleSay(id){
	new args[64], arg1[16], arg2[32];
	
	read_args(args, charsmax(args))
	remove_quotes(args)

	strbreak(args, arg1, charsmax(arg1), arg2, charsmax(arg2))
	if (equal(arg1,"/daj", 4)){
		if(arg2[0]){
			new wartosc = str_to_num(arg2)
			if(wartosc <= 0){
				ColorChat(id, GREEN,"[AP] ^x01Poprawne polecenie: ^x04/daj liczba")
				return PLUGIN_HANDLED;
			}

			if(wartosc <= zp_get_user_ammo_packs(id))
				show_przelew(id, wartosc)
			else{
				ColorChat(id, GREEN,"[AP] ^x01Nie posiadasz tyle AP !")
				return PLUGIN_HANDLED;
			}
		}
		else{
			ColorChat(id, GREEN,"[AP] ^x01Poprawne polecenie: ^x04/daj liczba")
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public show_przelew(id, wartosc){
	new menu = menu_create("Wybierz gracza ktoremu dasz AP", "handle_przelew");
	new players[32], num;
	new name[32], info[25];
	get_players(players, num);
	
	for(new i=0; i<num; ++i){
		if(id == players[i] || is_user_hltv(players[i])) continue;
		get_user_name(players[i], name, 31);
		formatex(info, 24, "%08X%08X%08X", wartosc, players[i], get_user_userid(players[i]));
		menu_additem(menu, name, info);
	}
	menu_display(id, menu);
}

public handle_przelew(id, menu, item) {
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new info[25], access, callback;
	menu_item_getinfo(menu, item, access, info, 24,_, _, callback);
	new tid = hexstr_to_num(info[8], 8);
	new tuserid = hexstr_to_num(info[16], 8);
	new wartosc = hexstr_to_num(info, 8);
	
	client_print(0,print_chat,"id: %d tid: %d tuserid: %d wartosc: %d",id,tid,tuserid,wartosc)
	
	if(is_user_connected(tid) && tuserid == get_user_userid(tid)){
		zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - wartosc)
		zp_set_user_ammo_packs(tid, zp_get_user_ammo_packs(tid) + wartosc)
		
		new aName[32], vName[32]
		get_user_name(id, aName, 31)
		get_user_name(tid, vName, 31)
	
		set_hudmessage(255, 0, 0, -1.0, 0.3, 0, 6.0, 6.0)
		show_hudmessage(0, "%s przekazal %d Ammo Packi dla %s!", aName, wartosc, vName)
	}
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

hexstr_to_num(string[], chars) {
	new result=0;
	for(new i=0; i<chars && string[i]!='^0'; ++i)
		result = result<<4 + (string[i]>'9'?string[i]>'F'?string[i]-'a'+10:string[i]-'A'+10:string[i]-'0');
		
	return result;
}

W tej linijce sprawdzającej ( client_print(0,print_chat ....) , wszystkie wartości oprócz ID są zerem.

Myślę, że ta heksalna technika mogła zawieść ;>


Użytkownik Lacostii edytował ten post 04.01.2014 13:24

  • +
  • -
  • 0

Zapraszam na forum Classic-Zone.pl . ;)


#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 04.01.2014 22:10

A wyświetl bezpośrednio info jako string, zobaczymy czy zawiniła moja metoda konwersji HEXów, czy wpisywanie ich do stringa.
  • +
  • -
  • 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


#3 Lacostii

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:172
  • Lokalizacja:Poland
Offline

Napisano 05.01.2014 00:48

userid: 387
[Human] Tester bieli :  /daj 10
string: 0000000A0000000300000183
id: 2 tid: 0 tuserid: 0 wartosc: 0

Pobrałem jeszcze userid przy tworzeniu menu.


  • +
  • -
  • 0

Zapraszam na forum Classic-Zone.pl . ;)


#4 Lacostii

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:172
  • Lokalizacja:Poland
Offline

Napisano 05.01.2014 01:40

Załatwiłem to w ten sposób:

public show_przelew(id, wartosc){
	new menu = menu_create("Wybierz gracza ktoremu dasz AP", "handle_przelew");
	new players[32], num;
	new name[32], info[16];
	get_players(players, num);
	
	for(new i=0; i<num; ++i){
		if(id == players[i] || is_user_hltv(players[i])) continue;
		get_user_name(players[i], name, 31);
		formatex(info, 15, "%d %d %d", wartosc, players[i], get_user_userid(players[i]));
		menu_additem(menu, name, info);
	}
	menu_display(id, menu);
}

public handle_przelew(id, menu, item){
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new info[16], access, callback;
	menu_item_getinfo(menu, item, access, info, 15,_, _, callback);
	
	new arg1[7], arg2[7], arg3[7];
	strbreak(info, arg1, charsmax(arg1), arg2, charsmax(arg2))
	strbreak(arg2, arg2, charsmax(arg2), arg3, charsmax(arg3))
	
	new wartosc = str_to_num(arg1)
	new tid = str_to_num(arg2)
	new tuserid = str_to_num(arg3)

	if(is_user_connected(tid) && tuserid == get_user_userid(tid)){
		zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - wartosc)
		zp_set_user_ammo_packs(tid, zp_get_user_ammo_packs(tid) + wartosc)
		
		new aName[32], vName[32]
		get_user_name(id, aName, 31)
		get_user_name(tid, vName, 31)
	
		set_hudmessage(255, 0, 0, -1.0, 0.3, 0, 6.0, 6.0)
		show_hudmessage(0, "%s przekazal %d Ammo Packi dla %s!", aName, wartosc, vName)
	}
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

Obyło się bez tych heksadecymalnych cudów od których głowa boli ;P.


  • +
  • -
  • 0

Zapraszam na forum Classic-Zone.pl . ;)





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

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