Jump to content
  • 0

pomoc nokill


prco167

Dotaz

mam taky problem mam no kill zonu lenže nie moju ale  chcem aby ked admin vytvori zonu aby svietila na niejaku farbu

#include <a_samp>
#define MAX_PLAYERS_EX 250
#include <sscanf>
#include <dini>
 
#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
#define SCM SendClientMessage
#define SCMToAll SendClientMessageToAll
#define RED 0xFF0000FF
#define MAX_PEACE_ZONES 50
 
enum Peace_Zone
{
        Float:PposX,
        Float:PposY,
        Float:PposZ,
        Float:Prange,
        Ppickup,
        Text3D:Plabel,
        bool:Pcreated,
        name[101],
}
new PeaceInfo[MAX_PEACE_ZONES][Peace_Zone];
new PeaceCount=-1;
 
forward CreatePeaceZone(playerid,Float:PPX,Float:PPY,Float:PPZ,Float:PPRange,nazov[]);
public CreatePeaceZone(playerid,Float:PPX,Float:PPY,Float:PPZ,Float:PPRange,nazov[])
{
        if(PeaceCount+1<MAX_PEACE_ZONES)
        {
            PeaceCount++;
            new FreePeaceCount;
            for(new i;i<MAX_PEACE_ZONES;i++)
                {
                if(!PeaceInfo[i][Pcreated])
                {
                    FreePeaceCount=i;
                    break;
                        }
                }
                new vw = GetPlayerVirtualWorld(playerid);
            PeaceInfo[FreePeaceCount][PposX]=PPX;
            PeaceInfo[FreePeaceCount][PposY]=PPY;
            PeaceInfo[FreePeaceCount][PposZ]=PPZ;
            PeaceInfo[FreePeaceCount][Prange]=PPRange;
            PeaceInfo[FreePeaceCount][Pcreated]=true;
            PeaceInfo[FreePeaceCount][Ppickup]=CreatePickup(1254,1,PPX,PPY,PPZ,vw);
            format(PeaceInfo[FreePeaceCount][name],101,"%s",nazov);
            new s[128];
            format(s,sizeof(s),"[ No-Kill zone ]{FFFFFF}\r\n%s\n\rin %d range",nazov,floatround(PPRange));
            PeaceInfo[FreePeaceCount][Plabel]=Create3DTextLabel(s,RED,PPX,PPY,PPZ+1,PPRange,vw,1);
            format(s,sizeof(s),"[ Server ] {FFFFFF}Admin %s (ID:%d) vytvoril No-Kill zónu %s v okruhu %d metrov !",PlayerName(playerid),playerid,nazov,floatround(PPRange));
                SCMToAll(RED,s);
                format(s,sizeof(s),"NoKill/Zone%d.ini",FreePeaceCount);
                dini_Create(s);
                dini_FloatSet(s,"PosX",PPX);
                dini_FloatSet(s,"PosY",PPY);
                dini_FloatSet(s,"PosZ",PPZ);
                dini_FloatSet(s,"PosR",PPRange);
                dini_IntSet(s,"VW",vw);
                dini_Set(s,"Nazov",nazov);
        }
        else
                SCM(playerid,RED,"[ Server ] {FFFFFF}Maximálny počet zón bol prekročený, zóna nemôže byť vytvorená.");
        return 1;
}
 
stock DeletePeaceZone(playerid,zoneid)
{
        PeaceCount--;
        new s[128];
        format(s,sizeof(s),"[ Server ] {FFFFFF}Admin %s (ID:%d) zrušil No-Kill %s zónu v okruhu %d metrov !",PlayerName(playerid),playerid,PeaceInfo[zoneid][name],floatround(PeaceInfo[zoneid][Prange]));
    SCMToAll(RED,s);
        format(s,sizeof(s),"NoKill/Zone%d.ini",zoneid);
        dini_Remove(s);
        format(PeaceInfo[zoneid][name],101," ");
        PeaceInfo[zoneid][PposX]=0;
        PeaceInfo[zoneid][PposY]=0;
        PeaceInfo[zoneid][PposZ]=0;
        PeaceInfo[zoneid][Prange]=0;
        PeaceInfo[zoneid][Pcreated]=false;
        DestroyPickup(PeaceInfo[zoneid][Ppickup]);
        Delete3DTextLabel(PeaceInfo[zoneid][Plabel]);
}
 
stock PlayerName(i)
{
        new p[MAX_PLAYER_NAME];
        GetPlayerName(i,p,MAX_PLAYER_NAME);
        return p;
}
 
forward PlayerInPeace();
public PlayerInPeace()
{
        for(new i;i<MAX_PLAYERS_EX;i++)
        {
            if(IsPlayerConnected(i)&&!IsPlayerNPC(i))
            {
                        for(new z;z<MAX_PEACE_ZONES;z++)
                        {
                            if(IsPlayerInRangeOfPoint(i,PeaceInfo[z][Prange],PeaceInfo[z][PposX],PeaceInfo[z][PposY],PeaceInfo[z][PposZ]))
                                {
                                    if(GetPlayerWeapon(i)!=0)
                                        {
                                            SetPlayerArmedWeapon(i,0);
                                        }
                                }
                        }
            }
        }
}
 
public OnFilterScriptInit()
{
        print("--------------------------------------");
        print("In-game no-kill zone creator by Angelus");
        print("--------------------------------------");
        new s[100],Float:p[4],vw,str[101];
        for(new i;i<MAX_PEACE_ZONES;i++)
        {
            format(s,20,"NoKill/Zone%d.ini",i);
            if(fexist(s))
            {
                PeaceCount++;
                p[0]=dini_Float(s,"PosX");
                p[1]=dini_Float(s,"PosY");
                p[2]=dini_Float(s,"PosZ");
                p[3]=dini_Float(s,"PosR");
                        vw=dini_Int(s,"VW");
                        format(str,101,"%s",dini_Get(s,"Nazov"));
                        PeaceInfo[i][PposX]=p[0];
                    PeaceInfo[i][PposY]=p[1];
                    PeaceInfo[i][PposZ]=p[2];
                    PeaceInfo[i][Prange]=p[3];
                    PeaceInfo[i][Pcreated]=true;
                    PeaceInfo[i][Ppickup]=CreatePickup(1254,1,p[0],p[1],p[2],vw);
                    format(s,sizeof(s),"[ No-Kill zone ]{FFFFFF}\r\n%s\n\rin %d range",str,floatround(p[3]));
                    PeaceInfo[i][Plabel]=Create3DTextLabel(s,RED,p[0],p[1],p[2]+1,p[3],vw,1);
                    format(PeaceInfo[i][name],101,"%s",str);
                    printf("...Zone [%d] %s loaded... X:%f Y:%f Z:%f Range:%d VirtualWorld:%d",i,str,p[0],p[1],p[2],floatround(p[3]),vw);
            }
        }
        SetTimer("PlayerInPeace",525,true);
        return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
        dcmd(createnk,8,cmdtext);
        dcmd(deletenk,8,cmdtext);
        dcmd(nkzones,7,cmdtext);
        return 0;
}
 
dcmd_nkzones(playerid,params[])
{
        #pragma unused params
        if(!IsPlayerAdmin(playerid))return SCM(playerid,RED,"[ Server ] {FFFFFF}Musíš mať RCON pre zoznam No-Kill zón !");
        if(PeaceCount>-1)
        {
                new s[1000];
                for(new i;i<MAX_PEACE_ZONES;i++)
                {
                    if(PeaceInfo[i][Pcreated])
                    {
                        format(s,sizeof(s),"%s[%d] %s\n",s,i,PeaceInfo[i][name]);
                    }
                }
                ShowPlayerDialog(playerid,1235,DIALOG_STYLE_LIST,"Zóny:",s,"OK","Cancel");
        }
        else
        {
            ShowPlayerDialog(playerid,1235,DIALOG_STYLE_LIST,"Zóny:","Na serveri nie je vytvorená žiadna NoKill zóna!","OK","Cancel");
        }
        return 1;
}
 
