Welcome, Guest |
You have to register before you can post on our site.
|
Online Users |
There are currently 323 online users. » 0 Member(s) | 320 Guest(s) Bing, Google, Yandex
|
Latest Threads |
[Request] Linko Gaming Ro...
Forum: General Discussions
Last Post: JamesC
6 hours ago
» Replies: 0
» Views: 4
|
RevolutionX DM/Stunt/Race...
Forum: Advertisements
Last Post: DerekZ905
2025-06-18, 03:12 PM
» Replies: 0
» Views: 49
|
samp-cef
Forum: Questions and Suggestions
Last Post: jamespssamp
2025-06-18, 11:36 AM
» Replies: 0
» Views: 30
|
SA-MP Crash
Forum: General Discussions
Last Post: davidfreeman
2025-06-11, 04:58 AM
» Replies: 0
» Views: 164
|
Offering Pawn Scripting S...
Forum: Pawn Scripting
Last Post: Mido
2025-06-07, 01:30 PM
» Replies: 0
» Views: 257
|
How to make your GTA SA:M...
Forum: Tutorials
Last Post: NoxxeR
2025-06-07, 06:48 AM
» Replies: 3
» Views: 1,202
|
discord ban
Forum: Support
Last Post: NickS
2025-06-07, 06:23 AM
» Replies: 2
» Views: 483
|
Sons of silence Motorcycl...
Forum: Advertisements
Last Post: thongek.wpm
2025-06-03, 02:24 PM
» Replies: 0
» Views: 353
|
Empire Freeroam Roleplay ...
Forum: Advertisements
Last Post: krishgamer1964
2025-06-03, 11:25 AM
» Replies: 0
» Views: 412
|
Script[gamemodes/gamemode...
Forum: Pawn Scripting
Last Post: jeppe9821
2025-06-01, 09:27 AM
» Replies: 0
» Views: 393
|
|
|
PawnScraper |
Posted by: SyS - 2019-04-14, 06:46 AM - Forum: Plugins
- No Replies
|
 |
PawnScraper
Installing
Thanks to Southclaws,plugin installation is now much easier with sampctl
PHP Code: sampctl p install Sreyas-Sreelal/pawn-scraper
OR
- Download suitable binary files from releases for your operating system
- Add it your plugins folder
- Add PawnScraper to server.cfg or? PawnScraper.so (for linux)
- Add pawnscraper.inc in includes folder
Building
- Clone the repo
PHP Code: git clone https://github.com/Sreyas-Sreelal/pawn-scraper.git
- Compile the plugin using nightly compiler
- Windows
PHP Code: cargo 鸨↶i686-pc-windows-msvc build --release
- Linux
PHP Code: cargo 鸨↶i686-unknown-linux-gnu build --release
API
- ParseHtmlDocument(document[])]
- Params
- document[] - string of html document
- Returns
- Html document instance id
- if failed to parse document INVALID_HTML_DOC is returned
- Example Usage
PHP Code: new Html:doc = ParseHtmlDocument("\
<!DOCTYPE html>\
<meta charset=\"utf-8\">\
<title>Hello, world!</title>\
<h1 class=\"foo\">Hello, <i>world!</i></h1>\
");
ASSERT(doc != INVALID_HTML_DOC);
DeleteHtml(doc);
- ResponseParseHtml(Response:id)
- Params
- id - Http response id returned from HttpGet
- Returns
- Html document instance id
- if failed to parse document INVALID_HTML_DOC is returned
- Example Usage
PHP Code: new Response:response = HttpGet("https://www.sa-mp.com");
new Html:doc = ResponseParseHtml(response);
ASSERT(doc != INVALID_HTML_DOC);
DeleteHtml(doc);
- HttpGet(url[],Header:headerid=INVALID_HEADER)
- Params
- url[] - Url of a website
- header - id of header object created using CreateHeader
- Returns
- Response id if successful
- if failed to INVALID_HTTP_RESPONSE is returned
- Example Usage
PHP Code: new Response:response = HttpGet("https://www.sa-mp.com");
ASSERT(response != INVALID_HTTP_RESPONSE);
DeleteResponse(response);
- HttpGetThreaded(playerid,callback[],url[],Header:headerid=INVALID_HEADER)
- Params
- playerid - id of the player
- callback[] - name of the callback function to handle the response.
- url[] - Url of a website
- header - id of header object created using CreateHeader
- Example Usage
PHP Code: HttpGetThreaded(0,"MyHandler","https://sa-mp.com");
//********
forward MyHandler(playerid,Response:responseid);
public MyHandler(playerid,Response:responseid){
? ? ASSERT(responseid != INVALID_HTTP_RESPONSE);
? ? DeleteResponse(responseid);
}
- ParseSelector(string[])
- Params
- Returns
- Selector instance id if successful
- if failed to INVALID_SELECTOR is returned
- Example Usage
PHP Code: new Selector:selector = ParseSelector("h1 .foo");
ASSERT(selector != INVALID_SELECTOR);
DeleteSelector(selector);
- CreateHeader(?)
- Params
- key,value pairs of String type
- Returns
- Header instance id if successful
- if failed to INVALID_HEADER is returned
- Example Usage
PHP Code: new Header:header = CreateHeader(
? ? "User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
);
ASSERT(header != INVALID_HEADER);
new Response:response = HttpGet("https://sa-mp.com/",header);
ASSERT(response != INVALID_HTTP_RESPONSE);
ASSERT(DeleteHeader(header) == 1);
- GetNthElementName(Html:docid,Selector:selectorid,idx,string[],size = sizeof(string))
- Params
- docid - Html instance id
- selectorid - CSS selector instance id
- idx - the n?th occurence of element in the document (starts from 0)
- string[] - element name is stored
- size - sizeof string
- Returns
- 1 if successful
- 0 if failed
- Example Usage
PHP Code: new Html:doc = ParseHtmlDocument("\
? ? <!DOCTYPE html>\
? ? <meta charset=\"utf-8\">\
? ? <title>Hello, world!</title>\
? ? <h1 class=\"foo\">Hello, <i>world!</i></h1>\
");
ASSERT(doc != INVALID_HTML_DOC);
new Selector:selector = ParseSelector("i");
ASSERT(selector != INVALID_SELECTOR);
new i= -1,element_name[10];
while(GetNthElementName(doc,selector,,element_name)!=0){
? ? ASSERT(strcmp(element_name,"i") == 0);
}
DeleteSelector(selector);
DeleteHtml(doc);
- GetNthElementText(Html:docid,Selector:selectorid,idx,string[],size = sizeof(string))
- Params
- docid - Html instance id
- selectorid - CSS selector instance id
- idx - the n?th occurence of element in the document (starts from 0)
- string[] - element name
- size - sizeof string
- Returns
- 1 if successful
- 0 if failed
- Example Usage
PHP Code: new Html:doc = ParseHtmlDocument("\
? ? <!DOCTYPE html>\
? ? <meta charset=\"utf-8\">\
? ? <title>Hello, world!</title>\
? ? <h1 class=\"foo\">Hello, <i>world!</i></h1>\
");
ASSERT(doc != INVALID_HTML_DOC);
new Selector:selector = ParseSelector("h1.foo");
ASSERT(selector != INVALID_SELECTOR);
new element_text[20];
ASSERT(GetNthElementText(doc,selector,0,element_text) == 1);
new check = strcmp(element_text,("Hello, world!"));
ASSERT(check == 0);
DeleteSelector(selector);
DeleteHtml(doc);
- GetNthElementAttrVal(Html:docid,Selector:selectorid,idx,attribute[],string[],size = sizeof(string))
- Params
- docid - Html instance id
- selectorid - CSS selector instance id
- idx - the n?th occurence of element in the document (starts from 0)
- attribute[] - the attribute of element
- string[] - element name
- size - sizeof string
- Returns
- 1 if successful
- 0 if failed
- Example Usage
PHP Code: new Html:doc = ParseHtmlDocument("\
<!DOCTYPE html>\
<meta charset=\"utf-8\">\
<title>Hello, world!</title>\
<h1 class=\"foo\">Hello, <i>world!</i></h1>\
");
ASSERT(doc != INVALID_HTML_DOC);
new Selector:selector = ParseSelector("h1");
ASSERT(selector != INVALID_SELECTOR);
new element_attribute[20];
ASSERT(GetNthElementAttrVal(doc,selector,0,"class",element_attribute) == 1);
new check = strcmp(element_attribute,("foo"));
ASSERT(check == 0);
DeleteSelector(selector);
DeleteHtml(doc);
- DeleteHtml(Html:id)
- Params
- id - html instance to be deleted
- Returns
- 1 if successful
- 0 if failed
- DeleteSelector(Selector:id)
- Params
- id - selector instance to be deleted
- Returns
- 1 if successful
- 0 if failed
- DeleteResponse(Html:id)
- Params
- id - response instance to be deleted
- Returns
- 1 if successful
- 0 if failed
- DeleteHeader(Header:id)
- Params
- id - header instance to be deleted
- Returns
- 1 if successful
- 0 if failed
Example Usage
A small example to fetch all links in wiki.sa-mp.com
PHP Code: new Response:response = HttpGet("https://wiki.sa-mp.com");
if(response == INVALID_HTTP_RESPONSE){
printf("HTTP ERROR");
return;
}
new Html:html = ResponseParseHtml(response);
if(html == INVALID_HTML_DOC){
DeleteResponse(response);
return;
}
new Selector:selector = ParseSelector("a");
if(selector == INVALID_SELECTOR){
DeleteResponse(response);
DeleteHtml(html);
return;
}
new str[500],i;
while(GetNthElementAttrVal(html,selector,i,"href",str)){
printf("%s",str);
;
}
//delete created objects after the usage..
DeleteHtml(html);
DeleteResponse(response);
DeleteSelector(selector);
The same above with threaded http call would be
PHP Code: HttpGetThreaded(0,"MyHandler","https://wiki.sa-mp.com");
//...
forward MyHandler(playerid,Response:responseid);
public MyHandler(playerid,Response:responseid){
if(responseid == INVALID_HTTP_RESPONSE){
printf("HTTP ERROR");
return 0;
}
new Html:html = ResponseParseHtml(responseid);
if(html == INVALID_HTML_DOC){
DeleteResponse(response);
return 0;
}
new Selector:selector = ParseSelector("a");
if(selector == INVALID_SELECTOR){
DeleteResponse(response);
DeleteHtml(html);
return 0;
}
new str[500],i;
while(GetNthElementAttrVal(html,selector,i,"href",str)){
printf("%s",str);
;
}
DeleteHtml(html);
Delete(response);
DeleteSelector(selector);
return 1;
}
More examples can be found in examples
Repository
https://github.com/Sreyas-Sreelal/pawn-scraper
Note
The plugin is in primary stage and more tests and features needed to be added.I?m open to any kind of contribution, just open a pull request if you have anything to improve or add new features.
Special thanks
|
|
|
Telegram Connector |
Posted by: SyS - 2019-04-14, 06:38 AM - Forum: Plugins
- Replies (9)
|
 |
TgConnector
A telegram connector plugin that helps to interact with telgram bots through SA-MP.
Installing
If you are a sampctl user
PHP Code: sampctl p install Sreyas-Sreelal/tgconnector
OR
- Download suitable binary files from releases for your operating system
- Add it your plugins folder
- Add tgconnector to server.cfg or? tgconnector.so (for linux)
- Add tgconnector.inc in includes folder
Building
- Clone the repo
PHP Code: git clone https://github.com/sreyas-sreelal/tgconnector.git
- Use makefile to compile and test
- Setup testing environment
- To build release version
- Run tests
Example
A basic bot
PHP Code: #include<a_samp>
#include<tgconnector>
#include<zcmd>
#define CHAT_ID (TGChatId:"YOUR_CHAT_ID_HERE")
new TGBot:g_bot;
main() {
//Store bot token in SAMP_TG_BOT environment variable and connect from it
g_bot = TGConnectFromEnv("SAMP_TG_BOT");
if(g_bot != INVALID_BOT_ID) {
printf("bot connected successfully!");
} else {
printf("Error: bot couldn't connect");
}
}
public OnTGMessage(TGBot:bot,TGUser:fromid,TGMessage:messageid) {
if(g_bot != bot){
return 1;
}
new?
message[50],
username[24],
chatname[56],
server_msg[128];
TGCacheGetMessage(message);
TGCacheGetUserName(username);
TGCacheGetChatName(chatname);
format(server_msg,128,"[%s] %s(%d): %s",chatname,username,_:fromid,message);
SendClientMessageToAll(-1,server_msg);
return 1;
}
public OnTGUserJoined(TGBot:bot,TGUser:userid) {
new?
TGChatId:chatid[15],
username[24],
chatname[56],
server_msg[128];
? ? //Retrive data stored in current context
TGCacheGetUserName(username);
TGCacheGetChatId(chatid);
TGCacheGetChatName(chatname);
format(server_msg,128,"User %s(%d) joined %s(%s)",username,_:userid,chatname,_:chatid);
SendClientMessageToAll(-1,server_msg);
return 1;
}
public OnTGUserLeft(TGBot:bot,TGUser:userid) {
new?
TGChatId:chatid[15],
username[24],
chatname[56],
server_msg[128];
TGCacheGetUserName(username);
TGCacheGetChatId(chatid);
TGCacheGetChatName(chatname);
format(server_msg,128,"User %s(%d) left %s(%s)",username,_:userid,chatname,_:chatid);
SendClientMessageToAll(-1,server_msg);
return 1;
}
CMD:sendtgmessage(playerid,params[]) {
TGSendMessage(g_bot,CHAT_ID,params);
return 1;
}
Notes
This plugin is still in WIP and more tests need to be done.If you find any bugs or have anything to contribute feel free to open an issue or pull request on github.
Also be sure to not to share your bot token with anyone it's recommended to store it inside a environment variable.
Repository
Source: https://github.com/Sreyas-Sreelal/tgconnector
Releases: https://github.com/Sreyas-Sreelal/tgconnector/releases
Wiki: https://github.com/Sreyas-Sreelal/tgconnector/wiki (Not complete yet)
|
|
|
Discord Ban Appeal |
Posted by: Gravityfalls - 2019-04-14, 06:33 AM - Forum: Chat
- Replies (6)
|
 |
