Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2017-01-23, 20:25


Pila2







Wiek: 29
Na forum: 3449 dni
Posty: 35

Piwa: 1

Respekt: 50

witam mam komend? na napraw? pojazdu w kt?rym siedzi gracz u?ywam tego:
Pawn

if(strcmp(cmd"/napraw"true) == 0)
{
        SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
        RepairVehicle(GetPlayerVehicleID(playerid));
    return 1;
}

ale chce to przerobi? ?e trzeba stac poza pojazdem ale te? blisko ?eby go naprawia?.(chodzi mi o funkcje kt?ra sprawdzi jakie id pojazdu stoi przed nami) (i jezeli bedzie to naczepa lub rower to wyskoczy Nieprawid?owa reakcja!)
z g?ry dzk za pomoc

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 21:06


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Pawn

stock GetClosestVehicle(playeridFloat:range)
{
    new     Float:p_X;
    new     Float:p_Y;
    new     Float:p_Z;

    new     Float:Distance;
    new     Float:PretendentDistance range +1;
    new     Pretendent;

    GetPlayerPos(playeridp_Xp_Yp_Z);

    for(new vehicleid=1vehicleid MAX_VEHICLESvehicleid++)
    {
        Distance GetVehicleDistanceFromPoint(vehicleidp_Xp_Yp_Z);

        if(Distance <= range && Distance <= PretendentDistance)
        {
            Pretendent vehicleid;
            PretendentDistance Distance;
        }
    }

    return Pretendent;
}


Tutaj masz przyk?adow? funkcje kt?ra zwraca id najbli?szego pojazdu.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 21:25


Pila2







Wiek: 29
Na forum: 3449 dni
Posty: 35

Piwa: 1

Respekt: 50

czyli:
Pawn

if(strcmp(cmd"/napraw"true) == 0)
{
        SetVehicleHealth(GetClosestVehicle(playerid10.0), 1000);
        RepairVehicle(GetClosestVehicle(playerid10.0));
    return 1;
}

?? ??

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 21:46


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Pawn
stock GetClosestVehicle(playeridFloat:range)
{
    new     Float:p_X;
    new     Float:p_Y;
    new     Float:p_Z;

    new     Float:Distance;
    new     Float:PretendentDistance range +1;
    new     Pretendent = -1;

    GetPlayerPos(playeridp_Xp_Yp_Z);

    for(new vehicleid=1vehicleid MAX_VEHICLESvehicleid++)
    {
        Distance GetVehicleDistanceFromPoint(vehicleidp_Xp_Yp_Z);

        if(Distance <= range && Distance <= PretendentDistance)
        {
            Pretendent vehicleid;
            PretendentDistance Distance;
        }
    }
}

if(strcmp(cmd"/napraw"true) == 0)
{
    new vehicleid GetClosetVehicle(playerid10.0);

    if(vehicleid == -1) return 1;

    SetVehicleHealth(vehicleid1000);
    RepairVehicle(vehicleid);
    return 1;
}


Przetestuj a si? dowiesz czy b?dzie dzia?a?. ;)

P.S Polecam Ci Pawn.CMD http://gtao.pl.com/showthread.php?t=608474

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 21:50


Pila2







Wiek: 29
Na forum: 3449 dni
Posty: 35

Piwa: 1

Respekt: 50

error 017: undefined symbol "GetClosetVehicle"

daje :
na g?rze

#define GetClosestVehicle

bo nie jest zdefiniowane

ale wtedy:
Pawn

error 001expected token"-identifier-"but found "("
error 021symbol already defined"GetPlayerPos"
error 010invalid function or declaration
error 010invalid function or declaration
 error 017undefined symbol "GetClosetVehicle"
 warning 203symbol is never used"Distance"
 warning 203symbol is never used"Pretendent"
 warning 203symbol is never used"PretendentDistance"
warning 203symbol is never used"p_X"
warning 203symbol is never used"p_Y"
warning 203symbol is never used"p_Z"


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 21:57


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Coooo? Gdzie? to wklei?, t? funkcje walnij na koniec skryptu po za callbackami.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 21:59


