Jump to content

hanako

Membru
  • Posts

    540
  • Joined

  • Last visited

  • Days Won

    20

Posts posted by hanako

  1. asa ma baieti, va salut cu stima si respect.

    am intampinat si eu o problema, deci

    am 13 joburi pe server, ok? primele 2 job-uri merge, insa celelalte da cu id pe -1, adica daca job-ul pe care-l iau are id 4, mie o sa-mi dea id 3 la setarea job-ului.

    comanda /getjob

    CMD:getjob(playerid, params[]) {
        new jobid;
        if(PlayerInfo[playerid][pJob] >= 1) return SCM(playerid, -1, "Deja ai un job, foloseste /quitjob.");
        if(PlayerInfo[playerid][pLevel] < DynamicJobs[jobid][jobLevel]) return SCM(playerid, -1, "Nu detii nivelul necesar pentru a te angaja la jobul respectiv!");
        for(new j = 0; j < sizeof(DynamicJobs); j++)
        {
            if(IsPlayerInRangeOfPoint(playerid, 3.0, DynamicJobs[j][jPosX], DynamicJobs[j][jPosY], DynamicJobs[j][jPosZ]))
            {
                PlayerInfo[playerid][pJob] = j; pUpdateInt(playerid, "Job", j);
                SCMf(playerid, COLOR_YELLOW, "(JOB): {ffffff}Felicitari! Noul tau job este %s.", DynamicJobs[j][jobName]);
            }
        }
        return true; }

    functia loaddynamicjobs:

     

    function LoadDynamicJobs() {
        //jobss = cache_num_rows();
        for(new i = 1; i <= Iter_Add(Jobs, i); i++) {
            gString[0] = (EOS);
            new j = i - 1;
            DynamicJobs[i][jobID]                 = cache_get_field_content_int(j, "jobID");
            DynamicJobs[i][jOwned]                = cache_get_field_content_int(j, "Owned");
            cache_get_field_content(j, "jobName", DynamicJobs[i][jobName], SQL, 130);
            DynamicJobs[i][jobLevel]               = cache_get_field_content_int(j, "jobLevel");
            DynamicJobs[i][jPosX]                 = cache_get_field_content_float(j, "PosX");
               DynamicJobs[i][jPosY]                 = cache_get_field_content_float(j, "PosY");
            DynamicJobs[i][jPosZ]                 = cache_get_field_content_float(j, "PosZ");
            cache_get_field_content(j, "JobOwner", DynamicJobs[i][jobOwner], SQL, 64);
            DynamicJobs[i][jBuyPrice]                = cache_get_field_content_int(j, "BuyPrice");
            DynamicJobs[i][jTill]                      = cache_get_field_content_int(j, "Till");
            DynamicJobs[i][jPickupID]                = cache_get_field_content_int(j, "PickupID");
            cache_get_field_content(j, "Message", DynamicJobs[i][jMessage], SQL, 130);

            if(DynamicJobs[i][jBuyPrice] >= 1) {
                DestroyDynamic3DTextLabel(DynamicJobs[i][jLabelID]);
                format(gString, sizeof gString, "{FFD700}ID: {ffffff}%d{FFD700}\n%s\nName: {ffffff}%s{FFD700}\nMinim Level: {ffffff}%d{FFD700}\nOwner: {ffffff}%s{FFD700}\n{FFD700}[/getjob] - To get the job\nPrice: {ffffff}$%s\n{FFD700}[/buyjob] - For buy the job{ffffff}", DynamicJobs[i][jobID], DynamicJobs[i][jMessage], DynamicJobs[i][jobName], DynamicJobs[i][jobLevel], DynamicJobs[i][jobOwner], FormatNumber(DynamicJobs[i][jBuyPrice])); 
                DynamicJobs[i][jLabelID] = CreateDynamic3DTextLabel(gString, -1, DynamicJobs[i][jPosX], DynamicJobs[i][jPosY], DynamicJobs[i][jPosZ], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 25.0);
            }
            if(DynamicJobs[i][jOwned] == 1)
            {
                DestroyDynamic3DTextLabel(DynamicJobs[i][jLabelID]);
                format(gString, sizeof gString, "{FFD700}ID: {ffffff}%d{FFD700}\n%s\nName: {ffffff}%s{FFD700}\nMinim Level: {ffffff}%d{FFD700}\nOwner: {ffffff}%s{FFD700}\n{FFD700}[/getjob] - To get the job", DynamicJobs[i][jobID], DynamicJobs[i][jMessage],DynamicJobs[i][jobName], DynamicJobs[i][jobLevel], DynamicJobs[i][jobOwner]); 
                DynamicJobs[i][jLabelID] = CreateDynamic3DTextLabel(gString, -1, DynamicJobs[i][jPosX], DynamicJobs[i][jPosY], DynamicJobs[i][jPosZ], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 25.0);
            }
            DynamicJobs[i][jPickupID] = CreateDynamicPickup(1275, 23, DynamicJobs[i][jPosX], DynamicJobs[i][jPosY], DynamicJobs[i][jPosZ], 0, -1, -1, 15); pickups++;
        }
        printf("[LOADING] JOBS - %d", Iter_Count(Jobs));
        return true; }

    [preciez ca este sistemul lui flint din gamemode-ul ala stoners, mi-a placut cum arata si am vrut sa-l editezi putin pana am dat de problema asta la care ma chinui aproximativ 7 ore sa o rezolv].

    A, si in mysql_log apare asa ceva:

    Log("16:09:39","cache_get_field_content_int",1,"invalid datatype",0);
    Log("16:09:39","CMySQLResult::GetRowDataByName()",1,"invalid row index ('13') (Query: \"SELECT * FROM `jobs`\")",0);

     

  2. Acum 19 ore, Kiran a spus:

    Sincer sa fiu, nu prea ai ce sa aduci nou la SA:MP, iti recomand sa incepi sa lucrezi in lua pt mta or fivem, scriptul iti permite mai multe lucruri, dar daca chiar doresti sa ramai mult succes in continuare.

    probabil o sa incep o sa-i copiez pe cei din Rusia, avand in vedere ca modul lor de lucru este cu 10-15 ani inaintea noastra.

  3. Salut, am zis sa mai reimprospatez putin aceasta zona, si am oferit jumatate din quest (mai trebuie facuta decat salvarea).

    Pai, quest-ul este aproape complet, mai e de facut decat salvarea.

    // puneti asta la float-uri
    new Float:QuestObjects[20][3] = {
    {1666.6095,2254.1096,10.8203},
    {1676.3660,1624.0376,10.8203},
    {1686.7211,1115.1724,10.7152},
    {2086.3630,1318.9218,10.8203},
    {2437.3992,1660.2825,15.2361},
    {2316.0188,2333.9509,10.8203},
    {1476.4000,1921.8619,10.8946},
    {1890.8251,1986.9982,13.7848},
    {2576.2412,1077.5697,10.6719},
    {2162.3022,919.3609,10.8203},
    {1492.2125,667.3132,10.9838},
    {2300.9333,556.3300,7.7813},
    {2805.9348,909.8344,10.7500},
    {2800.6467,913.4963,11.5617},
    {2829.0735,1279.7488,10.7709},
    {2776.4670,2523.5203,10.8203},
    {1041.3608,1062.0674,10.1691},
    {1386.4358,922.4484,10.8184},
    {1082.9188,1685.3890,6.9541},
    {914.1532,2035.2485,11.6145}
    };
    // asta puneti la enum pInfo
    pObiecteAdunate, pQuestObjects[20],
    // daca aveti public onplayerpickupdynamicpickup puneti asta sub
    	for(new i; i < 20; i++) { 
    			if(pickupid == PlayerInfo[playerid][pQuestObjects][i]) { 
    				PlayerInfo[playerid][pObiecteAdunate]++; 
    				SCMf(playerid, COLOR_GREY, "progress quest: (%d/20)", PlayerInfo[playerid][pObiecteAdunate]); 
    				DestroyDynamicPickup(PlayerInfo[playerid][pQuestObjects][i]); 
    				RemovePlayerMapIcon(playerid, 70+i);
    				verificaquestobiecte(playerid);
    			}
    		} 
    		return 1;
    	}
    daca nu-l aveti,
    public OnPlayerPickUpDynamicPickup(playerid, pickupid) { 
    	for(new i; i < 20; i++) { 
    		if(pickupid == PlayerInfo[playerid][pQuestObjects][i]) { 
    			PlayerInfo[playerid][pObiecteAdunate]++; 
    			SCMf(playerid, COLOR_GREY, "progress quest: (%d/20)", PlayerInfo[playerid][pObiecteAdunate]); 
    			DestroyDynamicPickup(PlayerInfo[playerid][pQuestObjects][i]); 
    			RemovePlayerMapIcon(playerid, 70+i);
    			verificaquestobiecte(playerid);
    		}
    	} 
    	return 1;
    }
    apoi faceti o functie (verificaquestobiecte)
    function verificaquestobiecte(playerid) {
    	if(PlayerInfo[playerid][pObiecteAdunate] == 20) {
    		new money = 300000 + random(250000);
    		new pp = 25 + random(3);
    		new rp = 4 + random(3);
    		new rob = 5 + random(2);
    		SCM(playerid, COLOR_YELLOW2, "Felicitari! Ai terminat quest-ul special si ai primit:");
    		SCMf(playerid, -1, "- %s bani", FormatNumber(money));
    		SCMf(playerid, -1, "- %d puncte premium", pp);
    		SCMf(playerid, -1, "- %d puncte de respect", rp);
    		SCMf(playerid, -1, "- %d puncte de rob", rob);
    		GivePlayerCash(playerid, money);
    		PlayerInfo[playerid][pPremiumPoints] += pp; pUpdateInt(playerid, "PremiumPoints", PlayerInfo[playerid][pPremiumPoints]); // aici modificati voi cum aveti
    		PlayerInfo[playerid][pExp] += rp; pUpdateInt(playerid, "Respect", PlayerInfo[playerid][pExp]); // aici modificati voi cum aveti
    		PlayerInfo[playerid][pRob] += rob; pUpdateInt(playerid, "Rob", PlayerInfo[playerid][pRob]); // aici modificati voi cum aveti
    	}
    	return 1;
    }
    inclusiv comanda [/startquest] 
    	CMD:startquest(playerid, params[]) {
    		if(arecpactiv(playerid)) return true;
    		if(!IsPlayerInRangeOfPoint(playerid, 3, 1907.9348,1511.0798,14.0482)) {
    		  SCM(playerid, COLOR_ERROR, "Nu esti la locatia potrivita, ti-a fost setat un punct pe harta.");
    		  SetPlayerCheckpointEx(playerid, 1907.9348,1511.0798,14.0482, 3.0);
    		  CP[playerid] = 43;
    		  return true;	
    		}
    		SCMf(playerid, -1, "Ai inceput quest-ul, du-te si aduna cele 25 caiete (progress: %d/20)", PlayerInfo[playerid][pObiecteAdunate]); 
    		for(new i = 0; i < sizeof(QuestObjects); i++) {
    			PlayerInfo[playerid][pQuestObjects][i] = CreateDynamicPickup(2855, 18, QuestObjects[i][0], QuestObjects[i][1], QuestObjects[i][2], -1); 
    			SetPlayerMapIcon(playerid, 70+i, QuestObjects[i][0], QuestObjects[i][1], QuestObjects[i][2] , 56, -1, MAPICON_GLOBAL); 
    		}
    		return 1;
    	}

     

  4. La 10.09.2020 la 20:31, DiBlaine a spus:

    Salutare, astazi am facut un tutorial cu pickup-uri dinamice + salvare in baza de date care se pot creea si edita direct din joc, sper sa va placa si sper sa va fie de folos. As aprecia foarte mult daca m-ati sustine cu un subscribe si cu un comment cu idei pentru tutoriale scripting.

     

    Imi place ce vad, bafta in continuare.

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