Szerző Téma: Térképes teleport  (Megtekintve 1260 alkalommal)

Térképes teleport
« Dátum: 2014. Augusztus 20. - 12:21:37 »
0
Sziasztok!
Pár napja letöltöttem egy angol oldalról az alábbi telemap scriptet:
 
#include <a_samp>
#include <mpa>
#pragma tabsize 0
enum pd
{
        bool:telemapping,
        Float:pointer[2],
        Text:textid
}
new pi[MAX_PLAYERS][pd];
new mapobj[4];
public OnFilterScriptInit()
{
        print(\"Telemap script by Hiddos loaded.\");
        mapobj[0] = CreateObject(16007 + 3164,-2447.47216797,937.39990234,50.370,0.00000000,0.00000000,0.00000000);
        mapobj[1] = CreateObject(16006 + 3164,-2448.96875000,937.39990234,50.370,0.00000000,0.00000000,0.00000000);
        mapobj[2] = CreateObject(16005 + 3164,-2447.47216797,938.89892578,50.370,0.00000000,0.00000000,0.00000000);
        mapobj[3] = CreateObject(16004 + 3164,-2448.96875000,938.89892578,50.370,0.00000000,0.00000000,0.00000000);
        return 1;
}
public OnFilterScriptExit()
{
        for(new i; i < MAX_PLAYERS; i++)
        {
            if(pi[telemapping] == true)
            {
                    TextDrawDestroy(pi[textid]);
                    SetCameraBehindPlayer(i);
                    TogglePlayerControllable(i, true);
                }
        }
        DestroyObject(mapobj[0]);
        DestroyObject(mapobj[1]);
        DestroyObject(mapobj[2]);
        DestroyObject(mapobj[3]);
        return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
        SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
        SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
        SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
        return 1;
}
public OnPlayerConnect(playerid)
{
        SendClientMessage(playerid, 0xFFFF00FF, \"This server runs the telemap script by Hiddos. Give it a go! /telehelp\");
        return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
        if(pi[playerid][telemapping])
        {
                pi[playerid][telemapping] = false;
                TextDrawDestroy(pi[playerid][textid]);
        }
        return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
        if(!strcmp(cmdtext, \"/telemap\", true))
        {
            if(!pi[playerid][telemapping])
            {
                        pi[playerid][telemapping] = true;
                        SetPlayerCameraPos(playerid, -2448.228149415, 938.1492406, 53.370);
                        SetPlayerCameraLookAt(playerid, -2448.228149415, 938.14941406, 50.370);
                        TogglePlayerControllable(playerid, false);
                        pi[playerid][textid] = TextDrawCreate(320.000000, 217.000000, \".\");
                        TextDrawBackgroundColor(pi[playerid][textid], 255);
                        TextDrawFont(pi[playerid][textid], 0);
                        TextDrawLetterSize(pi[playerid][textid], 0.349999, 1.000000);
                        TextDrawColor(pi[playerid][textid], -65281);
                        TextDrawSetOutline(pi[playerid][textid], 1);
                        TextDrawSetProportional(pi[playerid][textid], 0);
                        TextDrawShowForPlayer(playerid, pi[playerid][textid]);
                        pi[playerid][pointer][0] = 320;
                        pi[playerid][pointer][1] = 217;
                }
                else
                {
                    pi[playerid][telemapping] = false;
                    TextDrawDestroy(pi[playerid][textid]);
                        SetCameraBehindPlayer(playerid);
                        TogglePlayerControllable(playerid, true);
                }
                return 1;
        }
        if(!strcmp(cmdtext, \"/telehelp\", true))
        {
            SendClientMessage(playerid, 0xFFFF00FF, \"Telehelp by Hiddos:\");
            SendClientMessage(playerid, 0x00FF00FF, \"Use /telemap to open the map.\");
            SendClientMessage(playerid, 0x00FF00FF, \"Use the arrow keys to move around, and the jump key to teleport.\");
            SendClientMessage(playerid, 0x00FF00FF, \"Press /telemap again to close it.\");
            return 1;
        }
        return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
        if(newkeys & 32 && pi[playerid][telemapping] == true)
        {
            new Float:pos[3];
            pos[0] = pi[playerid][pointer][0];
            pos[1] = pi[playerid][pointer][1];
                pos[1] = 434.0 - pos[1];
            pos[0] -= (320.0);
            pos[1] -= (217.0);
            pos[0] *= (6.55022 * 2);
            pos[1] *= (7.00935 * 2);
            GetPointZPos(pos[0], pos[1], pos[2]);
                TogglePlayerControllable(playerid, true);
                SetCameraBehindPlayer(playerid);
                SetPlayerPos(playerid, pos[0], pos[1], pos[2] + 2.5);
                TextDrawDestroy(pi[playerid][textid]);
                pi[playerid][telemapping] = false;
        }
        return 1;
}
public OnPlayerUpdate(playerid)
{
        if(pi[playerid][telemapping] == false) return 1;
        new keys[3];                    //UD        LR
        GetPlayerKeys(playerid, keys[0], keys[1], keys[2]);
        if(!keys[1] && !keys[2]) return 1;
        #define MOVE_VALUE 1.75
        if(keys[1] > 0 && pi[playerid][pointer][1] < 431) pi[playerid][pointer][1] += MOVE_VALUE;
        else if(keys[1] < 0 && pi[playerid][pointer][1] > 3) pi[playerid][pointer][1] -= MOVE_VALUE;
        if(keys[2] > 0 && pi[playerid][pointer][0] < 549) pi[playerid][pointer][0] += MOVE_VALUE;
        else if(keys[2] < 0 && pi[playerid][pointer][0] > 91) pi[playerid][pointer][0] -= MOVE_VALUE;
        TextDrawDestroy(pi[playerid][textid]);
        pi[playerid][textid] = TextDrawCreate(pi[playerid][pointer][0], pi[playerid][pointer][1], \".\");
        TextDrawBackgroundColor(pi[playerid][textid], 255);
        TextDrawFont(pi[playerid][textid], 0);
        TextDrawLetterSize(pi[playerid][textid], 0.349999, 1.000000);
        TextDrawColor(pi[playerid][textid], -65281);
        TextDrawSetOutline(pi[playerid][textid], 1);
        TextDrawSetProportional(pi[playerid][textid], 0);
        TextDrawShowForPlayer(playerid, pi[playerid][textid]);
        return 1;
}

 
És az lenne a kérdésem, hogy hogyan lehetne úgy megcsinálni, hogy a játék térképe szerint tudjak teleportálni, ne pedig külön térkép szerint?
Még nagyon kezdõ vagyok, csak pár napja kezdtem.
Válaszokat elõre is köszönöm!
« Utoljára szerkesztve: 2014. Augusztus 20. - 13:25:23 írta Cappsy »

Térképes teleport
« Válasz #1 Dátum: 2014. Augusztus 21. - 08:25:03 »
0
Szia!
Nem értem teljesen pontosan, hogy mit szeretnél de szerintem ez kell neked:
 
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
        SetPlayerPosFindZ(playerid, fX, fY, fZ+3);
return 1;
}

Térképes teleport
« Válasz #2 Dátum: 2014. Augusztus 21. - 10:41:30 »
0
Szia!
És ezt pontosan hova rakjam be?
Mert beraktam a scriptbe, nincs semmi error, de utánna ugyanaz a probléma, hogy egy külön térképet kapok ha beírom a parancsot.

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Térképes teleport
« Válasz #3 Dátum: 2014. Augusztus 21. - 10:51:25 »
0
A fenti scripttel az menu >> map-nál jobb klikkel teleportálhatsz.

Térképes teleport
« Válasz #4 Dátum: 2014. Augusztus 21. - 15:47:12 »
0
Szia! Ezt csak úgy simán a mododba berakod ahol pl van az OnGameModeInit, vagy OnGameModeExit, meg ilyenek.

Térképes teleport
« Válasz #5 Dátum: 2014. Augusztus 21. - 16:25:26 »
0
Köszi, már mûködik!
Zárok.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Térképes teleport
« Válasz #6 Dátum: 2014. Augusztus 21. - 16:26:11 »
0
[mod]Helyetted is megteszem :)[/mod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal