Szerző Téma: vonszolás  (Megtekintve 844 alkalommal)

vonszolás
« Dátum: 2016. Március 09. - 13:25:52 »
0 Show voters
Sziasztok.
Valamivel nem lehet megoldani, hogy mikor elkezdem vonszolni a csávót egyenlőre nem történik semmi, viszont azt szeretném , hogy kérje le 2 másodpercenként a játékos koordinátáját és a bilincselt koordinátáját és ha nem egyeznek akkor teleportálja oda a játékoshoz.
Ezt hogy lehetne megvalósítani?
 
    if(strcmp(cmd, \"/visz\", true) == 0)
    {
       if(IsPlayerConnected(playerid))
       {
    tmp = strtok(cmdtext, idx);
       if(!strlen(tmp))
   {
      SendClientMessage(playerid, COLOR_GRAD2, \"Használat: /visz [JátékosID/NévRészlet]\");
      return 1;
   }
            giveplayerid = ReturnUser(tmp);
            if(IsPlayerConnected(giveplayerid))
            {
              if(giveplayerid != INVALID_PLAYER_ID)
              {
                   if (GetDistanceBetweenPlayers(playerid,giveplayerid) < 3)
                   {
                      if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GRAD2, \"Magadat akarod vonszolni?\"); return 1; }
                      if(PlayerCuffed[giveplayerid] == 2 || PlayerInfo[giveplayerid][Animban] == 1 || PlayerTied[giveplayerid] == 1)
                      {
                      GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        format(stringx, sizeof(stringx), \"%s elkezdett vonszolni.\", sendername);
                        SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, stringx);
                        format(stringx, sizeof(stringx), \"Vonszolod %s.\", rag(giveplayer,3));
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, stringx);
                        format(stringx, sizeof(stringx), \"* %s elkezdte vonszolni %s.\", sendername ,rag(giveplayer,3));
            ProxDetector(30.0, playerid, stringx, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                         PlayerInfo[playerid][vonszol] = 1;
                        PlayerInfo[giveplayerid][vonszol] = 2+playerid;
                      } else SendClientMessage(playerid, COLOR_GRAD2, \"A játékos nincs animban/bilincsben!\");
                   } else SendClientMessage(playerid, COLOR_GRAD2, \"Nincs elég közel a játékos.\");
              } else SendClientMessage(playerid, COLOR_GRAD2, \"A játékos nem elérhető!\");
            }
       } return 1;
    }

vonszolás
« Válasz #1 Dátum: 2016. Március 09. - 15:08:04 »
0 Show voters
Vagy, csak OnPlayerUpdate callback alatt mindig odarakod a vonszoló mellé, vagy indítasz neki egy timert, tudom is én pl. egy 1 másodperceset és ott rakod mindig oda a vonszolt embert a vonszoló mellé.
A 2. lehetőség lehet jobb, megterhelő egy kicsit az OnPlayerUpdate alatt.. Tesztelgess. :)

vonszolás
« Válasz #2 Dátum: 2016. Március 09. - 17:01:02 »
0 Show voters
Megoldható, mint ,ahogy az előttem válaszoló írta, úgy meg tudod oldani. Azt ne várd el, hogy helyetted írjuk. ::|

Nem elérhető BackUP

  • 908
    • Profil megtekintése
vonszolás
« Válasz #3 Dátum: 2016. Március 09. - 18:41:12 »
+1 Show voters
Idézetet írta: Mormota date=1457539262\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59784\" data-ipsquote-contentclass=\"forums_Topic
Megoldható, mint ,ahogy az előttem válaszoló írta, úgy meg tudod oldani. Azt ne várd el, hogy helyetted írjuk. ::|
 
Ne legyél paraszt, semmi értelme nem volt a megnyílvánulásodnak.
Tessék:
 
new VonszolTimer[MAX_PLAYERS];
if(strcmp(cmd, \"/visz\", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
                    tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                        {
                                SendClientMessage(playerid, COLOR_GRAD2, \"Használat: /visz [JátékosID/NévRészlet]\");
                                return 1;
                        }
                        giveplayerid = ReturnUser(tmp);
                if(IsPlayerConnected(giveplayerid))
                {
                        if(giveplayerid != INVALID_PLAYER_ID)
                        {
                                if (GetDistanceBetweenPlayers(playerid,giveplayerid) < 3)
                                {
                                if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GRAD2, \"Magadat akarod vonszolni?\"); return 1; }
                                if(PlayerCuffed[giveplayerid] == 2 || PlayerInfo[giveplayerid][Animban] == 1 || PlayerTied[giveplayerid] == 1)
                                {
                                GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        format(stringx, sizeof(stringx), \"%s elkezdett vonszolni.\", sendername);
                        SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, stringx);
                        format(stringx, sizeof(stringx), \"Vonszolod %s.\", rag(giveplayer,3));
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, stringx);
                        format(stringx, sizeof(stringx), \"* %s elkezdte vonszolni %s.\", sendername ,rag(giveplayer,3));
                                                ProxDetector(30.0, playerid, stringx, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                                PlayerInfo[playerid][vonszol] = 1;
                        PlayerInfo[giveplayerid][vonszol] = 2+playerid;
                       
                                VonszolTimer[playerid] = SetTimerEx(\"Vonszol\",2000,true, \"dd\", giveplayerid, playerid);
                                } else SendClientMessage(playerid, COLOR_GRAD2, \"A játékos nincs animban/bilincsben!\");
                                } else SendClientMessage(playerid, COLOR_GRAD2, \"Nincs elég közel a játékos.\");
                        } else SendClientMessage(playerid, COLOR_GRAD2, \"A játékos nem elérhető!\");
                }
        } return 1;
    }
   
forward Vonszol(vonszolid, rendorid);
public Vonszol(vonszolid, rendorid){
new Float:pPos[3];
GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
SetPlayerPos(vonszolid, pPos[0], pPos[1]+2, pPos[2]);
}

 
Ez alapján meg tudod oldani a vonszolás abbahagyását is. Azért nem írtam meg mivel nem tudom hogy melyik változóval szeretnéd ellenőrözni.
Az a parancs alá pedig elég lesz ezt írnod, hogy abbahagyja:
 
KillTimer(VonszolTimer[playerid]);

 
Sajnálom hogy a fórumon milyen segítőkészség van.. de tényleg.

vonszolás
« Válasz #4 Dátum: 2016. Március 09. - 18:48:59 »
0 Show voters
Idézetet írta: BackUP date=1457545272\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59784\" data-ipsquote-contentclass=\"forums_Topic
Sajnálom hogy a fórumon milyen segítőkészség van.. de tényleg.
 
Figyelj. Elméleti megoldást megmondtam, szerintem nem olyan nehéz. Mellesleg, ha mindent a szájába adsz, akkor soha nem fogja megtanulni a nyelvet. Szerintem legalábbis.

Nem elérhető BackUP

  • 908
    • Profil megtekintése
vonszolás
« Válasz #5 Dátum: 2016. Március 09. - 18:50:53 »
+1 Show voters
Figyelj, nem neked szólt. Így is lesz min rágódnia, hisz csak az oda teleportálást írtam meg, nem magyaráztam legalább rájön, hogy mi alapján működik a dolog meg tudja keresni.. én sem tanultam másképp..
Úgyis neki kell megírni a parancs másik felét, illetve bőven lesz baja ezzel az elavult teknikájú móddal rengeteg ;)

vonszolás
« Válasz #6 Dátum: 2016. Március 09. - 20:26:24 »
0 Show voters
Köszönöm, működik.:)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal