Skocz do zawartości

blint

Użytkownik
  • Zawartość

    32
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    2

Odpowiedzi dodane przez blint


  1. W środku znajdziecie informacje odnośnie tego co trzeba zrobić, co jest niedokończone. Kod udostępniony w celach naukowych :)

    Repo https://github.com/blint96/mta-lsrp

    Link do gamemode SA:MP 

    Credits:

    - whyimsobad - tablista z liczbą graczy, blurred rectangle

    - sim00n - zbugowane grupy :D

    - i inni, którzy dorzucili swoją cegiełkę do powstania tego oto, o!

    The MIT License (MIT)
    
    Copyright (c) 2016 Mateusz Sobiecki
    
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.

     


  2. Skoro robisz swój własny serwer to napisz na szybko skrypt, którzy przeloopuje przez wszystkie stworzone elementy shaderów etc. Jak robiłem lskowy gamemode to poczatkowo myślałem, że one same się usuwają tak jak np. efekty

    Myliłem się a wszystko pozostawało cały czas zapisane co po prostu zajmuje GPU.

    addCommandHandler("shaderloop", function()
    	local count = 0
    	for k, v in pairs(getElementsByType("shader")) do 
    		count = count + 1
    	end
    
    	outputChatBox(count)
    end)

     


  3. Ktoś tam u góry pyta o player(ID) - w MTA nie ma domyślnie IDów, wszystko oparte jest na elementach. Najlepiej będzie jeśli wyobrazisz sobie talię kart. Każdy AS jest kartą, karta to element. Więc jak widzisz mamy 54 elementy o typie "karta" ale każda z kart może się różnić od siebie szczegółami.

    Tak samo gracze, każdy gracz jest elementem (Player) i ilu jest graczy tyle jest elementów o typie gracz. Oczywiście możesz samemu napisać skrypt do IDów - sam jednego używam. Przydatne zwłaszcza gdy jesteś przyzwyczajony do działania IDów z SAMPa.


  4. Zamiana systemu logowania na GM mysantos to kwestia zmiany jednej funkcji, jak wrócę do domu to mogę wam naskrobać coś co wg. mnie powinno działać.

     

    P.S. MyBB i IP.Board mają różne metody hashowania haseł - wystarczy poszukać na googlach lub samym konkretnym pliku na forum.

     

    1. https://mybboard.pl/watek-mybb-kodowanie-hasla-w-mybb_2627
    2. przykladu z IP.Board nie podam bo jest w kodzie

     

    @edit:

    https://github.com/blint96/mysantos-main/blob/master/vliveb.pwn-> linia 7545

     

    Tutaj wersja dla leniwych :P

    public CheckPassword(playerid,password[])		//sprawdzanie czy gracz wpisal poprawnie haslo
    {
    	new buffer[256],pname[MAX_PLAYER_NAME];
    	GetPlayerName(playerid,pname,sizeof(pname));
    	format(buffer,sizeof(buffer),"SELECT char_gid FROM core_players WHERE char_name='%s'",pname);
    	mysql_query(buffer);
    	mysql_store_result();
    	PlayerGID[playerid] = mysql_fetch_int();
    	mysql_free_result();
    	
    	format(buffer,sizeof(buffer),"SELECT members_pass_salt FROM mysa_members WHERE member_id=%i",PlayerGID[playerid] );
    	mysql_query(buffer);
    	mysql_store_result();
    	new memberPassSalt[5];
    	mysql_fetch_string(memberPassSalt);
    	mysql_free_result();
    
    	new password_e[128];
    	mysql_real_escape_string(password,password_e);
    	format(buffer,sizeof(buffer),"SELECT name FROM mysa_members WHERE member_id=%i AND members_pass_hash=md5(CONCAT(md5('%s'),md5('%s')))",PlayerGID[playerid] ,memberPassSalt,password_e);
    	mysql_query(buffer);
    	
    	
    	mysql_store_result();
    	if(mysql_num_rows() == 0)
    	{
    		TogglePlayerSpectating(playerid,1);
    		LogTry[playerid]++;
    
    		mysql_free_result();
    		ShowPlayerDialog(playerid,DIAL_L,DIALOG_STYLE_PASSWORD,"Logowanie","Wpisz swoje has³o, aby po³¹czyæ siê z serwerem.\n"COL_RED"* - Ÿle wpisa³eœ has³o, spróbuj jeszcze raz","Gotowe","Wyloguj");
    		return 0;
    	}
    	else
    	{
    	    mysql_free_result();		
    		TogglePlayerSpectating(playerid,0);
    		GetPlayerInfo(playerid);
    		LogPlayerLogin(playerid,1);
    		Logged[playerid] = 1;
    		SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);	
    		SpawnPlayer(playerid);
    		
    		GetPlayerGroups(playerid);
    		
    		GetPlayerBlocks(playerid);		//do tej pory dziala
    		
    	    new welcome[256],name[24],surname[24];
    	    sscanf(pname,"p<_>s[24]s[24]",name,surname);
    	    format(welcome,sizeof(welcome),"Witaj, %s na %s %s. ¯yczymy Ci przyjemnej gry :)",GetPlayerGlobalNickname(playerid),SERVERNAME,VERSION);
    		SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    		SpawnPlayer(playerid);
    		//Attach3DTextLabelToPlayer(PlayerNick[playerid], playerid, 0.0, 0.0, 0.2);
    	    SendClientMessage(playerid,COLOR_SERVER,welcome);
    		new query2[256];
    		format(query2,sizeof(query2),"UPDATE core_players SET char_logged=1 WHERE char_uid=%i",GetPlayerUID(playerid));
    		mysql_query(query2);
    		return 1;
    	}
    } 


  5. O ile dobrze pamietam to w mysa_members -> pole access, czy coś w te gusta, w każdym razie chyba po member_id trzeba ustawic na 1-5.

     

    Dawno nie zaglądałem do tej mapy ale po kodzie wszystkiego sie domyślicie a co do tabeli "uprawnienia" to tam ustawiamy czy może używać komend adminia dot. grupy, pojazdu itp. <- to też wszystko po kodzie idzie się domyśleć.


  6. 1. nie trybi link do ss'a

    2. przypuszczam, że nie tworzysz nowej zmiennej - miałem kiedyś przyjemność używania mSelection - wybierałki trzymane są w zmiennych, więc dla każdej nowej wybierałki musisz tworzyć nową zmienną, która przetrzyma "ID" danego okna

    // Na górze skryptu
    new policeSkins = mS_INVALID_LISTID;
    new anotherList = mS_INVALID_LISTID;
    
    public OnFilterScriptInit()
    {
        policeSkins = LoadModelSelectionMenu("skinyPD.txt");
        anotherList = LoadModelSelectionMenu("cokolwiek.txt");
        return 1;
    }
    
    OnPlayerModelSelection(playerid, response, listid, modelid)
    {
        if(listid == policeSkins)
        {
            //instr
        }
        
        if(listid == anotherList)
        {
            // inst
        }
        
        return 1;
    }
    

  7. a w ogóle to co cię to interesuje co oni robią? twój projekt? aż tak cię to boli że mają serwer na którym gra jeden gracza - HeadAdmin? Nie wiem o co Ci chodzi, ja na przykład nie zwracam uwagi na te pseudole, one zawsze były, są i będą i nie ma na to siły. To tylko SA:MP - Gdybyście ruszyli troche główkami pousuwalibyście dział "Mapy/Gamemode" to od razu byłoby mniej tych pseudoli, ale teraz jest już na to za późno i nie ma się co nad sobą użalać tak jak teraz robisz to w tym temacie, pozdro.

     

    Ale dział Mapy/Gamemode nie powstał po to by zasysać gotowca i odpalać setny serwer z tą samą mapą, tylko po to by osoby świeże mogły zapoznać się z tym jak rozwiązać niektóre problemy lub w najgorszym wypadku wyciąć sobie interesujący fragment, jeżeli sam nie jest w stanie spełnić tego zadania.

     

    Nie da się filtrować osób zaglądających do tego działu, ale usuwanie go nie ma najmniejszego sensu.


  8. Problem polega na tym, że osoby, które starają się uczyć kodzenia - uczą się od właśnie takich pseudoadministratoroprogramistów, jak na moje to dobrym rozwiązaniem byłoby zablokowanie redagowania tematów w dziale "Poradniki" dla osób poniżej jakiegoś progu reputacji.

     

    Chociaż trochę zamnkęłoby to drogę ludziom, którzy po prostu nie powinni pisać poradników bo zwyczajnie narobią szkód, niżeli nauczą kogoś jak poprawnie pisać. A co do tych projektów powstających zgodnie z Twoim "planem wydarzeń" to raczej tego nie zmienisz, zazwyczaj jest to banda osób, która albo

     

    a) jest pobanowana na każdym szanującym się serwerze

    b) rozpoczęła właśnie wakacje więc zamiast iść w krzaki bawić się kijami (w ich wieku tak robiłem) wolą siedzieć przed komputerem i robić serwer z wykałaczki (to wychodzi chyba tylko MacGyver'owi)

     

    Więc zmierzając do końca - stawiajmy na prewencję a nie zwalczanie. Pawno.pl to ma być przede wszystkim swoista encyklopedia dla osób, które zaczynają swoją przygodę, jak wiemy najlepiej uczyć się czegoś w swoim języku niż wiki.sa-mp.com, stąd dbajmy o to, by treści zamieszczane w działach "Pomocy/Poradników" wykazywały jakiś konkretny poziom.


  9. Da sie tworzyć konto IG, chodzi mi o to ze wpisuje nick np: Edek_Garbus i wyskakuje mi okienko ze nick wolny moge go zarejestrowac i wgl bo znalazłem cos takiego w .pwn

    #define REGISTER_IN_GAME 0 // rejestracja InGame

    i jeszcze raz prosze o plugin'y pod windows'a

     

     

    to jest nieużywane


  10. w core_players masz coś takiego jak char_gid <- tam wpisujesz id z tabeli mysa_members do konta globalnego

     

    przykład:

    1. mam konto o nazwie blint na forum (mysa_members), id tego konta to 250

    2. w core_players mam swoją postać John_Paul

    3. UID John_Paul = (?) jakikolwiek

    4. char_gid = 250


  11. Skrypt nie potrzebuje paneli tylko czyta hasła do konta globalnego z forum ? Czyli że rejestruje się na forum pod które jest podpięty skrypt i wchodze na serwer z nickiem i hasłem z forum, a postać tworzę IG ? 

     

    Postać musisz stworzyć w tabeli core_players, logujesz się na nicku postaci Imię_Nazwisko, hasło wpisujesz takie samo jak do konta globalnego na forum.


  12. więcej tych timerów nie mogłeś zrobić, co?

    zrób jeden, który inicjujesz w OnGameModeInit, niech interval = 1000, repeat = true

     

    i po prostu używaj foreach lub samego fora, pokażę Ci przykład

    public OnGameModeInit()
    {
    	SetTimer("OnSecondTimer",1000,true);
    	return 1;
    }
    
    public OnSecondTimer()
    {
    	for(new i = 0 ; i < MAX_PLAYERS; i++)
    	{
    		//instrukcje
    	}
    	
    	return 1;
    }
    
×