Szerző Téma: SAMP  (Megtekintve 927 alkalommal)

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
SAMP
« Dátum: 2016. szeptember 25. - 00:51:08 »
0 Show voters
Minta:
 

Régió: SZÁM
Beküldő neve: FÓRUMNÉV
Beküldött script: PASTEBIN LINK
Értékelés: 10/?
Megjegyzés: Indokold meg hogy mennyi pontot adtál

 
Lényeg: Ha megkaptad a scriptet, postolj ebbe a topikba. Lehetőleg egy hozzászólásban legyen a régióban levők értékelése. Értékelni elég akkor, ha megkaptad mindkettőt.
Kérdés van itt tedd fel.

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
SAMP
« Válasz #1 Dátum: 2016. szeptember 26. - 20:50:36 »
0 Show voters
Régió: VII
Beküldő neve: 1ST_Chr
Beküldött script: http://pastebin.com/jMAzyMVz
Értékelés: 8/10
Megjegyzés: Jó és szakszerű megvalósítás, könnyen módostható és beilleszthető akármilyen környezetbe. Kicsit sajnáltam, hogy nem került elő semmiféle adatábrázolási mód komplexebb adatok kezelésére (pl. JSON, beágyazott adatokhoz), de egyébként minden rendben van vele.




Régió: VII
Beküldő neve: Brian Harris
Beküldött script: Itt a kód: http://pastebin.com/cGA2q1Vm
Ha kellenek a PHP fájlok szóljatok és elküldöm, az sql struktúrájával együtt!


A müködése a php fájl meghív egy mysqli_query()-t az beírja az adatbázisba, majd ha lelép kitörli az online tagok közül! (Ha folyamatosan fent van akkor csak updatel!)
 
Értékelés: 5/10
Megjegyzés: Egyszerű megvalósítás, elméletileg jó, de a tervezésből adódóan nehezen módosítható és nem látszódik rajta a befektett munka.
« Utoljára szerkesztve: 2016. október 06. - 19:11:22 írta Reynolds »

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
SAMP
« Válasz #2 Dátum: 2016. október 01. - 23:25:22 »
0 Show voters

Hello!
http://pastebin.com/PpHXsnMX
Szükséges hozzá a teljes MapAndreas és SSCANF plugin.
Florian
 
[/quote]
Régió: I
Beküldő neve: Fl0rian
Beküldött script: http://pastebin.com/PpHXsnMX || leírás hozzá: http://pastebin.com/xj6TvsYw
Értékelés: 9/10
Megjegyzés: Jó megvalósítás, könnyen managelhető és működtethető, működik körpályán és egyenes pályás vonalakon is. Voltak ebben is jó megvalósítási módok, mint Pedroéban. Egy nagy problémám a scripttel az, hogy a jelző mellett történő elhaladást IsPlayerInRangeOfPoint-tal kezeli, ami nem működik túl jól nem várt körülmények esetében, például ha a játékost elteleportálják, ilyenkor beakadhat a jelző egy adott állapotban, ami nem szerencsés. Összességében a te megvalósításodat választottam nyertesnek, mert átfogóbb, mint Pedróé, és támogatja a nem körpályára illeszkedő vasúti vonalakat is (ami egy kikötés volt), de ezek miatt a gyakorlati problémák csak kilenc pontot tudok adni.





 
Szia(sztok).
Végül lett időm, így nem várok hétfőig, köszönöm a rugalmasságotokat, hogy adtatok plusz időt.
Próbáltam minél dinamikusabbá tenni a rendszert, hogy bármelyik vonatos munkához jó legyen, remélem sikerült.
Íme a szkript.
http://pastebin.com/dTfR0P1N
Spoiler for Amennyiben a Pastebin megszűnne létezni, itt a kód:

