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: ninjo98 - 2011. november 30. - 18:07:54

Cím: tele menü help
Írta: ninjo98 - 2011. november 30. - 18:07:54
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Õ! ^-^
Cím: tele menü help
Írta: Benceee - 2011. november 30. - 19:58:51
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.
Cím: tele menü help
Írta: kurta999 - 2011. december 01. - 00:03:55
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]
Cím: tele menü help
Írta: Benceee - 2011. december 01. - 07:51:15
Igen, ez is egy megoldás, sokkal jobb, mint az enyém.
Cím: tele menü help
Írta: ninjo98 - 2011. december 01. - 14:14:44
Igen ez a problem megoldódott. De a kocsit meg az embert máshova tegye azt hogy csináljam meg? ^-^
Cím: tele menü help
Írta: Benceee - 2011. december 01. - 15:50:47
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.