01.04.2013, 11:59
E ae, este й meu primeiro tуpico e resolvi atravйs dele disponibilizar alguns comandos que fiz para facilitar a criaзгo de GangZones quando vocк estб iniciando seu gamemode!
Bem, й um cуdigo simples e que fiz usando o Dini (obrigado pelo criador )
Qualquer dъvida/sugestгo sobre o cуdigo, ou mesmo se vocк fez um de uma maneira melhor, deixe abaixo nos comentбrios para que eu possa desenvolver cada vez mais meu conhecimento sobre essa programaзгo!
Obrigado.
No jogo, para criar a GangZone, vocк deverб escolher um ponto de inнcio e digitar o comando "/criargz 'nome da gz' 'posini' " apуs feito isso vocк caminharб atй o ponto oposto, imaginando a diagonal do quadrilбtero a ser formado pelos limites da gangzone, e digitarб "/criargz 'mesmo nome anterior' 'posfin' ".
Feito estes dois passos, para visualizar a gangzone e criar a stock + o cуdigo 'GangZoneCreate...', digite /loadgz 'nome da GZ'.
No final do processo, apуs selecionar a бrea de criaзгo da gangzone, vocк terб, dentro da pasta 'GangZones', as coordenadas da criaзгo da gangzone prontas para serem copiadas para o gamemode juntamente com a stock que verifica se o player estб na бrea da GangZone.
Espero que tenha sido ъtil para alguйm.
Bem, й um cуdigo simples e que fiz usando o Dini (obrigado pelo criador )
Qualquer dъvida/sugestгo sobre o cуdigo, ou mesmo se vocк fez um de uma maneira melhor, deixe abaixo nos comentбrios para que eu possa desenvolver cada vez mais meu conhecimento sobre essa programaзгo!
Obrigado.
Код:
//Crie a pasta "GangZones" dentro da pasta 'scriptfiles' no diretуrio do seu server //Em cima, no inнcio do gamemode, vocк incluн os cуdigos dini e utils.inc para facilitar o uso dos comandos. //Coloque as includes apуs a include do 'a_samp' //#include <a_samp> //#include <dini> //#include <utils> //A cor que uso abaixo "Vermelho" vocк pode trocar para qualquer outra cor que vc desejar. //Caso deseje mantк-la defina a variбvel no topo do gamemode '#define Vermelho 0xEE0000FF //Na OnPlayerCommandText vocк coloca o cуdigo abaixo. if(strcmp(cmd, "/loadgz", true) == 0) { if(PlayerInfo[playerid][pAdmin] < 10) return SendClientMessage(playerid, Vermelho, "Sem permissгo."); new GZName[50]; GZName = strtok(cmdtext, idx); if(!strlen(GZName)) return SendClientMessage(playerid, Vermelho, "Use: '/loadgz [nome]'"); new ArqGZ[64]; format(ArqGZ, sizeof(ArqGZ), "GangZones/%s.cfg", GZName); if(!dini_Exists(ArqGZ)) return SendClientMessage(playerid, Vermelho, "GangZone inexistente, tente outra!"); new Float:xi, Float:yi, Float:xf, Float:yf; xi = dini_Float(ArqGZ, "PosicaoIniX"); yi = dini_Float(ArqGZ, "PosicaoIniY"); xf = dini_Float(ArqGZ, "PosicaoFinX"); yf = dini_Float(ArqGZ, "PosicaoFinY"); if( (!dini_Isset(ArqGZ, "PosicaoIniX") ) || (!dini_Isset(ArqGZ, "PosicaoIniY")) ) return SendClientMessage(playerid, Vermelho, "Posiзхes iniciais para a GZ nгo foram definidas. Use o comando /criargz no parвmetro 'posini'."); if( (!dini_Isset(ArqGZ, "PosicaoFinX") ) || (!dini_Isset(ArqGZ, "PosicaoFinY")) ) return SendClientMessage(playerid, Vermelho, "Posiзхes finais para a GZ nгo foram definidas. Use o comando /criargz no parвmetro 'posfin'."); if(dini_Float(ArqGZ, "PosicaoIniX") > dini_Float(ArqGZ, "PosicaoFinX")) xi = dini_Float(ArqGZ, "PosicaoFinX"), xf = dini_Float(ArqGZ, "PosicaoIniX"); if(dini_Float(ArqGZ, "PosicaoIniY") > dini_Float(ArqGZ, "PosicaoFinY")) yi = dini_Float(ArqGZ, "PosicaoFinY"), yf = dini_Float(ArqGZ, "PosicaoIniY"); new GangZone; GangZone = GangZoneCreate(xi, yi, xf, yf); GangZoneShowForAll(GangZone, GZCor); format(string, sizeof(string), "GangZoneCreate(%f, %f, %f, %f);", xi, yi, xf, yf); dini_Set(ArqGZ, GZName, string); new stringg[512]; format(stringg, sizeof(stringg), "stock IsPlayerIn%s(playerid)\n{\n new Float:x, Float:y, Float:z;\n GetPlayerPos(playerid, x, y, z);\n if(x >= %f && y >=%f && x <= %f && y <= %f) return 1;\n else return 0;\n}", GZName, xi, yi, xf, yf); dini_Set(ArqGZ, "CodeStock", stringg); SendClientMessage(playerid, Amarelo, "GangZone carregada com sucesso!"); return 1; } if(strcmp(cmd, "/criargz", true) == 0) { if(PlayerInfo[playerid][pAdmin] < 10) return SendClientMessage(playerid, Vermelho, "Sem permissгo."); new GZName[50]; GZName = strtok(cmdtext, idx); if(!strlen(GZName)) return SendClientMessage(playerid, Vermelho, "Use: '/criargz [nomedagz] posini' para pegar coordenada inicial. 'posfin' para final."); new opt[50]; opt = strtok(cmdtext, idx); new Float:x, Float:y, Float:z; if(!strlen(opt)) return SendClientMessage(playerid, Vermelho, "Usos possнveis do comando: '/criargz [nome] posini' para a posiзгo inicial. '/criargz [nome] posfin' para posiзгo final"); if(strcmp(opt, "posini", true) == 0) { GetPlayerPos(playerid, x, y, z); new ArquivoGZ[64]; format(ArquivoGZ, sizeof(ArquivoGZ), "GangZones/%s.cfg", GZName); if(!dini_Exists(ArquivoGZ)) dini_Create(ArquivoGZ); dini_FloatSet(ArquivoGZ, "PosicaoIniX", x); dini_FloatSet(ArquivoGZ, "PosicaoIniY", y); SendClientMessage(playerid, Amarelo, "Arquivo com novos dados de inнcio da GangZone criado"); return 1; } if(strcmp(opt, "posfin", true) == 0) { GetPlayerPos(playerid, x, y, z); new ArquivoGZ[64]; format(ArquivoGZ, sizeof(ArquivoGZ), "GangZones/%s.cfg", GZName); if(!dini_Exists(ArquivoGZ)) dini_Create(ArquivoGZ); dini_FloatSet(ArquivoGZ, "PosicaoFinX", x); dini_FloatSet(ArquivoGZ, "PosicaoFinY", y); SendClientMessage(playerid, Amarelo, "Arquivo com novos dados de final da GangZone criado"); return 1; } return 1; }
Feito estes dois passos, para visualizar a gangzone e criar a stock + o cуdigo 'GangZoneCreate...', digite /loadgz 'nome da GZ'.
No final do processo, apуs selecionar a бrea de criaзгo da gangzone, vocк terб, dentro da pasta 'GangZones', as coordenadas da criaзгo da gangzone prontas para serem copiadas para o gamemode juntamente com a stock que verifica se o player estб na бrea da GangZone.
Espero que tenha sido ъtil para alguйm.