Jump to content

PM přes DCMD


chytrak

Recommended Posts

Zdravím, údajně podle toho co jsem slyšel kyeman smazal ze sa mp 0.3

funkci PM (Personal Message) (Osobní Zprávy),

 

proto Vám ukáži, jak lze udělat PMky přes DCMD příkaz.

 

Nahoru do modu

Definice DCMD, vkládtejte pouze, pokud ji v modu již nemáte

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1],#%1,true,(%2))==0)&&((((%3)[(%2)+1]==0)&&(dcmd_%1(playerid,"")))||(((%3)[(%2)+1]==32)&&(dcmd_%1(playerid,(%3)[(%2)+2]))))) return 1

 

 

Kamkoliv do modu

chrfind, vkládtejte pouze, pokud již nemáte v modu

stock chrfind(needle, haystack[], start = 0)
{
       while (haystack[start]) if (haystack[start++] == needle) return start - 1;
       return -1;
}

 

Kamkoliv do modu

Tato funkce slouží na zjištění jména hráče, oběvuje se také pod názvem PlayerName(playerid)

 

a) pokud máte v modu tento stock Jmeno(playerid) tento krok přeskčte

B) pokud máte v modu stock PlayerName(playerid) nevkládejte stock Jmeno(playerid)

a přejmenujte Jmeno na PlayerName v příkazu samotném

 

stock Jmeno(playerid)
{
new name[25];
GetPlayerName(playerid, name, 25);
return name;
}

 

Příkaz sám o sobě

vkládejte nejlépe nad public OnPlayerCommandText(playerid, cmdtext[])

dcmd_pm(playerid, params[])
{
   if (IsPlayerConnected(playerid))
{
	new pos;
   	if (!params[0] || !(pos = chrfind(' ', params) + 1) || !params[pos]) return SendClientMessage(playerid, 0x99FF00AA, "Pouziti: /pm [id] [text]");
   	new id = strval(params), string[300];
   	if (strlen(params) > 100)           return SendClientMessage(playerid, 0x99FF00AA, "Zprava muze mit maximalni delku 100 symbolu.");
    if (id == playerid)                 return SendClientMessage(playerid, 0x99FF00AA, "Nemuzes poslat soukromou zpravu sam sobe.");
   	if (!IsPlayerConnected(id))   		return SendClientMessage(playerid, 0x99FF00AA, "Hrac se zadanym id aktualne neni na serveru.");

	format(string, sizeof(string), "PM pro %s [%d]: %s", Jmeno(id), id, params[pos]);
	SendClientMessage(playerid, 0x99FF00AA, string);

	format(string, sizeof(string), "PM od %s [%d]: %s", Jmeno(playerid), playerid, params[pos]);
	SendClientMessage(id, 0x99FF00AA, string);

	PlayerPlaySound(id, 1085, 0.0, 0.0, 0.0);
	printf("PM: %s", string);
}
return 1;
}

 

Do public OnPlayerCommandText(playerid, cmdtext[])

dcmd(pm,           2, cmdtext);

Link to comment
Share on other sites

  • 1 month later...

mam warning :-)

.pwn(302) : warning 219: local variable "string" shadows a variable at a preceding level

 

	if (IsPlayerConnected(playerid))
  {
  	radek 302> new id = strval(params), string[300];
new pos;
if (!params[0] || !(pos = chrfind(' ', params) + 1) || !params[pos]) return SendClientMessage(playerid, 0x99FF00AA, "Pouziti: /pm [id] [text]");

 

co s tim ?? :-) nemam rad warningy

Link to comment
Share on other sites

  • 3 months later...

Mam to presne jako vy...pm funguje ,ale nenapise se jmeno hrace...napise se tam kus textu z minule zpravy a nebo neco co nedava smysl...např.: lj,khbih a takove to blbosti.....pls co s tim???diiiky :)

Link to comment
Share on other sites

  • 10 months later...
  • 8 months later...

Super TuT .. :) 10/10

Len mam jednu otazku ...

V hre mi ide vsetko ale ked napisem hocijaky prikaz s tymto PM pise mi vsetko po anglicky, preco ?

Napr. Nenapise: Pouzitie: /pm ID [text]

Ale napise: Usage: /pm ID [text]

A aj vsetko ostatne, ale len v PM.

Link to comment
Share on other sites

Super TuT .. :) 10/10

Len mam jednu otazku ...

V hre mi ide vsetko ale ked napisem hocijaky prikaz s tymto PM pise mi vsetko po anglicky, preco ?

Napr. Nenapise: Pouzitie: /pm ID [text]

Ale napise: Usage: /pm ID [text]

A aj vsetko ostatne, ale len v PM.

pozeraj na datum vole..

a k problemu asi mas filterscript nejaky zapnuty... co ma /pm prikaz

"suspect"

Link to comment
Share on other sites

mam len toto:

SA-MP Dedicated Server

----------------------

v0.3a R3, ©2005-2009 SA-MP Team

 

[18]

[18] Server Plugins

[18] --------------

[18] Loaded 0 plugins.

 

[18]

[18] Filter Scripts

[18] ---------------

[18] Loading filter script 'base.amx'...

[18]

--Base FS loaded.

 

[18] Loading filter script 'gl_actions.amx'...

[18] Loading filter script 'gl_property.amx'...

[18]

-----------------------------------

[18] Grand Larceny Property Filterscript

[18] -----------------------------------

 

[18] Loading filter script 'gl_realtime.amx'...

[18] Loaded 4 filter scripts.

 

[18] Reading File: blank

[18] Reading File: properties/houses.txt

[18] Reading File: properties/businesses.txt