/*
SAMPFORUM » Szkript Liga vol. 3 » Régió I
Nem 100% precízen mentettem le a pozíciókat (Időtakarékosság miatt), és emiatt a 3D TextLabelek a szelvény-határtól picit árébb találhatóak, emiatt nincs a helyén, így zavaró lehet, hogy \"Állj!\"-t ír, miközben még el sem haladtunk ott.
Emellett a szelvények területei is néhol 1-2 koordinátányi hézagot magukba foglalnak, de a scriptben ez nem okoz gondot, azon az 1-2 másodpercen kívül, míg áthalad a vonat ott.
A ciklusokat lemértem, maximum 1ms-es időt vesznek igénybe.
Csak csatlakozz fel, és felül van 1 TD ami írja az infókat, azon kívül, hogy a labelek is írják, hogy a következendő szelvény folyamán mit kell tennünk.
Próbáltam a legjobb tudásom szerint megírni, köszönöm a lehetőséget. :)
/mycommand paranccsal az egyik vonathoz teleportálhatsz.
2016. 10. 01. 13:30 - Pedró
Jóslat: 3.5M Nem szavazat lesz, illetve 500K érvénytelen, illetve 300K Igen szavazat.
*/
#define FILTERSCRIPT
#include <a_samp>
#include <streamer>
#if !defined IsValidVehicle
native IsValidVehicle(vehicleid);
#endif
forward Labelek();
forward Allapotjelzo(playerid);
enum e_Szakaszok { Float:szakasz_minx, Float:szakasz_miny, Float:szakasz_maxx, Float:szakasz_maxy, szakasz_areaid, Float:szakasz_hatarx, Float:szakasz_hatary, Float:szakasz_hatarz, Text3D:szakasz_labelid }
enum e_Vonatok { vonat_modelid, Float:vonat_posx, Float:vonat_posy, Float:vonat_posz, Float:vonat_posa, vonat_vehicleid }
new Szakaszok[][e_Szakaszok] = {
//  [ Szelvények területei ]        [ Area ID ]     [ Szelvények közötti határpontok ]
{ 1205.5, 2614.0, 2115.5, 2734.0,       -2,    1266.872558, 2632.250000, 12.1256190 },
{ 2115.5, 2325.0, 2609.5, 2720.0,       -2,    2121.173828, 2694.125000, 12.2504081 },
{ 2396.5, 1937.0, 2889.5, 2325.0,       -2,    2553.451904, 2311.148925, 4.6881192 },
{ 2753.5, 1510.0, 2906.5, 1937.0,       -2,    2781.000000, 1921.303588, 6.2574723 },
{ 2753.5, 913.0, 2885.5, 1510.0,       -2,    2864.750000, 1461.005126, 12.125619 },
{ 2735.5, 197.0, 2871.5, 913.0,       -2,    2764.750000, 907.654541, 12.2506195 },
{ 2727.5, -381.0, 2886.5, 197.0,       -2,    2797.405273, 194.247161, 14.4350466 },
{ 2510.5, -396.0, 2727.5, -245.0,       -2,    2721.997070, -283.049560, 18.0324787 },
{ 1942.5, -420.0, 2510.5, -245.0,       -2,    2509.364257, -279.637695, 18.2335038 },
{ 1942.5, -668.0, 2207.5, -420.0,       -2,    2002.869262, -434.857452, 70.9677209 },
{ 2093.5, -1123.0, 2405.5, -668.0,       -2,    2165.864257, -680.980468, 51.60496510 },
{ 2219.5, -1558.0, 2359.5, -1123.0,    -2,    2284.875000, -1165.943847, 27.78687011 },
{ 2169.5, -1964.0, 2256.5, -1558.0,    -2,    2242.609619, -1563.812988, 20.30160712 },
{ 1686.5, -1973.0, 2169.5, -1887.0,    -2,    2142.475585, -1953.750000, 15.12561913 },
{ 852.5, -1973.0, 1686.5, -878.0,       -2,    1630.518798, -1953.666992, 14.87561914 },
{ 109.5, -1758.0, 852.5, -662.0,       -2,    813.211547,   -1365.021484, -0.21868815 },
{ -623.5, -1270.0, 108.5, -1000.0,       -2,    50.017269, -1018.053161, 22.68371316 },
{ -975.5, -1541.0, -623.5, -1000.0,    -2,    -667.610473, -1123.282470, 50.38497117 },
{ -1319.5, -1574.0, -975.5, -1444.0,   -2,    -1009.199462, -1501.271484, 80.62905818 },
{ -2111.5, -1574.0, -1319.5, -1129.0,   -2,    -1329.708740, -1510.195434, 25.00061919 },
{ -2092.5, -1129.0, -1903.5, -589.0,    -2,    -1951.229614, -1116.607421, 17.92725520 },
{ -2075.5, -589.0, -1883.5, 221.0,      -2,    -1979.939819, -528.688476, 27.00061921 },
{ -2006.5, 221.0, -1633.5, 545.0,       -2,    -1919.774536, 275.882202, 20.58722622 },
{ -1633.5, 459.0, -747.5, 983.0,       -2,    -1615.132080, 501.720336, 27.79645323 },
{ -990.5, 983.0, -310.5, 1290.0,       -2,    -921.840942, 1005.392211, 35.87561724 },
{ -310.5, 1182.0, 782.5, 1322.0,       -2,    -286.222595, 1259.097412, 30.45894425 },
{ 571.5, 1322.0, 833.5, 2278.0,       -2,    681.535583, 1336.197143, 13.12561926 },
{ 675.5, 2278.0, 835.5, 2600.0,       -2,    726.049499, 2337.985351, 20.50285727 },
{ 669.5, 2600.0, 1205.5, 2797.0,       -2,    817.386718, 2640.970947, 22.12561928 }
};
new Vonatok[][e_Vonatok] = {
{538, 1462.0745,  2630.8787,  10.8203, 200.0},    //LV
{538, -1942.7950, 168.4164,   27.0006, 200.0},   //SF
{538, 1700.7551,  -1953.6531, 14.8756, 200.0}    //LS
};
new PlayerText:td2;
new Timer1[MAX_PLAYERS] = {-1, ...};
new LabelekTimer;
public OnFilterScriptInit() {
for(new x; x < MAX_PLAYERS; x++) {
td2 = CreatePlayerTextDraw(x, 0, 0, \"HALADJON\");
}
if(!GetSVarInt(\"Vonatok\")) {
for(new x; x < sizeof(Vonatok); x++) {
   switch(Vonatok
  • [vonat_modelid]) {

      case 537, 538, 449: Vonatok
  • [vonat_vehicleid] = AddStaticVehicle(Vonatok
  • [vonat_modelid], Vonatok
  • [vonat_posx], Vonatok
  • [vonat_posy], Vonatok
  • [vonat_posz], Vonatok
  • [vonat_posa], -1, -1);

      default: printf(\"Hiba, érvénytelen ModelID lett megadva a Vonatok tömbben. (%i. sor)\", x+1);
   }
}
SetSVarInt(\"Vonatok\", 1);
}
if(!GetSVarInt(\"Szakaszok\")) {
    for(new x; x < sizeof(Szakaszok); x++) {
        Szakaszok
  • [szakasz_areaid] = CreateDynamicRectangle(Szakaszok
  • [szakasz_minx], Szakaszok
  • [szakasz_miny], Szakaszok
  • [szakasz_maxx], Szakaszok
  • [szakasz_maxy], 0, 0, -1);

    }
    SetSVarInt(\"Szakaszok\", 1);
}
if(!GetSVarInt(\"Labelek\")) {
    for(new x; x < sizeof(Szakaszok); x++) {
        Szakaszok
  • [szakasz_labelid] = CreateDynamic3DTextLabel(\"VASÚTI BERENDEZÉS:\\n{FF0000}!\", 0x00FF00FF, Szakaszok
  • [szakasz_hatarx], Szakaszok
  • [szakasz_hatary], Szakaszok
  • [szakasz_hatarz], 100.0);

    }
    LabelekTimer = SetTimer(\"Labelek\", 2000, true);
    SetSVarInt(\"Labelek\", 1);
}
return 1;
}
public OnFilterScriptExit() {
if(GetSVarInt(\"Vonatok\")) {
for(new x; x < sizeof(Vonatok); x++) DestroyVehicle(Vonatok
  • [vonat_vehicleid]);

}
for(new x; x < MAX_PLAYERS; x++) {
PlayerTextDrawDestroy(x, td2);
if(Timer1
  • != -1) {

    KillTimer(Timer1
  • );

   Timer1
  • = -1;

}
}
if(GetSVarInt(\"Szakaszok\")) {
    for(new x; x < sizeof(Szakaszok); x++) {
   DestroyDynamicArea(Szakaszok
  • [szakasz_areaid]);

   Szakaszok
  • [szakasz_areaid] = -2;

    }
}
if(GetSVarInt(\"Labelek\")) {
    for(new x; x < sizeof(Szakaszok); x++) {
   DestroyDynamic3DTextLabel(Szakaszok
  • [szakasz_labelid]);

    }
KillTimer(LabelekTimer);
LabelekTimer = -1;
}
    DeleteSVar(\"Szakaszok\");
    DeleteSVar(\"Labelek\");
    DeleteSVar(\"Vonatok\");
return 1;
}
 
public OnPlayerConnect(playerid) {
td2 = CreatePlayerTextDraw(playerid, 0, 0, \"HALADJON\");
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
PlayerTextDrawDestroy(playerid, td2);
if(Timer1[playerid] != -1) {
    KillTimer(Timer1[playerid]);
Timer1[playerid] = -1;
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[]) {
if (strcmp(\"/mycommand\", cmdtext, true, 10) == 0) {
SetPlayerPos(playerid, 1462.0745,2630.8787,13.8203);
return 1;
}
return 0;
}
public OnPlayerStateChange(playerid, newstate, oldstate) {
if(newstate == PLAYER_STATE_DRIVER && oldstate != PLAYER_STATE_DRIVER) {
for(new x; x < sizeof(Vonatok); x++) {
   if(GetPlayerVehicleID(playerid) == Vonatok
  • [vonat_vehicleid]) {

      Timer1[playerid] = SetTimerEx(\"Allapotjelzo\", 1000, true, \"i\", playerid);
   }
}
}
if(newstate != PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_DRIVER) {
if(Timer1[playerid] != -1) {
    KillTimer(Timer1[playerid]);
   Timer1[playerid] = -1;
   PlayerTextDrawHide(playerid, td2);
}
}
return 1;
}
public Labelek() {
new allapot, allapot2;
    for(new x; x < sizeof(Szakaszok); x++) {
        allapot = SzakaszAllapot(x);
        allapot2 = SzakaszAllapot(KovetkezoSzakasz(x));
if(allapot) UpdateDynamic3DTextLabelText(Szakaszok
  • [szakasz_labelid], 0x00FF00FF, \"VASÚTI BERENDEZÉS:\\n{FF0000}ÁLLJ!\");

        else if(allapot2) UpdateDynamic3DTextLabelText(Szakaszok
  • [szakasz_labelid], 0x00FF00FF, \"VASÚTI BERENDEZÉS:\\n{FFBB00}LASSÍTSON!\");

        else if(allapot == 0) UpdateDynamic3DTextLabelText(Szakaszok
  • [szakasz_labelid], 0x00FF00FF, \"VASÚTI BERENDEZÉS:\\n{00FF00}HALADJON!\");

}
return 1;
}
public Allapotjelzo(playerid) {
new szakaszid, string[120];
szakaszid = JelenlegiSzakasz(playerid);
new allapot1 = SzakaszAllapot(szakaszid);
new allapot2 = SzakaszAllapot(KovetkezoSzakasz(szakaszid));
if(allapot1 > 1) {
format(string, 120, \"~d~ SZELVENY: %i  ~r~ALLJ! ~w~ ALLAPOT: %i KOVETKEZO ALLAPOT: %i\", szakaszid, allapot1, allapot2);
PlayerTextDrawSetString(playerid, td2, string);
}
else if(allapot2) {
format(string, 120, \"~>~ SZELVENY: %i  ~p~LASSITSON! ~w~ ALLAPOT: %i KOVETKEZO ALLAPOT: %i\", szakaszid, allapot1, allapot2);
PlayerTextDrawSetString(playerid, td2, string);
}else{
format(string, 120, \"~u~ SZELVENY: %i ~g~HALADJON! ~w~ ALLAPOT: %i KOVETKEZO ALLAPOT: %i\", szakaszid, allapot1, allapot2);
PlayerTextDrawSetString(playerid, td2, string);
}
PlayerTextDrawShow(playerid, td2);
return 1;
}
stock SzakaszAllapot(szakaszid) {
if(szakaszid < 0 || szakaszid >= sizeof(Szakaszok)) return -1;
new Float: vpos[3], jarmuvek, vehicleid;
for(new x; x < sizeof(Vonatok); x++) {
vehicleid = Vonatok
  • [vonat_vehicleid];

    if(!IsValidVehicle(vehicleid)) continue;
GetVehiclePos(vehicleid, vpos[0], vpos[1], vpos[2]);
if(IsPointInDynamicArea(Szakaszok[szakaszid][szakasz_areaid], vpos[0], vpos[1], vpos[2]))
    jarmuvek++;
}
if(jarmuvek) return jarmuvek;
return 0;
}
stock JelenlegiSzakasz(playerid) {
if(!IsPlayerInAnyVehicle(playerid) || !IsPlayerInAnyDynamicArea(playerid, 1)) return -1;
new Float: vpos[3], vehicleid;
vehicleid = GetPlayerVehicleID(playerid);
    GetVehiclePos(vehicleid, vpos[0], vpos[1], vpos[2]);
    for(new x; x < sizeof(Szakaszok); x++)
        if(IsPlayerInDynamicArea(playerid, Szakaszok
  • [szakasz_areaid], 1)) return x;

return -2;
}
stock KovetkezoSzakasz(szakaszid) {
new kovetkezo = szakaszid+1;
if(kovetkezo == sizeof(Szakaszok)) kovetkezo = 0;
return kovetkezo;
}

 
 
[/quote]
Régió: I
Beküldő neve: Pedro
Beküldött script: http://pastebin.com/dTfR0P1N
Értékelés: 8/10
Megjegyzés: Tetszik a rövid és lényegretörő megvalósítás, viszont nem működik a rendszer jól, ha a pálya nem ér körbe (pl. egy LS-SF pályánál Flint County-n keresztül). Nagyon ötletes, ahogy megoldottad a szakaszállapot-jelzőt (a streamer-plugint használva), de összességében mint egy kész rendszer, Fl0rian megvalósítása jobb volt.
« Utoljára szerkesztve: 2016. október 09. - 11:17:08 írta Reynolds »

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
SAMP
« Válasz #3 Dátum: 2016. október 01. - 23:29:22 »
0 Show voters
Régió IV: divkn ha bármit küld nyert, a másik nem küldött semmit.

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
SAMP
« Válasz #4 Dátum: 2016. október 01. - 23:30:06 »
0 Show voters

Tessék itt van, remélem rendben lesz.
http://pastebin.com/yvdKxpgd
Üdvözlettel. Hiroshi
 
[/quote]
Régió: II
Beküldő neve: Kyosuke_Hiroshi
Beküldött script: http://pastebin.com/yvdKxpgd
Értékelés: 10/?
Megjegyzés: Indokold meg hogy mennyi pontot adtál



Mark nem fog küldeni, HIROSHI NYERT.
« Utoljára szerkesztve: 2016. október 02. - 09:46:48 írta anGeL »

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
SAMP
« Válasz #5 Dátum: 2016. október 01. - 23:31:39 »
0 Show voters

hello,
elso fordulo: http://pastebin.com/yBiKLx7z
sorry ha kicsit paraszt megoldas de plugint nem lehetett irni
minden jot!
 
[/quote]
Régió: V
Beküldő neve: Basshunter
Beküldött script: http://pastebin.com/yBiKLx7z
Értékelés: 10/10
Megjegyzés: Egy Dijkstra/A* implementációt vártam igazából, szóval tökéletes megoldás.
« Utoljára szerkesztve: 2016. október 08. - 10:06:40 írta Reynolds »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal