GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: ραυlч - 2012. Október 22. - 16:04:22

Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 16:04:22
Üdv!

Írtam egy Dm rendszert amiben nincs hiba.


De viszont a /tele paranccsal ütközik.


Tehát ha bent vagy Dm-ben akkor, ha beírom /ls nem engedi használni, de ha /telébõl lépek az /ls re akkor elteleportál.


A Dmen belül semmi parancsot nem enged használni, de a Box-ban van azt mindent behoz (MSG, LIST).


Annyi kellene, h azokat se engedje használni.


Itt a Dm kódja:

 
   if (strcmp(\"/sawndm\", cmdtext, true) == 0)
{
dmid[playerid] = 0;
    SpawnPlayer(playerid);
SendClientMessage(playerid,COLOR_ULTRARED,\"Csatlakoztál a Sawn DM Zónához! [ Kilépés /exitdm ]\");
GetPlayerName(playerid, sendername, sizeof(sendername));
        format(string, sizeof(string), \"%s Belépett a Sawn DM zónába! [ Belépés: /sawndm ]\", sendername);
        SendClientMessageToAll( 0xDDDD2357, string);
return 1;
}

 
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 16:09:24
Gondolom a /ls nél van valami hasonló:
 

if(dmid[playerid] == 0)

 
A /tele-hez is rakd be ezt az ellenõrzést.
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 16:17:00
Nem jó. A lényeg, h a Dm-ben a Boxokat ne lehessen megnyitni.

Ezt a kettõ van a szerver módban:


DIALOG_STYLE_MSGBOX


DIALOG_STYLE_LIST


Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 16:49:36
Másold be a Dialog részt, mert így nehéz hogy nem tudom hogyan épül fel a dialogod.
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 17:01:13
Ezzel az a probléma, h nem csak egy dialog van :D
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 17:03:57
És?  ;D A /tele dialogjának a részét keresd ki és másold be.  :)
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 17:14:33
      if (strcmp(\"/tele\", cmdtext, true, 5) == 0)
{
ShowPlayerDialog(playerid,DIALOG_TELEPORT,DIALOG_STYLE_LIST,\"Teleportok\",\"Általános\\nStunt\\nDrift\\nDM\",\"Tovább\",\"Mégse\");
return 1;
}

 
OnDialogResponse:
 
      if(dialogid == DIALOG_TELEPORT && response)
    {
switch(listitem)
{
    case 0: ShowPlayerDialog(playerid,DIALOG_ALTALANOS,DIALOG_STYLE_LIST,\"Teleportok / Általános\",\"/centrum\\n/ls\\n/sf\\n/lv\\n/lsair\\n/sfair\\n/lvair\",\"Tele\",\"Mégse\");
   case 1: ShowPlayerDialog(playerid,DIALOG_STUNT,DIALOG_STYLE_LIST,\"Teleportok / Stunt\",\"/Stunt1\\n/---\\n/---\",\"Tele\",\"Mégse\");
   case 2: ShowPlayerDialog(playerid,DIALOG_DRIFT,DIALOG_STYLE_LIST,\"Teleportok / Drift\",\"/drift1\\n/---\\n/---\",\"Tele\",\"Mégse\");
            case 3: ShowPlayerDialog(playerid,DIALOG_DM,DIALOG_STYLE_LIST,\"Teleportok / DM\",\"/sawndm\\n/---\\n/---\",\"Tele\",\"Mégse\");
}
    }
   
      if(dialogid == DIALOG_ALTALANOS && response)
    {
switch(listitem)
{
    case 0:
    {
         SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál a központra\");
         SetPlayerPos(playerid,1480.8386,-1749.2299,15.4453);
         PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 1:
   {
         SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál Los Santosba\");
         SetPlayerPos(playerid,2782.1499,-2018.9701,13.5547);
         PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 2:
   {
         SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál San Fierroba\");
         SetPlayerPos(playerid,-1917.4771,287.2513,41.0469);
         PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 3:
   {
         SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál Las Venturasba\");
         SetPlayerPos(playerid,2085.9563,1337.6221,10.6204);
         PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 4:
   {
         SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál a Los Santosi Airportra\");
         SetPlayerPos(playerid,2111.9739,-2430.2219,13.1099);
         PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 5:
   {
         SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál a San Fierro(i) Airportra\");
         SetPlayerPos(playerid,-1234.6194,43.4471,14.1356);
         PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 6:
   {
         SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál a Las Venturas(i) Airportra\");
         SetPlayerPos(playerid,1412.2557,1748.7574,10.8203);
         PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
}
    }
    if(dialogid == DIALOG_STUNT && response)
    {
switch(listitem)
{
    case 0:
    {
   SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál Stunt1re\");
   SetPlayerPos(playerid,1558.3611,-1354.5264,329.4609);
   PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 1:
   {
      SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál \");
      SetPlayerPos(playerid,958.3783,1343.1572,15.3746); // átírni
      PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 2:
   {
      SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál \");
      SetPlayerPos(playerid,958.3783,1343.1572,15.3746); // átírni
      PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
}
    }
      if(dialogid == DIALOG_DRIFT && response)
    {
switch(listitem)
{
    case 0:
    {
      SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál \");
      SetPlayerPos(playerid,958.3783,1343.1572,15.3746); // átírni
      PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 1:
   {
      SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál \");
      SetPlayerPos(playerid,958.3783,1343.1572,15.3746); // átírni
      PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 2:
   {
      SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál \");
      SetPlayerPos(playerid,958.3783,1343.1572,15.3746); // átírni
      PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
}
    }
      if(dialogid == DIALOG_DM && response)
    {
switch(listitem)
{
    case 0:
    {
      dmid[playerid] = 0; // Azonosítószám megadása FONTOS
      SpawnPlayer(playerid); // Játékos lespawnolása
      SendClientMessage(playerid,COLOR_ULTRARED,\"Csatlakoztál a Sawn DM Zónához! [ Kilépés /exitdm ]\");
      GetPlayerName(playerid, sendername, sizeof(sendername));
      format(string, sizeof(string), \"%s Belépett a Sawn DM zónába! [ Belépés: /sawndm ]\", sendername);
      SendClientMessageToAll( 0xDDDD2357, string);
   }
   case 1:
   {
      SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál \");
      SetPlayerPos(playerid,958.3783,1343.1572,15.3746); // átírni
      PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
   case 2:
   {
      SendClientMessage(playerid,COLOR_YELLOW,\"Elteleportáltál \");
      SetPlayerPos(playerid,958.3783,1343.1572,15.3746); // átírni
      PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
   }
}
    }
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 17:26:53
Ebbe hol van MSGBOX?  ;D
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 17:32:13
Azért mondtam, h nem csak egy fajta dialog van.. :d
A dmen belül csak azokat a parancsokat lehet használni, amiben dialog van.
Most csak annyi kell, h azokat se lehessen. :D
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 17:36:52
Mivel azt szeretnéd hogy az MSGBOX-os dialogot ne lehessen DM be használni azt másold be, azt hittem hogy a tele dialogjában van MSGBOX.  ???
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 17:45:19
Én írom rosszul szerintem :D
Na, akkor még egyszer :D
A Dmen belûl csak azokat a parancsokat lehet használni, amiben ilyen dialogok vannak:
DIALOG_STYLE_LIST
DIALOG_STYLE_MSGBOX
Tehát ugye, ha beírom /tele vagy a többi parancsot amiben DIALOG_STYLE_LIST van akkor behozza.
Ugyan így van a /cmds nél is, ha beírom a többi parancsot amiben DIALOG_STYLE_MSGBOX van akkor behozza.
Annyi kell, h ne tudja behozni.
Többi parancs amiben nem szerepel ez a két dialog normálisan mûködik, Dmen belül nem lehet használni.
Igen sok olyan parancs van amiben szerepelnek a dialogok. :D
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 17:56:06
Elolvastam jó párszor de akkor se tiszta mit szeretnél..

Erre gondolsz?

 

if(strcmp(\"/tele\", cmdtext, true, 5) == 0)
{
if(dmid[playerid] == 1) // Ha nem vagy DM-ben akkor mûködik a /tele parancs
{
ShowPlayerDialog(playerid,DIALOG_TELEPORT,DIALOG_STYLE_LIST,\"Teleportok\",\"Általános\\nStunt\\nDrift\\nDM\",\"Tovább\",\"Mégse\");
} else { // Ha DM ben vagy akkor nem
SendClientMessage(playerid, -1, \"DM ben nem mûködik!\");
}
return 1;
}

 


Ha MSGBOX os parancsnál akarod ezt akkor ahhoz a parancshoz rakod be.  :)
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 18:03:51
Igen erre csak erroros :| :D
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 18:22:40
Mik azok?  ;D
Cím: Dm rendszer hiba
Írta: shadee - 2012. Október 22. - 18:50:53
zárás hiba a végéhez return 1 elé }
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 19:38:13
Na a shadee cuccal mûködik de bug van.
Akkor se engedi, ha Dmen kívûl vagyok :)
Cím: Dm rendszer hiba
Írta: shadee - 2012. Október 22. - 20:17:02
Idézetet írta: ραυlч. date=1350927493\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28892\" data-ipsquote-contentclass=\"forums_Topic
Na a shadee cuccal mûködik de bug van.
Akkor se engedi, ha Dmen kívûl vagyok :)
 
OnPlayerConnect alá:
 
dmid[playerid] = 0;
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 21:10:28
A probléma marad ugyan az, ha kívül vagyok akkor se engedi.
Ha meg beírom a Connecthez akkor, ha felcsatlakozok oda tesz a Dmbe :D
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 21:47:40
A változók a szerver indulásával hamisak. (0)

Csináld úgy, hogy ha belépsz a DM be akkor igaz-true(1) lesz a változó értéke, amikor kilépsz (pl /exitdm) akkor legyen hamis-false(0).


És cseréld meg a kódrészletnél az ellenörzendõ értéket.


(Tehát ha az érték igaz (=dm ben vagy) akkor üzenetet küld, ha else tehát hamis(=nem vagy dm ben) akkor ShowPlayerDialog...
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 22. - 23:17:37
Nem jó ugyan az a hiba..
Cím: Dm rendszer hiba
Írta: Johnies00 - 2012. Október 22. - 23:57:12
Valamit elírtál mert én is így használom mindenhol.
 

CMD:joindm(playerid)
{
    if(dm[playerid] == true)
    {
        SendClientMessage(playerid, -1, \"Már bent vagy a DM zónában\");
        } else {
        SendClientMessage(playerid, -1, \"Beléptél a DM Zónába\");
        dm[playerid] = true;
    }
    return 1;
}
CMD:exitdm(playerid)
{
    if(dm[playerid] == true)
    {
        SendClientMessage(playerid, -1, \"Kiléptél a DM zónából\");
        dm[playerid] = false;
        } else {
        SendClientMessage(playerid, -1, \"Nem vagy DM Zónában\");
    }
    return 1;
}

 
Egy példa csak hogy még jobban átlásd. (Ellenõrizd még egyszer a módod.)
Cím: Dm rendszer hiba
Írta: ραυlч - 2012. Október 23. - 12:28:09
Ezzel az a baj nem ilyen felépítésû a DM rendszerem :/
E: MEGOLDOTTAM másképpen :D Zártam köszi .:D