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

Zmiana danych w osobnym pliku a nie w .smaw roundsound


Najlepsza odpowiedź cedrik17, 02.08.2013 15:31

Dzięki chłopaki  ^D^

 

Można zamknąć.

Przejdź do postu


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

#1 cedrik17

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:15
  • Imię:Rafał
  • Lokalizacja:Brzesko
Offline

Napisano 02.08.2013 14:05

Mam roundsound byqq-a:

http://amxx.pl/pastebin/pzsf00ardlov/

 

Chciałbym nazwy mp3-jek i tytułów ustawiać w osobnym pliku na serwerze a nie kompilować za każdym razem.

 

new nutki[][] = { 
"sound/OnlyDD2/Sierpien2013/1z12.mp3", 
"sound/OnlyDD2/Sierpien2013/2z12.mp3", 
"sound/OnlyDD2/Sierpien2013/3z12.mp3", 
"sound/OnlyDD2/Sierpien2013/4z12.mp3", 
"sound/OnlyDD2/Sierpien2013/5z12.mp3", 
"sound/OnlyDD2/Sierpien2013/6z12.mp3", 
"sound/OnlyDD2/Sierpien2013/7z12.mp3", 
"sound/OnlyDD2/Sierpien2013/8z12.mp3", 
"sound/OnlyDD2/Sierpien2013/9z12.mp3", 
"sound/OnlyDD2/Sierpien2013/10z12.mp3", 
"sound/OnlyDD2/Sierpien2013/11z12.mp3", 
"sound/OnlyDD2/Sierpien2013/12z12.mp3" 
};

 

new title[][] = {
"Tytul1",
"Tytul2",
"Tytul3",
"Tytul4",
"Tytul5",
"Tytul6",
"Tytul7",
"Tytul8",
"Tytul9",
"Tytul10",
"Tytul11",
"Tytul12"
};

 

 

Jak mogę to zrobić?


  • +
  • -
  • 0

#2 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 02.08.2013 14:39

Można to przerobić, by wczytywało z pliku

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#3 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 02.08.2013 14:41

Chcesz mieć stałą liczbę rs`ów czy zmienną?


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#4 cedrik17

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:15
  • Imię:Rafał
  • Lokalizacja:Brzesko
Offline

Napisano 02.08.2013 14:41

Rozumiem, że miałem się nauczyć wszystkiego z twojego postu, tak się jednak nie stało. Jak to zrobić najprościej, może jakiś przykład?

 

@up

zmienną, tytułów też analogicznie.


Użytkownik cedrik17 edytował ten post 02.08.2013 14:42

  • +
  • -
  • 0

#5 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 02.08.2013 14:53

Ok, zrobilem Ci to, tylko haczyk taki, że nie sprawdzałem, masz tu .sma
/* 
Plugin generated by AMXX-Studio 
RoundSound by byQQ ala kju kju
CT i TT maja takie same nutki, ustalamy je nizej
 
Dziekuje, dobranoc!
 
*** Yea !
 
All rights reserved
*/
 
#include 
 
// #define RAND 
 #define MAX_MUSIC 25
 
new nutki[MAX_MUSIC][64] 

new title[MAX_MUSIC][33]

new tag[33]
 
new bool: g_odtwarzac[33];
new bylo_juz;
new SayText;
 
public plugin_precache() 
{
	Load_Database()
	for(new i = 0; i < sizeof(nutki); i++) {
		if(file_exists(nutki[i])) {
			precache_generic(nutki[i]);
		} else {
			log_amx("[RSound] Nie ma dzwieku %s", nutki[i]);
		}
	}
}
 
public plugin_init() {
	register_plugin("Round Sound", "1.4b", "byQQ");
 
	register_event("SendAudio", "muzyka", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin");
 
	register_clcmd("say /roundsound", "chce");
 
	SayText = get_user_msgid("SayText");
 
	set_task(180.0, "informacja", _, _, _, "b");
}
 
public Load_Database()
{
	new text[256], music[64], desc[33], len
	for(new i; i < read_file("addons/amxmodx/configs/roundsound.ini", i, text, charsmax(text), len);i++)
	{
		parse(text, music, 63, desc, 32)
		remove_quotes(music)
		remove_quotes(desc)
		if(i == 0)
		{
			copy(tag, 32, music) // Tag
		}
		if( i > 0)
		{
			copy(nutki[i-1], 63, music)
			copy(title[i-1], 32, desc)
		}
	}
}
public client_connect(id) {
	g_odtwarzac[id] = true;
}
 
public informacja() {
	msg(0, "%s!g Wpisz /roundsound by wlaczyc/wylaczyc roundsound", tag);
}
 
public muzyka() {
	new players[32], num, i, nutka;
	get_players(players, num);
 
	#if defined RAND
	while((nutka = random_num(0, charsmax(nutki))) == bylo_juz) { }
	#else
	if(bylo_juz >= charsmax(nutki)) 
		bylo_juz = 0;
	else bylo_juz++;
	#endif
 
	nutka = bylo_juz;
 
	for (i = 0; i < num; i++) {
		new id = players[i];
 
		if(g_odtwarzac[id]) {
			msg(id, "%s!g Gramy teraz: !t%s.", tag, title[nutka]);
			client_cmd(id, "mp3 stop; wait; stopsound");
			playsound(id, nutki[nutka]);
		}
	}
	return PLUGIN_HANDLED;
}
 
public chce(id) {
	msg(id, "%s!g RoundSound zostal %s", tag, g_odtwarzac[id] ? "wylaczony" : "wlaczony");
 
	g_odtwarzac[id] = !g_odtwarzac[id];
}
 
stock playsound(id, const dzwiek[]) {
	if(contain(dzwiek, ".mp3") != -1) {
		client_cmd(id, "mp3 play %s", dzwiek);
	} else {
		client_cmd(id, "spk %s", dzwiek);
	}
}
 
stock msg(const id, const string[], {Float, Sql, Resul,_}:...) {
 
	new msgs[191], players[32], count = 1;
	vformat(msgs, sizeof msgs - 1, string, 3);
 
	replace_all(msgs,190,"!g","^4");
	replace_all(msgs,190,"!y","^1");
	replace_all(msgs,190,"!t","^3");
 
	if(id) players[0] = id;
	else get_players(players,count,"ch");
 
	new index;
	for (new i = 0 ; i < count ; i++)
	{
		index = players[i];
		message_begin(MSG_ONE_UNRELIABLE, SayText, _, index);
		write_byte(index);
		write_string(msgs);
		message_end();
	}
}
Include to takie jakie byly, jezeli ucielo, i stworz plik w folderze addons/amxmodx/configs/ pod nazwa "roundsound.ini" bez cudzyslowow i wklej tę zawartość do tego pliku
"!tTytul piosenki:"
"sound/OnlyDD2/Sierpien2013/1z12.mp3" "Tytul1"
"sound/OnlyDD2/Sierpien2013/2z12.mp3" "Tytul2"
"sound/OnlyDD2/Sierpien2013/3z12.mp3" "Tytul3"
"sound/OnlyDD2/Sierpien2013/4z12.mp3" "Tytul4"
"sound/OnlyDD2/Sierpien2013/5z12.mp3" "Tytul5"
"sound/OnlyDD2/Sierpien2013/6z12.mp3" "Tytul6"
"sound/OnlyDD2/Sierpien2013/7z12.mp3" "Tytul7"
"sound/OnlyDD2/Sierpien2013/8z12.mp3" "Tytul8"
"sound/OnlyDD2/Sierpien2013/9z12.mp3" "Tytul9"
"sound/OnlyDD2/Sierpien2013/10z12.mp3" "Tytul10"
"sound/OnlyDD2/Sierpien2013/11z12.mp3" "Tytul11"
"sound/OnlyDD2/Sierpien2013/12z12.mp3" "Tytul12"
Pierwsza linijka to "Tag" a potem to sie polapiesz, nie moze byc zadnech akapitow, 1 linjka to tag a 2 to 1 piosenka potem tytul, następnie 3 linjka to 2 piosneka i tytul itd.. w pliku w #define MAX_MUSIC ustawiasz max liczbe piosenek

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#6 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 02.08.2013 15:09

A więc pokaże ci w krótki sposób jak odczytać rs`y z pliku i wpakować je do zmiennej dynamicznej :D

 

Tworzymy zmienną globalną typu Array

