Re: Useful Functions -
boylett - 11.11.2008
Quote:
Originally Posted by cosmy
Code:
stock isspace©
{
if(c == ' ') return 1;
else return 0;
}
native isspace©;
|
Pointless function
Quote:
Originally Posted by cosmy
Code:
stock CelsiusToFahrenheit(degrees)
{
new f;
f = degrees + 32;
return f;
}
native CelsiusToFahrenheit(degrees);
Code:
stock FahrenheitToCelsius(degrees)
{
new c;
c = degrees - 32;
return c;
}
native FahrenheitToCelsius(degrees);
|
These are highly inaccurate
Re: Useful Functions -
gesior7 - 13.11.2008
Code:
stock SMessage(playerid,color,str[],len=128,lines=20){
if(!len||!str[0])return true;
new c=0,x=0;if(len>128||len<0)len=128;
for(new i=0,j,y=0;i<lines;y=0,i++){
for(j=x+_:!i;j<x+len&&str[j];j++){
if(str[j]<33){if(str[j-1]>32)y=j;}
}if(!str[j])j=-1;else{
if(!y){
if(str[j]>32||str[j-1]<33)c=str[j];else c=0;y=j;
}else c=0;str[y]=0;
}if(playerid<0)SendClientMessageToAll(color,str[x]);
else SendClientMessage(playerid,color,str[x]);
if(j<0)break;str[y]=c;x=y+(c?0:1);
}return true;
}
Sends a client messages to player or all players. The message is divided to reach maximum 'len' characters in one line. That will send ass many lines as needed between 0 and 'lines' parameter.
'playerid' is a player ID, which receive the 'str[]' message. Use -1 for all players.
'color' is color of the message. 'len' : max length of one line , 'lines' : the maximum of allowed lines.
This function should send words separated as their lenght are worse than 'len' parameter.
That's all.
By the way,
Quote:
Originally Posted by Vetle
Get Player ID:
pawn Code:
stock GetPlayerID(playerid) { return playerid; }
|
Yeah! That's very useful. Why didn't I use it so far?
Re: Useful Functions -
Pixels^ - 13.11.2008
That's very inefficient.
Re: Useful Functions -
LarzI - 13.11.2008
u're having a phobia about spaces and indentation or something?
Re: Useful Functions -
gesior7 - 15.11.2008
Quote:
Originally Posted by Pixels^
That's very inefficient.
|
It seems that this function does exactly, what it was suppose to do.
Look at the example:
Code:
#include <a_samp.inc>
public OnPlayerCommandText(playerid, cmdtext[]) {
if(strcmp(cmdtext[1],"test",true)>2)
return SMessage(playerid,0xFFFFFFFF,cmdtext[6],25);
return 1;
}
Max length is 25.
in game:
Re: Useful Functions -
XAOC - 16.11.2008
The encryption/decryption line by key
Code:
stock StringCoded(string[],key[],bool:method=true)
{
new keylen=strlen(key),
strl=strlen(string);
if(keylen==0) return printf("Error string coded (%s),incorrect key len",string);
for(new i=0;i<strl;i++){
if(method)string[i]+=keylen+key[i];else string[i]-=keylen+key[i];
}
return 1;
}
Example:
Code:
new str[]="coded_string";
new keystr[]="coded_key";
printf("%s <original string",str);
StringCoded(str,keystr,true); // or StringCoded(str,keystr);
printf("%s <encoded string",str);
StringCoded(str,keystr,false);
printf("%s <decoded string",str);
p.s Sorry bad english
GetPlayerFullname(partofname[]) & GetPlayerID(partofname[]) -
LarzI - 17.11.2008
NOTE: UN-TESTED, but I think it might work (can't test it myself)
pawn Code:
stock GetPlayerFullname(partofname[])
{
for(new i=0, m=GetMaxPlayers(); i<m; i++)
{
new pname[24];
GetPlayerName(i, pname, 24);
if(strfind(pname, partofname, true))
{
return pname;
}
}
return -1;
}
pawn Code:
stock GetPlayerID(partofname[])
{
for(new i=0, m=GetMaxPlayers(); i<m; i++)
{
new pname[24];
GetPlayerName(i, pname, 24);
if(strfind(pname, partofname, true))
{
return i;
}
}
return -1;
}
Re: Useful Functions -
Nero_3D - 17.11.2008
LarzI aka. D'x_Orzizt ye it surely should work I just wanted mention that you create the array 'pname' inside the loop (thats inefficient)
pawn Code:
stock GetPlayerID(partofname[])
{
for(new i, m = GetMaxPlayers(), pname[MAX_PLAER_NAME]; i < m; i++)
{
GetPlayerName(i, pname, MAX_PLAYER_NAME);
if(strfind(pname, partofname, true)) return i;
}
return INVALID_PLAYER_ID;
}
Ah and changed GetPlayerFullname, its indirect the same
pawn Code:
stock GetPlayerFullname(partofname[])
{
new id = GetPlayerID(partofname), pname[MAX_PLAYER_NAME];
if(id != INVALID_PLAYER_ID) GetPlayerName(id, pname, MAX_PLAYER_NAME);
return pname;
}
Re: Useful Functions -
Pixels^ - 17.11.2008
Quote:
Originally Posted by gesior7
Quote:
Originally Posted by Pixels^
That's very inefficient.
|
It seems that this function does exactly, what it was suppose to do.
Look at the example:
Код:
#include <a_samp.inc>
public OnPlayerCommandText(playerid, cmdtext[]) {
if(strcmp(cmdtext[1],"test",true)>2)
return SMessage(playerid,0xFFFFFFFF,cmdtext[6],25);
return 1;
}
Max length is 25.
in game:
|
pawn Код:
stock pMessage(string[],maxlen)
{
new str[128];
format(str,maxlen,string);
print(str);
return 1;
}
pawn Код:
pMessage("HELLLO",2);
//prints "HE"
Re: Useful Functions -
LarzI - 17.11.2008
Quote:
Originally Posted by Nero_3D
LarzI aka. D'x_Orzizt ye it surely should work I just wanted mention that you create the array 'pname' inside the loop (thats inefficient)
pawn Код:
stock GetPlayerID(partofname[]) { for(new i, m = GetMaxPlayers(), pname[MAX_PLAER_NAME]; i < m; i++) { GetPlayerName(i, pname, MAX_PLAYER_NAME); if(strfind(pname, partofname, true)) return i; } return INVALID_PLAYER_ID; }
Ah and changed GetPlayerFullname, its indirect the same
pawn Код:
stock GetPlayerFullname(partofname[]) { new id = GetPlayerID(partofname), pname[MAX_PLAYER_NAME]; if(id != INVALID_PLAYER_ID) GetPlayerName(id, pname, MAX_PLAYER_NAME); return pname; }
|
OK, thanks for making it work (better)
Re: Useful Functions -
Simon - 18.11.2008
Quote:
Originally Posted by Pixels^
Quote:
Originally Posted by gesior7
Quote:
Originally Posted by Pixels^
That's very inefficient.
|
It seems that this function does exactly, what it was suppose to do.
Look at the example:
Код:
#include <a_samp.inc>
public OnPlayerCommandText(playerid, cmdtext[]) {
if(strcmp(cmdtext[1],"test",true)>2)
return SMessage(playerid,0xFFFFFFFF,cmdtext[6],25);
return 1;
}
Max length is 25.
in game:
|
pawn Код:
stock pMessage(string[],maxlen) { new str[128]; format(str,maxlen,string); print(str); return 1; }
pawn Код:
pMessage("HELLLO",2); //prints "HE"
|
Do you understand what the SMessage function does? It's word wrap, not string cutting...
Re: Useful Functions -
Pixels^ - 18.11.2008
Woops.
, It wasn't my fault.
Re: Useful Functions -
Norn - 20.11.2008
Nevermind.
Re: Useful Functions -
MenaceX^ - 20.11.2008
Make a RP name for a Player (Removes the "_")
pawn Код:
GetPlayerNameEx(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
for(new i=0;i<strlen(name);i++)
if(name[i]=='_')
name[i]=' ';
return name;
}
Example how work with.
GetPlayerName(playerid, sendername, sizeof(sendername));
Replace it with
sendername=GetPlayerNameEx(playerid);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
Replace it with
giveplayer=GetPlayerNameEx(giveplayerid);
Easy right ?
Re: Useful Functions -
Pixels^ - 20.11.2008
pawn Код:
for(new i=0;i<strlen(name);i++)
if(name[i]=='_')
name[i]=' ';
No brackets there. It will only process if(name[i ]=='_') for the loop.
pawn Код:
stock GetPlayerNameEx(playerid)
{
new name[24];
GetPlayerName(playerid,name,24);
for(new i=0;i<strlen(name);i++) if(name[i]=='_')
{
name[i]=' ';
return name;
}
}
Re: Useful Functions -
Norn - 20.11.2008
Quote:
Originally Posted by Seif_
Quote:
Originally Posted by Norn
First you need:
pawn Код:
forward split(const strsrc[], strdest[][], delimiter); public split(const strsrc[], strdest[][], delimiter) { new i, li; new aNum; new len; while(i <= strlen(strsrc)){ if(strsrc[i]==delimiter || i==strlen(strsrc)){ len = strmid(strdest[aNum], strsrc, li, i, 128); strdest[aNum][len] = 0; li = i+1; aNum++; } i++; } return 1; }
GetPlayerRpName(playerid); Will remove the "_" and make it a space, for roleplay. Will only work with Firstname_Lastname format.
pawn Код:
stock GetPlayerRpName(playerid) { new namestring[2][MAX_PLAYER_NAME]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,MAX_PLAYER_NAME); split(name, namestring, '_'); new wstring[25]; format(wstring, sizeof(wstring), "%s %s", namestring[0],namestring[1]); return wstring; }
Example:
pawn Код:
if(strcmp(cmd, "/test", true) == 0) { new pName[MAX_PLAYER_NAME]; new wstring[128]; pName=GetPlayerFirstName(playerid); format(wstring, sizeof(wstring), "Hello %s!", GetPlayerRpName(playerid)); SendClientMessage(playerid,COLOR_WHITE, wstring); return 1; }
|
Why do that if you can just use a loop in a string to get the _ and replace it by a space like this:
http://forum.sa-mp.com/index.php?top...7932#msg457932
|
Didn't find this when i searched, thanks.
Re: Useful Functions -
Zezombia - 21.11.2008
[size=20pt]zcmd beta v2
Now moved to the
Wiki.
https://sampwiki.blast.hk/wiki/Zcmd
Re: Useful Functions -
pspleo - 21.11.2008
Quote:
Originally Posted by cosmy
pawn Код:
stock CelsiusToFahrenheit(degrees) { new f; f = degrees + 32; return f; } native CelsiusToFahrenheit(degrees);
pawn Код:
stock FahrenheitToCelsius(degrees) { new c; c = degrees - 32; return c; } native FahrenheitToCelsius(degrees);
|
pawn Код:
stock CelsiusToFahrenheit(degrees)
{
new f;
f = degrees*1.8;
f += 32;
return f;
}
native CelsiusToFahrenheit(degrees);
pawn Код:
stock FahrenheitToCelsius(degrees)
{
new c;
c = degrees * 1.8;
c -= 32;
return c;
}
native FahrenheitToCelsius(degrees);
Re: Useful Functions -
mamorunl - 21.11.2008
Quote:
Originally Posted by [K4L
Leopard ]
Quote:
Originally Posted by cosmy
pawn Код:
stock CelsiusToFahrenheit(degrees) { new f; f = degrees + 32; return f; } native CelsiusToFahrenheit(degrees);
pawn Код:
stock FahrenheitToCelsius(degrees) { new c; c = degrees - 32; return c; } native FahrenheitToCelsius(degrees);
|
pawn Код:
stock CelsiusToFahrenheit(degrees) { new f; f = degrees*1.8; f += 32; return f; } native CelsiusToFahrenheit(degrees);
pawn Код:
stock FahrenheitToCelsius(degrees) { new c; c = degrees * 1.8; c -= 32; return c; } native FahrenheitToCelsius(degrees);
|
you can just take that function out of the pawn-lang.pdf
Re: Useful Functions -
Daren_Jacobson - 21.11.2008
do i put this anywhere? or is this a usage of it?
i am confused on how to use any of these commands
Quote:
Originally Posted by ******
Код:
GetPlayerId(playername[])
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
if ((IsPlayerConnected(i)) && (strcmp(playername, gPlayerName[i], true) == 0))
{
return i;
}
}
return INVALID_PLAYER_ID;
}
Edit: added a ';' only just spotted as missing by DonnyK.
|