Welcome, Guest |
You have to register before you can post on our site.
|
Forum Statistics |
» Members: 6,511
» Latest member: snaptrap
» Forum threads: 2,233
» Forum posts: 12,034
Full Statistics
|
Online Users |
There are currently 310 online users. » 0 Member(s) | 308 Guest(s) Bing, Google
|
Latest Threads |
I humor myself
Forum: Programming
Last Post: nami16504
4 hours ago
» Replies: 5
» Views: 8,040
|
Command does not work in-...
Forum: Pawn Scripting
Last Post: PANZEHIR_
2024-11-23, 06:36 PM
» Replies: 0
» Views: 42
|
White Screen
Forum: Support
Last Post: Phat202146_real
2024-11-21, 02:50 PM
» Replies: 0
» Views: 39
|
I get error 021 using y_h...
Forum: Pawn Scripting
Last Post: daniscript18
2024-11-18, 11:34 PM
» Replies: 0
» Views: 60
|
Il reste des français sur...
Forum: French/Fran?ais
Last Post: tysanio
2024-11-18, 05:39 AM
» Replies: 2
» Views: 467
|
Object creation issues
Forum: Programming
Last Post: K1271
2024-11-15, 11:51 PM
» Replies: 0
» Views: 56
|
Is the SAMP Hosting the s...
Forum: General Discussions
Last Post: OperaGX
2024-11-14, 09:33 PM
» Replies: 0
» Views: 75
|
Run time error 19: "File ...
Forum: Pawn Scripting
Last Post: Rexey
2024-11-14, 03:50 AM
» Replies: 0
» Views: 65
|
How to Compile Your Gamem...
Forum: Tutorials
Last Post: thelante
2024-11-13, 08:50 AM
» Replies: 3
» Views: 472
|
Modeller wanted
Forum: Development Updates
Last Post: acc.gangbeni
2024-11-11, 05:10 PM
» Replies: 9
» Views: 16,506
|
|
|
Team Selection (MySQL) |
Posted by: homelessdrop - 2019-11-03, 02:08 PM - Forum: Pawn Scripting
- Replies (2)
|
|
Hello dier forum member's.
I have a question about a team selection,?specifically in mysql login / register system.
I would like to make coops and robbers selection, after register give selection menu, where u know select of 3 type's, and spawn with it.?
Other about save/load that selected team i can make, just that "after spawn not".
Please, can u help me?
(script is maded by GTLS on samp-forum.?link)
PHP Code: #include <a_samp>
#include <a_mysql> // Currently its R41-4.
#include <bcrypt> //Bcrypt is the best way of encrypting passwords.
#include <foreach> //foreach standalone version
//Defining MySQL stuff here
#define DB_HOST "localhost" //IP of your host. In case of using it on same pc, use localhost or 127.0.0.1
#define DB_NAME "login" //Name of Database you are gonna use.. I have used login, but change it according to your needs.
#define DB_USER "root" //User name of your MySQL client.
#define DB_PASS "" //Password of your MySQL client.
//Default Username is root and password is blank. You still gotta define them
//Make sure to install XAMPP server. Start Apache and MySQL service when you start the server. You can manage SQL databases from PHPMyAdmin which comes in built in XAMPP.
enum //Always use some kind of structure for Dialog IDs.
{
DIALOG_ASK,
DIALOG_REGISTER,
DIALOG_LOGIN
};
enum pinfo
{
MasterID,
Float:PX,
Float:PY,
Float:PZ,
Float:Rot,
Skin,
Level,
bool:LoggedIn
};
new pInfo[MAX_PLAYERS][pinfo];
new MySQL:handle; //This connection handle of data type MySQL is required to carry out Mysql operations.
main()
{
printf("Login Script Loaded");
}
public OnGameModeInit()
{
handle = mysql_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if(mysql_errno(handle) == 0) printf("[MYSQL] Connection successful"); //returns number of errors. 0 means no errors..
else
{
? ?new error[100];
? ?mysql_error(error, sizeof(error), handle);
printf("[MySQL] Connection Failed : %s", error);
}
return 1;
}
public OnGameModeExit()
{
foreach(new i : Player)
{
if(pInfo[i][LoggedIn]) SavePlayerData(i);
}
mysql_close(handle);
return 1;
}
public OnPlayerConnect(playerid)
{
new query[64];
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
mysql_format(handle, query, sizeof(query), "SELECT COUNT(Name) from `users` where Name = '%s' ", pname);
mysql_tquery(handle, query, "OnPlayerJoin", "d", playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(pInfo[playerid][LoggedIn]) SavePlayerData(playerid);
pInfo[playerid][LoggedIn] = false;
return 1;
}
public OnPlayerSpawn(playerid)
{
? ?//Set your spawn info here...
return 1;
}
SavePlayerData(playerid)
{
new query[256], pname[MAX_PLAYER_NAME], Float:px, Float:py, Float:pz, Float:rot;
GetPlayerName(playerid, pname, sizeof(pname));
GetPlayerPos(playerid, px, py, pz);
GetPlayerFacingAngle(playerid, rot);
mysql_format(handle, query, sizeof(query), "UPDATE `users` set PosX = %f, PosY = %f, PosZ = %f, Rot = %f, Skin = %d, Level = %d WHERE Master_ID = %d", px, py, pz, rot, pInfo[playerid][Skin], pInfo[playerid][Level], pInfo[playerid][MasterID]);
mysql_query(handle, query);
printf("Saved %s's data", pname);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTER:
? ?{
if(response)
{
? ?bcrypt_hash(inputtext, 12, "OnPassHash", "d", playerid);
}
else Kick(playerid);
}
case DIALOG_LOGIN:
{
if(response)
{
new query[128], pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
? ? SetPVarString(playerid, "Unhashed_Pass",inputtext);
mysql_format(handle, query, sizeof(query), "SELECT password, Master_ID from `users` WHERE Name = '%s'", pname);
mysql_tquery(handle, query, "OnPlayerLogin", "d", playerid);
}
else Kick(playerid);
}
}
return 1;
}
forward OnPlayerJoin(playerid);
public OnPlayerJoin(playerid)
{
new rows;
cache_get_value_index_int(0, 0, rows);
if(rows) ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "This account is found on your database. Please login", "Login", "Quit");
else ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "This account not is found on your database. Please register", "Register", "Quit");
return 1;
}
forward OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
SendClientMessage(playerid, 0x0033FFFF /*Blue*/, "Thank you for registering! You can now Login");
? ?ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Thank you for registering! You can now Login with\npassword you just used to register.", "Login", "Quit");
return 1;
}
forward OnPlayerLogin(playerid);
public OnPlayerLogin(playerid)
{
new pPass[255], unhashed_pass[128];
GetPVarString(playerid, "Unhashed_Pass",unhashed_pass,sizeof(unhashed_pass));
if(cache_num_rows())
{
cache_get_value_index(0, 0, pPass);
cache_get_value_index_int(0, 1, pInfo[playerid][MasterID]);
bcrypt_check(unhashed_pass, pPass, "OnPassCheck", "dd",playerid, pInfo[playerid][MasterID]);
? }
? ?else printf("ERROR ");
return 1;
}
forward OnPassHash(playerid);
public OnPassHash(playerid)
{
new pass[BCRYPT_HASH_LENGTH], query[128], pname[MAX_PLAYER_NAME];
? ?GetPlayerName(playerid, pname, sizeof(pname));
? ?bcrypt_get_hash(pass);
? ?mysql_format(handle, query, sizeof(query), "INSERT INTO `users`(Name, Password) VALUES('%s', '%e')", pname, pass);
mysql_tquery(handle, query, "OnPlayerRegister", "d", playerid);
return 1;
}
forward OnPassCheck(playerid, DBID);
public OnPassCheck(playerid, DBID)
{
? ?if(bcrypt_is_equal())
{
SetPlayerInfo(playerid, DBID);
}
else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "The password you just entered is wrong.\nPlease Try again!", "Login", "Quit");
return 1;
}
SetPlayerInfo(playerid, dbid)
{
new query[128];
mysql_format(handle, query, sizeof(query), "SELECT ?PosX, PosY, PosZ, Rot, Skin, Level FROM `users` WHERE Master_ID = %d", dbid);
new Cache:result = mysql_query(handle, query);
cache_get_value_index_float(0, 0, pInfo[playerid][PX]);
cache_get_value_index_float(0, 1, pInfo[playerid][PY]);
cache_get_value_index_float(0, 2, pInfo[playerid][PZ]);
cache_get_value_index_float(0, 3, pInfo[playerid][Rot]);
cache_get_value_index_int(0, 4, pInfo[playerid][Skin]);
cache_get_value_index_int(0, 5, pInfo[playerid][Level]);
pInfo[playerid][LoggedIn] = true;
cache_delete(result);
SetPlayerScore(playerid, pInfo[playerid][Level]);
SetSpawnInfo(playerid, 0, pInfo[playerid][Skin], pInfo[playerid][PX], pInfo[playerid][PY], pInfo[playerid][PZ],pInfo[playerid][Rot], 0, 0, 0, 0, 0, 0);
TogglePlayerSpectating(playerid, false);
TogglePlayerControllable(playerid, true);
new name[MAX_PLAYER_NAME], str[80];
GetPlayerName(playerid, name, sizeof(name));
format(str, sizeof(str), "{00FF22}Welcome to the server, {FFFFFF}%s", name);
SendClientMessage(playerid, -1, str);
DeletePVar(playerid, "Unhashed_Pass");
SpawnPlayer(playerid);
return 1;
}
|
|
|
Protection against map-stealing |
Posted by: Mave - 2019-10-31, 04:43 PM - Forum: Questions and Suggestions
- Replies (2)
|
|
Just hear me out.
Like many of you, I've been playing and creating stuff in SA-MP for over a decade. I've been creating maps since 2008 and still enjoy making these.
However ever since the release of "map stealers" putting out maps on public servers is pretty much pointless because someone can steal your map in no-time and put it in their own server.
A fix or protection for this in open.mp would be... amazing. It would aspire me and many others to start mapping again and not seeing your maps get stolen by others.
Disclaimer: I know many of you couldn't care less about maps (certainly since a lot of servers don't use objects that much), but please do consider my two cents.
|
|
|
Kalcor removing many functions from SA:MP |
Posted by: Y_Less - 2019-10-30, 04:53 PM - Forum: Pawn Scripting
- Replies (6)
|
|
https://forum.sa-mp.com/showpost.php?p=4...tcount=331
Quote:I'm removing CreateMenu and associated functions from 0.3.9 and future versions because it was added by Y Less and I'd like to eventually remove everything contributed by him.
I haven't come across a server in the last 10 years that uses GTA:SA menus.
Here is a list of things contributed by me. I hope your server doesn't rely on any of them:
- Menus
- Text Draws (except models)
- Per-player objects (how every streamer works)
- Virtual Worlds
- Gang Zones (I think, not 100% on this)
- SetTimerEx
- CallLocalFunction (how many command processors works)
- CallRemoteFunction
- SendPlayerMessage
- ForceClassSelection
- Race checkpoints
- Race checkpoints
- GetPlayerWeaponData
|
|
|
Infamous internet speed / speedtest.net thread |
Posted by: Jarnokai - 2019-10-29, 10:10 AM - Forum: Chat
- Replies (36)
|
|
All of us have seen this before: Go to speedtest.net, do the test and embed your result for bragging rights.
To make this less spam and more conversational though, please tell us about your ISP and your experience with it, are you running mobile, DSL, cable, fiber? Also what speeds are you actually paying for? Previous ISPs, speeds, experiences?
Our apartment has fiber-to-cable, our subscription is 100/10 for 10?/month:
My mobile is a 4G LTE 100Mbps unlimited data plan for 18?/month:
This is the speed at my desk right now, obviously better/worse signal depending on where you are, better outside etc.
I always found it funny how my phone has 3x the upload speed of my computer. Would have extremely affordable 200, 400 and 1000 Mbps connections available as well but they would require taking a 2 year contract and I have not been willing to do that yet.
I still urge to get that gigabit internet for 40? a month :(
|
|
|
Some of my arts. |
Posted by: BitchLasagna - 2019-10-24, 11:35 AM - Forum: Art
- Replies (6)
|
|
This is some of my graphich designes, if you need design for your gaming community you can contact me.
|
|
|
|