Szerző Téma: tele menü help  (Megtekintve 835 alkalommal)

tele menü help
« Dátum: 2011. november 30. - 18:07:54 »
0 Show voters
Sziasztok! elkezdtem csinálni egy teleport menüt aminek mintáját innen vettem. De szerném ha lenne benne olyan is hogy: XY eltelézett sf re.
És olyan is hogy a játékost és a kocsit is máshova tegye tehát legyen benne ez is:
SetPlayerPos(playerid, X, Y, Z);
SetVehiclePos(VehicleID,X, Y, Z);
ITT VAN AMIT ELKEZDTEM:
 

#include <a_samp>
#define DIALOG_TELES 107444
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(\"/TELE\", cmdtext, true))
{
    ShowPlayerDialog(playerid, DIALOG_VEHICLES, DIALOG_STYLE_LIST, \"Teleportok\", \"SF\\nLV\\nDRIFT1\\nDRIFT2\\nDRIFT3\\nAIR-LV\\nAIR-SF\\nJIZZY\\nCHILLIAD\\nTENGERPART\\nSIVATAG\\nTUNINGOLO\\nKEZD\\nMCDONALD\\nGETTO\", \"Kiválaszt\", \"Mégse\");
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_TELES)
{
if(response == 1)
{
   switch(listitem)
   {
      case 0: SetPlayerPos(playerid, X, Y, Z); // SF
      case 1: SetPlayerPos(playerid, X, Y, Z); // LV
      case 2: SetPlayerPos(playerid, X, Y, Z); // DRIFT1
      case 3: SetPlayerPos(playerid, X, Y, Z); // DRIFT2
      case 4: SetPlayerPos(playerid, X, Y, Z); // DRIFT3
      case 5: SetPlayerPos(playerid, X, Y, Z); // AIR-LV
      case 6: SetPlayerPos(playerid, X, Y, Z); // AIR-SF
      case 7: SetPlayerPos(playerid, X, Y, Z); // JIZZY
      case 8: SetPlayerPos(playerid, X, Y, Z); // Chilliad
      case 9: SetPlayerPos(playerid, X, Y, Z); // TENGERPART
      case 10: SetPlayerPos(playerid, X, Y, Z); // SIVATAG
      case 11: SetPlayerPos(playerid, X, Y, Z); // TUNINGOLO
      case 12: SetPlayerPos(playerid, X, Y, Z); // KEZD
      case 13: SetPlayerPos(playerid, X, Y, Z); // MCDONALD
                                case 14: SetPlayerPos(playerid, X, Y, Z); // GETTO
   }
}
else
{
    SendClientMessage(playerid, 0xF97804FF, \"Kiléptél a teleport választó menübõl!\");
}
}
return 1;
}

 
REMÉLEM ÉRTHETÕ! ^-^
« Utoljára szerkesztve: 2011. november 30. - 18:25:30 írta Sheet »

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
tele menü help
« Válasz #1 Dátum: 2011. november 30. - 19:58:51 »
0 Show voters
Minden teleportálásnál ( SetPlayerPos ) lekéred a játékos nevét ( GetPlayerName ), azt megformázod, és kiírod mindenkinek.
Példa:
 

case 0:
{
     new name[MAX_PLAYER_NAME];
     GetPlayerName(playerid, name, sizeof(name));
     new string[64];
     format(string, sizeof(string), \"%s elteleportált xy-re.\", name);
     SetPlayerPos(playerid, x,y,z);
     SendClientMessageToAll(0x0ffff, string);
}

 
Az X, Y, Z a koordinákat jelzi.

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
tele menü help
« Válasz #2 Dátum: 2011. december 01. - 00:03:55 »
0 Show voters
Szerintem így egyszerûbb és átláthatóbb is  :D
Nemkell azt minden listitem-hez berakni, mert akkor moslék lesz a kódból és feleslegesen lesz hoszzú a kód.
[pawn]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_TELES)
{
   if(response == 1)
   {
      switch(listitem)
      {
         case 0: SetPlayerPos(playerid, X, Y, Z); // SF
         case 1: SetPlayerPos(playerid, X, Y, Z); // LV
         case 2: SetPlayerPos(playerid, X, Y, Z); // DRIFT1
         case 3: SetPlayerPos(playerid, X, Y, Z); // DRIFT2
         case 4: SetPlayerPos(playerid, X, Y, Z); // DRIFT3
         case 5: SetPlayerPos(playerid, X, Y, Z); // AIR-LV
         case 6: SetPlayerPos(playerid, X, Y, Z); // AIR-SF
         case 7: SetPlayerPos(playerid, X, Y, Z); // JIZZY
         case 8: SetPlayerPos(playerid, X, Y, Z); // Chilliad
         case 9: SetPlayerPos(playerid, X, Y, Z); // TENGERPART
         case 10: SetPlayerPos(playerid, X, Y, Z); // SIVATAG
         case 11: SetPlayerPos(playerid, X, Y, Z); // TUNINGOLO
         case 12: SetPlayerPos(playerid, X, Y, Z); // KEZD
         case 13: SetPlayerPos(playerid, X, Y, Z); // MCDONALD
         case 14: SetPlayerPos(playerid, X, Y, Z); // GETTO
      }
      new
         name[MAX_PLAYER_NAME],
         string[64];
      GetPlayerName(playerid, name, sizeof(name));
      format(string, sizeof(string), \"%s elteleportált %s nevû helyre.\", name, inputtext); // Ha a dialóg lista, akkor az inputtext a lista címét adja vissza.
      SendClientMessageToAll(0x0ffff, string);
   }
   else
   {
       SendClientMessage(playerid, 0xF97804FF, \"Kiléptél a teleport választó menübõl!\");
   }
}
return 1;
}
[/pawn]

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
tele menü help
« Válasz #3 Dátum: 2011. december 01. - 07:51:15 »
0 Show voters
Igen, ez is egy megoldás, sokkal jobb, mint az enyém.

tele menü help
« Válasz #4 Dátum: 2011. december 01. - 14:14:44 »
0 Show voters
Igen ez a problem megoldódott. De a kocsit meg az embert máshova tegye azt hogy csináljam meg? ^-^

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
tele menü help
« Válasz #5 Dátum: 2011. december 01. - 15:50:47 »
0 Show voters
Ha kocsiban van, akkor lekéred a kocsi ID-jét, és azt elteleportálod arra a bizonyos helyre, végül a játékost bele teszed az autóba.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal