-
Sziasztok!
Azzal kapcsolatban szeretnék segítséget kérni, hogy miképpen lehet meg oldani azt, hogy random koordinátákhoz legyen hozzájuk tartozó client message vagy akár gametext?
Pl.: Fuvarozós melónál kapsz egy random chekcpointot, és a chat tájékoztat róla hogy; Vidd a szállítmányt Los Santosba!
Előre is köszönöm a válaszokat!
-
Egy tömbben el mented a koordinátákat. Mikor a játékos be írja a parancsot akkor a checkpointot random ki választja (koordináta), és a SetPlayerCheckpoint kell használnod. Ha nem érted ezt a véletlenszerű dolgot, akkor itt egy példa.
Most pedig akkor a szöveg.
new vszeru = random(sizeof(position));
switch(vszeru)
{
case 0: SendClientMessageToAll(playerid, -1,\"Szállítsd el xy helyre xy rakományt!\");
case 1: SendClientMessageToAll(playerid, -1,\"Szállítsd el xy helyre xy rakományt!\");
case 2: SendClientMessageToAll(playerid, -1,\"Szállítsd el xy helyre xy rakományt!\");
}
return 1;
}
Ha még valamit nem értesz jelezd!
-
Köszi, valahol mintha láttam volna hogy case-el kell, a randomos dolgot értem, a koordináták meg is vannak, mindössze ezzel az aprósággal szeretném bővíteni az egészet, hogy még az uticélt is kiírja, tudnál mutatni egy példát hogy, hogy néz ez ki koordinátákkal?
-
random(sizeof(position)); //A szerver lekéri a pozíciókat.
case 0: SendClientMessageToAll(playerid, -1,\"Szállítsd el \'Las Venturas - Repülőtér\' helyre xy rakományt!\"); //Az első pozíciónak a szövege, ha ezt választja véletlenül.
És valahogy így nézne ki a tömb.
new Float:position[][4] =
{
{0.0, 0.0, 0.0, 0.0},
{0.0, 0.0, 0.0, 0.0},
{0.0, 0.0, 0.0, 0.0}
};
-
Bocsi, még mindig nem értem! :D
new Float:RandomDelivery[][] =
{
{-1474.1970,2651.0898,55.8359},
{-813.6776,1560.3115,27.1172},
{-169.6747,1016.4630,19.7422}
};
if (strcmp(\"/munka\", cmdtext, true, 10) == 0)
{
new rand = random(sizeof(RandomDelivery));
SetPlayerCheckpoint(playerid, RandomDelivery[rand][0], RandomDelivery[rand][1],RandomDelivery[rand][2], 6);
}
Ebbe hogy tudnám bele operálni?
-
Ugyan úgy, csak hozzá teszed a switch-es részt.
random(sizeof(RandomDelivery)); //Csak akkor így lesz
-
Le tudnád írni egy scriptbe? Ha nem nagy kérés, természetesen! :)
Valahogy nem jön össze, sőt már ott tartok hogy be crashel a compiler. :D
-
Kíváncsi vagyok, hogy hogyan is próbálod meg oldani. Be tudod másolni a kódot?
-
Mostanra kicsit sűrűre sikeredett ezért csináltam a modról egy biztonsági másolatot, hogy ne kelljen annyit szenvednem ha valamit nagyon el rontok, és hát így is lett, ezért vissza másoltam és a szerencsétlenkedésemnek nincs nyoma, szóval nem, bocsi. :D Később megpróbálom újra.
-
PPC Truck módot kénytelen voltam elő venni, mert most már nekem is kell egy kis segítség.
enum TBrokenVehicleLocation
{
BrokenName[50], // Holds the name of the location where the vehicle is located
Float:BrokenX, // Holds the X coordinate where the vehicle spawns
Float:BrokenY, // Holds the Y coordinate where the vehicle spawns
Float:BrokenZ // Holds the Z coordinate where the vehicle spawns
}
new ABrokenVehicles[][TBrokenVehicleLocation] =
{
{\"Shady Creeks\", -2047.5, -1882.25, 52.4},
{\"Angel Pine\", -2072.5, -2407.75, 30.7},
{\"Shady Creeks\", -1595.25, -2625.0, 52.6},
{\"Back O Beyond\", -990.25, -2335.5, 66.8},
{\"Flint County\", 46.5, -2654.25, 40.5},
{\"Los Santos Inlet\", -313.5, -1959.75, 20.0},
{\"Leafy Hollow\", -833.0, -1737.25, 80.8},
{\"Flint Range\", -347.5, -1331.0, 17.1},
{\"Flint County\", 17.25, -987.75, 28.7},
{\"Fallen Tree\", -763.0, -621.25, 61.5},
{\"Foster Valley\", -1885.5, -435.5, 25.2},
{\"Missionary Hill\", -2451.25, -681.0, 133.6},
{\"Garcia\", -2371.5, 118.25, 35.3},
{\"Downtown\", -1781.5, 429.25, 16.6},
{\"Palisades\", -2905.0, 656.5, 6.3},
{\"Paradiso\", -2771.25, 1239.5, 22.6}
// {\"nnnnnnnnnn\", xxxxxxx, yyyyyyyy, zzzzzzz},
};
PPC Truck-ban így van meg oldva a tömb, tehát a hely és a koordináta is egy helyen van. Így már gondolom haladtunk egy kicsit. És ilyen módon rakja le a checkpointot.
x = ABrokenVehicles[APlayerData[playerid][JobLoc1]][brokenX];
y = ABrokenVehicles[APlayerData[playerid][JobLoc1]][brokenY];
z = ABrokenVehicles[APlayerData[playerid][JobLoc1]][brokenZ];
SetPlayerCheckpoint(playerid, x, y, z, 10.0);
A szöveges részen egy picit gondolkodom.
De majd kíváncsi leszek a megoldásodra, mert én gondolkodom a szöveg részen, mivel a checkpoint lerakás az percek alatt meg van.
-
Igen, ezt én is néztem, de számomra túl zavarosnak tűnt, biztos van rá valami egyszerűbb megoldás. :D
-
szerintem így egyszerűbb....
//parancs része, vagy ahova szeretnéd...
{
switch(random(3))
{
case 0:SendClientMessage(playerid, -1, \"Vidd a rakományt xy-ra!\"), SetPlayerCheckpoint(playerid, x, y, z, 10.0);
case 1:SendClientMessage(playerid, -1, \"Vidd a rakományt xy-ra!\"), SetPlayerCheckpoint(playerid, x, y, z, 10.0);
case 2:SendClientMessage(playerid, -1, \"Vidd a rakományt xy-ra!\"), SetPlayerCheckpoint(playerid, x, y, z, 10.0);
}
return 1;
}
-
Ez is jó megoldás.