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
 

cedrik17 - zdjęcie

cedrik17

Rejestracja: 04.01.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 26.01.2015 08:30
-----

#560402 Zmiana danych w osobnym pliku a nie w .sma

Napisane przez GT Team w 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


#560406 Zmiana danych w osobnym pliku a nie w .sma

Napisane przez BlackPerfum w 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


  • +
  • -
  • 1


#553602 Ban neo

Napisane przez glutex w 09.07.2013 06:07

ExtremeBanConfig 3.0 Beta

BanNeo

Sposób Darka

NeoBans -> Google
  • +
  • -
  • 1


#506604 [ROZWIĄZANE] PTB - zabijanie się przy przenoszeniu

Napisane przez sebul w 25.01.2013 19:14

http://amxx.pl/topic...a-koniec-rundy/ a najlepiej edytować ptb, aby w innym momencie przenosiło gracza.
  • +
  • -
  • 1


#322833 Tworzenie stref

Napisane przez R3X w 16.11.2011 23:15

Tworzenie stref

API pozwala na wygodne tworzenie stref o wybranej klasie. Ich funkcjonalność zapewniają osobne pluginy.

Główny plugin sygnalizuje zetknięcie się dowolnego bytu ze strefą, nie musi to być gracz. Wysyłane parametry to kolejno: byt strefy, byt znajdujący się w strefie i klasa strefy.

Lista dostępnych klas jest budowana na podstawie folderu: configs/Box/types/

Folder configs/Box/ powinien mieć chmod pozwalający na zapis (w razie problemów 777)

Prezentacja:
http://www.youtube.c...h?v=9vv0K8bU3YU

Wymagania:
Moduł VDF : http://forums.allied...ead.php?t=51662

Dostępne funkcje:
/**
* Moment wejscia w strefe
*/
forward box_start_touch(box, ent, const szType[]);

/**
* Moment wyjscia ze strefy
*/
forward box_stop_touch(box, ent, const szType[]);

/**
* Przy kazdej ramce serwera, gdy byty sie dotykaja
*/
forward box_touch(box, ent, const szType[]);


Instalacja dodatków
Plugin należy normalnie zainstalować, plik .vdf należy umieścić w folderze configs/Box/types/


SVN & Download
WebSVN - Box System - Rev 3 - /


Ciekawe efekty można osiągnąć łącząc plugin z tym: http://amxx.pl/topic...7-model-placer/

Załączone pliki


  • +
  • -
  • 21