MySQL Problem

Započeo Danculovic, Jul 23, 2022, 22:03:34 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

Problem(error/warning): E ovako, nov sam u MySQL-u ali sam ga relativno brzo savladao i jako mi se svidja kako radi, krenuo sam mod od nule i za sada nema nikakvih problema niti bug-ova. Danas sam probao da uradim sistem ucitavanja offline Admina preko cache_get_field_content funkcije koja ucitava stringove ali kada udjem in-game i ukucam komandu u dijalogu ne ucitava string, pawno ne izbacuje nikakav problem ili ista, negde sam procitao da je to do verzije MySQL-a ja koristim 39-6 jer mi je 41-4 mrsko za raditi iznova skriptu. Da li postoji resenje ili da ne razmisljam o koriscenju funkcije ucitavanja stringova, moram da napomenem da brojeve ucitava savrseno, tojest integere.
Deo skripte: [pawn]/[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [pawn][/pawn]
Slika/video ingame problema(obavezno ako je ingame problem):

Nije do verzije sigurno, vecina modova koristi R-39 dok ja imam iskustva sa R41 i sve radi savrseno. Razlika izmedju R39 i R41 je minimalna iako ima par breaking changes.
Daj relativni kod za problem pa cemo videti sta i kako, ovako samo da vangujemo...

Znaci ovako, cache_get_field_content(0, "ImeAdmina", dest, ImeDataBaze, 64); posto imam vise admin slotova a brojanje krece od nule, imam naprimer maximalno 10 admina, i hocu da na komandu /admini, ono sto je vec ucitano samo izlista u dijalogu, koliko sam citao funkcija cache_get_field_content bi trebala da ucita string ali meni nikako da ucita, probao sam 1001 varijantu ali nista

"Deo skripte", pa onda imas prazno polje da ubacis, pa onda ispod "Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log)", pa takodje prazno polje, ne znam zasto ocekujes da neko gleda u pasulj...

U prevodu, hocu da koristim ovu funkciju

new dest[128];
cache_get_field_content(0, "name", dest);
printf("The value in the field 'name' is '%s'.", dest);

Daj kod od komande za dialog i daj kako prizivas taj dialog

Citat: Fergosonn poslato Jul 24, 2022, 00:22:27 PRE PODNE
Daj kod od komande za dialog i daj kako prizivas taj dialog
Prizivas HAHAHAHHAHAH

[pawn]CMD:sviadmini(playerid)
{
    if(PlayerInfo[playerid][perm_admin] < 1)
        return SendClientMessage(playerid, 0xFF6347FF, "* Nemate ovlascenje za upotrebu ove komande.");
       
    new string[256];
    mysql_format(SQL, string, sizeof string, "SELECT `Username`,`Lastseen`,`Admin` FROM `accounts` WHERE `Admin`");
    mysql_tquery(SQL, string, "AdminCheckRank", "id", playerid, PlayerInfo[playerid][pAdmin]);
    return 1;
}

forward AdminCheckRank(playerid, idorg);
public AdminCheckRank(playerid, idorg) {

    new count;
    cache_get_row_count(count);
    new lastlogin[32], imestr[24];
    new string[700], string1[700];
    for(new i = 0; i < count < 40; i++)
    {
        new Admin;
        cache_get_value_name(i, "Username", imestr, 50);
        cache_get_value_name(i, "Lastseen", lastlogin, 50);
        cache_get_value_name_int(i, "Admin", Admin);
        format(string, sizeof(string),"%s\t%s\t"BELA"%d\n", imestr, IsPlayerConnected(CvetkoPizda(imestr)) ? "{6EF83C}ONLINE" : lastlogin, Admin);
        strcat(string1, string, sizeof(string1));
    }
    format(string, sizeof(string), "Ime\tLast-Seen\tLevel\n%s", string1);
    Dialog_Show(playerid, administracija1, DIALOG_STYLE_TABLIST_HEADERS, "Spisak administracije", string, "Dalje", "Izlaz");
    return 1;
}[/pawn]

Ovako, prvo imas mysql log, to se loguje u posebnom fajlu, u zavisnosti od toga sta si stavio za logovanje (Sve, upozorenja ili samo errore) to ce ti i biti logovano - u development naravno logujes sve dok na live serveru samo errore, eventualno warninge ako imas mesta i naravno proveravas i popravljas ako ti izadje a ne zatvaras oci na to. Takodje imas i OnQueryError callback koji se naravno pozove kada se desi neki error u query.

To receno, takodje vidim da ne znas sta radis. Ako zelis najvise 40 admina da se pokaze u query stavljas LIMIT 40 na kraju query-a da ne predje taj broj da bi izbegao glavobolju kasnije.
Recimo ovaj deo koda nece raditi ako imas vise 40 ili vise admin accounta na serveru for(new i = 0; i < count < 40; i++). Posto je uslov da je i < count ali i da je count manje od 40 naravno cim je count > 40 petlja se prekida. Kad stavis LIMIT 40 u query, ovde 40 postaje visak u kodu i loopujes od 0 do koliko imas query rezultata kako bi i trebalo da bude.

Trazio sam jednom, trazio je jos neko da das relativni kod, dao si prvo neke linije pa si sad tek dao i komandu i query callback handle. Pogledaj logove, vidi sta kazu, sta vise ocisti ih pa pokreni server, udji in game, probaj komandu i tek onda vidi sta kazu logovi da ne bude puno smeca od pre nego da je izolirano na jedno pokretanje servera.

Sad cu da progledam kroz prste, ali ubuduce te molim da razmislis sta nama treba da bi ti pomogli i da das to sta ti se trazi odmah a ne da cijedimo informacije iz tebe. Ne shvati pogresno, imaju gori od tebe 300x, ti si makar ko covek postovao formular ali i za kodove/errore/logove uvek stavljaj code/pawn bbcode tagove a ne samo u prvi post.

a zasto nekoristis ovako nesto [pawn]public OnQueryFinished(threadid, extraid, playerid)[/pawn]

mnogo lakse i pronades se lako
CitatNe idite uokolo tumačeći kako vam svijet duguje život. Svijet vam ne duguje ništa. On je bio prvi ovdje.

Citat: yeet poslato Jul 25, 2022, 22:11:10 POSLE PODNE
a zasto nekoristis ovako nesto [pawn]public OnQueryFinished(threadid, extraid, playerid)[/pawn]

mnogo lakse i pronades se lako
Prvo, nije lakse, njegov nacin jasno kaze koji su argumenti i sta znace.
Drugo, OnQueryFinished ne postoji u R39 (ne postoji nakon R7)

I odakle ti znas za OnQueryFinished i extraid ? To se ne koristi ima brat bratu jedno 10 godina...

EDIT: Neaktivno - Lock
Poslednja Izmena: Jul 28, 2022, 18:39:06 POSLE PODNE od Deleted User