Skip to content

Commit

Permalink
add 0.3.7 R2 functions
Browse files Browse the repository at this point in the history
  • Loading branch information
123marvin123 committed Jul 12, 2015
1 parent c5bca81 commit afaf688
Show file tree
Hide file tree
Showing 4 changed files with 340 additions and 0 deletions.
131 changes: 131 additions & 0 deletions src/shoebill/JniFunctions.cpp
Expand Up @@ -4642,4 +4642,135 @@ JNIEXPORT jboolean JNICALL Java_net_gtaun_shoebill_SampNativeFunction_registerFu
}
AmxInstanceManager::get().registerFunction(amx, functionString, classNames);
return true;
}

JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_setSVarInt(JNIEnv* env, jclass, jstring jVarName, jint jValue)
{
auto wmsg = env->GetStringChars(jVarName, NULL);
int len = env->GetStringLength(jVarName);

char varname[1024];
wcs2mbs(getServerCodepage(), wmsg, len, varname, sizeof(varname));
env->ReleaseStringChars(jVarName, wmsg);

SetSVarInt(varname, jValue);
}

JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_setSVarFloat(JNIEnv* env, jclass, jstring jVarName, jfloat jValue)
{
auto wmsg = env->GetStringChars(jVarName, NULL);
int len = env->GetStringLength(jVarName);

char varname[1024];
wcs2mbs(getServerCodepage(), wmsg, len, varname, sizeof(varname));
env->ReleaseStringChars(jVarName, wmsg);

SetSVarFloat(varname, jValue);
}

JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_setSVarString(JNIEnv* env, jclass, jstring jVarName, jstring jValue)
{
auto wmsg = env->GetStringChars(jVarName, NULL);
int len = env->GetStringLength(jVarName);

auto wmsgValue = env->GetStringChars(jValue, NULL);
int lenValue = env->GetStringLength(jValue);

char varname[1024];
wcs2mbs(getServerCodepage(), wmsg, len, varname, sizeof(varname));
env->ReleaseStringChars(jVarName, wmsg);

char value[1024];
wcs2mbs(getServerCodepage(), wmsgValue, lenValue, value, sizeof(value));
env->ReleaseStringChars(jValue, wmsgValue);

SetSVarString(varname, value);
}

JNIEXPORT jint JNICALL Java_net_gtaun_shoebill_SampNativeFunction_getSVarInt(JNIEnv* env, jclass, jstring jVarName)
{
auto wmsg = env->GetStringChars(jVarName, NULL);
int len = env->GetStringLength(jVarName);

char varname[1024];
wcs2mbs(getServerCodepage(), wmsg, len, varname, sizeof(varname));
env->ReleaseStringChars(jVarName, wmsg);

return GetSVarInt(varname);
}

JNIEXPORT jfloat JNICALL Java_net_gtaun_shoebill_SampNativeFunction_getSVarFloat(JNIEnv* env, jclass, jstring jVarName)
{
auto wmsg = env->GetStringChars(jVarName, NULL);
int len = env->GetStringLength(jVarName);

char varname[1024];
wcs2mbs(getServerCodepage(), wmsg, len, varname, sizeof(varname));
env->ReleaseStringChars(jVarName, wmsg);

return GetSVarFloat(varname);
}

JNIEXPORT jstring JNICALL Java_net_gtaun_shoebill_SampNativeFunction_getSVarString(JNIEnv* env, jclass, jstring jVarName)
{
auto wmsg = env->GetStringChars(jVarName, NULL);
int len = env->GetStringLength(jVarName);

char varname[1024];
wcs2mbs(getServerCodepage(), wmsg, len, varname, sizeof(varname));
env->ReleaseStringChars(jVarName, wmsg);

char value[1024];

GetSVarString(varname, &value[0], sizeof(value));

if (value)
{
jchar tempChars[sizeof(value)];
for (int i = 0; i < sizeof(tempChars) / sizeof(jchar); i++)
{
tempChars[i] = value[i];
}
return env->NewString(tempChars, strlen(value));
}
return NULL;
}

JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_deleteSVar(JNIEnv* env, jclass, jstring jVarName)
{
auto wmsg = env->GetStringChars(jVarName, NULL);
int len = env->GetStringLength(jVarName);

char varname[1024];
wcs2mbs(getServerCodepage(), wmsg, len, varname, sizeof(varname));
env->ReleaseStringChars(jVarName, wmsg);

DeleteSVar(varname);
}

JNIEXPORT jstring JNICALL Java_net_gtaun_shoebill_SampNativeFunction_sha256Hash(JNIEnv* env, jclass, jstring jPassword, jstring jSalt)
{
auto wmsg = env->GetStringChars(jPassword, NULL);
int len = env->GetStringLength(jPassword);

auto wmsgSalt = env->GetStringChars(jSalt, NULL);
int saltLen = env->GetStringLength(jSalt);

char password[1024];
wcs2mbs(getServerCodepage(), wmsg, len, password, sizeof(password));
env->ReleaseStringChars(jPassword, wmsg);

char salt[1024];
wcs2mbs(getServerCodepage(), wmsgSalt, saltLen, salt, sizeof(salt));
env->ReleaseStringChars(jSalt, wmsgSalt);

char hash[1024];
SHA256_PassHash(password, salt, &hash[0], sizeof(hash));

jchar tempChars[sizeof(hash)];
for (int i = 0; i < sizeof(tempChars) / sizeof(jchar); i++)
{
tempChars[i] = hash[i];
}
return env->NewString(tempChars, strlen(hash));
}
64 changes: 64 additions & 0 deletions src/shoebill/JniFunctions.h
Expand Up @@ -1566,6 +1566,70 @@ extern "C" {
JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_createExplosionForPlayer
(JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jint, jfloat);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: setSVarInt
* Signature: (Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_setSVarInt
(JNIEnv *, jclass, jstring, jint);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: setSVarFloat
* Signature: (Ljava/lang/String;F)V
*/
JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_setSVarFloat
(JNIEnv *, jclass, jstring, jfloat);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: setSVarString
* Signature: (Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_setSVarString
(JNIEnv *, jclass, jstring, jstring);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: getSVarInt
* Signature: (Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_net_gtaun_shoebill_SampNativeFunction_getSVarInt
(JNIEnv *, jclass, jstring);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: getSVarFloat
* Signature: (Ljava/lang/String;)F
*/
JNIEXPORT jfloat JNICALL Java_net_gtaun_shoebill_SampNativeFunction_getSVarFloat
(JNIEnv *, jclass, jstring);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: getSVarString
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_net_gtaun_shoebill_SampNativeFunction_getSVarString
(JNIEnv *, jclass, jstring);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: deleteSVar
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_net_gtaun_shoebill_SampNativeFunction_deleteSVar
(JNIEnv *, jclass, jstring);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: sha256Hash
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_net_gtaun_shoebill_SampNativeFunction_sha256Hash
(JNIEnv *, jclass, jstring, jstring);

/*
* Class: net_gtaun_shoebill_SampNativeFunction
* Method: sendClientMessage
Expand Down
134 changes: 134 additions & 0 deletions src/wrapper/Functions.cpp
Expand Up @@ -3505,6 +3505,140 @@ int UnBlockIpAddress(const char* ip_address)
return ret;
}

int SetSVarInt(const char* varname, int value)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();

cell args[3] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, varname), value
};

auto ret = func(pAMX, args);
amx_Release(pAMX, args[1]);
return ret;
}

int GetSVarInt(const char* varname)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();

cell args[2] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, varname)
};

auto ret = func(pAMX, args);
amx_Release(pAMX, args[1]);
return ret;
}

int SetSVarString(const char* varname, const char* value)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();

cell args[3] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, varname), amx_NewString(pAMX, value)
};

auto ret = func(pAMX, args);
amx_Release(pAMX, args[1]);
amx_Release(pAMX, args[2]);
return ret;
}

int GetSVarString(const char* varname, char* output, int len)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();
cell *phys;

cell args[4] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, varname), amx_Allot(pAMX, len, &phys), len
};

int ret = func(pAMX, args);
amx_GetString(output, phys, 0, len);
amx_Release(pAMX, args[1]);
amx_Release(pAMX, args[2]);
return ret;
}

int SetSVarFloat(const char* varname, float value)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();

cell args[3] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, varname), amx_ftoc(value)
};

auto ret = func(pAMX, args);
amx_Release(pAMX, args[1]);
return ret;
}

float GetSVarFloat(const char* varname)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();

cell args[2] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, varname)
};

auto ret = func(pAMX, args);
amx_Release(pAMX, args[1]);
return amx_ctof(ret);
}

int DeleteSVar(const char* varname)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();

cell args[2] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, varname)
};

auto ret = func(pAMX, args);
amx_Release(pAMX, args[1]);
return ret;
}

int SHA256_PassHash(const char* password, const char* salt, char* ret_hash, int ret_hash_length)
{
static AMX_NATIVE func = NativeFunctionManager::get().findFunction(__FUNCTION__);
AMX *pAMX = AmxInstanceManager::get().getAvailableAmx();
cell *phys;

cell args[5] =
{
sizeof(args) - sizeof(cell),
amx_NewString(pAMX, password), amx_NewString(pAMX, salt), amx_Allot(pAMX, ret_hash_length, &phys), ret_hash_length
};
auto ret = func(pAMX, args);
amx_Release(pAMX, args[1]);
amx_Release(pAMX, args[2]);
amx_GetString(ret_hash, phys, 0, ret_hash_length);
amx_Release(pAMX, args[3]);
return ret;
}

// Extended admin network stats
int GetServerTickRate()
Expand Down
11 changes: 11 additions & 0 deletions src/wrapper/Functions.h
Expand Up @@ -295,6 +295,17 @@ int GetPlayerVersion(int playerid, char* version, int len); // Returns the SA-MP
int BlockIpAddress(const char* ip_address, int timems);
int UnBlockIpAddress(const char* ip_address);

// Server
int SetSVarInt(const char* varname, int value);
int GetSVarInt(const char* varname);
int SetSVarString(const char* varname, const char* value);
int GetSVarString(const char* varname, char* output, int len);
int SetSVarFloat(const char* varname, float value);
float GetSVarFloat(const char* varname);
int DeleteSVar(const char* varname);

int SHA256_PassHash(const char* password, const char* salt, char* ret_hash, int ret_hash_length);

// Extended admin network stats
int GetServerTickRate();
int NetStats_GetConnectedTime(int playerid);
Expand Down

0 comments on commit afaf688

Please sign in to comment.