A different type of suggestion - help the SA-MP community contribute
#1

It's understandable that the SA-MP team can not focus on patching non-critical bugs and implementing all the features the community wants.

Some plugin developers have begun going over many of these things. It is, however, very time consuming and not at all future-proof to spend countless hours "memory hacking" the server.

Given the right prerequisites, the community would thrive in this area. By implementing low-level, but consistent, APIs for plugin developers, the SA-MP team would allow the community to keep SA-MP evolving in-between versions.

Some examples of easy to make, but very useful APIs for plugin developers:
  • Allow plugins to capture, modify, and discard incoming/outgoing RPCs
  • Make some internal structs/classes public (sync data, vehicle data, ..)
  • Disclose the list of RPCs
The reason many great plugins die is nobody has the time/effort to do the work of finding memory addresses and such with every new release.

Some things that could be achieved and future-proof with the proposed changes:
  • An NPC plugin that gives full control over the NPC
  • Fixing sync bugs as they are discovered (infinity shooting, sliding, knives, etc.)
  • Many new scripting functions (many sought-after Do/Set X ForPlayer, for instance)
One final point: doing this would slow down the currently ongoing reverse-engineering of the client/server.
Reply
#2

That would be great but i don't think that would be made for 0.3.7. In my opinion an open source is what sa-mp needs so we can fix bugs and add new functions but i don't think that will happen.
I hope to see more great stuff in 0.3.7.
Reply
#3

Making the software open-source would help those with a malicious intent to find critical issues and wreak havoc.

The changes I propose, however, would probably have the opposite effect!

At the moment there are many open-source projects made by good-willed people, who could be used and turned around to do bad things.

If Kalcor would disclosed information he deems safe, the good-willed plugin developers wouldn't need to do memory hacking in the first place, which would slow down the reverse-engineering of the SA-MP client/server.
Reply
#4

Quote:
Originally Posted by Slice
Посмотреть сообщение
Making the software open-source would help those with a malicious intent to find critical issues and wreak havoc.

The changes I propose, however, would probably have the opposite effect!

At the moment there are many open-source projects made by good-willed people, who could be used and turned around to do bad things.

If Kalcor would disclosed information he deems safe, the good-willed plugin developers wouldn't need to do memory hacking in the first place, which would slow down the reverse-engineering of the SA-MP client/server.
Yes i think you are right. Maybe only trusted people should work on it. The use of hacks is a main issue of sa-mp. Sure you can make an anti-cheat system but not everything can't be stopped like sending fake packets.
Reply
#5

indeed, it's time to accept that reverse engineering the samp server is a big part of samp in 2015. Samp has benefited greatly from the rnpc and ysf plugins all created from reverse engineers who are trying to benefit samp. If kye can look at all the structs and approve the ones plugin developers can use, we wouldn't need to use hacky methods that might break in future versions.

Considering the ysf plugin hasn't been deleted from the samp forums yet it seems like kye approves of this kind of reversing of the samp server. Not everyone who knows how to reverse engineer in samp is making hacks. A lot of us want to benefit samp.
Reply
#6

That'd be great!

Though I doubt it would happen, anyways...
Reply
#7

+1 for this.
Reply
#8

Dont go straight to open source discussion...there are always pros and cons.

Anyway a solid API would help allot and its a great suggestion
Reply
#9

Would be very good

Would be big help with ysf
Reply
#10

Quote:
Originally Posted by Slice
Посмотреть сообщение
Making the software open-source would help those with a malicious intent to find critical issues and wreak havoc.

The changes I propose, however, would probably have the opposite effect!

At the moment there are many open-source projects made by good-willed people, who could be used and turned around to do bad things.

If Kalcor would disclosed information he deems safe, the good-willed plugin developers wouldn't need to do memory hacking in the first place, which would slow down the reverse-engineering of the SA-MP client/server.
On the other hand, you can see where you can improve and where you can make it more safe.

I, personally, don't see what's wrong with making SAMP open source.
Is he afraid other people will open more samp projects ?
MTA already is open source, people can copy their source and open their SAMP/MTA version.


Making it open source will give players of SAMP who have knowledge in memory hacking and C++ the option to constribute and improve samp, nevertheless, add an in-built anti-cheats, help remove the exploits and maybe even minimize the ping of the players. ( improving net management )


Can RakNet copyright be the issue why SAMP isn't open source ?
Reply
#11

Don't turn this topic into "let's make SA-MP open source." - that's been discussed to death. That's not what this topic is about. What is being asked for is essentially a better plugin SDK.
Reply
#12

