Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Шипы and Exp , ПОМОГИТЕ пожалуйста

Статус
В этой теме нельзя размещать новые ответы.

BigBen1174

Новичок
Дорогие пользователи Pawno info ru помогите пожалуйста​

1. Использование шипов (их создание на землю) - Надо зделать Чо бы не прокалывало калёса всей банде (Gang) поставить как то параметр что бы не трогал калёса машин банды

Код
PHP:
#if defined _ship_included
	#endinput
#endif

#define _ship_included
#pragma library ship


#define MAX_SPIKESTRIPS 200

enum sInfo
{
	sCreated,
    Float:sX,
    Float:sY,
    Float:sZ,
    sObject,
};



new SpikeInfo[MAX_SPIKESTRIPS][sInfo];
static Deleteship;


stock ship_OnPlayerCommandText(playerid, cmdtext[])
{
	#pragma unused playerid
	new cmd[256];
	new idx;
	cmd = strtok(cmdtext, idx);

	if (strcmp(cmd,"/ship",true) == 0)
	{
		new vehicleid = GetPlayerVehicleID(playerid);
	    new Float:plocx,Float:plocy,Float:plocz,Float:ploca;
        GetVehiclePos(vehicleid, plocx, plocy, plocz);
        GetVehicleZAngle(vehicleid,ploca);
        CreateStrip(plocx,plocy,plocz,ploca);
		Deleteship = SetTimer("DeleteAllStrip",1000*60,true);
	    return 1;
	}
	return 0;
}

stock ship_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	#pragma unused oldkeys
	if ((newkeys==KEY_NO)) // Љлавиша N
	{
		if (GetPlayerVIP(playerid))
        {
            {
				OnPlayerCommandText(playerid, "/ship");
			}
		}
	}
	//------------------------------------------------------------------------------
	return 1;
}

stock ship_OnPlayerUpdate(playerid)
{
	if(!IsPlayerConnected(playerid)) return 0;

    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        for(new i = 0; i < sizeof(SpikeInfo); i++)
  	    {
  	        if(IsPlayerInRangeOfPoint(playerid, 2.0, SpikeInfo[i][sX], SpikeInfo[i][sY], SpikeInfo[i][sZ]))
            {
  	            if(SpikeInfo[i][sCreated] == 1)
  	            {
  	                new panels, doors, lights, tires;
  	                new carid = GetPlayerVehicleID(playerid);
		            GetVehicleDamageStatus(carid, panels, doors, lights, tires);
		            tires = encode_tires(1, 1, 1, 1);
		            UpdateVehicleDamageStatus(carid, panels, doors, lights, tires);
  	                return 0;
  	            }
  	        }
  	    }
  	}

	return 1;
}

stock CreateStrip(Float:x,Float:y,Float:z,Float:Angle)
{
    for(new i = 0; i < sizeof(SpikeInfo); i++)
  	{
		
  	    if(SpikeInfo[i][sCreated] == 0)
  	    {
			SpikeInfo[i][sCreated]=1;
			SpikeInfo[i][sX]=x;
			SpikeInfo[i][sY]=y;
			SpikeInfo[i][sZ]=z;
			SpikeInfo[i][sObject] = CreateObject(2899, x, y-1.5, z-0.6, 0, 0, Angle-z-100);
			return 1;	
  	    }
  	}
  	return 0;
}

forward DeleteAllStrip();
public DeleteAllStrip()
{
    for(new i = 0; i < sizeof(SpikeInfo); i++)
  	{
  	    if(SpikeInfo[i][sCreated] == 1)
  	    {
  	        SpikeInfo[i][sCreated]=0;
            SpikeInfo[i][sX]=0.0;
            SpikeInfo[i][sY]=0.0;
            SpikeInfo[i][sZ]=0.0;
            DestroyObject(SpikeInfo[i][sObject]);
			KillTimer(Deleteship);
  	    }
	}
    return 0;
}


encode_tires(tires1, tires2, tires3, tires4) {

	return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);

}
вот сис-ма банды

PHP:
//
// Created:     14.09.06
// Aurthor:    Iain Gilbert
//

#if defined _gang_included
  #endinput
#endif

#define _gang_included
#pragma library gang
#include "base"

forward GangLoadConfig();
forward GangSaveConfig();
forward GetFreeMemberID();
forward GangLoad(gangname[]);
forward GangCommandHandler(playerid,text[]);
forward PlayerGangColour(playerid);
forward GangJoinMember(gangid,playerid);
forward GangRemoveMember(gangid,kickplayername[]);
forward GangCreate(leaderid,gangname[],gangcolour);
forward GangCleanup(gangid);
forward GangSaveAll();
forward GangMemberLogout(playerid,gangid);
forward GangSave(gangid);
forward GangUnload(gangid);
forward GangKill(gangid,killerid,victimid,reason);
forward GangMemberLogin(playerid,gangid);
forward SendGangMessage(gangid,message[MAX_STRING],colour);
forward GangOnlineCount(gangid);
forward GangGiveXP(gangid,xpamount,giverid);
forward SetGangColour(gangid,colour);

#define MAX_GANGS MAX_PLAYERS // maximum gangs (at runtime), (total maximum gangs is unlimited)
#define MAX_GANG_SIZE 6 // maximum number of ppl can be in any specific gang

new GANG_CREATE_COST = 70000; // money cost to create a gang
new GANG_COLOUR_COST = 20000; // cost to change gang colour
new GangDB[MAX_STRING] = "GTO/Gang/";

enum MemberInfo {
 member_active,
 member_online, // bool
 member_name[MAX_NAME],
 member_playerid
}

enum GangInfo {
 gang_active, //bool
 gang_name[MAX_NAME],
    gang_colour,
    gang_kills,
    gang_score
}