[18] Reading File: properties/banks.txt

[18] Reading File: properties/police.txt

[18]

----------------------------------

[18] ... Made by Shoot ...

[18] ----------------------------------

 

[18] Number of vehicle models: 59

Link to comment
Share on other sites

  • 2 weeks later...

no co prosté si myslim že lepśí je /pm ... nepochopily jste

OMG

ted abych to hledal OMG

Dekuji skazily jste mi muj cas

 

public OnPlayerCommandText(playerid, cmdtext[])

{

new cmd[256];

new tmp[256];

new Message[256];

new gMessage[256];

new pName[MAX_PLAYER_NAME+1];

new iName[MAX_PLAYER_NAME+1];

new idx;

 

cmd = strtok(cmdtext, idx);

 

// PM Command

if(strcmp("/sms", cmd, true) == 0)

{

GivePlayerMoney( playerid, -1);

tmp = strtok(cmdtext,idx);

 

if(!strlen(tmp) || strlen(tmp) > 5) {

SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"{FF0000}Operátor:{0000FF}Použij /sms [č] [text sms]");

return 1;

}

 

new id = strval(tmp);

gMessage = strrest(cmdtext,idx);

 

if(!strlen(gMessage)) {

SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"{FF0000}Operátor:{0000FF}Použij /sms [č] [text sms]");

return 1;

}

 

if(!IsPlayerConnected(id)) {

SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"{FF0000}Operátor:{0000FF}Špatný tel. č.!");

return 1;

}

 

if(playerid != id) {

GetPlayerName(id,iName,sizeof(iName));

GetPlayerName(playerid,pName,sizeof(pName));

format(Message,sizeof(Message),"Sms pro %s(č. %d): %s",iName,id,gMessage);

SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);

format(Message,sizeof(Message),"Přijata sms!Od %s(č. %d): %s",pName,playerid,gMessage);

SendClientMessage(id,PM_INCOMING_COLOR,Message);

PlayerPlaySound(id,1056,0.0,0.0,0.0); //1085

 

printf("PM: %s",Message);

 

}

else {

SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"{FF0000}Operátor:{0000FF}Zadal jsi tvé tel. č. !");

}

return 1;

}

 

return 0;

}

 

Link to comment
Share on other sites

myslíš base.amx ?

strtok je shit...

 

 

//
// Base FS
// Contains /pm /kick /ban commands.
//

#include 
#include "../include/gl_common.inc"

#define ADMINFS_MESSAGE_COLOR 0xFF444499
#define PM_INCOMING_COLOR     0xFFFF22AA
#define PM_OUTGOING_COLOR     0xFFCC2299

//------------------------------------------------

public OnFilterScriptInit()
{
print("\n--Base FS loaded.\n");
return 1;
}

//------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new	tmp[256];
new Message[256];
new gMessage[256];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
new	idx;

cmd = strtok(cmdtext, idx);

// PM Command
if(strcmp("/pm", cmd, true) == 0)
{
	tmp = strtok(cmdtext,idx);

	if(!strlen(tmp) || strlen(tmp) > 5) {
		SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
		return 1;
	}

	new id = strval(tmp);
       gMessage = strrest(cmdtext,idx);

	if(!strlen(gMessage)) {
		SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
		return 1;
	}

	if(!IsPlayerConnected(id)) {
		SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Bad player ID");
		return 1;
	}

	if(playerid != id) {
		GetPlayerName(id,iName,sizeof(iName));
		GetPlayerName(playerid,pName,sizeof(pName));
		format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
		SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
		format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
		SendClientMessage(id,PM_INCOMING_COLOR,Message);
		PlayerPlaySound(id,1085,0.0,0.0,0.0);

		printf("PM: %s",Message);

	}
	else {
		SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"You cannot PM yourself");
	}
	return 1;
}

//Kick Command
if(strcmp("/kick", cmd, true) == 0)
{
    if(IsPlayerAdmin(playerid)) {
		tmp = strtok(cmdtext,idx);
		if(!strlen(tmp) || strlen(tmp) > 5) {
			return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /kick (id) [reason]");
		}

		new id = strval(tmp);

		if(!IsPlayerConnected(id)) {
			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Bad player ID");
			return 1;
		}

		gMessage = strrest(cmdtext,idx);

		GetPlayerName(id,iName,sizeof(iName));
		SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- You have been kicked from the server.");

		if(strlen(gMessage) > 0) {
			format(Message,sizeof(Message),"Reason: %s",gMessage);
			SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
		}

		format(Message,sizeof(Message),">> %s(%d) has been kicked.",iName,id);
		SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);

		Kick(id);
		return 1;
	} else {
           SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : You are not an admin");
		return 1;
	}
}

//Ban Command
if(strcmp("/ban", cmd, true) == 0)
{
    if(IsPlayerAdmin(playerid)) {
		tmp = strtok(cmdtext,idx);
		if(!strlen(tmp) || strlen(tmp) > 5) {
			return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /ban (id) [reason]");
		}

		new id = strval(tmp);

		if(!IsPlayerConnected(id)) {
			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : Bad player ID");
			return 1;
		}

		gMessage = strrest(cmdtext,idx);

		GetPlayerName(id,iName,sizeof(iName));
		SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- You have been banned from the server.");

		if(strlen(gMessage) > 0) {
			format(Message,sizeof(Message),"Reason: %s",gMessage);
			SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
		}

		format(Message,sizeof(Message),">> %s(%d) has been banned.",iName,id);
		SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);

		Ban(id);
		return 1;
	} else {
           SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : You are not an admin");
		return 1;
	}
}

return 0;
}

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...