Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2015-03-27, 20:02


RoY







Wiek: 30
Na forum: 4091 dni
Posty: 7



Respekt: 50

Witam, czy w sa-mp jest mo?liwo?? obracania obiektu? wok?? jego o?i, tak jak pick up. Je?li tak, prosz? o podanie przyk?adu kodu, lub tropu - dzi?kuj?.

Parameters: Float:Z

PS: Chodzi o ci?g?e obracanie obiektu 360 stopni, co? na zasadzie SetTimer.

Tego nie potrzebuj?, http://wiki.sa-mp.com/wiki/SetObjectRot

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 20:13


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

Nigdy nie robi?em czego? takiego, ale jak nie SetObjectRot to spr?buj

Więcej informacji znajdziesz w Wikipedii SA-MP:

MoveObject

X, Y, Z ustaw takie jakie masz przy tworzeniu obiektu, a nast?pnie X, Y, Z rotacji jak Ci pasuje.

Najlepszym rozwi?zaniem b?dzie zrobi? powtarzaj?cy si? timer co 500ms i SetObjectRot. W rotacji musisz ustali? zmienn?,
Kod:


new Float:RotObj = 0.5; //g?ra
//Timer:
SetObjectRot(...RotObj);
RotObj += 0.5;

Tym sposobem co p?? sekundy obiekt b?dzie obraca? si? minimalnie, dodaj?c poprzedni? rotacj?. Nie robi?em czego? takiego = nie wiem czy b?dzie dzia?a?, spr?buj. :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 20:33


RoY







Wiek: 30
Na forum: 4091 dni
Posty: 7



Respekt: 50

Napisa?em teraz, ale co? nie dzia?a.

Pawn
#include <a_samp>

forward Moja_Rotacja();

public OnGameModeInit()
{
    SetTimer("Moja_Rotacja"1000true);

    CreateObject(14791, -2042.615234375, -147.5272827148490.860267639160.000.000);
    return 1;
}

public Moja_Rotacja()
{
    new Float:rxFloat:ryFloat:rz;

    GetObjectRot(14791rxryrz);

    rz += 0.2;

    if (rz >= 360)

    rz -= 360;

    SetObjectRot(14791rxryrz);
}


Mo?na by by?o zrobi? jako pick up, ale na pick up nie mo?na wej?? - jest zbugowany.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 20:50


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

"RoY" napisał/a:

Mo?na by by?o zrobi? jako pick up, ale na pick up nie mo?na wej?? - jest zbugowany.

S?dz?c po Twoim kodzie, pewnie ?le to robisz :P . Je?eli zrobi?e? to jako pickup poka? kod, natomiast przechodz?c do kodu powy?ej to
Kod:


#include <a_samp>
new Obiekt1, Float:Obiekt1Rot = 0;

forward Moja_Rotacja();

public OnGameModeInit()
{
SetTimer("Moja_Rotacja", 500, true);

Obiekt1 = CreateObject(14791, -2042.615234375, -147.52728271484, 90.86026763916, 0.00, 0.00, 0);
return 1;
}

public Moja_Rotacja()
{
Obiekt1Rot += 0.2;
if (Obiekt1Rot >= 360) Obiekt1Rot = 0;
SetObjectRot(Obiekt1, 0.00, 0.00, Obiekt1Rot);
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 20:55


RoY







Wiek: 30
Na forum: 4091 dni
Posty: 7



Respekt: 50

Kod:

new Obiekt1, Float:Obiekt1Rot = 0;


warning 213: tag mismatch

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 21:10


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

Kod:


new Obiekt;
new Float:Obiekt1Rot;

I poka? erorsy

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 21:26


RoY







Wiek: 30
Na forum: 4091 dni
Posty: 7



Respekt: 50

"ToxiC`" napisał/a:

Kod:


new Obiekt;
new Float:Obiekt1Rot;

I poka? erorsy


warning 203: symbol is never used: "Float"

A zrobi?em tak, to jest spox.

Kod:

new Obiekt1;
new Obiekt1Rot;


Dzi?kuj? za, help - salute.

//------------------------------------------

Mam jeszcze jedno pytanie, czy mo?na zrobi? co? takiego ze skinem tylko np. na komend?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 21:59


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

"RoY" napisał/a:

Mam jeszcze jedno pytanie, czy mo?na zrobi? co? takiego ze skinem tylko np. na komend?.

Da si?.

http://wiki.sa-mp.com/wik...ayerFacingAngle tutaj ustawiasz rotacj?, pozycji gracza ju? nie musisz pobiera? - przerobisz chyba tamten kod? Dodatkowo proponuj? zamrozi? gracza - http://wiki.sa-mp.com/wik...yerControllable

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 22:19


RoY







Wiek: 30
Na forum: 4091 dni
Posty: 7



Respekt: 50

"ToxiC`" napisał/a:

"RoY" napisał/a:

Mam jeszcze jedno pytanie, czy mo?na zrobi? co? takiego ze skinem tylko np. na komend?.

Da si?.

http://wiki.sa-mp.com/wik...ayerFacingAngle tutaj ustawiasz rotacj?, pozycji gracza ju? nie musisz pobiera? - przerobisz chyba tamten kod? Dodatkowo proponuj? zamrozi? gracza - http://wiki.sa-mp.com/wik...yerControllable


Ale tutaj trzeba chyba u?y? parametru: playerid, poniewa? to gracz b?dzie sam to uruchamia?. Bez zegara, np. na komend?.


Kod:

#include <a_samp>

new Float:objrot1;
new obj1;

public OnGameModeInit()
{
obj1 = AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/test", cmdtext, true, 10) == 0)
{
SetPlayerFacingAngle(obj1, 0.0,0.0, objrot1);

objrot1 += 0.5;

if(objrot1 >= 360.0) objrot1 = 0.0;
return 1;
}
return 0;
}




Kod:

SetPlayerFacingAngle(obj1, 0.0,0.0, objrot1);


warning 202: number of arguments does not match definition

Ostatnio zmieniony przez RoY 2015-03-27, 22:36, w całości zmieniany 2 razy  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 22:30


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

No tak, musisz u?y? zamiast SetTimer, to SetTimerEx np.

Kod:


CMD:skin360(playerid)
{
SetTimerEx("SkinObrot", 500, true, "i", playerid);
return 1;
}

forward SkinObrot(playerid);
public SkinObrot(playerid)
{
SetPlayerFacingAngle(playerid, ...);
}


Dodatkowo, pewnie b?dziesz chcia? zrobi? komend? na wy??czenie obrotu? No to jeszcze ma?a modyfikacja.

Kod:


new TimerSkin[MAX_PLAYERS]; //na g?rze

CMD:skin360(playerid)
{
TimerSkin[playerid] = SetTimerEx("SkinObrot", 500, true, "i", playerid);
//Tutaj mo?esz zamrozi? jeszcze
return 1;
}
CMD:skin360off(playerid)
{
KillTimer(TimerSkin[playerid]);
return 1;
}

forward SkinObrot(playerid);
public SkinObrot(playerid)
{
SetPlayerFacingAngle(playerid, ...);
}

//Dodatkowo w OnPlayerConnect lub Disconnect jeszcze mo?esz zabi? ten timer:
KillTimer(TimerSkin[playerid]);


Jako? tak, spr?buj :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 22:37


RoY







Wiek: 30
Na forum: 4091 dni
Posty: 7



Respekt: 50

"ToxiC`" napisał/a:

No tak, musisz u?y? zamiast SetTimer, to SetTimerEx np.

Kod:


CMD:skin360(playerid)
{
SetTimerEx("SkinObrot", 500, true, "i", playerid);
return 1;
}

forward SkinObrot(playerid);
public SkinObrot(playerid)
{
SetPlayerFacingAngle(playerid, ...);
}


Dodatkowo, pewnie b?dziesz chcia? zrobi? komend? na wy??czenie obrotu? No to jeszcze ma?a modyfikacja.

Kod:


new TimerSkin[MAX_PLAYERS]; //na g?rze

CMD:skin360(playerid)
{
TimerSkin[playerid] = SetTimerEx("SkinObrot", 500, true, "i", playerid);
//Tutaj mo?esz zamrozi? jeszcze
return 1;
}
CMD:skin360off(playerid)
{
KillTimer(TimerSkin[playerid]);
return 1;
}

forward SkinObrot(playerid);
public SkinObrot(playerid)
{
SetPlayerFacingAngle(playerid, ...);
}

//Dodatkowo w OnPlayerConnect lub Disconnect jeszcze mo?esz zabi? ten timer:
KillTimer(TimerSkin[playerid]);


Jako? tak, spr?buj :)


Zrobi?em tak, ale jest warning.

Kod:

#include <a_samp>

new Float:objrot1;
new obj1;

public OnGameModeInit()
{
obj1 = AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/test", cmdtext, true, 10) == 0)
{
SetPlayerFacingAngle(obj1, 0.0,0.0, objrot1);

objrot1 += 0.5;

if(objrot1 >= 360.0) objrot1 = 0.0;
return 1;
}
return 0;
}




Kod:

SetPlayerFacingAngle(obj1, 0.0,0.0, objrot1); // warning!


warning 202: number of arguments does not match definition

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 22:45


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

SetPlayerFacingAngle ma 2 argumenty id gracza i rotacja. Poprawnie:
SetPlayerFacingAngle(playerid, rotacja);

Po za tym troch? ?le.. ;P
Poprawka:

Kod:


#include <a_samp>

new Float:objrot1;
new TimerSkin[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/test", cmdtext, true, 10) == 0)
{
TimerSkin[playerid] = SetTimerEx("SkinObrot", 500, true, "i", playerid);
return 1;
}
return 0;
}

forward SkinObrot(playerid);
public SkinObrot(playerid)
{
objrot1 += 0.5;
SetPlayerFacingAngle(playerid, objrot1);
if(objrot1 >= 360.0) objrot1 = 0.0;
}




Tak jak pisa?em wy?ej, brakuje Ci tu jeszcze komendy na wy??czanie ale spr?buj j? wykona? jak b?dziesz chcia?. Po raz kolejny napisz?, ?e jezeli chcesz zeby gracz si? nie rusza?, to u?yj http://wiki.sa-mp.com/wik...yerControllable

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 22:53


RoY







Wiek: 30
Na forum: 4091 dni
Posty: 7



Respekt: 50

Chodzi, dzi?kuj? - za pomoc!

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-03-27, 22:57


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

[clo]

Postaw piwo autorowi tego posta
 

 
Tagi: obiekt
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » Obiekt Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku