Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2017-06-22, 12:45


Grace

Kierowca Pralki






Wiek: 24
Na forum: 3436 dni
Posty: 168
Nick w MP: Grace

Piwa: 1031

Respekt: 35,8

Cze??, mam pewien problem. Ot?? chcia?bym z bazy dany pobra? dwa floaty, a mianowicie 'glod' i 'sen'.
Chc? to zapisa? w textdrawie, robi? tak:
Pawn
stock PlayerLogin(playerid)
{
    CameraMoverTimer[playerid] = SetTimerEx("RuchKamery"100false"i"playerid);
    format(querysizeof query"SELECT * FROM members WHERE nick = '%s'"PlayerName(playerid));
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row(data"|"))
    {
        sscanf(data"p<|>ds[24]s[16]ds[10]dddfffdddff", 
            PlayerCache[playerid][pUID],
            PlayerCache[playerid][pNick],
            PlayerCache[playerid][pHaslo],
            PlayerCache[playerid][pAdminLVL],
            PlayerCache[playerid][pAdmin_Text],
            PlayerCache[playerid][pScore],
            PlayerCache[playerid][pMoney],
            PlayerCache[playerid][pVip_Points],
            PlayerCache[playerid][pPosX],
            PlayerCache[playerid][pPosY],
            PlayerCache[playerid][pPosZ],
            PlayerCache[playerid][pSkin],
            PlayerCache[playerid][pEq],
            PlayerCache[playerid][pGun],
            PlayerCache[playerid][pGlod],
            PlayerCache[playerid][pSen]);
            
        format(strsizeof(str), "\c{FFFFFF}Witaj {FFCC33}%s {FFFFFF}na serwerze Homeland {ff0000}Trucking 2017!\n\c{FFFFFF}Twoje konto istnieje w naszej bazie danych, wi?c mo?esz si? zalogowa?!\n\cZatem wpisz swoje has?o aby to uczyni?!"PlayerName(playerid));
        ShowPlayerDialog(playeridD_LOGINDIALOG_STYLE_PASSWORD"Logowanie do konta"str"Zaloguj""Anuluj");
    }
    else
    {
        format(strsizeof(str), "\c{FFFFFF}Witaj {FFCC33}%s {FFFFFF}na serwerze Homeland {ff0000}Trucking 2017!\n\c{FFFFFF}Niestety, ale twojego konta nie odnaleziono w bazie danych!\n\cWpisz swoje haslo, aby sie zarejestrowac!"PlayerName(playerid));
        ShowPlayerDialog(playeridD_REGISTERDIALOG_STYLE_PASSWORD"Logowanie do konta"str"Zaloguj""Anuluj");
    }
    mysql_free_result();
    return 1;
}

Tak oto pobieram sobie narazie dane.
Gdy gracz sie zespawnuje, pokazuje mu textdrawy:
Pawn
public OnPlayerSpawn(playerid)
{
    SetPlayerSkin(playeridPlayerCache[playerid][pSkin]);
    GivePlayerWeapon(playeridPlayerCache[playerid][pGun], 999999);
    TextDrawShowForPlayer(playeridPotrzeby[playerid]);
    TextDrawShowForPlayer(playeridTime), TextDrawShowForPlayer(playeridDate);
    SetTimerEx("UpdatePotrzeby"100false"i"playerid);
    return 1;
}

Przy czym po 100 ms updatetuje potrzeby raz, bo w OnPlayerConnect mam ustawione:
Pawn
SetTimerEx("UpdatePotrzeby"60000true"i"playerid);


A 'UpdatePotrzeby' wyglada tak:
Pawn
forward UpdatePotrzeby(playerid);
public UpdatePotrzeby(playerid)
{
    PlayerCache[playerid][pGlod] -= 1;
    PlayerCache[playerid][pSen] -= 1;
    new glodstring[50], senstring[50];
    if(PlayerCache[playerid][pGlod] >= 85)
    {
        format(glodstringsizeof(glodstring), "~y~Glod: ~h~~g~%0.1f"PlayerCache[playerid][pGlod]);
    }
    if(PlayerCache[playerid][pGlod] >= 50)
    {
        format(glodstringsizeof(glodstring), "~y~Glod: ~h~~y~%0.1f"PlayerCache[playerid][pGlod]);
    }
    if(PlayerCache[playerid][pGlod] >= 20)
    {
        format(glodstringsizeof(glodstring), "~y~Glod: ~h~~b~%0.1f"PlayerCache[playerid][pGlod]);
    }
    if(PlayerCache[playerid][pGlod] <= 19)
    {
        format(glodstringsizeof(glodstring), "~y~Glod: ~h~~r~%0.1f"PlayerCache[playerid][pGlod]);
    }
    // ===================================================
    if(PlayerCache[playerid][pSen] >= 85)
    {
        format(senstringsizeof(senstring), "~y~Sen: ~h~~g~%0.1f"PlayerCache[playerid][pSen]);
    }
    if(PlayerCache[playerid][pSen] >= 50)
    {
        format(senstringsizeof(senstring), "~y~Sen: ~h~~y~%0.1f"PlayerCache[playerid][pSen]);
    }
    if(PlayerCache[playerid][pSen] >= 20)
    {
        format(senstringsizeof(senstring), "~y~Sen: ~h~~b~%0.1f"PlayerCache[playerid][pSen]);
    }
    if(PlayerCache[playerid][pSen] <= 19)
    {
        format(senstringsizeof(senstring), "~y~Sen: ~h~~r%0.1f"PlayerCache[playerid][pSen]);
    }
    
    format(strsizeof(str), "~w~Twoje ~b~Potrzeby~n~%s~n~%s"glodstringsenstring);
    TextDrawSetString(Potrzeby[playerid], str);
}


Problem lezy w tym, ze w textdrawie zamiast normalnej liczby, jest przed przecinkiem 10 cyfr.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-06-22, 15:25


Pr0f3ssi0n4LisT







Wiek: 25
Na forum: 6845 dni
Posty: 120

Piwa: 3653

Respekt: 117,8
Respekt: 117,8

1. Jak robisz SELECT to dawaj na koncu LIMIT 1 bo raczej nie masz wiecej takich samych nickow w tabeli members niz ten jeden.
2. Glod i Sen sa w enumie jako Float ?
3. SetTimerEx("UpdatePotrzeby", 60000, true, "i", playerid); a gdzie masz KillTimer? przeciez za kazdym razem gdy wejdzie gracz na serwer jest tworzony kolejny dzialajacy timer co minute

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-06-22, 16:21


Grace

Kierowca Pralki






Wiek: 24
Na forum: 3436 dni
Posty: 168
Nick w MP: Grace

Piwa: 1031

Respekt: 35,8

Pr0f3ssi0n4LisT, w enumie by?y te opcje, KillTimer by? w OnPlayerDisconnect.
Zmieniled to na inta i dziala normalnie ...

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-06-23, 16:47


Virex_PL

Głos rozsądku






Wiek: 26
Na forum: 4187 dni
Posty: 170
Nick w MP: Virex_PL

Piwa: 31

Respekt: 120
Respekt: 120

W bazie danych w kolumnie masz ustawione float?

Postaw piwo autorowi tego posta
 

 
Tagi: floaty :: bazy
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku