Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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
- - - - -

ratemap 0.9.6


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

#1 stmn

    Pomocny

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 27.01.2009 15:38

Ratemap 0.9.6 made by stmn


Plugin pozwala graczom ocenić mapę, dzięki połączeniu z bazą mysql możliwy jest prosty ranking map, dzięki czemu można poznać ulubione mapy graczy czy również te najbardziej znienawidzone. Plugin można używać również lokalnie na plikach, jednak daje to zdecydowanie mniej możliwości. Wszystkie pliki i katalog oraz w przypadku bazy tabela, tworzą się automatycznie.


Instalacja:
Wrzucić plik ratemap.amxx do katalogu plugins, oraz dopisać do plugins.ini: ratemap.amxx
Wrzucić plik ratemap.txt do katalogu date/lang/

Komendy gracza:
/rate // otwiera menu oceniania,

Cvars:
rm_tag "[RateMap]" // pozwala zmienić tag przed napisami, domyślnie [RateMap]
rm_sql <1|0> // 1 - operuje na bazie mysql, 0 - lokalnie na plikach, domyślnie: 1

rm_mode // pozwala zmienić sposób sprawdzania ocen, domyślnie: steamid

rm_host "localhost" // należy podać w przypadku włączonego rm_sql
rm_user "username" // należy podać w przypadku włączonego rm_sql
rm_pass "password" // należy podać w przypadku włączonego rm_sql
rm_db "database" // należy podać w przypadku włączonego rm_sql
rm_hostname "Your Hostname" // pozwala zdefiniować nazwę serwera, domyślnie,: Your Hostname

Site-ranking:
Strona wyświetlająca ranking

ToDo:
odpalenie menu oceny po określonym czasie,

Historia:
30.01.09 [ver. 0.9.6]
- naprawiony nie groźny błąd związany z oddawaniem ocen, który pojawiał się w logach
29.01.09 [ver. 0.9.5]
- skasowany rm_table,
- dodany rm_hostname,
- ulepszona obsługa wielu serwerów przez jeden skrypt php,
28.01.09 [ver. 0.9.3]
- dodany rm_mode oraz rm_table,
- ulepszony ranking www, dodane gwiazdki zamiast zwykłej liczby
27.01.09 [ver. 0.9]
- ulepszona multijęzykowość,

Info:
Jeśli macie jakieś propozycje i pomysły co do tego pluginu to pisać. Jest to mój pierwszy poważniejszy plugin, którym się dziele, dlatego możliwe, że kod nie jest najbardziej zoptymalizowany, jednak cały czas mogę go rozwijać jeśli komuś się spodoba. Jeśli ktoś zauważy błędy to również pisać.

Załączone pliki


  • +
  • -
  • 0

#2 rS.

    Wszechmogący

  • Power User

Reputacja: 157
Profesjonalista

  • Postów:608
  • Lokalizacja:Przemyśl
Offline

Napisano 27.01.2009 15:45

O:) ciekawe ciekawe pozwala to stwirdzic na jakich mapach gracze lubią grac ^^ dzięki przyda się .
  • +
  • -
  • 0

- Pisanie pluginów: http://amxx.pl/topic...napisac-plugin/

- Backlinks, podstawy i pozycjonowanie SEO: http://amxx.pl/topic...cjonowanie-seo/


#3 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 27.01.2009 15:47

O:) ciekawe ciekawe pozwala to stwirdzic na jakich mapach gracze lubią grac ^^ dzięki przyda się .


Dokładnie, nie znalazłem takiego innego pluginu (znalazłem tylko do Source) dlatego postanowiłem go napisać. Jeśli masz jakieś propozycje to śmiało pisać, jeśli znajdzie ktoś błędy to również.
  • +
  • -
  • 0

#4 rS.

    Wszechmogący

  • Power User

Reputacja: 157
Profesjonalista

  • Postów:608
  • Lokalizacja:Przemyśl
Offline

Napisano 27.01.2009 15:49

dlatego postanowiłem go napisać


sam go napisałes ?

przetestuje dzisiaj i dam znać ;-)
  • +
  • -
  • 0

- Pisanie pluginów: http://amxx.pl/topic...napisac-plugin/

- Backlinks, podstawy i pozycjonowanie SEO: http://amxx.pl/topic...cjonowanie-seo/


#5 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 27.01.2009 15:53

dlatego postanowiłem go napisać


sam go napisałes ?

przetestuje dzisiaj i dam znać ;-)


Oczywiście w trakcie pisania musiałem zaglądnąć to niektórych tutoriali np. żeby poznać funkcje modułu sqlx. ;)
  • +
  • -
  • 0

#6 MafiaDL

    Naj-Najstarszy Moderator

  • Przyjaciel