new Array:Uchwyt, Array:Uchwyt2

Teraz wczytanie pliku:

public plugin_cfg()
{
	new szFilename[ 128 ] // Zmienna z scieżką do pliku
	get_configsdir( szFilename, 127 ) // Pobieramy ścieżkę do addons/amxmodx/configs
	add( szFilename, 127, "/Twoja_nazwa_pliku.ini" )// "Twoja_nazwa_pliku.ini" to twój plik nazwe zmień na jaką chcesz 
	if(!file_exists(szFilename))
	{
		set_fail_state("Plugin zostanie wylaczony z powodu braku pliku Twoja_nazwa_pliku.ini")
		// Gdyby pliku nie było plugin się wyłącza
		return PLUGIN_CONTINUE
	}
	new iFile = fopen( szFilename, "rt" ); // Otwieram plik
	if( !iFile )
	{
		set_task(10.0,"plugin_cfg") // Jeśli jakiś proces używa pliku to taskiem opóźniam czas ponownego otwarcia
		return PLUGIN_CONTINUE
	}
    
	new szData[ 50 ], iPos; // Zliczam ile ma tu być lini
	while(!feof( iFile ))
	{
        fgets( iFile, szData, 2 );
        if( !szData[ 0 ] || szData[ 0 ] == '^n'|| szData[ 0 ] == ';'|| szData[ 0 ] == '/' && szData[ 1 ] == '/' ) continue
		// Omijam nie potrzebne linie
		
        iPos++;
    }
	// Po zliczeniu tworze zmienną dynamiczną
	Uchwyt = ArrayCreate(50,iPos)// 50 to maxymalna długość ścieżki(możesz dać większą)
	Uchwyt2 = ArrayCreate(20,iPos)// 20 to maxymalna długość tytulu (możesz dać większą)
	fseek(iFile, 0, 0)//Ustawiam wskaźnik na początek pliku
	
	new sciezka[50],tytul[20]
	//A teraz odczytuje
	while(!feof( iFile ))
	{
		fgets( iFile, szData, 49 ); // Pobieram całą linię
		if( !szData[ 0 ] || szData[ 0 ] == '^n'|| szData[ 0 ] == ';'|| szData[ 0 ] == '/' && szData[ 1 ] == '/' ) continue
		// Omijam nie potrzebne linie
		split( szData, sciezka, 49, tytul, 19, " ")
		trim(tytul)
		trim(sciezka)
		ArrayPushString(Uchwyt,sciezka) // wpakowuje do zmiennej dynamicznej po kolei ścieżki twojich nut
		ArrayPushString(Uchwyt2,tytul) // wpakowuje do zmiennej dynamicznej po kolei tytuly twojich nut
    }
	
	fclose( iFile ) //Zamykam plik
	
	if(!ArraySize(Uchwyt))	set_fail_state("Plugin zostanie wylaczony z powodu braku map w pliku Twoja_nazwa_pliku.ini")
	//Jeśli w tym pliku nie ma żadnego tekstu (wykluczam ominięty) to wyłączam plugin
	
	return PLUGIN_CONTINUE
}

Przykładowy odczyt ze zmiennej dynamicznej:

new string[50],tytul[20];
ArrayGetString(Uchwyt,index,string,49)// index to nr. ścieżki
ArrayGetString(Uchwyt2,index,tytul,19)// index to nr. tytułu

A w pliku to ma wyglądać miej więcej tak:

sound/OnlyDD2/Sierpien2013/1z12.mp3 Tytuł
sound/OnlyDD2/Sierpien2013/2z12.mp3 Tytuł
sound/OnlyDD2/Sierpien2013/3z12.mp3 Tytuł

Nie zapomnij stworzyć pliku w którym będą ścieżki do nut (w tym folderze: "addons/amxmodx/configs") !!!

 

// Oj sorki nie zauważyłem że już ktoś napisał :D


Użytkownik BlackPerfum edytował ten post 02.08.2013 15:18

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#7 cedrik17

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:15
  • Imię:Rafał
  • Lokalizacja:Brzesko
Offline

Napisano 02.08.2013 15:31   Najlepsza odpowiedź

Dzięki chłopaki  ^D^

 

Można zamknąć.


  • +
  • -
  • 0




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

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