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: szabyxxx - 2011. december 31. - 11:56:02

Cím: Teleport hogy mindenki lássa
Írta: szabyxxx - 2011. december 31. - 11:56:02
Sziasztok Azt szeretném tõletek kérdezni hogy ezt a teleportot Megcsinálnátok nekem hogy mindenkinek kiirja hogy Player neve elélteleportált ide: /d1
[pawn]if(strcmp(cmdtext, \"/d1\", true) == 0)
        {
   SetPlayerInterior(playerid,0);
   {if(State!=PLAYER_STATE_DRIVER)
       {SetPlayerPos(playerid,1567.5250,792.2056,11.3102);}
   else if(IsPlayerInVehicle(playerid, cartype) == 1)
   {SetVehiclePos(cartype,1567.5250,792.2056,11.3102);
   SetVehicleZAngle(cartype,304.2583);}
   else
   {SetPlayerPos(playerid,1567.5250,792.2056,11.3102);}
       SendClientMessage(playerid, 0xFFFF00AA,\"Elteleportáltál erre a helyre --> /d1\");}
        PlayerPlaySound(playerid, 1133, 0.0, 0.0, 10.0);
        return 1;}[/pawn]
Ennyi lenne Aki Segít megy a +  :D
Cím: Teleport hogy mindenki lássa
Írta: tudvari - 2011. december 31. - 12:01:04
Így jó lesz ah minden igaz.
[pawn]if(strcmp(cmdtext, \"/d1\", true) == 0)
        {
   SetPlayerInterior(playerid,0);
   {if(State!=PLAYER_STATE_DRIVER)
       {SetPlayerPos(playerid,1567.5250,792.2056,11.3102);}
   else if(IsPlayerInVehicle(playerid, cartype) == 1)
   {SetVehiclePos(cartype,1567.5250,792.2056,11.3102);
   SetVehicleZAngle(cartype,304.2583);}
   else
   {SetPlayerPos(playerid,1567.5250,792.2056,11.3102);}
                new nev[MAX_PLAYER_NAME];
                GetPlayerName(playerid,nev,sizeof(nev));
                format(string,sizeof(string),\"%s elteleportált erre a helyre --> /d1\",nev);
       SendClientMessageToAll( 0xFFFF00AA,string);}
        PlayerPlaySound(playerid, 1133, 0.0, 0.0, 10.0);
        return 1;}[/pawn]
Cím: Teleport hogy mindenki lássa
Írta: Zsolesszka - 2011. december 31. - 12:41:35
Több hiba is van a parancsban, nem részletezem mert nem akarok egy regényt írni, inkább átírtam az egészet.
[pawn]   if(strcmp(cmdtext, \"/d1\", true) == 0)
{
   new
      vehicle_ID = GetPlayerVehicleID(playerid); // Tároljuk vehicleid változóban annak a jármûnek a sorszámát amelyiket használja a játékos, ha egyiket se akkor a visszatérés értéke nulla( nincs jármûben )
   if(vehicle_ID && GetPlayerVehicleSeat(playerid) == 0) // Ez helyett megfelel az if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) is.
   {
      SetVehiclePos(vehicle_ID, 1567.5250, 792.2056,11.3102);
      SetVehicleZAngle(vehicle_ID, 304.2583);
   } else {
      SetPlayerPos(playerid, 1567.5250, 792.2056, 11.3102);
      SetPlayerFacingAngle(playerid, 304.2583);
   }
   new
      str[128];
   GetPlayerName(playerid, str, MAX_PLAYER_NAME);
   format(str, sizeof str, \"%s elteleportált erre a helyre --> /d1\", str);
   SendClientMessageToAll(0xFFFF00AA, str);
   PlayerPlaySound(playerid, 1133, 0.0, 0.0, 10.0);
   return 1;
}[/pawn]
Cím: Teleport hogy mindenki lássa
Írta: tudvari - 2011. december 31. - 12:42:41
Azt hittem a parancs jó,csak a string-es részt nem érti,és csak azt írtam át benne.
Cím: Teleport hogy mindenki lássa
Írta: szabyxxx - 2011. december 31. - 12:45:44
kösz mindkettõtöknek  megy a +1
THX
Cím: Teleport hogy mindenki lássa
Írta: Zsolesszka - 2011. december 31. - 13:07:20
Idézetet írta: tudvari date=1325331761\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"15000\" data-ipsquote-contentclass=\"forums_Topic
Azt hittem a parancs jó,csak a string-es részt nem érti,és csak azt írtam át benne.
 
Ahhoz meg nem feltétlenül kell az egész parancsot idézni hanem leírtad volna hogy a SendClientMessage helyett ezt használja:
[pawn]      new
      str[128];
   GetPlayerName(playerid, str, MAX_PLAYER_NAME);
   format(str, sizeof str, \"%s elteleportált erre a helyre --> /d1\", str);
   SendClientMessageToAll(0xFFFF00AA, str);[/pawn]
Másképp ezt a funkciót törölje 
[pawn]SendClientMessage(playerid, 0xFFFF00AA,\"Elteleportáltál erre a helyre --> /d1\");[/pawn]
és a feljebb lévõkkel pótolja/cserélje.
Amúgy a parancs mûködõképes lehet úgyis ahogy írtad gondolom az OnPlayerCommandText alatt szerepelhetnek ezek:
[pawn]new State = GetPlayerState(playerid);
new cartype = GetPlayerVehicleID(playerid);
new string[128];[/pawn]
Csak ezeket a dolgokat segítséget kérõk általában nem közlik.
Ezért szoktam olyan parancsot írni segítség kéréshez amiben minden benne van, és nem máshol létrehozott változókban vannak tárolva az adatokat.
Amúgy én is rengeteg helyen használom kis global változók használatát. (nem tudtam másképp leírni kis global)
OnPlayerCommandText alatt közvetlenül létrehoznak egy változókat pl.:
[pawn]public OnPlayerCommandText(playerid, cmdtetx[])
{
new str[128];
new vehicleID = GetPlayerVehicleID(playerid);
new State = GetPlayerState(playerid);
//és az ezek alatt írt összes parancsban lehet õket alkalmazni
if(strcmp(cmdtext, \"/valami2\", true) == 0)
{
   format(str, sizeof str, \"Használt parancs %s | State: %d | VehicleID: %d\", cmdtetxt, State, VehicleID);
   SendClientMessage(playerid, -1, str);
   return 1;
}
if(strcmp(cmdtext, \"/valami3\", true) == 0)
{
   format(str, sizeof str, \"Használt parancs %s | State: %d | VehicleID: %d\", cmdtetxt, State, VehicleID);
   SendClientMessage(playerid, -1, str);
   return 1;
}
if(strcmp(cmdtext, \"/valami4\", true) == 0)
{
   format(str, sizeof str, \"Használt parancs %s | State: %d | VehicleID: %d\", cmdtetxt, State, VehicleID);
   SendClientMessage(playerid, -1, str);
   return 1;
}
return 0;
}[/pawn]
Ezt nevezem kis global változónak mert OnPlayerCommandText alatt szerepelhet akár több száz parancs, és mindegyikben lehet alkalmazni a példában szereplõ
\"str\", \"VehicelID\", \"State\" változókat .