enum ColourInfo {
 colour_name[MAX_NAME],
    colour_code
}
#define COLOURS_SIZE 10
new GangColours[COLOURS_SIZE][ColourInfo] = {
{ "Red",     COLOUR_RED},
{ "LightRed",    COLOUR_LIGHTRED},
{ "Orange",    COLOUR_ORANGE},
{ "Yellow",    COLOUR_YELLOW},
{ "Green",    COLOUR_GREEN},
{ "LightGreen",    COLOUR_LIGHTGREEN},
{ "Blue",    COLOUR_BLUE},
{ "LightBlue",    COLOUR_LIGHTBLUE},
{ "White",    COLOUR_WHITE},
{ "Purple",    COLOUR_PURPLE}
};

new GangMemberInfo[MAX_GANGS*MAX_GANG_SIZE][MemberInfo]; //shit way of '3d' array
new GangMembers[MAX_GANGS][MAX_GANG_SIZE]; // shit

new Gangs[MAX_GANGS][GangInfo];
new GangInvite[MAX_PLAYERS];
new tempstring[MAX_STRING];

public GangLoadConfig()
{
if (ForceOverwrite) return;
if (!dini_Exists(ConfigDB)) return;
new temp[MAX_STRING];
set(temp,dini_Get(ConfigDB,"Gang_DB"));
if (strlen(temp) > 0) set(GangDB,temp);
set(temp,nullstr);
set(temp,dini_Get(ConfigDB,"Gang_Create_Cost"));
if (strlen(temp) > 0) GANG_CREATE_COST = strval(temp);
set(temp,nullstr);
set(temp,dini_Get(ConfigDB,"Gng_Colour_Cost"));
if (strlen(temp) > 0) GANG_COLOUR_COST =strval(temp);
return;
}

public GangSaveConfig()
{
 if (!dini_Exists(ConfigDB)) return;
 new temp[MAX_STRING];
 dini_Set(ConfigDB,"Gang_DB",GangDB);
 valstr(temp,GANG_CREATE_COST);
 dini_Set(ConfigDB,"Gang_Create_Cost",temp);
 valstr(temp,GANG_COLOUR_COST);
 dini_Set(ConfigDB,"Gang_Colour_Cost",temp);
 return;
}

public GetFreeMemberID()
{
 for (new memberid = 1;memberid<MAX_GANG_SIZE*MAX_GANGS;memberid++)
 {
     if (GangMemberInfo[memberid][member_active] == 0)
     {
         return memberid;
  }
 }
 return 0;
}

public GangLoad(gangname[])
{
 // search for gang in runtime memory
 for (new id=1;id<MAX_GANGS;id++)
 {
  if (Gangs[id][gang_active] == 1)
  {
   if (strcomp(gangname,Gangs[id][gang_name],false) == 1)
   {
       return id; // gang found in runtime memory
   }
  }
 }

 new gangid;
 for (new id=1;id<MAX_GANGS;id++)
 {
     if(!Gangs[id][gang_active])
     {
      gangid = id;
      Gangs[id][gang_active] = true; // find first free gang slot and andd our gang
      break;
  }
 }
 gang_load_db_dini(gangid,gangname);

 new logstring[256];
 format(logstring, sizeof (logstring), "gang_loaded: %d",gangid);
 WriteLog(logstring);
 return gangid;
}

gang_load_db_dini(gangid,gangname[])
{
 // udb
 new udbfilename[MAX_NAME];
 set(udbfilename,gangname);
 strcat(udbfilename,".Gang",sizeof(udbfilename));

 // dini
 new dinifilename[MAX_STRING];
 format(dinifilename,sizeof(dinifilename),"%sGTO.Gang.%s.txt",GangDB,gangname);

 new useudb = 0;
 if ((!udb_Exists(udbfilename)) && (!dini_Exists(dinifilename)))
 {
 	return;
 }
 if ((udb_Exists(udbfilename)) && (!dini_Exists(dinifilename)))
 {
 	useudb = 1;
 }
 if ((udb_Exists(udbfilename)) && (dini_Exists(dinifilename)))
 {
 	udb_Remove(udbfilename);
 }

 if (useudb)
 {
  new gangdbstring[MAX_DBSTRING];
  set(gangdbstring,udb_Loadfile(udbfilename));
  if (gangdbstring[0] == 0) return;
  new idx;
  set(Gangs[gangid][gang_name],gangname);
  Gangs[gangid][gang_colour] = strval(strcharsplit(gangdbstring,idx,DBSeperator));
  Gangs[gangid][gang_kills] = strval(strcharsplit(gangdbstring,idx,DBSeperator));
  Gangs[gangid][gang_score] = strval(strcharsplit(gangdbstring,idx,DBSeperator));

  for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
  { // foreach member

   GangMembers[gangid][gangmember] = GetFreeMemberID();
   new memberid = GangMembers[gangid][gangmember];
   if (memberid == 0)
   {
   	WriteLog("script error: free gang member id not found.");
   	return;
   }
   GangMemberInfo[memberid][member_active] = 1;
   GangMemberInfo[memberid][member_online] = 0;
   set(GangMemberInfo[memberid][member_name],strcharsplit(gangdbstring,idx,DBSeperator));
   GangMemberInfo[memberid][member_playerid] = INVALID_PLAYER_ID;
  }
 }
 else
 {
  set(Gangs[gangid][gang_name],dini_Get(dinifilename,"Name"));
  Gangs[gangid][gang_colour] = strval(dini_Get(dinifilename,"Colour"));
  Gangs[gangid][gang_kills] = strval(dini_Get(dinifilename,"Kills"));
  Gangs[gangid][gang_score] = strval(dini_Get(dinifilename,"Score"));

  for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
  { // foreach member

   GangMembers[gangid][gangmember] = GetFreeMemberID();
   new memberid = GangMembers[gangid][gangmember];
   if (memberid == 0)
   {
    WriteLog("script error: free gang member id not found.");
    break;
   }
   GangMemberInfo[memberid][member_active] = 1;
   GangMemberInfo[memberid][member_online] = 0;
   new dinistring[MAX_STRING];
   format(dinistring,sizeof(dinistring),"Member%d" ,gangmember);
   set(GangMemberInfo[memberid][member_name],dini_Get(dinifilename,dinistring));
   GangMemberInfo[memberid][member_playerid] = INVALID_PLAYER_ID;
  }
 }

}

public GangCommandHandler(playerid,text[]) // process player commands
{

	new cmd[20];
	new idx;

	set(cmd,strcharsplit(text, idx,strchar(" ")));
	if (strlen(cmd) == 0) return 0;

	if (Player[playerid][Muted] == 1)
	{
		SendPlayerFormattedText(playerid,lang_texts[1][14], 0,COLOUR_RED);
		return 1;
	}

	if(strcomp(cmd, "/g", true) == 1)
 	{
    	if (PlayerGangid[playerid] == 0) return 1;
     	new gangmessage[MAX_STRING];

     	set(gangmessage,text);
        strdel(gangmessage, 0, idx);
        if (!strlen(gangmessage)) return 1;
     	format(gangmessage, sizeof(gangmessage),  lang_texts[6][2] , oGetPlayerName(playerid),gangmessage);
        SendGangMessage(PlayerGangid[playerid],gangmessage,COLOUR_GANG_CHAT);

        new logstring[256];
  		format(logstring, sizeof (logstring), "player: %d:  %s:    %s",playerid,oGetPlayerName(playerid),gangmessage);
     	WriteChatLog(logstring);

        return 1;
	}

    if(strcomp(cmd, "/gang", true) == 1)
	{

		if (!IsPlayerRegistered(playerid))
  		{
   			SendPlayerFormattedText(playerid,  lang_texts[6][3] , 0,COLOUR_RED);
   			return 1;
  		}

  		set(cmd,strcharsplit(text, idx,strchar(" ")));
  		if (strlen(cmd) == 0) return 0;

  		if(strcomp(cmd, "help", true) == 1)
  		{
   			SendPlayerScrollingText(playerid,  lang_texts[6][4] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][5] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][6] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][7] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][8] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][9] );
   			return 1;
  		}

  		if(strcomp(cmd, "commands", true) == 1)
  		{
   			SendPlayerScrollingText(playerid,  lang_texts[6][10] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][11] );
            SendPlayerScrollingText(playerid,  lang_texts[6][12] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][13] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][14] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][15] );
            SendPlayerScrollingText(playerid,  lang_texts[6][16] );
  			SendPlayerScrollingText(playerid,  lang_texts[6][17] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][18] );
            SendPlayerScrollingText(playerid,  lang_texts[6][19] );
   			SendPlayerScrollingText(playerid,  lang_texts[6][20] );
   			return 1;
  		}

  		if((strcomp(cmd, "colours", true) == 1) || (strcomp(cmd, "COLOURs", true) == 1))
  		{
   			SendPlayerFormattedText(playerid,  lang_texts[6][22], 0,COLOUR_GREEN);
   			for (new i = 0;i<=COLOURS_SIZE;i++)
   			{
    			format(tempstring, sizeof(tempstring),  lang_texts[6][23] ,GangColours[i][colour_name]);
    			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_GREY);
   			}
   			return 1;
  		}

  		if((strcomp(cmd, "stats", true) == 1) || (strcomp(cmd, "stat", true) == 1) || (strcomp(cmd, "status", true) == 1))
  		{

      		if (PlayerGangid[playerid] == 0)
      		{
          		SendPlayerFormattedText(playerid,  lang_texts[6][24] , 0,COLOUR_RED);
       			return 1;
      		}
      		new gangid = PlayerGangid[playerid];
      		format(tempstring, sizeof(tempstring),  lang_texts[6][25] , Gangs[gangid][gang_name]);
      		SendPlayerFormattedText(playerid, tempstring, 0,Gangs[gangid][gang_colour]);
      		format(tempstring, sizeof(tempstring),  lang_texts[6][26] , Gangs[gangid][gang_kills]);
   			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_MISC);
   			format(tempstring, sizeof(tempstring),  lang_texts[6][27] , Gangs[gangid][gang_score]);
   			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_MISC);

   			format(tempstring, sizeof(tempstring),  lang_texts[6][28] , GangOnlineCount(gangid));
   			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_MISC);
   			return 1;
  		}

  		if(strcomp(cmd, "members", true) == 1)
  		{

      		if (PlayerGangid[playerid] == 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][29] , 0,COLOUR_RED);
       			return 1;
      		}
      		new gangid = PlayerGangid[playerid];
      		new status[10];
      		format(tempstring, sizeof(tempstring),  lang_texts[6][30] , Gangs[gangid][gang_name]);
      		SendPlayerFormattedText(playerid, tempstring, 0,Gangs[gangid][gang_colour]);

      		for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
   			{ // foreach member
    			new memberid = GangMembers[gangid][gangmember];
    			if (strlen(GangMemberInfo[memberid][member_name]) > 0)
          		{
           			if (GangMemberInfo[memberid][member_online])
           			{
      					set(status,"Online");
         				format(tempstring, sizeof(tempstring),  lang_texts[6][31] , GangMemberInfo[memberid][member_name],status,GetPlayerLevel(GangMemberInfo[memberid][member_playerid]));
     				}
     				else
     				{
      					set(status,"Offline");
      					format(tempstring, sizeof(tempstring),  lang_texts[6][32] , GangMemberInfo[memberid][member_name],status);
     				}
     				SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_MISC);
    			}
   			}
   			return 1;
  		}

  		if(strcomp(cmd, "create", true) == 1)
  		{

      		if (PlayerGangid[playerid] != 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][33] , 0,COLOUR_RED);
       			return 1;
      		}

      		if (oGetPlayerMoney(playerid) < GANG_CREATE_COST)
      		{
          		format(tempstring, sizeof(tempstring),  lang_texts[6][34] , GANG_CREATE_COST);
       			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_RED);
       			return 1;
      		}
   			new gangname[MAX_STRING];
   			new colourname[MAX_NAME];
   			new gangcolour=255;

   			set(colourname,strcharsplit(text, idx,strchar(" ")));
   			if(!strlen(colourname))
   			{
       			SendPlayerFormattedText(playerid,  lang_texts[6][35] , 0,COLOUR_RED);
                SendPlayerFormattedText(playerid,  lang_texts[6][36] , 0,COLOUR_RED);
    			return 1;
         	}

         	for (new colourid=0;colourid<COLOURS_SIZE;colourid++)
         	{
             	if (strcomp(colourname,GangColours[colourid][colour_name],true) == 1)
             	{
              		gangcolour = GangColours[colourid][colour_code];
    			}
         	}
         	if (gangcolour == 255)
         	{
          		SendPlayerFormattedText(playerid,  lang_texts[6][37] , 0,COLOUR_RED);
                SendPlayerFormattedText(playerid,  lang_texts[6][38] , 0,COLOUR_RED);
    			return 1;
   			}

      		set(gangname,text);
         	strdel(gangname, 0, idx);
         	if (strlen(gangname) <3)
   			{
       			SendPlayerFormattedText(playerid,  lang_texts[6][39] , 0,COLOUR_RED);
    			return 1;
   			}
   			if (strlen(gangname) >40)
   			{
       			SendPlayerFormattedText(playerid,  lang_texts[6][40] , 0,COLOUR_RED);
    			return 1;
   			}
   			new tempname[MAX_STRING];
   			set(tempname,gangname);
   			if (!StringCharCheck(tempname))
   			{
    			SendPlayerFormattedText(playerid,  lang_texts[6][41] , 0,COLOUR_RED);
    			return 1;
   			}

   			if (GangCreate(playerid,gangname,gangcolour) != 0)
   			{
    			oGivePlayerMoney(playerid,0-GANG_CREATE_COST,1);
    			SendPlayerFormattedText(playerid,  lang_texts[6][42] , 0,COLOUR_GREEN);
    			new logstring[256];
    			format(logstring, sizeof (logstring), "player: %d:  %s: created gang '%s' ",playerid,oGetPlayerName(playerid),gangname);
       			WriteLog(logstring);
   			}
   			else
   			{
    			SendPlayerFormattedText(playerid,  lang_texts[6][43] , 0,COLOUR_RED);
   			}
  			return 1;
  		} // end create

  		if((strcomp(cmd, "accept", true) == 1) || (strcomp(cmd, "join", true) == 1))
  		{
      		if (PlayerGangid[playerid] != 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][44] , 0,COLOUR_RED);
				return 1;
      		}
      		if (GangInvite[playerid] == 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][45] , 0,COLOUR_RED);
    			return 1;
      		}
   			new gangid = GangInvite[playerid];

   			if (GangOnlineCount(gangid) >= MAX_GANG_SIZE)
   			{

    			SendPlayerFormattedText(playerid,  lang_texts[6][46] , 0,COLOUR_RED);
    			GangInvite[playerid] = 0;
    			return 1;
   			}

      		if (GangJoinMember(gangid,playerid) == 1)
      		{
          		format(tempstring, sizeof(tempstring),  lang_texts[6][47] ,Gangs[gangid][gang_name]);
    			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_GANG);
    			format(tempstring, sizeof(tempstring),  lang_texts[6][48] , oGetPlayerName(playerid));
    			SendGangMessage(gangid,tempstring,COLOUR_GANG);
                new logstring[256];
    			format(logstring, sizeof (logstring), "player: %d:  %s: have joined '%s' gang.",playerid,oGetPlayerName(playerid),Gangs[gangid][gang_name]);
    			WriteLog(logstring);
    			return 1;
   			}
   			else
   			{
          		format(tempstring, sizeof(tempstring),  lang_texts[6][49] , Gangs[gangid][gang_name]);
    			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_RED);
    			return 1;
   			}
  		}

  		if (PlayerGangid[playerid] == 0)
  		{
   			SendPlayerFormattedText(playerid,  lang_texts[6][50] , 0,COLOUR_RED);
   			return 1;
  		}
  		new gangid = PlayerGangid[playerid];
  		new leadermemberid = GangMembers[gangid][0];


  		if((strcomp(cmd, "quit", true) == 1) || (strcomp(cmd, "leave", true) == 1))
  		{
      		if (PlayerGangid[playerid] == 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][51] , 0,COLOUR_RED);
       			return 1;
      		}
      		GangRemoveMember(gangid,oGetPlayerName(playerid));
      		return 1;
  		}

  		if(strcomp(cmd, "invite", true) == 1)
  		{
      		if (strcomp(GangMemberInfo[leadermemberid][member_name],oGetPlayerName(playerid),false) == 0)
      		{ // player is not leader of this gang
       			SendPlayerFormattedText(playerid,  lang_texts[6][52] , 0,COLOUR_RED);
    			return 1;
   			}
      		new inviteid = INVALID_PLAYER_ID;

      		new inviteplayername[MAX_NAME];
   			set(inviteplayername,text);
            strdel(inviteplayername, 0, idx);
            if (!strlen(inviteplayername))
            {
       			SendPlayerFormattedText(playerid,  lang_texts[6][53] , 0,COLOUR_RED);
                return 1;
         	}

            for (new i = 0;i<MAX_PLAYERS;i++)
            {
                if (IsPlayerRegistered(i))
                {
                    if (strcomp(oGetPlayerName(i),inviteplayername,true) == 1)
                    {
                     inviteid = i;
                     break;
                    }
                }
            }

      		if (inviteid == INVALID_PLAYER_ID)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][54] , 0,COLOUR_RED);
                return 1;
      		}
      		if (!IsPlayerRegistered(inviteid))
      		{
          		SendPlayerFormattedText(playerid,  lang_texts[6][55] , 0,COLOUR_RED);
       			SendPlayerFormattedText(playerid,  lang_texts[6][56] , 0,COLOUR_RED);
                return 1;
   			}

   			if (PlayerGangid[inviteid] != 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][57] , 0,COLOUR_RED);
    			return 1;
      		}
         	format(tempstring, sizeof(tempstring),  lang_texts[6][58] , oGetPlayerName(playerid),Gangs[gangid][gang_name]);
   			SendPlayerFormattedText(inviteid, tempstring, 0,COLOUR_GANG);
   			format(tempstring, sizeof(tempstring),  lang_texts[6][59] , oGetPlayerName(inviteid),Gangs[gangid][gang_name]);
   			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_GANG);
   			GangInvite[inviteid] = gangid;
   			new logstring[256];
   			format(logstring, sizeof (logstring), "player: %d:  %s: has invited %s to join gang '%s'.",playerid,oGetPlayerName(playerid),oGetPlayerName(inviteid),Gangs[gangid][gang_name]);
      		WriteLog(logstring);
   			return 1;
  		}

  		if(strcomp(cmd, "kick", true) == 1)
  		{
      		if (strcomp(GangMemberInfo[leadermemberid][member_name],oGetPlayerName(playerid),false) == 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][60] , 0,COLOUR_RED);
    			return 1;
   			}
   			new kickplayername[MAX_NAME];
   			set(kickplayername,text);
            strdel(kickplayername, 0, idx);
            if (!strlen(kickplayername))
            {
            	SendPlayerFormattedText(playerid,  lang_texts[6][61] , 0,COLOUR_RED);
    			return 1;
            }
            if (GangRemoveMember(gangid,kickplayername))
            {
       			format(tempstring, sizeof(tempstring),  lang_texts[6][62] , kickplayername);
    			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_GREEN);
   			}
   			else
   			{
    			format(tempstring, sizeof(tempstring),  lang_texts[6][63] , kickplayername);
    			SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_RED);
   			}
   			return 1;

  		}

  		if((strcomp(cmd, "colour", true) == 1) || (strcomp(cmd, "COLOUR", true) == 1))
  		{
      		if (strcomp(GangMemberInfo[leadermemberid][member_name],oGetPlayerName(playerid),false) == 0)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][64] , 0,COLOUR_RED);
    			return 1;
   			}
    		if (oGetPlayerMoney(playerid) < GANG_COLOUR_COST)
      		{
       			SendPlayerFormattedText(playerid,  lang_texts[6][65] , GANG_COLOUR_COST,COLOUR_RED);
    			return 1;
   			}
   			new colourname[MAX_NAME];
   			new gangcolour;
   			set(colourname,strcharsplit(text, idx,strchar(" ")));
   			if(!strlen(colourname))
   			{
       			SendPlayerFormattedText(playerid,  lang_texts[6][66] , 0,COLOUR_RED);
   				return 1;
         	}

        	for (new colourid=0;colourid<COLOURS_SIZE;colourid++)
         	{
            	if (strcomp(colourname,GangColours[colourid][colour_name],true) == 1)
             	{
              		gangcolour = GangColours[colourid][colour_code];
    			}
         	}
         	if (gangcolour == 0)
         	{
          		SendPlayerFormattedText(playerid,  lang_texts[6][67] , 0,COLOUR_RED);
                SendPlayerFormattedText(playerid,  lang_texts[6][68] , 0,COLOUR_RED);
    			return 1;
   			}

   			SendPlayerFormattedText(playerid,  lang_texts[6][69] , GANG_COLOUR_COST,gangcolour);
   			SetGangColour(gangid,gangcolour);
   			oGivePlayerMoney(playerid,0-GANG_COLOUR_COST,1);
   			return 1;
  		}
	} // end gang
 	return 0;
}

