Jump to content

Porty


stonersvojta

Recommended Posts

Zdravím, potřebuji poradit s portováním.

Mám třeba takovýto port:

 

if(!strcmp(cmdtext,"/hrbitov",true))
{
SetPlayerPos(playerid,855.2349,-1102.5925,24);
GetPlayerName(playerid, jmeno, sizeof(jmeno));
format(str,sizeof(str)," [ ! ] Hráč %s se odwarpoval na Hrbitov  [ ! ]",jmeno);
SendClientMessageToAll(0xFFFF00AA,str);
return 1;
}
 
Ale neportuji se i s vozidlem, jak mám udělat, abych se sním portnul ?? prosím poraďte

 

Link to comment
Share on other sites

Prvé musíš skontrolovať či je hráč vo vozile 

Ak je tak GetVehivlepos (vehicleid,x,y,z)//vehicleid si spravíš ...

a  potom len SetVehiclePos 

A dáš hráča ako vodiča

a na co hodláš ukládat pozici vozidla

Link to comment
Share on other sites

stock SetPlayerPort(playerid, Float:x, Float:y, Float:z) //pojmenuj si to jak chceš
{
   if(!IsPlayerInAnyVehicle(playerid)){
        SetPlayerPos(playerid, x, y, z);
   }else{
       SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
       PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
   }
}

Poté to můžeš používat v příkazech nějak takhle:

if(!strcmp(cmdtext,"/hrbitov",true))
{
SetPlayerPort(playerid, 855.2349,-1102.5925,24); // SetPlayerPort(playerid, x, y, z);
//Tady na to by šel tak udělat stock, dost by ti to ulehčilo práci:
GetPlayerName(playerid, jmeno, sizeof(jmeno));
format(str,sizeof(str)," [ ! ] Hráč %s se odwarpoval na Hrbitov  [ ! ]",jmeno);
SendClientMessageToAll(0xFFFF00AA,str);
return 1;
}

Edit:

Tady jsem ti udělal stock, který ti přidělání portů dost ulehčí práci:


stock SetPlayerPort(playerid, PortName[], Float:x, Float:y, Float:z)
{
    new
       Name[24],
       str[128];

    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER){
        SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
        PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
    }else{
        SetPlayerPos(playerid, x, y, z);
    }
    GetPlayerName(playerid, Name, 24);
    format(str, sizeof(str), " [ ! ]Hráč %s se odwarpoval na %s [ ! ]", Name, PortName);
    return SendClientMessageToAll(0xFFFF00AA, str);
}

Použití: SetPlayerPort(playerid, "název portu", x, y, z);

 

Ukázka na tvém portu:

if(!strcmp(cmdtext,"/hrbitov",true))
{
SetPlayerPort(playerid, "Hřbitov", 855.2349,-1102.5925,24);
return 1;
}

2.Edit: Stock nahoře je upraven, podle připomínky Lukasze.

Edited by D@ndys
Link to comment
Share on other sites

D@ndys, tvé řešení není správné, jen okoukané u refa, který nad problémama a optimalizací moc nepřemýšlí a napíše první blbost, co ho napadne (a nevadí, že je to špatně :( )

 

Tvůj kód bude vypadat nějak takto:

 

 
if(!strcmp(cmdtext,"/hrbitov",true))
{
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        SetVehiclePos(GetPlayerVehicleID(playerid), 855.2349,-1102.5925,24);
    } else {
        SetPlayerPos(playerid, 855.2349,-1102.5925,24);
    }
    GetPlayerName(playerid, jmeno, sizeof(jmeno)); 
    format(str,sizeof(str)," [ ! ] Hráč %s se odwarpoval na Hrbitov  [ ! ]",jmeno); 
    return SendClientMessageToAll(0xFFFF00AA,str);
}
Edited by Lukasz
Link to comment
Share on other sites

 

D@ndys, tvé řešení není správné, jen okoukané u refa, který nad problémama a optimalizací moc nepřemýšlí a napíše první blbost, co ho napadne (a nevadí, že je to špatně :( )

 

Tvůj kód bude vypadat nějak takto:

 

 
if(!strcmp(cmdtext,"/hrbitov",true))
{
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        SetVehiclePos(GetPlayerVehicleID(playerid), 855.2349,-1102.5925,24);
    } else {
        SetPlayerPos(playerid, 855.2349,-1102.5925,24);
    }
    GetPlayerName(playerid, jmeno, sizeof(jmeno)); 
    format(str,sizeof(str)," [ ! ] Hráč %s se odwarpoval na Hrbitov  [ ! ]",jmeno); 
    return SendClientMessageToAll(0xFFFF00AA,str);
}

 

konečně někoho napadlo že když teleportuješ auto teleportuje se i hráč... :d

Link to comment
Share on other sites

 

D@ndys, tvé řešení není správné, jen okoukané u refa, který nad problémama a optimalizací moc nepřemýšlí a napíše první blbost, co ho napadne (a nevadí, že je to špatně :( )

 

 

Že by bylo úplně špatné se říct nedá, ovšem díky za info já sám jsem to tak dříve používal, nenapadlo mě řešit i spolujezdce, bylo by to asi k po*rání, kdyby se spolujezdec portnul pryč i s tvým autem :d. Jinak nevím, kde to ref psal, ale jak sem řekl sám jsem to takhle používal. Každopádně jsem se poučil a ten stock mu upravím.

Link to comment
Share on other sites

rEf ovo stock nepoužívej. Vůbec neví :) Ten tvůj zázračnej stock, portne vozidla a dá hráče na místo řidiče, přestože může být spolujezdec. 

if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
    SetVehiclePos(GetPlayerVehicleID(playerid), 855.2349,-1102.5925,24);
} else {
    SetPlayerPos(playerid, 855.2349,-1102.5925,24);
}

To je lepší ne?:)

A je lepší použít GetPlayerName než stock PlayerName :)

Link to comment
Share on other sites

Nasrat.

stock Port(playerid, name[], Float:x, Float:y, Float:z){
    new s[128];
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER){
        SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
    }else{
	SetPlayerPos(playerid, x, y, z);
    }
    format(s,sizeof(s),"Hráč %s se teleportoval na %s.",PlayerName(playerid),name); // stock PlayerName
    SCMTA(-1,s); // SendClientMessageToAll
}

Např.:

QCMD:test(playerid, params[]){ // Využívám QCMD
    Port(playerid,"Hřbitov", pozice x, pozice y, pozice z);
    return true;
}
Edited by rEf
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...