Reputacja: 554
Wszechwiedzący

  • Postów:3492
  • GG:
  • Imię:Łukasz
  • Lokalizacja:Warsaw
Offline

Napisano 27.01.2009 15:58

Brawo ;-)
  • +
  • -
  • 0

#7 Klycior

    Wszechpomocny

  • Użytkownik

Reputacja: 43
Pomocny

  • Postów:370
  • GG:
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 27.01.2009 20:57

Fajne ale co do map używam GameTracker :)
  • +
  • -
  • 0

#8 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1662
Godlike

  • Postów:2495
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 27.01.2009 22:50

Po co jest ten kawałek kodu w SMA...:
/*
public client_putinserver(id)
{
	first[id] = 1;
}

public test(id)
{
	fnGreenChat(id,"%s TEST.",tag)	
}

public player_spawn(id)
{
if(first[id])
	{
fnGreenChat(id,"-- %d -- 1",task)	
if(task==5){
	iftask=1
	fnGreenChat(id,"-- %d -- 2",task)	
	set_task(30.0,"check",id=0)
} else if(task==10){	
	iftask=1
	set_task(600.0,"test")
} else if(task==15){
	iftask=1	
	set_task(900.0,"test")
} else if(task==20){
	iftask=1
	set_task(1200.0,"test")
}
}
first[id] = 0;
} 



public rateinfo(id)
{
	new readdata[128],txtlen
	new parsedsteamid[32]
	new Float:suma
	new Float:licznik
	new Float:srednia
	new srednia2
	
	new fsize = file_size(filename,1)
	for (new line=0;line<fsize;line++)
	{
		
		read_file(filename,line,readdata,127,txtlen)
		parse(readdata,parsedsteamid,31,parsedrate,2)
		
		suma=suma+str_to_float(parsedrate[0]);
		
		licznik=licznik+1
		
	}
	srednia=suma/licznik;
	srednia2=floatround(srednia);
	if(srednia2==0){
	fnGreenChat(id,"%s Nikt nie ocenial jeszcze tej mapy.",tag)	
	}
    
   }

public client_putinserver(id)
{
	first[id] = 1;
}

public player_spawn(id)
{
	new readdata[128],txtlen
	new parsedsteamid[32]
	new Float:suma
	new Float:licznik
	new Float:srednia
	new srednia2
	new ocenka[12]
	
	new fsize = file_size(filename,1)
	for (new line=0;line<fsize;line++)
	{
		
		read_file(filename,line,readdata,127,txtlen)
		parse(readdata,parsedsteamid,31,parsedrate,2)
		
		suma=suma+str_to_float(parsedrate[0]);
		
		licznik=licznik+1
		
	}
	
	if(first[id])
	{
		
	srednia=suma/licznik;
	srednia2=floatround(srednia);
	
	if(srednia2==1){
		ocenka="do dupy";
	} else if(srednia2==2){
		ocenka="slaba";
	} else if(srednia2==3){
		ocenka="srednia";
	} else if(srednia2==4){
		ocenka="nawet fajna";
	} else if(srednia2==5){
		ocenka="fajna";
	} else if(srednia2==6){
		ocenka="zajebista";
	}
	
	if(srednia2==0){
	fnGreenChat(id,"%s Nikt nie ocenial jeszcze tej mapy.",tag)	
	} else {
	fnGreenChat(id,"%s Ta mapa zdaniem graczy jest %s. Aby ocenic uzyj komendy /rate",tag,ocenka)	
}
			
	
		
	first[id] = 0;
	}
	return PLUGIN_CONTINUE
} 
*/

... Skoro i tak jest wyłączony?
  • +
  • -
  • 0

#9 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 27.01.2009 22:59

Po to żebyś się głupio pytał. Ten kawałek jest bo nad nim pracuje, a wyłączyłem go bo nie działa prawidłowo. Jak Ci przeszkadza to sobie skasuj. ;)
  • +
  • -
  • 0

#10 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1662
Godlike

  • Postów:2495
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 27.01.2009 23:04

stmn, spytałem się normalnie... a ty oburzony od razu jesteś...

Ps. dodaj że można wybrać na jakiej zasadzie ma zapisywa dane bo aktualnie bazuje to na STEAMID, najlepiej jakbyś zrobił do wyboru :
1. Steam ID
2. IP
3. Nick

Ps2. jak nad czymś pracujesz to wtedy nie dodawaj tego do oficialnej wersji bo widzisz jak by ktos nie pomyślał że kod może bydź w budowie i by zaznaczył żeby go wczytywało i by mu potem błędy wywalały to bys mu musiał to tłumaczyc ;d

Ps.3
WWW:
$polaczenie = @mysql_connect('sql.onyxad.nazwa.pl', 'onyxad_2', '***********')
or die('Brak połaczenia z serwerem mysql. Bład: '.mysql_error());

$db = @mysql_select_db('onyxad_2', $polaczenie)
or die('Nie mogę połaczyć się z baza danych. Bład: '.mysql_error());

może zmień to na:

$polaczenie = @mysql_connect('localhost', 'login_admina_bazy_danych', 'hasło_bazydanych')
or die('Brak połaczenia z serwerem mysql. Bład: '.mysql_error());

$db = @mysql_select_db('nazwa_bazy_danych', $polaczenie)
or die('Nie mogę połaczyć się z baza danych. Bład: '.mysql_error());

albo jeszcze zrobić to tak:


// Baza Danych
$config->uzytkownik 		= "root";
$config->haslo 		        = "";
$config->nazwabazy 		= "mapy";
$config->serwersql		= "localhost";

$polaczenie = @mysql_connect($config->serwersql, $config->uzytkownik, $config->haslo)
or die('Brak połaczenia z serwerem mysql. Bład: '.mysql_error());

$db = @mysql_select_db($config->nazwabazy, $polaczenie)
or die('Nie mogę połaczyć się z baza danych. Bład: '.mysql_error());

$wynik = mysql_query("SELECT mapname, rate FROM rates GROUP BY mapname ORDER BY AVG(rate) DESC");

nie testowałem ale powinno działać
  • +
  • -
  • 0

#11 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 27.01.2009 23:44

Ps. dodaj że można wybrać na jakiej zasadzie ma zapisywa dane bo aktualnie bazuje to na STEAMID, najlepiej jakbyś zrobił do wyboru :
1. Steam ID
2. IP
3. Nick


Można zrobić, ale moim zdaniem steamID całkowicie wystarcza. ;-)

Ps2. jak nad czymś pracujesz to wtedy nie dodawaj tego do oficialnej wersji bo widzisz jak by ktos nie pomyślał że kod może bydź w budowie i by zaznaczył żeby go wczytywało i by mu potem błędy wywalały to bys mu musiał to tłumaczyc ;d


Jak ktoś się nie zna to nie powinien się bawić. Nie po to zakryłem coś, żeby ktoś to odkrywał, jeśli ktoś tego nie rozumie to współczuje. Nie zamierzam odpowiadać za błędy wynikłe z nie mądrego edytowania sma. :D

Co do kawałka php: dziękuje za ujawnienie danych. Wydawało mi się, że dawałem poprawnie zmodyfikowany kod.

Czekam na więcej propozycji. ;-)
  • +
  • -
  • 0

#12 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1662
Godlike

  • Postów:2495
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 28.01.2009 10:30


Ps. dodaj że można wybrać na jakiej zasadzie ma zapisywa dane bo aktualnie bazuje to na STEAMID, najlepiej jakbyś zrobił do wyboru :
1. Steam ID
2. IP
3. Nick


Można zrobić, ale moim zdaniem steamID całkowicie wystarcza. ;-)


to dorób mi się bardzo przyda i co niektórym też :P
  • +
  • -
  • 0

#13 box.

    Zaawansowany

  • Użytkownik

Reputacja: 0
zer0.

  • Postów:98
  • GG:
Offline

Napisano 28.01.2009 13:16

No super plugin chyba go użyje :D
  • +
  • -
  • 0

#14 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 28.01.2009 13:38

Nowa wersja: 0.9.3.
Została dodana możliwość wyboru sposobu sprawdzania danych: ze względu na steamid, nickname lub ip. Sprawdzałem tylko nickname, ale reszta powinna też działać. Można teraz również zmienić nazwę tabeli. W rankingu zamiast cyferek oznaczających średnią ocen, teraz pokazują się fajne gwiazdki. :)
  • +
  • -
  • 0

#15 Proximus

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:95
  • GG:
  • Steam:steam
  • Imię:Paweł
  • Lokalizacja:Ostrowiec Św.
Offline

Napisano 28.01.2009 15:42

Może jeszcze jak już ranking - pytanie jaką broń lubisz najbardziej czy coś ;)
  • +
  • -
  • 0

#16 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1662
Godlike

  • Postów:2495
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 28.01.2009 22:25

Błąd mam ;d
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/cspzb/public_html/mapy/index.php on line 49

// mySQL
$hostname="web2.hitme.pl";
$username= "cspzb_admin";
$password="************";
$database="cspzb_mapy"; 

// table
$table="oceny"; // default: rates

$polaczenie = @mysql_connect($hostname, $username, $password)
or die('Brak połaczenia z serwerem mysql. Bład: '.mysql_error());

$db = @mysql_select_db($database, $polaczenie)
or die('Nie mogę połaczyć się z baza danych. Bład: '.mysql_error());

$wynik = mysql_query("SELECT mapname, rate FROM $table GROUP BY mapname ORDER BY AVG(rate) DESC");

znalazłem przyczynne ;s jest to
rm_table "rates"
po zmianie na cos innego na www i w amxx.cfg nie dziala strona ;d
  • +
  • -
  • 0

#17 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 28.01.2009 23:03

Jeśli na stronie masz: $table="oceny";
to w amxx.cfg musisz mieć: rm_table "oceny"
Jeśli tak będzie to musi działać i nie ma innej opcji. Zrestartuj serwer i sprawdź czy tabela "oceny" istnieje w bazie. Możesz spróbować skompilować sma, bo jestem pewien, że się plik zaktualizował. (czasami coś się chyba nie aktualizuje)

Jutro będzie nowa wersja bez rm_table i ze stałą nazwą tabeli, zamiast niej będzie coś innego dzięki czemu skrypt zwiększy funkcjonalność. :)
  • +
  • -
  • 0

#18 Miczu

    Godlike

  • Przyjaciel

Reputacja: 646
Wszechmogący

  • Postów:2862
Offline

Napisano 30.01.2009 16:21

stmn, uzyj tabulatorow by zapanowac nad chaotycznym kodem, cod powinien wygladac mniej wiecej tak:
public fun()
{
    if(a)
    {
        x++
        y--
    }
    else
    {
         if(x==y)
         {
             cos++
         }
         else
         {
             cos--
         }
    }
}
Ilosc tabulatorow powinna swiadczyc jak bardzo jest to zagniezdzone...

Mozesz tez usunac z pugin_init robienie tabeli i zamiast tego zrobic i wywloac w plugin_init np table_init().

SQL_MakeDbTuple - tuple od polaczenia z baza danych wystarczy zrobic raz i uwolnic ja na koniec mapy ( plugin_end() ).

PS. mimo wszystko zbedny kod mogles nam odpuscic.
  • +
  • -
  • 0

#19 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 30.01.2009 19:12

stmn, uzyj tabulatorow by zapanowac nad chaotycznym kodem, cod powinien wygladac mniej wiecej tak:


Poprawione. Możesz teraz zajrzeć. ^^

Mozesz tez usunac z pugin_init robienie tabeli i zamiast tego zrobic i wywloac w plugin_init np table_init().


W sumie to nie wiem jakie korzyści z tego są ale zrobiłem.

SQL_MakeDbTuple - tuple od polaczenia z baza danych wystarczy zrobic raz i uwolnic ja na koniec mapy ( plugin_end() ).


Poprawiłem - SQL_MakeDbTuple jest tylko na początku. Co do uwalniania to trzeba tylko chyba uwolnić SQLConnection, a nie samo SQL_MakeDbTuple, uwalniam je po każdym połączeniu,(czy jeśli otwiera połączenie i nie zamknie to kolejna operacja wywoła osobne połączenie czy jedno będzie cały czas? ;> ) ponieważ przy każdej operacji muszę na nowo wywołać połączenia, bo po jakimś czasie najzwyczajniej gubi połączenie. O:)
  • +
  • -
  • 0

#20 Miczu

    Godlike

  • Przyjaciel

Reputacja: 646
Wszechmogący

  • Postów:2862
Offline

Napisano 30.01.2009 20:32

Robisz raz:
g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)

g_SqlTuple - w tym masz przechowane niezbedne dane potrzebne do polaczenia (to nie laczy z sql'em)

Mozesz, ale nie musisz uwolnic w/w na koncu pluga.


Kiedy juz masz w/w tuple, mozesz zrobic faktyczne polaczenie:
SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)

Po uwolnieniu go tracisz polaczenie wiec musisz je jeszcze raz wywolac w razie potrzeby wykozystania z bazy danych. Koniecznie musisz uwolnic ja na koniec (moze sie zle skonczyc bodaj jak zostawisz otwarte polaczenie przy zmianie mapy...).

[ Dodano: 30-01-2009, 20:38 ]
Zrob tak by w plugins ini byly tylko elementy takie jak register_cvar, events, midget, etc.

Pobieranie cvarow i robienie tupla przenies do innej funkcji. Rownie dobrze mozesz zrobic tak z logiem do pliku (ten z plugin_init). To uporzadkuje troche plugin_init, a po nazwie table_init(); (hmm... moze dodac przedrostek sql?) kazdy sie skapnie co tam jest.

Poprawi to czytelnosc kodu ;-)

Poprawione. Możesz teraz zajrzeć.

To czemu widze w paru miejscach na takiej samej wysokosci klamry?
{
{

PS. Dobrze wiedziec ze sie starasz ;-)
  • +
  • -
  • 0




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

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