Jump to content

Gawitkkk

Membru
  • Posts

    235
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Gawitkkk

  1. fa un timer, in care se actualizeaza textdraw-ul. Sau, il poti pune in timer-ul de la ceas..

    Si, cred ca trebuie CreatePlayerTextDraw. Cel putin eu asa am, si merge treaba.

    P.S. cand il actualizezi, foloseste un format(..);

    Chestia asta nu merge, dar ca idee dupa cum m-as ghida eu.

    public SyncTime()
    {
        if(conditia unde verifici daca lucreaza ca tirist, e intr-un tir)
        {
            new text[50], Float:variabila_distanta =  GetPlayerDistanceFromPoint(playerid, x, y, z);
            format(text, sizeof(text), "%s - %0.2f", variabila_destinatie, variabila_distanta);
            TextDrawSetString(Trucker2, text);   
            TextDrawShowForPlayer(playerid, Trucker2);
        } 
    }

     

    ​Chiar nu am înțeles...

     

    Uite ce am încercat să fac:

     

    public SyncTime(playerid)
    {
        if(PlayerInfo[playerid][pJob] == 10 && IsWorkTrucking[playerid] == 1)
        {
            new text[50], Float: distance = GetPlayerDistanceFromPoint(playerid, 0,0,0);
            TextDrawShowForPlayer(playerid, Trucker2);
            format(text, sizeof(text), "Ganton (LS) - %0.2f",distance);
            TextDrawSetString(Trucker2, text);
            SendClientMessage(playerid, COLOR_WHITE, "Te pup, pa pa !");
            return 1;
        }
        return 1;
    }
     
    Uite ce erori am primit:
    
    D:\Scripting\Server\gamemodes\excessrp.pwn(14690) : error 025: function heading differs from prototype
    D:\Scripting\Server\gamemodes\excessrp.pwn(14695) : error 035: argument type mismatch (argument 2)
    D:\Scripting\Server\gamemodes\excessrp.pwn(14697) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase
    
    3 Errors.
    

    Scuză-mă, știu că sunt cam greu de cap, însă niciodată nu am mai făcut (sau încercat) ceva de genul, de accea sunt așa greu de cap..

  2. ​Pentru asta ai nevoie de "TextDrawSetString". Click!

    Si ca sa se updateze km, etc, ai nevoie de un timer. Click!

     

    Invatati-va sa lucrati cu wiki, e simplu, usor si acumulati mai multe cunostiinte.

    ​Astea sunt textdraw-urile.. 

     

    Trucker1[i] = TextDrawCreate(218.000000, 342.125000, "Drive the truck to the checkpoint.");
            TextDrawLetterSize(Trucker1[i], 0.348499, 1.582500);
            TextDrawAlignment(Trucker1[i], 1);
            TextDrawColor(Trucker1[i], -1);
            TextDrawSetShadow(Trucker1[i], 0);
            TextDrawSetOutline(Trucker1[i], 1);
            TextDrawBackgroundColor(Trucker1[i], 51);
            TextDrawFont(Trucker1[i], 1);
            TextDrawSetProportional(Trucker1[i], 1);
    Trucker2[i] = TextDrawCreate(231.000000, 367.937500, "Ganton (LS) - %d km");
            TextDrawLetterSize(Trucker2[i], 0.449999, 1.600000);
            TextDrawAlignment(Trucker2[i], 1);
            TextDrawColor(Trucker2[i], -1);
            TextDrawSetShadow(Trucker2[i], 0);
            TextDrawSetOutline(Trucker2[i], 1);
            TextDrawBackgroundColor(Trucker2[i], 51);
            TextDrawFont(Trucker2[i], 1);
            TextDrawSetProportional(Trucker2[i], 1);

     

    Tot nu știu cum să fac să arate numărul de km rămași..

  3. Într-adevăr este un textdraw. Tot ce trebuie să faci este să setezi acel CheckPoint la destinatie, după aceea folosești:

    GetPlayerDistanceFromPoint(playerid, Float:X, Float:Y, Float:Z);

    Asta returnează distanța în metri dintre player și punctul aflat la coordonatele X,Y,Z (în cazul tău, x,y,z unde se află checkpointul)

    ​Voi crea textdraw-urile dupa care voi veni cu edit sau post în caz că nu mă descurc.

    Mersi pentru ajutorul acordat.

  4. Problema intalnita (descriere): Nu este o problemă, ci o întrebare. Am creat un nou job (Trucker), cum fac ca după ce aleg licitația să îmi arate ceva de genul (ca în imaginea de jos)?
    Ero(area / rile) / warning-(ul / urile): Nu există.
    Liniile de cod / sursa / script-ul(obligatoriu): -
    Imagini / Video (optional): http://i.imgur.com/FZ5WpMW.jpg
    Ati incercat sa rezolvati singur?: Da, prima dată credeam că este un GameTextForPlayer, însă deabea dupaia am realizat faptul că este un TextDraw. 

  5. Gata, am reușit.

     

    Am ajuns unde am vrut, după ce atașez trailer-ul de Linerunner îmi răspunde comanda.

     

    Vă mulțumesc frumos pentru ajutorul acordat, nu îmi trecea mie prin cap nici cum că trebuia să descarc un include, și nici nu îmi dădeam seama cum trebuie să rezolv warning-urile alea..

     

    Mersi frumos tututror !

     

    Punct., ți-am acordat un + !

    KnowN, ți-am acordat un + !

    WopsS, ți-am acordat un + !

  6. Warning-urile alea sunt de la .inc

     

    Verifica acel include si aranjeaza scriptul cum trebuie. Adica, sa nu fie un rand mai la dreapta, unul mai la stanga. Fiecare cum trebuie!

     

    Cum sa nu fie:

     

        if(...)
        {
            //linie1
    //linie2
            //linie3
        }
    
    Cum sa fie:
    
        if(...)
        {
            //linie1
            //linie2
            //linie3
        }
    

    ​Am făcut asta, uite rezultatul: http://i.imgur.com/K12WbXn.png

     

    Bun, să revenim acum la sistemul despre care este vorba.

    Am făcut publicul:

    public OnTrailerHooked(playerid, vehicleid, trailerid)
    {
        if(CarInfo[cartrucker][cartruckertrailer]) // Verifici daca vehicului este pentru job-ul de trucker.
        {
            PlayerInfo[playerid][IsWorkTrucking] = 1;
            SetPlayerCheckpoint(playerid, 2761.5, -2455.89, 13.6, 10.0);
            SendClientMessage(playerid, COLOR_WHITE, "Drive to the checkpoint to get paid.");
        }
        return 1;
    }

     

    Am primit următoarele erori:

    D:\Scripting\Server\gamemodes\excessrp.pwn(4219) : error 033: array must be indexed (variable "cartrucker")
    D:\Scripting\Server\gamemodes\excessrp.pwn(4221) : error 033: array must be indexed (variable "IsWorkTrucking")
    Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase
    
    2 Errors.

  7. Salut,

    Foloseste-te de callback-ul OnTrailerHooked si acolo ii afisezi lista pe care doresti cu ShowPlayerDialog.

    Uite un exemplu

    public OnTrailerHooked(playerid, vehicleid, trailerid)
    {
    	if (VehicleInfo[vehicleid][vType] == VEHICLE_JOB && VehicleInfo[vehicleid][vOwnerID] == JOB_TRUCKER) // Verifici daca vehicului este pentru job-ul de trucker.
    	{
    		PlayerInfo[playerid][pTrucking] = 1;
    		SetPlayerCheckpoint(playerid, 2761.5, -2455.89, 13.6, 10.0);
    
    		PlayerInfo[playerid][pCurrentCheckpoint] = CHECKPOINT_TRUCKER;
    
    		SendClientMessageEx(playerid, COLOR_WHITE, "Drive to the checkpoint to get paid.");
    	}
    
    	return 1;
    }

     

    ​Am configurat ceea ce mi-ai spus tu.

     

    Uite ce eroare am primit:

    D:\Scripting\Server\gamemodes\excessrp.pwn(4218) : warning 235: public function lacks forward declaration (symbol "OnTrailerHooked")
    D:\Scripting\Server\gamemodes\excessrp.pwn(4220) : error 033: array must be indexed (variable "cartrucker")
    D:\Scripting\Server\gamemodes\excessrp.pwn(4222) : error 033: array must be indexed (variable "IsWorkTrucking")
    Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase
    
    2 Errors.
    
    Uite ce am facut: 
    public OnTrailerHooked(playerid, vehicleid, trailerid)
    {
        if(CarInfo[cartrucker][cartruckertrailer]) // Verifici daca vehicului este pentru job-ul de trucker.
        {
            PlayerInfo[playerid][IsWorkTrucking] = 1;
            SetPlayerCheckpoint(playerid, 2761.5, -2455.89, 13.6, 10.0);
            SendClientMessage(playerid, COLOR_WHITE, "Drive to the checkpoint to get paid.");
        }
        return 1;
    }
  8. Daca te grabesti cu problema, poti face sa-ti spawneze si tir si remorca, sa te puna in tir si apoi sa-ti ataseze remorca. Si apoi sa-ti apara dialogul ala

     

    Daca nu te grabsesti, asteapta sa-ti raspunda cineva care stie.. eu nu am idee cum verifici cand ti-ai atasat un trailer.

    ​Voi aștepta, mersi frumos.

  9. Pai.

     

    Scriu /work, urmând să se spawneze un Linerunner (în care sunt spawnat și eu, urmănd să fie încuiat) și un Trailer.

    Doresc ca după ce iau Trailer-ul respectiv să îmi arate un dialog de tip list, în care să îmi apară locațiile disponibile în care pot livra marfa.

  10. Problema intalnita (descriere): Nu este o problemă, ci o întrebare. Am creat job-ul Trucker, totul este ok și frumos, însă cum pot face ca după ce iau remorca tirului să îmi apară un tabel și să selectez locația unde doresc să duc remorca? Adică după ce iau remorca, să îmi apară lista și să selectez destinația transportului.
    Ero(area / rile) / warning-(ul / urile): -
    Liniile de cod / sursa / script-ul(obligatoriu): -
    Imagini / Video (optional): -
    Ati incercat sa rezolvati singur?: Da, am tot căutat pe wiki însă tot nu reușesc să îmi dau seama cum am de făcut..

  11. Problema intalnita (descriere): Nu este o problemă, ci o întrebare. Atunci când scriu o comanda, se spawneaza o mașină si mă pune în ea, urmând să încep lucrul la job-ul respectiv. Însă cum pot face ca atunci când sunt în mașină, nici eu și nici vehiculul să nu mai lom damage? Un fel de invulnerabilitate cât timp conduc vehiculul..
    Ero(area / rile) / warning-(ul / urile): -
    Liniile de cod / sursa / script-ul(obligatoriu): -
    Imagini / Video (optional): -
    Ati incercat sa rezolvati singur?: Da, momentan am pus SetVehicleHealth(cargarbage[playerid], 100000000000); pana aflu cum pot pune direct imunitate.

  12. Problema intalnita (descriere): Când folosesc comanda /ad nu îmi ia cat este setat biz fee-ul. Vreau ca atunci când public un ad să îmi ia fix cât este setat biz fee-ul.
    Ero(area / rile) / warning-(ul / urile): -
    Liniile de cod / sursa / script-ul(obligatoriu):

    CMD:ad(playerid,params[])
    {
    if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");
        if(IsPlayerConnected(playerid))
        {
    if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid,COLOR_WHITE,"{FFB870}Error: Command are inaccessible on foot.");
    new string[264],sendername[25],idx;
            if(PlayerInfo[playerid][pMuted] == 1)
            {
    format(string, sizeof(string), "You can not speak, you have been silenced for %d seconds.",PlayerInfo[playerid][pMuteTime]);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    return 1;
    }
       if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You don't have level 3.");
            if(IsPlayerInRangeOfPoint(playerid,5.0,1111.33,-1796.93,16.5938) || IsPlayerInRangeOfPoint(playerid,5.0,2079.6287,2046.1179,11.0579))
            {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(params);
    while ((idx < length) && (params[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[264];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = params[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    for(new s = 0; s < num_words; s++)
    {
    new pos;
    while((pos = strfind(result,Swears,true)) != -1) for(new i = pos, j = pos + strlen(Swears); i < j; i++)
    {
    result = '*';
    }
    }
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_WHITE, "{B8DBFF}Synthax: /ad <Text>");
    return 1;
    }
     
    new addd = -1, playeradd = 0;
    for(new i = 0; i < sizeof(AdvMSG) && addd == -1; i++)
    {
       if(strlen(AdvMSG) < 20) addd = i;
       if(strcmp(AdvPlayer,sendername,true) == 0 && strlen(AdvPlayer) == strlen(sendername)) playeradd = 1;
    }
    if(addd == -1) return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}Advertisement list is full.");
    if(playeradd == 1) return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You already placed an advertisement.");
     
    new payout = idx * 150;
    if(GetPlayerCash(playerid) < payout)
           {
               format(string, sizeof(string), "{FFB870}* You used %d characters which cost $%s, you don't have enough.", offset, FormatNumber(payout));
               SendClientMessage(playerid, COLOR_WHITE, string);
               return 1;
           }
    GivePlayerCash(playerid, - payout);
    format(AdvMSG[addd], 256, "{00D900}Ad placed by %s (Phone: {FFFFFF}%d{00D900}): %s",sendername,PlayerInfo[playerid][pPnumber],result);
    format(AdvPlayer[addd], 24,"%s",sendername);
    format(string, sizeof(string), "~r~Paid $%d~n~~w~Message contained: %d Characters", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    SCM(playerid,COLOR_WHITE,"You ad will be showen in 30 seconds.");
    if(IsPlayerInRangeOfPoint(playerid,5.0,1111.33,-1796.93,16.5938))
    {
    SBizzInfo[1][sbTill] += payout;
    SBizzInfo[1][sbProducts]--;
    SBUpdate(1,sbTillx);
    SBUpdate(1,sbProductsx);
    }
    else if(IsPlayerInRangeOfPoint(playerid,5.0,2079.6287,2046.1179,11.0579))
    {
    SBizzInfo[32][sbTill] += payout;
    SBizzInfo[32][sbProducts]--;
    SBUpdate(32,sbTillx);
    SBUpdate(32,sbProductsx);
    }
    }
    else return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You are not near to an advertising agency.");
    }
    return 1;
    }

    Imagini / Video (optional): -
    Ati incercat sa rezolvati singur?: Da...

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