Jump to content

Banditul

Moderator
  • Posts

    1,134
  • Joined

  • Last visited

  • Days Won

    96

Posts posted by Banditul

  1. Pentru ca exista o sansa intr-o mie ca editorul cu care ai deschis si salvat fisierul systems.inc sa fi adaugat ceva suplimentar formatului pe care noi nu putem sa il vedem si sa nu ii placa compilatorului (sursa https://forums.alliedmods.net/showthread.php?t=304895 )

    La altceva nu ma pot gandi pentru ca codul este pur si simplu "curat" si nu vad absolut nici o eroare evidenta sau ceva. Eventual ma gandesc ca ai putea deschide fisierul systems.inc direct cu pawno, sa salvezi folosind pawno si dupa sa iti deschizi gm si sa il compilezi

  2. Orice #include nu se pune in OnGameModeInit ci la inceputul scriptului, de obicei langa alte #include (de preferabil daca este ceva custom ca si systems atunci trebui pus la captul acestei liste). Sterge din OnGameModeInit si pune-l unde trebuie si trimite erorile pe care le primesti cand incluzi systems in mod corect

  3. Da si la urmatorul dialog la fel, lipseste inchiderea de la switch. Daca folosesti pawno ti-as recomanda alt text editor cum ar fi sublime text 3 sau visual studio code pentru in aceste editoare lipsa unei acolade e mai usor de vazut/indentificat

    • Upvote 1
  4. Iti lipseste o acolada care inchide switch

    case DIALOG_SHOP_TREASURE: {
                new szDialog[1100];
                if(!response) { InShop[playerid] = 0; return 1; }
                listitem --;
                switch(listitem) {
                case -1: {
                    strcat(szDialog, "Pentru mai multe detalii [/help --> Treasure]");
                }
                case 0: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un cont premium?\nPentru asta, ai nevoie de 800 Treasure Points.\n\n\
                    Avantaje:\n-Interes 0.2 la payday\n- 2 RP-uri o data la 5 ore\n- Poti avea 5 masini personale in total\n\
                    - numarul (/carplate) o sa fie de culoare portocalie.\n- acces la comanda /pcolor.\n- Poti pune pana la 100 obiecte in casa.");
                    SetPVarInt(playerid, "TreasurePoints", 800);                
                }
                case 1: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti stergi 10 FP-uri?\nPentru asta, ai nevoie de 150 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 150);
                }
                case 2: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti schimbi numele?\nPentru asta, ai nevoie de 200 Treasure Points. ");
                    SetPVarInt(playerid, "TreasurePoints", 200);                
                }
                case 3: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti stergi un warn?\nPentru asta, ai nevoie de 350 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 350);
                }
                case 4: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un MP3?\nPentru asta, ai nevoie de 120 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 120);
                }
                case 5: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un Rare Voucher?\nPentru asta, ai nevoie de 500 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 500);
                }
                case 6: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un iPhone?\nPentru asta, ai nevoie de 170 Treasure Points.\n\n\
                    Avantaje:\n- Numar format din 4 cifre\n- Texte modificate la /call respectiv /sms\n- Acces la comanda /reply (/re).");
                    SetPVarInt(playerid, "TreasurePoints", 170);
                }
                SelectedItem[playerid] = listitem;    
                ShowPlayerDialog(playerid, DIALOG_SHOP_TREASURE1, DIALOG_STYLE_MSGBOX, "Treasure Shop:", szDialog, "Ok", "Back");
            } // Switch tau se termina aici ceea ce e gresit

    Varianta corecta e

    case DIALOG_SHOP_TREASURE: {
                new szDialog[1100];
                if(!response) { InShop[playerid] = 0; return 1; }
                listitem --;
                switch(listitem) {
                case -1: {
                    strcat(szDialog, "Pentru mai multe detalii [/help --> Treasure]");
                }
                case 0: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un cont premium?\nPentru asta, ai nevoie de 800 Treasure Points.\n\n\
                    Avantaje:\n-Interes 0.2 la payday\n- 2 RP-uri o data la 5 ore\n- Poti avea 5 masini personale in total\n\
                    - numarul (/carplate) o sa fie de culoare portocalie.\n- acces la comanda /pcolor.\n- Poti pune pana la 100 obiecte in casa.");
                    SetPVarInt(playerid, "TreasurePoints", 800);                
                }
                case 1: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti stergi 10 FP-uri?\nPentru asta, ai nevoie de 150 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 150);
                }
                case 2: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti schimbi numele?\nPentru asta, ai nevoie de 200 Treasure Points. ");
                    SetPVarInt(playerid, "TreasurePoints", 200);                
                }
                case 3: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti stergi un warn?\nPentru asta, ai nevoie de 350 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 350);
                }
                case 4: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un MP3?\nPentru asta, ai nevoie de 120 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 120);
                }
                case 5: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un Rare Voucher?\nPentru asta, ai nevoie de 500 Treasure Points.");
                    SetPVarInt(playerid, "TreasurePoints", 500);
                }
                case 6: {
                    format(szDialog, sizeof(szDialog), "Esti sigur ca vrei sa-ti achizitionezi un iPhone?\nPentru asta, ai nevoie de 170 Treasure Points.\n\n\
                    Avantaje:\n- Numar format din 4 cifre\n- Texte modificate la /call respectiv /sms\n- Acces la comanda /reply (/re).");
                    SetPVarInt(playerid, "TreasurePoints", 170);
                }
    		}
            SelectedItem[playerid] = listitem;    
            ShowPlayerDialog(playerid, DIALOG_SHOP_TREASURE1, DIALOG_STYLE_MSGBOX, "Treasure Shop:", szDialog, "Ok", "Back");
    	} 

     

  5. Se refera la faptul ca eroarea pe care o primesti este cauzata de fatpul ca 1 sau mai multe plugin-uri pe care le-ai puse (in server.cfg la linia plugins) nu s-a incarcat/a avut o eroare si nu a putut fi incarcat de catre server.

    Verifica serverlog dupa "Plugin faield to load" sau ceva asemenator

  6. Eroarea speicifica faptul ca iti lipseste ; de undeva. Din pacate fara cod nu pot face magie neagra si sa iti spun exact de unde.

    Poti da Ctrl+G in orice editor folosesti, cauta numarul linie unde ti se spune ca apare eroarea si "scaneaza" linia respectiva si cateva lini mai sus pana gasesti ; lipsa din codul tau

    • Like 1
  7. @praunedoSingura problema care ar putea avea legatura cu faptul ca nu te poti loga pe care o vad ar fi faptul ca iti lipseste coloana pHealth din tabelul, presupun, users. Daca folosesti phpmyadmin va trebui sa deschizi tabelul users, in tab structure sa adaugi o noua coloana cu numele pHealth si tipul de data float.

    Desigur mai este si CMySQLResult::GetRowDataByName() - invalid row index ('0') , problema e ca asta poate proveni de la orice query de tip SELECT care incearca sa iti ia din baza de date dintr-un tabel care pare sa fie gol

    Cat despre

    Citat

    (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '+'3318111', `Respect`=`Respect`+'6', `JobGoal`='0' WHERE `JobGoal`>='40000' A...' at line 1

    Va trebui sa cauti in gm dupa ceva asemanator cu

    Citat

     '+'%d', `Respect`=`Respect`+'%d', `JobGoal`='%d' WHERE `JobGoal`>='%d' A...'

    Pentru ca aparent ai o problema legata si de acest query care pare sa fie de UPDATE

  8. @VeLo

    Aparent, lucru pe care nu il stiam nici eu, array sunt pasate ca si referinta in pawn precum raspunsul pe care l-ai primit aici https://burgershot.gg/showthread.php?tid=1446 sugereaza ceea ce inseamna ca functia ta poate pur si simplu sa fie

    stock Adrian(playerid, string[], V)
    {
    	new A, B, C;
    	if(!V)
    	{
    	    switch(random(5))
    	    {
    	        case 0: V = 1;
    	        case 1: V = 3;
    	        case 2: V = 5;
    	        case 3: V = 7;
    	        case 4: V = 9;
    	    }
    	    PlayerInfo[playerid][pLoserLevel] = V;
    	}
    	switch(V)
    	{
    		case 1:
    		{
    			A = 3;
    			B = 4;
    			C = 7;
    		}
    		case 3:
    		{
    			A = 8;
    			B = 9;
    			C = 1;
    		}
    		case 5:
    		{
    			A = 3;
    			B = 7;
    			C = 4;
    		}
    		case 7:
    		{
    			A = 1;
    			B = 3;
    			C = 9;
    		}
    		case 9:
    		{
    			A = 5;
    			B = 2;
    			C = 6;
    		}
    	}
    	for(new i, l = strlen(string); i < l; i++)
    	{
    		switch(string[i])
    		{
    		    case 48..57:
    			{
    				string[i] += A;
    				if(string[i] > 57) string[i] -= 10;
    			}
    		    case 65..90:
    			{
    				string[i] += B;
    				if(string[i] > 90) string[i] -= 26;
    			}
    			case 97..122:
    			{
    			    string[i] += C;
    				if(string[i] > 122) string[i] -= 26;
    			}
    		}
    	}
    }

    Si sa o folosesti

    new parola[144];
    Adrian(playerid, parola, v);

    Si parola va contine exact acel hash

  9. Acum 23 minute, VeLo a spus:

    DIn cate am inteles de pe net, poate fi vorba si de o bucla infinita?

    Daca te referi la OnGameModeInit cam improbabil avand in vedere ca oricum callbackul e chemat o singura data la pornirea serverului. Dar desigur exista o sansa

    In cazul in care folosesti streamer 2.9.4 cu crashdetect 4.20 as recomanda eventual 2 moduri.

    1. Sa setezi in server.cfg long_call_time 0 (de preferat dupa plugins) si sa vezi daca iti mai da crash serverul

    2. Sa stergi crashdetect din server.cfg si sa testezi doar cu streamer si sa vezi daca iti da crash serverul

    Desi venind vorba de bucle infinita posibil sa se afle in crashdetect 4.20 in anumite circumstante. Desi eroarea specifica ca e vorba de linkedl ist

    Citat

    glibc detected *** /home/gsp_834/IP-7777/samp03svr: corrupted double-linked list: 0x08699280

    Care e o posibila conssecinta a 2 sau mai multe pluginuri incompatibile din habar n-am ce motiv

    Edit: Eventual poti compila gm folosind -d3 ca si parametru pawn.cfg (poti pune fisierul in folderul pawno) si eventual va arata exact linia la care ai problema legata de acest warning referitor la timpul executiei

  10. Din pacate OnGameModeInit intodeuna va dura mult sa fie procesat, in special in cazurile in care e vorba si de alte includeuri ex sscanf/YSI etc care manipuleaza acest callback pentru a-si seta anumite aspecte cum ar fi resetarea unor variabile sau setarea unei valori etc

    Poti folosi long_call_time milisecunde in server.cfg pentru a modifica asta. Il poti seta 0 si astfel nu iti va mai arata nici un astfel de warning, sau eventual o valoare mai mare de 5000 (5 milisecunde) astfel incat posibil sa ignore OnGameModeInit dar totusi sa iti raporteze probleme legate de alte functii/callback

    Sau poti sa ignori warning total pentru ca tot ce face e sa iti arate ce functii/callback iti "blocheaza" serverul nu e nimic altceva

    Referitor la faptul ca iti da crash serverul, da intradevar exista posibilitatea ca pluginul de crashdetect sa nu fie chiar atat de compatibil cu gm tau/hostul/alte pluginuri si sa genereze asta. Sau poate sa fie eventual o alta cauza. Din ce vad in eroarea de la crash specifica faptul ca este vorba de streamer.so

  11. Crede-ma nu e nimic efficient sau bun la metoda aia de hash, as folosi bcrypt sau in cel mai rau caz sha256 inclus in sa-mp. Dar nu sutem aici sa dezbatem acest topic

    Iti dau doua posibile metode la care ma gandesc eu cum ai putea face, cu singuranta sunt mai multe. In princpiu, problema functiei este faptul ca string nu are o marime declaarata

    stock Adrian(playerid, string[], V)
    {
    	new A, B, C, returnedString[144];
    	if(!V)
    	{
    	    switch(random(5))
    	    {
    	        case 0: V = 1;
    	        case 1: V = 3;
    	        case 2: V = 5;
    	        case 3: V = 7;
    	        case 4: V = 9;
    	    }
    	    PlayerInfo[playerid][pLoserLevel] = V;
    	}
    	switch(V)
    	{
    		case 1:
    		{
    			A = 3;
    			B = 4;
    			C = 7;
    		}
    		case 3:
    		{
    			A = 8;
    			B = 9;
    			C = 1;
    		}
    		case 5:
    		{
    			A = 3;
    			B = 7;
    			C = 4;
    		}
    		case 7:
    		{
    			A = 1;
    			B = 3;
    			C = 9;
    		}
    		case 9:
    		{
    			A = 5;
    			B = 2;
    			C = 6;
    		}
    	}
    	for(new i, l = strlen(string); i < l; i++)
    	{
    		switch(string[i])
    		{
    		    case 48..57:
    			{
    				string[i] += A;
    				if(string[i] > 57) string[i] -= 10;
    			}
    		    case 65..90:
    			{
    				string[i] += B;
    				if(string[i] > 90) string[i] -= 26;
    			}
    			case 97..122:
    			{
    			    string[i] += C;
    				if(string[i] > 122) string[i] -= 26;
    			}
    		}
    	}
    
    	strcpy(returnedString, string);
    	return returnedString;
    }

    Sau

    stock Adrian(playerid, const string[], V)
    {
    	new A, B, C, returnedString[144];
    
    	strcpy(returnedString, string);
    
    	if(!V)
    	{
    	    switch(random(5))
    	    {
    	        case 0: V = 1;
    	        case 1: V = 3;
    	        case 2: V = 5;
    	        case 3: V = 7;
    	        case 4: V = 9;
    	    }
    	    PlayerInfo[playerid][pLoserLevel] = V;
    	}
    	switch(V)
    	{
    		case 1:
    		{
    			A = 3;
    			B = 4;
    			C = 7;
    		}
    		case 3:
    		{
    			A = 8;
    			B = 9;
    			C = 1;
    		}
    		case 5:
    		{
    			A = 3;
    			B = 7;
    			C = 4;
    		}
    		case 7:
    		{
    			A = 1;
    			B = 3;
    			C = 9;
    		}
    		case 9:
    		{
    			A = 5;
    			B = 2;
    			C = 6;
    		}
    	}
    	for(new i, l = strlen(returnedString); i < l; i++)
    	{
    		switch(returnedString[i])
    		{
    		    case 48..57:
    			{
    				returnedString[i] += A;
    				if(returnedString[i] > 57) returnedString[i] -= 10;
    			}
    		    case 65..90:
    			{
    				returnedString[i] += B;
    				if(returnedString[i] > 90) returnedString[i] -= 26;
    			}
    			case 97..122:
    			{
    			    returnedString[i] += C;
    				if(returnedString[i] > 122) returnedString[i] -= 26;
    			}
    		}
    	}
    
    	return returnedString;
    }

    In caz ca dintr-un motiv sau altul nu ai strcpy

    stock strcpy(dest[], const source[], len = sizeof(dest)) {
    	dest[0] = '\0';
    	return strcat(dest, source, len);
    }

     

    • Thanks 1
  12. Um am cautat si am gasit ca este de fapt o "familie" de include pentru acest anti cheat

    Acest fs contine cumva si #include <Anti_cheat_pack>  cumva? Sau ceva asemanator?

    Ce am gasit: https://github.com/samp-anti-cheat/Anti_cheat_pack contine toate include necesare pentru a face un anti cheat. In test.pwn deasemenea este si un exemplu

    Totusi nu inteleg de ce ar zice ca nu exista OnPlayerCarTroll pentru ca daca creezi ceva chiar si public devine o functie valida si existenta

  13. Citat

    Unknown column 'PlayPoints' in 'field list' (Query: "UPDATE `users` SET `PlayPoints`='144' WHERE `id`='18'")

    Unknown column 'PremiumPoints' in 'field list' (Query: "UPDATE `users` SET `PremiumPoints`='100' WHERE `id`='20'")

    Iti lipsesc 2 coloane din tabelul users, PlayPoints respectiv PremiumPoints . Ca sa rezolvi asta va fi nevoie sa modifici acel tabel users si sa le adaugi

    Citat

    Unknown column 'Money' in 'field list' (Query: "UPDATE `clans` SET `Money`='231234' WHERE `ID`='2'")

    Iti lipseste coloane Money din tabelul clans

    Citat

    [ERROR] cache_get_field_content_int - invalid datatype

    Poate sa fie strict legat de faptul ca nu iti gaseste 1 sau mai multe coloane din aceastea 3 cand incerci sa incarci datele din tabelul respectiv

    • Like 1
  14. Citat

    error 035: argument type mismatch (argument 2)

    Functia care se afla la linia asta e problema, nu array logo.

    Citat

    error 032: array index out of bounds (variable "Logo")

    Asta pentru ca Logo poate avea doar 4 valori adica index 0,1,2 si 3. Index 4 depaseste definitia array-ului

    Deasemenea, data viitoare posteaza si codul la care ai eroarea nu doar eroarea astfel incat sa fie mai usor de indentificat

  15. Daca ai corectat aceasta problema in gm, atunci problema posibil sa fie in unul din fisierele .inc incluse in gm

    Eventual daca nu se afla nici in fisierele .inc (putin probabil) as sugera sa folosesti acest compilator:  https://github.com/pawn-lang/compiler/releases/tag/v3.10.8

    Atat fisierele pe care le descarci de la acel libk cat si fisierul pe care l-am atasat le pui in folderul pawno

    Altceva inafara de verificarea fiecarui fisier folosit pentru acea "eroare" nu prea e

    pawn.cfg

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.