Jump to content

Banditul

Moderator
  • Posts

    1,134
  • Joined

  • Last visited

  • Days Won

    96

Posts posted by Banditul

  1. Run time error 20: "Invalid index parameter (bad entry point)"

    Inseamna ca nu ai main in gm tau

    main(){}

    De preferat asta va fi printre primele lucruri imediat dupa partea de #include

    CMySQLConnection::Connect - (error #2002) Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    Asta in schimb sugereaza ca serverul de mysql nu ruleaza, cel putin nu la adresa specificata (adica la ip respectiv) si de aceea nu se poate conecta. In cazul acesta daca nu ai acces la server (cel mai probabil ai cumparat host) va trebuie sa trimiti un ticket catre cei de la care ai cumparat host si sa ii intrebi de eroarea asta

  2. Acum 29 minute, Dumby 24 a spus:

    Unde este ,,Services,,??\

    Deschide Task Manager  ( Ctrl + Alt + Del ) si vezi gasi acolo optiunea pentru "Services" sau poti deasemenea scrie "services.msc" in bara de cautare a windows (start menu) si sa verifici acolo pentru orice urma de MySQL care iti ruleaza

  3. Uhm, in principal este din prima incercare callback-ul fiind chemat chiar in momentul in care player intra in checkpoint(folosind un gm de trucking care era bazat pe checkpoint-uri nu am avut probleme cu asta doar cand server-ul/player-ul aveau lag (ping etc)), imi vin in minte 2 idei dar nu sunt sigur

    1. Exista o posibilitatea ca ceva cod aflat in OnPlayerEnterCheckpoint care este executat indifierent de situatie sa ingreuneze executia codului pentru finzaliarea cursei (putin probabil daca ma gandesc)

    2. Sa existe alt cod undeva in gamemode care dureaza mult sa se execute (care ingreuneaza in mare parte executarea in parametri a altor functii) si oarecum sa intarzie executarea OnPlayerEnterCheckpoint

    Sunt doar niste teori totusi pentru ca functia in sine nu are delay implicit deci altceva ii blocheaza executia

  4. Problema ta e faptul ca ai un set de acolade care nu au nici un fel sens care cel mai probabil iti blocau o alta eroare

    else if(CP[playerid] == 6901)
    	{
    		if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{008080}JOB >> {ffffff}Get out of the vehicle and press 'H' to take the package and deliver it.");
    		if(GetPVarInt(playerid, "InHand") == 0) return SendClientMessage(playerid, -1, "{008080}JOB >> {ffffff}You don't have the package in arms.");
    		
    		new strings[64];
    		new materiale = 1000 + random(5000);
    		format(strings, sizeof strings, "{008080}JOB >> {ffffff}You received %s materials.", FormatNumber(materiale));
    		SendClientMessage(playerid, -1, strings);
    		DisablePlayerCheckpoint(playerid);
    		facemateriale[playerid] = 0;
    		CP[playerid] = 0;
    		SetPVarInt(playerid, "InHand", 0);
    		SetPlayerSpecialAction(playerid, 0);
    		RemovePlayerAttachedObject(playerid, 6);
    		ClearAnimations(playerid);
    		PlayerInfo[playerid][pMats] += materiale;
    		PlayerInfo[playerid][pArmsTimes] ++;
    		Update(playerid,pMatsx);
    		Update(playerid,pArmsTimesx);
    		
    	}

    Avand in vedere ca if de aici are deja un return, acoladele sunt doar de decor pentru ca orice se afla intre ele era executat oricum deoarece if-ul s-a finalizat odata cu return

    if(GetPVarInt(playerid, "InHand") == 0)

    Si din cauza acestor acolade(poate si mai multe in codul tau) puse degeaba mascau erori/lipsuri in codul tau sau cine stie ce altceva

    Practic codul tau postat pentru compilator arata ceva de genul

    if(GetPVarInt(playerid, "InHand") == 0) // Daca e true executa urmatoarea instructiune
    	return SendClientMessage(playerid, -1, "{008080}JOB >> {ffffff}You don't have the package in arms."); // Instructiunea se termina aici
        
    {
      // Nu conteaza ce valoarea are if deoarece if-ul nu se mai aplica fiind deja executat (fie true sau false)
      // Se executa mereu
    }

     

    • Like 1
  5. Acum 57 minute, rrrrreeeessttterrr a spus:

    Sper sa rezolvi.

    Multumit pentru suport moral, sper ca urmatorul post sa si ofere suport scripting

    On topic: Linia pe care ti-o indica este in regula. Ti-as sugera sa verifici cu 10-15 lini de cod mai sus de aceea linie deoarece compilatorul nu e mereu exact mai ales cand e vorba de lipsa ghilimelelor la un string(sau pozitionarea lor gresita) etc

  6. Ai doua variante sa rezolvi problema, daca vrei sa pastrezi PlayerText (presupunand faptul ca peste tot ai folosit functionalitatea de la acest tip de textdraw) solutia e urmatoarea:

    public OnPlayerConnect(palyerid)
    {
        
        SpeedometerPTD[0] = CreatePlayerTextDraw(playerid, 504.583007, 332.333221, "box");
        PlayerTextDrawLetterSize(playerid, SpeedometerPTD[0], 0.000000, 8.360176);
        PlayerTextDrawTextSize(playerid, SpeedometerPTD[0], 633.923706, 0.000000);
        PlayerTextDrawAlignment(playerid, SpeedometerPTD[0], 1);
        PlayerTextDrawColor(playerid, SpeedometerPTD[0], -1);
        PlayerTextDrawUseBox(playerid, SpeedometerPTD[0], 1);
        PlayerTextDrawBoxColor(palyerid, SpeedometerPTD[0], 268435541);
        PlayerTextDrawSetShadow(playerid, SpeedometerPTD[0], 0);
        PlayerTextDrawSetOutline(playerid, SpeedometerPTD[0], 0);
        PlayerTextDrawBackgroundColor(playerid, SpeedometerPTD[0], 255);
        PlayerTextDrawFont(playerid, SpeedometerPTD[0], 1);
        PlayerTextDrawSetProportional(playerid, SpeedometerPTD[0], 1);
    	// restul de textdraw folosind functiile de mai sus
    }
    

    Asta cu presupunerea ca folosesti functiile pentru PlayerTextDraw in restul gamemode-ului

    Daca nu folosesti ce am mentionat mai sus, modifici din PlayerText: in Text:

  7. Daca postezi al treilea topic la o diferenta de 1 ora referitor la aceasi problema care putea descrisa intr-un singur topic si bump la 3 sec dupa chiar nu te ajuta

    Revenind la topic, cum este defnit SpeedometerPTD? new  Text:SpeedometerPTD sau new PlayerText:SpeedometerPTD?

  8. @nusuntalexIn primul rand, daca ai probleme legate de scripting si ai nevoie de ajutor te rog posteaza aici: https://www.sa-mp.ro/forums/forum/355-ajutor-scripting/

    In al doilea rand, referitor la problema ta daca vrei sa comapri stringuri si sa creezi o functie care iti va returna faptul ca esti sau nu fondator va trebui mai intai de toate sa creezi acea functie

    EsteFondator(playerid)
    {
    }

    Asta este o functie, ca sa face vrei va trebui sa pui instructiunile intre acoalde { }

    Acum revenind la ce vrei tu sa faci

    EsteFondator(playerid)
    {
    	new name[MAX_PLAYER_NAME];
    	GetPlayerName(playerid, name);
    	
    	return strcmp("nusuntalex16", name) == 0;
    }

    Ca sa compari doua cuvinte/propoziti s.a.m.d. trebuie sa folosesti functia strcmp pentru a le compara. Functia pe care tocmai ti-am dat-o va returna true (adevarat) in momentul in care numele jucatorului se potriveste cu numele mentionat

    Ca sa restrictionezi accessul unui jucator la o comanda sau altceva adaugi in ssitemul tau

    if (!EsteFondator(playerid)) return SendClientMessage(playerid, -1, "Nu esti fondator! Nu poti folosi aceasta functie!");

    Poti inlocui -1 cu culoarea pe care o doresti

    Pentru a afla mai multe despre scripting poti folosi: https://www.sa-mp.ro/documentation/ unde vei gasi informatii despre functii din samp si altele

  9. Problema ta e in felul urmator.

    if(PlayerInfo[playerid][pWantedLevel] > 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You can't rob a business when you have wanted.");

    Daca te uiti la acest if se termina cu return, daca deschizi acolade pentru acel if sunt nefolosite, nu au sens. In consecinta acel else arunca eroare pentru ca nu are nici un sens pentru compilator. Daca stergi ce am zis mai sus, rezulta asta

    CMD:rob(playerid, params[])
    {
        if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");
        if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need level 3 to do this.");
        if(PlayerInfo[playerid][pWantedLevel] > 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You can't rob a business when you have wanted.");
        
        if(IsACop(playerid)) return SCM(playerid,COLOR_WHITE,"{FFB870}You're a cop.");
        for(new i = 1; i < sizeof(HouseInfo); i++)
        {
            if(PlayerToPoint(3, playerid,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
            {
                SetTimerEx("SpargeUsa", 5000, 0, "i", playerid);
                GameTextForPlayer(playerid, "~r~Asteapta sa spargi usa...", 5000, 4);
                TogglePlayerControllable(playerid, 0);
                BusinessRob[playerid] = 3;
                if(PlayerInfo[playerid][pPremiumAccount] == 0)
                {
                    PlayerInfo[playerid][pRob] -= 10;
                }
                else if(PlayerInfo[playerid][pPremiumAccount] == 1)
                {
                    PlayerInfo[playerid][pRob] -= 8;
                }    
                Update(playerid,pRobx);
                total_objects[playerid] = 0;
                rob_time[playerid] = 180;
                PlayerTextDrawSetString(playerid, RobPTD, "Loading...");
                PlayerTextDrawShow(playerid, RobPTD);
            }
        }
    
    
        if(PlayerInfo[playerid][pPremiumAccount] == 0)
        {
            SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You don't have 10 rob points.");
        }
        else if(PlayerInfo[playerid][pPremiumAccount] == 1)
        {
            SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You don't have 8 rob points.");
        }
        return 1;
        
       return 1;
    } 

    Motiv pentru care ultimul tau return nu poate fi atins, pentru  ca comanda deja s-a finalizat. In concluzie codul corect este

    CMD:rob(playerid, params[])
    {
        if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");
        if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need level 3 to do this.");
        if(PlayerInfo[playerid][pWantedLevel] > 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You can't rob a business when you have wanted.");
        
        if(IsACop(playerid)) return SCM(playerid,COLOR_WHITE,"{FFB870}You're a cop.");
        for(new i = 1; i < sizeof(HouseInfo); i++)
        {
            if(PlayerToPoint(3, playerid,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
            {
                SetTimerEx("SpargeUsa", 5000, 0, "i", playerid);
                GameTextForPlayer(playerid, "~r~Asteapta sa spargi usa...", 5000, 4);
                TogglePlayerControllable(playerid, 0);
                BusinessRob[playerid] = 3;
                if(PlayerInfo[playerid][pPremiumAccount] == 0)
                {
                    PlayerInfo[playerid][pRob] -= 10;
                }
                else if(PlayerInfo[playerid][pPremiumAccount] == 1)
                {
                    PlayerInfo[playerid][pRob] -= 8;
                }    
                Update(playerid,pRobx);
                total_objects[playerid] = 0;
                rob_time[playerid] = 180;
                PlayerTextDrawSetString(playerid, RobPTD, "Loading...");
                PlayerTextDrawShow(playerid, RobPTD);
            }
        }
    
        
        if(PlayerInfo[playerid][pPremiumAccount] == 0)
        {
            SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You don't have 10 rob points.");
        }
        else if(PlayerInfo[playerid][pPremiumAccount] == 1)
        {
            SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You don't have 8 rob points.");
        }
        
        return 1;
    } 

     

  10. Ma refeream la partea de masini, ai spus ca ai incercat doar ca nu se salveaza in tabelul respectiv ceea ce inseamna ca query respectiv e gresit. Ce trebuie sa faci e sa te asiguri ca query pe care il trimiti catre baza de date contine numele tabelului scris corect si coloanele pe care le ai si vrei sa fie salvate

    Ce ai trimis are legatura cu conturile si presupun ca e functional

    @Serbaq

  11. Poate oferind putin cod pe care l-ai incercat putea ajuta la indentificarea problemei

    mysql_format(connectiom, query, sizeof(query), "UPDATE masini SET Ceva = %i WHERE Id = %i", ceva, sqlIdMasina);
    mysql_tquery(conmnection, query);

    Asta ar fi cel mai simplu exemplu

×
×
  • 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.