Szerző Téma: Dialogból random verseny kiválasztása és azt elindítani  (Megtekintve 1339 alkalommal)

Dialogból random verseny kiválasztása és azt elindítani
« Dátum: 2014. Február 13. - 19:13:32 »
0 Show voters
Sziasztok!!
Lenne nekem egy olyan kérdésem, hogy hogyan tudnám megcsinálni azt, hogy egy dialogból kiválasztani egy random versenyt és azt elindítani.Sok dologgal próbálkoztam már de egyik se sikerült.
Arra gondoltam, hogy ha beírja valaki, hogy /races akkor kihoz neki egy dialogot és benne szerepelnének versenyek pl: Las Venturas - The Big Ear , San Fierro - Los Santos, Los Santos - Las Venturas, de nem csak ez a 3 hanem mondjuk lenne 15 versenyem és azokat berakná a dialogba 3 lehetõségbe és ha rá kattol akkor a rá kattolt versenyt elindítaná neki.
Remélem értelmesen leírtam és nem bonyolult.Élõre is köszi a válaszokat. :)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Dialogból random verseny kiválasztása és azt elindítani
« Válasz #1 Dátum: 2014. Február 13. - 21:45:16 »
0 Show voters
Esetleg leírnád milyen verseny rendszert használsz? Mert így nem tudok segíteni..

Dialogból random verseny kiválasztása és azt elindítani
« Válasz #2 Dátum: 2014. Február 13. - 22:18:56 »
0 Show voters
Saját race rendszert használok.Nem a szokásosat, hogy több check point hanem 1 start pont és egy finnish pont.
Ami eddig megvan:
 
enum Racesi
{
    Starti[512],
    Endl[512],
    Float:startx,
    Float:starty,
    Float:startz,
    Float:endx,
    Float:endy,
    Float:endz
}
new Races[][Racesi] =
{
{\"Las Venturas\",\"San Fierro\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203}
....
};

 
(van bent több is csak pédaként tettem be)
és én ezt úgy akarnám, hogy a /races parancs alatt elõ jöjjön egy dialog és ebbe random szerûen jelenjenek meg a versenyek 3 lehetõségbe és ha rákattol egyre akkor azt a randomot elindítsa neki.
ezzel próbáltam, de akkor mindig mást indított el:
 

new rand = random(sizeof(Races));

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Dialogból random verseny kiválasztása és azt elindítani
« Válasz #3 Dátum: 2014. Február 14. - 08:05:10 »
0 Show voters
Starti[512],
Endl[512],

 
itt szerintem felesleges az 512 cella, 16 vagy 32 is elég lenne szerintem, attól függ milyen hosszú a név, de biztos nincs 512 :)
 
egy dialogból kiválasztani egy random versenyt és azt elindítani[/quote]
 
mondjuk lenne 15 versenyem és azokat berakná a dialogba 3 lehetõségbe és ha rá kattol akkor a rá kattolt versenyt elindítaná neki[/quote]
lenne mondjuk 5db LS-LV 6DB SF-LV ... és a dialogban rányom az LS-LV-re akkor az 5 LS-LV közül 1 verseny indulna ezt akarod?
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Dialogból random verseny kiválasztása és azt elindítani
« Válasz #4 Dátum: 2014. Február 14. - 14:49:47 »
0 Show voters
Idézetet írta: Kovacs_Richard date=1392361510\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46491\" data-ipsquote-contentclass=\"forums_Topic

Starti[512],
Endl[512],

 
itt szerintem felesleges az 512 cella, 16 vagy 32 is elég lenne szerintem, attól függ milyen hosszú a név, de biztos nincs 512 :)
 
egy dialogból kiválasztani egy random versenyt és azt elindítani

mondjuk lenne 15 versenyem és azokat berakná a dialogba 3 lehetõségbe és ha rá kattol akkor a rá kattolt versenyt elindítaná neki[/quote]
lenne mondjuk 5db LS-LV 6DB SF-LV ... és a dialogban rányom az LS-LV-re akkor az 5 LS-LV közül 1 verseny indulna ezt akarod?
 
[/quote]
Lehet, hogy elég annyi :D
úgy szeretném, hogy van pl 15 versenyem.
Las Venturas - San fierro
The Big Ear - San Fierro
Los Santos - Area 69
Snake Farm - Los Santos
Angel Pine - Las Venturas
San Fierro - Las Venturas
és akkor ezt egy dialogba 3 lehetõségben ha beírja a /races parancsot.Így valahogy
1. random dialogba
Las Venturas - San Fierro
Angel Pine - Las Venturas
San Fierro - Las Venturas
2. random dialogba
San Fierro Las Venturas
The Big Ear - San Fierro
Los Santos - Area 69
(Ezeket berakni 1 dialogba)
és így sorban randomokba 3 versenyt berakni és ha rákattol az egyikre akkor azt elindítani.Remélem érthetõ voltam. :)

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Dialogból random verseny kiválasztása és azt elindítani
« Válasz #5 Dátum: 2014. Február 14. - 19:36:43 »
0 Show voters
Megpróbálom. :)
 
#define FILTERSCRIPT
#include <a_samp>
#define DIALOG_RACES    1024
enum Racesi
{
    Starti[64],
    Endl[64],
    Float:startx,
    Float:starty,
    Float:startz,
    Float:endx,
    Float:endy,
    Float:endz
}
new Races[][Racesi] =
{
{\"Verseny1 Start\",\"Verseny1 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny2 Start\",\"Verseny2 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny3 Start\",\"Verseny3 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny4 Start\",\"Verseny4 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny5 Start\",\"Verseny5 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny6 Start\",\"Verseny6 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny7 Start\",\"Verseny7 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny8 Start\",\"Verseny8 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203}
};
public OnPlayerCommandText(playerid, cmdtext[]) {
if(!strcmp(cmdtext, \"/races\")) {
    new bool:voltmar[128] = {false, ...}, string[1024], rand;
for(new x; x < 3; x++) {
start_:
    rand = random(sizeof(Races));
   
    if(voltmar[rand] == true) goto start_;
   
    voltmar[rand] = true;
   
    format(string, sizeof(string), \"%s%s - %s\\n\", string, Races[rand][starti], Races[rand][Endl]);
}
ShowPlayerDialog(playerid, DIALOG_RACES, DIALOG_STYLE_LIST, \"Válassz a veresenyek közül!\", string, \"Tovább\", \"Mégse\");
    return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(dialogid == DIALOG_RACES && response) {
    new line[256], id = -1;
for(new x; x < sizeof(Races); x++) {
    format(line, sizeof(line), \"%s - %s\", Races
  • [starti], Races
  • [Endl]);

    if(!strcmp(line, inputtext)) {
        id = x;
        break;
    }
}
if(id == -1) print(\"Error\");
else {
    printf(\"%i azonosítójú verseny hamarosan indul..\", id);
}
}
return 1;
}

 
Így hibamentes. Szerintem jó lesz, próbáld ki elsõnek így.. :)

Dialogból random verseny kiválasztása és azt elindítani
« Válasz #6 Dátum: 2014. Február 15. - 13:48:23 »
0 Show voters
Idézetet írta: Pedró date=1392403003\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46491\" data-ipsquote-contentclass=\"forums_Topic
Megpróbálom. :)
 
#define FILTERSCRIPT
#include <a_samp>
#define DIALOG_RACES    1024
enum Racesi
{
    Starti[64],
    Endl[64],
    Float:startx,
    Float:starty,
    Float:startz,
    Float:endx,
    Float:endy,
    Float:endz
}
new Races[][Racesi] =
{
{\"Verseny1 Start\",\"Verseny1 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny2 Start\",\"Verseny2 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny3 Start\",\"Verseny3 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny4 Start\",\"Verseny4 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny5 Start\",\"Verseny5 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny6 Start\",\"Verseny6 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny7 Start\",\"Verseny7 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny8 Start\",\"Verseny8 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203}
};
public OnPlayerCommandText(playerid, cmdtext[]) {
if(!strcmp(cmdtext, \"/races\")) {
    new bool:voltmar[128] = {false, ...}, string[1024], rand;
for(new x; x < 3; x++) {
start_:
    rand = random(sizeof(Races));
   
    if(voltmar[rand] == true) goto start_;
   
    voltmar[rand] = true;
   
    format(string, sizeof(string), \"%s%s - %s\\n\", string, Races[rand][starti], Races[rand][Endl]);
}
ShowPlayerDialog(playerid, DIALOG_RACES, DIALOG_STYLE_LIST, \"Válassz a veresenyek közül!\", string, \"Tovább\", \"Mégse\");
    return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(dialogid == DIALOG_RACES && response) {
    new line[256], id = -1;
for(new x; x < sizeof(Races); x++) {
    format(line, sizeof(line), \"%s - %s\", Races
  • [starti], Races
  • [Endl]);

    if(!strcmp(line, inputtext)) {
        id = x;
        break;
    }
}
if(id == -1) print(\"Error\");
else {
    printf(\"%i azonosítójú verseny hamarosan indul..\", id);
}
}
return 1;
}

 
Így hibamentes. Szerintem jó lesz, próbáld ki elsõnek így.. :)
 
Ez jó, a szöveg meg a dialog jó, de az a baj, hogy más koordinátával indítja el és nem azzal ami a versenyhez van berakva.
Példa:
Rákattolok arra, hogy San Fierro - Las Venturas és a Los Santos - Angel Pine koordinátákkal indítja.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Dialogból random verseny kiválasztása és azt elindítani
« Válasz #7 Dátum: 2014. Február 15. - 18:00:25 »
0 Show voters
Hogy indítod el?

Dialogból random verseny kiválasztása és azt elindítani
« Válasz #8 Dátum: 2014. Február 15. - 21:01:58 »
0 Show voters
RaceIndit(playerid, startx, starty, startz, endx, endy, endz]);

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Dialogból random verseny kiválasztása és azt elindítani
« Válasz #9 Dátum: 2014. Február 16. - 19:16:39 »
0 Show voters
Akkor kódom esetében:
 
RaceIndit(playerid, Races[id][startx], Races[id][starty], Races[id][startz], Races[id][endx], Races[id][endy], Races[id][endz]);

 
(printf(\"%i azonosítójú verseny hamarosan indul..\", id); helyére)

Dialogból random verseny kiválasztása és azt elindítani
« Válasz #10 Dátum: 2014. Február 16. - 20:26:30 »
0 Show voters
Idézetet írta: Pedró date=1392574599\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46491\" data-ipsquote-contentclass=\"forums_Topic
Akkor kódom esetében:
 
RaceIndit(playerid, Races[id][startx], Races[id][starty], Races[id][startz], Races[id][endx], Races[id][endy], Races[id][endz]);

 
(printf(\"%i azonosítójú verseny hamarosan indul..\", id); helyére)
 
Most meg akár melyikre kattintok nem csinál semmit, csak a logba beírja, hogy Error.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Dialogból random verseny kiválasztása és azt elindítani
« Válasz #11 Dátum: 2014. Február 16. - 20:28:37 »
0 Show voters
if(!strcmp(line, inputtext)) - > if(!strcmp(inputtext, line))
??


Teszteltem, nálam tökéletesen mûködik a print-es rész.
« Utoljára szerkesztve: 2014. Február 16. - 20:34:36 írta Pedró »

Dialogból random verseny kiválasztása és azt elindítani
« Válasz #12 Dátum: 2014. Február 16. - 20:56:30 »
0 Show voters
Ugyan az a hiba, semmit se csinál csak a logba beírja, hogy Error.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Dialogból random verseny kiválasztása és azt elindítani
« Válasz #13 Dátum: 2014. Február 16. - 20:57:35 »
0 Show voters
Mutasd a komplett kódodat, egyszerûen kizárt, hogy ez hibás..

Dialogból random verseny kiválasztása és azt elindítani
« Válasz #14 Dátum: 2014. Február 16. - 21:13:59 »
0 Show voters
#define FILTERSCRIPT
#include <a_samp>
#define DIALOG_RACES    1024
enum Racesi
{
    Starti[64],
    Endl[64],
    Float:startx,
    Float:starty,
    Float:startz,
    Float:endx,
    Float:endy,
    Float:endz
}
new Races[][Racesi] =
{
{\"Verseny1 Start\",\"Verseny1 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny2 Start\",\"Verseny2 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny3 Start\",\"Verseny3 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny4 Start\",\"Verseny4 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny5 Start\",\"Verseny5 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny6 Start\",\"Verseny6 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny7 Start\",\"Verseny7 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203},
{\"Verseny8 Start\",\"Verseny8 Vége\", 4118.9805,-1304.5021,11.0081, 2524.2917,2819.3291,10.8203}
};
public OnPlayerCommandText(playerid, cmdtext[]) {
if(!strcmp(cmdtext, \"/races\")) {
    new bool:voltmar[128] = {false, ...}, string[1024], rand;
for(new x; x < 3; x++) {
start_:
    rand = random(sizeof(Races));
   
    if(voltmar[rand] == true) goto start_;
   
    voltmar[rand] = true;
   
    format(string, sizeof(string), \"%s%s - %s\\n\", string, Races[rand][starti], Races[rand][Endl]);
}
ShowPlayerDialog(playerid, DIALOG_RACES, DIALOG_STYLE_LIST, \"Válassz a veresenyek közül!\", string, \"Tovább\", \"Mégse\");
    return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(dialogid == DIALOG_RACES && response) {
    new line[256], id = -1;
for(new x; x < sizeof(Races); x++) {
    format(line, sizeof(line), \"%s - %s\", Races
  • [starti], Races
  • [Endl]);

    if(!strcmp(inputtext, line)) {
        id = x;
        break;
    }
}
if(id == -1) print(\"Error\");
else {
    RaceIndit(playerid, Races[id][startx], Races[id][starty], Races[id][startz], Races[id][endx], Races[id][endy], Races[id][endz]);
}
}
return 1;
}

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal