SA-MP Forums Archive
אי אפשר לעשות פקודות על שחקנים אחרים - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Archive (https://sampforum.blast.hk/forumdisplay.php?fid=88)
+---- Thread: אי אפשר לעשות פקודות על שחקנים אחרים (/showthread.php?tid=378598)



אי אפשר לעשות פקודות על שחקנים אחרים - Dixon_Smith - 18.09.2012

עשיתי את הפקודה הזאת :
קוד:
PHP Code:
if(strcmp(cmdtext,"/Suspect",true) == || strcmp(cmdtext,"/Su",true) == 0)   {
   
tmp strtok(cmdtextidx);
   if(!
strlen(tmp)){
   
SendClientMessage(playeridCOLOR_GREEN"USAGE: /Suspect [PlayerID/PlayerName]");
   return 
1;
   }
   
tmp strtok(cmdtextidx);
   
GivePlayerID ReturnUser(tmp);
   if(
IsPlayerConnected(GivePlayerID))
   {
      if(
GivePlayerID != INVALID_PLAYER_ID)
      {
         if(
Suspect[GivePlayerID] == 0)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID1) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 1 ");
         if(
Suspect[GivePlayerID] == 1)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID2) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 2 ");
         if(
Suspect[GivePlayerID] == 2)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID3) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 3 ");
         if(
Suspect[GivePlayerID] == 3)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID4) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 4 ");
         if(
Suspect[GivePlayerID] == 4)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID5) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 5 ");
         if(
Suspect[GivePlayerID] == 5)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID6) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 6 ") ,SetPlayerColor(GivePlayerIDCOLOR_RED) ,SetPlayerMarkerForPlayer(iplayeridCOLOR_RED);
         if(
Suspect[GivePlayerID] == 6)return SendClientMessage(playeridCOLOR_ORANGE,"You Cant Use This Command This Player Alredy Have Level Wanted: 6");
         }
      }
   }
   return 
1;

החלק הראשון של הפקודה עובד כרגיל אינ רושם /Suspect מופיע לי ההודעה :
USAGE: /Suspect [PlayerID/PlayerName]
אבל ברגע שאני רושם איידי של שחקן בשרת זה לא עובד הפקודה לא פועלת רק החלק הראשון של הפקודה טובה, אני לא מצליח לעשות את הפקודה על שחקן אחר למה זה ?

הנה מה שיש בOnPlayerCommandText למעלה :
קוד:
PHP Code:
new cmd[256];   new tmp[256];
   new 
GivePlayerIDidx;
   new 
vehicleid GetPlayerVehicleID(playerid);
   
tmp strtok(cmdtextidx);
   
cmd strtok(cmdtextidx);
   
GivePlayerID ReturnUser(tmp); 



Re: אי אפשר לעשות פקודות על שחקנים אחרים - BlueGames - 18.09.2012

תנסה את זה יותר קצר ואני בטוח 100% שזה עובד
Code:
if(strcmp(cmd, "/suspectlvl",true)==0 || strcmp(cmd, "/sl",true)==0)
		{
			new tmp[256];
			new msg[MAX_STRING];
			if(PlayerInfo[playerid][playerteam]==COPS)
			{
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp))
				{
					SendClientUsage(playerid, cmd, "[Name/ID]");
					return 1;
				}
				if(!IsNumeric(tmp) && (PlayerID(tmp)==-2 || PlayerID(tmp)==-1))
				{
		        	SendClientError(playerid,   "Not found. Invalid part of name or more than one result");
					return 1;
				}
				if(!IsNumeric(tmp) && PlayerID(tmp)>=0) giveplayerid = PlayerID(tmp);
		        if(IsNumeric(tmp)) giveplayerid = strval(tmp);
	            if(!IsPlayerConnected(giveplayerid))
				{
			        SendClientError(playerid,   "Not found.");
					return 1;
				}
		        if(GetPlayerWantedLevel(giveplayerid)<5)
				{
					SetPlayerWantedLevel(giveplayerid,GetPlayerWantedLevel(giveplayerid)+1);
			    	format(msg,sizeof(msg),"%s wanted level: %d",PlayerName(giveplayerid),GetPlayerWantedLevel(giveplayerid));
			    	SendClientMessage(playerid, COLOR_PLAYER_LIGHTBLUE,msg);
			    	return 1;
		        }
		        else SendClientError(playerid,   "Already wanted level 5");
		    }
		    	else
			{
				SendClientError(playerid, "You are not allowed to use this command");
			}
	        return 1;
		}