SA-MP doesn't even have a good ban system or something to get an unique player "KEY" or something.
Reply
#13

Quote:
Originally Posted by nGen.SoNNy
View Post
SA-MP doesn't even have a good ban system or something to get an unique player "KEY" or something.
That's actually a really good idea, has anybody else thought about this already?
Reply
#14

Quote:
Originally Posted by Jimmy0wns
View Post
That's actually a really good idea, has anybody else thought about this already?
Useless.
Reply
#15

Quote:
Originally Posted by Jimmy0wns
View Post
That's actually a really good idea, has anybody else thought about this already?
MTA uses that method for bans, but this is a topic for another suggestion..

Would be very nice to see this being implemented into SAMP though, it could benefit in several ways!
Reply
#16

Quote:
Originally Posted by CalvinC
View Post
MTA uses that method for bans, but this is a topic for another suggestion..

Would be very nice to see this being implemented into SAMP though, it could benefit in several ways!
They always declare that it is possible to spoof/change those keys, and they never get implemented. That's probably because SA-MP dosen't have any good protection against cheats and hacks, if they did this function would be very useful. I have a lot of players who use Dynamic IPs or Proxies to avoid bans, and you just can't ban them all. Banning ranges also could ban innocent players which is bad for servers.
Everyone could benefit from this function, but sadly, I doubt that if it is going to be added in the future.
Reply
#17

Quote:
Originally Posted by Whitetiger
View Post
Don't turn this topic into "let's make SA-MP open source." - that's been discussed to death. That's not what this topic is about. What is being asked for is essentially a better plugin SDK.
In my opinion, its completely redicolous that we must demand to receive basic needs.

I know its not the topic, but I wanted to share my opinion about it.
Reply
#18

I toyed with the idea of making all the server's internal structures available to the plugins. The problem is similar to the issue with memory hacking plugins. The internal structures in the server are being changed around all the time. I don't want to put SA-MP in a position where internal parts can't be changed because it would require all the plugins to be updated.

I have already seen one case where a server couldn't update to the 0.3.7 RC because there is no YSF plugin available.

So for now SA-MP's API is the pawn scripting, with all its limitations. That's the interface I try to keep consistent across versions.

My opinion is you are better off requesting pawn functions/callbacks for the data you want to access/set. Things like RPCs are too low level for an API. These are deliberately changed around for every new version to make sure old attack tools are fully deprecated.
Reply
#19

Quote:
Originally Posted by Kalcor
View Post
I toyed with the idea of making all the server's internal structures available to the plugins. The problem is similar to the issue with memory hacking plugins. The internal structures in the server are being changed around all the time. I don't want to put SA-MP in a position where internal parts can't be changed because it would require all the plugins to be updated.

I have already seen one case where a server couldn't update to the 0.3.7 RC because there is no YSF plugin available.

So for now SA-MP's API is the pawn scripting, with all its limitations. That's the interface I try to keep consistent across versions.

My opinion is you are better off requesting pawn functions/callbacks for the data you want to access/set. Things like RPCs are too low level for an API. These are deliberately changed around for every new version to make sure old attack tools are fully deprecated.
Yeah, basically the same as https://sampforum.blast.hk/showthread.php?tid=128338.

How about adding most of the YSF's get/set functions, alot of servers could really use them, without having the hassle of YSF, since even kurta said most of it is bugged.

Code:
native GetPlayerSirenState(playerid);
native GetPlayerLandingGearState(playerid);
native GetPlayerHydraReactorAngle(playerid); 
native Float:GetPlayerTrainSpeed(playerid);
native Float:GetPlayerZAim(playerid);
Functions like those are really helpful, kinda hard to rely on tracking KEYS to get those, lag and desync and cause incorrect results. ZAim would help in detecting some cheats.

Also could you really consider some of those get* functions? Guess you noticed how harder its getting to store data for those, pickups are limited at 4096, if someone wanted to track pickup models they would have to create an array that size. GetPickupModel would help.

"90% of the information held by the server can already be accessed using pawn." Even though you say that's the case, theres alot of information we still can't access without tracking them ourselves..
Reply
#20

I would say don't focus on those Get* functions for lazy scripters (such as GetPickupModel).

What about a slightly higher level API for sync data? To read, modify, and send sync packets. So many amazing things could be done.

Just look at my plugin & include where I fixed knife sync, made death animations synced, made fast-shooting RPGs/snipers synced, made HP bars synced for server-side health, and more.
Or the (A-Z)NPC plugins that make it possible to customize NPCs in many ways.

As long as there is some way to access the functionality, albeit hard, us Pawn scripters will find a way to make it work.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)