Problem(error/warning): Znaci napravio sam sistem pljackanja koji bi kada se ukuca /pljacka provjerio u kojem enterijeru je igrac. Provjerio bi listu enterijera preko petlje te bi se zapocela pljacka kada bi pronasao prvi ID. To je radilo savrseno, no jedan problem je bio to sto bi mogao robati neke enterijere koje ne bi smio (npr. CJ-eva kuca, policijska stanica, itd.). Zato sam odlucio napraviti jos jednu listu, a to su koordinate od svakog enterijera koji se moze robati. Napravio sam da kada se kuca /pljacka provjeri da li je igrac blizu tih koordinata, i ako je zapocne se pljacka. No, iz nekog razloga, server mi samo vrati "SERVER: Unknown command", a kada npr. probam robati kada nisam u enterijeru ili sam policajac itd komanda normalno vrati porukud da ne mogu robati. Postavio sam jedan thread na SAMP forumima, no tamo nitko nije dosao do rjesenja pa se nadam da ce mi tu netko pomoci (posto je skripta ipak na balkanskom pa ce vam biti lakse razumjeti :) )Deo skripte: [pawn]
new EnterijerPljacka[]={17, 10, 18, 16, 4, 6, 1, 7, 3, 15, 14, 5, 11, 9, 2};
new Float:EnterijerLokacije[][] =
{
{-25.884498,-185.868988,1003.546875},
{6.091179,-29.271898,1003.549438},
{-30.946699,-89.609596,1003.546875},
{-25.132598,-139.066986,1003.546875},
{-27.312299,-29.277599,1003.557250},
{-26.691598,-55.714897,1003.546875},
{286.148986,-40.644397,1001.515625},
{286.800994,-82.547599,1001.515625},
{296.919982,-108.071998,1001.515625},
{314.820983,-141.431991,999.601562},
{316.524993,-167.706985,999.593750},
{833.269775,10.588416,1004.179687},
{-103.559165,-24.225606,1000.718750},
{-2240.468505,137.060440,1035.414062},
{207.737991,-109.019996,1005.132812},
{204.332992,-166.694992,1000.523437},
{207.054992,-138.804992,1003.507812},
{203.777999,-48.492397,1001.804687},
{226.293991,-7.431529,1002.210937},
{161.391006,-93.159156,1001.804687},
{493.390991,-22.722799,1000.679687},
{501.980987,-69.150199,998.757812},
{-227.027999,1401.229980,27.765625},
{457.304748,-88.428497,999.554687},
{454.973937,-110.104995,1000.077209},
{435.271331,-80.958938,999.554687},
{681.557861,-455.680053,-25.609874},
{375.962463,-65.816848,1001.507812},
{369.579528,-4.487294,1001.858886},
{373.825653,-117.270904,1001.499511},
{381.169189,-188.803024,1000.632812},
{1212.019897,-28.663099,1000.953125},
{761.412963,1440.191650,1102.703125},
{1204.809936,-11.586799,1000.921875},
{-2640.762939,1406.682006,906.460937}
};
CMD:pljacka(playerid, params[])
{
new vijesti[128];
new ime[MAX_PLAYER_NAME];
GetPlayerName(playerid, ime, sizeof(ime));
print("Komanda je upisana...");
if(PlayerInfo[playerid][pTeam] == 1) return SCM(playerid, -1, "{ff0000}PLJACKA:{FFFFFF} Vi ste policajac! Ne mozete pljackati ducane!");
print("Provjereno: Da li je policajac?");
if(GetPlayerInterior(playerid) == 0) return SCM(playerid, -1, "{ff0000}PLJACKA: {FFFFFF}Morate biti u ducanu koji se moze pljackati!");
print("Provjereno: Da li je interior 0?");
if(CanRob[playerid] == 0) return SCM(playerid, -1, "{ff0000}PLJACKA:{FFFFFF} Morate pricekati prije nego sto biste opet pljackali!");
print("Provjereno: Moze li igrac pljackati?");
for(new i = 0; i < sizeof(EnterijerLokacije); i++)
{
print("Petlja se pokrece...");
if(IsPlayerInRangeOfPoint(playerid, 50.0, EnterijerLokacije
- , EnterijerLokacije[1], EnterijerLokacije[2]))
{
print("Zapocinje se pljacka nigeri!!!!! NAPOKON!");
if(GetPlayerWeapon(playerid) == 0) return SCM(playerid, -1, "{ff0000}PLJACKA:{FFFFFF} Morate imati oruzije u ruci za pljacku!");
SetTimerEx("PljackaVrijeme", 120000, false, "i", playerid);
PlayAudioStreamForPlayer(playerid, "https://www.iradeo.com/stream/157252.pls");
VrijemePljacke = 30;
CanRob[playerid] = 0;
UsredPljacke[playerid] = 1;
TimerPljacka = SetTimer("Pljackanje", 1000, true);
PlayerInfo[playerid][pWanted] += 4;
SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
SCM(playerid, -1, "{ff0000}PLJACKA:{ffffff} Zapoceli ste pljacku! Pricekajte 30 sekundi...");
SCM(playerid, -1, "{ff0000}PLJACKA:{ffffff} Kamere su vas uhvatile, te je pljacka bila prijavljena policiji!");
SCM(playerid, -1, "{ff0000}PLJACKA:{ffffff} Vas wanted level je sada veci za {FF0000}4!");
format(vijesti, sizeof(vijesti), "{00a9ff}VIJESTI: {00bbff}%s je poceo/la pljackati ducan/kucu. Pljacka je prijavljena policiji!", ime);
SetPlayerShopName(playerid,"");
SendClientMessageToAll(-1, vijesti);
break;
}
else return SCM(playerid, -1, "{FF0000}PLJACKA: {FFFFFF}Ovaj biznis ne mozete pljackati!");
}
return 1;
}
[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]Ne crasha mi sever.[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): Sumnjam da je potrebno. Udjem u enterijer i kada kucam /pljacka pise mi "SERVER: Unknown command" . Takodjer, u konzoli mi zadnje vrati "Petlja se pokrece..." kao sto se vidi u 'print' funkciji.
Ne možeš da koristiš else return kod petlji ako barem hoćeš da se izvrše ..
Nema potrebe za toliki range oko provere igraÄeve pozicije.
Upravo sam testirao kod i radi savršeno kod mene .
[pawn]
IsPlayerNearRobLocation(playerid)
{
for(new p = 0; p < sizeof(EnterijerLokacije); p++)
{
if(IsPlayerInRangeOfPoint(playerid, 30.0, EnterijerLokacije[p][0], EnterijerLokacije[p][1], EnterijerLokacije[p][2])) return 1;
}
return 0;
}
if(!IsPlayerNearRobLocation(playerid))
return SendClientMessage(playerid, -1, "Ovaj biznis se ne mozes opljackati ili niste na odgovarajucoj lokaciji !");
[/pawn]