כמובן פקודה להוריד רמת מבוקש

Code:
   if(strcmp(cmd, "/clearlvl",true)==0 || strcmp(cmd, "/cl",true)==0){
				new tmp[256];
				new msg[MAX_STRING];
				if(PlayerInfo[playerid][playerteam]==COPS){
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp)){
					SendClientUsage(playerid, cmd, "[Name/ID]");
					return 1;
				}
				if(!IsNumeric(tmp) && (PlayerID(tmp)==-2 || PlayerID(tmp)==-1)){
        			SendClientError(playerid,   "Not found. Invalid part of name or more than one result");
					return 1;
				}
				if(!IsNumeric(tmp) && PlayerID(tmp)>=0) giveplayerid = PlayerID(tmp);
        		if(IsNumeric(tmp)) giveplayerid = strval(tmp);
        		if(!IsPlayerConnected(giveplayerid)){
	        	    SendClientError(playerid,   "Not found.");
					return 1;
				}
        		if(GetPlayerWantedLevel(giveplayerid)>0){
					SetPlayerWantedLevel(giveplayerid,GetPlayerWantedLevel(giveplayerid)-1);
	        		format(msg,sizeof(msg),"%s wanted level: %d",PlayerName(giveplayerid),GetPlayerWantedLevel(giveplayerid));
	        		SendClientMessage(playerid, COLOR_PLAYER_LIGHTBLUE,msg);

	        						PlayerInfo[giveplayerid][wantedlevel]=GetPlayerWantedLevel(giveplayerid)-1;
				dUserSetINT(PlayerName(giveplayerid)).("wantedlevel",PlayerInfo[giveplayerid][wantedlevel]-1);

	        		return 1;
	        	}
        		else SendClientError(playerid,   "Error: Already wanted level 0");
        		}
        			else
			{
				SendClientError(playerid, "You are not allowed to use this command");
			}
        	return 1;
        	}
+rep אם עזרתי !


Re: אי אפשר לעשות פקודות על שחקנים אחרים - Dixon_Smith - 18.09.2012

Quote:
Originally Posted by BlueGames
View Post
תנסה את זה יותר קצר ואני בטוח 100% שזה עובד
Code:
if(strcmp(cmd, "/suspectlvl",true)==0 || strcmp(cmd, "/sl",true)==0)
		{
			new tmp[256];
			new msg[MAX_STRING];
			if(PlayerInfo[playerid][playerteam]==COPS)
			{
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp))
				{
					SendClientUsage(playerid, cmd, "[Name/ID]");
					return 1;
				}
				if(!IsNumeric(tmp) && (PlayerID(tmp)==-2 || PlayerID(tmp)==-1))
				{
		        	SendClientError(playerid,   "Not found. Invalid part of name or more than one result");
					return 1;
				}
				if(!IsNumeric(tmp) && PlayerID(tmp)>=0) giveplayerid = PlayerID(tmp);
		        if(IsNumeric(tmp)) giveplayerid = strval(tmp);
	            if(!IsPlayerConnected(giveplayerid))
				{
			        SendClientError(playerid,   "Not found.");
					return 1;
				}
		        if(GetPlayerWantedLevel(giveplayerid)<5)
				{
					SetPlayerWantedLevel(giveplayerid,GetPlayerWantedLevel(giveplayerid)+1);
			    	format(msg,sizeof(msg),"%s wanted level: %d",PlayerName(giveplayerid),GetPlayerWantedLevel(giveplayerid));
			    	SendClientMessage(playerid, COLOR_PLAYER_LIGHTBLUE,msg);
			    	return 1;
		        }
		        else SendClientError(playerid,   "Already wanted level 5");
		    }
		    	else
			{
				SendClientError(playerid, "You are not allowed to use this command");
			}
	        return 1;
		}
כמובן פקודה להוריד רמת מבוקש

Code:
   if(strcmp(cmd, "/clearlvl",true)==0 || strcmp(cmd, "/cl",true)==0){
				new tmp[256];
				new msg[MAX_STRING];
				if(PlayerInfo[playerid][playerteam]==COPS){
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp)){
					SendClientUsage(playerid, cmd, "[Name/ID]");
					return 1;
				}
				if(!IsNumeric(tmp) && (PlayerID(tmp)==-2 || PlayerID(tmp)==-1)){
        			SendClientError(playerid,   "Not found. Invalid part of name or more than one result");
					return 1;
				}
				if(!IsNumeric(tmp) && PlayerID(tmp)>=0) giveplayerid = PlayerID(tmp);
        		if(IsNumeric(tmp)) giveplayerid = strval(tmp);
        		if(!IsPlayerConnected(giveplayerid)){
	        	    SendClientError(playerid,   "Not found.");
					return 1;
				}
        		if(GetPlayerWantedLevel(giveplayerid)>0){
					SetPlayerWantedLevel(giveplayerid,GetPlayerWantedLevel(giveplayerid)-1);
	        		format(msg,sizeof(msg),"%s wanted level: %d",PlayerName(giveplayerid),GetPlayerWantedLevel(giveplayerid));
	        		SendClientMessage(playerid, COLOR_PLAYER_LIGHTBLUE,msg);

	        						PlayerInfo[giveplayerid][wantedlevel]=GetPlayerWantedLevel(giveplayerid)-1;
				dUserSetINT(PlayerName(giveplayerid)).("wantedlevel",PlayerInfo[giveplayerid][wantedlevel]-1);

	        		return 1;
	        	}
        		else SendClientError(playerid,   "Error: Already wanted level 0");
        		}
        			else
			{
				SendClientError(playerid, "You are not allowed to use this command");
			}
        	return 1;
        	}
+rep אם עזרתי !
אני יבדוק אם זה עובד אבל זה פקודה שאתה לקחת מהמוד שלך כנראה, אני לא רוצה אני רוצה פשוט שתסביר איך לתקן את מה שאני עשיתי אצלי זה אפשרי ?


Re: אי אפשר לעשות פקודות על שחקנים אחרים - BlueGames - 18.09.2012

כעקרון לא, זה לא מהמוד שלי הפקודות האילו לא קיימות אצלי מורכבות אחרת לגמרי.
זה ממוד בסיסי אחר שאני עורך ליפעמים בשביל הפנאי, או סתם לערוך פקודה לפני שהיא ניכנסת לשרת שלי ולמוד שלי

נסה להוסיף את זה לפקודה שלך


[EDITED]
PHP Code:
                if(!IsNumeric(tmp) && (PlayerID(tmp)==-|| PlayerID(tmp)==-1))
                {
                    
SendClientError(playerid,   "Not found. Invalid part of name or more than one result");
                    return 
1;
                }
                if(!
IsNumeric(tmp) && PlayerID(tmp)>=0giveplayerid PlayerID(tmp);
                if(
IsNumeric(tmp)) giveplayerid strval(tmp);
                if(!
IsPlayerConnected(giveplayerid))
                {
                    
SendClientError(playerid,   "Not found.");
                    return 
1;
                } 



Re: אי אפשר לעשות פקודות על שחקנים אחרים - Dixon_Smith - 18.09.2012

Quote:
Originally Posted by BlueGames
View Post
כעקרון לא, זה לא מהמוד שלי הפקודות האילו לא קיימות אצלי מורכבות אחרת לגמרי.
זה ממוד בסיסי אחר שאני עורך ליפעמים בשביל הפנאי, או סתם לערוך פקודה לפני שהיא ניכנסת לשרת שלי ולמוד שלי

נסה להוסיף את זה לפקודה שלך


[EDITED]
PHP Code:
                if(!IsNumeric(tmp) && (PlayerID(tmp)==-|| PlayerID(tmp)==-1))
                {
                    
SendClientError(playerid,   "Not found. Invalid part of name or more than one result");
                    return 
1;
                }
                if(!
IsNumeric(tmp) && PlayerID(tmp)>=0giveplayerid PlayerID(tmp);
                if(
IsNumeric(tmp)) giveplayerid strval(tmp);
                if(!
IsPlayerConnected(giveplayerid))
                {
                    
SendClientError(playerid,   "Not found.");
                    return 
1;
                } 
עשיתי ככה :
PHP Code:
   if(strcmp(cmdtext,"/Suspect",true) == || strcmp(cmdtext,"/Su",true) == 0)
   {
   
tmp strtok(cmdtextidx);
   if(!
strlen(tmp)){
   
SendClientMessage(playeridCOLOR_GREEN"USAGE: /Suspect [playerid/PlayerName]");
   return 
1;
   }
//   GivePlayerID = ReturnUser(tmp);
   
if(!IsNumeric(tmp) && playerid(tmp)>=0GivePlayerID playerid(tmp)
   if(
IsNumeric(tmp)) GivePlayerID strval(tmp);
   if(
IsPlayerConnected(GivePlayerID))
   {
      if(
GivePlayerID != INVALID_PLAYER_ID)
      {
         for(new 
0MAX_PLAYERSi++)
         {
         if(
Suspect[GivePlayerID] == 0)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID1) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 1 ");
         if(
Suspect[GivePlayerID] == 1)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID2) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 2 ");
         if(
Suspect[GivePlayerID] == 2)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID3) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 3 ");
         if(
Suspect[GivePlayerID] == 3)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID4) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 4 ");
         if(
Suspect[GivePlayerID] == 4)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID5) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 5 ");
         if(
Suspect[GivePlayerID] == 5)return Suspect[GivePlayerID] = ,SetPlayerWantedLevel(GivePlayerID6) ,SendClientMessage(playeridCOLOR_ORANGE"You Level Wanted Now Is: 6 ") ,SetPlayerColor(GivePlayerIDCOLOR_RED) ,SetPlayerMarkerForPlayer(iplayeridCOLOR_RED);
         if(
Suspect[GivePlayerID] == 6)return SendClientMessage(playeridCOLOR_ORANGE,"You Cant Use This Command This Player Alredy Have Level Wanted: 6");
         }
      }
   }
   return 
1;

וקיבלתי את הארורים האלו :

PHP Code:
C:\Users\pcx\Desktop\samp03e_svr_R2_win32\filterscripts\CopsSystem.pwn(283) : error 012invalid function callnot a valid address
C
:\Users\pcx\Desktop\samp03e_svr_R2_win32\filterscripts\CopsSystem.pwn(283) : warning 215expression has no effect
C
:\Users\pcx\Desktop\samp03e_svr_R2_win32\filterscripts\CopsSystem.pwn(283) : error 001expected token";"but found ")"
C:\Users\pcx\Desktop\samp03e_svr_R2_win32\filterscripts\CopsSystem.pwn(283) : error 029invalid expressionassumed zero
C
:\Users\pcx\Desktop\samp03e_svr_R2_win32\filterscripts\CopsSystem.pwn(283) : fatal error 107too many error messages on one line
Compilation aborted
.Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
4 Errors




Re: אי אפשר לעשות פקודות על שחקנים אחרים - BlueGames - 18.09.2012

PHP Code:
   if(!IsNumeric(tmp) && playerid(tmp)>=0GivePlayerID playerid(tmp
PHP Code:
   if(!IsNumeric(tmp) && playerid(tmp)>=0GivePlayerID playerid(tmp) ; 
Or

PHP Code:
GivePlayerID ReturnUser(tmp); 
replace with
GivePlayerID 
playerid(tmp



Re: אי אפשר לעשות פקודות על שחקנים אחרים - Dixon_Smith - 18.09.2012

Quote:
Originally Posted by BlueGames
View Post
PHP Code:
   if(!IsNumeric(tmp) && playerid(tmp)>=0GivePlayerID playerid(tmp
PHP Code:
   if(!IsNumeric(tmp) && playerid(tmp)>=0GivePlayerID playerid(tmp) ; 
לא עזר אותם ארורים


Re: אי אפשר לעשות פקודות על שחקנים אחרים - BlueGames - 18.09.2012

PHP Code:
GivePlayerID ReturnUser(tmp); 
replace with
GivePlayerID 
playerid(tmp
תמחק את כל מה שנתתי לך ותשנה את זה


Re: אי אפשר לעשות פקודות על שחקנים אחרים - Dixon_Smith - 18.09.2012

Quote:
Originally Posted by BlueGames
View Post
PHP Code:
GivePlayerID ReturnUser(tmp); 
replace with
GivePlayerID 
playerid(tmp
תמחק את כל מה שנתתי לך ותשנה את זה
אותם ארורים רק בשורה הזאת