Hi everyone,
To introduce, I'm Logic_ here.?Roughly one year ago, I was banned from the SA-MP's "unofficial" discord and since then stayed away from it. I think I've deserve to be unbanned and be part of the community once again - since Kalcor has decided to go nuts and ban everyone from the SA-MP forums for the apparent reason of "mutinty" (retardation).
I do think I should have PM'ed this to one of the mods. and not created a thread just for the sake of not getting useless attention. Regardless, I've been banned before by Rehasher for being involved in a server responsible for attacking BA-RP's forum, which I had no part in and was unbanned later. I do not remember for what reasons I was banned now.
Regards.
PS: Here's a PewDiePie video: https://youtu.be/rNbNEcKpFz4?t=378
|
|
|
Og?lny chat |
Posted by: Riddick - 2019-04-14, 06:17 AM - Forum: Og?lne
- Replies (36)
|
 |
Czesc,
W tym og?lnym czacie mozemy porozmawiac o wszystkim co sie dzieje ostatnio na scenie Open.MP czy tez SA-MP.?
Po co tu jestesmy, co sie wydarzylo w minionych tygodniach i og?lnie porozmawiac.
|
|
|
The website doesn't work |
Posted by: Verc - 2019-04-14, 05:48 AM - Forum: Support
- Replies (8)
|
 |
For some reason, burgershot.gg is not working without VPN(I'm using singapore based VPN). I lived in Indonesia currently. It only says connection timed out. Is this expected to happen?
|
|
|
How does one cope? |
Posted by: cuddlypanda - 2019-04-14, 05:44 AM - Forum: Life
- Replies (21)
|
 |
Is it just me or sometimes the things which once?used to bring someone joy just seem bland and tasteless now....Like the mere reasons for someone to crack a smile every day just seem like fading away??
For me personally, I've been struggling with this thought for quite?some time, for two long years I had been waiting to get past a tough period in life where I had no time for myself and now when I'm through, it doesn't seem as joyous as I had imagined, in fact, The reasons which drove me through my tough 2 years just don't excite me anymore! I just lay in bed or eat or casually chat around with friends. Is it just me or does this happen with you all as well? If yes, how does one cope :(
|
|
|
|