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

Wysłany: 2013-09-17, 13:19


rajjdd







Wiek: 39
Na forum: 4877 dni
Posty: 2



Respekt: 50

Witam, ot?? mam problem z systemem zlece?. O ile dobrze pami?tam system ten jest z mapki zmyslaka.


1. Doda?em warunek, dzi?ki kt?remu nie mo?na za?adowa? towaru pojazdem bez naczepy. Niby dzia?a, tylko gdy wjad? w checkpoint to wyskakuje to ca?y czas na czacie do p?ki nie wyjad? :D A chcia?bym, ?eby wyskoczy?o info tylko 1 raz :P


2. Przy za?adunku, gdy wpisz? ilo?? ton, w??cza si? timer, jest wszystko ok, tylko jak odliczanie si? sko?czy to okienko wyskakuje jeszcze raz :x Przegl?da?em kilka razy ten kod, ale nie widz? ?adnego b??du :/


Kod (my?l? ?e wszystko wyci??em :) ):

Pawn
#define KOLOR 0x00FFFFFF // kolor wiadomo??i
#define TIME 15 //czas za?adunku/roz?adunku
#define PRZEDMIOTOW 12 //tyle ile masz przedmiotow w liscie
#define T_DIALOG 100 // ID dialogu z list? towar?w
#define COLOR_DARKBLUE 0x300FFAAB
#define GUI_KOMENDY     12





new Truck_Lista[PRZEDMIOTOW][4][24]=
{
    // produkt | wynagrodzenie za km | poczatek | koniec
    {"Krzes?a", 859, "LS LOT", "Szko?a LS"},
    {"Zabawki", 250, "Stacja LV", "Cyrk LS"},
    {"Piach", 349, "Kopalnia LV", "SF Budowa"},
    {"S?odycze", 925, "Fabryka LV", "Cyrk LS"},
    {"W?dki", 148, "Doki SF", "LS Port"},
    {"???ka", 649, "Fabryka LV", "Motel SF-LV"},
    {"Poczt?wki", 630, "SF LOT", "Stacja LV"},
    {"Ryby", 780, "LS Port", "Motel SF-LV"},
    {"Naklejki", 989, "LV LOT", "Stare Lotnisko"},
    {"Paliwo", 545, "Stacja LV", "Kopalnia LV"},
    {"?wir", 189, "SF Budowa", "Stare Lotnisko"},
    {"Stare Meble", 954, "Motel SF-LV", "Fabryka LV"}
};


new Float:Truck_Pos[PRZEDMIOTOW][12]=
{
    {2086.6682, -2284.1882, 13.5468, 1244.1777, -2010.9207, 59.8781},
    {2130.1103, 888.2024, 10.8129, 379.3426, -2036.3726, 7.8300},
    {567.1159, 878.2385, -43.7022, -2108.5913, 147.5799, 35.2413},
    {982.1158, 2073.0163, 10.8203, 379.3426, -2036.3726, 7.8300},
    {-1712.2558, 62.0087, 3.5494, 2285.6286, -2401.0368, 13.5468},
    {982.1158, 2073.0163, 14.1439,-783.0074, 2765.5781, 45.6563},
    {-1367.9561, -255.5399, 10.8203,2130.1103, 888.2024, 10.8129},
    {2285.6286, -2401.0368, 13.5468,-783.0074, 2765.5781, 45.6563},
    {1636.8261,1520.3502,10.7968,404.6010, 2452.8776, 16.5000},
    {2130.1103, 888.2024, 10.8129,567.1159, 878.2385, -43.7022},
    {-2108.5913, 147.5799, 35.2413,404.6010, 2452.8776, 16.5000},
    {-783.0074, 2765.5781, 45.6563,982.1158, 2073.0163, 10.8203}
};












stock IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    {
        if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}






if(strcmp(cmdtext,"/kurs",true)==0)
{

    new vehicleid = GetPlayerVehicleID(playerid);

    if(!IsPlayerInAnyVehicle(playerid)){
        SendClientMessage(playerid,COLOR_YELLOW,"Chcesz dostarczyc towar na pieszo?");
        return 1;
    }
    if(!GetVehicleTrailer(vehicleid)){
        SendClientMessage(playerid,COLOR_YELLOW, "Nie masz przyczepionej naczepy!");
        return 1;
    }

    if(GetPVarInt(playerid, "T_Zlecenie") >= 0)
    {
        SendClientMessage(playerid, KOLOR, "{FFFFFF}[{DD0000}ERROR{FFFFFF}]{0000FF}:{008040} Wykonujesz ju? jaki? kurs!");
        return 1;
    }


    new str[1024];
    new zlecenie[5];
    zlecenie[0] = random(PRZEDMIOTOW);
    zlecenie[1] = random(PRZEDMIOTOW);
    zlecenie[2] = random(PRZEDMIOTOW);
    zlecenie[3] = random(PRZEDMIOTOW);
    zlecenie[4] = random(PRZEDMIOTOW);

    SetPVarInt(playerid, "Zlecenie#1", zlecenie[0]);
    SetPVarInt(playerid, "Zlecenie#2", zlecenie[1]);
    SetPVarInt(playerid, "Zlecenie#3", zlecenie[2]);
    SetPVarInt(playerid, "Zlecenie#4", zlecenie[3]);
    SetPVarInt(playerid, "Zlecenie#5", zlecenie[4]);

    for(new i; i < 5; i++)
        format(str, sizeof str, "%s\n{FF8000}Z: {FFFFFF}%s {FF8000}Do: {FFFFFF}%s {FF8000}Towar: {FFFFFF}%s {FF8000}Wynagrodzenie: {0000FF}%d$", str, Truck_Lista[zlecenie[i]][2], Truck_Lista[zlecenie[i]][3], Truck_Lista[zlecenie[i]][0], Truck_Lista[zlecenie[i]][1]);

    ShowPlayerDialog(playerid, T_DIALOG, DIALOG_STYLE_LIST, "Dostepne towary: [losowe!]", str, "Dalej", "Anuluj");
    return 1;
}














forward T_Laduj(playerid);
public T_Laduj(playerid)
{
    static odlicz;
    new str[128];

    if(odlicz == TIME)
    {
        new id = GetPVarInt(playerid, "T_Zlecenie"),
        Float:X, Float:Y, Float:Z;

        SendClientMessage(playerid, COLOR_DARKBLUE, "{FFFFFF}[INFO]{0000FF}: {FF8000}Uko?czono za?adunek towaru. Dostarcz go do wyznaczonego miejsca {FFFFFF}ci??ar?wk? na mapie.");
        TogglePlayerControllable(playerid, 1);
        SetPVarInt(playerid, "T_Towar", 1);
        RemovePlayerMapIcon(playerid, 99);
        SetPlayerMapIcon(playerid, 99, Truck_Pos[id][3], Truck_Pos[id][4], Truck_Pos[id][5], 51, 0, MAPICON_GLOBAL_CHECKPOINT);

        GetPlayerPos(playerid, X, Y, Z);
        SetPVarFloat(playerid, "T_X", X);
        SetPVarFloat(playerid, "T_Y", Y);
        SetPVarFloat(playerid, "T_Z", Z);
        odlicz = 0;
        KillTimer(GetPVarInt(playerid, "T_Timer"));
        return 1;
    }
    format(str, sizeof str, "%d", TIME - odlicz);
    GameTextForPlayer(playerid, str, 1001, 5);
    odlicz++;
    return 1;
}


forward T_Rozladuj(playerid, vehid);
public T_Rozladuj(playerid, vehid)
{
    static odlicz;
    new str[128];
    format(str, sizeof str, "%d", TIME - odlicz);

    GameTextForPlayer(playerid, str, 1001, 5);
    if(odlicz == TIME)
    {
        KillTimer(GetPVarInt(playerid, "T_Timer"));
        odlicz = 0;

        ShowPlayerDialog(playerid, GUI_KOMENDY, DIALOG_STYLE_MSGBOX, "Wynagrodzenie", "{FFFFFF}[INFO]{0000FF}: {0080FF}Towar zosta? roz?adowany\n{FF8000}Twoje wynagrodzenie za towar, {FFFFFF}wp?yne?o na konto.", "Ok", "Anuluj");

        if(GetPVarInt(playerid, "T_Ton") > 20)
            SetPlayerScore(playerid, GetPlayerScore(playerid)+2);
        GivePlayerMoney(playerid, 671);

        TextDrawHideForPlayer(playerid, T_TD[playerid][0]);
        TogglePlayerControllable(playerid, 1);
        RemovePlayerMapIcon(playerid, 99);
        TextDrawShowForPlayer(playerid, T_TD[playerid][1]);

        SetPVarInt(playerid, "T_Towar", -1);
        SetPVarInt(playerid, "T_Zlecenie", -1);
        SetPVarInt(playerid, "T_Block", 0);
        SetPVarInt(playerid, "T_Premia", 0);
        SetPVarInt(playerid, "T_Timer", 0);
        SetPVarInt(playerid, "T_Ton", 0);
        Zlecenie[playerid] = -1;
        return 1;
    }
    odlicz++;
    return 1;
}





















new id = GetPVarInt(playerid, "T_Zlecenie");


if(!GetPVarInt(playerid, "T_Block")&& IsPlayerInRangeOfPoint(playerid, 5.0, Truck_Pos[id][0], Truck_Pos[id][1], Truck_Pos[id][2]))
{
    if(!IsPlayerInAnyVehicle(playerid)){
        SendClientMessage(playerid,COLOR_YELLOW,"Chcesz dostarczyc towar na pieszo?");
        return 1;
    }
    if(!GetVehicleTrailer(GetPlayerVehicleID(playerid))){
        SendClientMessage(playerid,COLOR_YELLOW, "Nie masz przyczepionej naczepy!");
        return 1;
    }
    ShowPlayerDialog(playerid, T_DIALOG+1, DIALOG_STYLE_INPUT, "Za?adunek", "Wpisz ile ton chcesz zapakowa?.\n{FFFFFF}[INFO]{0000FF}: {FF8000}[Max. 30t], {00FF00}[dopuszczalna waga towaru: 28t]:", "OK", "Anuluj");
    TogglePlayerControllable(playerid, 0);
    SetPVarInt(playerid, "T_Block", 1);
    return 1;
}

if(GetPVarInt(playerid, "T_Block") && GetPVarInt(playerid, "T_Towar") && IsPlayerInRangeOfPoint(playerid, 5.0, Truck_Pos[id][3], Truck_Pos[id][4], Truck_Pos[id][5]))
{
    if(!IsPlayerInAnyVehicle(playerid)){
        SendClientMessage(playerid,COLOR_YELLOW,"Chcesz dostarczyc towar na pieszo?");
        return 1;
    }
    if(!GetVehicleTrailer(GetPlayerVehicleID(playerid))){
        SendClientMessage(playerid,COLOR_YELLOW, "Nie masz przyczepionej naczepy!");
        return 1;
    }
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, KOLOR, "{FFFFFF}[INFO]{0000FF}: {FFFFFF}Roz?adowywanie towaru prosz? czeka?...");
    SetPVarInt(playerid, "T_Block", 0);
    KillTimer(GetPVarInt(playerid, "T_Timer"));
    SetPVarInt(playerid, "T_Timer", SetTimerEx("T_Rozladuj", 1000, 1, "dd", playerid));
}
return 1;
}












if(dialogid == T_DIALOG)
{
if(response)
{
    new ID,
    str[128];
    switch(listitem)
    {
        case 0: ID = GetPVarInt(playerid, "Zlecenie#1");
        case 1: ID = GetPVarInt(playerid, "Zlecenie#2");
        case 2: ID = GetPVarInt(playerid, "Zlecenie#3");
        case 3: ID = GetPVarInt(playerid, "Zlecenie#4");
        case 4: ID = GetPVarInt(playerid, "Zlecenie#5");
    }
    SetPVarInt(playerid, "T_Zlecenie", ID);
    Zlecenie[playerid] = ID;
    SetPlayerMapIcon(playerid, 99, Truck_Pos[ID][0], Truck_Pos[ID][1], Truck_Pos[ID][2], 51, 0, MAPICON_GLOBAL_CHECKPOINT);
    SendClientMessage(playerid, KOLOR, "{FFFFFF}[INFO]{0000FF}: {8080FF}Za?aduj towar w zaznaczonym miejscu ikon? ci??ar?wki na mapie.");
    TextDrawHideForPlayer(playerid, T_TD[playerid][1]);
    TextDrawShowForPlayer(playerid, T_TD[playerid][0]);
    TextDrawSetString(T_TD[playerid][0], str);
}
}
if(dialogid == T_DIALOG+1)
{

if(response)
{
    SetPVarInt(playerid, "T_Block", 0);

    if(!IsNumeric(inputtext))
    {
        ShowPlayerDialog(playerid, T_DIALOG+1, DIALOG_STYLE_INPUT, "Ladowanie", "Wpisz ile ton chcesz zapakowa?.\n{FFFFFF}[INFO]{0000FF}: {FF8000}[Max. 30t], {00FF00}[dopuszczalna waga towaru: 28t]:", "OK", "Anuluj");
        return 1;
    }
    if(1 > strval(inputtext) || strval(inputtext) > 30 || !strlen(inputtext))
    {
        SendClientMessage(playerid, KOLOR, "Nie mo?esz za?adowa? wi?cej ni? 30 ton");
        return 1;
    }
    SendClientMessage(playerid, COLOR_RED, "{FFFFFF}[INFO]{0000FF}: {FFFFFF}?adowanie towaru prosz? czeka?...");
    SetPVarInt(playerid, "T_Block", 0);
    SetPVarInt(playerid, "T_Ton", strval(inputtext));
    SetPVarInt(playerid, "T_Timer", SetTimerEx("T_Laduj", 1000, 1, "dd", playerid, GetPlayerVehicleID(playerid)));
    return 1;
}
return 1;
}






Za pomoc daj? piwka :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-09-17, 14:39


IgrexolonO







Wiek: 35
Na forum: 6950 dni
Posty: 1386

Piwa: 1062

Respekt: 651,8
Respekt: 651,8Respekt: 651,8

"rajjdd" napisał/a:

1. Doda?em warunek, dzi?ki kt?remu nie mo?na za?adowa? towaru pojazdem bez naczepy. Niby dzia?a, tylko gdy wjad? w checkpoint to wyskakuje to ca?y czas na czacie do p?ki nie wyjad? :D A chcia?bym, ?eby wyskoczy?o info tylko 1 raz :P


http://wiki.sa-mp.com/wiki/OnPlayerEnterCheckpoint

"ZAMIAST ONPLAYERUPDATE" - d?izyz.

"rajjdd" napisał/a:

2. Przy za?adunku, gdy wpisz? ilo?? ton, w??cza si? timer, jest wszystko ok, tylko jak odliczanie si? sko?czy to okienko wyskakuje jeszcze raz :x Przegl?da?em kilka razy ten kod, ale nie widz? ?adnego b??du :/


SetPVarInt(playerid, "T_Timer", SetTimerEx("T_Rozladuj", 1000, 1, "dd", playerid));
__
| |
| |
| |
\|/

SetPVarInt(playerid, "T_Timer", SetTimerEx("T_Rozladuj", 1000, 0, "dd", playerid));

A po drugie sam Timer w sobie masz ?le wykonany. T_Rozladuj przyjmuje dwie warto?ci. Ty podajesz tylko jedn?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-09-17, 16:24


rajjdd







Wiek: 39
Na forum: 4877 dni
Posty: 2



Respekt: 50

Dzi?ki wielkie :) Co do tego drugiego to akurat nie to by?o powodem, ale dzi?ki temu wpad?em na pomys? jak to naprawi? ;D


Leci piwko za pomoc :)

Postaw piwo autorowi tego posta
 

 
Tagi: system :: zleceń
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