public PlayerGangColour(playerid)
{
 new gangid = PlayerGangid[playerid];
 new newcolour = COLOUR_PLAYER;
 if (gangid != 0)
 {
     if (Gangs[gangid][gang_colour] != 0)
     {
         newcolour = Gangs[gangid][gang_colour];
  }
 }
 return newcolour;
}

public GangJoinMember(gangid,playerid)
{
 if (gangid == 0)
 {
 	WriteLog("script_warning: invalid gang id.");
 	return 0;
 }
 if (PlayerGangid[playerid] != 0)
    {
    	WriteLog("script_warning: player already in a gang!");
    	return 0;
    }

 if (GangOnlineCount(gangid) >= MAX_GANG_SIZE)
 {
  WriteLog("script_warning: Gang is already full.");
  return 0;
 }

 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if (strlen(GangMemberInfo[memberid][member_name]) == 0) // if member slot free
  {
   set(GangMemberInfo[memberid][member_name],oGetPlayerName(playerid));
   GangMemberInfo[memberid][member_playerid] = playerid;
   GangMemberInfo[memberid][member_online] = 1;
   PlayerGangid[playerid] = gangid;
   set(PlayerGangName[playerid],Gangs[gangid][gang_name]);
   GangMemberLogin(gangid,playerid);
   return 1;
  }
 }
 return 0;
}

public GangRemoveMember(gangid,kickplayername[])
{
 new playerid = INVALID_PLAYER_ID;

 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang

  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if (strcomp(GangMemberInfo[memberid][member_name],kickplayername,true) == 1)
  {
   playerid = GangMemberInfo[memberid][member_playerid];
   GangMemberInfo[memberid][member_online] = 0;
   GangMemberInfo[memberid][member_playerid] = INVALID_PLAYER_ID;
   set(GangMemberInfo[memberid][member_name],nullstr);

   format(tempstring, sizeof(tempstring),  lang_texts[6][70] , kickplayername);
   SendGangMessage(gangid,tempstring,COLOUR_GANG);

   new logstring[256];
   format(logstring, sizeof (logstring), "%s has been removed from gang '%s'", kickplayername,Gangs[gangid][gang_name]);
   WriteLog(logstring);

   if (playerid != INVALID_PLAYER_ID)
   {
    format(tempstring, sizeof(tempstring),  lang_texts[6][71] , Gangs[gangid][gang_name]);
    SendClientMessage(playerid,COLOUR_GANG,tempstring);
    PlayerGangid[playerid] = 0;
    set(PlayerGangName[playerid],nullstr);
   }

   if (GangOnlineCount(gangid) == 0)
      {
          GangUnload(gangid);
   }
   return 1;
  }
 }
 return 0;
}


public GangCreate(leaderid,gangname[],gangcolour)
{
 if (!IsPlayerRegistered(leaderid)) return 0;

 new tempname[MAX_STRING];
 set(tempname,gangname);
 if (!StringCharCheck(tempname))
  {
  SendPlayerFormattedText(leaderid,  lang_texts[6][72] , 0,COLOUR_RED);
  return 0;
 }

 // udb
 new udbfilename[MAX_NAME];
 set(udbfilename,gangname);
 strcat(udbfilename,".Gang",sizeof(udbfilename));

 // dini
 new dinifilename[MAX_STRING];
 format(dinifilename,sizeof(dinifilename),"%sGTO.Gang.%s.txt",GangDB,gangname);

 if ((udb_Exists(udbfilename)) || (dini_Exists(dinifilename)))
 {
 	SendClientMessage(leaderid,COLOUR_RED,  lang_texts[6][73] );
 	return 0;
 }

 // Create the gang
 new gangid;
 for (new id=1;id<MAX_GANGS;id++)
 {
     if(!Gangs[id][gang_active])
     {
      gangid = id;
      Gangs[id][gang_active] = true; // find first free gang slot and andd our gang
      break;
  }
 }


 set(Gangs[gangid][gang_name],gangname);
 Gangs[gangid][gang_colour] = gangcolour;
 Gangs[gangid][gang_kills] = 0;
 Gangs[gangid][gang_score] = 0;


 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member

  GangMembers[gangid][gangmember] = GetFreeMemberID();
  new memberid = GangMembers[gangid][gangmember];
  if (memberid == 0)
  {
   WriteLog("script error: free gang member id not found.");
   return 0;
  }

  GangMemberInfo[memberid][member_active] = 1;
  GangMemberInfo[memberid][member_online] = 0;
  GangMemberInfo[memberid][member_playerid] = INVALID_PLAYER_ID;
 }

 new memberid = GangMembers[gangid][0];
 set(GangMemberInfo[memberid][member_name],oGetPlayerName(leaderid));
 GangMemberInfo[memberid][member_playerid] = leaderid;
 GangMemberInfo[memberid][member_online] = 1;
 set(PlayerGangName[leaderid],gangname);
 PlayerGangid[leaderid] = gangid;

 GangSave(gangid);

 return gangid;
}

public GangCleanup(gangid)
{
 if (!Gangs[gangid][gang_active]) return;

 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang

  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if (GangMemberInfo[memberid][member_online])
  {
      if (GangMemberInfo[memberid][member_playerid] == INVALID_PLAYER_ID) return;
      if (!IsPlayerRegistered(GangMemberInfo[memberid][member_playerid]))
   {
    GangMemberLogout(GangMemberInfo[memberid][member_playerid],gangid);
    GangMemberInfo[memberid][member_online] = 0;
   }
  }
 }

 if (GangOnlineCount(gangid) == 0)
    {
        GangUnload(gangid);
 }
}

public GangSaveAll()
{
 for (new i = 1;i<MAX_GANGS;i++)
 {
  if (Gangs[i][gang_active])
  {
      GangSave(i);
      GangCleanup(i);
  }
 }

}

public GangMemberLogout(playerid,gangid)
{
 GangInvite[playerid] = 0;
 if (gangid == 0)
 {
  return;
 }
 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if (GangMemberInfo[memberid][member_playerid] == playerid)
  {
   GangMemberInfo[memberid][member_online] = 0;
   GangMemberInfo[memberid][member_playerid] = INVALID_PLAYER_ID;
   break;
  }
 }
 if (GangOnlineCount(gangid) == 0)
 {
 	GangUnload(gangid);
 }
 else
 {
 	format(tempstring, sizeof(tempstring),  lang_texts[6][74] , oGetPlayerName(playerid));
 	SendGangMessage(gangid,tempstring,COLOUR_GANG);
 }
}

public GangSave(gangid)
{
 if (gangid == 0) return 0;
 if (!Gangs[gangid][gang_active]) return 0;
 if (!strlen(Gangs[gangid][gang_name])) return 0;
 gang_save_db_dini(gangid);
 return 1;
}

gang_save_db_dini(gangid)
{
 new gangname[MAX_STRING];
 set(gangname,Gangs[gangid][gang_name]);
 new dinifilename[MAX_STRING];
 format(dinifilename,sizeof(dinifilename),"%sGTO.Gang.%s.txt",GangDB,gangname);
 if (!dini_Exists(dinifilename))
 {
 	dini_Create(dinifilename);
 }

 new temp[MAX_STRING];

 dini_Set(dinifilename,"Name",gangname);

 valstr(temp,Gangs[gangid][gang_colour]);
 dini_Set(dinifilename,"Colour",temp);

 valstr(temp,Gangs[gangid][gang_kills]);
 dini_Set(dinifilename,"Kills",temp);

 valstr(temp,Gangs[gangid][gang_score]);
 dini_Set(dinifilename,"Score",temp);

 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new dinistring[MAX_STRING];
  format(dinistring,sizeof(dinistring),"Member%d",gangmember);
  new memberid = GangMembers[gangid][gangmember];
  dini_Set(dinifilename,dinistring,GangMemberInfo[memberid][member_name]);
 }
}

public GangUnload(gangid)
{
 GangSave(gangid);
 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member
  new memberid = GangMembers[gangid][gangmember];
  GangMemberInfo[memberid][member_active] = 0;
  GangMemberInfo[memberid][member_online] = 0;
  GangMemberInfo[memberid][member_playerid] = INVALID_PLAYER_ID;
 }
 Gangs[gangid][gang_active] = 0;

}

public GangKill(gangid,killerid,victimid,reason)
{
 if (victimid != INVALID_PLAYER_ID)
 {
     Gangs[gangid][gang_kills]++;
 }
 if (PlayerGangid[killerid] == PlayerGangid[victimid])
    { // killed a gang member
  format(tempstring, sizeof(tempstring),  lang_texts[6][76] , oGetPlayerName(killerid));
  SendGangMessage(PlayerGangid[killerid],tempstring,COLOUR_GANG);
  return 1;
  }
 return 0;
}



public GangMemberLogin(playerid,gangid)
{
 if (PlayerGangid[playerid] != 0)
 {
  PlayerGangid[playerid] = 0;
 }
 if (gangid == 0)
 {
  return 0;
 }
 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new memberid = GangMembers[gangid][gangmember]; // get memberid

  if (strcomp(GangMemberInfo[memberid][member_name],oGetPlayerName(playerid),false) == 1)
  {
   format(tempstring, sizeof(tempstring),  lang_texts[6][77] , oGetPlayerName(playerid));
   SendGangMessage(gangid,tempstring,COLOUR_GANG);
   GangMemberInfo[memberid][member_online] = 1;
   GangMemberInfo[memberid][member_playerid] = playerid;
   PlayerGangid[playerid] = gangid;
   set(PlayerGangName[playerid],Gangs[gangid][gang_name]);

   format(tempstring, sizeof(tempstring),  lang_texts[6][78] ,Gangs[gangid][gang_name],GangOnlineCount(gangid)-1);
   SendPlayerFormattedText(playerid, tempstring, 0,COLOUR_GANG);
   GangInvite[playerid] = 0;
   SetPlayerColour(playerid,Gangs[gangid][gang_colour]);
   return 1;
  }
 }
 return 0;
}


public SendGangMessage(gangid,message[MAX_STRING],colour)
{
 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if(GangMemberInfo[memberid][member_online]) SendPlayerFormattedText(GangMemberInfo[memberid][member_playerid], message, 0,colour);
 }
}

public GangOnlineCount(gangid)
{
 new memberscount;
 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if (GangMemberInfo[memberid][member_online]) memberscount++;
 }
 return memberscount;
}

public GangGiveXP(gangid,xpamount,giverid)
{
 Gangs[gangid][gang_score] = Gangs[gangid][gang_score] + xpamount;
 new giveamount;
 giveamount = xpamount / GangOnlineCount(gangid);

 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if((GangMemberInfo[memberid][member_online] == 1) && (giverid != GangMemberInfo[memberid][member_playerid]))
  {
	if (GetPlayerXP(GangMemberInfo[memberid][member_playerid]) < MAX_LVLXP) 
		{
		GivePlayerXP(GangMemberInfo[memberid][member_playerid],giveamount,0);
   		new string[MAX_STRING];
   		format(string, sizeof(string),  lang_texts[6][79] ,xpamount,oGetPlayerName(giverid));
   		SendPlayerFormattedText(GangMemberInfo[memberid][member_playerid], string, 0,COLOUR_XP_GOOD);
   		CheckPlayerLevel(GangMemberInfo[memberid][member_playerid]);
		} else {
			new string[MAX_STRING];
			format(string, sizeof(string),  lang_texts[9][17] );
			SendClientMessage(GangMemberInfo[memberid][member_playerid], COLOUR_RED, string);
			}
  }
 }
}


public SetGangColour(gangid,colour)
{
 Gangs[gangid][gang_colour] = colour;
 for (new gangmember = 0;gangmember<MAX_GANG_SIZE;gangmember++)
 { // foreach member of the gang
  new memberid = GangMembers[gangid][gangmember]; // get memberid
  if(GangMemberInfo[memberid][member_online] == 1)
  {
   new playerid = GangMemberInfo[memberid][member_playerid];
   SetPlayerColour(playerid,colour);
  }
 }
}






2. Помогите Зделать Что бы в Green Zone Не Отнималась и не прибовлялась Exp при смерти, убийстве ..

Скрипт GreenZone

PHP:
//Last UpDate 15.07.16 by SaiBit
@___If_u_can_read_this_u_r_nerd();
@___If_u_can_read_this_u_r_nerd()
{
    #emit    stack    0x7FFFFFFF
    #emit    inc.s    cellmax
    static   const ___[][] = {"mq", "DAMX"};
    #emit    retn
    #emit    load.s.pri    ___
    #emit    proc
    #emit    proc
    #emit    fill    cellmax
    #emit    proc
    #emit    stor.alt    ___
    #emit    strb.i    2
    #emit    switch    4
    #emit    retn
    L1:
    #emit    jump    L1
    #emit    zero    cellmin
}
#include <a_samp>


#define PlayerToPoint(%0,%1,%2,%3,%4)	IsPlayerInRangeOfPoint(%1,%0,%2,%3,%4)
#define publics:%0(%1)					forward %0(%1); public %0(%1)

#define MAX_ZONES 1000

new Float:Anti_Zona[MAX_ZONES][4],
    PlayerText:antidmzone[MAX_PLAYERS];

stock green_OnPlayerConnect(playerid)
{
    antidmzone[playerid] = CreatePlayerTextDraw(playerid, 275.666564, 409.836822, "~g~Green Zone");
	PlayerTextDrawLetterSize(playerid, antidmzone[playerid], 0.268666, 1.375999);
	PlayerTextDrawAlignment(playerid, antidmzone[playerid], 1);
	PlayerTextDrawColor(playerid, antidmzone[playerid], -1);
	PlayerTextDrawSetShadow(playerid, antidmzone[playerid], 0);
	PlayerTextDrawSetOutline(playerid, antidmzone[playerid], 1);
	PlayerTextDrawBackgroundColor(playerid, antidmzone[playerid], 51);
	PlayerTextDrawFont(playerid, antidmzone[playerid], 2);
	PlayerTextDrawSetProportional(playerid, antidmzone[playerid], 1);
    PlayerTextDrawHide(playerid, antidmzone[playerid]);
	return true;
}
stock green_OnPlayerDisconnect(playerid, reason)
{
	#pragma unused reason
    PlayerTextDrawHide(playerid, antidmzone[playerid]);
	return true;
}
stock green_OnPlayerDeath(playerid, killerid, reason)
{
	#pragma unused reason, playerid
	GivePlayerXP(killerid, 100);
	return 1;
}


stock green_OnPlayerUpdate(playerid)
{
	new killerid = INVALID_PLAYER_ID;
    if(IsPlayerInAntiDMZone(playerid,killerid))
	{
 		if(IsPlayerInAnyVehicle(playerid)) return true;
	}
	return true;
}

stock green_OnGameModeInit()
{
	if(LoadAntiDMZones())
	{
		print("\n-------------------------------------------------------");
		print("[DM zone] Загружен");
		print("--------------------------------------------------------\n");
	}
	else
	{
	    print("\n-----------------------------");
		print("[DM][Error]");
		print("-----------------------------\n");
	}
	return 1;
}

stock LoadAntiDMZones()
{
    new cords[4][20];
    new ReadFile[256];
    new File: file = fopen("AntiDM.ini", io_read);
	if (file)
	{
		for (new i; i < MAX_ZONES; i ++)
		{
			fread(file, ReadFile);
			split(ReadFile, cords, ',');
		    Anti_Zona[i][0] = floatstr(cords[0]);
		   	Anti_Zona[i][1] = floatstr(cords[1]);
		   	Anti_Zona[i][2] = floatstr(cords[2]);
		   	Anti_Zona[i][3] = floatstr(cords[3]);
		}
		fclose(file);
		return 1;
	}
	return 0;
}





stock IsPlayerInAntiDMZone(playerid,killerid)
{

   	for(new i;i < MAX_ZONES;i ++)
	{
	    if(PlayerToPoint(Anti_Zona[i][3],playerid,Anti_Zona[i][0],Anti_Zona[i][1],Anti_Zona[i][2]))
	    {
			PlayCrimeReportForPlayer(killerid, killerid, random(0));
			PlayCrimeReportForPlayer(playerid, killerid, random(0));
	        PlayerTextDrawShow(playerid, antidmzone[playerid]);
	        return 1;
	    }
	    PlayerTextDrawHide(playerid, antidmzone[playerid]);
	}
	return 0;
}

stock 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;
}
//Конец скрипта


PHP:
stock player_OnPlayerKill(killerid, victimid, reason) // earn xp, kills++ функуия которая выдаёт Exp и отнимает 
{
	if (GetPVarInt(killerid, "GangID") != 0) Скрипт банды выше, пробывал играться ну походу я туповат для этого
	{
		if (GangKill(GetPVarInt(killerid, "GangID"), killerid, victimid, reason) == 1)
		{
			return;
		}
	}


	GivePVarInt(killerid, "Kills", 1);

	// Give XP
	new XP_give_victim = -((GetPlayerXP(victimid) / 100) * PLAYER_XP_DEATH_MINUS_PROC);
	new XP_give_killer = 0;
	new level_difference = GetPlayerLevel(victimid) - GetPlayerLevel(killerid);
	switch (level_difference)
	{
		default: XP_give_killer = ( (GetPlayerLevel(victimid)+1) * 2 ) * ( (GetPlayerLevel(victimid)+1) * 2 ) * PLAYER_XP_KILL_TARIF;
	}

	if ((GetPlayerXP(killerid) + XP_give_killer) > MAX_XP)
	{
		SetPlayerXP(killerid, MAX_XP);
	}
	else if (XP_give_killer != 0)
	{
		GivePlayerXP(killerid, XP_give_killer, 1);
		CheckPlayerLevel(killerid);
	}
	if (XP_give_victim != 0)
	{
		GivePlayerXP(victimid, XP_give_victim, 1);
		CheckPlayerLevel(victimid);
	}
	//
	// Give Money
	new stolencash = (oGetPlayerMoney(victimid) / 100) * PLAYER_MONEY_DEATH_MINUS_PROC;
	if (stolencash != 0)
	{
		oGivePlayerMoney(victimid,-stolencash, 1);
		oGivePlayerMoney(killerid, stolencash, 1);
	}
	//

	return;
}

[/COLOR]надеюсь верю и ждуО_о
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу