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

SQL pierwsze połączenie gracza, nie przypisuje wartości


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

#1 ToRRent

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 26.11.2012 11:45

Mam mały problem wagi państwowej
w plugin_cfg() mam
SQL_PrepareQuery(hConn, "CREATE TABLE IF NOT EXISTS `data`(sid VARCHAR(35) NOT NULL, punkty INT UNSIGNED NOT NULL DEFAULT 1000, PRIMARY KEY(sid))");

w client_putinserver(id)
new data[1];
data[0] = id;
SQL_FormatQuery("SELECT * FROM `data` WHERE `sid` = '%s'", steamid[id]);
SQL_ThreadQuery(info, "handleSelectPlayer", gszQuery, data, sizeof(data));


public handleSelectPlayer(failstate, Handle:query, error[], errnum, data[], size)
{
if(failstate != TQUERY_SUCCESS)
{
log_amx("<Query> Error: %s", error);
return;
}
new id = data[0], elo_temp;
if(!is_user_connected(id) && !is_user_connecting(id))
return;

if(SQL_NumRows(query))
{
elo_temp = SQL_ReadResult(query, SQL_FieldNameToNum(query, "punkty"));
elo_gracza[id] = float(elo_temp);
}
else
{
SQL_FormatQuery("INSERT INTO `data` (`sid`) VALUES ('%s')", steamid[id]);
SQL_ThreadQuery(info, "handleIgnore", gszQuery);
}
}

public handleIgnore(failstate, Handle:query, error[], errnum, data[], size){
if(failstate != TQUERY_SUCCESS){
log_amx("<Query> Error: %s", error);
return;
}
}

stock SQL_FormatQuery(const szQuery[], ...){
vformat(gszQuery, charsmax(gszQuery), szQuery, 2);
}

Więc gracz którego nie ma w bazie powinien dostać 1000 pkt na start, lecz ich nie otrzymuje (dostaje dopiero w następnej mapie)

dlaczego ? co należy zmienić / zrobić ?
  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 26.11.2012 12:47

Masz pewność, że nie dostaje tych punktów w BAZIE? bo moim zdaniem dostaje, ale na serwerze nie są one wczytywane. Dopisz po zapytaniu insert to:
elo_gracza[id] = 1000

  • +
  • -
  • 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 ToRRent

    Czempion

  • Autor tematu
  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 26.11.2012 16:17

Dopisałem i bez zmian
  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 26.11.2012 16:49

Jeszcze raz zobrazujmy sytuację, wchodzi gracz na serwer PIERWSZY raz. Coś się pojawia w bazie danych? ma on przydzielone punkty na SERWERZE?
  • +
  • -
  • 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


#5 ToRRent

    Czempion

  • Autor tematu
  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 26.11.2012 17:06

wynik pojawia się w bazie, więc problem jest z wczytaniem danych
  • +
  • -
  • 0

#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 26.11.2012 17:12

Pokaż kod jak teraz to wygląda.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#7 ToRRent

    Czempion

  • Autor tematu
  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 26.11.2012 17:15

public handleSelectPlayer(failstate, Handle:query, error[], errnum, data[], size)

{

if(failstate != TQUERY_SUCCESS)

{

log_amx("<Query> Error: %s", error);

return;

}

new id = data[0], elo_temp;

if(!is_user_connected(id) && !is_user_connecting(id))

return;



if(SQL_NumRows(query))

{

elo_temp = SQL_ReadResult(query, SQL_FieldNameToNum(query, "punkty"));

elo_gracza[id] = float(elo_temp);

}

else

{

SQL_FormatQuery("INSERT INTO `data` (`sid`) VALUES ('%s')", steamid[id]);

elo_gracza[id] = 1000.0;

SQL_ThreadQuery(info, "handleIgnore", gszQuery);

}

}

  • +
  • -
  • 0

#8 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 985
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.11.2012 17:28

Kod ogólnie wygląda poprawnie chyba że masz to gdzieś indziej skoncone

ale tak się poczepiam skoro i tak stosujesz liczby zmiennoprzecinkowe w pluginie to możesz równie dobrze zapisywać je jako zmiennoprzecinkowe w bazie
chyba że zapisałeś je jako zmiennoprzecinkowe a używasz jako całkowite ale to już by nie miało sensu
  • +
  • -
  • 0

#9 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 26.11.2012 17:32

Wywołuj zapytanie w client_authorized, zamiast w putinserver, gdyż w tym drugim czasem jeszcze nie ma SteamID określonego dla gracza. Punkty przechowuj w pluginie jako liczby całkowite, albo w bazie jako float, bo w tej postaci trochę to nie ma sensu ;)
  • +
  • -
  • 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


#10 ToRRent

    Czempion

  • Autor tematu
  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 26.11.2012 17:34

Owszem, mógłbym zapisywać rzeczywiste (wydawało mi się to łatwiejsze przy obliczeniach) w bazie lecz wolałem zapisywać jako int

// Poprzednim razem na samych intach się pogubiłem :P

Użytkownik =ToRRent= edytował ten post 26.11.2012 17:34

  • +
  • -
  • 0

#11 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 26.11.2012 18:18

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL




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

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