prco167 0 Odesláno: 12. Únor, 2015 Share Odesláno: 12. Únor, 2015 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 More sharing options...
0 PatasGarage 12 Odesláno: 13. Únor, 2015 Share Odesláno: 13. Únor, 2015 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 More sharing options...
0 prco167 0 Odesláno: 14. Únor, 2015 Author Share Odesláno: 14. Únor, 2015 (upraveno) sorry ale si nepochopil ja chcem ked urobim zonu chcem aby svietila nejakou farbou že tam je zona v mapku Edited 14. Únor, 2015 by prco167 Link to comment Share on other sites More sharing options...
0 w.endelin 15 Odesláno: 14. Únor, 2015 Share Odesláno: 14. Únor, 2015 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 More sharing options...
0 prco167 0 Odesláno: 15. Únor, 2015 Author Share Odesláno: 15. Únor, 2015 ano len neviem jak to udelat Link to comment Share on other sites More sharing options...
Dotaz
prco167 0
mam taky problem mam no kill zonu lenže nie moju ale chcem aby ked admin vytvori zonu aby svietila na niejaku farbu
Link to comment
Share on other sites
4 odpovědí na tuto otázku
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now