Pila2







Wiek: 29
Na forum: 3449 dni
Posty: 35

Piwa: 1

Respekt: 50

xDD ja stocki wale zawsze na srodku xDD

[ Dodano: 2017-01-23, 22:01 ]
dobra mam bo pomyli?e? w cmd da?es:
GetClosetVehicle
zamiast:
GetClosestVehicle
ale teraz:

warning 204: symbol is assigned a value that is never used: "Pretendent"
warning 209: function "GetClosestVehicle" should return a value

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 22:02


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Czekaj bo si? pomyli?em z t? funkcj?. Tu powinno dzia?a?:

Pawn
if(strcmp(cmd"/napraw"true) == 0)
{
    new vehicleid GetClosestVehicle(playerid10.0);

    if(vehicleid == -1) return 1;

    SetVehicleHealth(vehicleid1000);
    RepairVehicle(vehicleid);
    return 1;
}

stock GetClosestVehicle(playeridFloat:range)
{
    new     Float:p_X;
    new     Float:p_Y;
    new     Float:p_Z;

    new     Float:Distance;
    new     Float:PretendentDistance range +1;
    new     Pretendent = -1;

    GetPlayerPos(playeridp_Xp_Yp_Z);

    for(new vehicleid=1vehicleid MAX_VEHICLESvehicleid++)
    {
        Distance GetVehicleDistanceFromPoint(vehicleidp_Xp_Yp_Z);

        if(Distance <= range && Distance <= PretendentDistance)
        {
            Pretendent vehicleid;
            PretendentDistance Distance;
        }
    }
    return Pretendent;
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 22:06


Pila2







Wiek: 29
Na forum: 3449 dni
Posty: 35

Piwa: 1

Respekt: 50

nie naprawia pojazdu a stoje bardzo blisko nawet wsiadam i wraz nic

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 22:30


borsuk







Wiek: 17
Na forum: 3547 dni
Posty: 468

Piwa: 15621

Respekt: 412
Respekt: 412

Ostrzeżeń: 80%
Prosz?, niesprawdzane podaj errory jak s?

Pawn
if(strcmp(cmd"/napraw"true) == 0)
{
    NaprawPojazd(playerid10);
    return 1;
}

stock NaprawPojazd(playeridFloat:range)
{
    new     Float:p_X;
    new     Float:p_Y;
    new     Float:p_Z;
    new bool:jest;

    for(new vehicleid=0vehicleid MAX_VEHICLESvehicleid++)
    {
        GetVehiclePos(vehicleidp_Xp_Yp_Z);
        Distance GetPlayerDistanceFromPoint(playeridp_Xp_Yp_Z);

        if(Distance <= range)
        {
            jest true;
            RepairVehicle(vehicleid);
            SetVehicleHealth(vehicleid1000);
            break;
        }
    }
    if(jest)
    {
          SendClientMessage(playerid, -"Naprawiono pojazd");
    }
    else SendClientMessage(playerid, -1"W pobli?u nie ma ?adnego pojazdu!");
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 22:45


Pila2







Wiek: 29
Na forum: 3449 dni
Posty: 35

Piwa: 1

Respekt: 50

error 017: undefined symbol "Distance"
error 017: undefined symbol "Distance"
error 001: expected token: ",", but found "-string-"
warning 215: expression has no effect
error 001: expected token: ";", but found ")"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line

te b??dy s? w tym stocku

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 23:01


borsuk







Wiek: 17
Na forum: 3547 dni
Posty: 468

Piwa: 15621

Respekt: 412
Respekt: 412

Ostrzeżeń: 80%
Zamiast
Distance = GetPlayerDistanceFromPoint(playerid, p_X, p_Y, p_Z);
Daj
new Distance = GetPlayerDistanceFromPoint(playerid, p_X, p_Y, p_Z);

Skompiluj i daj linijk? error 001: expected token: ";", but found ")"

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 23:06


MG303







Wiek: 30
Na forum: 6418 dni
Posty: 654

Piwa: 2990

Respekt: 231,6
Respekt: 231,6Respekt: 231,6

Kod:

SendClientMessage(playerid, -1 "Naprawiono pojazd");


tu nie ma przecinka.

Kod:

SendClientMessage(playerid, -1, "Naprawiono pojazd");]


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 23:13


Pila2







Wiek: 29
Na forum: 3449 dni
Posty: 35

Piwa: 1

Respekt: 50

dobra to dzia?a ale teraz to b?dzie optymalne tylko dla naprawy ale jak bede chcia? zrobic tego mn?stwo czyli dodawanie nitra itp to to b?dzie bardzo nieoptymalne bo do ka?dego bede musia? robic oddzieln? funkcje czy nie da si? tego zrobi? tak jak pr?bowa? to zrobi?: Wafelowski?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-01-23, 23:33


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Da si? o to funkcja:

Pawn
stock GetClosestVehicle(playeridFloat:range)
{
    new     Float:p_X;
    new     Float:p_Y;
    new     Float:p_Z;

    new     Float:Distance;

    GetPlayerPos(playeridp_Xp_Yp_Z);

    for(new vehicleid=1vehicleid MAX_VEHICLESvehicleid++)
    {
        Distance GetVehicleDistanceFromPoint(vehicleidp_Xp_Yp_Z);

        if(Distance == 0) continue; 

        if(range >= Distance)
        {
            return vehicleid;
        }
    }

    return 0;
}


Jedyny problem jaki tutaj jest to taki ?e sprawdzanie idzie od 1 i w przypadku gdy mamy powiedzmy Samp ID 32 oraz 52 i dajmy na to ?e ID 32 przyjmie 9,95 metra a ID 52 przyjmie 3 metry (range ustawiamy na max 10) to wtedy zwr?ci nam ID 32 zamiast 52 poniewa? znajduje si? do 10 metr?w co nie znaczy ?e jest najbli?ej ale za to najni?sze ID ma.

Co do kodu od Ziomallo to jest tam strasznie namieszane nie rozumiem po co GetPlayerPos da? do p?tli, wystarczy raz sprawdzi? pozycj? i p??niej j? por?wnywa? a tak to co zwi?kszenie vehicleid sprawdza nam pozycj?

[ Dodano: 2017-01-23, 23:41 ]
Wrzucam poprawk? tej funkcji co Ci poda?em wpierw:

Pawn
stock GetClosestVehicle(playeridFloat:range)
{
    new     Float:p_X;
    new     Float:p_Y;
    new     Float:p_Z;

    new     Float:Distance;
    new     Float:PretendentDistance range +1;
    new     Pretendent;

    GetPlayerPos(playeridp_Xp_Yp_Z);

    for(new vehicleid=1vehicleid MAX_VEHICLESvehicleid++)
    {
        Distance GetVehicleDistanceFromPoint(vehicleidp_Xp_Yp_Z);

        if(Distance != && Distance <= range && Distance <= PretendentDistance)
        {
            Pretendent vehicleid;
            PretendentDistance Distance;
        }
    }

    return Pretendent;
}


Teraz powinno dzia?a? dobrze pomimo tego co napisa?em nieco wy?ej. Distance z p?tli zawsze zwraca?o 0 dlatego p?tla wykonywa?a si? do samego ku?ca i zwraca?a najwy?sze MAX_VEHICLES przez co nie naprawia?o pojazdu.

[ Dodano: 2017-01-23, 23:58 ]
Dobra a wi?c dodam jeszcze ?e funkcja GetVehicleDistanceFromPoint() zwraca zawsze float == 0.0 w przypadku wszystkich pojazd?w kt?re nie zosta?y stworzone, dlatego jest tam w warunku dane Distance != 0 bo zwraca?o zawsze zerooo a warunek jest tak skonstruowany ?e szuka najni?szej warto?ci je?eli chodzi o Distance i p??niej przypisuje j? do zmiennej i p?tla wykonywa?a si? w taki spos?b a? po MAX_VEHICLES i zwraca?a t? warto??.

Postaw piwo autorowi tego posta
 

 
Tagi: naprawa :: najblizszego :: auta
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku