• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Pawn] How can I do this?
#1
Smile 
Hello everyone! A few days ago he asked how to modify the gravity, his answers helped me a lot. But now I have another problem, and it is that I need gravity to be X in a certain place. How do I do this? with VirtualWorld? I would MUCH appreciate your help. Greetings! :D
  Reply
#2
that's a bit more complicated. This is not the best way to make it at all, but I'm using this:
Code:
new PlayerDM[5][3][MapInfo] = { { // X Y Z A Name {1306.9261,2195.0313,11.0234,212.9963,"Baseball"}, // home {1391.2493,2111.0488,11.0156,321.7007,"Baseball"}, // away {1367.4415,2196.2263,14.2495,177.9026,"Baseball"} // spec } } forward Timer(); public Timer() { new Float:zz; GetPlayerPos(i, zz, zz, zz); if(zz < floatround(PlayerDM[Map][TEAM_HOME][z], floatround_ceil)) SetGravity(0.0); }

and make a timer for the public that plays every 250ms for example.
  Reply
#3
Code:
IsPlayerInArea(playerid, Float:MinX, Float:MaxX, Float:MinY, Float:MaxY) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); #pragma unused z ? ? if(x >= MinX && x <= MaxX && y >= MinY && y <= MaxY) { return 1; } ? ? return 0; }

P.S. I think you can only set gravity only for all players. You can't set the gravity different for other players.
  Reply
#4
(2021-02-26, 09:45 PM)destiezk Wrote: that's a bit more complicated. This is not the best way to make it at all, but I'm using this:

Code:
new PlayerDM[5][3][MapInfo] = { {? ? ? ? ? //? X? ? ? ? Y? ? ? ? ? ? ? ? Z? ? ? A? ? ? ? ? ? ? Name {1306.9261,2195.0313,11.0234,212.9963,"Baseball"}, // home {1391.2493,2111.0488,11.0156,321.7007,"Baseball"},? // away {1367.4415,2196.2263,14.2495,177.9026,"Baseball"} // spec } } forward Timer(); public Timer() { new Float:zz; GetPlayerPos(i, zz, zz, zz); if(zz <? floatround(PlayerDM[Map][TEAM_HOME][z], floatround_ceil)) SetGravity(0.0); }



and make a timer for the public that plays every 250ms for example.



Hello! First of all, thanks for answering C: could you explain to me what these coordinates are that you put here? is that I do not understand much. Thanks, again!



Code:
{1306.9261,2195.0313,11.0234,212.9963,"Baseball"}, // home {1391.2493,2111.0488,11.0156,321.7007,"Baseball"},? // away {1367.4415,2196.2263,14.2495,177.9026,"Baseball"} // spec
  Reply
#5
(2021-02-26, 10:30 PM)Virsenas Wrote:
Code:
IsPlayerInArea(playerid, Float:MinX, Float:MaxX, Float:MinY, Float:MaxY) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); #pragma unused z ? ? if(x >= MinX && x <= MaxX && y >= MinY && y <= MaxY) { return 1; } ? ? return 0; }



P.S. I think you can only set gravity only for all players. You can't set the gravity different for other players.



Isn't it possible to do that?
  Reply
#6
(2021-02-27, 12:47 PM)Boxi Wrote:
(2021-02-26, 10:30 PM)Virsenas Wrote:
Code:
IsPlayerInArea(playerid, Float:MinX, Float:MaxX, Float:MinY, Float:MaxY) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); #pragma unused z ? ? if(x >= MinX && x <= MaxX && y >= MinY && y <= MaxY) { return 1; } ? ? return 0; }



P.S. I think you can only set gravity only for all players. You can't set the gravity different for other players.



Isn't it possible to do that?



https://open.mp/docs/scripting/functions/SetGravity



Quote:Description



Set the gravity for all players.
  Reply
#7
In combination with Pawn.RakNet: https://github.com/Romz24/samp-gravity
  Reply
#8
(2021-02-27, 12:46 PM)Boxi Wrote:
(2021-02-26, 09:45 PM)destiezk Wrote: that's a bit more complicated. This is not the best way to make it at all, but I'm using this:
Code:
new PlayerDM[5][3][MapInfo] = { {? ? ? ? ? //? X? ? ? ? Y? ? ? ? ? ? ? ? Z? ? ? A? ? ? ? ? ? ? Name {1306.9261,2195.0313,11.0234,212.9963,"Baseball"}, // home {1391.2493,2111.0488,11.0156,321.7007,"Baseball"},? // away {1367.4415,2196.2263,14.2495,177.9026,"Baseball"} // spec } } forward Timer(); public Timer() { new Float:zz; GetPlayerPos(i, zz, zz, zz); if(zz <? floatround(PlayerDM[Map][TEAM_HOME][z], floatround_ceil)) SetGravity(0.0); }

and make a timer for the public that plays every 250ms for example.

Hello! First of all, thanks for answering C: could you explain to me what these coordinates are that you put here? is that I do not understand much. Thanks, again!

Code:
{1306.9261,2195.0313,11.0234,212.9963,"Baseball"}, // home {1391.2493,2111.0488,11.0156,321.7007,"Baseball"},? // away {1367.4415,2196.2263,14.2495,177.9026,"Baseball"} // spec

Well it's what I use in my code.. I have three teams (Home, Away, Spectator) and it's their spawn position.
Otherwise, SetGravity() function is used for all players, you can use Pawn.Raknet and this https://github.com/Romz24/samp-gravity so you can actually make it.
  Reply
#9
You can try to use plugin: https://github.com/IllidanS4/YSF

Code:
native SetPlayerGravity(playerid, Float:gravity); native Float:GetPlayerGravity(playerid);

It has more useful functions, check it out.
  Reply
#10
I will use the Pawn.Raknet thank you all very much for your answers, I appreciate it very much
  Reply
#11
I really suggest you use YSF for this, not pawn.raknet. The former is nice functions you can use easily, the latter is a very low-level hack.
  Reply