dcmd_createnk(playerid,params[])
{
        if(!IsPlayerAdmin(playerid))return SCM(playerid,RED,"[ Server ] {FFFFFF}Musíš mať RCON pre vytvorenie No-Kill zóny !");
        if(strlen(params)>100)return SCM(playerid,RED,"[ Server ] {FFFFFF}Príliš dlhý názov zóny!");
    new Float:range,nazov[101];
        if(sscanf(params,"fz",range,nazov))return SCM(playerid,RED,"[ Server ] {FFFFFF}Použitie: /createnk [range 10-500] [názov no kill zóny]");
        if(range < 10 || range > 500)return SCM(playerid,RED,"[ Server ] {FFFFFF}Použitie: /createnk [range 10-500] [názov no kill zóny]");
        new Float:pos[3];
        GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
        CreatePeaceZone(playerid,pos[0],pos[1],pos[2],range,nazov);
        return 1;
}
 
dcmd_deletenk(playerid,params[])
{
        #pragma unused params
        if(!IsPlayerAdmin(playerid))return SCM(playerid,RED,"[ Server ] {FFFFFF}Musíš mať RCON pre zrušenie No-Kill zóny !");
        for(new i;i<MAX_PEACE_ZONES;i++)
        {
            if(PeaceInfo[i][Pcreated])
            {
                    if(IsPlayerInRangeOfPoint(playerid,2,PeaceInfo[i][PposX],PeaceInfo[i][PposY],PeaceInfo[i][PposZ]))
                    {
                        DeletePeaceZone(playerid,i);
                        break;
                    }
            }
        }
        return 1;
}
 
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
        if(newkeys == KEY_FIRE)
        {
                for(new z;z<MAX_PEACE_ZONES;z++)
                {
                if(PeaceInfo[z][Pcreated])
                {
                                if(IsPlayerInRangeOfPoint(playerid,PeaceInfo[z][Prange],PeaceInfo[z][PposX],PeaceInfo[z][PposY],PeaceInfo[z][PposZ]))
                                {
                                    TogglePlayerControllable(playerid,false);
                                    TogglePlayerControllable(playerid,true);
                                    break;
                                }
                        }
                }
        }
        return 1;
}
 
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
        for(new z;z<MAX_PEACE_ZONES;z++)
        {
            if(PeaceInfo[z][Pcreated])
            {
                        if(IsPlayerInRangeOfPoint(playerid,PeaceInfo[z][Prange],PeaceInfo[z][PposX],PeaceInfo[z][PposY],PeaceInfo[z][PposZ]))
                        {
                                TogglePlayerControllable(playerid,false);
                                SetTimerEx("UnFreeze",5000,false,"i",playerid);
                                GameTextForPlayer(playerid,"~r~v no-kill zone je zakazane utocit na hracov !",5000,5);
                                break;
                        }
                }
        }
        return 1;
}
 
forward UnFreeze(i);
public UnFreeze(i)
{
        TogglePlayerControllable(i,true);
}
Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 0

Pokial som porozumel chceš tam zmeniť farbu [ No-Kill Zone ]

 

Dajme tomu že tam chceš modrú, Nájdeš si:

 

#define RED 0xFF0000FF

 

Zmeníš to na:

 

#define BLUE 0x0033CC00

 

Potom v pawne nájdi všetky z názvor "RED" A zmeň to na BLUE, Pokial chceš inú farbu tak HEX Kody máš tu:

 

Výsledok: [ No-Kill Zone ]

 

http://wiki.sa-mp.com/wiki/Hex_colours :)

 

Dneska som to sám robil a funguje to :) Chce to len čas a snahu :)


Alebo výskušaj iné farby, Napríklad tieto:

 

#define  INFOCOLOR 0x2975F1FF
#define NADPIS 0xCC8E33C8
#define SCOL1 0xB0D1F7FF
#define SCOL2 0xC9E0FAFF
#define RED 0xFF2828FF
#define  GREEN 0x66FF1CFF
#define  YELLOW 0xFAFF35FF
#define  AQUA 0x72EEF8FF <--- Odporúčam
#define STAFFCHAT 0xCEFFE3FF
#define  VIP 0xE1FF11FF
#define SPY 0xCDCDCDFF
Link to comment
Share on other sites

  • 0

Takže třeba příjdeš daš /nokillzonecreate a vytvoří se kolem tebe čtverec třeba 10x10 a tam se nedá zabíjet a tak? a + to vytvoří gangzone (to na mapě)

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...