Wysłany: 2013-09-17, 13:19
rajjdd
Wiek: 39 Na forum: 4736 dni Posty: 2
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? A chcia?bym, ?eby wyskoczy?o info tylko 1 raz
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 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
Wysłany: 2013-09-17, 14:39
IgrexolonO
Wiek: 34 Na forum: 6809 dni Posty: 1386
Piwa : 1062
"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? A chcia?bym, ?eby wyskoczy?o info tylko 1 raz
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 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?.
Wysłany: 2013-09-17, 16:24
rajjdd
Wiek: 39 Na forum: 4736 dni Posty: 2
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
Tagi: system :: zleceń
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: